{"version":3,"file":"carousel.min.js","sources":["https:\/\/falms.fa.gov.sa\/theme\/boost\/amd\/src\/bootstrap\/carousel.js"],"sourcesContent":["\/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): carousel.js\n * Licensed under MIT (https:\/\/github.com\/twbs\/bootstrap\/blob\/main\/LICENSE)\n * --------------------------------------------------------------------------\n *\/\n\nimport $ from 'jquery'\nimport Util from '.\/util'\n\n\/**\n * Constants\n *\/\n\nconst NAME = 'carousel'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ARROW_LEFT_KEYCODE = 37 \/\/ KeyboardEvent.which value for left arrow key\nconst ARROW_RIGHT_KEYCODE = 39 \/\/ KeyboardEvent.which value for right arrow key\nconst TOUCHEVENT_COMPAT_WAIT = 500 \/\/ Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_RIGHT = 'carousel-item-right'\nconst CLASS_NAME_LEFT = 'carousel-item-left'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst DIRECTION_NEXT = 'next'\nconst DIRECTION_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]'\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n}\n\n\/**\n * Class definition\n *\/\n\nclass Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._element = element\n this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n this._addEventListeners()\n }\n\n \/\/ Getters\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n \/\/ Public\n next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT)\n }\n }\n\n nextWhenVisible() {\n const $element = $(this._element)\n \/\/ Don't call next when the page isn't visible\n \/\/ or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($element.is(':visible') && $element.css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex ?\n DIRECTION_NEXT :\n DIRECTION_PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n \/\/ Private\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax \/ this.touchDeltaX\n\n this.touchDeltaX = 0\n\n \/\/ swipe left\n if (direction > 0) {\n this.prev()\n }\n\n \/\/ swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element).on(EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(EVENT_MOUSEENTER, event => this.pause(event))\n .on(EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n if (!this._touchSupported) {\n return\n }\n\n const start = event => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchStartX = event.originalEvent.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.originalEvent.touches[0].clientX\n }\n }\n\n const move = event => {\n \/\/ ensure swiping with one touch and not pinching\n this.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ?\n 0 :\n event.originalEvent.touches[0].clientX - this.touchStartX\n }\n\n const end = event => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.originalEvent.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n \/\/ If it's a touch-enabled device, mouseenter\/leave are fired as\n \/\/ part of the mouse compatibility events on first tap - the carousel\n \/\/ would stop cycling until user tapped out of it;\n \/\/ here, we listen for touchend, explicitly pause the carousel\n \/\/ (as if it's the second time we tap on it, mouseenter compat event\n \/\/ is NOT fired) and after a timeout (to allow for mouse compatibility\n \/\/ events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n $(this._element.querySelectorAll(SELECTOR_ITEM_IMG))\n .on(EVENT_DRAG_START, e => e.preventDefault())\n\n if (this._pointerEvent) {\n $(this._element).on(EVENT_POINTERDOWN, event => start(event))\n $(this._element).on(EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n $(this._element).on(EVENT_TOUCHSTART, event => start(event))\n $(this._element).on(EVENT_TOUCHMOVE, event => move(event))\n $(this._element).on(EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (\/input|textarea\/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) :\n []\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === DIRECTION_NEXT\n const isPrevDirection = direction === DIRECTION_PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === DIRECTION_PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1 ?\n this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM))\n const slideEvent = $.Event(EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE))\n $(indicators).removeClass(CLASS_NAME_ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n\n if (!element) {\n return\n }\n\n const elementInterval = parseInt(element.getAttribute('data-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(direction, element) {\n const activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_LEFT\n orderClassName = CLASS_NAME_NEXT\n eventDirectionName = DIRECTION_LEFT\n } else {\n directionalClassName = CLASS_NAME_RIGHT\n orderClassName = CLASS_NAME_PREV\n eventDirectionName = DIRECTION_RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n \/\/ Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n const slidEvent = $.Event(EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if ($(this._element).hasClass(CLASS_NAME_SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(CLASS_NAME_ACTIVE)\n\n $(activeElement).removeClass(`${CLASS_NAME_ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(transitionDuration)\n } else {\n $(activeElement).removeClass(CLASS_NAME_ACTIVE)\n $(nextElement).addClass(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n \/\/ Static\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n\/**\n * Data API implementation\n *\/\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler)\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n const carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE))\n for (let i = 0, len = carousels.length; i < len; i++) {\n const $carousel = $(carousels[i])\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n }\n})\n\n\/**\n * jQuery\n *\/\n\n$.fn[NAME] = Carousel._jQueryInterface\n$.fn[NAME].Constructor = Carousel\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n}\n\nexport default Carousel\n"],"names":["_interopRequireDefault","obj","__esModule","default","_jquery","_util","NAME","DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","$","fn","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API","EVENT_CLICK_DATA_API","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","PointerType","TOUCH","PEN","Carousel","constructor","element","config","this","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_element","_indicatorsElement","querySelector","_touchSupported","document","documentElement","navigator","maxTouchPoints","_pointerEvent","Boolean","window","PointerEvent","MSPointerEvent","_addEventListeners","VERSION","next","_slide","nextWhenVisible","$element","hidden","is","css","prev","event","Util","triggerTransitionEnd","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","length","one","direction","dispose","off","removeData","typeCheckConfig","_handleSwipe","absDeltax","Math","abs","on","_keydown","_addTouchEventListeners","start","originalEvent","pointerType","toUpperCase","clientX","touches","move","end","clearTimeout","setTimeout","querySelectorAll","e","preventDefault","classList","add","test","target","tagName","which","parentNode","slice","call","indexOf","_getItemByDirection","activeElement","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","Event","from","trigger","_setActiveIndicatorElement","indicators","removeClass","nextIndicator","children","addClass","elementInterval","parseInt","getAttribute","defaultInterval","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","hasClass","isDefaultPrevented","slidEvent","reflow","transitionDuration","getTransitionDurationFromElement","TRANSITION_END","emulateTransitionEnd","_jQueryInterface","each","data","action","TypeError","ride","_dataApiClickHandler","selector","getSelectorFromElement","slideIndex","carousels","i","len","$carousel","Constructor","noConflict","_default","_exports"],"mappings":"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\/C,EAAAjJ,iBAAE4I,aAAaN,SAASU,gBAExB\/E,cAAKmF,OAAOR,cAEZ,EAAA5I,iBAAEmH,eAAemB,SAASS,uBAC1B,EAAA\/I,iBAAE4I,aAAaN,SAASS,sBAExB,MAAMM,mBAAqBpF,cAAKqF,iCAAiCnC,gBAEjE,EAAAnH,iBAAEmH,eACCrC,IAAIb,cAAKsF,gBAAgB,MACxB,EAAAvJ,iBAAE4I,aACCT,YAAa,GAAEY,wBAAwBC,kBACvCV,SAvca,WAychB,EAAAtI,iBAAEmH,eAAegB,YAAa,UAAuBa,kBAAkBD,wBAEvEjH,KAAKK,YAAa,EAElBiE,YAAW,KAAM,EAAApG,iBAAE8B,KAAKW,UAAUuF,QAAQmB,YAAY,EAAE,IAEzDK,qBAAqBH,yBAExB,EAAArJ,iBAAEmH,eAAegB,YAjdG,WAkdpB,EAAAnI,iBAAE4I,aAAaN,SAldK,UAodpBxG,KAAKK,YAAa,GAClB,EAAAnC,iBAAE8B,KAAKW,UAAUuF,QAAQmB,WAGvBL,WACFhH,KAAKqC,QAKT,uBAAOsF,CAAiB5H,QACtB,OAAOC,KAAK4H,MAAK,WACf,IAAIC,MAAO,EAAA3J,iBAAE8B,MAAM6H,KAAK9J,UACpB0C,QAAU,IACTxB,YACA,EAAAf,iBAAE8B,MAAM6H,QAGS,iBAAX9H,SACTU,QAAU,IACLA,WACAV,SAIP,MAAM+H,OAA2B,iBAAX\/H,OAAsBA,OAASU,QAAQrB,MAO7D,GALKyI,OACHA,KAAO,IAAIjI,SAASI,KAAMS,UAC1B,EAAAvC,iBAAE8B,MAAM6H,KAAK9J,SAAU8J,OAGH,iBAAX9H,OACT8H,KAAKlF,GAAG5C,aACH,GAAsB,iBAAX+H,OAAqB,CACrC,QAA4B,IAAjBD,KAAKC,QACd,MAAM,IAAIC,UAAW,oBAAmBD,WAG1CD,KAAKC,eACIrH,QAAQvB,UAAYuB,QAAQuH,OACrCH,KAAKxI,QACLwI,KAAKxF,YAKX,2BAAO4F,CAAqB\/F,OAC1B,MAAMgG,SAAW\/F,cAAKgG,uBAAuBnI,MAE7C,IAAKkI,SACH,OAGF,MAAMrD,QAAS,EAAA3G,iBAAEgK,UAAU,GAE3B,IAAKrD,UAAW,EAAA3G,iBAAE2G,QAAQsC,SA7gBF,YA8gBtB,OAGF,MAAMpH,OAAS,KACV,EAAA7B,iBAAE2G,QAAQgD,WACV,EAAA3J,iBAAE8B,MAAM6H,QAEPO,WAAapI,KAAK2G,aAAa,iBAEjCyB,aACFrI,OAAOb,UAAW,GAGpBU,SAAS+H,iBAAiBzC,MAAK,EAAAhH,iBAAE2G,QAAS9E,QAEtCqI,aACF,EAAAlK,iBAAE2G,QAAQgD,KAAK9J,UAAU4E,GAAGyF,YAG9BlG,MAAMuC,mBAQV,EAAAvG,iBAAE6C,UAAU2C,GAAG1E,qBAvgBa,gCAugB8BY,SAASqI,uBAEnE,EAAA\/J,iBAAEmD,QAAQqC,GAAG3E,qBAAqB,KAChC,MAAMsJ,UAAY,GAAGpD,MAAMC,KAAKnE,SAASwD,iBAzgBhB,2BA0gBzB,IAAK,IAAI+D,EAAI,EAAGC,IAAMF,UAAUtF,OAAQuF,EAAIC,IAAKD,IAAK,CACpD,MAAME,WAAY,EAAAtK,iBAAEmK,UAAUC,IAC9B1I,SAAS+H,iBAAiBzC,KAAKsD,UAAWA,UAAUX,YAQxD3J,gBAAEC,GAAGL,MAAQ8B,SAAS+H,iBACtBzJ,gBAAEC,GAAGL,MAAM2K,YAAc7I,SACzB1B,gBAAEC,GAAGL,MAAM4K,WAAa,KACtBxK,gBAAEC,GAAGL,MAAQG,mBACN2B,SAAS+H,kBACjB,IAAAgB,SAEc\/I,SAAQ,OAAAgJ,SAAAjL,QAAAgL,SAAAC,SAAAjL,OAAA"}