@wix/interact 1.103.0 → 1.105.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"names":["_Interact","require","_add","_remove","_utilities","_handlers","_interopRequireDefault","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","jest","mock","getWebAnimation","fn","mockReturnValue","play","cancel","onFinish","getScrubScene","getEasing","mockImplementation","v","getAnimation","target","options","trigger","reducedMotion","Pointer","start","destroy","Scroll","end","describe","element","mockConfig","getMockConfig","interactions","key","params","threshold","effects","effectId","hitArea","type","method","namedEffect","direction","power","listContainer","duration","distance","value","axis","transitionDuration","transitionEasing","centeredToTarget","distanceFactor","range","opacity","rangeStart","name","offset","rangeEnd","transition","styleProperties","beforeEach","document","createElement","div","append","window","KeyframeEffect","constructor","keyframes","ViewTimeline","Animation","effect","timeline","IntersectionObserver","callback","observe","unobserve","CSSStyleSheet","_","replace","insertRule","PointerEvent","MouseEvent","_defineProperty2","pointerType","adoptedStyleSheets","mockMatchMedia","matchingQueries","queryRule","join","mockMQL","query","matches","media","onchange","addEventListener","removeEventListener","dispatchEvent","writable","createCascadingTestConfig","conditions","matchingConditions","desktop","predicate","mobile","tablet","afterEach","clearAllMocks","Interact","forceReducedMotion","allowA11yTriggers","it","create","expect","customElements","toBeDefined","instance","dataset","interactKey","add","keys","dataCache","length","toBe","elements","size","instances","elementCache","toBeGreaterThan","element1","div1","element2","div2","disconnectSpy1","spyOn","disconnectSpy2","toHaveBeenCalled","getInstance","toBeUndefined","newElement","newDiv","newAddEventListenerSpy","toHaveBeenCalledWith","any","undefined","addEventListenerSpy","toHaveBeenCalledTimes","Function","objectContaining","passive","HTMLElement","id","elementClick","divClick","calls","toMatchObject","mockReturnValueOnce","not","pointerInstance","effectToAnimationOptions","scrollInstance","setTimeout","ul","li","li2","cloneNode","addEventListenerSpy2","li3","addEventListenerSpy3","addListItems","targetElement","divTarget","removeEventListenerSpy","remove","toThrow","config","sourceElement","sourceDiv","targetDiv","firstElementChild","complexConfig","target1Element","target1Div","target2Element","target2Div","multiConditionConfig","configWithMissingCondition","configWithEmptyConditions","innerHTML","keyframeEffect","selector","triggerButton","querySelector","firstChild","triggerSpy","firstChildSpy","animationTarget","transform","listItems","Array","from","querySelectorAll","spies","map","item","forEach","spy","_sourceElement$queryS","containerChildren","children","child","consoleSpy","console","mockRestore","color","deepTarget","buttonWithData","setAttribute","backgroundColor","targetFirstChild","keyWithoutInstance","setup","scrollOptionsGetter","pointerOptionsGetter","TRIGGER_TO_HANDLER_MODULE_MAP","viewProgress","pointerMove","a11yElement","getA11yConfig","mockPlay","mockClear","button","KeyboardEvent","code","bubbles","active","testElement","Promise","resolve","then","mockAnimation","reverse","progress","playState","isCSS","classList","createEl","el","getConfig","srcEl0","srcDiv0","tgtEl0","tgtDiv0","srcEl1","srcDiv1","tgtEl1","tgtDiv1","srcSpy0","srcSpy1","tgtAEl0","tgtADiv0","tgtBEl0","tgtBDiv0","srcSpy","tgtAEl1","tgtADiv1","tgtBEl1","tgtBDiv1","srcAEl0","srcADiv0","srcBEl0","srcBDiv0","srcASpy","srcBSpy","srcAEl1","srcBEl1","tgtXEl0","tgtXDiv0","tgtYEl0","tgtYDiv0","tgtXEl1","tgtXDiv1","tgtYEl1","tgtYDiv1"],"sources":["../../../src/__tests__/interact.spec.ts"],"sourcesContent":["import { Interact } from '../core/Interact';\nimport { add, addListItems } from '../core/add';\nimport { remove } from '../core/remove';\nimport type {\n InteractConfig,\n ScrubEffect,\n IInteractElement,\n TriggerType,\n} from '../types';\nimport type { NamedEffect } from '@wix/motion';\nimport { effectToAnimationOptions } from '../handlers/utilities';\nimport TRIGGER_TO_HANDLER_MODULE_MAP from '../handlers';\n\n// Mock @wix/motion module\njest.mock('@wix/motion', () => {\n const mock: any = {\n getWebAnimation: jest.fn().mockReturnValue({\n play: jest.fn(),\n cancel: jest.fn(),\n onFinish: jest.fn(),\n }),\n getScrubScene: jest.fn().mockReturnValue({}),\n getEasing: jest.fn().mockImplementation((v) => v),\n getAnimation: jest\n .fn()\n .mockImplementation((target, options, trigger, reducedMotion) => {\n return mock.getWebAnimation(target, options, trigger, {\n reducedMotion,\n });\n }),\n };\n\n return mock;\n});\n\n// Mock kuliso module\njest.mock('kuliso', () => ({\n Pointer: jest.fn().mockImplementation(() => ({\n start: jest.fn(),\n destroy: jest.fn(),\n })),\n}));\n\n// Mock fizban module\njest.mock('fizban', () => ({\n Scroll: jest.fn().mockImplementation(() => ({\n start: jest.fn(),\n end: jest.fn(),\n })),\n}));\n\ndescribe('interact', () => {\n let element: IInteractElement;\n let mockConfig: InteractConfig;\n const getMockConfig: () => InteractConfig = () => ({\n interactions: [\n {\n trigger: 'viewEnter',\n key: 'logo-entrance',\n params: {\n threshold: 0.2,\n },\n effects: [\n {\n key: 'logo-entrance',\n effectId: 'logo-arc-in',\n },\n {\n key: 'logo-click',\n effectId: 'logo-bounce',\n },\n ],\n },\n {\n trigger: 'pageVisible',\n key: 'logo-loop',\n effects: [\n {\n key: 'logo-loop',\n effectId: 'logo-poke',\n },\n ],\n },\n {\n trigger: 'animationEnd',\n key: 'logo-animation-end',\n params: {\n effectId: 'logo-arc-in',\n },\n effects: [\n {\n key: 'logo-animation-end',\n effectId: 'logo-poke',\n },\n ],\n },\n {\n trigger: 'pointerMove',\n key: 'logo-mouse',\n params: {\n hitArea: 'root',\n },\n effects: [\n {\n key: 'logo-mouse',\n effectId: 'logo-track-mouse',\n },\n ],\n },\n {\n trigger: 'click',\n key: 'logo-click',\n params: {\n type: 'alternate',\n },\n effects: [\n {\n key: 'logo-click',\n effectId: 'logo-bounce',\n },\n ],\n },\n {\n trigger: 'click',\n key: 'logo-click',\n params: {\n method: 'toggle',\n },\n effects: [\n {\n key: 'logo-click',\n effectId: 'logo-transition-hover',\n },\n ],\n },\n {\n trigger: 'hover',\n key: 'logo-hover',\n params: {\n type: 'alternate',\n },\n effects: [\n {\n key: 'logo-hover',\n effectId: 'logo-arc-in',\n },\n {\n key: 'logo-hover',\n effectId: 'logo-arc-in',\n namedEffect: {\n type: 'ArcIn',\n direction: 'left',\n power: 'hard',\n } as NamedEffect,\n },\n ],\n },\n {\n trigger: 'hover',\n key: 'logo-hover',\n params: {\n method: 'toggle',\n },\n effects: [\n {\n key: 'logo-hover',\n effectId: 'logo-transition-hover',\n },\n ],\n },\n {\n trigger: 'viewProgress',\n key: 'logo-scroll',\n effects: [\n {\n key: 'logo-scroll',\n effectId: 'logo-fade-scroll',\n },\n ],\n },\n {\n trigger: 'click',\n key: 'logo-click-container',\n listContainer: '#logo-list',\n effects: [\n {\n effectId: 'logo-bounce',\n },\n ],\n },\n {\n trigger: 'viewEnter',\n key: 'logo-view-container',\n effects: [\n {\n listContainer: '#logo-list',\n effectId: 'logo-bounce',\n },\n ],\n },\n {\n trigger: 'viewProgress',\n key: 'logo-scroll-container',\n listContainer: '#logo-scroll-list',\n effects: [\n {\n listContainer: '#logo-scroll-list',\n effectId: 'logo-fade-scroll',\n },\n ],\n },\n {\n trigger: 'viewProgress',\n key: 'logo-scroll-container',\n effects: [\n {\n key: 'logo-scroll-items',\n listContainer: '#logo-scroll-list',\n effectId: 'logo-fade-scroll',\n },\n ],\n },\n ],\n effects: {\n 'logo-arc-in': {\n namedEffect: {\n type: 'ArcIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 1200,\n },\n 'logo-arc-in-with-target': {\n key: 'logo-hover',\n namedEffect: {\n type: 'ArcIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 1200,\n },\n 'logo-track-mouse': {\n namedEffect: {\n type: 'TrackMouse',\n distance: { value: 20, type: 'px' },\n axis: 'both',\n power: 'medium',\n } as NamedEffect,\n transitionDuration: 300,\n transitionEasing: 'easeOut',\n centeredToTarget: true,\n },\n 'logo-bounce': {\n namedEffect: {\n type: 'BounceIn',\n power: 'hard',\n direction: 'center',\n distanceFactor: 1.2,\n } as NamedEffect,\n duration: 500,\n },\n 'logo-fade-scroll': {\n namedEffect: {\n type: 'FadeScroll',\n range: 'in',\n opacity: 0,\n } as NamedEffect,\n rangeStart: {\n name: 'contain',\n offset: { value: -10, type: 'percentage' },\n },\n rangeEnd: {\n name: 'contain',\n offset: { value: 110, type: 'percentage' },\n },\n },\n 'logo-transition-hover': {\n transition: {\n duration: 300,\n styleProperties: [{ name: 'opacity', value: '0' }],\n },\n },\n 'logo-poke': {\n namedEffect: {\n type: 'Poke',\n direction: 'left',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n });\n\n beforeEach(() => {\n element = document.createElement('interact-element') as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n // Mock Web Animations API\n (window as any).KeyframeEffect = class KeyframeEffect {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n constructor(element: Element | null, keyframes: any[], options: any) {\n return { element, keyframes, options };\n }\n };\n\n // Mock ViewTimeline\n (window as any).ViewTimeline = class ViewTimeline {\n constructor(options: any) {\n return { ...options };\n }\n };\n\n // Mock Animation\n (window as any).Animation = class Animation {\n constructor(effect: any, timeline: any) {\n return { effect, timeline, play: jest.fn() };\n }\n };\n\n // Mock IntersectionObserver\n (window as any).IntersectionObserver = class IntersectionObserver {\n constructor(callback: any, options: any) {\n return { callback, options, observe: jest.fn(), unobserve: jest.fn() };\n }\n };\n\n // Mock CSSStyleSheet\n (window as any).CSSStyleSheet = class CSSStyleSheet {\n constructor(_: string) {\n return { replace: jest.fn(), insertRule: jest.fn() };\n }\n };\n\n // Mock PointerEvent (not available in JSDOM)\n (window as any).PointerEvent = class PointerEvent extends MouseEvent {\n pointerType: string;\n constructor(type: string, params: PointerEventInit = {}) {\n super(type, params);\n this.pointerType = params.pointerType || '';\n }\n };\n\n // Mock adoptedStyleSheets\n if (!document.adoptedStyleSheets) {\n document.adoptedStyleSheets = [];\n }\n\n // Mock matchMedia for condition testing\n mockMatchMedia();\n });\n\n function mockMatchMedia(matchingQueries: string[] = []) {\n const queryRule = `(${matchingQueries.join(') and (')})`;\n const mockMQL = (query: string) => {\n return {\n matches: queryRule === query,\n media: query,\n onchange: null,\n addEventListener: jest.fn(),\n removeEventListener: jest.fn(),\n dispatchEvent: jest.fn(),\n };\n };\n\n Object.defineProperty(window, 'matchMedia', {\n writable: true,\n value: jest.fn().mockImplementation(mockMQL),\n });\n }\n\n function createCascadingTestConfig(\n conditions: Record<string, any> = {},\n matchingConditions: string[] = [],\n ): InteractConfig {\n mockMatchMedia(matchingConditions);\n\n return {\n conditions: {\n desktop: {\n type: 'media',\n predicate: 'min-width: 1024px',\n },\n mobile: {\n type: 'media',\n predicate: 'max-width: 767px',\n },\n tablet: {\n type: 'media',\n predicate: '(min-width: 768px) and (max-width: 1023px)',\n },\n ...conditions,\n },\n interactions: [\n {\n trigger: 'click',\n key: 'cascade-source',\n effects: [\n {\n key: 'cascade-target',\n effectId: 'default-effect',\n },\n {\n key: 'cascade-target',\n effectId: 'default-effect',\n conditions: ['desktop'],\n namedEffect: {\n type: 'SlideIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 800,\n },\n {\n key: 'cascade-target',\n effectId: 'default-effect',\n conditions: ['mobile'],\n namedEffect: {\n type: 'BounceIn',\n direction: 'center',\n power: 'hard',\n } as NamedEffect,\n duration: 600,\n },\n ],\n },\n ],\n effects: {\n 'default-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n }\n\n afterEach(() => {\n jest.clearAllMocks();\n // Clear Interact instances to ensure test isolation\n Interact.destroy();\n // Reset static flags to default\n Interact.forceReducedMotion = false;\n Interact.allowA11yTriggers = false;\n });\n\n describe('init Interact instance', () => {\n it('should initialize with valid config', () => {\n Interact.create({} as InteractConfig);\n expect(customElements.get('interact-element')).toBeDefined();\n });\n });\n\n describe('destroy Interact instance', () => {\n it('should clear an instance entire cache', () => {\n const instance = Interact.create(getMockConfig());\n\n element = document.createElement('interact-element') as IInteractElement;\n element.dataset.interactKey = 'logo-entrance';\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-entrance');\n\n expect(Object.keys(instance.dataCache.interactions).length).toBe(11);\n expect(instance.elements.size).toBe(1);\n expect(Interact.instances.length).toBe(1);\n\n instance.destroy();\n\n expect(Object.keys(instance.dataCache.interactions).length).toBe(0);\n expect(instance.elements.size).toBe(0);\n expect(Interact.instances.length).toBe(0);\n expect(Interact.elementCache.size).toBe(0);\n });\n });\n\n describe('destroy Interact', () => {\n it('should clear all instances', () => {\n Interact.create(getMockConfig());\n Interact.create(getMockConfig());\n\n expect(Interact.instances.length).toBe(2);\n\n Interact.destroy();\n\n expect(Interact.instances.length).toBe(0);\n });\n\n it('should clear all elements from cache', () => {\n Interact.create(getMockConfig());\n\n element = document.createElement('interact-element') as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-hover');\n\n expect(Interact.elementCache.size).toBeGreaterThan(0);\n\n Interact.destroy();\n\n expect(Interact.elementCache.size).toBe(0);\n });\n\n it('should call disconnect on all cached elements', () => {\n Interact.create(getMockConfig());\n\n const element1 = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div1 = document.createElement('div');\n element1.append(div1);\n\n const element2 = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div2 = document.createElement('div');\n element2.append(div2);\n\n add(element1, 'logo-hover');\n add(element2, 'logo-click');\n\n const disconnectSpy1 = jest.spyOn(element1, 'disconnect');\n const disconnectSpy2 = jest.spyOn(element2, 'disconnect');\n\n Interact.destroy();\n\n expect(disconnectSpy1).toHaveBeenCalled();\n expect(disconnectSpy2).toHaveBeenCalled();\n });\n\n it('should clean up interactions after destroy', () => {\n Interact.create(getMockConfig());\n\n element = document.createElement('interact-element') as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-click');\n\n Interact.destroy();\n\n // After destroy, getInstance should return undefined\n expect(Interact.getInstance('logo-click')).toBeUndefined();\n\n // Re-create instance and verify it works independently\n Interact.create(getMockConfig());\n const newElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const newDiv = document.createElement('div');\n newElement.append(newDiv);\n\n const newAddEventListenerSpy = jest.spyOn(newDiv, 'addEventListener');\n add(newElement, 'logo-click');\n\n expect(newAddEventListenerSpy).toHaveBeenCalled();\n expect(Interact.getInstance('logo-click')).toBeDefined();\n });\n\n // TODO: fix this test - when adding this test it causes 2 other tests to fail\n // it('should remove event listeners and styles when disconnect is called', () => {\n // Interact.create(mockConfig);\n\n // element = document.createElement(\n // 'interact-element',\n // ) as IInteractElement;\n // element.dataset.interactKey = 'logo-click';\n // const div = document.createElement('div');\n // element.append(div);\n\n // add(element, 'logo-click');\n\n // const removeEventListenerSpy = jest.spyOn(div, 'removeEventListener');\n\n // Interact.destroy();\n\n // expect(removeEventListenerSpy).toHaveBeenCalled();\n // expect(removeEventListenerSpy).toHaveBeenCalledWith(\n // 'click',\n // expect.any(Function),\n // );\n // });\n });\n\n describe('reduced motion', () => {\n it('should pass reducedMotion=true to getWebAnimation when forceReducedMotion is true', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.forceReducedMotion = true;\n Interact.create({\n interactions: [\n {\n trigger: 'hover',\n key: 'logo-hover',\n effects: [\n {\n key: 'logo-hover',\n effectId: 'logo-arc-in',\n },\n ],\n },\n ],\n effects: {\n 'logo-arc-in': {\n namedEffect: {\n type: 'ArcIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 1200,\n },\n },\n });\n\n element = document.createElement('interact-element') as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-hover');\n\n expect(getWebAnimation).toHaveBeenCalledWith(\n div,\n expect.any(Object),\n undefined,\n { reducedMotion: true },\n );\n\n Interact.forceReducedMotion = false;\n\n Interact.destroy();\n });\n });\n\n describe('add interaction', () => {\n beforeEach(() => {\n mockConfig = getMockConfig();\n Interact.create(mockConfig);\n });\n afterEach(() => {\n Interact.destroy();\n jest.clearAllMocks();\n });\n\n describe('hover', () => {\n it('should add handler for hover trigger with alternate type', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n expect(getWebAnimation).toHaveBeenCalledTimes(0);\n\n add(element, 'logo-hover');\n\n expect(addEventListenerSpy).toHaveBeenCalledTimes(4);\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseleave',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n div,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'ArcIn',\n direction: 'left',\n power: 'hard',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('click', () => {\n it('should add handler for click trigger', () => {\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(element, 'logo-click');\n\n expect(addEventListenerSpy).toHaveBeenCalledTimes(2);\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n });\n });\n\n describe('viewEnter', () => {\n it('should add handler for viewEnter trigger', () => {\n const { getWebAnimation } = require('@wix/motion');\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-entrance');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should add handler for viewEnter trigger when target is added before source', () => {\n const { getWebAnimation } = require('@wix/motion');\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n div.id = 'logo-entrance';\n element.dataset.interactKey = 'logo-entrance';\n element.append(div);\n\n const elementClick = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const divClick = document.createElement('div');\n divClick.id = 'logo-click';\n elementClick.dataset.interactKey = 'logo-click';\n elementClick.append(divClick);\n\n add(elementClick, 'logo-click');\n add(element, 'logo-entrance');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(3);\n expect(getWebAnimation.mock.calls[0][0]).toBe(divClick);\n expect(getWebAnimation.mock.calls[1][0]).toBe(divClick);\n expect(getWebAnimation.mock.calls[2][0]).toBe(div);\n expect(getWebAnimation.mock.calls[0][3]).toMatchObject({\n reducedMotion: false,\n });\n expect(getWebAnimation.mock.calls[1][3]).toMatchObject({\n reducedMotion: false,\n });\n expect(getWebAnimation.mock.calls[2][3]).toMatchObject({\n reducedMotion: false,\n });\n });\n });\n\n describe('pageVisible', () => {\n it('should add handler for pageVisible trigger', () => {\n const { getWebAnimation } = require('@wix/motion');\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-loop');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('animationEnd', () => {\n it('should add handler for animationEnd trigger', () => {\n const { getWebAnimation } = require('@wix/motion');\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-animation-end');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('null animation handling', () => {\n it('should not add click handler when getAnimation returns null', () => {\n Interact.destroy();\n const { getWebAnimation } = require('@wix/motion');\n\n Interact.create({\n interactions: [\n {\n trigger: 'click',\n key: 'null-click-test',\n effects: [{ effectId: 'null-test-effect' }],\n },\n ],\n effects: {\n 'null-test-effect': {\n namedEffect: { type: 'FadeIn' } as NamedEffect,\n duration: 500,\n },\n },\n });\n\n getWebAnimation.mockReturnValueOnce(null);\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(element, 'null-click-test');\n\n expect(addEventListenerSpy).not.toHaveBeenCalled();\n });\n\n it('should not add hover handler when getAnimation returns null', () => {\n Interact.destroy();\n const { getWebAnimation } = require('@wix/motion');\n\n Interact.create({\n interactions: [\n {\n trigger: 'hover',\n key: 'null-hover-test',\n effects: [{ effectId: 'null-test-effect' }],\n },\n ],\n effects: {\n 'null-test-effect': {\n namedEffect: { type: 'FadeIn' } as NamedEffect,\n duration: 500,\n },\n },\n });\n\n getWebAnimation.mockReturnValueOnce(null);\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(element, 'null-hover-test');\n\n expect(addEventListenerSpy).not.toHaveBeenCalled();\n });\n\n it('should not add animationEnd handler when getAnimation returns null', () => {\n Interact.destroy();\n const { getWebAnimation } = require('@wix/motion');\n\n Interact.create({\n interactions: [\n {\n trigger: 'animationEnd',\n key: 'null-animationend-test',\n params: { effectId: 'trigger-effect' },\n effects: [{ effectId: 'null-test-effect' }],\n },\n ],\n effects: {\n 'null-test-effect': {\n namedEffect: { type: 'FadeIn' } as NamedEffect,\n duration: 500,\n },\n },\n });\n\n getWebAnimation.mockReturnValueOnce(null);\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(element, 'null-animationend-test');\n\n expect(addEventListenerSpy).not.toHaveBeenCalled();\n });\n\n it('should not add viewProgress handler when getWebAnimation returns null (ViewTimeline)', () => {\n Interact.destroy();\n const { getWebAnimation } = require('@wix/motion');\n\n Interact.create({\n interactions: [\n {\n trigger: 'viewProgress',\n key: 'null-viewprogress-test',\n effects: [{ effectId: 'null-scroll-effect' }],\n },\n ],\n effects: {\n 'null-scroll-effect': {\n namedEffect: {\n type: 'FadeScroll',\n range: 'in',\n opacity: 0,\n } as NamedEffect,\n },\n },\n });\n\n getWebAnimation.mockReturnValueOnce(null);\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'null-viewprogress-test');\n\n // getWebAnimation should have been called\n expect(getWebAnimation).toHaveBeenCalled();\n });\n\n it('should not add viewProgress handler when getScrubScene returns null (polyfill)', () => {\n // Remove ViewTimeline support to use polyfill path\n delete (window as any).ViewTimeline;\n\n Interact.destroy();\n const { getScrubScene } = require('@wix/motion');\n\n Interact.create({\n interactions: [\n {\n trigger: 'viewProgress',\n key: 'null-viewprogress-polyfill-test',\n effects: [{ effectId: 'null-scroll-effect' }],\n },\n ],\n effects: {\n 'null-scroll-effect': {\n namedEffect: {\n type: 'FadeScroll',\n range: 'in',\n opacity: 0,\n } as NamedEffect,\n },\n },\n });\n\n getScrubScene.mockReturnValueOnce(null);\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'null-viewprogress-polyfill-test');\n\n // getScrubScene should have been called\n expect(getScrubScene).toHaveBeenCalled();\n\n // Restore ViewTimeline\n (window as any).ViewTimeline = class ViewTimeline {\n constructor(options: any) {\n return { ...options };\n }\n };\n });\n });\n\n describe('pointerMove', () => {\n it('should add handler for pointerMove trigger', () => {\n const { getScrubScene } = require('@wix/motion');\n const { Pointer } = require('kuliso');\n const pointerInstance = {\n start: jest.fn(),\n destroy: jest.fn(),\n };\n Pointer.mockImplementation(() => pointerInstance);\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-mouse');\n\n expect(getScrubScene).toHaveBeenCalledTimes(1);\n expect(getScrubScene).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.objectContaining(\n effectToAnimationOptions(\n getMockConfig().effects['logo-track-mouse'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'pointer-move',\n }),\n );\n expect(pointerInstance.start).toHaveBeenCalled();\n });\n });\n\n describe('viewProgress', () => {\n it('should add handler for viewProgress trigger with native ViewTimeline support', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-scroll');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.objectContaining(\n effectToAnimationOptions(\n getMockConfig().effects['logo-fade-scroll'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'view-progress',\n }),\n );\n });\n\n it('should add handler for viewProgress trigger with fizban polyfill', () => {\n // Remove ViewTimeline support\n delete (window as any).ViewTimeline;\n const { getScrubScene } = require('@wix/motion');\n const { Scroll } = require('fizban');\n const scrollInstance = {\n start: jest.fn(),\n destroy: jest.fn(),\n };\n Scroll.mockImplementation(() => scrollInstance);\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-scroll');\n\n expect(getScrubScene).toHaveBeenCalledTimes(1);\n expect(getScrubScene).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.objectContaining(\n effectToAnimationOptions(\n getMockConfig().effects['logo-fade-scroll'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'view-progress',\n }),\n );\n setTimeout(() => {\n expect(scrollInstance.start).toHaveBeenCalled();\n }, 0);\n });\n });\n\n describe('listContainer', () => {\n it('should add a handler per list item for click trigger with listContainer', () => {\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n const ul = document.createElement('ul');\n ul.id = 'logo-list';\n div.append(ul);\n const li = document.createElement('li');\n const li2 = li.cloneNode(true);\n ul.append(li);\n ul.append(li2);\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(li, 'addEventListener');\n const addEventListenerSpy2 = jest.spyOn(li2, 'addEventListener');\n\n add(element, 'logo-click-container');\n\n expect(addEventListenerSpy).toHaveBeenCalledTimes(1);\n expect(addEventListenerSpy2).toHaveBeenCalledTimes(1);\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n expect(addEventListenerSpy2).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n });\n\n it('should add a handler per list item for viewEnter trigger with listContainer in effect', () => {\n const { getWebAnimation } = require('@wix/motion');\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n const ul = document.createElement('ul');\n ul.id = 'logo-list';\n div.append(ul);\n const li = document.createElement('li');\n const li2 = li.cloneNode(true);\n ul.append(li);\n ul.append(li2);\n element.append(div);\n\n add(element, 'logo-view-container');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(2);\n expect(getWebAnimation.mock.calls[0][0]).toBe(li);\n expect(getWebAnimation.mock.calls[1][0]).toBe(li2);\n });\n\n it('should add a handler per newly added list item for click trigger with listContainer', () => {\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n const ul = document.createElement('ul');\n ul.id = 'logo-list';\n div.append(ul);\n const li = document.createElement('li');\n const li2 = li.cloneNode(true);\n ul.append(li);\n ul.append(li2);\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(li, 'addEventListener');\n const addEventListenerSpy2 = jest.spyOn(li2, 'addEventListener');\n\n add(element, 'logo-click-container');\n\n expect(addEventListenerSpy).toHaveBeenCalledTimes(1);\n expect(addEventListenerSpy2).toHaveBeenCalledTimes(1);\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n expect(addEventListenerSpy2).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n\n const li3 = document.createElement('li');\n ul.append(li3);\n const addEventListenerSpy3 = jest.spyOn(li3, 'addEventListener');\n\n addListItems(element, 'logo-click-container', '#logo-list', [li3]);\n\n expect(addEventListenerSpy3).toHaveBeenCalledTimes(1);\n expect(addEventListenerSpy3).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n });\n\n it('should add a handler per newly added list item for viewProgress trigger but not add same interaction twice', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const divTarget = document.createElement('div');\n const ul = document.createElement('ul');\n ul.id = 'logo-scroll-list';\n divTarget.append(ul);\n const li = document.createElement('li');\n const li2 = li.cloneNode(true);\n ul.append(li);\n ul.append(li2);\n element.append(div);\n targetElement.append(divTarget);\n\n add(element, 'logo-scroll-container');\n expect(getWebAnimation).toHaveBeenCalledTimes(0);\n\n add(targetElement, 'logo-scroll-items');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(2);\n expect(getWebAnimation).toHaveBeenCalledWith(\n li,\n expect.objectContaining(\n effectToAnimationOptions(\n getMockConfig().effects['logo-fade-scroll'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'view-progress',\n }),\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n li2,\n expect.objectContaining(\n effectToAnimationOptions(\n getMockConfig().effects['logo-fade-scroll'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'view-progress',\n }),\n );\n\n const li3 = document.createElement('li');\n ul.append(li3);\n\n addListItems(targetElement, 'logo-scroll-items', '#logo-scroll-list', [\n li3,\n ]);\n\n expect(getWebAnimation).toHaveBeenCalledTimes(3);\n expect(getWebAnimation).toHaveBeenCalledWith(\n li3,\n expect.objectContaining(\n effectToAnimationOptions(\n getMockConfig().effects['logo-fade-scroll'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'view-progress',\n }),\n );\n });\n });\n });\n\n describe('remove interaction', () => {\n beforeEach(() => {\n Interact.create(getMockConfig());\n });\n afterEach(() => {\n Interact.destroy();\n });\n\n it('should remove event listeners', () => {\n element = document.createElement('interact-element') as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const removeEventListenerSpy = jest.spyOn(div, 'removeEventListener');\n\n add(element, 'logo-click');\n remove('logo-click');\n\n expect(removeEventListenerSpy).toHaveBeenCalledTimes(2);\n expect(removeEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n );\n });\n\n it('should do nothing if key does not exist', () => {\n expect(() => remove('non-existent-key')).not.toThrow();\n });\n\n it('should cleanup pointer effects', () => {\n const { Pointer } = require('kuliso');\n const pointerInstance = {\n start: jest.fn(),\n destroy: jest.fn(),\n };\n Pointer.mockImplementation(() => pointerInstance);\n\n element = document.createElement('interact-element') as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-mouse');\n remove('logo-mouse');\n\n expect(pointerInstance.destroy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('effect cascading logic', () => {\n describe('basic cascading behavior', () => {\n it('should apply only first matching effect for same target', () => {\n const { getWebAnimation } = require('@wix/motion');\n const config = createCascadingTestConfig({}, ['min-width: 1024px']);\n\n Interact.create(config);\n\n const sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n const addEventListenerSpy = jest.spyOn(sourceDiv, 'addEventListener');\n\n add(sourceElement, 'cascade-source');\n add(targetElement, 'cascade-target');\n\n expect(addEventListenerSpy).toHaveBeenCalledTimes(1);\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n\n // Should create animation with desktop effect (first matching condition)\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'SlideIn',\n direction: 'right',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should apply default effect when no conditions match', () => {\n const { getWebAnimation } = require('@wix/motion');\n const config = createCascadingTestConfig({}, []); // No matching conditions\n\n Interact.create(config);\n\n const sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n add(sourceElement, 'cascade-source');\n add(targetElement, 'cascade-target');\n\n // Should create animation with default effect\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'FadeIn',\n power: 'medium',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should apply mobile effect when mobile condition matches', () => {\n const { getWebAnimation } = require('@wix/motion');\n const config = createCascadingTestConfig({}, ['max-width: 767px']);\n\n Interact.create(config);\n\n const sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n add(sourceElement, 'cascade-source');\n add(targetElement, 'cascade-target');\n\n // Should create animation with mobile effect\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'BounceIn',\n direction: 'center',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('element addition order', () => {\n it('should work when source is added before target', () => {\n const { getWebAnimation } = require('@wix/motion');\n const config = createCascadingTestConfig({}, ['min-width: 1024px']);\n\n Interact.create(config);\n\n const sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n // Add source first\n add(sourceElement, 'cascade-source');\n // Add target second\n add(targetElement, 'cascade-target');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'SlideIn',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should work when target is added before source', () => {\n const { getWebAnimation } = require('@wix/motion');\n const config = createCascadingTestConfig({}, ['min-width: 1024px']);\n\n Interact.create(config);\n\n const sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n // Add target first\n add(targetElement, 'cascade-target');\n // Add source second\n add(sourceElement, 'cascade-source');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'SlideIn',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('complex cascading scenarios', () => {\n it('should handle multiple targets with different conditions', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const complexConfig: InteractConfig = {\n conditions: {\n desktop: {\n type: 'media',\n predicate: 'min-width: 1024px',\n },\n mobile: {\n type: 'media',\n predicate: 'max-width: 767px',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'multi-source-1',\n effects: [\n {\n key: 'cascade-target-1',\n effectId: 'desktop-effect',\n conditions: ['desktop'],\n },\n {\n key: 'cascade-target-2',\n effectId: 'mobile-effect',\n conditions: ['mobile'],\n },\n ],\n },\n ],\n effects: {\n 'desktop-effect': {\n namedEffect: {\n type: 'SlideIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 800,\n },\n 'mobile-effect': {\n namedEffect: {\n type: 'BounceIn',\n direction: 'center',\n power: 'hard',\n } as NamedEffect,\n duration: 600,\n },\n },\n };\n\n mockMatchMedia(['min-width: 1024px']); // Only desktop matches\n Interact.create(complexConfig);\n\n const sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const target1Element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const target1Div = document.createElement('div');\n target1Element.append(target1Div);\n\n const target2Element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const target2Div = document.createElement('div');\n target2Element.append(target2Div);\n\n add(sourceElement, 'multi-source-1');\n add(target1Element, 'cascade-target-1');\n add(target2Element, 'cascade-target-2');\n\n // Only desktop effect should be applied (mobile condition doesn't match)\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n target1Element.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'SlideIn',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n\n // Should not be called for mobile effect since condition doesn't match\n expect(getWebAnimation).not.toHaveBeenCalledWith(\n target2Element.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'BounceIn',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should handle effects with multiple conditions', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const multiConditionConfig: InteractConfig = {\n conditions: {\n desktop: {\n type: 'media',\n predicate: 'min-width: 1024px',\n },\n 'high-res': {\n type: 'media',\n predicate: 'min-resolution: 2dppx',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'cascade-source',\n effects: [\n {\n key: 'cascade-target',\n effectId: 'premium-effect',\n },\n {\n key: 'cascade-target',\n effectId: 'premium-effect',\n conditions: ['desktop', 'high-res'],\n },\n ],\n },\n ],\n effects: {\n 'premium-effect': {\n namedEffect: {\n type: 'Poke',\n direction: 'left',\n power: 'hard',\n } as NamedEffect,\n duration: 1000,\n },\n },\n };\n\n // Both conditions match\n mockMatchMedia(['min-width: 1024px', 'min-resolution: 2dppx']);\n Interact.create(multiConditionConfig);\n\n const sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n add(sourceElement, 'cascade-source');\n add(targetElement, 'cascade-target');\n\n // Premium effect should be applied since both conditions match\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'Poke',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('condition matching edge cases', () => {\n it('should handle missing conditions gracefully', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const configWithMissingCondition: InteractConfig = {\n conditions: {\n desktop: {\n type: 'media',\n predicate: 'min-width: 1024px',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'cascade-source',\n effects: [\n {\n key: 'cascade-target',\n effectId: 'default-effect',\n },\n {\n key: 'cascade-target',\n effectId: 'default-effect',\n conditions: ['nonexistent-condition'],\n },\n ],\n },\n ],\n effects: {\n 'default-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n\n mockMatchMedia(['min-width: 1024px']);\n Interact.create(configWithMissingCondition);\n\n const sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n add(sourceElement, 'cascade-source');\n add(targetElement, 'cascade-target');\n\n // Should fall back to default effect since condition doesn't exist\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'FadeIn',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should handle empty conditions array', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const configWithEmptyConditions: InteractConfig = {\n conditions: {},\n interactions: [\n {\n trigger: 'click',\n key: 'cascade-source',\n effects: [\n {\n key: 'cascade-target',\n effectId: 'always-applied-effect',\n conditions: [],\n },\n ],\n },\n ],\n effects: {\n 'always-applied-effect': {\n namedEffect: {\n type: 'Spin',\n direction: 'clockwise',\n power: 'medium',\n } as NamedEffect,\n duration: 1000,\n },\n },\n };\n\n mockMatchMedia([]);\n Interact.create(configWithEmptyConditions);\n\n const sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n add(sourceElement, 'cascade-source');\n add(targetElement, 'cascade-target');\n\n // Effect should be applied since empty conditions array should always match\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'Spin',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n });\n\n describe('selector functionality', () => {\n let sourceElement: IInteractElement;\n let targetElement: IInteractElement;\n\n beforeEach(() => {\n // Create source element with multiple child elements\n sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n sourceElement.innerHTML = `\n <div class=\"first-child\">First Child</div>\n <button class=\"trigger-button\">Click Me</button>\n <div class=\"other-element\">Other</div>\n <div class=\"list-container\">\n <div class=\"list-item\">Item 1</div>\n <div class=\"list-item\">Item 2</div>\n <div class=\"list-item\">Item 3</div>\n </div>\n `;\n\n // Create target element with multiple child elements\n targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n targetElement.innerHTML = `\n <div class=\"first-child\">Target First</div>\n <div class=\"animation-target\">Animation Target</div>\n <div class=\"overlay\">Overlay</div>\n <div class=\"nested\">\n <span class=\"deep-target\">Deep Target</span>\n </div>\n `;\n });\n\n describe('basic selector functionality', () => {\n it('should use selector instead of firstElementChild for source', () => {\n const config: InteractConfig = {\n effects: {\n 'test-effect': {\n keyframeEffect: {\n name: 'test',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'selector-source',\n selector: '.trigger-button',\n trigger: 'click',\n effects: [\n {\n key: 'selector-target',\n effectId: 'test-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n const triggerButton = sourceElement.querySelector(\n '.trigger-button',\n ) as HTMLElement;\n const firstChild = sourceElement.querySelector(\n '.first-child',\n ) as HTMLElement;\n\n const triggerSpy = jest.spyOn(triggerButton, 'addEventListener');\n const firstChildSpy = jest.spyOn(firstChild, 'addEventListener');\n\n add(sourceElement, 'selector-source');\n add(targetElement, 'selector-target');\n\n // Should add event listener to the selected element, not firstElementChild\n expect(triggerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n expect(firstChildSpy).not.toHaveBeenCalled();\n });\n\n it('should use selector instead of firstElementChild for target', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const config: InteractConfig = {\n effects: {\n 'test-effect': {\n keyframeEffect: {\n name: 'test',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'selector-source',\n trigger: 'click',\n effects: [\n {\n key: 'selector-target',\n selector: '.animation-target',\n effectId: 'test-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n add(sourceElement, 'selector-source');\n add(targetElement, 'selector-target');\n\n const animationTarget = targetElement.querySelector(\n '.animation-target',\n ) as HTMLElement;\n\n // Should create animation on the selected element, not firstElementChild\n expect(getWebAnimation).toHaveBeenCalledWith(\n animationTarget,\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should fall back to firstElementChild when no selector is provided', () => {\n const config: InteractConfig = {\n effects: {\n 'test-effect': {\n keyframeEffect: {\n name: 'test',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'fallback-source',\n trigger: 'click',\n effects: [\n {\n key: 'fallback-target',\n effectId: 'test-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n const firstChild = sourceElement.querySelector(\n '.first-child',\n ) as HTMLElement;\n const firstChildSpy = jest.spyOn(firstChild, 'addEventListener');\n\n add(sourceElement, 'fallback-source');\n add(targetElement, 'fallback-target');\n\n // Should fall back to firstElementChild\n expect(firstChildSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n\n describe('selector with listContainer', () => {\n it('should use selector within listContainer items', () => {\n const config: InteractConfig = {\n effects: {\n 'list-effect': {\n keyframeEffect: {\n name: 'list-test',\n keyframes: [\n { transform: 'scale(1)' },\n { transform: 'scale(1.1)' },\n ],\n },\n duration: 200,\n },\n },\n interactions: [\n {\n key: 'list-source',\n listContainer: '.list-container',\n selector: '.list-item',\n trigger: 'hover',\n effects: [\n {\n listContainer: '.list-container',\n selector: '.list-item',\n effectId: 'list-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n // Set up spies before adding interactions\n const listItems = Array.from(\n sourceElement.querySelectorAll('.list-item'),\n ) as HTMLElement[];\n\n const spies = listItems.map((item) =>\n jest.spyOn(item, 'addEventListener'),\n );\n\n add(sourceElement, 'list-source');\n\n // Should add event listeners to each list item\n spies.forEach((spy) => {\n expect(spy).toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n\n it('should handle listContainer without selector (all children)', () => {\n const config: InteractConfig = {\n effects: {\n 'container-effect': {\n keyframeEffect: {\n name: 'container-test',\n keyframes: [{ opacity: '0.5' }, { opacity: '1' }],\n },\n duration: 150,\n },\n },\n interactions: [\n {\n key: 'container-source',\n listContainer: '.list-container',\n trigger: 'click',\n effects: [\n {\n listContainer: '.list-container',\n effectId: 'container-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n // Set up spies before adding interactions\n const containerChildren = Array.from(\n sourceElement.querySelector('.list-container')?.children || [],\n ) as HTMLElement[];\n\n const spies = containerChildren.map((child) =>\n jest.spyOn(child, 'addEventListener'),\n );\n\n add(sourceElement, 'container-source');\n\n // Should add event listeners to all children of the container\n spies.forEach((spy) => {\n expect(spy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n });\n\n describe('selector error handling', () => {\n let consoleSpy: jest.SpyInstance;\n\n beforeEach(() => {\n consoleSpy = jest.spyOn(console, 'warn').mockImplementation();\n });\n\n afterEach(() => {\n consoleSpy.mockRestore();\n });\n\n it('should warn when selector does not match any elements', () => {\n const config: InteractConfig = {\n effects: {\n 'test-effect': {\n keyframeEffect: {\n name: 'test',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'invalid-source',\n selector: '.non-existent-element',\n trigger: 'click',\n effects: [\n {\n key: 'invalid-target',\n effectId: 'test-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n add(sourceElement, 'invalid-source');\n add(targetElement, 'invalid-target');\n\n expect(consoleSpy).toHaveBeenCalledWith(\n 'Interact: No element found for selector \".non-existent-element\"',\n );\n });\n\n it('should warn when listContainer selector does not match', () => {\n const config: InteractConfig = {\n effects: {\n 'test-effect': {\n keyframeEffect: {\n name: 'test',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'invalid-container-source',\n listContainer: '.non-existent-container',\n trigger: 'click',\n effects: [\n {\n key: 'invalid-container-target',\n effectId: 'test-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n add(sourceElement, 'invalid-container-source');\n add(targetElement, 'invalid-container-target');\n\n expect(consoleSpy).toHaveBeenCalledWith(\n 'Interact: No container found for list container \".non-existent-container\"',\n );\n });\n\n it('should gracefully handle invalid selectors without breaking interactions', () => {\n const config: InteractConfig = {\n effects: {\n 'valid-effect': {\n keyframeEffect: {\n name: 'valid',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'mixed-source',\n selector: '.non-existent',\n trigger: 'click',\n effects: [\n {\n key: 'mixed-target',\n effectId: 'valid-effect',\n },\n ],\n },\n {\n key: 'valid-source',\n selector: '.trigger-button',\n trigger: 'click',\n effects: [\n {\n key: 'valid-target',\n effectId: 'valid-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n // Set up spy before adding interactions\n const triggerButton = sourceElement.querySelector(\n '.trigger-button',\n ) as HTMLElement;\n const spy = jest.spyOn(triggerButton, 'addEventListener');\n\n // This should not throw and should allow other interactions to work\n expect(() => {\n add(sourceElement, 'mixed-source');\n add(sourceElement, 'valid-source');\n add(targetElement, 'mixed-target');\n add(targetElement, 'valid-target');\n }).not.toThrow();\n\n // Valid interaction should still work\n expect(spy).toHaveBeenCalled();\n });\n });\n\n describe('complex selector scenarios', () => {\n it('should handle nested selectors', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const config: InteractConfig = {\n effects: {\n 'nested-effect': {\n keyframeEffect: {\n name: 'nested',\n keyframes: [{ color: 'black' }, { color: 'blue' }],\n },\n duration: 200,\n },\n },\n interactions: [\n {\n key: 'nested-source',\n selector: '.other-element',\n trigger: 'click',\n effects: [\n {\n key: 'nested-target',\n selector: '.nested .deep-target',\n effectId: 'nested-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n const addEventListenerSpy = jest.spyOn(\n sourceElement.querySelector('.other-element') as HTMLElement,\n 'addEventListener',\n );\n\n add(sourceElement, 'nested-source');\n add(targetElement, 'nested-target');\n\n const deepTarget = targetElement.querySelector(\n '.nested .deep-target',\n ) as HTMLElement;\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n\n expect(getWebAnimation).toHaveBeenCalledWith(\n deepTarget,\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should handle attribute selectors', () => {\n // Add data attributes to test elements\n const buttonWithData = sourceElement.querySelector(\n '.trigger-button',\n ) as HTMLElement;\n buttonWithData.setAttribute('data-interactive', 'true');\n buttonWithData.setAttribute('data-category', 'primary');\n\n const config: InteractConfig = {\n effects: {\n 'attr-effect': {\n keyframeEffect: {\n name: 'attr',\n keyframes: [\n { backgroundColor: 'white' },\n { backgroundColor: 'lightblue' },\n ],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'attr-source',\n selector: '[data-interactive=\"true\"][data-category=\"primary\"]',\n trigger: 'click',\n effects: [\n {\n key: 'attr-target',\n selector: '[class*=\"animation\"]',\n effectId: 'attr-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n // Set up spy before adding interactions\n const spy = jest.spyOn(buttonWithData, 'addEventListener');\n\n add(sourceElement, 'attr-source');\n add(targetElement, 'attr-target');\n\n expect(spy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n\n describe('selector inheritance and priority', () => {\n it('should not inherit selector from interaction to effect', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const config: InteractConfig = {\n effects: {\n 'inherit-effect': {\n keyframeEffect: {\n name: 'inherit',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'inherit-source',\n selector: '.trigger-button', // Interaction has selector\n trigger: 'click',\n effects: [\n {\n key: 'inherit-target',\n // Effect has no selector - should use firstElementChild, not inherit\n effectId: 'inherit-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n add(sourceElement, 'inherit-source');\n add(targetElement, 'inherit-target');\n\n // Effect should target firstElementChild, not the interaction's selector\n const targetFirstChild = targetElement.firstElementChild as HTMLElement;\n\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetFirstChild,\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('selector cleanup', () => {\n it('should clean up selector-based interactions on remove', () => {\n const config: InteractConfig = {\n effects: {\n 'cleanup-effect': {\n keyframeEffect: {\n name: 'cleanup',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'cleanup-source',\n selector: '.trigger-button',\n trigger: 'click',\n effects: [\n {\n key: 'cleanup-target',\n selector: '.animation-target',\n effectId: 'cleanup-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n const triggerButton = sourceElement.querySelector(\n '.trigger-button',\n ) as HTMLElement;\n const removeEventListenerSpy = jest.spyOn(\n triggerButton,\n 'removeEventListener',\n );\n\n add(sourceElement, 'cleanup-source');\n add(targetElement, 'cleanup-target');\n\n remove('cleanup-source');\n\n // Should remove event listeners from the selected element\n expect(removeEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n );\n });\n });\n });\n\n describe('element caching', () => {\n it('should cache element in elementCache even when no instance was found for it', () => {\n const keyWithoutInstance = 'key-without-instance';\n add(element, keyWithoutInstance);\n\n expect(Interact.elementCache.has(keyWithoutInstance)).toBe(true);\n expect(Interact.elementCache.get(keyWithoutInstance)).toBe(element);\n });\n });\n\n describe('setup', () => {\n afterEach(() => {\n Interact.setup({\n scrollOptionsGetter: () => ({}),\n pointerOptionsGetter: () => ({}),\n });\n });\n\n it('should register scroll options getter', () => {\n const scrollOptionsGetter = jest.fn().mockReturnValue({});\n const spy = jest.spyOn(\n TRIGGER_TO_HANDLER_MODULE_MAP.viewProgress,\n 'registerOptionsGetter',\n );\n\n Interact.setup({ scrollOptionsGetter });\n\n expect(spy).toHaveBeenCalledWith(scrollOptionsGetter);\n });\n\n it('should register pointer options getter', () => {\n const pointerOptionsGetter = jest.fn().mockReturnValue({});\n const spy = jest.spyOn(\n TRIGGER_TO_HANDLER_MODULE_MAP.pointerMove,\n 'registerOptionsGetter',\n );\n\n Interact.setup({ pointerOptionsGetter });\n\n expect(spy).toHaveBeenCalledWith(pointerOptionsGetter);\n });\n });\n\n describe('a11y - accessible triggers', () => {\n let a11yElement: IInteractElement;\n\n function getA11yConfig(trigger: TriggerType, key: string): InteractConfig {\n return {\n interactions: [\n {\n trigger,\n key,\n effects: [{ effectId: 'test-effect' }],\n },\n ],\n effects: {\n 'test-effect': {\n namedEffect: { type: 'BounceIn', power: 'medium' } as NamedEffect,\n duration: 500,\n },\n },\n };\n }\n\n afterEach(() => {\n Interact.destroy();\n });\n\n describe('activate trigger', () => {\n it('should add both click and keydown listeners', () => {\n Interact.create(getA11yConfig('activate', 'activate-div'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'activate-div');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'keydown',\n expect.any(Function),\n expect.any(Object),\n );\n });\n\n it('should not double-invoke handler when Enter triggers both keydown and click', () => {\n const { getWebAnimation } = require('@wix/motion');\n const mockPlay = getWebAnimation().play;\n mockPlay.mockClear();\n\n Interact.create(getA11yConfig('activate', 'activate-handler-test'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const button = document.createElement('button');\n a11yElement.append(button);\n\n add(a11yElement, 'activate-handler-test');\n\n // Simulate browser behavior: Enter key triggers keydown AND synthesized click with no pointerType\n button.dispatchEvent(\n new KeyboardEvent('keydown', { code: 'Enter', bubbles: true }),\n );\n button.dispatchEvent(new MouseEvent('click', { bubbles: true }));\n\n expect(mockPlay).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('interest trigger', () => {\n it('should add focusin listener alongside mouseenter', () => {\n Interact.create(getA11yConfig('interest', 'interest-test'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'interest-test');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'focusin',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n\n describe('click trigger with allowA11yTriggers flag', () => {\n it('should NOT add keydown listener when flag is false', () => {\n Interact.create(getA11yConfig('click', 'click-no-flag'));\n Interact.setup({ allowA11yTriggers: false });\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'click-no-flag');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).not.toHaveBeenCalledWith(\n 'keydown',\n expect.any(Function),\n expect.any(Object),\n );\n });\n\n it('should add keydown listener when flag is true', () => {\n Interact.setup({ allowA11yTriggers: true });\n Interact.create(getA11yConfig('click', 'click-with-flag'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'click-with-flag');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'keydown',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n\n describe('hover trigger with allowA11yTriggers flag', () => {\n it('should NOT add focusin listener when flag is false', () => {\n Interact.setup({ allowA11yTriggers: false });\n Interact.create(getA11yConfig('hover', 'hover-no-flag'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'hover-no-flag');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).not.toHaveBeenCalledWith(\n 'focusin',\n expect.any(Function),\n expect.any(Object),\n );\n });\n\n it('should add focusin listener when flag is true', () => {\n Interact.setup({ allowA11yTriggers: true });\n Interact.create(getA11yConfig('hover', 'hover-with-flag'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'hover-with-flag');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'focusin',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n });\n describe('selector condition type', () => {\n it('should pass selectorCondition to handler when condition type is selector', async () => {\n const config: InteractConfig = {\n conditions: {\n active: {\n type: 'selector',\n predicate: '.active',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'selector-test',\n effects: [\n {\n key: 'selector-test',\n effectId: 'test-effect',\n conditions: ['active'],\n },\n ],\n },\n ],\n effects: {\n 'test-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n\n Interact.create(config);\n\n const testElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n testElement.append(div);\n\n add(testElement, 'selector-test');\n\n // The handler should have received selectorCondition\n // We verify by checking the animation is created (condition doesn't block setup)\n const { getWebAnimation } = await import('@wix/motion');\n expect(getWebAnimation).toHaveBeenCalled();\n });\n\n it('should skip handler execution when element does not match selector condition', async () => {\n const { getWebAnimation } = await import('@wix/motion');\n const mockAnimation = {\n play: jest.fn(),\n cancel: jest.fn(),\n onFinish: jest.fn(),\n reverse: jest.fn(),\n progress: jest.fn(),\n playState: 'idle',\n isCSS: false,\n };\n (getWebAnimation as any).mockReturnValue(mockAnimation);\n\n const config: InteractConfig = {\n conditions: {\n active: {\n type: 'selector',\n predicate: '.active',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'selector-skip-test',\n effects: [\n {\n key: 'selector-skip-test',\n effectId: 'skip-effect',\n conditions: ['active'],\n },\n ],\n },\n ],\n effects: {\n 'skip-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n\n Interact.create(config);\n\n const testElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n // div does NOT have .active class\n testElement.append(div);\n\n add(testElement, 'selector-skip-test');\n\n // Simulate click - animation should NOT play because element doesn't match .active\n // Must use PointerEvent with pointerType because click handler filters by pointerType\n div.dispatchEvent(\n new PointerEvent('click', { bubbles: true, pointerType: 'mouse' }),\n );\n\n expect(mockAnimation.play).not.toHaveBeenCalled();\n });\n\n it('should execute handler when element matches selector condition', async () => {\n const { getWebAnimation } = await import('@wix/motion');\n const mockAnimation = {\n play: jest.fn(),\n cancel: jest.fn(),\n onFinish: jest.fn(),\n reverse: jest.fn(),\n progress: jest.fn(),\n playState: 'idle',\n isCSS: false,\n };\n (getWebAnimation as any).mockReturnValue(mockAnimation);\n\n const config: InteractConfig = {\n conditions: {\n active: {\n type: 'selector',\n predicate: '.active',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'selector-match-test',\n effects: [\n {\n key: 'selector-match-test',\n effectId: 'match-effect',\n conditions: ['active'],\n },\n ],\n },\n ],\n effects: {\n 'match-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n\n Interact.create(config);\n\n const testElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n div.classList.add('active'); // div HAS .active class\n testElement.append(div);\n\n add(testElement, 'selector-match-test');\n\n // Simulate click - animation SHOULD play because element matches .active\n // Must use PointerEvent with pointerType because click handler filters by pointerType\n div.dispatchEvent(\n new PointerEvent('click', { bubbles: true, pointerType: 'mouse' }),\n );\n\n expect(mockAnimation.play).toHaveBeenCalled();\n });\n });\n\n describe('templated (interpolated) keys', () => {\n function createEl(): [IInteractElement, HTMLElement] {\n const el = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n el.append(div);\n return [el, div];\n }\n\n describe('one-to-one: single source template to single target template', () => {\n const getConfig = (): InteractConfig => ({\n interactions: [\n {\n trigger: 'click',\n key: 'src[]',\n effects: [{ key: 'tgt[]', effectId: 'oto-effect' }],\n },\n ],\n effects: {\n 'oto-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n });\n\n it('should bind each source instance to its matching target instance', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.create(getConfig());\n\n const [srcEl0, srcDiv0] = createEl();\n const [tgtEl0, tgtDiv0] = createEl();\n const [srcEl1, srcDiv1] = createEl();\n const [tgtEl1, tgtDiv1] = createEl();\n\n const srcSpy0 = jest.spyOn(srcDiv0, 'addEventListener');\n const srcSpy1 = jest.spyOn(srcDiv1, 'addEventListener');\n\n add(srcEl0, 'src[0]');\n add(tgtEl0, 'tgt[0]');\n add(srcEl1, 'src[1]');\n add(tgtEl1, 'tgt[1]');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(2);\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtDiv1,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n\n expect(srcSpy0).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n expect(srcSpy1).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n });\n\n it('should not cross-contaminate between different instance indices', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.create(getConfig());\n\n const [srcEl0] = createEl();\n const [tgtEl1] = createEl();\n\n add(srcEl0, 'src[0]');\n add(tgtEl1, 'tgt[1]');\n\n expect(getWebAnimation).not.toHaveBeenCalled();\n });\n\n it('should work when targets are added before sources', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.create(getConfig());\n\n const [srcEl0] = createEl();\n const [tgtEl0, tgtDiv0] = createEl();\n\n add(tgtEl0, 'tgt[0]');\n add(srcEl0, 'src[0]');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('one-to-many: single source template to multiple target templates', () => {\n const getConfig = (): InteractConfig => ({\n interactions: [\n {\n trigger: 'click',\n key: 'src[]',\n effects: [\n { key: 'tgt-a[]', effectId: 'otm-effect-a' },\n { key: 'tgt-b[]', effectId: 'otm-effect-b' },\n ],\n },\n ],\n effects: {\n 'otm-effect-a': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n 'otm-effect-b': {\n namedEffect: {\n type: 'BounceIn',\n power: 'hard',\n direction: 'center',\n } as NamedEffect,\n duration: 600,\n },\n },\n });\n\n it('should bind a source instance to all of its target instances', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.create(getConfig());\n\n const [srcEl0, srcDiv0] = createEl();\n const [tgtAEl0, tgtADiv0] = createEl();\n const [tgtBEl0, tgtBDiv0] = createEl();\n\n const srcSpy = jest.spyOn(srcDiv0, 'addEventListener');\n\n add(srcEl0, 'src[0]');\n add(tgtAEl0, 'tgt-a[0]');\n add(tgtBEl0, 'tgt-b[0]');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(2);\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtADiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtBDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'BounceIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n\n expect(srcSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n });\n\n it('should independently wire separate instances to their own targets', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.create(getConfig());\n\n const [srcEl0] = createEl();\n const [srcEl1] = createEl();\n const [tgtAEl0, tgtADiv0] = createEl();\n const [tgtBEl0, tgtBDiv0] = createEl();\n const [tgtAEl1, tgtADiv1] = createEl();\n const [tgtBEl1, tgtBDiv1] = createEl();\n\n add(srcEl0, 'src[0]');\n add(srcEl1, 'src[1]');\n add(tgtAEl0, 'tgt-a[0]');\n add(tgtBEl0, 'tgt-b[0]');\n add(tgtAEl1, 'tgt-a[1]');\n add(tgtBEl1, 'tgt-b[1]');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(4);\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtADiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtBDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'BounceIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtADiv1,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtBDiv1,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'BounceIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('many-to-one: multiple source templates to single target template', () => {\n const getConfig = (): InteractConfig => ({\n interactions: [\n {\n trigger: 'click',\n key: 'src-a[]',\n effects: [{ key: 'tgt[]', effectId: 'mto-effect-a' }],\n },\n {\n trigger: 'click',\n key: 'src-b[]',\n effects: [{ key: 'tgt[]', effectId: 'mto-effect-b' }],\n },\n ],\n effects: {\n 'mto-effect-a': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n 'mto-effect-b': {\n namedEffect: {\n type: 'BounceIn',\n power: 'hard',\n direction: 'center',\n } as NamedEffect,\n duration: 600,\n },\n },\n });\n\n it('should bind multiple sources to the same target for a given instance', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.create(getConfig());\n\n const [srcAEl0, srcADiv0] = createEl();\n const [srcBEl0, srcBDiv0] = createEl();\n const [tgtEl0, tgtDiv0] = createEl();\n\n const srcASpy = jest.spyOn(srcADiv0, 'addEventListener');\n const srcBSpy = jest.spyOn(srcBDiv0, 'addEventListener');\n\n add(srcAEl0, 'src-a[0]');\n add(srcBEl0, 'src-b[0]');\n add(tgtEl0, 'tgt[0]');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(2);\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'BounceIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n\n expect(srcASpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n expect(srcBSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n });\n\n it('should isolate different instance indices', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.create(getConfig());\n\n const [srcAEl0] = createEl();\n const [srcBEl0] = createEl();\n const [tgtEl0, tgtDiv0] = createEl();\n const [srcAEl1] = createEl();\n const [srcBEl1] = createEl();\n const [tgtEl1, tgtDiv1] = createEl();\n\n add(srcAEl0, 'src-a[0]');\n add(srcBEl0, 'src-b[0]');\n add(tgtEl0, 'tgt[0]');\n add(srcAEl1, 'src-a[1]');\n add(srcBEl1, 'src-b[1]');\n add(tgtEl1, 'tgt[1]');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(4);\n\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'BounceIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtDiv1,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtDiv1,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'BounceIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('many-to-many: multiple source templates to multiple target templates', () => {\n const getConfig = (): InteractConfig => ({\n interactions: [\n {\n trigger: 'click',\n key: 'src-a[]',\n effects: [\n { key: 'tgt-x[]', effectId: 'mtm-ax' },\n { key: 'tgt-y[]', effectId: 'mtm-ay' },\n ],\n },\n {\n trigger: 'click',\n key: 'src-b[]',\n effects: [\n { key: 'tgt-x[]', effectId: 'mtm-bx' },\n { key: 'tgt-y[]', effectId: 'mtm-by' },\n ],\n },\n ],\n effects: {\n 'mtm-ax': {\n namedEffect: {\n type: 'FadeIn',\n power: 'soft',\n } as NamedEffect,\n duration: 300,\n },\n 'mtm-ay': {\n namedEffect: {\n type: 'SlideIn',\n direction: 'left',\n power: 'medium',\n } as NamedEffect,\n duration: 400,\n },\n 'mtm-bx': {\n namedEffect: {\n type: 'BounceIn',\n direction: 'center',\n power: 'hard',\n } as NamedEffect,\n duration: 500,\n },\n 'mtm-by': {\n namedEffect: {\n type: 'Poke',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 600,\n },\n },\n });\n\n it('should bind each source to all of its targets for a given instance', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.create(getConfig());\n\n const [srcAEl0] = createEl();\n const [srcBEl0] = createEl();\n const [tgtXEl0, tgtXDiv0] = createEl();\n const [tgtYEl0, tgtYDiv0] = createEl();\n\n add(srcAEl0, 'src-a[0]');\n add(srcBEl0, 'src-b[0]');\n add(tgtXEl0, 'tgt-x[0]');\n add(tgtYEl0, 'tgt-y[0]');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(4);\n\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtXDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtYDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'SlideIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtXDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'BounceIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtYDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'Poke' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should isolate many-to-many bindings across instance indices', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.create(getConfig());\n\n const [srcAEl0] = createEl();\n const [srcBEl0] = createEl();\n const [tgtXEl0, tgtXDiv0] = createEl();\n const [tgtYEl0, tgtYDiv0] = createEl();\n\n add(srcAEl0, 'src-a[0]');\n add(srcBEl0, 'src-b[0]');\n add(tgtXEl0, 'tgt-x[0]');\n add(tgtYEl0, 'tgt-y[0]');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(4);\n\n const [srcAEl1] = createEl();\n const [srcBEl1] = createEl();\n const [tgtXEl1, tgtXDiv1] = createEl();\n const [tgtYEl1, tgtYDiv1] = createEl();\n\n add(srcAEl1, 'src-a[1]');\n add(srcBEl1, 'src-b[1]');\n add(tgtXEl1, 'tgt-x[1]');\n add(tgtYEl1, 'tgt-y[1]');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(8);\n\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtXDiv1,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtYDiv1,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'SlideIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtXDiv1,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'BounceIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtYDiv1,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'Poke' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_Interact","require","_add","_remove","_utilities","_handlers","_interopRequireDefault","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","jest","mock","getWebAnimation","fn","mockReturnValue","play","cancel","onFinish","getScrubScene","getEasing","mockImplementation","v","getAnimation","target","options","trigger","reducedMotion","Pointer","start","destroy","Scroll","end","mockMQLs","describe","element","mockConfig","getMockConfig","interactions","key","params","threshold","effects","effectId","hitArea","type","method","namedEffect","direction","power","listContainer","duration","distance","value","axis","transitionDuration","transitionEasing","centeredToTarget","distanceFactor","range","opacity","rangeStart","name","offset","rangeEnd","transition","styleProperties","beforeEach","document","createElement","div","append","window","KeyframeEffect","constructor","keyframes","ViewTimeline","Animation","effect","timeline","IntersectionObserver","callback","observe","unobserve","CSSStyleSheet","_","replace","insertRule","PointerEvent","MouseEvent","_defineProperty2","pointerType","adoptedStyleSheets","Map","mockMatchMedia","matchingQueries","queryRule","join","mockMQL","query","mql","matches","media","onchange","addEventListener","removeEventListener","dispatchEvent","writable","configurable","createCascadingTestConfig","conditions","matchingConditions","desktop","predicate","mobile","tablet","afterEach","clearAllMocks","Interact","forceReducedMotion","allowA11yTriggers","it","create","expect","customElements","toBeDefined","instance","dataset","interactKey","add","keys","dataCache","length","toBe","elements","size","instances","elementCache","toBeGreaterThan","element1","div1","element2","div2","disconnectSpy1","spyOn","disconnectSpy2","toHaveBeenCalled","getInstance","toBeUndefined","newElement","newDiv","newAddEventListenerSpy","toHaveBeenCalledWith","any","undefined","addEventListenerSpy","toHaveBeenCalledTimes","Function","objectContaining","passive","HTMLElement","id","elementClick","divClick","calls","toMatchObject","mockReturnValueOnce","not","pointerInstance","effectToAnimationOptions","scrollInstance","setTimeout","ul","li","li2","cloneNode","addEventListenerSpy2","li3","addEventListenerSpy3","addListItems","targetElement","divTarget","removeEventListenerSpy","remove","toThrow","config","sourceElement","sourceDiv","targetDiv","firstElementChild","complexConfig","target1Element","target1Div","target2Element","target2Div","multiConditionConfig","configWithMissingCondition","configWithEmptyConditions","innerHTML","keyframeEffect","selector","triggerButton","querySelector","firstChild","triggerSpy","firstChildSpy","animationTarget","transform","listItems","Array","from","querySelectorAll","spies","map","item","forEach","spy","_sourceElement$queryS","containerChildren","children","child","consoleSpy","console","mockRestore","color","deepTarget","buttonWithData","setAttribute","backgroundColor","targetFirstChild","keyWithoutInstance","setup","scrollOptionsGetter","pointerOptionsGetter","TRIGGER_TO_HANDLER_MODULE_MAP","viewProgress","pointerMove","a11yElement","getA11yConfig","mockPlay","mockClear","button","KeyboardEvent","code","bubbles","active","testElement","Promise","resolve","then","mockAnimation","reverse","progress","playState","isCSS","classList","createEl","el","getConfig","srcEl0","srcDiv0","tgtEl0","tgtDiv0","srcEl1","srcDiv1","tgtEl1","tgtDiv1","srcSpy0","srcSpy1","tgtAEl0","tgtADiv0","tgtBEl0","tgtBDiv0","srcSpy","tgtAEl1","tgtADiv1","tgtBEl1","tgtBDiv1","srcAEl0","srcADiv0","srcBEl0","srcBDiv0","srcASpy","srcBSpy","srcAEl1","srcBEl1","tgtXEl0","tgtXDiv0","tgtYEl0","tgtYDiv0","tgtXEl1","tgtXDiv1","tgtYEl1","tgtYDiv1","clear","createMockInteractElement","connected","_internals","_observers","sheet","disconnect","k","connect","renderStyle","toggleEffect","watchChildList","createResponsiveConfig","matchMedia","mediaQueryListeners","listenerEntry","clearStateSpy","handler","addedInteractions","deleteElement","childDiv","desktopMql","mobileMql"],"sources":["../../../src/__tests__/interact.spec.ts"],"sourcesContent":["import { Interact } from '../core/Interact';\nimport { add, addListItems } from '../core/add';\nimport { remove } from '../core/remove';\nimport type {\n InteractConfig,\n ScrubEffect,\n IInteractElement,\n TriggerType,\n} from '../types';\nimport type { NamedEffect } from '@wix/motion';\nimport { effectToAnimationOptions } from '../handlers/utilities';\nimport TRIGGER_TO_HANDLER_MODULE_MAP from '../handlers';\n\n// Mock @wix/motion module\njest.mock('@wix/motion', () => {\n const mock: any = {\n getWebAnimation: jest.fn().mockReturnValue({\n play: jest.fn(),\n cancel: jest.fn(),\n onFinish: jest.fn(),\n }),\n getScrubScene: jest.fn().mockReturnValue({}),\n getEasing: jest.fn().mockImplementation((v) => v),\n getAnimation: jest\n .fn()\n .mockImplementation((target, options, trigger, reducedMotion) => {\n return mock.getWebAnimation(target, options, trigger, {\n reducedMotion,\n });\n }),\n };\n\n return mock;\n});\n\n// Mock kuliso module\njest.mock('kuliso', () => ({\n Pointer: jest.fn().mockImplementation(() => ({\n start: jest.fn(),\n destroy: jest.fn(),\n })),\n}));\n\n// Mock fizban module\njest.mock('fizban', () => ({\n Scroll: jest.fn().mockImplementation(() => ({\n start: jest.fn(),\n end: jest.fn(),\n })),\n}));\n\nlet mockMQLs: Map<string, MediaQueryList>;\n\ndescribe('interact', () => {\n let element: IInteractElement;\n let mockConfig: InteractConfig;\n const getMockConfig: () => InteractConfig = () => ({\n interactions: [\n {\n trigger: 'viewEnter',\n key: 'logo-entrance',\n params: {\n threshold: 0.2,\n },\n effects: [\n {\n key: 'logo-entrance',\n effectId: 'logo-arc-in',\n },\n {\n key: 'logo-click',\n effectId: 'logo-bounce',\n },\n ],\n },\n {\n trigger: 'pageVisible',\n key: 'logo-loop',\n effects: [\n {\n key: 'logo-loop',\n effectId: 'logo-poke',\n },\n ],\n },\n {\n trigger: 'animationEnd',\n key: 'logo-animation-end',\n params: {\n effectId: 'logo-arc-in',\n },\n effects: [\n {\n key: 'logo-animation-end',\n effectId: 'logo-poke',\n },\n ],\n },\n {\n trigger: 'pointerMove',\n key: 'logo-mouse',\n params: {\n hitArea: 'root',\n },\n effects: [\n {\n key: 'logo-mouse',\n effectId: 'logo-track-mouse',\n },\n ],\n },\n {\n trigger: 'click',\n key: 'logo-click',\n params: {\n type: 'alternate',\n },\n effects: [\n {\n key: 'logo-click',\n effectId: 'logo-bounce',\n },\n ],\n },\n {\n trigger: 'click',\n key: 'logo-click',\n params: {\n method: 'toggle',\n },\n effects: [\n {\n key: 'logo-click',\n effectId: 'logo-transition-hover',\n },\n ],\n },\n {\n trigger: 'hover',\n key: 'logo-hover',\n params: {\n type: 'alternate',\n },\n effects: [\n {\n key: 'logo-hover',\n effectId: 'logo-arc-in',\n },\n {\n key: 'logo-hover',\n effectId: 'logo-arc-in',\n namedEffect: {\n type: 'ArcIn',\n direction: 'left',\n power: 'hard',\n } as NamedEffect,\n },\n ],\n },\n {\n trigger: 'hover',\n key: 'logo-hover',\n params: {\n method: 'toggle',\n },\n effects: [\n {\n key: 'logo-hover',\n effectId: 'logo-transition-hover',\n },\n ],\n },\n {\n trigger: 'viewProgress',\n key: 'logo-scroll',\n effects: [\n {\n key: 'logo-scroll',\n effectId: 'logo-fade-scroll',\n },\n ],\n },\n {\n trigger: 'click',\n key: 'logo-click-container',\n listContainer: '#logo-list',\n effects: [\n {\n effectId: 'logo-bounce',\n },\n ],\n },\n {\n trigger: 'viewEnter',\n key: 'logo-view-container',\n effects: [\n {\n listContainer: '#logo-list',\n effectId: 'logo-bounce',\n },\n ],\n },\n {\n trigger: 'viewProgress',\n key: 'logo-scroll-container',\n listContainer: '#logo-scroll-list',\n effects: [\n {\n listContainer: '#logo-scroll-list',\n effectId: 'logo-fade-scroll',\n },\n ],\n },\n {\n trigger: 'viewProgress',\n key: 'logo-scroll-container',\n effects: [\n {\n key: 'logo-scroll-items',\n listContainer: '#logo-scroll-list',\n effectId: 'logo-fade-scroll',\n },\n ],\n },\n ],\n effects: {\n 'logo-arc-in': {\n namedEffect: {\n type: 'ArcIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 1200,\n },\n 'logo-arc-in-with-target': {\n key: 'logo-hover',\n namedEffect: {\n type: 'ArcIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 1200,\n },\n 'logo-track-mouse': {\n namedEffect: {\n type: 'TrackMouse',\n distance: { value: 20, type: 'px' },\n axis: 'both',\n power: 'medium',\n } as NamedEffect,\n transitionDuration: 300,\n transitionEasing: 'easeOut',\n centeredToTarget: true,\n },\n 'logo-bounce': {\n namedEffect: {\n type: 'BounceIn',\n power: 'hard',\n direction: 'center',\n distanceFactor: 1.2,\n } as NamedEffect,\n duration: 500,\n },\n 'logo-fade-scroll': {\n namedEffect: {\n type: 'FadeScroll',\n range: 'in',\n opacity: 0,\n } as NamedEffect,\n rangeStart: {\n name: 'contain',\n offset: { value: -10, type: 'percentage' },\n },\n rangeEnd: {\n name: 'contain',\n offset: { value: 110, type: 'percentage' },\n },\n },\n 'logo-transition-hover': {\n transition: {\n duration: 300,\n styleProperties: [{ name: 'opacity', value: '0' }],\n },\n },\n 'logo-poke': {\n namedEffect: {\n type: 'Poke',\n direction: 'left',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n });\n\n beforeEach(() => {\n element = document.createElement('interact-element') as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n // Mock Web Animations API\n (window as any).KeyframeEffect = class KeyframeEffect {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n constructor(element: Element | null, keyframes: any[], options: any) {\n return { element, keyframes, options };\n }\n };\n\n // Mock ViewTimeline\n (window as any).ViewTimeline = class ViewTimeline {\n constructor(options: any) {\n return { ...options };\n }\n };\n\n // Mock Animation\n (window as any).Animation = class Animation {\n constructor(effect: any, timeline: any) {\n return { effect, timeline, play: jest.fn() };\n }\n };\n\n // Mock IntersectionObserver\n (window as any).IntersectionObserver = class IntersectionObserver {\n constructor(callback: any, options: any) {\n return { callback, options, observe: jest.fn(), unobserve: jest.fn() };\n }\n };\n\n // Mock CSSStyleSheet\n (window as any).CSSStyleSheet = class CSSStyleSheet {\n constructor(_: string) {\n return { replace: jest.fn(), insertRule: jest.fn() };\n }\n };\n\n // Mock PointerEvent (not available in JSDOM)\n (window as any).PointerEvent = class PointerEvent extends MouseEvent {\n pointerType: string;\n constructor(type: string, params: PointerEventInit = {}) {\n super(type, params);\n this.pointerType = params.pointerType || '';\n }\n };\n\n // Mock adoptedStyleSheets\n if (!document.adoptedStyleSheets) {\n document.adoptedStyleSheets = [];\n }\n\n // Mock matchMedia for condition testing\n mockMQLs = new Map();\n mockMatchMedia();\n });\n\n function mockMatchMedia(matchingQueries: string[] = []) {\n const queryRule = `(${matchingQueries.join(') and (')})`;\n const mockMQL = (query: string) => {\n if (mockMQLs.has(query)) {\n return mockMQLs.get(query)!;\n }\n\n const mql = {\n matches: queryRule === query,\n media: query,\n onchange: null,\n addEventListener: jest.fn(),\n removeEventListener: jest.fn(),\n dispatchEvent: jest.fn(),\n } as unknown as MediaQueryList;\n\n mockMQLs.set(query, mql);\n return mql;\n };\n\n Object.defineProperty(window, 'matchMedia', {\n writable: true,\n configurable: true,\n value: jest.fn().mockImplementation(mockMQL),\n });\n }\n\n function createCascadingTestConfig(\n conditions: Record<string, any> = {},\n matchingConditions: string[] = [],\n ): InteractConfig {\n mockMatchMedia(matchingConditions);\n\n return {\n conditions: {\n desktop: {\n type: 'media',\n predicate: 'min-width: 1024px',\n },\n mobile: {\n type: 'media',\n predicate: 'max-width: 767px',\n },\n tablet: {\n type: 'media',\n predicate: '(min-width: 768px) and (max-width: 1023px)',\n },\n ...conditions,\n },\n interactions: [\n {\n trigger: 'click',\n key: 'cascade-source',\n effects: [\n {\n key: 'cascade-target',\n effectId: 'default-effect',\n },\n {\n key: 'cascade-target',\n effectId: 'default-effect',\n conditions: ['desktop'],\n namedEffect: {\n type: 'SlideIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 800,\n },\n {\n key: 'cascade-target',\n effectId: 'default-effect',\n conditions: ['mobile'],\n namedEffect: {\n type: 'BounceIn',\n direction: 'center',\n power: 'hard',\n } as NamedEffect,\n duration: 600,\n },\n ],\n },\n ],\n effects: {\n 'default-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n }\n\n afterEach(() => {\n jest.clearAllMocks();\n // Clear Interact instances to ensure test isolation\n Interact.destroy();\n // Reset static flags to default\n Interact.forceReducedMotion = false;\n Interact.allowA11yTriggers = false;\n });\n\n describe('init Interact instance', () => {\n it('should initialize with valid config', () => {\n Interact.create({} as InteractConfig);\n expect(customElements.get('interact-element')).toBeDefined();\n });\n });\n\n describe('destroy Interact instance', () => {\n it('should clear an instance entire cache', () => {\n const instance = Interact.create(getMockConfig());\n\n element = document.createElement('interact-element') as IInteractElement;\n element.dataset.interactKey = 'logo-entrance';\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-entrance');\n\n expect(Object.keys(instance.dataCache.interactions).length).toBe(11);\n expect(instance.elements.size).toBe(1);\n expect(Interact.instances.length).toBe(1);\n\n instance.destroy();\n\n expect(Object.keys(instance.dataCache.interactions).length).toBe(0);\n expect(instance.elements.size).toBe(0);\n expect(Interact.instances.length).toBe(0);\n expect(Interact.elementCache.size).toBe(0);\n });\n });\n\n describe('destroy Interact', () => {\n it('should clear all instances', () => {\n Interact.create(getMockConfig());\n Interact.create(getMockConfig());\n\n expect(Interact.instances.length).toBe(2);\n\n Interact.destroy();\n\n expect(Interact.instances.length).toBe(0);\n });\n\n it('should clear all elements from cache', () => {\n Interact.create(getMockConfig());\n\n element = document.createElement('interact-element') as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-hover');\n\n expect(Interact.elementCache.size).toBeGreaterThan(0);\n\n Interact.destroy();\n\n expect(Interact.elementCache.size).toBe(0);\n });\n\n it('should call disconnect on all cached elements', () => {\n Interact.create(getMockConfig());\n\n const element1 = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div1 = document.createElement('div');\n element1.append(div1);\n\n const element2 = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div2 = document.createElement('div');\n element2.append(div2);\n\n add(element1, 'logo-hover');\n add(element2, 'logo-click');\n\n const disconnectSpy1 = jest.spyOn(element1, 'disconnect');\n const disconnectSpy2 = jest.spyOn(element2, 'disconnect');\n\n Interact.destroy();\n\n expect(disconnectSpy1).toHaveBeenCalled();\n expect(disconnectSpy2).toHaveBeenCalled();\n });\n\n it('should clean up interactions after destroy', () => {\n Interact.create(getMockConfig());\n\n element = document.createElement('interact-element') as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-click');\n\n Interact.destroy();\n\n // After destroy, getInstance should return undefined\n expect(Interact.getInstance('logo-click')).toBeUndefined();\n\n // Re-create instance and verify it works independently\n Interact.create(getMockConfig());\n const newElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const newDiv = document.createElement('div');\n newElement.append(newDiv);\n\n const newAddEventListenerSpy = jest.spyOn(newDiv, 'addEventListener');\n add(newElement, 'logo-click');\n\n expect(newAddEventListenerSpy).toHaveBeenCalled();\n expect(Interact.getInstance('logo-click')).toBeDefined();\n });\n\n // TODO: fix this test - when adding this test it causes 2 other tests to fail\n // it('should remove event listeners and styles when disconnect is called', () => {\n // Interact.create(mockConfig);\n\n // element = document.createElement(\n // 'interact-element',\n // ) as IInteractElement;\n // element.dataset.interactKey = 'logo-click';\n // const div = document.createElement('div');\n // element.append(div);\n\n // add(element, 'logo-click');\n\n // const removeEventListenerSpy = jest.spyOn(div, 'removeEventListener');\n\n // Interact.destroy();\n\n // expect(removeEventListenerSpy).toHaveBeenCalled();\n // expect(removeEventListenerSpy).toHaveBeenCalledWith(\n // 'click',\n // expect.any(Function),\n // );\n // });\n });\n\n describe('reduced motion', () => {\n it('should pass reducedMotion=true to getWebAnimation when forceReducedMotion is true', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.forceReducedMotion = true;\n Interact.create({\n interactions: [\n {\n trigger: 'hover',\n key: 'logo-hover',\n effects: [\n {\n key: 'logo-hover',\n effectId: 'logo-arc-in',\n },\n ],\n },\n ],\n effects: {\n 'logo-arc-in': {\n namedEffect: {\n type: 'ArcIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 1200,\n },\n },\n });\n\n element = document.createElement('interact-element') as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-hover');\n\n expect(getWebAnimation).toHaveBeenCalledWith(\n div,\n expect.any(Object),\n undefined,\n { reducedMotion: true },\n );\n\n Interact.forceReducedMotion = false;\n\n Interact.destroy();\n });\n });\n\n describe('add interaction', () => {\n beforeEach(() => {\n mockConfig = getMockConfig();\n Interact.create(mockConfig);\n });\n afterEach(() => {\n Interact.destroy();\n jest.clearAllMocks();\n });\n\n describe('hover', () => {\n it('should add handler for hover trigger with alternate type', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n expect(getWebAnimation).toHaveBeenCalledTimes(0);\n\n add(element, 'logo-hover');\n\n expect(addEventListenerSpy).toHaveBeenCalledTimes(4);\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseleave',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n div,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'ArcIn',\n direction: 'left',\n power: 'hard',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('click', () => {\n it('should add handler for click trigger', () => {\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(element, 'logo-click');\n\n expect(addEventListenerSpy).toHaveBeenCalledTimes(2);\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n });\n });\n\n describe('viewEnter', () => {\n it('should add handler for viewEnter trigger', () => {\n const { getWebAnimation } = require('@wix/motion');\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-entrance');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should add handler for viewEnter trigger when target is added before source', () => {\n const { getWebAnimation } = require('@wix/motion');\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n div.id = 'logo-entrance';\n element.dataset.interactKey = 'logo-entrance';\n element.append(div);\n\n const elementClick = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const divClick = document.createElement('div');\n divClick.id = 'logo-click';\n elementClick.dataset.interactKey = 'logo-click';\n elementClick.append(divClick);\n\n add(elementClick, 'logo-click');\n add(element, 'logo-entrance');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(3);\n expect(getWebAnimation.mock.calls[0][0]).toBe(divClick);\n expect(getWebAnimation.mock.calls[1][0]).toBe(divClick);\n expect(getWebAnimation.mock.calls[2][0]).toBe(div);\n expect(getWebAnimation.mock.calls[0][3]).toMatchObject({\n reducedMotion: false,\n });\n expect(getWebAnimation.mock.calls[1][3]).toMatchObject({\n reducedMotion: false,\n });\n expect(getWebAnimation.mock.calls[2][3]).toMatchObject({\n reducedMotion: false,\n });\n });\n });\n\n describe('pageVisible', () => {\n it('should add handler for pageVisible trigger', () => {\n const { getWebAnimation } = require('@wix/motion');\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-loop');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('animationEnd', () => {\n it('should add handler for animationEnd trigger', () => {\n const { getWebAnimation } = require('@wix/motion');\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-animation-end');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('null animation handling', () => {\n it('should not add click handler when getAnimation returns null', () => {\n Interact.destroy();\n const { getWebAnimation } = require('@wix/motion');\n\n Interact.create({\n interactions: [\n {\n trigger: 'click',\n key: 'null-click-test',\n effects: [{ effectId: 'null-test-effect' }],\n },\n ],\n effects: {\n 'null-test-effect': {\n namedEffect: { type: 'FadeIn' } as NamedEffect,\n duration: 500,\n },\n },\n });\n\n getWebAnimation.mockReturnValueOnce(null);\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(element, 'null-click-test');\n\n expect(addEventListenerSpy).not.toHaveBeenCalled();\n });\n\n it('should not add hover handler when getAnimation returns null', () => {\n Interact.destroy();\n const { getWebAnimation } = require('@wix/motion');\n\n Interact.create({\n interactions: [\n {\n trigger: 'hover',\n key: 'null-hover-test',\n effects: [{ effectId: 'null-test-effect' }],\n },\n ],\n effects: {\n 'null-test-effect': {\n namedEffect: { type: 'FadeIn' } as NamedEffect,\n duration: 500,\n },\n },\n });\n\n getWebAnimation.mockReturnValueOnce(null);\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(element, 'null-hover-test');\n\n expect(addEventListenerSpy).not.toHaveBeenCalled();\n });\n\n it('should not add animationEnd handler when getAnimation returns null', () => {\n Interact.destroy();\n const { getWebAnimation } = require('@wix/motion');\n\n Interact.create({\n interactions: [\n {\n trigger: 'animationEnd',\n key: 'null-animationend-test',\n params: { effectId: 'trigger-effect' },\n effects: [{ effectId: 'null-test-effect' }],\n },\n ],\n effects: {\n 'null-test-effect': {\n namedEffect: { type: 'FadeIn' } as NamedEffect,\n duration: 500,\n },\n },\n });\n\n getWebAnimation.mockReturnValueOnce(null);\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(element, 'null-animationend-test');\n\n expect(addEventListenerSpy).not.toHaveBeenCalled();\n });\n\n it('should not add viewProgress handler when getWebAnimation returns null (ViewTimeline)', () => {\n Interact.destroy();\n const { getWebAnimation } = require('@wix/motion');\n\n Interact.create({\n interactions: [\n {\n trigger: 'viewProgress',\n key: 'null-viewprogress-test',\n effects: [{ effectId: 'null-scroll-effect' }],\n },\n ],\n effects: {\n 'null-scroll-effect': {\n namedEffect: {\n type: 'FadeScroll',\n range: 'in',\n opacity: 0,\n } as NamedEffect,\n },\n },\n });\n\n getWebAnimation.mockReturnValueOnce(null);\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'null-viewprogress-test');\n\n // getWebAnimation should have been called\n expect(getWebAnimation).toHaveBeenCalled();\n });\n\n it('should not add viewProgress handler when getScrubScene returns null (polyfill)', () => {\n // Remove ViewTimeline support to use polyfill path\n delete (window as any).ViewTimeline;\n\n Interact.destroy();\n const { getScrubScene } = require('@wix/motion');\n\n Interact.create({\n interactions: [\n {\n trigger: 'viewProgress',\n key: 'null-viewprogress-polyfill-test',\n effects: [{ effectId: 'null-scroll-effect' }],\n },\n ],\n effects: {\n 'null-scroll-effect': {\n namedEffect: {\n type: 'FadeScroll',\n range: 'in',\n opacity: 0,\n } as NamedEffect,\n },\n },\n });\n\n getScrubScene.mockReturnValueOnce(null);\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'null-viewprogress-polyfill-test');\n\n // getScrubScene should have been called\n expect(getScrubScene).toHaveBeenCalled();\n\n // Restore ViewTimeline\n (window as any).ViewTimeline = class ViewTimeline {\n constructor(options: any) {\n return { ...options };\n }\n };\n });\n });\n\n describe('pointerMove', () => {\n it('should add handler for pointerMove trigger', () => {\n const { getScrubScene } = require('@wix/motion');\n const { Pointer } = require('kuliso');\n const pointerInstance = {\n start: jest.fn(),\n destroy: jest.fn(),\n };\n Pointer.mockImplementation(() => pointerInstance);\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-mouse');\n\n expect(getScrubScene).toHaveBeenCalledTimes(1);\n expect(getScrubScene).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.objectContaining(\n effectToAnimationOptions(\n getMockConfig().effects['logo-track-mouse'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'pointer-move',\n }),\n );\n expect(pointerInstance.start).toHaveBeenCalled();\n });\n });\n\n describe('viewProgress', () => {\n it('should add handler for viewProgress trigger with native ViewTimeline support', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-scroll');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.objectContaining(\n effectToAnimationOptions(\n getMockConfig().effects['logo-fade-scroll'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'view-progress',\n }),\n );\n });\n\n it('should add handler for viewProgress trigger with fizban polyfill', () => {\n // Remove ViewTimeline support\n delete (window as any).ViewTimeline;\n const { getScrubScene } = require('@wix/motion');\n const { Scroll } = require('fizban');\n const scrollInstance = {\n start: jest.fn(),\n destroy: jest.fn(),\n };\n Scroll.mockImplementation(() => scrollInstance);\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-scroll');\n\n expect(getScrubScene).toHaveBeenCalledTimes(1);\n expect(getScrubScene).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.objectContaining(\n effectToAnimationOptions(\n getMockConfig().effects['logo-fade-scroll'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'view-progress',\n }),\n );\n setTimeout(() => {\n expect(scrollInstance.start).toHaveBeenCalled();\n }, 0);\n });\n });\n\n describe('listContainer', () => {\n it('should add a handler per list item for click trigger with listContainer', () => {\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n const ul = document.createElement('ul');\n ul.id = 'logo-list';\n div.append(ul);\n const li = document.createElement('li');\n const li2 = li.cloneNode(true);\n ul.append(li);\n ul.append(li2);\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(li, 'addEventListener');\n const addEventListenerSpy2 = jest.spyOn(li2, 'addEventListener');\n\n add(element, 'logo-click-container');\n\n expect(addEventListenerSpy).toHaveBeenCalledTimes(1);\n expect(addEventListenerSpy2).toHaveBeenCalledTimes(1);\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n expect(addEventListenerSpy2).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n });\n\n it('should add a handler per list item for viewEnter trigger with listContainer in effect', () => {\n const { getWebAnimation } = require('@wix/motion');\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n const ul = document.createElement('ul');\n ul.id = 'logo-list';\n div.append(ul);\n const li = document.createElement('li');\n const li2 = li.cloneNode(true);\n ul.append(li);\n ul.append(li2);\n element.append(div);\n\n add(element, 'logo-view-container');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(2);\n expect(getWebAnimation.mock.calls[0][0]).toBe(li);\n expect(getWebAnimation.mock.calls[1][0]).toBe(li2);\n });\n\n it('should add a handler per newly added list item for click trigger with listContainer', () => {\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n const ul = document.createElement('ul');\n ul.id = 'logo-list';\n div.append(ul);\n const li = document.createElement('li');\n const li2 = li.cloneNode(true);\n ul.append(li);\n ul.append(li2);\n element.append(div);\n\n const addEventListenerSpy = jest.spyOn(li, 'addEventListener');\n const addEventListenerSpy2 = jest.spyOn(li2, 'addEventListener');\n\n add(element, 'logo-click-container');\n\n expect(addEventListenerSpy).toHaveBeenCalledTimes(1);\n expect(addEventListenerSpy2).toHaveBeenCalledTimes(1);\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n expect(addEventListenerSpy2).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n\n const li3 = document.createElement('li');\n ul.append(li3);\n const addEventListenerSpy3 = jest.spyOn(li3, 'addEventListener');\n\n addListItems(element, 'logo-click-container', '#logo-list', [li3]);\n\n expect(addEventListenerSpy3).toHaveBeenCalledTimes(1);\n expect(addEventListenerSpy3).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n });\n\n it('should add a handler per newly added list item for viewProgress trigger but not add same interaction twice', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const divTarget = document.createElement('div');\n const ul = document.createElement('ul');\n ul.id = 'logo-scroll-list';\n divTarget.append(ul);\n const li = document.createElement('li');\n const li2 = li.cloneNode(true);\n ul.append(li);\n ul.append(li2);\n element.append(div);\n targetElement.append(divTarget);\n\n add(element, 'logo-scroll-container');\n expect(getWebAnimation).toHaveBeenCalledTimes(0);\n\n add(targetElement, 'logo-scroll-items');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(2);\n expect(getWebAnimation).toHaveBeenCalledWith(\n li,\n expect.objectContaining(\n effectToAnimationOptions(\n getMockConfig().effects['logo-fade-scroll'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'view-progress',\n }),\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n li2,\n expect.objectContaining(\n effectToAnimationOptions(\n getMockConfig().effects['logo-fade-scroll'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'view-progress',\n }),\n );\n\n const li3 = document.createElement('li');\n ul.append(li3);\n\n addListItems(targetElement, 'logo-scroll-items', '#logo-scroll-list', [\n li3,\n ]);\n\n expect(getWebAnimation).toHaveBeenCalledTimes(3);\n expect(getWebAnimation).toHaveBeenCalledWith(\n li3,\n expect.objectContaining(\n effectToAnimationOptions(\n getMockConfig().effects['logo-fade-scroll'] as ScrubEffect,\n ),\n ),\n expect.objectContaining({\n trigger: 'view-progress',\n }),\n );\n });\n });\n });\n\n describe('remove interaction', () => {\n beforeEach(() => {\n Interact.create(getMockConfig());\n });\n afterEach(() => {\n Interact.destroy();\n });\n\n it('should remove event listeners', () => {\n element = document.createElement('interact-element') as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n const removeEventListenerSpy = jest.spyOn(div, 'removeEventListener');\n\n add(element, 'logo-click');\n remove('logo-click');\n\n expect(removeEventListenerSpy).toHaveBeenCalledTimes(2);\n expect(removeEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n );\n });\n\n it('should do nothing if key does not exist', () => {\n expect(() => remove('non-existent-key')).not.toThrow();\n });\n\n it('should cleanup pointer effects', () => {\n const { Pointer } = require('kuliso');\n const pointerInstance = {\n start: jest.fn(),\n destroy: jest.fn(),\n };\n Pointer.mockImplementation(() => pointerInstance);\n\n element = document.createElement('interact-element') as IInteractElement;\n const div = document.createElement('div');\n element.append(div);\n\n add(element, 'logo-mouse');\n remove('logo-mouse');\n\n expect(pointerInstance.destroy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('effect cascading logic', () => {\n describe('basic cascading behavior', () => {\n it('should apply only first matching effect for same target', () => {\n const { getWebAnimation } = require('@wix/motion');\n const config = createCascadingTestConfig({}, ['min-width: 1024px']);\n\n Interact.create(config);\n\n const sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n const addEventListenerSpy = jest.spyOn(sourceDiv, 'addEventListener');\n\n add(sourceElement, 'cascade-source');\n add(targetElement, 'cascade-target');\n\n expect(addEventListenerSpy).toHaveBeenCalledTimes(1);\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.objectContaining({\n passive: true,\n }),\n );\n\n // Should create animation with desktop effect (first matching condition)\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'SlideIn',\n direction: 'right',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should apply default effect when no conditions match', () => {\n const { getWebAnimation } = require('@wix/motion');\n const config = createCascadingTestConfig({}, []); // No matching conditions\n\n Interact.create(config);\n\n const sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n add(sourceElement, 'cascade-source');\n add(targetElement, 'cascade-target');\n\n // Should create animation with default effect\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'FadeIn',\n power: 'medium',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should apply mobile effect when mobile condition matches', () => {\n const { getWebAnimation } = require('@wix/motion');\n const config = createCascadingTestConfig({}, ['max-width: 767px']);\n\n Interact.create(config);\n\n const sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n add(sourceElement, 'cascade-source');\n add(targetElement, 'cascade-target');\n\n // Should create animation with mobile effect\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'BounceIn',\n direction: 'center',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('element addition order', () => {\n it('should work when source is added before target', () => {\n const { getWebAnimation } = require('@wix/motion');\n const config = createCascadingTestConfig({}, ['min-width: 1024px']);\n\n Interact.create(config);\n\n const sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n // Add source first\n add(sourceElement, 'cascade-source');\n // Add target second\n add(targetElement, 'cascade-target');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'SlideIn',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should work when target is added before source', () => {\n const { getWebAnimation } = require('@wix/motion');\n const config = createCascadingTestConfig({}, ['min-width: 1024px']);\n\n Interact.create(config);\n\n const sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n // Add target first\n add(targetElement, 'cascade-target');\n // Add source second\n add(sourceElement, 'cascade-source');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'SlideIn',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('complex cascading scenarios', () => {\n it('should handle multiple targets with different conditions', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const complexConfig: InteractConfig = {\n conditions: {\n desktop: {\n type: 'media',\n predicate: 'min-width: 1024px',\n },\n mobile: {\n type: 'media',\n predicate: 'max-width: 767px',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'multi-source-1',\n effects: [\n {\n key: 'cascade-target-1',\n effectId: 'desktop-effect',\n conditions: ['desktop'],\n },\n {\n key: 'cascade-target-2',\n effectId: 'mobile-effect',\n conditions: ['mobile'],\n },\n ],\n },\n ],\n effects: {\n 'desktop-effect': {\n namedEffect: {\n type: 'SlideIn',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 800,\n },\n 'mobile-effect': {\n namedEffect: {\n type: 'BounceIn',\n direction: 'center',\n power: 'hard',\n } as NamedEffect,\n duration: 600,\n },\n },\n };\n\n mockMatchMedia(['min-width: 1024px']); // Only desktop matches\n Interact.create(complexConfig);\n\n const sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const target1Element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const target1Div = document.createElement('div');\n target1Element.append(target1Div);\n\n const target2Element = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const target2Div = document.createElement('div');\n target2Element.append(target2Div);\n\n add(sourceElement, 'multi-source-1');\n add(target1Element, 'cascade-target-1');\n add(target2Element, 'cascade-target-2');\n\n // Only desktop effect should be applied (mobile condition doesn't match)\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n target1Element.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'SlideIn',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n\n // Should not be called for mobile effect since condition doesn't match\n expect(getWebAnimation).not.toHaveBeenCalledWith(\n target2Element.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'BounceIn',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should handle effects with multiple conditions', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const multiConditionConfig: InteractConfig = {\n conditions: {\n desktop: {\n type: 'media',\n predicate: 'min-width: 1024px',\n },\n 'high-res': {\n type: 'media',\n predicate: 'min-resolution: 2dppx',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'cascade-source',\n effects: [\n {\n key: 'cascade-target',\n effectId: 'premium-effect',\n },\n {\n key: 'cascade-target',\n effectId: 'premium-effect',\n conditions: ['desktop', 'high-res'],\n },\n ],\n },\n ],\n effects: {\n 'premium-effect': {\n namedEffect: {\n type: 'Poke',\n direction: 'left',\n power: 'hard',\n } as NamedEffect,\n duration: 1000,\n },\n },\n };\n\n // Both conditions match\n mockMatchMedia(['min-width: 1024px', 'min-resolution: 2dppx']);\n Interact.create(multiConditionConfig);\n\n const sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n add(sourceElement, 'cascade-source');\n add(targetElement, 'cascade-target');\n\n // Premium effect should be applied since both conditions match\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'Poke',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('condition matching edge cases', () => {\n it('should handle missing conditions gracefully', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const configWithMissingCondition: InteractConfig = {\n conditions: {\n desktop: {\n type: 'media',\n predicate: 'min-width: 1024px',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'cascade-source',\n effects: [\n {\n key: 'cascade-target',\n effectId: 'default-effect',\n },\n {\n key: 'cascade-target',\n effectId: 'default-effect',\n conditions: ['nonexistent-condition'],\n },\n ],\n },\n ],\n effects: {\n 'default-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n\n mockMatchMedia(['min-width: 1024px']);\n Interact.create(configWithMissingCondition);\n\n const sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n add(sourceElement, 'cascade-source');\n add(targetElement, 'cascade-target');\n\n // Should fall back to default effect since condition doesn't exist\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetElement.firstElementChild,\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'FadeIn',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should handle empty conditions array', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const configWithEmptyConditions: InteractConfig = {\n conditions: {},\n interactions: [\n {\n trigger: 'click',\n key: 'cascade-source',\n effects: [\n {\n key: 'cascade-target',\n effectId: 'always-applied-effect',\n conditions: [],\n },\n ],\n },\n ],\n effects: {\n 'always-applied-effect': {\n namedEffect: {\n type: 'Spin',\n direction: 'clockwise',\n power: 'medium',\n } as NamedEffect,\n duration: 1000,\n },\n },\n };\n\n mockMatchMedia([]);\n Interact.create(configWithEmptyConditions);\n\n const sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const sourceDiv = document.createElement('div');\n sourceElement.append(sourceDiv);\n\n const targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const targetDiv = document.createElement('div');\n targetElement.append(targetDiv);\n\n add(sourceElement, 'cascade-source');\n add(targetElement, 'cascade-target');\n\n // Effect should be applied since empty conditions array should always match\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n expect.any(HTMLElement),\n expect.objectContaining({\n namedEffect: expect.objectContaining({\n type: 'Spin',\n }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n });\n\n describe('selector functionality', () => {\n let sourceElement: IInteractElement;\n let targetElement: IInteractElement;\n\n beforeEach(() => {\n // Create source element with multiple child elements\n sourceElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n sourceElement.innerHTML = `\n <div class=\"first-child\">First Child</div>\n <button class=\"trigger-button\">Click Me</button>\n <div class=\"other-element\">Other</div>\n <div class=\"list-container\">\n <div class=\"list-item\">Item 1</div>\n <div class=\"list-item\">Item 2</div>\n <div class=\"list-item\">Item 3</div>\n </div>\n `;\n\n // Create target element with multiple child elements\n targetElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n targetElement.innerHTML = `\n <div class=\"first-child\">Target First</div>\n <div class=\"animation-target\">Animation Target</div>\n <div class=\"overlay\">Overlay</div>\n <div class=\"nested\">\n <span class=\"deep-target\">Deep Target</span>\n </div>\n `;\n });\n\n describe('basic selector functionality', () => {\n it('should use selector instead of firstElementChild for source', () => {\n const config: InteractConfig = {\n effects: {\n 'test-effect': {\n keyframeEffect: {\n name: 'test',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'selector-source',\n selector: '.trigger-button',\n trigger: 'click',\n effects: [\n {\n key: 'selector-target',\n effectId: 'test-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n const triggerButton = sourceElement.querySelector(\n '.trigger-button',\n ) as HTMLElement;\n const firstChild = sourceElement.querySelector(\n '.first-child',\n ) as HTMLElement;\n\n const triggerSpy = jest.spyOn(triggerButton, 'addEventListener');\n const firstChildSpy = jest.spyOn(firstChild, 'addEventListener');\n\n add(sourceElement, 'selector-source');\n add(targetElement, 'selector-target');\n\n // Should add event listener to the selected element, not firstElementChild\n expect(triggerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n expect(firstChildSpy).not.toHaveBeenCalled();\n });\n\n it('should use selector instead of firstElementChild for target', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const config: InteractConfig = {\n effects: {\n 'test-effect': {\n keyframeEffect: {\n name: 'test',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'selector-source',\n trigger: 'click',\n effects: [\n {\n key: 'selector-target',\n selector: '.animation-target',\n effectId: 'test-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n add(sourceElement, 'selector-source');\n add(targetElement, 'selector-target');\n\n const animationTarget = targetElement.querySelector(\n '.animation-target',\n ) as HTMLElement;\n\n // Should create animation on the selected element, not firstElementChild\n expect(getWebAnimation).toHaveBeenCalledWith(\n animationTarget,\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should fall back to firstElementChild when no selector is provided', () => {\n const config: InteractConfig = {\n effects: {\n 'test-effect': {\n keyframeEffect: {\n name: 'test',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'fallback-source',\n trigger: 'click',\n effects: [\n {\n key: 'fallback-target',\n effectId: 'test-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n const firstChild = sourceElement.querySelector(\n '.first-child',\n ) as HTMLElement;\n const firstChildSpy = jest.spyOn(firstChild, 'addEventListener');\n\n add(sourceElement, 'fallback-source');\n add(targetElement, 'fallback-target');\n\n // Should fall back to firstElementChild\n expect(firstChildSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n\n describe('selector with listContainer', () => {\n it('should use selector within listContainer items', () => {\n const config: InteractConfig = {\n effects: {\n 'list-effect': {\n keyframeEffect: {\n name: 'list-test',\n keyframes: [\n { transform: 'scale(1)' },\n { transform: 'scale(1.1)' },\n ],\n },\n duration: 200,\n },\n },\n interactions: [\n {\n key: 'list-source',\n listContainer: '.list-container',\n selector: '.list-item',\n trigger: 'hover',\n effects: [\n {\n listContainer: '.list-container',\n selector: '.list-item',\n effectId: 'list-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n // Set up spies before adding interactions\n const listItems = Array.from(\n sourceElement.querySelectorAll('.list-item'),\n ) as HTMLElement[];\n\n const spies = listItems.map((item) =>\n jest.spyOn(item, 'addEventListener'),\n );\n\n add(sourceElement, 'list-source');\n\n // Should add event listeners to each list item\n spies.forEach((spy) => {\n expect(spy).toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n\n it('should handle listContainer without selector (all children)', () => {\n const config: InteractConfig = {\n effects: {\n 'container-effect': {\n keyframeEffect: {\n name: 'container-test',\n keyframes: [{ opacity: '0.5' }, { opacity: '1' }],\n },\n duration: 150,\n },\n },\n interactions: [\n {\n key: 'container-source',\n listContainer: '.list-container',\n trigger: 'click',\n effects: [\n {\n listContainer: '.list-container',\n effectId: 'container-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n // Set up spies before adding interactions\n const containerChildren = Array.from(\n sourceElement.querySelector('.list-container')?.children || [],\n ) as HTMLElement[];\n\n const spies = containerChildren.map((child) =>\n jest.spyOn(child, 'addEventListener'),\n );\n\n add(sourceElement, 'container-source');\n\n // Should add event listeners to all children of the container\n spies.forEach((spy) => {\n expect(spy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n });\n\n describe('selector error handling', () => {\n let consoleSpy: jest.SpyInstance;\n\n beforeEach(() => {\n consoleSpy = jest.spyOn(console, 'warn').mockImplementation();\n });\n\n afterEach(() => {\n consoleSpy.mockRestore();\n });\n\n it('should warn when selector does not match any elements', () => {\n const config: InteractConfig = {\n effects: {\n 'test-effect': {\n keyframeEffect: {\n name: 'test',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'invalid-source',\n selector: '.non-existent-element',\n trigger: 'click',\n effects: [\n {\n key: 'invalid-target',\n effectId: 'test-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n add(sourceElement, 'invalid-source');\n add(targetElement, 'invalid-target');\n\n expect(consoleSpy).toHaveBeenCalledWith(\n 'Interact: No element found for selector \".non-existent-element\"',\n );\n });\n\n it('should warn when listContainer selector does not match', () => {\n const config: InteractConfig = {\n effects: {\n 'test-effect': {\n keyframeEffect: {\n name: 'test',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'invalid-container-source',\n listContainer: '.non-existent-container',\n trigger: 'click',\n effects: [\n {\n key: 'invalid-container-target',\n effectId: 'test-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n add(sourceElement, 'invalid-container-source');\n add(targetElement, 'invalid-container-target');\n\n expect(consoleSpy).toHaveBeenCalledWith(\n 'Interact: No container found for list container \".non-existent-container\"',\n );\n });\n\n it('should gracefully handle invalid selectors without breaking interactions', () => {\n const config: InteractConfig = {\n effects: {\n 'valid-effect': {\n keyframeEffect: {\n name: 'valid',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'mixed-source',\n selector: '.non-existent',\n trigger: 'click',\n effects: [\n {\n key: 'mixed-target',\n effectId: 'valid-effect',\n },\n ],\n },\n {\n key: 'valid-source',\n selector: '.trigger-button',\n trigger: 'click',\n effects: [\n {\n key: 'valid-target',\n effectId: 'valid-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n // Set up spy before adding interactions\n const triggerButton = sourceElement.querySelector(\n '.trigger-button',\n ) as HTMLElement;\n const spy = jest.spyOn(triggerButton, 'addEventListener');\n\n // This should not throw and should allow other interactions to work\n expect(() => {\n add(sourceElement, 'mixed-source');\n add(sourceElement, 'valid-source');\n add(targetElement, 'mixed-target');\n add(targetElement, 'valid-target');\n }).not.toThrow();\n\n // Valid interaction should still work\n expect(spy).toHaveBeenCalled();\n });\n });\n\n describe('complex selector scenarios', () => {\n it('should handle nested selectors', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const config: InteractConfig = {\n effects: {\n 'nested-effect': {\n keyframeEffect: {\n name: 'nested',\n keyframes: [{ color: 'black' }, { color: 'blue' }],\n },\n duration: 200,\n },\n },\n interactions: [\n {\n key: 'nested-source',\n selector: '.other-element',\n trigger: 'click',\n effects: [\n {\n key: 'nested-target',\n selector: '.nested .deep-target',\n effectId: 'nested-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n const addEventListenerSpy = jest.spyOn(\n sourceElement.querySelector('.other-element') as HTMLElement,\n 'addEventListener',\n );\n\n add(sourceElement, 'nested-source');\n add(targetElement, 'nested-target');\n\n const deepTarget = targetElement.querySelector(\n '.nested .deep-target',\n ) as HTMLElement;\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n\n expect(getWebAnimation).toHaveBeenCalledWith(\n deepTarget,\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should handle attribute selectors', () => {\n // Add data attributes to test elements\n const buttonWithData = sourceElement.querySelector(\n '.trigger-button',\n ) as HTMLElement;\n buttonWithData.setAttribute('data-interactive', 'true');\n buttonWithData.setAttribute('data-category', 'primary');\n\n const config: InteractConfig = {\n effects: {\n 'attr-effect': {\n keyframeEffect: {\n name: 'attr',\n keyframes: [\n { backgroundColor: 'white' },\n { backgroundColor: 'lightblue' },\n ],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'attr-source',\n selector: '[data-interactive=\"true\"][data-category=\"primary\"]',\n trigger: 'click',\n effects: [\n {\n key: 'attr-target',\n selector: '[class*=\"animation\"]',\n effectId: 'attr-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n // Set up spy before adding interactions\n const spy = jest.spyOn(buttonWithData, 'addEventListener');\n\n add(sourceElement, 'attr-source');\n add(targetElement, 'attr-target');\n\n expect(spy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n\n describe('selector inheritance and priority', () => {\n it('should not inherit selector from interaction to effect', () => {\n const { getWebAnimation } = require('@wix/motion');\n\n const config: InteractConfig = {\n effects: {\n 'inherit-effect': {\n keyframeEffect: {\n name: 'inherit',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'inherit-source',\n selector: '.trigger-button', // Interaction has selector\n trigger: 'click',\n effects: [\n {\n key: 'inherit-target',\n // Effect has no selector - should use firstElementChild, not inherit\n effectId: 'inherit-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n add(sourceElement, 'inherit-source');\n add(targetElement, 'inherit-target');\n\n // Effect should target firstElementChild, not the interaction's selector\n const targetFirstChild = targetElement.firstElementChild as HTMLElement;\n\n expect(getWebAnimation).toHaveBeenCalledWith(\n targetFirstChild,\n expect.any(Object),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('selector cleanup', () => {\n it('should clean up selector-based interactions on remove', () => {\n const config: InteractConfig = {\n effects: {\n 'cleanup-effect': {\n keyframeEffect: {\n name: 'cleanup',\n keyframes: [{ opacity: '0' }, { opacity: '1' }],\n },\n duration: 300,\n },\n },\n interactions: [\n {\n key: 'cleanup-source',\n selector: '.trigger-button',\n trigger: 'click',\n effects: [\n {\n key: 'cleanup-target',\n selector: '.animation-target',\n effectId: 'cleanup-effect',\n },\n ],\n },\n ],\n };\n\n Interact.create(config);\n\n const triggerButton = sourceElement.querySelector(\n '.trigger-button',\n ) as HTMLElement;\n const removeEventListenerSpy = jest.spyOn(\n triggerButton,\n 'removeEventListener',\n );\n\n add(sourceElement, 'cleanup-source');\n add(targetElement, 'cleanup-target');\n\n remove('cleanup-source');\n\n // Should remove event listeners from the selected element\n expect(removeEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n );\n });\n });\n });\n\n describe('element caching', () => {\n it('should cache element in elementCache even when no instance was found for it', () => {\n const keyWithoutInstance = 'key-without-instance';\n add(element, keyWithoutInstance);\n\n expect(Interact.elementCache.has(keyWithoutInstance)).toBe(true);\n expect(Interact.elementCache.get(keyWithoutInstance)).toBe(element);\n });\n });\n\n describe('setup', () => {\n afterEach(() => {\n Interact.setup({\n scrollOptionsGetter: () => ({}),\n pointerOptionsGetter: () => ({}),\n });\n });\n\n it('should register scroll options getter', () => {\n const scrollOptionsGetter = jest.fn().mockReturnValue({});\n const spy = jest.spyOn(\n TRIGGER_TO_HANDLER_MODULE_MAP.viewProgress,\n 'registerOptionsGetter',\n );\n\n Interact.setup({ scrollOptionsGetter });\n\n expect(spy).toHaveBeenCalledWith(scrollOptionsGetter);\n });\n\n it('should register pointer options getter', () => {\n const pointerOptionsGetter = jest.fn().mockReturnValue({});\n const spy = jest.spyOn(\n TRIGGER_TO_HANDLER_MODULE_MAP.pointerMove,\n 'registerOptionsGetter',\n );\n\n Interact.setup({ pointerOptionsGetter });\n\n expect(spy).toHaveBeenCalledWith(pointerOptionsGetter);\n });\n });\n\n describe('a11y - accessible triggers', () => {\n let a11yElement: IInteractElement;\n\n function getA11yConfig(trigger: TriggerType, key: string): InteractConfig {\n return {\n interactions: [\n {\n trigger,\n key,\n effects: [{ effectId: 'test-effect' }],\n },\n ],\n effects: {\n 'test-effect': {\n namedEffect: { type: 'BounceIn', power: 'medium' } as NamedEffect,\n duration: 500,\n },\n },\n };\n }\n\n afterEach(() => {\n Interact.destroy();\n });\n\n describe('activate trigger', () => {\n it('should add both click and keydown listeners', () => {\n Interact.create(getA11yConfig('activate', 'activate-div'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'activate-div');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'keydown',\n expect.any(Function),\n expect.any(Object),\n );\n });\n\n it('should not double-invoke handler when Enter triggers both keydown and click', () => {\n const { getWebAnimation } = require('@wix/motion');\n const mockPlay = getWebAnimation().play;\n mockPlay.mockClear();\n\n Interact.create(getA11yConfig('activate', 'activate-handler-test'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const button = document.createElement('button');\n a11yElement.append(button);\n\n add(a11yElement, 'activate-handler-test');\n\n // Simulate browser behavior: Enter key triggers keydown AND synthesized click with no pointerType\n button.dispatchEvent(\n new KeyboardEvent('keydown', { code: 'Enter', bubbles: true }),\n );\n button.dispatchEvent(new MouseEvent('click', { bubbles: true }));\n\n expect(mockPlay).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('interest trigger', () => {\n it('should add focusin listener alongside mouseenter', () => {\n Interact.create(getA11yConfig('interest', 'interest-test'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'interest-test');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'focusin',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n\n describe('click trigger with allowA11yTriggers flag', () => {\n it('should NOT add keydown listener when flag is false', () => {\n Interact.create(getA11yConfig('click', 'click-no-flag'));\n Interact.setup({ allowA11yTriggers: false });\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'click-no-flag');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).not.toHaveBeenCalledWith(\n 'keydown',\n expect.any(Function),\n expect.any(Object),\n );\n });\n\n it('should add keydown listener when flag is true', () => {\n Interact.setup({ allowA11yTriggers: true });\n Interact.create(getA11yConfig('click', 'click-with-flag'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'click-with-flag');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'keydown',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n\n describe('hover trigger with allowA11yTriggers flag', () => {\n it('should NOT add focusin listener when flag is false', () => {\n Interact.setup({ allowA11yTriggers: false });\n Interact.create(getA11yConfig('hover', 'hover-no-flag'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'hover-no-flag');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).not.toHaveBeenCalledWith(\n 'focusin',\n expect.any(Function),\n expect.any(Object),\n );\n });\n\n it('should add focusin listener when flag is true', () => {\n Interact.setup({ allowA11yTriggers: true });\n Interact.create(getA11yConfig('hover', 'hover-with-flag'));\n a11yElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n\n const div = document.createElement('div');\n a11yElement.append(div);\n\n const addEventListenerSpy = jest.spyOn(div, 'addEventListener');\n\n add(a11yElement, 'hover-with-flag');\n\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'focusin',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n });\n describe('selector condition type', () => {\n it('should pass selectorCondition to handler when condition type is selector', async () => {\n const config: InteractConfig = {\n conditions: {\n active: {\n type: 'selector',\n predicate: '.active',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'selector-test',\n effects: [\n {\n key: 'selector-test',\n effectId: 'test-effect',\n conditions: ['active'],\n },\n ],\n },\n ],\n effects: {\n 'test-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n\n Interact.create(config);\n\n const testElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n testElement.append(div);\n\n add(testElement, 'selector-test');\n\n // The handler should have received selectorCondition\n // We verify by checking the animation is created (condition doesn't block setup)\n const { getWebAnimation } = await import('@wix/motion');\n expect(getWebAnimation).toHaveBeenCalled();\n });\n\n it('should skip handler execution when element does not match selector condition', async () => {\n const { getWebAnimation } = await import('@wix/motion');\n const mockAnimation = {\n play: jest.fn(),\n cancel: jest.fn(),\n onFinish: jest.fn(),\n reverse: jest.fn(),\n progress: jest.fn(),\n playState: 'idle',\n isCSS: false,\n };\n (getWebAnimation as any).mockReturnValue(mockAnimation);\n\n const config: InteractConfig = {\n conditions: {\n active: {\n type: 'selector',\n predicate: '.active',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'selector-skip-test',\n effects: [\n {\n key: 'selector-skip-test',\n effectId: 'skip-effect',\n conditions: ['active'],\n },\n ],\n },\n ],\n effects: {\n 'skip-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n\n Interact.create(config);\n\n const testElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n // div does NOT have .active class\n testElement.append(div);\n\n add(testElement, 'selector-skip-test');\n\n // Simulate click - animation should NOT play because element doesn't match .active\n // Must use PointerEvent with pointerType because click handler filters by pointerType\n div.dispatchEvent(\n new PointerEvent('click', { bubbles: true, pointerType: 'mouse' }),\n );\n\n expect(mockAnimation.play).not.toHaveBeenCalled();\n });\n\n it('should execute handler when element matches selector condition', async () => {\n const { getWebAnimation } = await import('@wix/motion');\n const mockAnimation = {\n play: jest.fn(),\n cancel: jest.fn(),\n onFinish: jest.fn(),\n reverse: jest.fn(),\n progress: jest.fn(),\n playState: 'idle',\n isCSS: false,\n };\n (getWebAnimation as any).mockReturnValue(mockAnimation);\n\n const config: InteractConfig = {\n conditions: {\n active: {\n type: 'selector',\n predicate: '.active',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'selector-match-test',\n effects: [\n {\n key: 'selector-match-test',\n effectId: 'match-effect',\n conditions: ['active'],\n },\n ],\n },\n ],\n effects: {\n 'match-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n };\n\n Interact.create(config);\n\n const testElement = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n div.classList.add('active'); // div HAS .active class\n testElement.append(div);\n\n add(testElement, 'selector-match-test');\n\n // Simulate click - animation SHOULD play because element matches .active\n // Must use PointerEvent with pointerType because click handler filters by pointerType\n div.dispatchEvent(\n new PointerEvent('click', { bubbles: true, pointerType: 'mouse' }),\n );\n\n expect(mockAnimation.play).toHaveBeenCalled();\n });\n });\n\n describe('templated (interpolated) keys', () => {\n function createEl(): [IInteractElement, HTMLElement] {\n const el = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n el.append(div);\n return [el, div];\n }\n\n describe('one-to-one: single source template to single target template', () => {\n const getConfig = (): InteractConfig => ({\n interactions: [\n {\n trigger: 'click',\n key: 'src[]',\n effects: [{ key: 'tgt[]', effectId: 'oto-effect' }],\n },\n ],\n effects: {\n 'oto-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n });\n\n it('should bind each source instance to its matching target instance', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.create(getConfig());\n\n const [srcEl0, srcDiv0] = createEl();\n const [tgtEl0, tgtDiv0] = createEl();\n const [srcEl1, srcDiv1] = createEl();\n const [tgtEl1, tgtDiv1] = createEl();\n\n const srcSpy0 = jest.spyOn(srcDiv0, 'addEventListener');\n const srcSpy1 = jest.spyOn(srcDiv1, 'addEventListener');\n\n add(srcEl0, 'src[0]');\n add(tgtEl0, 'tgt[0]');\n add(srcEl1, 'src[1]');\n add(tgtEl1, 'tgt[1]');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(2);\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtDiv1,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n\n expect(srcSpy0).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n expect(srcSpy1).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n });\n\n it('should not cross-contaminate between different instance indices', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.create(getConfig());\n\n const [srcEl0] = createEl();\n const [tgtEl1] = createEl();\n\n add(srcEl0, 'src[0]');\n add(tgtEl1, 'tgt[1]');\n\n expect(getWebAnimation).not.toHaveBeenCalled();\n });\n\n it('should work when targets are added before sources', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.create(getConfig());\n\n const [srcEl0] = createEl();\n const [tgtEl0, tgtDiv0] = createEl();\n\n add(tgtEl0, 'tgt[0]');\n add(srcEl0, 'src[0]');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(1);\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('one-to-many: single source template to multiple target templates', () => {\n const getConfig = (): InteractConfig => ({\n interactions: [\n {\n trigger: 'click',\n key: 'src[]',\n effects: [\n { key: 'tgt-a[]', effectId: 'otm-effect-a' },\n { key: 'tgt-b[]', effectId: 'otm-effect-b' },\n ],\n },\n ],\n effects: {\n 'otm-effect-a': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n 'otm-effect-b': {\n namedEffect: {\n type: 'BounceIn',\n power: 'hard',\n direction: 'center',\n } as NamedEffect,\n duration: 600,\n },\n },\n });\n\n it('should bind a source instance to all of its target instances', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.create(getConfig());\n\n const [srcEl0, srcDiv0] = createEl();\n const [tgtAEl0, tgtADiv0] = createEl();\n const [tgtBEl0, tgtBDiv0] = createEl();\n\n const srcSpy = jest.spyOn(srcDiv0, 'addEventListener');\n\n add(srcEl0, 'src[0]');\n add(tgtAEl0, 'tgt-a[0]');\n add(tgtBEl0, 'tgt-b[0]');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(2);\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtADiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtBDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'BounceIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n\n expect(srcSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n });\n\n it('should independently wire separate instances to their own targets', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.create(getConfig());\n\n const [srcEl0] = createEl();\n const [srcEl1] = createEl();\n const [tgtAEl0, tgtADiv0] = createEl();\n const [tgtBEl0, tgtBDiv0] = createEl();\n const [tgtAEl1, tgtADiv1] = createEl();\n const [tgtBEl1, tgtBDiv1] = createEl();\n\n add(srcEl0, 'src[0]');\n add(srcEl1, 'src[1]');\n add(tgtAEl0, 'tgt-a[0]');\n add(tgtBEl0, 'tgt-b[0]');\n add(tgtAEl1, 'tgt-a[1]');\n add(tgtBEl1, 'tgt-b[1]');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(4);\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtADiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtBDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'BounceIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtADiv1,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtBDiv1,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'BounceIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('many-to-one: multiple source templates to single target template', () => {\n const getConfig = (): InteractConfig => ({\n interactions: [\n {\n trigger: 'click',\n key: 'src-a[]',\n effects: [{ key: 'tgt[]', effectId: 'mto-effect-a' }],\n },\n {\n trigger: 'click',\n key: 'src-b[]',\n effects: [{ key: 'tgt[]', effectId: 'mto-effect-b' }],\n },\n ],\n effects: {\n 'mto-effect-a': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n 'mto-effect-b': {\n namedEffect: {\n type: 'BounceIn',\n power: 'hard',\n direction: 'center',\n } as NamedEffect,\n duration: 600,\n },\n },\n });\n\n it('should bind multiple sources to the same target for a given instance', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.create(getConfig());\n\n const [srcAEl0, srcADiv0] = createEl();\n const [srcBEl0, srcBDiv0] = createEl();\n const [tgtEl0, tgtDiv0] = createEl();\n\n const srcASpy = jest.spyOn(srcADiv0, 'addEventListener');\n const srcBSpy = jest.spyOn(srcBDiv0, 'addEventListener');\n\n add(srcAEl0, 'src-a[0]');\n add(srcBEl0, 'src-b[0]');\n add(tgtEl0, 'tgt[0]');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(2);\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'BounceIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n\n expect(srcASpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n expect(srcBSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n });\n\n it('should isolate different instance indices', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.create(getConfig());\n\n const [srcAEl0] = createEl();\n const [srcBEl0] = createEl();\n const [tgtEl0, tgtDiv0] = createEl();\n const [srcAEl1] = createEl();\n const [srcBEl1] = createEl();\n const [tgtEl1, tgtDiv1] = createEl();\n\n add(srcAEl0, 'src-a[0]');\n add(srcBEl0, 'src-b[0]');\n add(tgtEl0, 'tgt[0]');\n add(srcAEl1, 'src-a[1]');\n add(srcBEl1, 'src-b[1]');\n add(tgtEl1, 'tgt[1]');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(4);\n\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'BounceIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtDiv1,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtDiv1,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'BounceIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n\n describe('many-to-many: multiple source templates to multiple target templates', () => {\n const getConfig = (): InteractConfig => ({\n interactions: [\n {\n trigger: 'click',\n key: 'src-a[]',\n effects: [\n { key: 'tgt-x[]', effectId: 'mtm-ax' },\n { key: 'tgt-y[]', effectId: 'mtm-ay' },\n ],\n },\n {\n trigger: 'click',\n key: 'src-b[]',\n effects: [\n { key: 'tgt-x[]', effectId: 'mtm-bx' },\n { key: 'tgt-y[]', effectId: 'mtm-by' },\n ],\n },\n ],\n effects: {\n 'mtm-ax': {\n namedEffect: {\n type: 'FadeIn',\n power: 'soft',\n } as NamedEffect,\n duration: 300,\n },\n 'mtm-ay': {\n namedEffect: {\n type: 'SlideIn',\n direction: 'left',\n power: 'medium',\n } as NamedEffect,\n duration: 400,\n },\n 'mtm-bx': {\n namedEffect: {\n type: 'BounceIn',\n direction: 'center',\n power: 'hard',\n } as NamedEffect,\n duration: 500,\n },\n 'mtm-by': {\n namedEffect: {\n type: 'Poke',\n direction: 'right',\n power: 'medium',\n } as NamedEffect,\n duration: 600,\n },\n },\n });\n\n it('should bind each source to all of its targets for a given instance', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.create(getConfig());\n\n const [srcAEl0] = createEl();\n const [srcBEl0] = createEl();\n const [tgtXEl0, tgtXDiv0] = createEl();\n const [tgtYEl0, tgtYDiv0] = createEl();\n\n add(srcAEl0, 'src-a[0]');\n add(srcBEl0, 'src-b[0]');\n add(tgtXEl0, 'tgt-x[0]');\n add(tgtYEl0, 'tgt-y[0]');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(4);\n\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtXDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtYDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'SlideIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtXDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'BounceIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtYDiv0,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'Poke' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n\n it('should isolate many-to-many bindings across instance indices', () => {\n const { getWebAnimation } = require('@wix/motion');\n Interact.create(getConfig());\n\n const [srcAEl0] = createEl();\n const [srcBEl0] = createEl();\n const [tgtXEl0, tgtXDiv0] = createEl();\n const [tgtYEl0, tgtYDiv0] = createEl();\n\n add(srcAEl0, 'src-a[0]');\n add(srcBEl0, 'src-b[0]');\n add(tgtXEl0, 'tgt-x[0]');\n add(tgtYEl0, 'tgt-y[0]');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(4);\n\n const [srcAEl1] = createEl();\n const [srcBEl1] = createEl();\n const [tgtXEl1, tgtXDiv1] = createEl();\n const [tgtYEl1, tgtYDiv1] = createEl();\n\n add(srcAEl1, 'src-a[1]');\n add(srcBEl1, 'src-b[1]');\n add(tgtXEl1, 'tgt-x[1]');\n add(tgtYEl1, 'tgt-y[1]');\n\n expect(getWebAnimation).toHaveBeenCalledTimes(8);\n\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtXDiv1,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'FadeIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtYDiv1,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'SlideIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtXDiv1,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'BounceIn' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n expect(getWebAnimation).toHaveBeenCalledWith(\n tgtYDiv1,\n expect.objectContaining({\n namedEffect: expect.objectContaining({ type: 'Poke' }),\n }),\n undefined,\n { reducedMotion: false },\n );\n });\n });\n });\n\n describe('media query listeners', () => {\n let instance: Interact;\n\n beforeEach(() => {\n mockMQLs.clear();\n mockMatchMedia();\n });\n\n afterEach(() => {\n Interact.destroy();\n });\n\n function createMockInteractElement(key: string): IInteractElement {\n const el = document.createElement(\n 'interact-element',\n ) as IInteractElement;\n const div = document.createElement('div');\n el.append(div);\n el.dataset.interactKey = key;\n el.connected = false;\n el._internals = null;\n el._observers = new WeakMap();\n el.sheet = null;\n el.disconnect = jest.fn(function () {\n const k = el.dataset.interactKey;\n if (k) {\n remove(k);\n }\n el.sheet = null;\n el.connected = false;\n });\n el.connect = jest.fn(function () {\n if (el.connected) {\n return;\n }\n const k = el.dataset.interactKey;\n if (k) {\n el.connected = add(el, k);\n }\n });\n el.renderStyle = jest.fn();\n el.toggleEffect = jest.fn();\n el.watchChildList = jest.fn();\n return el;\n }\n\n const createResponsiveConfig = (): InteractConfig => ({\n conditions: {\n desktop: {\n type: 'media',\n predicate: 'min-width: 768px',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'responsive-button',\n conditions: ['desktop'],\n effects: [\n {\n key: 'responsive-button',\n effectId: 'test-effect',\n },\n ],\n },\n ],\n effects: {\n 'test-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n },\n });\n\n it('should set up a media query listener when interaction has conditions', () => {\n const config = createResponsiveConfig();\n instance = Interact.create(config);\n\n const testElement = createMockInteractElement('responsive-button');\n add(testElement, 'responsive-button');\n\n expect(window.matchMedia).toHaveBeenCalledWith('(min-width: 768px)');\n\n expect(instance.mediaQueryListeners.size).toBe(1);\n expect(\n instance.mediaQueryListeners.has('responsive-button::trigger::0'),\n ).toBe(true);\n\n const mql = mockMQLs.get('(min-width: 768px)');\n expect(mql?.addEventListener).toHaveBeenCalledWith(\n 'change',\n expect.any(Function),\n );\n });\n\n it('should reconcile when media query changes', () => {\n const config = createResponsiveConfig();\n instance = Interact.create(config);\n\n const testElement = createMockInteractElement('responsive-button');\n add(testElement, 'responsive-button');\n\n const listenerEntry = instance.mediaQueryListeners.get(\n 'responsive-button::trigger::0',\n );\n expect(listenerEntry).toBeDefined();\n\n const clearStateSpy = jest.spyOn(instance, 'clearInteractionStateForKey');\n\n listenerEntry!.handler({\n matches: true,\n media: '(min-width: 768px)',\n } as unknown as MediaQueryListEvent);\n\n // disconnect triggers remove which calls clearInteractionStateForKey\n expect(clearStateSpy).toHaveBeenCalledWith('responsive-button');\n });\n\n it('should properly remove event listeners when instance is destroyed', () => {\n const config = createResponsiveConfig();\n instance = Interact.create(config);\n\n const testElement = createMockInteractElement('responsive-button');\n add(testElement, 'responsive-button');\n\n const mql = mockMQLs.get('(min-width: 768px)');\n expect(mql).toBeDefined();\n expect(mql!.addEventListener).toHaveBeenCalled();\n\n instance.destroy();\n\n expect(mql!.removeEventListener).toHaveBeenCalledWith(\n 'change',\n expect.any(Function),\n );\n expect(instance.mediaQueryListeners.size).toBe(0);\n });\n\n it('should not create duplicate listeners when add() is called twice', () => {\n const config = createResponsiveConfig();\n instance = Interact.create(config);\n\n const testElement = createMockInteractElement('responsive-button');\n\n add(testElement, 'responsive-button');\n // Reset addedInteractions so add() processes interactions again\n instance.addedInteractions = {};\n add(testElement, 'responsive-button');\n\n expect(instance.mediaQueryListeners.size).toBe(1);\n\n const mql = mockMQLs.get('(min-width: 768px)');\n expect(mql?.addEventListener).toHaveBeenCalledTimes(1);\n });\n\n it('should remove listeners when element is deleted', () => {\n const config = createResponsiveConfig();\n instance = Interact.create(config);\n\n const testElement = createMockInteractElement('responsive-button');\n add(testElement, 'responsive-button');\n\n const mql = mockMQLs.get('(min-width: 768px)');\n expect(instance.mediaQueryListeners.size).toBe(1);\n\n instance.deleteElement('responsive-button');\n\n expect(mql!.removeEventListener).toHaveBeenCalledWith(\n 'change',\n expect.any(Function),\n );\n expect(instance.mediaQueryListeners.size).toBe(0);\n });\n\n it('should switch interactions when media query changes', () => {\n const config: InteractConfig = {\n conditions: {\n desktop: {\n type: 'media',\n predicate: 'min-width: 1024px',\n },\n mobile: {\n type: 'media',\n predicate: 'max-width: 767px',\n },\n },\n interactions: [\n {\n trigger: 'click',\n key: 'responsive-element',\n conditions: ['desktop'],\n effects: [\n {\n key: 'responsive-element',\n effectId: 'desktop-effect',\n },\n ],\n },\n {\n trigger: 'hover',\n key: 'responsive-element',\n conditions: ['mobile'],\n effects: [\n {\n key: 'responsive-element',\n effectId: 'mobile-effect',\n },\n ],\n },\n ],\n effects: {\n 'desktop-effect': {\n namedEffect: {\n type: 'FadeIn',\n power: 'medium',\n } as NamedEffect,\n duration: 500,\n },\n 'mobile-effect': {\n namedEffect: {\n type: 'BounceIn',\n direction: 'center',\n power: 'hard',\n } as NamedEffect,\n duration: 300,\n },\n },\n };\n\n mockMatchMedia(['min-width: 1024px']);\n instance = Interact.create(config);\n\n const testElement = createMockInteractElement('responsive-element');\n // Handlers are added to the child div (firstElementChild), not the root\n const childDiv = testElement.firstElementChild as HTMLElement;\n const addEventListenerSpy = jest.spyOn(childDiv, 'addEventListener');\n\n add(testElement, 'responsive-element');\n\n // Desktop interaction (click) should be added\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'click',\n expect.any(Function),\n expect.any(Object),\n );\n expect(addEventListenerSpy).not.toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.any(Object),\n );\n\n addEventListenerSpy.mockClear();\n\n // Simulate media query change to mobile\n const desktopMql = mockMQLs.get('(min-width: 1024px)');\n const mobileMql = mockMQLs.get('(max-width: 767px)');\n\n (desktopMql as any).matches = false;\n (mobileMql as any).matches = true;\n\n // Trigger the media query change handler\n const listenerEntry = instance.mediaQueryListeners.get(\n 'responsive-element::trigger::0',\n );\n expect(listenerEntry).toBeDefined();\n listenerEntry!.handler({\n matches: false,\n media: '(min-width: 1024px)',\n } as unknown as MediaQueryListEvent);\n\n // After reconciliation, the hover (mobile) handler should be added\n expect(addEventListenerSpy).toHaveBeenCalledWith(\n 'mouseenter',\n expect.any(Function),\n expect.any(Object),\n );\n });\n });\n});\n"],"mappings":";;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAQA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAC,sBAAA,CAAAL,OAAA;AAAwD,SAAAM,wBAAAC,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAH,uBAAA,YAAAA,CAAAC,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAExD;AACAkB,IAAI,CAACC,IAAI,CAAC,aAAa,EAAE,MAAM;EAC7B,MAAMA,IAAS,GAAG;IAChBC,eAAe,EAAEF,IAAI,CAACG,EAAE,CAAC,CAAC,CAACC,eAAe,CAAC;MACzCC,IAAI,EAAEL,IAAI,CAACG,EAAE,CAAC,CAAC;MACfG,MAAM,EAAEN,IAAI,CAACG,EAAE,CAAC,CAAC;MACjBI,QAAQ,EAAEP,IAAI,CAACG,EAAE,CAAC;IACpB,CAAC,CAAC;IACFK,aAAa,EAAER,IAAI,CAACG,EAAE,CAAC,CAAC,CAACC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC5CK,SAAS,EAAET,IAAI,CAACG,EAAE,CAAC,CAAC,CAACO,kBAAkB,CAAEC,CAAC,IAAKA,CAAC,CAAC;IACjDC,YAAY,EAAEZ,IAAI,CACfG,EAAE,CAAC,CAAC,CACJO,kBAAkB,CAAC,CAACG,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAEC,aAAa,KAAK;MAC/D,OAAOf,IAAI,CAACC,eAAe,CAACW,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAE;QACpDC;MACF,CAAC,CAAC;IACJ,CAAC;EACL,CAAC;EAED,OAAOf,IAAI;AACb,CAAC,CAAC;;AAEF;AACAD,IAAI,CAACC,IAAI,CAAC,QAAQ,EAAE,OAAO;EACzBgB,OAAO,EAAEjB,IAAI,CAACG,EAAE,CAAC,CAAC,CAACO,kBAAkB,CAAC,OAAO;IAC3CQ,KAAK,EAAElB,IAAI,CAACG,EAAE,CAAC,CAAC;IAChBgB,OAAO,EAAEnB,IAAI,CAACG,EAAE,CAAC;EACnB,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;;AAEH;AACAH,IAAI,CAACC,IAAI,CAAC,QAAQ,EAAE,OAAO;EACzBmB,MAAM,EAAEpB,IAAI,CAACG,EAAE,CAAC,CAAC,CAACO,kBAAkB,CAAC,OAAO;IAC1CQ,KAAK,EAAElB,IAAI,CAACG,EAAE,CAAC,CAAC;IAChBkB,GAAG,EAAErB,IAAI,CAACG,EAAE,CAAC;EACf,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAImB,QAAqC;AAEzCC,QAAQ,CAAC,UAAU,EAAE,MAAM;EACzB,IAAIC,OAAyB;EAC7B,IAAIC,UAA0B;EAC9B,MAAMC,aAAmC,GAAGA,CAAA,MAAO;IACjDC,YAAY,EAAE,CACZ;MACEZ,OAAO,EAAE,WAAW;MACpBa,GAAG,EAAE,eAAe;MACpBC,MAAM,EAAE;QACNC,SAAS,EAAE;MACb,CAAC;MACDC,OAAO,EAAE,CACP;QACEH,GAAG,EAAE,eAAe;QACpBI,QAAQ,EAAE;MACZ,CAAC,EACD;QACEJ,GAAG,EAAE,YAAY;QACjBI,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC,EACD;MACEjB,OAAO,EAAE,aAAa;MACtBa,GAAG,EAAE,WAAW;MAChBG,OAAO,EAAE,CACP;QACEH,GAAG,EAAE,WAAW;QAChBI,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC,EACD;MACEjB,OAAO,EAAE,cAAc;MACvBa,GAAG,EAAE,oBAAoB;MACzBC,MAAM,EAAE;QACNG,QAAQ,EAAE;MACZ,CAAC;MACDD,OAAO,EAAE,CACP;QACEH,GAAG,EAAE,oBAAoB;QACzBI,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC,EACD;MACEjB,OAAO,EAAE,aAAa;MACtBa,GAAG,EAAE,YAAY;MACjBC,MAAM,EAAE;QACNI,OAAO,EAAE;MACX,CAAC;MACDF,OAAO,EAAE,CACP;QACEH,GAAG,EAAE,YAAY;QACjBI,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC,EACD;MACEjB,OAAO,EAAE,OAAO;MAChBa,GAAG,EAAE,YAAY;MACjBC,MAAM,EAAE;QACNK,IAAI,EAAE;MACR,CAAC;MACDH,OAAO,EAAE,CACP;QACEH,GAAG,EAAE,YAAY;QACjBI,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC,EACD;MACEjB,OAAO,EAAE,OAAO;MAChBa,GAAG,EAAE,YAAY;MACjBC,MAAM,EAAE;QACNM,MAAM,EAAE;MACV,CAAC;MACDJ,OAAO,EAAE,CACP;QACEH,GAAG,EAAE,YAAY;QACjBI,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC,EACD;MACEjB,OAAO,EAAE,OAAO;MAChBa,GAAG,EAAE,YAAY;MACjBC,MAAM,EAAE;QACNK,IAAI,EAAE;MACR,CAAC;MACDH,OAAO,EAAE,CACP;QACEH,GAAG,EAAE,YAAY;QACjBI,QAAQ,EAAE;MACZ,CAAC,EACD;QACEJ,GAAG,EAAE,YAAY;QACjBI,QAAQ,EAAE,aAAa;QACvBI,WAAW,EAAE;UACXF,IAAI,EAAE,OAAO;UACbG,SAAS,EAAE,MAAM;UACjBC,KAAK,EAAE;QACT;MACF,CAAC;IAEL,CAAC,EACD;MACEvB,OAAO,EAAE,OAAO;MAChBa,GAAG,EAAE,YAAY;MACjBC,MAAM,EAAE;QACNM,MAAM,EAAE;MACV,CAAC;MACDJ,OAAO,EAAE,CACP;QACEH,GAAG,EAAE,YAAY;QACjBI,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC,EACD;MACEjB,OAAO,EAAE,cAAc;MACvBa,GAAG,EAAE,aAAa;MAClBG,OAAO,EAAE,CACP;QACEH,GAAG,EAAE,aAAa;QAClBI,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC,EACD;MACEjB,OAAO,EAAE,OAAO;MAChBa,GAAG,EAAE,sBAAsB;MAC3BW,aAAa,EAAE,YAAY;MAC3BR,OAAO,EAAE,CACP;QACEC,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC,EACD;MACEjB,OAAO,EAAE,WAAW;MACpBa,GAAG,EAAE,qBAAqB;MAC1BG,OAAO,EAAE,CACP;QACEQ,aAAa,EAAE,YAAY;QAC3BP,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC,EACD;MACEjB,OAAO,EAAE,cAAc;MACvBa,GAAG,EAAE,uBAAuB;MAC5BW,aAAa,EAAE,mBAAmB;MAClCR,OAAO,EAAE,CACP;QACEQ,aAAa,EAAE,mBAAmB;QAClCP,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC,EACD;MACEjB,OAAO,EAAE,cAAc;MACvBa,GAAG,EAAE,uBAAuB;MAC5BG,OAAO,EAAE,CACP;QACEH,GAAG,EAAE,mBAAmB;QACxBW,aAAa,EAAE,mBAAmB;QAClCP,QAAQ,EAAE;MACZ,CAAC;IAEL,CAAC,CACF;IACDD,OAAO,EAAE;MACP,aAAa,EAAE;QACbK,WAAW,EAAE;UACXF,IAAI,EAAE,OAAO;UACbG,SAAS,EAAE,OAAO;UAClBC,KAAK,EAAE;QACT,CAAgB;QAChBE,QAAQ,EAAE;MACZ,CAAC;MACD,yBAAyB,EAAE;QACzBZ,GAAG,EAAE,YAAY;QACjBQ,WAAW,EAAE;UACXF,IAAI,EAAE,OAAO;UACbG,SAAS,EAAE,OAAO;UAClBC,KAAK,EAAE;QACT,CAAgB;QAChBE,QAAQ,EAAE;MACZ,CAAC;MACD,kBAAkB,EAAE;QAClBJ,WAAW,EAAE;UACXF,IAAI,EAAE,YAAY;UAClBO,QAAQ,EAAE;YAAEC,KAAK,EAAE,EAAE;YAAER,IAAI,EAAE;UAAK,CAAC;UACnCS,IAAI,EAAE,MAAM;UACZL,KAAK,EAAE;QACT,CAAgB;QAChBM,kBAAkB,EAAE,GAAG;QACvBC,gBAAgB,EAAE,SAAS;QAC3BC,gBAAgB,EAAE;MACpB,CAAC;MACD,aAAa,EAAE;QACbV,WAAW,EAAE;UACXF,IAAI,EAAE,UAAU;UAChBI,KAAK,EAAE,MAAM;UACbD,SAAS,EAAE,QAAQ;UACnBU,cAAc,EAAE;QAClB,CAAgB;QAChBP,QAAQ,EAAE;MACZ,CAAC;MACD,kBAAkB,EAAE;QAClBJ,WAAW,EAAE;UACXF,IAAI,EAAE,YAAY;UAClBc,KAAK,EAAE,IAAI;UACXC,OAAO,EAAE;QACX,CAAgB;QAChBC,UAAU,EAAE;UACVC,IAAI,EAAE,SAAS;UACfC,MAAM,EAAE;YAAEV,KAAK,EAAE,CAAC,EAAE;YAAER,IAAI,EAAE;UAAa;QAC3C,CAAC;QACDmB,QAAQ,EAAE;UACRF,IAAI,EAAE,SAAS;UACfC,MAAM,EAAE;YAAEV,KAAK,EAAE,GAAG;YAAER,IAAI,EAAE;UAAa;QAC3C;MACF,CAAC;MACD,uBAAuB,EAAE;QACvBoB,UAAU,EAAE;UACVd,QAAQ,EAAE,GAAG;UACbe,eAAe,EAAE,CAAC;YAAEJ,IAAI,EAAE,SAAS;YAAET,KAAK,EAAE;UAAI,CAAC;QACnD;MACF,CAAC;MACD,WAAW,EAAE;QACXN,WAAW,EAAE;UACXF,IAAI,EAAE,MAAM;UACZG,SAAS,EAAE,MAAM;UACjBC,KAAK,EAAE;QACT,CAAgB;QAChBE,QAAQ,EAAE;MACZ;IACF;EACF,CAAC,CAAC;EAEFgB,UAAU,CAAC,MAAM;IACfhC,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAqB;IACxE,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;IACzClC,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;;IAEnB;IACCE,MAAM,CAASC,cAAc,GAAG,MAAMA,cAAc,CAAC;MACpD;MACAC,WAAWA,CAACvC,OAAuB,EAAEwC,SAAgB,EAAElD,OAAY,EAAE;QACnE,OAAO;UAAEU,OAAO;UAAEwC,SAAS;UAAElD;QAAQ,CAAC;MACxC;IACF,CAAC;;IAED;IACC+C,MAAM,CAASI,YAAY,GAAG,MAAMA,YAAY,CAAC;MAChDF,WAAWA,CAACjD,OAAY,EAAE;QACxB,OAAO;UAAE,GAAGA;QAAQ,CAAC;MACvB;IACF,CAAC;;IAED;IACC+C,MAAM,CAASK,SAAS,GAAG,MAAMA,SAAS,CAAC;MAC1CH,WAAWA,CAACI,MAAW,EAAEC,QAAa,EAAE;QACtC,OAAO;UAAED,MAAM;UAAEC,QAAQ;UAAE/D,IAAI,EAAEL,IAAI,CAACG,EAAE,CAAC;QAAE,CAAC;MAC9C;IACF,CAAC;;IAED;IACC0D,MAAM,CAASQ,oBAAoB,GAAG,MAAMA,oBAAoB,CAAC;MAChEN,WAAWA,CAACO,QAAa,EAAExD,OAAY,EAAE;QACvC,OAAO;UAAEwD,QAAQ;UAAExD,OAAO;UAAEyD,OAAO,EAAEvE,IAAI,CAACG,EAAE,CAAC,CAAC;UAAEqE,SAAS,EAAExE,IAAI,CAACG,EAAE,CAAC;QAAE,CAAC;MACxE;IACF,CAAC;;IAED;IACC0D,MAAM,CAASY,aAAa,GAAG,MAAMA,aAAa,CAAC;MAClDV,WAAWA,CAACW,CAAS,EAAE;QACrB,OAAO;UAAEC,OAAO,EAAE3E,IAAI,CAACG,EAAE,CAAC,CAAC;UAAEyE,UAAU,EAAE5E,IAAI,CAACG,EAAE,CAAC;QAAE,CAAC;MACtD;IACF,CAAC;;IAED;IACC0D,MAAM,CAASgB,YAAY,GAAG,MAAMA,YAAY,SAASC,UAAU,CAAC;MAEnEf,WAAWA,CAAC7B,IAAY,EAAEL,MAAwB,GAAG,CAAC,CAAC,EAAE;QACvD,KAAK,CAACK,IAAI,EAAEL,MAAM,CAAC;QAAC,IAAAkD,gBAAA,CAAAxF,OAAA;QACpB,IAAI,CAACyF,WAAW,GAAGnD,MAAM,CAACmD,WAAW,IAAI,EAAE;MAC7C;IACF,CAAC;;IAED;IACA,IAAI,CAACvB,QAAQ,CAACwB,kBAAkB,EAAE;MAChCxB,QAAQ,CAACwB,kBAAkB,GAAG,EAAE;IAClC;;IAEA;IACA3D,QAAQ,GAAG,IAAI4D,GAAG,CAAC,CAAC;IACpBC,cAAc,CAAC,CAAC;EAClB,CAAC,CAAC;EAEF,SAASA,cAAcA,CAACC,eAAyB,GAAG,EAAE,EAAE;IACtD,MAAMC,SAAS,GAAG,IAAID,eAAe,CAACE,IAAI,CAAC,SAAS,CAAC,GAAG;IACxD,MAAMC,OAAO,GAAIC,KAAa,IAAK;MACjC,IAAIlE,QAAQ,CAAC9B,GAAG,CAACgG,KAAK,CAAC,EAAE;QACvB,OAAOlE,QAAQ,CAAC7B,GAAG,CAAC+F,KAAK,CAAC;MAC5B;MAEA,MAAMC,GAAG,GAAG;QACVC,OAAO,EAAEL,SAAS,KAAKG,KAAK;QAC5BG,KAAK,EAAEH,KAAK;QACZI,QAAQ,EAAE,IAAI;QACdC,gBAAgB,EAAE7F,IAAI,CAACG,EAAE,CAAC,CAAC;QAC3B2F,mBAAmB,EAAE9F,IAAI,CAACG,EAAE,CAAC,CAAC;QAC9B4F,aAAa,EAAE/F,IAAI,CAACG,EAAE,CAAC;MACzB,CAA8B;MAE9BmB,QAAQ,CAAC5B,GAAG,CAAC8F,KAAK,EAAEC,GAAG,CAAC;MACxB,OAAOA,GAAG;IACZ,CAAC;IAED5F,MAAM,CAACC,cAAc,CAAC+D,MAAM,EAAE,YAAY,EAAE;MAC1CmC,QAAQ,EAAE,IAAI;MACdC,YAAY,EAAE,IAAI;MAClBvD,KAAK,EAAE1C,IAAI,CAACG,EAAE,CAAC,CAAC,CAACO,kBAAkB,CAAC6E,OAAO;IAC7C,CAAC,CAAC;EACJ;EAEA,SAASW,yBAAyBA,CAChCC,UAA+B,GAAG,CAAC,CAAC,EACpCC,kBAA4B,GAAG,EAAE,EACjB;IAChBjB,cAAc,CAACiB,kBAAkB,CAAC;IAElC,OAAO;MACLD,UAAU,EAAE;QACVE,OAAO,EAAE;UACPnE,IAAI,EAAE,OAAO;UACboE,SAAS,EAAE;QACb,CAAC;QACDC,MAAM,EAAE;UACNrE,IAAI,EAAE,OAAO;UACboE,SAAS,EAAE;QACb,CAAC;QACDE,MAAM,EAAE;UACNtE,IAAI,EAAE,OAAO;UACboE,SAAS,EAAE;QACb,CAAC;QACD,GAAGH;MACL,CAAC;MACDxE,YAAY,EAAE,CACZ;QACEZ,OAAO,EAAE,OAAO;QAChBa,GAAG,EAAE,gBAAgB;QACrBG,OAAO,EAAE,CACP;UACEH,GAAG,EAAE,gBAAgB;UACrBI,QAAQ,EAAE;QACZ,CAAC,EACD;UACEJ,GAAG,EAAE,gBAAgB;UACrBI,QAAQ,EAAE,gBAAgB;UAC1BmE,UAAU,EAAE,CAAC,SAAS,CAAC;UACvB/D,WAAW,EAAE;YACXF,IAAI,EAAE,SAAS;YACfG,SAAS,EAAE,OAAO;YAClBC,KAAK,EAAE;UACT,CAAgB;UAChBE,QAAQ,EAAE;QACZ,CAAC,EACD;UACEZ,GAAG,EAAE,gBAAgB;UACrBI,QAAQ,EAAE,gBAAgB;UAC1BmE,UAAU,EAAE,CAAC,QAAQ,CAAC;UACtB/D,WAAW,EAAE;YACXF,IAAI,EAAE,UAAU;YAChBG,SAAS,EAAE,QAAQ;YACnBC,KAAK,EAAE;UACT,CAAgB;UAChBE,QAAQ,EAAE;QACZ,CAAC;MAEL,CAAC,CACF;MACDT,OAAO,EAAE;QACP,gBAAgB,EAAE;UAChBK,WAAW,EAAE;YACXF,IAAI,EAAE,QAAQ;YACdI,KAAK,EAAE;UACT,CAAgB;UAChBE,QAAQ,EAAE;QACZ;MACF;IACF,CAAC;EACH;EAEAiE,SAAS,CAAC,MAAM;IACdzG,IAAI,CAAC0G,aAAa,CAAC,CAAC;IACpB;IACAC,kBAAQ,CAACxF,OAAO,CAAC,CAAC;IAClB;IACAwF,kBAAQ,CAACC,kBAAkB,GAAG,KAAK;IACnCD,kBAAQ,CAACE,iBAAiB,GAAG,KAAK;EACpC,CAAC,CAAC;EAEFtF,QAAQ,CAAC,wBAAwB,EAAE,MAAM;IACvCuF,EAAE,CAAC,qCAAqC,EAAE,MAAM;MAC9CH,kBAAQ,CAACI,MAAM,CAAC,CAAC,CAAmB,CAAC;MACrCC,MAAM,CAACC,cAAc,CAACxH,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAACyH,WAAW,CAAC,CAAC;IAC9D,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF3F,QAAQ,CAAC,2BAA2B,EAAE,MAAM;IAC1CuF,EAAE,CAAC,uCAAuC,EAAE,MAAM;MAChD,MAAMK,QAAQ,GAAGR,kBAAQ,CAACI,MAAM,CAACrF,aAAa,CAAC,CAAC,CAAC;MAEjDF,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAqB;MACxElC,OAAO,CAAC4F,OAAO,CAACC,WAAW,GAAG,eAAe;MAC7C,MAAM1D,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;MACzClC,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;MAEnB,IAAA2D,QAAG,EAAC9F,OAAO,EAAE,eAAe,CAAC;MAE7BwF,MAAM,CAACnH,MAAM,CAAC0H,IAAI,CAACJ,QAAQ,CAACK,SAAS,CAAC7F,YAAY,CAAC,CAAC8F,MAAM,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC;MACpEV,MAAM,CAACG,QAAQ,CAACQ,QAAQ,CAACC,IAAI,CAAC,CAACF,IAAI,CAAC,CAAC,CAAC;MACtCV,MAAM,CAACL,kBAAQ,CAACkB,SAAS,CAACJ,MAAM,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;MAEzCP,QAAQ,CAAChG,OAAO,CAAC,CAAC;MAElB6F,MAAM,CAACnH,MAAM,CAAC0H,IAAI,CAACJ,QAAQ,CAACK,SAAS,CAAC7F,YAAY,CAAC,CAAC8F,MAAM,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;MACnEV,MAAM,CAACG,QAAQ,CAACQ,QAAQ,CAACC,IAAI,CAAC,CAACF,IAAI,CAAC,CAAC,CAAC;MACtCV,MAAM,CAACL,kBAAQ,CAACkB,SAAS,CAACJ,MAAM,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;MACzCV,MAAM,CAACL,kBAAQ,CAACmB,YAAY,CAACF,IAAI,CAAC,CAACF,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFnG,QAAQ,CAAC,kBAAkB,EAAE,MAAM;IACjCuF,EAAE,CAAC,4BAA4B,EAAE,MAAM;MACrCH,kBAAQ,CAACI,MAAM,CAACrF,aAAa,CAAC,CAAC,CAAC;MAChCiF,kBAAQ,CAACI,MAAM,CAACrF,aAAa,CAAC,CAAC,CAAC;MAEhCsF,MAAM,CAACL,kBAAQ,CAACkB,SAAS,CAACJ,MAAM,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;MAEzCf,kBAAQ,CAACxF,OAAO,CAAC,CAAC;MAElB6F,MAAM,CAACL,kBAAQ,CAACkB,SAAS,CAACJ,MAAM,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC;IAEFZ,EAAE,CAAC,sCAAsC,EAAE,MAAM;MAC/CH,kBAAQ,CAACI,MAAM,CAACrF,aAAa,CAAC,CAAC,CAAC;MAEhCF,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAqB;MACxE,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;MACzClC,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;MAEnB,IAAA2D,QAAG,EAAC9F,OAAO,EAAE,YAAY,CAAC;MAE1BwF,MAAM,CAACL,kBAAQ,CAACmB,YAAY,CAACF,IAAI,CAAC,CAACG,eAAe,CAAC,CAAC,CAAC;MAErDpB,kBAAQ,CAACxF,OAAO,CAAC,CAAC;MAElB6F,MAAM,CAACL,kBAAQ,CAACmB,YAAY,CAACF,IAAI,CAAC,CAACF,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEFZ,EAAE,CAAC,+CAA+C,EAAE,MAAM;MACxDH,kBAAQ,CAACI,MAAM,CAACrF,aAAa,CAAC,CAAC,CAAC;MAEhC,MAAMsG,QAAQ,GAAGvE,QAAQ,CAACC,aAAa,CACrC,kBACF,CAAqB;MACrB,MAAMuE,IAAI,GAAGxE,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;MAC1CsE,QAAQ,CAACpE,MAAM,CAACqE,IAAI,CAAC;MAErB,MAAMC,QAAQ,GAAGzE,QAAQ,CAACC,aAAa,CACrC,kBACF,CAAqB;MACrB,MAAMyE,IAAI,GAAG1E,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;MAC1CwE,QAAQ,CAACtE,MAAM,CAACuE,IAAI,CAAC;MAErB,IAAAb,QAAG,EAACU,QAAQ,EAAE,YAAY,CAAC;MAC3B,IAAAV,QAAG,EAACY,QAAQ,EAAE,YAAY,CAAC;MAE3B,MAAME,cAAc,GAAGpI,IAAI,CAACqI,KAAK,CAACL,QAAQ,EAAE,YAAY,CAAC;MACzD,MAAMM,cAAc,GAAGtI,IAAI,CAACqI,KAAK,CAACH,QAAQ,EAAE,YAAY,CAAC;MAEzDvB,kBAAQ,CAACxF,OAAO,CAAC,CAAC;MAElB6F,MAAM,CAACoB,cAAc,CAAC,CAACG,gBAAgB,CAAC,CAAC;MACzCvB,MAAM,CAACsB,cAAc,CAAC,CAACC,gBAAgB,CAAC,CAAC;IAC3C,CAAC,CAAC;IAEFzB,EAAE,CAAC,4CAA4C,EAAE,MAAM;MACrDH,kBAAQ,CAACI,MAAM,CAACrF,aAAa,CAAC,CAAC,CAAC;MAEhCF,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAqB;MACxE,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;MACzClC,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;MAEnB,IAAA2D,QAAG,EAAC9F,OAAO,EAAE,YAAY,CAAC;MAE1BmF,kBAAQ,CAACxF,OAAO,CAAC,CAAC;;MAElB;MACA6F,MAAM,CAACL,kBAAQ,CAAC6B,WAAW,CAAC,YAAY,CAAC,CAAC,CAACC,aAAa,CAAC,CAAC;;MAE1D;MACA9B,kBAAQ,CAACI,MAAM,CAACrF,aAAa,CAAC,CAAC,CAAC;MAChC,MAAMgH,UAAU,GAAGjF,QAAQ,CAACC,aAAa,CACvC,kBACF,CAAqB;MACrB,MAAMiF,MAAM,GAAGlF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;MAC5CgF,UAAU,CAAC9E,MAAM,CAAC+E,MAAM,CAAC;MAEzB,MAAMC,sBAAsB,GAAG5I,IAAI,CAACqI,KAAK,CAACM,MAAM,EAAE,kBAAkB,CAAC;MACrE,IAAArB,QAAG,EAACoB,UAAU,EAAE,YAAY,CAAC;MAE7B1B,MAAM,CAAC4B,sBAAsB,CAAC,CAACL,gBAAgB,CAAC,CAAC;MACjDvB,MAAM,CAACL,kBAAQ,CAAC6B,WAAW,CAAC,YAAY,CAAC,CAAC,CAACtB,WAAW,CAAC,CAAC;IAC1D,CAAC,CAAC;;IAEF;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA;;IAEA;;IAEA;;IAEA;;IAEA;IACA;IACA;IACA;IACA;IACA;EACF,CAAC,CAAC;EAEF3F,QAAQ,CAAC,gBAAgB,EAAE,MAAM;IAC/BuF,EAAE,CAAC,mFAAmF,EAAE,MAAM;MAC5F,MAAM;QAAE5G;MAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;MAClDqI,kBAAQ,CAACC,kBAAkB,GAAG,IAAI;MAClCD,kBAAQ,CAACI,MAAM,CAAC;QACdpF,YAAY,EAAE,CACZ;UACEZ,OAAO,EAAE,OAAO;UAChBa,GAAG,EAAE,YAAY;UACjBG,OAAO,EAAE,CACP;YACEH,GAAG,EAAE,YAAY;YACjBI,QAAQ,EAAE;UACZ,CAAC;QAEL,CAAC,CACF;QACDD,OAAO,EAAE;UACP,aAAa,EAAE;YACbK,WAAW,EAAE;cACXF,IAAI,EAAE,OAAO;cACbG,SAAS,EAAE,OAAO;cAClBC,KAAK,EAAE;YACT,CAAgB;YAChBE,QAAQ,EAAE;UACZ;QACF;MACF,CAAC,CAAC;MAEFhB,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAqB;MACxE,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;MACzClC,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;MAEnB,IAAA2D,QAAG,EAAC9F,OAAO,EAAE,YAAY,CAAC;MAE1BwF,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1ClF,GAAG,EACHqD,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CAAC,EAClBkJ,SAAS,EACT;QAAE/H,aAAa,EAAE;MAAK,CACxB,CAAC;MAED2F,kBAAQ,CAACC,kBAAkB,GAAG,KAAK;MAEnCD,kBAAQ,CAACxF,OAAO,CAAC,CAAC;IACpB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFI,QAAQ,CAAC,iBAAiB,EAAE,MAAM;IAChCiC,UAAU,CAAC,MAAM;MACf/B,UAAU,GAAGC,aAAa,CAAC,CAAC;MAC5BiF,kBAAQ,CAACI,MAAM,CAACtF,UAAU,CAAC;IAC7B,CAAC,CAAC;IACFgF,SAAS,CAAC,MAAM;MACdE,kBAAQ,CAACxF,OAAO,CAAC,CAAC;MAClBnB,IAAI,CAAC0G,aAAa,CAAC,CAAC;IACtB,CAAC,CAAC;IAEFnF,QAAQ,CAAC,OAAO,EAAE,MAAM;MACtBuF,EAAE,CAAC,0DAA0D,EAAE,MAAM;QACnE,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAElDkD,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAC9B,kBACF,CAAqB;QACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzClC,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;QAEnB,MAAMqF,mBAAmB,GAAGhJ,IAAI,CAACqI,KAAK,CAAC1E,GAAG,EAAE,kBAAkB,CAAC;QAC/DqD,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAEhD,IAAA3B,QAAG,EAAC9F,OAAO,EAAE,YAAY,CAAC;QAE1BwF,MAAM,CAACgC,mBAAmB,CAAC,CAACC,qBAAqB,CAAC,CAAC,CAAC;QACpDjC,MAAM,CAACgC,mBAAmB,CAAC,CAACH,oBAAoB,CAC9C,YAAY,EACZ7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAACmC,gBAAgB,CAAC;UACtBC,OAAO,EAAE;QACX,CAAC,CACH,CAAC;QAEDpC,MAAM,CAACgC,mBAAmB,CAAC,CAACH,oBAAoB,CAC9C,YAAY,EACZ7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAACmC,gBAAgB,CAAC;UACtBC,OAAO,EAAE;QACX,CAAC,CACH,CAAC;QAEDpC,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1ClF,GAAG,EACHqD,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YACnCjH,IAAI,EAAE,OAAO;YACbG,SAAS,EAAE,MAAM;YACjBC,KAAK,EAAE;UACT,CAAC;QACH,CAAC,CAAC,EACFyG,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFO,QAAQ,CAAC,OAAO,EAAE,MAAM;MACtBuF,EAAE,CAAC,sCAAsC,EAAE,MAAM;QAC/CtF,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAC9B,kBACF,CAAqB;QACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzClC,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;QAEnB,MAAMqF,mBAAmB,GAAGhJ,IAAI,CAACqI,KAAK,CAAC1E,GAAG,EAAE,kBAAkB,CAAC;QAE/D,IAAA2D,QAAG,EAAC9F,OAAO,EAAE,YAAY,CAAC;QAE1BwF,MAAM,CAACgC,mBAAmB,CAAC,CAACC,qBAAqB,CAAC,CAAC,CAAC;QACpDjC,MAAM,CAACgC,mBAAmB,CAAC,CAACH,oBAAoB,CAC9C,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAACmC,gBAAgB,CAAC;UACtBC,OAAO,EAAE;QACX,CAAC,CACH,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF7H,QAAQ,CAAC,WAAW,EAAE,MAAM;MAC1BuF,EAAE,CAAC,0CAA0C,EAAE,MAAM;QACnD,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAClDkD,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAC9B,kBACF,CAAqB;QACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzClC,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;QAEnB,IAAA2D,QAAG,EAAC9F,OAAO,EAAE,eAAe,CAAC;QAE7BwF,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C7B,MAAM,CAAC8B,GAAG,CAACO,WAAW,CAAC,EACvBrC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CAAC,EAClBkJ,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;MAEF8F,EAAE,CAAC,6EAA6E,EAAE,MAAM;QACtF,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAClDkD,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAC9B,kBACF,CAAqB;QACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzCC,GAAG,CAAC2F,EAAE,GAAG,eAAe;QACxB9H,OAAO,CAAC4F,OAAO,CAACC,WAAW,GAAG,eAAe;QAC7C7F,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;QAEnB,MAAM4F,YAAY,GAAG9F,QAAQ,CAACC,aAAa,CACzC,kBACF,CAAqB;QACrB,MAAM8F,QAAQ,GAAG/F,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAC9C8F,QAAQ,CAACF,EAAE,GAAG,YAAY;QAC1BC,YAAY,CAACnC,OAAO,CAACC,WAAW,GAAG,YAAY;QAC/CkC,YAAY,CAAC3F,MAAM,CAAC4F,QAAQ,CAAC;QAE7B,IAAAlC,QAAG,EAACiC,YAAY,EAAE,YAAY,CAAC;QAC/B,IAAAjC,QAAG,EAAC9F,OAAO,EAAE,eAAe,CAAC;QAE7BwF,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAACD,IAAI,CAACwJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC/B,IAAI,CAAC8B,QAAQ,CAAC;QACvDxC,MAAM,CAAC9G,eAAe,CAACD,IAAI,CAACwJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC/B,IAAI,CAAC8B,QAAQ,CAAC;QACvDxC,MAAM,CAAC9G,eAAe,CAACD,IAAI,CAACwJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC/B,IAAI,CAAC/D,GAAG,CAAC;QAClDqD,MAAM,CAAC9G,eAAe,CAACD,IAAI,CAACwJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,aAAa,CAAC;UACrD1I,aAAa,EAAE;QACjB,CAAC,CAAC;QACFgG,MAAM,CAAC9G,eAAe,CAACD,IAAI,CAACwJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,aAAa,CAAC;UACrD1I,aAAa,EAAE;QACjB,CAAC,CAAC;QACFgG,MAAM,CAAC9G,eAAe,CAACD,IAAI,CAACwJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,aAAa,CAAC;UACrD1I,aAAa,EAAE;QACjB,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFO,QAAQ,CAAC,aAAa,EAAE,MAAM;MAC5BuF,EAAE,CAAC,4CAA4C,EAAE,MAAM;QACrD,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAClDkD,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAC9B,kBACF,CAAqB;QACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzClC,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;QAEnB,IAAA2D,QAAG,EAAC9F,OAAO,EAAE,WAAW,CAAC;QAEzBwF,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C7B,MAAM,CAAC8B,GAAG,CAACO,WAAW,CAAC,EACvBrC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CAAC,EAClBkJ,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFO,QAAQ,CAAC,cAAc,EAAE,MAAM;MAC7BuF,EAAE,CAAC,6CAA6C,EAAE,MAAM;QACtD,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAClDkD,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAC9B,kBACF,CAAqB;QACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzClC,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;QAEnB,IAAA2D,QAAG,EAAC9F,OAAO,EAAE,oBAAoB,CAAC;QAElCwF,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C7B,MAAM,CAAC8B,GAAG,CAACO,WAAW,CAAC,EACvBrC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CAAC,EAClBkJ,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFO,QAAQ,CAAC,yBAAyB,EAAE,MAAM;MACxCuF,EAAE,CAAC,6DAA6D,EAAE,MAAM;QACtEH,kBAAQ,CAACxF,OAAO,CAAC,CAAC;QAClB,MAAM;UAAEjB;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAElDqI,kBAAQ,CAACI,MAAM,CAAC;UACdpF,YAAY,EAAE,CACZ;YACEZ,OAAO,EAAE,OAAO;YAChBa,GAAG,EAAE,iBAAiB;YACtBG,OAAO,EAAE,CAAC;cAAEC,QAAQ,EAAE;YAAmB,CAAC;UAC5C,CAAC,CACF;UACDD,OAAO,EAAE;YACP,kBAAkB,EAAE;cAClBK,WAAW,EAAE;gBAAEF,IAAI,EAAE;cAAS,CAAgB;cAC9CM,QAAQ,EAAE;YACZ;UACF;QACF,CAAC,CAAC;QAEFtC,eAAe,CAACyJ,mBAAmB,CAAC,IAAI,CAAC;QAEzCnI,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAC9B,kBACF,CAAqB;QACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzClC,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;QAEnB,MAAMqF,mBAAmB,GAAGhJ,IAAI,CAACqI,KAAK,CAAC1E,GAAG,EAAE,kBAAkB,CAAC;QAE/D,IAAA2D,QAAG,EAAC9F,OAAO,EAAE,iBAAiB,CAAC;QAE/BwF,MAAM,CAACgC,mBAAmB,CAAC,CAACY,GAAG,CAACrB,gBAAgB,CAAC,CAAC;MACpD,CAAC,CAAC;MAEFzB,EAAE,CAAC,6DAA6D,EAAE,MAAM;QACtEH,kBAAQ,CAACxF,OAAO,CAAC,CAAC;QAClB,MAAM;UAAEjB;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAElDqI,kBAAQ,CAACI,MAAM,CAAC;UACdpF,YAAY,EAAE,CACZ;YACEZ,OAAO,EAAE,OAAO;YAChBa,GAAG,EAAE,iBAAiB;YACtBG,OAAO,EAAE,CAAC;cAAEC,QAAQ,EAAE;YAAmB,CAAC;UAC5C,CAAC,CACF;UACDD,OAAO,EAAE;YACP,kBAAkB,EAAE;cAClBK,WAAW,EAAE;gBAAEF,IAAI,EAAE;cAAS,CAAgB;cAC9CM,QAAQ,EAAE;YACZ;UACF;QACF,CAAC,CAAC;QAEFtC,eAAe,CAACyJ,mBAAmB,CAAC,IAAI,CAAC;QAEzCnI,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAC9B,kBACF,CAAqB;QACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzClC,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;QAEnB,MAAMqF,mBAAmB,GAAGhJ,IAAI,CAACqI,KAAK,CAAC1E,GAAG,EAAE,kBAAkB,CAAC;QAE/D,IAAA2D,QAAG,EAAC9F,OAAO,EAAE,iBAAiB,CAAC;QAE/BwF,MAAM,CAACgC,mBAAmB,CAAC,CAACY,GAAG,CAACrB,gBAAgB,CAAC,CAAC;MACpD,CAAC,CAAC;MAEFzB,EAAE,CAAC,oEAAoE,EAAE,MAAM;QAC7EH,kBAAQ,CAACxF,OAAO,CAAC,CAAC;QAClB,MAAM;UAAEjB;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAElDqI,kBAAQ,CAACI,MAAM,CAAC;UACdpF,YAAY,EAAE,CACZ;YACEZ,OAAO,EAAE,cAAc;YACvBa,GAAG,EAAE,wBAAwB;YAC7BC,MAAM,EAAE;cAAEG,QAAQ,EAAE;YAAiB,CAAC;YACtCD,OAAO,EAAE,CAAC;cAAEC,QAAQ,EAAE;YAAmB,CAAC;UAC5C,CAAC,CACF;UACDD,OAAO,EAAE;YACP,kBAAkB,EAAE;cAClBK,WAAW,EAAE;gBAAEF,IAAI,EAAE;cAAS,CAAgB;cAC9CM,QAAQ,EAAE;YACZ;UACF;QACF,CAAC,CAAC;QAEFtC,eAAe,CAACyJ,mBAAmB,CAAC,IAAI,CAAC;QAEzCnI,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAC9B,kBACF,CAAqB;QACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzClC,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;QAEnB,MAAMqF,mBAAmB,GAAGhJ,IAAI,CAACqI,KAAK,CAAC1E,GAAG,EAAE,kBAAkB,CAAC;QAE/D,IAAA2D,QAAG,EAAC9F,OAAO,EAAE,wBAAwB,CAAC;QAEtCwF,MAAM,CAACgC,mBAAmB,CAAC,CAACY,GAAG,CAACrB,gBAAgB,CAAC,CAAC;MACpD,CAAC,CAAC;MAEFzB,EAAE,CAAC,sFAAsF,EAAE,MAAM;QAC/FH,kBAAQ,CAACxF,OAAO,CAAC,CAAC;QAClB,MAAM;UAAEjB;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAElDqI,kBAAQ,CAACI,MAAM,CAAC;UACdpF,YAAY,EAAE,CACZ;YACEZ,OAAO,EAAE,cAAc;YACvBa,GAAG,EAAE,wBAAwB;YAC7BG,OAAO,EAAE,CAAC;cAAEC,QAAQ,EAAE;YAAqB,CAAC;UAC9C,CAAC,CACF;UACDD,OAAO,EAAE;YACP,oBAAoB,EAAE;cACpBK,WAAW,EAAE;gBACXF,IAAI,EAAE,YAAY;gBAClBc,KAAK,EAAE,IAAI;gBACXC,OAAO,EAAE;cACX;YACF;UACF;QACF,CAAC,CAAC;QAEF/C,eAAe,CAACyJ,mBAAmB,CAAC,IAAI,CAAC;QAEzCnI,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAC9B,kBACF,CAAqB;QACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzClC,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;QAEnB,IAAA2D,QAAG,EAAC9F,OAAO,EAAE,wBAAwB,CAAC;;QAEtC;QACAwF,MAAM,CAAC9G,eAAe,CAAC,CAACqI,gBAAgB,CAAC,CAAC;MAC5C,CAAC,CAAC;MAEFzB,EAAE,CAAC,gFAAgF,EAAE,MAAM;QACzF;QACA,OAAQjD,MAAM,CAASI,YAAY;QAEnC0C,kBAAQ,CAACxF,OAAO,CAAC,CAAC;QAClB,MAAM;UAAEX;QAAc,CAAC,GAAGlC,OAAO,CAAC,aAAa,CAAC;QAEhDqI,kBAAQ,CAACI,MAAM,CAAC;UACdpF,YAAY,EAAE,CACZ;YACEZ,OAAO,EAAE,cAAc;YACvBa,GAAG,EAAE,iCAAiC;YACtCG,OAAO,EAAE,CAAC;cAAEC,QAAQ,EAAE;YAAqB,CAAC;UAC9C,CAAC,CACF;UACDD,OAAO,EAAE;YACP,oBAAoB,EAAE;cACpBK,WAAW,EAAE;gBACXF,IAAI,EAAE,YAAY;gBAClBc,KAAK,EAAE,IAAI;gBACXC,OAAO,EAAE;cACX;YACF;UACF;QACF,CAAC,CAAC;QAEFzC,aAAa,CAACmJ,mBAAmB,CAAC,IAAI,CAAC;QAEvCnI,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAC9B,kBACF,CAAqB;QACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzClC,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;QAEnB,IAAA2D,QAAG,EAAC9F,OAAO,EAAE,iCAAiC,CAAC;;QAE/C;QACAwF,MAAM,CAACxG,aAAa,CAAC,CAAC+H,gBAAgB,CAAC,CAAC;;QAExC;QACC1E,MAAM,CAASI,YAAY,GAAG,MAAMA,YAAY,CAAC;UAChDF,WAAWA,CAACjD,OAAY,EAAE;YACxB,OAAO;cAAE,GAAGA;YAAQ,CAAC;UACvB;QACF,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFS,QAAQ,CAAC,aAAa,EAAE,MAAM;MAC5BuF,EAAE,CAAC,4CAA4C,EAAE,MAAM;QACrD,MAAM;UAAEtG;QAAc,CAAC,GAAGlC,OAAO,CAAC,aAAa,CAAC;QAChD,MAAM;UAAE2C;QAAQ,CAAC,GAAG3C,OAAO,CAAC,QAAQ,CAAC;QACrC,MAAMuL,eAAe,GAAG;UACtB3I,KAAK,EAAElB,IAAI,CAACG,EAAE,CAAC,CAAC;UAChBgB,OAAO,EAAEnB,IAAI,CAACG,EAAE,CAAC;QACnB,CAAC;QACDc,OAAO,CAACP,kBAAkB,CAAC,MAAMmJ,eAAe,CAAC;QAEjDrI,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAC9B,kBACF,CAAqB;QACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzClC,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;QAEnB,IAAA2D,QAAG,EAAC9F,OAAO,EAAE,YAAY,CAAC;QAE1BwF,MAAM,CAACxG,aAAa,CAAC,CAACyI,qBAAqB,CAAC,CAAC,CAAC;QAC9CjC,MAAM,CAACxG,aAAa,CAAC,CAACqI,oBAAoB,CACxC7B,MAAM,CAAC8B,GAAG,CAACO,WAAW,CAAC,EACvBrC,MAAM,CAACmC,gBAAgB,CACrB,IAAAW,mCAAwB,EACtBpI,aAAa,CAAC,CAAC,CAACK,OAAO,CAAC,kBAAkB,CAC5C,CACF,CAAC,EACDiF,MAAM,CAACmC,gBAAgB,CAAC;UACtBpI,OAAO,EAAE;QACX,CAAC,CACH,CAAC;QACDiG,MAAM,CAAC6C,eAAe,CAAC3I,KAAK,CAAC,CAACqH,gBAAgB,CAAC,CAAC;MAClD,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFhH,QAAQ,CAAC,cAAc,EAAE,MAAM;MAC7BuF,EAAE,CAAC,8EAA8E,EAAE,MAAM;QACvF,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAElDkD,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAC9B,kBACF,CAAqB;QACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzClC,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;QAEnB,IAAA2D,QAAG,EAAC9F,OAAO,EAAE,aAAa,CAAC;QAE3BwF,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C7B,MAAM,CAAC8B,GAAG,CAACO,WAAW,CAAC,EACvBrC,MAAM,CAACmC,gBAAgB,CACrB,IAAAW,mCAAwB,EACtBpI,aAAa,CAAC,CAAC,CAACK,OAAO,CAAC,kBAAkB,CAC5C,CACF,CAAC,EACDiF,MAAM,CAACmC,gBAAgB,CAAC;UACtBpI,OAAO,EAAE;QACX,CAAC,CACH,CAAC;MACH,CAAC,CAAC;MAEF+F,EAAE,CAAC,kEAAkE,EAAE,MAAM;QAC3E;QACA,OAAQjD,MAAM,CAASI,YAAY;QACnC,MAAM;UAAEzD;QAAc,CAAC,GAAGlC,OAAO,CAAC,aAAa,CAAC;QAChD,MAAM;UAAE8C;QAAO,CAAC,GAAG9C,OAAO,CAAC,QAAQ,CAAC;QACpC,MAAMyL,cAAc,GAAG;UACrB7I,KAAK,EAAElB,IAAI,CAACG,EAAE,CAAC,CAAC;UAChBgB,OAAO,EAAEnB,IAAI,CAACG,EAAE,CAAC;QACnB,CAAC;QACDiB,MAAM,CAACV,kBAAkB,CAAC,MAAMqJ,cAAc,CAAC;QAE/CvI,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAC9B,kBACF,CAAqB;QACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzClC,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;QAEnB,IAAA2D,QAAG,EAAC9F,OAAO,EAAE,aAAa,CAAC;QAE3BwF,MAAM,CAACxG,aAAa,CAAC,CAACyI,qBAAqB,CAAC,CAAC,CAAC;QAC9CjC,MAAM,CAACxG,aAAa,CAAC,CAACqI,oBAAoB,CACxC7B,MAAM,CAAC8B,GAAG,CAACO,WAAW,CAAC,EACvBrC,MAAM,CAACmC,gBAAgB,CACrB,IAAAW,mCAAwB,EACtBpI,aAAa,CAAC,CAAC,CAACK,OAAO,CAAC,kBAAkB,CAC5C,CACF,CAAC,EACDiF,MAAM,CAACmC,gBAAgB,CAAC;UACtBpI,OAAO,EAAE;QACX,CAAC,CACH,CAAC;QACDiJ,UAAU,CAAC,MAAM;UACfhD,MAAM,CAAC+C,cAAc,CAAC7I,KAAK,CAAC,CAACqH,gBAAgB,CAAC,CAAC;QACjD,CAAC,EAAE,CAAC,CAAC;MACP,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFhH,QAAQ,CAAC,eAAe,EAAE,MAAM;MAC9BuF,EAAE,CAAC,yEAAyE,EAAE,MAAM;QAClFtF,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAC9B,kBACF,CAAqB;QACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzC,MAAMuG,EAAE,GAAGxG,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC;QACvCuG,EAAE,CAACX,EAAE,GAAG,WAAW;QACnB3F,GAAG,CAACC,MAAM,CAACqG,EAAE,CAAC;QACd,MAAMC,EAAE,GAAGzG,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC;QACvC,MAAMyG,GAAG,GAAGD,EAAE,CAACE,SAAS,CAAC,IAAI,CAAC;QAC9BH,EAAE,CAACrG,MAAM,CAACsG,EAAE,CAAC;QACbD,EAAE,CAACrG,MAAM,CAACuG,GAAG,CAAC;QACd3I,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;QAEnB,MAAMqF,mBAAmB,GAAGhJ,IAAI,CAACqI,KAAK,CAAC6B,EAAE,EAAE,kBAAkB,CAAC;QAC9D,MAAMG,oBAAoB,GAAGrK,IAAI,CAACqI,KAAK,CAAC8B,GAAG,EAAE,kBAAkB,CAAC;QAEhE,IAAA7C,QAAG,EAAC9F,OAAO,EAAE,sBAAsB,CAAC;QAEpCwF,MAAM,CAACgC,mBAAmB,CAAC,CAACC,qBAAqB,CAAC,CAAC,CAAC;QACpDjC,MAAM,CAACqD,oBAAoB,CAAC,CAACpB,qBAAqB,CAAC,CAAC,CAAC;QACrDjC,MAAM,CAACgC,mBAAmB,CAAC,CAACH,oBAAoB,CAC9C,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAACmC,gBAAgB,CAAC;UACtBC,OAAO,EAAE;QACX,CAAC,CACH,CAAC;QACDpC,MAAM,CAACqD,oBAAoB,CAAC,CAACxB,oBAAoB,CAC/C,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAACmC,gBAAgB,CAAC;UACtBC,OAAO,EAAE;QACX,CAAC,CACH,CAAC;MACH,CAAC,CAAC;MAEFtC,EAAE,CAAC,uFAAuF,EAAE,MAAM;QAChG,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAClDkD,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAC9B,kBACF,CAAqB;QACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzC,MAAMuG,EAAE,GAAGxG,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC;QACvCuG,EAAE,CAACX,EAAE,GAAG,WAAW;QACnB3F,GAAG,CAACC,MAAM,CAACqG,EAAE,CAAC;QACd,MAAMC,EAAE,GAAGzG,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC;QACvC,MAAMyG,GAAG,GAAGD,EAAE,CAACE,SAAS,CAAC,IAAI,CAAC;QAC9BH,EAAE,CAACrG,MAAM,CAACsG,EAAE,CAAC;QACbD,EAAE,CAACrG,MAAM,CAACuG,GAAG,CAAC;QACd3I,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;QAEnB,IAAA2D,QAAG,EAAC9F,OAAO,EAAE,qBAAqB,CAAC;QAEnCwF,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAACD,IAAI,CAACwJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC/B,IAAI,CAACwC,EAAE,CAAC;QACjDlD,MAAM,CAAC9G,eAAe,CAACD,IAAI,CAACwJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC/B,IAAI,CAACyC,GAAG,CAAC;MACpD,CAAC,CAAC;MAEFrD,EAAE,CAAC,qFAAqF,EAAE,MAAM;QAC9FtF,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAC9B,kBACF,CAAqB;QACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzC,MAAMuG,EAAE,GAAGxG,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC;QACvCuG,EAAE,CAACX,EAAE,GAAG,WAAW;QACnB3F,GAAG,CAACC,MAAM,CAACqG,EAAE,CAAC;QACd,MAAMC,EAAE,GAAGzG,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC;QACvC,MAAMyG,GAAG,GAAGD,EAAE,CAACE,SAAS,CAAC,IAAI,CAAC;QAC9BH,EAAE,CAACrG,MAAM,CAACsG,EAAE,CAAC;QACbD,EAAE,CAACrG,MAAM,CAACuG,GAAG,CAAC;QACd3I,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;QAEnB,MAAMqF,mBAAmB,GAAGhJ,IAAI,CAACqI,KAAK,CAAC6B,EAAE,EAAE,kBAAkB,CAAC;QAC9D,MAAMG,oBAAoB,GAAGrK,IAAI,CAACqI,KAAK,CAAC8B,GAAG,EAAE,kBAAkB,CAAC;QAEhE,IAAA7C,QAAG,EAAC9F,OAAO,EAAE,sBAAsB,CAAC;QAEpCwF,MAAM,CAACgC,mBAAmB,CAAC,CAACC,qBAAqB,CAAC,CAAC,CAAC;QACpDjC,MAAM,CAACqD,oBAAoB,CAAC,CAACpB,qBAAqB,CAAC,CAAC,CAAC;QACrDjC,MAAM,CAACgC,mBAAmB,CAAC,CAACH,oBAAoB,CAC9C,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAACmC,gBAAgB,CAAC;UACtBC,OAAO,EAAE;QACX,CAAC,CACH,CAAC;QACDpC,MAAM,CAACqD,oBAAoB,CAAC,CAACxB,oBAAoB,CAC/C,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAACmC,gBAAgB,CAAC;UACtBC,OAAO,EAAE;QACX,CAAC,CACH,CAAC;QAED,MAAMkB,GAAG,GAAG7G,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC;QACxCuG,EAAE,CAACrG,MAAM,CAAC0G,GAAG,CAAC;QACd,MAAMC,oBAAoB,GAAGvK,IAAI,CAACqI,KAAK,CAACiC,GAAG,EAAE,kBAAkB,CAAC;QAEhE,IAAAE,iBAAY,EAAChJ,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,CAAC8I,GAAG,CAAC,CAAC;QAElEtD,MAAM,CAACuD,oBAAoB,CAAC,CAACtB,qBAAqB,CAAC,CAAC,CAAC;QACrDjC,MAAM,CAACuD,oBAAoB,CAAC,CAAC1B,oBAAoB,CAC/C,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAACmC,gBAAgB,CAAC;UACtBC,OAAO,EAAE;QACX,CAAC,CACH,CAAC;MACH,CAAC,CAAC;MAEFtC,EAAE,CAAC,4GAA4G,EAAE,MAAM;QACrH,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAElDkD,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAC9B,kBACF,CAAqB;QACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzC,MAAM+G,aAAa,GAAGhH,QAAQ,CAACC,aAAa,CAC1C,kBACF,CAAqB;QACrB,MAAMgH,SAAS,GAAGjH,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAC/C,MAAMuG,EAAE,GAAGxG,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC;QACvCuG,EAAE,CAACX,EAAE,GAAG,kBAAkB;QAC1BoB,SAAS,CAAC9G,MAAM,CAACqG,EAAE,CAAC;QACpB,MAAMC,EAAE,GAAGzG,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC;QACvC,MAAMyG,GAAG,GAAGD,EAAE,CAACE,SAAS,CAAC,IAAI,CAAC;QAC9BH,EAAE,CAACrG,MAAM,CAACsG,EAAE,CAAC;QACbD,EAAE,CAACrG,MAAM,CAACuG,GAAG,CAAC;QACd3I,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;QACnB8G,aAAa,CAAC7G,MAAM,CAAC8G,SAAS,CAAC;QAE/B,IAAApD,QAAG,EAAC9F,OAAO,EAAE,uBAAuB,CAAC;QACrCwF,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAEhD,IAAA3B,QAAG,EAACmD,aAAa,EAAE,mBAAmB,CAAC;QAEvCzD,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1CqB,EAAE,EACFlD,MAAM,CAACmC,gBAAgB,CACrB,IAAAW,mCAAwB,EACtBpI,aAAa,CAAC,CAAC,CAACK,OAAO,CAAC,kBAAkB,CAC5C,CACF,CAAC,EACDiF,MAAM,CAACmC,gBAAgB,CAAC;UACtBpI,OAAO,EAAE;QACX,CAAC,CACH,CAAC;QACDiG,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1CsB,GAAG,EACHnD,MAAM,CAACmC,gBAAgB,CACrB,IAAAW,mCAAwB,EACtBpI,aAAa,CAAC,CAAC,CAACK,OAAO,CAAC,kBAAkB,CAC5C,CACF,CAAC,EACDiF,MAAM,CAACmC,gBAAgB,CAAC;UACtBpI,OAAO,EAAE;QACX,CAAC,CACH,CAAC;QAED,MAAMuJ,GAAG,GAAG7G,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC;QACxCuG,EAAE,CAACrG,MAAM,CAAC0G,GAAG,CAAC;QAEd,IAAAE,iBAAY,EAACC,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CACpEH,GAAG,CACJ,CAAC;QAEFtD,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1CyB,GAAG,EACHtD,MAAM,CAACmC,gBAAgB,CACrB,IAAAW,mCAAwB,EACtBpI,aAAa,CAAC,CAAC,CAACK,OAAO,CAAC,kBAAkB,CAC5C,CACF,CAAC,EACDiF,MAAM,CAACmC,gBAAgB,CAAC;UACtBpI,OAAO,EAAE;QACX,CAAC,CACH,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFQ,QAAQ,CAAC,oBAAoB,EAAE,MAAM;IACnCiC,UAAU,CAAC,MAAM;MACfmD,kBAAQ,CAACI,MAAM,CAACrF,aAAa,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC;IACF+E,SAAS,CAAC,MAAM;MACdE,kBAAQ,CAACxF,OAAO,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF2F,EAAE,CAAC,+BAA+B,EAAE,MAAM;MACxCtF,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAqB;MACxE,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;MACzClC,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;MAEnB,MAAMgH,sBAAsB,GAAG3K,IAAI,CAACqI,KAAK,CAAC1E,GAAG,EAAE,qBAAqB,CAAC;MAErE,IAAA2D,QAAG,EAAC9F,OAAO,EAAE,YAAY,CAAC;MAC1B,IAAAoJ,cAAM,EAAC,YAAY,CAAC;MAEpB5D,MAAM,CAAC2D,sBAAsB,CAAC,CAAC1B,qBAAqB,CAAC,CAAC,CAAC;MACvDjC,MAAM,CAAC2D,sBAAsB,CAAC,CAAC9B,oBAAoB,CACjD,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CACrB,CAAC;IACH,CAAC,CAAC;IAEFpC,EAAE,CAAC,yCAAyC,EAAE,MAAM;MAClDE,MAAM,CAAC,MAAM,IAAA4D,cAAM,EAAC,kBAAkB,CAAC,CAAC,CAAChB,GAAG,CAACiB,OAAO,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF/D,EAAE,CAAC,gCAAgC,EAAE,MAAM;MACzC,MAAM;QAAE7F;MAAQ,CAAC,GAAG3C,OAAO,CAAC,QAAQ,CAAC;MACrC,MAAMuL,eAAe,GAAG;QACtB3I,KAAK,EAAElB,IAAI,CAACG,EAAE,CAAC,CAAC;QAChBgB,OAAO,EAAEnB,IAAI,CAACG,EAAE,CAAC;MACnB,CAAC;MACDc,OAAO,CAACP,kBAAkB,CAAC,MAAMmJ,eAAe,CAAC;MAEjDrI,OAAO,GAAGiC,QAAQ,CAACC,aAAa,CAAC,kBAAkB,CAAqB;MACxE,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;MACzClC,OAAO,CAACoC,MAAM,CAACD,GAAG,CAAC;MAEnB,IAAA2D,QAAG,EAAC9F,OAAO,EAAE,YAAY,CAAC;MAC1B,IAAAoJ,cAAM,EAAC,YAAY,CAAC;MAEpB5D,MAAM,CAAC6C,eAAe,CAAC1I,OAAO,CAAC,CAAC8H,qBAAqB,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF1H,QAAQ,CAAC,wBAAwB,EAAE,MAAM;IACvCA,QAAQ,CAAC,0BAA0B,EAAE,MAAM;MACzCuF,EAAE,CAAC,yDAAyD,EAAE,MAAM;QAClE,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAClD,MAAMwM,MAAM,GAAG5E,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC;QAEnES,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;QAEvB,MAAMC,aAAa,GAAGtH,QAAQ,CAACC,aAAa,CAC1C,kBACF,CAAqB;QACrB,MAAMsH,SAAS,GAAGvH,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAC/CqH,aAAa,CAACnH,MAAM,CAACoH,SAAS,CAAC;QAE/B,MAAMP,aAAa,GAAGhH,QAAQ,CAACC,aAAa,CAC1C,kBACF,CAAqB;QACrB,MAAMuH,SAAS,GAAGxH,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAC/C+G,aAAa,CAAC7G,MAAM,CAACqH,SAAS,CAAC;QAE/B,MAAMjC,mBAAmB,GAAGhJ,IAAI,CAACqI,KAAK,CAAC2C,SAAS,EAAE,kBAAkB,CAAC;QAErE,IAAA1D,QAAG,EAACyD,aAAa,EAAE,gBAAgB,CAAC;QACpC,IAAAzD,QAAG,EAACmD,aAAa,EAAE,gBAAgB,CAAC;QAEpCzD,MAAM,CAACgC,mBAAmB,CAAC,CAACC,qBAAqB,CAAC,CAAC,CAAC;QACpDjC,MAAM,CAACgC,mBAAmB,CAAC,CAACH,oBAAoB,CAC9C,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAACmC,gBAAgB,CAAC;UACtBC,OAAO,EAAE;QACX,CAAC,CACH,CAAC;;QAED;QACApC,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C4B,aAAa,CAACS,iBAAiB,EAC/BlE,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YACnCjH,IAAI,EAAE,SAAS;YACfG,SAAS,EAAE;UACb,CAAC;QACH,CAAC,CAAC,EACF0G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;MAEF8F,EAAE,CAAC,sDAAsD,EAAE,MAAM;QAC/D,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAClD,MAAMwM,MAAM,GAAG5E,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;;QAElDS,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;QAEvB,MAAMC,aAAa,GAAGtH,QAAQ,CAACC,aAAa,CAC1C,kBACF,CAAqB;QACrB,MAAMsH,SAAS,GAAGvH,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAC/CqH,aAAa,CAACnH,MAAM,CAACoH,SAAS,CAAC;QAE/B,MAAMP,aAAa,GAAGhH,QAAQ,CAACC,aAAa,CAC1C,kBACF,CAAqB;QACrB,MAAMuH,SAAS,GAAGxH,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAC/C+G,aAAa,CAAC7G,MAAM,CAACqH,SAAS,CAAC;QAE/B,IAAA3D,QAAG,EAACyD,aAAa,EAAE,gBAAgB,CAAC;QACpC,IAAAzD,QAAG,EAACmD,aAAa,EAAE,gBAAgB,CAAC;;QAEpC;QACAzD,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C4B,aAAa,CAACS,iBAAiB,EAC/BlE,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YACnCjH,IAAI,EAAE,QAAQ;YACdI,KAAK,EAAE;UACT,CAAC;QACH,CAAC,CAAC,EACFyG,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;MAEF8F,EAAE,CAAC,0DAA0D,EAAE,MAAM;QACnE,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAClD,MAAMwM,MAAM,GAAG5E,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC;QAElES,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;QAEvB,MAAMC,aAAa,GAAGtH,QAAQ,CAACC,aAAa,CAC1C,kBACF,CAAqB;QACrB,MAAMsH,SAAS,GAAGvH,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAC/CqH,aAAa,CAACnH,MAAM,CAACoH,SAAS,CAAC;QAE/B,MAAMP,aAAa,GAAGhH,QAAQ,CAACC,aAAa,CAC1C,kBACF,CAAqB;QACrB,MAAMuH,SAAS,GAAGxH,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAC/C+G,aAAa,CAAC7G,MAAM,CAACqH,SAAS,CAAC;QAE/B,IAAA3D,QAAG,EAACyD,aAAa,EAAE,gBAAgB,CAAC;QACpC,IAAAzD,QAAG,EAACmD,aAAa,EAAE,gBAAgB,CAAC;;QAEpC;QACAzD,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C4B,aAAa,CAACS,iBAAiB,EAC/BlE,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YACnCjH,IAAI,EAAE,UAAU;YAChBG,SAAS,EAAE;UACb,CAAC;QACH,CAAC,CAAC,EACF0G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFO,QAAQ,CAAC,wBAAwB,EAAE,MAAM;MACvCuF,EAAE,CAAC,gDAAgD,EAAE,MAAM;QACzD,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAClD,MAAMwM,MAAM,GAAG5E,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC;QAEnES,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;QAEvB,MAAMC,aAAa,GAAGtH,QAAQ,CAACC,aAAa,CAC1C,kBACF,CAAqB;QACrB,MAAMsH,SAAS,GAAGvH,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAC/CqH,aAAa,CAACnH,MAAM,CAACoH,SAAS,CAAC;QAE/B,MAAMP,aAAa,GAAGhH,QAAQ,CAACC,aAAa,CAC1C,kBACF,CAAqB;QACrB,MAAMuH,SAAS,GAAGxH,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAC/C+G,aAAa,CAAC7G,MAAM,CAACqH,SAAS,CAAC;;QAE/B;QACA,IAAA3D,QAAG,EAACyD,aAAa,EAAE,gBAAgB,CAAC;QACpC;QACA,IAAAzD,QAAG,EAACmD,aAAa,EAAE,gBAAgB,CAAC;QAEpCzD,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C4B,aAAa,CAACS,iBAAiB,EAC/BlE,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YACnCjH,IAAI,EAAE;UACR,CAAC;QACH,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;MAEF8F,EAAE,CAAC,gDAAgD,EAAE,MAAM;QACzD,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAClD,MAAMwM,MAAM,GAAG5E,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC;QAEnES,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;QAEvB,MAAMC,aAAa,GAAGtH,QAAQ,CAACC,aAAa,CAC1C,kBACF,CAAqB;QACrB,MAAMsH,SAAS,GAAGvH,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAC/CqH,aAAa,CAACnH,MAAM,CAACoH,SAAS,CAAC;QAE/B,MAAMP,aAAa,GAAGhH,QAAQ,CAACC,aAAa,CAC1C,kBACF,CAAqB;QACrB,MAAMuH,SAAS,GAAGxH,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAC/C+G,aAAa,CAAC7G,MAAM,CAACqH,SAAS,CAAC;;QAE/B;QACA,IAAA3D,QAAG,EAACmD,aAAa,EAAE,gBAAgB,CAAC;QACpC;QACA,IAAAnD,QAAG,EAACyD,aAAa,EAAE,gBAAgB,CAAC;QAEpC/D,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C4B,aAAa,CAACS,iBAAiB,EAC/BlE,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YACnCjH,IAAI,EAAE;UACR,CAAC;QACH,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFO,QAAQ,CAAC,6BAA6B,EAAE,MAAM;MAC5CuF,EAAE,CAAC,0DAA0D,EAAE,MAAM;QACnE,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAElD,MAAM6M,aAA6B,GAAG;UACpChF,UAAU,EAAE;YACVE,OAAO,EAAE;cACPnE,IAAI,EAAE,OAAO;cACboE,SAAS,EAAE;YACb,CAAC;YACDC,MAAM,EAAE;cACNrE,IAAI,EAAE,OAAO;cACboE,SAAS,EAAE;YACb;UACF,CAAC;UACD3E,YAAY,EAAE,CACZ;YACEZ,OAAO,EAAE,OAAO;YAChBa,GAAG,EAAE,gBAAgB;YACrBG,OAAO,EAAE,CACP;cACEH,GAAG,EAAE,kBAAkB;cACvBI,QAAQ,EAAE,gBAAgB;cAC1BmE,UAAU,EAAE,CAAC,SAAS;YACxB,CAAC,EACD;cACEvE,GAAG,EAAE,kBAAkB;cACvBI,QAAQ,EAAE,eAAe;cACzBmE,UAAU,EAAE,CAAC,QAAQ;YACvB,CAAC;UAEL,CAAC,CACF;UACDpE,OAAO,EAAE;YACP,gBAAgB,EAAE;cAChBK,WAAW,EAAE;gBACXF,IAAI,EAAE,SAAS;gBACfG,SAAS,EAAE,OAAO;gBAClBC,KAAK,EAAE;cACT,CAAgB;cAChBE,QAAQ,EAAE;YACZ,CAAC;YACD,eAAe,EAAE;cACfJ,WAAW,EAAE;gBACXF,IAAI,EAAE,UAAU;gBAChBG,SAAS,EAAE,QAAQ;gBACnBC,KAAK,EAAE;cACT,CAAgB;cAChBE,QAAQ,EAAE;YACZ;UACF;QACF,CAAC;QAED2C,cAAc,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACvCwB,kBAAQ,CAACI,MAAM,CAACoE,aAAa,CAAC;QAE9B,MAAMJ,aAAa,GAAGtH,QAAQ,CAACC,aAAa,CAC1C,kBACF,CAAqB;QACrB,MAAMsH,SAAS,GAAGvH,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAC/CqH,aAAa,CAACnH,MAAM,CAACoH,SAAS,CAAC;QAE/B,MAAMI,cAAc,GAAG3H,QAAQ,CAACC,aAAa,CAC3C,kBACF,CAAqB;QACrB,MAAM2H,UAAU,GAAG5H,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAChD0H,cAAc,CAACxH,MAAM,CAACyH,UAAU,CAAC;QAEjC,MAAMC,cAAc,GAAG7H,QAAQ,CAACC,aAAa,CAC3C,kBACF,CAAqB;QACrB,MAAM6H,UAAU,GAAG9H,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAChD4H,cAAc,CAAC1H,MAAM,CAAC2H,UAAU,CAAC;QAEjC,IAAAjE,QAAG,EAACyD,aAAa,EAAE,gBAAgB,CAAC;QACpC,IAAAzD,QAAG,EAAC8D,cAAc,EAAE,kBAAkB,CAAC;QACvC,IAAA9D,QAAG,EAACgE,cAAc,EAAE,kBAAkB,CAAC;;QAEvC;QACAtE,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1CuC,cAAc,CAACF,iBAAiB,EAChClE,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YACnCjH,IAAI,EAAE;UACR,CAAC;QACH,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;;QAED;QACAgG,MAAM,CAAC9G,eAAe,CAAC,CAAC0J,GAAG,CAACf,oBAAoB,CAC9CyC,cAAc,CAACJ,iBAAiB,EAChClE,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YACnCjH,IAAI,EAAE;UACR,CAAC;QACH,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;MAEF8F,EAAE,CAAC,gDAAgD,EAAE,MAAM;QACzD,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAElD,MAAMkN,oBAAoC,GAAG;UAC3CrF,UAAU,EAAE;YACVE,OAAO,EAAE;cACPnE,IAAI,EAAE,OAAO;cACboE,SAAS,EAAE;YACb,CAAC;YACD,UAAU,EAAE;cACVpE,IAAI,EAAE,OAAO;cACboE,SAAS,EAAE;YACb;UACF,CAAC;UACD3E,YAAY,EAAE,CACZ;YACEZ,OAAO,EAAE,OAAO;YAChBa,GAAG,EAAE,gBAAgB;YACrBG,OAAO,EAAE,CACP;cACEH,GAAG,EAAE,gBAAgB;cACrBI,QAAQ,EAAE;YACZ,CAAC,EACD;cACEJ,GAAG,EAAE,gBAAgB;cACrBI,QAAQ,EAAE,gBAAgB;cAC1BmE,UAAU,EAAE,CAAC,SAAS,EAAE,UAAU;YACpC,CAAC;UAEL,CAAC,CACF;UACDpE,OAAO,EAAE;YACP,gBAAgB,EAAE;cAChBK,WAAW,EAAE;gBACXF,IAAI,EAAE,MAAM;gBACZG,SAAS,EAAE,MAAM;gBACjBC,KAAK,EAAE;cACT,CAAgB;cAChBE,QAAQ,EAAE;YACZ;UACF;QACF,CAAC;;QAED;QACA2C,cAAc,CAAC,CAAC,mBAAmB,EAAE,uBAAuB,CAAC,CAAC;QAC9DwB,kBAAQ,CAACI,MAAM,CAACyE,oBAAoB,CAAC;QAErC,MAAMT,aAAa,GAAGtH,QAAQ,CAACC,aAAa,CAC1C,kBACF,CAAqB;QACrB,MAAMsH,SAAS,GAAGvH,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAC/CqH,aAAa,CAACnH,MAAM,CAACoH,SAAS,CAAC;QAE/B,MAAMP,aAAa,GAAGhH,QAAQ,CAACC,aAAa,CAC1C,kBACF,CAAqB;QACrB,MAAMuH,SAAS,GAAGxH,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAC/C+G,aAAa,CAAC7G,MAAM,CAACqH,SAAS,CAAC;QAE/B,IAAA3D,QAAG,EAACyD,aAAa,EAAE,gBAAgB,CAAC;QACpC,IAAAzD,QAAG,EAACmD,aAAa,EAAE,gBAAgB,CAAC;;QAEpC;QACAzD,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C4B,aAAa,CAACS,iBAAiB,EAC/BlE,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YACnCjH,IAAI,EAAE;UACR,CAAC;QACH,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFO,QAAQ,CAAC,+BAA+B,EAAE,MAAM;MAC9CuF,EAAE,CAAC,6CAA6C,EAAE,MAAM;QACtD,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAElD,MAAMmN,0BAA0C,GAAG;UACjDtF,UAAU,EAAE;YACVE,OAAO,EAAE;cACPnE,IAAI,EAAE,OAAO;cACboE,SAAS,EAAE;YACb;UACF,CAAC;UACD3E,YAAY,EAAE,CACZ;YACEZ,OAAO,EAAE,OAAO;YAChBa,GAAG,EAAE,gBAAgB;YACrBG,OAAO,EAAE,CACP;cACEH,GAAG,EAAE,gBAAgB;cACrBI,QAAQ,EAAE;YACZ,CAAC,EACD;cACEJ,GAAG,EAAE,gBAAgB;cACrBI,QAAQ,EAAE,gBAAgB;cAC1BmE,UAAU,EAAE,CAAC,uBAAuB;YACtC,CAAC;UAEL,CAAC,CACF;UACDpE,OAAO,EAAE;YACP,gBAAgB,EAAE;cAChBK,WAAW,EAAE;gBACXF,IAAI,EAAE,QAAQ;gBACdI,KAAK,EAAE;cACT,CAAgB;cAChBE,QAAQ,EAAE;YACZ;UACF;QACF,CAAC;QAED2C,cAAc,CAAC,CAAC,mBAAmB,CAAC,CAAC;QACrCwB,kBAAQ,CAACI,MAAM,CAAC0E,0BAA0B,CAAC;QAE3C,MAAMV,aAAa,GAAGtH,QAAQ,CAACC,aAAa,CAC1C,kBACF,CAAqB;QACrB,MAAMsH,SAAS,GAAGvH,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAC/CqH,aAAa,CAACnH,MAAM,CAACoH,SAAS,CAAC;QAE/B,MAAMP,aAAa,GAAGhH,QAAQ,CAACC,aAAa,CAC1C,kBACF,CAAqB;QACrB,MAAMuH,SAAS,GAAGxH,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAC/C+G,aAAa,CAAC7G,MAAM,CAACqH,SAAS,CAAC;QAE/B,IAAA3D,QAAG,EAACyD,aAAa,EAAE,gBAAgB,CAAC;QACpC,IAAAzD,QAAG,EAACmD,aAAa,EAAE,gBAAgB,CAAC;;QAEpC;QACAzD,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C4B,aAAa,CAACS,iBAAiB,EAC/BlE,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YACnCjH,IAAI,EAAE;UACR,CAAC;QACH,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;MAEF8F,EAAE,CAAC,sCAAsC,EAAE,MAAM;QAC/C,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAElD,MAAMoN,yBAAyC,GAAG;UAChDvF,UAAU,EAAE,CAAC,CAAC;UACdxE,YAAY,EAAE,CACZ;YACEZ,OAAO,EAAE,OAAO;YAChBa,GAAG,EAAE,gBAAgB;YACrBG,OAAO,EAAE,CACP;cACEH,GAAG,EAAE,gBAAgB;cACrBI,QAAQ,EAAE,uBAAuB;cACjCmE,UAAU,EAAE;YACd,CAAC;UAEL,CAAC,CACF;UACDpE,OAAO,EAAE;YACP,uBAAuB,EAAE;cACvBK,WAAW,EAAE;gBACXF,IAAI,EAAE,MAAM;gBACZG,SAAS,EAAE,WAAW;gBACtBC,KAAK,EAAE;cACT,CAAgB;cAChBE,QAAQ,EAAE;YACZ;UACF;QACF,CAAC;QAED2C,cAAc,CAAC,EAAE,CAAC;QAClBwB,kBAAQ,CAACI,MAAM,CAAC2E,yBAAyB,CAAC;QAE1C,MAAMX,aAAa,GAAGtH,QAAQ,CAACC,aAAa,CAC1C,kBACF,CAAqB;QACrB,MAAMsH,SAAS,GAAGvH,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAC/CqH,aAAa,CAACnH,MAAM,CAACoH,SAAS,CAAC;QAE/B,MAAMP,aAAa,GAAGhH,QAAQ,CAACC,aAAa,CAC1C,kBACF,CAAqB;QACrB,MAAMuH,SAAS,GAAGxH,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAC/C+G,aAAa,CAAC7G,MAAM,CAACqH,SAAS,CAAC;QAE/B,IAAA3D,QAAG,EAACyD,aAAa,EAAE,gBAAgB,CAAC;QACpC,IAAAzD,QAAG,EAACmD,aAAa,EAAE,gBAAgB,CAAC;;QAEpC;QACAzD,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C7B,MAAM,CAAC8B,GAAG,CAACO,WAAW,CAAC,EACvBrC,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YACnCjH,IAAI,EAAE;UACR,CAAC;QACH,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFO,QAAQ,CAAC,wBAAwB,EAAE,MAAM;IACvC,IAAIwJ,aAA+B;IACnC,IAAIN,aAA+B;IAEnCjH,UAAU,CAAC,MAAM;MACf;MACAuH,aAAa,GAAGtH,QAAQ,CAACC,aAAa,CACpC,kBACF,CAAqB;MACrBqH,aAAa,CAACY,SAAS,GAAG;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;MAED;MACAlB,aAAa,GAAGhH,QAAQ,CAACC,aAAa,CACpC,kBACF,CAAqB;MACrB+G,aAAa,CAACkB,SAAS,GAAG;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;IACH,CAAC,CAAC;IAEFpK,QAAQ,CAAC,8BAA8B,EAAE,MAAM;MAC7CuF,EAAE,CAAC,6DAA6D,EAAE,MAAM;QACtE,MAAMgE,MAAsB,GAAG;UAC7B/I,OAAO,EAAE;YACP,aAAa,EAAE;cACb6J,cAAc,EAAE;gBACdzI,IAAI,EAAE,MAAM;gBACZa,SAAS,EAAE,CAAC;kBAAEf,OAAO,EAAE;gBAAI,CAAC,EAAE;kBAAEA,OAAO,EAAE;gBAAI,CAAC;cAChD,CAAC;cACDT,QAAQ,EAAE;YACZ;UACF,CAAC;UACDb,YAAY,EAAE,CACZ;YACEC,GAAG,EAAE,iBAAiB;YACtBiK,QAAQ,EAAE,iBAAiB;YAC3B9K,OAAO,EAAE,OAAO;YAChBgB,OAAO,EAAE,CACP;cACEH,GAAG,EAAE,iBAAiB;cACtBI,QAAQ,EAAE;YACZ,CAAC;UAEL,CAAC;QAEL,CAAC;QAED2E,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;QAEvB,MAAMgB,aAAa,GAAGf,aAAa,CAACgB,aAAa,CAC/C,iBACF,CAAgB;QAChB,MAAMC,UAAU,GAAGjB,aAAa,CAACgB,aAAa,CAC5C,cACF,CAAgB;QAEhB,MAAME,UAAU,GAAGjM,IAAI,CAACqI,KAAK,CAACyD,aAAa,EAAE,kBAAkB,CAAC;QAChE,MAAMI,aAAa,GAAGlM,IAAI,CAACqI,KAAK,CAAC2D,UAAU,EAAE,kBAAkB,CAAC;QAEhE,IAAA1E,QAAG,EAACyD,aAAa,EAAE,iBAAiB,CAAC;QACrC,IAAAzD,QAAG,EAACmD,aAAa,EAAE,iBAAiB,CAAC;;QAErC;QACAzD,MAAM,CAACiF,UAAU,CAAC,CAACpD,oBAAoB,CACrC,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;QACDmH,MAAM,CAACkF,aAAa,CAAC,CAACtC,GAAG,CAACrB,gBAAgB,CAAC,CAAC;MAC9C,CAAC,CAAC;MAEFzB,EAAE,CAAC,6DAA6D,EAAE,MAAM;QACtE,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAElD,MAAMwM,MAAsB,GAAG;UAC7B/I,OAAO,EAAE;YACP,aAAa,EAAE;cACb6J,cAAc,EAAE;gBACdzI,IAAI,EAAE,MAAM;gBACZa,SAAS,EAAE,CAAC;kBAAEf,OAAO,EAAE;gBAAI,CAAC,EAAE;kBAAEA,OAAO,EAAE;gBAAI,CAAC;cAChD,CAAC;cACDT,QAAQ,EAAE;YACZ;UACF,CAAC;UACDb,YAAY,EAAE,CACZ;YACEC,GAAG,EAAE,iBAAiB;YACtBb,OAAO,EAAE,OAAO;YAChBgB,OAAO,EAAE,CACP;cACEH,GAAG,EAAE,iBAAiB;cACtBiK,QAAQ,EAAE,mBAAmB;cAC7B7J,QAAQ,EAAE;YACZ,CAAC;UAEL,CAAC;QAEL,CAAC;QAED2E,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;QAEvB,IAAAxD,QAAG,EAACyD,aAAa,EAAE,iBAAiB,CAAC;QACrC,IAAAzD,QAAG,EAACmD,aAAa,EAAE,iBAAiB,CAAC;QAErC,MAAM0B,eAAe,GAAG1B,aAAa,CAACsB,aAAa,CACjD,mBACF,CAAgB;;QAEhB;QACA/E,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1CsD,eAAe,EACfnF,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CAAC,EAClBkJ,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;MAEF8F,EAAE,CAAC,oEAAoE,EAAE,MAAM;QAC7E,MAAMgE,MAAsB,GAAG;UAC7B/I,OAAO,EAAE;YACP,aAAa,EAAE;cACb6J,cAAc,EAAE;gBACdzI,IAAI,EAAE,MAAM;gBACZa,SAAS,EAAE,CAAC;kBAAEf,OAAO,EAAE;gBAAI,CAAC,EAAE;kBAAEA,OAAO,EAAE;gBAAI,CAAC;cAChD,CAAC;cACDT,QAAQ,EAAE;YACZ;UACF,CAAC;UACDb,YAAY,EAAE,CACZ;YACEC,GAAG,EAAE,iBAAiB;YACtBb,OAAO,EAAE,OAAO;YAChBgB,OAAO,EAAE,CACP;cACEH,GAAG,EAAE,iBAAiB;cACtBI,QAAQ,EAAE;YACZ,CAAC;UAEL,CAAC;QAEL,CAAC;QAED2E,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;QAEvB,MAAMkB,UAAU,GAAGjB,aAAa,CAACgB,aAAa,CAC5C,cACF,CAAgB;QAChB,MAAMG,aAAa,GAAGlM,IAAI,CAACqI,KAAK,CAAC2D,UAAU,EAAE,kBAAkB,CAAC;QAEhE,IAAA1E,QAAG,EAACyD,aAAa,EAAE,iBAAiB,CAAC;QACrC,IAAAzD,QAAG,EAACmD,aAAa,EAAE,iBAAiB,CAAC;;QAErC;QACAzD,MAAM,CAACkF,aAAa,CAAC,CAACrD,oBAAoB,CACxC,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF0B,QAAQ,CAAC,6BAA6B,EAAE,MAAM;MAC5CuF,EAAE,CAAC,gDAAgD,EAAE,MAAM;QACzD,MAAMgE,MAAsB,GAAG;UAC7B/I,OAAO,EAAE;YACP,aAAa,EAAE;cACb6J,cAAc,EAAE;gBACdzI,IAAI,EAAE,WAAW;gBACjBa,SAAS,EAAE,CACT;kBAAEoI,SAAS,EAAE;gBAAW,CAAC,EACzB;kBAAEA,SAAS,EAAE;gBAAa,CAAC;cAE/B,CAAC;cACD5J,QAAQ,EAAE;YACZ;UACF,CAAC;UACDb,YAAY,EAAE,CACZ;YACEC,GAAG,EAAE,aAAa;YAClBW,aAAa,EAAE,iBAAiB;YAChCsJ,QAAQ,EAAE,YAAY;YACtB9K,OAAO,EAAE,OAAO;YAChBgB,OAAO,EAAE,CACP;cACEQ,aAAa,EAAE,iBAAiB;cAChCsJ,QAAQ,EAAE,YAAY;cACtB7J,QAAQ,EAAE;YACZ,CAAC;UAEL,CAAC;QAEL,CAAC;QAED2E,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;;QAEvB;QACA,MAAMuB,SAAS,GAAGC,KAAK,CAACC,IAAI,CAC1BxB,aAAa,CAACyB,gBAAgB,CAAC,YAAY,CAC7C,CAAkB;QAElB,MAAMC,KAAK,GAAGJ,SAAS,CAACK,GAAG,CAAEC,IAAI,IAC/B3M,IAAI,CAACqI,KAAK,CAACsE,IAAI,EAAE,kBAAkB,CACrC,CAAC;QAED,IAAArF,QAAG,EAACyD,aAAa,EAAE,aAAa,CAAC;;QAEjC;QACA0B,KAAK,CAACG,OAAO,CAAEC,GAAG,IAAK;UACrB7F,MAAM,CAAC6F,GAAG,CAAC,CAAChE,oBAAoB,CAC9B,YAAY,EACZ7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;QACH,CAAC,CAAC;MACJ,CAAC,CAAC;MAEFiH,EAAE,CAAC,6DAA6D,EAAE,MAAM;QAAA,IAAAgG,qBAAA;QACtE,MAAMhC,MAAsB,GAAG;UAC7B/I,OAAO,EAAE;YACP,kBAAkB,EAAE;cAClB6J,cAAc,EAAE;gBACdzI,IAAI,EAAE,gBAAgB;gBACtBa,SAAS,EAAE,CAAC;kBAAEf,OAAO,EAAE;gBAAM,CAAC,EAAE;kBAAEA,OAAO,EAAE;gBAAI,CAAC;cAClD,CAAC;cACDT,QAAQ,EAAE;YACZ;UACF,CAAC;UACDb,YAAY,EAAE,CACZ;YACEC,GAAG,EAAE,kBAAkB;YACvBW,aAAa,EAAE,iBAAiB;YAChCxB,OAAO,EAAE,OAAO;YAChBgB,OAAO,EAAE,CACP;cACEQ,aAAa,EAAE,iBAAiB;cAChCP,QAAQ,EAAE;YACZ,CAAC;UAEL,CAAC;QAEL,CAAC;QAED2E,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;;QAEvB;QACA,MAAMiC,iBAAiB,GAAGT,KAAK,CAACC,IAAI,CAClC,EAAAO,qBAAA,GAAA/B,aAAa,CAACgB,aAAa,CAAC,iBAAiB,CAAC,qBAA9Ce,qBAAA,CAAgDE,QAAQ,KAAI,EAC9D,CAAkB;QAElB,MAAMP,KAAK,GAAGM,iBAAiB,CAACL,GAAG,CAAEO,KAAK,IACxCjN,IAAI,CAACqI,KAAK,CAAC4E,KAAK,EAAE,kBAAkB,CACtC,CAAC;QAED,IAAA3F,QAAG,EAACyD,aAAa,EAAE,kBAAkB,CAAC;;QAEtC;QACA0B,KAAK,CAACG,OAAO,CAAEC,GAAG,IAAK;UACrB7F,MAAM,CAAC6F,GAAG,CAAC,CAAChE,oBAAoB,CAC9B,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;QACH,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF0B,QAAQ,CAAC,yBAAyB,EAAE,MAAM;MACxC,IAAI2L,UAA4B;MAEhC1J,UAAU,CAAC,MAAM;QACf0J,UAAU,GAAGlN,IAAI,CAACqI,KAAK,CAAC8E,OAAO,EAAE,MAAM,CAAC,CAACzM,kBAAkB,CAAC,CAAC;MAC/D,CAAC,CAAC;MAEF+F,SAAS,CAAC,MAAM;QACdyG,UAAU,CAACE,WAAW,CAAC,CAAC;MAC1B,CAAC,CAAC;MAEFtG,EAAE,CAAC,uDAAuD,EAAE,MAAM;QAChE,MAAMgE,MAAsB,GAAG;UAC7B/I,OAAO,EAAE;YACP,aAAa,EAAE;cACb6J,cAAc,EAAE;gBACdzI,IAAI,EAAE,MAAM;gBACZa,SAAS,EAAE,CAAC;kBAAEf,OAAO,EAAE;gBAAI,CAAC,EAAE;kBAAEA,OAAO,EAAE;gBAAI,CAAC;cAChD,CAAC;cACDT,QAAQ,EAAE;YACZ;UACF,CAAC;UACDb,YAAY,EAAE,CACZ;YACEC,GAAG,EAAE,gBAAgB;YACrBiK,QAAQ,EAAE,uBAAuB;YACjC9K,OAAO,EAAE,OAAO;YAChBgB,OAAO,EAAE,CACP;cACEH,GAAG,EAAE,gBAAgB;cACrBI,QAAQ,EAAE;YACZ,CAAC;UAEL,CAAC;QAEL,CAAC;QAED2E,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;QAEvB,IAAAxD,QAAG,EAACyD,aAAa,EAAE,gBAAgB,CAAC;QACpC,IAAAzD,QAAG,EAACmD,aAAa,EAAE,gBAAgB,CAAC;QAEpCzD,MAAM,CAACkG,UAAU,CAAC,CAACrE,oBAAoB,CACrC,iEACF,CAAC;MACH,CAAC,CAAC;MAEF/B,EAAE,CAAC,wDAAwD,EAAE,MAAM;QACjE,MAAMgE,MAAsB,GAAG;UAC7B/I,OAAO,EAAE;YACP,aAAa,EAAE;cACb6J,cAAc,EAAE;gBACdzI,IAAI,EAAE,MAAM;gBACZa,SAAS,EAAE,CAAC;kBAAEf,OAAO,EAAE;gBAAI,CAAC,EAAE;kBAAEA,OAAO,EAAE;gBAAI,CAAC;cAChD,CAAC;cACDT,QAAQ,EAAE;YACZ;UACF,CAAC;UACDb,YAAY,EAAE,CACZ;YACEC,GAAG,EAAE,0BAA0B;YAC/BW,aAAa,EAAE,yBAAyB;YACxCxB,OAAO,EAAE,OAAO;YAChBgB,OAAO,EAAE,CACP;cACEH,GAAG,EAAE,0BAA0B;cAC/BI,QAAQ,EAAE;YACZ,CAAC;UAEL,CAAC;QAEL,CAAC;QAED2E,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;QAEvB,IAAAxD,QAAG,EAACyD,aAAa,EAAE,0BAA0B,CAAC;QAC9C,IAAAzD,QAAG,EAACmD,aAAa,EAAE,0BAA0B,CAAC;QAE9CzD,MAAM,CAACkG,UAAU,CAAC,CAACrE,oBAAoB,CACrC,2EACF,CAAC;MACH,CAAC,CAAC;MAEF/B,EAAE,CAAC,0EAA0E,EAAE,MAAM;QACnF,MAAMgE,MAAsB,GAAG;UAC7B/I,OAAO,EAAE;YACP,cAAc,EAAE;cACd6J,cAAc,EAAE;gBACdzI,IAAI,EAAE,OAAO;gBACba,SAAS,EAAE,CAAC;kBAAEf,OAAO,EAAE;gBAAI,CAAC,EAAE;kBAAEA,OAAO,EAAE;gBAAI,CAAC;cAChD,CAAC;cACDT,QAAQ,EAAE;YACZ;UACF,CAAC;UACDb,YAAY,EAAE,CACZ;YACEC,GAAG,EAAE,cAAc;YACnBiK,QAAQ,EAAE,eAAe;YACzB9K,OAAO,EAAE,OAAO;YAChBgB,OAAO,EAAE,CACP;cACEH,GAAG,EAAE,cAAc;cACnBI,QAAQ,EAAE;YACZ,CAAC;UAEL,CAAC,EACD;YACEJ,GAAG,EAAE,cAAc;YACnBiK,QAAQ,EAAE,iBAAiB;YAC3B9K,OAAO,EAAE,OAAO;YAChBgB,OAAO,EAAE,CACP;cACEH,GAAG,EAAE,cAAc;cACnBI,QAAQ,EAAE;YACZ,CAAC;UAEL,CAAC;QAEL,CAAC;QAED2E,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;;QAEvB;QACA,MAAMgB,aAAa,GAAGf,aAAa,CAACgB,aAAa,CAC/C,iBACF,CAAgB;QAChB,MAAMc,GAAG,GAAG7M,IAAI,CAACqI,KAAK,CAACyD,aAAa,EAAE,kBAAkB,CAAC;;QAEzD;QACA9E,MAAM,CAAC,MAAM;UACX,IAAAM,QAAG,EAACyD,aAAa,EAAE,cAAc,CAAC;UAClC,IAAAzD,QAAG,EAACyD,aAAa,EAAE,cAAc,CAAC;UAClC,IAAAzD,QAAG,EAACmD,aAAa,EAAE,cAAc,CAAC;UAClC,IAAAnD,QAAG,EAACmD,aAAa,EAAE,cAAc,CAAC;QACpC,CAAC,CAAC,CAACb,GAAG,CAACiB,OAAO,CAAC,CAAC;;QAEhB;QACA7D,MAAM,CAAC6F,GAAG,CAAC,CAACtE,gBAAgB,CAAC,CAAC;MAChC,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFhH,QAAQ,CAAC,4BAA4B,EAAE,MAAM;MAC3CuF,EAAE,CAAC,gCAAgC,EAAE,MAAM;QACzC,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAElD,MAAMwM,MAAsB,GAAG;UAC7B/I,OAAO,EAAE;YACP,eAAe,EAAE;cACf6J,cAAc,EAAE;gBACdzI,IAAI,EAAE,QAAQ;gBACda,SAAS,EAAE,CAAC;kBAAEqJ,KAAK,EAAE;gBAAQ,CAAC,EAAE;kBAAEA,KAAK,EAAE;gBAAO,CAAC;cACnD,CAAC;cACD7K,QAAQ,EAAE;YACZ;UACF,CAAC;UACDb,YAAY,EAAE,CACZ;YACEC,GAAG,EAAE,eAAe;YACpBiK,QAAQ,EAAE,gBAAgB;YAC1B9K,OAAO,EAAE,OAAO;YAChBgB,OAAO,EAAE,CACP;cACEH,GAAG,EAAE,eAAe;cACpBiK,QAAQ,EAAE,sBAAsB;cAChC7J,QAAQ,EAAE;YACZ,CAAC;UAEL,CAAC;QAEL,CAAC;QAED2E,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;QAEvB,MAAM9B,mBAAmB,GAAGhJ,IAAI,CAACqI,KAAK,CACpC0C,aAAa,CAACgB,aAAa,CAAC,gBAAgB,CAAC,EAC7C,kBACF,CAAC;QAED,IAAAzE,QAAG,EAACyD,aAAa,EAAE,eAAe,CAAC;QACnC,IAAAzD,QAAG,EAACmD,aAAa,EAAE,eAAe,CAAC;QAEnC,MAAM6C,UAAU,GAAG7C,aAAa,CAACsB,aAAa,CAC5C,sBACF,CAAgB;QAEhB/E,MAAM,CAACgC,mBAAmB,CAAC,CAACH,oBAAoB,CAC9C,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;QAEDmH,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1CyE,UAAU,EACVtG,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CAAC,EAClBkJ,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;MAEF8F,EAAE,CAAC,mCAAmC,EAAE,MAAM;QAC5C;QACA,MAAMyG,cAAc,GAAGxC,aAAa,CAACgB,aAAa,CAChD,iBACF,CAAgB;QAChBwB,cAAc,CAACC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC;QACvDD,cAAc,CAACC,YAAY,CAAC,eAAe,EAAE,SAAS,CAAC;QAEvD,MAAM1C,MAAsB,GAAG;UAC7B/I,OAAO,EAAE;YACP,aAAa,EAAE;cACb6J,cAAc,EAAE;gBACdzI,IAAI,EAAE,MAAM;gBACZa,SAAS,EAAE,CACT;kBAAEyJ,eAAe,EAAE;gBAAQ,CAAC,EAC5B;kBAAEA,eAAe,EAAE;gBAAY,CAAC;cAEpC,CAAC;cACDjL,QAAQ,EAAE;YACZ;UACF,CAAC;UACDb,YAAY,EAAE,CACZ;YACEC,GAAG,EAAE,aAAa;YAClBiK,QAAQ,EAAE,oDAAoD;YAC9D9K,OAAO,EAAE,OAAO;YAChBgB,OAAO,EAAE,CACP;cACEH,GAAG,EAAE,aAAa;cAClBiK,QAAQ,EAAE,sBAAsB;cAChC7J,QAAQ,EAAE;YACZ,CAAC;UAEL,CAAC;QAEL,CAAC;QAED2E,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;;QAEvB;QACA,MAAM+B,GAAG,GAAG7M,IAAI,CAACqI,KAAK,CAACkF,cAAc,EAAE,kBAAkB,CAAC;QAE1D,IAAAjG,QAAG,EAACyD,aAAa,EAAE,aAAa,CAAC;QACjC,IAAAzD,QAAG,EAACmD,aAAa,EAAE,aAAa,CAAC;QAEjCzD,MAAM,CAAC6F,GAAG,CAAC,CAAChE,oBAAoB,CAC9B,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF0B,QAAQ,CAAC,mCAAmC,EAAE,MAAM;MAClDuF,EAAE,CAAC,wDAAwD,EAAE,MAAM;QACjE,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAElD,MAAMwM,MAAsB,GAAG;UAC7B/I,OAAO,EAAE;YACP,gBAAgB,EAAE;cAChB6J,cAAc,EAAE;gBACdzI,IAAI,EAAE,SAAS;gBACfa,SAAS,EAAE,CAAC;kBAAEf,OAAO,EAAE;gBAAI,CAAC,EAAE;kBAAEA,OAAO,EAAE;gBAAI,CAAC;cAChD,CAAC;cACDT,QAAQ,EAAE;YACZ;UACF,CAAC;UACDb,YAAY,EAAE,CACZ;YACEC,GAAG,EAAE,gBAAgB;YACrBiK,QAAQ,EAAE,iBAAiB;YAAE;YAC7B9K,OAAO,EAAE,OAAO;YAChBgB,OAAO,EAAE,CACP;cACEH,GAAG,EAAE,gBAAgB;cACrB;cACAI,QAAQ,EAAE;YACZ,CAAC;UAEL,CAAC;QAEL,CAAC;QAED2E,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;QAEvB,IAAAxD,QAAG,EAACyD,aAAa,EAAE,gBAAgB,CAAC;QACpC,IAAAzD,QAAG,EAACmD,aAAa,EAAE,gBAAgB,CAAC;;QAEpC;QACA,MAAMiD,gBAAgB,GAAGjD,aAAa,CAACS,iBAAgC;QAEvElE,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C6E,gBAAgB,EAChB1G,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CAAC,EAClBkJ,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFO,QAAQ,CAAC,kBAAkB,EAAE,MAAM;MACjCuF,EAAE,CAAC,uDAAuD,EAAE,MAAM;QAChE,MAAMgE,MAAsB,GAAG;UAC7B/I,OAAO,EAAE;YACP,gBAAgB,EAAE;cAChB6J,cAAc,EAAE;gBACdzI,IAAI,EAAE,SAAS;gBACfa,SAAS,EAAE,CAAC;kBAAEf,OAAO,EAAE;gBAAI,CAAC,EAAE;kBAAEA,OAAO,EAAE;gBAAI,CAAC;cAChD,CAAC;cACDT,QAAQ,EAAE;YACZ;UACF,CAAC;UACDb,YAAY,EAAE,CACZ;YACEC,GAAG,EAAE,gBAAgB;YACrBiK,QAAQ,EAAE,iBAAiB;YAC3B9K,OAAO,EAAE,OAAO;YAChBgB,OAAO,EAAE,CACP;cACEH,GAAG,EAAE,gBAAgB;cACrBiK,QAAQ,EAAE,mBAAmB;cAC7B7J,QAAQ,EAAE;YACZ,CAAC;UAEL,CAAC;QAEL,CAAC;QAED2E,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;QAEvB,MAAMgB,aAAa,GAAGf,aAAa,CAACgB,aAAa,CAC/C,iBACF,CAAgB;QAChB,MAAMpB,sBAAsB,GAAG3K,IAAI,CAACqI,KAAK,CACvCyD,aAAa,EACb,qBACF,CAAC;QAED,IAAAxE,QAAG,EAACyD,aAAa,EAAE,gBAAgB,CAAC;QACpC,IAAAzD,QAAG,EAACmD,aAAa,EAAE,gBAAgB,CAAC;QAEpC,IAAAG,cAAM,EAAC,gBAAgB,CAAC;;QAExB;QACA5D,MAAM,CAAC2D,sBAAsB,CAAC,CAAC9B,oBAAoB,CACjD,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CACrB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF3H,QAAQ,CAAC,iBAAiB,EAAE,MAAM;IAChCuF,EAAE,CAAC,6EAA6E,EAAE,MAAM;MACtF,MAAM6G,kBAAkB,GAAG,sBAAsB;MACjD,IAAArG,QAAG,EAAC9F,OAAO,EAAEmM,kBAAkB,CAAC;MAEhC3G,MAAM,CAACL,kBAAQ,CAACmB,YAAY,CAACtI,GAAG,CAACmO,kBAAkB,CAAC,CAAC,CAACjG,IAAI,CAAC,IAAI,CAAC;MAChEV,MAAM,CAACL,kBAAQ,CAACmB,YAAY,CAACrI,GAAG,CAACkO,kBAAkB,CAAC,CAAC,CAACjG,IAAI,CAAClG,OAAO,CAAC;IACrE,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFD,QAAQ,CAAC,OAAO,EAAE,MAAM;IACtBkF,SAAS,CAAC,MAAM;MACdE,kBAAQ,CAACiH,KAAK,CAAC;QACbC,mBAAmB,EAAEA,CAAA,MAAO,CAAC,CAAC,CAAC;QAC/BC,oBAAoB,EAAEA,CAAA,MAAO,CAAC,CAAC;MACjC,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFhH,EAAE,CAAC,uCAAuC,EAAE,MAAM;MAChD,MAAM+G,mBAAmB,GAAG7N,IAAI,CAACG,EAAE,CAAC,CAAC,CAACC,eAAe,CAAC,CAAC,CAAC,CAAC;MACzD,MAAMyM,GAAG,GAAG7M,IAAI,CAACqI,KAAK,CACpB0F,iBAA6B,CAACC,YAAY,EAC1C,uBACF,CAAC;MAEDrH,kBAAQ,CAACiH,KAAK,CAAC;QAAEC;MAAoB,CAAC,CAAC;MAEvC7G,MAAM,CAAC6F,GAAG,CAAC,CAAChE,oBAAoB,CAACgF,mBAAmB,CAAC;IACvD,CAAC,CAAC;IAEF/G,EAAE,CAAC,wCAAwC,EAAE,MAAM;MACjD,MAAMgH,oBAAoB,GAAG9N,IAAI,CAACG,EAAE,CAAC,CAAC,CAACC,eAAe,CAAC,CAAC,CAAC,CAAC;MAC1D,MAAMyM,GAAG,GAAG7M,IAAI,CAACqI,KAAK,CACpB0F,iBAA6B,CAACE,WAAW,EACzC,uBACF,CAAC;MAEDtH,kBAAQ,CAACiH,KAAK,CAAC;QAAEE;MAAqB,CAAC,CAAC;MAExC9G,MAAM,CAAC6F,GAAG,CAAC,CAAChE,oBAAoB,CAACiF,oBAAoB,CAAC;IACxD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFvM,QAAQ,CAAC,4BAA4B,EAAE,MAAM;IAC3C,IAAI2M,WAA6B;IAEjC,SAASC,aAAaA,CAACpN,OAAoB,EAAEa,GAAW,EAAkB;MACxE,OAAO;QACLD,YAAY,EAAE,CACZ;UACEZ,OAAO;UACPa,GAAG;UACHG,OAAO,EAAE,CAAC;YAAEC,QAAQ,EAAE;UAAc,CAAC;QACvC,CAAC,CACF;QACDD,OAAO,EAAE;UACP,aAAa,EAAE;YACbK,WAAW,EAAE;cAAEF,IAAI,EAAE,UAAU;cAAEI,KAAK,EAAE;YAAS,CAAgB;YACjEE,QAAQ,EAAE;UACZ;QACF;MACF,CAAC;IACH;IAEAiE,SAAS,CAAC,MAAM;MACdE,kBAAQ,CAACxF,OAAO,CAAC,CAAC;IACpB,CAAC,CAAC;IAEFI,QAAQ,CAAC,kBAAkB,EAAE,MAAM;MACjCuF,EAAE,CAAC,6CAA6C,EAAE,MAAM;QACtDH,kBAAQ,CAACI,MAAM,CAACoH,aAAa,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAC1DD,WAAW,GAAGzK,QAAQ,CAACC,aAAa,CAClC,kBACF,CAAqB;QAErB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzCwK,WAAW,CAACtK,MAAM,CAACD,GAAG,CAAC;QAEvB,MAAMqF,mBAAmB,GAAGhJ,IAAI,CAACqI,KAAK,CAAC1E,GAAG,EAAE,kBAAkB,CAAC;QAE/D,IAAA2D,QAAG,EAAC4G,WAAW,EAAE,cAAc,CAAC;QAEhClH,MAAM,CAACgC,mBAAmB,CAAC,CAACH,oBAAoB,CAC9C,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;QACDmH,MAAM,CAACgC,mBAAmB,CAAC,CAACH,oBAAoB,CAC9C,SAAS,EACT7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;MACH,CAAC,CAAC;MAEFiH,EAAE,CAAC,6EAA6E,EAAE,MAAM;QACtF,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAClD,MAAM8P,QAAQ,GAAGlO,eAAe,CAAC,CAAC,CAACG,IAAI;QACvC+N,QAAQ,CAACC,SAAS,CAAC,CAAC;QAEpB1H,kBAAQ,CAACI,MAAM,CAACoH,aAAa,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;QACnED,WAAW,GAAGzK,QAAQ,CAACC,aAAa,CAClC,kBACF,CAAqB;QAErB,MAAM4K,MAAM,GAAG7K,QAAQ,CAACC,aAAa,CAAC,QAAQ,CAAC;QAC/CwK,WAAW,CAACtK,MAAM,CAAC0K,MAAM,CAAC;QAE1B,IAAAhH,QAAG,EAAC4G,WAAW,EAAE,uBAAuB,CAAC;;QAEzC;QACAI,MAAM,CAACvI,aAAa,CAClB,IAAIwI,aAAa,CAAC,SAAS,EAAE;UAAEC,IAAI,EAAE,OAAO;UAAEC,OAAO,EAAE;QAAK,CAAC,CAC/D,CAAC;QACDH,MAAM,CAACvI,aAAa,CAAC,IAAIjB,UAAU,CAAC,OAAO,EAAE;UAAE2J,OAAO,EAAE;QAAK,CAAC,CAAC,CAAC;QAEhEzH,MAAM,CAACoH,QAAQ,CAAC,CAACnF,qBAAqB,CAAC,CAAC,CAAC;MAC3C,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF1H,QAAQ,CAAC,kBAAkB,EAAE,MAAM;MACjCuF,EAAE,CAAC,kDAAkD,EAAE,MAAM;QAC3DH,kBAAQ,CAACI,MAAM,CAACoH,aAAa,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAC3DD,WAAW,GAAGzK,QAAQ,CAACC,aAAa,CAClC,kBACF,CAAqB;QAErB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzCwK,WAAW,CAACtK,MAAM,CAACD,GAAG,CAAC;QAEvB,MAAMqF,mBAAmB,GAAGhJ,IAAI,CAACqI,KAAK,CAAC1E,GAAG,EAAE,kBAAkB,CAAC;QAE/D,IAAA2D,QAAG,EAAC4G,WAAW,EAAE,eAAe,CAAC;QAEjClH,MAAM,CAACgC,mBAAmB,CAAC,CAACH,oBAAoB,CAC9C,YAAY,EACZ7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;QACDmH,MAAM,CAACgC,mBAAmB,CAAC,CAACH,oBAAoB,CAC9C,SAAS,EACT7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF0B,QAAQ,CAAC,2CAA2C,EAAE,MAAM;MAC1DuF,EAAE,CAAC,oDAAoD,EAAE,MAAM;QAC7DH,kBAAQ,CAACI,MAAM,CAACoH,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACxDxH,kBAAQ,CAACiH,KAAK,CAAC;UAAE/G,iBAAiB,EAAE;QAAM,CAAC,CAAC;QAC5CqH,WAAW,GAAGzK,QAAQ,CAACC,aAAa,CAClC,kBACF,CAAqB;QAErB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzCwK,WAAW,CAACtK,MAAM,CAACD,GAAG,CAAC;QAEvB,MAAMqF,mBAAmB,GAAGhJ,IAAI,CAACqI,KAAK,CAAC1E,GAAG,EAAE,kBAAkB,CAAC;QAE/D,IAAA2D,QAAG,EAAC4G,WAAW,EAAE,eAAe,CAAC;QAEjClH,MAAM,CAACgC,mBAAmB,CAAC,CAACH,oBAAoB,CAC9C,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;QACDmH,MAAM,CAACgC,mBAAmB,CAAC,CAACY,GAAG,CAACf,oBAAoB,CAClD,SAAS,EACT7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;MACH,CAAC,CAAC;MAEFiH,EAAE,CAAC,+CAA+C,EAAE,MAAM;QACxDH,kBAAQ,CAACiH,KAAK,CAAC;UAAE/G,iBAAiB,EAAE;QAAK,CAAC,CAAC;QAC3CF,kBAAQ,CAACI,MAAM,CAACoH,aAAa,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAC1DD,WAAW,GAAGzK,QAAQ,CAACC,aAAa,CAClC,kBACF,CAAqB;QAErB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzCwK,WAAW,CAACtK,MAAM,CAACD,GAAG,CAAC;QAEvB,MAAMqF,mBAAmB,GAAGhJ,IAAI,CAACqI,KAAK,CAAC1E,GAAG,EAAE,kBAAkB,CAAC;QAE/D,IAAA2D,QAAG,EAAC4G,WAAW,EAAE,iBAAiB,CAAC;QAEnClH,MAAM,CAACgC,mBAAmB,CAAC,CAACH,oBAAoB,CAC9C,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;QACDmH,MAAM,CAACgC,mBAAmB,CAAC,CAACH,oBAAoB,CAC9C,SAAS,EACT7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF0B,QAAQ,CAAC,2CAA2C,EAAE,MAAM;MAC1DuF,EAAE,CAAC,oDAAoD,EAAE,MAAM;QAC7DH,kBAAQ,CAACiH,KAAK,CAAC;UAAE/G,iBAAiB,EAAE;QAAM,CAAC,CAAC;QAC5CF,kBAAQ,CAACI,MAAM,CAACoH,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACxDD,WAAW,GAAGzK,QAAQ,CAACC,aAAa,CAClC,kBACF,CAAqB;QAErB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzCwK,WAAW,CAACtK,MAAM,CAACD,GAAG,CAAC;QAEvB,MAAMqF,mBAAmB,GAAGhJ,IAAI,CAACqI,KAAK,CAAC1E,GAAG,EAAE,kBAAkB,CAAC;QAE/D,IAAA2D,QAAG,EAAC4G,WAAW,EAAE,eAAe,CAAC;QAEjClH,MAAM,CAACgC,mBAAmB,CAAC,CAACH,oBAAoB,CAC9C,YAAY,EACZ7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;QACDmH,MAAM,CAACgC,mBAAmB,CAAC,CAACY,GAAG,CAACf,oBAAoB,CAClD,SAAS,EACT7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;MACH,CAAC,CAAC;MAEFiH,EAAE,CAAC,+CAA+C,EAAE,MAAM;QACxDH,kBAAQ,CAACiH,KAAK,CAAC;UAAE/G,iBAAiB,EAAE;QAAK,CAAC,CAAC;QAC3CF,kBAAQ,CAACI,MAAM,CAACoH,aAAa,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAC1DD,WAAW,GAAGzK,QAAQ,CAACC,aAAa,CAClC,kBACF,CAAqB;QAErB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QACzCwK,WAAW,CAACtK,MAAM,CAACD,GAAG,CAAC;QAEvB,MAAMqF,mBAAmB,GAAGhJ,IAAI,CAACqI,KAAK,CAAC1E,GAAG,EAAE,kBAAkB,CAAC;QAE/D,IAAA2D,QAAG,EAAC4G,WAAW,EAAE,iBAAiB,CAAC;QAEnClH,MAAM,CAACgC,mBAAmB,CAAC,CAACH,oBAAoB,CAC9C,YAAY,EACZ7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;QACDmH,MAAM,CAACgC,mBAAmB,CAAC,CAACH,oBAAoB,CAC9C,SAAS,EACT7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EACF0B,QAAQ,CAAC,yBAAyB,EAAE,MAAM;IACxCuF,EAAE,CAAC,0EAA0E,EAAE,YAAY;MACzF,MAAMgE,MAAsB,GAAG;QAC7B3E,UAAU,EAAE;UACVuI,MAAM,EAAE;YACNxM,IAAI,EAAE,UAAU;YAChBoE,SAAS,EAAE;UACb;QACF,CAAC;QACD3E,YAAY,EAAE,CACZ;UACEZ,OAAO,EAAE,OAAO;UAChBa,GAAG,EAAE,eAAe;UACpBG,OAAO,EAAE,CACP;YACEH,GAAG,EAAE,eAAe;YACpBI,QAAQ,EAAE,aAAa;YACvBmE,UAAU,EAAE,CAAC,QAAQ;UACvB,CAAC;QAEL,CAAC,CACF;QACDpE,OAAO,EAAE;UACP,aAAa,EAAE;YACbK,WAAW,EAAE;cACXF,IAAI,EAAE,QAAQ;cACdI,KAAK,EAAE;YACT,CAAgB;YAChBE,QAAQ,EAAE;UACZ;QACF;MACF,CAAC;MAEDmE,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;MAEvB,MAAM6D,WAAW,GAAGlL,QAAQ,CAACC,aAAa,CACxC,kBACF,CAAqB;MACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;MACzCiL,WAAW,CAAC/K,MAAM,CAACD,GAAG,CAAC;MAEvB,IAAA2D,QAAG,EAACqH,WAAW,EAAE,eAAe,CAAC;;MAEjC;MACA;MACA,MAAM;QAAEzO;MAAgB,CAAC,GAAG,MAAA0O,OAAA,CAAAC,OAAA,GAAAC,IAAA,OAAAlQ,uBAAA,CAAAN,OAAA,CAAa,aAAa,GAAC;MACvD0I,MAAM,CAAC9G,eAAe,CAAC,CAACqI,gBAAgB,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEFzB,EAAE,CAAC,8EAA8E,EAAE,YAAY;MAC7F,MAAM;QAAE5G;MAAgB,CAAC,GAAG,MAAA0O,OAAA,CAAAC,OAAA,GAAAC,IAAA,OAAAlQ,uBAAA,CAAAN,OAAA,CAAa,aAAa,GAAC;MACvD,MAAMyQ,aAAa,GAAG;QACpB1O,IAAI,EAAEL,IAAI,CAACG,EAAE,CAAC,CAAC;QACfG,MAAM,EAAEN,IAAI,CAACG,EAAE,CAAC,CAAC;QACjBI,QAAQ,EAAEP,IAAI,CAACG,EAAE,CAAC,CAAC;QACnB6O,OAAO,EAAEhP,IAAI,CAACG,EAAE,CAAC,CAAC;QAClB8O,QAAQ,EAAEjP,IAAI,CAACG,EAAE,CAAC,CAAC;QACnB+O,SAAS,EAAE,MAAM;QACjBC,KAAK,EAAE;MACT,CAAC;MACAjP,eAAe,CAASE,eAAe,CAAC2O,aAAa,CAAC;MAEvD,MAAMjE,MAAsB,GAAG;QAC7B3E,UAAU,EAAE;UACVuI,MAAM,EAAE;YACNxM,IAAI,EAAE,UAAU;YAChBoE,SAAS,EAAE;UACb;QACF,CAAC;QACD3E,YAAY,EAAE,CACZ;UACEZ,OAAO,EAAE,OAAO;UAChBa,GAAG,EAAE,oBAAoB;UACzBG,OAAO,EAAE,CACP;YACEH,GAAG,EAAE,oBAAoB;YACzBI,QAAQ,EAAE,aAAa;YACvBmE,UAAU,EAAE,CAAC,QAAQ;UACvB,CAAC;QAEL,CAAC,CACF;QACDpE,OAAO,EAAE;UACP,aAAa,EAAE;YACbK,WAAW,EAAE;cACXF,IAAI,EAAE,QAAQ;cACdI,KAAK,EAAE;YACT,CAAgB;YAChBE,QAAQ,EAAE;UACZ;QACF;MACF,CAAC;MAEDmE,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;MAEvB,MAAM6D,WAAW,GAAGlL,QAAQ,CAACC,aAAa,CACxC,kBACF,CAAqB;MACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;MACzC;MACAiL,WAAW,CAAC/K,MAAM,CAACD,GAAG,CAAC;MAEvB,IAAA2D,QAAG,EAACqH,WAAW,EAAE,oBAAoB,CAAC;;MAEtC;MACA;MACAhL,GAAG,CAACoC,aAAa,CACf,IAAIlB,YAAY,CAAC,OAAO,EAAE;QAAE4J,OAAO,EAAE,IAAI;QAAEzJ,WAAW,EAAE;MAAQ,CAAC,CACnE,CAAC;MAEDgC,MAAM,CAAC+H,aAAa,CAAC1O,IAAI,CAAC,CAACuJ,GAAG,CAACrB,gBAAgB,CAAC,CAAC;IACnD,CAAC,CAAC;IAEFzB,EAAE,CAAC,gEAAgE,EAAE,YAAY;MAC/E,MAAM;QAAE5G;MAAgB,CAAC,GAAG,MAAA0O,OAAA,CAAAC,OAAA,GAAAC,IAAA,OAAAlQ,uBAAA,CAAAN,OAAA,CAAa,aAAa,GAAC;MACvD,MAAMyQ,aAAa,GAAG;QACpB1O,IAAI,EAAEL,IAAI,CAACG,EAAE,CAAC,CAAC;QACfG,MAAM,EAAEN,IAAI,CAACG,EAAE,CAAC,CAAC;QACjBI,QAAQ,EAAEP,IAAI,CAACG,EAAE,CAAC,CAAC;QACnB6O,OAAO,EAAEhP,IAAI,CAACG,EAAE,CAAC,CAAC;QAClB8O,QAAQ,EAAEjP,IAAI,CAACG,EAAE,CAAC,CAAC;QACnB+O,SAAS,EAAE,MAAM;QACjBC,KAAK,EAAE;MACT,CAAC;MACAjP,eAAe,CAASE,eAAe,CAAC2O,aAAa,CAAC;MAEvD,MAAMjE,MAAsB,GAAG;QAC7B3E,UAAU,EAAE;UACVuI,MAAM,EAAE;YACNxM,IAAI,EAAE,UAAU;YAChBoE,SAAS,EAAE;UACb;QACF,CAAC;QACD3E,YAAY,EAAE,CACZ;UACEZ,OAAO,EAAE,OAAO;UAChBa,GAAG,EAAE,qBAAqB;UAC1BG,OAAO,EAAE,CACP;YACEH,GAAG,EAAE,qBAAqB;YAC1BI,QAAQ,EAAE,cAAc;YACxBmE,UAAU,EAAE,CAAC,QAAQ;UACvB,CAAC;QAEL,CAAC,CACF;QACDpE,OAAO,EAAE;UACP,cAAc,EAAE;YACdK,WAAW,EAAE;cACXF,IAAI,EAAE,QAAQ;cACdI,KAAK,EAAE;YACT,CAAgB;YAChBE,QAAQ,EAAE;UACZ;QACF;MACF,CAAC;MAEDmE,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;MAEvB,MAAM6D,WAAW,GAAGlL,QAAQ,CAACC,aAAa,CACxC,kBACF,CAAqB;MACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;MACzCC,GAAG,CAACyL,SAAS,CAAC9H,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;MAC7BqH,WAAW,CAAC/K,MAAM,CAACD,GAAG,CAAC;MAEvB,IAAA2D,QAAG,EAACqH,WAAW,EAAE,qBAAqB,CAAC;;MAEvC;MACA;MACAhL,GAAG,CAACoC,aAAa,CACf,IAAIlB,YAAY,CAAC,OAAO,EAAE;QAAE4J,OAAO,EAAE,IAAI;QAAEzJ,WAAW,EAAE;MAAQ,CAAC,CACnE,CAAC;MAEDgC,MAAM,CAAC+H,aAAa,CAAC1O,IAAI,CAAC,CAACkI,gBAAgB,CAAC,CAAC;IAC/C,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFhH,QAAQ,CAAC,+BAA+B,EAAE,MAAM;IAC9C,SAAS8N,QAAQA,CAAA,EAAoC;MACnD,MAAMC,EAAE,GAAG7L,QAAQ,CAACC,aAAa,CAC/B,kBACF,CAAqB;MACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;MACzC4L,EAAE,CAAC1L,MAAM,CAACD,GAAG,CAAC;MACd,OAAO,CAAC2L,EAAE,EAAE3L,GAAG,CAAC;IAClB;IAEApC,QAAQ,CAAC,8DAA8D,EAAE,MAAM;MAC7E,MAAMgO,SAAS,GAAGA,CAAA,MAAuB;QACvC5N,YAAY,EAAE,CACZ;UACEZ,OAAO,EAAE,OAAO;UAChBa,GAAG,EAAE,OAAO;UACZG,OAAO,EAAE,CAAC;YAAEH,GAAG,EAAE,OAAO;YAAEI,QAAQ,EAAE;UAAa,CAAC;QACpD,CAAC,CACF;QACDD,OAAO,EAAE;UACP,YAAY,EAAE;YACZK,WAAW,EAAE;cACXF,IAAI,EAAE,QAAQ;cACdI,KAAK,EAAE;YACT,CAAgB;YAChBE,QAAQ,EAAE;UACZ;QACF;MACF,CAAC,CAAC;MAEFsE,EAAE,CAAC,kEAAkE,EAAE,MAAM;QAC3E,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAClDqI,kBAAQ,CAACI,MAAM,CAACwI,SAAS,CAAC,CAAC,CAAC;QAE5B,MAAM,CAACC,MAAM,EAAEC,OAAO,CAAC,GAAGJ,QAAQ,CAAC,CAAC;QACpC,MAAM,CAACK,MAAM,EAAEC,OAAO,CAAC,GAAGN,QAAQ,CAAC,CAAC;QACpC,MAAM,CAACO,MAAM,EAAEC,OAAO,CAAC,GAAGR,QAAQ,CAAC,CAAC;QACpC,MAAM,CAACS,MAAM,EAAEC,OAAO,CAAC,GAAGV,QAAQ,CAAC,CAAC;QAEpC,MAAMW,OAAO,GAAGhQ,IAAI,CAACqI,KAAK,CAACoH,OAAO,EAAE,kBAAkB,CAAC;QACvD,MAAMQ,OAAO,GAAGjQ,IAAI,CAACqI,KAAK,CAACwH,OAAO,EAAE,kBAAkB,CAAC;QAEvD,IAAAvI,QAAG,EAACkI,MAAM,EAAE,QAAQ,CAAC;QACrB,IAAAlI,QAAG,EAACoI,MAAM,EAAE,QAAQ,CAAC;QACrB,IAAApI,QAAG,EAACsI,MAAM,EAAE,QAAQ,CAAC;QACrB,IAAAtI,QAAG,EAACwI,MAAM,EAAE,QAAQ,CAAC;QAErB9I,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C8G,OAAO,EACP3I,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAS,CAAC;QACzD,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;QACDgG,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1CkH,OAAO,EACP/I,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAS,CAAC;QACzD,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;QAEDgG,MAAM,CAACgJ,OAAO,CAAC,CAACnH,oBAAoB,CAClC,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;QACDmH,MAAM,CAACiJ,OAAO,CAAC,CAACpH,oBAAoB,CAClC,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;MACH,CAAC,CAAC;MAEFiH,EAAE,CAAC,iEAAiE,EAAE,MAAM;QAC1E,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAClDqI,kBAAQ,CAACI,MAAM,CAACwI,SAAS,CAAC,CAAC,CAAC;QAE5B,MAAM,CAACC,MAAM,CAAC,GAAGH,QAAQ,CAAC,CAAC;QAC3B,MAAM,CAACS,MAAM,CAAC,GAAGT,QAAQ,CAAC,CAAC;QAE3B,IAAA/H,QAAG,EAACkI,MAAM,EAAE,QAAQ,CAAC;QACrB,IAAAlI,QAAG,EAACwI,MAAM,EAAE,QAAQ,CAAC;QAErB9I,MAAM,CAAC9G,eAAe,CAAC,CAAC0J,GAAG,CAACrB,gBAAgB,CAAC,CAAC;MAChD,CAAC,CAAC;MAEFzB,EAAE,CAAC,mDAAmD,EAAE,MAAM;QAC5D,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAClDqI,kBAAQ,CAACI,MAAM,CAACwI,SAAS,CAAC,CAAC,CAAC;QAE5B,MAAM,CAACC,MAAM,CAAC,GAAGH,QAAQ,CAAC,CAAC;QAC3B,MAAM,CAACK,MAAM,EAAEC,OAAO,CAAC,GAAGN,QAAQ,CAAC,CAAC;QAEpC,IAAA/H,QAAG,EAACoI,MAAM,EAAE,QAAQ,CAAC;QACrB,IAAApI,QAAG,EAACkI,MAAM,EAAE,QAAQ,CAAC;QAErBxI,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C8G,OAAO,EACP3I,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAS,CAAC;QACzD,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFO,QAAQ,CAAC,kEAAkE,EAAE,MAAM;MACjF,MAAMgO,SAAS,GAAGA,CAAA,MAAuB;QACvC5N,YAAY,EAAE,CACZ;UACEZ,OAAO,EAAE,OAAO;UAChBa,GAAG,EAAE,OAAO;UACZG,OAAO,EAAE,CACP;YAAEH,GAAG,EAAE,SAAS;YAAEI,QAAQ,EAAE;UAAe,CAAC,EAC5C;YAAEJ,GAAG,EAAE,SAAS;YAAEI,QAAQ,EAAE;UAAe,CAAC;QAEhD,CAAC,CACF;QACDD,OAAO,EAAE;UACP,cAAc,EAAE;YACdK,WAAW,EAAE;cACXF,IAAI,EAAE,QAAQ;cACdI,KAAK,EAAE;YACT,CAAgB;YAChBE,QAAQ,EAAE;UACZ,CAAC;UACD,cAAc,EAAE;YACdJ,WAAW,EAAE;cACXF,IAAI,EAAE,UAAU;cAChBI,KAAK,EAAE,MAAM;cACbD,SAAS,EAAE;YACb,CAAgB;YAChBG,QAAQ,EAAE;UACZ;QACF;MACF,CAAC,CAAC;MAEFsE,EAAE,CAAC,8DAA8D,EAAE,MAAM;QACvE,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAClDqI,kBAAQ,CAACI,MAAM,CAACwI,SAAS,CAAC,CAAC,CAAC;QAE5B,MAAM,CAACC,MAAM,EAAEC,OAAO,CAAC,GAAGJ,QAAQ,CAAC,CAAC;QACpC,MAAM,CAACa,OAAO,EAAEC,QAAQ,CAAC,GAAGd,QAAQ,CAAC,CAAC;QACtC,MAAM,CAACe,OAAO,EAAEC,QAAQ,CAAC,GAAGhB,QAAQ,CAAC,CAAC;QAEtC,MAAMiB,MAAM,GAAGtQ,IAAI,CAACqI,KAAK,CAACoH,OAAO,EAAE,kBAAkB,CAAC;QAEtD,IAAAnI,QAAG,EAACkI,MAAM,EAAE,QAAQ,CAAC;QACrB,IAAAlI,QAAG,EAAC4I,OAAO,EAAE,UAAU,CAAC;QACxB,IAAA5I,QAAG,EAAC8I,OAAO,EAAE,UAAU,CAAC;QAExBpJ,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1CsH,QAAQ,EACRnJ,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAS,CAAC;QACzD,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;QACDgG,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1CwH,QAAQ,EACRrJ,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAW,CAAC;QAC3D,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;QAEDgG,MAAM,CAACsJ,MAAM,CAAC,CAACzH,oBAAoB,CACjC,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;MACH,CAAC,CAAC;MAEFiH,EAAE,CAAC,mEAAmE,EAAE,MAAM;QAC5E,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAClDqI,kBAAQ,CAACI,MAAM,CAACwI,SAAS,CAAC,CAAC,CAAC;QAE5B,MAAM,CAACC,MAAM,CAAC,GAAGH,QAAQ,CAAC,CAAC;QAC3B,MAAM,CAACO,MAAM,CAAC,GAAGP,QAAQ,CAAC,CAAC;QAC3B,MAAM,CAACa,OAAO,EAAEC,QAAQ,CAAC,GAAGd,QAAQ,CAAC,CAAC;QACtC,MAAM,CAACe,OAAO,EAAEC,QAAQ,CAAC,GAAGhB,QAAQ,CAAC,CAAC;QACtC,MAAM,CAACkB,OAAO,EAAEC,QAAQ,CAAC,GAAGnB,QAAQ,CAAC,CAAC;QACtC,MAAM,CAACoB,OAAO,EAAEC,QAAQ,CAAC,GAAGrB,QAAQ,CAAC,CAAC;QAEtC,IAAA/H,QAAG,EAACkI,MAAM,EAAE,QAAQ,CAAC;QACrB,IAAAlI,QAAG,EAACsI,MAAM,EAAE,QAAQ,CAAC;QACrB,IAAAtI,QAAG,EAAC4I,OAAO,EAAE,UAAU,CAAC;QACxB,IAAA5I,QAAG,EAAC8I,OAAO,EAAE,UAAU,CAAC;QACxB,IAAA9I,QAAG,EAACiJ,OAAO,EAAE,UAAU,CAAC;QACxB,IAAAjJ,QAAG,EAACmJ,OAAO,EAAE,UAAU,CAAC;QAExBzJ,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1CsH,QAAQ,EACRnJ,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAS,CAAC;QACzD,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;QACDgG,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1CwH,QAAQ,EACRrJ,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAW,CAAC;QAC3D,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;QACDgG,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C2H,QAAQ,EACRxJ,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAS,CAAC;QACzD,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;QACDgG,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C6H,QAAQ,EACR1J,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAW,CAAC;QAC3D,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFO,QAAQ,CAAC,kEAAkE,EAAE,MAAM;MACjF,MAAMgO,SAAS,GAAGA,CAAA,MAAuB;QACvC5N,YAAY,EAAE,CACZ;UACEZ,OAAO,EAAE,OAAO;UAChBa,GAAG,EAAE,SAAS;UACdG,OAAO,EAAE,CAAC;YAAEH,GAAG,EAAE,OAAO;YAAEI,QAAQ,EAAE;UAAe,CAAC;QACtD,CAAC,EACD;UACEjB,OAAO,EAAE,OAAO;UAChBa,GAAG,EAAE,SAAS;UACdG,OAAO,EAAE,CAAC;YAAEH,GAAG,EAAE,OAAO;YAAEI,QAAQ,EAAE;UAAe,CAAC;QACtD,CAAC,CACF;QACDD,OAAO,EAAE;UACP,cAAc,EAAE;YACdK,WAAW,EAAE;cACXF,IAAI,EAAE,QAAQ;cACdI,KAAK,EAAE;YACT,CAAgB;YAChBE,QAAQ,EAAE;UACZ,CAAC;UACD,cAAc,EAAE;YACdJ,WAAW,EAAE;cACXF,IAAI,EAAE,UAAU;cAChBI,KAAK,EAAE,MAAM;cACbD,SAAS,EAAE;YACb,CAAgB;YAChBG,QAAQ,EAAE;UACZ;QACF;MACF,CAAC,CAAC;MAEFsE,EAAE,CAAC,sEAAsE,EAAE,MAAM;QAC/E,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAClDqI,kBAAQ,CAACI,MAAM,CAACwI,SAAS,CAAC,CAAC,CAAC;QAE5B,MAAM,CAACoB,OAAO,EAAEC,QAAQ,CAAC,GAAGvB,QAAQ,CAAC,CAAC;QACtC,MAAM,CAACwB,OAAO,EAAEC,QAAQ,CAAC,GAAGzB,QAAQ,CAAC,CAAC;QACtC,MAAM,CAACK,MAAM,EAAEC,OAAO,CAAC,GAAGN,QAAQ,CAAC,CAAC;QAEpC,MAAM0B,OAAO,GAAG/Q,IAAI,CAACqI,KAAK,CAACuI,QAAQ,EAAE,kBAAkB,CAAC;QACxD,MAAMI,OAAO,GAAGhR,IAAI,CAACqI,KAAK,CAACyI,QAAQ,EAAE,kBAAkB,CAAC;QAExD,IAAAxJ,QAAG,EAACqJ,OAAO,EAAE,UAAU,CAAC;QACxB,IAAArJ,QAAG,EAACuJ,OAAO,EAAE,UAAU,CAAC;QACxB,IAAAvJ,QAAG,EAACoI,MAAM,EAAE,QAAQ,CAAC;QAErB1I,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAChDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C8G,OAAO,EACP3I,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAS,CAAC;QACzD,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;QACDgG,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C8G,OAAO,EACP3I,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAW,CAAC;QAC3D,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;QAEDgG,MAAM,CAAC+J,OAAO,CAAC,CAAClI,oBAAoB,CAClC,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;QACDmH,MAAM,CAACgK,OAAO,CAAC,CAACnI,oBAAoB,CAClC,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;MACH,CAAC,CAAC;MAEFiH,EAAE,CAAC,2CAA2C,EAAE,MAAM;QACpD,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAClDqI,kBAAQ,CAACI,MAAM,CAACwI,SAAS,CAAC,CAAC,CAAC;QAE5B,MAAM,CAACoB,OAAO,CAAC,GAAGtB,QAAQ,CAAC,CAAC;QAC5B,MAAM,CAACwB,OAAO,CAAC,GAAGxB,QAAQ,CAAC,CAAC;QAC5B,MAAM,CAACK,MAAM,EAAEC,OAAO,CAAC,GAAGN,QAAQ,CAAC,CAAC;QACpC,MAAM,CAAC4B,OAAO,CAAC,GAAG5B,QAAQ,CAAC,CAAC;QAC5B,MAAM,CAAC6B,OAAO,CAAC,GAAG7B,QAAQ,CAAC,CAAC;QAC5B,MAAM,CAACS,MAAM,EAAEC,OAAO,CAAC,GAAGV,QAAQ,CAAC,CAAC;QAEpC,IAAA/H,QAAG,EAACqJ,OAAO,EAAE,UAAU,CAAC;QACxB,IAAArJ,QAAG,EAACuJ,OAAO,EAAE,UAAU,CAAC;QACxB,IAAAvJ,QAAG,EAACoI,MAAM,EAAE,QAAQ,CAAC;QACrB,IAAApI,QAAG,EAAC2J,OAAO,EAAE,UAAU,CAAC;QACxB,IAAA3J,QAAG,EAAC4J,OAAO,EAAE,UAAU,CAAC;QACxB,IAAA5J,QAAG,EAACwI,MAAM,EAAE,QAAQ,CAAC;QAErB9I,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAEhDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C8G,OAAO,EACP3I,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAS,CAAC;QACzD,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;QACDgG,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C8G,OAAO,EACP3I,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAW,CAAC;QAC3D,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;QACDgG,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1CkH,OAAO,EACP/I,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAS,CAAC;QACzD,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;QACDgG,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1CkH,OAAO,EACP/I,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAW,CAAC;QAC3D,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFO,QAAQ,CAAC,sEAAsE,EAAE,MAAM;MACrF,MAAMgO,SAAS,GAAGA,CAAA,MAAuB;QACvC5N,YAAY,EAAE,CACZ;UACEZ,OAAO,EAAE,OAAO;UAChBa,GAAG,EAAE,SAAS;UACdG,OAAO,EAAE,CACP;YAAEH,GAAG,EAAE,SAAS;YAAEI,QAAQ,EAAE;UAAS,CAAC,EACtC;YAAEJ,GAAG,EAAE,SAAS;YAAEI,QAAQ,EAAE;UAAS,CAAC;QAE1C,CAAC,EACD;UACEjB,OAAO,EAAE,OAAO;UAChBa,GAAG,EAAE,SAAS;UACdG,OAAO,EAAE,CACP;YAAEH,GAAG,EAAE,SAAS;YAAEI,QAAQ,EAAE;UAAS,CAAC,EACtC;YAAEJ,GAAG,EAAE,SAAS;YAAEI,QAAQ,EAAE;UAAS,CAAC;QAE1C,CAAC,CACF;QACDD,OAAO,EAAE;UACP,QAAQ,EAAE;YACRK,WAAW,EAAE;cACXF,IAAI,EAAE,QAAQ;cACdI,KAAK,EAAE;YACT,CAAgB;YAChBE,QAAQ,EAAE;UACZ,CAAC;UACD,QAAQ,EAAE;YACRJ,WAAW,EAAE;cACXF,IAAI,EAAE,SAAS;cACfG,SAAS,EAAE,MAAM;cACjBC,KAAK,EAAE;YACT,CAAgB;YAChBE,QAAQ,EAAE;UACZ,CAAC;UACD,QAAQ,EAAE;YACRJ,WAAW,EAAE;cACXF,IAAI,EAAE,UAAU;cAChBG,SAAS,EAAE,QAAQ;cACnBC,KAAK,EAAE;YACT,CAAgB;YAChBE,QAAQ,EAAE;UACZ,CAAC;UACD,QAAQ,EAAE;YACRJ,WAAW,EAAE;cACXF,IAAI,EAAE,MAAM;cACZG,SAAS,EAAE,OAAO;cAClBC,KAAK,EAAE;YACT,CAAgB;YAChBE,QAAQ,EAAE;UACZ;QACF;MACF,CAAC,CAAC;MAEFsE,EAAE,CAAC,oEAAoE,EAAE,MAAM;QAC7E,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAClDqI,kBAAQ,CAACI,MAAM,CAACwI,SAAS,CAAC,CAAC,CAAC;QAE5B,MAAM,CAACoB,OAAO,CAAC,GAAGtB,QAAQ,CAAC,CAAC;QAC5B,MAAM,CAACwB,OAAO,CAAC,GAAGxB,QAAQ,CAAC,CAAC;QAC5B,MAAM,CAAC8B,OAAO,EAAEC,QAAQ,CAAC,GAAG/B,QAAQ,CAAC,CAAC;QACtC,MAAM,CAACgC,OAAO,EAAEC,QAAQ,CAAC,GAAGjC,QAAQ,CAAC,CAAC;QAEtC,IAAA/H,QAAG,EAACqJ,OAAO,EAAE,UAAU,CAAC;QACxB,IAAArJ,QAAG,EAACuJ,OAAO,EAAE,UAAU,CAAC;QACxB,IAAAvJ,QAAG,EAAC6J,OAAO,EAAE,UAAU,CAAC;QACxB,IAAA7J,QAAG,EAAC+J,OAAO,EAAE,UAAU,CAAC;QAExBrK,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAEhDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1CuI,QAAQ,EACRpK,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAS,CAAC;QACzD,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;QACDgG,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1CyI,QAAQ,EACRtK,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAU,CAAC;QAC1D,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;QACDgG,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1CuI,QAAQ,EACRpK,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAW,CAAC;QAC3D,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;QACDgG,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1CyI,QAAQ,EACRtK,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAO,CAAC;QACvD,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;MAEF8F,EAAE,CAAC,8DAA8D,EAAE,MAAM;QACvE,MAAM;UAAE5G;QAAgB,CAAC,GAAG5B,OAAO,CAAC,aAAa,CAAC;QAClDqI,kBAAQ,CAACI,MAAM,CAACwI,SAAS,CAAC,CAAC,CAAC;QAE5B,MAAM,CAACoB,OAAO,CAAC,GAAGtB,QAAQ,CAAC,CAAC;QAC5B,MAAM,CAACwB,OAAO,CAAC,GAAGxB,QAAQ,CAAC,CAAC;QAC5B,MAAM,CAAC8B,OAAO,EAAEC,QAAQ,CAAC,GAAG/B,QAAQ,CAAC,CAAC;QACtC,MAAM,CAACgC,OAAO,EAAEC,QAAQ,CAAC,GAAGjC,QAAQ,CAAC,CAAC;QAEtC,IAAA/H,QAAG,EAACqJ,OAAO,EAAE,UAAU,CAAC;QACxB,IAAArJ,QAAG,EAACuJ,OAAO,EAAE,UAAU,CAAC;QACxB,IAAAvJ,QAAG,EAAC6J,OAAO,EAAE,UAAU,CAAC;QACxB,IAAA7J,QAAG,EAAC+J,OAAO,EAAE,UAAU,CAAC;QAExBrK,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAEhD,MAAM,CAACgI,OAAO,CAAC,GAAG5B,QAAQ,CAAC,CAAC;QAC5B,MAAM,CAAC6B,OAAO,CAAC,GAAG7B,QAAQ,CAAC,CAAC;QAC5B,MAAM,CAACkC,OAAO,EAAEC,QAAQ,CAAC,GAAGnC,QAAQ,CAAC,CAAC;QACtC,MAAM,CAACoC,OAAO,EAAEC,QAAQ,CAAC,GAAGrC,QAAQ,CAAC,CAAC;QAEtC,IAAA/H,QAAG,EAAC2J,OAAO,EAAE,UAAU,CAAC;QACxB,IAAA3J,QAAG,EAAC4J,OAAO,EAAE,UAAU,CAAC;QACxB,IAAA5J,QAAG,EAACiK,OAAO,EAAE,UAAU,CAAC;QACxB,IAAAjK,QAAG,EAACmK,OAAO,EAAE,UAAU,CAAC;QAExBzK,MAAM,CAAC9G,eAAe,CAAC,CAAC+I,qBAAqB,CAAC,CAAC,CAAC;QAEhDjC,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C2I,QAAQ,EACRxK,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAS,CAAC;QACzD,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;QACDgG,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C6I,QAAQ,EACR1K,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAU,CAAC;QAC1D,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;QACDgG,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C2I,QAAQ,EACRxK,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAW,CAAC;QAC3D,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;QACDgG,MAAM,CAAC9G,eAAe,CAAC,CAAC2I,oBAAoB,CAC1C6I,QAAQ,EACR1K,MAAM,CAACmC,gBAAgB,CAAC;UACtB/G,WAAW,EAAE4E,MAAM,CAACmC,gBAAgB,CAAC;YAAEjH,IAAI,EAAE;UAAO,CAAC;QACvD,CAAC,CAAC,EACF6G,SAAS,EACT;UAAE/H,aAAa,EAAE;QAAM,CACzB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFO,QAAQ,CAAC,uBAAuB,EAAE,MAAM;IACtC,IAAI4F,QAAkB;IAEtB3D,UAAU,CAAC,MAAM;MACflC,QAAQ,CAACqQ,KAAK,CAAC,CAAC;MAChBxM,cAAc,CAAC,CAAC;IAClB,CAAC,CAAC;IAEFsB,SAAS,CAAC,MAAM;MACdE,kBAAQ,CAACxF,OAAO,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,SAASyQ,yBAAyBA,CAAChQ,GAAW,EAAoB;MAChE,MAAM0N,EAAE,GAAG7L,QAAQ,CAACC,aAAa,CAC/B,kBACF,CAAqB;MACrB,MAAMC,GAAG,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;MACzC4L,EAAE,CAAC1L,MAAM,CAACD,GAAG,CAAC;MACd2L,EAAE,CAAClI,OAAO,CAACC,WAAW,GAAGzF,GAAG;MAC5B0N,EAAE,CAACuC,SAAS,GAAG,KAAK;MACpBvC,EAAE,CAACwC,UAAU,GAAG,IAAI;MACpBxC,EAAE,CAACyC,UAAU,GAAG,IAAIhT,OAAO,CAAC,CAAC;MAC7BuQ,EAAE,CAAC0C,KAAK,GAAG,IAAI;MACf1C,EAAE,CAAC2C,UAAU,GAAGjS,IAAI,CAACG,EAAE,CAAC,YAAY;QAClC,MAAM+R,CAAC,GAAG5C,EAAE,CAAClI,OAAO,CAACC,WAAW;QAChC,IAAI6K,CAAC,EAAE;UACL,IAAAtH,cAAM,EAACsH,CAAC,CAAC;QACX;QACA5C,EAAE,CAAC0C,KAAK,GAAG,IAAI;QACf1C,EAAE,CAACuC,SAAS,GAAG,KAAK;MACtB,CAAC,CAAC;MACFvC,EAAE,CAAC6C,OAAO,GAAGnS,IAAI,CAACG,EAAE,CAAC,YAAY;QAC/B,IAAImP,EAAE,CAACuC,SAAS,EAAE;UAChB;QACF;QACA,MAAMK,CAAC,GAAG5C,EAAE,CAAClI,OAAO,CAACC,WAAW;QAChC,IAAI6K,CAAC,EAAE;UACL5C,EAAE,CAACuC,SAAS,GAAG,IAAAvK,QAAG,EAACgI,EAAE,EAAE4C,CAAC,CAAC;QAC3B;MACF,CAAC,CAAC;MACF5C,EAAE,CAAC8C,WAAW,GAAGpS,IAAI,CAACG,EAAE,CAAC,CAAC;MAC1BmP,EAAE,CAAC+C,YAAY,GAAGrS,IAAI,CAACG,EAAE,CAAC,CAAC;MAC3BmP,EAAE,CAACgD,cAAc,GAAGtS,IAAI,CAACG,EAAE,CAAC,CAAC;MAC7B,OAAOmP,EAAE;IACX;IAEA,MAAMiD,sBAAsB,GAAGA,CAAA,MAAuB;MACpDpM,UAAU,EAAE;QACVE,OAAO,EAAE;UACPnE,IAAI,EAAE,OAAO;UACboE,SAAS,EAAE;QACb;MACF,CAAC;MACD3E,YAAY,EAAE,CACZ;QACEZ,OAAO,EAAE,OAAO;QAChBa,GAAG,EAAE,mBAAmB;QACxBuE,UAAU,EAAE,CAAC,SAAS,CAAC;QACvBpE,OAAO,EAAE,CACP;UACEH,GAAG,EAAE,mBAAmB;UACxBI,QAAQ,EAAE;QACZ,CAAC;MAEL,CAAC,CACF;MACDD,OAAO,EAAE;QACP,aAAa,EAAE;UACbK,WAAW,EAAE;YACXF,IAAI,EAAE,QAAQ;YACdI,KAAK,EAAE;UACT,CAAgB;UAChBE,QAAQ,EAAE;QACZ;MACF;IACF,CAAC,CAAC;IAEFsE,EAAE,CAAC,sEAAsE,EAAE,MAAM;MAC/E,MAAMgE,MAAM,GAAGyH,sBAAsB,CAAC,CAAC;MACvCpL,QAAQ,GAAGR,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;MAElC,MAAM6D,WAAW,GAAGiD,yBAAyB,CAAC,mBAAmB,CAAC;MAClE,IAAAtK,QAAG,EAACqH,WAAW,EAAE,mBAAmB,CAAC;MAErC3H,MAAM,CAACnD,MAAM,CAAC2O,UAAU,CAAC,CAAC3J,oBAAoB,CAAC,oBAAoB,CAAC;MAEpE7B,MAAM,CAACG,QAAQ,CAACsL,mBAAmB,CAAC7K,IAAI,CAAC,CAACF,IAAI,CAAC,CAAC,CAAC;MACjDV,MAAM,CACJG,QAAQ,CAACsL,mBAAmB,CAACjT,GAAG,CAAC,+BAA+B,CAClE,CAAC,CAACkI,IAAI,CAAC,IAAI,CAAC;MAEZ,MAAMjC,GAAG,GAAGnE,QAAQ,CAAC7B,GAAG,CAAC,oBAAoB,CAAC;MAC9CuH,MAAM,CAACvB,GAAG,oBAAHA,GAAG,CAAEI,gBAAgB,CAAC,CAACgD,oBAAoB,CAChD,QAAQ,EACR7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CACrB,CAAC;IACH,CAAC,CAAC;IAEFpC,EAAE,CAAC,2CAA2C,EAAE,MAAM;MACpD,MAAMgE,MAAM,GAAGyH,sBAAsB,CAAC,CAAC;MACvCpL,QAAQ,GAAGR,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;MAElC,MAAM6D,WAAW,GAAGiD,yBAAyB,CAAC,mBAAmB,CAAC;MAClE,IAAAtK,QAAG,EAACqH,WAAW,EAAE,mBAAmB,CAAC;MAErC,MAAM+D,aAAa,GAAGvL,QAAQ,CAACsL,mBAAmB,CAAChT,GAAG,CACpD,+BACF,CAAC;MACDuH,MAAM,CAAC0L,aAAa,CAAC,CAACxL,WAAW,CAAC,CAAC;MAEnC,MAAMyL,aAAa,GAAG3S,IAAI,CAACqI,KAAK,CAAClB,QAAQ,EAAE,6BAA6B,CAAC;MAEzEuL,aAAa,CAAEE,OAAO,CAAC;QACrBlN,OAAO,EAAE,IAAI;QACbC,KAAK,EAAE;MACT,CAAmC,CAAC;;MAEpC;MACAqB,MAAM,CAAC2L,aAAa,CAAC,CAAC9J,oBAAoB,CAAC,mBAAmB,CAAC;IACjE,CAAC,CAAC;IAEF/B,EAAE,CAAC,mEAAmE,EAAE,MAAM;MAC5E,MAAMgE,MAAM,GAAGyH,sBAAsB,CAAC,CAAC;MACvCpL,QAAQ,GAAGR,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;MAElC,MAAM6D,WAAW,GAAGiD,yBAAyB,CAAC,mBAAmB,CAAC;MAClE,IAAAtK,QAAG,EAACqH,WAAW,EAAE,mBAAmB,CAAC;MAErC,MAAMlJ,GAAG,GAAGnE,QAAQ,CAAC7B,GAAG,CAAC,oBAAoB,CAAC;MAC9CuH,MAAM,CAACvB,GAAG,CAAC,CAACyB,WAAW,CAAC,CAAC;MACzBF,MAAM,CAACvB,GAAG,CAAEI,gBAAgB,CAAC,CAAC0C,gBAAgB,CAAC,CAAC;MAEhDpB,QAAQ,CAAChG,OAAO,CAAC,CAAC;MAElB6F,MAAM,CAACvB,GAAG,CAAEK,mBAAmB,CAAC,CAAC+C,oBAAoB,CACnD,QAAQ,EACR7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CACrB,CAAC;MACDlC,MAAM,CAACG,QAAQ,CAACsL,mBAAmB,CAAC7K,IAAI,CAAC,CAACF,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC;IAEFZ,EAAE,CAAC,kEAAkE,EAAE,MAAM;MAC3E,MAAMgE,MAAM,GAAGyH,sBAAsB,CAAC,CAAC;MACvCpL,QAAQ,GAAGR,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;MAElC,MAAM6D,WAAW,GAAGiD,yBAAyB,CAAC,mBAAmB,CAAC;MAElE,IAAAtK,QAAG,EAACqH,WAAW,EAAE,mBAAmB,CAAC;MACrC;MACAxH,QAAQ,CAAC0L,iBAAiB,GAAG,CAAC,CAAC;MAC/B,IAAAvL,QAAG,EAACqH,WAAW,EAAE,mBAAmB,CAAC;MAErC3H,MAAM,CAACG,QAAQ,CAACsL,mBAAmB,CAAC7K,IAAI,CAAC,CAACF,IAAI,CAAC,CAAC,CAAC;MAEjD,MAAMjC,GAAG,GAAGnE,QAAQ,CAAC7B,GAAG,CAAC,oBAAoB,CAAC;MAC9CuH,MAAM,CAACvB,GAAG,oBAAHA,GAAG,CAAEI,gBAAgB,CAAC,CAACoD,qBAAqB,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC;IAEFnC,EAAE,CAAC,iDAAiD,EAAE,MAAM;MAC1D,MAAMgE,MAAM,GAAGyH,sBAAsB,CAAC,CAAC;MACvCpL,QAAQ,GAAGR,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;MAElC,MAAM6D,WAAW,GAAGiD,yBAAyB,CAAC,mBAAmB,CAAC;MAClE,IAAAtK,QAAG,EAACqH,WAAW,EAAE,mBAAmB,CAAC;MAErC,MAAMlJ,GAAG,GAAGnE,QAAQ,CAAC7B,GAAG,CAAC,oBAAoB,CAAC;MAC9CuH,MAAM,CAACG,QAAQ,CAACsL,mBAAmB,CAAC7K,IAAI,CAAC,CAACF,IAAI,CAAC,CAAC,CAAC;MAEjDP,QAAQ,CAAC2L,aAAa,CAAC,mBAAmB,CAAC;MAE3C9L,MAAM,CAACvB,GAAG,CAAEK,mBAAmB,CAAC,CAAC+C,oBAAoB,CACnD,QAAQ,EACR7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CACrB,CAAC;MACDlC,MAAM,CAACG,QAAQ,CAACsL,mBAAmB,CAAC7K,IAAI,CAAC,CAACF,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC;IAEFZ,EAAE,CAAC,qDAAqD,EAAE,MAAM;MAC9D,MAAMgE,MAAsB,GAAG;QAC7B3E,UAAU,EAAE;UACVE,OAAO,EAAE;YACPnE,IAAI,EAAE,OAAO;YACboE,SAAS,EAAE;UACb,CAAC;UACDC,MAAM,EAAE;YACNrE,IAAI,EAAE,OAAO;YACboE,SAAS,EAAE;UACb;QACF,CAAC;QACD3E,YAAY,EAAE,CACZ;UACEZ,OAAO,EAAE,OAAO;UAChBa,GAAG,EAAE,oBAAoB;UACzBuE,UAAU,EAAE,CAAC,SAAS,CAAC;UACvBpE,OAAO,EAAE,CACP;YACEH,GAAG,EAAE,oBAAoB;YACzBI,QAAQ,EAAE;UACZ,CAAC;QAEL,CAAC,EACD;UACEjB,OAAO,EAAE,OAAO;UAChBa,GAAG,EAAE,oBAAoB;UACzBuE,UAAU,EAAE,CAAC,QAAQ,CAAC;UACtBpE,OAAO,EAAE,CACP;YACEH,GAAG,EAAE,oBAAoB;YACzBI,QAAQ,EAAE;UACZ,CAAC;QAEL,CAAC,CACF;QACDD,OAAO,EAAE;UACP,gBAAgB,EAAE;YAChBK,WAAW,EAAE;cACXF,IAAI,EAAE,QAAQ;cACdI,KAAK,EAAE;YACT,CAAgB;YAChBE,QAAQ,EAAE;UACZ,CAAC;UACD,eAAe,EAAE;YACfJ,WAAW,EAAE;cACXF,IAAI,EAAE,UAAU;cAChBG,SAAS,EAAE,QAAQ;cACnBC,KAAK,EAAE;YACT,CAAgB;YAChBE,QAAQ,EAAE;UACZ;QACF;MACF,CAAC;MAED2C,cAAc,CAAC,CAAC,mBAAmB,CAAC,CAAC;MACrCgC,QAAQ,GAAGR,kBAAQ,CAACI,MAAM,CAAC+D,MAAM,CAAC;MAElC,MAAM6D,WAAW,GAAGiD,yBAAyB,CAAC,oBAAoB,CAAC;MACnE;MACA,MAAMmB,QAAQ,GAAGpE,WAAW,CAACzD,iBAAgC;MAC7D,MAAMlC,mBAAmB,GAAGhJ,IAAI,CAACqI,KAAK,CAAC0K,QAAQ,EAAE,kBAAkB,CAAC;MAEpE,IAAAzL,QAAG,EAACqH,WAAW,EAAE,oBAAoB,CAAC;;MAEtC;MACA3H,MAAM,CAACgC,mBAAmB,CAAC,CAACH,oBAAoB,CAC9C,OAAO,EACP7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;MACDmH,MAAM,CAACgC,mBAAmB,CAAC,CAACY,GAAG,CAACf,oBAAoB,CAClD,YAAY,EACZ7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;MAEDmJ,mBAAmB,CAACqF,SAAS,CAAC,CAAC;;MAE/B;MACA,MAAM2E,UAAU,GAAG1R,QAAQ,CAAC7B,GAAG,CAAC,qBAAqB,CAAC;MACtD,MAAMwT,SAAS,GAAG3R,QAAQ,CAAC7B,GAAG,CAAC,oBAAoB,CAAC;MAEnDuT,UAAU,CAAStN,OAAO,GAAG,KAAK;MAClCuN,SAAS,CAASvN,OAAO,GAAG,IAAI;;MAEjC;MACA,MAAMgN,aAAa,GAAGvL,QAAQ,CAACsL,mBAAmB,CAAChT,GAAG,CACpD,gCACF,CAAC;MACDuH,MAAM,CAAC0L,aAAa,CAAC,CAACxL,WAAW,CAAC,CAAC;MACnCwL,aAAa,CAAEE,OAAO,CAAC;QACrBlN,OAAO,EAAE,KAAK;QACdC,KAAK,EAAE;MACT,CAAmC,CAAC;;MAEpC;MACAqB,MAAM,CAACgC,mBAAmB,CAAC,CAACH,oBAAoB,CAC9C,YAAY,EACZ7B,MAAM,CAAC8B,GAAG,CAACI,QAAQ,CAAC,EACpBlC,MAAM,CAAC8B,GAAG,CAACjJ,MAAM,CACnB,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}