{"version":3,"file":"scripts/main.js","sources":["webpack:///webpack/bootstrap","webpack:///../node_modules/what-input/dist/what-input.js","webpack:///../node_modules/wowjs/dist/wow.js","webpack:///assets/scripts/board-portal.js","webpack:///assets/scripts/main-navigation.js","webpack:///assets/scripts/main.js","webpack:///./styles/main.scss?61e9","webpack:///external \"jQuery\""],"sourcesContent":[" \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 = \"/wp-content/themes/ssvp-toronto/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/**\n * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).\n * @version v5.2.12\n * @link https://github.com/ten1seven/what-input\n * @license MIT\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"whatInput\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"whatInput\"] = factory();\n\telse\n\t\troot[\"whatInput\"] = factory();\n})(this, function() {\nreturn /******/ (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\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tmodule.exports = function () {\n\t /*\n\t * bail out if there is no document or window\n\t * (i.e. in a node/non-DOM environment)\n\t *\n\t * Return a stubbed API instead\n\t */\n\t if (typeof document === 'undefined' || typeof window === 'undefined') {\n\t return {\n\t // always return \"initial\" because no interaction will ever be detected\n\t ask: function ask() {\n\t return 'initial';\n\t },\n\n\t // always return null\n\t element: function element() {\n\t return null;\n\t },\n\n\t // no-op\n\t ignoreKeys: function ignoreKeys() {},\n\n\t // no-op\n\t specificKeys: function specificKeys() {},\n\n\t // no-op\n\t registerOnChange: function registerOnChange() {},\n\n\t // no-op\n\t unRegisterOnChange: function unRegisterOnChange() {}\n\t };\n\t }\n\n\t /*\n\t * variables\n\t */\n\n\t // cache document.documentElement\n\t var docElem = document.documentElement;\n\n\t // currently focused dom element\n\t var currentElement = null;\n\n\t // last used input type\n\t var currentInput = 'initial';\n\n\t // last used input intent\n\t var currentIntent = currentInput;\n\n\t // UNIX timestamp of current event\n\t var currentTimestamp = Date.now();\n\n\t // check for a `data-whatpersist` attribute on either the `html` or `body` elements, defaults to `true`\n\t var shouldPersist = false;\n\n\t // form input types\n\t var formInputs = ['button', 'input', 'select', 'textarea'];\n\n\t // empty array for holding callback functions\n\t var functionList = [];\n\n\t // list of modifier keys commonly used with the mouse and\n\t // can be safely ignored to prevent false keyboard detection\n\t var ignoreMap = [16, // shift\n\t 17, // control\n\t 18, // alt\n\t 91, // Windows key / left Apple cmd\n\t 93 // Windows menu / right Apple cmd\n\t ];\n\n\t var specificMap = [];\n\n\t // mapping of events to input types\n\t var inputMap = {\n\t keydown: 'keyboard',\n\t keyup: 'keyboard',\n\t mousedown: 'mouse',\n\t mousemove: 'mouse',\n\t MSPointerDown: 'pointer',\n\t MSPointerMove: 'pointer',\n\t pointerdown: 'pointer',\n\t pointermove: 'pointer',\n\t touchstart: 'touch',\n\t touchend: 'touch'\n\n\t // boolean: true if the page is being scrolled\n\t };var isScrolling = false;\n\n\t // store current mouse position\n\t var mousePos = {\n\t x: null,\n\t y: null\n\n\t // map of IE 10 pointer events\n\t };var pointerMap = {\n\t 2: 'touch',\n\t 3: 'touch', // treat pen like touch\n\t 4: 'mouse'\n\n\t // check support for passive event listeners\n\t };var supportsPassive = false;\n\n\t try {\n\t var opts = Object.defineProperty({}, 'passive', {\n\t get: function get() {\n\t supportsPassive = true;\n\t }\n\t });\n\n\t window.addEventListener('test', null, opts);\n\t } catch (e) {}\n\t // fail silently\n\n\n\t /*\n\t * set up\n\t */\n\n\t var setUp = function setUp() {\n\t // add correct mouse wheel event mapping to `inputMap`\n\t inputMap[detectWheel()] = 'mouse';\n\n\t addListeners();\n\t };\n\n\t /*\n\t * events\n\t */\n\n\t var addListeners = function addListeners() {\n\t // `pointermove`, `MSPointerMove`, `mousemove` and mouse wheel event binding\n\t // can only demonstrate potential, but not actual, interaction\n\t // and are treated separately\n\t var options = supportsPassive ? { passive: true, capture: true } : true;\n\n\t document.addEventListener('DOMContentLoaded', setPersist, true);\n\n\t // pointer events (mouse, pen, touch)\n\t if (window.PointerEvent) {\n\t window.addEventListener('pointerdown', setInput, true);\n\t window.addEventListener('pointermove', setIntent, true);\n\t } else if (window.MSPointerEvent) {\n\t window.addEventListener('MSPointerDown', setInput, true);\n\t window.addEventListener('MSPointerMove', setIntent, true);\n\t } else {\n\t // mouse events\n\t window.addEventListener('mousedown', setInput, true);\n\t window.addEventListener('mousemove', setIntent, true);\n\n\t // touch events\n\t if ('ontouchstart' in window) {\n\t window.addEventListener('touchstart', setInput, options);\n\t window.addEventListener('touchend', setInput, true);\n\t }\n\t }\n\n\t // mouse wheel\n\t window.addEventListener(detectWheel(), setIntent, options);\n\n\t // keyboard events\n\t window.addEventListener('keydown', setInput, true);\n\t window.addEventListener('keyup', setInput, true);\n\n\t // focus events\n\t window.addEventListener('focusin', setElement, true);\n\t window.addEventListener('focusout', clearElement, true);\n\t };\n\n\t // checks if input persistence should happen and\n\t // get saved state from session storage if true (defaults to `false`)\n\t var setPersist = function setPersist() {\n\t shouldPersist = !(docElem.getAttribute('data-whatpersist') === 'false' || document.body.getAttribute('data-whatpersist') === 'false');\n\n\t if (shouldPersist) {\n\t // check for session variables and use if available\n\t try {\n\t if (window.sessionStorage.getItem('what-input')) {\n\t currentInput = window.sessionStorage.getItem('what-input');\n\t }\n\n\t if (window.sessionStorage.getItem('what-intent')) {\n\t currentIntent = window.sessionStorage.getItem('what-intent');\n\t }\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\n\t // always run these so at least `initial` state is set\n\t doUpdate('input');\n\t doUpdate('intent');\n\t };\n\n\t // checks conditions before updating new input\n\t var setInput = function setInput(event) {\n\t var eventKey = event.which;\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t var ignoreMatch = !specificMap.length && ignoreMap.indexOf(eventKey) === -1;\n\n\t var specificMatch = specificMap.length && specificMap.indexOf(eventKey) !== -1;\n\n\t var shouldUpdate = value === 'keyboard' && eventKey && (ignoreMatch || specificMatch) || value === 'mouse' || value === 'touch';\n\n\t // prevent touch detection from being overridden by event execution order\n\t if (validateTouch(value)) {\n\t shouldUpdate = false;\n\t }\n\n\t if (shouldUpdate && currentInput !== value) {\n\t currentInput = value;\n\n\t persistInput('input', currentInput);\n\t doUpdate('input');\n\t }\n\n\t if (shouldUpdate && currentIntent !== value) {\n\t // preserve intent for keyboard interaction with form fields\n\t var activeElem = document.activeElement;\n\t var notFormInput = activeElem && activeElem.nodeName && (formInputs.indexOf(activeElem.nodeName.toLowerCase()) === -1 || activeElem.nodeName.toLowerCase() === 'button' && !checkClosest(activeElem, 'form'));\n\n\t if (notFormInput) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t }\n\t };\n\n\t // updates the doc and `inputTypes` array with new input\n\t var doUpdate = function doUpdate(which) {\n\t docElem.setAttribute('data-what' + which, which === 'input' ? currentInput : currentIntent);\n\n\t fireFunctions(which);\n\t };\n\n\t // updates input intent for `mousemove` and `pointermove`\n\t var setIntent = function setIntent(event) {\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t // test to see if `mousemove` happened relative to the screen to detect scrolling versus mousemove\n\t detectScrolling(event);\n\n\t // only execute if scrolling isn't happening\n\t if ((!isScrolling && !validateTouch(value) || isScrolling && event.type === 'wheel' || event.type === 'mousewheel' || event.type === 'DOMMouseScroll') && currentIntent !== value) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t };\n\n\t var setElement = function setElement(event) {\n\t if (!event.target.nodeName) {\n\t // If nodeName is undefined, clear the element\n\t // This can happen if click inside an element.\n\t clearElement();\n\t return;\n\t }\n\n\t currentElement = event.target.nodeName.toLowerCase();\n\t docElem.setAttribute('data-whatelement', currentElement);\n\n\t if (event.target.classList && event.target.classList.length) {\n\t docElem.setAttribute('data-whatclasses', event.target.classList.toString().replace(' ', ','));\n\t }\n\t };\n\n\t var clearElement = function clearElement() {\n\t currentElement = null;\n\n\t docElem.removeAttribute('data-whatelement');\n\t docElem.removeAttribute('data-whatclasses');\n\t };\n\n\t var persistInput = function persistInput(which, value) {\n\t if (shouldPersist) {\n\t try {\n\t window.sessionStorage.setItem('what-' + which, value);\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\t };\n\n\t /*\n\t * utilities\n\t */\n\n\t var pointerType = function pointerType(event) {\n\t if (typeof event.pointerType === 'number') {\n\t return pointerMap[event.pointerType];\n\t } else {\n\t // treat pen like touch\n\t return event.pointerType === 'pen' ? 'touch' : event.pointerType;\n\t }\n\t };\n\n\t // prevent touch detection from being overridden by event execution order\n\t var validateTouch = function validateTouch(value) {\n\t var timestamp = Date.now();\n\n\t var touchIsValid = value === 'mouse' && currentInput === 'touch' && timestamp - currentTimestamp < 200;\n\n\t currentTimestamp = timestamp;\n\n\t return touchIsValid;\n\t };\n\n\t // detect version of mouse wheel event to use\n\t // via https://developer.mozilla.org/en-US/docs/Web/API/Element/wheel_event\n\t var detectWheel = function detectWheel() {\n\t var wheelType = null;\n\n\t // Modern browsers support \"wheel\"\n\t if ('onwheel' in document.createElement('div')) {\n\t wheelType = 'wheel';\n\t } else {\n\t // Webkit and IE support at least \"mousewheel\"\n\t // or assume that remaining browsers are older Firefox\n\t wheelType = document.onmousewheel !== undefined ? 'mousewheel' : 'DOMMouseScroll';\n\t }\n\n\t return wheelType;\n\t };\n\n\t // runs callback functions\n\t var fireFunctions = function fireFunctions(type) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].type === type) {\n\t functionList[i].fn.call(undefined, type === 'input' ? currentInput : currentIntent);\n\t }\n\t }\n\t };\n\n\t // finds matching element in an object\n\t var objPos = function objPos(match) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].fn === match) {\n\t return i;\n\t }\n\t }\n\t };\n\n\t var detectScrolling = function detectScrolling(event) {\n\t if (mousePos.x !== event.screenX || mousePos.y !== event.screenY) {\n\t isScrolling = false;\n\n\t mousePos.x = event.screenX;\n\t mousePos.y = event.screenY;\n\t } else {\n\t isScrolling = true;\n\t }\n\t };\n\n\t // manual version of `closest()`\n\t var checkClosest = function checkClosest(elem, tag) {\n\t var ElementPrototype = window.Element.prototype;\n\n\t if (!ElementPrototype.matches) {\n\t ElementPrototype.matches = ElementPrototype.msMatchesSelector || ElementPrototype.webkitMatchesSelector;\n\t }\n\n\t if (!ElementPrototype.closest) {\n\t do {\n\t if (elem.matches(tag)) {\n\t return elem;\n\t }\n\n\t elem = elem.parentElement || elem.parentNode;\n\t } while (elem !== null && elem.nodeType === 1);\n\n\t return null;\n\t } else {\n\t return elem.closest(tag);\n\t }\n\t };\n\n\t /*\n\t * init\n\t */\n\n\t // don't start script unless browser cuts the mustard\n\t // (also passes if polyfills are used)\n\t if ('addEventListener' in window && Array.prototype.indexOf) {\n\t setUp();\n\t }\n\n\t /*\n\t * api\n\t */\n\n\t return {\n\t // returns string: the current input type\n\t // opt: 'intent'|'input'\n\t // 'input' (default): returns the same value as the `data-whatinput` attribute\n\t // 'intent': includes `data-whatintent` value if it's different than `data-whatinput`\n\t ask: function ask(opt) {\n\t return opt === 'intent' ? currentIntent : currentInput;\n\t },\n\n\t // returns string: the currently focused element or null\n\t element: function element() {\n\t return currentElement;\n\t },\n\n\t // overwrites ignored keys with provided array\n\t ignoreKeys: function ignoreKeys(arr) {\n\t ignoreMap = arr;\n\t },\n\n\t // overwrites specific char keys to update on\n\t specificKeys: function specificKeys(arr) {\n\t specificMap = arr;\n\t },\n\n\t // attach functions to input and intent \"events\"\n\t // funct: function to fire on change\n\t // eventType: 'input'|'intent'\n\t registerOnChange: function registerOnChange(fn, eventType) {\n\t functionList.push({\n\t fn: fn,\n\t type: eventType || 'input'\n\t });\n\t },\n\n\t unRegisterOnChange: function unRegisterOnChange(fn) {\n\t var position = objPos(fn);\n\n\t if (position || position === 0) {\n\t functionList.splice(position, 1);\n\t }\n\t },\n\n\t clearStorage: function clearStorage() {\n\t window.sessionStorage.clear();\n\t }\n\t };\n\t}();\n\n/***/ })\n/******/ ])\n});\n;","(function() {\n var MutationObserver, Util, WeakMap, getComputedStyle, getComputedStyleRX,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n Util = (function() {\n function Util() {}\n\n Util.prototype.extend = function(custom, defaults) {\n var key, value;\n for (key in defaults) {\n value = defaults[key];\n if (custom[key] == null) {\n custom[key] = value;\n }\n }\n return custom;\n };\n\n Util.prototype.isMobile = function(agent) {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(agent);\n };\n\n Util.prototype.createEvent = function(event, bubble, cancel, detail) {\n var customEvent;\n if (bubble == null) {\n bubble = false;\n }\n if (cancel == null) {\n cancel = false;\n }\n if (detail == null) {\n detail = null;\n }\n if (document.createEvent != null) {\n customEvent = document.createEvent('CustomEvent');\n customEvent.initCustomEvent(event, bubble, cancel, detail);\n } else if (document.createEventObject != null) {\n customEvent = document.createEventObject();\n customEvent.eventType = event;\n } else {\n customEvent.eventName = event;\n }\n return customEvent;\n };\n\n Util.prototype.emitEvent = function(elem, event) {\n if (elem.dispatchEvent != null) {\n return elem.dispatchEvent(event);\n } else if (event in (elem != null)) {\n return elem[event]();\n } else if ((\"on\" + event) in (elem != null)) {\n return elem[\"on\" + event]();\n }\n };\n\n Util.prototype.addEvent = function(elem, event, fn) {\n if (elem.addEventListener != null) {\n return elem.addEventListener(event, fn, false);\n } else if (elem.attachEvent != null) {\n return elem.attachEvent(\"on\" + event, fn);\n } else {\n return elem[event] = fn;\n }\n };\n\n Util.prototype.removeEvent = function(elem, event, fn) {\n if (elem.removeEventListener != null) {\n return elem.removeEventListener(event, fn, false);\n } else if (elem.detachEvent != null) {\n return elem.detachEvent(\"on\" + event, fn);\n } else {\n return delete elem[event];\n }\n };\n\n Util.prototype.innerHeight = function() {\n if ('innerHeight' in window) {\n return window.innerHeight;\n } else {\n return document.documentElement.clientHeight;\n }\n };\n\n return Util;\n\n })();\n\n WeakMap = this.WeakMap || this.MozWeakMap || (WeakMap = (function() {\n function WeakMap() {\n this.keys = [];\n this.values = [];\n }\n\n WeakMap.prototype.get = function(key) {\n var i, item, j, len, ref;\n ref = this.keys;\n for (i = j = 0, len = ref.length; j < len; i = ++j) {\n item = ref[i];\n if (item === key) {\n return this.values[i];\n }\n }\n };\n\n WeakMap.prototype.set = function(key, value) {\n var i, item, j, len, ref;\n ref = this.keys;\n for (i = j = 0, len = ref.length; j < len; i = ++j) {\n item = ref[i];\n if (item === key) {\n this.values[i] = value;\n return;\n }\n }\n this.keys.push(key);\n return this.values.push(value);\n };\n\n return WeakMap;\n\n })());\n\n MutationObserver = this.MutationObserver || this.WebkitMutationObserver || this.MozMutationObserver || (MutationObserver = (function() {\n function MutationObserver() {\n if (typeof console !== \"undefined\" && console !== null) {\n console.warn('MutationObserver is not supported by your browser.');\n }\n if (typeof console !== \"undefined\" && console !== null) {\n console.warn('WOW.js cannot detect dom mutations, please call .sync() after loading new content.');\n }\n }\n\n MutationObserver.notSupported = true;\n\n MutationObserver.prototype.observe = function() {};\n\n return MutationObserver;\n\n })());\n\n getComputedStyle = this.getComputedStyle || function(el, pseudo) {\n this.getPropertyValue = function(prop) {\n var ref;\n if (prop === 'float') {\n prop = 'styleFloat';\n }\n if (getComputedStyleRX.test(prop)) {\n prop.replace(getComputedStyleRX, function(_, _char) {\n return _char.toUpperCase();\n });\n }\n return ((ref = el.currentStyle) != null ? ref[prop] : void 0) || null;\n };\n return this;\n };\n\n getComputedStyleRX = /(\\-([a-z]){1})/g;\n\n this.WOW = (function() {\n WOW.prototype.defaults = {\n boxClass: 'wow',\n animateClass: 'animated',\n offset: 0,\n mobile: true,\n live: true,\n callback: null,\n scrollContainer: null\n };\n\n function WOW(options) {\n if (options == null) {\n options = {};\n }\n this.scrollCallback = bind(this.scrollCallback, this);\n this.scrollHandler = bind(this.scrollHandler, this);\n this.resetAnimation = bind(this.resetAnimation, this);\n this.start = bind(this.start, this);\n this.scrolled = true;\n this.config = this.util().extend(options, this.defaults);\n if (options.scrollContainer != null) {\n this.config.scrollContainer = document.querySelector(options.scrollContainer);\n }\n this.animationNameCache = new WeakMap();\n this.wowEvent = this.util().createEvent(this.config.boxClass);\n }\n\n WOW.prototype.init = function() {\n var ref;\n this.element = window.document.documentElement;\n if ((ref = document.readyState) === \"interactive\" || ref === \"complete\") {\n this.start();\n } else {\n this.util().addEvent(document, 'DOMContentLoaded', this.start);\n }\n return this.finished = [];\n };\n\n WOW.prototype.start = function() {\n var box, j, len, ref;\n this.stopped = false;\n this.boxes = (function() {\n var j, len, ref, results;\n ref = this.element.querySelectorAll(\".\" + this.config.boxClass);\n results = [];\n for (j = 0, len = ref.length; j < len; j++) {\n box = ref[j];\n results.push(box);\n }\n return results;\n }).call(this);\n this.all = (function() {\n var j, len, ref, results;\n ref = this.boxes;\n results = [];\n for (j = 0, len = ref.length; j < len; j++) {\n box = ref[j];\n results.push(box);\n }\n return results;\n }).call(this);\n if (this.boxes.length) {\n if (this.disabled()) {\n this.resetStyle();\n } else {\n ref = this.boxes;\n for (j = 0, len = ref.length; j < len; j++) {\n box = ref[j];\n this.applyStyle(box, true);\n }\n }\n }\n if (!this.disabled()) {\n this.util().addEvent(this.config.scrollContainer || window, 'scroll', this.scrollHandler);\n this.util().addEvent(window, 'resize', this.scrollHandler);\n this.interval = setInterval(this.scrollCallback, 50);\n }\n if (this.config.live) {\n return new MutationObserver((function(_this) {\n return function(records) {\n var k, len1, node, record, results;\n results = [];\n for (k = 0, len1 = records.length; k < len1; k++) {\n record = records[k];\n results.push((function() {\n var l, len2, ref1, results1;\n ref1 = record.addedNodes || [];\n results1 = [];\n for (l = 0, len2 = ref1.length; l < len2; l++) {\n node = ref1[l];\n results1.push(this.doSync(node));\n }\n return results1;\n }).call(_this));\n }\n return results;\n };\n })(this)).observe(document.body, {\n childList: true,\n subtree: true\n });\n }\n };\n\n WOW.prototype.stop = function() {\n this.stopped = true;\n this.util().removeEvent(this.config.scrollContainer || window, 'scroll', this.scrollHandler);\n this.util().removeEvent(window, 'resize', this.scrollHandler);\n if (this.interval != null) {\n return clearInterval(this.interval);\n }\n };\n\n WOW.prototype.sync = function(element) {\n if (MutationObserver.notSupported) {\n return this.doSync(this.element);\n }\n };\n\n WOW.prototype.doSync = function(element) {\n var box, j, len, ref, results;\n if (element == null) {\n element = this.element;\n }\n if (element.nodeType !== 1) {\n return;\n }\n element = element.parentNode || element;\n ref = element.querySelectorAll(\".\" + this.config.boxClass);\n results = [];\n for (j = 0, len = ref.length; j < len; j++) {\n box = ref[j];\n if (indexOf.call(this.all, box) < 0) {\n this.boxes.push(box);\n this.all.push(box);\n if (this.stopped || this.disabled()) {\n this.resetStyle();\n } else {\n this.applyStyle(box, true);\n }\n results.push(this.scrolled = true);\n } else {\n results.push(void 0);\n }\n }\n return results;\n };\n\n WOW.prototype.show = function(box) {\n this.applyStyle(box);\n box.className = box.className + \" \" + this.config.animateClass;\n if (this.config.callback != null) {\n this.config.callback(box);\n }\n this.util().emitEvent(box, this.wowEvent);\n this.util().addEvent(box, 'animationend', this.resetAnimation);\n this.util().addEvent(box, 'oanimationend', this.resetAnimation);\n this.util().addEvent(box, 'webkitAnimationEnd', this.resetAnimation);\n this.util().addEvent(box, 'MSAnimationEnd', this.resetAnimation);\n return box;\n };\n\n WOW.prototype.applyStyle = function(box, hidden) {\n var delay, duration, iteration;\n duration = box.getAttribute('data-wow-duration');\n delay = box.getAttribute('data-wow-delay');\n iteration = box.getAttribute('data-wow-iteration');\n return this.animate((function(_this) {\n return function() {\n return _this.customStyle(box, hidden, duration, delay, iteration);\n };\n })(this));\n };\n\n WOW.prototype.animate = (function() {\n if ('requestAnimationFrame' in window) {\n return function(callback) {\n return window.requestAnimationFrame(callback);\n };\n } else {\n return function(callback) {\n return callback();\n };\n }\n })();\n\n WOW.prototype.resetStyle = function() {\n var box, j, len, ref, results;\n ref = this.boxes;\n results = [];\n for (j = 0, len = ref.length; j < len; j++) {\n box = ref[j];\n results.push(box.style.visibility = 'visible');\n }\n return results;\n };\n\n WOW.prototype.resetAnimation = function(event) {\n var target;\n if (event.type.toLowerCase().indexOf('animationend') >= 0) {\n target = event.target || event.srcElement;\n return target.className = target.className.replace(this.config.animateClass, '').trim();\n }\n };\n\n WOW.prototype.customStyle = function(box, hidden, duration, delay, iteration) {\n if (hidden) {\n this.cacheAnimationName(box);\n }\n box.style.visibility = hidden ? 'hidden' : 'visible';\n if (duration) {\n this.vendorSet(box.style, {\n animationDuration: duration\n });\n }\n if (delay) {\n this.vendorSet(box.style, {\n animationDelay: delay\n });\n }\n if (iteration) {\n this.vendorSet(box.style, {\n animationIterationCount: iteration\n });\n }\n this.vendorSet(box.style, {\n animationName: hidden ? 'none' : this.cachedAnimationName(box)\n });\n return box;\n };\n\n WOW.prototype.vendors = [\"moz\", \"webkit\"];\n\n WOW.prototype.vendorSet = function(elem, properties) {\n var name, results, value, vendor;\n results = [];\n for (name in properties) {\n value = properties[name];\n elem[\"\" + name] = value;\n results.push((function() {\n var j, len, ref, results1;\n ref = this.vendors;\n results1 = [];\n for (j = 0, len = ref.length; j < len; j++) {\n vendor = ref[j];\n results1.push(elem[\"\" + vendor + (name.charAt(0).toUpperCase()) + (name.substr(1))] = value);\n }\n return results1;\n }).call(this));\n }\n return results;\n };\n\n WOW.prototype.vendorCSS = function(elem, property) {\n var j, len, ref, result, style, vendor;\n style = getComputedStyle(elem);\n result = style.getPropertyCSSValue(property);\n ref = this.vendors;\n for (j = 0, len = ref.length; j < len; j++) {\n vendor = ref[j];\n result = result || style.getPropertyCSSValue(\"-\" + vendor + \"-\" + property);\n }\n return result;\n };\n\n WOW.prototype.animationName = function(box) {\n var animationName, error;\n try {\n animationName = this.vendorCSS(box, 'animation-name').cssText;\n } catch (error) {\n animationName = getComputedStyle(box).getPropertyValue('animation-name');\n }\n if (animationName === 'none') {\n return '';\n } else {\n return animationName;\n }\n };\n\n WOW.prototype.cacheAnimationName = function(box) {\n return this.animationNameCache.set(box, this.animationName(box));\n };\n\n WOW.prototype.cachedAnimationName = function(box) {\n return this.animationNameCache.get(box);\n };\n\n WOW.prototype.scrollHandler = function() {\n return this.scrolled = true;\n };\n\n WOW.prototype.scrollCallback = function() {\n var box;\n if (this.scrolled) {\n this.scrolled = false;\n this.boxes = (function() {\n var j, len, ref, results;\n ref = this.boxes;\n results = [];\n for (j = 0, len = ref.length; j < len; j++) {\n box = ref[j];\n if (!(box)) {\n continue;\n }\n if (this.isVisible(box)) {\n this.show(box);\n continue;\n }\n results.push(box);\n }\n return results;\n }).call(this);\n if (!(this.boxes.length || this.config.live)) {\n return this.stop();\n }\n }\n };\n\n WOW.prototype.offsetTop = function(element) {\n var top;\n while (element.offsetTop === void 0) {\n element = element.parentNode;\n }\n top = element.offsetTop;\n while (element = element.offsetParent) {\n top += element.offsetTop;\n }\n return top;\n };\n\n WOW.prototype.isVisible = function(box) {\n var bottom, offset, top, viewBottom, viewTop;\n offset = box.getAttribute('data-wow-offset') || this.config.offset;\n viewTop = (this.config.scrollContainer && this.config.scrollContainer.scrollTop) || window.pageYOffset;\n viewBottom = viewTop + Math.min(this.element.clientHeight, this.util().innerHeight()) - offset;\n top = this.offsetTop(box);\n bottom = top + box.clientHeight;\n return top <= viewBottom && bottom >= viewTop;\n };\n\n WOW.prototype.util = function() {\n return this._util != null ? this._util : this._util = new Util();\n };\n\n WOW.prototype.disabled = function() {\n return !this.config.mobile && this.util().isMobile(navigator.userAgent);\n };\n\n return WOW;\n\n })();\n\n}).call(this);\n","(function ($) {\n\t$(document).ready(function () {\n\t\t//only run for logged in users on portal archive pages\n\t\tif (\n\t\t\t$(\"body\").is(\".logged-in.page-template-board-portal-archive-page\")\n\t\t) {\n\t\t\t//pagination links click handler\n\t\t\t$(\".document-pagination-container a.page-numbers\").click(function (\n\t\t\t\te\n\t\t\t) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tlet clickedPaginationLink = $(e.target);\n\t\t\t\tlet clickedPageNumber = clickedPaginationLink.data(\"page\");\n\t\t\t\tlet currentSection = $(e.target).closest(\n\t\t\t\t\t\".documents-list-section\"\n\t\t\t\t);\n\t\t\t\tlet currentDocumentWrapper = currentSection\n\t\t\t\t\t.find(\".documents-container\")\n\t\t\t\t\t.first();\n\n\t\t\t\tlet documentCategoryID = currentSection.data(\"categoty-id\");\n\t\t\t\tlet postsPerPage = currentSection.data(\"posts-per-page\");\n\t\t\t\tlet currentPageNumber =\n\t\t\t\t\tcurrentSection.attr(\"data-current-page\");\n\n\t\t\t\t//only proceed if the clicked link is not the current page\n\t\t\t\tif (clickedPageNumber != currentPageNumber) {\n\t\t\t\t\t//add a loading class to the results container\n\t\t\t\t\tcurrentDocumentWrapper.addClass(\"loading\");\n\n\t\t\t\t\t//ajax request to get requested documents\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\tcategory_id: documentCategoryID,\n\t\t\t\t\t\tposts_per_page: postsPerPage,\n\t\t\t\t\t\trequsted_page: clickedPageNumber,\n\t\t\t\t\t\taction: \"get_portal_documents\",\n\t\t\t\t\t};\n\n\t\t\t\t\tjQuery.post(\n\t\t\t\t\t\t\"/wp-admin/admin-ajax.php\",\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\tfunction (response) {\n\t\t\t\t\t\t\t//replace the documents on the page\n\t\t\t\t\t\t\tcurrentDocumentWrapper.html(response);\n\n\t\t\t\t\t\t\t//remove the loading class\n\t\t\t\t\t\t\tcurrentDocumentWrapper.removeClass(\"loading\");\n\n\t\t\t\t\t\t\t// update the data attribute of the container\n\t\t\t\t\t\t\tcurrentSection.attr(\n\t\t\t\t\t\t\t\t\"data-current-page\",\n\t\t\t\t\t\t\t\tclickedPageNumber\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t//set the 'current' class on the right pagination link\n\t\t\t\t\t\t\tcurrentSection\n\t\t\t\t\t\t\t\t.find(\".page-numbers.current\")\n\t\t\t\t\t\t\t\t.removeClass(\"current\");\n\t\t\t\t\t\t\tclickedPaginationLink.addClass(\"current\");\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t//show and hide the portal search form when the search button in the portal header is clicked\n\t\t$(\"#portal-header-search-btn\").click(function () {\n\t\t\t$(\"#portal-search-container-desktop\").slideToggle();\n\t\t});\n\n\t\t//only run for logged in users on search result page\n\t\tif ($(\"body\").is(\".logged-in.search\")) {\n\t\t\t//load more button click handler\n\t\t\t$(\"#board-portal-load-more-btn\").click(function (e) {\n\t\t\t\tlet loadMoreBtn = $(e.target);\n\t\t\t\t// Save the button's text so we can restore it when removing the loading state\n\t\t\t\tlet originalButtonText = loadMoreBtn.html();\n\t\t\t\t// change the button text and disable it while loading\n\t\t\t\tloadMoreBtn.attr(\"disabled\", true).text(\"Loading...\");\n\n\t\t\t\tlet searchContainer = loadMoreBtn.closest(\n\t\t\t\t\t\".portal-search-container\"\n\t\t\t\t);\n\t\t\t\tlet resultsColumn = searchContainer\n\t\t\t\t\t.find(\".results-container\")\n\t\t\t\t\t.first();\n\n\t\t\t\tlet currentPageNumber = Number(\n\t\t\t\t\tsearchContainer.attr(\"data-current-page\")\n\t\t\t\t);\n\t\t\t\tlet postsPerPage = searchContainer.attr(\"data-posts-per-page\");\n\t\t\t\tlet maxPageNumber = searchContainer.attr(\"data-max-page\");\n\t\t\t\tlet searchTerm = searchContainer.attr(\"data-search-term\");\n\n\t\t\t\t//only proceed if there are more pages to load\n\t\t\t\tif (maxPageNumber > currentPageNumber) {\n\t\t\t\t\t//add a loading class to the results container\n\t\t\t\t\tresultsColumn.addClass(\"loading\");\n\n\t\t\t\t\t//ajax request to load more documents\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\tposts_per_page: postsPerPage,\n\t\t\t\t\t\trequsted_page: currentPageNumber + 1,\n\t\t\t\t\t\tmax_page_number: maxPageNumber,\n\t\t\t\t\t\tsearch_term: searchTerm,\n\t\t\t\t\t\taction: \"load_more_portal_documents\",\n\t\t\t\t\t};\n\n\t\t\t\t\tjQuery.post(\n\t\t\t\t\t\t\"/wp-admin/admin-ajax.php\",\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\tfunction (response) {\n\t\t\t\t\t\t\t// update the load more button text and remove disabled state\n\t\t\t\t\t\t\tloadMoreBtn\n\t\t\t\t\t\t\t\t.attr(\"disabled\", false)\n\t\t\t\t\t\t\t\t.html(originalButtonText);\n\n\t\t\t\t\t\t\t// append the documents on the page\n\t\t\t\t\t\t\tresultsColumn.append(response);\n\n\t\t\t\t\t\t\t//remove the loading class\n\t\t\t\t\t\t\tresultsColumn.removeClass(\"loading\");\n\n\t\t\t\t\t\t\tlet loadedPageNumber = currentPageNumber + 1;\n\t\t\t\t\t\t\t// update the data attribute of the container\n\t\t\t\t\t\t\tsearchContainer.attr(\n\t\t\t\t\t\t\t\t\"data-current-page\",\n\t\t\t\t\t\t\t\tloadedPageNumber\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t//hide the load more button if needed\n\t\t\t\t\t\t\tif (loadedPageNumber == maxPageNumber) {\n\t\t\t\t\t\t\t\tloadMoreBtn\n\t\t\t\t\t\t\t\t\t.closest(\".portal-load-more-row\")\n\t\t\t\t\t\t\t\t\t.slideUp();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n})(jQuery);\n","import whatInput from 'what-input';\n\n(function ($) {\n\tif ($('.block-main-navigation').length) {\n\t\tvar win_width = $(window).width();\n\n\t\t/**\n\t\t * Hide sub elements and remove eligible focus\n\t\t * @param object li_element\n\t\t */\n\t\tvar show_hide_sub_nav_items = function (li_element) {\n\t\t\t$('> ul a', li_element).each(function () {\n\t\t\t\tif ($(li_element).hasClass('hover')) {\n\t\t\t\t\t$(this).attr('aria-hidden', '').attr('tabindex', '');\n\t\t\t\t} else {\n\t\t\t\t\t$(this).attr('aria-hidden', 'true').attr('tabindex', '-1');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t/**\n\t\t * Loop through siblings on focus to clean up hover\n\t\t * @param object li_element\n\t\t * @param object component is the parent component\n\t\t */\n\t\tvar li_focus = function (li_element, component) {\n\t\t\t$(li_element).siblings().each(function () {\n\t\t\t\t$(this).removeClass('hover');\n\t\t\t\tif ($(component).hasClass('desktop')) {\n\t\t\t\t\tshow_hide_sub_nav_items($(this));\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Hide any expanded menus in desktop view\n\t\t * @param object component\n\t\t */\n\t\tvar blur_menu = function (component) {\n\t\t\tif ($(component).hasClass('desktop')) {\n\t\t\t\t$('.level-0.hover > button', component).trigger('click');\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Open the mobile menu and setup accessibility functions\n\t\t *\n\t\t * @param object component\n\t\t * @param object nav_button is the nav toggle\n\t\t */\n\t\tvar mobile_menu_open = function (component, nav_button) {\n\t\t\t$('body').addClass('mn-open');\n\t\t\t$('#content a, #content button, #content input, #content select, #content textarea, #content iframe, #content [role=\"button\"], #content [role=\"listbox\"],#content form, #content map, #content canvas').attr('tabindex', '-1').attr('aria-hidden', true);\n\t\t\t$('.level-0 > .mn-link:not(.breakpoint-disabled)', component).attr('tabindex', '').attr('aria-hidden', '');\n\t\t\t$('.main-nav-close.mn-link', component).attr('tabindex', '').attr('aria-hidden', '').removeClass('hidden');\n\t\t\t$(component).show('fast', function () {\n\t\t\t\t$(component).addClass('menu-open');\n\t\t\t\t$(component).closest('.block-main-navigation').addClass('mobile-open');\n\t\t\t\t$(nav_button).attr('aria-expanded', 'true').attr('aria-hidden', 'true').attr('tabindex', '-1');\n\t\t\t\t// Keyboard users get moved to the first nav link\n\t\t\t\tif ('object' === typeof whatInput) {\n\t\t\t\t\tif ('keyboard' === whatInput.ask()) {\n\t\t\t\t\t\t$('> .level-0 .mn-link:not(.breakpoint-disabled):eq(0)', component).focus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Hide menus by component visibility settings\n\t\t * @param object component is the navigation component\n\t\t * @param string links_to_disable by li[data-visible]\n\t\t */\n\t\tvar hide_menu_by_screen = function (component, links_to_disable, links_to_enable) {\n\t\t\t$(component).addClass('hidden').attr('aria-hidden', 'true');\n\t\t\t$('a, button', component).attr('tabindex', '-1');\n\t\t\t$('li[data-visible=\"' + links_to_disable + '\"] a, li[data-visible=\"' + links_to_disable + '\"] button', component).attr('tabindex', '-1').addClass('breakpoint-disabled');\n\t\t\t$('li[data-visible=\"' + links_to_enable + '\"] a, li[data-visible=\"' + links_to_enable + '\"] button', component).attr('tabindex', '').removeClass('breakpoint-disabled');\n\t\t}\n\n\t\t/**\n\t\t * Show menus by component visibility settings\n\t\t * @param object component is the navigation component\n\t\t * @param string links_to_disable by li[data-visible]\n\t\t * @param string links_to_enable by li[data-visible]\n\t\t */\n\t\tvar show_menu_by_screen = function (component, links_to_disable, links_to_enable) {\n\t\t\t$(component).removeClass('hidden').attr('aria-hidden', '');\n\t\t\t$('a, button', component).attr('tabindex', '');\n\t\t\t$('li[data-visible=\"' + links_to_enable + '\"] a, li[data-visible=\"' + links_to_enable + '\"] button', component).attr('tabindex', '').removeClass('breakpoint-disabled');\n\t\t\t$('li[data-visible=\"' + links_to_disable + '\"] a, li[data-visible=\"' + links_to_disable + '\"] button', component).attr('tabindex', '-1').addClass('breakpoint-disabled');\n\t\t\t$('li[data-visible=\"' + links_to_disable + '\"] ul:not(.sub-menu) a', component).attr('tabindex', '').removeClass('breakpoint-disabled');\n\t\t}\n\n\t\t/**\n\t\t * Close the mobile menu and remove accessibility functions\n\t\t *\n\t\t * @param object component\n\t\t * @param object nav_button is the nav toggle\n\t\t */\n\n\t\tvar mobile_menu_close = function (component, close_button, is_click) {\n\n\t\t\tlet parent_button = $(close_button).attr('data-parent');\n\t\t\tlet container = $(close_button).attr('data-target');\n\n\t\t\t$('body').removeClass('mn-open');\n\t\t\t$('#content a, #content button, #content input, #content select, #content textarea, #content iframe, #content [role=\"button\"], #content [role=\"listbox\"],#content form, #content map, #content canvas').attr('tabindex', '').attr('aria-hidden', '');\n\t\t\t$('.mn-link', component).attr('tabindex', '-1').attr('aria-hidden', 'true');\n\t\t\t$(close_button).addClass('hidden');\n\t\t\tif ($(container).hasClass('slide-left')) {\n\t\t\t\t$(container).addClass('slide-left-close');\n\t\t\t}\n\t\t\tif ($(container).hasClass('slide-right') && $(container).hasClass('mobile')) {\n\t\t\t\t$(container).addClass('slide-right-close');\n\t\t\t}\n\t\t\t// If the back button is visible, we need to click it and do the actions associated with the back button\n\t\t\tsetTimeout(function () {\n\t\t\t\t$(container).removeClass('menu-open');\n\t\t\t\tif ($(container).hasClass('slide-left')) {\n\t\t\t\t\t$(container).removeClass('slide-left-close');\n\t\t\t\t}\n\t\t\t\tif ($(container).hasClass('slide-right')) {\n\t\t\t\t\t$(container).removeClass('slide-right-close');\n\t\t\t\t}\n\t\t\t\t$(component).removeClass('menu-open');\n\t\t\t\t$(component).hide('fast', function () {\n\t\t\t\t\t$(this).css({ 'display': '' });\n\t\t\t\t});\n\t\t\t\t// On click do these options. Otherwise, if the screen is being resized, we don't need to do this.\n\t\t\t\tif (is_click) {\n\t\t\t\t\t$(parent_button).attr('aria-expanded', 'false').attr('aria-hidden', '').attr('tabindex', '').removeClass('active');\n\t\t\t\t\t// Keyboard users get moved to the original menu toggle\n\t\t\t\t\tif ('object' === typeof whatInput) {\n\t\t\t\t\t\tif ('keyboard' === whatInput.ask()) {\n\t\t\t\t\t\t\t$(parent_button).focus();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, 520);\n\t\t}\n\n\t\t/**\n\t\t * In case there are multiple navs on a page, loop through each component individually.\n\t\t * @param object component\n\t\t *\n\t\t * @see show_hide_sub_nav_items\n\t\t * @see li_focus\n\t\t */\n\t\tvar main_nav_events = function (component) {\n\t\t\tvar num_links = $('.mn-link', component).length - 1;\n\t\t\tvar last_link = $('.mn-link:eq(' + num_links + ')', component);\n\n\t\t\t// Hide the mobile nav back button and clear mobile events\n\t\t\t$('.mn-close-wrap', component).addClass('hidden');\n\t\t\t$('.main-nav-close', component).attr('aria-hidden', 'true').attr('tabindex', '-1');\n\t\t\t$('.level-0 > button', component).off('click').off('keydown').off('focus').off('mouseenter');\n\t\t\t$('.level-0 > a', component).off('focus').off('mouseenter');\n\t\t\t$('.level-1 > a', component).off('keyup');\n\n\t\t\t$('.level-0 > button', component).on('click', function () {\n\t\t\t\tlet par_li = $(this).closest('.level-0');\n\t\t\t\t$(par_li).toggleClass('hover');\n\t\t\t\t$(par_li).siblings('.level-0').each(function () {\n\t\t\t\t\t$(this).removeClass('hover');\n\t\t\t\t\tif ($(component).hasClass('desktop')) {\n\t\t\t\t\t\tshow_hide_sub_nav_items($(this));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif ($(component).hasClass('desktop')) {\n\t\t\t\t\tshow_hide_sub_nav_items(par_li);\n\t\t\t\t}\n\t\t\t}).on('keydown', function (event) {\n\t\t\t\tlet par_li = $(this).closest('.level-0');\n\t\t\t\tif ('escape' === event.key.toLowerCase()) {\n\t\t\t\t\t$(par_li).removeClass('hover');\n\t\t\t\t\tshow_hide_sub_nav_items(par_li);\n\t\t\t\t}\n\t\t\t}).on('focus', function () {\n\t\t\t\tlet par_li = $(this).closest('.level-0');\n\t\t\t\t// Hide sub elements and remove eligible focus.\n\t\t\t\tli_focus(par_li, component);\n\t\t\t}).on('mouseenter', function () {\n\t\t\t\tlet par_li = $(this).closest('.level-0');\n\t\t\t\t$(par_li).addClass('hover');\n\t\t\t\t$(par_li).siblings('.level-0').each(function () {\n\t\t\t\t\t$(this).removeClass('hover');\n\t\t\t\t\tif ($(component).hasClass('desktop')) {\n\t\t\t\t\t\tshow_hide_sub_nav_items($(this));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif ($(component).hasClass('desktop')) {\n\t\t\t\t\tshow_hide_sub_nav_items(par_li);\n\t\t\t\t}\n\t\t\t});\n\t\t\t// When non-dropdown items are focussed, we need to remove the other hover states\n\t\t\t$('.level-0 > a', component).on('focus', function () {\n\t\t\t\tlet par_li = $(this).closest('.level-0');\n\t\t\t\t// Hide sub elements and remove eligible focus\n\t\t\t\tli_focus(par_li, component);\n\t\t\t}).on('mouseenter', function () {\n\t\t\t\tlet par_li = $(this).closest('.level-0');\n\t\t\t\t// Hide sub elements and remove eligible focus\n\t\t\t\tli_focus(par_li, component);\n\t\t\t});\n\n\t\t\t$('.level-1 > a', component).on('keyup', function (e) {\n\t\t\t\tlet par_li = $(this).closest('.level-0');\n\t\t\t\tif ('escape' === e.key.toLowerCase()) {\n\t\t\t\t\t$(par_li).removeClass('hover');\n\t\t\t\t\tshow_hide_sub_nav_items(par_li);\n\t\t\t\t\t$('>button', par_li).focus();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Hide all submenus on last link tab out\n\t\t\t$(last_link).on('keydown', function (event) {\n\t\t\t\tif ('tab' === event.key.toLowerCase()) {\n\t\t\t\t\tblur_menu(component);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$('.sub-menu', component).on('mouseleave', function () {\n\t\t\t\tlet par_li = $(this).parent('li')\n\t\t\t\t$(par_li).removeClass('hover');\n\t\t\t\tshow_hide_sub_nav_items(par_li);\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Remove desktop specific events and add mobile specific events\n\t\t * @param object component is the main nav\n\t\t */\n\t\tvar mobile_nav_events = function (component) {\n\t\t\t// Clear desktop events\n\t\t\tvar num_links = $('.mn-link', component).length - 1;\n\t\t\tvar last_link = $('.mn-link:eq(' + num_links + ')', component);\n\t\t\t$('.level-0 > button', component).off('mouseenter');\n\t\t\t$('.level-1 > a', component).off('keyup');\n\t\t\t$(last_link).off('keydown');\n\t\t\t$('.sub-menu', component).off('mouseleave');\n\t\t\t$('.level-0 > button', component).off('click').off('keydown');\n\n\t\t\t$('.mn-close-wrap', component).removeClass('hidden');\n\t\t\t$('.main-nav-close', component).attr('aria-hidden', '').attr('tabindex', '');\n\n\t\t\t$('.level-0 > button', component).on('click', function () {\n\t\t\t\tlet par_li = $(this).closest('.level-0');\n\t\t\t\t$(par_li).toggleClass('hover');\n\t\t\t\t$(par_li).siblings('.level-0').each(function () {\n\t\t\t\t\t$(this).removeClass('hover');\n\t\t\t\t});\n\t\t\t\t$('.level-0 > .mn-link', component).attr('tabindex', '-1').attr('aria-hidden', 'true');\n\t\t\t\t$('.mn-back-wrap', component).removeClass('hidden');\n\t\t\t\t$('.main-nav-back', component).attr('tabindex', '').attr('aria-hidden', '').attr('data-parent', $(par_li).index());\n\t\t\t\t$('.level-1 > .mn-link', par_li).attr('tabindex', '').attr('aria-hidden', '');\n\t\t\t}).on('keydown', function (event) {\n\t\t\t\tlet par_li = $(this).closest('.level-0');\n\t\t\t\tif ('escape' === event.key.toLowerCase()) {\n\t\t\t\t\t$(par_li).removeClass('hover');\n\t\t\t\t\t$('.level-0 > .mn-link', component).attr('tabindex', '').attr('aria-hidden', '');\n\t\t\t\t\t$('.level-1 > .mn-link', component).attr('tabindex', '-1').attr('aria-hidden', 'true');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$('.main-nav-back').on('click', function () {\n\t\t\t\tlet par_li = $(this).attr('data-parent');\n\t\t\t\t$('.level-0:eq(' + par_li + ')', component).removeClass('hover').focus();\n\t\t\t\t$('.mn-back-wrap', component).addClass('hidden');\n\t\t\t\t$(this).attr('tabindex', '-1').attr('aria-hidden', 'true');\n\t\t\t\t$('.level-0 > .mn-link', component).attr('tabindex', '').attr('aria-hidden', '');\n\t\t\t\t$('.level-1 > .mn-link', component).attr('tabindex', '-1').attr('aria-hidden', 'true');\n\t\t\t}).on('keydown', function (e) {\n\t\t\t\tlet par_li = $(this).attr('data-parent');\n\t\t\t\tif ('escape' === e.key.toLowerCase() || 'enter' === e.key.toLowerCase()) {\n\t\t\t\t\t$('.level-0:eq(' + par_li + ')', component).removeClass('hover');\n\t\t\t\t\t$('.mn-back-wrap', component).addClass('hidden');\n\t\t\t\t\t$(this).attr('tabindex', '-1').attr('aria-hidden', 'true');\n\t\t\t\t\t$('.level-0 > .mn-link', component).attr('tabindex', '').attr('aria-hidden', '');\n\t\t\t\t\t$('.level-1 > .mn-link', component).attr('tabindex', '-1').attr('aria-hidden', 'true');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$('.sub-menu', component).off('mouseleave');\n\t\t}\n\n\t\t/**\n\t\t * Initialize the menus\n\t\t * @param object component is the navigation component\n\t\t *\n\t\t * @see mobile_menu_close\n\t\t * @see main_nav_events\n\t\t * @see show_hide_sub_nav_items\n\t\t * @see blur_component\n\t\t * @see mobile_nav_events\n\t\t * @see hide_menu_by_screen\n\t\t * @see show_menu_by_screen\n\t\t */\n\t\tvar initialize_menu = function (component) {\n\t\t\tlet breakpoint = $(component).attr('data-breakpoint');\n\t\t\tlet menu_visibility = $(component).attr('data-visible');\n\t\t\tif (isNaN(parseInt(breakpoint, 10))) {\n\t\t\t\tbreakpoint = 920;\n\t\t\t}\n\n\t\t\t// Initialize desktop\n\t\t\tif (win_width >= breakpoint) {\n\t\t\t\tif (!$(component).hasClass('desktop')) {\n\t\t\t\t\t// Hide this menu if it's only supposed to show on small screens by breakpoint. Desktop will always be defined as >= defined breakpoint\n\t\t\t\t\tif ('mobile' !== menu_visibility) {\n\t\t\t\t\t\tshow_menu_by_screen(component, 'mobile', 'desktop');\n\t\t\t\t\t\tif ($('body').hasClass('mn-open')) {\n\t\t\t\t\t\t\tmobile_menu_close(component, $('.main-nav-close', component), false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(component).removeClass('mobile').addClass('desktop');\n\t\t\t\t\t\tmain_nav_events(component);\n\t\t\t\t\t\t$('.level-0', component).each(function () {\n\t\t\t\t\t\t\tshow_hide_sub_nav_items($(this));\n\t\t\t\t\t\t});\n\t\t\t\t\t\t$(component).siblings('.main-nav-toggle').addClass('hidden').attr('aria-hidden', true).attr('tabindex', '-1');\n\n\t\t\t\t\t\t$(component).css({ 'opacity': '' });\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(component).siblings('.main-nav-toggle').addClass('hidden').attr('aria-hidden', true).attr('tabindex', '-1');\n\t\t\t\t\t\thide_menu_by_screen(component, 'desktop', 'mobile');\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Hide this menu if it's only supposed to show on large screens by breakpoint. Desktop will always be defined as >= defined breakpoint\n\t\t\t\t\tif ('mobile' === menu_visibility) {\n\t\t\t\t\t\t$(component).siblings('.main-nav-toggle').addClass('hidden').attr('aria-hidden', 'true').attr('tabindex', '-1');\n\t\t\t\t\t\thide_menu_by_screen(component, 'desktop', 'mobile');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ($(component).hasClass('hidden')) {\n\t\t\t\t\t\t\t$(component).siblings('.main-nav-toggle').addClass('hidden').attr('aria-hidden', 'true').attr('tabindex', '-1');\n\t\t\t\t\t\t\tshow_menu_by_screen(component, 'mobile', 'desktop');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!$(component).hasClass('mobile')) {\n\t\t\t\t\t// Hide this menu if it's only supposed to show on large screens by breakpoint. Desktop will always be defined as >= defined breakpoint\n\t\t\t\t\tif ('desktop' !== menu_visibility) {\n\t\t\t\t\t\tshow_menu_by_screen(component, 'desktop', 'mobile');\n\t\t\t\t\t\t$(component).removeClass('desktop').addClass('mobile');\n\t\t\t\t\t\t// Remove desktop specific options\n\t\t\t\t\t\tblur_menu(component);\n\t\t\t\t\t\tmobile_nav_events(component);\n\t\t\t\t\t\t$(component).siblings('.main-nav-toggle').removeClass('hidden').attr('aria-hidden', '').attr('tabindex', '');\n\n\t\t\t\t\t\t$(component).css({ 'opacity': '' });\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(component).siblings('.main-nav-toggle').addClass('hidden').attr('aria-hidden', 'true').attr('tabindex', '-1');\n\t\t\t\t\t\thide_menu_by_screen(component, 'mobile', 'desktop');\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Hide this menu if it's only supposed to show on large screens by breakpoint. Desktop will always be defined as >= defined breakpoint\n\t\t\t\t\tif ('desktop' === menu_visibility) {\n\t\t\t\t\t\t$(component).siblings('.main-nav-toggle').addClass('hidden').attr('aria-hidden', 'true').attr('tabindex', '-1');\n\t\t\t\t\t\thide_menu_by_screen(component, 'mobile', 'desktop');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ($(component).hasClass('hidden')) {\n\t\t\t\t\t\t\t$(component).siblings('.main-nav-toggle').removeClass('hidden').attr('aria-hidden', '').attr('tabindex', '');\n\t\t\t\t\t\t\tshow_menu_by_screen(component, 'desktop', 'menu');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t$(document).on('ready', function () {\n\t\t\t$('.main-navigation-nav').each(function () {\n\t\t\t\tlet component = $(this);\n\t\t\t\tinitialize_menu(component);\n\t\t\t});\n\n\t\t\t$(window).on('resize', function () {\n\t\t\t\tif (win_width !== $(window).width()) {\n\t\t\t\t\twin_width = $(window).width();\n\t\t\t\t\t$('.main-navigation-nav').each(function () {\n\t\t\t\t\t\tlet component = $(this);\n\t\t\t\t\t\tif ($('body').hasClass('mn-open')) {\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\t$('.main-nav-close.active').trigger('click');\n\t\t\t\t\t\t\t}, 250);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinitialize_menu(component);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t});\n\t\t\t$(this).on('click', '.menu-item-link', function (e) {\n\t\t\t\tif (!$(e.target).is('.menu-item-link')) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t}).on('click', function (event) {\n\t\t\t\tif (!$(event.target.parentNode).is('.level-0')) {\n\t\t\t\t\t$('.main-navigation-nav').each(function () {\n\t\t\t\t\t\tif ($(this).hasClass('desktop')) {\n\t\t\t\t\t\t\t$('.level-0.hover > button', this).each(function () {\n\t\t\t\t\t\t\t\t$(this).trigger('click');\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}).on('keyup', function (e) {\n\t\t\t\tif ('escape' === e.key.toLowerCase() && $('body').hasClass('mn-open')) {\n\t\t\t\t\t$('.main-nav-close.active').trigger('click');\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tif ($('.main-nav-toggle').length) {\n\t\t\t$('.main-nav-toggle').each(function () {\n\t\t\t\tconst nav_target = $(this).attr('data-target');\n\t\t\t\tlet breakpoint = $(nav_target).attr('data-breakpoint'); // eslint-disable-line\n\t\t\t\t$(this).on('click', function () {\n\t\t\t\t\t$(this).addClass('active');\n\t\t\t\t\tmobile_menu_open(nav_target, $(this));\n\t\t\t\t});\n\t\t\t});\n\t\t\t$('.main-nav-close').each(function () {\n\t\t\t\tconst nav_target = $(this).attr('data-target');\n\t\t\t\tlet breakpoint = $(nav_target).attr('data-breakpoint'); // eslint-disable-line\n\t\t\t\t$(this).on('click', function () {\n\t\t\t\t\tmobile_menu_close(nav_target, $(this), true);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n}(jQuery));","\nimport { WOW } from \"wowjs\";\n\n(function ($) {\n\t$(document).ready(function () {\n\n\t\tconst wow = new WOW();\n\n\t\twow.init();\n\n\t\t$(window).on(\"resize touchmove\", function () {\n\n\t\t\tbreakpointObj.refreshValue();\n\n\t\t\t// Have to use straight JS way to get window inner height. jQuery way doesn't detect when\n\t\t\t// the address bar in mobile browsers moves down when the page is scrolled\n\t\t\t$(\":root\").css(\"--actual-vh\", window.innerHeight + \"px\");\n\n\t\t\t$(\":root\").css(\"--footer-height\", $(\".site-footer-wrap\").outerHeight() + \"px\");\n\n\t\t}).resize(); // Triggers resize listener on page load\n\n\t\tlet headerScrollTopOffset = 0;\n\n\t\tif ($(\"body\").hasClass(\"admin-bar\") && ($(window).width() > 600)) {\n\t\t\theaderScrollTopOffset = $(\"html\").css(\"margin-top\");\n\t\t}\n\n\t\t//equalCarouselItemHeights(\".eresources-slider-block .eresources-carousel\");\n\n\t\tlet resizeThrottled = false;\n\n\t\t$(window).on(\"resize\", function () {\n\n\t\t\tif (!resizeThrottled) {\n\n\t\t\t\t//equalCarouselItemHeights(\".eresources-slider-block .eresources-carousel\");\n\n\t\t\t\tresizeThrottled = true;\n\n\t\t\t\tsetTimeout(function () {\n\n\t\t\t\t\tresizeThrottled = false;\n\n\t\t\t\t}, 100);\n\n\t\t\t}\n\n\t\t});\n\n\t\t// Watch for when header is scrolled to or away from the top of the viewport\n\t\t// If header is scrolled to the top of the page, we know it's been stickied based on it having position: sticky\n\t\t// Add class when it's sitting at the top of the page, remove it when it's been scrolled away\n\t\t$(\"body > header\").observeScrollTopChanges(headerScrollTopOffset).on(\"scroll-top-change\", (evt) => {\n\n\t\t\t$(evt.target).toggleClass(\"sticky\", evt.detail.scrolledToTop);\n\n\t\t});\n\n\n\t\t//let desktopMenuBreakpoint = parseInt($(\":root\").css(\"--desktop-menu-breakpoint\"));\n\n\t\t/**\n\t\t * Testimonial - Set equal heights\n\t\t */\n\t\tfunction testimonialEqualHeights() {\n\t\t\t$('.testimonial-block').each(function () {\n\t\t\t\tvar items = $('.carousel-item', this);\n\t\t\t\tlet maxHeight = 0;\n\n\t\t\t\t// Show all slides\n\t\t\t\t$.each(items, function (i, slide) {\n\t\t\t\t\t$(slide).addClass('active');\n\t\t\t\t});\n\n\t\t\t\t// Get the height of the tallest caption and save it\n\t\t\t\t$.each(items, function () {\n\t\t\t\t\tlet caption = $('.card-body', this);\n\t\t\t\t\tlet captionHeight = caption.outerHeight();\n\n\t\t\t\t\tif (captionHeight > maxHeight) {\n\t\t\t\t\t\tmaxHeight = captionHeight;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Apply the max height to all captions\n\t\t\t\t$.each(items, function () {\n\t\t\t\t\tlet caption = $('.card-body', this);\n\t\t\t\t\tcaption.css('height', maxHeight);\n\n\t\t\t\t\t// Remove .active from all slides\n\t\t\t\t\t$(this).removeClass('active');\n\t\t\t\t});\n\n\t\t\t\t// Add the active class back to the first slide\n\t\t\t\t$('.testimonial-block .carousel-inner .carousel-item:first-of-type').addClass('active');\n\t\t\t});\n\t\t}\n\n\t\t// Run equal heights\n\t\ttestimonialEqualHeights();\n\n\t\t/**\n\t\t * Desktop menu dropdowns\n\t\t */\n\t\t//$(\".menu-item-has-children\").find(\".dropdown-toggle\").attr(\"data-toggle\", \"\");\n\n\t\t$(\"header .js-mobile-menu-toggle\").on(\"click\", function () {\n\n\t\t\t$(\"body\").toggleClass(\"no-scroll mobile-menu-open\");\n\n\t\t});\n\n\n\t\t/**\n\t\t* Header - Search bar functionality\n\t\t*/\n\t\tlet headerSearchButton = $(\".js-header-search-btn, .menu-item-search > .mn-link\");\n\t\tlet searchCloseButton = $(\".js-search-overlay-close-btn\");\n\t\tlet searchOverlay = $(\"#header-search-overlay\");\n\n\t\t// Search click\n\t\t$(headerSearchButton).on(\"click\", function () {\n\t\t\tsearchOverlay.fadeIn().addClass(\"show\");\n\t\t});\n\n\t\t// Close click\n\t\tsearchCloseButton.on(\"click\", function () {\n\t\t\tsearchOverlay.fadeOut().removeClass(\"show\");\n\t\t});\n\n\n\t\t$(\"#header-navbar-menu-wrapper\")\n\t\t\t.on(\"shown.bs.collapse\", function () {\n\n\t\t\t\t$(this).addClass(\"has-backdrop\");\n\n\t\t\t})\n\t\t\t.on(\"hidden.bs.collapse\", function () {\n\n\t\t\t\t$(this).removeClass(\"has-backdrop\");\n\n\t\t\t});\n\n\n\t\t/**\n\t\t * Play/Pause buttons\n\t\t */\n\n\t\t$(\".btn-play-pause\").on(\"click\", function () {\n\n\t\t\tlet currState = $(this).attr(\"data-state\");\n\n\t\t\tconst pauseUnpauseEvt = new CustomEvent(\"play-pause-state-changed\", { detail: { clickedState: currState } });\n\n\t\t\t$(this).get(0).dispatchEvent(pauseUnpauseEvt);\n\n\t\t\tlet newState = (currState === \"pause\") ? \"play\" : \"pause\";\n\n\t\t\t$(this).attr(\"data-state\", newState);\n\n\t\t\t$(this).children(\".state-label\").text($(this).children(\".state-label\").data(newState + \"-label\"));\n\n\t\t});\n\n\n\t\t/**\n\t\t * Back to top button - scroll functionality\n\t\t */\n\t\t$(\"#back-to-top\")\n\t\t\t.addClass(\"fade\")\n\t\t\t.on(\"click\", function () {\n\t\t\t\t$(\"html, body\").animate({\n\t\t\t\t\tscrollTop: 0,\n\t\t\t\t}, 400);\n\t\t\t});\n\n\t\t$(window).scroll(function () {\n\t\t\tif ($(window).scrollTop() > 100) {\n\t\t\t\t$(\"#back-to-top\").addClass(\"show\");\n\t\t\t} else {\n\t\t\t\t$(\"#back-to-top\").removeClass(\"show\");\n\t\t\t}\n\t\t});\n\n\n\t\t/**\n\t\t * Video modals\n\t\t */\n\t\t$(\".video-modal\").appendTo(\"body\");\n\n\t\t$(\".orange-youtube-video-modal\").on(\"show.bs.modal\", function () {\n\n\t\t\tvar videoId = $(this).find(\"[data-video-id]\").data(\"video-id\");\n\n\t\t\tif ($(this).find(\"iframe.youtube-video\").attr(\"src\") === \"\") {\n\n\t\t\t\tvar videoSrc = \"https://www.youtube.com/embed/\" + videoId + \"?enablejsapi=1&version=3&playerapiid=ytplayer\";\n\n\t\t\t\t$(\".embed-responsive[data-video-id=\" + videoId + \"] iframe\").attr(\"src\", videoSrc);\n\n\t\t\t}\n\n\t\t});\n\n\t});\n\n\tlet breakpointObj = {};\n\n\tbreakpointObj.refreshValue = function () {\n\n\t\tif ((typeof this.value) === \"undefined\") {\n\t\t\tthis.value = \"\";\n\t\t}\n\n\t\tlet newBreakpointName = $(\":root\").css(\"--curr-breakpoint\").trim().replace(/\"/g, \"\");\n\n\t\tlet valueChanged = true;\n\n\t\tif (this.value === newBreakpointName) {\n\t\t\tvalueChanged = false;\n\t\t}\n\n\t\tthis.value = newBreakpointName;\n\n\t\tif (valueChanged) {\n\t\t\t$(\"body\").trigger(\"breakpoint:changed\", [newBreakpointName]);\n\t\t}\n\t};\n\n\tbreakpointObj.minWidthInt = function () {\n\n\t\tif (((typeof this.value) === \"undefined\") || (this.value === \"\")) {\n\t\t\treturn 0\n\t\t}\n\n\t\treturn parseInt($(\":root\").css(\"--breakpoint-\" + this.value));\n\n\t};\n\n\t/*let itemsPerSlideByBreakpoint = {\n\t\txxs: 1,\n\t\txs: 1,\n\t\tsm: 1,\n\t\tmd: 2,\n\t\tlg: 3,\n\t\txl: 3,\n\t\txxl: 3,\n\t};*/\n\n\n\t/**\n\t * Carousel - Set equal heights to captions on mobile\n\t */\n\t/*let equalCarouselSlideHeights = function (carouselSelector) {\n\n\t\t$(carouselSelector).each(function () {\n\t\t\tvar items = $(\".carousel-item\", this);\n\t\t\tlet maxHeight = 0;\n\n\t\t\t// Show all slides\n\t\t\t$.each(items, function (i, slide) {\n\n\t\t\t\t$(this).css(\"height\", \"\");\n\t\t\t\t$(\".carousel-caption\", this).css(\"height\", \"\");\n\n\t\t\t\t$(slide).addClass(\"active\");\n\n\t\t\t});\n\n\t\t\t// Get the height of the tallest caption and save it\n\t\t\t$.each(items, function () {\n\n\t\t\t\tlet caption = $(\".carousel-caption\", this);\n\t\t\t\tlet captionHeight = caption.outerHeight();\n\n\t\t\t\tif (captionHeight > maxHeight) {\n\t\t\t\t\tmaxHeight = captionHeight;\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\t// Apply the max height to all captions\n\t\t\t$.each(items, function () {\n\n\t\t\t\tif ($(window).width() >= parseInt($(\":root\").css(\"--breakpoint-lg\"))) {\n\n\t\t\t\t\t$(this).css(\"height\", maxHeight);\n\n\t\t\t\t} else {\n\n\t\t\t\t\t$(\".carousel-caption\", this).css(\"height\", maxHeight);\n\n\t\t\t\t}\n\n\t\t\t\t// Remove .active from all slides\n\t\t\t\t$(this).removeClass(\"active\");\n\n\t\t\t});\n\n\t\t\t// Add the active class back to the first slide\n\t\t\t$(\".carousel-inner .carousel-item:first-of-type\", this).addClass(\"active\");\n\n\t\t});\n\t};*/\n\n\t/*let equalCarouselItemHeights = function (carouselSelector) {\n\n\t\t$(carouselSelector).each(function () {\n\t\t\tvar items = $(\".carousel-item\", this);\n\t\t\tlet maxHeight = 0;\n\n\t\t\tlet currActiveSlide = $(\".carousel-item.active\", this);\n\n\t\t\t// Show all slides\n\t\t\t$.each(items, function (i, slide) {\n\n\t\t\t\t$(this).css(\"height\", \"\");\n\n\t\t\t\t$(slide).addClass(\"active\");\n\n\t\t\t});\n\n\t\t\t// Get the height of the tallest caption and save it\n\t\t\t$.each(items, function () {\n\n\t\t\t\tlet itemHeight = $(this).outerHeight();\n\n\t\t\t\tif (itemHeight > maxHeight) {\n\t\t\t\t\tmaxHeight = itemHeight;\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\t// Apply the max height to all captions\n\t\t\t$.each(items, function () {\n\n\t\t\t\t$(this)\n\t\t\t\t\t.css(\"height\", maxHeight)\n\t\t\t\t\t// Remove .active from all slides\n\t\t\t\t\t.removeClass(\"active\");\n\n\t\t\t});\n\n\t\t\t// Add the active class back to the active slide\n\t\t\tcurrActiveSlide.addClass(\"active\");\n\n\t\t});\n\t};*/\n\n\n\t// Fires event when element has scrolled up to or away from the top of it's parent\n\t$.fn.observeScrollTopChanges = function (offset = 0) {\n\n\t\t// Top and bottom margin values position marker element at the top of the box area of the current element, regardless of it's top margin\n\t\t// Need to increase bottom margin's negative value by 1px to compensate for marker's height\n\t\t// Essentially makes the marker invisible\n\t\tconst marker = $(\"
\").css({\n\t\t\t\"margin-top\": this.css(\"marginTop\"),\n\t\t\t\"margin-bottom\": ((parseInt(this.css(\"marginTop\")) + 1) * -1),\n\t\t\t\"height\": \"1px\",\n\t\t});\n\n\t\tif (parseInt(offset) > 0) {\n\t\t\tmarker.css({\n\t\t\t\t\"position\": \"relative\",\n\t\t\t\t\"top\": ((parseInt(offset) + 1) * -1),\n\t\t\t});\n\t\t}\n\n\t\t// Add to DOM before element being observed\n\t\t// When marker is hidden beyond the top of the viewport, the target element will be touching the top of the viewport\n\t\tthis.before(marker);\n\n\t\t// Create observer object\n\t\tconst scrollTopObserver = new IntersectionObserver((entries) => {\n\n\t\t\t// Width, height and scroll position of element being observed\n\t\t\tconst targetBoundingRect = entries[0].boundingClientRect;\n\t\t\t// Width height and position of viewport\n\t\t\tconst viewportBoundingRect = entries[0].rootBounds;\n\n\t\t\t// The element that should have the event triggered on it\n\t\t\t// Basically, the element that we want to know when it has reached the top of the page on scroll\n\t\t\tconst evtTrigger = entries[0].target.nextSibling;\n\n\t\t\tlet scrolledToTop = false;\n\n\t\t\t// If the entire marker element has scrolled beyond the top of the viewport\n\t\t\tif (targetBoundingRect.bottom < viewportBoundingRect.top) {\n\n\t\t\t\tscrolledToTop = true;\n\n\t\t\t\t// If the entire marker element is visible again\n\t\t\t} else if (targetBoundingRect.bottom >= viewportBoundingRect.top) {\n\n\t\t\t\tscrolledToTop = false;\n\n\t\t\t}\n\n\t\t\t// Create custom event and pass information about whether the element was just hit the top of the page or if it is being scrolled away\n\t\t\tconst evt = new CustomEvent(\"scroll-top-change\", { detail: { scrolledToTop: scrolledToTop } });\n\n\t\t\tevtTrigger.dispatchEvent(evt);\n\n\t\t\t// Threshold says how much of the element needs to be visible before checking for intersection\n\t\t\t// 0 means as soon as any part of the element is visible\n\t\t}, { threshold: [0] });\n\n\t\t// Start observing the marker element\n\t\tscrollTopObserver.observe(marker.get(0));\n\n\t\t// Return current element to allow for jQuery function chaining\n\t\treturn this;\n\n\t};\n\n\t/* eslint-disable-next-line */\n})(jQuery);","// extracted by mini-css-extract-plugin","module.exports = jQuery;"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACpgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AChgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC/IA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC5aA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AClaA;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;A","sourceRoot":""}