{"version":3,"file":"embla-carousel-auto-scroll.esm.js","sources":["../src/components/Options.ts","../src/components/utils.ts","../src/components/AutoScroll.ts"],"sourcesContent":["import { CreateOptionsType } from 'embla-carousel'\n\nexport type RootNodeType =\n | null\n | ((emblaRoot: HTMLElement) => HTMLElement | null)\n\nexport type OptionsType = CreateOptionsType<{\n direction: 'forward' | 'backward'\n speed: number\n startDelay: number\n playOnInit: boolean\n stopOnFocusIn: boolean\n stopOnInteraction: boolean\n stopOnMouseEnter: boolean\n rootNode: RootNodeType\n}>\n\nexport const defaultOptions: OptionsType = {\n direction: 'forward',\n speed: 2,\n startDelay: 1000,\n active: true,\n breakpoints: {},\n playOnInit: true,\n stopOnFocusIn: true,\n stopOnInteraction: true,\n stopOnMouseEnter: false,\n rootNode: null\n}\n","import { EmblaCarouselType } from 'embla-carousel/components/EmblaCarousel'\nimport { RootNodeType } from './Options'\n\nexport function getAutoScrollRootNode(\n emblaApi: EmblaCarouselType,\n rootNode: RootNodeType\n): HTMLElement {\n const emblaRootNode = emblaApi.rootNode()\n return (rootNode && rootNode(emblaRootNode)) || emblaRootNode\n}\n","import { OptionsType, defaultOptions } from './Options'\nimport { getAutoScrollRootNode } from './utils'\nimport {\n CreatePluginType,\n OptionsHandlerType,\n EmblaCarouselType,\n EngineType,\n ScrollBodyType\n} from 'embla-carousel'\n\ndeclare module 'embla-carousel' {\n interface EmblaPluginsType {\n autoScroll: AutoScrollType\n }\n\n interface EmblaEventListType {\n autoScrollPlay: 'autoScroll:play'\n autoScrollStop: 'autoScroll:stop'\n }\n}\n\nexport type AutoScrollType = CreatePluginType<\n {\n play: (delay?: number) => void\n stop: () => void\n reset: () => void\n isPlaying: () => boolean\n },\n OptionsType\n>\n\nexport type AutoScrollOptionsType = AutoScrollType['options']\n\nfunction AutoScroll(userOptions: AutoScrollOptionsType = {}): AutoScrollType {\n let options: OptionsType\n let emblaApi: EmblaCarouselType\n let destroyed: boolean\n let startDelay: number\n let timerId = 0\n let autoScrollActive = false\n let mouseIsOver = false\n let defaultScrollBehaviour: ScrollBodyType\n\n function init(\n emblaApiInstance: EmblaCarouselType,\n optionsHandler: OptionsHandlerType\n ): void {\n emblaApi = emblaApiInstance\n\n const { mergeOptions, optionsAtMedia } = optionsHandler\n const optionsBase = mergeOptions(defaultOptions, AutoScroll.globalOptions)\n const allOptions = mergeOptions(optionsBase, userOptions)\n options = optionsAtMedia(allOptions)\n\n if (emblaApi.scrollSnapList().length <= 1) return\n\n startDelay = options.startDelay\n destroyed = false\n defaultScrollBehaviour = emblaApi.internalEngine().scrollBody\n\n const { eventStore } = emblaApi.internalEngine()\n const isDraggable = !!emblaApi.internalEngine().options.watchDrag\n const root = getAutoScrollRootNode(emblaApi, options.rootNode)\n\n if (isDraggable) {\n emblaApi.on('pointerDown', pointerDown)\n }\n\n if (isDraggable && !options.stopOnInteraction) {\n emblaApi.on('pointerUp', pointerUp)\n }\n\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', mouseEnter)\n }\n\n if (options.stopOnMouseEnter && !options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', mouseLeave)\n }\n\n if (options.stopOnFocusIn) {\n emblaApi.on('slideFocusStart', stopAutoScroll)\n }\n\n if (options.stopOnFocusIn && !options.stopOnInteraction) {\n eventStore.add(emblaApi.containerNode(), 'focusout', startAutoScroll)\n }\n\n if (options.playOnInit) startAutoScroll()\n }\n\n function destroy(): void {\n emblaApi\n .off('pointerDown', pointerDown)\n .off('pointerUp', pointerUp)\n .off('slideFocusStart', stopAutoScroll)\n .off('settle', settle)\n\n stopAutoScroll()\n destroyed = true\n autoScrollActive = false\n }\n\n function startAutoScroll(): void {\n if (destroyed) return\n if (autoScrollActive) return\n emblaApi.emit('autoScroll:play')\n\n const engine = emblaApi.internalEngine()\n const { ownerWindow } = engine\n\n timerId = ownerWindow.setTimeout(() => {\n engine.scrollBody = createAutoScrollBehaviour(engine)\n engine.animation.start()\n }, startDelay)\n\n autoScrollActive = true\n }\n\n function stopAutoScroll(): void {\n if (destroyed) return\n if (!autoScrollActive) return\n emblaApi.emit('autoScroll:stop')\n\n const engine = emblaApi.internalEngine()\n const { ownerWindow } = engine\n\n engine.scrollBody = defaultScrollBehaviour\n ownerWindow.clearTimeout(timerId)\n timerId = 0\n\n autoScrollActive = false\n }\n\n function createAutoScrollBehaviour(engine: EngineType): ScrollBodyType {\n const {\n location,\n previousLocation,\n offsetLocation,\n target,\n scrollTarget,\n index,\n indexPrevious,\n limit: { reachedMin, reachedMax, constrain },\n options: { loop }\n } = engine\n const directionSign = options.direction === 'forward' ? -1 : 1\n const noop = (): ScrollBodyType => self\n\n let bodyVelocity = 0\n let scrollDirection = 0\n let rawLocation = location.get()\n let rawLocationPrevious = 0\n let hasSettled = false\n\n function seek(): ScrollBodyType {\n let directionDiff = 0\n\n previousLocation.set(location)\n\n bodyVelocity = directionSign * options.speed\n rawLocation += bodyVelocity\n location.add(bodyVelocity)\n target.set(location)\n\n directionDiff = rawLocation - rawLocationPrevious\n scrollDirection = Math.sign(directionDiff)\n rawLocationPrevious = rawLocation\n\n const currentIndex = scrollTarget.byDistance(0, false).index\n\n if (index.get() !== currentIndex) {\n indexPrevious.set(index.get())\n index.set(currentIndex)\n emblaApi.emit('select')\n }\n\n const reachedEnd =\n options.direction === 'forward'\n ? reachedMin(offsetLocation.get())\n : reachedMax(offsetLocation.get())\n\n if (!loop && reachedEnd) {\n hasSettled = true\n const constrainedLocation = constrain(location.get())\n location.set(constrainedLocation)\n target.set(location)\n stopAutoScroll()\n }\n\n return self\n }\n\n const self: ScrollBodyType = {\n direction: () => scrollDirection,\n duration: () => -1,\n velocity: () => bodyVelocity,\n settled: () => hasSettled,\n seek,\n useBaseFriction: noop,\n useBaseDuration: noop,\n useFriction: noop,\n useDuration: noop\n }\n return self\n }\n\n function pointerDown(): void {\n if (!mouseIsOver) stopAutoScroll()\n }\n\n function pointerUp(): void {\n if (!mouseIsOver) startAutoScrollOnSettle()\n }\n\n function mouseEnter(): void {\n mouseIsOver = true\n stopAutoScroll()\n }\n\n function mouseLeave(): void {\n mouseIsOver = false\n startAutoScroll()\n }\n\n function settle(): void {\n emblaApi.off('settle', settle)\n startAutoScroll()\n }\n\n function startAutoScrollOnSettle(): void {\n emblaApi.on('settle', settle)\n }\n\n function play(startDelayOverride?: number): void {\n if (typeof startDelayOverride !== 'undefined') {\n startDelay = startDelayOverride\n }\n startAutoScroll()\n }\n\n function stop(): void {\n if (autoScrollActive) stopAutoScroll()\n }\n\n function reset(): void {\n if (autoScrollActive) {\n stopAutoScroll()\n startAutoScrollOnSettle()\n }\n }\n\n function isPlaying(): boolean {\n return autoScrollActive\n }\n\n const self: AutoScrollType = {\n name: 'autoScroll',\n options: userOptions,\n init,\n destroy,\n play,\n stop,\n reset,\n isPlaying\n }\n return self\n}\n\ndeclare namespace AutoScroll {\n let globalOptions: AutoScrollOptionsType | undefined\n}\n\nAutoScroll.globalOptions = undefined\n\nexport default AutoScroll\n"],"names":["defaultOptions","direction","speed","startDelay","active","breakpoints","playOnInit","stopOnFocusIn","stopOnInteraction","stopOnMouseEnter","rootNode","getAutoScrollRootNode","emblaApi","emblaRootNode","AutoScroll","userOptions","options","destroyed","timerId","autoScrollActive","mouseIsOver","defaultScrollBehaviour","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","scrollSnapList","length","internalEngine","scrollBody","eventStore","isDraggable","watchDrag","root","on","pointerDown","pointerUp","add","mouseEnter","mouseLeave","stopAutoScroll","containerNode","startAutoScroll","destroy","off","settle","emit","engine","ownerWindow","setTimeout","createAutoScrollBehaviour","animation","start","clearTimeout","location","previousLocation","offsetLocation","target","scrollTarget","index","indexPrevious","limit","reachedMin","reachedMax","constrain","loop","directionSign","noop","self","bodyVelocity","scrollDirection","rawLocation","get","rawLocationPrevious","hasSettled","seek","directionDiff","set","Math","sign","currentIndex","byDistance","reachedEnd","constrainedLocation","duration","velocity","settled","useBaseFriction","useBaseDuration","useFriction","useDuration","startAutoScrollOnSettle","play","startDelayOverride","stop","reset","isPlaying","name","undefined"],"mappings":"AAiBO,MAAMA,cAAc,GAAgB;AACzCC,EAAAA,SAAS,EAAE,SAAS;AACpBC,EAAAA,KAAK,EAAE,CAAC;AACRC,EAAAA,UAAU,EAAE,IAAI;AAChBC,EAAAA,MAAM,EAAE,IAAI;EACZC,WAAW,EAAE,EAAE;AACfC,EAAAA,UAAU,EAAE,IAAI;AAChBC,EAAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,iBAAiB,EAAE,IAAI;AACvBC,EAAAA,gBAAgB,EAAE,KAAK;AACvBC,EAAAA,QAAQ,EAAE;CACX;;ACzBe,SAAAC,qBAAqBA,CACnCC,QAA2B,EAC3BF,QAAsB,EAAA;AAEtB,EAAA,MAAMG,aAAa,GAAGD,QAAQ,CAACF,QAAQ,EAAE;AACzC,EAAA,OAAQA,QAAQ,IAAIA,QAAQ,CAACG,aAAa,CAAC,IAAKA,aAAa;AAC/D;;ACwBA,SAASC,UAAUA,CAACC,WAAA,GAAqC,EAAE,EAAA;AACzD,EAAA,IAAIC,OAAoB;AACxB,EAAA,IAAIJ,QAA2B;AAC/B,EAAA,IAAIK,SAAkB;AACtB,EAAA,IAAId,UAAkB;EACtB,IAAIe,OAAO,GAAG,CAAC;EACf,IAAIC,gBAAgB,GAAG,KAAK;EAC5B,IAAIC,WAAW,GAAG,KAAK;AACvB,EAAA,IAAIC,sBAAsC;AAE1C,EAAA,SAASC,IAAIA,CACXC,gBAAmC,EACnCC,cAAkC,EAAA;AAElCZ,IAAAA,QAAQ,GAAGW,gBAAgB;IAE3B,MAAM;MAAEE,YAAY;AAAEC,MAAAA;AAAgB,KAAA,GAAGF,cAAc;IACvD,MAAMG,WAAW,GAAGF,YAAY,CAACzB,cAAc,EAAEc,UAAU,CAACc,aAAa,CAAC;AAC1E,IAAA,MAAMC,UAAU,GAAGJ,YAAY,CAACE,WAAW,EAAEZ,WAAW,CAAC;AACzDC,IAAAA,OAAO,GAAGU,cAAc,CAACG,UAAU,CAAC;IAEpC,IAAIjB,QAAQ,CAACkB,cAAc,EAAE,CAACC,MAAM,IAAI,CAAC,EAAE;IAE3C5B,UAAU,GAAGa,OAAO,CAACb,UAAU;AAC/Bc,IAAAA,SAAS,GAAG,KAAK;AACjBI,IAAAA,sBAAsB,GAAGT,QAAQ,CAACoB,cAAc,EAAE,CAACC,UAAU;IAE7D,MAAM;AAAEC,MAAAA;AAAY,KAAA,GAAGtB,QAAQ,CAACoB,cAAc,EAAE;AAChD,IAAA,MAAMG,WAAW,GAAG,CAAC,CAACvB,QAAQ,CAACoB,cAAc,EAAE,CAAChB,OAAO,CAACoB,SAAS;IACjE,MAAMC,IAAI,GAAG1B,qBAAqB,CAACC,QAAQ,EAAEI,OAAO,CAACN,QAAQ,CAAC;AAE9D,IAAA,IAAIyB,WAAW,EAAE;AACfvB,MAAAA,QAAQ,CAAC0B,EAAE,CAAC,aAAa,EAAEC,WAAW,CAAC;AACzC;AAEA,IAAA,IAAIJ,WAAW,IAAI,CAACnB,OAAO,CAACR,iBAAiB,EAAE;AAC7CI,MAAAA,QAAQ,CAAC0B,EAAE,CAAC,WAAW,EAAEE,SAAS,CAAC;AACrC;IAEA,IAAIxB,OAAO,CAACP,gBAAgB,EAAE;MAC5ByB,UAAU,CAACO,GAAG,CAACJ,IAAI,EAAE,YAAY,EAAEK,UAAU,CAAC;AAChD;IAEA,IAAI1B,OAAO,CAACP,gBAAgB,IAAI,CAACO,OAAO,CAACR,iBAAiB,EAAE;MAC1D0B,UAAU,CAACO,GAAG,CAACJ,IAAI,EAAE,YAAY,EAAEM,UAAU,CAAC;AAChD;IAEA,IAAI3B,OAAO,CAACT,aAAa,EAAE;AACzBK,MAAAA,QAAQ,CAAC0B,EAAE,CAAC,iBAAiB,EAAEM,cAAc,CAAC;AAChD;IAEA,IAAI5B,OAAO,CAACT,aAAa,IAAI,CAACS,OAAO,CAACR,iBAAiB,EAAE;AACvD0B,MAAAA,UAAU,CAACO,GAAG,CAAC7B,QAAQ,CAACiC,aAAa,EAAE,EAAE,UAAU,EAAEC,eAAe,CAAC;AACvE;AAEA,IAAA,IAAI9B,OAAO,CAACV,UAAU,EAAEwC,eAAe,EAAE;AAC3C;EAEA,SAASC,OAAOA,GAAA;IACdnC,QAAQ,CACLoC,GAAG,CAAC,aAAa,EAAET,WAAW,CAAC,CAC/BS,GAAG,CAAC,WAAW,EAAER,SAAS,CAAC,CAC3BQ,GAAG,CAAC,iBAAiB,EAAEJ,cAAc,CAAC,CACtCI,GAAG,CAAC,QAAQ,EAAEC,MAAM,CAAC;AAExBL,IAAAA,cAAc,EAAE;AAChB3B,IAAAA,SAAS,GAAG,IAAI;AAChBE,IAAAA,gBAAgB,GAAG,KAAK;AAC1B;EAEA,SAAS2B,eAAeA,GAAA;AACtB,IAAA,IAAI7B,SAAS,EAAE;AACf,IAAA,IAAIE,gBAAgB,EAAE;AACtBP,IAAAA,QAAQ,CAACsC,IAAI,CAAC,iBAAiB,CAAC;AAEhC,IAAA,MAAMC,MAAM,GAAGvC,QAAQ,CAACoB,cAAc,EAAE;IACxC,MAAM;AAAEoB,MAAAA;AAAa,KAAA,GAAGD,MAAM;AAE9BjC,IAAAA,OAAO,GAAGkC,WAAW,CAACC,UAAU,CAAC,MAAK;AACpCF,MAAAA,MAAM,CAAClB,UAAU,GAAGqB,yBAAyB,CAACH,MAAM,CAAC;AACrDA,MAAAA,MAAM,CAACI,SAAS,CAACC,KAAK,EAAE;KACzB,EAAErD,UAAU,CAAC;AAEdgB,IAAAA,gBAAgB,GAAG,IAAI;AACzB;EAEA,SAASyB,cAAcA,GAAA;AACrB,IAAA,IAAI3B,SAAS,EAAE;IACf,IAAI,CAACE,gBAAgB,EAAE;AACvBP,IAAAA,QAAQ,CAACsC,IAAI,CAAC,iBAAiB,CAAC;AAEhC,IAAA,MAAMC,MAAM,GAAGvC,QAAQ,CAACoB,cAAc,EAAE;IACxC,MAAM;AAAEoB,MAAAA;AAAa,KAAA,GAAGD,MAAM;IAE9BA,MAAM,CAAClB,UAAU,GAAGZ,sBAAsB;AAC1C+B,IAAAA,WAAW,CAACK,YAAY,CAACvC,OAAO,CAAC;AACjCA,IAAAA,OAAO,GAAG,CAAC;AAEXC,IAAAA,gBAAgB,GAAG,KAAK;AAC1B;EAEA,SAASmC,yBAAyBA,CAACH,MAAkB,EAAA;IACnD,MAAM;MACJO,QAAQ;MACRC,gBAAgB;MAChBC,cAAc;MACdC,MAAM;MACNC,YAAY;MACZC,KAAK;MACLC,aAAa;AACbC,MAAAA,KAAK,EAAE;QAAEC,UAAU;QAAEC,UAAU;AAAEC,QAAAA;OAAW;AAC5CpD,MAAAA,OAAO,EAAE;AAAEqD,QAAAA;AAAI;AAChB,KAAA,GAAGlB,MAAM;IACV,MAAMmB,aAAa,GAAGtD,OAAO,CAACf,SAAS,KAAK,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC;AAC9D,IAAA,MAAMsE,IAAI,GAAGA,MAAsBC,IAAI;IAEvC,IAAIC,YAAY,GAAG,CAAC;IACpB,IAAIC,eAAe,GAAG,CAAC;AACvB,IAAA,IAAIC,WAAW,GAAGjB,QAAQ,CAACkB,GAAG,EAAE;IAChC,IAAIC,mBAAmB,GAAG,CAAC;IAC3B,IAAIC,UAAU,GAAG,KAAK;IAEtB,SAASC,IAAIA,GAAA;MACX,IAAIC,aAAa,GAAG,CAAC;AAErBrB,MAAAA,gBAAgB,CAACsB,GAAG,CAACvB,QAAQ,CAAC;AAE9Be,MAAAA,YAAY,GAAGH,aAAa,GAAGtD,OAAO,CAACd,KAAK;AAC5CyE,MAAAA,WAAW,IAAIF,YAAY;AAC3Bf,MAAAA,QAAQ,CAACjB,GAAG,CAACgC,YAAY,CAAC;AAC1BZ,MAAAA,MAAM,CAACoB,GAAG,CAACvB,QAAQ,CAAC;MAEpBsB,aAAa,GAAGL,WAAW,GAAGE,mBAAmB;AACjDH,MAAAA,eAAe,GAAGQ,IAAI,CAACC,IAAI,CAACH,aAAa,CAAC;AAC1CH,MAAAA,mBAAmB,GAAGF,WAAW;MAEjC,MAAMS,YAAY,GAAGtB,YAAY,CAACuB,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAACtB,KAAK;AAE5D,MAAA,IAAIA,KAAK,CAACa,GAAG,EAAE,KAAKQ,YAAY,EAAE;QAChCpB,aAAa,CAACiB,GAAG,CAAClB,KAAK,CAACa,GAAG,EAAE,CAAC;AAC9Bb,QAAAA,KAAK,CAACkB,GAAG,CAACG,YAAY,CAAC;AACvBxE,QAAAA,QAAQ,CAACsC,IAAI,CAAC,QAAQ,CAAC;AACzB;MAEA,MAAMoC,UAAU,GACdtE,OAAO,CAACf,SAAS,KAAK,SAAS,GAC3BiE,UAAU,CAACN,cAAc,CAACgB,GAAG,EAAE,CAAC,GAChCT,UAAU,CAACP,cAAc,CAACgB,GAAG,EAAE,CAAC;AAEtC,MAAA,IAAI,CAACP,IAAI,IAAIiB,UAAU,EAAE;AACvBR,QAAAA,UAAU,GAAG,IAAI;QACjB,MAAMS,mBAAmB,GAAGnB,SAAS,CAACV,QAAQ,CAACkB,GAAG,EAAE,CAAC;AACrDlB,QAAAA,QAAQ,CAACuB,GAAG,CAACM,mBAAmB,CAAC;AACjC1B,QAAAA,MAAM,CAACoB,GAAG,CAACvB,QAAQ,CAAC;AACpBd,QAAAA,cAAc,EAAE;AAClB;AAEA,MAAA,OAAO4B,IAAI;AACb;AAEA,IAAA,MAAMA,IAAI,GAAmB;MAC3BvE,SAAS,EAAEA,MAAMyE,eAAe;AAChCc,MAAAA,QAAQ,EAAEA,MAAM,CAAC,CAAC;MAClBC,QAAQ,EAAEA,MAAMhB,YAAY;MAC5BiB,OAAO,EAAEA,MAAMZ,UAAU;MACzBC,IAAI;AACJY,MAAAA,eAAe,EAAEpB,IAAI;AACrBqB,MAAAA,eAAe,EAAErB,IAAI;AACrBsB,MAAAA,WAAW,EAAEtB,IAAI;AACjBuB,MAAAA,WAAW,EAAEvB;KACd;AACD,IAAA,OAAOC,IAAI;AACb;EAEA,SAASjC,WAAWA,GAAA;AAClB,IAAA,IAAI,CAACnB,WAAW,EAAEwB,cAAc,EAAE;AACpC;EAEA,SAASJ,SAASA,GAAA;AAChB,IAAA,IAAI,CAACpB,WAAW,EAAE2E,uBAAuB,EAAE;AAC7C;EAEA,SAASrD,UAAUA,GAAA;AACjBtB,IAAAA,WAAW,GAAG,IAAI;AAClBwB,IAAAA,cAAc,EAAE;AAClB;EAEA,SAASD,UAAUA,GAAA;AACjBvB,IAAAA,WAAW,GAAG,KAAK;AACnB0B,IAAAA,eAAe,EAAE;AACnB;EAEA,SAASG,MAAMA,GAAA;AACbrC,IAAAA,QAAQ,CAACoC,GAAG,CAAC,QAAQ,EAAEC,MAAM,CAAC;AAC9BH,IAAAA,eAAe,EAAE;AACnB;EAEA,SAASiD,uBAAuBA,GAAA;AAC9BnF,IAAAA,QAAQ,CAAC0B,EAAE,CAAC,QAAQ,EAAEW,MAAM,CAAC;AAC/B;EAEA,SAAS+C,IAAIA,CAACC,kBAA2B,EAAA;AACvC,IAAA,IAAI,OAAOA,kBAAkB,KAAK,WAAW,EAAE;AAC7C9F,MAAAA,UAAU,GAAG8F,kBAAkB;AACjC;AACAnD,IAAAA,eAAe,EAAE;AACnB;EAEA,SAASoD,IAAIA,GAAA;AACX,IAAA,IAAI/E,gBAAgB,EAAEyB,cAAc,EAAE;AACxC;EAEA,SAASuD,KAAKA,GAAA;AACZ,IAAA,IAAIhF,gBAAgB,EAAE;AACpByB,MAAAA,cAAc,EAAE;AAChBmD,MAAAA,uBAAuB,EAAE;AAC3B;AACF;EAEA,SAASK,SAASA,GAAA;AAChB,IAAA,OAAOjF,gBAAgB;AACzB;AAEA,EAAA,MAAMqD,IAAI,GAAmB;AAC3B6B,IAAAA,IAAI,EAAE,YAAY;AAClBrF,IAAAA,OAAO,EAAED,WAAW;IACpBO,IAAI;IACJyB,OAAO;IACPiD,IAAI;IACJE,IAAI;IACJC,KAAK;AACLC,IAAAA;GACD;AACD,EAAA,OAAO5B,IAAI;AACb;AAMA1D,UAAU,CAACc,aAAa,GAAG0E,SAAS;;;;"}