{"version":3,"sources":["webpack:///./src/components/landing/HelpPage.vue?4640","webpack:///./src/components/landing/LoginContent.vue?ede5","webpack:///./src/components/company/LangSwitch.vue","webpack:///src/components/company/LangSwitch.vue","webpack:///./src/components/company/LangSwitch.vue?8df9","webpack:///./src/components/company/LangSwitch.vue?0459","webpack:///./src/components/landing/KeyFeatures.vue?f8f0","webpack:///./src/views/Landing.vue","webpack:///./src/components/landing/LoginContent.vue","webpack:///src/components/landing/LoginContent.vue","webpack:///./src/components/landing/LoginContent.vue?a934","webpack:///./src/components/landing/LoginContent.vue?a57e","webpack:///./src/components/landing/KeyFeatures.vue","webpack:///src/components/landing/KeyFeatures.vue","webpack:///./src/components/landing/KeyFeatures.vue?3d30","webpack:///./src/components/landing/KeyFeatures.vue?c8d0","webpack:///./src/components/landing/UseCases.vue","webpack:///src/components/landing/UseCases.vue","webpack:///./src/components/landing/UseCases.vue?cd63","webpack:///./src/components/landing/UseCases.vue?3da8","webpack:///./src/components/landing/HelpPage.vue","webpack:///src/components/landing/HelpPage.vue","webpack:///./src/components/landing/HelpPage.vue?e793","webpack:///./src/components/landing/HelpPage.vue?e3ba","webpack:///./src/components/common/SoParticles.vue","webpack:///./node_modules/tsparticles-engine/esm/Utils/EventDispatcher.js","webpack:///./node_modules/tsparticles-engine/esm/Core/Utils/Vector3d.js","webpack:///./node_modules/tsparticles-engine/esm/Core/Utils/Vector.js","webpack:///./node_modules/tsparticles-engine/esm/Utils/NumberUtils.js","webpack:///./node_modules/tsparticles-engine/esm/Utils/Utils.js","webpack:///./node_modules/tsparticles-engine/esm/Utils/ColorUtils.js","webpack:///./node_modules/tsparticles-engine/esm/Utils/CanvasUtils.js","webpack:///./node_modules/tsparticles-engine/esm/Core/Utils/Constants.js","webpack:///./node_modules/tsparticles-engine/esm/Core/Canvas.js","webpack:///./node_modules/tsparticles-engine/esm/Core/Utils/EventListeners.js","webpack:///./node_modules/tsparticles-engine/esm/Core/Utils/FrameManager.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/OptionsColor.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Background/Background.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/BackgroundMask/BackgroundMaskCover.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/BackgroundMask/BackgroundMask.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/FullScreen/FullScreen.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Interactivity/Events/ClickEvent.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Interactivity/Events/DivEvent.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Interactivity/Events/Parallax.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Interactivity/Events/HoverEvent.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Interactivity/Events/ResizeEvent.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Interactivity/Events/Events.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Interactivity/Modes/Modes.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Interactivity/Interactivity.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/ManualParticle.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Responsive.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Theme/ThemeDefault.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Theme/Theme.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/ColorAnimation.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/HslAnimation.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/AnimatableColor.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Collisions/CollisionsAbsorb.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Collisions/CollisionsOverlap.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Random.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/ValueWithRandom.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Bounce/ParticlesBounceFactor.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Bounce/ParticlesBounce.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Collisions/Collisions.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Move/MoveAngle.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Move/MoveAttract.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Move/MoveCenter.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Move/MoveGravity.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Move/Path/MovePath.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Move/MoveTrail.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Move/OutModes.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Move/Spin.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Move/Move.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/AnimationOptions.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Opacity/OpacityAnimation.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Opacity/Opacity.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Number/ParticlesDensity.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Number/ParticlesNumber.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Shadow.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Shape/Shape.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Size/SizeAnimation.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Size/Size.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Stroke.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/ZIndex/ZIndex.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Particles/ParticlesOptions.js","webpack:///./node_modules/tsparticles-engine/esm/Utils/OptionsUtils.js","webpack:///./node_modules/tsparticles-engine/esm/Options/Classes/Options.js","webpack:///./node_modules/tsparticles-engine/esm/Core/Utils/InteractionManager.js","webpack:///./node_modules/tsparticles-engine/esm/Core/Particle.js","webpack:///./node_modules/tsparticles-engine/esm/Core/Utils/Point.js","webpack:///./node_modules/tsparticles-engine/esm/Core/Utils/Range.js","webpack:///./node_modules/tsparticles-engine/esm/Core/Utils/Circle.js","webpack:///./node_modules/tsparticles-engine/esm/Core/Utils/Rectangle.js","webpack:///./node_modules/tsparticles-engine/esm/Core/Utils/QuadTree.js","webpack:///./node_modules/tsparticles-engine/esm/Core/Particles.js","webpack:///./node_modules/tsparticles-engine/esm/Core/Retina.js","webpack:///./node_modules/tsparticles-engine/esm/Core/Container.js","webpack:///./node_modules/tsparticles-engine/esm/Core/Loader.js","webpack:///./node_modules/tsparticles-engine/esm/Core/Utils/Plugins.js","webpack:///./node_modules/tsparticles-engine/esm/engine.js","webpack:///./node_modules/tsparticles-engine/esm/Utils/HslColorManager.js","webpack:///./node_modules/tsparticles-engine/esm/Utils/RgbColorManager.js","webpack:///./node_modules/tsparticles-engine/esm/Core/Utils/ExternalInteractorBase.js","webpack:///./node_modules/tsparticles-engine/esm/Core/Utils/ParticlesInteractorBase.js","webpack:///./node_modules/tsparticles-engine/esm/index.js","webpack:///./node_modules/tsparticles-plugin-absorbers/esm/Options/Classes/AbsorberSizeLimit.js","webpack:///./node_modules/tsparticles-plugin-absorbers/esm/Options/Classes/AbsorberSize.js","webpack:///./node_modules/tsparticles-plugin-absorbers/esm/Options/Classes/Absorber.js","webpack:///./node_modules/tsparticles-plugin-absorbers/esm/AbsorberInstance.js","webpack:///./node_modules/tsparticles-plugin-absorbers/esm/Absorbers.js","webpack:///./node_modules/tsparticles-plugin-absorbers/esm/index.js","webpack:///./node_modules/tsparticles-updater-destroy/esm/Options/Classes/DestroyBounds.js","webpack:///./node_modules/tsparticles-updater-destroy/esm/Options/Classes/SplitFactor.js","webpack:///./node_modules/tsparticles-updater-destroy/esm/Options/Classes/SplitRate.js","webpack:///./node_modules/tsparticles-updater-destroy/esm/Options/Classes/Split.js","webpack:///./node_modules/tsparticles-updater-destroy/esm/Options/Classes/Destroy.js","webpack:///./node_modules/tsparticles-updater-destroy/esm/DestroyUpdater.js","webpack:///./node_modules/tsparticles-updater-destroy/esm/index.js","webpack:///./node_modules/tsparticles-plugin-emitters/esm/Shapes/Circle/CircleShape.js","webpack:///./node_modules/tsparticles-plugin-emitters/esm/Options/Classes/EmitterLife.js","webpack:///./node_modules/tsparticles-plugin-emitters/esm/Options/Classes/EmitterRate.js","webpack:///./node_modules/tsparticles-plugin-emitters/esm/Options/Classes/EmitterSize.js","webpack:///./node_modules/tsparticles-plugin-emitters/esm/Options/Classes/Emitter.js","webpack:///./node_modules/tsparticles-plugin-emitters/esm/EmitterInstance.js","webpack:///./node_modules/tsparticles-plugin-emitters/esm/Emitters.js","webpack:///./node_modules/tsparticles-plugin-emitters/esm/ShapeManager.js","webpack:///./node_modules/tsparticles-plugin-emitters/esm/Shapes/Square/SquareShape.js","webpack:///./node_modules/tsparticles-plugin-emitters/esm/index.js","webpack:///./node_modules/tsparticles-interaction-external-trail/esm/Options/Classes/Trail.js","webpack:///./node_modules/tsparticles-interaction-external-trail/esm/TrailMaker.js","webpack:///./node_modules/tsparticles-interaction-external-trail/esm/index.js","webpack:///./node_modules/tsparticles-updater-roll/esm/Options/Classes/RollLight.js","webpack:///./node_modules/tsparticles-updater-roll/esm/Options/Classes/Roll.js","webpack:///./node_modules/tsparticles-updater-roll/esm/RollUpdater.js","webpack:///./node_modules/tsparticles-updater-roll/esm/index.js","webpack:///./node_modules/tsparticles-particles.js/esm/index.js","webpack:///./node_modules/tsparticles-updater-angle/esm/Options/Classes/RotateAnimation.js","webpack:///./node_modules/tsparticles-updater-angle/esm/Options/Classes/Rotate.js","webpack:///./node_modules/tsparticles-updater-angle/esm/RotateUpdater.js","webpack:///./node_modules/tsparticles-updater-angle/esm/index.js","webpack:///./node_modules/tsparticles-move-base/esm/Utils.js","webpack:///./node_modules/tsparticles-move-base/esm/BaseMover.js","webpack:///./node_modules/tsparticles-move-base/esm/index.js","webpack:///./node_modules/tsparticles-shape-circle/esm/CircleDrawer.js","webpack:///./node_modules/tsparticles-shape-circle/esm/index.js","webpack:///./node_modules/tsparticles-updater-color/esm/ColorUpdater.js","webpack:///./node_modules/tsparticles-updater-color/esm/index.js","webpack:///./node_modules/tsparticles-interaction-external-attract/esm/Options/Classes/Attract.js","webpack:///./node_modules/tsparticles-interaction-external-attract/esm/Attractor.js","webpack:///./node_modules/tsparticles-interaction-external-attract/esm/index.js","webpack:///./node_modules/tsparticles-interaction-external-bounce/esm/Options/Classes/Bounce.js","webpack:///./node_modules/tsparticles-interaction-external-bounce/esm/Bouncer.js","webpack:///./node_modules/tsparticles-interaction-external-bounce/esm/index.js","webpack:///./node_modules/tsparticles-interaction-external-bubble/esm/Options/Classes/BubbleBase.js","webpack:///./node_modules/tsparticles-interaction-external-bubble/esm/Options/Classes/BubbleDiv.js","webpack:///./node_modules/tsparticles-interaction-external-bubble/esm/Options/Classes/Bubble.js","webpack:///./node_modules/tsparticles-interaction-external-bubble/esm/Bubbler.js","webpack:///./node_modules/tsparticles-interaction-external-bubble/esm/index.js","webpack:///./node_modules/tsparticles-interaction-external-connect/esm/Options/Classes/ConnectLinks.js","webpack:///./node_modules/tsparticles-interaction-external-connect/esm/Options/Classes/Connect.js","webpack:///./node_modules/tsparticles-interaction-external-connect/esm/Connector.js","webpack:///./node_modules/tsparticles-interaction-external-connect/esm/index.js","webpack:///./node_modules/tsparticles-interaction-external-grab/esm/Options/Classes/GrabLinks.js","webpack:///./node_modules/tsparticles-interaction-external-grab/esm/Options/Classes/Grab.js","webpack:///./node_modules/tsparticles-interaction-external-grab/esm/Grabber.js","webpack:///./node_modules/tsparticles-interaction-external-grab/esm/index.js","webpack:///./node_modules/tsparticles-interaction-external-pause/esm/Pauser.js","webpack:///./node_modules/tsparticles-interaction-external-pause/esm/index.js","webpack:///./node_modules/tsparticles-interaction-external-push/esm/Options/Classes/Push.js","webpack:///./node_modules/tsparticles-interaction-external-push/esm/Pusher.js","webpack:///./node_modules/tsparticles-interaction-external-push/esm/index.js","webpack:///./node_modules/tsparticles-interaction-external-remove/esm/Options/Classes/Remove.js","webpack:///./node_modules/tsparticles-interaction-external-remove/esm/Remover.js","webpack:///./node_modules/tsparticles-interaction-external-remove/esm/index.js","webpack:///./node_modules/tsparticles-interaction-external-repulse/esm/Options/Classes/RepulseBase.js","webpack:///./node_modules/tsparticles-interaction-external-repulse/esm/Options/Classes/RepulseDiv.js","webpack:///./node_modules/tsparticles-interaction-external-repulse/esm/Options/Classes/Repulse.js","webpack:///./node_modules/tsparticles-interaction-external-repulse/esm/Repulser.js","webpack:///./node_modules/tsparticles-interaction-external-repulse/esm/index.js","webpack:///./node_modules/tsparticles-interaction-external-slow/esm/Options/Classes/Slow.js","webpack:///./node_modules/tsparticles-interaction-external-slow/esm/Slower.js","webpack:///./node_modules/tsparticles-interaction-external-slow/esm/index.js","webpack:///./node_modules/tsparticles-shape-image/esm/Utils.js","webpack:///./node_modules/tsparticles-shape-image/esm/ImageDrawer.js","webpack:///./node_modules/tsparticles-shape-image/esm/index.js","webpack:///./node_modules/tsparticles-updater-life/esm/Options/Classes/LifeDelay.js","webpack:///./node_modules/tsparticles-updater-life/esm/Options/Classes/LifeDuration.js","webpack:///./node_modules/tsparticles-updater-life/esm/Options/Classes/Life.js","webpack:///./node_modules/tsparticles-updater-life/esm/LifeUpdater.js","webpack:///./node_modules/tsparticles-updater-life/esm/index.js","webpack:///./node_modules/tsparticles-shape-line/esm/LineDrawer.js","webpack:///./node_modules/tsparticles-shape-line/esm/index.js","webpack:///./node_modules/tsparticles-updater-opacity/esm/OpacityUpdater.js","webpack:///./node_modules/tsparticles-updater-opacity/esm/index.js","webpack:///./node_modules/tsparticles-updater-out-modes/esm/Utils.js","webpack:///./node_modules/tsparticles-updater-out-modes/esm/BounceOutMode.js","webpack:///./node_modules/tsparticles-updater-out-modes/esm/DestroyOutMode.js","webpack:///./node_modules/tsparticles-updater-out-modes/esm/NoneOutMode.js","webpack:///./node_modules/tsparticles-updater-out-modes/esm/OutOutMode.js","webpack:///./node_modules/tsparticles-updater-out-modes/esm/OutOfCanvasUpdater.js","webpack:///./node_modules/tsparticles-updater-out-modes/esm/index.js","webpack:///./node_modules/tsparticles-move-parallax/esm/ParallaxMover.js","webpack:///./node_modules/tsparticles-move-parallax/esm/index.js","webpack:///./node_modules/tsparticles-interaction-particles-attract/esm/Attractor.js","webpack:///./node_modules/tsparticles-interaction-particles-attract/esm/index.js","webpack:///./node_modules/tsparticles-interaction-particles-collisions/esm/Absorb.js","webpack:///./node_modules/tsparticles-interaction-particles-collisions/esm/Bounce.js","webpack:///./node_modules/tsparticles-interaction-particles-collisions/esm/Destroy.js","webpack:///./node_modules/tsparticles-interaction-particles-collisions/esm/ResolveCollision.js","webpack:///./node_modules/tsparticles-interaction-particles-collisions/esm/Collider.js","webpack:///./node_modules/tsparticles-interaction-particles-collisions/esm/index.js","webpack:///./node_modules/tsparticles-interaction-particles-links/esm/CircleWarp.js","webpack:///./node_modules/tsparticles-interaction-particles-links/esm/Options/Classes/LinksShadow.js","webpack:///./node_modules/tsparticles-interaction-particles-links/esm/Options/Classes/LinksTriangle.js","webpack:///./node_modules/tsparticles-interaction-particles-links/esm/Options/Classes/Links.js","webpack:///./node_modules/tsparticles-interaction-particles-links/esm/Linker.js","webpack:///./node_modules/tsparticles-interaction-particles-links/esm/interaction.js","webpack:///./node_modules/tsparticles-interaction-particles-links/esm/Utils.js","webpack:///./node_modules/tsparticles-interaction-particles-links/esm/LinkInstance.js","webpack:///./node_modules/tsparticles-interaction-particles-links/esm/plugin.js","webpack:///./node_modules/tsparticles-interaction-particles-links/esm/index.js","webpack:///./node_modules/tsparticles-shape-polygon/esm/PolygonDrawerBase.js","webpack:///./node_modules/tsparticles-shape-polygon/esm/PolygonDrawer.js","webpack:///./node_modules/tsparticles-shape-polygon/esm/TriangleDrawer.js","webpack:///./node_modules/tsparticles-shape-polygon/esm/index.js","webpack:///./node_modules/tsparticles-updater-size/esm/SizeUpdater.js","webpack:///./node_modules/tsparticles-updater-size/esm/index.js","webpack:///./node_modules/tsparticles-shape-square/esm/SquareDrawer.js","webpack:///./node_modules/tsparticles-shape-square/esm/index.js","webpack:///./node_modules/tsparticles-shape-star/esm/StarDrawer.js","webpack:///./node_modules/tsparticles-shape-star/esm/index.js","webpack:///./node_modules/tsparticles-updater-stroke-color/esm/StrokeColorUpdater.js","webpack:///./node_modules/tsparticles-updater-stroke-color/esm/index.js","webpack:///./node_modules/tsparticles-shape-text/esm/TextDrawer.js","webpack:///./node_modules/tsparticles-shape-text/esm/index.js","webpack:///./node_modules/tsparticles-slim/esm/index.js","webpack:///./node_modules/tsparticles-updater-tilt/esm/Options/Classes/TiltAnimation.js","webpack:///./node_modules/tsparticles-updater-tilt/esm/Options/Classes/Tilt.js","webpack:///./node_modules/tsparticles-updater-tilt/esm/TiltUpdater.js","webpack:///./node_modules/tsparticles-updater-tilt/esm/index.js","webpack:///./node_modules/tsparticles-updater-twinkle/esm/Options/Classes/TwinkleValues.js","webpack:///./node_modules/tsparticles-updater-twinkle/esm/Options/Classes/Twinkle.js","webpack:///./node_modules/tsparticles-updater-twinkle/esm/TwinkleUpdater.js","webpack:///./node_modules/tsparticles-updater-twinkle/esm/index.js","webpack:///./node_modules/tsparticles-updater-wobble/esm/Options/Classes/WobbleSpeed.js","webpack:///./node_modules/tsparticles-updater-wobble/esm/Options/Classes/Wobble.js","webpack:///./node_modules/tsparticles-updater-wobble/esm/WobbleUpdater.js","webpack:///./node_modules/tsparticles-updater-wobble/esm/index.js","webpack:///./node_modules/tsparticles/esm/index.js","webpack:///src/components/common/SoParticles.vue","webpack:///./src/components/common/SoParticles.vue?2419","webpack:///./src/components/common/SoParticles.vue?c0a7","webpack:///src/views/Landing.vue","webpack:///./src/views/Landing.vue?b027","webpack:///./src/views/Landing.vue?b29a","webpack:///./src/views/Landing.vue?4074"],"names":["attrs","langs","scopedSlots","key","item","staticClass","_vm","expression","name","props","icon","default","type","data","curLang","computed","mapState","language_store","methods","mapActions","getLangImage","getIcon","mounted","watch","component","staticRenderFns","staticStyle","_c","whiteLabel","page","SO_API_BASE_URL","_e","on","loggedIn","_v","_s","$t","created","render","this","_self","particlesInit","particlesLoaded","particleOptions","EventDispatcher","_listeners","Map","listener","_a","removeEventListener","get","set","push","args","forEach","handler","delete","arr","length","idx","indexOf","splice","Vector3d","xOrCoords","y","z","x","coords3d","undefined","Error","create","Math","atan2","angle","updateFromAngle","sqrt","getLengthSq","source","v","clone","sub","n","cos","sin","c","v3d","super","_random","random","easings","getEasing","value","getRandom","clamp","num","min","max","mix","comp1","comp2","weight1","weight2","floor","randomInRange","r","getRangeMax","getRangeMin","getRangeValue","setRangeValue","getValue","options","enable","minimumValue","getDistances","pointA","pointB","dx","dy","distance","getDistance","getParticleDirectionAngle","direction","position","center","PI","getParticleBaseVelocity","baseVelocity","origin","collisionVelocity","v1","v2","m1","m2","calcPositionFromSize","size","width","height","calcPositionOrRandomFromSize","_b","_d","calcPositionOrRandomFromSizeRanged","calcExactPositionOrRandomFromSize","parseAlpha","input","endsWith","parseFloat","rectSideBounce","pSide","pOtherSide","rectSide","rectOtherSide","velocity","factor","res","bounced","checkSelector","element","selectors","executeOnSingleOrMultiple","selector","matches","Array","some","t","isSsr","window","document","hasMatchMedia","matchMedia","safeMatchMedia","query","animate","callback","setTimeout","requestAnimationFrame","cancelAnimation","handle","clearTimeout","cancelAnimationFrame","isInArray","array","async","loadFont","font","weight","fonts","load","arrayRandomIndex","itemFromArray","index","useIndex","isPointInside","point","offset","radius","areBoundsInside","calculateBounds","bounds","inside","top","right","left","bottom","deepExtend","destination","sources","sourceIsArray","isArray","sourceDict","isObject","destDict","map","isDivModeEnabled","mode","divs","findItemFromSingleOrMultiple","divModeExecute","div","divMode","divEnabled","singleDivModeExecute","circleBounceDataFromParticle","p","getPosition","getRadius","mass","getMass","bounce","horizontal","vertical","circleBounce","p1","p2","xVelocityDiff","yVelocityDiff","pos1","pos2","xDist","yDist","u1","rotate","u2","vFinal1","vFinal2","rectBounce","particle","divBounds","pPos","resH","resV","obj","itemFromSingleOrMultiple","find","randomColorValue","midColorValue","colorManagers","addColorManager","manager","hue2rgb","q","stringToRgba","startsWith","stringPrefix","parseString","shorthandRegex","hexFixed","replace","_","g","b","a","regex","result","exec","parseInt","rangeColorToRgb","color","colorToRgb","handleRangeColor","getRandomRgbColor","stringToRgb","handleColor","rangeColorToHsl","rgb","rgbToHsl","r1","g1","b1","h","l","s","hslToRgb","hsl","hslPercent","hslaToRgba","hsla","rgbResult","fixedMin","getStyleFromRgb","opacity","getStyleFromHsl","colorMix","color1","color2","size1","size2","rgb1","rgb2","getLinkColor","linkColor","sourceColor","getFillColor","getStrokeColor","destColor","hslColor","getLinkRandomColor","optColor","blink","consent","getHslFromAnimation","animation","getHslAnimationFromHsl","animationOptions","reduceFactor","resColor","setColorAnimation","colorValue","colorAnimation","speed","decay","status","sync","drawLine","context","begin","end","beginPath","moveTo","lineTo","closePath","drawTriangle","p3","paintBase","dimension","baseColor","fillStyle","fillRect","clear","clearRect","drawParticle","_f","container","delta","colorStyles","backgroundMask","composite","shadow","transform","pos","rotation","pathRotation","rotateData","transformData","d","setTransform","globalCompositeOperation","shadowColor","shadowBlur","blur","shadowOffsetX","shadowOffsetY","fill","stroke","lineWidth","strokeWidth","strokeStyle","drawShape","close","drawShapeAfterEffect","shape","drawer","drawers","draw","retina","pixelRatio","afterEffect","drawPlugin","plugin","drawParticlePlugin","alterHsl","generatedAttribute","touchEndEvent","mouseDownEvent","mouseUpEvent","mouseMoveEvent","touchStartEvent","touchMoveEvent","mouseLeaveEvent","mouseOutEvent","touchCancelEvent","resizeEvent","visibilityChangeEvent","setTransformValue","newFactor","newValue","_context","_generated","_preDrawUpdaters","_postDrawUpdaters","_resizePlugins","_colorPlugins","_mutationObserver","MutationObserver","records","record","attributeName","_repairStyle","actualOptions","fullScreen","trail","particles","move","paint","_trailFillColor","_paintBase","ctx","disconnect","remove","_resetOriginalStyle","cb","spawning","destroyed","pfColor","psColor","fColor","sColor","_getPluginParticleColors","zIndexOptions","zIndex","zOpacityFactor","zIndexFactor","opacityRate","bubble","strokeOpacity","zOpacity","zStrokeOpacity","_applyPreDrawUpdaters","sizeRate","_applyPostDrawUpdaters","resize","_initStyle","_initCover","_initTrail","initBackground","observe","attributes","initUpdaters","initPlugins","background","elementStyle","style","backgroundColor","backgroundImage","image","backgroundPosition","backgroundRepeat","repeat","backgroundSize","plugins","particleFillColor","particleStrokeColor","updater","updaters","afterDraw","getColorStyles","getTransformValues","beforeDraw","canvas","dataset","ariaHidden","_originalStyle","offsetHeight","offsetWidth","getContext","init","cover","_coverColorStyle","pxRatio","newSize","oldSize","Object","assign","started","resizeFactor","needsRefresh","updateActualOptions","setDensity","_applyResizePlugins","refresh","call","updaterTransform","coverRgb","coverColor","_fullScreen","_setFullScreenStyle","setProperty","fillColor","originalStyle","priority","toString","manageListener","event","add","addOptions","passive","capture","addEventListener","removeOptions","canPush","handlers","mouseMove","e","mouseTouchMove","touchStart","touchMove","touchEnd","mouseTouchFinish","mouseLeave","touchCancel","touchEndClick","mouseTouchClick","mouseUp","mouseDown","visibilityChange","handleVisibilityChange","themeChange","handleThemeChange","oldThemeChange","handleWindowResize","manageListeners","mouseInteractivity","interactivity","mouse","mousePos","clickPosition","clickTime","Date","getTime","onClick","events","handleClickMode","mediaEvent","defaultThemes","themeName","dark","light","theme","themes","auto","loadTheme","pauseOnBlur","hidden","pageHidden","pause","getAnimationStatus","play","resizeTimeout","windowResize","delay","detectType","detectsOn","mouseLeaveTmpEvent","canvasEl","parentElement","parentNode","mediaMatch","addListener","removeListener","interactivityEl","html","onHover","pointerEvents","ResizeObserver","resizeObserver","unobserve","entries","entry","target","clicking","downPosition","handled","mousePosition","clickPositionValid","doMouseTouchClick","_g","mouseEvent","clientRect","getBoundingClientRect","clientX","clientY","currentTarget","sourceRect","targetRect","canvasRect","offsetX","offsetY","touchEvent","lastTouch","touches","initDelta","fpsLimit","smooth","FrameManager","timestamp","lastFrameTime","lifeTime","duration","destroy","console","error","OptionsColor","FullScreen","ClickEvent","elementId","ids","el","Parallax","force","parallax","ResizeEvent","onDiv","onclick","ondiv","tmp","onhover","Modes","engine","_engine","_container","interactors","interactor","loadModeOptions","modes","detect_on","maxWidth","Infinity","ThemeDefault","count","CollisionsAbsorb","CollisionsOverlap","retries","Random","absorb","overlap","rotateX","rotateY","MoveCenter","acceleration","inverse","maxSpeed","generator","OutModes","attract","drift","gravity","path","outModes","spin","straight","vibrate","warp","collisions","outMode","out_mode","noise","startValue","opacity_min","anim","ParticlesDensity","area","value_area","density","limit","charKey","charAltKey","imageKey","imageAltKey","polygonKey","polygonAltKey","_value","custom","loadShape","character","polygon","images","mainKey","altKey","altOverride","emptyValue","mainDifferentValues","altDifferentValues","size_min","velocityRate","groups","number","reduceDuplicates","group","strokeToLoad","loadOptions","loadParticlesOptions","sourceOptionsArr","sourceOptions","autoPlay","detectRetina","manualParticles","pauseOnOutsideViewport","responsive","zLayers","preset","_importPreset","retina_detect","fps_limit","backgroundMode","optResponsive","sort","existingTheme","optTheme","_findDefaultTheme","defaultOptions","responsiveOptions","screen","availWidth","chosenTheme","clientDarkMode","defaultTheme","getPreset","InteractionManager","_interactors","getInteractors","_externalInteractors","_particleInteractors","isEnabled","interact","reset","fixOutMode","checkModes","coord","maxCoord","setCb","id","overrideOptions","override","unbreakable","inRange","slow","particleDestroyed","pathGenerator","roll","backColor","alter","backFactor","backSum","rolled","strokeColor","_h","_j","lastPathTime","misplaced","maxDistance","outType","ignoresResizeRatio","mainOptions","particlesOptions","shapeType","shapeOptions","overrideShapeType","shapeData","_loadShapeData","pathOptions","pathDelay","getPathGenerator","addPath","zIndexValue","initParticle","sizeOptions","sizeRange","sizeAnimation","loops","maxLoops","_calcPosition","initialPosition","copy","canvasSize","moveCenter","isCenterPercent","initialVelocity","_calculateVelocity","moveDecay","needsSort","lastZIndex","sides","getShapeDrawer","sideCountFunc","getSidesCount","mover","movers","particleInit","particleCreated","isInsideCanvas","tryCount","pluginPos","particlePosition","exactPosition","fixHorizontal","fixVertical","_checkOverlap","moveOptions","rad","radOffset","range","collisionsOptions","overlapOptions","overlaps","Point","Range","rect","circle","distPos","abs","rSum","dist","w","edges","pow","intersects","w2","h2","rectangle","capacity","_points","_divided","contains","subdivide","_NE","insert","_NW","_SE","_SW","check","found","nextId","zArray","pool","interactionManager","quadTree","getMovers","getUpdaters","addParticle","initializer","countToRemove","removeQuantity","_pushParticle","update","particlesInitialization","pathGenerators","addManualParticles","groupOptions","i","j","nb","pushing","removeAt","quantity","deleted","zIdx","dispatchEvent","_applyDensity","particlesToDelete","particleUpdate","externalInteract","particlesInteract","manualCount","numberOptions","densityFactor","_initDensityFactor","optParticlesNumber","optParticlesLimit","particlesNumber","particlesCount","filter","densityOptions","pop","canAdd","warn","devicePixelRatio","ratio","attractDistance","sizeAnimationSpeed","moveDistance","moveDrift","moveSpeed","guardCheck","loadContainerOptions","defaultPathGeneratorKey","defaultPathGenerator","generate","_delay","_firstStart","_paused","_sourceOptions","_initialSourceOptions","frameManager","_options","_eventListeners","IntersectionObserver","_intersectionObserver","_intersectionManager","clickOrTouchHandler","posRetina","queryCircle","clickHandler","touchStartHandler","touched","touchMoved","touchMoveHandler","touchEndHandler","changedTouches","radiusX","radiusY","touchCancelHandler","has","stop","keys","mainArr","dom","findIndex","refreshTime","_drawAnimationFrame","nextFrame","JSON","stringify","quality","toBlob","exportImage","shapes","getSupportedShapes","availablePlugins","getAvailablePlugins","particlesSetup","_currentTheme","needsUpdate","start","noiseOrGenerator","setPath","pathOrGenerator","oldGenerator","Promise","resolve","_delayTimeout","addListeners","HTMLElement","removeListeners","newMaxWidth","setResponsive","setTheme","responsiveMaxWidth","isIntersecting","getDataFromUrl","jsonUrl","url","response","fetch","ok","json","tagId","params","remote","loadRemoteOptions","domContainer","getElementById","createElement","querySelector","append","currentOptions","oldIndex","old","domItem","tagName","toLowerCase","existingCanvases","getElementsByTagName","appendChild","newItem","loadCanvas","newId","newIndex","getItemsFromInitializer","initializers","values","Plugins","_initializers","presets","initInteractor","initMover","initUpdater","getPlugin","presetKey","needsPlugin","_domArray","_eventDispatcher","_initialized","_loader","interactorInitializer","addInteractor","moverInitializer","addParticleMover","updaterInitializer","addParticleUpdater","addPathGenerator","addPlugin","addPreset","customDrawer","addShapeDrawer","pathConfigJson","loadJSON","instance","setJSON","addClickHandler","rgbColor","ExternalInteractorBase","ParticlesInteractorBase","rgbColorManager","hslColorManager","tsParticles","AbsorberSizeLimit","draggable","orbits","absorbers","dragging","calcPosition","mouseDist","sizeFactor","absorberOrbit","needsNewPosition","updateParticlePosition","translate","arc","newPosition","setTo","minSize","absorberOrbitDirection","orbitRadius","orbitAngle","orbitDirection","updateFunc","addV","addTo","interactivityAbsorbers","getAbsorber","idxOrName","addAbsorber","absorber","absorberOptions","modeAbsorbers","absorbersModeOptions","absorbersOptions","aPosition","loadAbsorbersPlugin","rate","sizeOffset","split","destroyOptions","splitCount","destroyBounds","parent","splitParticlesOptions","splitOptions","particlesSplitOptions","addSplitParticle","loadDestroyUpdater","generateTheta","u","theta","atan","tan","randomTheta","maxRadius","randomRadius","EmitterLife","wait","EmitterSize","life","startCount","domId","spawnColor","emitters","_currentDuration","_currentEmitDelay","_currentSpawnDelay","_initialPosition","_spawnDelay","_shape","emitterShapeManager","getShape","_firstSpawn","_startParticlesAdded","_particlesOptions","_lifeCount","_immortal","emitter","elRect","_emitDelay","prepareToDie","emitParticles","_duration","emit","removeEmitter","getSize","singleParticlesOptions","hslAnimation","pPosition","randomPosition","initValue","maxValue","colorOffset","emitFactor","colorSpeed","interactivityEmitters","getEmitter","addEmitter","playEmitter","externalPlay","pauseEmitter","externalPause","emitterOptions","modeEmitters","emittersModeOptions","usedIndexes","includes","emittersOptions","ePosition","ShapeManager","randomSquareCoordinate","halfW","halfH","side","emitterMode","loadEmittersPlugin","addEmitterShape","addShape","pauseOnStop","trailOptions","optDelay","canEmit","_lastPosition","loadExternalTrailInteraction","darken","enlighten","updateRoll","rollHorizontal","rollVertical","rollOpt","alterType","loadRollUpdater","initPjs","particlesJS","then","catch","setOnClickHandler","pJSDom","updateAngle","rotateOptions","rotateAnimation","rotateDirection","loadAngleUpdater","applyDistance","dxFixed","dyFixed","hDistance","vDistance","vel","maxCanvasSize","applyPath","pathEnabled","getProximitySpeedFactor","gravityOptions","spinOptions","spinPos","spinCenter","spinAcceleration","slowFactor","baseSpeed","maxSize","speedFactor","diffFactor","gravityFactor","multTo","mult","zVelocityFactor","loadBaseMover","addMover","CircleDrawer","loadCircleShape","updateColorValue","valueAnimation","decrease","updateColor","loadColorUpdater","Attract","easing","finish","attractModeDistance","mouseMoveStatus","hoverEnabled","hoverMode","clickEnabled","clickMode","hoverAttract","clickAttract","attractRadius","processAttract","attractOptions","attractFactor","normVec","subFrom","loadExternalAttractInteraction","Bounce","bounceModeDistance","processMouseBounce","singleSelectorBounce","tolerance","processBounce","querySelectorAll","elem","offsetLeft","offsetTop","loadExternalBounceInteraction","calculateBubbleValue","particleValue","modeValue","optionsValue","bubbleModeDistance","bubbleModeSize","hoverBubble","clickBubble","singleSelectorHover","divBubble","mouseClickPos","durationEnd","distMouse","timeSpent","sizeData","bubbleObj","optValue","particlesObj","process","opacityData","hoverBubbleColor","pointDistance","hoverBubbleSize","hoverBubbleOpacity","bubbleOptions","finalColor","modeColor","bubbleColor","pColor","modeOpacity","optOpacity","pOpacity","modeSize","optSize","pSize","bubbleParam","bubbleDuration","bubbleDistance","particlesParam","pObjBubble","pObj","repulseRadius","loadExternalBubbleInteraction","ConnectLinks","links","lineLinked","line_linked","gradient","gradStop","sourcePos","destPos","midRgb","grad","createLinearGradient","addColorStop","drawConnectLine","lineStyle","connectOptions","connect","drawConnection","ls","linksWidth","connectModeDistance","connectModeRadius","slice","distMax","xDiff","yDiff","loadExternalConnectInteraction","drawGrabLine","colorLine","drawGrab","lineColor","beginPos","grab","grabModeDistance","grabLineOptions","lineOpacity","opacityLine","grabLineColor","linksOptions","loadExternalGrabInteraction","loadExternalPauseInteraction","Push","particles_nb","pushOptions","pushNb","loadExternalPushInteraction","Remove","removeNb","loadExternalRemoveInteraction","RepulseBase","repulse","repulseModeDistance","hoverRepulse","clickRepulse","singleSelectorRepulse","divRepulse","repulseDistance","vect","processRepulse","repulseOptions","repulseFactor","loadExternalRepulseInteraction","Slow","slowModeRadius","particlePos","proximityFactor","loadExternalSlowInteraction","currentColorRegex","replaceColorSvg","imageShape","svgData","colorStyle","preFillIndex","substring","loadImage","loading","img","Image","src","downloadSvgImage","text","replaceImageColor","imageData","svgColoredData","imageRes","loaded","replaceColor","replace_color","svg","Blob","domUrl","URL","webkitURL","createObjectURL","revokeObjectURL","img2","_images","containerImages","getImages","globalAlpha","drawImage","loadImageShape","addImage","imageFunc","imageDrawer","lifeOptions","delayTime","time","justSpawned","widthRange","heightRange","loadLifeUpdater","LineDrawer","loadLineShape","checkDestroy","minValue","updateOpacity","opacityOptions","opacityAnimation","opacityRange","loadOpacityUpdater","bounceHorizontal","newVelocity","minPos","bounceVertical","particleBounce","vx","vy","pRadius","circVec","newDx","newDy","wrap","newPos","sizeValue","nextBounds","updateOutMode","loadOutModesUpdater","parallaxForce","canvasCenter","parallaxSmooth","centerDistance","loadParallaxMover","ax","ay","p1Factor","p2Factor","loadParticlesAttractInteraction","updateAbsorb","r2","deleteP","resolveCollision","radius1","radius2","round","distP","loadParticlesCollisionsInteraction","posNE","posSE","posSW","biggerCircle","rectSW","frequency","triangles","getLinkDistance","optDistance","pos2NE","pos2SE","pos2SW","linkContainer","linksColor","linksColors","linkOpt1","linksDistance","linkOpt2","setColor","loadInteraction","drawLinkLine","drawn","pi1","pi2","endNE","d1","yi","endSW","d2","xi","endSE","d3","drawLinkTriangle","pos3","colorTriangle","opacityTriangle","getLinkKey","join","setLinkFrequency","dictionary","_freqs","pOptions","p1Links","getLinkFrequency","link","drawTriangles","twinkle","lines","twinkleFreq","twinkleRgb","twinkling","link1","link2","triangleOptions","vertices","linkFreq","vertex","triangleFreq","getTriangleFrequency","loadPlugin","loadParticlesLinksInteraction","PolygonDrawerBase","getCenter","getSidesData","sideCount","numerator","denominator","decimalSides","interiorAngleDegrees","interiorAngle","nb_sides","loadGenericPolygonShape","loadTriangleShape","loadPolygonShape","updateSize","sizeVelocity","loadSizeUpdater","fixFactor","SquareDrawer","loadSquareShape","StarDrawer","star","inset","loadStarShape","updateStrokeColor","_k","strokeHslColor","loadStrokeColorUpdater","validTypes","textData","textParticle","randomIndexData","fillText","strokeText","promises","all","loadTextShape","loadSlim","updateTilt","tilt","tiltAnimation","cosDirection","sinDirection","tiltOptions","tiltDirection","loadTiltUpdater","twinkleOptions","twinklingOpacity","twinkleStyle","needsTwinkle","loadTwinkleUpdater","rangeSpeed","updateWobble","wobble","angleSpeed","wobbleDistance","wobbleOpt","loadWobbleUpdater","loadFull","particlesInitSo","nextBtnColor","totalPages","apiUrl","isLoggedIn","components","LoginContent","KeyFeatures","UseCases","HelpPage","LangSwitch","SoParticles","userStatus","nextPage","previousPage"],"mappings":"kHAAA,W,kFCAA,W,gECA4D,EAAU,W,IAAYA,EAAM,K,EAAC,EAAO,MAAKC,G,OAAM,SAAc,C,MAAgB,CAAW,MAAQ,QAAG,0BAACC,MAAW,GAAUC,MAAI,I,YAA+B,EAAD,GAAJC,E,IAAQ,Y,GAAoBD,SAAQ,G,IAACE,IAAY,K,MAAY,GAAC,Q,IAAC,E,YAA6B,O,MAAM,CAAuB,mBAAIC,IAAO,EAAsB,yBAAQ,KAAM,oB,KAAuB,O,GAAoBD,SAAW,G,IAAQL,EAAM,O,MAAC,UAAY,C,YAAiB,O,MAAM,CAAuB,mBAAIM,IAAO,EAAsB,yBAAW,2B,MAAiD,CAAY,MAAC,UAACC,SAAU,SAAC,GAAS,aACxnB,yB,6BCiCc,GACfC,kBAEAC,OACAC,MACAC,WACAC,eAIAC,gBACA,OACAC,aACAb,oBAIAc,0CACAC,yCACAA,4BAAAC,6BAGAC,yCACAC,iDACAC,yBACA,yBAGAC,mBACA,iBACA,kBAGA,MAIAC,mBACA,oBACA,iCACA,iBACA,sCAEA,4BAIAC,OACAT,oBAEA,oBACA,+BCrFoT,I,YCOhTU,EAAY,eACd,EACA,EACAC,GACA,EACA,KACA,KACA,MAIa,OAAAD,E,kEClBf,W,uHCAuK,W,IAAK,OAAE,EAAK,QAAM,G,OAACnB,SAAY,oBAA6B,YAAK,qBAAcL,MAAM,CAAC,MAAO,GAAK,WAAoB0B,SAAW,C,YAAW,8BAAM,iBAAE,MAAK,CAASrB,YAAoC,KAAO,OAAI,C,YAAS,CAAC,OAAQ,S,CAAW,SAAK,C,YAAK,iBAAqB,OAAIsB,KAAQ,KAAE3B,GAAM,IAAC,GAAK,IAAa,QAAI2B,GAAG,KAAOtB,aAAY,WAAqDL,GAAK,MAAC,C,MAAC,CAAyB,mBAA4JK,SAAW,CAAkCL,YAAM,iB,CAAY,GAAX,OAAW,kB,MAAK,CAAK,SAAK,gBAASM,EAAIsB,KAAe,GAAfA,EAAU,KAAU,EAAC,sGAACvB,YAAY,iCAAkB,MAAOwB,CAAqBxB,UAAqB,GAAI,IAAKL,GAAM,M,CAAuC,aAA+L,EAAI,KAAxL8B,SAAe,+BAAG,CAAU,GAATH,EAAG,KAAM,SAACtB,YAAY,UAAgB,EAAC,IAAK0B,CAAmB1B,OAAyCqB,QAAY,GAAZA,EAAW,gBAAE,OAAY,kBAAS1B,GAAK,MAAC,C,YAAQ,oBAAa,U,YAAS,6B,YAAS,CAAC,aAAQ,QAAsB,OAAK,KAAK4B,KAAwBvB,OAAoCL,GAAM,IAAC,GAAK,IAAI,OAAW,aAAS,W,CAA0B,aAAoO,OAA7N,UAAQ,YAAC,wBAACgC,MAAG,CAAC,IAAO,GAAiB,SAAIL,KAAG,GAAkEtB,MAAW,EAAC,aAAoCqB,eAAiC,GAAC,CAAC1B,MAAM,iB,CAAa,SAAQ,4C,YAAS,oC,YAAS,CAAC,aAAQ,SAAsB,OAAK,KAAK4B,KAAwBvB,OAAoCL,GAAM,IAAC,GAAK,IAAI,OAAW,aAAS,W,CAA0B,a,OAAO,UAAQ,YAAC,wBAACgC,MAAG,CAAC,IAAO,GAAa,SAAIL,KAAG,GAC5xD,qBACGF,e,0KCFmFpB,a,IAAuBqB,O,EAAa,QAAY,G,OAAU,QAAQ,GAAM,O,YAAY,WAAO,aAAIC,aAAW,SAACD,MAAW,OAAE,YAAS,SAAU1B,GAAK,OAAC,C,YAAS,CAAQ,iB,MAAmG,CAAoB,cAAI,YAAY,OAAEK,MAAY,WAAQ,uDAACqB,aAAY,YAAsB,YAAE,YAAWC,SAAWtB,YAAY,CAA+BC,aAAcA,WAA8EN,GAAK,MAAC,U,YAAS,8BAAQ,6DAAE,YAAY,QAAEK,OAAwBL,MAAM,W,CAAiB,SAAQ,C,YAAoB,Y,MAAC,CAAY,KAAK,SAAY,gBAAIM,MAAOA,GAA+ED,OAAW,GAASL,GAAM,eAAiB,8DAAuR,OAAvR,UAAE,YAAY,QAAEK,OAAwBL,MAAM,W,CAAiB,SAAQ,C,YAAoB,Y,MAAC,CAAY,KAAK,SAAQ,gBAAIM,MAAOA,GAA6GD,OAAW,GAAQL,GAAM,WAAiB,4FAAE,YAAY,OAAC0B,OAAa,iB,CAAqC,SAAS,C,YAAoB,CAAS,sBAAIpB,MAAOA,OAAyGD,OAAW,SAAQL,YAAM,WAAiB,+FAAE,YAAY,OAAEK,OAAwBL,MAAM,W,CAAiB,SAAQ,C,YAAoB,Y,MAAC,CAAY,KAAK,SAAW,gBAAIM,MAAOA,GAC3gD,UACGmB,iB,mECgFW,GACfjB,qBACAC,OACAwB,UACAtB,WACAC,eAIAG,2BACAC,8CC5FsT,I,wBCQlTQ,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,EAAAA,E,QCnB8DnB,aAAmC,IAAGsB,EAAG,KAAMtB,UAAY,GAAW,OAAM,EAAG,MAAO,CAA2DA,YAAY,yBAAOL,GAAK,KAAC,C,YAAC,aAA8B,iEAAE,YAAY,OAAEA,MAAM,CAAC,gBAAO,iBAAM,CAAC2B,EAAG,QAAS3B,MAAM,CAAC,W,CAAmC,SAAM,CAAwB,OAAI,aAAO,KAASA,YAAM,KAAC,iCAAyB2B,GAAG,EAAI,OAAC,CAACD,OAAa,aAAa,WAAS,CAACpB,EAAG,KAAIA,CAA2CoB,YAAY,CAAC,aAAa,SAAS,CAACpB,EAAI4B,GAAG5B,EAAI6B,GAAG7B,EAAI8B,GAAG,2BAA8B,CAAqB/B,YAAY,CAAOL,aAAM,SAA+B,iEAAE,YAAY,OAAEA,MAAM,CAAC,gBAAO,iBAAM,CAAC2B,EAAG,QAAS3B,MAAM,CAAC,W,CAAmC,SAAM,CAAsB,OAAI,aAAO,KAASA,YAAM,KAAC,+BAAyB2B,GAAG,EAAI,OAAC,CAACD,OAAa,aAAa,WAAS,CAACpB,EAAG,KAAIA,CAA2CoB,YAAY,CAAC,aAAa,SAAS,CAACpB,EAAI4B,GAAG5B,EAAI6B,GAAG7B,EAAI8B,GAAG,2BAA8B,CAAqB/B,YAAY,CAAOL,aAAM,SAA+B,iEAAE,YAAY,OAAEA,MAAM,CAAC,gBAAO,iBAAM,CAAC2B,EAAG,QAAS3B,MAAM,CAAC,W,CAAmC,SAAM,CAAkB,OAAI,aAAO,KAASA,YAAM,KAAC,2BAAyB2B,GAAG,EAAI,OAAC,CAACD,OAAa,aAAa,WAAS,CAACpB,EAAG,KAAIA,CAA2CoB,YAAY,CAAC,aAAa,SAAS,CAACpB,EAAI4B,GAAG5B,EAAI6B,GAAG7B,EAAI8B,GAAG,2BAA8B,CAAqB/B,YAAY,CAAOL,aAAM,SAA+B,iEAAE,YAAY,OAAEA,MAAM,CAAC,gBAAO,iBAAM,CAAC2B,EAAG,QAAS3B,MAAM,CAAC,W,CAAmC,SAAM,CAAuB,OAAI,aAAO,KAASA,YAAM,KAAC,gCAAyB2B,GAAG,EAAI,OAAC,CAACD,OAAa,aAAa,WAAS,CAACpB,EAAG,KAAIA,CAA2CoB,YAAY,CAAC,aAAa,SAAS,CAACpB,EAAI4B,GAAG5B,EAAI6B,GAAG7B,EAAI8B,GAAG,2BAA8B,CAAqB/B,YAAY,CAAOL,aAAM,SAA+B,iEAAE,YAAY,OAAEA,MAAM,CAAC,gBAAO,iBAAM,CAAC2B,EAAG,QAAS3B,MAAM,CAAC,W,CAAmC,SAAM,CAAkB,OAAI,aAAO,KAASA,YAAM,KAAC,2BAAyB2B,GAAG,EAAI,OAAC,CAACD,OAAa,aAAa,WAAS,CAACpB,EAAG,KAAIA,CAA2CoB,YAAY,CAAC,aAAa,SAAS,CAACpB,EAAI4B,GAAG5B,EAAI6B,GAAG7B,EAAI8B,GAAG,2BAA8B,CAAqB/B,YAAY,CAAOL,aAAM,SAA+B,iEAAE,YAAY,OAAEA,MAAM,CAAC,gBAAO,iBAAM,CAAC2B,EAAG,QAAS3B,MAAM,CAAC,W,CAAmC,SAAM,CAAmB,OAAI,aAAO,KAASA,YAAM,KAAC,4BAAyB2B,GAAG,EAAI,OAAC,CAACD,OAAa,aAAa,WAAS,CAACpB,EAAG,KAAIA,CAA2CoB,YAAY,CAAC,aAAa,SAAS,CAACpB,EAAI4B,GAAG5B,EAAI6B,GAAG7B,EAAI8B,GAAG,2BAA8B,CACptF,aACGX,aAAgB,S,iEC4EL,GACfjB,oBC/EqT,ICQjT,G,UAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,I,QCnB8DH,aAAmC,IAAGsB,EAAG,KAAMtB,UAAY,GAAqB,OAAM,EAAG,MAAKC,CAAmFD,YAAY,yBAAOL,GAAK,KAAC,C,YAAC,uBAA8B,sFAAE,YAAY,OAAEA,MAAM,CAAC,gBAAO,iBAAM,CAAC2B,EAAG,QAAS3B,MAAM,CAAC,W,CAAmC,SAAM,CAAwB,OAAI,aAAO,KAASA,YAAM,KAAC,iCAAyB2B,GAAG,EAAI,OAAC,CAACD,OAAa,aAAa,WAAS,CAACpB,EAAG,KAAIA,CAAgDoB,YAAY,CAAC,aAAa,SAAS,CAACpB,EAAI4B,GAAG,EAAG,GAAC5B,EAAI6B,GAAG7B,0BAAO,OAAgDD,YAAY,CAAYqB,aAAY,SAA0B,mEAAC1B,YAAM,Y,YAAU,CAAS,kBAAO,QAAwB,MAAMkC,CAA4E7B,OAAW,SAAQL,KAAM,yBAA+B,yEAAE,YAAY,OAAEA,MAAM,CAAC,gBAAO,iBAAM,CAAC2B,EAAG,QAAS3B,MAAM,CAAC,W,CAAmC,SAAM,CAAwB,OAAI,aAAO,KAASA,YAAM,KAAC,iCAAyB2B,GAAG,EAAI,OAAC,CAACD,OAAa,aAAa,WAAS,CAACpB,EAAG,KAAIA,CAAgDoB,YAAY,CAAC,aAAa,SAAS,CAACpB,EAAI4B,GAAG,EAAG,GAAC5B,EAAI6B,GAAG7B,0BAAO,OAA4DD,YAAY,CAAOL,aAAM,SAA+B,8EAAE,YAAY,OAAEA,MAAM,CAAC,gBAAO,iBAAM,CAAC2B,EAAG,QAAS3B,MAAM,CAAC,W,CAAmC,SAAM,CAAqB,OAAI,aAAO,KAASA,YAAM,KAAC,8BAAyB2B,GAAG,EAAI,OAAC,CAACD,OAAa,aAAa,WAAS,CAACpB,EAAG,KAAIA,CAAgDoB,YAAY,CAAC,aAAa,SAAS,CAACpB,EAAI4B,GAAG,EAAG,GAAC5B,EAAI6B,GAAG7B,0BAAO,OAA4DD,YAAY,CAAOL,aAAM,SAA+B,8EAAE,YAAY,OAAEA,MAAM,CAAC,gBAAO,iBAAM,CAAC2B,EAAG,QAAS3B,MAAM,CAAC,W,CAAmC,SAAM,CAAwB,OAAI,aAAO,KAASA,YAAM,KAAC,iCAAyB2B,GAAG,EAAI,OAAC,CAACD,OAAa,aAAa,WAAS,CAACpB,EAAG,KAAIA,CAAgDoB,YAAY,CAAC,aAAa,SAAS,CAACpB,EAAI4B,GAAG,EAAG,GAAC5B,EAAI6B,GAAG7B,0BAAO,OACnoE,aACGmB,aAAgB,S,8EC0EL,GACfjB,iBC7EkT,ICO9S,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,I,QClB8DH,aAAmC,IAAGsB,EAAG,KAAMtB,UAAY,GAAW,OAAM,EAAG,MAAO,CAAqEA,YAAY,yBAAOL,GAAK,KAAC,C,YAAC,aAA8B,0EAAE,YAAY,OAAEA,MAAM,CAAC,gBAAO,iBAAM,CAAC2B,EAAG,QAAS3B,MAAM,CAAC,W,CAAmC,SAAM,CAAqB,OAAI,aAAO,KAASA,YAAM,KAAC,8BAAyB2B,GAAG,EAAI,OAAC,CAACD,OAAa,aAAa,WAAS,CAACpB,EAAG,KAAIA,CAAwDoB,YAAY,CAAC,aAAa,SAAS,CAACpB,EAAI4B,GAAG,EAAG,GAAC5B,EAAI6B,GAAG7B,kCAAO,MAAoC,CAAcD,YAAY,CAAYqB,aAAY,S,CAA0B,SAAY,EAAC,yDAAM,YAAC,YAAC1B,YAAM,CAAC,kBAAiB,OAAC,aAAO,QAA0D,MAAMkC,CAAuE7B,OAAW,SAAQL,KAAM,2DAA+B,oEAAE,YAAY,OAAEA,MAAM,CAAC,gBAAO,iBAAM,CAAC2B,EAAG,QAAS3B,MAAM,CAAC,W,CAAmC,SAAM,CAAgB,OAAI,aAAO,KAASA,YAAM,KAAC,yBAAyB2B,GAAG,EAAI,OAAC,CAACD,OAAa,aAAa,WAAS,CAACpB,EAAG,KAAIA,CAAoDoB,YAAY,CAAC,aAAa,SAAS,CAACpB,EAAI4B,GAAG,EAAG,GAAC5B,EAAI6B,GAAG7B,8BAAO,MAAgC,CAAcD,YAAY,CAAYqB,aAAY,S,CAA0B,SAAY,EAAC,qDAAM,YAAC,YAAC1B,YAAM,CAAC,kBAAS8B,OAA6B,aAAS,QAAmC,OAAIxB,QAAO,GAAD,EAAC,gBAA0DD,OAAW,SAAQL,KAAM,oBAA+B,8DAAE,YAAY,OAAEA,MAAM,CAAC,gBAAO,iBAAM,CAAC2B,EAAG,QAAS3B,MAAM,CAAC,W,CAAmC,SAAM,CAAuB,OAAI,aAAO,KAASA,YAAM,KAAC,gCAAyB2B,GAAG,EAAI,OAAC,CAACD,OAAa,aAAa,WAAS,CAACpB,EAAG,KAAIA,CAA0DD,YAAY,CAAOqB,aAAY,S,CAAqB,OAAW,GAAC,gDAAQ,mBAAE,YAAY,CAACrB,aAAY,OAA8BC,YAAO,WAAiE,CAACA,EAAG,OAAI,CAAsBoB,YAAY,6B,CAAC,iBAAa,UAAM,0CAAG,CAACpB,EAAI4B,GAAG,cAAW5B,EAAI8B,IAAG,CAAmDV,YAAY,CAAC,aAAa,SAAS,CAACpB,EAAI4B,GAAG5B,IAAM,EAAI,GAAG,EAAC,uCAA0C,OAAC,OAACoB,YAAY,CAAC,aAAa,SAAS,CAACpB,EAAI4B,GAAG5B,EAAI6B,GAAG7B,EAAI8B,GAAG,oCAAmCT,EAAG,IAAI,CAACD,YAAY,CAAC,aAAa,SAAS,CAACpB,EAAI4B,GAAG5B,EAAI6B,GAAG7B,EAAI8B,GAAG,mCAAmC,EAAG,IAAK,CAAEV,YAAY,CAAC,aAAa,SAAS,CAACpB,EAAI4B,GAAG,EAAG,GAAC5B,EAAI6B,GAAG7B,oCAAO,EAAkC,KAAE,CAAeoB,YAAY,CAAC,aAAa,SAAS,CAACpB,EAAI4B,GAAG,IAAI5B,EAAI6B,GAAG7B,EAAI8B,GAAG,oCAAoC,OAAO,EAAG,IAAI,CAAEV,YAAY,CAAC,aAAa,SAAS,CAACpB,EAAI4B,GAAG,IAAI5B,EAAI6B,GAAG7B,EAAI8B,GAAG,qCAAqC,OAAO,EAAG,IAAK,CAAEV,YAAY,CAAC,aAAa,SAAS,CAACpB,EAAI4B,GAAG,IAAI5B,EAAI6B,GAAG7B,EAAI8B,GAAG,sCAAoC,OAAS,EAAC,KAAI,CAACV,YAAY,CAAC,aAAa,SAAS,CAACpB,EAAI4B,GAAG5B,IAAM,EAAI,GAAG,EAAC,uCAA0C,OAAC,OAC/jG,aACGmB,aAAgB,S,kECoFL,GACfjB,gBACAO,2BACAC,qDAEAE,0BACAC,gDAEAkB,mBAAA,oKACA,yDADA,KC9FkT,ICQ9S,G,UAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,I,oBCnBXC,EAAS,WAAkB,IAAIhC,EAAIiC,KAAKZ,EAAGrB,EAAIkC,MAAMb,GAAG,OAAOA,EAAG,YAAY,CAACD,YAAY,CAAC,OAAS,OAAO,MAAQ,OAAO,SAAW,WAAW,SAAW,SAAS,UAAU,IAAI,aAAa,QAAQ1B,MAAM,CAAC,GAAK,cAAc,cAAgBM,EAAImC,cAAc,gBAAkBnC,EAAIoC,gBAAgB,QAAUpC,EAAIqC,oBAExTlB,EAAkB,GCFf,MAAMmB,EACT,cACIL,KAAKM,WAAa,IAAIC,IAE1B,iBAAiBlC,EAAMmC,GACnB,IAAIC,EACJT,KAAKU,oBAAoBrC,EAAMmC,GAC1BR,KAAKM,WAAWK,IAAItC,IACrB2B,KAAKM,WAAWM,IAAIvC,EAAM,IAEO,QAApCoC,EAAKT,KAAKM,WAAWK,IAAItC,UAA0B,IAAPoC,GAAyBA,EAAGI,KAAKL,GAElF,cAAcnC,EAAMyC,GAChB,IAAIL,EACiC,QAApCA,EAAKT,KAAKM,WAAWK,IAAItC,UAA0B,IAAPoC,GAAyBA,EAAGM,QAASC,GAAYA,EAAQF,IAE1G,iBAAiBzC,GACb,QAAS2B,KAAKM,WAAWK,IAAItC,GAEjC,wBAAwBA,GACfA,EAID2B,KAAKM,WAAWW,OAAO5C,GAHvB2B,KAAKM,WAAa,IAAIC,IAM9B,oBAAoBlC,EAAMmC,GACtB,MAAMU,EAAMlB,KAAKM,WAAWK,IAAItC,GAChC,IAAK6C,EACD,OAEJ,MAAMC,EAASD,EAAIC,OAAQC,EAAMF,EAAIG,QAAQb,GACzCY,EAAM,IAGK,IAAXD,EACAnB,KAAKM,WAAWW,OAAO5C,GAGvB6C,EAAII,OAAOF,EAAK,KCxCrB,MAAMG,EACT,YAAYC,EAAWC,EAAGC,GACtB,GAAyB,kBAAdF,GAA0BA,EAAW,CAC5CxB,KAAK2B,EAAIH,EAAUG,EACnB3B,KAAKyB,EAAID,EAAUC,EACnB,MAAMG,EAAWJ,EACjBxB,KAAK0B,EAAIE,EAASF,EAAIE,EAASF,EAAI,MAElC,SAAkBG,IAAdL,QAAiCK,IAANJ,EAMhC,MAAM,IAAIK,MAAM,oDALhB9B,KAAK2B,EAAIH,EACTxB,KAAKyB,EAAIA,EACTzB,KAAK0B,EAAU,OAANA,QAAoB,IAANA,EAAeA,EAAI,GAMlD,oBACI,OAAOH,EAASQ,OAAO,EAAG,EAAG,GAEjC,YACI,OAAOC,KAAKC,MAAMjC,KAAKyB,EAAGzB,KAAK2B,GAEnC,UAAUO,GACNlC,KAAKmC,gBAAgBD,EAAOlC,KAAKmB,QAErC,aACI,OAAOa,KAAKI,KAAKpC,KAAKqC,eAE1B,WAAWlB,GACPnB,KAAKmC,gBAAgBnC,KAAKkC,MAAOf,GAErC,aAAamB,GACT,OAAOf,EAASQ,OAAOO,EAAOX,EAAGW,EAAOb,EAAGa,EAAOZ,GAEtD,cAAcC,EAAGF,EAAGC,GAChB,OAAO,IAAIH,EAASI,EAAGF,EAAGC,GAE9B,IAAIa,GACA,OAAOhB,EAASQ,OAAO/B,KAAK2B,EAAIY,EAAEZ,EAAG3B,KAAKyB,EAAIc,EAAEd,EAAGzB,KAAK0B,EAAIa,EAAEb,GAElE,MAAMa,GACFvC,KAAK2B,GAAKY,EAAEZ,EACZ3B,KAAKyB,GAAKc,EAAEd,EACZzB,KAAK0B,GAAKa,EAAEb,EAEhB,OACI,OAAOH,EAASiB,MAAMxC,MAE1B,WAAWuC,GACP,OAAOvC,KAAKyC,IAAIF,GAAGpB,OAEvB,aAAaoB,GACT,OAAOvC,KAAKyC,IAAIF,GAAGF,cAEvB,IAAIK,GACA,OAAOnB,EAASQ,OAAO/B,KAAK2B,EAAIe,EAAG1C,KAAKyB,EAAIiB,EAAG1C,KAAK0B,EAAIgB,GAE5D,MAAMA,GACF1C,KAAK2B,GAAKe,EACV1C,KAAKyB,GAAKiB,EACV1C,KAAK0B,GAAKgB,EAEd,cACI,OAAO1C,KAAK2B,GAAK,EAAI3B,KAAKyB,GAAK,EAEnC,KAAKiB,GACD,OAAOnB,EAASQ,OAAO/B,KAAK2B,EAAIe,EAAG1C,KAAKyB,EAAIiB,EAAG1C,KAAK0B,EAAIgB,GAE5D,OAAOA,GACH1C,KAAK2B,GAAKe,EACV1C,KAAKyB,GAAKiB,EACV1C,KAAK0B,GAAKgB,EAEd,OAAOR,GACH,OAAOX,EAASQ,OAAO/B,KAAK2B,EAAIK,KAAKW,IAAIT,GAASlC,KAAKyB,EAAIO,KAAKY,IAAIV,GAAQlC,KAAK2B,EAAIK,KAAKY,IAAIV,GAASlC,KAAKyB,EAAIO,KAAKW,IAAIT,GAAQ,GAErI,MAAMW,GACF7C,KAAK2B,EAAIkB,EAAElB,EACX3B,KAAKyB,EAAIoB,EAAEpB,EACX,MAAMqB,EAAMD,EACZ7C,KAAK0B,EAAIoB,EAAIpB,EAAIoB,EAAIpB,EAAI,EAE7B,IAAIa,GACA,OAAOhB,EAASQ,OAAO/B,KAAK2B,EAAIY,EAAEZ,EAAG3B,KAAKyB,EAAIc,EAAEd,EAAGzB,KAAK0B,EAAIa,EAAEb,GAElE,QAAQa,GACJvC,KAAK2B,GAAKY,EAAEZ,EACZ3B,KAAKyB,GAAKc,EAAEd,EACZzB,KAAK0B,GAAKa,EAAEb,EAEhB,gBAAgBQ,EAAOf,GACnBnB,KAAK2B,EAAIK,KAAKW,IAAIT,GAASf,EAC3BnB,KAAKyB,EAAIO,KAAKY,IAAIV,GAASf,GC5F5B,MAAM,UAAeI,EACxB,YAAYC,EAAWC,GACnBsB,MAAMvB,EAAWC,EAAG,GAExB,oBACI,OAAO,EAAOM,OAAO,EAAG,GAE5B,aAAaO,GACT,OAAO,EAAOP,OAAOO,EAAOX,EAAGW,EAAOb,GAE1C,cAAcE,EAAGF,GACb,OAAO,IAAI,EAAOE,EAAGF,ICX7B,IAAIuB,EAAUhB,KAAKiB,OACnB,MAAMC,EAAU,IAAI3C,IAMb,SAAS4C,EAAUlF,GACtB,OAAOiF,EAAQvC,IAAI1C,IAAS,CAAEmF,GAAUA,GAKrC,SAASC,IACZ,OAAOC,EAAMN,IAAW,EAAG,EAAI,OAE5B,SAASM,EAAMC,EAAKC,EAAKC,GAC5B,OAAOzB,KAAKwB,IAAIxB,KAAKyB,IAAIF,EAAKC,GAAMC,GAEjC,SAASC,EAAIC,EAAOC,EAAOC,EAASC,GACvC,OAAO9B,KAAK+B,OAAOJ,EAAQE,EAAUD,EAAQE,IAAYD,EAAUC,IAEhE,SAASE,EAAcC,GAC1B,MAAMR,EAAMS,GAAYD,GACxB,IAAIT,EAAMW,GAAYF,GAItB,OAHIR,IAAQD,IACRA,EAAM,GAEHH,KAAeI,EAAMD,GAAOA,EAEhC,SAASY,GAAchB,GAC1B,MAAwB,kBAAVA,EAAqBA,EAAQY,EAAcZ,GAEtD,SAASe,GAAYf,GACxB,MAAwB,kBAAVA,EAAqBA,EAAQA,EAAMI,IAE9C,SAASU,GAAYd,GACxB,MAAwB,kBAAVA,EAAqBA,EAAQA,EAAMK,IAE9C,SAASY,GAAc/B,EAAQc,GAClC,GAAId,IAAWc,QAAoBvB,IAAVuB,GAAyC,kBAAXd,EACnD,OAAOA,EAEX,MAAMkB,EAAMW,GAAY7B,GAASmB,EAAMS,GAAY5B,GACnD,YAAiBT,IAAVuB,EACD,CACEI,IAAKxB,KAAKwB,IAAIA,EAAKJ,GACnBK,IAAKzB,KAAKyB,IAAIA,EAAKL,IAErBiB,GAAcb,EAAKC,GAEtB,SAASa,GAASC,GACrB,MAAMtB,EAASsB,EAAQtB,QAAQ,OAAEuB,EAAM,aAAEC,GAAmC,mBAAXxB,EAC3D,CACEuB,OAAQvB,EACRwB,aAAc,GAEhBxB,EACN,OAAgBmB,GAATI,EAAuBH,GAAcE,EAAQnB,MAAOqB,GAA+BF,EAAQnB,OAE/F,SAASsB,GAAaC,EAAQC,GACjC,MAAMC,EAAKF,EAAOhD,EAAIiD,EAAOjD,EAAGmD,EAAKH,EAAOlD,EAAImD,EAAOnD,EACvD,MAAO,CAAEoD,GAAIA,EAAIC,GAAIA,EAAIC,SAAU/C,KAAKI,KAAKyC,GAAM,EAAIC,GAAM,IAE1D,SAASE,GAAYL,EAAQC,GAChC,OAAOF,GAAaC,EAAQC,GAAQG,SAEjC,SAASE,GAA0BC,EAAWC,EAAUC,GAC3D,GAAyB,kBAAdF,EACP,OAAQA,EAAYlD,KAAKqD,GAAM,IAG/B,OAAQH,GACJ,IAAK,MACD,OAAQlD,KAAKqD,GAAK,EACtB,IAAK,YACD,OAAQrD,KAAKqD,GAAK,EACtB,IAAK,QACD,OAAO,EACX,IAAK,eACD,OAAOrD,KAAKqD,GAAK,EACrB,IAAK,SACD,OAAOrD,KAAKqD,GAAK,EACrB,IAAK,cACD,OAAQ,EAAIrD,KAAKqD,GAAM,EAC3B,IAAK,OACD,OAAOrD,KAAKqD,GAChB,IAAK,WACD,OAAS,EAAIrD,KAAKqD,GAAM,EAC5B,IAAK,SACD,OAAOrD,KAAKC,MAAMmD,EAAO3D,EAAI0D,EAAS1D,EAAG2D,EAAOzD,EAAIwD,EAASxD,GACjE,IAAK,UACD,OAAOK,KAAKC,MAAMkD,EAAS1D,EAAI2D,EAAO3D,EAAG0D,EAASxD,EAAIyD,EAAOzD,GACjE,QACI,OAAO0B,IAAcrB,KAAKqD,GAAK,GAIxC,SAASC,GAAwBJ,GACpC,MAAMK,EAAe,EAAOC,OAG5B,OAFAD,EAAapE,OAAS,EACtBoE,EAAarD,MAAQgD,EACdK,EAEJ,SAASE,GAAkBC,EAAIC,EAAIC,EAAIC,GAC1C,OAAO,EAAO9D,OAAQ2D,EAAG/D,GAAKiE,EAAKC,IAAQD,EAAKC,GAAc,EAAPF,EAAGhE,EAAQkE,GAAOD,EAAKC,GAAKH,EAAGjE,GAEnF,SAASqE,GAAqBxH,GACjC,OAAOA,EAAK6G,eAAgCtD,IAApBvD,EAAK6G,SAASxD,QAAuCE,IAApBvD,EAAK6G,SAAS1D,EACjE,CACEE,EAAIrD,EAAK6G,SAASxD,EAAIrD,EAAKyH,KAAKC,MAAS,IACzCvE,EAAInD,EAAK6G,SAAS1D,EAAInD,EAAKyH,KAAKE,OAAU,UAE5CpE,EAEH,SAASqE,GAA6B5H,GACzC,IAAImC,EAAI0F,EAAI/G,EAAIgH,EAChB,MAAO,CACHzE,GAA+E,QAAzEwE,EAA8B,QAAxB1F,EAAKnC,EAAK6G,gBAA6B,IAAP1E,OAAgB,EAASA,EAAGkB,SAAsB,IAAPwE,EAAgBA,EAAmB,IAAd9C,KAAqB/E,EAAKyH,KAAKC,MAAS,IACpJvE,GAA+E,QAAzE2E,EAA8B,QAAxBhH,EAAKd,EAAK6G,gBAA6B,IAAP/F,OAAgB,EAASA,EAAGqC,SAAsB,IAAP2E,EAAgBA,EAAmB,IAAd/C,KAAqB/E,EAAKyH,KAAKE,OAAU,KAGtJ,SAASI,GAAmC/H,GAC/C,IAAImC,EAAI0F,EACR,MAAMhB,EAAW,CACbxD,OAAwEE,KAA3C,QAAxBpB,EAAKnC,EAAK6G,gBAA6B,IAAP1E,OAAgB,EAASA,EAAGkB,GAAmByC,GAAc9F,EAAK6G,SAASxD,QAAKE,EACrHJ,OAAwEI,KAA3C,QAAxBsE,EAAK7H,EAAK6G,gBAA6B,IAAPgB,OAAgB,EAASA,EAAG1E,GAAmB2C,GAAc9F,EAAK6G,SAAS1D,QAAKI,GAEzH,OAAOqE,GAA6B,CAAEH,KAAMzH,EAAKyH,KAAMZ,aAEpD,SAASmB,GAAkChI,GAC9C,IAAImC,EAAI0F,EAAI/G,EAAIgH,EAChB,MAAO,CACHzE,EAA6E,QAAzEwE,EAA8B,QAAxB1F,EAAKnC,EAAK6G,gBAA6B,IAAP1E,OAAgB,EAASA,EAAGkB,SAAsB,IAAPwE,EAAgBA,EAAK9C,IAAc/E,EAAKyH,KAAKC,MAClIvE,EAA6E,QAAzE2E,EAA8B,QAAxBhH,EAAKd,EAAK6G,gBAA6B,IAAP/F,OAAgB,EAASA,EAAGqC,SAAsB,IAAP2E,EAAgBA,EAAK/C,IAAc/E,EAAKyH,KAAKE,QAWnI,SAASM,GAAWC,GACvB,OAAOA,EAASA,EAAMC,SAAS,KAAOC,WAAWF,GAAS,IAAME,WAAWF,GAAU,ECjJzF,SAASG,GAAeC,EAAOC,EAAYC,EAAUC,EAAeC,EAAUC,GAC1E,MAAMC,EAAM,CAAEC,SAAS,GACvB,OAAIN,EAAWrD,IAAMuD,EAAcvD,KAC/BqD,EAAWrD,IAAMuD,EAActD,KAC/BoD,EAAWpD,IAAMsD,EAAcvD,KAC/BqD,EAAWpD,IAAMsD,EAActD,MAG9BmD,EAAMnD,KAAOqD,EAAStD,KAAOoD,EAAMnD,MAAQqD,EAASrD,IAAMqD,EAAStD,KAAO,GAAKwD,EAAW,GAC1FJ,EAAMpD,KAAOsD,EAASrD,KAAOmD,EAAMpD,KAAOsD,EAASrD,IAAMqD,EAAStD,KAAO,GAAKwD,EAAW,KAC1FE,EAAIF,SAAWA,GAAYC,EAC3BC,EAAIC,SAAU,GALPD,EASf,SAASE,GAAcC,EAASC,GAC5B,MAAMJ,EAAMK,GAA0BD,EAAYE,GACvCH,EAAQI,QAAQD,IAE3B,OAAON,aAAeQ,MAAQR,EAAIS,KAAMC,GAAMA,GAAKV,EAEhD,SAASW,KACZ,MAAyB,qBAAXC,SAA2BA,QAAqC,qBAApBA,OAAOC,WAA6BD,OAAOC,SAElG,SAASC,KACZ,OAAQH,MAAiC,qBAAfI,WAEvB,SAASC,GAAeC,GAC3B,GAAKH,KAGL,OAAOC,WAAWE,GAEf,SAASC,KACZ,OAAOP,KACAQ,GAAaC,WAAWD,GACxBA,IAAcE,uBAAyBD,YAAYD,GAEvD,SAASG,KACZ,OAAOX,KACAY,GAAWC,aAAaD,GACxBA,IAAYE,sBAAwBD,cAAcD,GAEtD,SAASG,GAAUxF,EAAOyF,GAC7B,OAAOzF,IAAUyF,GAAUA,aAAiBnB,OAASmB,EAAMxH,QAAQ+B,IAAU,EAE1E0F,eAAeC,GAASC,EAAMC,GACjC,UACUlB,SAASmB,MAAMC,KAAK,GAAc,OAAXF,QAA8B,IAAXA,EAAoBA,EAAS,eAAwB,OAATD,QAA0B,IAATA,EAAkBA,EAAO,cAE1I,MAAOvI,KAGJ,SAAS2I,GAAiBP,GAC7B,OAAO7G,KAAK+B,MAAMV,IAAcwF,EAAM1H,QAEnC,SAASkI,GAAcR,EAAOS,EAAOC,GAAW,GACnD,OAAOV,OAAgBhH,IAAVyH,GAAuBC,EAAWD,EAAQT,EAAM1H,OAASiI,GAAiBP,IAEpF,SAASW,GAAcC,EAAO1D,EAAM2D,EAAQC,EAAQzE,GACvD,OAAO0E,GAAgBC,GAAgBJ,EAAkB,OAAXE,QAA8B,IAAXA,EAAoBA,EAAS,GAAI5D,EAAM2D,EAAQxE,GAE7G,SAAS0E,GAAgBE,EAAQ/D,EAAM2D,EAAQxE,GAClD,IAAI6E,GAAS,EAab,OAZK7E,GAA2B,WAAdA,IACd6E,EAASD,EAAOE,IAAMjE,EAAKE,OAASyD,EAAO/H,IAE3CoI,GAAY7E,GAA2B,SAAdA,IACzB6E,EAASD,EAAOG,MAAQP,EAAO/H,IAE/BoI,GAAY7E,GAA2B,UAAdA,IACzB6E,EAASD,EAAOI,KAAOnE,EAAKC,MAAQ0D,EAAOjI,IAE3CsI,GAAY7E,GAA2B,QAAdA,IACzB6E,EAASD,EAAOK,OAAST,EAAOjI,GAE7BsI,EAEJ,SAASF,GAAgBJ,EAAOE,GACnC,MAAO,CACHQ,OAAQV,EAAMhI,EAAIkI,EAClBO,KAAMT,EAAM9H,EAAIgI,EAChBM,MAAOR,EAAM9H,EAAIgI,EACjBK,IAAKP,EAAMhI,EAAIkI,GAGhB,SAASS,GAAWC,KAAgBC,GACvC,IAAK,MAAMhI,KAAUgI,EAAS,CAC1B,QAAezI,IAAXS,GAAmC,OAAXA,EACxB,SAEJ,GAAsB,kBAAXA,EAAqB,CAC5B+H,EAAc/H,EACd,SAEJ,MAAMiI,EAAgB7C,MAAM8C,QAAQlI,IAChCiI,GAAyC,kBAAhBF,GAA6BA,GAAgB3C,MAAM8C,QAAQH,GAG9EE,GAAyC,kBAAhBF,GAA6BA,IAAe3C,MAAM8C,QAAQH,KACzFA,EAAc,IAHdA,EAAc,GAKlB,IAAK,MAAMzM,KAAO0E,EAAQ,CACtB,GAAY,cAAR1E,EACA,SAEJ,MAAM6M,EAAanI,EAAQc,EAAQqH,EAAW7M,GAAM8M,EAA4B,kBAAVtH,EAAoBuH,EAAWN,EACrGM,EAAS/M,GACL8M,GAAYhD,MAAM8C,QAAQpH,GACpBA,EAAMwH,IAAKrI,GAAM6H,GAAWO,EAAS/M,GAAM2E,IAC3C6H,GAAWO,EAAS/M,GAAMwF,IAG5C,OAAOiH,EAEJ,SAASQ,GAAiBC,EAAMC,GACnC,QAASC,GAA6BD,EAAOnD,GAAMA,EAAEpD,QAAUoE,GAAUkC,EAAMlD,EAAEkD,OAE9E,SAASG,GAAeH,EAAMC,EAAM1C,GACvCd,GAA0BwD,EAAOG,IAC7B,MAAMC,EAAUD,EAAIJ,KAAMM,EAAaF,EAAI1G,OACvC4G,GAAcxC,GAAUkC,EAAMK,IAC9BE,GAAqBH,EAAK7C,KAI/B,SAASgD,GAAqBH,EAAK7C,GACtC,MAAMf,EAAY4D,EAAI5D,UACtBC,GAA0BD,EAAYE,IAClCa,EAASb,EAAU0D,KAGpB,SAASC,GAAQJ,EAAM1D,GAC1B,GAAKA,GAAY0D,EAGjB,OAAOC,GAA6BD,EAAOG,GAChC9D,GAAcC,EAAS6D,EAAI5D,YAGnC,SAASgE,GAA6BC,GACzC,MAAO,CACHpG,SAAUoG,EAAEC,cACZ7B,OAAQ4B,EAAEE,YACVC,KAAMH,EAAEI,UACR3E,SAAUuE,EAAEvE,SACZC,OAAQ,EAAOlF,OAAOuC,GAASiH,EAAEhH,QAAQqH,OAAOC,YAAavH,GAASiH,EAAEhH,QAAQqH,OAAOE,YAGxF,SAASC,GAAaC,EAAIC,GAC7B,MAAQtK,EAAGuK,EAAezK,EAAG0K,GAAkBH,EAAGhF,SAASvE,IAAIwJ,EAAGjF,WAAYoF,EAAMC,GAAQ,CAACL,EAAG7G,SAAU8G,EAAG9G,WAAaN,GAAIyH,EAAOxH,GAAIyH,GAAU7H,GAAa2H,EAAMD,GACtK,GAAIF,EAAgBI,EAAQH,EAAgBI,EAAQ,EAChD,OAEJ,MAAMrK,GAASF,KAAKC,MAAMsK,EAAOD,GAAQ1G,EAAKoG,EAAGN,KAAM7F,EAAKoG,EAAGP,KAAMc,EAAKR,EAAGhF,SAASyF,OAAOvK,GAAQwK,EAAKT,EAAGjF,SAASyF,OAAOvK,GAAQwD,EAAKD,GAAkB+G,EAAIE,EAAI9G,EAAIC,GAAKF,EAAKF,GAAkBiH,EAAIF,EAAI5G,EAAIC,GAAK8G,EAAUjH,EAAG+G,QAAQvK,GAAQ0K,EAAUjH,EAAG8G,QAAQvK,GACvQ8J,EAAGhF,SAASrF,EAAIgL,EAAQhL,EAAIqK,EAAG/E,OAAOtF,EACtCqK,EAAGhF,SAASvF,EAAIkL,EAAQlL,EAAIuK,EAAG/E,OAAOxF,EACtCwK,EAAGjF,SAASrF,EAAIiL,EAAQjL,EAAIsK,EAAGhF,OAAOtF,EACtCsK,EAAGjF,SAASvF,EAAImL,EAAQnL,EAAIwK,EAAGhF,OAAOxF,EAEnC,SAASoL,GAAWC,EAAUC,GACjC,MAAMC,EAAOF,EAAStB,cAAezF,EAAO+G,EAASrB,YAAa3B,EAASD,GAAgBmD,EAAMjH,GAAOkH,EAAOtG,GAAe,CAC1HnD,IAAKsG,EAAOI,KACZzG,IAAKqG,EAAOG,OACb,CACCzG,IAAKsG,EAAOE,IACZvG,IAAKqG,EAAOK,QACb,CACC3G,IAAKuJ,EAAU7C,KACfzG,IAAKsJ,EAAU9C,OAChB,CACCzG,IAAKuJ,EAAU/C,IACfvG,IAAKsJ,EAAU5C,QAChB2C,EAAS9F,SAASrF,EAAG2C,GAASwI,EAASvI,QAAQqH,OAAOC,aACrDoB,EAAK9F,eACiBtF,IAAlBoL,EAAKjG,WACL8F,EAAS9F,SAASrF,EAAIsL,EAAKjG,eAETnF,IAAlBoL,EAAK9H,WACL2H,EAAS3H,SAASxD,EAAIsL,EAAK9H,WAGnC,MAAM+H,EAAOvG,GAAe,CACxBnD,IAAKsG,EAAOE,IACZvG,IAAKqG,EAAOK,QACb,CACC3G,IAAKsG,EAAOI,KACZzG,IAAKqG,EAAOG,OACb,CACCzG,IAAKuJ,EAAU/C,IACfvG,IAAKsJ,EAAU5C,QAChB,CACC3G,IAAKuJ,EAAU7C,KACfzG,IAAKsJ,EAAU9C,OAChB6C,EAAS9F,SAASvF,EAAG6C,GAASwI,EAASvI,QAAQqH,OAAOE,WACrDoB,EAAK/F,eACiBtF,IAAlBqL,EAAKlG,WACL8F,EAAS9F,SAASvF,EAAIyL,EAAKlG,eAETnF,IAAlBqL,EAAK/H,WACL2H,EAAS3H,SAAS1D,EAAIyL,EAAK/H,WAIhC,SAASoC,GAA0B4F,EAAK9E,GAC3C,OAAO8E,aAAezF,MAAQyF,EAAIvC,IAAK/M,GAASwK,EAASxK,IAASwK,EAAS8E,GAExE,SAASC,GAAyBD,EAAK7D,EAAOC,GACjD,OAAO4D,aAAezF,MAAQ2B,GAAc8D,EAAK7D,EAAOC,GAAY4D,EAEjE,SAASnC,GAA6BmC,EAAK9E,GAC9C,OAAO8E,aAAezF,MAAQyF,EAAIE,KAAMzF,GAAMS,EAAST,IAAMS,EAAS8E,GAAOA,OAAMtL,ECnNvF,MAAMyL,GAAmB,SAAUC,GAAgB,MAAOC,GAAgB,IAAIjN,IACvE,SAASkN,GAAgBC,GAC5BF,GAAc5M,IAAI8M,EAAQ9P,IAAK8P,GAEnC,SAASC,GAAQpC,EAAGqC,EAAGhG,GAOnB,OANIA,EAAI,IACJA,GAAK,GAELA,EAAI,IACJA,GAAK,GAELA,EAAI,EAAI,EACD2D,EAAc,GAATqC,EAAIrC,GAAS3D,EAEzBA,EAAI,GACGgG,EAEPhG,EAAI,EAAI,EACD2D,GAAKqC,EAAIrC,IAAM,EAAI,EAAI3D,GAAK,EAEhC2D,EAEX,SAASsC,GAAarH,GAClB,IAAK,MAAO,CAAEkH,KAAYF,GACtB,GAAIhH,EAAMsH,WAAWJ,EAAQK,cACzB,OAAOL,EAAQM,YAAYxH,GAGnC,MAAMyH,EAAiB,6CAA8CC,EAAW1H,EAAM2H,QAAQF,EAAgB,CAACG,EAAGnK,EAAGoK,EAAGC,EAAGC,IAChHtK,EAAIA,EAAIoK,EAAIA,EAAIC,EAAIA,QAAWzM,IAAN0M,EAAkBA,EAAIA,EAAI,KAC1DC,EAAQ,yDAA0DC,EAASD,EAAME,KAAKR,GAC1F,OAAOO,EACD,CACEF,OAAiB1M,IAAd4M,EAAO,GAAmBE,SAASF,EAAO,GAAI,IAAM,IAAO,EAC9DH,EAAGK,SAASF,EAAO,GAAI,IACvBJ,EAAGM,SAASF,EAAO,GAAI,IACvBxK,EAAG0K,SAASF,EAAO,GAAI,UAEzB5M,EAEH,SAAS+M,GAAgBpI,EAAO8C,EAAOC,GAAW,GACrD,IAAK/C,EACD,OAEJ,MAAMqI,EAAyB,kBAAVrI,EAAqB,CAAEpD,MAAOoD,GAAUA,EAC7D,GAA2B,kBAAhBqI,EAAMzL,MACb,OAAO0L,GAAWD,EAAMzL,MAAOkG,EAAOC,GAE1C,GAAIsF,EAAMzL,iBAAiBsE,MACvB,OAAOkH,GAAgB,CACnBxL,MAAOiG,GAAcwF,EAAMzL,MAAOkG,EAAOC,KAGjD,IAAK,MAAO,CAAEmE,KAAYF,GAAe,CACrC,MAAMtG,EAAMwG,EAAQqB,iBAAiBF,GACrC,GAAI3H,EACA,OAAOA,GAIZ,SAAS4H,GAAWtI,EAAO8C,EAAOC,GAAW,GAChD,IAAK/C,EACD,OAEJ,MAAMqI,EAAyB,kBAAVrI,EAAqB,CAAEpD,MAAOoD,GAAUA,EAC7D,GAA2B,kBAAhBqI,EAAMzL,MACb,OAAOyL,EAAMzL,QAAUkK,GAAmB0B,KAAsBC,GAAYJ,EAAMzL,OAEtF,GAAIyL,EAAMzL,iBAAiBsE,MACvB,OAAOoH,GAAW,CACd1L,MAAOiG,GAAcwF,EAAMzL,MAAOkG,EAAOC,KAGjD,IAAK,MAAO,CAAEmE,KAAYF,GAAe,CACrC,MAAMtG,EAAMwG,EAAQwB,YAAYL,GAChC,GAAI3H,EACA,OAAOA,GAQZ,SAASiI,GAAgBN,EAAOvF,EAAOC,GAAW,GACrD,MAAM6F,EAAMR,GAAgBC,EAAOvF,EAAOC,GAC1C,OAAO6F,EAAMC,GAASD,QAAOvN,EAE1B,SAASwN,GAASR,GACrB,MAAMS,EAAKT,EAAM5K,EAAI,IAAKsL,EAAKV,EAAMR,EAAI,IAAKmB,EAAKX,EAAMP,EAAI,IAAK7K,EAAMzB,KAAKyB,IAAI6L,EAAIC,EAAIC,GAAKhM,EAAMxB,KAAKwB,IAAI8L,EAAIC,EAAIC,GAAKtI,EAAM,CAC5HuI,EAAG,EACHC,GAAIjM,EAAMD,GAAO,EACjBmM,EAAG,GAkBP,OAhBIlM,IAAQD,IACR0D,EAAIyI,EAAIzI,EAAIwI,EAAI,IAAOjM,EAAMD,IAAQC,EAAMD,IAAQC,EAAMD,IAAQ,EAAMC,EAAMD,GAC7E0D,EAAIuI,EACAH,IAAO7L,GACA8L,EAAKC,IAAO/L,EAAMD,GAClB0D,EAAIuI,EAAIF,IAAO9L,EAAM,GAAO+L,EAAKF,IAAO7L,EAAMD,GAAO,GAAO8L,EAAKC,IAAO9L,EAAMD,IAE7F0D,EAAIwI,GAAK,IACTxI,EAAIyI,GAAK,IACTzI,EAAIuI,GAAK,GACLvI,EAAIuI,EAAI,IACRvI,EAAIuI,GAAK,KAETvI,EAAIuI,GAAK,MACTvI,EAAIuI,GAAK,KAENvI,EAMJ,SAAS+H,GAAYzI,GACxB,OAAOqH,GAAarH,GAEjB,SAASoJ,GAASC,GACrB,MAAMpB,EAAS,CAAEH,EAAG,EAAGD,EAAG,EAAGpK,EAAG,GAAK6L,EAAa,CAC9CL,EAAGI,EAAIJ,EAAI,IACXC,EAAGG,EAAIH,EAAI,IACXC,EAAGE,EAAIF,EAAI,KAEf,GAAKG,EAAWH,EAKX,CACD,MAAM/B,EAAIkC,EAAWJ,EAAI,GACnBI,EAAWJ,GAAK,EAAII,EAAWH,GAC/BG,EAAWJ,EAAII,EAAWH,EAAIG,EAAWJ,EAAII,EAAWH,EAAGpE,EAAI,EAAIuE,EAAWJ,EAAI9B,EACxFa,EAAOxK,EAAI0J,GAAQpC,EAAGqC,EAAGkC,EAAWL,EAAI,EAAI,GAC5ChB,EAAOJ,EAAIV,GAAQpC,EAAGqC,EAAGkC,EAAWL,GACpChB,EAAOH,EAAIX,GAAQpC,EAAGqC,EAAGkC,EAAWL,EAAI,EAAI,QAV5ChB,EAAOH,EAAIwB,EAAWJ,EACtBjB,EAAOJ,EAAIyB,EAAWJ,EACtBjB,EAAOxK,EAAI6L,EAAWJ,EAa1B,OAHAjB,EAAOxK,EAAIjC,KAAK+B,MAAiB,IAAX0K,EAAOxK,GAC7BwK,EAAOJ,EAAIrM,KAAK+B,MAAiB,IAAX0K,EAAOJ,GAC7BI,EAAOH,EAAItM,KAAK+B,MAAiB,IAAX0K,EAAOH,GACtBG,EAEJ,SAASsB,GAAWC,GACvB,MAAMC,EAAYL,GAASI,GAC3B,MAAO,CACHzB,EAAGyB,EAAKzB,EACRD,EAAG2B,EAAU3B,EACbD,EAAG4B,EAAU5B,EACbpK,EAAGgM,EAAUhM,GAGd,SAAS+K,GAAkBxL,GAC9B,MAAM0M,EAAmB,OAAR1M,QAAwB,IAARA,EAAiBA,EAAM,EACxD,MAAO,CACH8K,EAAGtM,KAAK+B,MAAMC,EAAcK,GAAc6L,EAAU,OACpD7B,EAAGrM,KAAK+B,MAAMC,EAAcK,GAAc6L,EAAU,OACpDjM,EAAGjC,KAAK+B,MAAMC,EAAcK,GAAc6L,EAAU,QAGrD,SAASC,GAAgBtB,EAAOuB,GACnC,MAAO,QAAQvB,EAAM5K,MAAM4K,EAAMR,MAAMQ,EAAMP,MAAkB,OAAZ8B,QAAgC,IAAZA,EAAqBA,EAAU,KAEnG,SAASC,GAAgBxB,EAAOuB,GACnC,MAAO,QAAQvB,EAAMY,MAAMZ,EAAMc,OAAOd,EAAMa,OAAmB,OAAZU,QAAgC,IAAZA,EAAqBA,EAAU,KAErG,SAASE,GAASC,EAAQC,EAAQC,EAAOC,GAC5C,IAAIC,EAAOJ,EAAQK,EAAOJ,EAO1B,YANe3O,IAAX8O,EAAK1M,IACL0M,EAAOf,GAASW,SAEL1O,IAAX+O,EAAK3M,IACL2M,EAAOhB,GAASY,IAEb,CACHlC,EAAG5K,EAAIiN,EAAKrC,EAAGsC,EAAKtC,EAAGmC,EAAOC,GAC9BrC,EAAG3K,EAAIiN,EAAKtC,EAAGuC,EAAKvC,EAAGoC,EAAOC,GAC9BzM,EAAGP,EAAIiN,EAAK1M,EAAG2M,EAAK3M,EAAGwM,EAAOC,IAG/B,SAASG,GAAa7E,EAAIC,EAAI6E,GACjC,IAAIrQ,EAAI0F,EACR,GAAI2K,IAAcxD,GACd,OAAO0B,KAEN,GAAI8B,IAAcvD,GAanB,OAAOuD,EAb2B,CAClC,MAAMC,EAA2C,QAA5BtQ,EAAKuL,EAAGgF,sBAAmC,IAAPvQ,EAAgBA,EAAKuL,EAAGiF,iBAAkBC,EAAiF,QAApE/K,EAAY,OAAP8F,QAAsB,IAAPA,OAAgB,EAASA,EAAG+E,sBAAmC,IAAP7K,EAAgBA,EAAY,OAAP8F,QAAsB,IAAPA,OAAgB,EAASA,EAAGgF,iBAC5P,GAAIF,GAAeG,GAAajF,EAC5B,OAAOqE,GAASS,EAAaG,EAAWlF,EAAGP,YAAaQ,EAAGR,aAE1D,CACD,MAAM0F,EAA2B,OAAhBJ,QAAwC,IAAhBA,EAAyBA,EAAcG,EAChF,GAAIC,EACA,OAAOvB,GAASuB,KAQzB,SAASC,GAAmBC,EAAUC,EAAOC,GAChD,MAAM1C,EAA4B,kBAAbwC,EAAwBA,EAAWA,EAASjO,MACjE,OAAIyL,IAAUvB,GACNiE,EACO3C,GAAgB,CACnBxL,MAAOyL,IAGXyC,EACOhE,GAEJC,GAEFsB,IAAUtB,GACRA,GAGAqB,GAAgB,CACnBxL,MAAOyL,IAIZ,SAAS2C,GAAoBC,GAChC,YAAqB5P,IAAd4P,EACD,CACEhC,EAAGgC,EAAUhC,EAAErM,MACfuM,EAAG8B,EAAU9B,EAAEvM,MACfsM,EAAG+B,EAAU/B,EAAEtM,YAEjBvB,EAEH,SAAS6P,GAAuB7B,EAAK8B,EAAkBC,GAC1D,MAAMC,EAAW,CACbpC,EAAG,CACCjL,QAAQ,EACRpB,MAAOyM,EAAIJ,GAEfE,EAAG,CACCnL,QAAQ,EACRpB,MAAOyM,EAAIF,GAEfD,EAAG,CACClL,QAAQ,EACRpB,MAAOyM,EAAIH,IAQnB,OALIiC,IACAG,GAAkBD,EAASpC,EAAGkC,EAAiBlC,EAAGmC,GAClDE,GAAkBD,EAASlC,EAAGgC,EAAiBhC,EAAGiC,GAClDE,GAAkBD,EAASnC,EAAGiC,EAAiBjC,EAAGkC,IAE/CC,EAEX,SAASC,GAAkBC,EAAYC,EAAgBJ,GACnDG,EAAWvN,OAASwN,EAAexN,OAC/BuN,EAAWvN,QACXuN,EAAW/K,SAAY5C,GAAc4N,EAAeC,OAAS,IAAOL,EACpEG,EAAWG,MAAQ,EAAI9N,GAAc4N,EAAeE,OACpDH,EAAWI,OAAS,aACfH,EAAeI,OAChBL,EAAW/K,UAAY3D,IACvB0O,EAAW3O,OAASC,MAIxB0O,EAAW/K,SAAW,EC3QvB,SAASqL,GAASC,EAASC,EAAOC,GACrCF,EAAQG,YACRH,EAAQI,OAAOH,EAAM5Q,EAAG4Q,EAAM9Q,GAC9B6Q,EAAQK,OAAOH,EAAI7Q,EAAG6Q,EAAI/Q,GAC1B6Q,EAAQM,YAEL,SAASC,GAAaP,EAAStG,EAAIC,EAAI6G,GAC1CR,EAAQG,YACRH,EAAQI,OAAO1G,EAAGrK,EAAGqK,EAAGvK,GACxB6Q,EAAQK,OAAO1G,EAAGtK,EAAGsK,EAAGxK,GACxB6Q,EAAQK,OAAOG,EAAGnR,EAAGmR,EAAGrR,GACxB6Q,EAAQM,YAEL,SAASG,GAAUT,EAASU,EAAWC,GAC1CX,EAAQY,UAA0B,OAAdD,QAAoC,IAAdA,EAAuBA,EAAY,gBAC7EX,EAAQa,SAAS,EAAG,EAAGH,EAAUhN,MAAOgN,EAAU/M,QAE/C,SAASmN,GAAMd,EAASU,GAC3BV,EAAQe,UAAU,EAAG,EAAGL,EAAUhN,MAAOgN,EAAU/M,QAEhD,SAASqN,GAAahV,GACzB,IAAImC,EAAI0F,EAAI/G,EAAIgH,EAAI5G,EAAI+T,EACxB,MAAM,UAAEC,EAAS,QAAElB,EAAO,SAAExF,EAAQ,MAAE2G,EAAK,YAAEC,EAAW,eAAEC,EAAc,UAAEC,EAAS,OAAEjK,EAAM,QAAEyG,EAAO,OAAEyD,EAAM,UAAEC,GAAexV,EACvHyV,EAAMjH,EAAStB,cAAetJ,EAAQ4K,EAASkH,UAAYlH,EAASmH,aAAenH,EAAS9F,SAAS9E,MAAQ,GAAIgS,EAAa,CAChItR,IAAKZ,KAAKY,IAAIV,GACdS,IAAKX,KAAKW,IAAIT,IACfiS,EAAgB,CACf5F,EAAG2F,EAAWvR,KAA8B,QAAtBlC,EAAKqT,EAAUvF,SAAsB,IAAP9N,EAAgBA,EAAK,GACzE6N,EAAG4F,EAAWtR,KAA8B,QAAtBuD,EAAK2N,EAAUxF,SAAsB,IAAPnI,EAAgBA,EAAK,GACzEtD,GAAIqR,EAAWtR,KAA8B,QAAtBxD,EAAK0U,EAAUjR,SAAsB,IAAPzD,EAAgBA,EAAK,GAC1EgV,EAAGF,EAAWvR,KAA8B,QAAtByD,EAAK0N,EAAUM,SAAsB,IAAPhO,EAAgBA,EAAK,IAE7EkM,EAAQ+B,aAAaF,EAAc5F,EAAG4F,EAAc7F,EAAG6F,EAActR,EAAGsR,EAAcC,EAAGL,EAAIpS,EAAGoS,EAAItS,GACpG6Q,EAAQG,YACJkB,IACArB,EAAQgC,yBAA2BV,GAEvC,MAAMW,EAAczH,EAASyH,YACzBV,EAAOrP,QAAU+P,IACjBjC,EAAQkC,WAAaX,EAAOY,KAC5BnC,EAAQiC,YAAcpE,GAAgBoE,GACtCjC,EAAQoC,cAAgBb,EAAOnK,OAAO/H,EACtC2Q,EAAQqC,cAAgBd,EAAOnK,OAAOjI,GAEtCiS,EAAYkB,OACZtC,EAAQY,UAAYQ,EAAYkB,MAEpC,MAAMC,EAAS/H,EAAS+H,OACxBvC,EAAQwC,UAA4C,QAA/BtV,EAAKsN,EAASiI,mBAAgC,IAAPvV,EAAgBA,EAAK,EAC7EkU,EAAYmB,SACZvC,EAAQ0C,YAActB,EAAYmB,QAEtCI,GAAUzB,EAAWlB,EAASxF,EAAUnD,EAAQyG,EAASqD,IACoB,QAAvEF,EAAgB,OAAXsB,QAA8B,IAAXA,OAAoB,EAASA,EAAO7O,aAA0B,IAAPuN,EAAgBA,EAAK,GAAK,GAC3GjB,EAAQuC,SAER/H,EAASoI,OACT5C,EAAQM,YAER9F,EAAS8H,MACTtC,EAAQsC,OAEZO,GAAqB3B,EAAWlB,EAASxF,EAAUnD,EAAQyG,EAASqD,GACpEnB,EAAQgC,yBAA2B,cACnChC,EAAQ+B,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAEjC,SAASY,GAAUzB,EAAWlB,EAASxF,EAAUnD,EAAQyG,EAASqD,GACrE,IAAK3G,EAASsI,MACV,OAEJ,MAAMC,EAAS7B,EAAU8B,QAAQ3U,IAAImM,EAASsI,OACzCC,GAGLA,EAAOE,KAAKjD,EAASxF,EAAUnD,EAAQyG,EAASqD,EAAOD,EAAUgC,OAAOC,YAErE,SAASN,GAAqB3B,EAAWlB,EAASxF,EAAUnD,EAAQyG,EAASqD,GAChF,IAAK3G,EAASsI,MACV,OAEJ,MAAMC,EAAS7B,EAAU8B,QAAQ3U,IAAImM,EAASsI,QAC7B,OAAXC,QAA8B,IAAXA,OAAoB,EAASA,EAAOK,cAG7DL,EAAOK,YAAYpD,EAASxF,EAAUnD,EAAQyG,EAASqD,EAAOD,EAAUgC,OAAOC,YAE5E,SAASE,GAAWrD,EAASsD,EAAQnC,GACnCmC,EAAOL,MAGZK,EAAOL,KAAKjD,EAASmB,GAElB,SAASoC,GAAmBvD,EAASsD,EAAQ9I,EAAU2G,GACrDmC,EAAOtC,cAGZsC,EAAOtC,aAAahB,EAASxF,EAAU2G,GAEpC,SAASqC,GAASjH,EAAOxQ,EAAM+E,GAClC,MAAO,CACHqM,EAAGZ,EAAMY,EACTE,EAAGd,EAAMc,EACTD,EAAGb,EAAMa,GAAc,WAATrR,GAAqB,EAAI,GAAK+E,GCvG7C,MAAM2S,GAAqB,YACrBC,GAAgB,WAChBC,GAAiB,cACjBC,GAAe,YACfC,GAAiB,cACjBC,GAAkB,aAClBC,GAAiB,YACjBC,GAAkB,eAClBC,GAAgB,aAChBC,GAAmB,cACnBC,GAAc,SACdC,GAAwB,mBCPrC,SAASC,GAAkB1P,EAAQ2P,EAAWhZ,GAC1C,IAAI6C,EACJ,MAAMoW,EAAWD,EAAUhZ,QACViE,IAAbgV,IACA5P,EAAOrJ,IAA+B,QAAtB6C,EAAKwG,EAAOrJ,UAAyB,IAAP6C,EAAgBA,EAAK,GAAKoW,GAGzE,MAAM,GACT,YAAYrD,GACRxT,KAAKwT,UAAYA,EACjBxT,KAAK+F,KAAO,CACRE,OAAQ,EACRD,MAAO,GAEXhG,KAAK8W,SAAW,KAChB9W,KAAK+W,YAAa,EAClB/W,KAAKgX,iBAAmB,GACxBhX,KAAKiX,kBAAoB,GACzBjX,KAAKkX,eAAiB,GACtBlX,KAAKmX,cAAgB,GACrBnX,KAAKoX,kBACAvP,MAAuC,qBAArBwP,sBAQbxV,EAPA,IAAIwV,iBAAkBC,IACpB,IAAK,MAAMC,KAAUD,EACG,eAAhBC,EAAOlZ,MAAkD,UAAzBkZ,EAAOC,eACvCxX,KAAKyX,iBAM7B,kBACI,OAAOzX,KAAKwT,UAAUkE,cAAcC,WAAWnT,OAEnD,QACI,MAAMD,EAAUvE,KAAKwT,UAAUkE,cAAeE,EAAQrT,EAAQsT,UAAUC,KAAKF,MACzErT,EAAQoP,eAAenP,OACvBxE,KAAK+X,QAEAH,EAAMpT,QAAUoT,EAAMzW,OAAS,GAAKnB,KAAKgY,gBAC9ChY,KAAKiY,WAAW9H,GAAgBnQ,KAAKgY,gBAAiB,EAAIJ,EAAMzW,SAGhEnB,KAAKuV,KAAM2C,IACP9E,GAAM8E,EAAKlY,KAAK+F,QAI5B,UACI,IAAItF,EAAI0F,EAC0B,QAAjC1F,EAAKT,KAAKoX,yBAAsC,IAAP3W,GAAyBA,EAAG0X,aAClEnY,KAAK+W,WACmB,QAAvB5Q,EAAKnG,KAAKqH,eAA4B,IAAPlB,GAAyBA,EAAGiS,SAG5DpY,KAAKqY,sBAETrY,KAAKuV,KAAM2C,IACP9E,GAAM8E,EAAKlY,KAAK+F,QAEpB/F,KAAKgX,iBAAmB,GACxBhX,KAAKiX,kBAAoB,GACzBjX,KAAKkX,eAAiB,GACtBlX,KAAKmX,cAAgB,GAEzB,KAAKmB,GACD,GAAKtY,KAAK8W,SAGV,OAAOwB,EAAGtY,KAAK8W,UAEnB,aAAahK,EAAU2G,GACnB,IAAIhT,EACJ,GAAIqM,EAASyL,UAAYzL,EAAS0L,UAC9B,OAEJ,MAAM7O,EAASmD,EAASrB,YACxB,GAAI9B,GAAU,EACV,OAEJ,MAAM8O,EAAU3L,EAASkE,eAAgB0H,EAA+C,QAApCjY,EAAKqM,EAASmE,wBAAqC,IAAPxQ,EAAgBA,EAAKgY,EACrH,IAAKE,EAAQC,GAAU5Y,KAAK6Y,yBAAyB/L,GAChD6L,IACDA,EAASF,GAERG,IACDA,EAASF,IAERC,GAAWC,IAGhB5Y,KAAKuV,KAAM2C,IACP,IAAIzX,EAAI0F,EAAI/G,EAAIgH,EAAI5G,EACpB,MAAM+E,EAAUvE,KAAKwT,UAAUkE,cAAeoB,EAAgBhM,EAASvI,QAAQwU,OAAQC,GAAkB,EAAIlM,EAASmM,eAAiBH,EAAcI,YAAa9I,EAA2J,QAAhJhR,EAAwC,QAAlCqB,EAAKqM,EAASqM,OAAO/I,eAA4B,IAAP3P,EAAgBA,EAAiC,QAA3B0F,EAAK2G,EAASsD,eAA4B,IAAPjK,OAAgB,EAASA,EAAG/C,aAA0B,IAAPhE,EAAgBA,EAAK,EAAGga,EAAkG,QAAjF5Z,EAAgC,QAA1B4G,EAAK0G,EAAS+H,cAA2B,IAAPzO,OAAgB,EAASA,EAAGgK,eAA4B,IAAP5Q,EAAgBA,EAAK4Q,EAASiJ,EAAWjJ,EAAU4I,EAAgBM,EAAiBF,EAAgBJ,EAAgBlF,EAAY,GAAIJ,EAAc,CACrlBkB,KAAM+D,EAAStI,GAAgBsI,EAAQU,QAAYxX,GAEvD6R,EAAYmB,OAAS+D,EAASvI,GAAgBuI,EAAQU,GAAkB5F,EAAYkB,KACpF5U,KAAKuZ,sBAAsBrB,EAAKpL,EAAUnD,EAAQ0P,EAAU3F,EAAaI,GACzER,GAAa,CACTE,UAAWxT,KAAKwT,UAChBlB,QAAS4F,EACTpL,WACA2G,QACAC,cACAC,eAAgBpP,EAAQoP,eAAenP,OACvCoP,UAAWrP,EAAQoP,eAAeC,UAClCjK,OAAQA,GAAU,EAAImD,EAASmM,eAAiBH,EAAcU,SAC9DpJ,QAASiJ,EACTxF,OAAQ/G,EAASvI,QAAQsP,OACzBC,cAEJ9T,KAAKyZ,uBAAuB3M,KAGpC,mBAAmB8I,EAAQ9I,EAAU2G,GACjCzT,KAAKuV,KAAM2C,IACPrC,GAAmBqC,EAAKtC,EAAQ9I,EAAU2G,KAGlD,WAAWmC,EAAQnC,GACfzT,KAAKuV,KAAM2C,IACPvC,GAAWuC,EAAKtC,EAAQnC,KAGhC,OACI,IAAIhT,EACJT,KAAK0Z,SACL1Z,KAAK2Z,aACL3Z,KAAK4Z,aACL5Z,KAAK6Z,aACL7Z,KAAK8Z,iBACD9Z,KAAKqH,UAC6B,QAAjC5G,EAAKT,KAAKoX,yBAAsC,IAAP3W,GAAyBA,EAAGsZ,QAAQ/Z,KAAKqH,QAAS,CAAE2S,YAAY,KAE9Gha,KAAKia,eACLja,KAAKka,cACLla,KAAK+X,QAET,iBACI,MAAMxT,EAAUvE,KAAKwT,UAAUkE,cAAeyC,EAAa5V,EAAQ4V,WAAY9S,EAAUrH,KAAKqH,QAAS+S,EAA2B,OAAZ/S,QAAgC,IAAZA,OAAqB,EAASA,EAAQgT,MAChL,GAAKD,EAAL,CAGA,GAAID,EAAWtL,MAAO,CAClB,MAAMA,EAAQD,GAAgBuL,EAAWtL,OACzCuL,EAAaE,gBAAkBzL,EAAQsB,GAAgBtB,EAAOsL,EAAW/J,SAAW,QAGpFgK,EAAaE,gBAAkB,GAEnCF,EAAaG,gBAAkBJ,EAAWK,OAAS,GACnDJ,EAAaK,mBAAqBN,EAAWhV,UAAY,GACzDiV,EAAaM,iBAAmBP,EAAWQ,QAAU,GACrDP,EAAaQ,eAAiBT,EAAWpU,MAAQ,IAErD,cACI/F,KAAKkX,eAAiB,GACtB,IAAK,MAAO,CAAEtB,KAAW5V,KAAKwT,UAAUqH,QAChCjF,EAAO8D,QACP1Z,KAAKkX,eAAerW,KAAK+U,IAEzBA,EAAOkF,mBAAqBlF,EAAOmF,sBACnC/a,KAAKmX,cAActW,KAAK+U,GAIpC,eACI5V,KAAKgX,iBAAmB,GACxBhX,KAAKiX,kBAAoB,GACzB,IAAK,MAAM+D,KAAWhb,KAAKwT,UAAUqE,UAAUoD,SACvCD,EAAQE,WACRlb,KAAKiX,kBAAkBpW,KAAKma,IAE5BA,EAAQG,gBAAkBH,EAAQI,oBAAsBJ,EAAQK,aAChErb,KAAKgX,iBAAiBnW,KAAKma,GAIvC,WAAWM,GACP,IAAI7a,EAAI0F,EACJnG,KAAK+W,aACmB,QAAvBtW,EAAKT,KAAKqH,eAA4B,IAAP5G,GAAyBA,EAAG2X,UAEhEpY,KAAK+W,WACDuE,EAAOC,SAAWxF,MAAsBuF,EAAOC,QACF,SAAvCD,EAAOC,QAAQxF,IACf/V,KAAK+W,WACf/W,KAAKqH,QAAUiU,EACftb,KAAKqH,QAAQmU,WAAa,OAC1Bxb,KAAKyb,eAAiBrR,GAAW,GAAIpK,KAAKqH,QAAQgT,OAClDra,KAAK+F,KAAKE,OAASqV,EAAOI,aAC1B1b,KAAK+F,KAAKC,MAAQsV,EAAOK,YACzB3b,KAAK8W,SAAW9W,KAAKqH,QAAQuU,WAAW,MACN,QAAjCzV,EAAKnG,KAAKoX,yBAAsC,IAAPjR,GAAyBA,EAAG4T,QAAQ/Z,KAAKqH,QAAS,CAAE2S,YAAY,IAC1Gha,KAAKwT,UAAUgC,OAAOqG,OACtB7b,KAAK8Z,iBAET,QACI,MAAMvV,EAAUvE,KAAKwT,UAAUkE,cAC/B1X,KAAKuV,KAAM2C,IACH3T,EAAQoP,eAAenP,QAAUD,EAAQoP,eAAemI,OACxD1I,GAAM8E,EAAKlY,KAAK+F,MAChB/F,KAAKiY,WAAWjY,KAAK+b,mBAGrB/b,KAAKiY,eAIjB,SACI,IAAKjY,KAAKqH,QACN,OAEJ,MAAMmM,EAAYxT,KAAKwT,UAAWwI,EAAUxI,EAAUgC,OAAOC,WAAY1P,EAAOyN,EAAU8H,OAAOvV,KAAMkW,EAAU,CAC7GjW,MAAOhG,KAAKqH,QAAQsU,YAAcK,EAClC/V,OAAQjG,KAAKqH,QAAQqU,aAAeM,GAExC,GAAIC,EAAQhW,SAAWF,EAAKE,QACxBgW,EAAQjW,QAAUD,EAAKC,OACvBiW,EAAQhW,SAAWjG,KAAKqH,QAAQpB,QAChCgW,EAAQjW,QAAUhG,KAAKqH,QAAQrB,MAC/B,OAEJ,MAAMkW,EAAUC,OAAOC,OAAO,GAAIrW,GAClC/F,KAAKqH,QAAQrB,MAAQD,EAAKC,MAAQhG,KAAKqH,QAAQsU,YAAcK,EAC7Dhc,KAAKqH,QAAQpB,OAASF,EAAKE,OAASjG,KAAKqH,QAAQqU,aAAeM,EAC5Dhc,KAAKwT,UAAU6I,UACfrc,KAAKsc,aAAe,CAChBtW,MAAOD,EAAKC,MAAQkW,EAAQlW,MAC5BC,OAAQF,EAAKE,OAASiW,EAAQjW,SAI1C,qBACI,IAAKjG,KAAKqH,QACN,OAEJrH,KAAK0Z,SACL,MAAMlG,EAAYxT,KAAKwT,UAAW+I,EAAe/I,EAAUgJ,sBAC3DhJ,EAAUqE,UAAU4E,aACpBzc,KAAK0c,sBACDH,SACM/I,EAAUmJ,UAGxB,uBAAuB7P,GACnB,IAAIrM,EACJ,IAAK,MAAMua,KAAWhb,KAAKiX,kBACM,QAA5BxW,EAAKua,EAAQE,iBAA8B,IAAPza,GAAyBA,EAAGmc,KAAK5B,EAASlO,GAGvF,sBAAsBoL,EAAKpL,EAAUnD,EAAQ0P,EAAU3F,EAAaI,GAChE,IAAIrT,EACJ,IAAK,MAAMua,KAAWhb,KAAKgX,iBAAkB,CACzC,GAAIgE,EAAQG,eAAgB,CACxB,MAAM,KAAEvG,EAAI,OAAEC,GAAWmG,EAAQG,eAAerO,EAAUoL,EAAKvO,EAAQ0P,GACnEzE,IACAlB,EAAYkB,KAAOA,GAEnBC,IACAnB,EAAYmB,OAASA,GAG7B,GAAImG,EAAQI,mBAAoB,CAC5B,MAAMyB,EAAmB7B,EAAQI,mBAAmBtO,GACpD,IAAK,MAAMlP,KAAOif,EACdlG,GAAkB7C,EAAW+I,EAAkBjf,GAGzB,QAA7B6C,EAAKua,EAAQK,kBAA+B,IAAP5a,GAAyBA,EAAGmc,KAAK5B,EAASlO,IAGxF,sBACI,IAAK,MAAM8I,KAAU5V,KAAKkX,eAClBtB,EAAO8D,QACP9D,EAAO8D,SAInB,yBAAyB5M,GACrB,IAAI6L,EAAQC,EACZ,IAAK,MAAMhD,KAAU5V,KAAKmX,cAOtB,IANKwB,GAAU/C,EAAOkF,oBAClBnC,EAASxJ,GAAgByG,EAAOkF,kBAAkBhO,MAEjD8L,GAAUhD,EAAOmF,sBAClBnC,EAASzJ,GAAgByG,EAAOmF,oBAAoBjO,KAEpD6L,GAAUC,EACV,MAGR,MAAO,CAACD,EAAQC,GAEpB,aACI,MAAMrU,EAAUvE,KAAKwT,UAAUkE,cAAeoE,EAAQvX,EAAQoP,eAAemI,MAAOjN,EAAQiN,EAAMjN,MAAOiO,EAAWlO,GAAgBC,GACpI,GAAIiO,EAAU,CACV,MAAMC,EAAa,CACf9Y,EAAG6Y,EAAS7Y,EACZoK,EAAGyO,EAASzO,EACZC,EAAGwO,EAASxO,EACZC,EAAGuN,EAAM1L,SAEbpQ,KAAK+b,iBAAmB5L,GAAgB4M,EAAYA,EAAWxO,IAGvE,aACI,MAAMlH,EAAUrH,KAAKqH,QAAS9C,EAAUvE,KAAKwT,UAAUkE,cACvD,GAAKrQ,EAAL,CAGIrH,KAAKgd,aACLhd,KAAKyb,eAAiBrR,GAAW,GAAI/C,EAAQgT,OAC7Cra,KAAKid,uBAGLjd,KAAKqY,sBAET,IAAK,MAAMza,KAAO2G,EAAQ8V,MAAO,CAC7B,IAAKzc,IAAQ2G,EAAQ8V,MACjB,SAEJ,MAAMjX,EAAQmB,EAAQ8V,MAAMzc,GACvBwF,GAGLiE,EAAQgT,MAAM6C,YAAYtf,EAAKwF,EAAO,eAG9C,aACI,MAAMmB,EAAUvE,KAAKwT,UAAUkE,cAAeE,EAAQrT,EAAQsT,UAAUC,KAAKF,MAAOuF,EAAYvO,GAAgBgJ,EAAMuF,WACtH,GAAIA,EAAW,CACX,MAAMvF,EAAQrT,EAAQsT,UAAUC,KAAKF,MACrC5X,KAAKgY,gBAAkBmE,OAAOC,OAAOD,OAAOC,OAAO,GAAIe,GAAY,CAAE5O,EAAG,EAAIqJ,EAAMzW,UAG1F,WAAW8R,GACPjT,KAAKuV,KAAM2C,IACPnF,GAAUmF,EAAKlY,KAAK+F,KAAMkN,KAGlC,eACI,IAAIxS,EAAI0F,EACR,MAAMkB,EAAUrH,KAAKqH,QAChBA,IAG6B,QAAjC5G,EAAKT,KAAKoX,yBAAsC,IAAP3W,GAAyBA,EAAG0X,aACtEnY,KAAK2Z,aACL3Z,KAAK8Z,iBAC6B,QAAjC3T,EAAKnG,KAAKoX,yBAAsC,IAAPjR,GAAyBA,EAAG4T,QAAQ1S,EAAS,CAAE2S,YAAY,KAEzG,sBACI,MAAM3S,EAAUrH,KAAKqH,QAAS+V,EAAgBpd,KAAKyb,eAC7CpU,GAAW+V,IAGjB/V,EAAQgT,MAAMlV,SAAWiY,EAAcjY,SACvCkC,EAAQgT,MAAMtB,OAASqE,EAAcrE,OACrC1R,EAAQgT,MAAMrQ,IAAMoT,EAAcpT,IAClC3C,EAAQgT,MAAMnQ,KAAOkT,EAAclT,KACnC7C,EAAQgT,MAAMrU,MAAQoX,EAAcpX,MACpCqB,EAAQgT,MAAMpU,OAASmX,EAAcnX,QAEzC,sBACI,MAAMoB,EAAUrH,KAAKqH,QACrB,IAAKA,EACD,OAEJ,MAAMgW,EAAW,YACjBhW,EAAQgT,MAAM6C,YAAY,WAAY,QAASG,GAC/ChW,EAAQgT,MAAM6C,YAAY,UAAWld,KAAKwT,UAAUkE,cAAcC,WAAWoB,OAAOuE,SAAS,IAAKD,GAClGhW,EAAQgT,MAAM6C,YAAY,MAAO,IAAKG,GACtChW,EAAQgT,MAAM6C,YAAY,OAAQ,IAAKG,GACvChW,EAAQgT,MAAM6C,YAAY,QAAS,OAAQG,GAC3ChW,EAAQgT,MAAM6C,YAAY,SAAU,OAAQG,ICzXpD,SAASE,GAAelW,EAASmW,EAAOxc,EAASyc,EAAKlZ,GAClD,GAAIkZ,EAAK,CACL,IAAIC,EAAa,CAAEC,SAAS,GACL,mBAAZpZ,EACPmZ,EAAWE,QAAUrZ,OAEJ1C,IAAZ0C,IACLmZ,EAAanZ,GAEjB8C,EAAQwW,iBAAiBL,EAAOxc,EAAS0c,OAExC,CACD,MAAMI,EAAgBvZ,EACtB8C,EAAQ3G,oBAAoB8c,EAAOxc,EAAS8c,IAG7C,MAAM,GACT,YAAYtK,GACRxT,KAAKwT,UAAYA,EACjBxT,KAAK+d,SAAU,EACf/d,KAAKge,SAAW,CACZC,UAAYC,GAAMle,KAAKme,eAAeD,GACtCE,WAAaF,GAAMle,KAAKme,eAAeD,GACvCG,UAAYH,GAAMle,KAAKme,eAAeD,GACtCI,SAAU,IAAMte,KAAKue,mBACrBC,WAAY,IAAMxe,KAAKue,mBACvBE,YAAa,IAAMze,KAAKue,mBACxBG,cAAgBR,GAAMle,KAAK2e,gBAAgBT,GAC3CU,QAAUV,GAAMle,KAAK2e,gBAAgBT,GACrCW,UAAW,IAAM7e,KAAK6e,YACtBC,iBAAkB,IAAM9e,KAAK+e,yBAC7BC,YAAcd,GAAMle,KAAKif,kBAAkBf,GAC3CgB,eAAiBhB,GAAMle,KAAKif,kBAAkBf,GAC9CxE,OAAQ,IAAM1Z,KAAKmf,sBAG3B,eACInf,KAAKof,iBAAgB,GAEzB,kBACIpf,KAAKof,iBAAgB,GAEzB,kBAAkBlB,GACd,MAAM1K,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cACtD,GAAI1X,KAAK+d,QAAS,CACd,MAAMsB,EAAqB7L,EAAU8L,cAAcC,MAAOC,EAAWH,EAAmBla,SACxF,IAAKqa,EACD,OAEJH,EAAmBI,cAAgBtD,OAAOC,OAAO,GAAIoD,GACrDH,EAAmBK,WAAY,IAAIC,MAAOC,UAC1C,MAAMC,EAAUtb,EAAQ+a,cAAcQ,OAAOD,QAC7CtY,GAA0BsY,EAAQ/U,KAAOA,GAAS9K,KAAK+f,gBAAgBjV,IAE5D,aAAXoT,EAAE7f,MACFiK,WAAW,IAAMtI,KAAKue,mBAAoB,KAGlD,gBAAgBzT,GACZ9K,KAAKwT,UAAUuM,gBAAgBjV,GAEnC,kBAAkBoT,GACd,MAAM8B,EAAa9B,EAAG1K,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUjP,QAAS0b,EAAgB1b,EAAQ0b,cAAeC,EAAYF,EAAWvY,QAAUwY,EAAcE,KAAOF,EAAcG,MAAOC,EAAQ9b,EAAQ+b,OAAOjT,KAAMgT,GAAUA,EAAMpiB,OAASiiB,GACnPG,GAASA,EAAMjiB,QAAQmiB,MACvB/M,EAAUgN,UAAUN,GAG5B,yBACI,MAAM1M,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cACtD1X,KAAKue,mBACAha,EAAQkc,eAGI,OAAb1Y,eAAkC,IAAbA,cAAsB,EAASA,SAAS2Y,SAC7DlN,EAAUmN,YAAa,EACvBnN,EAAUoN,UAGVpN,EAAUmN,YAAa,EACnBnN,EAAUqN,qBACVrN,EAAUsN,MAAK,GAGftN,EAAU+B,MAAK,KAI3B,qBACQvV,KAAK+gB,gBACLrY,aAAa1I,KAAK+gB,sBACX/gB,KAAK+gB,eAEhB/gB,KAAK+gB,cAAgBzY,WAAWQ,UAAc,IAAIrI,EAAI,OAAwC,QAAhCA,EAAKT,KAAKwT,UAAU8H,cAA2B,IAAP7a,OAAgB,EAASA,EAAGugB,gBAAoF,IAAjEhhB,KAAKwT,UAAUkE,cAAc4H,cAAcQ,OAAOpG,OAAOuH,OAElN,gBAAgBxD,GACZ,IAAIhd,EACJ,MAAMud,EAAWhe,KAAKge,SAAUxK,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cAAewJ,EAAa3c,EAAQ+a,cAAc6B,UAClI,IAAIC,EAAqB9K,GACzB,GAAmB,WAAf4K,EACA1N,EAAU8L,cAAcjY,QAAUS,OAClCsZ,EAAqB7K,QAEpB,GAAmB,WAAf2K,GAA2B1N,EAAU8H,OAAOjU,QAAS,CAC1D,MAAMga,EAAW7N,EAAU8H,OAAOjU,QAClCmM,EAAU8L,cAAcjY,QAA4C,QAAjC5G,EAAK4gB,EAASC,qBAAkC,IAAP7gB,EAAgBA,EAAK4gB,EAASE,gBAG1G/N,EAAU8L,cAAcjY,QAAUmM,EAAU8H,OAAOjU,QAEvD,MAAMma,EAAatZ,GAAe,gCAC9BsZ,SACoC3f,IAAhC2f,EAAW3D,iBACXN,GAAeiE,EAAY,SAAUxD,EAASgB,YAAavB,QAE3B5b,IAA3B2f,EAAWC,cACZhE,EACA+D,EAAWC,YAAYzD,EAASkB,gBAGhCsC,EAAWE,eAAe1D,EAASkB,kBAI/C,MAAMyC,EAAkBnO,EAAU8L,cAAcjY,QAChD,IAAKsa,EACD,OAEJ,MAAMC,EAAOD,GACTpd,EAAQ+a,cAAcQ,OAAO+B,QAAQrd,QAAUD,EAAQ+a,cAAcQ,OAAOD,QAAQrb,UACpF+Y,GAAeoE,EAAiBxL,GAAgB6H,EAASC,UAAWR,GACpEF,GAAeoE,EAAiBvL,GAAiB4H,EAASI,WAAYX,GACtEF,GAAeoE,EAAiBtL,GAAgB2H,EAASK,UAAWZ,GAC/DlZ,EAAQ+a,cAAcQ,OAAOD,QAAQrb,QAItC+Y,GAAeoE,EAAiB3L,GAAegI,EAASU,cAAejB,GACvEF,GAAeoE,EAAiBzL,GAAc8H,EAASY,QAASnB,GAChEF,GAAeoE,EAAiB1L,GAAgB+H,EAASa,UAAWpB,IALpEF,GAAeoE,EAAiB3L,GAAegI,EAASM,SAAUb,GAOtEF,GAAeoE,EAAiBP,EAAoBpD,EAASQ,WAAYf,GACzEF,GAAeoE,EAAiBnL,GAAkBwH,EAASS,YAAahB,IAExEjK,EAAU8H,OAAOjU,UACjBmM,EAAU8H,OAAOjU,QAAQgT,MAAMyH,cAAgBF,IAASpO,EAAU8H,OAAOjU,QAAU,UAAY,QAE/F9C,EAAQ+a,cAAcQ,OAAOpG,SACC,qBAAnBqI,eACH/hB,KAAKgiB,iBAAmBvE,GACpBjK,EAAU8H,OAAOjU,SACjBrH,KAAKgiB,eAAeC,UAAUzO,EAAU8H,OAAOjU,SAEnDrH,KAAKgiB,eAAe7J,oBACbnY,KAAKgiB,iBAENhiB,KAAKgiB,gBAAkBvE,GAAOjK,EAAU8H,OAAOjU,UACrDrH,KAAKgiB,eAAiB,IAAID,eAAgBG,IACtC,MAAMC,EAAQD,EAAQ7U,KAAM6Q,GAAMA,EAAEkE,SAAW5O,EAAU8H,OAAOjU,SAC3D8a,GAGLniB,KAAKmf,uBAETnf,KAAKgiB,eAAejI,QAAQvG,EAAU8H,OAAOjU,UAIjDkW,GAAezV,OAAQ2O,GAAauH,EAAStE,OAAQ+D,IAGzD1V,UACAwV,GAAexV,SAAU2O,GAAuBsH,EAASc,iBAAkBrB,GAAK,GAGxF,YACI,MAAM6B,EAAgBtf,KAAKwT,UAAU8L,cACrC,GAAIA,EAAe,CACf,MAAMC,EAAQD,EAAcC,MAC5BA,EAAM8C,UAAW,EACjB9C,EAAM+C,aAAe/C,EAAMpa,UAGnC,gBAAgB+Y,GACZ,MAAM1K,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cAAe6H,EAAQ/L,EAAU8L,cAAcC,MACrGA,EAAMxV,QAAS,EACf,IAAIwY,GAAU,EACd,MAAMC,EAAgBjD,EAAMpa,SAC5B,GAAKqd,GAAkBje,EAAQ+a,cAAcQ,OAAOD,QAAQrb,OAA5D,CAGA,IAAK,MAAO,CAAEoR,KAAWpC,EAAUqH,QAC/B,GAAKjF,EAAO6M,qBAGZF,EAAU3M,EAAO6M,mBAAmBD,GAChCD,GACA,MAGHA,GACDviB,KAAK0iB,kBAAkBxE,GAE3BqB,EAAM8C,UAAW,GAErB,mBACI,MAAM/C,EAAgBtf,KAAKwT,UAAU8L,cACrC,IAAKA,EACD,OAEJ,MAAMC,EAAQD,EAAcC,aACrBA,EAAMpa,gBACNoa,EAAME,qBACNF,EAAM+C,aACbhD,EAAcnN,OAASmE,GACvBiJ,EAAMxV,QAAS,EACfwV,EAAM8C,UAAW,EAErB,eAAenE,GACX,IAAIzd,EAAI0F,EAAI/G,EAAIgH,EAAI5G,EAAI+T,EAAIoP,EAC5B,MAAMnP,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cACtD,KAAyC,QAAlCjX,EAAK+S,EAAU8L,qBAAkC,IAAP7e,OAAgB,EAASA,EAAG4G,SACzE,OAGJ,IAAI0M,EADJP,EAAU8L,cAAcC,MAAMxV,QAAS,EAEvC,MAAMuR,EAAS9H,EAAU8H,OAAOjU,QAChC,GAAI6W,EAAE7f,KAAKyP,WAAW,WAAY,CAC9B9N,KAAK+d,SAAU,EACf,MAAM6E,EAAa1E,EACnB,GAAI1K,EAAU8L,cAAcjY,UAAYS,QACpC,GAAIwT,EAAQ,CACR,MAAMuH,EAAavH,EAAOwH,wBAC1B/O,EAAM,CACFpS,EAAGihB,EAAWG,QAAUF,EAAW3Y,KACnCzI,EAAGmhB,EAAWI,QAAUH,EAAW7Y,WAI1C,GAAwC,WAApCzF,EAAQ+a,cAAc6B,UAAwB,CACnD,MAAM7e,EAASsgB,EAAWR,OAAQA,EAASQ,EAAWK,cAAe5B,EAAW7N,EAAU8H,OAAOjU,QACjG,GAAI/E,GAAU8f,GAAUf,EAAU,CAC9B,MAAM6B,EAAa5gB,EAAOwgB,wBAAyBK,EAAaf,EAAOU,wBAAyBM,EAAa/B,EAASyB,wBACtH/O,EAAM,CACFpS,EAAGihB,EAAWS,QAAU,EAAIH,EAAWhZ,MAAQiZ,EAAWjZ,KAAOkZ,EAAWlZ,MAC5EzI,EAAGmhB,EAAWU,QAAU,EAAIJ,EAAWlZ,KAAOmZ,EAAWnZ,IAAMoZ,EAAWpZ,WAI9E+J,EAAM,CACFpS,EAAiC,QAA7BwE,EAAKyc,EAAWS,eAA4B,IAAPld,EAAgBA,EAAKyc,EAAWG,QACzEthB,EAAiC,QAA7BrC,EAAKwjB,EAAWU,eAA4B,IAAPlkB,EAAgBA,EAAKwjB,EAAWI,cAI5EJ,EAAWR,SAAW5O,EAAU8H,OAAOjU,UAC5C0M,EAAM,CACFpS,EAAiC,QAA7ByE,EAAKwc,EAAWS,eAA4B,IAAPjd,EAAgBA,EAAKwc,EAAWG,QACzEthB,EAAiC,QAA7BjC,EAAKojB,EAAWU,eAA4B,IAAP9jB,EAAgBA,EAAKojB,EAAWI,cAIhF,CACDhjB,KAAK+d,QAAqB,cAAXG,EAAE7f,KACjB,MAAMklB,EAAarF,EAAGsF,EAAYD,EAAWE,QAAQF,EAAWE,QAAQtiB,OAAS,GAAIiiB,EAAwB,OAAX9H,QAA8B,IAAXA,OAAoB,EAASA,EAAOwH,wBACzJ/O,EAAM,CACFpS,EAAG6hB,EAAUT,SAA8F,QAAlFxP,EAAoB,OAAf6P,QAAsC,IAAfA,OAAwB,EAASA,EAAWlZ,YAAyB,IAAPqJ,EAAgBA,EAAK,GACxI9R,EAAG+hB,EAAUR,SAA6F,QAAjFL,EAAoB,OAAfS,QAAsC,IAAfA,OAAwB,EAASA,EAAWpZ,WAAwB,IAAP2Y,EAAgBA,EAAK,IAG/I,MAAM3G,EAAUxI,EAAUgC,OAAOC,WAC7B1B,IACAA,EAAIpS,GAAKqa,EACTjI,EAAItS,GAAKua,GAEbxI,EAAU8L,cAAcC,MAAMpa,SAAW4O,EACzCP,EAAU8L,cAAcnN,OAASgE,ICrRzC,SAASuN,GAAUtgB,EAAOugB,EAAW,GAAIC,GAAS,GAC9C,MAAO,CACHxgB,QACA6D,OAAQ2c,EAAS,GAAKD,EAAY,GAAKvgB,EAAS,KAGjD,MAAMygB,GACT,YAAYrQ,GACRxT,KAAKwT,UAAYA,EAErB,gBAAgBsQ,GACZ,IAAIrjB,EACJ,IACI,MAAM+S,EAAYxT,KAAKwT,UACvB,IAAKA,EAAUoQ,aACiB/hB,IAA5B2R,EAAUuQ,eACVD,EAAYtQ,EAAUuQ,cAAgB,IAAOvQ,EAAUmQ,SAEvD,YADAnQ,EAAU+B,MAAK,GAGgB,QAAlC9U,EAAK+S,EAAUuQ,qBAAkC,IAAPtjB,IAAsB+S,EAAUuQ,cAAgBD,GAC3F,MAAMrQ,EAAQiQ,GAAUI,EAAYtQ,EAAUuQ,cAAevQ,EAAUmQ,SAAUnQ,EAAUoQ,QAG3F,GAFApQ,EAAUwQ,UAAYvQ,EAAMrQ,MAC5BoQ,EAAUuQ,cAAgBD,EACtBrQ,EAAMrQ,MAAQ,IAEd,YADAoQ,EAAU+B,MAAK,GAInB,SADM/B,EAAUqE,UAAUtC,KAAK9B,GAC3BD,EAAUyQ,SAAW,GAAKzQ,EAAUwQ,SAAWxQ,EAAUyQ,SAEzD,YADAzQ,EAAU0Q,UAGV1Q,EAAUqN,sBACVrN,EAAU+B,MAAK,GAGvB,MAAO2I,GACHiG,QAAQC,MAAM,sCAAuClG,KCtC1D,MAAMmG,GACT,cACIrkB,KAAKoD,MAAQ,GAEjB,cAAcd,EAAQhE,GAClB,MAAMuQ,EAAQ,IAAIwV,GAUlB,OATAxV,EAAM1F,KAAK7G,QACET,IAATvD,IACoB,kBAATA,GAAqBA,aAAgBoJ,MAC5CmH,EAAM1F,KAAK,CAAE/F,MAAO9E,IAGpBuQ,EAAM1F,KAAK7K,IAGZuQ,EAEX,KAAKvQ,QACgEuD,KAAnD,OAATvD,QAA0B,IAATA,OAAkB,EAASA,EAAK8E,SAGtDpD,KAAKoD,MAAQ9E,EAAK8E,QCpBnB,MAAM,GACT,cACIpD,KAAK6O,MAAQ,IAAIwV,GACjBrkB,KAAK6O,MAAMzL,MAAQ,GACnBpD,KAAKwa,MAAQ,GACbxa,KAAKmF,SAAW,GAChBnF,KAAK2a,OAAS,GACd3a,KAAK+F,KAAO,GACZ/F,KAAKoQ,QAAU,EAEnB,KAAK9R,GACIA,SAGcuD,IAAfvD,EAAKuQ,QACL7O,KAAK6O,MAAQwV,GAAatiB,OAAO/B,KAAK6O,MAAOvQ,EAAKuQ,aAEnChN,IAAfvD,EAAKkc,QACLxa,KAAKwa,MAAQlc,EAAKkc,YAEA3Y,IAAlBvD,EAAK6G,WACLnF,KAAKmF,SAAW7G,EAAK6G,eAELtD,IAAhBvD,EAAKqc,SACL3a,KAAK2a,OAASrc,EAAKqc,aAEL9Y,IAAdvD,EAAKyH,OACL/F,KAAK+F,KAAOzH,EAAKyH,WAEAlE,IAAjBvD,EAAK8R,UACLpQ,KAAKoQ,QAAU9R,EAAK8R,WC9BzB,MAAM,GACT,cACIpQ,KAAK6O,MAAQ,IAAIwV,GACjBrkB,KAAK6O,MAAMzL,MAAQ,OACnBpD,KAAKoQ,QAAU,EAEnB,KAAK9R,GACIA,SAGcuD,IAAfvD,EAAKuQ,QACL7O,KAAK6O,MAAQwV,GAAatiB,OAAO/B,KAAK6O,MAAOvQ,EAAKuQ,aAEjChN,IAAjBvD,EAAK8R,UACLpQ,KAAKoQ,QAAU9R,EAAK8R,WCdzB,MAAM,GACT,cACIpQ,KAAK4T,UAAY,kBACjB5T,KAAK8b,MAAQ,IAAI,GACjB9b,KAAKwE,QAAS,EAElB,KAAKlG,GACD,GAAKA,EAAL,CAMA,QAHuBuD,IAAnBvD,EAAKsV,YACL5T,KAAK4T,UAAYtV,EAAKsV,gBAEP/R,IAAfvD,EAAKwd,MAAqB,CAC1B,MAAMA,EAAQxd,EAAKwd,MACbjN,EAA+B,kBAAfvQ,EAAKwd,MAAqB,CAAEjN,MAAOvQ,EAAKwd,OAAUxd,EAAKwd,MAC7E9b,KAAK8b,MAAM3S,UAAqBtH,IAAhBia,EAAMjN,MAAsBiN,EAAQ,CAAEjN,MAAOA,SAE7ChN,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,UCpBxB,MAAM8f,GACT,cACItkB,KAAKwE,QAAS,EACdxE,KAAK+Y,OAAS,EAElB,KAAKza,GACIA,SAGeuD,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,aAEH3C,IAAhBvD,EAAKya,SACL/Y,KAAK+Y,OAASza,EAAKya,UCbxB,MAAMwL,GACT,cACIvkB,KAAKwE,QAAS,EACdxE,KAAK8K,KAAO,GAEhB,KAAKxM,GACIA,SAGeuD,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,aAEL3C,IAAdvD,EAAKwM,OACL9K,KAAK8K,KAAOxM,EAAKwM,QCZtB,MAAM,GACT,cACI9K,KAAKsH,UAAY,GACjBtH,KAAKwE,QAAS,EACdxE,KAAK8K,KAAO,GACZ9K,KAAK3B,KAAO,SAEhB,SACI,OAAO2B,KAAKwkB,UAEhB,OAAOphB,GACHpD,KAAKwkB,UAAYphB,EAErB,gBACI,OAAOpD,KAAKykB,IAEhB,cAAcrhB,GACVpD,KAAKykB,IAAMrhB,EAEf,UACI,OAAOmE,GAA0BvH,KAAKsH,UAAYM,GAAMA,EAAEuG,QAAQ,IAAK,KAE3E,QAAQ/K,GACJpD,KAAKsH,UAAYC,GAA0BnE,EAAQwE,GAAM,IAAIA,GAEjE,KAAKtJ,GACD,IAAImC,EAAI0F,EACR,IAAK7H,EACD,OAEJ,MAAMmmB,EAAiF,QAA1Ete,EAAyB,QAAnB1F,EAAKnC,EAAKmmB,WAAwB,IAAPhkB,EAAgBA,EAAKnC,EAAKkmB,iBAA8B,IAAPre,EAAgBA,EAAK7H,EAAKomB,QAC7G7iB,IAAR4iB,IACAzkB,KAAKykB,IAAMA,QAEQ5iB,IAAnBvD,EAAKgJ,YACLtH,KAAKsH,UAAYhJ,EAAKgJ,gBAENzF,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,aAEL3C,IAAdvD,EAAKwM,OACL9K,KAAK8K,KAAOxM,EAAKwM,WAEHjJ,IAAdvD,EAAKD,OACL2B,KAAK3B,KAAOC,EAAKD,OC7CtB,MAAMsmB,GACT,cACI3kB,KAAKwE,QAAS,EACdxE,KAAK4kB,MAAQ,EACb5kB,KAAK4jB,OAAS,GAElB,KAAKtlB,GACIA,SAGeuD,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,aAEJ3C,IAAfvD,EAAKsmB,QACL5kB,KAAK4kB,MAAQtmB,EAAKsmB,YAEF/iB,IAAhBvD,EAAKslB,SACL5jB,KAAK4jB,OAAStlB,EAAKslB,UChBxB,MAAM,GACT,cACI5jB,KAAKwE,QAAS,EACdxE,KAAK8K,KAAO,GACZ9K,KAAK6kB,SAAW,IAAIF,GAExB,KAAKrmB,GACIA,SAGeuD,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,aAEL3C,IAAdvD,EAAKwM,OACL9K,KAAK8K,KAAOxM,EAAKwM,MAErB9K,KAAK6kB,SAAS1b,KAAK7K,EAAKumB,YCjBzB,MAAMC,GACT,cACI9kB,KAAKihB,MAAQ,GACbjhB,KAAKwE,QAAS,EAElB,KAAKlG,QACYuD,IAATvD,SAGeuD,IAAfvD,EAAK2iB,QACLjhB,KAAKihB,MAAQ3iB,EAAK2iB,YAEFpf,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,UCRxB,MAAM,GACT,cACIxE,KAAK6f,QAAU,IAAI0E,GACnBvkB,KAAK+kB,MAAQ,IAAI,GACjB/kB,KAAK6hB,QAAU,IAAI,GACnB7hB,KAAK0Z,OAAS,IAAIoL,GAEtB,cACI,OAAO9kB,KAAK6f,QAEhB,YAAYzc,GACRpD,KAAK6f,QAAUzc,EAEnB,YACI,OAAOpD,KAAK+kB,MAEhB,UAAU3hB,GACNpD,KAAK+kB,MAAQ3hB,EAEjB,cACI,OAAOpD,KAAK6hB,QAEhB,YAAYze,GACRpD,KAAK6hB,QAAUze,EAEnB,KAAK9E,GACD,IAAImC,EAAI0F,EAAI/G,EACZ,IAAKd,EACD,OAEJ0B,KAAK6f,QAAQ1W,KAA6B,QAAvB1I,EAAKnC,EAAKuhB,eAA4B,IAAPpf,EAAgBA,EAAKnC,EAAK0mB,SAC5E,MAAMD,EAA8B,QAArB5e,EAAK7H,EAAKymB,aAA0B,IAAP5e,EAAgBA,EAAK7H,EAAK2mB,WACxDpjB,IAAVkjB,IACA/kB,KAAK+kB,MAAQxd,GAA0Bwd,EAAQnd,IAC3C,MAAMsd,EAAM,IAAI,GAEhB,OADAA,EAAI/b,KAAKvB,GACFsd,KAGfllB,KAAK6hB,QAAQ1Y,KAA6B,QAAvB/J,EAAKd,EAAKujB,eAA4B,IAAPziB,EAAgBA,EAAKd,EAAK6mB,SACjD,mBAAhB7mB,EAAKob,OACZ1Z,KAAK0Z,OAAOlV,OAASlG,EAAKob,OAG1B1Z,KAAK0Z,OAAOvQ,KAAK7K,EAAKob,SCjD3B,MAAM0L,GACT,YAAYC,EAAQ7R,GAChBxT,KAAKslB,QAAUD,EACfrlB,KAAKulB,WAAa/R,EAEtB,KAAKlV,GACD,GAAKA,GAGD0B,KAAKulB,WAAY,CACjB,MAAMC,EAAcxlB,KAAKslB,QAAQzK,QAAQ2K,YAAY7kB,IAAIX,KAAKulB,YAC9D,GAAIC,EACA,IAAK,MAAMC,KAAcD,EACjBC,EAAWC,iBACXD,EAAWC,gBAAgB1lB,KAAM1B,KCZlD,MAAM,GACT,YAAY+mB,EAAQ7R,GAChBxT,KAAKmhB,UAAY,SACjBnhB,KAAK8f,OAAS,IAAI,GAClB9f,KAAK2lB,MAAQ,IAAIP,GAAMC,EAAQ7R,GAEnC,gBACI,OAAOxT,KAAKmhB,UAEhB,cAAc/d,GACVpD,KAAKmhB,UAAY/d,EAErB,KAAK9E,GACD,IAAImC,EACJ,IAAKnC,EACD,OAEJ,MAAM6iB,EAAsC,QAAzB1gB,EAAKnC,EAAK6iB,iBAA8B,IAAP1gB,EAAgBA,EAAKnC,EAAKsnB,eAC5D/jB,IAAdsf,IACAnhB,KAAKmhB,UAAYA,GAErBnhB,KAAK8f,OAAO3W,KAAK7K,EAAKwhB,QACtB9f,KAAK2lB,MAAMxc,KAAK7K,EAAKqnB,QCvBtB,MAAM,GACT,KAAKrnB,GACD,IAAImC,EAAI0F,EACH7H,SAGiBuD,IAAlBvD,EAAK6G,WACLnF,KAAKmF,SAAW,CACZxD,EAA8B,QAA1BlB,EAAKnC,EAAK6G,SAASxD,SAAsB,IAAPlB,EAAgBA,EAAK,GAC3DgB,EAA8B,QAA1B0E,EAAK7H,EAAK6G,SAAS1D,SAAsB,IAAP0E,EAAgBA,EAAK,UAG9CtE,IAAjBvD,EAAKiG,UACLvE,KAAKuE,QAAU6F,GAAW,GAAI9L,EAAKiG,YCbxC,MAAM,GACT,cACIvE,KAAK6lB,SAAWC,IAChB9lB,KAAKuE,QAAU,GACfvE,KAAK8K,KAAO,SAEhB,KAAKxM,GACIA,SAGiBuD,IAAlBvD,EAAKunB,WACL7lB,KAAK6lB,SAAWvnB,EAAKunB,eAEPhkB,IAAdvD,EAAKwM,OACa,WAAdxM,EAAKwM,KACL9K,KAAK8K,KAAO,SAGZ9K,KAAK8K,KAAO,eAGCjJ,IAAjBvD,EAAKiG,UACLvE,KAAKuE,QAAU6F,GAAW,GAAI9L,EAAKiG,YCvBxC,MAAMwhB,GACT,cACI/lB,KAAKugB,MAAO,EACZvgB,KAAK8K,KAAO,MACZ9K,KAAKoD,OAAQ,EAEjB,KAAK9E,GACIA,SAGauD,IAAdvD,EAAKiiB,OACLvgB,KAAKugB,KAAOjiB,EAAKiiB,WAEH1e,IAAdvD,EAAKwM,OACL9K,KAAK8K,KAAOxM,EAAKwM,WAEFjJ,IAAfvD,EAAK8E,QACLpD,KAAKoD,MAAQ9E,EAAK8E,SCfvB,MAAM,GACT,cACIpD,KAAK/B,KAAO,GACZ+B,KAAK5B,QAAU,IAAI2nB,GAEvB,KAAKznB,GACIA,SAGauD,IAAdvD,EAAKL,OACL+B,KAAK/B,KAAOK,EAAKL,MAErB+B,KAAK5B,QAAQ+K,KAAK7K,EAAKF,cACFyD,IAAjBvD,EAAKiG,UACLvE,KAAKuE,QAAU6F,GAAW,GAAI9L,EAAKiG,YCfxC,MAAM,GACT,cACIvE,KAAKgmB,MAAQ,EACbhmB,KAAKwE,QAAS,EACdxE,KAAK0J,OAAS,EACd1J,KAAKiS,MAAQ,EACbjS,KAAKkS,MAAQ,EACblS,KAAKoS,MAAO,EAEhB,KAAK9T,GACIA,SAGcuD,IAAfvD,EAAK0nB,QACLhmB,KAAKgmB,MAAQ3hB,GAAc/F,EAAK0nB,aAEhBnkB,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,aAEH3C,IAAhBvD,EAAKoL,SACL1J,KAAK0J,OAASrF,GAAc/F,EAAKoL,cAElB7H,IAAfvD,EAAK2T,QACLjS,KAAKiS,MAAQ5N,GAAc/F,EAAK2T,aAEjBpQ,IAAfvD,EAAK4T,QACLlS,KAAKkS,MAAQ7N,GAAc/F,EAAK4T,aAElBrQ,IAAdvD,EAAK8T,OACLpS,KAAKoS,KAAO9T,EAAK8T,QC7BtB,MAAM,GACT,cACIpS,KAAKyP,EAAI,IAAI,GACbzP,KAAK2P,EAAI,IAAI,GACb3P,KAAK0P,EAAI,IAAI,GAEjB,KAAKpR,GACIA,IAGL0B,KAAKyP,EAAEtG,KAAK7K,EAAKmR,GACjBzP,KAAK2P,EAAExG,KAAK7K,EAAKqR,GACjB3P,KAAK0P,EAAEvG,KAAK7K,EAAKoR,KCXlB,MAAM,WAAwB2U,GACjC,cACIthB,QACA/C,KAAKyR,UAAY,IAAI,GAEzB,cAAcnP,EAAQhE,GAClB,MAAMuQ,EAAQ,IAAI,GAUlB,OATAA,EAAM1F,KAAK7G,QACET,IAATvD,IACoB,kBAATA,GAAqBA,aAAgBoJ,MAC5CmH,EAAM1F,KAAK,CAAE/F,MAAO9E,IAGpBuQ,EAAM1F,KAAK7K,IAGZuQ,EAEX,KAAKvQ,GAED,GADAyE,MAAMoG,KAAK7K,IACNA,EACD,OAEJ,MAAM0T,EAAiB1T,EAAKmT,eACL5P,IAAnBmQ,SAC8BnQ,IAA1BmQ,EAAexN,OACfxE,KAAKyR,UAAUhC,EAAEtG,KAAK6I,GAGtBhS,KAAKyR,UAAUtI,KAAK7K,EAAKmT,aC/BlC,MAAMwU,GACT,cACIjmB,KAAKiS,MAAQ,EAEjB,KAAK3T,GACIA,QAGcuD,IAAfvD,EAAK2T,QACLjS,KAAKiS,MAAQ3T,EAAK2T,QCTvB,MAAMiU,GACT,cACIlmB,KAAKwE,QAAS,EACdxE,KAAKmmB,QAAU,EAEnB,KAAK7nB,GACIA,SAGeuD,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,aAEF3C,IAAjBvD,EAAK6nB,UACLnmB,KAAKmmB,QAAU7nB,EAAK6nB,WCbzB,MAAMC,GACT,cACIpmB,KAAKwE,QAAS,EACdxE,KAAKyE,aAAe,EAExB,KAAKnG,GACIA,SAGeuD,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,aAEG3C,IAAtBvD,EAAKmG,eACLzE,KAAKyE,aAAenG,EAAKmG,gBCX9B,MAAM,GACT,cACIzE,KAAKiD,OAAS,IAAImjB,GAClBpmB,KAAKoD,MAAQ,EAEjB,KAAK9E,GACIA,IAGsB,mBAAhBA,EAAK2E,OACZjD,KAAKiD,OAAOuB,OAASlG,EAAK2E,OAG1BjD,KAAKiD,OAAOkG,KAAK7K,EAAK2E,aAEPpB,IAAfvD,EAAK8E,QACLpD,KAAKoD,MAAQiB,GAAc/F,EAAK8E,MAAOpD,KAAKiD,OAAOuB,OAASxE,KAAKiD,OAAOwB,kBAAe5C,MCjB5F,MAAM,WAA8B,GACvC,cACIkB,QACA/C,KAAKiD,OAAOwB,aAAe,GAC3BzE,KAAKoD,MAAQ,GCJd,MAAM,GACT,cACIpD,KAAK6L,WAAa,IAAI,GACtB7L,KAAK8L,SAAW,IAAI,GAExB,KAAKxN,GACIA,IAGL0B,KAAK6L,WAAW1C,KAAK7K,EAAKuN,YAC1B7L,KAAK8L,SAAS3C,KAAK7K,EAAKwN,YCRzB,MAAM,GACT,cACI9L,KAAKqmB,OAAS,IAAIJ,GAClBjmB,KAAK4L,OAAS,IAAI,GAClB5L,KAAKwE,QAAS,EACdxE,KAAK8K,KAAO,SACZ9K,KAAKsmB,QAAU,IAAIJ,GAEvB,KAAK5nB,GACIA,IAGL0B,KAAKqmB,OAAOld,KAAK7K,EAAK+nB,QACtBrmB,KAAK4L,OAAOzC,KAAK7K,EAAKsN,aACF/J,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,aAEL3C,IAAdvD,EAAKwM,OACL9K,KAAK8K,KAAOxM,EAAKwM,MAErB9K,KAAKsmB,QAAQnd,KAAK7K,EAAKgoB,WCtBxB,MAAM,GACT,cACItmB,KAAK0J,OAAS,EACd1J,KAAKoD,MAAQ,GAEjB,KAAK9E,GACIA,SAGeuD,IAAhBvD,EAAKoL,SACL1J,KAAK0J,OAASrF,GAAc/F,EAAKoL,cAElB7H,IAAfvD,EAAK8E,QACLpD,KAAKoD,MAAQiB,GAAc/F,EAAK8E,UCbrC,MAAM,GACT,cACIpD,KAAK+E,SAAW,IAChB/E,KAAKwE,QAAS,EACdxE,KAAKyM,OAAS,CACV9K,EAAG,IACHF,EAAG,KAGX,cACI,OAAOzB,KAAKyM,OAAO9K,EAEvB,YAAYyB,GACRpD,KAAKyM,OAAO9K,EAAIyB,EAEpB,cACI,OAAOpD,KAAKyM,OAAOhL,EAEvB,YAAY2B,GACRpD,KAAKyM,OAAOhL,EAAI2B,EAEpB,KAAK9E,GACD,IAAImC,EAAI0F,EAAI/G,EAAIgH,EAChB,IAAK9H,EACD,YAEkBuD,IAAlBvD,EAAKyG,WACL/E,KAAK+E,SAAWV,GAAc/F,EAAKyG,gBAEnBlD,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,QAEvB,MAAM+hB,EAAkF,QAAvEpgB,EAA4B,QAAtB1F,EAAKnC,EAAKmO,cAA2B,IAAPhM,OAAgB,EAASA,EAAGkB,SAAsB,IAAPwE,EAAgBA,EAAK7H,EAAKioB,aAC1G1kB,IAAZ0kB,IACAvmB,KAAKyM,OAAO9K,EAAI4kB,GAEpB,MAAMC,EAAkF,QAAvEpgB,EAA4B,QAAtBhH,EAAKd,EAAKmO,cAA2B,IAAPrN,OAAgB,EAASA,EAAGqC,SAAsB,IAAP2E,EAAgBA,EAAK9H,EAAKkoB,aAC1G3kB,IAAZ2kB,IACAxmB,KAAKyM,OAAOhL,EAAI+kB,ICvCrB,MAAMC,GACT,cACIzmB,KAAK2B,EAAI,GACT3B,KAAKyB,EAAI,GACTzB,KAAK8K,KAAO,UACZ9K,KAAK2J,OAAS,EAElB,KAAKrL,GACIA,SAGUuD,IAAXvD,EAAKqD,IACL3B,KAAK2B,EAAIrD,EAAKqD,QAEHE,IAAXvD,EAAKmD,IACLzB,KAAKyB,EAAInD,EAAKmD,QAEAI,IAAdvD,EAAKwM,OACL9K,KAAK8K,KAAOxM,EAAKwM,WAEDjJ,IAAhBvD,EAAKqL,SACL3J,KAAK2J,OAASrL,EAAKqL,UCpBxB,MAAM,GACT,cACI3J,KAAK0mB,aAAe,KACpB1mB,KAAKwE,QAAS,EACdxE,KAAK2mB,SAAU,EACf3mB,KAAK4mB,SAAW,GAEpB,KAAKtoB,GACIA,SAGqBuD,IAAtBvD,EAAKooB,eACL1mB,KAAK0mB,aAAeriB,GAAc/F,EAAKooB,oBAEvB7kB,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,aAEF3C,IAAjBvD,EAAKqoB,UACL3mB,KAAK2mB,QAAUroB,EAAKqoB,cAEF9kB,IAAlBvD,EAAKsoB,WACL5mB,KAAK4mB,SAAWviB,GAAc/F,EAAKsoB,aCpBxC,MAAM,GACT,cACI5mB,KAAKsD,OAAQ,EACbtD,KAAKihB,MAAQ,IAAI,GACjBjhB,KAAKwE,QAAS,EACdxE,KAAKuE,QAAU,GAEnB,KAAKjG,GACIA,SAGcuD,IAAfvD,EAAKgF,QACLtD,KAAKsD,MAAQhF,EAAKgF,OAEtBtD,KAAKihB,MAAM9X,KAAK7K,EAAK2iB,YACDpf,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,QAEvBxE,KAAK6mB,UAAYvoB,EAAKuoB,UAClBvoB,EAAKiG,UACLvE,KAAKuE,QAAU6F,GAAWpK,KAAKuE,QAASjG,EAAKiG,YCrBlD,MAAM,GACT,cACIvE,KAAKwE,QAAS,EACdxE,KAAKmB,OAAS,GACdnB,KAAKmd,UAAY,IAAIkH,GACrBrkB,KAAKmd,UAAU/Z,MAAQ,UAE3B,KAAK9E,GACIA,SAGeuD,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,QAEvBxE,KAAKmd,UAAYkH,GAAatiB,OAAO/B,KAAKmd,UAAW7e,EAAK6e,gBACtCtb,IAAhBvD,EAAK6C,SACLnB,KAAKmB,OAAS7C,EAAK6C,UCjBxB,MAAM2lB,GACT,cACI9mB,KAAK5B,QAAU,MAEnB,KAAKE,GACD,IAAImC,EAAI0F,EAAI/G,EAAIgH,EACX9H,SAGgBuD,IAAjBvD,EAAKF,UACL4B,KAAK5B,QAAUE,EAAKF,SAExB4B,KAAKmK,OAAgC,QAAtB1J,EAAKnC,EAAK6L,cAA2B,IAAP1J,EAAgBA,EAAKnC,EAAKF,QACvE4B,KAAKkK,KAA4B,QAApB/D,EAAK7H,EAAK4L,YAAyB,IAAP/D,EAAgBA,EAAK7H,EAAKF,QACnE4B,KAAKiK,MAA8B,QAArB7K,EAAKd,EAAK2L,aAA0B,IAAP7K,EAAgBA,EAAKd,EAAKF,QACrE4B,KAAKgK,IAA0B,QAAnB5D,EAAK9H,EAAK0L,WAAwB,IAAP5D,EAAgBA,EAAK9H,EAAKF,UCblE,MAAM,GACT,cACI4B,KAAK0mB,aAAe,EACpB1mB,KAAKwE,QAAS,EAElB,KAAKlG,GACIA,SAGqBuD,IAAtBvD,EAAKooB,eACL1mB,KAAK0mB,aAAeriB,GAAc/F,EAAKooB,oBAEvB7kB,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,QAEvBxE,KAAKmF,SAAW7G,EAAK6G,SAAWiF,GAAW,GAAI9L,EAAK6G,eAAYtD,ICRjE,MAAM,GACT,cACI7B,KAAKkC,MAAQ,IAAI,GACjBlC,KAAK+mB,QAAU,IAAI,GACnB/mB,KAAKoF,OAAS,IAAIqhB,GAClBzmB,KAAKkS,MAAQ,EACblS,KAAK+E,SAAW,GAChB/E,KAAKkF,UAAY,OACjBlF,KAAKgnB,MAAQ,EACbhnB,KAAKwE,QAAS,EACdxE,KAAKinB,QAAU,IAAI,GACnBjnB,KAAKknB,KAAO,IAAI,GAChBlnB,KAAKmnB,SAAW,IAAIL,GACpB9mB,KAAKiD,QAAS,EACdjD,KAAK+F,MAAO,EACZ/F,KAAKiS,MAAQ,EACbjS,KAAKonB,KAAO,IAAI,GAChBpnB,KAAKqnB,UAAW,EAChBrnB,KAAK4X,MAAQ,IAAI,GACjB5X,KAAKsnB,SAAU,EACftnB,KAAKunB,MAAO,EAEhB,aACI,OAAOvnB,KAAKwnB,WAEhB,WAAWpkB,GACPpD,KAAKwnB,WAAapkB,EAEtB,iBACI,OAAO,EAEX,eAAegL,IAEf,YACI,OAAOpO,KAAKknB,KAEhB,UAAU9jB,GACNpD,KAAKknB,KAAO9jB,EAEhB,cACI,OAAOpD,KAAKmnB,SAAS/oB,QAEzB,YAAYgF,GACRpD,KAAKmnB,SAAS/oB,QAAUgF,EAE5B,eACI,OAAOpD,KAAKynB,QAEhB,aAAarkB,GACTpD,KAAKynB,QAAUrkB,EAEnB,KAAK9E,GACD,IAAImC,EAAI0F,EAAI/G,EACZ,IAAKd,EACD,OAEJ0B,KAAKkC,MAAMiH,KAA2B,kBAAf7K,EAAK4D,MAAqB,CAAEkB,MAAO9E,EAAK4D,OAAU5D,EAAK4D,OAC9ElC,KAAK+mB,QAAQ5d,KAAK7K,EAAKyoB,SACvB/mB,KAAKoF,OAAO+D,KAAK7K,EAAK8G,aACHvD,IAAfvD,EAAK4T,QACLlS,KAAKkS,MAAQ5T,EAAK4T,YAECrQ,IAAnBvD,EAAK4G,YACLlF,KAAKkF,UAAY5G,EAAK4G,gBAEJrD,IAAlBvD,EAAKyG,WACL/E,KAAK+E,SACwB,kBAAlBzG,EAAKyG,SACN,CACE8G,WAAYvN,EAAKyG,SACjB+G,SAAUxN,EAAKyG,UAEjBoX,OAAOC,OAAO,GAAI9d,EAAKyG,gBAElBlD,IAAfvD,EAAK0oB,QACLhnB,KAAKgnB,MAAQ3iB,GAAc/F,EAAK0oB,aAEhBnlB,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,QAEvBxE,KAAKinB,QAAQ9d,KAAK7K,EAAK2oB,SACvB,MAAME,EAAyF,QAA7EhhB,EAA8B,QAAxB1F,EAAKnC,EAAK6oB,gBAA6B,IAAP1mB,EAAgBA,EAAKnC,EAAKmpB,eAA4B,IAAPthB,EAAgBA,EAAK7H,EAAKopB,cAChH7lB,IAAbslB,IACwB,kBAAbA,EACPnnB,KAAKmnB,SAAShe,KAAKge,GAGnBnnB,KAAKmnB,SAAShe,KAAK,CACf/K,QAAS+oB,KAIrBnnB,KAAKknB,KAAK/d,KAA0B,QAApB/J,EAAKd,EAAK4oB,YAAyB,IAAP9nB,EAAgBA,EAAKd,EAAKqpB,YAClD9lB,IAAhBvD,EAAK2E,SACLjD,KAAKiD,OAAS3E,EAAK2E,aAELpB,IAAdvD,EAAKyH,OACL/F,KAAK+F,KAAOzH,EAAKyH,WAEFlE,IAAfvD,EAAK2T,QACLjS,KAAKiS,MAAQ5N,GAAc/F,EAAK2T,QAEpCjS,KAAKonB,KAAKje,KAAK7K,EAAK8oB,WACEvlB,IAAlBvD,EAAK+oB,WACLrnB,KAAKqnB,SAAW/oB,EAAK+oB,UAEzBrnB,KAAK4X,MAAMzO,KAAK7K,EAAKsZ,YACA/V,IAAjBvD,EAAKgpB,UACLtnB,KAAKsnB,QAAUhpB,EAAKgpB,cAENzlB,IAAdvD,EAAKipB,OACLvnB,KAAKunB,KAAOjpB,EAAKipB,OCvHtB,MAAM,GACT,cACIvnB,KAAKgmB,MAAQ,EACbhmB,KAAKwE,QAAS,EACdxE,KAAKiS,MAAQ,EACbjS,KAAKkS,MAAQ,EACblS,KAAKoS,MAAO,EAEhB,KAAK9T,GACIA,SAGcuD,IAAfvD,EAAK0nB,QACLhmB,KAAKgmB,MAAQ3hB,GAAc/F,EAAK0nB,aAEhBnkB,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,aAEJ3C,IAAfvD,EAAK2T,QACLjS,KAAKiS,MAAQ5N,GAAc/F,EAAK2T,aAEjBpQ,IAAfvD,EAAK4T,QACLlS,KAAKkS,MAAQ7N,GAAc/F,EAAK4T,aAElBrQ,IAAdvD,EAAK8T,OACLpS,KAAKoS,KAAO9T,EAAK8T,QCzBtB,MAAM,WAAyB,GAClC,cACIrP,QACA/C,KAAKkkB,QAAU,OACflkB,KAAKwE,QAAS,EACdxE,KAAKiS,MAAQ,EACbjS,KAAK4nB,WAAa,SAClB5nB,KAAKoS,MAAO,EAEhB,kBACI,OAAOpS,KAAKyE,aAEhB,gBAAgBrB,GACZpD,KAAKyE,aAAerB,EAExB,KAAK9E,GACD,IAAImC,EACCnC,IAGLyE,MAAMoG,KAAK7K,QACUuD,IAAjBvD,EAAK4lB,UACLlkB,KAAKkkB,QAAU5lB,EAAK4lB,cAEJriB,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,QAEvBxE,KAAKyE,aAA4C,QAA5BhE,EAAKnC,EAAKmG,oBAAiC,IAAPhE,EAAgBA,EAAKnC,EAAKupB,iBAChEhmB,IAAfvD,EAAK2T,QACLjS,KAAKiS,MAAQ3T,EAAK2T,YAEEpQ,IAApBvD,EAAKspB,aACL5nB,KAAK4nB,WAAatpB,EAAKspB,iBAET/lB,IAAdvD,EAAK8T,OACLpS,KAAKoS,KAAO9T,EAAK8T,QCjCtB,MAAM,WAAgB,GACzB,cACIrP,QACA/C,KAAKyR,UAAY,IAAI,GACrBzR,KAAKiD,OAAOwB,aAAe,GAC3BzE,KAAKoD,MAAQ,EAEjB,WACI,OAAOpD,KAAKyR,UAEhB,SAASrO,GACLpD,KAAKyR,UAAYrO,EAErB,KAAK9E,GACD,IAAImC,EACJ,IAAKnC,EACD,OAEJyE,MAAMoG,KAAK7K,GACX,MAAMmT,EAAsC,QAAzBhR,EAAKnC,EAAKmT,iBAA8B,IAAPhR,EAAgBA,EAAKnC,EAAKwpB,UAC5DjmB,IAAd4P,IACAzR,KAAKyR,UAAUtI,KAAKsI,GACpBzR,KAAKoD,MAAQiB,GAAcrE,KAAKoD,MAAOpD,KAAKyR,UAAUjN,OAASxE,KAAKyR,UAAUhN,kBAAe5C,KCzBlG,MAAMkmB,GACT,cACI/nB,KAAKwE,QAAS,EACdxE,KAAKgoB,KAAO,IACZhoB,KAAKiH,OAAS,IAElB,iBACI,OAAOjH,KAAKgoB,KAEhB,eAAe5kB,GACXpD,KAAKgoB,KAAO5kB,EAEhB,KAAK9E,GACD,IAAImC,EACJ,IAAKnC,EACD,YAEgBuD,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,QAEvB,MAAMwjB,EAA4B,QAApBvnB,EAAKnC,EAAK0pB,YAAyB,IAAPvnB,EAAgBA,EAAKnC,EAAK2pB,gBACvDpmB,IAATmmB,IACAhoB,KAAKgoB,KAAOA,QAEInmB,IAAhBvD,EAAK2I,SACLjH,KAAKiH,OAAS3I,EAAK2I,SCxBxB,MAAM,GACT,cACIjH,KAAKkoB,QAAU,IAAIH,GACnB/nB,KAAKmoB,MAAQ,EACbnoB,KAAKoD,MAAQ,IAEjB,UACI,OAAOpD,KAAKmoB,MAEhB,QAAQ/kB,GACJpD,KAAKmoB,MAAQ/kB,EAEjB,KAAK9E,GACD,IAAImC,EACJ,IAAKnC,EACD,OAEJ0B,KAAKkoB,QAAQ/e,KAAK7K,EAAK4pB,SACvB,MAAMC,EAA8B,QAArB1nB,EAAKnC,EAAK6pB,aAA0B,IAAP1nB,EAAgBA,EAAKnC,EAAKmF,SACxD5B,IAAVsmB,IACAnoB,KAAKmoB,MAAQA,QAEEtmB,IAAfvD,EAAK8E,QACLpD,KAAKoD,MAAQ9E,EAAK8E,QCvBvB,MAAM,GACT,cACIpD,KAAKyU,KAAO,EACZzU,KAAK6O,MAAQ,IAAIwV,GACjBrkB,KAAKwE,QAAS,EACdxE,KAAK0J,OAAS,CACV/H,EAAG,EACHF,EAAG,GAEPzB,KAAK6O,MAAMzL,MAAQ,OAEvB,KAAK9E,GACIA,SAGauD,IAAdvD,EAAKmW,OACLzU,KAAKyU,KAAOnW,EAAKmW,MAErBzU,KAAK6O,MAAQwV,GAAatiB,OAAO/B,KAAK6O,MAAOvQ,EAAKuQ,YAC9BhN,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,aAEH3C,IAAhBvD,EAAKoL,cAGa7H,IAAlBvD,EAAKoL,OAAO/H,IACZ3B,KAAK0J,OAAO/H,EAAIrD,EAAKoL,OAAO/H,QAEVE,IAAlBvD,EAAKoL,OAAOjI,IACZzB,KAAK0J,OAAOjI,EAAInD,EAAKoL,OAAOjI,MC7BxC,MAAM2mB,GAAU,YAAaC,GAAa,OAAQC,GAAW,QAASC,GAAc,SAAUC,GAAa,UAAWC,GAAgB,OAC/H,MAAM,GACT,cACIzoB,KAAKuE,QAAU,GACfvE,KAAK3B,KAAO,SAEhB,gBACI,IAAIoC,EACJ,OAAyC,QAAhCA,EAAKT,KAAKuE,QAAQ6jB,WAA6B,IAAP3nB,EAAgBA,EAAKT,KAAKuE,QAAQ8jB,IAEvF,cAAcjlB,GACVpD,KAAKuE,QAAQ8jB,IAAcroB,KAAKuE,QAAQ6jB,IAAWhlB,EAEvD,aACI,OAAOpD,KAAKuE,QAEhB,WAAWnB,GACPpD,KAAKuE,QAAUnB,EAEnB,YACI,IAAI3C,EACJ,OAA0C,QAAjCA,EAAKT,KAAKuE,QAAQ+jB,WAA8B,IAAP7nB,EAAgBA,EAAKT,KAAKuE,QAAQgkB,IAExF,UAAUnlB,GACNpD,KAAKuE,QAAQgkB,IAAevoB,KAAKuE,QAAQ+jB,IAAYllB,EAEzD,aACI,OAAOpD,KAAKwa,MAEhB,WAAWpX,GACPpD,KAAKwa,MAAQpX,EAEjB,cACI,IAAI3C,EACJ,OAA4C,QAAnCA,EAAKT,KAAKuE,QAAQikB,WAAgC,IAAP/nB,EAAgBA,EAAKT,KAAKuE,QAAQkkB,IAE1F,YAAYrlB,GACRpD,KAAKuE,QAAQkkB,IAAiBzoB,KAAKuE,QAAQikB,IAAcplB,EAE7D,aACI,MAAO,GAEX,WAAWslB,IAEX,KAAKpqB,GACD,IAAImC,EAAI0F,EAAI/G,EACZ,IAAKd,EACD,OAEJ,MAAMiG,EAAkC,QAAvB9D,EAAKnC,EAAKiG,eAA4B,IAAP9D,EAAgBA,EAAKnC,EAAKqqB,OAC1E,QAAgB9mB,IAAZ0C,EACA,IAAK,MAAM6Q,KAAS7Q,EAAS,CACzB,MAAM1G,EAAO0G,EAAQ6Q,GACjBvX,IACAmC,KAAKuE,QAAQ6Q,GAAShL,GAA0C,QAA9BjE,EAAKnG,KAAKuE,QAAQ6Q,UAA2B,IAAPjP,EAAgBA,EAAK,GAAItI,IAI7GmC,KAAK4oB,UAAUtqB,EAAKuqB,UAAWT,GAASC,IAAY,GACpDroB,KAAK4oB,UAAUtqB,EAAKwqB,QAASN,GAAYC,IAAe,GACxDzoB,KAAK4oB,UAAgC,QAArBxpB,EAAKd,EAAKkc,aAA0B,IAAPpb,EAAgBA,EAAKd,EAAKyqB,OAAQT,GAAUC,IAAa,QACpF1mB,IAAdvD,EAAKD,OACL2B,KAAK3B,KAAOC,EAAKD,MAGzB,UAAUR,EAAMmrB,EAASC,EAAQC,GAC7B,IAAIzoB,EAAI0F,EACR,IAAKtI,EACD,OAEJ,MAAM2M,EAAU3M,aAAgB6J,MAC1ByhB,EAAa3e,EAAU,GAAK,GAAI4e,EAAsB5e,IAAYxK,KAAKuE,QAAQykB,aAAoBthB,MAAO2hB,EAAqB7e,IAAYxK,KAAKuE,QAAQ0kB,aAAmBvhB,MAC7K0hB,IACAppB,KAAKuE,QAAQykB,GAAWG,GAExBE,GAAsBH,IACtBlpB,KAAKuE,QAAQ0kB,GAAUE,GAE3BnpB,KAAKuE,QAAQykB,GAAW5e,GAA4C,QAAhC3J,EAAKT,KAAKuE,QAAQykB,UAA6B,IAAPvoB,EAAgBA,EAAK0oB,EAAYtrB,GACxGmC,KAAKuE,QAAQ0kB,KAAWC,IACzBlpB,KAAKuE,QAAQ0kB,GAAU7e,GAA2C,QAA/BjE,EAAKnG,KAAKuE,QAAQ0kB,UAA4B,IAAP9iB,EAAgBA,EAAKgjB,EAAYtrB,KChFhH,MAAM,WAAsB,GAC/B,cACIkF,QACA/C,KAAKkkB,QAAU,OACflkB,KAAKwE,QAAS,EACdxE,KAAKiS,MAAQ,EACbjS,KAAK4nB,WAAa,SAClB5nB,KAAKoS,MAAO,EAEhB,eACI,OAAOpS,KAAKyE,aAEhB,aAAarB,GACTpD,KAAKyE,aAAerB,EAExB,KAAK9E,GACD,IAAImC,EACJsC,MAAMoG,KAAK7K,GACNA,SAGgBuD,IAAjBvD,EAAK4lB,UACLlkB,KAAKkkB,QAAU5lB,EAAK4lB,cAEJriB,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,QAEvBxE,KAAKyE,aAA4C,QAA5BhE,EAAKnC,EAAKmG,oBAAiC,IAAPhE,EAAgBA,EAAKnC,EAAKgrB,cAChEznB,IAAfvD,EAAK2T,QACLjS,KAAKiS,MAAQ3T,EAAK2T,YAEEpQ,IAApBvD,EAAKspB,aACL5nB,KAAK4nB,WAAatpB,EAAKspB,iBAET/lB,IAAdvD,EAAK8T,OACLpS,KAAKoS,KAAO9T,EAAK8T,QCjCtB,MAAM,WAAa,GACtB,cACIrP,QACA/C,KAAKyR,UAAY,IAAI,GACrBzR,KAAKiD,OAAOwB,aAAe,EAC3BzE,KAAKoD,MAAQ,EAEjB,WACI,OAAOpD,KAAKyR,UAEhB,SAASrO,GACLpD,KAAKyR,UAAYrO,EAErB,KAAK9E,GACD,IAAImC,EAEJ,GADAsC,MAAMoG,KAAK7K,IACNA,EACD,OAEJ,MAAMmT,EAAsC,QAAzBhR,EAAKnC,EAAKmT,iBAA8B,IAAPhR,EAAgBA,EAAKnC,EAAKwpB,UAC5DjmB,IAAd4P,IACAzR,KAAKyR,UAAUtI,KAAKsI,GACpBzR,KAAKoD,MAAQiB,GAAcrE,KAAKoD,MAAOpD,KAAKyR,UAAUjN,OAASxE,KAAKyR,UAAUhN,kBAAe5C,KCxBlG,MAAM,GACT,cACI7B,KAAKgG,MAAQ,EAEjB,KAAK1H,GACIA,SAGcuD,IAAfvD,EAAKuQ,QACL7O,KAAK6O,MAAQ,GAAgB9M,OAAO/B,KAAK6O,MAAOvQ,EAAKuQ,aAEtChN,IAAfvD,EAAK0H,QACLhG,KAAKgG,MAAQ1H,EAAK0H,YAEDnE,IAAjBvD,EAAK8R,UACLpQ,KAAKoQ,QAAU9R,EAAK8R,WCfzB,MAAM,WAAe,GACxB,cACIrN,QACA/C,KAAKkZ,YAAc,EACnBlZ,KAAKwZ,SAAW,EAChBxZ,KAAKupB,aAAe,EAExB,KAAKjrB,GACDyE,MAAMoG,KAAK7K,GACNA,SAGoBuD,IAArBvD,EAAK4a,cACLlZ,KAAKkZ,YAAc5a,EAAK4a,kBAENrX,IAAlBvD,EAAKkb,WACLxZ,KAAKwZ,SAAWlb,EAAKkb,eAEC3X,IAAtBvD,EAAKirB,eACLvpB,KAAKupB,aAAejrB,EAAKirB,gBCR9B,MAAM,GACT,YAAYlE,EAAQ7R,GAChBxT,KAAKslB,QAAUD,EACfrlB,KAAKulB,WAAa/R,EAClBxT,KAAK4L,OAAS,IAAI,GAClB5L,KAAKwnB,WAAa,IAAI,GACtBxnB,KAAK6O,MAAQ,IAAI,GACjB7O,KAAK6O,MAAMzL,MAAQ,OACnBpD,KAAKwpB,OAAS,GACdxpB,KAAK8X,KAAO,IAAI,GAChB9X,KAAKypB,OAAS,IAAI,GAClBzpB,KAAKoQ,QAAU,IAAI,GACnBpQ,KAAK0pB,kBAAmB,EACxB1pB,KAAK6T,OAAS,IAAI,GAClB7T,KAAKoV,MAAQ,IAAI,GACjBpV,KAAK+F,KAAO,IAAI,GAChB/F,KAAK6U,OAAS,IAAI,GAClB7U,KAAK+Y,OAAS,IAAI,GAEtB,KAAKza,GACD,IAAImC,EAAI0F,EAAI/G,EAAIgH,EAAI5G,EAAI+T,EACxB,IAAKjV,EACD,OAIJ,GAFA0B,KAAK4L,OAAOzC,KAAK7K,EAAKsN,QACtB5L,KAAK6O,MAAM1F,KAAK,GAAgBpH,OAAO/B,KAAK6O,MAAOvQ,EAAKuQ,aACpChN,IAAhBvD,EAAKkrB,OACL,IAAK,MAAMG,KAASrrB,EAAKkrB,OAAQ,CAC7B,MAAM3rB,EAAOS,EAAKkrB,OAAOG,QACZ9nB,IAAThE,IACAmC,KAAKwpB,OAAOG,GAASvf,GAAyC,QAA7B3J,EAAKT,KAAKwpB,OAAOG,UAA2B,IAAPlpB,EAAgBA,EAAK,GAAI5C,IAI3GmC,KAAK8X,KAAK3O,KAAK7K,EAAKwZ,MACpB9X,KAAKypB,OAAOtgB,KAAK7K,EAAKmrB,QACtBzpB,KAAKoQ,QAAQjH,KAAK7K,EAAK8R,cACOvO,IAA1BvD,EAAKorB,mBACL1pB,KAAK0pB,iBAAmBprB,EAAKorB,kBAEjC1pB,KAAKoV,MAAMjM,KAAK7K,EAAK8W,OACrBpV,KAAK+F,KAAKoD,KAAK7K,EAAKyH,MACpB/F,KAAK6T,OAAO1K,KAAK7K,EAAKuV,QACtB7T,KAAK+Y,OAAO5P,KAAK7K,EAAKya,QACtB,MAAMyO,EAA4F,QAA9EpoB,EAA0B,QAApB+G,EAAK7H,EAAKwZ,YAAyB,IAAP3R,OAAgB,EAASA,EAAGqhB,kBAA+B,IAAPpoB,EAAgBA,EAA0B,QAApBgH,EAAK9H,EAAKwZ,YAAyB,IAAP1R,OAAgB,EAASA,EAAGwF,YACrK/J,IAAf2lB,IACAxnB,KAAKwnB,WAAWhjB,OAASgjB,GAE7BxnB,KAAKwnB,WAAWre,KAAK7K,EAAKkpB,iBACC3lB,IAAvBvD,EAAKghB,gBACLtf,KAAKsf,cAAgBlV,GAAW,GAAI9L,EAAKghB,gBAE7C,MAAMsK,EAAsC,QAAtBpqB,EAAKlB,EAAKuW,cAA2B,IAAPrV,EAAgBA,EAA2B,QAArB+T,EAAKjV,EAAK8W,aAA0B,IAAP7B,OAAgB,EAASA,EAAGsB,OAQnI,GAPI+U,IACA5pB,KAAK6U,OAAStN,GAA0BqiB,EAAehiB,IACnD,MAAMsd,EAAM,IAAI,GAEhB,OADAA,EAAI/b,KAAKvB,GACFsd,KAGXllB,KAAKulB,WAAY,CACjB,MAAMtK,EAAWjb,KAAKslB,QAAQzK,QAAQI,SAASta,IAAIX,KAAKulB,YACxD,GAAItK,EACA,IAAK,MAAMD,KAAWC,EACdD,EAAQ6O,aACR7O,EAAQ6O,YAAY7pB,KAAM1B,GAItC,MAAMknB,EAAcxlB,KAAKslB,QAAQzK,QAAQ2K,YAAY7kB,IAAIX,KAAKulB,YAC9D,GAAIC,EACA,IAAK,MAAMC,KAAcD,EACjBC,EAAWqE,sBACXrE,EAAWqE,qBAAqB9pB,KAAM1B,KCpFvD,SAASurB,GAAYtlB,KAAYwlB,GACpC,IAAK,MAAMC,KAAiBD,EACxBxlB,EAAQ4E,KAAK6gB,GAGd,SAASF,GAAqBzE,EAAQ7R,KAAcuW,GACvD,MAAMxlB,EAAU,IAAI,GAAiB8gB,EAAQ7R,GAE7C,OADAqW,GAAYtlB,KAAYwlB,GACjBxlB,ECCJ,MAAM,GACT,YAAY8gB,EAAQ7R,GAChBxT,KAAKslB,QAAUD,EACfrlB,KAAKulB,WAAa/R,EAClBxT,KAAKiqB,UAAW,EAChBjqB,KAAKma,WAAa,IAAI,GACtBna,KAAK2T,eAAiB,IAAI,GAC1B3T,KAAKigB,cAAgB,GACrBjgB,KAAKihB,MAAQ,EACbjhB,KAAK2X,WAAa,IAAI2M,GACtBtkB,KAAKkqB,cAAe,EACpBlqB,KAAKikB,SAAW,EAChBjkB,KAAK2jB,SAAW,IAChB3jB,KAAKsf,cAAgB,IAAI,GAAc+F,EAAQ7R,GAC/CxT,KAAKmqB,gBAAkB,GACvBnqB,KAAK6X,UAAYiS,GAAqB9pB,KAAKslB,QAAStlB,KAAKulB,YACzDvlB,KAAKygB,aAAc,EACnBzgB,KAAKoqB,wBAAyB,EAC9BpqB,KAAKqqB,WAAa,GAClBrqB,KAAK4jB,QAAS,EACd5jB,KAAKqa,MAAQ,GACbra,KAAKsgB,OAAS,GACdtgB,KAAKsqB,QAAU,IAEnB,qBACI,OAAOtqB,KAAK2X,WAEhB,mBAAmBvU,GACfpD,KAAK2X,WAAWxO,KAAK/F,GAEzB,gBACI,OAAOpD,KAAK2jB,SAEhB,cAAcvgB,GACVpD,KAAK2jB,SAAWvgB,EAEpB,oBACI,OAAOpD,KAAKkqB,aAEhB,kBAAkB9mB,GACdpD,KAAKkqB,aAAe9mB,EAExB,KAAK9E,GACD,IAAImC,EAAI0F,EAAI/G,EAAIgH,EAAI5G,EACpB,IAAKlB,EACD,YAEgBuD,IAAhBvD,EAAKisB,QACLhjB,GAA0BjJ,EAAKisB,OAASA,GAAWvqB,KAAKwqB,cAAcD,SAEpD1oB,IAAlBvD,EAAK2rB,WACLjqB,KAAKiqB,SAAW3rB,EAAK2rB,eAENpoB,IAAfvD,EAAK2iB,QACLjhB,KAAKihB,MAAQ5c,GAAc/F,EAAK2iB,QAEpC,MAAMiJ,EAA4C,QAA5BzpB,EAAKnC,EAAK4rB,oBAAiC,IAAPzpB,EAAgBA,EAAKnC,EAAKmsB,mBAC/D5oB,IAAjBqoB,IACAlqB,KAAKkqB,aAAeA,QAEFroB,IAAlBvD,EAAK2lB,WACLjkB,KAAKikB,SAAW5f,GAAc/F,EAAK2lB,WAEvC,MAAMN,EAAoC,QAAxBxd,EAAK7H,EAAKqlB,gBAA6B,IAAPxd,EAAgBA,EAAK7H,EAAKosB,eAC3D7oB,IAAb8hB,IACA3jB,KAAK2jB,SAAWA,QAEK9hB,IAArBvD,EAAKmiB,cACLzgB,KAAKygB,YAAcniB,EAAKmiB,kBAEQ5e,IAAhCvD,EAAK8rB,yBACLpqB,KAAKoqB,uBAAyB9rB,EAAK8rB,6BAElBvoB,IAAjBvD,EAAKgsB,UACLtqB,KAAKsqB,QAAUhsB,EAAKgsB,SAExBtqB,KAAKma,WAAWhR,KAAK7K,EAAK6b,YAC1B,MAAMxC,EAAwC,QAA1BvY,EAAKd,EAAKqZ,kBAA+B,IAAPvY,EAAgBA,EAAKd,EAAKqsB,eACtD,mBAAfhT,EACP3X,KAAK2X,WAAWnT,OAASmT,EAGzB3X,KAAK2X,WAAWxO,KAAKwO,GAEzB3X,KAAK2T,eAAexK,KAAK7K,EAAKqV,gBAC9B3T,KAAKsf,cAAcnW,KAAK7K,EAAKghB,oBACAzd,IAAzBvD,EAAK6rB,kBACLnqB,KAAKmqB,gBAAkB7rB,EAAK6rB,gBAAgBvf,IAAKhD,IAC7C,MAAMsd,EAAM,IAAI,GAEhB,OADAA,EAAI/b,KAAKvB,GACFsd,KAGfllB,KAAK6X,UAAU1O,KAAK7K,EAAKuZ,WACzB7X,KAAKqa,MAAQjQ,GAAWpK,KAAKqa,MAAO/b,EAAK+b,OACzCra,KAAKslB,QAAQzK,QAAQgP,YAAY7pB,KAAM1B,QACnBuD,IAAhBvD,EAAKslB,SACL5jB,KAAK4jB,OAAStlB,EAAKslB,QAEvB,MAAM4B,EAAcxlB,KAAKslB,QAAQzK,QAAQ2K,YAAY7kB,IAAIX,KAAKulB,YAC9D,GAAIC,EACA,IAAK,MAAMC,KAAcD,EACjBC,EAAWoE,aACXpE,EAAWoE,YAAY7pB,KAAM1B,GAIzC,QAAwBuD,IAApBvD,EAAK+rB,WACL,IAAK,MAAMA,KAAc/rB,EAAK+rB,WAAY,CACtC,MAAMO,EAAgB,IAAI,GAC1BA,EAAczhB,KAAKkhB,GACnBrqB,KAAKqqB,WAAWxpB,KAAK+pB,GAI7B,GADA5qB,KAAKqqB,WAAWQ,KAAK,CAACtc,EAAGD,IAAMC,EAAEsX,SAAWvX,EAAEuX,eAC1BhkB,IAAhBvD,EAAKgiB,OACL,IAAK,MAAMD,KAAS/hB,EAAKgiB,OAAQ,CAC7B,MAAMwK,EAAgB9qB,KAAKsgB,OAAOjT,KAAMzF,GAAMA,EAAE3J,OAASoiB,EAAMpiB,MAC/D,GAAK6sB,EAMDA,EAAc3hB,KAAKkX,OANH,CAChB,MAAM0K,EAAW,IAAI,GACrBA,EAAS5hB,KAAKkX,GACdrgB,KAAKsgB,OAAOzf,KAAKkqB,IAO7B/qB,KAAKigB,cAAcE,KAAiD,QAAzC/Z,EAAKpG,KAAKgrB,kBAAkB,eAA4B,IAAP5kB,OAAgB,EAASA,EAAGnI,KACxG+B,KAAKigB,cAAcG,MAAmD,QAA1C5gB,EAAKQ,KAAKgrB,kBAAkB,gBAA6B,IAAPxrB,OAAgB,EAASA,EAAGvB,KAE9G,cAAc+H,EAAOgW,EAASiP,GAC1BjrB,KAAKmJ,KAAK8hB,GACV,MAAMC,EAAoBlrB,KAAKqqB,WAAWhd,KAAMzF,GAAiB,WAAXA,EAAEkD,MAAqBqgB,OAASvjB,EAAEie,SAAWsF,OAAOC,WAAaxjB,EAAEie,SAAW7J,EAAUhW,GAE9I,OADAhG,KAAKmJ,KAA2B,OAAtB+hB,QAAoD,IAAtBA,OAA+B,EAASA,EAAkB3mB,SACrE,OAAtB2mB,QAAoD,IAAtBA,OAA+B,EAASA,EAAkBrF,SAEnG,SAAS5nB,GACL,GAAIA,EAAM,CACN,MAAMotB,EAAcrrB,KAAKsgB,OAAOjT,KAAMgT,GAAUA,EAAMpiB,OAASA,GAC3DotB,GACArrB,KAAKmJ,KAAKkiB,EAAY9mB,aAGzB,CACD,MAAMid,EAAatZ,GAAe,gCAAiCojB,EAAiB9J,GAAcA,EAAW/Z,QAAS8jB,EAAevrB,KAAKgrB,kBAAkBM,EAAiB,OAAS,SAClLC,GACAvrB,KAAKmJ,KAAKoiB,EAAahnB,UAInC,kBAAkBuG,GACd,IAAIrK,EACJ,OAAmG,QAA1FA,EAAKT,KAAKsgB,OAAOjT,KAAMgT,GAAUA,EAAMjiB,QAAQgF,OAASid,EAAMjiB,QAAQ0M,OAASA,UAA0B,IAAPrK,EAAgBA,EAAKT,KAAKsgB,OAAOjT,KAAMgT,GAAUA,EAAMjiB,QAAQgF,OAAgC,QAAvBid,EAAMjiB,QAAQ0M,MAErM,cAAcyf,GACVvqB,KAAKmJ,KAAKnJ,KAAKslB,QAAQzK,QAAQ2Q,UAAUjB,KCtK1C,MAAMkB,GACT,YAAYpG,EAAQ7R,GAChBxT,KAAKwT,UAAYA,EACjBxT,KAAKslB,QAAUD,EACfrlB,KAAK0rB,aAAe1rB,KAAKslB,QAAQzK,QAAQ8Q,eAAe3rB,KAAKwT,WAAW,GACxExT,KAAK4rB,qBAAuB,GAC5B5rB,KAAK6rB,qBAAuB,GAEhC,uBAAuBpY,GACnB,IAAK,MAAMgS,KAAczlB,KAAK4rB,qBACtBnG,EAAWqG,mBACLrG,EAAWsG,SAAStY,GAItC,gBAAgB3I,GACZ,IAAK,MAAM2a,KAAczlB,KAAK4rB,qBACtBnG,EAAW1F,iBACX0F,EAAW1F,gBAAgBjV,GAIvC,OACI9K,KAAK4rB,qBAAuB,GAC5B5rB,KAAK6rB,qBAAuB,GAC5B,IAAK,MAAMpG,KAAczlB,KAAK0rB,aAAc,CACxC,OAAQjG,EAAWpnB,MACf,IAAK,WACD2B,KAAK4rB,qBAAqB/qB,KAAK4kB,GAC/B,MACJ,IAAK,YACDzlB,KAAK6rB,qBAAqBhrB,KAAK4kB,GAC/B,MAERA,EAAW5J,QAGnB,wBAAwB/O,EAAU2G,GAC9B,IAAK,MAAMgS,KAAczlB,KAAK4rB,qBAC1BnG,EAAWrS,MAAMtG,EAAU2G,GAE/B,IAAK,MAAMgS,KAAczlB,KAAK6rB,qBACtBpG,EAAWqG,UAAUhf,UACf2Y,EAAWsG,SAASjf,EAAU2G,GAIhD,YAAY3G,GACR,IAAK,MAAM2Y,KAAczlB,KAAK4rB,qBACtBnG,EAAWqG,mBACLrG,EAAWuG,MAAMlf,GAG/B,IAAK,MAAM2Y,KAAczlB,KAAK6rB,qBACtBpG,EAAWqG,UAAUhf,UACf2Y,EAAWuG,MAAMlf,IC/CvC,MAAMmf,GAAc3tB,IACXsK,GAAUtK,EAAKmpB,QAASnpB,EAAK4tB,cAG9B5tB,EAAK6tB,MAAQ7tB,EAAK8tB,SAAyB,EAAd9tB,EAAKqL,OAClCrL,EAAK+tB,OAAO/tB,EAAKqL,QAEZrL,EAAK6tB,MAAsB,EAAd7tB,EAAKqL,QACvBrL,EAAK+tB,MAAM/tB,EAAKqL,UAGjB,MAAM,GACT,YAAY0b,EAAQiH,EAAI9Y,EAAWrO,EAAUonB,EAAiB5C,GAC1D3pB,KAAKwT,UAAYA,EACjBxT,KAAKslB,QAAUD,EACfrlB,KAAK6b,KAAKyQ,EAAInnB,EAAUonB,EAAiB5C,GAE7C,QAAQ6C,GACJ,IAAI/rB,EACJ,IAAIT,KAAKysB,cAAezsB,KAAKwY,UAA7B,CAGAxY,KAAKwY,WAAY,EACjBxY,KAAKmZ,OAAOuT,SAAU,EACtB1sB,KAAK2sB,KAAKD,SAAU,EACpB,IAAK,MAAO,CAAE9W,KAAW5V,KAAKwT,UAAUqH,QAChCjF,EAAOgX,mBACPhX,EAAOgX,kBAAkB5sB,KAAMwsB,GAGvC,IAAK,MAAMxR,KAAWhb,KAAKwT,UAAUqE,UAAUoD,SACvCD,EAAQ4R,mBACR5R,EAAQ4R,kBAAkB5sB,KAAMwsB,GAGV,QAA7B/rB,EAAKT,KAAK6sB,qBAAkC,IAAPpsB,GAAyBA,EAAGurB,MAAMhsB,OAE5E,KAAKyT,GACD,MAAMD,EAAYxT,KAAKwT,UACvB,IAAK,MAAO,CAAEoC,KAAWpC,EAAUqH,QAC/BrH,EAAU8H,OAAOzF,mBAAmBD,EAAQ5V,KAAMyT,GAEtDD,EAAU8H,OAAOhI,aAAatT,KAAMyT,GAExC,eACI,IAAIhT,EAAI0F,EACR,MAAM0I,EAAqC,QAA5BpO,EAAKT,KAAKmZ,OAAOtK,aAA0B,IAAPpO,EAAgBA,EAAK+Q,GAAoBxR,KAAK6O,OACjG,GAAIA,GAAS7O,KAAK8sB,OAAS9sB,KAAK+sB,WAAa/sB,KAAK8sB,KAAKE,OAAQ,CAC3D,MAAMC,EAAajtB,KAAK8sB,KAAKjhB,YAAc7L,KAAK8sB,KAAKhhB,SAAW,EAAI,EAAGohB,EAAUltB,KAAK8sB,KAAKjhB,WAAa7J,KAAKqD,GAAK,EAAI,EAAG8nB,EAASnrB,KAAK+B,QAAmC,QAA1BoC,EAAKnG,KAAK8sB,KAAK5qB,aAA0B,IAAPiE,EAAgBA,EAAK,GAAK+mB,IAAYlrB,KAAKqD,GAAK4nB,IAAe,EACjP,GAAIE,EAAQ,CACR,GAAIntB,KAAK+sB,UACL,OAAO/sB,KAAK+sB,UAEhB,GAAI/sB,KAAK8sB,KAAKE,MACV,OAAOlX,GAASjH,EAAO7O,KAAK8sB,KAAKE,MAAM3uB,KAAM2B,KAAK8sB,KAAKE,MAAM5pB,QAIzE,OAAOyL,EAEX,UACI,OAAQ7O,KAAKyL,aAAe,EAAIzJ,KAAKqD,GAAM,EAE/C,cACI,MAAO,CACH1D,EAAG3B,KAAKmF,SAASxD,EAAI3B,KAAK0J,OAAO/H,EACjCF,EAAGzB,KAAKmF,SAAS1D,EAAIzB,KAAK0J,OAAOjI,EACjCC,EAAG1B,KAAKmF,SAASzD,GAGzB,YACI,IAAIjB,EACJ,OAAqC,QAA7BA,EAAKT,KAAKmZ,OAAOxP,cAA2B,IAAPlJ,EAAgBA,EAAKT,KAAK+F,KAAK3C,MAEhF,iBACI,IAAI3C,EAAI0F,EACR,OAAkH,QAA1GA,EAAkC,QAA5B1F,EAAKT,KAAKmZ,OAAOtK,aAA0B,IAAPpO,EAAgBA,EAAK+Q,GAAoBxR,KAAKotB,oBAAiC,IAAPjnB,EAAgBA,EAAKnG,KAAKgR,eAExJ,KAAKsb,EAAInnB,EAAUonB,EAAiB5C,GAChC,IAAIlpB,EAAI0F,EAAI/G,EAAIgH,EAAI5G,EAAI+T,EAAIoP,EAAI0K,EAAIC,EACpC,MAAM9Z,EAAYxT,KAAKwT,UAAW6R,EAASrlB,KAAKslB,QAChDtlB,KAAKssB,GAAKA,EACVtsB,KAAK2pB,MAAQA,EACb3pB,KAAK4U,MAAO,EACZ5U,KAAKiU,cAAe,EACpBjU,KAAKkV,OAAQ,EACblV,KAAKutB,aAAe,EACpBvtB,KAAKwY,WAAY,EACjBxY,KAAKysB,aAAc,EACnBzsB,KAAKgU,SAAW,EAChBhU,KAAKwtB,WAAY,EACjBxtB,KAAKwV,OAAS,CACViY,YAAa,IAEjBztB,KAAK0tB,QAAU,SACf1tB,KAAK2tB,oBAAqB,EAC1B,MAAM3R,EAAUxI,EAAUgC,OAAOC,WAAYmY,EAAcpa,EAAUkE,cAAemW,EAAmB/D,GAAqB9pB,KAAKslB,QAAS9R,EAAWoa,EAAY/V,WAAYiW,EAAYD,EAAiBzY,MAAM/W,MAAM,iBAAEqrB,GAAqBmE,EAC7O7tB,KAAKoV,MAAQhI,GAAyB0gB,EAAW9tB,KAAKssB,GAAI5C,GAC1D,MAAMqE,EAAeF,EAAiBzY,MACtC,GAAImX,GAAmBA,EAAgBnX,OAASmX,EAAgBnX,MAAM/W,KAAM,CACxE,MAAM2vB,EAAoBzB,EAAgBnX,MAAM/W,KAAM+W,EAAQhI,GAAyB4gB,EAAmBhuB,KAAKssB,GAAI5C,GAC/GtU,IACApV,KAAKoV,MAAQA,EACb2Y,EAAa5kB,KAAKojB,EAAgBnX,QAG1CpV,KAAKiuB,UAAYjuB,KAAKkuB,eAAeH,EAAcrE,GACnDmE,EAAiB1kB,KAAKojB,GACtBsB,EAAiB1kB,KAA+B,QAAzB1I,EAAKT,KAAKiuB,iBAA8B,IAAPxtB,OAAgB,EAASA,EAAGoX,WACpF7X,KAAKsf,cAAgB,IAAI,GAAc+F,EAAQ7R,GAC/CxT,KAAKsf,cAAcnW,KAAKqK,EAAUkE,cAAc4H,eAChDtf,KAAKsf,cAAcnW,KAAK0kB,EAAiBvO,eACzCtf,KAAK4U,KAAqF,QAA7ExV,EAA+B,QAAzB+G,EAAKnG,KAAKiuB,iBAA8B,IAAP9nB,OAAgB,EAASA,EAAGyO,YAAyB,IAAPxV,EAAgBA,EAAKY,KAAK4U,KAC5H5U,KAAKkV,MAAuF,QAA9E1V,EAA+B,QAAzB4G,EAAKpG,KAAKiuB,iBAA8B,IAAP7nB,OAAgB,EAASA,EAAG8O,aAA0B,IAAP1V,EAAgBA,EAAKQ,KAAKkV,MAC9HlV,KAAKuE,QAAUspB,EACf,MAAMM,EAAcnuB,KAAKuE,QAAQuT,KAAKoP,KACtClnB,KAAKouB,UAA0C,IAA9B9pB,GAAS6pB,EAAYlN,OAClCkN,EAAYtH,YACZ7mB,KAAK6sB,cAAgB7sB,KAAKslB,QAAQzK,QAAQwT,iBAAiBF,EAAYtH,WACnE7mB,KAAK6sB,eAAiBrZ,EAAU8a,QAAQH,EAAYtH,UAAW7mB,KAAK6sB,gBACpE7sB,KAAK6sB,cAAchR,KAAKrI,IAGhC,MAAM+a,EAAcnqB,GAAcpE,KAAKuE,QAAQwU,OAAO3V,OACtDoQ,EAAUgC,OAAOgZ,aAAaxuB,MAC9B,MAAMyuB,EAAczuB,KAAKuE,QAAQwB,KAAM2oB,EAAYD,EAAYrrB,MAAOurB,EAAgBF,EAAYhd,UASlG,GARAzR,KAAK+F,KAAO,CACRvB,OAAQiqB,EAAYhd,UAAUjN,OAC9BpB,MAAOgB,GAAcqqB,EAAYrrB,OAASoQ,EAAUgC,OAAOC,WAC3DhS,IAAKS,GAAYwqB,GAAa1S,EAC9BxY,IAAKW,GAAYuqB,GAAa1S,EAC9B4S,MAAO,EACPC,SAAUzqB,GAAcqqB,EAAYhd,UAAUuU,QAE9C2I,EAAcnqB,OAGd,OAFAxE,KAAK+F,KAAKoM,OAAS,aACnBnS,KAAK+F,KAAKmM,MAAQ,EAAI9N,GAAcuqB,EAAczc,OAC1Cyc,EAAc/G,YAClB,IAAK,MACD5nB,KAAK+F,KAAK3C,MAAQpD,KAAK+F,KAAKvC,IAC5BxD,KAAK+F,KAAKoM,OAAS,aACnB,MACJ,IAAK,SACDnS,KAAK+F,KAAK3C,MAAQY,EAAchE,KAAK+F,MAAQiW,EAC7Chc,KAAK+F,KAAKoM,OAAS9O,KAAe,GAAM,aAAe,aACvD,MACJ,IAAK,MACL,QACIrD,KAAK+F,KAAK3C,MAAQpD,KAAK+F,KAAKtC,IAC5BzD,KAAK+F,KAAKoM,OAAS,aACnB,MAGZnS,KAAKmZ,OAAS,CACVuT,SAAS,GAEb1sB,KAAK2sB,KAAO,CACRD,SAAS,EACTzlB,OAAQ,GAEZjH,KAAKmF,SAAWnF,KAAK8uB,cAActb,EAAWrO,EAAU7B,EAAMirB,EAAa,EAAG/a,EAAU8W,UACxFtqB,KAAK+uB,gBAAkB/uB,KAAKmF,SAAS6pB,OACrC,MAAMC,EAAazb,EAAU8H,OAAOvV,KAAMmpB,EAAa/S,OAAOC,OAAO,GAAIpc,KAAKuE,QAAQuT,KAAK1S,QAAS+pB,EAAsC,YAApBD,EAAWpkB,KAQjI,OAPA9K,KAAKkvB,WAAa,CACdvtB,EAAGutB,EAAWvtB,GAAKwtB,EAAkBF,EAAWjpB,MAAQ,IAAM,GAC9DvE,EAAGytB,EAAWztB,GAAK0tB,EAAkBF,EAAWhpB,OAAS,IAAM,GAC/D0D,OAAmD,QAA1C4J,EAAKvT,KAAKuE,QAAQuT,KAAK1S,OAAOuE,cAA2B,IAAP4J,EAAgBA,EAAK,EAChFzI,KAA+C,QAAxC6X,EAAK3iB,KAAKuE,QAAQuT,KAAK1S,OAAO0F,YAAyB,IAAP6X,EAAgBA,EAAK,WAEhF3iB,KAAKkF,UAAYD,GAA0BjF,KAAKuE,QAAQuT,KAAK5S,UAAWlF,KAAKmF,SAAUnF,KAAKkvB,YACpFlvB,KAAKuE,QAAQuT,KAAK5S,WACtB,IAAK,SACDlF,KAAK0tB,QAAU,SACf,MACJ,IAAK,UACD1tB,KAAK0tB,QAAU,UACf,MAER1tB,KAAKovB,gBAAkBpvB,KAAKqvB,qBAC5BrvB,KAAKgH,SAAWhH,KAAKovB,gBAAgBJ,OACrChvB,KAAKsvB,UAAY,EAAIlrB,GAAcpE,KAAKuE,QAAQuT,KAAK5F,OACrDlS,KAAK0J,OAAS,EAAOlE,OACrB,MAAMqS,EAAYrE,EAAUqE,UAC5BA,EAAU0X,UAAY1X,EAAU0X,WAAa1X,EAAU2X,WAAaxvB,KAAKmF,SAASzD,EAClFmW,EAAU2X,WAAaxvB,KAAKmF,SAASzD,EACrC1B,KAAKiZ,aAAejZ,KAAKmF,SAASzD,EAAI8R,EAAU8W,QAChDtqB,KAAKyvB,MAAQ,GACb,IAAIpa,EAAS7B,EAAU8B,QAAQ3U,IAAIX,KAAKoV,OACnCC,IACDA,EAASrV,KAAKslB,QAAQzK,QAAQ6U,eAAe1vB,KAAKoV,OAC9CC,GACA7B,EAAU8B,QAAQ1U,IAAIZ,KAAKoV,MAAOC,KAG3B,OAAXA,QAA8B,IAAXA,OAAoB,EAASA,EAAOuT,aAC5C,OAAXvT,QAA8B,IAAXA,GAA6BA,EAAOuT,UAAU5oB,OAErE,MAAM2vB,EAA2B,OAAXta,QAA8B,IAAXA,OAAoB,EAASA,EAAOua,cACzED,IACA3vB,KAAKyvB,MAAQE,EAAc3vB,OAE/BA,KAAKuY,UAAW,EAChBvY,KAAKuU,YAAc3F,GAAgB5O,KAAKuE,QAAQsP,OAAOhF,OACvD,IAAK,MAAMmM,KAAWxH,EAAUqE,UAAUoD,SACtCD,EAAQa,KAAK7b,MAEjB,IAAK,MAAM6vB,KAASrc,EAAUqE,UAAUiY,OACd,QAArBzC,EAAKwC,EAAMhU,YAAyB,IAAPwR,GAAyBA,EAAGzQ,KAAKiT,EAAO7vB,OAE3D,OAAXqV,QAA8B,IAAXA,OAAoB,EAASA,EAAO0a,eACvD1a,EAAO0a,aAAavc,EAAWxT,MAEnC,IAAK,MAAO,CAAE4V,KAAWpC,EAAUqH,QACG,QAAjCyS,EAAK1X,EAAOoa,uBAAoC,IAAP1C,GAAyBA,EAAG1Q,KAAKhH,EAAQ5V,MAG3F,iBACI,MAAM2J,EAAS3J,KAAKyL,YAAawjB,EAAajvB,KAAKwT,UAAU8H,OAAOvV,KACpE,OAAQ/F,KAAKmF,SAASxD,IAAMgI,GACxB3J,KAAKmF,SAAS1D,IAAMkI,GACpB3J,KAAKmF,SAAS1D,GAAKwtB,EAAWhpB,OAAS0D,GACvC3J,KAAKmF,SAASxD,GAAKstB,EAAWjpB,MAAQ2D,EAE9C,YACI,OAAQ3J,KAAKwY,YAAcxY,KAAKuY,UAAYvY,KAAKiwB,iBAErD,QACI,IAAIxvB,EACJ,IAAK,MAAMua,KAAWhb,KAAKwT,UAAUqE,UAAUoD,SAClB,QAAxBxa,EAAKua,EAAQgR,aAA0B,IAAPvrB,GAAyBA,EAAGmc,KAAK5B,EAAShb,MAGnF,cAAcwT,EAAWrO,EAAU4T,EAAQmX,EAAW,GAClD,IAAIzvB,EAAI0F,EAAI/G,EAAIgH,EAChB,IAAK,MAAO,CAAEwP,KAAWpC,EAAUqH,QAAS,CACxC,MAAMsV,OAAwCtuB,IAA5B+T,EAAOwa,iBAAiCxa,EAAOwa,iBAAiBjrB,EAAUnF,WAAQ6B,EACpG,QAAkBA,IAAdsuB,EACA,OAAO5uB,EAASQ,OAAOouB,EAAUxuB,EAAGwuB,EAAU1uB,EAAGsX,GAGzD,MAAMkW,EAAazb,EAAU8H,OAAOvV,KAAMsqB,EAAgB/pB,GAAkC,CACxFP,KAAMkpB,EACN9pB,SAAUA,IACV4O,EAAMxS,EAASQ,OAAOsuB,EAAc1uB,EAAG0uB,EAAc5uB,EAAGsX,GAASpP,EAAS3J,KAAKyL,YAAa0b,EAAWnnB,KAAKuE,QAAQuT,KAAKqP,SAAUmJ,EAAiB7I,IACpJwE,GAAW,CACPxE,UACAyE,WAAY,CAAC,SAAU,qBACvBC,MAAOpY,EAAIpS,EACXyqB,SAAU5Y,EAAU8H,OAAOvV,KAAKC,MAChCqmB,MAAQjpB,GAAW2Q,EAAIpS,GAAKyB,EAC5BuG,YAEL4mB,EAAe9I,IACdwE,GAAW,CACPxE,UACAyE,WAAY,CAAC,SAAU,mBACvBC,MAAOpY,EAAItS,EACX2qB,SAAU5Y,EAAU8H,OAAOvV,KAAKE,OAChComB,MAAQjpB,GAAW2Q,EAAItS,GAAK2B,EAC5BuG,YAOR,OAJA2mB,EAAuC,QAAxB7vB,EAAK0mB,EAASjd,YAAyB,IAAPzJ,EAAgBA,EAAK0mB,EAAS/oB,SAC7EkyB,EAAwC,QAAzBnqB,EAAKghB,EAASld,aAA0B,IAAP9D,EAAgBA,EAAKghB,EAAS/oB,SAC9EmyB,EAAoC,QAAvBnxB,EAAK+nB,EAASnd,WAAwB,IAAP5K,EAAgBA,EAAK+nB,EAAS/oB,SAC1EmyB,EAAuC,QAA1BnqB,EAAK+gB,EAAShd,cAA2B,IAAP/D,EAAgBA,EAAK+gB,EAAS/oB,SACzE4B,KAAKwwB,cAAczc,EAAKmc,GACjBlwB,KAAK8uB,cAActb,OAAW3R,EAAWkX,EAAQmX,EAAW,GAEhEnc,EAEX,qBACI,MAAMxO,EAAeD,GAAwBtF,KAAKkF,WAAYgC,EAAM3B,EAAaypB,OAAQyB,EAAczwB,KAAKuE,QAAQuT,KACpH,GAA8B,WAA1B2Y,EAAYvrB,WAAoD,YAA1BurB,EAAYvrB,UAClD,OAAOgC,EAEX,MAAMwpB,EAAO1uB,KAAKqD,GAAK,IAAOjB,GAAcqsB,EAAYvuB,MAAMkB,OAAQutB,EAAa3uB,KAAKqD,GAAK,IAAOjB,GAAcqsB,EAAYvuB,MAAMwH,QAASknB,EAAQ,CACjJ1mB,KAAMymB,EAAYD,EAAM,EACxBzmB,MAAO0mB,EAAYD,EAAM,GAQ7B,OANKD,EAAYpJ,WACbngB,EAAIhF,OAAS8B,EAAcK,GAAcusB,EAAM1mB,KAAM0mB,EAAM3mB,SAE3DwmB,EAAYxtB,QAAuC,kBAAtBwtB,EAAYxe,QACzC/K,EAAI/F,QAAUkC,KAEX6D,EAEX,cAAc6M,EAAKmc,EAAW,GAC1B,MAAMW,EAAoB7wB,KAAKuE,QAAQijB,WAAY7d,EAAS3J,KAAKyL,YACjE,IAAKolB,EAAkBrsB,OACnB,OAAO,EAEX,MAAMssB,EAAiBD,EAAkBvK,QACzC,GAAIwK,EAAetsB,OACf,OAAO,EAEX,MAAM2hB,EAAU2K,EAAe3K,QAC/B,GAAIA,GAAW,GAAK+J,EAAW/J,EAC3B,MAAM,IAAIrkB,MAAM,+CAEpB,IAAIivB,GAAW,EACf,IAAK,MAAMjkB,KAAY9M,KAAKwT,UAAUqE,UAAUhP,MAC5C,GAAI7D,GAAY+O,EAAKjH,EAAS3H,UAAYwE,EAASmD,EAASrB,YAAa,CACrEslB,GAAW,EACX,MAGR,OAAOA,EAEX,eAAehD,EAAcrE,GACzB,MAAMuE,EAAYF,EAAaxpB,QAAQvE,KAAKoV,OAC5C,GAAI6Y,EACA,OAAO7jB,GAAW,GAAIgD,GAAyB6gB,EAAWjuB,KAAKssB,GAAI5C,KCjUxE,MAAMsH,GACT,YAAY7rB,EAAU2H,GAClB9M,KAAKmF,SAAWA,EAChBnF,KAAK8M,SAAWA,GCHjB,MAAMmkB,GACT,YAAYtvB,EAAGF,GACXzB,KAAKmF,SAAW,CACZxD,EAAGA,EACHF,EAAGA,ICFR,MAAM,WAAewvB,GACxB,YAAYtvB,EAAGF,EAAGkI,GACd5G,MAAMpB,EAAGF,GACTzB,KAAK2J,OAASA,EAElB,SAASF,GACL,OAAOzE,GAAYyE,EAAOzJ,KAAKmF,WAAanF,KAAK2J,OAErD,WAAWinB,GACP,MAAMM,EAAON,EAAOO,EAASP,EAAOxkB,EAAOpM,KAAKmF,SAAUkH,EAAOukB,EAAMzrB,SAAUisB,EAAU,CAAEzvB,EAAGK,KAAKqvB,IAAIhlB,EAAK1K,EAAIyK,EAAKzK,GAAIF,EAAGO,KAAKqvB,IAAIhlB,EAAK5K,EAAI2K,EAAK3K,IAAMwC,EAAIjE,KAAK2J,OACpK,QAAsB9H,IAAlBsvB,EAAOxnB,OAAsB,CAC7B,MAAM2nB,EAAOrtB,EAAIktB,EAAOxnB,OAAQ4nB,EAAOvvB,KAAKI,KAAKgvB,EAAQzvB,GAAK,EAAIyvB,EAAQ3vB,GAAK,GAC/E,OAAO6vB,EAAOC,EAEb,QAAkB1vB,IAAdqvB,EAAKnrB,KAAoB,CAC9B,MAAMyrB,EAAIN,EAAKnrB,KAAKC,MAAOyJ,EAAIyhB,EAAKnrB,KAAKE,OAAQwrB,EAAQzvB,KAAK0vB,IAAIN,EAAQzvB,EAAI6vB,EAAG,GAAKxvB,KAAK0vB,IAAIN,EAAQ3vB,EAAIgO,EAAG,GAC9G,OAAOgiB,GAASxtB,GAAK,GAAMmtB,EAAQzvB,GAAKsC,EAAIutB,GAAKJ,EAAQ3vB,GAAKwC,EAAIwL,GAAM2hB,EAAQzvB,GAAK6vB,GAAKJ,EAAQ3vB,GAAKgO,EAE3G,OAAO,GClBR,MAAM,WAAkBwhB,GAC3B,YAAYtvB,EAAGF,EAAGuE,EAAOC,GACrBlD,MAAMpB,EAAGF,GACTzB,KAAK+F,KAAO,CACRE,OAAQA,EACRD,MAAOA,GAGf,SAASyD,GACL,MAAM+nB,EAAIxxB,KAAK+F,KAAKC,MAAOyJ,EAAIzP,KAAK+F,KAAKE,OAAQ8N,EAAM/T,KAAKmF,SAC5D,OAAOsE,EAAM9H,GAAKoS,EAAIpS,GAAK8H,EAAM9H,GAAKoS,EAAIpS,EAAI6vB,GAAK/nB,EAAMhI,GAAKsS,EAAItS,GAAKgI,EAAMhI,GAAKsS,EAAItS,EAAIgO,EAE9F,WAAWmhB,GACHA,aAAiB,IACjBA,EAAMe,WAAW3xB,MAErB,MAAMwxB,EAAIxxB,KAAK+F,KAAKC,MAAOyJ,EAAIzP,KAAK+F,KAAKE,OAAQmG,EAAOpM,KAAKmF,SAAUkH,EAAOukB,EAAMzrB,SAAUuL,EAAQkgB,aAAiB,GAAYA,EAAM7qB,KAAO,CAAEC,MAAO,EAAGC,OAAQ,GAAK2rB,EAAKlhB,EAAM1K,MAAO6rB,EAAKnhB,EAAMzK,OACtM,OAAOoG,EAAK1K,EAAIyK,EAAKzK,EAAI6vB,GAAKnlB,EAAK1K,EAAIiwB,EAAKxlB,EAAKzK,GAAK0K,EAAK5K,EAAI2K,EAAK3K,EAAIgO,GAAKpD,EAAK5K,EAAIowB,EAAKzlB,EAAK3K,GChBjG,MAAM,GACT,YAAYqwB,EAAWC,GACnB/xB,KAAK8xB,UAAYA,EACjB9xB,KAAK+xB,SAAWA,EAChB/xB,KAAKgyB,QAAU,GACfhyB,KAAKiyB,UAAW,EAEpB,OAAOxoB,GACH,IAAIhJ,EAAI0F,EAAI/G,EAAIgH,EAAI5G,EACpB,QAAKQ,KAAK8xB,UAAUI,SAASzoB,EAAMtE,YAG/BnF,KAAKgyB,QAAQ7wB,OAASnB,KAAK+xB,UAC3B/xB,KAAKgyB,QAAQnxB,KAAK4I,IACX,IAENzJ,KAAKiyB,UACNjyB,KAAKmyB,YAKyE,QAHzE3yB,GAA2B,QAAnBiB,EAAKT,KAAKoyB,WAAwB,IAAP3xB,OAAgB,EAASA,EAAG4xB,OAAO5oB,MACtD,QAAnBtD,EAAKnG,KAAKsyB,WAAwB,IAAPnsB,OAAgB,EAASA,EAAGksB,OAAO5oB,MAC3C,QAAnBrK,EAAKY,KAAKuyB,WAAwB,IAAPnzB,OAAgB,EAASA,EAAGizB,OAAO5oB,MAC3C,QAAnBrD,EAAKpG,KAAKwyB,WAAwB,IAAPpsB,OAAgB,EAASA,EAAGisB,OAAO5oB,WAA6B,IAAPjK,GAAgBA,IAE9G,MAAMoxB,EAAO6B,EAAOC,GAChB,IAAIjyB,EAAI0F,EAAI/G,EAAIgH,EAChB,MAAMc,EAAgB,OAAVwrB,QAA4B,IAAVA,EAAmBA,EAAQ,GACzD,IAAK9B,EAAMe,WAAW3xB,KAAK8xB,WACvB,MAAO,GAEX,IAAK,MAAMvmB,KAAKvL,KAAKgyB,SACZpB,EAAMsB,SAAS3mB,EAAEpG,WAClBH,GAAY4rB,EAAMzrB,SAAUoG,EAAEpG,UAAYoG,EAAEuB,SAASrB,eACnDgnB,GAASA,EAAMlnB,EAAEuB,YAGvB5F,EAAIrG,KAAK0K,EAAEuB,UAQf,OANI9M,KAAKiyB,WACe,QAAnBxxB,EAAKT,KAAKoyB,WAAwB,IAAP3xB,GAAyBA,EAAG0H,MAAMyoB,EAAO6B,EAAOvrB,GACxD,QAAnBf,EAAKnG,KAAKsyB,WAAwB,IAAPnsB,GAAyBA,EAAGgC,MAAMyoB,EAAO6B,EAAOvrB,GACxD,QAAnB9H,EAAKY,KAAKuyB,WAAwB,IAAPnzB,GAAyBA,EAAG+I,MAAMyoB,EAAO6B,EAAOvrB,GACxD,QAAnBd,EAAKpG,KAAKwyB,WAAwB,IAAPpsB,GAAyBA,EAAG+B,MAAMyoB,EAAO6B,EAAOvrB,IAEzEA,EAEX,YAAY/B,EAAUwE,EAAQ8oB,GAC1B,OAAOzyB,KAAKmI,MAAM,IAAI,GAAOhD,EAASxD,EAAGwD,EAAS1D,EAAGkI,GAAS8oB,GAElE,eAAettB,EAAUY,EAAM0sB,GAC3B,OAAOzyB,KAAKmI,MAAM,IAAI,GAAUhD,EAASxD,EAAGwD,EAAS1D,EAAGsE,EAAKC,MAAOD,EAAKE,QAASwsB,GAEtF,YACI,MAAM9wB,EAAI3B,KAAK8xB,UAAU3sB,SAASxD,EAAGF,EAAIzB,KAAK8xB,UAAU3sB,SAAS1D,EAAG+vB,EAAIxxB,KAAK8xB,UAAU/rB,KAAKC,MAAOyJ,EAAIzP,KAAK8xB,UAAU/rB,KAAKE,OAAQ8rB,EAAW/xB,KAAK+xB,SACnJ/xB,KAAKoyB,IAAM,IAAI,GAAS,IAAI,GAAUzwB,EAAGF,EAAG+vB,EAAI,EAAG/hB,EAAI,GAAIsiB,GAC3D/xB,KAAKsyB,IAAM,IAAI,GAAS,IAAI,GAAU3wB,EAAI6vB,EAAI,EAAG/vB,EAAG+vB,EAAI,EAAG/hB,EAAI,GAAIsiB,GACnE/xB,KAAKuyB,IAAM,IAAI,GAAS,IAAI,GAAU5wB,EAAGF,EAAIgO,EAAI,EAAG+hB,EAAI,EAAG/hB,EAAI,GAAIsiB,GACnE/xB,KAAKwyB,IAAM,IAAI,GAAS,IAAI,GAAU7wB,EAAI6vB,EAAI,EAAG/vB,EAAIgO,EAAI,EAAG+hB,EAAI,EAAG/hB,EAAI,GAAIsiB,GAC3E/xB,KAAKiyB,UAAW,GCvDjB,MAAM,GACT,YAAY5M,EAAQ7R,GAChBxT,KAAKwT,UAAYA,EACjBxT,KAAKslB,QAAUD,EACfrlB,KAAK2yB,OAAS,EACd3yB,KAAK6I,MAAQ,GACb7I,KAAK4yB,OAAS,GACd5yB,KAAK6yB,KAAO,GACZ7yB,KAAKmoB,MAAQ,EACbnoB,KAAKuvB,WAAY,EACjBvvB,KAAKwvB,WAAa,EAClBxvB,KAAK8yB,mBAAqB,IAAIrH,GAAmBzrB,KAAKslB,QAAS9R,GAC/D,MAAMyb,EAAajvB,KAAKwT,UAAU8H,OAAOvV,KACzC/F,KAAK+yB,SAAW,IAAI,GAAS,IAAI,IAAW9D,EAAWjpB,MAAQ,GAAIipB,EAAWhpB,OAAS,EAAuB,EAAnBgpB,EAAWjpB,MAAa,EAAwB,EAApBipB,EAAWhpB,OAAc,GAAI,GACpJjG,KAAK8vB,OAAS9vB,KAAKslB,QAAQzK,QAAQmY,UAAUxf,GAAW,GACxDxT,KAAKib,SAAWjb,KAAKslB,QAAQzK,QAAQoY,YAAYzf,GAAW,GAEhE,YACI,OAAOxT,KAAK6I,MAAM1H,OAEtB,qBACI,MAAMqS,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cACtD,IAAK,MAAM5K,KAAYvI,EAAQ4lB,gBAC3BnqB,KAAKkzB,YAAYptB,GAAqB,CAClCC,KAAMyN,EAAU8H,OAAOvV,KACvBZ,SAAU2H,EAAS3H,WACnB2H,EAASvI,SAGrB,YAAYY,EAAUonB,EAAiB5C,EAAOwJ,GAC1C,MAAM3f,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cAAeyQ,EAAQ5jB,EAAQsT,UAAU4R,OAAOtB,MACtG,GAAIA,EAAQ,EAAG,CACX,MAAMiL,EAAgBpzB,KAAKgmB,MAAQ,EAAImC,EACnCiL,EAAgB,GAChBpzB,KAAKqzB,eAAeD,GAG5B,OAAOpzB,KAAKszB,cAAcnuB,EAAUonB,EAAiB5C,EAAOwJ,GAEhE,QACInzB,KAAK6I,MAAQ,GACb7I,KAAK4yB,OAAS,GAElB,UACI5yB,KAAK6I,MAAQ,GACb7I,KAAK4yB,OAAS,GACd5yB,KAAK8vB,OAAS,GACd9vB,KAAKib,SAAW,GAEpB,WAAWxH,GACP,MAAMD,EAAYxT,KAAKwT,UAAWyb,EAAajvB,KAAKwT,UAAU8H,OAAOvV,KACrE/F,KAAK+yB,SAAW,IAAI,GAAS,IAAI,IAAW9D,EAAWjpB,MAAQ,GAAIipB,EAAWhpB,OAAS,EAAuB,EAAnBgpB,EAAWjpB,MAAa,EAAwB,EAApBipB,EAAWhpB,OAAc,GAAI,GACpJuN,EAAU8H,OAAOlI,cACXpT,KAAKuzB,OAAO9f,GACdzT,KAAKuvB,YACLvvB,KAAK4yB,OAAO/H,KAAK,CAACtc,EAAGD,IAAMA,EAAEnJ,SAASzD,EAAI6M,EAAEpJ,SAASzD,GAAK6M,EAAE+d,GAAKhe,EAAEge,IACnEtsB,KAAKwvB,WAAaxvB,KAAK4yB,OAAO5yB,KAAK4yB,OAAOzxB,OAAS,GAAGgE,SAASzD,EAC/D1B,KAAKuvB,WAAY,GAErB,IAAK,MAAO,CAAE3Z,KAAWpC,EAAUqH,QAC/BrH,EAAU8H,OAAO3F,WAAWC,EAAQnC,GAExC,IAAK,MAAMlI,KAAKvL,KAAK4yB,OACjBrnB,EAAEgK,KAAK9B,GAGf,gBAAgB3I,GACZ9K,KAAK8yB,mBAAmB/S,gBAAgBjV,GAE5C,OACI,IAAIrK,EACJ,MAAM+S,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cACtD1X,KAAKwvB,WAAa,EAClBxvB,KAAKuvB,WAAY,EACjB,IAAIhN,GAAU,EACdviB,KAAKib,SAAWjb,KAAKslB,QAAQzK,QAAQoY,YAAYzf,GAAW,GAC5DxT,KAAK8yB,mBAAmBjX,OACxB,IAAK,MAAO,CAAEjG,KAAWpC,EAAUqH,QAI/B,QAHuChZ,IAAnC+T,EAAO4d,0BACPjR,EAAU3M,EAAO4d,2BAEjBjR,EACA,MAGRviB,KAAK8yB,mBAAmBjX,OACxB,IAAK,MAAO,CAAEgR,KAAkBrZ,EAAUigB,eACtC5G,EAAchR,KAAKrI,GAGvB,GADAxT,KAAK0zB,sBACAnR,EAAS,CACV,IAAK,MAAMoH,KAASplB,EAAQsT,UAAU2R,OAAQ,CAC1C,MAAMmK,EAAepvB,EAAQsT,UAAU2R,OAAOG,GAC9C,IAAK,IAAIiK,EAAI5zB,KAAKgmB,MAAO6N,EAAI,EAAGA,GAAoC,QAA9BpzB,EAAKkzB,EAAalK,cAA2B,IAAPhpB,OAAgB,EAASA,EAAG2C,QAAUwwB,EAAIrvB,EAAQsT,UAAU4R,OAAOrmB,MAAOwwB,IAAKC,IACvJ7zB,KAAKkzB,iBAAYrxB,EAAW8xB,EAAchK,GAGlD,IAAK,IAAIiK,EAAI5zB,KAAKgmB,MAAO4N,EAAIrvB,EAAQsT,UAAU4R,OAAOrmB,MAAOwwB,IACzD5zB,KAAKkzB,eAIjB,KAAKY,EAAIvU,EAAOgN,EAAiB5C,GAC7B3pB,KAAK+zB,SAAU,EACf,IAAK,IAAIH,EAAI,EAAGA,EAAIE,EAAIF,IACpB5zB,KAAKkzB,YAAsB,OAAV3T,QAA4B,IAAVA,OAAmB,EAASA,EAAMpa,SAAUonB,EAAiB5C,GAEpG3pB,KAAK+zB,SAAU,EAEnB,eACI/zB,KAAKoT,QACLpT,KAAK6b,aACC7b,KAAKuV,KAAK,CAAEnS,MAAO,EAAG6D,OAAQ,IAExC,OAAO6F,EAAU6c,EAAO6C,GACpBxsB,KAAKg0B,SAASh0B,KAAK6I,MAAMxH,QAAQyL,QAAWjL,EAAW8nB,EAAO6C,GAElE,SAASljB,EAAO2qB,EAAW,EAAGtK,EAAO6C,GACjC,GAAIljB,EAAQ,GAAKA,EAAQtJ,KAAKgmB,MAC1B,OAEJ,IAAIkO,EAAU,EACd,IAAK,IAAIN,EAAItqB,EAAO4qB,EAAUD,GAAYL,EAAI5zB,KAAKgmB,MAAO4N,IAAK,CAC3D,MAAM9mB,EAAW9M,KAAK6I,MAAM+qB,GAC5B,IAAK9mB,GAAYA,EAAS6c,QAAUA,EAChC,SAEJ7c,EAASoX,QAAQsI,GACjBxsB,KAAK6I,MAAMvH,OAAOsyB,IAAK,GACvB,MAAMO,EAAOn0B,KAAK4yB,OAAOvxB,QAAQyL,GACjC9M,KAAK4yB,OAAOtxB,OAAO6yB,EAAM,GACzBn0B,KAAK6yB,KAAKhyB,KAAKiM,GACfonB,IACAl0B,KAAKslB,QAAQ8O,cAAc,kBAAmB,CAC1C5gB,UAAWxT,KAAKwT,UAChBlV,KAAM,CACFwO,eAKhB,eAAemnB,EAAUtK,GACrB3pB,KAAKg0B,SAAS,EAAGC,EAAUtK,GAE/B,aACI,MAAMplB,EAAUvE,KAAKwT,UAAUkE,cAC/B,IAAK,MAAMiS,KAASplB,EAAQsT,UAAU2R,OAClCxpB,KAAKq0B,cAAc9vB,EAAQsT,UAAU2R,OAAOG,GAAQ,EAAGA,GAE3D3pB,KAAKq0B,cAAc9vB,EAAQsT,UAAWtT,EAAQ4lB,gBAAgBhpB,QAElE,aAAasS,GACT,IAAIhT,EAAI0F,EACR,MAAMqN,EAAYxT,KAAKwT,UAAW8gB,EAAoB,GACtD,IAAK,MAAO,CAAEzH,KAAkBrZ,EAAUigB,eACtC5G,EAAc0G,SAElB,IAAK,MAAO,CAAE3d,KAAWpC,EAAUqH,QACN,QAAxBpa,EAAKmV,EAAO2d,cAA2B,IAAP9yB,GAAyBA,EAAGmc,KAAKhH,EAAQnC,GAE9E,IAAK,MAAM3G,KAAY9M,KAAK6I,MAAO,CAC/B,MAAMyT,EAAe9I,EAAU8H,OAAOgB,aAClCA,IAAiBxP,EAAS6gB,qBAC1B7gB,EAAS3H,SAASxD,GAAK2a,EAAatW,MACpC8G,EAAS3H,SAAS1D,GAAK6a,EAAarW,OACpC6G,EAASiiB,gBAAgBptB,GAAK2a,EAAatW,MAC3C8G,EAASiiB,gBAAgBttB,GAAK6a,EAAarW,QAE/C6G,EAAS6gB,oBAAqB,QACxB3tB,KAAK8yB,mBAAmB9G,MAAMlf,GACpC,IAAK,MAAO,CAAE8I,KAAW5V,KAAKwT,UAAUqH,QAAS,CAC7C,GAAI/N,EAAS0L,UACT,MAE6B,QAAhCrS,EAAKyP,EAAO2e,sBAAmC,IAAPpuB,GAAyBA,EAAGyW,KAAKhH,EAAQ9I,EAAU2G,GAEhG,IAAK,MAAMoc,KAAS7vB,KAAK8vB,OACjBD,EAAM/D,UAAUhf,IAChB+iB,EAAM/X,KAAKhL,EAAU2G,GAGzB3G,EAAS0L,UACT8b,EAAkBzzB,KAAKiM,GAG3B9M,KAAK+yB,SAASV,OAAO,IAAIrB,GAAMlkB,EAAStB,cAAesB,IAE3D,IAAK,MAAMA,KAAYwnB,EACnBt0B,KAAKoY,OAAOtL,SAEV9M,KAAK8yB,mBAAmB0B,iBAAiB/gB,GAC/C,IAAK,MAAM3G,KAAY9M,KAAK6I,MAAO,CAC/B,IAAK,MAAMmS,KAAWhb,KAAKib,SACvBD,EAAQuY,OAAOzmB,EAAU2G,GAExB3G,EAAS0L,WAAc1L,EAASyL,gBAC3BvY,KAAK8yB,mBAAmB2B,kBAAkB3nB,EAAU2G,UAG3DD,EAAU8H,OAAOgB,aAE5B,cAAc/X,EAASmwB,EAAa/K,GAChC,IAAIlpB,EACJ,KAAwC,QAAjCA,EAAK8D,EAAQklB,OAAOvB,eAA4B,IAAPznB,OAAgB,EAASA,EAAG+D,QACxE,OAEJ,MAAMmwB,EAAgBpwB,EAAQklB,OAAQmL,EAAgB50B,KAAK60B,mBAAmBF,EAAczM,SAAU4M,EAAqBH,EAAcvxB,MAAO2xB,EAAoBJ,EAAcxM,MAAQ,EAAIwM,EAAcxM,MAAQ2M,EAAoBE,EAAkBhzB,KAAKwB,IAAIsxB,EAAoBC,GAAqBH,EAAgBF,EAAaO,EAAiBjzB,KAAKwB,IAAIxD,KAAKgmB,MAAOhmB,KAAK6I,MAAMqsB,OAAQttB,GAAMA,EAAE+hB,QAAUA,GAAOxoB,QAC3ZnB,KAAKmoB,MAAQwM,EAAcxM,MAAQyM,EAC/BK,EAAiBD,EACjBh1B,KAAKa,KAAKmB,KAAKqvB,IAAI2D,EAAkBC,QAAiBpzB,EAAW0C,EAASolB,GAErEsL,EAAiBD,GACtBh1B,KAAKqzB,eAAe4B,EAAiBD,EAAiBrL,GAG9D,mBAAmBwL,GACf,MAAM3hB,EAAYxT,KAAKwT,UACvB,IAAKA,EAAU8H,OAAOjU,UAAY8tB,EAAe3wB,OAC7C,OAAO,EAEX,MAAM8W,EAAS9H,EAAU8H,OAAOjU,QAAS2U,EAAUxI,EAAUgC,OAAOC,WACpE,OAAQ6F,EAAOtV,MAAQsV,EAAOrV,QAAWkvB,EAAeluB,OAAS+U,GAAW,EAAImZ,EAAenN,MAEnG,cAAc7iB,EAAUonB,EAAiB5C,EAAOwJ,GAC5C,IACI,IAAIrmB,EAAW9M,KAAK6yB,KAAKuC,MACrBtoB,EACAA,EAAS+O,KAAK7b,KAAK2yB,OAAQxtB,EAAUonB,EAAiB5C,GAGtD7c,EAAW,IAAI,GAAS9M,KAAKslB,QAAStlB,KAAK2yB,OAAQ3yB,KAAKwT,UAAWrO,EAAUonB,EAAiB5C,GAElG,IAAI0L,GAAS,EAIb,GAHIlC,IACAkC,EAASlC,EAAYrmB,KAEpBuoB,EACD,OAWJ,OATAr1B,KAAK6I,MAAMhI,KAAKiM,GAChB9M,KAAK4yB,OAAO/xB,KAAKiM,GACjB9M,KAAK2yB,SACL3yB,KAAKslB,QAAQ8O,cAAc,gBAAiB,CACxC5gB,UAAWxT,KAAKwT,UAChBlV,KAAM,CACFwO,cAGDA,EAEX,MAAOoR,GAEH,YADAiG,QAAQmR,KAAK,0BAA0BpX,KC/P5C,MAAM,GACT,YAAY1K,GACRxT,KAAKwT,UAAYA,EAErB,OACI,MAAMA,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cACtD1X,KAAKyV,YAAclR,EAAQ2lB,cAAgBriB,KAAU,EAAIC,OAAOytB,iBAChEv1B,KAAK4R,aAAe,EACpB,MAAM4jB,EAAQx1B,KAAKyV,WACnB,GAAIjC,EAAU8H,OAAOjU,QAAS,CAC1B,MAAMA,EAAUmM,EAAU8H,OAAOjU,QACjCmM,EAAU8H,OAAOvV,KAAKC,MAAQqB,EAAQsU,YAAc6Z,EACpDhiB,EAAU8H,OAAOvV,KAAKE,OAASoB,EAAQqU,aAAe8Z,EAE1D,MAAM3d,EAAYtT,EAAQsT,UAC1B7X,KAAKy1B,gBAAkBrxB,GAAcyT,EAAUC,KAAKiP,QAAQhiB,UAAYywB,EACxEx1B,KAAK01B,mBAAqBtxB,GAAcyT,EAAU9R,KAAK0L,UAAUQ,OAASujB,EAC1Ex1B,KAAK4mB,SAAWxiB,GAAcyT,EAAUC,KAAKmP,QAAQL,UAAY4O,EAErE,aAAa1oB,GACT,MAAMvI,EAAUuI,EAASvI,QAASixB,EAAQx1B,KAAKyV,WAAYkgB,EAAepxB,EAAQuT,KAAK/S,SAAU7G,EAAQ4O,EAAS0I,OAClHtX,EAAMu3B,gBAAkBrxB,GAAcG,EAAQuT,KAAKiP,QAAQhiB,UAAYywB,EACvEt3B,EAAM03B,UAAYxxB,GAAcG,EAAQuT,KAAKkP,OAASwO,EACtDt3B,EAAM23B,UAAYzxB,GAAcG,EAAQuT,KAAK7F,OAASujB,EACtDt3B,EAAMw3B,mBAAqBtxB,GAAcG,EAAQwB,KAAK0L,UAAUQ,OAASujB,EACzE,MAAM/H,EAAcvvB,EAAMuvB,YAC1BA,EAAY5hB,gBAAyChK,IAA5B8zB,EAAa9pB,WAA2B8pB,EAAa9pB,WAAa2pB,OAAQ3zB,EACnG4rB,EAAY3hB,cAAqCjK,IAA1B8zB,EAAa7pB,SAAyB6pB,EAAa7pB,SAAW0pB,OAAQ3zB,EAC7F3D,EAAM0oB,SAAWxiB,GAAcG,EAAQuT,KAAKmP,QAAQL,UAAY4O,GCrBxE,SAASM,GAAWtiB,GAChB,OAAOA,IAAcA,EAAUgF,UAEnC,SAASud,GAAqB1Q,EAAQ7R,KAAcuW,GAChD,MAAMxlB,EAAU,IAAI,GAAQ8gB,EAAQ7R,GAEpC,OADAqW,GAAYtlB,KAAYwlB,GACjBxlB,EAEX,MAAMyxB,GAA0B,UAAWC,GAAuB,CAC9DC,SAAW3qB,IACP,MAAMhJ,EAAIgJ,EAAEvE,SAASgoB,OAErB,OADAzsB,EAAEL,OAAUK,EAAEpB,OAASa,KAAKqD,GAAM,IAC3B9C,GAEXsZ,KAAM,OAEN0X,OAAQ,OAERvH,MAAO,QAGJ,MAAM,GACT,YAAY3G,EAAQiH,EAAItC,GACpBhqB,KAAKssB,GAAKA,EACVtsB,KAAKslB,QAAUD,EACfrlB,KAAK2jB,SAAW,IAChB3jB,KAAK4jB,QAAS,EACd5jB,KAAKm2B,OAAS,EACdn2B,KAAKikB,SAAW,EAChBjkB,KAAKgkB,SAAW,EAChBhkB,KAAKo2B,aAAc,EACnBp2B,KAAKqc,SAAU,EACfrc,KAAKwY,WAAY,EACjBxY,KAAKq2B,SAAU,EACfr2B,KAAK+jB,cAAgB,EACrB/jB,KAAKsqB,QAAU,IACftqB,KAAK2gB,YAAa,EAClB3gB,KAAKs2B,eAAiBtM,EACtBhqB,KAAKu2B,sBAAwBvM,EAC7BhqB,KAAKwV,OAAS,IAAI,GAAOxV,MACzBA,KAAKsb,OAAS,IAAI,GAAOtb,MACzBA,KAAK6X,UAAY,IAAI,GAAU7X,KAAKslB,QAAStlB,MAC7CA,KAAKw2B,aAAe,IAAI3S,GAAa7jB,MACrCA,KAAKyzB,eAAiB,IAAIlzB,IAC1BP,KAAKsf,cAAgB,CACjBC,MAAO,CACH8C,UAAU,EACVtY,QAAQ,IAGhB/J,KAAK6a,QAAU,IAAIta,IACnBP,KAAKsV,QAAU,IAAI/U,IACnBP,KAAKy2B,SAAWV,GAAqB/1B,KAAKslB,QAAStlB,MACnDA,KAAK0X,cAAgBqe,GAAqB/1B,KAAKslB,QAAStlB,MACxDA,KAAK02B,gBAAkB,IAAI,GAAe12B,MACN,qBAAzB22B,sBAAwCA,uBAC/C32B,KAAK42B,sBAAwB,IAAID,qBAAsBzU,GAAYliB,KAAK62B,qBAAqB3U,KAEjGliB,KAAKslB,QAAQ8O,cAAc,iBAAkB,CAAE5gB,UAAWxT,OAE9D,cACI,OAAOA,KAAKy2B,SAEhB,oBACI,OAAOz2B,KAAKs2B,eAEhB,gBAAgBjuB,GACZ,IAAKytB,GAAW91B,MACZ,OAEJ,MAAM0kB,EAAK1kB,KAAKsf,cAAcjY,QAC9B,IAAKqd,EACD,OAEJ,MAAMoS,EAAsB,CAAC5Y,EAAGnK,EAAKpK,KACjC,IAAKmsB,GAAW91B,MACZ,OAEJ,MAAMgc,EAAUhc,KAAKwV,OAAOC,WAAYshB,EAAY,CAChDp1B,EAAGoS,EAAIpS,EAAIqa,EACXva,EAAGsS,EAAItS,EAAIua,GACZnE,EAAY7X,KAAK6X,UAAUkb,SAASiE,YAAYD,EAAWptB,EAASqS,GACvE3T,EAAS6V,EAAGrG,IAEVof,EAAgB/Y,IAClB,IAAK4X,GAAW91B,MACZ,OAEJ,MAAM4iB,EAAa1E,EAAGnK,EAAM,CACxBpS,EAAGihB,EAAWS,SAAWT,EAAWG,QACpCthB,EAAGmhB,EAAWU,SAAWV,EAAWI,SAExC8T,EAAoB5Y,EAAGnK,EAAK,IAE1BmjB,EAAoB,KACjBpB,GAAW91B,QAGhBm3B,GAAU,EACVC,GAAa,IAEXC,EAAmB,KAChBvB,GAAW91B,QAGhBo3B,GAAa,IAEXE,EAAmBpZ,IACrB,GAAK4X,GAAW91B,MAAhB,CAGA,GAAIm3B,IAAYC,EAAY,CACxB,MAAM7T,EAAarF,EACnB,IAAIsF,EAAYD,EAAWE,QAAQF,EAAWE,QAAQtiB,OAAS,GAC/D,IAAKqiB,IACDA,EAAYD,EAAWgU,eAAehU,EAAWgU,eAAep2B,OAAS,IACpEqiB,GACD,OAGR,MAAMnc,EAAUrH,KAAKsb,OAAOjU,QAAS+b,EAAa/b,EAAUA,EAAQyb,6BAA0BjhB,EAAWkS,EAAM,CAC3GpS,EAAG6hB,EAAUT,SAAWK,EAAaA,EAAWlZ,KAAO,GACvDzI,EAAG+hB,EAAUR,SAAWI,EAAaA,EAAWpZ,IAAM,IAE1D8sB,EAAoB5Y,EAAGnK,EAAK/R,KAAKyB,IAAI+f,EAAUgU,QAAShU,EAAUiU,UAEtEN,GAAU,EACVC,GAAa,IAEXM,EAAqB,KAClB5B,GAAW91B,QAGhBm3B,GAAU,EACVC,GAAa,IAEjB,IAAID,GAAU,EAAOC,GAAa,EAClC1S,EAAG7G,iBAAiB,QAASoZ,GAC7BvS,EAAG7G,iBAAiB,aAAcqZ,GAClCxS,EAAG7G,iBAAiB,YAAawZ,GACjC3S,EAAG7G,iBAAiB,WAAYyZ,GAChC5S,EAAG7G,iBAAiB,cAAe6Z,GAEvC,QAAQ95B,EAAKipB,EAAW2F,GAAW,GAC/B,SAAKsJ,GAAW91B,QAAWwsB,GAAYxsB,KAAKyzB,eAAekE,IAAI/5B,MAG/DoC,KAAKyzB,eAAe7yB,IAAIhD,EAAmB,OAAdipB,QAAoC,IAAdA,EAAuBA,EAAYoP,KAC/E,GAEX,UACI,IAAKH,GAAW91B,MACZ,OAEJA,KAAK43B,OACL53B,KAAK6X,UAAUqM,UACflkB,KAAKsb,OAAO4I,UACZ,IAAK,MAAO,CAAE7O,KAAWrV,KAAKsV,QACtBD,EAAO6O,SACP7O,EAAO6O,QAAQlkB,MAGvB,IAAK,MAAMpC,KAAOoC,KAAKsV,QAAQuiB,OAC3B73B,KAAKsV,QAAQrU,OAAOrD,GAExBoC,KAAKslB,QAAQzK,QAAQqJ,QAAQlkB,MAC7BA,KAAKwY,WAAY,EACjB,MAAMsf,EAAU93B,KAAKslB,QAAQyS,MAAO32B,EAAM02B,EAAQE,UAAWpwB,GAAMA,IAAM5H,MACrEoB,GAAO,GACP02B,EAAQx2B,OAAOF,EAAK,GAExBpB,KAAKslB,QAAQ8O,cAAc,qBAAsB,CAAE5gB,UAAWxT,OAElE,KAAK4kB,GACD,IAAKkR,GAAW91B,MACZ,OAEJ,IAAIi4B,EAAcrT,EAClB5kB,KAAKk4B,oBAAsB9vB,KAAUU,MAAOgb,IACpCmU,IACAj4B,KAAK+jB,mBAAgBliB,EACrBo2B,GAAc,SAEZj4B,KAAKw2B,aAAa2B,UAAUrU,KAG1C,sBACI,OAAOsU,KAAKC,UAAUr4B,KAAK0X,cAAe,CAAC9Z,EAAKwF,KAC5C,GAAY,YAARxF,GAA6B,eAARA,EAGzB,OAAOwF,GACR,GAEP,YAAYiF,EAAUhK,EAAMi6B,GACxB,MAAMjxB,EAAUrH,KAAKsb,OAAOjU,QACxBA,GACAA,EAAQkxB,OAAOlwB,EAAmB,OAAThK,QAA0B,IAATA,EAAkBA,EAAO,YAAai6B,GAGxF,UAAUjwB,GACNrI,KAAKw4B,YAAYnwB,GAErB,qBACI,OAAQrI,KAAKq2B,UAAYr2B,KAAK2gB,YAAcmV,GAAW91B,MAE3D,gBAAgB8K,GACZ,GAAKgrB,GAAW91B,MAAhB,CAGAA,KAAK6X,UAAUkI,gBAAgBjV,GAC/B,IAAK,MAAO,CAAE8K,KAAW5V,KAAK6a,QACtBjF,EAAOmK,iBACPnK,EAAOmK,gBAAgBjV,IAInC,aACI,IAAKgrB,GAAW91B,MACZ,OAEJ,MAAMy4B,EAASz4B,KAAKslB,QAAQzK,QAAQ6d,qBACpC,IAAK,MAAMr6B,KAAQo6B,EAAQ,CACvB,MAAMpjB,EAASrV,KAAKslB,QAAQzK,QAAQ6U,eAAerxB,GAC/CgX,GACArV,KAAKsV,QAAQ1U,IAAIvC,EAAMgX,GAG/BrV,KAAKy2B,SAAWV,GAAqB/1B,KAAKslB,QAAStlB,KAAMA,KAAKu2B,sBAAuBv2B,KAAKgqB,eAC1FhqB,KAAK0X,cAAgBqe,GAAqB/1B,KAAKslB,QAAStlB,KAAMA,KAAKy2B,UACnE,MAAMkC,EAAmB34B,KAAKslB,QAAQzK,QAAQ+d,oBAAoB54B,MAClE,IAAK,MAAOssB,EAAI1W,KAAW+iB,EACvB34B,KAAK6a,QAAQja,IAAI0rB,EAAI1W,GAEzB5V,KAAKwV,OAAOqG,OACZ7b,KAAKsb,OAAOO,OACZ7b,KAAKwc,sBACLxc,KAAKsb,OAAOxB,iBACZ9Z,KAAKsb,OAAO5B,SACZ1Z,KAAKsqB,QAAUtqB,KAAK0X,cAAc4S,QAClCtqB,KAAKikB,SAAwD,IAA7C7f,GAAcpE,KAAK0X,cAAcuM,UACjDjkB,KAAKm2B,OAAmD,IAA1C/xB,GAAcpE,KAAK0X,cAAcuJ,OAC/CjhB,KAAKgkB,SAAW,EAChBhkB,KAAK2jB,SAAW3jB,KAAK0X,cAAciM,SAAW,EAAI3jB,KAAK0X,cAAciM,SAAW,IAChF3jB,KAAK4jB,OAAS5jB,KAAK0X,cAAckM,OACjC,IAAK,MAAO,CAAEvO,KAAWrV,KAAKsV,QACtBD,EAAOwG,YACDxG,EAAOwG,KAAK7b,MAG1B,IAAK,MAAO,CAAE4V,KAAW5V,KAAK6a,QACtBjF,EAAOiG,YACDjG,EAAOiG,OAGrB7b,KAAKslB,QAAQ8O,cAAc,gBAAiB,CAAE5gB,UAAWxT,OACzDA,KAAK6X,UAAUgE,OACf7b,KAAK6X,UAAU4E,aACf,IAAK,MAAO,CAAE7G,KAAW5V,KAAK6a,QACtBjF,EAAOijB,gBACPjjB,EAAOijB,iBAGf74B,KAAKslB,QAAQ8O,cAAc,iBAAkB,CAAE5gB,UAAWxT,OAE9D,gBAAgB/B,GACP63B,GAAW91B,QAGhBA,KAAK84B,cAAgB76B,QACf+B,KAAK2c,WAEf,QACI,GAAKmZ,GAAW91B,aAGiB6B,IAA7B7B,KAAKk4B,sBACL1vB,KAAkBxI,KAAKk4B,4BAChBl4B,KAAKk4B,sBAEZl4B,KAAKq2B,SAAT,CAGA,IAAK,MAAO,CAAEzgB,KAAW5V,KAAK6a,QACtBjF,EAAOgL,OACPhL,EAAOgL,QAGV5gB,KAAK2gB,aACN3gB,KAAKq2B,SAAU,GAEnBr2B,KAAKslB,QAAQ8O,cAAc,kBAAmB,CAAE5gB,UAAWxT,QAE/D,KAAK4kB,GACD,IAAKkR,GAAW91B,MACZ,OAEJ,MAAM+4B,EAAc/4B,KAAKq2B,SAAWzR,EACpC,IAAI5kB,KAAKo2B,aAAgBp2B,KAAK0X,cAAcuS,SAA5C,CAOA,GAHIjqB,KAAKq2B,UACLr2B,KAAKq2B,SAAU,GAEf0C,EACA,IAAK,MAAO,CAAEnjB,KAAW5V,KAAK6a,QACtBjF,EAAOkL,MACPlL,EAAOkL,OAInB9gB,KAAKslB,QAAQ8O,cAAc,gBAAiB,CAAE5gB,UAAWxT,OACzDA,KAAKuV,KAAKwjB,IAAe,QAdrB/4B,KAAKo2B,aAAc,EAgB3B,gBACI,GAAKN,GAAW91B,MAIhB,OADAA,KAAK43B,OACE53B,KAAKg5B,QAEhB,cACI,GAAKlD,GAAW91B,MAIhB,OADAA,KAAKy2B,SAAWV,GAAqB/1B,KAAKslB,QAAStlB,MAC5CA,KAAK2c,UAEhB,SAASsc,EAAkBpd,EAAM0X,GACxBuC,GAAW91B,OAGhBA,KAAKk5B,QAAQD,EAAkBpd,EAAM0X,GAEzC,QAAQ4F,EAAiBtd,EAAM0X,GAC3B,IAAK4F,IAAoBrD,GAAW91B,MAChC,OAEJ,MAAM6sB,EAAgB1Q,OAAOC,OAAO,GAAI6Z,IACxC,GAA+B,oBAApBkD,EACPtM,EAAcqJ,SAAWiD,EACrBtd,IACAgR,EAAchR,KAAOA,GAErB0X,IACA1G,EAAc0G,OAASA,OAG1B,CACD,MAAM6F,EAAevM,EACrBA,EAAcqJ,SAAWiD,EAAgBjD,UAAYkD,EAAalD,SAClErJ,EAAchR,KAAOsd,EAAgBtd,MAAQud,EAAavd,KAC1DgR,EAAc0G,OAAS4F,EAAgB5F,QAAU6F,EAAa7F,OAElEvzB,KAAKsuB,QAAQ0H,GAAyBnJ,GAAe,GAEzD,cACSiJ,GAAW91B,QAASA,KAAKqc,gBAGxBrc,KAAK6b,OACX7b,KAAKqc,SAAU,QACT,IAAIgd,QAASC,IACft5B,KAAKu5B,cAAgBjxB,WAAWQ,UAC5B9I,KAAK02B,gBAAgB8C,eACjBx5B,KAAKsf,cAAcjY,mBAAmBoyB,aAAez5B,KAAK42B,uBAC1D52B,KAAK42B,sBAAsB7c,QAAQ/Z,KAAKsf,cAAcjY,SAE1D,IAAK,MAAO,CAAEuO,KAAW5V,KAAK6a,QACtBjF,EAAOojB,aACDpjB,EAAOojB,QAGrBh5B,KAAKslB,QAAQ8O,cAAc,mBAAoB,CAAE5gB,UAAWxT,OAC5DA,KAAK8gB,OACLwY,KACDt5B,KAAKm2B,WAGhB,OACI,GAAKL,GAAW91B,OAAUA,KAAKqc,QAA/B,CAGIrc,KAAKu5B,gBACL7wB,aAAa1I,KAAKu5B,sBACXv5B,KAAKu5B,eAEhBv5B,KAAKo2B,aAAc,EACnBp2B,KAAKqc,SAAU,EACfrc,KAAK02B,gBAAgBgD,kBACrB15B,KAAK4gB,QACL5gB,KAAK6X,UAAUzE,QACfpT,KAAKsb,OAAOlI,QACRpT,KAAKsf,cAAcjY,mBAAmBoyB,aAAez5B,KAAK42B,uBAC1D52B,KAAK42B,sBAAsB3U,UAAUjiB,KAAKsf,cAAcjY,SAE5D,IAAK,MAAO,CAAEuO,KAAW5V,KAAK6a,QACtBjF,EAAOgiB,MACPhiB,EAAOgiB,OAGf,IAAK,MAAMh6B,KAAOoC,KAAK6a,QAAQgd,OAC3B73B,KAAK6a,QAAQ5Z,OAAOrD,GAExBoC,KAAKs2B,eAAiBt2B,KAAKy2B,SAC3Bz2B,KAAKslB,QAAQ8O,cAAc,mBAAoB,CAAE5gB,UAAWxT,QAEhE,sBACIA,KAAK0X,cAAc2S,WAAa,GAChC,MAAMsP,EAAc35B,KAAK0X,cAAckiB,cAAc55B,KAAKsb,OAAOvV,KAAKC,MAAOhG,KAAKwV,OAAOC,WAAYzV,KAAKy2B,UAE1G,OADAz2B,KAAK0X,cAAcmiB,SAAS75B,KAAK84B,eAC7B94B,KAAK85B,qBAAuBH,IAGhC35B,KAAK85B,mBAAqBH,GACnB,GAEX,qBAAqBzX,GACjB,GAAK4T,GAAW91B,OAAUA,KAAK0X,cAAc0S,uBAG7C,IAAK,MAAMjI,KAASD,EACZC,EAAMC,SAAWpiB,KAAKsf,cAAcjY,UAGvC8a,EAAM4X,eAAiB/5B,KAAK8gB,KAAO9gB,KAAK4gB,UC/arD9X,eAAekxB,GAAeC,EAAS3wB,GACnC,MAAM4wB,EAAM9sB,GAAyB6sB,EAAS3wB,GAC9C,IAAK4wB,EACD,OAEJ,MAAMC,QAAiBC,MAAMF,GAC7B,GAAIC,EAASE,GACT,OAAOF,EAASG,OAEpBnW,QAAQC,MAAM,uBAAuB+V,EAAShoB,uCAE3C,MAAM,GACT,YAAYkT,GACRrlB,KAAKslB,QAAUD,EAEnB,KAAKkV,EAAOh2B,EAAS+E,GACjB,MAAMkxB,EAAS,CAAElxB,QAAOmxB,QAAQ,GAahC,MAZqB,kBAAVF,EACPC,EAAOD,MAAQA,EAGfC,EAAOj2B,QAAUg2B,EAEE,kBAAZh2B,EACPi2B,EAAOlxB,MAAQ/E,EAGfi2B,EAAOj2B,QAAsB,OAAZA,QAAgC,IAAZA,EAAqBA,EAAUi2B,EAAOj2B,QAExEvE,KAAK6pB,YAAY2Q,GAE5B,eAAeD,EAAON,EAAS3wB,GAC3B,IAAI4wB,EAAK5N,EAQT,MAPuB,kBAAZ2N,QAAoCp4B,IAAZo4B,EAC/BC,EAAMK,GAGNjO,EAAKiO,EACLL,EAAMD,GAEHj6B,KAAK06B,kBAAkB,CAAEH,MAAOjO,EAAI4N,MAAK5wB,QAAOmxB,QAAQ,IAEnE,kBAAkBD,GACd,IAAI/5B,EAAI0F,EAAI/G,EACZ,MAAMm7B,EAAgC,QAAvB95B,EAAK+5B,EAAOD,aAA0B,IAAP95B,EAAgBA,EAAK,cAAcuB,KAAK+B,MAAoB,IAAdV,MAAwB,MAAEiG,EAAO4wB,IAAKD,EAAO,OAAEQ,GAAWD,EAAQj2B,EAAUk2B,QAAeT,GAAeC,EAAS3wB,GAASkxB,EAAOj2B,QAC/N,IAAIo2B,EAAyC,QAAzBx0B,EAAKq0B,EAAOnzB,eAA4B,IAAPlB,EAAgBA,EAAK4B,SAAS6yB,eAAeL,GAC7FI,IACDA,EAAe5yB,SAAS8yB,cAAc,OACtCF,EAAarO,GAAKiO,EACwB,QAAzCn7B,EAAK2I,SAAS+yB,cAAc,eAA4B,IAAP17B,GAAyBA,EAAG27B,OAAOJ,IAEzF,MAAMK,EAAiB5tB,GAAyB7I,EAAS+E,GAAQyuB,EAAM/3B,KAAKslB,QAAQyS,MAAOkD,EAAWlD,EAAIC,UAAWz1B,GAAMA,EAAE+pB,KAAOiO,GACpI,GAAIU,GAAY,EAAG,CACf,MAAMC,EAAMl7B,KAAKslB,QAAQ6V,QAAQF,GAC7BC,IAAQA,EAAI1iB,YACZ0iB,EAAIhX,UACJ6T,EAAIz2B,OAAO25B,EAAU,IAG7B,IAAI5Z,EACJ,GAA2C,WAAvCsZ,EAAaS,QAAQC,cACrBha,EAAWsZ,EACXtZ,EAAS9F,QAAQxF,IAAsB,YAEtC,CACD,MAAMulB,EAAmBX,EAAaY,qBAAqB,UACvDD,EAAiBn6B,QACjBkgB,EAAWia,EAAiB,GAC5Bja,EAAS9F,QAAQxF,IAAsB,UAGvCsL,EAAWtZ,SAAS8yB,cAAc,UAClCxZ,EAAS9F,QAAQxF,IAAsB,OACvC4kB,EAAaa,YAAYna,IAG5BA,EAAShH,MAAMrU,QAChBqb,EAAShH,MAAMrU,MAAQ,QAEtBqb,EAAShH,MAAMpU,SAChBob,EAAShH,MAAMpU,OAAS,QAE5B,MAAMw1B,EAAU,IAAI,GAAUz7B,KAAKslB,QAASiV,EAAOS,GASnD,OARIC,GAAY,EACZlD,EAAIz2B,OAAO25B,EAAU,EAAGQ,GAGxB1D,EAAIl3B,KAAK46B,GAEbA,EAAQngB,OAAOogB,WAAWra,SACpBoa,EAAQzC,QACPyC,EAEX,wBAAwBjB,GACpB,OAAOx6B,KAAK6pB,YAAY2Q,GAE5B,UAAUlO,EAAIqO,EAAcp2B,EAAS+E,GACjC,MAAMkxB,EAAS,CAAElxB,QAAOmxB,QAAQ,GAmBhC,MAlBkB,kBAAPnO,EACPkO,EAAOD,MAAQjO,EAGfkO,EAAOnzB,QAAUilB,EAEjBqO,aAAwBlB,YACxBe,EAAOnzB,QAAUszB,EAGjBH,EAAOj2B,QAAUo2B,EAEE,kBAAZp2B,EACPi2B,EAAOlxB,MAAQ/E,EAGfi2B,EAAOj2B,QAAsB,OAAZA,QAAgC,IAAZA,EAAqBA,EAAUi2B,EAAOj2B,QAExEvE,KAAK6pB,YAAY2Q,GAE5B,cAAclO,EAAIqO,EAAcV,EAAS3wB,GACrC,IAAI4wB,EAAKyB,EAAOC,EAAUv0B,EAY1B,OAXIilB,aAAcmN,aACdpyB,EAAUilB,EACV4N,EAAMS,EACNiB,EAAW3B,IAGX0B,EAAQrP,EACRjlB,EAAUszB,EACVT,EAAMD,EACN2B,EAAWtyB,GAERtJ,KAAK06B,kBAAkB,CAAEH,MAAOoB,EAAOzB,MAAK5wB,MAAOsyB,EAAUv0B,UAASozB,QAAQ,KCvI7F,SAASoB,GAAwBroB,EAAW5I,EAAKkxB,EAAclX,GAAQ,GACnE,IAAI1d,EAAM0D,EAAIjK,IAAI6S,GAKlB,OAJKtM,IAAO0d,IACR1d,EAAM,IAAI40B,EAAaC,UAAUnxB,IAAKhD,GAAMA,EAAE4L,IAC9C5I,EAAIhK,IAAI4S,EAAWtM,IAEhBA,EAEJ,MAAM80B,GACT,YAAY3W,GACRrlB,KAAKslB,QAAUD,EACfrlB,KAAK6a,QAAU,GACf7a,KAAKi8B,cAAgB,CACjBzW,YAAa,IAAIjlB,IACjBuvB,OAAQ,IAAIvvB,IACZ0a,SAAU,IAAI1a,KAElBP,KAAKwlB,YAAc,IAAIjlB,IACvBP,KAAK8vB,OAAS,IAAIvvB,IAClBP,KAAKib,SAAW,IAAI1a,IACpBP,KAAKk8B,QAAU,IAAI37B,IACnBP,KAAKsV,QAAU,IAAI/U,IACnBP,KAAKyzB,eAAiB,IAAIlzB,IAE9B,cAActC,EAAMk+B,GAChBn8B,KAAKi8B,cAAczW,YAAY5kB,IAAI3C,EAAMk+B,GAE7C,iBAAiBl+B,EAAMm+B,GACnBp8B,KAAKi8B,cAAcnM,OAAOlvB,IAAI3C,EAAMm+B,GAExC,mBAAmBn+B,EAAMo+B,GACrBr8B,KAAKi8B,cAAchhB,SAASra,IAAI3C,EAAMo+B,GAE1C,iBAAiBh+B,EAAMwuB,GACd7sB,KAAKquB,iBAAiBhwB,IACvB2B,KAAKyzB,eAAe7yB,IAAIvC,EAAMwuB,GAGtC,UAAUjX,GACD5V,KAAKs8B,UAAU1mB,EAAO0W,KACvBtsB,KAAK6a,QAAQha,KAAK+U,GAG1B,UAAU2mB,EAAWh4B,EAASioB,GAAW,IACjCA,GAAaxsB,KAAKwrB,UAAU+Q,IAC5Bv8B,KAAKk8B,QAAQt7B,IAAI27B,EAAWh4B,GAGpC,eAAelG,EAAMgX,GACZrV,KAAK0vB,eAAerxB,IACrB2B,KAAKsV,QAAQ1U,IAAIvC,EAAMgX,GAG/B,QAAQ7B,GACJxT,KAAKib,SAASha,OAAOuS,GACrBxT,KAAK8vB,OAAO7uB,OAAOuS,GACnBxT,KAAKwlB,YAAYvkB,OAAOuS,GAE5B,oBAAoBA,GAChB,MAAMtM,EAAM,IAAI3G,IAChB,IAAK,MAAMqV,KAAU5V,KAAK6a,QACjBjF,EAAO4mB,YAAYhpB,EAAUkE,gBAGlCxQ,EAAItG,IAAIgV,EAAO0W,GAAI1W,EAAO0mB,UAAU9oB,IAExC,OAAOtM,EAEX,eAAesM,EAAWoR,GAAQ,GAC9B,OAAOiX,GAAwBroB,EAAWxT,KAAKwlB,YAAaxlB,KAAKi8B,cAAczW,YAAaZ,GAEhG,UAAUpR,EAAWoR,GAAQ,GACzB,OAAOiX,GAAwBroB,EAAWxT,KAAK8vB,OAAQ9vB,KAAKi8B,cAAcnM,OAAQlL,GAEtF,iBAAiBvmB,GACb,OAAO2B,KAAKyzB,eAAe9yB,IAAItC,GAEnC,UAAUuX,GACN,OAAO5V,KAAK6a,QAAQxN,KAAMzF,GAAMA,EAAE0kB,KAAO1W,GAE7C,UAAU2U,GACN,OAAOvqB,KAAKk8B,QAAQv7B,IAAI4pB,GAE5B,eAAelsB,GACX,OAAO2B,KAAKsV,QAAQ3U,IAAItC,GAE5B,qBACI,OAAO2B,KAAKsV,QAAQuiB,OAExB,YAAYrkB,EAAWoR,GAAQ,GAC3B,OAAOiX,GAAwBroB,EAAWxT,KAAKib,SAAUjb,KAAKi8B,cAAchhB,SAAU2J,GAE1F,YAAYrgB,EAASylB,GACjB,IAAK,MAAMpU,KAAU5V,KAAK6a,QACtBjF,EAAOiU,YAAYtlB,EAASylB,GAGpC,qBAAqBxW,EAAWjP,KAAYylB,GACxC,MAAM/O,EAAWjb,KAAKib,SAASta,IAAI6S,GACnC,GAAKyH,EAGL,IAAK,MAAMD,KAAWC,EACdD,EAAQ6O,aACR7O,EAAQ6O,YAAYtlB,KAAYylB,ICrGzC,MAAM,GACT,cACIhqB,KAAKy8B,UAAY,GACjBz8B,KAAK08B,iBAAmB,IAAIr8B,EAC5BL,KAAK28B,cAAe,EACpB38B,KAAK48B,QAAU,IAAI,GAAO58B,MAC1BA,KAAK6a,QAAU,IAAImhB,GAAQh8B,MAE/B,iBAAiB3B,EAAMmC,GACnBR,KAAK08B,iBAAiB7e,iBAAiBxf,EAAMmC,GAEjD,oBAAoBvC,EAAM4+B,GACtB78B,KAAK6a,QAAQiiB,cAAc7+B,EAAM4+B,SAC3B78B,KAAK2c,UAEf,eAAe1e,EAAM8+B,GACjB/8B,KAAK6a,QAAQmiB,iBAAiB/+B,EAAM8+B,SAC9B/8B,KAAK2c,UAEf,yBAAyB1e,EAAMg/B,GAC3Bj9B,KAAK6a,QAAQqiB,mBAAmBj/B,EAAMg/B,SAChCj9B,KAAK2c,UAEf,uBAAuB1e,EAAM4oB,GACzB7mB,KAAK6a,QAAQsiB,iBAAiBl/B,EAAM4oB,SAC9B7mB,KAAK2c,UAEf,gBAAgB/G,GACZ5V,KAAK6a,QAAQuiB,UAAUxnB,SACjB5V,KAAK2c,UAEf,gBAAgB4N,EAAQhmB,EAASioB,GAAW,GACxCxsB,KAAK6a,QAAQwiB,UAAU9S,EAAQhmB,EAASioB,SAClCxsB,KAAK2c,UAEf,eAAevH,EAAOC,EAAQwG,EAAMnG,EAAawO,GAC7C,IAAIoZ,EAEAA,EADkB,oBAAXjoB,EACQ,CACXK,YAAaA,EACbwO,QAASA,EACT3O,KAAMF,EACNwG,KAAMA,GAIKxG,EAEnBrV,KAAK6a,QAAQ0iB,eAAenoB,EAAOkoB,SAC7Bt9B,KAAK2c,UAEf,cAActe,EAAMyC,GAChBd,KAAK08B,iBAAiBtI,cAAc/1B,EAAMyC,GAE9C,MACI,OAAOd,KAAKy8B,UAEhB,QAAQnzB,GACJ,MAAMyuB,EAAM/3B,KAAK+3B,MAAOl6B,EAAOk6B,EAAIzuB,GACnC,GAAIzL,IAASA,EAAK2a,UACd,OAAO3a,EAEXk6B,EAAIz2B,OAAOgI,EAAO,GAEtB,OACStJ,KAAK28B,eACN38B,KAAK28B,cAAe,GAG5B,WAAWpC,EAAOh2B,GACd,OAAOvE,KAAK48B,QAAQzzB,KAAKoxB,EAAOh2B,GAEpC,oBAAoBg2B,EAAOh2B,EAAS+E,GAChC,OAAOtJ,KAAK48B,QAAQzzB,KAAKoxB,EAAOh2B,EAAS+E,GAE7C,eAAeixB,EAAOiD,EAAgBl0B,GAClC,OAAOtJ,KAAK48B,QAAQa,SAASlD,EAAOiD,EAAgBl0B,GAExD,gBACI,IAAK,MAAMo0B,KAAY19B,KAAK+3B,YAClB2F,EAAS/gB,UAGvB,oBAAoBte,EAAMmC,GACtBR,KAAK08B,iBAAiBh8B,oBAAoBrC,EAAMmC,GAEpD,UAAU8rB,EAAIjlB,EAAS9C,GACnB,OAAOvE,KAAK48B,QAAQh8B,IAAI0rB,EAAIjlB,EAAS9C,GAEzC,cAAc+nB,EAAIjlB,EAASm2B,EAAgBl0B,GACvC,OAAOtJ,KAAK48B,QAAQe,QAAQrR,EAAIjlB,EAASm2B,EAAgBl0B,GAE7D,kBAAkBjB,GACd,MAAM0vB,EAAM/3B,KAAK+3B,MACjB,IAAKA,EAAI52B,OACL,MAAM,IAAIW,MAAM,0FAEpB,IAAK,MAAMq5B,KAAWpD,EAClBoD,EAAQyC,gBAAgBv1B,ICnG7B,MAAM,GACT,cACIrI,KAAKpC,IAAM,MACXoC,KAAK+N,aAAe,MAExB,YAAYc,GACR,IAAIpO,EACJ,MAAMsR,EAAalD,EAAMzL,MAAO+N,EAAqC,QAAzB1Q,EAAKsR,EAAWlC,WAAwB,IAAPpP,EAAgBA,EAAKoO,EAAMzL,MACxG,QAAmBvB,IAAfsP,EAAS1B,QAAkC5N,IAAfsP,EAASxB,QAAkC9N,IAAfsP,EAASzB,EACjE,OAAOE,GAASuB,GAGxB,iBAAiBtC,GACb,IAAIpO,EACJ,MAAMsR,EAAalD,EAAMzL,MAAO+N,EAAqC,QAAzB1Q,EAAKsR,EAAWlC,WAAwB,IAAPpP,EAAgBA,EAAKoO,EAAMzL,MACxG,QAAmBvB,IAAfsP,EAAS1B,QAAkC5N,IAAfsP,EAASzB,EACrC,OAAOE,GAAS,CACZH,EAAGrL,GAAc+M,EAAS1B,GAC1BC,EAAGtL,GAAc+M,EAASzB,GAC1BC,EAAGvL,GAAc+M,EAASxB,KAItC,YAAYnJ,GACR,IAAKA,EAAMsH,WAAW,OAClB,OAEJ,MAAMU,EAAQ,qEAAsEC,EAASD,EAAME,KAAKlI,GACxG,OAAOiI,EACDsB,GAAW,CACTxB,EAAGE,EAAOtN,OAAS,EAAIoF,GAAWkI,EAAO,IAAM,EAC/CgB,EAAGd,SAASF,EAAO,GAAI,IACvBiB,EAAGf,SAASF,EAAO,GAAI,IACvBkB,EAAGhB,SAASF,EAAO,GAAI,WAEzB5M,GCpCP,MAAM,GACT,cACI7B,KAAKpC,IAAM,MACXoC,KAAK+N,aAAe,MAExB,YAAYc,GACR,IAAIpO,EACJ,MAAMsR,EAAalD,EAAMzL,MAAOy6B,EAAqC,QAAzBp9B,EAAKsR,EAAW3C,WAAwB,IAAP3O,EAAgBA,EAAKoO,EAAMzL,MACxG,QAAmBvB,IAAfg8B,EAAS55B,EACT,OAAO45B,EAGf,iBAAiBhvB,GACb,IAAIpO,EACJ,MAAMsR,EAAalD,EAAMzL,MAAOy6B,EAAqC,QAAzBp9B,EAAKsR,EAAW3C,WAAwB,IAAP3O,EAAgBA,EAAKoO,EAAMzL,MACxG,QAAmBvB,IAAfg8B,EAAS55B,EACT,MAAO,CACHA,EAAGG,GAAcy5B,EAAS55B,GAC1BoK,EAAGjK,GAAcy5B,EAASxvB,GAC1BC,EAAGlK,GAAcy5B,EAASvvB,IAItC,YAAY9H,GACR,IAAKA,EAAMsH,WAAW9N,KAAK+N,cACvB,OAEJ,MAAMS,EAAQ,mEAAoEC,EAASD,EAAME,KAAKlI,GACtG,OAAOiI,EACD,CACEF,EAAGE,EAAOtN,OAAS,EAAIoF,GAAWkI,EAAO,IAAM,EAC/CH,EAAGK,SAASF,EAAO,GAAI,IACvBJ,EAAGM,SAASF,EAAO,GAAI,IACvBxK,EAAG0K,SAASF,EAAO,GAAI,UAEzB5M,GCpCP,MAAMi8B,GACT,YAAYtqB,GACRxT,KAAKwT,UAAYA,EACjBxT,KAAK3B,KAAO,YCHb,MAAM0/B,GACT,YAAYvqB,GACRxT,KAAKwT,UAAYA,EACjBxT,KAAK3B,KAAO,aCCpB,MAAM2/B,GAAkB,IAAI,GAAmBC,GAAkB,IAAI,GACrExwB,GAAgBuwB,IAChBvwB,GAAgBwwB,IAChB,MAAMC,GAAc,IAAI,GACxBA,GAAYriB,OCRL,MAAMsiB,GACT,cACIn+B,KAAK2J,OAAS,EACd3J,KAAK0L,KAAO,EAEhB,KAAKpN,GACIA,SAGauD,IAAdvD,EAAKoN,OACL1L,KAAK0L,KAAOpN,EAAKoN,WAED7J,IAAhBvD,EAAKqL,SACL3J,KAAK2J,OAASrL,EAAKqL,UCXxB,MAAM,WAAqB,GAC9B,cACI5G,QACA/C,KAAKkoB,QAAU,EACfloB,KAAKoD,MAAQ,GACbpD,KAAKmoB,MAAQ,IAAIgW,GAErB,KAAK7/B,GACIA,IAGLyE,MAAMoG,KAAK7K,QACUuD,IAAjBvD,EAAK4pB,UACLloB,KAAKkoB,QAAU5pB,EAAK4pB,SAEE,kBAAf5pB,EAAK6pB,MACZnoB,KAAKmoB,MAAMxe,OAASrL,EAAK6pB,MAGzBnoB,KAAKmoB,MAAMhf,KAAK7K,EAAK6pB,SCnB1B,MAAM,GACT,cACInoB,KAAK6O,MAAQ,IAAIwV,GACjBrkB,KAAK6O,MAAMzL,MAAQ,UACnBpD,KAAKo+B,WAAY,EACjBp+B,KAAKoQ,QAAU,EACfpQ,KAAKkkB,SAAU,EACflkB,KAAKq+B,QAAS,EACdr+B,KAAK+F,KAAO,IAAI,GAEpB,KAAKzH,QACYuD,IAATvD,SAGeuD,IAAfvD,EAAKuQ,QACL7O,KAAK6O,MAAQwV,GAAatiB,OAAO/B,KAAK6O,MAAOvQ,EAAKuQ,aAE/BhN,IAAnBvD,EAAK8/B,YACLp+B,KAAKo+B,UAAY9/B,EAAK8/B,WAE1Bp+B,KAAK/B,KAAOK,EAAKL,UACI4D,IAAjBvD,EAAK8R,UACLpQ,KAAKoQ,QAAU9R,EAAK8R,cAEFvO,IAAlBvD,EAAK6G,WACLnF,KAAKmF,SAAW,QACQtD,IAApBvD,EAAK6G,SAASxD,IACd3B,KAAKmF,SAASxD,EAAI0C,GAAc/F,EAAK6G,SAASxD,SAE1BE,IAApBvD,EAAK6G,SAAS1D,IACdzB,KAAKmF,SAAS1D,EAAI4C,GAAc/F,EAAK6G,SAAS1D,UAGpCI,IAAdvD,EAAKyH,MACL/F,KAAK+F,KAAKoD,KAAK7K,EAAKyH,WAEHlE,IAAjBvD,EAAK4lB,UACLlkB,KAAKkkB,QAAU5lB,EAAK4lB,cAEJriB,IAAhBvD,EAAK+/B,SACLr+B,KAAKq+B,OAAS//B,EAAK+/B,UCxCxB,MAAM,GACT,YAAYC,EAAW9qB,EAAWjP,EAASY,GACvC,IAAI1E,EAAI0F,EAAI/G,EACZY,KAAKs+B,UAAYA,EACjBt+B,KAAKwT,UAAYA,EACjBxT,KAAK+uB,gBAAkB5pB,EAAW,EAAOpD,OAAOoD,EAASxD,EAAGwD,EAAS1D,QAAKI,EACtE0C,aAAmB,GACnBvE,KAAKuE,QAAUA,GAGfvE,KAAKuE,QAAU,IAAI,GACnBvE,KAAKuE,QAAQ4E,KAAK5E,IAEtBvE,KAAKu+B,UAAW,EAChBv+B,KAAK/B,KAAO+B,KAAKuE,QAAQtG,KACzB+B,KAAKoQ,QAAUpQ,KAAKuE,QAAQ6L,QAC5BpQ,KAAK+F,KAAO3B,GAAcpE,KAAKuE,QAAQwB,KAAK3C,OAASoQ,EAAUgC,OAAOC,WACtEzV,KAAK0L,KAAO1L,KAAK+F,KAAO/F,KAAKuE,QAAQwB,KAAKmiB,QAAU1U,EAAUgC,OAAO5D,aACrE,MAAMuW,EAAQnoB,KAAKuE,QAAQwB,KAAKoiB,MAChCnoB,KAAKmoB,MAAQ,CACTxe,OAAQwe,EAAMxe,OAAS6J,EAAUgC,OAAOC,WAAajC,EAAUgC,OAAO5D,aACtElG,KAAMyc,EAAMzc,MAEhB1L,KAAK6O,MAAuD,QAA9CpO,EAAKmO,GAAgB5O,KAAKuE,QAAQsK,cAA2B,IAAPpO,EAAgBA,EAAK,CACrF6N,EAAG,EACHD,EAAG,EACHpK,EAAG,GAEPjE,KAAKmF,SAAiG,QAArF/F,EAAqC,QAA/B+G,EAAKnG,KAAK+uB,uBAAoC,IAAP5oB,OAAgB,EAASA,EAAG6oB,cAA2B,IAAP5vB,EAAgBA,EAAKY,KAAKw+B,eAE5I,QAAQ1xB,GACJ,MAAM0G,EAAYxT,KAAKwT,UAAWjP,EAAUvE,KAAKuE,QACjD,GAAIA,EAAQ65B,UAAW,CACnB,MAAM7e,EAAQ/L,EAAU8L,cAAcC,MACtC,GAAIA,EAAM8C,UAAY9C,EAAM+C,aAAc,CACtC,MAAMmc,EAAYz5B,GAAYhF,KAAKmF,SAAUoa,EAAM+C,cAC/Cmc,GAAaz+B,KAAK+F,OAClB/F,KAAKu+B,UAAW,QAIpBv+B,KAAKu+B,UAAW,EAEhBv+B,KAAKu+B,UAAYhf,EAAMpa,WACvBnF,KAAKmF,SAASxD,EAAI4d,EAAMpa,SAASxD,EACjC3B,KAAKmF,SAAS1D,EAAI8d,EAAMpa,SAAS1D,GAGzC,MAAMsS,EAAMjH,EAAStB,eAAe,GAAE3G,EAAE,GAAEC,EAAE,SAAEC,GAAaL,GAAa1E,KAAKmF,SAAU4O,GAAMxR,EAAI,EAAOR,OAAO8C,EAAIC,GAEnH,GADAvC,EAAEpB,OAAUnB,KAAK0L,KAAO1J,KAAK0vB,IAAI3sB,EAAU,GAAMyO,EAAUgC,OAAO5D,aAC9D7M,EAAW/E,KAAK+F,KAAO+G,EAASrB,YAAa,CAC7C,MAAMizB,EAAoC,KAAvB5xB,EAASrB,YAAsB+H,EAAUgC,OAAOC,WAC9DzV,KAAK+F,KAAO+G,EAASrB,aAAe1G,EAAW/E,KAAK+F,KAAO+G,EAASrB,kBACzC5J,IAA3BiL,EAAS6xB,eAA+B7xB,EAAS6xB,cAAcx9B,OAAS,EACrEoD,EAAQ2f,QACRpX,EAASoX,WAGTpX,EAAS8xB,kBAAmB,EAC5B5+B,KAAK6+B,uBAAuB/xB,EAAUvK,KAItCgC,EAAQ2f,UACRpX,EAAS/G,KAAK3C,OAASs7B,GAE3B1+B,KAAK6+B,uBAAuB/xB,EAAUvK,KAEtCvC,KAAKmoB,MAAMxe,QAAU,GAAK3J,KAAK+F,KAAO/F,KAAKmoB,MAAMxe,UACjD3J,KAAK+F,MAAQ24B,IAEb1+B,KAAKmoB,MAAMzc,MAAQ,GAAK1L,KAAK0L,KAAO1L,KAAKmoB,MAAMzc,QAC/C1L,KAAK0L,MAAQgzB,EAAa1+B,KAAKuE,QAAQwB,KAAKmiB,QAAU1U,EAAUgC,OAAO5D,mBAI3E5R,KAAK6+B,uBAAuB/xB,EAAUvK,GAG9C,KAAK+P,GACDA,EAAQwsB,UAAU9+B,KAAKmF,SAASxD,EAAG3B,KAAKmF,SAAS1D,GACjD6Q,EAAQG,YACRH,EAAQysB,IAAI,EAAG,EAAG/+B,KAAK+F,KAAM,EAAa,EAAV/D,KAAKqD,IAAQ,GAC7CiN,EAAQM,YACRN,EAAQY,UAAY/C,GAAgBnQ,KAAK6O,MAAO7O,KAAKoQ,SACrDkC,EAAQsC,OAEZ,SACI,MAAMma,EAAkB/uB,KAAK+uB,gBAC7B/uB,KAAKmF,SACD4pB,GAAmBvlB,GAAculB,EAAiB/uB,KAAKwT,UAAU8H,OAAOvV,KAAM,EAAOP,QAC/EupB,EACA/uB,KAAKw+B,eAEnB,eACI,MAAMnO,EAAgBhqB,GAAmC,CACrDN,KAAM/F,KAAKwT,UAAU8H,OAAOvV,KAC5BZ,SAAUnF,KAAKuE,QAAQY,WAE3B,OAAO,EAAOpD,OAAOsuB,EAAc1uB,EAAG0uB,EAAc5uB,GAExD,uBAAuBqL,EAAUvK,GAC7B,IAAI9B,EACJ,GAAIqM,EAAS0L,UACT,OAEJ,MAAMhF,EAAYxT,KAAKwT,UAAWyb,EAAazb,EAAU8H,OAAOvV,KAChE,GAAI+G,EAAS8xB,iBAAkB,CAC3B,MAAMI,EAAc94B,GAA6B,CAAEH,KAAMkpB,IACzDniB,EAAS3H,SAAS85B,MAAMD,GACxBlyB,EAAS9F,SAASi4B,MAAMnyB,EAASsiB,iBACjCtiB,EAAS6xB,mBAAgB98B,EACzBiL,EAAS8xB,kBAAmB,EAEhC,GAAI5+B,KAAKuE,QAAQ85B,OAAQ,CAMrB,QAL+Bx8B,IAA3BiL,EAAS6xB,gBACT7xB,EAAS6xB,cAAgB,EAAO58B,OAAO,EAAG,GAC1C+K,EAAS6xB,cAAcx9B,OAAS6D,GAAY8H,EAAStB,cAAexL,KAAKmF,UACzE2H,EAAS6xB,cAAcz8B,MAAQmB,IAAcrB,KAAKqD,GAAK,GAEvDyH,EAAS6xB,cAAcx9B,QAAUnB,KAAK+F,OAAS/F,KAAKuE,QAAQ2f,QAAS,CACrE,MAAMgb,EAAUl9B,KAAKwB,IAAIyrB,EAAWjpB,MAAOipB,EAAWhpB,QACtD6G,EAAS6xB,cAAcx9B,OAAS+9B,GAA8B,GAAd77B,IAAoB,GAAzB,QAEPxB,IAApCiL,EAASqyB,yBACTryB,EAASqyB,uBACLryB,EAAS9F,SAASrF,GAAK,EAAI,YAAc,qBAEjD,MAAMy9B,EAActyB,EAAS6xB,cAAcx9B,OAAQk+B,EAAavyB,EAAS6xB,cAAcz8B,MAAOo9B,EAAiBxyB,EAASqyB,uBACxHryB,EAAS9F,SAASi4B,MAAM,EAAOz5B,QAC/B,MAAM+5B,EAAa,CACf59B,EAAsB,cAAnB29B,EAAiCt9B,KAAKW,IAAMX,KAAKY,IACpDnB,EAAsB,cAAnB69B,EAAiCt9B,KAAKY,IAAMZ,KAAKW,KAExDmK,EAAS3H,SAASxD,EAAI3B,KAAKmF,SAASxD,EAAIy9B,EAAcG,EAAW59B,EAAE09B,GACnEvyB,EAAS3H,SAAS1D,EAAIzB,KAAKmF,SAAS1D,EAAI29B,EAAcG,EAAW99B,EAAE49B,GACnEvyB,EAAS6xB,cAAcx9B,QAAUoB,EAAEpB,OACnC2L,EAAS6xB,cAAcz8B,QACqB,QAApCzB,EAAKqM,EAAS0I,OAAOqgB,iBAA8B,IAAPp1B,EAAgBA,EAAK,GAAK+S,EAAUgC,OAAOC,WAAc,IACrGjC,EAAUgC,OAAO5D,iBAExB,CACD,MAAM4tB,EAAO,EAAOh6B,OACpBg6B,EAAKr+B,OAASoB,EAAEpB,OAChBq+B,EAAKt9B,MAAQK,EAAEL,MACf4K,EAAS9F,SAASy4B,MAAMD,KCjJ7B,MAAM,GACT,YAAYhsB,GACRxT,KAAKwT,UAAYA,EACjBxT,KAAK6I,MAAQ,GACb7I,KAAKs+B,UAAY,GACjBt+B,KAAK0/B,uBAAyB,GAC9BlsB,EAAUmsB,YAAeC,QAA4B/9B,IAAd+9B,GAAgD,kBAAdA,EACnE5/B,KAAK6I,MAAM+2B,GAAa,GACxB5/B,KAAK6I,MAAMwE,KAAMzF,GAAMA,EAAE3J,OAAS2hC,GACxCpsB,EAAUqsB,YAAc,CAACt7B,EAASY,IAAanF,KAAK6/B,YAAYt7B,EAASY,GAE7E,YAAYZ,EAASY,GACjB,MAAM26B,EAAW,IAAI,GAAiB9/B,KAAMA,KAAKwT,UAAWjP,EAASY,GAErE,OADAnF,KAAK6I,MAAMhI,KAAKi/B,GACTA,EAEX,KAAKxtB,GACD,IAAK,MAAMwtB,KAAY9/B,KAAK6I,MACxBi3B,EAASvqB,KAAKjD,GAGtB,gBAAgBxH,GACZ,MAAMi1B,EAAkB//B,KAAKs+B,UAAW0B,EAAgBhgC,KAAK0/B,uBAC7D,GAAa,aAAT50B,EAAqB,CACrB,MAAMm1B,EAAuB7yB,GAAyB4yB,GAAgBE,EAA4C,OAAzBD,QAA0D,IAAzBA,EAAkCA,EAAuB7yB,GAAyB2yB,GAAkBI,EAAYngC,KAAKwT,UAAU8L,cAAcC,MAAME,cAC7Qzf,KAAK6/B,YAAYK,EAAkBC,IAG3C,aACIngC,KAAKs+B,UAAYt+B,KAAKwT,UAAUkE,cAAc4mB,UAC9Ct+B,KAAK0/B,uBAAyB1/B,KAAKwT,UAAUkE,cAAc4H,cAAcqG,MAAM2Y,UAC/E/2B,GAA0BvH,KAAKs+B,UAAYwB,IACvC9/B,KAAK6/B,YAAYC,KAGzB,eAAehzB,GACX,IAAK,MAAMgzB,KAAY9/B,KAAK6I,MAExB,GADAi3B,EAAS/Y,QAAQja,GACbA,EAAS0L,UACT,MAIZ,eAAesnB,GACX,MAAMx2B,EAAQtJ,KAAK6I,MAAMxH,QAAQy+B,GAC7Bx2B,GAAS,GACTtJ,KAAK6I,MAAMvH,OAAOgI,EAAO,GAGjC,SACI,IAAK,MAAMw2B,KAAY9/B,KAAK6I,MACxBi3B,EAASpmB,SAGjB,OACI1Z,KAAK6I,MAAQ,ICtDrB,MAAM,GACF,cACI7I,KAAKssB,GAAK,YAEd,UAAU9Y,GACN,OAAO,IAAI,GAAUA,GAEzB,YAAYjP,EAASjC,GACjB,IAAI7B,EAAI0F,GACHnG,KAAKw8B,YAAYj4B,IAAavE,KAAKw8B,YAAYl6B,OAGrC,OAAXA,QAA8B,IAAXA,OAAoB,EAASA,EAAOg8B,aACvD/5B,EAAQ+5B,UAAY/2B,GAA0BjF,EAAOg8B,UAAYwB,IAC7D,MAAM5a,EAAM,IAAI,GAEhB,OADAA,EAAI/b,KAAK22B,GACF5a,KAGf3gB,EAAQ+a,cAAcqG,MAAM2Y,UAAY/2B,GAA+J,QAApIpB,EAAqF,QAA/E1F,EAAgB,OAAX6B,QAA8B,IAAXA,OAAoB,EAASA,EAAOgd,qBAAkC,IAAP7e,OAAgB,EAASA,EAAGklB,aAA0B,IAAPxf,OAAgB,EAASA,EAAGm4B,UAAYwB,IACnP,MAAM5a,EAAM,IAAI,GAEhB,OADAA,EAAI/b,KAAK22B,GACF5a,KAGf,YAAY3gB,GACR,IAAI9D,EAAI0F,EAAI/G,EACZ,IAAKmF,EACD,OAAO,EAEX,MAAM+5B,EAAY/5B,EAAQ+5B,UAC1B,OAAIA,aAAqB52B,QACZ42B,EAAUn9B,SAEdm9B,OAG+I,QAA7Il/B,EAA4F,QAAtF+G,EAAsC,QAAhC1F,EAAK8D,EAAQ+a,qBAAkC,IAAP7e,OAAgB,EAASA,EAAGqf,cAA2B,IAAP3Z,OAAgB,EAASA,EAAG0Z,eAA4B,IAAPzgB,OAAgB,EAASA,EAAG0L,QACxLlC,GAAU,WAAYrE,EAAQ+a,cAAcQ,OAAOD,QAAQ/U,QAMhEhC,eAAes3B,GAAoB/a,GACtC,MAAMzP,EAAS,IAAI,SACbyP,EAAO+X,UAAUxnB,GChDpB,MAAM,GACT,KAAKtX,GACIA,SAGeuD,IAAhBvD,EAAK6L,SACLnK,KAAKmK,OAAS9F,GAAc/F,EAAK6L,cAEnBtI,IAAdvD,EAAK4L,OACLlK,KAAKkK,KAAO7F,GAAc/F,EAAK4L,YAEhBrI,IAAfvD,EAAK2L,QACLjK,KAAKiK,MAAQ5F,GAAc/F,EAAK2L,aAEnBpI,IAAbvD,EAAK0L,MACLhK,KAAKgK,IAAM3F,GAAc/F,EAAK0L,QCfnC,MAAM,WAAoB,GAC7B,cACIjH,QACA/C,KAAKoD,MAAQ,GCHd,MAAM,WAAkB,GAC3B,cACIL,QACA/C,KAAKoD,MAAQ,CAAEI,IAAK,EAAGC,IAAK,ICD7B,MAAM,GACT,cACIzD,KAAKgmB,MAAQ,EACbhmB,KAAKiH,OAAS,IAAI,GAClBjH,KAAKqgC,KAAO,IAAI,GAChBrgC,KAAKsgC,YAAa,EAEtB,KAAKhiC,GACIA,SAGcuD,IAAfvD,EAAK0nB,QACLhmB,KAAKgmB,MAAQ1nB,EAAK0nB,OAEtBhmB,KAAKiH,OAAOkC,KAAK7K,EAAK2I,QACtBjH,KAAKqgC,KAAKl3B,KAAK7K,EAAK+hC,MACpBrgC,KAAK6X,UAAYtQ,GAA0BjJ,EAAKuZ,UAAYA,GACjDzN,GAAW,GAAIyN,SAEFhW,IAApBvD,EAAKgiC,aACLtgC,KAAKsgC,WAAahiC,EAAKgiC,cCrB5B,MAAM,GACT,cACItgC,KAAK8J,OAAS,IAAI,GAClB9J,KAAK8K,KAAO,OACZ9K,KAAKugC,MAAQ,IAAI,GAErB,KAAKjiC,GACIA,IAGDA,EAAKwM,OACL9K,KAAK8K,KAAOxM,EAAKwM,MAEjBxM,EAAKwL,QACL9J,KAAK8J,OAAOX,KAAK7K,EAAKwL,QAE1B9J,KAAKugC,MAAMp3B,KAAK7K,EAAKiiC,SChBtB,MAAM,GACT,YAAYlb,EAAQ7R,GAChBxT,KAAKqlB,OAASA,EACdrlB,KAAKwT,UAAYA,EAErB,KAAK1G,GACD,MAAM0G,EAAYxT,KAAKwT,UAAWqa,EAAmB/gB,EAASvI,QAASi8B,EAAiB3S,EAAiB3J,QACzG,IAAKsc,EACD,OAEJ1zB,EAAS2zB,WAAa,EACtB,MAAMC,EAAgBF,EAAe12B,OAChCgD,EAAS4zB,gBACV5zB,EAAS4zB,cAAgB,IAEzBA,EAAcv2B,SACd2C,EAAS4zB,cAAcv2B,OAAU/F,GAAcs8B,EAAcv2B,QAAUqJ,EAAU8H,OAAOvV,KAAKE,OAAU,KAEvGy6B,EAAcx2B,OACd4C,EAAS4zB,cAAcx2B,KAAQ9F,GAAcs8B,EAAcx2B,MAAQsJ,EAAU8H,OAAOvV,KAAKC,MAAS,KAElG06B,EAAcz2B,QACd6C,EAAS4zB,cAAcz2B,MAAS7F,GAAcs8B,EAAcz2B,OAASuJ,EAAU8H,OAAOvV,KAAKC,MAAS,KAEpG06B,EAAc12B,MACd8C,EAAS4zB,cAAc12B,IAAO5F,GAAcs8B,EAAc12B,KAAOwJ,EAAU8H,OAAOvV,KAAKE,OAAU,KAGzG,UAAU6G,GACN,OAAQA,EAAS0L,UAErB,YAAYjU,KAAY+F,GACf/F,EAAQ2f,UACT3f,EAAQ2f,QAAU,IAAI,IAE1B,IAAK,MAAM5hB,KAAUgI,EACjB/F,EAAQ2f,QAAQ/a,KAAgB,OAAX7G,QAA8B,IAAXA,OAAoB,EAASA,EAAO4hB,SAGpF,kBAAkBpX,EAAU0f,GACxB,GAAIA,EACA,OAEJ,MAAMgU,EAAiB1zB,EAASvI,QAAQ2f,QACpCsc,GAA0C,UAAxBA,EAAe11B,MACjC9K,KAAKugC,MAAMzzB,GAGnB,OAAOA,GACH,IAAK9M,KAAK8rB,UAAUhf,GAChB,OAEJ,MAAM3H,EAAW2H,EAAStB,cAAe1B,EAASgD,EAAS4zB,cACtD52B,SAGkBjI,IAAlBiI,EAAOK,QAAwBhF,EAAS1D,GAAKqI,EAAOK,aACpCtI,IAAhBiI,EAAOI,MAAsB/E,EAASxD,GAAKmI,EAAOI,WACjCrI,IAAjBiI,EAAOG,OAAuB9E,EAASxD,GAAKmI,EAAOG,YACpCpI,IAAfiI,EAAOE,KAAqB7E,EAAS1D,GAAKqI,EAAOE,MAClD8C,EAASoX,UAGjB,iBAAiByc,EAAQC,GACrB,MAAMJ,EAAiBG,EAAOp8B,QAAQ2f,QACtC,IAAKsc,EACD,OAEJ,MAAMK,EAAeL,EAAeD,MAAOh8B,EAAUulB,GAAqB9pB,KAAKqlB,OAAQrlB,KAAKwT,UAAWmtB,EAAOp8B,SAAU0C,EAAS3C,GAASu8B,EAAa55B,QACvJ1C,EAAQsK,MAAM1F,KAAK,CACf/F,MAAO,CACHyM,IAAK8wB,EAAO3vB,kBAGpBzM,EAAQuT,KAAK3O,KAAK,CACd/D,OAAQ,CACJzD,EAAGg/B,EAAOx7B,SAASxD,EACnBF,EAAGk/B,EAAOx7B,SAAS1D,EACnBqJ,KAAM,aAGoB,kBAAvBvG,EAAQwB,KAAK3C,MACpBmB,EAAQwB,KAAK3C,OAAS6D,GAGtB1C,EAAQwB,KAAK3C,MAAMI,KAAOyD,EAC1B1C,EAAQwB,KAAK3C,MAAMK,KAAOwD,GAE9B1C,EAAQ4E,KAAKy3B,GACb,MAAMl3B,EAASm3B,EAAaP,WAAaj8B,IAAes8B,EAAO56B,KAAK3C,MAAOu9B,EAAO56B,KAAK3C,OAAS,EAAG+B,EAAW,CAC1GxD,EAAGg/B,EAAOx7B,SAASxD,EAAIqC,EAAc0F,GACrCjI,EAAGk/B,EAAOx7B,SAAS1D,EAAIuC,EAAc0F,IAEzC,OAAO1J,KAAKwT,UAAUqE,UAAUqb,YAAY/tB,EAAUZ,EAASo8B,EAAOhX,MAAQ7c,IAC1E,IAAIrM,EACJ,QAAIqM,EAAS/G,KAAK3C,MAAQ,MAG1B0J,EAAS9F,SAAS7F,OAAS6C,EAAcK,GAAcs8B,EAAO35B,SAAS7F,OAAQ2L,EAAS9F,SAAS7F,SACjG2L,EAAS2zB,YAA2C,QAA5BhgC,EAAKkgC,EAAOF,kBAA+B,IAAPhgC,EAAgBA,EAAK,GAAK,EACtFqM,EAAS2f,aAAc,EACvBnkB,WAAW,KACPwE,EAAS2f,aAAc,GACxB,MACI,KAGf,MAAM3f,GACF,MAAM0zB,EAAiB1zB,EAASvI,QAAQ2f,QACxC,IAAKsc,EACD,OAEJ,MAAMK,EAAeL,EAAeD,MACpC,GAAIM,EAAa7a,OAAS,SACGnkB,IAAxBiL,EAAS2zB,YAA4B3zB,EAAS2zB,aAAeI,EAAa7a,OAC3E,OAEJ,MAAMqa,EAAO/7B,GAASu8B,EAAaR,MAAOS,EAAwB1zB,GAAyByzB,EAAahpB,WACxG,IAAK,IAAI+b,EAAI,EAAGA,EAAIyM,EAAMzM,IACtB5zB,KAAK+gC,iBAAiBj0B,EAAUg0B,ICxHrCh4B,eAAek4B,GAAmB3b,SAC/BA,EAAO6X,mBAAmB,UAAY1pB,GAAc,IAAI,GAAe6R,EAAQ7R,ICDlF,MAAM,GACT,eAAerO,EAAUY,EAAM6O,GAC3B,MAAMqsB,EAAgB,CAACt/B,EAAGF,KACtB,MAAMy/B,EAAI79B,IAAc,EAAK89B,EAAQn/B,KAAKo/B,KAAM3/B,EAAIE,EAAKK,KAAKq/B,IAAI,EAAIr/B,KAAKqD,GAAK67B,IAAK3+B,EAAIc,IACzF,OAAId,EAAI,IACG4+B,EAEF5+B,EAAI,GACFP,KAAKqD,GAAK87B,EAEZ5+B,EAAI,IACFP,KAAKqD,GAAK87B,GAGTA,GAEbx3B,EAAS,CAAChI,EAAGF,EAAG0/B,IAAWx/B,EAAIF,EAAKO,KAAKI,MAAMX,EAAIO,KAAKW,IAAIw+B,KAAW,GAAKx/B,EAAIK,KAAKY,IAAIu+B,KAAW,IAAK5yB,EAAGD,GAAK,CAACvI,EAAKC,MAAQ,EAAGD,EAAKE,OAAS,GAAIq7B,EAAcL,EAAc1yB,EAAGD,GAAIizB,EAAY53B,EAAO4E,EAAGD,EAAGgzB,GAAcE,EAAe5sB,EAAO2sB,EAAYv/B,KAAKI,KAAKiB,KAAek+B,EAC5R,MAAO,CACH5/B,EAAGwD,EAASxD,EAAI6/B,EAAex/B,KAAKW,IAAI2+B,GACxC7/B,EAAG0D,EAAS1D,EAAI+/B,EAAex/B,KAAKY,IAAI0+B,KCpB7C,MAAMG,GACT,cACIzhC,KAAK0hC,MAAO,EAEhB,KAAKpjC,QACYuD,IAATvD,SAGeuD,IAAfvD,EAAK0nB,QACLhmB,KAAKgmB,MAAQ1nB,EAAK0nB,YAEHnkB,IAAfvD,EAAK2iB,QACLjhB,KAAKihB,MAAQ3iB,EAAK2iB,YAEApf,IAAlBvD,EAAK2lB,WACLjkB,KAAKikB,SAAW3lB,EAAK2lB,eAEPpiB,IAAdvD,EAAKojC,OACL1hC,KAAK0hC,KAAOpjC,EAAKojC,QCjBtB,MAAM,GACT,cACI1hC,KAAKi0B,SAAW,EAChBj0B,KAAKihB,MAAQ,GAEjB,KAAK3iB,QACYuD,IAATvD,SAGkBuD,IAAlBvD,EAAK21B,WACLj0B,KAAKi0B,SAAW5vB,GAAc/F,EAAK21B,gBAEpBpyB,IAAfvD,EAAK2iB,QACLjhB,KAAKihB,MAAQ5c,GAAc/F,EAAK2iB,UCdrC,MAAM0gB,GACT,cACI3hC,KAAK8K,KAAO,UACZ9K,KAAKiG,OAAS,EACdjG,KAAKgG,MAAQ,EAEjB,KAAK1H,QACYuD,IAATvD,SAGcuD,IAAdvD,EAAKwM,OACL9K,KAAK8K,KAAOxM,EAAKwM,WAEDjJ,IAAhBvD,EAAK2H,SACLjG,KAAKiG,OAAS3H,EAAK2H,aAEJpE,IAAfvD,EAAK0H,QACLhG,KAAKgG,MAAQ1H,EAAK0H,SCbvB,MAAM,GACT,cACIhG,KAAKiqB,UAAW,EAChBjqB,KAAK4U,MAAO,EACZ5U,KAAK4hC,KAAO,IAAIH,GAChBzhC,KAAKqgC,KAAO,IAAI,GAChBrgC,KAAKoV,MAAQ,SACbpV,KAAK6hC,WAAa,EAEtB,KAAKvjC,QACYuD,IAATvD,SAGkBuD,IAAlBvD,EAAK2rB,WACLjqB,KAAKiqB,SAAW3rB,EAAK2rB,eAEPpoB,IAAdvD,EAAKyH,YACalE,IAAd7B,KAAK+F,OACL/F,KAAK+F,KAAO,IAAI47B,IAEpB3hC,KAAK+F,KAAKoD,KAAK7K,EAAKyH,YAEDlE,IAAnBvD,EAAK4G,YACLlF,KAAKkF,UAAY5G,EAAK4G,WAE1BlF,KAAK8hC,MAAQxjC,EAAKwjC,WACAjgC,IAAdvD,EAAKsW,OACL5U,KAAK4U,KAAOtW,EAAKsW,MAErB5U,KAAK4hC,KAAKz4B,KAAK7K,EAAKsjC,MACpB5hC,KAAK/B,KAAOK,EAAKL,KACjB+B,KAAK6X,UAAYtQ,GAA0BjJ,EAAKuZ,UAAYA,GACjDzN,GAAW,GAAIyN,IAE1B7X,KAAKqgC,KAAKl3B,KAAK7K,EAAK+hC,WACDx+B,IAAfvD,EAAK8W,QACLpV,KAAKoV,MAAQ9W,EAAK8W,YAEAvT,IAAlBvD,EAAK6G,WACLnF,KAAKmF,SAAW,QACQtD,IAApBvD,EAAK6G,SAASxD,IACd3B,KAAKmF,SAASxD,EAAI0C,GAAc/F,EAAK6G,SAASxD,SAE1BE,IAApBvD,EAAK6G,SAAS1D,IACdzB,KAAKmF,SAAS1D,EAAI4C,GAAc/F,EAAK6G,SAAS1D,UAG9BI,IAApBvD,EAAKyjC,kBACmBlgC,IAApB7B,KAAK+hC,aACL/hC,KAAK+hC,WAAa,IAAI,IAE1B/hC,KAAK+hC,WAAW54B,KAAK7K,EAAKyjC,kBAENlgC,IAApBvD,EAAKujC,aACL7hC,KAAK6hC,WAAavjC,EAAKujC,cCvD5B,MAAM,GACT,YAAYxc,EAAQ2c,EAAUxuB,EAAWjP,EAASY,GAC9C,IAAI1E,EAAI0F,EAAI/G,EAAIgH,EAAI5G,EAAI+T,EAAIoP,EACxB0K,EACJrtB,KAAKgiC,SAAWA,EAChBhiC,KAAKwT,UAAYA,EACjBxT,KAAKslB,QAAUD,EACfrlB,KAAKiiC,iBAAmB,EACxBjiC,KAAKkiC,kBAAoB,EACzBliC,KAAKmiC,mBAAqB,EAC1BniC,KAAKoiC,iBAAmBj9B,EACpBZ,aAAmB,GACnBvE,KAAKuE,QAAUA,GAGfvE,KAAKuE,QAAU,IAAI,GACnBvE,KAAKuE,QAAQ4E,KAAK5E,IAEtBvE,KAAKqiC,YAAqF,KAAlC,QAAlC5hC,EAAKT,KAAKuE,QAAQq9B,KAAK3gB,aAA0B,IAAPxgB,EAAgBA,EAAK,GAAaT,KAAKwT,UAAUgC,OAAO5D,aACxH5R,KAAKmF,SAA4C,QAAhCgB,EAAKnG,KAAKoiC,wBAAqC,IAAPj8B,EAAgBA,EAAKnG,KAAKw+B,eACnFx+B,KAAK/B,KAAO+B,KAAKuE,QAAQtG,KACzB+B,KAAKsiC,OAAqD,QAA3CljC,EAAKY,KAAKslB,QAAQid,2BAAwC,IAAPnjC,OAAgB,EAASA,EAAGojC,SAASxiC,KAAKuE,QAAQ6Q,OACpHpV,KAAK4U,KAAO5U,KAAKuE,QAAQqQ,KACzB5U,KAAKyiC,aAAeziC,KAAKuE,QAAQq9B,KAAKF,KACtC1hC,KAAK0iC,sBAAuB,EAC5B,IAAI7U,EAAmBzjB,GAAW,GAAIpK,KAAKuE,QAAQsT,WAC9B,OAArBgW,QAAkD,IAArBA,IAAkDA,EAAmB,IACjE,QAAhCznB,EAAKynB,EAAiB/V,YAAyB,IAAP1R,IAAsBynB,EAAiB/V,KAAO,IACrC,QAAjDtY,GAAM6tB,EAAKQ,EAAiB/V,MAAM5S,iBAA8B,IAAP1F,IAAsB6tB,EAAGnoB,UAAYlF,KAAKuE,QAAQW,WACxGlF,KAAKuE,QAAQw9B,aACb/hC,KAAK+hC,WAAa5yB,GAAgBnP,KAAKuE,QAAQw9B,aAEnD/hC,KAAKq2B,SAAWr2B,KAAKuE,QAAQ0lB,SAC7BjqB,KAAK2iC,kBAAoB9U,EACzB7tB,KAAK+F,KAC4B,QAA5BwN,EAAKvT,KAAKuE,QAAQwB,YAAyB,IAAPwN,EAAgBA,EAAK,MACtD,MAAMxN,EAAO,IAAI47B,GAMjB,OALA57B,EAAKoD,KAAK,CACNlD,OAAQ,EACR6E,KAAM,UACN9E,MAAO,IAEJD,GAP+C,GAS9D/F,KAAK4iC,WAAgD,QAAlCjgB,EAAK3iB,KAAKuE,QAAQq9B,KAAK5b,aAA0B,IAAPrD,EAAgBA,GAAM,EACnF3iB,KAAK6iC,UAAY7iC,KAAK4iC,YAAc,EACpC5iC,KAAKslB,QAAQ8O,cAAc,iBAAkB,CACzC5gB,YACAlV,KAAM,CACFwkC,QAAS9iC,QAGjBA,KAAK8gB,OAET,gBACI9gB,KAAKq2B,SAAU,EACfr2B,KAAK4gB,QAET,eACI5gB,KAAKq2B,SAAU,EACfr2B,KAAK8gB,OAET,cACI,GAAI9gB,KAAKuE,QAAQu9B,MAAO,CACpB,MAAMtuB,EAAYxT,KAAKwT,UAAWnM,EAAUU,SAAS6yB,eAAe56B,KAAKuE,QAAQu9B,OACjF,GAAIz6B,EAAS,CACT,MAAM07B,EAAS17B,EAAQyb,wBACvB,MAAO,CACHnhB,GAAIohC,EAAOphC,EAAIohC,EAAO/8B,MAAQ,GAAKwN,EAAUgC,OAAOC,WACpDhU,GAAIshC,EAAOthC,EAAIshC,EAAO98B,OAAS,GAAKuN,EAAUgC,OAAOC,aAIjE,OAAOzV,KAAKmF,SAEhB,UACI,MAAMqO,EAAYxT,KAAKwT,UACvB,GAAIxT,KAAKuE,QAAQu9B,MAAO,CACpB,MAAMz6B,EAAUU,SAAS6yB,eAAe56B,KAAKuE,QAAQu9B,OACrD,GAAIz6B,EAAS,CACT,MAAM07B,EAAS17B,EAAQyb,wBACvB,MAAO,CACH9c,MAAO+8B,EAAO/8B,MAAQwN,EAAUgC,OAAOC,WACvCxP,OAAQ88B,EAAO98B,OAASuN,EAAUgC,OAAOC,aAIrD,MAAO,CACHzP,MAA0B,YAAnBhG,KAAK+F,KAAK+E,KACV0I,EAAU8H,OAAOvV,KAAKC,MAAQhG,KAAK+F,KAAKC,MAAS,IAClDhG,KAAK+F,KAAKC,MAChBC,OAA2B,YAAnBjG,KAAK+F,KAAK+E,KACX0I,EAAU8H,OAAOvV,KAAKE,OAASjG,KAAK+F,KAAKE,OAAU,IACpDjG,KAAK+F,KAAKE,QAGxB,QACQjG,KAAKq2B,gBAGFr2B,KAAKgjC,WAEhB,OACI,IAAIviC,EACJ,IAAIT,KAAKq2B,SAGHr2B,KAAKwT,UAAUgC,OAAO5D,eACvB5R,KAAK4iC,WAAa,GAAK5iC,KAAK6iC,YAAc7iC,KAAKuE,QAAQq9B,KAAK5b,SAC5DhmB,KAAKyiC,aAAeziC,KAAKmiC,qBAAmD,QAA3B1hC,EAAKT,KAAKqiC,mBAAgC,IAAP5hC,EAAgBA,EAAK,IAF9G,CAKA,QAAwBoB,IAApB7B,KAAKgjC,WAA0B,CAC/B,MAAM/hB,EAAQ7c,GAAcpE,KAAKuE,QAAQ87B,KAAKpf,OAC9CjhB,KAAKgjC,WAAc,IAAO/hB,EAASjhB,KAAKwT,UAAUgC,OAAO5D,cAEzD5R,KAAK4iC,WAAa,GAAK5iC,KAAK6iC,YAC5B7iC,KAAKijC,gBAGb,SACI,MAAMlU,EAAkB/uB,KAAKoiC,iBAC7BpiC,KAAKmF,SACD4pB,GAAmBvlB,GAAculB,EAAiB/uB,KAAKwT,UAAU8H,OAAOvV,KAAM,EAAOP,QAC/EupB,EACA/uB,KAAKw+B,eAEnB,OAAO/qB,GACH,IAAIhT,EAAI0F,EAAI/G,EACRY,KAAKq2B,UAGLr2B,KAAKyiC,cACLziC,KAAKyiC,aAAc,EACnBziC,KAAKmiC,mBAAiD,QAA3B1hC,EAAKT,KAAKqiC,mBAAgC,IAAP5hC,EAAgBA,EAAK,EACnFT,KAAKkiC,kBAA+C,QAA1B/7B,EAAKnG,KAAKgjC,kBAA+B,IAAP78B,EAAgBA,EAAK,GAEhFnG,KAAK0iC,uBACN1iC,KAAK0iC,sBAAuB,EAC5B1iC,KAAKkjC,cAAcljC,KAAKuE,QAAQs9B,kBAEbhgC,IAAnB7B,KAAKmjC,YACLnjC,KAAKiiC,kBAAoBxuB,EAAMrQ,MAC3BpD,KAAKiiC,kBAAoBjiC,KAAKmjC,YAC9BnjC,KAAK4gB,aACoB/e,IAArB7B,KAAKqiC,oBACEriC,KAAKqiC,YAEXriC,KAAK6iC,WACN7iC,KAAK4iC,aAEL5iC,KAAK4iC,WAAa,GAAK5iC,KAAK6iC,WAC5B7iC,KAAKmF,SAAWnF,KAAKw+B,eACrBx+B,KAAKqiC,YAAqF,KAAlC,QAAlCjjC,EAAKY,KAAKuE,QAAQq9B,KAAK3gB,aAA0B,IAAP7hB,EAAgBA,EAAK,GAAaY,KAAKwT,UAAUgC,OAAO5D,cAGxH5R,KAAKkkB,UAETlkB,KAAKiiC,kBAAoBjiC,KAAKmjC,iBACvBnjC,KAAKmjC,iBAGKthC,IAArB7B,KAAKqiC,cACLriC,KAAKmiC,oBAAsB1uB,EAAMrQ,MAC7BpD,KAAKmiC,oBAAsBniC,KAAKqiC,cAChCriC,KAAKslB,QAAQ8O,cAAc,cAAe,CACtC5gB,UAAWxT,KAAKwT,YAEpBxT,KAAK8gB,OACL9gB,KAAKmiC,oBAAsBniC,KAAKmiC,0BACzBniC,KAAKqiC,mBAGIxgC,IAApB7B,KAAKgjC,aACLhjC,KAAKkiC,mBAAqBzuB,EAAMrQ,MAC5BpD,KAAKkiC,mBAAqBliC,KAAKgjC,aAC/BhjC,KAAKojC,OACLpjC,KAAKkiC,mBAAqBliC,KAAKgjC,cAI3C,eACI,OAAO38B,GAAmC,CACtCN,KAAM/F,KAAKwT,UAAU8H,OAAOvV,KAC5BZ,SAAUnF,KAAKuE,QAAQY,WAG/B,UACInF,KAAKgiC,SAASqB,cAAcrjC,MAC5BA,KAAKslB,QAAQ8O,cAAc,mBAAoB,CAC3C5gB,UAAWxT,KAAKwT,UAChBlV,KAAM,CACFwkC,QAAS9iC,QAIrB,OACI,GAAIA,KAAKq2B,QACL,OAEJ,MAAMpC,EAAW7vB,GAAcpE,KAAKuE,QAAQ87B,KAAKpM,UACjDj0B,KAAKkjC,cAAcjP,GAEvB,cAAcA,GACV,IAAIxzB,EAAI0F,EAAI/G,EACZ,MAAM+F,EAAWnF,KAAKwL,cAAezF,EAAO/F,KAAKsjC,UAAWC,EAAyBn2B,GAAyBpN,KAAK2iC,mBACnH,IAAK,IAAI/O,EAAI,EAAGA,EAAIK,EAAUL,IAAK,CAC/B,MAAM/F,EAAmBzjB,GAAW,GAAIm5B,GACxC,GAAIvjC,KAAK+hC,WAAY,CACjB,MAAMyB,EAAkD,QAAlC/iC,EAAKT,KAAKuE,QAAQw9B,kBAA+B,IAAPthC,OAAgB,EAASA,EAAGgR,UACxF+xB,IACAxjC,KAAK+hC,WAAWtyB,EAAIzP,KAAK8R,kBAAkB0xB,EAAa/zB,EAAGzP,KAAK+hC,WAAWtyB,EAAG,KAC9EzP,KAAK+hC,WAAWpyB,EAAI3P,KAAK8R,kBAAkB0xB,EAAa7zB,EAAG3P,KAAK+hC,WAAWpyB,EAAG,KAC9E3P,KAAK+hC,WAAWryB,EAAI1P,KAAK8R,kBAAkB0xB,EAAa9zB,EAAG1P,KAAK+hC,WAAWryB,EAAG,MAE7Eme,EAAiBhf,MAMlBgf,EAAiBhf,MAAMzL,MAAQpD,KAAK+hC,WALpClU,EAAiBhf,MAAQ,CACrBzL,MAAOpD,KAAK+hC,YAOxB,IAAK58B,EACD,OAEJ,MAAMs+B,EAA4H,QAA/GrkC,EAA4B,QAAtB+G,EAAKnG,KAAKsiC,cAA2B,IAAPn8B,OAAgB,EAASA,EAAGu9B,eAAev+B,EAAUY,EAAM/F,KAAK4U,aAA0B,IAAPxV,EAAgBA,EAAK+F,EAC/JnF,KAAKwT,UAAUqE,UAAUqb,YAAYuQ,EAAW5V,IAGxD,eACI,IAAIptB,EACJ,GAAIT,KAAKq2B,QACL,OAEJ,MAAMpS,EAAwC,QAA5BxjB,EAAKT,KAAKuE,QAAQq9B,YAAyB,IAAPnhC,OAAgB,EAASA,EAAGwjB,SAC9EjkB,KAAKwT,UAAUgC,OAAO5D,eACrB5R,KAAK4iC,WAAa,GAAK5iC,KAAK6iC,iBAChBhhC,IAAboiB,GACAA,EAAW,IACXjkB,KAAKmjC,UAAuB,IAAXlf,GAGzB,kBAAkBxS,EAAWkyB,EAAWC,GACpC,IAAInjC,EACJ,MAAM+S,EAAYxT,KAAKwT,UACvB,IAAK/B,EAAUjN,OACX,OAAOm/B,EAEX,MAAME,EAAc7/B,EAAcyN,EAAU/H,QAASuX,EAAQ7c,GAAcpE,KAAKuE,QAAQ87B,KAAKpf,OAAQ6iB,EAAc,IAAO7iB,EAASzN,EAAUgC,OAAO5D,aAAcmyB,EAAa3/B,GAAyC,QAA1B3D,EAAKgR,EAAUQ,aAA0B,IAAPxR,EAAgBA,EAAK,GACrP,OAAQkjC,EAAaI,EAAavwB,EAAUmQ,SAAYmgB,EAA2B,IAAdD,GAAqBD,GC3P3F,MAAM,GACT,YAAYve,EAAQ7R,GAChBxT,KAAKwT,UAAYA,EACjBxT,KAAKslB,QAAUD,EACfrlB,KAAK6I,MAAQ,GACb7I,KAAKgiC,SAAW,GAChBhiC,KAAKgkC,sBAAwB,CACzB/gC,OAAQ,CACJ+iB,MAAO,EACPxhB,QAAQ,GAEZpB,MAAO,IAEXoQ,EAAUywB,WAAcrE,QAA4B/9B,IAAd+9B,GAAgD,kBAAdA,EAClE5/B,KAAK6I,MAAM+2B,GAAa,GACxB5/B,KAAK6I,MAAMwE,KAAMzF,GAAMA,EAAE3J,OAAS2hC,GACxCpsB,EAAU0wB,WAAa,CAAC3/B,EAASY,IAAanF,KAAKkkC,WAAW3/B,EAASY,GACvEqO,EAAU6vB,cAAiBzD,IACvB,MAAMkD,EAAUtvB,EAAUywB,WAAWrE,GACjCkD,GACA9iC,KAAKqjC,cAAcP,IAG3BtvB,EAAU2wB,YAAevE,IACrB,MAAMkD,EAAUtvB,EAAUywB,WAAWrE,GACjCkD,GACAA,EAAQsB,gBAGhB5wB,EAAU6wB,aAAgBzE,IACtB,MAAMkD,EAAUtvB,EAAUywB,WAAWrE,GACjCkD,GACAA,EAAQwB,iBAIpB,WAAW//B,EAASY,GAChB,MAAMo/B,EAAiB,IAAI,GAC3BA,EAAep7B,KAAK5E,GACpB,MAAMu+B,EAAU,IAAI,GAAgB9iC,KAAKslB,QAAStlB,KAAMA,KAAKwT,UAAW+wB,EAAgBp/B,GAExF,OADAnF,KAAK6I,MAAMhI,KAAKiiC,GACTA,EAEX,gBAAgBh4B,GACZ,MAAMy5B,EAAiBvkC,KAAKgiC,SAAUwC,EAAexkC,KAAKgkC,sBAC1D,GAAa,YAATl5B,EAAoB,CACpB,IAAI25B,EACJ,GAAID,GAAgBA,EAAaphC,iBAAiBsE,MAC9C,GAAI88B,EAAaphC,MAAMjC,OAAS,GAAKqjC,EAAavhC,OAAOuB,OAAQ,CAC7DigC,EAAsB,GACtB,MAAMC,EAAc,GACpB,IAAK,IAAI9Q,EAAI,EAAGA,EAAI4Q,EAAavhC,OAAO+iB,MAAO4N,IAAK,CAChD,MAAMxyB,EAAMgI,GAAiBo7B,EAAaphC,OACtCshC,EAAYC,SAASvjC,IAAQsjC,EAAYvjC,OAASqjC,EAAaphC,MAAMjC,OACrEyyB,KAGJ8Q,EAAY7jC,KAAKO,GACjBqjC,EAAoB5jC,KAAKwI,GAAcm7B,EAAaphC,MAAOhC,WAI/DqjC,EAAsBD,EAAaphC,WAIvCqhC,EAAuC,OAAjBD,QAA0C,IAAjBA,OAA0B,EAASA,EAAaphC,MAEnG,MAAMwhC,EAA0C,OAAxBH,QAAwD,IAAxBA,EAAiCA,EAAsBF,EAAgBM,EAAY7kC,KAAKwT,UAAU8L,cAAcC,MAAME,cAC9KlY,GAA0Bq9B,EAAkB9B,IACxC9iC,KAAKkkC,WAAWpB,EAAS+B,MAIrC,aAGI,GAFA7kC,KAAKgiC,SAAWhiC,KAAKwT,UAAUkE,cAAcsqB,SAC7ChiC,KAAKgkC,sBAAwBhkC,KAAKwT,UAAUkE,cAAc4H,cAAcqG,MAAMqc,SAC1EhiC,KAAKgiC,oBAAoBt6B,MACzB,IAAK,MAAM68B,KAAkBvkC,KAAKgiC,SAC9BhiC,KAAKkkC,WAAWK,QAIpBvkC,KAAKkkC,WAAWlkC,KAAKgiC,UAG7B,QACI,IAAK,MAAMc,KAAW9iC,KAAK6I,MACvBi6B,EAAQliB,QAGhB,OACI,IAAK,MAAMkiB,KAAW9iC,KAAK6I,MACvBi6B,EAAQhiB,OAGhB,cAAcgiB,GACV,MAAMx5B,EAAQtJ,KAAK6I,MAAMxH,QAAQyhC,GAC7Bx5B,GAAS,GACTtJ,KAAK6I,MAAMvH,OAAOgI,EAAO,GAGjC,SACI,IAAK,MAAMw5B,KAAW9iC,KAAK6I,MACvBi6B,EAAQppB,SAGhB,OACI1Z,KAAK6I,MAAQ,GAEjB,OAAO4K,GACH,IAAK,MAAMqvB,KAAW9iC,KAAK6I,MACvBi6B,EAAQvP,OAAO9f,ICnH3B,MAAM,GAAS,IAAIlT,IACZ,MAAMukC,GACT,YAAYzf,GACRrlB,KAAKslB,QAAUD,EAEnB,SAASpnB,EAAMoX,GACNrV,KAAKwiC,SAASvkC,IACf,GAAO2C,IAAI3C,EAAMoX,GAGzB,SAASpX,GACL,OAAO,GAAO0C,IAAI1C,GAEtB,qBACI,OAAO,GAAO45B,QCbtB,SAASkN,GAAuB5/B,EAAUuE,GACtC,OAAOvE,EAAWuE,GAAUrG,IAAc,IAEvC,MAAM,GACT,eAAe8B,EAAUY,EAAM6O,GAC3B,GAAIA,EACA,MAAO,CACHjT,EAAGojC,GAAuB5/B,EAASxD,EAAGoE,EAAKC,OAC3CvE,EAAGsjC,GAAuB5/B,EAAS1D,EAAGsE,EAAKE,SAG9C,CACD,MAAM++B,EAAQj/B,EAAKC,MAAQ,EAAGi/B,EAAQl/B,EAAKE,OAAS,EAAGi/B,EAAOljC,KAAK+B,MAAoB,EAAdV,KAAkBd,EAA0B,GAArBc,IAAc,IAC9G,OAAQ6hC,GACJ,KAAK,EACD,MAAO,CACHvjC,EAAGwD,EAASxD,EAAIY,EAAIyiC,EACpBvjC,EAAG0D,EAAS1D,EAAIwjC,GAExB,KAAK,EACD,MAAO,CACHtjC,EAAGwD,EAASxD,EAAIqjC,EAChBvjC,EAAG0D,EAAS1D,EAAIc,EAAI0iC,GAE5B,KAAK,EACD,MAAO,CACHtjC,EAAGwD,EAASxD,EAAIY,EAAIyiC,EACpBvjC,EAAG0D,EAAS1D,EAAIwjC,GAExB,KAAK,EACL,QACI,MAAO,CACHtjC,EAAGwD,EAASxD,EAAIqjC,EAChBvjC,EAAG0D,EAAS1D,EAAIc,EAAI0iC,MC5B5C,MAAM,GACF,YAAY5f,GACRrlB,KAAKslB,QAAUD,EACfrlB,KAAKssB,GAAK,WAEd,UAAU9Y,GACN,OAAO,IAAI,GAASxT,KAAKslB,QAAS9R,GAEtC,YAAYjP,EAASjC,GACjB,IAAI7B,EAAI0F,EAAI/G,EAAIgH,EAAI5G,EAAI+T,EACxB,IAAKvT,KAAKw8B,YAAYj4B,KAAavE,KAAKw8B,YAAYl6B,GAChD,QAEW,OAAXA,QAA8B,IAAXA,OAAoB,EAASA,EAAO0/B,YACvDz9B,EAAQy9B,SAAWz6B,GAA0BjF,EAAO0/B,SAAWc,IAC3D,MAAM5d,EAAM,IAAI,GAEhB,OADAA,EAAI/b,KAAK25B,GACF5d,KAGf,MAAM8e,EAA6J,QAApI79B,EAAqF,QAA/E1F,EAAgB,OAAX6B,QAA8B,IAAXA,OAAoB,EAASA,EAAOgd,qBAAkC,IAAP7e,OAAgB,EAASA,EAAGklB,aAA0B,IAAPxf,OAAgB,EAASA,EAAG67B,SACvM,GAAIgC,EACA,GAAIA,aAAiCt8B,MACjCnD,EAAQ+a,cAAcqG,MAAMqc,SAAW,CACnC/+B,OAAQ,CACJ+iB,MAAO,EACPxhB,QAAQ,GAEZpB,MAAO4gC,EAAsBp5B,IAAK+E,IAC9B,MAAMuV,EAAM,IAAI,GAEhB,OADAA,EAAI/b,KAAKwG,GACFuV,SAId,CACD,MAAMigB,EAAcnB,EACpB,QAA0BniC,IAAtBsjC,EAAY/hC,MACZ,GAAI+hC,EAAY/hC,iBAAiBsE,MAC7BnD,EAAQ+a,cAAcqG,MAAMqc,SAAW,CACnC/+B,OAAQ,CACJ+iB,MAA2C,QAAnC5mB,EAAK+lC,EAAYliC,OAAO+iB,aAA0B,IAAP5mB,EAAgBA,EAAK,EACxEoF,OAA6C,QAApC4B,EAAK++B,EAAYliC,OAAOuB,cAA2B,IAAP4B,GAAgBA,GAEzEhD,MAAO+hC,EAAY/hC,MAAMwH,IAAK+E,IAC1B,MAAMuV,EAAM,IAAI,GAEhB,OADAA,EAAI/b,KAAKwG,GACFuV,SAId,CACD,MAAMA,EAAM,IAAI,GAChBA,EAAI/b,KAAKg8B,EAAY/hC,OACrBmB,EAAQ+a,cAAcqG,MAAMqc,SAAW,CACnC/+B,OAAQ,CACJ+iB,MAA2C,QAAnCxmB,EAAK2lC,EAAYliC,OAAO+iB,aAA0B,IAAPxmB,EAAgBA,EAAK,EACxEgF,OAA6C,QAApC+O,EAAK4xB,EAAYliC,OAAOuB,cAA2B,IAAP+O,GAAgBA,GAEzEnQ,MAAO8hB,OAId,CACD,MAAMqf,EAAkBhgC,EAAQ+a,cAAcqG,MAAMqc,SAAW,CAC3D/+B,OAAQ,CACJ+iB,MAAO,EACPxhB,QAAQ,GAEZpB,MAAO,IAAI,IAEfmhC,EAAenhC,MAAM+F,KAAK66B,KAK1C,YAAYz/B,GACR,IAAI9D,EAAI0F,EAAI/G,EACZ,IAAKmF,EACD,OAAO,EAEX,MAAMy9B,EAAWz9B,EAAQy9B,SACzB,OAASA,aAAoBt6B,SAAWs6B,EAAS7gC,aAChCU,IAAbmgC,MACkJ,QAA7I5iC,EAA4F,QAAtF+G,EAAsC,QAAhC1F,EAAK8D,EAAQ+a,qBAAkC,IAAP7e,OAAgB,EAASA,EAAGqf,cAA2B,IAAP3Z,OAAgB,EAASA,EAAG0Z,eAA4B,IAAPzgB,OAAgB,EAASA,EAAG0L,OAClLlC,GAAU,UAAWrE,EAAQ+a,cAAcQ,OAAOD,QAAQ/U,OAGnEhC,eAAes8B,GAAmB/f,GAChCA,EAAOkd,sBACRld,EAAOkd,oBAAsB,IAAIuC,GAAazf,IAE7CA,EAAOggB,kBACRhgB,EAAOggB,gBAAkB,CAACpnC,EAAMmX,KAC5B,IAAI3U,EACkC,QAArCA,EAAK4kB,EAAOkd,2BAAwC,IAAP9hC,GAAyBA,EAAG6kC,SAASrnC,EAAMmX,KAGjG,MAAMQ,EAAS,IAAI,GAAeyP,SAC5BA,EAAO+X,UAAUxnB,GACvByP,EAAOggB,gBAAgB,SAAU,IAAI,IACrChgB,EAAOggB,gBAAgB,SAAU,IAAI,IC1GlC,MAAM,GACT,cACIrlC,KAAKihB,MAAQ,EACbjhB,KAAKulC,aAAc,EACnBvlC,KAAKi0B,SAAW,EAEpB,KAAK31B,GACIA,SAGcuD,IAAfvD,EAAK2iB,QACLjhB,KAAKihB,MAAQ3iB,EAAK2iB,YAEApf,IAAlBvD,EAAK21B,WACLj0B,KAAKi0B,SAAW31B,EAAK21B,eAEFpyB,IAAnBvD,EAAKuZ,YACL7X,KAAK6X,UAAYzN,GAAW,GAAI9L,EAAKuZ,iBAEhBhW,IAArBvD,EAAKinC,cACLvlC,KAAKulC,YAAcjnC,EAAKinC,eCnB7B,MAAM,WAAmBzH,GAC5B,YAAYtqB,GACRzQ,MAAMyQ,GACNxT,KAAKm2B,OAAS,EAElB,SAEA,QAEA,eAAe1iB,GACX,IAAIhT,EAAI0F,EAAI/G,EAAIgH,EAChB,IAAKpG,KAAKwT,UAAUgC,OAAO5D,aACvB,OAEJ,MAAM4B,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cAAe8tB,EAAejhC,EAAQ+a,cAAcqG,MAAM/N,MAChH,IAAK4tB,EACD,OAEJ,MAAMC,EAAiC,IAArBD,EAAavkB,MAAgBjhB,KAAKwT,UAAUgC,OAAO5D,aAIrE,GAHI5R,KAAKm2B,OAASsP,IACdzlC,KAAKm2B,QAAU1iB,EAAMrQ,OAErBpD,KAAKm2B,OAASsP,EACd,OAEJ,IAAIC,GAAU,EACVF,EAAaD,cACT/xB,EAAU8L,cAAcC,MAAMpa,WAAanF,KAAK2lC,gBACI,QAAjDllC,EAAK+S,EAAU8L,cAAcC,MAAMpa,gBAA6B,IAAP1E,OAAgB,EAASA,EAAGkB,MAAsC,QAA7BwE,EAAKnG,KAAK2lC,qBAAkC,IAAPx/B,OAAgB,EAASA,EAAGxE,KAC3G,QAAjDvC,EAAKoU,EAAU8L,cAAcC,MAAMpa,gBAA6B,IAAP/F,OAAgB,EAASA,EAAGqC,MAAsC,QAA7B2E,EAAKpG,KAAK2lC,qBAAkC,IAAPv/B,OAAgB,EAASA,EAAG3E,MACrKikC,GAAU,GAGdlyB,EAAU8L,cAAcC,MAAMpa,SAC9BnF,KAAK2lC,cAAgB,CACjBhkC,EAAG6R,EAAU8L,cAAcC,MAAMpa,SAASxD,EAC1CF,EAAG+R,EAAU8L,cAAcC,MAAMpa,SAAS1D,UAIvCzB,KAAK2lC,cAEZD,GACAlyB,EAAUqE,UAAUhX,KAAK2kC,EAAavR,SAAUzgB,EAAU8L,cAAcC,MAAOimB,EAAa3tB,WAEhG7X,KAAKm2B,QAAUsP,EAEnB,UAAU34B,GACN,IAAIrM,EACJ,MAAM+S,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cAAe6H,EAAQ/L,EAAU8L,cAAcC,MAAOO,GAAgG,QAArFrf,EAAkB,OAAbqM,QAAkC,IAAbA,OAAsB,EAASA,EAASwS,qBAAkC,IAAP7e,EAAgBA,EAAK8D,EAAQ+a,eAAeQ,OAChQ,OAASP,EAAM8C,UAAY9C,EAAMxV,UAAYwV,EAAMpa,UAAYyD,GAAU,QAASkX,EAAOD,QAAQ/U,OAC5FyU,EAAMxV,UAAYwV,EAAMpa,UAAYyD,GAAU,QAASkX,EAAO+B,QAAQ/W,MAE/E,gBAAgBvG,KAAY+F,GACnB/F,EAAQqT,QACTrT,EAAQqT,MAAQ,IAAI,IAExB,IAAK,MAAMtV,KAAUgI,EACjB/F,EAAQqT,MAAMzO,KAAgB,OAAX7G,QAA8B,IAAXA,OAAoB,EAASA,EAAOsV,OAGlF,UC9DG9O,eAAe88B,GAA6BvgB,SACzCA,EAAOyX,cAAc,gBAAkBtpB,GAAc,IAAI,GAAWA,ICDvE,MAAM,GACT,cACIxT,KAAKwE,QAAS,EACdxE,KAAKoD,MAAQ,EAEjB,KAAK9E,GACIA,SAGeuD,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,aAEJ3C,IAAfvD,EAAK8E,QACLpD,KAAKoD,MAAQiB,GAAc/F,EAAK8E,UCZrC,MAAM,GACT,cACIpD,KAAK6lC,OAAS,IAAI,GAClB7lC,KAAKwE,QAAS,EACdxE,KAAK8lC,UAAY,IAAI,GACrB9lC,KAAK8K,KAAO,WACZ9K,KAAKiS,MAAQ,GAEjB,KAAK3T,GACIA,SAGkBuD,IAAnBvD,EAAKyuB,YACL/sB,KAAK+sB,UAAY1I,GAAatiB,OAAO/B,KAAK+sB,UAAWzuB,EAAKyuB,YAE9D/sB,KAAK6lC,OAAO18B,KAAK7K,EAAKunC,aACFhkC,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,QAEvBxE,KAAK8lC,UAAU38B,KAAK7K,EAAKwnC,gBACPjkC,IAAdvD,EAAKwM,OACL9K,KAAK8K,KAAOxM,EAAKwM,WAEFjJ,IAAfvD,EAAK2T,QACLjS,KAAKiS,MAAQ5N,GAAc/F,EAAK2T,UCxB5C,SAAS8zB,GAAWj5B,EAAU2G,GAC1B,MAAMqZ,EAAOhgB,EAASvI,QAAQuoB,KAC9B,IAAKhgB,EAASggB,QAAmB,OAATA,QAA0B,IAATA,OAAkB,EAASA,EAAKtoB,QACrE,OAEJ,MAAMyN,EAAQnF,EAASggB,KAAK7a,MAAQwB,EAAMxM,OAAQxD,EAAM,EAAIzB,KAAKqD,GACjEyH,EAASggB,KAAK5qB,OAAS+P,EACnBnF,EAASggB,KAAK5qB,MAAQuB,IACtBqJ,EAASggB,KAAK5qB,OAASuB,GAGxB,MAAM,GACT,mBAAmBqJ,GACf,IAAIrM,EACJ,MAAMqsB,GAAiC,QAAxBrsB,EAAKqM,EAASggB,YAAyB,IAAPrsB,OAAgB,EAASA,EAAG+D,SAAWsI,EAASggB,KAAMkZ,EAAiBlZ,GAAQA,EAAKjhB,WAAYo6B,EAAenZ,GAAQA,EAAKhhB,SAC3K,MAAO,CACHyC,EAAGy3B,EAAiBhkC,KAAKW,IAAImqB,EAAK5qB,YAASL,EAC3CuS,EAAG6xB,EAAejkC,KAAKY,IAAIkqB,EAAK5qB,YAASL,GAGjD,KAAKiL,GACD,MAAMo5B,EAAUp5B,EAASvI,QAAQuoB,KACjC,GAAgB,OAAZoZ,QAAgC,IAAZA,OAAqB,EAASA,EAAQ1hC,OAQ1D,GAPAsI,EAASggB,KAAO,CACZtoB,OAAQ0hC,EAAQ1hC,OAChBqH,WAA6B,eAAjBq6B,EAAQp7B,MAA0C,SAAjBo7B,EAAQp7B,KACrDgB,SAA2B,aAAjBo6B,EAAQp7B,MAAwC,SAAjBo7B,EAAQp7B,KACjD5I,MAAOmB,IAAcrB,KAAKqD,GAAK,EAC/B4M,MAAO7N,GAAc8hC,EAAQj0B,OAAS,KAEtCi0B,EAAQnZ,UACRjgB,EAASigB,UAAY5d,GAAgB+2B,EAAQnZ,gBAE5C,GAAImZ,EAAQL,OAAOrhC,QAAU0hC,EAAQJ,UAAUthC,OAAQ,CACxD,MAAM2hC,EAAY9iC,KAAe,GAAM,SAAW,YAClDyJ,EAASggB,KAAKE,MAAQ,CAClB3uB,KAAM8nC,EACN/iC,MAAOgB,GAA4B,WAAd+hC,EAAyBD,EAAQL,OAAOziC,MAAQ8iC,EAAQJ,UAAU1iC,aAGtF8iC,EAAQL,OAAOrhC,OACpBsI,EAASggB,KAAKE,MAAQ,CAClB3uB,KAAM,SACN+E,MAAOgB,GAAc8hC,EAAQL,OAAOziC,QAGnC8iC,EAAQJ,UAAUthC,SACvBsI,EAASggB,KAAKE,MAAQ,CAClB3uB,KAAM,YACN+E,MAAOgB,GAAc8hC,EAAQJ,UAAU1iC,cAK/C0J,EAASggB,KAAO,CACZtoB,QAAQ,EACRqH,YAAY,EACZC,UAAU,EACV5J,MAAO,EACP+P,MAAO,GAInB,UAAUnF,GACN,MAAMggB,EAAOhgB,EAASvI,QAAQuoB,KAC9B,OAAQhgB,EAAS0L,YAAc1L,EAASyL,aAAwB,OAATuU,QAA0B,IAATA,OAAkB,EAASA,EAAKtoB,QAE5G,YAAYD,KAAY+F,GACf/F,EAAQuoB,OACTvoB,EAAQuoB,KAAO,IAAI,IAEvB,IAAK,MAAMxqB,KAAUgI,EACjB/F,EAAQuoB,KAAK3jB,KAAgB,OAAX7G,QAA8B,IAAXA,OAAoB,EAASA,EAAOwqB,MAGjF,OAAOhgB,EAAU2G,GACRzT,KAAK8rB,UAAUhf,IAGpBi5B,GAAWj5B,EAAU2G,IChFtB3K,eAAes9B,GAAgB/gB,SAC5BA,EAAO6X,mBAAmB,OAAQ,IAAM,IAAI,ICFtD,MAAMmJ,GAAWhhB,IACb,MAAMihB,EAAc,CAAC/L,EAAOh2B,IACjB8gB,EAAOlc,KAAKoxB,EAAOh2B,GAE9B+hC,EAAYn9B,KAAO,CAACoxB,EAAOiD,EAAgBn1B,KACvCgd,EACKoY,SAASlD,EAAOiD,GAChB+I,KAAM/yB,IACHA,GACAnL,EAASmL,KAGZgzB,MAAM,KACPn+B,OAASxG,MAGjBykC,EAAYG,kBAAqBp+B,IAC7Bgd,EAAOohB,kBAAkBp+B,IAE7B,MAAMq+B,EAASrhB,EAAO0S,MACtB,MAAO,CAAEuO,cAAaI,WCnBnB,MAAM,GACT,cACI1mC,KAAKwE,QAAS,EACdxE,KAAKiS,MAAQ,EACbjS,KAAKkS,MAAQ,EACblS,KAAKoS,MAAO,EAEhB,KAAK9T,GACIA,SAGeuD,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,aAEJ3C,IAAfvD,EAAK2T,QACLjS,KAAKiS,MAAQ5N,GAAc/F,EAAK2T,aAEjBpQ,IAAfvD,EAAK4T,QACLlS,KAAKkS,MAAQ7N,GAAc/F,EAAK4T,aAElBrQ,IAAdvD,EAAK8T,OACLpS,KAAKoS,KAAO9T,EAAK8T,QCpBtB,MAAM,WAAe,GACxB,cACIrP,QACA/C,KAAKyR,UAAY,IAAI,GACrBzR,KAAKkF,UAAY,YACjBlF,KAAKknB,MAAO,EACZlnB,KAAKoD,MAAQ,EAEjB,KAAK9E,GACIA,IAGLyE,MAAMoG,KAAK7K,QACYuD,IAAnBvD,EAAK4G,YACLlF,KAAKkF,UAAY5G,EAAK4G,WAE1BlF,KAAKyR,UAAUtI,KAAK7K,EAAKmT,gBACP5P,IAAdvD,EAAK4oB,OACLlnB,KAAKknB,KAAO5oB,EAAK4oB,QClB7B,SAASyf,GAAY75B,EAAU2G,GAC3B,IAAIhT,EAAI0F,EACR,MAAMsG,EAASK,EAASL,OAAQm6B,EAAgB95B,EAASvI,QAAQkI,OACjE,IAAKA,IAAWm6B,EACZ,OAEJ,MAAMC,EAAkBD,EAAcn1B,UAAWQ,GAAoC,QAA1BxR,EAAKgM,EAAOzF,gBAA6B,IAAPvG,EAAgBA,EAAK,GAAKgT,EAAMxM,OAAQxD,EAAM,EAAIzB,KAAKqD,GAAI6M,EAAgC,QAAvB/L,EAAKsG,EAAOyF,aAA0B,IAAP/L,EAAgBA,EAAK,EACrN,GAAK0gC,EAAgBriC,OAArB,CAGA,OAAQiI,EAAO0F,QACX,IAAK,aACD1F,EAAOrJ,OAAS6O,EACZxF,EAAOrJ,MAAQK,IACfgJ,EAAOrJ,OAASK,GAEpB,MACJ,IAAK,aACL,QACIgJ,EAAOrJ,OAAS6O,EACZxF,EAAOrJ,MAAQ,IACfqJ,EAAOrJ,OAASK,GAEpB,MAEJgJ,EAAOzF,UAAsB,IAAVkL,IACnBzF,EAAOzF,UAAYkL,IAGpB,MAAM,GACT,YAAYsB,GACRxT,KAAKwT,UAAYA,EAErB,KAAK1G,GACD,MAAM85B,EAAgB95B,EAASvI,QAAQkI,OACvC,IAAKm6B,EACD,OAEJ95B,EAASL,OAAS,CACdjI,OAAQoiC,EAAcn1B,UAAUjN,OAChCpB,MAAQgB,GAAcwiC,EAAcxjC,OAASpB,KAAKqD,GAAM,KAE5DyH,EAASmH,aAAe2yB,EAAc1f,KACtC,IAAI4f,EAAkBF,EAAc1hC,UACpC,GAAwB,WAApB4hC,EAA8B,CAC9B,MAAMx9B,EAAQtH,KAAK+B,MAAoB,EAAdV,KACzByjC,EAAkBx9B,EAAQ,EAAI,oBAAsB,YAExD,OAAQw9B,GACJ,IAAK,oBACL,IAAK,mBACDh6B,EAASL,OAAO0F,OAAS,aACzB,MACJ,IAAK,YACDrF,EAASL,OAAO0F,OAAS,aACzB,MAER,MAAM00B,EAAkBD,EAAcn1B,UAClCo1B,EAAgBriC,SAChBsI,EAASL,OAAOyF,MAAQ,EAAI9N,GAAcyiC,EAAgB30B,OAC1DpF,EAASL,OAAOzF,SACX5C,GAAcyiC,EAAgB50B,OAAS,IAAOjS,KAAKwT,UAAUgC,OAAO5D,aACpEi1B,EAAgBz0B,OACjBtF,EAASL,OAAOzF,UAAY3D,MAGpCyJ,EAASkH,SAAWlH,EAASL,OAAOrJ,MAExC,UAAU0J,GACN,MAAML,EAASK,EAASvI,QAAQkI,OAChC,QAAKA,KAGGK,EAAS0L,YAAc1L,EAASyL,UAAY9L,EAAOgF,UAAUjN,SAAWiI,EAAOya,MAE3F,YAAY3iB,KAAY+F,GACf/F,EAAQkI,SACTlI,EAAQkI,OAAS,IAAI,IAEzB,IAAK,MAAMnK,KAAUgI,EACjB/F,EAAQkI,OAAOtD,KAAgB,OAAX7G,QAA8B,IAAXA,OAAoB,EAASA,EAAOmK,QAGnF,OAAOK,EAAU2G,GACb,IAAIhT,EAAI0F,EACHnG,KAAK8rB,UAAUhf,KAGpB65B,GAAY75B,EAAU2G,GACtB3G,EAASkH,SAA2F,QAA/E7N,EAAgC,QAA1B1F,EAAKqM,EAASL,cAA2B,IAAPhM,OAAgB,EAASA,EAAG2C,aAA0B,IAAP+C,EAAgBA,EAAK,IC1FlI2C,eAAei+B,GAAiB1hB,SAC7BA,EAAO6X,mBAAmB,SAAW1pB,GAAc,IAAI,GAAcA,ICDxE,SAASwzB,GAAcl6B,GAC1B,MAAMiiB,EAAkBjiB,EAASiiB,iBAAiB,GAAElqB,EAAE,GAAEC,GAAOJ,GAAaqqB,EAAiBjiB,EAAS3H,UAAW8hC,EAAUjlC,KAAKqvB,IAAIxsB,GAAKqiC,EAAUllC,KAAKqvB,IAAIvsB,GAAKqiC,EAAYr6B,EAAS0I,OAAOiY,YAAY5hB,WAAYu7B,EAAYt6B,EAAS0I,OAAOiY,YAAY3hB,SAC7P,GAAKq7B,GAAcC,EAGnB,IAAMD,GAAaF,GAAWE,GAAeC,GAAaF,GAAWE,KAAgBt6B,EAAS0gB,UAC1F1gB,EAAS0gB,YAAe2Z,GAAaF,EAAUE,KAAiBC,GAAaF,EAAUE,EACnFD,IACAr6B,EAAS9F,SAASrF,EAAImL,EAAS9F,SAASvF,EAAI,EAAIqL,EAAS9F,SAASrF,GAElEylC,IACAt6B,EAAS9F,SAASvF,EAAIqL,EAAS9F,SAASrF,EAAI,EAAImL,EAAS9F,SAASvF,QAGrE,KAAM0lC,GAAaF,EAAUE,MAAgBC,GAAaF,EAAUE,IAAct6B,EAAS0gB,UAC5F1gB,EAAS0gB,WAAY,OAEpB,GAAI1gB,EAAS0gB,UAAW,CACzB,MAAMzZ,EAAMjH,EAAS3H,SAAUkiC,EAAMv6B,EAAS9F,SAC1CmgC,IAAepzB,EAAIpS,EAAIotB,EAAgBptB,GAAK0lC,EAAI1lC,EAAI,GAAOoS,EAAIpS,EAAIotB,EAAgBptB,GAAK0lC,EAAI1lC,EAAI,KAChG0lC,EAAI1lC,IAAM0B,KAEV+jC,IAAerzB,EAAItS,EAAIstB,EAAgBttB,GAAK4lC,EAAI5lC,EAAI,GAAOsS,EAAItS,EAAIstB,EAAgBttB,GAAK4lC,EAAI5lC,EAAI,KAChG4lC,EAAI5lC,IAAM4B,MAIf,SAAS+jB,GAAKta,EAAU+oB,GAC3B,MAAMriB,EAAY1G,EAAS0G,UAC3B,IAAK1G,EAASsa,KACV,OAEJ,MAAMmY,EAAa,CACf59B,EAA+B,cAA5BmL,EAASsa,KAAKliB,UAA4BlD,KAAKW,IAAMX,KAAKY,IAC7DnB,EAA+B,cAA5BqL,EAASsa,KAAKliB,UAA4BlD,KAAKY,IAAMZ,KAAKW,KAEjEmK,EAAS3H,SAASxD,EAAImL,EAASsa,KAAKhiB,OAAOzD,EAAImL,EAASsa,KAAKzd,OAAS41B,EAAW59B,EAAEmL,EAASsa,KAAKllB,OACjG4K,EAAS3H,SAAS1D,EAAIqL,EAASsa,KAAKhiB,OAAO3D,EAAIqL,EAASsa,KAAKzd,OAAS41B,EAAW99B,EAAEqL,EAASsa,KAAKllB,OACjG4K,EAASsa,KAAKzd,QAAUmD,EAASsa,KAAKV,aACtC,MAAM4gB,EAAgBtlC,KAAKyB,IAAI+P,EAAU8H,OAAOvV,KAAKC,MAAOwN,EAAU8H,OAAOvV,KAAKE,QAC9E6G,EAASsa,KAAKzd,OAAS29B,EAAgB,GACvCx6B,EAASsa,KAAKzd,OAAS29B,EAAgB,EACvCx6B,EAASsa,KAAKV,eAAiB,GAE1B5Z,EAASsa,KAAKzd,OAAS,IAC5BmD,EAASsa,KAAKzd,OAAS,EACvBmD,EAASsa,KAAKV,eAAiB,GAEnC5Z,EAASsa,KAAKllB,OAAU2zB,EAAY,KAAQ,EAAI/oB,EAASsa,KAAKzd,OAAS29B,GAEpE,SAASC,GAAUz6B,EAAU2G,GAChC,IAAIhT,EACJ,MAAMotB,EAAmB/gB,EAASvI,QAAS4pB,EAAcN,EAAiB/V,KAAKoP,KAAMsgB,EAAcrZ,EAAY3pB,OAC/G,IAAKgjC,EACD,OAEJ,GAAI16B,EAASygB,cAAgBzgB,EAASshB,UAElC,YADAthB,EAASygB,cAAgB9Z,EAAMrQ,OAGnC,MAAM8jB,EAAyC,QAAjCzmB,EAAKqM,EAAS+f,qBAAkC,IAAPpsB,OAAgB,EAASA,EAAGy1B,SAASppB,GACxFoa,GACApa,EAAS9F,SAASy4B,MAAMvY,GAExBiH,EAAY7qB,QACZwJ,EAAS9F,SAASrF,EAAI2B,EAAMwJ,EAAS9F,SAASrF,GAAI,EAAG,GACrDmL,EAAS9F,SAASvF,EAAI6B,EAAMwJ,EAAS9F,SAASvF,GAAI,EAAG,IAEzDqL,EAASygB,cAAgBzgB,EAASshB,UAE/B,SAASqZ,GAAwB36B,GACpC,OAAOA,EAAS6f,KAAKD,QAAU5f,EAAS6f,KAAK1lB,OAAS,ECtEnD,MAAM,GACT,KAAK6F,GACD,IAAIrM,EACJ,MAAM+S,EAAY1G,EAAS0G,UAAWjP,EAAUuI,EAASvI,QAASmjC,EAAiBnjC,EAAQuT,KAAKmP,QAAS0gB,EAAcpjC,EAAQuT,KAAKsP,KAMpI,GALAta,EAASma,QAAU,CACfziB,OAAQkjC,EAAeljC,OACvBkiB,aAActiB,GAAcsjC,EAAehhB,cAC3CC,QAAS+gB,EAAe/gB,SAExBghB,EAAYnjC,OAAQ,CACpB,MAAMojC,EAA0C,QAA/BnnC,EAAKknC,EAAYxiC,gBAA6B,IAAP1E,EAAgBA,EAAK,CAAEkB,EAAG,GAAIF,EAAG,IAAMomC,EAAa,CACxGlmC,EAAIimC,EAAQjmC,EAAI,IAAO6R,EAAU8H,OAAOvV,KAAKC,MAC7CvE,EAAImmC,EAAQnmC,EAAI,IAAO+R,EAAU8H,OAAOvV,KAAKE,QAC9C8N,EAAMjH,EAAStB,cAAezG,EAAWC,GAAY+O,EAAK8zB,GAAaC,EAAmB1jC,GAAcujC,EAAYjhB,cACvH5Z,EAAS0I,OAAOsyB,iBAAmBA,EAAmBt0B,EAAUgC,OAAOC,WACvE3I,EAASsa,KAAO,CACZhiB,OAAQyiC,EACR3iC,UAAW4H,EAAS9F,SAASrF,GAAK,EAAI,YAAc,oBACpDO,MAAO4K,EAAS9F,SAAS9E,MACzByH,OAAQ5E,EACR2hB,aAAc5Z,EAAS0I,OAAOsyB,mBAI1C,UAAUh7B,GACN,OAAQA,EAAS0L,WAAa1L,EAASvI,QAAQuT,KAAKtT,OAExD,KAAKsI,EAAU2G,GACX,IAAIhT,EAAI0F,EAAI/G,EACRgH,EAAI5G,EACR,MAAMY,EAAkB0M,EAASvI,QAASksB,EAAcrwB,EAAgB0X,KACxE,IAAK2Y,EAAYjsB,OACb,OAEJ,MAAMgP,EAAY1G,EAAS0G,UAAWu0B,EAAaN,GAAwB36B,GAAWk7B,GAAyD,QAA3CvnC,GAAM2F,EAAK0G,EAAS0I,QAAQqgB,iBAA8B,IAAPp1B,EAAgBA,EAAM2F,EAAGyvB,UAAYzxB,GAAcqsB,EAAYxe,OAASuB,EAAUgC,OAAOC,YAC5OjC,EAAUgC,OAAO5D,aAAcgkB,EAAyD,QAA3CzvB,GAAM3G,EAAKsN,EAAS0I,QAAQogB,iBAA8B,IAAPzvB,EAAgBA,EAAM3G,EAAGo2B,UAAYxxB,GAAc0I,EAASvI,QAAQuT,KAAKkP,OAASxT,EAAUgC,OAAOC,WAAcwyB,EAAU/jC,GAAY9D,EAAgB2F,KAAK3C,OAASoQ,EAAUgC,OAAOC,WAAYipB,EAAajO,EAAY1qB,KAAO+G,EAASrB,YAAcw8B,EAAU,EAAGC,EAAcxJ,EAAaqJ,GAAct0B,EAAMxM,QAAU,GAAIkhC,EAAa,EAAGtS,EAAamS,EAAYE,EAAeC,EAC/d,GAAI1X,EAAYrJ,KAAK5iB,OACjB4iB,GAAKta,EAAU+oB,OAEd,CACD0R,GAAUz6B,EAAU2G,GACpB,MAAMi0B,EAAiB56B,EAASma,QAASmhB,GAAoC,OAAnBV,QAA8C,IAAnBA,OAA4B,EAASA,EAAeljC,SAAWkjC,EAAe/gB,SAAW,EAAI,GAC1J,OAAnB+gB,QAA8C,IAAnBA,OAA4B,EAASA,EAAeljC,SAAWqxB,IAC3F/oB,EAAS9F,SAASvF,GACb2mC,GAAiBV,EAAehhB,aAAejT,EAAMxM,SAAY,GAAK4uB,IAE3ED,GAAaC,IACb/oB,EAAS9F,SAASrF,GAAMi0B,EAAYniB,EAAMxM,QAAW,GAAK4uB,IAE9D,MAAM3jB,EAAQpF,EAASwiB,UACV,GAATpd,GACApF,EAAS9F,SAASqhC,OAAOn2B,GAE7B,MAAMlL,EAAW8F,EAAS9F,SAASshC,KAAKzS,GAAYjP,EAA+C,QAAnCxnB,EAAK0N,EAAS0I,OAAOoR,gBAA6B,IAAPxnB,EAAgBA,EAAKoU,EAAUgC,OAAOoR,UACzH,OAAnB8gB,QAA8C,IAAnBA,OAA4B,EAASA,EAAeljC,SAChFoiB,EAAW,KACR8gB,EAAe/gB,SAAW3f,EAASvF,GAAK,GAAKuF,EAASvF,GAAKmlB,GACzD8gB,EAAe/gB,SAAW3f,EAASvF,GAAK,GAAKuF,EAASvF,IAAMmlB,KACjE5f,EAASvF,EAAI2mC,EAAgBxhB,EACzBiP,IACA/oB,EAAS9F,SAASvF,EAAIuF,EAASvF,EAAIo0B,IAG3C,MAAM/c,EAAgBhM,EAASvI,QAAQwU,OAAQwvB,GAAmB,EAAIz7B,EAASmM,eAAiBH,EAAcyQ,aACvF,GAAnBgf,GACAvhC,EAASqhC,OAAOE,GAEpBz7B,EAAS3H,SAASs6B,MAAMz4B,GACpBypB,EAAYnJ,UACZxa,EAAS3H,SAASxD,GAAKK,KAAKY,IAAIkK,EAAS3H,SAASxD,EAAIK,KAAKW,IAAImK,EAAS3H,SAAS1D,IACjFqL,EAAS3H,SAAS1D,GAAKO,KAAKW,IAAImK,EAAS3H,SAAS1D,EAAIO,KAAKY,IAAIkK,EAAS3H,SAASxD,KAGzFqlC,GAAcl6B,IC1EfhE,eAAe0/B,GAAcnjB,GAChCA,EAAOojB,SAAS,OAAQ,IAAM,IAAI,ICF/B,MAAMC,GACT,KAAKp2B,EAASxF,EAAUnD,GACpB2I,EAAQysB,IAAI,EAAG,EAAGp1B,EAAQ,EAAa,EAAV3H,KAAKqD,IAAQ,GAE9C,gBACI,OAAO,ICJRyD,eAAe6/B,GAAgBtjB,SAC5BA,EAAOigB,SAAS,SAAU,IAAIoD,ICDxC,SAASE,GAAiBn1B,EAAOrQ,EAAOylC,EAAgBplC,EAAKqlC,GACzD,IAAIroC,EAAI0F,EACR,MAAM4L,EAAa3O,EACnB,IAAK2O,IAAe82B,EAAerkC,OAC/B,OAEJ,MAAMkF,EAAS1F,EAAc6kC,EAAen/B,QAAS1C,GAAsC,QAAzBvG,EAAK2C,EAAM4D,gBAA6B,IAAPvG,EAAgBA,EAAK,GAAKgT,EAAMxM,OAAkB,IAATyC,EAAcwI,EAA+B,QAAtB/L,EAAK/C,EAAM8O,aAA0B,IAAP/L,EAAgBA,EAAK,EACjN2iC,GAAkC,eAAtB/2B,EAAWI,QAQxBJ,EAAW3O,OAAS4D,EAChB+K,EAAW3O,MAAQ,IACnB2O,EAAWI,OAAS,aACpBJ,EAAW3O,OAAS2O,EAAW3O,SAVnC2O,EAAW3O,OAAS4D,EAChB8hC,GAAY/2B,EAAW3O,MAAQK,IAC/BsO,EAAWI,OAAS,aACpBJ,EAAW3O,OAAS2O,EAAW3O,MAAQK,IAU3CsO,EAAW/K,UAAsB,IAAVkL,IACvBH,EAAW/K,UAAYkL,GAEvBH,EAAW3O,MAAQK,IACnBsO,EAAW3O,OAASK,GAG5B,SAASslC,GAAYj8B,EAAU2G,GAC3B,IAAIhT,EAAI0F,EAAI/G,EACZ,MAAMuS,EAAmB7E,EAASvI,QAAQsK,MAAM4C,eAC0B5P,KAA3C,QAAzBpB,EAAKqM,EAAS+B,aAA0B,IAAPpO,OAAgB,EAASA,EAAGgP,IAC/Dm5B,GAAiBn1B,EAAO3G,EAAS+B,MAAMY,EAAGkC,EAAiBlC,EAAG,KAAK,QAEG5N,KAA3C,QAAzBsE,EAAK2G,EAAS+B,aAA0B,IAAP1I,OAAgB,EAASA,EAAGwJ,IAC/Di5B,GAAiBn1B,EAAO3G,EAAS+B,MAAMc,EAAGgC,EAAiBhC,EAAG,KAAK,QAEG9N,KAA3C,QAAzBzC,EAAK0N,EAAS+B,aAA0B,IAAPzP,OAAgB,EAASA,EAAGsQ,IAC/Dk5B,GAAiBn1B,EAAO3G,EAAS+B,MAAMa,EAAGiC,EAAiBjC,EAAG,KAAK,GAGpE,MAAM,GACT,YAAY8D,GACRxT,KAAKwT,UAAYA,EAErB,KAAK1G,GACD,MAAMqE,EAAWhC,GAAgBrC,EAASvI,QAAQsK,MAAO/B,EAASwf,GAAIxf,EAASvI,QAAQmlB,kBACnFvY,IACArE,EAAS+B,MAAQ6C,GAAuBP,EAAUrE,EAASvI,QAAQsK,MAAM4C,UAAWzR,KAAKwT,UAAUgC,OAAO5D,eAGlH,UAAU9E,GACN,IAAIrM,EAAI0F,EAAI/G,EACZ,MAAMuS,EAAmB7E,EAASvI,QAAQsK,MAAM4C,UAChD,OAAS3E,EAAS0L,YACb1L,EAASyL,gBACoE1W,KAAjD,QAAzBpB,EAAKqM,EAAS+B,aAA0B,IAAPpO,OAAgB,EAASA,EAAGgP,EAAErM,QAAwBuO,EAAiBlC,EAAEjL,aAC7B3C,KAAjD,QAAzBsE,EAAK2G,EAAS+B,aAA0B,IAAP1I,OAAgB,EAASA,EAAGwJ,EAAEvM,QAAwBuO,EAAiBhC,EAAEnL,aAChC3C,KAAjD,QAAzBzC,EAAK0N,EAAS+B,aAA0B,IAAPzP,OAAgB,EAASA,EAAGsQ,EAAEtM,QAAwBuO,EAAiBjC,EAAElL,QAEzH,OAAOsI,EAAU2G,GACbs1B,GAAYj8B,EAAU2G,IC7DvB3K,eAAekgC,GAAiB3jB,SAC7BA,EAAO6X,mBAAmB,QAAU1pB,GAAc,IAAI,GAAaA,ICFtE,MAAMy1B,GACT,cACIjpC,KAAK+E,SAAW,IAChB/E,KAAKikB,SAAW,GAChBjkB,KAAKkpC,OAAS,gBACdlpC,KAAKiH,OAAS,EACdjH,KAAK4mB,SAAW,GAChB5mB,KAAKiS,MAAQ,EAEjB,KAAK3T,GACIA,SAGiBuD,IAAlBvD,EAAKyG,WACL/E,KAAK+E,SAAWzG,EAAKyG,eAEHlD,IAAlBvD,EAAK2lB,WACLjkB,KAAKikB,SAAW3lB,EAAK2lB,eAELpiB,IAAhBvD,EAAK4qC,SACLlpC,KAAKkpC,OAAS5qC,EAAK4qC,aAEHrnC,IAAhBvD,EAAK2I,SACLjH,KAAKiH,OAAS3I,EAAK2I,aAEDpF,IAAlBvD,EAAKsoB,WACL5mB,KAAK4mB,SAAWtoB,EAAKsoB,eAEN/kB,IAAfvD,EAAK2T,QACLjS,KAAKiS,MAAQ3T,EAAK2T,SC3BvB,MAAM,WAAkB6rB,GAC3B,YAAYzY,EAAQ7R,GAChBzQ,MAAMyQ,GACNxT,KAAKslB,QAAUD,EACV7R,EAAUuT,UACXvT,EAAUuT,QAAU,CAAElP,UAAW,KAErC7X,KAAK+f,gBAAmBjV,IACpB,MAAMvG,EAAUvE,KAAKwT,UAAUkE,cAAeqP,EAAUxiB,EAAQ+a,cAAcqG,MAAMoB,QACpF,GAAKA,GAAoB,YAATjc,EAAhB,CAGK0I,EAAUuT,UACXvT,EAAUuT,QAAU,CAAElP,UAAW,KAErCrE,EAAUuT,QAAQ1E,UAAW,EAC7B7O,EAAUuT,QAAQf,MAAQ,EAC1B,IAAK,MAAMlZ,KAAY0G,EAAUuT,QAAQlP,UAChC7X,KAAK8rB,UAAUhf,IAGpBA,EAAS9F,SAASi4B,MAAMnyB,EAASsiB,iBAErC5b,EAAUuT,QAAQlP,UAAY,GAC9BrE,EAAUuT,QAAQoiB,QAAS,EAC3B7gC,WAAW,KACFkL,EAAUgF,YACNhF,EAAUuT,UACXvT,EAAUuT,QAAU,CAAElP,UAAW,KAErCrE,EAAUuT,QAAQ1E,UAAW,IAEf,IAAnB0E,EAAQ9C,YAGnB,SAEA,OACI,MAAMzQ,EAAYxT,KAAKwT,UAAWuT,EAAUvT,EAAUkE,cAAc4H,cAAcqG,MAAMoB,QACnFA,IAGLvT,EAAUgC,OAAO4zB,oBAAsBriB,EAAQhiB,SAAWyO,EAAUgC,OAAOC,YAE/E,iBACI,MAAMjC,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cAAe2xB,EAAkB71B,EAAU8L,cAAcnN,SAAWgE,GAAgB2J,EAASvb,EAAQ+a,cAAcQ,OAAQwpB,EAAexpB,EAAO+B,QAAQrd,OAAQ+kC,EAAYzpB,EAAO+B,QAAQ/W,KAAM0+B,EAAe1pB,EAAOD,QAAQrb,OAAQilC,EAAY3pB,EAAOD,QAAQ/U,KACrTu+B,GAAmBC,GAAgB1gC,GAAU,UAAW2gC,GACxDvpC,KAAK0pC,eAEAF,GAAgB5gC,GAAU,UAAW6gC,IAC1CzpC,KAAK2pC,eAGb,UAAU78B,GACN,IAAIrM,EACJ,MAAM+S,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cAAe6H,EAAQ/L,EAAU8L,cAAcC,MAAOO,GAAgG,QAArFrf,EAAkB,OAAbqM,QAAkC,IAAbA,OAAsB,EAASA,EAASwS,qBAAkC,IAAP7e,EAAgBA,EAAK8D,EAAQ+a,eAAeQ,OAChQ,KAAMP,EAAMpa,WAAa2a,EAAO+B,QAAQrd,WAAa+a,EAAME,gBAAkBK,EAAOD,QAAQrb,QACxF,OAAO,EAEX,MAAM+kC,EAAYzpB,EAAO+B,QAAQ/W,KAAM2+B,EAAY3pB,EAAOD,QAAQ/U,KAClE,OAAOlC,GAAU,UAAW2gC,IAAc3gC,GAAU,UAAW6gC,GAEnE,gBAAgBllC,KAAY+F,GACnB/F,EAAQwiB,UACTxiB,EAAQwiB,QAAU,IAAIkiB,IAE1B,IAAK,MAAM3mC,KAAUgI,EACjB/F,EAAQwiB,QAAQ5d,KAAgB,OAAX7G,QAA8B,IAAXA,OAAoB,EAASA,EAAOykB,SAGpF,SAEA,eACI,MAAMvT,EAAYxT,KAAKwT,UAavB,GAZKA,EAAUuT,UACXvT,EAAUuT,QAAU,CAAElP,UAAW,KAEhCrE,EAAUuT,QAAQoiB,SACd31B,EAAUuT,QAAQf,QACnBxS,EAAUuT,QAAQf,MAAQ,GAE9BxS,EAAUuT,QAAQf,QACdxS,EAAUuT,QAAQf,QAAUxS,EAAUqE,UAAUmO,QAChDxS,EAAUuT,QAAQoiB,QAAS,IAG/B31B,EAAUuT,QAAQ1E,SAAU,CAC5B,MAAM7C,EAAWhM,EAAU8L,cAAcC,MAAME,cAAemqB,EAAgBp2B,EAAUgC,OAAO4zB,oBAC/F,IAAKQ,GAAiBA,EAAgB,IAAMpqB,EACxC,OAEJxf,KAAK6pC,eAAerqB,EAAUoqB,EAAe,IAAI,GAAOpqB,EAAS7d,EAAG6d,EAAS/d,EAAGmoC,SAE5C,IAA/Bp2B,EAAUuT,QAAQ1E,WACvB7O,EAAUuT,QAAQlP,UAAY,IAItC,eACI,MAAMrE,EAAYxT,KAAKwT,UAAWgM,EAAWhM,EAAU8L,cAAcC,MAAMpa,SAAUykC,EAAgBp2B,EAAUgC,OAAO4zB,qBACjHQ,GAAiBA,EAAgB,IAAMpqB,GAG5Cxf,KAAK6pC,eAAerqB,EAAUoqB,EAAe,IAAI,GAAOpqB,EAAS7d,EAAG6d,EAAS/d,EAAGmoC,IAEpF,eAAezkC,EAAUykC,EAAe5hB,GACpC,MAAMxU,EAAYxT,KAAKwT,UAAWs2B,EAAiBt2B,EAAUkE,cAAc4H,cAAcqG,MAAMoB,QAC/F,IAAK+iB,EACD,OAEJ,MAAM3hC,EAAQqL,EAAUqE,UAAUkb,SAAS5qB,MAAM6f,EAAOzc,GAAMvL,KAAK8rB,UAAUvgB,IAC7E,IAAK,MAAMuB,KAAY3E,EAAO,CAC1B,MAAM,GAAEtD,EAAE,GAAEC,EAAE,SAAEC,GAAaL,GAAaoI,EAAS3H,SAAUA,GACvD6B,EAAW8iC,EAAe73B,MAAQ63B,EAAe7iC,OACjD8iC,EAAgBzmC,EAAMH,EAAU2mC,EAAeZ,OAAzB/lC,CAAiC,EAAI4B,EAAW6kC,GAAiB5iC,EAAU,EAAG8iC,EAAeljB,UACnHojB,EAAU,EAAOjoC,OAAoB,IAAbgD,EAAiBiC,EAAYnC,EAAKE,EAAYglC,EAA4B,IAAbhlC,EAAiBiC,EAAYlC,EAAKC,EAAYglC,GACzIj9B,EAAS3H,SAAS8kC,QAAQD,KCrH/BlhC,eAAeohC,GAA+B7kB,SAC3CA,EAAOyX,cAAc,kBAAoBtpB,GAAc,IAAI,GAAU6R,EAAQ7R,ICFhF,MAAM22B,GACT,cACInqC,KAAK+E,SAAW,IAEpB,KAAKzG,GACIA,QAGiBuD,IAAlBvD,EAAKyG,WACL/E,KAAK+E,SAAWzG,EAAKyG,WCP1B,MAAM,WAAgB+4B,GACzB,YAAYtqB,GACRzQ,MAAMyQ,GAEV,SAEA,OACI,MAAMA,EAAYxT,KAAKwT,UAAW5H,EAAS4H,EAAUkE,cAAc4H,cAAcqG,MAAM/Z,OAClFA,IAGL4H,EAAUgC,OAAO40B,mBAAqBx+B,EAAO7G,SAAWyO,EAAUgC,OAAOC,YAE7E,iBACI,MAAMjC,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cAAeoI,EAASvb,EAAQ+a,cAAcQ,OAAQupB,EAAkB71B,EAAU8L,cAAcnN,SAAWgE,GAAgBmzB,EAAexpB,EAAO+B,QAAQrd,OAAQ+kC,EAAYzpB,EAAO+B,QAAQ/W,KAAMC,EAAO+U,EAAOiF,MAClQskB,GAAmBC,GAAgB1gC,GAAU,SAAU2gC,GACvDvpC,KAAKqqC,qBAGLp/B,GAAe,SAAUF,EAAM,CAACvD,EAAU0D,IAAQlL,KAAKsqC,qBAAqB9iC,EAAU0D,IAG9F,UAAU4B,GACN,IAAIrM,EACJ,MAAM+S,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cAAe6H,EAAQ/L,EAAU8L,cAAcC,MAAOO,GAAgG,QAArFrf,EAAkB,OAAbqM,QAAkC,IAAbA,OAAsB,EAASA,EAASwS,qBAAkC,IAAP7e,EAAgBA,EAAK8D,EAAQ+a,eAAeQ,OAAQ/U,EAAO+U,EAAOiF,MACtR,OAASxF,EAAMpa,UAAY2a,EAAO+B,QAAQrd,QAAUoE,GAAU,SAAUkX,EAAO+B,QAAQ/W,OACnFD,GAAiB,SAAUE,GAEnC,gBAAgBxG,KAAY+F,GACnB/F,EAAQqH,SACTrH,EAAQqH,OAAS,IAAIu+B,IAEzB,IAAK,MAAM7nC,KAAUgI,EACjB/F,EAAQqH,OAAOzC,KAAgB,OAAX7G,QAA8B,IAAXA,OAAoB,EAASA,EAAOsJ,QAGnF,SAEA,cAAczG,EAAUwE,EAAQqe,GAC5B,MAAM7f,EAAQnI,KAAKwT,UAAUqE,UAAUkb,SAAS5qB,MAAM6f,EAAOzc,GAAMvL,KAAK8rB,UAAUvgB,IAClF,IAAK,MAAMuB,KAAY3E,EACf6f,aAAgB,GAChBjc,GAAaT,GAA6BwB,GAAW,CACjD3H,WACAwE,SACA+B,KAAO/B,GAAU,EAAI3H,KAAKqD,GAAM,EAChC2B,SAAU,EAAOxB,OACjByB,OAAQ,EAAOzB,SAGdwiB,aAAgB,IACrBnb,GAAWC,EAAUjD,GAAgB1E,EAAUwE,IAI3D,qBACI,MAAM6J,EAAYxT,KAAKwT,UAAWwI,EAAUxI,EAAUgC,OAAOC,WAAY80B,EAAY,GAAKvuB,EAASwD,EAAWhM,EAAU8L,cAAcC,MAAMpa,SAAUwE,EAAS6J,EAAUgC,OAAO40B,oBAC3KzgC,GAAUA,EAAS,IAAM6V,GAG9Bxf,KAAKwqC,cAAchrB,EAAU7V,EAAQ,IAAI,GAAO6V,EAAS7d,EAAG6d,EAAS/d,EAAGkI,EAAS4gC,IAErF,qBAAqB/iC,EAAU0D,GAC3B,MAAMsI,EAAYxT,KAAKwT,UAAWrL,EAAQJ,SAAS0iC,iBAAiBjjC,GAC/DW,EAAMhH,QAGXgH,EAAMpH,QAASlD,IACX,MAAM6sC,EAAO7sC,EAAMme,EAAUxI,EAAUgC,OAAOC,WAAY1B,EAAM,CAC5DpS,GAAI+oC,EAAKC,WAAaD,EAAK/uB,YAAc,GAAKK,EAC9Cva,GAAIipC,EAAKE,UAAYF,EAAKhvB,aAAe,GAAKM,GAC/CrS,EAAU+gC,EAAK/uB,YAAc,EAAKK,EAASuuB,EAAY,GAAKvuB,EAASgM,EAAoB,WAAb9c,EAAI7M,KAC7E,IAAI,GAAO0V,EAAIpS,EAAGoS,EAAItS,EAAGkI,EAAS4gC,GAClC,IAAI,GAAUG,EAAKC,WAAa3uB,EAAUuuB,EAAWG,EAAKE,UAAY5uB,EAAUuuB,EAAWG,EAAK/uB,YAAcK,EAAsB,EAAZuuB,EAAeG,EAAKhvB,aAAeM,EAAsB,EAAZuuB,GAC3KvqC,KAAKwqC,cAAcz2B,EAAKpK,EAAQqe,MC3ErClf,eAAe+hC,GAA8BxlB,SAC1CA,EAAOyX,cAAc,iBAAmBtpB,GAAc,IAAI,GAAQA,ICDrE,MAAM,GACT,cACIxT,KAAK+E,SAAW,IAChB/E,KAAKikB,SAAW,GAChBjkB,KAAK0D,KAAM,EAEf,KAAKpF,GACD,GAAKA,EAAL,CAeA,QAZsBuD,IAAlBvD,EAAKyG,WACL/E,KAAK+E,SAAWzG,EAAKyG,eAEHlD,IAAlBvD,EAAK2lB,WACLjkB,KAAKikB,SAAW3lB,EAAK2lB,eAERpiB,IAAbvD,EAAKoF,MACL1D,KAAK0D,IAAMpF,EAAKoF,UAEC7B,IAAjBvD,EAAK8R,UACLpQ,KAAKoQ,QAAU9R,EAAK8R,cAELvO,IAAfvD,EAAKuQ,MAAqB,CAC1B,MAAMkC,EAAc/Q,KAAK6O,iBAAiBnH,WAAQ7F,EAAY7B,KAAK6O,MACnE7O,KAAK6O,MAAQtH,GAA0BjJ,EAAKuQ,MAAQA,GACzCwV,GAAatiB,OAAOgP,EAAalC,SAG9BhN,IAAdvD,EAAKyH,OACL/F,KAAK+F,KAAOzH,EAAKyH,QC5BtB,MAAM,WAAkB,GAC3B,cACIhD,QACA/C,KAAKsH,UAAY,GAErB,UACI,OAAOC,GAA0BvH,KAAKsH,UAAYM,GAAMA,EAAEuG,QAAQ,IAAK,KAE3E,QAAQ/K,GACJpD,KAAKsH,UAAYC,GAA0BnE,EAAQwE,GAAM,IAAIA,GAEjE,KAAKtJ,GACDyE,MAAMoG,KAAK7K,GACNA,SAGYuD,IAAbvD,EAAKmmB,MACLzkB,KAAKykB,IAAMnmB,EAAKmmB,UAEG5iB,IAAnBvD,EAAKgJ,YACLtH,KAAKsH,UAAYhJ,EAAKgJ,aCnB3B,MAAM,WAAe,GACxB,KAAKhJ,GACDyE,MAAMoG,KAAK7K,GACNA,IAGL0B,KAAK+K,KAAOxD,GAA0BjJ,EAAKyM,KAAOG,IAC9C,MAAMga,EAAM,IAAI,GAEhB,OADAA,EAAI/b,KAAK+B,GACFga,MCVnB,SAAS4lB,GAAqBC,EAAeC,EAAWC,EAAczV,GAClE,GAAIwV,GAAaC,EAAc,CAC3B,MAAM7nC,EAAQ2nC,GAAiBC,EAAYC,GAAgBzV,EAC3D,OAAOlyB,EAAMF,EAAO2nC,EAAeC,GAElC,GAAIA,EAAYC,EAAc,CAC/B,MAAM7nC,EAAQ2nC,GAAiBE,EAAeD,GAAaxV,EAC3D,OAAOlyB,EAAMF,EAAO4nC,EAAWD,IAGhC,MAAM,WAAgBjN,GACzB,YAAYtqB,GACRzQ,MAAMyQ,GACDA,EAAU2F,SACX3F,EAAU2F,OAAS,IAEvBnZ,KAAK+f,gBAAmBjV,IACP,WAATA,IAGC0I,EAAU2F,SACX3F,EAAU2F,OAAS,IAEvB3F,EAAU2F,OAAOkJ,UAAW,IAGpC,MAAMvV,EAAU2G,EAAOmR,GACf9X,EAASqM,OAAOuT,UAAY9H,WAGzB9X,EAASqM,OAAOjO,WAChB4B,EAASqM,OAAO/I,eAChBtD,EAASqM,OAAOxP,cAChBmD,EAASqM,OAAOtK,OAE3B,OACI,MAAM2E,EAAYxT,KAAKwT,UAAW2F,EAAS3F,EAAUkE,cAAc4H,cAAcqG,MAAMxM,OAClFA,IAGL3F,EAAUgC,OAAO01B,mBAAqB/xB,EAAOpU,SAAWyO,EAAUgC,OAAOC,gBACrD5T,IAAhBsX,EAAOpT,OACPyN,EAAUgC,OAAO21B,eAAiBhyB,EAAOpT,KAAOyN,EAAUgC,OAAOC,aAGzE,eAAehC,GACX,MAAMlP,EAAUvE,KAAKwT,UAAUkE,cAAeoI,EAASvb,EAAQ+a,cAAcQ,OAAQ+B,EAAU/B,EAAO+B,QAAShC,EAAUC,EAAOD,QAASypB,EAAeznB,EAAQrd,OAAQ+kC,EAAY1nB,EAAQ/W,KAAM0+B,EAAe3pB,EAAQrb,OAAQilC,EAAY5pB,EAAQ/U,KAAMC,EAAO+U,EAAOiF,MACrQukB,GAAgB1gC,GAAU,SAAU2gC,GACpCvpC,KAAKorC,YAAY33B,GAEZ+1B,GAAgB5gC,GAAU,SAAU6gC,GACzCzpC,KAAKqrC,YAAY53B,GAGjBxI,GAAe,SAAUF,EAAM,CAACvD,EAAU0D,IAAQlL,KAAKsrC,oBAAoB73B,EAAOjM,EAAU0D,IAGpG,UAAU4B,GACN,IAAIrM,EACJ,MAAM+S,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cAAe6H,EAAQ/L,EAAU8L,cAAcC,MAAOO,GAAgG,QAArFrf,EAAkB,OAAbqM,QAAkC,IAAbA,OAAsB,EAASA,EAASwS,qBAAkC,IAAP7e,EAAgBA,EAAK8D,EAAQ+a,eAAeQ,OAAQ/U,EAAO+U,EAAOiF,MAAOwmB,EAAY1gC,GAAiB,SAAUE,GACpU,KAAMwgC,GAAczrB,EAAO+B,QAAQrd,QAAU+a,EAAMpa,UAAc2a,EAAOD,QAAQrb,QAAU+a,EAAME,eAC5F,OAAO,EAEX,MAAM8pB,EAAYzpB,EAAO+B,QAAQ/W,KAC3B2+B,EAAY3pB,EAAOD,QAAQ/U,KACjC,OAAOlC,GAAU,SAAU2gC,IAAc3gC,GAAU,SAAU6gC,IAAc8B,EAE/E,gBAAgBhnC,KAAY+F,GACnB/F,EAAQ4U,SACT5U,EAAQ4U,OAAS,IAAI,IAEzB,IAAK,MAAM7W,KAAUgI,EACjB/F,EAAQ4U,OAAOhQ,KAAgB,OAAX7G,QAA8B,IAAXA,OAAoB,EAASA,EAAO6W,QAGnF,MAAMrM,GACFA,EAASqM,OAAOuT,SAAU,EAE9B,YAAYjZ,GACR,IAAIhT,EAAI0F,EACR,MAAMqN,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cAAe8zB,EAAgBh4B,EAAU8L,cAAcC,MAAME,cAAetG,EAAS5U,EAAQ+a,cAAcqG,MAAMxM,OACvK,IAAKA,IAAWqyB,EACZ,OAECh4B,EAAU2F,SACX3F,EAAU2F,OAAS,IAEvB,MAAMpU,EAAWyO,EAAUgC,OAAO01B,mBAClC,IAAKnmC,GAAYA,EAAW,EACxB,OAEJ,MAAMoD,EAAQqL,EAAUqE,UAAUkb,SAASiE,YAAYwU,EAAezmC,EAAWwG,GAAMvL,KAAK8rB,UAAUvgB,IACtG,IAAK,MAAMuB,KAAY3E,EAAO,CAC1B,IAAKqL,EAAU2F,OAAOkJ,SAClB,SAEJvV,EAASqM,OAAOuT,SAAWlZ,EAAU2F,OAAOsyB,YAC5C,MAAM13B,EAAMjH,EAAStB,cAAekgC,EAAY1mC,GAAY+O,EAAKy3B,GAAgBG,IAAa,IAAIhsB,MAAOC,WAAapM,EAAU8L,cAAcC,MAAMG,WAAa,IAAM,IACnKisB,EAAYxyB,EAAO8K,WACnBzQ,EAAU2F,OAAOsyB,aAAc,GAE/BE,EAA8B,EAAlBxyB,EAAO8K,WACnBzQ,EAAU2F,OAAOkJ,UAAW,EAC5B7O,EAAU2F,OAAOsyB,aAAc,GAEnC,MAAMG,EAAW,CACbC,UAAW,CACPC,SAAUt4B,EAAUgC,OAAO21B,eAC3B/nC,MAAO0J,EAASqM,OAAOxP,QAE3BoiC,aAAc,CACVD,SAAU5nC,GAAY4I,EAASvI,QAAQwB,KAAK3C,OAASoQ,EAAUgC,OAAOC,WACtErS,MAAO0J,EAAS/G,KAAK3C,OAEzB/E,KAAM,QAEV2B,KAAKgsC,QAAQl/B,EAAU4+B,EAAWC,EAAWC,GAC7C,MAAMK,EAAc,CAChBJ,UAAW,CACPC,SAAU3yB,EAAO/I,QACjBhN,MAAO0J,EAASqM,OAAO/I,SAE3B27B,aAAc,CACVD,SAAU5nC,GAAY4I,EAASvI,QAAQ6L,QAAQhN,OAC/CA,MAAwF,QAAhF+C,EAAiC,QAA3B1F,EAAKqM,EAASsD,eAA4B,IAAP3P,OAAgB,EAASA,EAAG2C,aAA0B,IAAP+C,EAAgBA,EAAK,GAEzH9H,KAAM,WAEV2B,KAAKgsC,QAAQl/B,EAAU4+B,EAAWC,EAAWM,GACxCz4B,EAAU2F,OAAOsyB,mBASX3+B,EAASqM,OAAOtK,MARnB68B,GAAa3mC,EACb/E,KAAKksC,iBAAiBp/B,EAAU4+B,UAGzB5+B,EAASqM,OAAOtK,OAQvC,YAAY4E,GACR,MAAMD,EAAYxT,KAAKwT,UAAWgM,EAAWhM,EAAU8L,cAAcC,MAAMpa,SAAUJ,EAAWyO,EAAUgC,OAAO01B,mBACjH,IAAKnmC,GAAYA,EAAW,QAAkBlD,IAAb2d,EAC7B,OAEJ,MAAMrX,EAAQqL,EAAUqE,UAAUkb,SAASiE,YAAYxX,EAAUza,EAAWwG,GAAMvL,KAAK8rB,UAAUvgB,IACjG,IAAK,MAAMuB,KAAY3E,EAAO,CAC1B2E,EAASqM,OAAOuT,SAAU,EAC1B,MAAM3Y,EAAMjH,EAAStB,cAAe2gC,EAAgBnnC,GAAY+O,EAAKyL,GAAWgW,EAAQ,EAAI2W,EAAgBpnC,EACxGonC,GAAiBpnC,EACbywB,GAAS,GAAKhiB,EAAU8L,cAAcnN,SAAWgE,KACjDnW,KAAKosC,gBAAgBt/B,EAAU0oB,GAC/Bx1B,KAAKqsC,mBAAmBv/B,EAAU0oB,GAClCx1B,KAAKksC,iBAAiBp/B,EAAU0oB,IAIpCx1B,KAAKgsB,MAAMlf,GAEX0G,EAAU8L,cAAcnN,SAAWmE,IACnCtW,KAAKgsB,MAAMlf,IAIvB,iBAAiBA,EAAU0oB,EAAO+V,GAC9B,MAAMhnC,EAAUvE,KAAKwT,UAAUkE,cACzB40B,EAA8B,OAAdf,QAAoC,IAAdA,EAAuBA,EAAYhnC,EAAQ+a,cAAcqG,MAAMxM,OAC3G,GAAKmzB,EAAL,CAGA,IAAKx/B,EAASqM,OAAOozB,WAAY,CAC7B,MAAMC,EAAYF,EAAcz9B,MAChC,IAAK29B,EACD,OAEJ,MAAMC,EAAcr/B,GAAyBo/B,GAC7C1/B,EAASqM,OAAOozB,WAAap9B,GAAgBs9B,GAEjD,GAAK3/B,EAASqM,OAAOozB,WAGrB,GAAID,EAAc5oC,IAAK,CACnBoJ,EAASqM,OAAOtK,WAAQhN,EACxB,MAAM6qC,EAAS5/B,EAASkE,eACxBlE,EAASqM,OAAOtK,MAAQ69B,EAClBr9B,GAASiB,GAASo8B,EAAQ5/B,EAASqM,OAAOozB,WAAY,EAAI/W,EAAOA,IACjE1oB,EAASqM,OAAOozB,gBAGtBz/B,EAASqM,OAAOtK,MAAQ/B,EAASqM,OAAOozB,YAGhD,mBAAmBz/B,EAAU0oB,EAAO+V,GAChC,IAAI9qC,EAAI0F,EAAI/G,EAAIgH,EAChB,MAAMoN,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cAAei1B,EAAiG,QAAlFlsC,EAAmB,OAAd8qC,QAAoC,IAAdA,OAAuB,EAASA,EAAUn7B,eAA4B,IAAP3P,EAAgBA,EAAmD,QAA7C0F,EAAK5B,EAAQ+a,cAAcqG,MAAMxM,cAA2B,IAAPhT,OAAgB,EAASA,EAAGiK,QACrR,IAAKu8B,EACD,OAEJ,MAAMC,EAAa9/B,EAASvI,QAAQ6L,QAAQhN,MACtCypC,EAA4F,QAAhFzmC,EAAiC,QAA3BhH,EAAK0N,EAASsD,eAA4B,IAAPhR,OAAgB,EAASA,EAAGgE,aAA0B,IAAPgD,EAAgBA,EAAK,EACzHgK,EAAU06B,GAAqB+B,EAAUF,EAAazoC,GAAY0oC,GAAapX,QACrE3zB,IAAZuO,IACAtD,EAASqM,OAAO/I,QAAUA,GAGlC,gBAAgBtD,EAAU0oB,EAAO+V,GAC7B,MAAM/3B,EAAYxT,KAAKwT,UAAWs5B,GAA0B,OAAdvB,QAAoC,IAAdA,OAAuB,EAASA,EAAUxlC,MAAQwlC,EAAUxlC,KAAOyN,EAAUgC,OAAOC,WAAajC,EAAUgC,OAAO21B,eACtL,QAAiBtpC,IAAbirC,EACA,OAEJ,MAAMC,EAAU7oC,GAAY4I,EAASvI,QAAQwB,KAAK3C,OAASoQ,EAAUgC,OAAOC,WACtEu3B,EAAQlgC,EAAS/G,KAAK3C,MACtB2C,EAAO+kC,GAAqBkC,EAAOF,EAAUC,EAASvX,QAC/C3zB,IAATkE,IACA+G,EAASqM,OAAOxP,OAAS5D,GAGjC,QAAQ+G,EAAU4+B,EAAWC,EAAWrtC,GACpC,MAAMkV,EAAYxT,KAAKwT,UAAWy5B,EAAc3uC,EAAKutC,UAAUC,SAAUvnC,EAAUiP,EAAUkE,cAAeyB,EAAS5U,EAAQ+a,cAAcqG,MAAMxM,OACjJ,IAAKA,QAA0BtX,IAAhBorC,EACX,OAEJ,MAAMC,EAAiB/zB,EAAO8K,SAAUkpB,EAAiB35B,EAAUgC,OAAO01B,mBAAoBkC,EAAiB9uC,EAAKytC,aAAaD,SAAUuB,EAAa/uC,EAAKutC,UAAUzoC,MAAOkqC,EAAOhvC,EAAKytC,aAAa3oC,OAAS,EAAG/E,EAAOC,EAAKD,KAC/N,GAAK8uC,KAAkBA,EAAiB,IAAKF,IAAgBG,EAM7D,GAHK55B,EAAU2F,SACX3F,EAAU2F,OAAS,IAElB3F,EAAU2F,OAAOsyB,YAsBb4B,IACQ,SAAThvC,UACOyO,EAASqM,OAAOxP,OAEd,YAATtL,UACOyO,EAASqM,OAAO/I,cA1B3B,GAAIs7B,GAAayB,EAAgB,CAC7B,MAAMhgC,EAAqB,OAAfkgC,QAAsC,IAAfA,EAAwBA,EAAaC,EACxE,GAAIngC,IAAQ8/B,EAAa,CACrB,MAAM7pC,EAAQkqC,EAAQ3B,GAAa2B,EAAOL,GAAgBC,EAC7C,SAAT7uC,IACAyO,EAASqM,OAAOxP,OAASvG,GAEhB,YAAT/E,IACAyO,EAASqM,OAAO/I,QAAUhN,QAKrB,SAAT/E,UACOyO,EAASqM,OAAOxP,OAEd,YAATtL,UACOyO,EAASqM,OAAO/I,QAavC,oBAAoBqD,EAAOjM,EAAU0D,GACjC,MAAMsI,EAAYxT,KAAKwT,UAAWlM,EAAYS,SAAS0iC,iBAAiBjjC,GAAW2R,EAAS3F,EAAUkE,cAAc4H,cAAcqG,MAAMxM,OACnIA,GAAW7R,EAAUnG,QAG1BmG,EAAUvG,QAASlD,IACf,MAAM6sC,EAAO7sC,EAAMme,EAAUxI,EAAUgC,OAAOC,WAAY1B,EAAM,CAC5DpS,GAAI+oC,EAAKC,WAAaD,EAAK/uB,YAAc,GAAKK,EAC9Cva,GAAIipC,EAAKE,UAAYF,EAAKhvB,aAAe,GAAKM,GAC/CuxB,EAAiB7C,EAAK/uB,YAAc,EAAKK,EAASgM,EAAoB,WAAb9c,EAAI7M,KAC1D,IAAI,GAAO0V,EAAIpS,EAAGoS,EAAItS,EAAG8rC,GACzB,IAAI,GAAU7C,EAAKC,WAAa3uB,EAAS0uB,EAAKE,UAAY5uB,EAAS0uB,EAAK/uB,YAAcK,EAAS0uB,EAAKhvB,aAAeM,GAAU7T,EAAQqL,EAAUqE,UAAUkb,SAAS5qB,MAAM6f,EAAOzc,GAAMvL,KAAK8rB,UAAUvgB,IAC1M,IAAK,MAAMuB,KAAY3E,EAAO,CAC1B,IAAK6f,EAAKkK,SAASplB,EAAStB,eACxB,SAEJsB,EAASqM,OAAOuT,SAAU,EAC1B,MAAM3hB,EAAOoO,EAAOpO,KACdwgC,EAAYpgC,GAAQJ,EAAM2/B,GAC3B59B,EAASqM,OAAOjO,KAAO4B,EAASqM,OAAOjO,MAAQw/B,IAChD1qC,KAAKoT,MAAMtG,EAAU2G,GAAO,GAC5B3G,EAASqM,OAAOjO,IAAMw/B,GAE1B1qC,KAAKosC,gBAAgBt/B,EAAU,EAAGy+B,GAClCvrC,KAAKqsC,mBAAmBv/B,EAAU,EAAGy+B,GACrCvrC,KAAKksC,iBAAiBp/B,EAAU,EAAGy+B,OChS5CziC,eAAe0kC,GAA8BnoB,SAC1CA,EAAOyX,cAAc,iBAAmBtpB,GAAc,IAAI,GAAQA,ICFrE,MAAMi6B,GACT,cACIztC,KAAKoQ,QAAU,GAEnB,KAAK9R,GACIA,QAGgBuD,IAAjBvD,EAAK8R,UACLpQ,KAAKoQ,QAAU9R,EAAK8R,UCRzB,MAAM,GACT,cACIpQ,KAAK+E,SAAW,GAChB/E,KAAK0tC,MAAQ,IAAID,GACjBztC,KAAK2J,OAAS,GAElB,iBACI,OAAO3J,KAAK0tC,MAEhB,eAAetqC,GACXpD,KAAK0tC,MAAQtqC,EAEjB,kBACI,OAAOpD,KAAK0tC,MAEhB,gBAAgBtqC,GACZpD,KAAK0tC,MAAQtqC,EAEjB,KAAK9E,GACD,IAAImC,EAAI0F,EACH7H,SAGiBuD,IAAlBvD,EAAKyG,WACL/E,KAAK+E,SAAWzG,EAAKyG,UAEzB/E,KAAK0tC,MAAMvkC,KAAmF,QAA7EhD,EAA2B,QAArB1F,EAAKnC,EAAKovC,aAA0B,IAAPjtC,EAAgBA,EAAKnC,EAAKqvC,kBAA+B,IAAPxnC,EAAgBA,EAAK7H,EAAKsvC,kBAC5G/rC,IAAhBvD,EAAKqL,SACL3J,KAAK2J,OAASrL,EAAKqL,UC3B/B,SAASkkC,GAASv7B,EAAStG,EAAIC,EAAImE,GAC/B,MAAM09B,EAAW9rC,KAAK+B,MAAMkI,EAAGR,YAAcO,EAAGP,aAAc8E,EAASvE,EAAGgF,eAAgBR,EAASvE,EAAG+E,eACtG,IAAKT,IAAWC,EACZ,OAEJ,MAAMu9B,EAAY/hC,EAAGR,cAAewiC,EAAU/hC,EAAGT,cAAeyiC,EAAS39B,GAASC,EAAQC,EAAQxE,EAAGP,YAAaQ,EAAGR,aAAcyiC,EAAO57B,EAAQ67B,qBAAqBJ,EAAUpsC,EAAGosC,EAAUtsC,EAAGusC,EAAQrsC,EAAGqsC,EAAQvsC,GAIpN,OAHAysC,EAAKE,aAAa,EAAG/9B,GAAgBE,EAAQH,IAC7C89B,EAAKE,aAAaN,EAAW,EAAI,EAAIA,EAAU39B,GAAgB89B,EAAQ79B,IACvE89B,EAAKE,aAAa,EAAG/9B,GAAgBG,EAAQJ,IACtC89B,EAEX,SAASG,GAAgB/7B,EAAStM,EAAOsoC,EAAW/7B,EAAOC,GACvDH,GAASC,EAASC,EAAOC,GACzBF,EAAQwC,UAAY9O,EACpBsM,EAAQ0C,YAAcs5B,EACtBh8B,EAAQuC,SAEZ,SAAS,GAAUrB,EAAW0E,EAAKlM,EAAIC,GACnC,MAAM1H,EAAUiP,EAAUkE,cAAe62B,EAAiBhqC,EAAQ+a,cAAcqG,MAAM6oB,QACtF,GAAKD,EAGL,OAAOV,GAAS31B,EAAKlM,EAAIC,EAAIsiC,EAAeb,MAAMt9B,SAEtD,SAASq+B,GAAej7B,EAAWxH,EAAIC,GACnCuH,EAAU8H,OAAO/F,KAAM2C,IACnB,IAAIzX,EACJ,MAAMiuC,EAAK,GAAUl7B,EAAW0E,EAAKlM,EAAIC,GACzC,IAAKyiC,EACD,OAEJ,MAAMtiC,EAAOJ,EAAGR,cAAea,EAAOJ,EAAGT,cACzC6iC,GAAgBn2B,EAAqC,QAA/BzX,EAAKuL,EAAGwJ,OAAOm5B,kBAA+B,IAAPluC,EAAgBA,EAAK,EAAGiuC,EAAItiC,EAAMC,KAGhG,MAAM,WAAkByxB,GAC3B,YAAYtqB,GACRzQ,MAAMyQ,GAEV,SAEA,OACI,MAAMA,EAAYxT,KAAKwT,UAAWg7B,EAAUh7B,EAAUkE,cAAc4H,cAAcqG,MAAM6oB,QACnFA,IAGLh7B,EAAUgC,OAAOo5B,oBAAsBJ,EAAQzpC,SAAWyO,EAAUgC,OAAOC,WAC3EjC,EAAUgC,OAAOq5B,kBAAoBL,EAAQ7kC,OAAS6J,EAAUgC,OAAOC,YAE3E,iBACI,MAAMjC,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cACtD,GAAInT,EAAQ+a,cAAcQ,OAAO+B,QAAQrd,QAA6C,gBAAnCgP,EAAU8L,cAAcnN,OAA0B,CACjG,MAAMqN,EAAWhM,EAAU8L,cAAcC,MAAMpa,SAC/C,IAAKqO,EAAUgC,OAAOo5B,qBAClBp7B,EAAUgC,OAAOo5B,oBAAsB,IACtCp7B,EAAUgC,OAAOq5B,mBAClBr7B,EAAUgC,OAAOq5B,kBAAoB,IACpCrvB,EACD,OAEJ,MAAMza,EAAW/C,KAAKqvB,IAAI7d,EAAUgC,OAAOq5B,mBAAoB1mC,EAAQqL,EAAUqE,UAAUkb,SAASiE,YAAYxX,EAAUza,EAAWwG,GAAMvL,KAAK8rB,UAAUvgB,IAC1J,IAAIqoB,EAAI,EACR,IAAK,MAAM5nB,KAAM7D,EAAO,CACpB,MAAMiE,EAAOJ,EAAGR,cAChB,IAAK,MAAMS,KAAM9D,EAAM2mC,MAAMlb,EAAI,GAAI,CACjC,MAAMvnB,EAAOJ,EAAGT,cAAeujC,EAAU/sC,KAAKqvB,IAAI7d,EAAUgC,OAAOo5B,qBAAsBI,EAAQhtC,KAAKqvB,IAAIjlB,EAAKzK,EAAI0K,EAAK1K,GAAIstC,EAAQjtC,KAAKqvB,IAAIjlB,EAAK3K,EAAI4K,EAAK5K,GACvJutC,EAAQD,GAAWE,EAAQF,GAC3BN,GAAej7B,EAAWxH,EAAIC,KAGpC2nB,IAId,UAAU9mB,GACN,IAAIrM,EACJ,MAAM+S,EAAYxT,KAAKwT,UAAW+L,EAAQ/L,EAAU8L,cAAcC,MAAOO,GAAgG,QAArFrf,EAAkB,OAAbqM,QAAkC,IAAbA,OAAsB,EAASA,EAASwS,qBAAkC,IAAP7e,EAAgBA,EAAK+S,EAAUkE,cAAc4H,eAAeQ,OAC7O,SAAMA,EAAO+B,QAAQrd,SAAU+a,EAAMpa,WAG9ByD,GAAU,UAAWkX,EAAO+B,QAAQ/W,MAE/C,gBAAgBvG,KAAY+F,GACnB/F,EAAQiqC,UACTjqC,EAAQiqC,QAAU,IAAI,IAE1B,IAAK,MAAMlsC,KAAUgI,EACjB/F,EAAQiqC,QAAQrlC,KAAgB,OAAX7G,QAA8B,IAAXA,OAAoB,EAASA,EAAOksC,SAGpF,UC3FG1lC,eAAeomC,GAA+B7pB,SAC3CA,EAAOyX,cAAc,kBAAoBtpB,GAAc,IAAI,GAAUA,ICDxE,MAAM,GACT,cACIxT,KAAKsR,OAAQ,EACbtR,KAAKuR,SAAU,EACfvR,KAAKoQ,QAAU,EAEnB,KAAK9R,GACIA,SAGcuD,IAAfvD,EAAKgT,QACLtR,KAAKsR,MAAQhT,EAAKgT,YAEHzP,IAAfvD,EAAKuQ,QACL7O,KAAK6O,MAAQwV,GAAatiB,OAAO/B,KAAK6O,MAAOvQ,EAAKuQ,aAEjChN,IAAjBvD,EAAKiT,UACLvR,KAAKuR,QAAUjT,EAAKiT,cAEH1P,IAAjBvD,EAAK8R,UACLpQ,KAAKoQ,QAAU9R,EAAK8R,WCpBzB,MAAM,GACT,cACIpQ,KAAK+E,SAAW,IAChB/E,KAAK0tC,MAAQ,IAAI,GAErB,iBACI,OAAO1tC,KAAK0tC,MAEhB,eAAetqC,GACXpD,KAAK0tC,MAAQtqC,EAEjB,kBACI,OAAOpD,KAAK0tC,MAEhB,gBAAgBtqC,GACZpD,KAAK0tC,MAAQtqC,EAEjB,KAAK9E,GACD,IAAImC,EAAI0F,EACH7H,SAGiBuD,IAAlBvD,EAAKyG,WACL/E,KAAK+E,SAAWzG,EAAKyG,UAEzB/E,KAAK0tC,MAAMvkC,KAAmF,QAA7EhD,EAA2B,QAArB1F,EAAKnC,EAAKovC,aAA0B,IAAPjtC,EAAgBA,EAAKnC,EAAKqvC,kBAA+B,IAAPxnC,EAAgBA,EAAK7H,EAAKsvC,eCxBjI,SAASuB,GAAa78B,EAAStM,EAAOuM,EAAOC,EAAK48B,EAAWh/B,GAChEiC,GAASC,EAASC,EAAOC,GACzBF,EAAQ0C,YAAc7E,GAAgBi/B,EAAWh/B,GACjDkC,EAAQwC,UAAY9O,EACpBsM,EAAQuC,SAEZ,SAASw6B,GAAS77B,EAAW1G,EAAUwiC,EAAWl/B,EAASoP,GACvDhM,EAAU8H,OAAO/F,KAAM2C,IACnB,IAAIzX,EACJ,MAAM8uC,EAAWziC,EAAStB,cAC1B2jC,GAAaj3B,EAA2C,QAArCzX,EAAKqM,EAAS0I,OAAOm5B,kBAA+B,IAAPluC,EAAgBA,EAAK,EAAG8uC,EAAU/vB,EAAU8vB,EAAWl/B,KAGxH,MAAM,WAAgB0tB,GACzB,YAAYtqB,GACRzQ,MAAMyQ,GAEV,SAEA,OACI,MAAMA,EAAYxT,KAAKwT,UAAWg8B,EAAOh8B,EAAUkE,cAAc4H,cAAcqG,MAAM6pB,KAChFA,IAGLh8B,EAAUgC,OAAOi6B,iBAAmBD,EAAKzqC,SAAWyO,EAAUgC,OAAOC,YAEzE,iBACI,IAAIhV,EAAI0F,EACR,MAAMqN,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cAAe4H,EAAgB/a,EAAQ+a,cAC7F,IAAKA,EAAcqG,MAAM6pB,OACpBlwB,EAAcQ,OAAO+B,QAAQrd,QAC9BgP,EAAU8L,cAAcnN,SAAWgE,GACnC,OAEJ,MAAMqJ,EAAWhM,EAAU8L,cAAcC,MAAMpa,SAC/C,IAAKqa,EACD,OAEJ,MAAMza,EAAWyO,EAAUgC,OAAOi6B,iBAClC,IAAK1qC,GAAYA,EAAW,EACxB,OAEJ,MAAMoD,EAAQqL,EAAUqE,UAAUkb,SAASiE,YAAYxX,EAAUza,EAAWwG,GAAMvL,KAAK8rB,UAAUvgB,IACjG,IAAK,MAAMuB,KAAY3E,EAAO,CAC1B,MAAM4L,EAAMjH,EAAStB,cAAe2gC,EAAgBnnC,GAAY+O,EAAKyL,GACrE,GAAI2sB,EAAgBpnC,EAChB,SAEJ,MAAM2qC,EAAkBpwB,EAAcqG,MAAM6pB,KAAK9B,MAAOiC,EAAcD,EAAgBt/B,QAASw/B,EAAcD,EAAexD,EAAgBwD,EAAe5qC,EAC3J,GAAI6qC,GAAe,EACf,SAEJ,MAAMv+B,EAA4C,QAAhC5Q,EAAKivC,EAAgB7gC,aAA0B,IAAPpO,EAAgBA,EAAuC,QAAjC0F,EAAK2G,EAASvI,QAAQmpC,aAA0B,IAAPvnC,OAAgB,EAASA,EAAG0I,MACrJ,IAAK2E,EAAUqE,UAAUg4B,eAAiBx+B,EAAU,CAChD,MAAMy+B,EAAexwB,EAAcqG,MAAM6pB,KAAK9B,MAC9Cl6B,EAAUqE,UAAUg4B,cAAgBz+B,GAAmBC,EAAUy+B,EAAax+B,MAAOw+B,EAAav+B,SAEtG,MAAM69B,EAAYv+B,GAAa/D,OAAUjL,EAAW2R,EAAUqE,UAAUg4B,eACxE,IAAKT,EACD,OAEJC,GAAS77B,EAAW1G,EAAUsiC,EAAWQ,EAAapwB,IAG9D,UAAU1S,GACN,IAAIrM,EACJ,MAAM+S,EAAYxT,KAAKwT,UAAW+L,EAAQ/L,EAAU8L,cAAcC,MAAOO,GAAgG,QAArFrf,EAAkB,OAAbqM,QAAkC,IAAbA,OAAsB,EAASA,EAASwS,qBAAkC,IAAP7e,EAAgBA,EAAK+S,EAAUkE,cAAc4H,eAAeQ,OAC7O,OAAOA,EAAO+B,QAAQrd,UAAY+a,EAAMpa,UAAYyD,GAAU,OAAQkX,EAAO+B,QAAQ/W,MAEzF,gBAAgBvG,KAAY+F,GACnB/F,EAAQirC,OACTjrC,EAAQirC,KAAO,IAAI,IAEvB,IAAK,MAAMltC,KAAUgI,EACjB/F,EAAQirC,KAAKrmC,KAAgB,OAAX7G,QAA8B,IAAXA,OAAoB,EAASA,EAAOktC,MAGjF,UC9EG1mC,eAAeinC,GAA4B1qB,SACxCA,EAAOyX,cAAc,eAAiBtpB,GAAc,IAAI,GAAQA,ICDnE,MAAM,WAAesqB,GACxB,YAAYtqB,GACRzQ,MAAMyQ,GACNxT,KAAK+f,gBAAmBjV,IACpB,GAAa,UAATA,EACA,OAEJ,MAAM0I,EAAYxT,KAAKwT,UACnBA,EAAUqN,qBACVrN,EAAUoN,QAGVpN,EAAUsN,QAItB,SAEA,QAEA,kBAEA,YACI,OAAO,EAEX,UCzBG,SAASkvB,GAA6B3qB,GACzCA,EAAOyX,cAAc,gBAAkBtpB,GAAc,IAAI,GAAOA,ICF7D,MAAMy8B,GACT,cACIjwC,KAAK5B,SAAU,EACf4B,KAAKwpB,OAAS,GACdxpB,KAAKi0B,SAAW,EAEpB,mBACI,OAAOj0B,KAAKi0B,SAEhB,iBAAiB7wB,GACbpD,KAAKi0B,SAAW7wB,EAEpB,KAAK9E,GACD,IAAImC,EACJ,IAAKnC,EACD,YAEiBuD,IAAjBvD,EAAKF,UACL4B,KAAK5B,QAAUE,EAAKF,cAEJyD,IAAhBvD,EAAKkrB,SACLxpB,KAAKwpB,OAASlrB,EAAKkrB,OAAO5e,IAAKhD,GAAMA,IAEpC5H,KAAKwpB,OAAOroB,SACbnB,KAAK5B,SAAU,GAEnB,MAAM61B,EAAoC,QAAxBxzB,EAAKnC,EAAK21B,gBAA6B,IAAPxzB,EAAgBA,EAAKnC,EAAK4xC,kBAC3DruC,IAAboyB,IACAj0B,KAAKi0B,SAAWA,ICzBrB,MAAM,WAAe6J,GACxB,YAAYtqB,GACRzQ,MAAMyQ,GACNxT,KAAK+f,gBAAmBjV,IACpB,GAAa,SAATA,EACA,OAEJ,MAAM0I,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cAAey4B,EAAc5rC,EAAQ+a,cAAcqG,MAAM9kB,KAC/G,IAAKsvC,EACD,OAEJ,MAAMC,EAASD,EAAYlc,SAC3B,GAAImc,GAAU,EACV,OAEJ,MAAMzmB,EAAQtgB,GAAc,MAACxH,KAAcsuC,EAAY3mB,SAAUmK,OAAyB9xB,IAAV8nB,EAAsBnW,EAAUkE,cAAcG,UAAU2R,OAAOG,QAAS9nB,EACxJ2R,EAAUqE,UAAUhX,KAAKuvC,EAAQ58B,EAAU8L,cAAcC,MAAOoU,EAAchK,IAGtF,SAEA,QAEA,kBAEA,YACI,OAAO,EAEX,gBAAgBplB,KAAY+F,GACnB/F,EAAQ1D,OACT0D,EAAQ1D,KAAO,IAAIovC,IAEvB,IAAK,MAAM3tC,KAAUgI,EACjB/F,EAAQ1D,KAAKsI,KAAgB,OAAX7G,QAA8B,IAAXA,OAAoB,EAASA,EAAOzB,MAGjF,UCtCGiI,eAAeunC,GAA4BhrB,SACxCA,EAAOyX,cAAc,eAAiBtpB,GAAc,IAAI,GAAOA,ICFlE,MAAM88B,GACT,cACItwC,KAAKi0B,SAAW,EAEpB,mBACI,OAAOj0B,KAAKi0B,SAEhB,iBAAiB7wB,GACbpD,KAAKi0B,SAAW7wB,EAEpB,KAAK9E,GACD,IAAImC,EACJ,IAAKnC,EACD,OAEJ,MAAM21B,EAAoC,QAAxBxzB,EAAKnC,EAAK21B,gBAA6B,IAAPxzB,EAAgBA,EAAKnC,EAAK4xC,kBAC3DruC,IAAboyB,IACAj0B,KAAKi0B,SAAWA,ICfrB,MAAM,WAAgB6J,GACzB,YAAYtqB,GACRzQ,MAAMyQ,GACNxT,KAAK+f,gBAAmBjV,IACpB,MAAM0I,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cACtD,IAAKnT,EAAQ+a,cAAcqG,MAAMvN,QAAmB,WAATtN,EACvC,OAEJ,MAAMylC,EAAWhsC,EAAQ+a,cAAcqG,MAAMvN,OAAO6b,SACpDzgB,EAAUqE,UAAUwb,eAAekd,IAG3C,SAEA,QAEA,kBAEA,YACI,OAAO,EAEX,gBAAgBhsC,KAAY+F,GACnB/F,EAAQ6T,SACT7T,EAAQ6T,OAAS,IAAIk4B,IAEzB,IAAK,MAAMhuC,KAAUgI,EACjB/F,EAAQ6T,OAAOjP,KAAgB,OAAX7G,QAA8B,IAAXA,OAAoB,EAASA,EAAO8V,QAGnF,UC9BG,SAASo4B,GAA8BnrB,GAC1CA,EAAOyX,cAAc,iBAAmBtpB,GAAc,IAAI,GAAQA,ICF/D,MAAMi9B,GACT,cACIzwC,KAAK+E,SAAW,IAChB/E,KAAKikB,SAAW,GAChBjkB,KAAKiH,OAAS,IACdjH,KAAKiS,MAAQ,EACbjS,KAAK4mB,SAAW,GAChB5mB,KAAKkpC,OAAS,gBAElB,KAAK5qC,GACIA,SAGiBuD,IAAlBvD,EAAKyG,WACL/E,KAAK+E,SAAWzG,EAAKyG,eAEHlD,IAAlBvD,EAAK2lB,WACLjkB,KAAKikB,SAAW3lB,EAAK2lB,eAELpiB,IAAhBvD,EAAK4qC,SACLlpC,KAAKkpC,OAAS5qC,EAAK4qC,aAEHrnC,IAAhBvD,EAAK2I,SACLjH,KAAKiH,OAAS3I,EAAK2I,aAEJpF,IAAfvD,EAAK2T,QACLjS,KAAKiS,MAAQ3T,EAAK2T,YAEApQ,IAAlBvD,EAAKsoB,WACL5mB,KAAK4mB,SAAWtoB,EAAKsoB,YC3B1B,MAAM,WAAmB6pB,GAC5B,cACI1tC,QACA/C,KAAKsH,UAAY,GAErB,UACI,OAAOC,GAA0BvH,KAAKsH,UAAYM,GAAMA,EAAEuG,QAAQ,IAAK,KAE3E,QAAQ/K,GACJpD,KAAKsH,UAAYC,GAA0BnE,EAAQwE,GAAM,IAAIA,GAEjE,KAAKtJ,GACDyE,MAAMoG,KAAK7K,GACNA,SAGYuD,IAAbvD,EAAKmmB,MACLzkB,KAAKykB,IAAMnmB,EAAKmmB,UAEG5iB,IAAnBvD,EAAKgJ,YACLtH,KAAKsH,UAAYhJ,EAAKgJ,aCnB3B,MAAM,WAAgBmpC,GACzB,KAAKnyC,GACDyE,MAAMoG,KAAK7K,GACNA,IAGL0B,KAAK+K,KAAOxD,GAA0BjJ,EAAKyM,KAAOG,IAC9C,MAAMga,EAAM,IAAI,GAEhB,OADAA,EAAI/b,KAAK+B,GACFga,MCVZ,MAAM,WAAiB4Y,GAC1B,YAAYzY,EAAQ7R,GAChBzQ,MAAMyQ,GACNxT,KAAKslB,QAAUD,EACV7R,EAAUk9B,UACXl9B,EAAUk9B,QAAU,CAAE74B,UAAW,KAErC7X,KAAK+f,gBAAmBjV,IACpB,MAAMvG,EAAUvE,KAAKwT,UAAUkE,cAAeg5B,EAAUnsC,EAAQ+a,cAAcqG,MAAM+qB,QACpF,GAAKA,GAAoB,YAAT5lC,EAAhB,CAGK0I,EAAUk9B,UACXl9B,EAAUk9B,QAAU,CAAE74B,UAAW,KAErCrE,EAAUk9B,QAAQruB,UAAW,EAC7B7O,EAAUk9B,QAAQ1qB,MAAQ,EAC1B,IAAK,MAAMlZ,KAAY0G,EAAUk9B,QAAQ74B,UAChC7X,KAAK8rB,UAAUhf,IAGpBA,EAAS9F,SAASi4B,MAAMnyB,EAASsiB,iBAErC5b,EAAUk9B,QAAQ74B,UAAY,GAC9BrE,EAAUk9B,QAAQvH,QAAS,EAC3B7gC,WAAW,KACFkL,EAAUgF,YACNhF,EAAUk9B,UACXl9B,EAAUk9B,QAAU,CAAE74B,UAAW,KAErCrE,EAAUk9B,QAAQruB,UAAW,IAEf,IAAnBquB,EAAQzsB,YAGnB,SAEA,OACI,MAAMzQ,EAAYxT,KAAKwT,UAAWk9B,EAAUl9B,EAAUkE,cAAc4H,cAAcqG,MAAM+qB,QACnFA,IAGLl9B,EAAUgC,OAAOm7B,oBAAsBD,EAAQ3rC,SAAWyO,EAAUgC,OAAOC,YAE/E,iBACI,MAAMjC,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cAAe2xB,EAAkB71B,EAAU8L,cAAcnN,SAAWgE,GAAgB2J,EAASvb,EAAQ+a,cAAcQ,OAAQwpB,EAAexpB,EAAO+B,QAAQrd,OAAQ+kC,EAAYzpB,EAAO+B,QAAQ/W,KAAM0+B,EAAe1pB,EAAOD,QAAQrb,OAAQilC,EAAY3pB,EAAOD,QAAQ/U,KAAMC,EAAO+U,EAAOiF,MACzUskB,GAAmBC,GAAgB1gC,GAAU,UAAW2gC,GACxDvpC,KAAK4wC,eAEApH,GAAgB5gC,GAAU,UAAW6gC,GAC1CzpC,KAAK6wC,eAGL5lC,GAAe,UAAWF,EAAM,CAACvD,EAAU0D,IAAQlL,KAAK8wC,sBAAsBtpC,EAAU0D,IAGhG,UAAU4B,GACN,IAAIrM,EACJ,MAAM+S,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cAAe6H,EAAQ/L,EAAU8L,cAAcC,MAAOO,GAAgG,QAArFrf,EAAkB,OAAbqM,QAAkC,IAAbA,OAAsB,EAASA,EAASwS,qBAAkC,IAAP7e,EAAgBA,EAAK8D,EAAQ+a,eAAeQ,OAAQ/U,EAAO+U,EAAOiF,MAAOgsB,EAAalmC,GAAiB,UAAWE,GACtU,KAAMgmC,GAAejxB,EAAO+B,QAAQrd,QAAU+a,EAAMpa,UAAc2a,EAAOD,QAAQrb,QAAU+a,EAAME,eAC7F,OAAO,EAEX,MAAM8pB,EAAYzpB,EAAO+B,QAAQ/W,KAAM2+B,EAAY3pB,EAAOD,QAAQ/U,KAClE,OAAOlC,GAAU,UAAW2gC,IAAc3gC,GAAU,UAAW6gC,IAAcsH,EAEjF,gBAAgBxsC,KAAY+F,GACnB/F,EAAQmsC,UACTnsC,EAAQmsC,QAAU,IAAI,IAE1B,IAAK,MAAMpuC,KAAUgI,EACjB/F,EAAQmsC,QAAQvnC,KAAgB,OAAX7G,QAA8B,IAAXA,OAAoB,EAASA,EAAOouC,SAGpF,SAEA,eACI,MAAMl9B,EAAYxT,KAAKwT,UAAWk9B,EAAUl9B,EAAUkE,cAAc4H,cAAcqG,MAAM+qB,QACxF,GAAKA,EAeL,GAZKl9B,EAAUk9B,UACXl9B,EAAUk9B,QAAU,CAAE74B,UAAW,KAEhCrE,EAAUk9B,QAAQvH,SACd31B,EAAUk9B,QAAQ1qB,QACnBxS,EAAUk9B,QAAQ1qB,MAAQ,GAE9BxS,EAAUk9B,QAAQ1qB,QACdxS,EAAUk9B,QAAQ1qB,QAAUxS,EAAUqE,UAAUmO,QAChDxS,EAAUk9B,QAAQvH,QAAS,IAG/B31B,EAAUk9B,QAAQruB,SAAU,CAC5B,MAAM2uB,EAAkBx9B,EAAUgC,OAAOm7B,oBACzC,IAAKK,GAAmBA,EAAkB,EACtC,OAEJ,MAAMzD,EAAgBvrC,KAAK0vB,IAAIsf,EAAkB,EAAG,GAAIxF,EAAgBh4B,EAAU8L,cAAcC,MAAME,cACtG,QAAsB5d,IAAlB2pC,EACA,OAEJ,MAAM5a,EAAQ,IAAI,GAAO4a,EAAc7pC,EAAG6pC,EAAc/pC,EAAG8rC,GAAgBplC,EAAQqL,EAAUqE,UAAUkb,SAAS5qB,MAAMyoB,EAAQrlB,GAAMvL,KAAK8rB,UAAUvgB,IACnJ,IAAK,MAAMuB,KAAY3E,EAAO,CAC1B,MAAM,GAAEtD,EAAE,GAAEC,EAAE,SAAEC,GAAaL,GAAa8mC,EAAe1+B,EAAS3H,UAAWiP,EAAIrP,GAAY,EAAGiC,EAAW0pC,EAAQz+B,MAAO2S,GAAU2oB,EAAgBvmC,EAAYoN,EAChK,GAAIA,GAAKm5B,EAAe,CACpB/5B,EAAUk9B,QAAQ74B,UAAUhX,KAAKiM,GACjC,MAAMmkC,EAAO,EAAOlvC,OAAO8C,EAAIC,GAC/BmsC,EAAK9vC,OAASyjB,EACd9X,EAAS9F,SAASi4B,MAAMgS,UAI/B,IAAmC,IAA/Bz9B,EAAUk9B,QAAQruB,SAAoB,CAC3C,IAAK,MAAMvV,KAAY0G,EAAUk9B,QAAQ74B,UACrC/K,EAAS9F,SAASi4B,MAAMnyB,EAASsiB,iBAErC5b,EAAUk9B,QAAQ74B,UAAY,IAGtC,eACI,MAAMrE,EAAYxT,KAAKwT,UAAWgM,EAAWhM,EAAU8L,cAAcC,MAAMpa,SAAUooC,EAAgB/5B,EAAUgC,OAAOm7B,qBACjHpD,GAAiBA,EAAgB,IAAM/tB,GAG5Cxf,KAAKkxC,eAAe1xB,EAAU+tB,EAAe,IAAI,GAAO/tB,EAAS7d,EAAG6d,EAAS/d,EAAG8rC,IAEpF,eAAepoC,EAAUooC,EAAevlB,EAAM+oB,GAC1C,IAAItwC,EACJ,MAAM+S,EAAYxT,KAAKwT,UAAWrL,EAAQqL,EAAUqE,UAAUkb,SAAS5qB,MAAM6f,EAAOzc,GAAMvL,KAAK8rB,UAAUvgB,IAAK4lC,EAAiB39B,EAAUkE,cAAc4H,cAAcqG,MAAM+qB,QAC3K,GAAKS,EAGL,IAAK,MAAMrkC,KAAY3E,EAAO,CAC1B,MAAM,GAAEtD,EAAE,GAAEC,EAAE,SAAEC,GAAaL,GAAaoI,EAAS3H,SAAUA,GAAW6B,GAAgG,QAAnFvG,EAAoB,OAAfswC,QAAsC,IAAfA,OAAwB,EAASA,EAAW9+B,aAA0B,IAAPxR,EAAgBA,EAAK0wC,EAAel/B,OAASk/B,EAAelqC,OAAQmqC,EAAgB9tC,EAAMH,EAAUguC,EAAejI,OAAzB/lC,CAAiC,EAAI4B,EAAWwoC,GAAiBvmC,EAAU,EAAGmqC,EAAevqB,UAAWojB,EAAU,EAAOjoC,OAAoB,IAAbgD,EAAiBiC,EAAYnC,EAAKE,EAAYqsC,EAA4B,IAAbrsC,EAAiBiC,EAAYlC,EAAKC,EAAYqsC,GACrftkC,EAAS3H,SAASs6B,MAAMuK,IAGhC,sBAAsBxiC,EAAU0D,GAC5B,MAAMsI,EAAYxT,KAAKwT,UAAWk9B,EAAUl9B,EAAUkE,cAAc4H,cAAcqG,MAAM+qB,QACxF,IAAKA,EACD,OAEJ,MAAMvoC,EAAQJ,SAAS0iC,iBAAiBjjC,GACnCW,EAAMhH,QAGXgH,EAAMpH,QAASlD,IACX,MAAM6sC,EAAO7sC,EAAMme,EAAUxI,EAAUgC,OAAOC,WAAY1B,EAAM,CAC5DpS,GAAI+oC,EAAKC,WAAaD,EAAK/uB,YAAc,GAAKK,EAC9Cva,GAAIipC,EAAKE,UAAYF,EAAKhvB,aAAe,GAAKM,GAC/CuxB,EAAiB7C,EAAK/uB,YAAc,EAAKK,EAASgM,EAAoB,WAAb9c,EAAI7M,KAC1D,IAAI,GAAO0V,EAAIpS,EAAGoS,EAAItS,EAAG8rC,GACzB,IAAI,GAAU7C,EAAKC,WAAa3uB,EAAS0uB,EAAKE,UAAY5uB,EAAS0uB,EAAK/uB,YAAcK,EAAS0uB,EAAKhvB,aAAeM,GAAUjR,EAAO2lC,EAAQ3lC,KAAMgmC,EAAa5lC,GAAQJ,EAAM2/B,GACnL1qC,KAAKkxC,eAAen9B,EAAKw5B,EAAevlB,EAAM+oB,MC1JnDjoC,eAAeuoC,GAA+BhsB,SAC3CA,EAAOyX,cAAc,kBAAoBtpB,GAAc,IAAI,GAAS6R,EAAQ7R,ICF/E,MAAM89B,GACT,cACItxC,KAAKiH,OAAS,EACdjH,KAAK2J,OAAS,IAElB,KAAKrL,GACIA,SAGeuD,IAAhBvD,EAAK2I,SACLjH,KAAKiH,OAAS3I,EAAK2I,aAEHpF,IAAhBvD,EAAKqL,SACL3J,KAAK2J,OAASrL,EAAKqL,UCXxB,MAAM,WAAem0B,GACxB,YAAYtqB,GACRzQ,MAAMyQ,GAEV,MAAM1G,EAAU2G,EAAOmR,GACf9X,EAAS6f,KAAKD,UAAY9H,IAG9B9X,EAAS6f,KAAK1lB,OAAS,GAE3B,OACI,MAAMuM,EAAYxT,KAAKwT,UAAWmZ,EAAOnZ,EAAUkE,cAAc4H,cAAcqG,MAAMgH,KAChFA,IAGLnZ,EAAUgC,OAAO+7B,eAAiB5kB,EAAKhjB,OAAS6J,EAAUgC,OAAOC,YAErE,kBAEA,UAAU3I,GACN,IAAIrM,EACJ,MAAM+S,EAAYxT,KAAKwT,UAAW+L,EAAQ/L,EAAU8L,cAAcC,MAAOO,GAAgG,QAArFrf,EAAkB,OAAbqM,QAAkC,IAAbA,OAAsB,EAASA,EAASwS,qBAAkC,IAAP7e,EAAgBA,EAAK+S,EAAUkE,cAAc4H,eAAeQ,OAC7O,OAAOA,EAAO+B,QAAQrd,UAAY+a,EAAMpa,UAAYyD,GAAU,OAAQkX,EAAO+B,QAAQ/W,MAEzF,gBAAgBvG,KAAY+F,GACnB/F,EAAQooB,OACTpoB,EAAQooB,KAAO,IAAI2kB,IAEvB,IAAK,MAAMhvC,KAAUgI,EACjB/F,EAAQooB,KAAKxjB,KAAgB,OAAX7G,QAA8B,IAAXA,OAAoB,EAASA,EAAOqqB,MAGjF,MAAM7f,GACFA,EAAS6f,KAAKD,SAAU,EACxB,MAAMlZ,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cAAe8H,EAAWhM,EAAU8L,cAAcC,MAAMpa,SAAUwE,EAAS6J,EAAUgC,OAAO+7B,eAAgB5kB,EAAOpoB,EAAQ+a,cAAcqG,MAAMgH,KACrM,IAAKA,IAAShjB,GAAUA,EAAS,IAAM6V,EACnC,OAEJ,MAAMgyB,EAAc1kC,EAAStB,cAAe+lB,EAAOvsB,GAAYwa,EAAUgyB,GAAcC,EAAkBlgB,EAAO5nB,EAAQo+B,EAAapb,EAAK1lB,OACtIsqB,GAAQ5nB,IACRmD,EAAS6f,KAAKD,SAAU,EACxB5f,EAAS6f,KAAK1lB,OAASwqC,EAAkB1J,IC1C9Cj/B,eAAe4oC,GAA4BrsB,SACxCA,EAAOyX,cAAc,eAAiBtpB,GAAc,IAAI,GAAOA,ICDzE,MAAMm+B,GAAoB,uGAC1B,SAASC,GAAgBC,EAAYhjC,EAAOuB,GACxC,MAAM,QAAE0hC,GAAYD,EACpB,IAAKC,EACD,MAAO,GAEX,MAAMC,EAAa1hC,GAAgBxB,EAAOuB,GAC1C,GAAI0hC,EAAQnN,SAAS,QACjB,OAAOmN,EAAQ3jC,QAAQwjC,GAAmB,IAAMI,GAEpD,MAAMC,EAAeF,EAAQzwC,QAAQ,KACrC,MAAO,GAAGywC,EAAQG,UAAU,EAAGD,YAAuBD,KAAcD,EAAQG,UAAUD,KAEnFlpC,eAAeopC,GAAU13B,GAC5B,OAAO,IAAI6e,QAASC,IAChB9e,EAAM23B,SAAU,EAChB,MAAMC,EAAM,IAAIC,MAChB73B,EAAMnT,QAAU+qC,EAChBA,EAAIv0B,iBAAiB,OAAQ,KACzBrD,EAAM23B,SAAU,EAChB7Y,MAEJ8Y,EAAIv0B,iBAAiB,QAAS,KAC1BrD,EAAMnT,aAAUxF,EAChB2Y,EAAM4J,OAAQ,EACd5J,EAAM23B,SAAU,EAChBhuB,QAAQC,MAAM,sCAAsC5J,EAAMlY,QAC1Dg3B,MAEJ8Y,EAAIE,IAAM93B,EAAMlY,SAGjBwG,eAAeypC,GAAiB/3B,GACnC,GAAmB,QAAfA,EAAMnc,KAEN,kBADM6zC,GAAU13B,GAGpBA,EAAM23B,SAAU,EAChB,MAAMhY,QAAiBC,MAAM5f,EAAMlY,QAC9B63B,EAASE,KACVlW,QAAQC,MAAM,uCACd5J,EAAM4J,OAAQ,GAEb5J,EAAM4J,QACP5J,EAAMs3B,cAAgB3X,EAASqY,QAEnCh4B,EAAM23B,SAAU,EAEb,SAASM,GAAkBj4B,EAAOk4B,EAAW7jC,EAAO/B,GACvD,IAAIrM,EAAI0F,EAAI/G,EACZ,MAAMuzC,EAAiBf,GAAgBp3B,EAAO3L,EAAwF,QAAhF1I,EAAiC,QAA3B1F,EAAKqM,EAASsD,eAA4B,IAAP3P,OAAgB,EAASA,EAAG2C,aAA0B,IAAP+C,EAAgBA,EAAK,GAAIysC,EAAW,CAC9K/jC,QACAvQ,KAAM6d,OAAOC,OAAOD,OAAOC,OAAO,GAAI5B,GAAQ,CAAEs3B,QAASa,IACzDE,QAAQ,EACRrd,MAAOkd,EAAU1sC,MAAQ0sC,EAAUzsC,OACnC6sC,aAAgD,QAAjC1zC,EAAKszC,EAAUI,oBAAiC,IAAP1zC,EAAgBA,EAAKszC,EAAUK,cACvFzwC,OAAQowC,EAAUJ,KAEtB,OAAO,IAAIjZ,QAASC,IAChB,MAAM0Z,EAAM,IAAIC,KAAK,CAACN,GAAiB,CAAEt0C,KAAM,kBAAoB60C,EAASC,KAAOrrC,OAAOqrC,KAAOrrC,OAAOsrC,WAAatrC,OAAQoyB,EAAMgZ,EAAOG,gBAAgBL,GAAMZ,EAAM,IAAIC,MAC1KD,EAAIv0B,iBAAiB,OAAQ,KACzB+0B,EAASC,QAAS,EAClBD,EAASvrC,QAAU+qC,EACnB9Y,EAAQsZ,GACRM,EAAOI,gBAAgBpZ,KAE3BkY,EAAIv0B,iBAAiB,QAAS/U,UAC1BoqC,EAAOI,gBAAgBpZ,GACvB,MAAMqZ,EAAOp3B,OAAOC,OAAOD,OAAOC,OAAO,GAAI5B,GAAQ,CAAE4J,OAAO,EAAO+tB,SAAS,UACxED,GAAUqB,GAChBX,EAASC,QAAS,EAClBD,EAASvrC,QAAUksC,EAAKlsC,QACxBiyB,EAAQsZ,KAEZR,EAAIE,IAAMpY,IC1EX,MAAM,GACT,cACIl6B,KAAKwzC,QAAU,GAEnB,SAAShgC,EAAWgH,GAChB,MAAMi5B,EAAkBzzC,KAAK0zC,UAAUlgC,GACnB,OAApBigC,QAAgD,IAApBA,GAAsCA,EAAgB1qB,OAAOloB,KAAK2Z,GAElG,UACIxa,KAAKwzC,QAAU,GAEnB,KAAKlhC,EAASxF,EAAUnD,EAAQyG,GAC5B,IAAI3P,EACJ,MAAM+Z,EAAQ1N,EAAS0N,MAAOnT,EAAoB,OAAVmT,QAA4B,IAAVA,OAAmB,EAASA,EAAMnT,QAC5F,IAAKA,EACD,OAEJ,MAAMmuB,EAA6E,QAApE/0B,EAAe,OAAV+Z,QAA4B,IAAVA,OAAmB,EAASA,EAAMgb,aAA0B,IAAP/0B,EAAgBA,EAAK,EAAGsT,EAAM,CACrHpS,GAAIgI,EACJlI,GAAIkI,GAER2I,EAAQqhC,YAAcvjC,EACtBkC,EAAQshC,UAAUvsC,EAAS0M,EAAIpS,EAAGoS,EAAItS,EAAY,EAATkI,EAAsB,EAATA,EAAc6rB,GACpEljB,EAAQqhC,YAAc,EAE1B,UAAUngC,GACN,MAAMigC,EAAkBzzC,KAAKwzC,QAAQnmC,KAAMzF,GAAMA,EAAE0kB,KAAO9Y,EAAU8Y,IACpE,OAAKmnB,IACDzzC,KAAKwzC,QAAQ3yC,KAAK,CACdyrB,GAAI9Y,EAAU8Y,GACdvD,OAAQ,KAEL/oB,KAAK0zC,UAAUlgC,IAM9B,gBACI,OAAO,GAEX,UAAU1G,GACN,GAAuB,UAAnBA,EAASsI,OAAwC,WAAnBtI,EAASsI,MACvC,OAEJ,MAAM5B,EAAY1G,EAAS0G,UAAWuV,EAAS/oB,KAAK0zC,UAAUlgC,GAAWuV,OAAQ2pB,EAAY5lC,EAASmhB,UAAWzT,EAAQuO,EAAO1b,KAAMzF,GAAMA,EAAEtF,SAAWowC,EAAUJ,KAC9J93B,GACDxa,KAAK6zC,eAAergC,EAAWk/B,GAAWnM,KAAK,KAC3CvmC,KAAK4oB,UAAU9b,KAI3B,aAAa0G,EAAW1G,GACpB,IAAIrM,EACJ,GAAuB,UAAnBqM,EAASsI,OAAwC,WAAnBtI,EAASsI,MACvC,OAEJ,MAAM2T,EAAS/oB,KAAK0zC,UAAUlgC,GAAWuV,OAAQ2pB,EAAY5lC,EAASmhB,UAAWpf,EAAQ/B,EAASkE,eAAgB8hC,EAAiD,QAAjCryC,EAAKiyC,EAAUI,oBAAiC,IAAPryC,EAAgBA,EAAKiyC,EAAUK,cAAev4B,EAAQuO,EAAO1b,KAAMzF,GAAMA,EAAEtF,SAAWowC,EAAUJ,KACtQ93B,IAGDA,EAAM23B,QACN7pC,WAAW,KACPtI,KAAK+vB,aAAavc,EAAW1G,KAIrC,WACI,IAAIrM,EAAI0F,EACR,IAAIysC,EAEAA,EADAp4B,EAAMs3B,SAAWjjC,QACA4jC,GAAkBj4B,EAAOk4B,EAAW7jC,EAAO/B,GAGjD,CACP+B,QACAvQ,KAAMkc,EACNnT,QAASmT,EAAMnT,QACfwrC,QAAQ,EACRrd,MAAOkd,EAAU1sC,MAAQ0sC,EAAUzsC,OACnC6sC,aAAcA,EACdxwC,OAAQowC,EAAUJ,KAGrBM,EAASpd,QACVod,EAASpd,MAAQ,GAErB,MAAM5gB,EAAiC,QAAzBnU,EAAKiyC,EAAU99B,YAAyB,IAAPnU,EAAgBA,EAAKqM,EAAS8H,KAAMM,EAAmC,QAA1B/O,EAAKusC,EAAUx9B,aAA0B,IAAP/O,EAAgBA,EAAK2G,EAASoI,MAAO28B,EAAa,CAC5Kr3B,MAAOo4B,EACPh+B,OACAM,SAEJpI,EAAS0N,MAAQq3B,EAAWr3B,MAC5B1N,EAAS8H,KAAOi9B,EAAWj9B,KAC3B9H,EAASoI,MAAQ28B,EAAW38B,OA3BhC,IA8BJ,qBAAqB1B,EAAWq+B,GAC5B,IAAIpxC,EACJ,MAAM6B,EAASuvC,EAAWS,IAC1B,IAAKhwC,EACD,MAAM,IAAIR,MAAM,oCAEpB,IACI,MAAM0Y,EAAQ,CACVlY,OAAQA,EACRjE,KAAMiE,EAAO2vC,UAAU3vC,EAAOnB,OAAS,GACvCijB,OAAO,EACP+tB,SAAS,GAEbnyC,KAAK8zC,SAAStgC,EAAWgH,GACzB,MAAMu5B,GAAgD,QAAlCtzC,EAAKoxC,EAAWiB,oBAAiC,IAAPryC,EAAgBA,EAAKoxC,EAAWkB,eAAiBR,GAAmBL,SAC5H6B,EAAUv5B,GAEpB,MAAOrU,GACH,MAAM,IAAIrE,MAAM,uBAAuB+vC,EAAWS,mBCnHvDxpC,eAAe+qC,GAAexuB,GACjC,MAAM2uB,EAAc,IAAI,SAClB3uB,EAAOigB,SAAS,QAAS0O,SACzB3uB,EAAOigB,SAAS,SAAU0O,GCH7B,MAAM,WAAkB,GAC3B,cACIjxC,QACA/C,KAAKoS,MAAO,EAEhB,KAAK9T,GACIA,IAGLyE,MAAMoG,KAAK7K,QACOuD,IAAdvD,EAAK8T,OACLpS,KAAKoS,KAAO9T,EAAK8T,QCXtB,MAAM,WAAqB,GAC9B,cACIrP,QACA/C,KAAKiD,OAAOwB,aAAe,KAC3BzE,KAAKoS,MAAO,EAEhB,KAAK9T,GACIA,IAGLyE,MAAMoG,KAAK7K,QACOuD,IAAdvD,EAAK8T,OACLpS,KAAKoS,KAAO9T,EAAK8T,QCXtB,MAAM,GACT,cACIpS,KAAKgmB,MAAQ,EACbhmB,KAAKihB,MAAQ,IAAI,GACjBjhB,KAAKikB,SAAW,IAAI,GAExB,KAAK3lB,GACIA,SAGcuD,IAAfvD,EAAK0nB,QACLhmB,KAAKgmB,MAAQ1nB,EAAK0nB,OAEtBhmB,KAAKihB,MAAM9X,KAAK7K,EAAK2iB,OACrBjhB,KAAKikB,SAAS9a,KAAK7K,EAAK2lB,YCdzB,MAAM,GACT,YAAYzQ,GACRxT,KAAKwT,UAAYA,EAErB,KAAK1G,GACD,MAAM0G,EAAYxT,KAAKwT,UAAWqa,EAAmB/gB,EAASvI,QAAS0vC,EAAcpmB,EAAiB+T,KACjGqS,IAGLnnC,EAAS80B,KAAO,CACZ3gB,MAAOzN,EAAUgC,OAAO5D,aAChBxN,GAAc6vC,EAAYhzB,MAAM7d,QAAU6wC,EAAYhzB,MAAM7O,KAAO,EAAI/O,KACvEmQ,EAAUgC,OAAO5D,aACjB,IACF,EACNsiC,UAAW,EACXjwB,SAAUzQ,EAAUgC,OAAO5D,aACnBxN,GAAc6vC,EAAYhwB,SAAS7gB,QAAU6wC,EAAYhwB,SAAS7R,KAAO,EAAI/O,KAC7EmQ,EAAUgC,OAAO5D,aACjB,IACF,EACNuiC,KAAM,EACNnuB,MAAOiuB,EAAYjuB,OAEnBlZ,EAAS80B,KAAK3d,UAAY,IAC1BnX,EAAS80B,KAAK3d,UAAY,GAE1BnX,EAAS80B,KAAK5b,OAAS,IACvBlZ,EAAS80B,KAAK5b,OAAS,GAEvBlZ,EAAS80B,OACT90B,EAASyL,SAAWzL,EAAS80B,KAAK3gB,MAAQ,IAGlD,UAAUnU,GACN,OAAQA,EAAS0L,UAErB,YAAYjU,KAAY+F,GACf/F,EAAQq9B,OACTr9B,EAAQq9B,KAAO,IAAI,IAEvB,IAAK,MAAMt/B,KAAUgI,EACjB/F,EAAQq9B,KAAKz4B,KAAgB,OAAX7G,QAA8B,IAAXA,OAAoB,EAASA,EAAOs/B,MAGjF,OAAO90B,EAAU2G,GACb,IAAKzT,KAAK8rB,UAAUhf,KAAcA,EAAS80B,KACvC,OAEJ,MAAMA,EAAO90B,EAAS80B,KACtB,IAAIwS,GAAc,EAClB,GAAItnC,EAASyL,SAAU,CAEnB,GADAqpB,EAAKsS,WAAazgC,EAAMrQ,QACpBw+B,EAAKsS,WAAapnC,EAAS80B,KAAK3gB,OAOhC,OANAmzB,GAAc,EACdtnC,EAASyL,UAAW,EACpBqpB,EAAKsS,UAAY,EACjBtS,EAAKuS,KAAO,EAMpB,IAAuB,IAAnBvS,EAAK3d,SACL,OAEJ,GAAInX,EAASyL,SACT,OAQJ,GANI67B,EACAxS,EAAKuS,KAAO,EAGZvS,EAAKuS,MAAQ1gC,EAAMrQ,MAEnBw+B,EAAKuS,KAAOvS,EAAK3d,SACjB,OAMJ,GAJA2d,EAAKuS,KAAO,EACRrnC,EAAS80B,KAAK5b,MAAQ,GACtBlZ,EAAS80B,KAAK5b,QAEU,IAAxBlZ,EAAS80B,KAAK5b,MAEd,YADAlZ,EAASoX,UAGb,MAAM+K,EAAajvB,KAAKwT,UAAU8H,OAAOvV,KAAMsuC,EAAahwC,GAAc,EAAG4qB,EAAWjpB,OAAQsuC,EAAcjwC,GAAc,EAAG4qB,EAAWjpB,OAC1I8G,EAAS3H,SAASxD,EAAIqC,EAAcqwC,GACpCvnC,EAAS3H,SAAS1D,EAAIuC,EAAcswC,GACpCxnC,EAASyL,UAAW,EACpBqpB,EAAKsS,UAAY,EACjBtS,EAAKuS,KAAO,EACZrnC,EAASkf,QACT,MAAMioB,EAAcnnC,EAASvI,QAAQq9B,KACjCqS,IACArS,EAAK3gB,MAAiD,IAAzC7c,GAAc6vC,EAAYhzB,MAAM7d,OAC7Cw+B,EAAK3d,SAAuD,IAA5C7f,GAAc6vC,EAAYhwB,SAAS7gB,SCjGxD0F,eAAeyrC,GAAgBlvB,SAC5BA,EAAO6X,mBAAmB,OAAS1pB,GAAc,IAAI,GAAYA,ICFpE,MAAMghC,GACT,KAAKliC,EAASxF,EAAUnD,GACpB2I,EAAQI,QAAQ/I,EAAS,EAAG,GAC5B2I,EAAQK,OAAOhJ,EAAS,EAAG,GAE/B,gBACI,OAAO,GCLRb,eAAe2rC,GAAcpvB,SAC1BA,EAAOigB,SAAS,OAAQ,IAAIkP,ICDtC,SAASE,GAAa5nC,EAAU1J,EAAOuxC,EAAU/Q,GAC7C,OAAQ92B,EAASvI,QAAQ6L,QAAQqB,UAAUyS,SACvC,IAAK,MACG9gB,GAASwgC,GACT92B,EAASoX,UAEb,MACJ,IAAK,MACG9gB,GAASuxC,GACT7nC,EAASoX,UAEb,OAGZ,SAAS0wB,GAAc9nC,EAAU2G,GAC7B,IAAIhT,EAAI0F,EAAI/G,EAAIgH,EAAI5G,EAAI+T,EACxB,IAAKzG,EAASsD,QACV,OAEJ,MAAMukC,EAAW7nC,EAASsD,QAAQ5M,IAAKogC,EAAW92B,EAASsD,QAAQ3M,IAAKyO,EAA0C,QAAjCzR,EAAKqM,EAASsD,QAAQ8B,aAA0B,IAAPzR,EAAgBA,EAAK,EAC/I,KAAIqM,EAAS0L,YACR1L,EAASsD,QAAQ5L,SACqB,QAApC2B,EAAK2G,EAASsD,QAAQye,gBAA6B,IAAP1oB,EAAgBA,EAAK,GAAK,IAAwC,QAAjC/G,EAAK0N,EAASsD,QAAQwe,aAA0B,IAAPxvB,EAAgBA,EAAK,IAA2C,QAApCgH,EAAK0G,EAASsD,QAAQye,gBAA6B,IAAPzoB,EAAgBA,EAAK,IAF1N,CAKA,OAAQ0G,EAASsD,QAAQ+B,QACrB,IAAK,aACGrF,EAASsD,QAAQhN,OAASwgC,GAC1B92B,EAASsD,QAAQ+B,OAAS,aACrBrF,EAASsD,QAAQwe,QAClB9hB,EAASsD,QAAQwe,MAAQ,GAE7B9hB,EAASsD,QAAQwe,SAGjB9hB,EAASsD,QAAQhN,QAA+C,QAApC5D,EAAKsN,EAASsD,QAAQpJ,gBAA6B,IAAPxH,EAAgBA,EAAK,GAAKiU,EAAMxM,OAE5G,MACJ,IAAK,aACG6F,EAASsD,QAAQhN,OAASuxC,GAC1B7nC,EAASsD,QAAQ+B,OAAS,aACrBrF,EAASsD,QAAQwe,QAClB9hB,EAASsD,QAAQwe,MAAQ,GAE7B9hB,EAASsD,QAAQwe,SAGjB9hB,EAASsD,QAAQhN,QAA+C,QAApCmQ,EAAKzG,EAASsD,QAAQpJ,gBAA6B,IAAPuM,EAAgBA,EAAK,GAAKE,EAAMxM,OAE5G,MAEJ6F,EAASsD,QAAQpJ,UAAuC,IAA3B8F,EAASsD,QAAQ8B,QAC9CpF,EAASsD,QAAQpJ,UAAYkL,GAEjCwiC,GAAa5nC,EAAUA,EAASsD,QAAQhN,MAAOuxC,EAAU/Q,GACpD92B,EAAS0L,YACV1L,EAASsD,QAAQhN,MAAQE,EAAMwJ,EAASsD,QAAQhN,MAAOuxC,EAAU/Q,KAGlE,MAAM,GACT,YAAYpwB,GACRxT,KAAKwT,UAAYA,EAErB,KAAK1G,GACD,MAAM+nC,EAAiB/nC,EAASvI,QAAQ6L,QACxCtD,EAASsD,QAAU,CACf5L,OAAQqwC,EAAepjC,UAAUjN,OACjCf,IAAKS,GAAY2wC,EAAezxC,OAChCI,IAAKW,GAAY0wC,EAAezxC,OAChCA,MAAOgB,GAAcywC,EAAezxC,OACpCwrB,MAAO,EACPC,SAAUzqB,GAAcywC,EAAepjC,UAAUuU,QAErD,MAAM8uB,EAAmBD,EAAepjC,UACxC,GAAIqjC,EAAiBtwC,OAAQ,CACzBsI,EAASsD,QAAQ8B,MAAQ,EAAI9N,GAAc0wC,EAAiB5iC,OAC5DpF,EAASsD,QAAQ+B,OAAS,aAC1B,MAAM4iC,EAAeF,EAAezxC,MAGpC,OAFA0J,EAASsD,QAAQ5M,IAAMW,GAAY4wC,GACnCjoC,EAASsD,QAAQ3M,IAAMS,GAAY6wC,GAC3BD,EAAiBltB,YACrB,IAAK,MACD9a,EAASsD,QAAQhN,MAAQ0J,EAASsD,QAAQ5M,IAC1CsJ,EAASsD,QAAQ+B,OAAS,aAC1B,MACJ,IAAK,SACDrF,EAASsD,QAAQhN,MAAQY,EAAc8I,EAASsD,SAChDtD,EAASsD,QAAQ+B,OACb9O,KAAe,GAAM,aAAe,aACxC,MACJ,IAAK,MACL,QACIyJ,EAASsD,QAAQhN,MAAQ0J,EAASsD,QAAQ3M,IAC1CqJ,EAASsD,QAAQ+B,OAAS,aAC1B,MAERrF,EAASsD,QAAQpJ,SACZ5C,GAAc0wC,EAAiB7iC,OAAS,IAAOjS,KAAKwT,UAAUgC,OAAO5D,aACrEkjC,EAAiB1iC,OAClBtF,EAASsD,QAAQpJ,UAAY3D,MAIzC,UAAUyJ,GACN,IAAIrM,EAAI0F,EAAI/G,EAAIgH,EAChB,OAAS0G,EAAS0L,YACb1L,EAASyL,YACRzL,EAASsD,SACXtD,EAASsD,QAAQ5L,UACsB,QAApC/D,EAAKqM,EAASsD,QAAQye,gBAA6B,IAAPpuB,EAAgBA,EAAK,IAAM,IAC/B,QAApC0F,EAAK2G,EAASsD,QAAQye,gBAA6B,IAAP1oB,EAAgBA,EAAK,GAAK,IAClC,QAAjC/G,EAAK0N,EAASsD,QAAQwe,aAA0B,IAAPxvB,EAAgBA,EAAK,IAA2C,QAApCgH,EAAK0G,EAASsD,QAAQye,gBAA6B,IAAPzoB,EAAgBA,EAAK,IAExJ,MAAM0G,GACEA,EAASsD,UACTtD,EAASsD,QAAQwe,MAAQ,GAGjC,OAAO9hB,EAAU2G,GACRzT,KAAK8rB,UAAUhf,IAGpB8nC,GAAc9nC,EAAU2G,IC1HzB3K,eAAeksC,GAAmB3vB,SAC/BA,EAAO6X,mBAAmB,UAAY1pB,GAAc,IAAI,GAAeA,ICD1E,SAASyhC,GAAiB32C,GAC7B,GAAqB,WAAjBA,EAAKmpB,SACY,sBAAjBnpB,EAAKmpB,SACY,qBAAjBnpB,EAAKmpB,SACY,UAAjBnpB,EAAKmpB,QACL,OAEAnpB,EAAKwL,OAAOG,MAAQ,EACpB3L,EAAKwO,SAAS3H,SAASxD,EAAIrD,EAAKyH,KAAOzH,EAAKoL,OAAO/H,EAE9CrD,EAAKwL,OAAOI,KAAO5L,EAAK2wB,WAAWjpB,QACxC1H,EAAKwO,SAAS3H,SAASxD,EAAIrD,EAAK2wB,WAAWjpB,MAAQ1H,EAAKyH,KAAOzH,EAAKoL,OAAO/H,GAE/E,MAAMqF,EAAW1I,EAAKwO,SAAS9F,SAASrF,EACxC,IAAIwF,GAAU,EACd,GAAwB,UAAnB7I,EAAK4G,WAAyB5G,EAAKwL,OAAOG,OAAS3L,EAAK2wB,WAAWjpB,OAASgB,EAAW,GACpE,SAAnB1I,EAAK4G,WAAwB5G,EAAKwL,OAAOI,MAAQ,GAAKlD,EAAW,EAAI,CACtE,MAAMkuC,EAAc5wC,GAAShG,EAAKwO,SAASvI,QAAQqH,OAAOC,YAC1DvN,EAAKwO,SAAS9F,SAASrF,IAAMuzC,EAC7B/tC,GAAU,EAEd,IAAKA,EACD,OAEJ,MAAMguC,EAAS72C,EAAKoL,OAAO/H,EAAIrD,EAAKyH,KAChCzH,EAAKwL,OAAOG,OAAS3L,EAAK2wB,WAAWjpB,MACrC1H,EAAKwO,SAAS3H,SAASxD,EAAIrD,EAAK2wB,WAAWjpB,MAAQmvC,EAE9C72C,EAAKwL,OAAOI,MAAQ,IACzB5L,EAAKwO,SAAS3H,SAASxD,EAAIwzC,GAEV,UAAjB72C,EAAKmpB,SACLnpB,EAAKwO,SAASoX,UAGf,SAASkxB,GAAe92C,GAC3B,GAAqB,WAAjBA,EAAKmpB,SACY,oBAAjBnpB,EAAKmpB,SACY,mBAAjBnpB,EAAKmpB,SACY,UAAjBnpB,EAAKmpB,QACL,OAEAnpB,EAAKwL,OAAOK,OAAS,EACrB7L,EAAKwO,SAAS3H,SAAS1D,EAAInD,EAAKyH,KAAOzH,EAAKoL,OAAOjI,EAE9CnD,EAAKwL,OAAOE,IAAM1L,EAAK2wB,WAAWhpB,SACvC3H,EAAKwO,SAAS3H,SAAS1D,EAAInD,EAAK2wB,WAAWhpB,OAAS3H,EAAKyH,KAAOzH,EAAKoL,OAAOjI,GAEhF,MAAMuF,EAAW1I,EAAKwO,SAAS9F,SAASvF,EACxC,IAAI0F,GAAU,EACd,GAAwB,WAAnB7I,EAAK4G,WAA0B5G,EAAKwL,OAAOK,QAAU7L,EAAK2wB,WAAWhpB,QAAUe,EAAW,GACvE,QAAnB1I,EAAK4G,WAAuB5G,EAAKwL,OAAOE,KAAO,GAAKhD,EAAW,EAAI,CACpE,MAAMkuC,EAAc5wC,GAAShG,EAAKwO,SAASvI,QAAQqH,OAAOE,UAC1DxN,EAAKwO,SAAS9F,SAASvF,IAAMyzC,EAC7B/tC,GAAU,EAEd,IAAKA,EACD,OAEJ,MAAMguC,EAAS72C,EAAKoL,OAAOjI,EAAInD,EAAKyH,KAChCzH,EAAKwL,OAAOK,QAAU7L,EAAK2wB,WAAWhpB,OACtC3H,EAAKwO,SAAS3H,SAAS1D,EAAInD,EAAK2wB,WAAWhpB,OAASkvC,EAE/C72C,EAAKwL,OAAOE,KAAO,IACxB1L,EAAKwO,SAAS3H,SAAS1D,EAAI0zC,GAEV,UAAjB72C,EAAKmpB,SACLnpB,EAAKwO,SAASoX,UClEf,MAAM,GACT,YAAY1Q,GACRxT,KAAKwT,UAAYA,EACjBxT,KAAK2lB,MAAQ,CACT,SACA,kBACA,oBACA,iBACA,mBACA,SAGR,OAAO7Y,EAAU5H,EAAWuO,EAAOgU,GAC/B,IAAKznB,KAAK2lB,MAAMgf,SAASld,GACrB,OAEJ,MAAMjU,EAAYxT,KAAKwT,UACvB,IAAI+O,GAAU,EACd,IAAK,MAAO,CAAE3M,KAAWpC,EAAUqH,QAI/B,QAH8BhZ,IAA1B+T,EAAOy/B,iBACP9yB,EAAU3M,EAAOy/B,eAAevoC,EAAU2G,EAAOvO,IAEjDqd,EACA,MAGR,GAAIA,EACA,OAEJ,MAAMxO,EAAMjH,EAAStB,cAAe9B,EAASoD,EAASpD,OAAQ3D,EAAO+G,EAASrB,YAAa3B,EAASD,GAAgBkK,EAAKhO,GAAOkpB,EAAazb,EAAU8H,OAAOvV,KAC9JkvC,GAAiB,CAAEnoC,WAAU2a,UAASviB,YAAW4E,SAAQmlB,aAAYvlB,SAAQ3D,SAC7EqvC,GAAe,CAAEtoC,WAAU2a,UAASviB,YAAW4E,SAAQmlB,aAAYvlB,SAAQ3D,UChC5E,MAAM,GACT,YAAYyN,GACRxT,KAAKwT,UAAYA,EACjBxT,KAAK2lB,MAAQ,CAAC,WAElB,OAAO7Y,EAAU5H,EAAWuO,EAAOgU,GAC/B,IAAKznB,KAAK2lB,MAAMgf,SAASld,GACrB,OAEJ,MAAMjU,EAAYxT,KAAKwT,UACvB,OAAQ1G,EAAS4gB,SACb,IAAK,SACL,IAAK,UACD,GAAIlkB,GAAcsD,EAAS3H,SAAUqO,EAAU8H,OAAOvV,KAAM,EAAOP,OAAQsH,EAASrB,YAAavG,GAC7F,OAEJ,MACJ,IAAK,SAAU,CACX,MAAM,GAAEL,EAAE,GAAEC,GAAOJ,GAAaoI,EAAS3H,SAAU2H,EAASoiB,aACpDvtB,EAAG2zC,EAAI7zC,EAAG8zC,GAAOzoC,EAAS9F,SAClC,GAAKsuC,EAAK,GAAKzwC,EAAKiI,EAASoiB,WAAWvlB,QACnC4rC,EAAK,GAAKzwC,EAAKgI,EAASoiB,WAAWvlB,QACnC2rC,GAAM,GAAKzwC,GAAMiI,EAASoiB,WAAWvlB,QACrC4rC,GAAM,GAAKzwC,GAAMgI,EAASoiB,WAAWvlB,OACtC,OAEJ,OAGR6J,EAAUqE,UAAUO,OAAOtL,OAAUjL,GAAW,IC7BjD,MAAM,GACT,YAAY2R,GACRxT,KAAKwT,UAAYA,EACjBxT,KAAK2lB,MAAQ,CAAC,QAElB,OAAO7Y,EAAU5H,EAAWuO,EAAOgU,GAC/B,IAAKznB,KAAK2lB,MAAMgf,SAASld,GACrB,OAEJ,GAAK3a,EAASvI,QAAQuT,KAAK/S,SAAS8G,aACjB,SAAd3G,GAAsC,UAAdA,IACxB4H,EAASvI,QAAQuT,KAAK/S,SAAS+G,WACb,QAAd5G,GAAqC,WAAdA,GAC5B,OAEJ,MAAMwiC,EAAiB56B,EAASvI,QAAQuT,KAAKmP,QAASzT,EAAYxT,KAAKwT,UACjEyb,EAAazb,EAAU8H,OAAOvV,KAC9ByvC,EAAU1oC,EAASrB,YACzB,GAAKi8B,EAAeljC,OAWf,CACD,MAAMW,EAAW2H,EAAS3H,WACpBuiC,EAAe/gB,SACjBxhB,EAAS1D,EAAIwtB,EAAWhpB,OAASuvC,GACnB,WAAdtwC,GACCwiC,EAAe/gB,SAAWxhB,EAAS1D,GAAK+zC,GAAyB,QAAdtwC,IACpDsO,EAAUqE,UAAUO,OAAOtL,OAjBP,CACxB,GAAKA,EAAS9F,SAASvF,EAAI,GAAKqL,EAAS3H,SAAS1D,GAAKwtB,EAAWhpB,OAASuvC,GACtE1oC,EAAS9F,SAASvF,EAAI,GAAKqL,EAAS3H,SAAS1D,IAAM+zC,GACnD1oC,EAAS9F,SAASrF,EAAI,GAAKmL,EAAS3H,SAASxD,GAAKstB,EAAWjpB,MAAQwvC,GACrE1oC,EAAS9F,SAASrF,EAAI,GAAKmL,EAAS3H,SAASxD,IAAM6zC,EACpD,OAEChsC,GAAcsD,EAAS3H,SAAUqO,EAAU8H,OAAOvV,KAAM,EAAOP,OAAQgwC,EAAStwC,IACjFsO,EAAUqE,UAAUO,OAAOtL,KC1BpC,MAAM,GACT,YAAY0G,GACRxT,KAAKwT,UAAYA,EACjBxT,KAAK2lB,MAAQ,CAAC,OAElB,OAAO7Y,EAAU5H,EAAWuO,EAAOgU,GAC/B,IAAKznB,KAAK2lB,MAAMgf,SAASld,GACrB,OAEJ,MAAMjU,EAAYxT,KAAKwT,UACvB,OAAQ1G,EAAS4gB,SACb,IAAK,SAAU,CACX,MAAQ/rB,EAAG2zC,EAAI7zC,EAAG8zC,GAAOzoC,EAAS9F,SAC5ByuC,EAAU,EAAOjwC,OACvBiwC,EAAQt0C,OAAS2L,EAASoiB,WAAWvlB,OACrC8rC,EAAQvzC,MAAQ4K,EAAS9F,SAAS9E,MAAQF,KAAKqD,GAC/CowC,EAAQhW,MAAM,EAAO19B,OAAO+K,EAASoiB,aACrC,MAAM,GAAErqB,EAAE,GAAEC,GAAOJ,GAAaoI,EAAS3H,SAAUswC,GACnD,GAAKH,GAAM,GAAKzwC,GAAM,GAAO0wC,GAAM,GAAKzwC,GAAM,GAAOwwC,GAAM,GAAKzwC,GAAM,GAAO0wC,GAAM,GAAKzwC,GAAM,EAC1F,OAEJgI,EAAS3H,SAASxD,EAAIK,KAAK+B,MAAMC,EAAc,CAC3CR,IAAK,EACLC,IAAK+P,EAAU8H,OAAOvV,KAAKC,SAE/B8G,EAAS3H,SAAS1D,EAAIO,KAAK+B,MAAMC,EAAc,CAC3CR,IAAK,EACLC,IAAK+P,EAAU8H,OAAOvV,KAAKE,UAE/B,MAAQpB,GAAI6wC,EAAO5wC,GAAI6wC,GAAUjxC,GAAaoI,EAAS3H,SAAU2H,EAASoiB,YAC1EpiB,EAAS5H,UAAYlD,KAAKC,OAAO0zC,GAAQD,GACzC5oC,EAAS9F,SAAS9E,MAAQ4K,EAAS5H,UACnC,MAEJ,QACI,GAAIsE,GAAcsD,EAAS3H,SAAUqO,EAAU8H,OAAOvV,KAAM,EAAOP,OAAQsH,EAASrB,YAAavG,GAC7F,OAEJ,OAAQ4H,EAAS4gB,SACb,IAAK,UAAW,CACZ5gB,EAAS3H,SAASxD,EACdK,KAAK+B,MAAMC,EAAc,CACrBR,KAAMsJ,EAASoiB,WAAWvlB,OAC1BlG,IAAKqJ,EAASoiB,WAAWvlB,UACvBmD,EAASoiB,WAAWvtB,EAC9BmL,EAAS3H,SAAS1D,EACdO,KAAK+B,MAAMC,EAAc,CACrBR,KAAMsJ,EAASoiB,WAAWvlB,OAC1BlG,IAAKqJ,EAASoiB,WAAWvlB,UACvBmD,EAASoiB,WAAWztB,EAC9B,MAAM,GAAEoD,EAAE,GAAEC,GAAOJ,GAAaoI,EAAS3H,SAAU2H,EAASoiB,YACxDpiB,EAASoiB,WAAWvlB,SACpBmD,EAAS5H,UAAYlD,KAAKC,MAAM6C,EAAID,GACpCiI,EAAS9F,SAAS9E,MAAQ4K,EAAS5H,WAEvC,MAEJ,IAAK,SAAU,CACX,MAAM0wC,EAAO9oC,EAASvI,QAAQuT,KAAKyP,KAAM0H,EAAazb,EAAU8H,OAAOvV,KAAM8vC,EAAS,CAClF1rC,OAAQ8kB,EAAWhpB,OAAS6G,EAASrB,YAAcqB,EAASpD,OAAOjI,EACnEyI,MAAO4C,EAASrB,YAAcqB,EAASpD,OAAO/H,EAC9CsI,MAAOglB,EAAWjpB,MAAQ8G,EAASrB,YAAcqB,EAASpD,OAAO/H,EACjEqI,KAAM8C,EAASrB,YAAcqB,EAASpD,OAAOjI,GAC9Cq0C,EAAYhpC,EAASrB,YAAasqC,EAAalsC,GAAgBiD,EAAS3H,SAAU2wC,GACnE,UAAd5wC,GACA6wC,EAAW7rC,KAAO+kB,EAAWjpB,MAAQ8G,EAASpD,OAAO/H,GACrDmL,EAAS3H,SAASxD,EAAIk0C,EAAO3rC,KAC7B4C,EAASiiB,gBAAgBptB,EAAImL,EAAS3H,SAASxD,EAC1Ci0C,IACD9oC,EAAS3H,SAAS1D,EAAI4B,IAAc4rB,EAAWhpB,OAC/C6G,EAASiiB,gBAAgBttB,EAAIqL,EAAS3H,SAAS1D,IAGhC,SAAdyD,GAAwB6wC,EAAW9rC,OAAS6C,EAASpD,OAAO/H,IACjEmL,EAAS3H,SAASxD,EAAIk0C,EAAO5rC,MAC7B6C,EAASiiB,gBAAgBptB,EAAImL,EAAS3H,SAASxD,EAC1Ci0C,IACD9oC,EAAS3H,SAAS1D,EAAI4B,IAAc4rB,EAAWhpB,OAC/C6G,EAASiiB,gBAAgBttB,EAAIqL,EAAS3H,SAAS1D,IAGrC,WAAdyD,GACA6wC,EAAW/rC,IAAMilB,EAAWhpB,OAAS6G,EAASpD,OAAOjI,GAChDm0C,IACD9oC,EAAS3H,SAASxD,EAAI0B,IAAc4rB,EAAWjpB,MAC/C8G,EAASiiB,gBAAgBptB,EAAImL,EAAS3H,SAASxD,GAEnDmL,EAAS3H,SAAS1D,EAAIo0C,EAAO7rC,IAC7B8C,EAASiiB,gBAAgBttB,EAAIqL,EAAS3H,SAAS1D,GAE5B,QAAdyD,GAAuB6wC,EAAW5rC,QAAU2C,EAASpD,OAAOjI,IAC5Dm0C,IACD9oC,EAAS3H,SAASxD,EAAI0B,IAAc4rB,EAAWjpB,MAC/C8G,EAASiiB,gBAAgBptB,EAAImL,EAAS3H,SAASxD,GAEnDmL,EAAS3H,SAAS1D,EAAIo0C,EAAO1rC,OAC7B2C,EAASiiB,gBAAgBttB,EAAIqL,EAAS3H,SAAS1D,GAEnD,OAGR,QClGT,MAAM,GACT,YAAY+R,GACRxT,KAAKwT,UAAYA,EACjBxT,KAAKib,SAAW,CACZ,IAAI,GAAczH,GAClB,IAAI,GAAeA,GACnB,IAAI,GAAWA,GACf,IAAI,GAAYA,IAGxB,QAEA,UAAU1G,GACN,OAAQA,EAAS0L,YAAc1L,EAASyL,SAE5C,OAAOzL,EAAU2G,GACb,IAAIhT,EAAI0F,EAAI/G,EAAIgH,EAChB,MAAM+gB,EAAWra,EAASvI,QAAQuT,KAAKqP,SACvCnnB,KAAKg2C,cAAclpC,EAAU2G,EAAkC,QAA1BhT,EAAK0mB,EAAShd,cAA2B,IAAP1J,EAAgBA,EAAK0mB,EAAS/oB,QAAS,UAC9G4B,KAAKg2C,cAAclpC,EAAU2G,EAAgC,QAAxBtN,EAAKghB,EAASjd,YAAyB,IAAP/D,EAAgBA,EAAKghB,EAAS/oB,QAAS,QAC5G4B,KAAKg2C,cAAclpC,EAAU2G,EAAiC,QAAzBrU,EAAK+nB,EAASld,aAA0B,IAAP7K,EAAgBA,EAAK+nB,EAAS/oB,QAAS,SAC7G4B,KAAKg2C,cAAclpC,EAAU2G,EAA+B,QAAvBrN,EAAK+gB,EAASnd,WAAwB,IAAP5D,EAAgBA,EAAK+gB,EAAS/oB,QAAS,OAE/G,cAAc0O,EAAU2G,EAAOgU,EAASviB,GACpC,IAAK,MAAM8V,KAAWhb,KAAKib,SACvBD,EAAQuY,OAAOzmB,EAAU5H,EAAWuO,EAAOgU,IC5BhD3e,eAAemtC,GAAoB5wB,SAChCA,EAAO6X,mBAAmB,WAAa1pB,GAAc,IAAI,GAAmBA,ICD/E,MAAM,GACT,QAEA,UAAU1G,GACN,OAASjF,OACJiF,EAAS0L,WACV1L,EAAS0G,UAAUkE,cAAc4H,cAAcQ,OAAO+B,QAAQgD,SAASrgB,OAE/E,KAAKsI,GACD,MAAM0G,EAAY1G,EAAS0G,UAAWjP,EAAUiP,EAAUkE,cAC1D,GAAI7P,OAAYtD,EAAQ+a,cAAcQ,OAAO+B,QAAQgD,SAASrgB,OAC1D,OAEJ,MAAM0xC,EAAgB3xC,EAAQ+a,cAAcQ,OAAO+B,QAAQgD,SAASD,MAAOpF,EAAWhM,EAAU8L,cAAcC,MAAMpa,SACpH,IAAKqa,EACD,OAEJ,MAAM22B,EAAe,CACjBx0C,EAAG6R,EAAU8H,OAAOvV,KAAKC,MAAQ,EACjCvE,EAAG+R,EAAU8H,OAAOvV,KAAKE,OAAS,GACnCmwC,EAAiB7xC,EAAQ+a,cAAcQ,OAAO+B,QAAQgD,SAASjB,OAAQ3c,EAAS6F,EAASrB,YAAcyqC,EAAeG,EAAiB,CACtI10C,GAAI6d,EAAS7d,EAAIw0C,EAAax0C,GAAKsF,EACnCxF,GAAI+d,EAAS/d,EAAI00C,EAAa10C,GAAKwF,GAEvC6F,EAASpD,OAAO/H,IAAM00C,EAAe10C,EAAImL,EAASpD,OAAO/H,GAAKy0C,EAC9DtpC,EAASpD,OAAOjI,IAAM40C,EAAe50C,EAAIqL,EAASpD,OAAOjI,GAAK20C,GCzB/DttC,eAAewtC,GAAkBjxB,GACpCA,EAAOojB,SAAS,WAAY,IAAM,IAAI,ICDnC,MAAM,WAAkB1K,GAC3B,YAAYvqB,GACRzQ,MAAMyQ,GAEV,SAEA,QAEA,eAAexH,GACX,IAAIvL,EACJ,MAAM+S,EAAYxT,KAAKwT,UAAWzO,EAAgD,QAApCtE,EAAKuL,EAAGwJ,OAAOigB,uBAAoC,IAAPh1B,EAAgBA,EAAK+S,EAAUgC,OAAOigB,gBAAiBrpB,EAAOJ,EAAGR,cAAerD,EAAQqL,EAAUqE,UAAUkb,SAASiE,YAAY5qB,EAAMrH,GACjO,IAAK,MAAMkH,KAAM9D,EAAO,CACpB,GAAI6D,IAAOC,IAAOA,EAAG1H,QAAQuT,KAAKiP,QAAQviB,QAAUyH,EAAGuM,WAAavM,EAAGsM,SACnE,SAEJ,MAAMlM,EAAOJ,EAAGT,eAAe,GAAE3G,EAAE,GAAEC,GAAOJ,GAAa0H,EAAMC,GAAOI,EAAST,EAAGzH,QAAQuT,KAAKiP,QAAQta,OAAQ8pC,EAAK1xC,GAAiB,IAAX4H,EAAO9K,GAAW60C,EAAK1xC,GAAiB,IAAX2H,EAAOhL,GAAWg1C,EAAWxqC,EAAGlG,KAAK3C,MAAQ4I,EAAGjG,KAAK3C,MAAOszC,EAAW,EAAID,EAClOzqC,EAAGhF,SAASrF,GAAK40C,EAAKE,EACtBzqC,EAAGhF,SAASvF,GAAK+0C,EAAKC,EACtBxqC,EAAGjF,SAASrF,GAAK40C,EAAKG,EACtBzqC,EAAGjF,SAASvF,GAAK+0C,EAAKE,GAG9B,UAAU5pC,GACN,OAAOA,EAASvI,QAAQuT,KAAKiP,QAAQviB,OAEzC,UCzBGsE,eAAe6tC,GAAgCtxB,SAC5CA,EAAOyX,cAAc,mBAAqBtpB,GAAc,IAAI,GAAUA,ICDhF,SAASojC,GAAa5qC,EAAIsD,EAAIrD,EAAI4qC,EAAIpjC,EAAOgC,GACzC,MAAMxO,EAAS3D,EAAO0I,EAAGzH,QAAQijB,WAAWnB,OAAOpU,MAAQwB,EAAMxM,OAAU,GAAI,EAAG4vC,GAClF7qC,EAAGjG,KAAK3C,OAAS6D,EAAS,EAC1BgF,EAAGlG,KAAK3C,OAAS6D,EACb4vC,GAAMphC,IACNxJ,EAAGlG,KAAK3C,MAAQ,EAChB6I,EAAGiY,WAGJ,SAASmC,GAAOra,EAAIC,EAAIwH,EAAOgC,GAClC,MAAMnG,EAAKtD,EAAGP,YAAaorC,EAAK5qC,EAAGR,iBACxB5J,IAAPyN,QAA2BzN,IAAPg1C,EACpB7qC,EAAGkY,eAESriB,IAAPyN,QAA2BzN,IAAPg1C,EACzB5qC,EAAGiY,eAESriB,IAAPyN,QAA2BzN,IAAPg1C,IACrBvnC,GAAMunC,EACND,GAAa5qC,EAAIsD,EAAIrD,EAAI4qC,EAAIpjC,EAAOgC,GAGpCmhC,GAAa3qC,EAAI4qC,EAAI7qC,EAAIsD,EAAImE,EAAOgC,ICtBzC,SAAS7J,GAAOI,EAAIC,GACvBF,GAAaT,GAA6BU,GAAKV,GAA6BW,ICDzE,SAASiY,GAAQlY,EAAIC,GAIxB,GAHKD,EAAGygB,aAAgBxgB,EAAGwgB,aACvB7gB,GAAOI,EAAIC,QAEQpK,IAAnBmK,EAAGP,kBAAgD5J,IAAnBoK,EAAGR,YACnCO,EAAGkY,eAEF,QAAuBriB,IAAnBmK,EAAGP,kBAAgD5J,IAAnBoK,EAAGR,YACxCQ,EAAGiY,eAEF,QAAuBriB,IAAnBmK,EAAGP,kBAAgD5J,IAAnBoK,EAAGR,YAA2B,CACnE,MAAMqrC,EAAU9qC,EAAGP,aAAeQ,EAAGR,YAAcO,EAAKC,EACxD6qC,EAAQ5yB,WCVT,SAAS6yB,GAAiB/qC,EAAIC,EAAIwH,EAAOgC,GAC5C,OAAQzJ,EAAGzH,QAAQijB,WAAW1c,MAC1B,IAAK,SACDub,GAAOra,EAAIC,EAAIwH,EAAOgC,GACtB,MAEJ,IAAK,SACD7J,GAAOI,EAAIC,GACX,MAEJ,IAAK,UACDiY,GAAQlY,EAAIC,GACZ,OCbL,MAAM,WAAiB8xB,GAC1B,YAAYvqB,GACRzQ,MAAMyQ,GAEV,SAEA,QAEA,eAAexH,EAAIyH,GACf,MAAMD,EAAYxT,KAAKwT,UAAWpH,EAAOJ,EAAGR,cAAewrC,EAAUhrC,EAAGP,YAAatD,EAAQqL,EAAUqE,UAAUkb,SAASiE,YAAY5qB,EAAgB,EAAV4qC,GAC5I,IAAK,MAAM/qC,KAAM9D,EAAO,CACpB,GAAI6D,IAAOC,IACNA,EAAG1H,QAAQijB,WAAWhjB,QACvBwH,EAAGzH,QAAQijB,WAAW1c,OAASmB,EAAG1H,QAAQijB,WAAW1c,MACrDmB,EAAGuM,WACHvM,EAAGsM,SACH,SAEJ,MAAMlM,EAAOJ,EAAGT,cAAeyrC,EAAUhrC,EAAGR,YAC5C,GAAIzJ,KAAKqvB,IAAIrvB,KAAKk1C,MAAM9qC,EAAK1K,GAAKM,KAAKk1C,MAAM7qC,EAAK3K,IAAMs1C,EAAUC,EAC9D,SAEJ,MAAM1lB,EAAOvsB,GAAYoH,EAAMC,GAAO8qC,EAAQH,EAAUC,EACpD1lB,EAAO4lB,GAGXJ,GAAiB/qC,EAAIC,EAAIwH,EAAOD,EAAUgC,OAAOC,aAGzD,UAAU3I,GACN,OAAOA,EAASvI,QAAQijB,WAAWhjB,OAEvC,UCjCGsE,eAAesuC,GAAmC/xB,SAC/CA,EAAOyX,cAAc,sBAAwBtpB,GAAc,IAAI,GAASA,ICD3E,MAAM,WAAmB,GAC5B,YAAY7R,EAAGF,EAAGkI,EAAQslB,GACtBlsB,MAAMpB,EAAGF,EAAGkI,GACZ3J,KAAKivB,WAAaA,EAClBjvB,KAAKivB,WAAa9S,OAAOC,OAAO,GAAI6S,GAExC,SAASxlB,GACL,GAAI1G,MAAMmvB,SAASzoB,GACf,OAAO,EAEX,MAAM4tC,EAAQ,CACV11C,EAAG8H,EAAM9H,EAAI3B,KAAKivB,WAAWjpB,MAC7BvE,EAAGgI,EAAMhI,GAEb,GAAIsB,MAAMmvB,SAASmlB,GACf,OAAO,EAEX,MAAMC,EAAQ,CACV31C,EAAG8H,EAAM9H,EAAI3B,KAAKivB,WAAWjpB,MAC7BvE,EAAGgI,EAAMhI,EAAIzB,KAAKivB,WAAWhpB,QAEjC,GAAIlD,MAAMmvB,SAASolB,GACf,OAAO,EAEX,MAAMC,EAAQ,CACV51C,EAAG8H,EAAM9H,EACTF,EAAGgI,EAAMhI,EAAIzB,KAAKivB,WAAWhpB,QAEjC,OAAOlD,MAAMmvB,SAASqlB,GAE1B,WAAW3mB,GACP,GAAI7tB,MAAM4uB,WAAWf,GACjB,OAAO,EAEX,MAAMM,EAAON,EAAOO,EAASP,EAAOilB,EAAS,CACzCl0C,EAAGivB,EAAMzrB,SAASxD,EAAI3B,KAAKivB,WAAWjpB,MACtCvE,EAAGmvB,EAAMzrB,SAAS1D,EAAIzB,KAAKivB,WAAWhpB,QAE1C,QAAsBpE,IAAlBsvB,EAAOxnB,OAAsB,CAC7B,MAAM6tC,EAAe,IAAI,GAAO3B,EAAOl0C,EAAGk0C,EAAOp0C,EAAmB,EAAhB0vB,EAAOxnB,QAC3D,OAAO5G,MAAM4uB,WAAW6lB,GAEvB,QAAkB31C,IAAdqvB,EAAKnrB,KAAoB,CAC9B,MAAM0xC,EAAS,IAAI,GAAU5B,EAAOl0C,EAAGk0C,EAAOp0C,EAAqB,EAAlByvB,EAAKnrB,KAAKC,MAA8B,EAAnBkrB,EAAKnrB,KAAKE,QAChF,OAAOlD,MAAM4uB,WAAW8lB,GAE5B,OAAO,GC9CR,MAAM,GACT,cACIz3C,KAAKyU,KAAO,EACZzU,KAAK6O,MAAQ,IAAIwV,GACjBrkB,KAAK6O,MAAMzL,MAAQ,OACnBpD,KAAKwE,QAAS,EAElB,KAAKlG,GACIA,SAGauD,IAAdvD,EAAKmW,OACLzU,KAAKyU,KAAOnW,EAAKmW,MAErBzU,KAAK6O,MAAQwV,GAAatiB,OAAO/B,KAAK6O,MAAOvQ,EAAKuQ,YAC9BhN,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,UChBxB,MAAM,GACT,cACIxE,KAAKwE,QAAS,EACdxE,KAAK03C,UAAY,EAErB,KAAKp5C,GACIA,SAGcuD,IAAfvD,EAAKuQ,QACL7O,KAAK6O,MAAQwV,GAAatiB,OAAO/B,KAAK6O,MAAOvQ,EAAKuQ,aAElChN,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,aAEA3C,IAAnBvD,EAAKo5C,YACL13C,KAAK03C,UAAYp5C,EAAKo5C,gBAEL71C,IAAjBvD,EAAK8R,UACLpQ,KAAKoQ,QAAU9R,EAAK8R,WCjBzB,MAAM,GACT,cACIpQ,KAAKsR,OAAQ,EACbtR,KAAK6O,MAAQ,IAAIwV,GACjBrkB,KAAK6O,MAAMzL,MAAQ,OACnBpD,KAAKuR,SAAU,EACfvR,KAAK+E,SAAW,IAChB/E,KAAKwE,QAAS,EACdxE,KAAK03C,UAAY,EACjB13C,KAAKoQ,QAAU,EACfpQ,KAAK6T,OAAS,IAAI,GAClB7T,KAAK23C,UAAY,IAAI,GACrB33C,KAAKgG,MAAQ,EACbhG,KAAKunB,MAAO,EAEhB,KAAKjpB,GACIA,SAGWuD,IAAZvD,EAAKguB,KACLtsB,KAAKssB,GAAKhuB,EAAKguB,SAEAzqB,IAAfvD,EAAKgT,QACLtR,KAAKsR,MAAQhT,EAAKgT,OAEtBtR,KAAK6O,MAAQwV,GAAatiB,OAAO/B,KAAK6O,MAAOvQ,EAAKuQ,YAC7BhN,IAAjBvD,EAAKiT,UACLvR,KAAKuR,QAAUjT,EAAKiT,cAEF1P,IAAlBvD,EAAKyG,WACL/E,KAAK+E,SAAWzG,EAAKyG,eAELlD,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,aAEA3C,IAAnBvD,EAAKo5C,YACL13C,KAAK03C,UAAYp5C,EAAKo5C,gBAEL71C,IAAjBvD,EAAK8R,UACLpQ,KAAKoQ,QAAU9R,EAAK8R,SAExBpQ,KAAK6T,OAAO1K,KAAK7K,EAAKuV,QACtB7T,KAAK23C,UAAUxuC,KAAK7K,EAAKq5C,gBACN91C,IAAfvD,EAAK0H,QACLhG,KAAKgG,MAAQ1H,EAAK0H,YAEJnE,IAAdvD,EAAKipB,OACLvnB,KAAKunB,KAAOjpB,EAAKipB,QC/C7B,SAASqwB,GAAgBxrC,EAAMC,EAAMwrC,EAAa5oB,EAAY1H,GAC1D,IAAIxiB,EAAWC,GAAYoH,EAAMC,GACjC,IAAKkb,GAAQxiB,GAAY8yC,EACrB,OAAO9yC,EAEX,MAAM+yC,EAAS,CACXn2C,EAAG0K,EAAK1K,EAAIstB,EAAWjpB,MACvBvE,EAAG4K,EAAK5K,GAGZ,GADAsD,EAAWC,GAAYoH,EAAM0rC,GACzB/yC,GAAY8yC,EACZ,OAAO9yC,EAEX,MAAMgzC,EAAS,CACXp2C,EAAG0K,EAAK1K,EAAIstB,EAAWjpB,MACvBvE,EAAG4K,EAAK5K,EAAIwtB,EAAWhpB,QAG3B,GADAlB,EAAWC,GAAYoH,EAAM2rC,GACzBhzC,GAAY8yC,EACZ,OAAO9yC,EAEX,MAAMizC,EAAS,CACXr2C,EAAG0K,EAAK1K,EACRF,EAAG4K,EAAK5K,EAAIwtB,EAAWhpB,QAG3B,OADAlB,EAAWC,GAAYoH,EAAM4rC,GACtBjzC,EAEJ,MAAM,WAAeg5B,GACxB,YAAYvqB,GACRzQ,MAAMyQ,GACNxT,KAAKi4C,cAAgBzkC,EAEzB,SAEA,OACIxT,KAAKi4C,cAAcpgC,UAAUqgC,gBAAar2C,EAC1C7B,KAAKi4C,cAAcpgC,UAAUsgC,YAAc,IAAI53C,IAEnD,eAAeyL,GACX,IAAIvL,EACJ,IAAKuL,EAAGzH,QAAQmpC,MACZ,OAEJ1hC,EAAG0hC,MAAQ,GACX,MAAMthC,EAAOJ,EAAGR,cAAegI,EAAYxT,KAAKwT,UAAWyb,EAAazb,EAAU8H,OAAOvV,KACzF,GAAIqG,EAAKzK,EAAI,GAAKyK,EAAK3K,EAAI,GAAK2K,EAAKzK,EAAIstB,EAAWjpB,OAASoG,EAAK3K,EAAIwtB,EAAWhpB,OAC7E,OAEJ,MAAMmyC,EAAWpsC,EAAGzH,QAAQmpC,MAAOd,EAAawL,EAAShoC,QAASynC,EAAiD,QAAlCp3C,EAAKuL,EAAGwJ,OAAO6iC,qBAAkC,IAAP53C,EAAgBA,EAAK,EAAG8mB,EAAO6wB,EAAS7wB,KAAMqJ,EAAQrJ,EAC3K,IAAI,GAAWnb,EAAKzK,EAAGyK,EAAK3K,EAAGo2C,EAAa5oB,GAC5C,IAAI,GAAO7iB,EAAKzK,EAAGyK,EAAK3K,EAAGo2C,GAAc1vC,EAAQqL,EAAUqE,UAAUkb,SAAS5qB,MAAMyoB,GAC1F,IAAK,MAAM3kB,KAAM9D,EAAO,CACpB,MAAMmwC,EAAWrsC,EAAG1H,QAAQmpC,MAC5B,GAAI1hC,IAAOC,KACQ,OAAbqsC,QAAkC,IAAbA,OAAsB,EAASA,EAAS9zC,SAC/D4zC,EAAS9rB,KAAOgsB,EAAShsB,IACzBrgB,EAAGsM,UACHtM,EAAGuM,YACFvM,EAAGyhC,QACgD,IAApD1hC,EAAG0hC,MAAM9iC,IAAKhD,GAAMA,EAAEyC,aAAahJ,QAAQ4K,KACS,IAApDA,EAAGyhC,MAAM9iC,IAAKhD,GAAMA,EAAEyC,aAAahJ,QAAQ2K,GAC3C,SAEJ,MAAMK,EAAOJ,EAAGT,cAChB,GAAIa,EAAK1K,EAAI,GAAK0K,EAAK5K,EAAI,GAAK4K,EAAK1K,EAAIstB,EAAWjpB,OAASqG,EAAK5K,EAAIwtB,EAAWhpB,OAC7E,SAEJ,MAAMlB,EAAW6yC,GAAgBxrC,EAAMC,EAAMwrC,EAAa5oB,EAAY1H,GAAQ+wB,EAAS/wB,MACvF,GAAIxiB,EAAW8yC,EACX,OAEJ,MAAMjI,GAAe,EAAI7qC,EAAW8yC,GAAejL,EACnD5sC,KAAKu4C,SAASvsC,GACdA,EAAG0hC,MAAM7sC,KAAK,CACVwJ,YAAa4B,EACbmE,QAASw/B,KAIrB,UAAU9iC,GACN,IAAIrM,EACJ,SAA4C,QAAjCA,EAAKqM,EAASvI,QAAQmpC,aAA0B,IAAPjtC,OAAgB,EAASA,EAAG+D,QAEpF,qBAAqBD,KAAY+F,GAC7B,IAAI7J,EAAI0F,EACH5B,EAAQmpC,QACTnpC,EAAQmpC,MAAQ,IAAI,IAExB,IAAK,MAAMprC,KAAUgI,EACjB/F,EAAQmpC,MAAMvkC,KAAuL,QAAjLhD,EAA6E,QAAvE1F,EAAgB,OAAX6B,QAA8B,IAAXA,OAAoB,EAASA,EAAOorC,aAA0B,IAAPjtC,EAAgBA,EAAgB,OAAX6B,QAA8B,IAAXA,OAAoB,EAASA,EAAOqrC,kBAA+B,IAAPxnC,EAAgBA,EAAgB,OAAX7D,QAA8B,IAAXA,OAAoB,EAASA,EAAOsrC,aAGjS,SAEA,SAAS5hC,GACL,IAAKA,EAAGzH,QAAQmpC,MACZ,OAEJ,MAAMl6B,EAAYxT,KAAKi4C,cAAenI,EAAe9jC,EAAGzH,QAAQmpC,MAChE,IAAI58B,OAAgCjP,IAApBiuC,EAAaxjB,GACvB9Y,EAAUqE,UAAUqgC,WACpB1kC,EAAUqE,UAAUsgC,YAAYx3C,IAAImvC,EAAaxjB,IACvD,GAAIxb,EACA,OAEJ,MAAMO,EAAWy+B,EAAajhC,MAC9BiC,EAAYM,GAAmBC,EAAUy+B,EAAax+B,MAAOw+B,EAAav+B,cAClD1P,IAApBiuC,EAAaxjB,GACb9Y,EAAUqE,UAAUqgC,WAAapnC,EAGjC0C,EAAUqE,UAAUsgC,YAAYv3C,IAAIkvC,EAAaxjB,GAAIxb,IClH1DhI,eAAe0vC,GAAgBnzB,SAC5BA,EAAOyX,cAAc,iBAAmBtpB,GAAc,IAAI,GAAOA,ICDpE,SAASilC,GAAanmC,EAAStM,EAAOuM,EAAOC,EAAKib,EAAawB,EAAY1H,EAAM5T,EAAgBC,EAAWw7B,EAAWh/B,EAASyD,GACnI,IAAI6kC,GAAQ,EACZ,GAAI1zC,GAAYuN,EAAOC,IAAQib,EAC3Bpb,GAASC,EAASC,EAAOC,GACzBkmC,GAAQ,OAEP,GAAInxB,EAAM,CACX,IAAIoxB,EACAC,EACJ,MAAMC,EAAQ,CACVl3C,EAAG6Q,EAAI7Q,EAAIstB,EAAWjpB,MACtBvE,EAAG+Q,EAAI/Q,GAELq3C,EAAKp0C,GAAa6N,EAAOsmC,GAC/B,GAAIC,EAAG/zC,UAAY0oB,EAAa,CAC5B,MAAMsrB,EAAKxmC,EAAM9Q,EAAKq3C,EAAGh0C,GAAKg0C,EAAGj0C,GAAM0N,EAAM5Q,EAC7Cg3C,EAAM,CAAEh3C,EAAG,EAAGF,EAAGs3C,GACjBH,EAAM,CAAEj3C,EAAGstB,EAAWjpB,MAAOvE,EAAGs3C,OAE/B,CACD,MAAMC,EAAQ,CACVr3C,EAAG6Q,EAAI7Q,EACPF,EAAG+Q,EAAI/Q,EAAIwtB,EAAWhpB,QAEpBgzC,EAAKv0C,GAAa6N,EAAOymC,GAC/B,GAAIC,EAAGl0C,UAAY0oB,EAAa,CAC5B,MAAMsrB,EAAKxmC,EAAM9Q,EAAKw3C,EAAGn0C,GAAKm0C,EAAGp0C,GAAM0N,EAAM5Q,EACvCu3C,GAAMH,GAAME,EAAGn0C,GAAKm0C,EAAGp0C,IAC7B8zC,EAAM,CAAEh3C,EAAGu3C,EAAIz3C,EAAG,GAClBm3C,EAAM,CAAEj3C,EAAGu3C,EAAIz3C,EAAGwtB,EAAWhpB,YAE5B,CACD,MAAMkzC,EAAQ,CACVx3C,EAAG6Q,EAAI7Q,EAAIstB,EAAWjpB,MACtBvE,EAAG+Q,EAAI/Q,EAAIwtB,EAAWhpB,QAEpBmzC,EAAK10C,GAAa6N,EAAO4mC,GAC/B,GAAIC,EAAGr0C,UAAY0oB,EAAa,CAC5B,MAAMsrB,EAAKxmC,EAAM9Q,EAAK23C,EAAGt0C,GAAKs0C,EAAGv0C,GAAM0N,EAAM5Q,EACvCu3C,GAAMH,GAAMK,EAAGt0C,GAAKs0C,EAAGv0C,IAC7B8zC,EAAM,CAAEh3C,EAAGu3C,EAAIz3C,EAAGs3C,GAClBH,EAAM,CAAEj3C,EAAGg3C,EAAIh3C,EAAIstB,EAAWjpB,MAAOvE,EAAGk3C,EAAIl3C,EAAIwtB,EAAWhpB,UAInE0yC,GAAOC,IACPvmC,GAASC,EAASC,EAAOomC,GACzBtmC,GAASC,EAASE,EAAKomC,GACvBF,GAAQ,GAGhB,GAAKA,EAAL,CAQA,GALApmC,EAAQwC,UAAY9O,EAChB2N,IACArB,EAAQgC,yBAA2BV,GAEvCtB,EAAQ0C,YAAc7E,GAAgBi/B,EAAWh/B,GAC7CyD,EAAOrP,OAAQ,CACf,MAAM+P,EAAc3F,GAAgBiF,EAAOhF,OACvC0F,IACAjC,EAAQkC,WAAaX,EAAOY,KAC5BnC,EAAQiC,YAAcpE,GAAgBoE,IAG9CjC,EAAQuC,UAEL,SAASwkC,GAAiB/mC,EAASlG,EAAMC,EAAMitC,EAAM3lC,EAAgBC,EAAW2lC,EAAeC,GAClG3mC,GAAaP,EAASlG,EAAMC,EAAMitC,GAC9B3lC,IACArB,EAAQgC,yBAA2BV,GAEvCtB,EAAQY,UAAY/C,GAAgBopC,EAAeC,GACnDlnC,EAAQsC,OCzEZ,SAAS6kC,GAAWh1B,GAEhB,OADAA,EAAIoG,KAAK,CAACtc,EAAGD,IAAMC,EAAID,GAChBmW,EAAIi1B,KAAK,KAEpB,SAASC,GAAiB9hC,EAAW+hC,GACjC,MAAMh8C,EAAM67C,GAAW5hC,EAAUjN,IAAKhD,GAAMA,EAAE0kB,KAC9C,IAAIplB,EAAM0yC,EAAWj5C,IAAI/C,GAKzB,YAJYiE,IAARqF,IACAA,EAAM7D,IACNu2C,EAAWh5C,IAAIhD,EAAKsJ,IAEjBA,EAEJ,MAAM,GACT,YAAYsM,GACRxT,KAAKwT,UAAYA,EACjBxT,KAAK65C,OAAS,CACVnM,MAAO,IAAIntC,IACXo3C,UAAW,IAAIp3C,KAGvB,aAAa+R,EAASxF,GAClB,IAAIrM,EACJ,MAAMq5C,EAAWhtC,EAASvI,QAC1B,IAAKuI,EAAS4gC,OAAS5gC,EAAS4gC,MAAMvsC,QAAU,EAC5C,OAEJ,MAAM44C,EAAUjtC,EAAS4gC,MAAMxY,OAAQxlB,GAAMoqC,EAASpM,OAAS1tC,KAAKg6C,iBAAiBltC,EAAU4C,EAAErF,cAAgByvC,EAASpM,MAAMgK,WAChI,IAAK,MAAMuC,KAAQF,EACf/5C,KAAKk6C,cAAcJ,EAAUhtC,EAAUmtC,EAAMF,GACzCE,EAAK7pC,QAAU,IAA4C,QAArC3P,EAAKqM,EAAS0I,OAAOm5B,kBAA+B,IAAPluC,EAAgBA,EAAK,GAAK,GAC7FT,KAAKy4C,aAAa3rC,EAAUmtC,GAIxC,aACIj6C,KAAK65C,OAAOnM,MAAQ,IAAIntC,IACxBP,KAAK65C,OAAOlC,UAAY,IAAIp3C,IAEhC,gBAAgBuM,GAEZ,GADAA,EAAS4gC,MAAQ,IACZ5gC,EAASvI,QAAQmpC,MAClB,OAEJ,MAAMlY,EAAQx1B,KAAKwT,UAAUgC,OAAOC,WACpC3I,EAAS0I,OAAO6iC,cAAgBvrC,EAASvI,QAAQmpC,MAAM3oC,SAAWywB,EAClE1oB,EAAS0I,OAAOm5B,WAAa7hC,EAASvI,QAAQmpC,MAAM1nC,MAAQwvB,EAEhE,kBAAkB1oB,GACdA,EAAS4gC,MAAQ,GAErB,aAAa1hC,EAAIiuC,GACb,MAAMzmC,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cAAezL,EAAKguC,EAAK5vC,YAAa+B,EAAOJ,EAAGR,cAAea,EAAOJ,EAAGT,cAC/H,IAAI4E,EAAU6pC,EAAK7pC,QACnBoD,EAAU8H,OAAO/F,KAAM2C,IACnB,IAAIzX,EAAI0F,EAAI/G,EACZ,IAAK4M,EAAGzH,QAAQmpC,MACZ,OAEJ,IAAI0B,EACJ,MAAM+K,EAAwC,QAA7B15C,EAAKuL,EAAGzH,QAAQ41C,eAA4B,IAAP15C,OAAgB,EAASA,EAAG25C,MAClF,GAAgB,OAAZD,QAAgC,IAAZA,OAAqB,EAASA,EAAQ31C,OAAQ,CAClE,MAAM61C,EAAcF,EAAQzC,UAAW4C,EAAa1rC,GAAgBurC,EAAQtrC,OAAQ0rC,EAAYl3C,IAAcg3C,EAC1GE,GAAaD,IACblL,EAAYkL,EACZlqC,EAAUhM,GAAc+1C,EAAQ/pC,UAGxC,IAAKg/B,EAAW,CACZ,MAAMU,EAAe9jC,EAAGzH,QAAQmpC,MAAO58B,OAA8FjP,KAAhE,OAAjBiuC,QAA0C,IAAjBA,OAA0B,EAASA,EAAaxjB,IACvH9Y,EAAUqE,UAAUsgC,YAAYx3C,IAAImvC,EAAaxjB,IACjD9Y,EAAUqE,UAAUqgC,WAC1B9I,EAAYv+B,GAAa7E,EAAIC,EAAI6E,GAErC,IAAKs+B,EACD,OAEJ,MAAMppC,EAAwC,QAA/BG,EAAK6F,EAAGwJ,OAAOm5B,kBAA+B,IAAPxoC,EAAgBA,EAAK,EAAGsnB,EAAiD,QAAlCruB,EAAK4M,EAAGwJ,OAAO6iC,qBAAkC,IAAPj5C,EAAgBA,EAAK,EAC5Jq5C,GAAavgC,EAAKlS,EAAOoG,EAAMC,EAAMohB,EAAaja,EAAU8H,OAAOvV,KAAMiG,EAAGzH,QAAQmpC,MAAMnmB,KAAMhjB,EAAQoP,eAAenP,OAAQD,EAAQoP,eAAeC,UAAWw7B,EAAWh/B,EAASpE,EAAGzH,QAAQmpC,MAAM75B,UAG9M,iBAAiB7H,EAAIwuC,EAAOC,GACxB,IAAIh6C,EACJ,IAAKuL,EAAGzH,QAAQmpC,MACZ,OAEJ,MAAMl6B,EAAYxT,KAAKwT,UAAWjP,EAAUiP,EAAUkE,cAAezL,EAAKuuC,EAAMnwC,YAAayI,EAAK2nC,EAAMpwC,YAAaqwC,EAAkB1uC,EAAGzH,QAAQmpC,MAAMiK,UAAW6B,EAAqD,QAAlC/4C,EAAKi6C,EAAgBtqC,eAA4B,IAAP3P,EAAgBA,GAAM+5C,EAAMpqC,QAAUqqC,EAAMrqC,SAAW,EACnRopC,GAAmB,GAGvBhmC,EAAU8H,OAAO/F,KAAM2C,IACnB,IAAIzX,EACJ,MAAM2L,EAAOJ,EAAGR,cAAea,EAAOJ,EAAGT,cAAe8tC,EAAOxmC,EAAGtH,cAAe6sC,EAAmD,QAAlC53C,EAAKuL,EAAGwJ,OAAO6iC,qBAAkC,IAAP53C,EAAgBA,EAAK,EACjK,GAAIuE,GAAYoH,EAAMC,GAAQgsC,GAC1BrzC,GAAYs0C,EAAMjtC,GAAQgsC,GAC1BrzC,GAAYs0C,EAAMltC,GAAQisC,EAC1B,OAEJ,IAAIkB,EAAgB3qC,GAAgB8rC,EAAgB7rC,OACpD,IAAK0qC,EAAe,CAChB,MAAMzJ,EAAe9jC,EAAGzH,QAAQmpC,MAAO58B,OAA8FjP,KAAhE,OAAjBiuC,QAA0C,IAAjBA,OAA0B,EAASA,EAAaxjB,IACvH9Y,EAAUqE,UAAUsgC,YAAYx3C,IAAImvC,EAAaxjB,IACjD9Y,EAAUqE,UAAUqgC,WAC1BqB,EAAgB1oC,GAAa7E,EAAIC,EAAI6E,GAEpCyoC,GAGLF,GAAiBnhC,EAAK9L,EAAMC,EAAMitC,EAAM/0C,EAAQoP,eAAenP,OAAQD,EAAQoP,eAAeC,UAAW2lC,EAAeC,KAGhI,cAAcj1C,EAASyH,EAAIiuC,EAAMF,GAC7B,IAAIt5C,EAAI0F,EAAI/G,EACZ,MAAM6M,EAAKguC,EAAK5vC,YAChB,KAAgC,QAAxB5J,EAAK8D,EAAQmpC,aAA0B,IAAPjtC,OAAgB,EAASA,EAAGk3C,UAAUnzC,WAAwC,QAA3B2B,EAAK8F,EAAG1H,QAAQmpC,aAA0B,IAAPvnC,OAAgB,EAASA,EAAGwxC,UAAUnzC,QAChK,OAEJ,MAAMm2C,EAA+B,QAAnBv7C,EAAK6M,EAAGyhC,aAA0B,IAAPtuC,OAAgB,EAASA,EAAG81B,OAAQttB,IAC7E,MAAMgzC,EAAW56C,KAAKg6C,iBAAiB/tC,EAAIrE,EAAEyC,aAC7C,OAAQ4B,EAAG1H,QAAQmpC,OACfkN,GAAY3uC,EAAG1H,QAAQmpC,MAAMgK,WAC7BqC,EAAQ/hB,UAAWtoB,GAAMA,EAAErF,cAAgBzC,EAAEyC,cAAgB,IAErE,GAAmB,OAAbswC,QAAkC,IAAbA,OAAsB,EAASA,EAASx5C,OAGnE,IAAK,MAAM05C,KAAUF,EAAU,CAC3B,MAAM7nC,EAAK+nC,EAAOxwC,YAAaywC,EAAe96C,KAAK+6C,qBAAqB/uC,EAAIC,EAAI6G,GAC5EgoC,EAAev2C,EAAQmpC,MAAMiK,UAAUD,WAG3C13C,KAAKq5C,iBAAiBrtC,EAAIiuC,EAAMY,IAGxC,iBAAiB7uC,EAAIC,GACjB,OAAO0tC,GAAiB,CAAC3tC,EAAIC,GAAKjM,KAAK65C,OAAOnM,OAElD,qBAAqB1hC,EAAIC,EAAI6G,GACzB,OAAO6mC,GAAiB,CAAC3tC,EAAIC,EAAI6G,GAAK9S,KAAK65C,OAAOlC,YC3I1D,MAAM,GACF,cACI33C,KAAKssB,GAAK,QAEd,UAAU9Y,GACN,OAAO,IAAI,GAAaA,GAE5B,eAEA,cACI,OAAO,GAGR1K,eAAekyC,GAAW31B,GAC7B,MAAMzP,EAAS,IAAI,SACbyP,EAAO+X,UAAUxnB,GCdpB9M,eAAemyC,GAA8B51B,SAC1CmzB,GAAgBnzB,SAChB21B,GAAW31B,GCJd,MAAM61B,GACT,KAAK5oC,EAASxF,EAAUnD,GACpB,MAAMqvB,EAAQh5B,KAAKm7C,UAAUruC,EAAUnD,GACjCu7B,EAAOllC,KAAKo7C,aAAatuC,EAAUnD,GACnC0xC,EAAYnW,EAAKlf,MAAMs1B,UAAYpW,EAAKlf,MAAMu1B,YAC9CC,EAAetW,EAAKlf,MAAMs1B,UAAYpW,EAAKlf,MAAMu1B,YACjDE,EAAwB,KAAOD,EAAe,GAAMA,EACpDE,EAAgB15C,KAAKqD,GAAMrD,KAAKqD,GAAKo2C,EAAwB,IACnE,GAAKnpC,EAAL,CAGAA,EAAQG,YACRH,EAAQwsB,UAAU9F,EAAMr3B,EAAGq3B,EAAMv3B,GACjC6Q,EAAQI,OAAO,EAAG,GAClB,IAAK,IAAIkhB,EAAI,EAAGA,EAAIynB,EAAWznB,IAC3BthB,EAAQK,OAAOuyB,EAAK/jC,OAAQ,GAC5BmR,EAAQwsB,UAAUoG,EAAK/jC,OAAQ,GAC/BmR,EAAQ7F,OAAOivC,IAGvB,cAAc5uC,GACV,IAAIrM,EAAI0F,EACR,MAAM2iB,EAAUhc,EAASmhB,UACzB,OAA6L,QAArL9nB,EAAgF,QAA1E1F,EAAiB,OAAZqoB,QAAgC,IAAZA,OAAqB,EAASA,EAAQ2G,aAA0B,IAAPhvB,EAAgBA,EAAiB,OAAZqoB,QAAgC,IAAZA,OAAqB,EAASA,EAAQ6yB,gBAA6B,IAAPx1C,EAAgBA,EAAK,GCtB3N,MAAM,WAAsB+0C,GAC/B,UAAUpuC,EAAUnD,GAChB,MAAM8lB,EAAQzvB,KAAK4vB,cAAc9iB,GACjC,MAAO,CACHnL,GAAIgI,GAAU8lB,EAAQ,KACtBhuB,GAAIkI,EAAS,KAGrB,aAAamD,EAAUnD,GACnB,IAAIlJ,EAAI0F,EACR,MAAM2iB,EAAUhc,EAASmhB,UACnBwB,EAA8L,QAArLtpB,EAAgF,QAA1E1F,EAAiB,OAAZqoB,QAAgC,IAAZA,OAAqB,EAASA,EAAQ2G,aAA0B,IAAPhvB,EAAgBA,EAAiB,OAAZqoB,QAAgC,IAAZA,OAAqB,EAASA,EAAQ6yB,gBAA6B,IAAPx1C,EAAgBA,EAAK,EACjO,MAAO,CACH6f,MAAO,CACHu1B,YAAa,EACbD,UAAW7rB,GAEftuB,OAAkB,KAATwI,GAAkB8lB,EAAQ,KCjBxC,MAAM,WAAuByrB,GAChC,UAAUpuC,EAAUnD,GAChB,MAAO,CACHhI,GAAIgI,EACJlI,EAAGkI,EAAS,MAGpB,gBACI,OAAO,EAEX,aAAamD,EAAUnD,GACnB,MAAO,CACHqc,MAAO,CACHu1B,YAAa,EACbD,UAAW,GAEfn6C,OAAiB,EAATwI,ICfbb,eAAe8yC,GAAwBv2B,SACpCA,EAAOigB,SAAS,UAAW,IAAI,IAElCx8B,eAAe+yC,GAAkBx2B,SAC9BA,EAAOigB,SAAS,WAAY,IAAI,IAEnCx8B,eAAegzC,GAAiBz2B,SAC7Bu2B,GAAwBv2B,SACxBw2B,GAAkBx2B,GCT5B,SAAS,GAAavY,EAAU1J,EAAOuxC,EAAU/Q,GAC7C,OAAQ92B,EAASvI,QAAQwB,KAAK0L,UAAUyS,SACpC,IAAK,MACG9gB,GAASwgC,GACT92B,EAASoX,UAEb,MACJ,IAAK,MACG9gB,GAASuxC,GACT7nC,EAASoX,UAEb,OAGZ,SAAS63B,GAAWjvC,EAAU2G,GAC1B,IAAIhT,EAAI0F,EAAI/G,EAAIgH,EAAI5G,EACpB,MAAMw8C,GAAkD,QAAjCv7C,EAAKqM,EAAS/G,KAAKiB,gBAA6B,IAAPvG,EAAgBA,EAAK,GAAKgT,EAAMxM,OAAQ0tC,EAAW7nC,EAAS/G,KAAKvC,IAAKogC,EAAW92B,EAAS/G,KAAKtC,IAAKyO,EAAuC,QAA9B/L,EAAK2G,EAAS/G,KAAKmM,aAA0B,IAAP/L,EAAgBA,EAAK,EACxO,KAAI2G,EAAS0L,YACR1L,EAAS/G,KAAKvB,SACqB,QAAjCpF,EAAK0N,EAAS/G,KAAK8oB,gBAA6B,IAAPzvB,EAAgBA,EAAK,GAAK,IAAqC,QAA9BgH,EAAK0G,EAAS/G,KAAK6oB,aAA0B,IAAPxoB,EAAgBA,EAAK,IAAwC,QAAjC5G,EAAKsN,EAAS/G,KAAK8oB,gBAA6B,IAAPrvB,EAAgBA,EAAK,IAFjN,CAKA,OAAQsN,EAAS/G,KAAKoM,QAClB,IAAK,aACGrF,EAAS/G,KAAK3C,OAASwgC,GACvB92B,EAAS/G,KAAKoM,OAAS,aAClBrF,EAAS/G,KAAK6oB,QACf9hB,EAAS/G,KAAK6oB,MAAQ,GAE1B9hB,EAAS/G,KAAK6oB,SAGd9hB,EAAS/G,KAAK3C,OAAS44C,EAE3B,MACJ,IAAK,aACGlvC,EAAS/G,KAAK3C,OAASuxC,GACvB7nC,EAAS/G,KAAKoM,OAAS,aAClBrF,EAAS/G,KAAK6oB,QACf9hB,EAAS/G,KAAK6oB,MAAQ,GAE1B9hB,EAAS/G,KAAK6oB,SAGd9hB,EAAS/G,KAAK3C,OAAS44C,EAG/BlvC,EAAS/G,KAAKiB,UAAsB,IAAVkL,IAC1BpF,EAAS/G,KAAKiB,UAAYkL,GAE9B,GAAapF,EAAUA,EAAS/G,KAAK3C,MAAOuxC,EAAU/Q,GACjD92B,EAAS0L,YACV1L,EAAS/G,KAAK3C,MAAQE,EAAMwJ,EAAS/G,KAAK3C,MAAOuxC,EAAU/Q,KAG5D,MAAM,GACT,KAAK92B,GACD,IAAIrM,EACJ,MAAM+S,EAAY1G,EAAS0G,UAAWib,EAAc3hB,EAASvI,QAAQwB,KAAM4oB,EAAgBF,EAAYhd,UACnGkd,EAAcnqB,SACdsI,EAAS/G,KAAKiB,UACsC,QAA7CvG,EAAKqM,EAAS0I,OAAOkgB,0BAAuC,IAAPj1B,EAAgBA,EAAK+S,EAAUgC,OAAOkgB,oBAAsB,IAChHliB,EAAUgC,OAAO5D,aACpB+c,EAAcvc,OACftF,EAAS/G,KAAKiB,UAAY3D,MAItC,UAAUyJ,GACN,IAAIrM,EAAI0F,EAAI/G,EAAIgH,EAChB,OAAS0G,EAAS0L,YACb1L,EAASyL,UACVzL,EAAS/G,KAAKvB,UACsB,QAAjC/D,EAAKqM,EAAS/G,KAAK8oB,gBAA6B,IAAPpuB,EAAgBA,EAAK,IAAM,IAC/B,QAAjC0F,EAAK2G,EAAS/G,KAAK8oB,gBAA6B,IAAP1oB,EAAgBA,EAAK,GAAK,IAAqC,QAA9B/G,EAAK0N,EAAS/G,KAAK6oB,aAA0B,IAAPxvB,EAAgBA,EAAK,IAAwC,QAAjCgH,EAAK0G,EAAS/G,KAAK8oB,gBAA6B,IAAPzoB,EAAgBA,EAAK,IAEzN,MAAM0G,GACFA,EAAS/G,KAAK6oB,MAAQ,EAE1B,OAAO9hB,EAAU2G,GACRzT,KAAK8rB,UAAUhf,IAGpBivC,GAAWjvC,EAAU2G,ICnFtB3K,eAAemzC,GAAgB52B,SAC5BA,EAAO6X,mBAAmB,OAAQ,IAAM,IAAI,ICFtD,MAAMgf,GAAYl6C,KAAKI,KAAK,GACrB,MAAM+5C,GACT,KAAK7pC,EAASxF,EAAUnD,GACpB2I,EAAQ4e,MAAMvnB,EAASuyC,IAAYvyC,EAASuyC,GAAqB,EAATvyC,EAAcuyC,GAAqB,EAATvyC,EAAcuyC,IAEpG,gBACI,OAAO,GCLRpzC,eAAeszC,GAAgB/2B,GAClC,MAAMhQ,EAAS,IAAI8mC,SACb92B,EAAOigB,SAAS,OAAQjwB,SACxBgQ,EAAOigB,SAAS,SAAUjwB,GCJ7B,MAAMgnC,GACT,KAAK/pC,EAASxF,EAAUnD,GACpB,IAAIlJ,EACJ,MAAM67C,EAAOxvC,EAASmhB,UAAWwB,EAAQzvB,KAAK4vB,cAAc9iB,GAAWyvC,EAA0E,QAAjE97C,EAAc,OAAT67C,QAA0B,IAATA,OAAkB,EAASA,EAAKC,aAA0B,IAAP97C,EAAgBA,EAAK,EAC9K6R,EAAQI,OAAO,EAAG,EAAI/I,GACtB,IAAK,IAAIiqB,EAAI,EAAGA,EAAInE,EAAOmE,IACvBthB,EAAQ7F,OAAOzK,KAAKqD,GAAKoqB,GACzBnd,EAAQK,OAAO,EAAG,EAAIhJ,EAAS4yC,GAC/BjqC,EAAQ7F,OAAOzK,KAAKqD,GAAKoqB,GACzBnd,EAAQK,OAAO,EAAG,EAAIhJ,GAG9B,cAAcmD,GACV,IAAIrM,EAAI0F,EACR,MAAMm2C,EAAOxvC,EAASmhB,UACtB,OAA2K,QAAnK9nB,EAAuE,QAAjE1F,EAAc,OAAT67C,QAA0B,IAATA,OAAkB,EAASA,EAAK7sB,aAA0B,IAAPhvB,EAAgBA,EAAc,OAAT67C,QAA0B,IAATA,OAAkB,EAASA,EAAKX,gBAA6B,IAAPx1C,EAAgBA,EAAK,GCdzM2C,eAAe0zC,GAAcn3B,SAC1BA,EAAOigB,SAAS,OAAQ,IAAI+W,ICDtC,SAAS,GAAiB5oC,EAAOrQ,EAAOylC,EAAgBplC,EAAKqlC,GACzD,IAAIroC,EAAI0F,EACR,MAAM4L,EAAa3O,EACnB,IAAK2O,IAAeA,EAAWvN,OAC3B,OAEJ,MAAMkF,EAAS1F,EAAc6kC,EAAen/B,QAAS1C,GAAsC,QAAzBvG,EAAK2C,EAAM4D,gBAA6B,IAAPvG,EAAgBA,EAAK,GAAKgT,EAAMxM,OAAkB,IAATyC,EAAcwI,EAA+B,QAAtB/L,EAAK/C,EAAM8O,aAA0B,IAAP/L,EAAgBA,EAAK,EACjN2iC,GAAkC,eAAtB/2B,EAAWI,QAQxBJ,EAAW3O,OAAS4D,EAChB+K,EAAW3O,MAAQ,IACnB2O,EAAWI,OAAS,aACpBJ,EAAW3O,OAAS2O,EAAW3O,SAVnC2O,EAAW3O,OAAS4D,EAChB8hC,GAAY/2B,EAAW3O,MAAQK,IAC/BsO,EAAWI,OAAS,aACpBJ,EAAW3O,OAAS2O,EAAW3O,MAAQK,IAU3CsO,EAAW/K,UAAsB,IAAVkL,IACvBH,EAAW/K,UAAYkL,GAEvBH,EAAW3O,MAAQK,IACnBsO,EAAW3O,OAASK,GAG5B,SAASg5C,GAAkB3vC,EAAU2G,GACjC,IAAIhT,EAAI0F,EAAI/G,EAAIgH,EAAI5G,EAAI+T,EAAIoP,EAAI0K,EAAIC,EAAIovB,EACxC,KAAiC,QAA1Bj8C,EAAKqM,EAAS+H,cAA2B,IAAPpU,OAAgB,EAASA,EAAGoO,OACjE,OAEJ,MAAM8C,EAAmB7E,EAAS+H,OAAOhG,MAAM4C,UAAWhC,EAAqF,QAAhFrQ,EAAqC,QAA/B+G,EAAK2G,EAASsgB,mBAAgC,IAAPjnB,OAAgB,EAASA,EAAGsJ,SAAsB,IAAPrQ,EAAgBA,EAA+B,QAAzBgH,EAAK0G,EAAS+B,aAA0B,IAAPzI,OAAgB,EAASA,EAAGqJ,EACtOA,GACA,GAAiBgE,EAAOhE,EAAGkC,EAAiBlC,EAAG,KAAK,GAExD,MAAME,EAAqF,QAAhF4D,EAAqC,QAA/B/T,EAAKsN,EAASsgB,mBAAgC,IAAP5tB,OAAgB,EAASA,EAAGmQ,SAAsB,IAAP4D,EAAgBA,EAA+B,QAAzBoP,EAAK7V,EAAS+B,aAA0B,IAAP8T,OAAgB,EAASA,EAAGhT,EAClLA,GACA,GAAiB8D,EAAO9D,EAAGgC,EAAiBhC,EAAG,KAAK,GAExD,MAAMD,EAAqF,QAAhF4d,EAAqC,QAA/BD,EAAKvgB,EAASsgB,mBAAgC,IAAPC,OAAgB,EAASA,EAAG3d,SAAsB,IAAP4d,EAAgBA,EAA+B,QAAzBovB,EAAK5vC,EAAS+B,aAA0B,IAAP6tC,OAAgB,EAASA,EAAGhtC,EAClLA,GACA,GAAiB+D,EAAO/D,EAAGiC,EAAiBjC,EAAG,KAAK,GAGrD,MAAM,GACT,YAAY8D,GACRxT,KAAKwT,UAAYA,EAErB,KAAK1G,GACD,IAAIrM,EAAI0F,EACR,MAAMqN,EAAYxT,KAAKwT,UACvB1G,EAAS+H,OAASzH,GAAyBN,EAASvI,QAAQsQ,OAAQ/H,EAASwf,GAAIxf,EAASvI,QAAQmlB,kBAClG5c,EAASiI,YAAcjI,EAAS+H,OAAO7O,MAAQwN,EAAUgC,OAAOC,WAChE,MAAMknC,EAAmE,QAAjDl8C,EAAK0O,GAAgBrC,EAAS+H,OAAOhG,cAA2B,IAAPpO,EAAgBA,EAAKqM,EAASkE,eAC3G2rC,IACA7vC,EAASsgB,YAAc1b,GAAuBirC,EAAiD,QAAhCx2C,EAAK2G,EAAS+H,OAAOhG,aAA0B,IAAP1I,OAAgB,EAASA,EAAGsL,UAAW+B,EAAUgC,OAAO5D,eAGvK,UAAU9E,GACN,IAAIrM,EAAI0F,EAAI/G,EAAIgH,EAChB,MAAMyI,EAAmC,QAA1BpO,EAAKqM,EAAS+H,cAA2B,IAAPpU,OAAgB,EAASA,EAAGoO,MAC7E,OAAS/B,EAAS0L,YACb1L,EAASyL,YACR1J,SACkFhN,KAAjD,QAA/BsE,EAAK2G,EAASsgB,mBAAgC,IAAPjnB,OAAgB,EAASA,EAAGsJ,EAAErM,QAAwByL,EAAM4C,UAAUhC,EAAEjL,aAC5B3C,KAAjD,QAA/BzC,EAAK0N,EAASsgB,mBAAgC,IAAPhuB,OAAgB,EAASA,EAAGuQ,EAAEvM,QAAwByL,EAAM4C,UAAU9B,EAAEnL,aAC/B3C,KAAjD,QAA/BuE,EAAK0G,EAASsgB,mBAAgC,IAAPhnB,OAAgB,EAASA,EAAGsJ,EAAEtM,QAAwByL,EAAM4C,UAAU/B,EAAElL,QAE9H,OAAOsI,EAAU2G,GACRzT,KAAK8rB,UAAUhf,IAGpB2vC,GAAkB3vC,EAAU2G,IC1E7B3K,eAAe8zC,GAAuBv3B,SACnCA,EAAO6X,mBAAmB,cAAgB1pB,GAAc,IAAI,GAAmBA,ICDlF,MAAMqpC,GAAa,CAAC,OAAQ,YAAa,QACzC,MAAM,GACT,KAAKvqC,EAASxF,EAAUnD,EAAQyG,GAC5B,IAAI3P,EAAI0F,EAAI/G,EACZ,MAAMypB,EAAY/b,EAASmhB,UAC3B,QAAkBpsB,IAAdgnB,EACA,OAEJ,MAAMi0B,EAAWj0B,EAAUzlB,MAC3B,QAAiBvB,IAAbi7C,EACA,OAEJ,MAAMC,EAAejwC,OACKjL,IAAtBk7C,EAAavK,OACbuK,EAAavK,KAAOplC,GAAyB0vC,EAAUhwC,EAASkwC,kBAEpE,MAAMxK,EAAOuK,EAAavK,KAAMn4B,EAAmC,QAA1B5Z,EAAKooB,EAAUxO,aAA0B,IAAP5Z,EAAgBA,EAAK,GAAIwI,EAAqC,QAA3B9C,EAAK0iB,EAAU5f,cAA2B,IAAP9C,EAAgBA,EAAK,MAAOJ,EAA4B,EAArB/D,KAAKk1C,MAAMvtC,GAAaX,EAAiC,QAAzB5J,EAAKypB,EAAU7f,YAAyB,IAAP5J,EAAgBA,EAAK,UAAWwV,EAAO9H,EAAS8H,KAAMyO,EAAWmvB,EAAKrxC,OAASwI,EAAU,EAC9U2I,EAAQtJ,KAAO,GAAGqR,KAASpR,KAAUlD,QAAWiD,KAChD,MAAM+K,EAAM,CACRpS,GAAI0hB,EACJ5hB,EAAGkI,EAAS,GAEhB2I,EAAQqhC,YAAcvjC,EAClBwE,EACAtC,EAAQ2qC,SAASzK,EAAMz+B,EAAIpS,EAAGoS,EAAItS,GAGlC6Q,EAAQ4qC,WAAW1K,EAAMz+B,EAAIpS,EAAGoS,EAAItS,GAExC6Q,EAAQqhC,YAAc,EAE1B,gBACI,OAAO,GAEX,WAAWngC,GACP,MAAMjP,EAAUiP,EAAUkE,cAC1B,GAAImlC,GAAWxvC,KAAMzF,GAAMgB,GAAUhB,EAAGrD,EAAQsT,UAAUzC,MAAM/W,OAAQ,CACpE,MAAM0vB,EAAe8uB,GAChBjyC,IAAKhD,GAAMrD,EAAQsT,UAAUzC,MAAM7Q,QAAQqD,IAC3CyF,KAAMzF,KAAQA,GAAIu1C,EAAW,GAClC51C,GAA0BwmB,EAAe3Y,IACrC+nC,EAASt8C,KAAKkI,GAASqM,EAAMpM,KAAMoM,EAAMnM,iBAEvCowB,QAAQ+jB,IAAID,KC3CvBr0C,eAAeu0C,GAAch4B,GAChC,MAAMhQ,EAAS,IAAI,GACnB,IAAK,MAAMhX,KAAQw+C,SACTx3B,EAAOigB,SAASjnC,EAAMgX,GC0B7BvM,eAAew0C,GAASj4B,SACrBmjB,GAAcnjB,SACdixB,GAAkBjxB,SAClB6kB,GAA+B7kB,SAC/BwlB,GAA8BxlB,SAC9BmoB,GAA8BnoB,SAC9B6pB,GAA+B7pB,SAC/B0qB,GAA4B1qB,SAC5B2qB,GAA6B3qB,SAC7BgrB,GAA4BhrB,SAC5BmrB,GAA8BnrB,SAC9BgsB,GAA+BhsB,SAC/BqsB,GAA4BrsB,SAC5BsxB,GAAgCtxB,SAChC+xB,GAAmC/xB,SACnC41B,GAA8B51B,SAC9BsjB,GAAgBtjB,SAChBwuB,GAAexuB,SACfovB,GAAcpvB,SACdy2B,GAAiBz2B,SACjB+2B,GAAgB/2B,SAChBm3B,GAAcn3B,SACdg4B,GAAch4B,SACdkvB,GAAgBlvB,SAChB2vB,GAAmB3vB,SACnB42B,GAAgB52B,SAChB0hB,GAAiB1hB,SACjB2jB,GAAiB3jB,SACjBu3B,GAAuBv3B,SACvB4wB,GAAoB5wB,SACpBghB,GAAQhhB,GC3DX,MAAM,GACT,cACIrlB,KAAKwE,QAAS,EACdxE,KAAKiS,MAAQ,EACbjS,KAAKkS,MAAQ,EACblS,KAAKoS,MAAO,EAEhB,KAAK9T,GACIA,SAGeuD,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,aAEJ3C,IAAfvD,EAAK2T,QACLjS,KAAKiS,MAAQ5N,GAAc/F,EAAK2T,aAEjBpQ,IAAfvD,EAAK4T,QACLlS,KAAKkS,MAAQ7N,GAAc/F,EAAK4T,aAElBrQ,IAAdvD,EAAK8T,OACLpS,KAAKoS,KAAO9T,EAAK8T,QCpBtB,MAAM,WAAa,GACtB,cACIrP,QACA/C,KAAKyR,UAAY,IAAI,GACrBzR,KAAKkF,UAAY,YACjBlF,KAAKwE,QAAS,EACdxE,KAAKoD,MAAQ,EAEjB,KAAK9E,GACDyE,MAAMoG,KAAK7K,GACNA,IAGL0B,KAAKyR,UAAUtI,KAAK7K,EAAKmT,gBACF5P,IAAnBvD,EAAK4G,YACLlF,KAAKkF,UAAY5G,EAAK4G,gBAENrD,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,UClB/B,SAAS+4C,GAAWzwC,EAAU2G,GAC1B,IAAIhT,EAAI0F,EACR,IAAK2G,EAAS0wC,OAAS1wC,EAASvI,QAAQi5C,KACpC,OAEJ,MAAMA,EAAO1wC,EAASvI,QAAQi5C,KAAMC,EAAgBD,EAAK/rC,UAAWQ,GAA2C,QAAjCxR,EAAKqM,EAAS0wC,KAAKx2C,gBAA6B,IAAPvG,EAAgBA,EAAK,GAAKgT,EAAMxM,OAAQxD,EAAM,EAAIzB,KAAKqD,GAAI6M,EAAuC,QAA9B/L,EAAK2G,EAAS0wC,KAAKtrC,aAA0B,IAAP/L,EAAgBA,EAAK,EACtP,GAAKs3C,EAAcj5C,OAAnB,CAGA,OAAQsI,EAAS0wC,KAAKrrC,QAClB,IAAK,aACDrF,EAAS0wC,KAAKp6C,OAAS6O,EACnBnF,EAAS0wC,KAAKp6C,MAAQK,IACtBqJ,EAAS0wC,KAAKp6C,OAASK,GAE3B,MACJ,IAAK,aACL,QACIqJ,EAAS0wC,KAAKp6C,OAAS6O,EACnBnF,EAAS0wC,KAAKp6C,MAAQ,IACtB0J,EAAS0wC,KAAKp6C,OAASK,GAE3B,MAEJqJ,EAAS0wC,KAAKx2C,UAAsB,IAAVkL,IAC1BpF,EAAS0wC,KAAKx2C,UAAYkL,IAG3B,MAAM,GACT,YAAYsB,GACRxT,KAAKwT,UAAYA,EAErB,mBAAmB1G,GACf,IAAIrM,EACJ,MAAM+8C,GAAiC,QAAxB/8C,EAAKqM,EAAS0wC,YAAyB,IAAP/8C,OAAgB,EAASA,EAAG+D,SAAWsI,EAAS0wC,KAC/F,MAAO,CACHlvC,EAAGkvC,EAAOx7C,KAAKW,IAAI66C,EAAKp6C,OAASo6C,EAAKE,kBAAe77C,EACrDgB,EAAG26C,EAAOx7C,KAAKY,IAAI46C,EAAKp6C,OAASo6C,EAAKG,kBAAe97C,GAG7D,KAAKiL,GACD,IAAIrM,EACJ,MAAMm9C,EAAc9wC,EAASvI,QAAQi5C,KACrC,IAAKI,EACD,OAEJ9wC,EAAS0wC,KAAO,CACZh5C,OAAQo5C,EAAYp5C,OACpBpB,MAAQgB,GAAcw5C,EAAYx6C,OAASpB,KAAKqD,GAAM,IACtDs4C,aAAct6C,KAAe,GAAM,GAAK,EACxCq6C,aAAcr6C,KAAe,GAAM,GAAK,GAE5C,IAAIw6C,EAAgBD,EAAY14C,UAChC,GAAsB,WAAlB24C,EAA4B,CAC5B,MAAMv0C,EAAQtH,KAAK+B,MAAoB,EAAdV,KACzBw6C,EAAgBv0C,EAAQ,EAAI,oBAAsB,YAEtD,OAAQu0C,GACJ,IAAK,oBACL,IAAK,mBACD/wC,EAAS0wC,KAAKrrC,OAAS,aACvB,MACJ,IAAK,YACDrF,EAAS0wC,KAAKrrC,OAAS,aACvB,MAER,MAAMsrC,EAAiD,QAAhCh9C,EAAKqM,EAASvI,QAAQi5C,YAAyB,IAAP/8C,OAAgB,EAASA,EAAGgR,WACrE,OAAlBgsC,QAA4C,IAAlBA,OAA2B,EAASA,EAAcj5C,UAC5EsI,EAAS0wC,KAAKtrC,MAAQ,EAAI9N,GAAcq5C,EAAcvrC,OACtDpF,EAAS0wC,KAAKx2C,SAAY5C,GAAcq5C,EAAcxrC,OAAS,IAAOjS,KAAKwT,UAAUgC,OAAO5D,aACvF6rC,EAAcrrC,OACftF,EAAS0wC,KAAKx2C,UAAY3D,MAItC,UAAUyJ,GACN,IAAIrM,EACJ,MAAMg9C,EAAiD,QAAhCh9C,EAAKqM,EAASvI,QAAQi5C,YAAyB,IAAP/8C,OAAgB,EAASA,EAAGgR,UAC3F,OAAQ3E,EAAS0L,YAAc1L,EAASyL,aAAiC,OAAlBklC,QAA4C,IAAlBA,OAA2B,EAASA,EAAcj5C,QAEvI,YAAYD,KAAY+F,GACf/F,EAAQi5C,OACTj5C,EAAQi5C,KAAO,IAAI,IAEvB,IAAK,MAAMl7C,KAAUgI,EACjB/F,EAAQi5C,KAAKr0C,KAAgB,OAAX7G,QAA8B,IAAXA,OAAoB,EAASA,EAAOk7C,MAGjF,OAAO1wC,EAAU2G,GACRzT,KAAK8rB,UAAUhf,IAGpBywC,GAAWzwC,EAAU2G,IC7FtB3K,eAAeg1C,GAAgBz4B,SAC5BA,EAAO6X,mBAAmB,OAAS1pB,GAAc,IAAI,GAAYA,ICDpE,MAAM,GACT,cACIxT,KAAKwE,QAAS,EACdxE,KAAK03C,UAAY,IACjB13C,KAAKoQ,QAAU,EAEnB,KAAK9R,GACIA,SAGcuD,IAAfvD,EAAKuQ,QACL7O,KAAK6O,MAAQwV,GAAatiB,OAAO/B,KAAK6O,MAAOvQ,EAAKuQ,aAElChN,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,aAEA3C,IAAnBvD,EAAKo5C,YACL13C,KAAK03C,UAAYp5C,EAAKo5C,gBAEL71C,IAAjBvD,EAAK8R,UACLpQ,KAAKoQ,QAAU/L,GAAc/F,EAAK8R,YCpBvC,MAAM,GACT,cACIpQ,KAAKo6C,MAAQ,IAAI,GACjBp6C,KAAK6X,UAAY,IAAI,GAEzB,KAAKvZ,GACIA,IAGL0B,KAAKo6C,MAAMjxC,KAAK7K,EAAK87C,OACrBp6C,KAAK6X,UAAU1O,KAAK7K,EAAKuZ,aCT1B,MAAM,GACT,eAAe/K,EAAUwF,EAAS3I,EAAQyG,GACtC,MAAM0pC,EAAWhtC,EAASvI,QAASw5C,EAAiBjE,EAASK,QAC7D,IAAK4D,EACD,MAAO,GAEX,MAAM5D,EAAU4D,EAAelmC,UAAW0iC,EAAYJ,EAAQ31C,QAAUnB,IAAc82C,EAAQzC,UAAW5+B,EAAgBhM,EAASvI,QAAQwU,OAAQC,GAAkB,EAAIlM,EAASmM,eAAiBH,EAAcI,YAAa8kC,EAAmBzD,EAAYn2C,GAAc+1C,EAAQ/pC,SAAW4I,EAAiB5I,EAASkqC,EAAanrC,GAAgBgrC,EAAQtrC,OAAQovC,EAAe3D,EAAajqC,GAAgBiqC,EAAY0D,QAAoBn8C,EAAWqF,EAAM,GAAIg3C,EAAe3D,GAAa0D,EAGje,OAFA/2C,EAAI0N,KAAOspC,EAAeD,OAAep8C,EACzCqF,EAAI2N,OAASqpC,EAAeD,OAAep8C,EACpCqF,EAEX,QAEA,UAAU4F,GACN,MAAMgtC,EAAWhtC,EAASvI,QAASw5C,EAAiBjE,EAASK,QAC7D,QAAK4D,GAGEA,EAAelmC,UAAUrT,OAEpC,YAAYD,KAAY+F,GACf/F,EAAQ41C,UACT51C,EAAQ41C,QAAU,IAAI,IAE1B,IAAK,MAAM73C,KAAUgI,EACjB/F,EAAQ41C,QAAQhxC,KAAgB,OAAX7G,QAA8B,IAAXA,OAAoB,EAASA,EAAO63C,SAGpF,WC7BGrxC,eAAeq1C,GAAmB94B,SAC/BA,EAAO6X,mBAAmB,UAAW,IAAM,IAAI,ICDlD,MAAM,GACT,cACIl9B,KAAKkC,MAAQ,GACblC,KAAK8X,KAAO,GAEhB,KAAKxZ,GACIA,SAGcuD,IAAfvD,EAAK4D,QACLlC,KAAKkC,MAAQmC,GAAc/F,EAAK4D,aAElBL,IAAdvD,EAAKwZ,OACL9X,KAAK8X,KAAOzT,GAAc/F,EAAKwZ,SCZpC,MAAM,GACT,cACI9X,KAAK+E,SAAW,EAChB/E,KAAKwE,QAAS,EACdxE,KAAKiS,MAAQ,IAAI,GAErB,KAAK3T,GACD,GAAKA,SAGiBuD,IAAlBvD,EAAKyG,WACL/E,KAAK+E,SAAWV,GAAc/F,EAAKyG,gBAEnBlD,IAAhBvD,EAAKkG,SACLxE,KAAKwE,OAASlG,EAAKkG,aAEJ3C,IAAfvD,EAAK2T,OACL,GAA0B,kBAAf3T,EAAK2T,MACZjS,KAAKiS,MAAM9I,KAAK,CAAEjH,MAAO5D,EAAK2T,YAE7B,CACD,MAAMmsC,EAAa9/C,EAAK2T,WACDpQ,IAAnBu8C,EAAW56C,IACXxD,KAAKiS,MAAM9I,KAAK,CAAEjH,MAAOk8C,IAGzBp+C,KAAKiS,MAAM9I,KAAK7K,EAAK2T,SC1BzC,SAASosC,GAAavxC,EAAU2G,GAC5B,IAAIhT,EACJ,MAAM69C,EAASxxC,EAASvI,QAAQ+5C,OAChC,KAAiB,OAAXA,QAA8B,IAAXA,OAAoB,EAASA,EAAO95C,UAAYsI,EAASwxC,OAC9E,OAEJ,MAAMC,EAAazxC,EAASwxC,OAAOC,WAAa9qC,EAAMxM,OAAQ4uB,EAAY/oB,EAASwxC,OAAOzoB,UAAYpiB,EAAMxM,OAAQlC,EAAY8wB,IAAwD,QAAzCp1B,EAAKqM,EAAS0I,OAAOgpC,sBAAmC,IAAP/9C,EAAgBA,EAAK,GAAKgT,EAAMxM,SAAY,IAAO,IAAKxD,EAAM,EAAIzB,KAAKqD,GACvQyH,EAASwxC,OAAOp8C,OAASq8C,EACrBzxC,EAASwxC,OAAOp8C,MAAQuB,IACxBqJ,EAASwxC,OAAOp8C,OAASuB,GAE7BqJ,EAAS3H,SAASxD,GAAKoD,EAAW/C,KAAKW,IAAImK,EAASwxC,OAAOp8C,OAC3D4K,EAAS3H,SAAS1D,GAAKsD,EAAW/C,KAAKqvB,IAAIrvB,KAAKY,IAAIkK,EAASwxC,OAAOp8C,QAEjE,MAAM,GACT,YAAYsR,GACRxT,KAAKwT,UAAYA,EAErB,KAAK1G,GACD,IAAIrM,EACJ,MAAMg+C,EAAY3xC,EAASvI,QAAQ+5C,QACjB,OAAdG,QAAoC,IAAdA,OAAuB,EAASA,EAAUj6C,QAChEsI,EAASwxC,OAAS,CACdp8C,MAAOmB,IAAcrB,KAAKqD,GAAK,EAC/Bk5C,WAAYn6C,GAAcq6C,EAAUxsC,MAAM/P,OAAS,IACnD2zB,UAAWzxB,GAAcq6C,EAAUxsC,MAAM6F,MAAQ,IAIrDhL,EAASwxC,OAAS,CACdp8C,MAAO,EACPq8C,WAAY,EACZ1oB,UAAW,GAGnB/oB,EAAS0I,OAAOgpC,eAAiBp6C,GAAkG,QAAnF3D,EAAmB,OAAdg+C,QAAoC,IAAdA,OAAuB,EAASA,EAAU15C,gBAA6B,IAAPtE,EAAgBA,EAAK,GAAKT,KAAKwT,UAAUgC,OAAOC,WAE/L,UAAU3I,GACN,IAAIrM,EACJ,OAAQqM,EAAS0L,YAAc1L,EAASyL,aAAkD,QAAlC9X,EAAKqM,EAASvI,QAAQ+5C,cAA2B,IAAP79C,OAAgB,EAASA,EAAG+D,QAElI,YAAYD,KAAY+F,GACf/F,EAAQ+5C,SACT/5C,EAAQ+5C,OAAS,IAAI,IAEzB,IAAK,MAAMh8C,KAAUgI,EACjB/F,EAAQ+5C,OAAOn1C,KAAgB,OAAX7G,QAA8B,IAAXA,OAAoB,EAASA,EAAOg8C,QAGnF,OAAOxxC,EAAU2G,GACRzT,KAAK8rB,UAAUhf,IAGpBuxC,GAAavxC,EAAU2G,ICtDxB3K,eAAe41C,GAAkBr5B,SAC9BA,EAAO6X,mBAAmB,SAAW1pB,GAAc,IAAI,GAAcA,ICOxE1K,eAAe61C,GAASt5B,SACrBi4B,GAASj4B,SACT2b,GAAmB3b,SACnB+gB,GAAgB/gB,SAChBy4B,GAAgBz4B,SAChB84B,GAAmB94B,SACnBq5B,GAAkBr5B,SAClBugB,GAA6BvgB,SAC7B+a,GAAoB/a,SACpB+f,GAAmB/f,GCGd,QACfpnB,mBAEAK,gBACA,OACA4B,iBACAC,mBACAC,iBACAsqB,aACApL,eACAsG,mBACA9F,QACAmF,OACAzgB,UACAggB,kBACA1Z,cACAzM,kBAEAqb,WAEAiM,OACAxM,QACApU,aACAkf,WACA7T,WACArK,OACAkM,QACApD,+BAIAgJ,WACAhJ,OACAzL,6BAEAsqC,OACA7+B,eACA9J,aACAP,UACA4L,WACApK,SAEA8R,MACA0P,cACAtiB,iBACAV,UACAkjB,kBACAzkB,UACAgP,QACAoV,aAEAoC,QAAAvB,SAAA1jB,UAAAyjB,gBAAA7kB,UACAgN,SACAqB,WACAjN,UACAC,gBACAwN,QACAG,SAEAnP,UACAG,UAEAgS,OACA/W,eAEA0H,MACA0L,WACAjN,UACAC,eACAwN,QACAG,SAEAnP,QACAuB,UACAC,gBAEArB,UAGAqnB,oBAIA9rB,SACAigD,4BAAA,yJACAD,MAAA,0CADA,MCzGqT,MCOjT,GAAY,eACd,GACA,EACA,GACA,EACA,KACA,KACA,MAIa,M,QCoFA,IACf1gD,mBACAK,gBACA,OACAugD,uBACAv/C,OACAw/C,aACAC,4BACAC,cACAnM,YAGAoM,YACAC,eACAC,cACAC,WACAC,WACAC,kBACAC,gBAGA/gD,0CACAC,+DACAA,wBAAA+gD,uBAGA1/C,mBAAA,oKACA,2BACA,aACA,mCAEA,gBAEA,sDAPA,IAUAnB,yCACAC,yDAEA6gD,oBACA,kBACA,kBACA,YAEA,YAEA,yBACAjsC,iBACA01B,iBACAx/B,WACAkb,SACAjjB,KACAF,QAIAi+C,wBACA,kBAEA,UADA,IACA,gBAEA,EAEA,yBACAlsC,iBACA01B,iBACAx/B,WACAkb,SACAjjB,KACAF,WC3KqS,MCQjS,I,UAAY,eACd,GACA,EACAvC,GACA,EACA,KACA,WACA,OAIa,gB,2CCnBf,W","file":"js/chunk-b81ec0ae.e824bc86.js","sourcesContent":["export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpPage.vue?vue&type=style&index=0&id=42fd0914&prod&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginContent.vue?vue&type=style&index=0&id=b88d237a&prod&scoped=true&lang=css&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-select',{attrs:{\"items\":_vm.langs,\"label\":_vm.$t('common.lang'),\"dense\":\"\",\"light\":\"\"},scopedSlots:_vm._u([{key:\"selection\",fn:function({ item }){return [_c('v-img',{key:item,staticClass:\"mr-2\",attrs:{\"max-width\":\"25px\",\"alt\":item,\"src\":_vm.getLangImage(item)}}),_vm._v(\" \"+_vm._s(item)+\" \")]}},{key:\"item\",fn:function({ item }){return [_c('v-img',{staticClass:\"mr-2\",attrs:{\"max-width\":\"25px\",\"alt\":item,\"src\":_vm.getLangImage(item)}}),_vm._v(\" \"+_vm._s(item)+\" \")]}}]),model:{value:(_vm.curLang),callback:function ($$v) {_vm.curLang=$$v},expression:\"curLang\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LangSwitch.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LangSwitch.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LangSwitch.vue?vue&type=template&id=037a9850&\"\nimport script from \"./LangSwitch.vue?vue&type=script&lang=js&\"\nexport * from \"./LangSwitch.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyFeatures.vue?vue&type=style&index=0&id=20a84cd0&prod&scoped=true&lang=css&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-main',[(_vm.loaded)?_c('v-container',{staticClass:\"fullsize-container\",attrs:{\"fluid\":\"\",\"id\":\"top\"}},[_c('div',{staticClass:\"lang-switch-container zfix\"},[_c('LangSwitch',{attrs:{\"icon\":false}})],1),_c('v-row',{staticStyle:{\"height\":\"100%\"}},[_c('v-col',{staticClass:\"col-xs-10 zfix\",attrs:{\"cols\":\"12\",\"lg\":\"6\",\"md\":\"6\",\"sm\":\"12\",\"xs\":\"12\",\"align-self\":\"center\"}},[_c('div',{attrs:{\"id\":\"content-div\"}},[_c('div',{staticClass:\"container-row\"},[(_vm.page == 1)?_c('LoginContent',{attrs:{\"loggedIn\":_vm.isLoggedIn}}):_vm._e(),(_vm.page == 2)?_c('KeyFeatures'):_vm._e(),(_vm.page == 3)?_c('UseCases'):_vm._e(),(_vm.page == 4)?_c('HelpPage'):_vm._e()],1)])]),_c('v-col',{staticClass:\"pcc d-sm-none d-md-inline zfix\",attrs:{\"cols\":\"12\",\"lg\":\"4\",\"md\":\"4\"}},[(!_vm.whiteLabel)?_c('div',{staticClass:\"phone-container\"},[(_vm.page != 4)?_c('div',{staticClass:\"phone\"}):_c('a',{attrs:{\"if\":_vm.SO_API_BASE_URL != undefined,\"href\":_vm.SO_API_BASE_URL}},[_c('div',{staticClass:\"phone-api\"})])]):_vm._e()]),_c('v-col',{staticClass:\"order-md-first max-50 zfix\",staticStyle:{\"text-align\":\"left\"},attrs:{\"cols\":\"12\",\"lg\":\"1\",\"md\":\"1\",\"sm\":\"6\",\"xs\":\"6\",\"align-self\":\"center\"}},[(!_vm.whiteLabel)?_c('v-btn',{staticClass:\"mx-2 button-breathing\",attrs:{\"fab\":\"\",\"small\":\"\",\"dark\":\"\",\"color\":_vm.nextBtnColor,\"type\":\"button\"},on:{\"click\":_vm.previousPage}},[_c('v-icon',[_vm._v(\"mdi-arrow-left\")])],1):_vm._e()],1),_c('v-col',{staticClass:\"max-50 justify-space-between zfix\",staticStyle:{\"text-align\":\"right\"},attrs:{\"cols\":\"12\",\"lg\":\"1\",\"md\":\"1\",\"sm\":\"6\",\"xs\":\"6\",\"align-self\":\"center\"}},[(!_vm.whiteLabel)?_c('v-btn',{staticClass:\"mx-2 button-breathing\",attrs:{\"fab\":\"\",\"small\":\"\",\"dark\":\"\",\"color\":_vm.nextBtnColor,\"type\":\"button\"},on:{\"click\":_vm.nextPage}},[_c('v-icon',[_vm._v(\"mdi-arrow-right\")])],1):_vm._e()],1),_c('SoParticles')],1)],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"so-title\",staticStyle:{\"text-align\":\"center\",\"width\":\"auto\",\"max-width\":\"100%\"}},[_c('v-img',{staticStyle:{\"margin\":\"0 auto\"},attrs:{\"width\":\"500px\",\"max-width\":\"100%\",\"src\":_vm.whiteLabel ? 'so-white-label.png' : 'sensor-online-animated-logo.gif',\"max-height\":\"150px\"}})],1),_c('div',{staticClass:\"slogan\",staticStyle:{\"text-align\":\"center\"}},[_c('br'),_c('span',{staticClass:\"font-weight-bold lightgrey\"},[_vm._v(_vm._s(_vm.$t(\"landing.slogan\")))])]),(_vm.loggedIn)?_c('v-row',{staticClass:\"mt-12\",attrs:{\"align\":\"center\"}},[_c('v-btn',{staticClass:\"login-btn\",attrs:{\"type\":\"button\",\"color\":\"#7ca6d8\",\"large\":\"\",\"router\":\"\",\"to\":\"/dashboard\"}},[_vm._v(_vm._s(_vm.$t(\"common.dashboard\")))])],1):_vm._e(),(!_vm.loggedIn)?_c('v-row',{staticClass:\"mt-12\",attrs:{\"align\":\"center\"}},[_c('v-btn',{staticClass:\"login-btn\",attrs:{\"type\":\"button\",\"color\":\"#7ca6d8\",\"large\":\"\",\"router\":\"\",\"to\":\"/login\"}},[_vm._v(_vm._s(_vm.$t(\"common.login\")))])],1):_vm._e(),(_vm.loggedIn && _vm.permitted('Company.Create'))?_c('v-row',{staticClass:\"mt-6\",attrs:{\"align\":\"center\"}},[_c('span',{staticStyle:{\"text-align\":\"center\",\"color\":\"grey\",\"margin\":\"0 auto\",\"font-size\":\"1.2rem\"}},[_vm._v(_vm._s(_vm.$t(\"landing.or\")))])]):_vm._e(),(_vm.loggedIn && _vm.permitted('Company.Create'))?_c('v-row',{staticClass:\"mt-6\",attrs:{\"align\":\"center\"}},[_c('v-btn',{staticClass:\"login-btn\",attrs:{\"type\":\"button\",\"color\":\"#7ca6d8\",\"large\":\"\",\"router\":\"\",\"to\":\"/register\"}},[_vm._v(_vm._s(_vm.$t(\"common.registerCompany\")))])],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginContent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginContent.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LoginContent.vue?vue&type=template&id=b88d237a&scoped=true&\"\nimport script from \"./LoginContent.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginContent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoginContent.vue?vue&type=style&index=0&id=b88d237a&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b88d237a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"text-center text-wrap\"},[_c('h1',{staticClass:\"display-2\"},[_vm._v(_vm._s(_vm.$t(\"landing.key.title\").toUpperCase()))]),_c('v-row',{staticClass:\"mt-8\",attrs:{\"align-content\":\"space-around\"}},[_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('v-img',{attrs:{\"max-height\":\"50\",\"max-width\":\"50\",\"src\":\"/icons/sensor-icon.png\"}})],1),_c('v-col',{attrs:{\"align-self\":\"center\"}},[_c('h2',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.key.1\")))]),_c('p',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.key.description.1\")))])])],1),_c('v-row',{staticClass:\"mt-8\",attrs:{\"align-content\":\"space-around\"}},[_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('v-img',{attrs:{\"max-height\":\"50\",\"max-width\":\"50\",\"src\":\"/icons/dashboard.png\"}})],1),_c('v-col',{attrs:{\"align-self\":\"center\"}},[_c('h2',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.key.2\")))]),_c('p',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.key.description.2\")))])])],1),_c('v-row',{staticClass:\"mt-8\",attrs:{\"align-content\":\"space-around\"}},[_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('v-img',{attrs:{\"max-height\":\"50\",\"max-width\":\"50\",\"src\":\"/icons/graph.png\"}})],1),_c('v-col',{attrs:{\"align-self\":\"center\"}},[_c('h2',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.key.3\")))]),_c('p',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.key.description.3\")))])])],1),_c('v-row',{staticClass:\"mt-8\",attrs:{\"align-content\":\"space-around\"}},[_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('v-img',{attrs:{\"max-height\":\"50\",\"max-width\":\"50\",\"src\":\"/icons/fire-alarm.png\"}})],1),_c('v-col',{attrs:{\"align-self\":\"center\"}},[_c('h2',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.key.4\")))]),_c('p',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.key.description.4\")))])])],1),_c('v-row',{staticClass:\"mt-8\",attrs:{\"align-content\":\"space-around\"}},[_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('v-img',{attrs:{\"max-height\":\"50\",\"max-width\":\"50\",\"src\":\"/icons/staff.png\"}})],1),_c('v-col',{attrs:{\"align-self\":\"center\"}},[_c('h2',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.key.5\")))]),_c('p',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.key.description.5\")))])])],1),_c('v-row',{staticClass:\"mt-8\",attrs:{\"align-content\":\"space-around\"}},[_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('v-img',{attrs:{\"max-height\":\"50\",\"max-width\":\"50\",\"src\":\"/icons/script.png\"}})],1),_c('v-col',{attrs:{\"align-self\":\"center\"}},[_c('h2',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.key.6\")))]),_c('p',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.key.description.6\")))])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyFeatures.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyFeatures.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./KeyFeatures.vue?vue&type=template&id=20a84cd0&scoped=true&\"\nimport script from \"./KeyFeatures.vue?vue&type=script&lang=js&\"\nexport * from \"./KeyFeatures.vue?vue&type=script&lang=js&\"\nimport style0 from \"./KeyFeatures.vue?vue&type=style&index=0&id=20a84cd0&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"20a84cd0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"text-center text-wrap\"},[_c('h1',{staticClass:\"display-2 text-wrap\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"landing.usecases.title\").toUpperCase())+\" \")]),_c('br'),_c('v-row',{staticClass:\"mt-8\",attrs:{\"align-content\":\"space-around\"}},[_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('v-img',{attrs:{\"max-height\":\"50\",\"max-width\":\"50\",\"src\":\"/icons/environment.png\"}})],1),_c('v-col',{attrs:{\"align-self\":\"center\"}},[_c('h2',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.usecases.1\")))]),_c('p',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"landing.usecases.description.1\"))+\" \"),_c('a',{staticClass:\"so-accent\",staticStyle:{\"text-decoration\":\"none\"},attrs:{\"target\":\"_blank\",\"href\":\"https://ljusgarda.se\"}},[_vm._v(_vm._s(_vm.$t(\"landing.usecases.description.12\")))])])])],1),_c('v-row',{staticClass:\"mt-8\",attrs:{\"align-content\":\"space-around\"}},[_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('v-img',{attrs:{\"max-height\":\"50\",\"max-width\":\"50\",\"src\":\"/icons/electricity.png\"}})],1),_c('v-col',{attrs:{\"align-self\":\"center\"}},[_c('h2',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.usecases.2\")))]),_c('p',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"landing.usecases.description.2\"))+\" \")])])],1),_c('v-row',{staticClass:\"mt-8\",attrs:{\"align-content\":\"space-around\"}},[_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('v-img',{attrs:{\"max-height\":\"50\",\"max-width\":\"50\",\"src\":\"/icons/movement.png\"}})],1),_c('v-col',{attrs:{\"align-self\":\"center\"}},[_c('h2',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.usecases.3\")))]),_c('p',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"landing.usecases.description.3\"))+\" \")])])],1),_c('v-row',{staticClass:\"mt-8\",attrs:{\"align-content\":\"space-around\"}},[_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('v-img',{attrs:{\"max-height\":\"50\",\"max-width\":\"50\",\"src\":\"/icons/temp-sensor.png\"}})],1),_c('v-col',{attrs:{\"align-self\":\"center\"}},[_c('h2',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.usecases.4\")))]),_c('p',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"landing.usecases.description.4\"))+\" \")])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UseCases.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UseCases.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UseCases.vue?vue&type=template&id=030f29f4&scoped=true&\"\nimport script from \"./UseCases.vue?vue&type=script&lang=js&\"\nexport * from \"./UseCases.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"030f29f4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"text-center text-wrap\"},[_c('h1',{staticClass:\"display-2\"},[_vm._v(_vm._s(_vm.$t(\"landing.help.title\").toUpperCase()))]),_c('br'),_c('v-row',{staticClass:\"mt-8\",attrs:{\"align-content\":\"space-around\"}},[_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('v-img',{attrs:{\"max-height\":\"50\",\"max-width\":\"50\",\"src\":\"/icons/sensor-q.png\"}})],1),_c('v-col',{attrs:{\"align-self\":\"center\"}},[_c('h2',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.help.sensors.title\")))]),_c('p',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"landing.help.sensors.description\"))+\" \"),_c('a',{staticClass:\"so-accent\",staticStyle:{\"text-decoration\":\"none\",\"text-align\":\"left\"},attrs:{\"target\":\"_blank\",\"href\":\"https://www.eyeo.se/IOT-AB%20produktkatalog%202019.pdf\"}},[_vm._v(_vm._s(_vm.$t(\"landing.help.sensors.store\")))])])])],1),_c('v-row',{staticClass:\"mt-8\",attrs:{\"align-content\":\"space-around\"}},[_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('v-img',{attrs:{\"max-height\":\"50\",\"max-width\":\"50\",\"src\":\"/icons/api.png\"}})],1),_c('v-col',{attrs:{\"align-self\":\"center\"}},[_c('h2',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.help.api.title\")))]),_c('p',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"landing.help.api.description\"))+\" \"),_c('a',{staticClass:\"so-accent\",staticStyle:{\"text-decoration\":\"none\",\"text-align\":\"left\"},attrs:{\"if\":_vm.SO_API_BASE_URL != undefined,\"target\":\"_blank\",\"href\":_vm.SO_API_BASE_URL}},[_vm._v(\"SENSORONLINE API documentation. \")])])])],1),_c('v-row',{staticClass:\"mt-8\",attrs:{\"align-content\":\"space-around\"}},[_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('v-img',{attrs:{\"max-height\":\"50\",\"max-width\":\"50\",\"src\":\"/icons/connection.png\"}})],1),_c('v-col',{attrs:{\"align-self\":\"center\"}},[_c('h2',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.help.contact.title\")))]),_c('div',{staticClass:\"mt-4\",staticStyle:{\"text-align\":\"left\",\"font-size\":\"1.3rem\"}},[_c('span',{staticClass:\"font-weight-light so-main\"},[_vm._v(\"SENSOR\")]),_c('span',{staticClass:\"font-weight-bold so-accent\"},[_vm._v(\"ONLINE\")])]),_c('p',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"landing.help.contact.siencepark\"))+\" \")]),_c('p',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.help.contact.address\")))]),_c('p',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.help.contact.postal\")))]),_c('p',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.help.contact.country\")))]),_c('h3',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"landing.help.contact.phoneTitle\"))+\" \")]),_c('p',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"landing.help.contact.phonenumber\"))+\" \")]),_c('p',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"landing.help.contact.phonenumber2\"))+\" \")]),_c('h3',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"landing.help.contact.emailTitle\"))+\" \")]),_c('p',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"landing.help.contact.email\")))])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpPage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HelpPage.vue?vue&type=template&id=42fd0914&scoped=true&\"\nimport script from \"./HelpPage.vue?vue&type=script&lang=js&\"\nexport * from \"./HelpPage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HelpPage.vue?vue&type=style&index=0&id=42fd0914&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"42fd0914\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Particles',{staticStyle:{\"height\":\"100%\",\"width\":\"100%\",\"position\":\"absolute\",\"overflow\":\"hidden\",\"z-index\":\"2\",\"max-height\":\"100%\"},attrs:{\"id\":\"tsparticles\",\"particlesInit\":_vm.particlesInit,\"particlesLoaded\":_vm.particlesLoaded,\"options\":_vm.particleOptions}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export class EventDispatcher {\n constructor() {\n this._listeners = new Map();\n }\n addEventListener(type, listener) {\n var _a;\n this.removeEventListener(type, listener);\n if (!this._listeners.get(type)) {\n this._listeners.set(type, []);\n }\n (_a = this._listeners.get(type)) === null || _a === void 0 ? void 0 : _a.push(listener);\n }\n dispatchEvent(type, args) {\n var _a;\n (_a = this._listeners.get(type)) === null || _a === void 0 ? void 0 : _a.forEach((handler) => handler(args));\n }\n hasEventListener(type) {\n return !!this._listeners.get(type);\n }\n removeAllEventListeners(type) {\n if (!type) {\n this._listeners = new Map();\n }\n else {\n this._listeners.delete(type);\n }\n }\n removeEventListener(type, listener) {\n const arr = this._listeners.get(type);\n if (!arr) {\n return;\n }\n const length = arr.length, idx = arr.indexOf(listener);\n if (idx < 0) {\n return;\n }\n if (length === 1) {\n this._listeners.delete(type);\n }\n else {\n arr.splice(idx, 1);\n }\n }\n}\n","export class Vector3d {\n constructor(xOrCoords, y, z) {\n if (typeof xOrCoords !== \"number\" && xOrCoords) {\n this.x = xOrCoords.x;\n this.y = xOrCoords.y;\n const coords3d = xOrCoords;\n this.z = coords3d.z ? coords3d.z : 0;\n }\n else if (xOrCoords !== undefined && y !== undefined) {\n this.x = xOrCoords;\n this.y = y;\n this.z = z !== null && z !== void 0 ? z : 0;\n }\n else {\n throw new Error(\"tsParticles - Vector3d not initialized correctly\");\n }\n }\n static get origin() {\n return Vector3d.create(0, 0, 0);\n }\n get angle() {\n return Math.atan2(this.y, this.x);\n }\n set angle(angle) {\n this.updateFromAngle(angle, this.length);\n }\n get length() {\n return Math.sqrt(this.getLengthSq());\n }\n set length(length) {\n this.updateFromAngle(this.angle, length);\n }\n static clone(source) {\n return Vector3d.create(source.x, source.y, source.z);\n }\n static create(x, y, z) {\n return new Vector3d(x, y, z);\n }\n add(v) {\n return Vector3d.create(this.x + v.x, this.y + v.y, this.z + v.z);\n }\n addTo(v) {\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n }\n copy() {\n return Vector3d.clone(this);\n }\n distanceTo(v) {\n return this.sub(v).length;\n }\n distanceToSq(v) {\n return this.sub(v).getLengthSq();\n }\n div(n) {\n return Vector3d.create(this.x / n, this.y / n, this.z / n);\n }\n divTo(n) {\n this.x /= n;\n this.y /= n;\n this.z /= n;\n }\n getLengthSq() {\n return this.x ** 2 + this.y ** 2;\n }\n mult(n) {\n return Vector3d.create(this.x * n, this.y * n, this.z * n);\n }\n multTo(n) {\n this.x *= n;\n this.y *= n;\n this.z *= n;\n }\n rotate(angle) {\n return Vector3d.create(this.x * Math.cos(angle) - this.y * Math.sin(angle), this.x * Math.sin(angle) + this.y * Math.cos(angle), 0);\n }\n setTo(c) {\n this.x = c.x;\n this.y = c.y;\n const v3d = c;\n this.z = v3d.z ? v3d.z : 0;\n }\n sub(v) {\n return Vector3d.create(this.x - v.x, this.y - v.y, this.z - v.z);\n }\n subFrom(v) {\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n }\n updateFromAngle(angle, length) {\n this.x = Math.cos(angle) * length;\n this.y = Math.sin(angle) * length;\n }\n}\n","import { Vector3d } from \"./Vector3d\";\nexport class Vector extends Vector3d {\n constructor(xOrCoords, y) {\n super(xOrCoords, y, 0);\n }\n static get origin() {\n return Vector.create(0, 0);\n }\n static clone(source) {\n return Vector.create(source.x, source.y);\n }\n static create(x, y) {\n return new Vector(x, y);\n }\n}\n","import { Vector } from \"../Core/Utils/Vector\";\nlet _random = Math.random;\nconst easings = new Map();\nexport function addEasing(name, easing) {\n if (!easings.get(name)) {\n easings.set(name, easing);\n }\n}\nexport function getEasing(name) {\n return easings.get(name) || ((value) => value);\n}\nexport function setRandom(rnd = Math.random) {\n _random = rnd;\n}\nexport function getRandom() {\n return clamp(_random(), 0, 1 - 1e-16);\n}\nexport function clamp(num, min, max) {\n return Math.min(Math.max(num, min), max);\n}\nexport function mix(comp1, comp2, weight1, weight2) {\n return Math.floor((comp1 * weight1 + comp2 * weight2) / (weight1 + weight2));\n}\nexport function randomInRange(r) {\n const max = getRangeMax(r);\n let min = getRangeMin(r);\n if (max === min) {\n min = 0;\n }\n return getRandom() * (max - min) + min;\n}\nexport function getRangeValue(value) {\n return typeof value === \"number\" ? value : randomInRange(value);\n}\nexport function getRangeMin(value) {\n return typeof value === \"number\" ? value : value.min;\n}\nexport function getRangeMax(value) {\n return typeof value === \"number\" ? value : value.max;\n}\nexport function setRangeValue(source, value) {\n if (source === value || (value === undefined && typeof source === \"number\")) {\n return source;\n }\n const min = getRangeMin(source), max = getRangeMax(source);\n return value !== undefined\n ? {\n min: Math.min(min, value),\n max: Math.max(max, value),\n }\n : setRangeValue(min, max);\n}\nexport function getValue(options) {\n const random = options.random, { enable, minimumValue } = typeof random === \"boolean\"\n ? {\n enable: random,\n minimumValue: 0,\n }\n : random;\n return enable ? getRangeValue(setRangeValue(options.value, minimumValue)) : getRangeValue(options.value);\n}\nexport function getDistances(pointA, pointB) {\n const dx = pointA.x - pointB.x, dy = pointA.y - pointB.y;\n return { dx: dx, dy: dy, distance: Math.sqrt(dx ** 2 + dy ** 2) };\n}\nexport function getDistance(pointA, pointB) {\n return getDistances(pointA, pointB).distance;\n}\nexport function getParticleDirectionAngle(direction, position, center) {\n if (typeof direction === \"number\") {\n return (direction * Math.PI) / 180;\n }\n else {\n switch (direction) {\n case \"top\":\n return -Math.PI / 2;\n case \"top-right\":\n return -Math.PI / 4;\n case \"right\":\n return 0;\n case \"bottom-right\":\n return Math.PI / 4;\n case \"bottom\":\n return Math.PI / 2;\n case \"bottom-left\":\n return (3 * Math.PI) / 4;\n case \"left\":\n return Math.PI;\n case \"top-left\":\n return (-3 * Math.PI) / 4;\n case \"inside\":\n return Math.atan2(center.y - position.y, center.x - position.x);\n case \"outside\":\n return Math.atan2(position.y - center.y, position.x - center.x);\n default:\n return getRandom() * Math.PI * 2;\n }\n }\n}\nexport function getParticleBaseVelocity(direction) {\n const baseVelocity = Vector.origin;\n baseVelocity.length = 1;\n baseVelocity.angle = direction;\n return baseVelocity;\n}\nexport function collisionVelocity(v1, v2, m1, m2) {\n return Vector.create((v1.x * (m1 - m2)) / (m1 + m2) + (v2.x * 2 * m2) / (m1 + m2), v1.y);\n}\nexport function calcPositionFromSize(data) {\n return data.position && data.position.x !== undefined && data.position.y !== undefined\n ? {\n x: (data.position.x * data.size.width) / 100,\n y: (data.position.y * data.size.height) / 100,\n }\n : undefined;\n}\nexport function calcPositionOrRandomFromSize(data) {\n var _a, _b, _c, _d;\n return {\n x: (((_b = (_a = data.position) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : getRandom() * 100) * data.size.width) / 100,\n y: (((_d = (_c = data.position) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : getRandom() * 100) * data.size.height) / 100,\n };\n}\nexport function calcPositionOrRandomFromSizeRanged(data) {\n var _a, _b;\n const position = {\n x: ((_a = data.position) === null || _a === void 0 ? void 0 : _a.x) !== undefined ? getRangeValue(data.position.x) : undefined,\n y: ((_b = data.position) === null || _b === void 0 ? void 0 : _b.y) !== undefined ? getRangeValue(data.position.y) : undefined,\n };\n return calcPositionOrRandomFromSize({ size: data.size, position });\n}\nexport function calcExactPositionOrRandomFromSize(data) {\n var _a, _b, _c, _d;\n return {\n x: (_b = (_a = data.position) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : getRandom() * data.size.width,\n y: (_d = (_c = data.position) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : getRandom() * data.size.height,\n };\n}\nexport function calcExactPositionOrRandomFromSizeRanged(data) {\n var _a, _b;\n const position = {\n x: ((_a = data.position) === null || _a === void 0 ? void 0 : _a.x) !== undefined ? getRangeValue(data.position.x) : undefined,\n y: ((_b = data.position) === null || _b === void 0 ? void 0 : _b.y) !== undefined ? getRangeValue(data.position.y) : undefined,\n };\n return calcExactPositionOrRandomFromSize({ size: data.size, position });\n}\nexport function parseAlpha(input) {\n return input ? (input.endsWith(\"%\") ? parseFloat(input) / 100 : parseFloat(input)) : 1;\n}\n","import { collisionVelocity, getDistances, getRandom, getValue } from \"./NumberUtils\";\nimport { Vector } from \"../Core/Utils/Vector\";\nfunction rectSideBounce(pSide, pOtherSide, rectSide, rectOtherSide, velocity, factor) {\n const res = { bounced: false };\n if (pOtherSide.min < rectOtherSide.min ||\n pOtherSide.min > rectOtherSide.max ||\n pOtherSide.max < rectOtherSide.min ||\n pOtherSide.max > rectOtherSide.max) {\n return res;\n }\n if ((pSide.max >= rectSide.min && pSide.max <= (rectSide.max + rectSide.min) / 2 && velocity > 0) ||\n (pSide.min <= rectSide.max && pSide.min > (rectSide.max + rectSide.min) / 2 && velocity < 0)) {\n res.velocity = velocity * -factor;\n res.bounced = true;\n }\n return res;\n}\nfunction checkSelector(element, selectors) {\n const res = executeOnSingleOrMultiple(selectors, (selector) => {\n return element.matches(selector);\n });\n return res instanceof Array ? res.some((t) => t) : res;\n}\nexport function isSsr() {\n return typeof window === \"undefined\" || !window || typeof window.document === \"undefined\" || !window.document;\n}\nexport function hasMatchMedia() {\n return !isSsr() && typeof matchMedia !== \"undefined\";\n}\nexport function safeMatchMedia(query) {\n if (!hasMatchMedia()) {\n return;\n }\n return matchMedia(query);\n}\nexport function animate() {\n return isSsr()\n ? (callback) => setTimeout(callback)\n : (callback) => (requestAnimationFrame || setTimeout)(callback);\n}\nexport function cancelAnimation() {\n return isSsr()\n ? (handle) => clearTimeout(handle)\n : (handle) => (cancelAnimationFrame || clearTimeout)(handle);\n}\nexport function isInArray(value, array) {\n return value === array || (array instanceof Array && array.indexOf(value) > -1);\n}\nexport async function loadFont(font, weight) {\n try {\n await document.fonts.load(`${weight !== null && weight !== void 0 ? weight : \"400\"} 36px '${font !== null && font !== void 0 ? font : \"Verdana\"}'`);\n }\n catch (_a) {\n }\n}\nexport function arrayRandomIndex(array) {\n return Math.floor(getRandom() * array.length);\n}\nexport function itemFromArray(array, index, useIndex = true) {\n return array[index !== undefined && useIndex ? index % array.length : arrayRandomIndex(array)];\n}\nexport function isPointInside(point, size, offset, radius, direction) {\n return areBoundsInside(calculateBounds(point, radius !== null && radius !== void 0 ? radius : 0), size, offset, direction);\n}\nexport function areBoundsInside(bounds, size, offset, direction) {\n let inside = true;\n if (!direction || direction === \"bottom\") {\n inside = bounds.top < size.height + offset.x;\n }\n if (inside && (!direction || direction === \"left\")) {\n inside = bounds.right > offset.x;\n }\n if (inside && (!direction || direction === \"right\")) {\n inside = bounds.left < size.width + offset.y;\n }\n if (inside && (!direction || direction === \"top\")) {\n inside = bounds.bottom > offset.y;\n }\n return inside;\n}\nexport function calculateBounds(point, radius) {\n return {\n bottom: point.y + radius,\n left: point.x - radius,\n right: point.x + radius,\n top: point.y - radius,\n };\n}\nexport function deepExtend(destination, ...sources) {\n for (const source of sources) {\n if (source === undefined || source === null) {\n continue;\n }\n if (typeof source !== \"object\") {\n destination = source;\n continue;\n }\n const sourceIsArray = Array.isArray(source);\n if (sourceIsArray && (typeof destination !== \"object\" || !destination || !Array.isArray(destination))) {\n destination = [];\n }\n else if (!sourceIsArray && (typeof destination !== \"object\" || !destination || Array.isArray(destination))) {\n destination = {};\n }\n for (const key in source) {\n if (key === \"__proto__\") {\n continue;\n }\n const sourceDict = source, value = sourceDict[key], isObject = typeof value === \"object\", destDict = destination;\n destDict[key] =\n isObject && Array.isArray(value)\n ? value.map((v) => deepExtend(destDict[key], v))\n : deepExtend(destDict[key], value);\n }\n }\n return destination;\n}\nexport function isDivModeEnabled(mode, divs) {\n return !!findItemFromSingleOrMultiple(divs, (t) => t.enable && isInArray(mode, t.mode));\n}\nexport function divModeExecute(mode, divs, callback) {\n executeOnSingleOrMultiple(divs, (div) => {\n const divMode = div.mode, divEnabled = div.enable;\n if (divEnabled && isInArray(mode, divMode)) {\n singleDivModeExecute(div, callback);\n }\n });\n}\nexport function singleDivModeExecute(div, callback) {\n const selectors = div.selectors;\n executeOnSingleOrMultiple(selectors, (selector) => {\n callback(selector, div);\n });\n}\nexport function divMode(divs, element) {\n if (!element || !divs) {\n return;\n }\n return findItemFromSingleOrMultiple(divs, (div) => {\n return checkSelector(element, div.selectors);\n });\n}\nexport function circleBounceDataFromParticle(p) {\n return {\n position: p.getPosition(),\n radius: p.getRadius(),\n mass: p.getMass(),\n velocity: p.velocity,\n factor: Vector.create(getValue(p.options.bounce.horizontal), getValue(p.options.bounce.vertical)),\n };\n}\nexport function circleBounce(p1, p2) {\n const { x: xVelocityDiff, y: yVelocityDiff } = p1.velocity.sub(p2.velocity), [pos1, pos2] = [p1.position, p2.position], { dx: xDist, dy: yDist } = getDistances(pos2, pos1);\n if (xVelocityDiff * xDist + yVelocityDiff * yDist < 0) {\n return;\n }\n const angle = -Math.atan2(yDist, xDist), m1 = p1.mass, m2 = p2.mass, u1 = p1.velocity.rotate(angle), u2 = p2.velocity.rotate(angle), v1 = collisionVelocity(u1, u2, m1, m2), v2 = collisionVelocity(u2, u1, m1, m2), vFinal1 = v1.rotate(-angle), vFinal2 = v2.rotate(-angle);\n p1.velocity.x = vFinal1.x * p1.factor.x;\n p1.velocity.y = vFinal1.y * p1.factor.y;\n p2.velocity.x = vFinal2.x * p2.factor.x;\n p2.velocity.y = vFinal2.y * p2.factor.y;\n}\nexport function rectBounce(particle, divBounds) {\n const pPos = particle.getPosition(), size = particle.getRadius(), bounds = calculateBounds(pPos, size), resH = rectSideBounce({\n min: bounds.left,\n max: bounds.right,\n }, {\n min: bounds.top,\n max: bounds.bottom,\n }, {\n min: divBounds.left,\n max: divBounds.right,\n }, {\n min: divBounds.top,\n max: divBounds.bottom,\n }, particle.velocity.x, getValue(particle.options.bounce.horizontal));\n if (resH.bounced) {\n if (resH.velocity !== undefined) {\n particle.velocity.x = resH.velocity;\n }\n if (resH.position !== undefined) {\n particle.position.x = resH.position;\n }\n }\n const resV = rectSideBounce({\n min: bounds.top,\n max: bounds.bottom,\n }, {\n min: bounds.left,\n max: bounds.right,\n }, {\n min: divBounds.top,\n max: divBounds.bottom,\n }, {\n min: divBounds.left,\n max: divBounds.right,\n }, particle.velocity.y, getValue(particle.options.bounce.vertical));\n if (resV.bounced) {\n if (resV.velocity !== undefined) {\n particle.velocity.y = resV.velocity;\n }\n if (resV.position !== undefined) {\n particle.position.y = resV.position;\n }\n }\n}\nexport function executeOnSingleOrMultiple(obj, callback) {\n return obj instanceof Array ? obj.map((item) => callback(item)) : callback(obj);\n}\nexport function itemFromSingleOrMultiple(obj, index, useIndex) {\n return obj instanceof Array ? itemFromArray(obj, index, useIndex) : obj;\n}\nexport function findItemFromSingleOrMultiple(obj, callback) {\n return obj instanceof Array ? obj.find((t) => callback(t)) : callback(obj) ? obj : undefined;\n}\n","import { getRandom, getRangeValue, mix, randomInRange, setRangeValue } from \"./NumberUtils\";\nimport { itemFromArray } from \"./Utils\";\nconst randomColorValue = \"random\", midColorValue = \"mid\", colorManagers = new Map();\nexport function addColorManager(manager) {\n colorManagers.set(manager.key, manager);\n}\nfunction hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n}\nfunction stringToRgba(input) {\n for (const [, manager] of colorManagers) {\n if (input.startsWith(manager.stringPrefix)) {\n return manager.parseString(input);\n }\n }\n const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])([a-f\\d])?$/i, hexFixed = input.replace(shorthandRegex, (_, r, g, b, a) => {\n return r + r + g + g + b + b + (a !== undefined ? a + a : \"\");\n }), regex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?$/i, result = regex.exec(hexFixed);\n return result\n ? {\n a: result[4] !== undefined ? parseInt(result[4], 16) / 0xff : 1,\n b: parseInt(result[3], 16),\n g: parseInt(result[2], 16),\n r: parseInt(result[1], 16),\n }\n : undefined;\n}\nexport function rangeColorToRgb(input, index, useIndex = true) {\n if (!input) {\n return;\n }\n const color = typeof input === \"string\" ? { value: input } : input;\n if (typeof color.value === \"string\") {\n return colorToRgb(color.value, index, useIndex);\n }\n if (color.value instanceof Array) {\n return rangeColorToRgb({\n value: itemFromArray(color.value, index, useIndex),\n });\n }\n for (const [, manager] of colorManagers) {\n const res = manager.handleRangeColor(color);\n if (res) {\n return res;\n }\n }\n}\nexport function colorToRgb(input, index, useIndex = true) {\n if (!input) {\n return;\n }\n const color = typeof input === \"string\" ? { value: input } : input;\n if (typeof color.value === \"string\") {\n return color.value === randomColorValue ? getRandomRgbColor() : stringToRgb(color.value);\n }\n if (color.value instanceof Array) {\n return colorToRgb({\n value: itemFromArray(color.value, index, useIndex),\n });\n }\n for (const [, manager] of colorManagers) {\n const res = manager.handleColor(color);\n if (res) {\n return res;\n }\n }\n}\nexport function colorToHsl(color, index, useIndex = true) {\n const rgb = colorToRgb(color, index, useIndex);\n return rgb ? rgbToHsl(rgb) : undefined;\n}\nexport function rangeColorToHsl(color, index, useIndex = true) {\n const rgb = rangeColorToRgb(color, index, useIndex);\n return rgb ? rgbToHsl(rgb) : undefined;\n}\nexport function rgbToHsl(color) {\n const r1 = color.r / 255, g1 = color.g / 255, b1 = color.b / 255, max = Math.max(r1, g1, b1), min = Math.min(r1, g1, b1), res = {\n h: 0,\n l: (max + min) / 2,\n s: 0,\n };\n if (max !== min) {\n res.s = res.l < 0.5 ? (max - min) / (max + min) : (max - min) / (2.0 - max - min);\n res.h =\n r1 === max\n ? (g1 - b1) / (max - min)\n : (res.h = g1 === max ? 2.0 + (b1 - r1) / (max - min) : 4.0 + (r1 - g1) / (max - min));\n }\n res.l *= 100;\n res.s *= 100;\n res.h *= 60;\n if (res.h < 0) {\n res.h += 360;\n }\n if (res.h >= 360) {\n res.h -= 360;\n }\n return res;\n}\nexport function stringToAlpha(input) {\n var _a;\n return (_a = stringToRgba(input)) === null || _a === void 0 ? void 0 : _a.a;\n}\nexport function stringToRgb(input) {\n return stringToRgba(input);\n}\nexport function hslToRgb(hsl) {\n const result = { b: 0, g: 0, r: 0 }, hslPercent = {\n h: hsl.h / 360,\n l: hsl.l / 100,\n s: hsl.s / 100,\n };\n if (!hslPercent.s) {\n result.b = hslPercent.l;\n result.g = hslPercent.l;\n result.r = hslPercent.l;\n }\n else {\n const q = hslPercent.l < 0.5\n ? hslPercent.l * (1 + hslPercent.s)\n : hslPercent.l + hslPercent.s - hslPercent.l * hslPercent.s, p = 2 * hslPercent.l - q;\n result.r = hue2rgb(p, q, hslPercent.h + 1 / 3);\n result.g = hue2rgb(p, q, hslPercent.h);\n result.b = hue2rgb(p, q, hslPercent.h - 1 / 3);\n }\n result.r = Math.floor(result.r * 255);\n result.g = Math.floor(result.g * 255);\n result.b = Math.floor(result.b * 255);\n return result;\n}\nexport function hslaToRgba(hsla) {\n const rgbResult = hslToRgb(hsla);\n return {\n a: hsla.a,\n b: rgbResult.b,\n g: rgbResult.g,\n r: rgbResult.r,\n };\n}\nexport function getRandomRgbColor(min) {\n const fixedMin = min !== null && min !== void 0 ? min : 0;\n return {\n b: Math.floor(randomInRange(setRangeValue(fixedMin, 256))),\n g: Math.floor(randomInRange(setRangeValue(fixedMin, 256))),\n r: Math.floor(randomInRange(setRangeValue(fixedMin, 256))),\n };\n}\nexport function getStyleFromRgb(color, opacity) {\n return `rgba(${color.r}, ${color.g}, ${color.b}, ${opacity !== null && opacity !== void 0 ? opacity : 1})`;\n}\nexport function getStyleFromHsl(color, opacity) {\n return `hsla(${color.h}, ${color.s}%, ${color.l}%, ${opacity !== null && opacity !== void 0 ? opacity : 1})`;\n}\nexport function colorMix(color1, color2, size1, size2) {\n let rgb1 = color1, rgb2 = color2;\n if (rgb1.r === undefined) {\n rgb1 = hslToRgb(color1);\n }\n if (rgb2.r === undefined) {\n rgb2 = hslToRgb(color2);\n }\n return {\n b: mix(rgb1.b, rgb2.b, size1, size2),\n g: mix(rgb1.g, rgb2.g, size1, size2),\n r: mix(rgb1.r, rgb2.r, size1, size2),\n };\n}\nexport function getLinkColor(p1, p2, linkColor) {\n var _a, _b;\n if (linkColor === randomColorValue) {\n return getRandomRgbColor();\n }\n else if (linkColor === midColorValue) {\n const sourceColor = (_a = p1.getFillColor()) !== null && _a !== void 0 ? _a : p1.getStrokeColor(), destColor = (_b = p2 === null || p2 === void 0 ? void 0 : p2.getFillColor()) !== null && _b !== void 0 ? _b : p2 === null || p2 === void 0 ? void 0 : p2.getStrokeColor();\n if (sourceColor && destColor && p2) {\n return colorMix(sourceColor, destColor, p1.getRadius(), p2.getRadius());\n }\n else {\n const hslColor = sourceColor !== null && sourceColor !== void 0 ? sourceColor : destColor;\n if (hslColor) {\n return hslToRgb(hslColor);\n }\n }\n }\n else {\n return linkColor;\n }\n}\nexport function getLinkRandomColor(optColor, blink, consent) {\n const color = typeof optColor === \"string\" ? optColor : optColor.value;\n if (color === randomColorValue) {\n if (consent) {\n return rangeColorToRgb({\n value: color,\n });\n }\n if (blink) {\n return randomColorValue;\n }\n return midColorValue;\n }\n else if (color === midColorValue) {\n return midColorValue;\n }\n else {\n return rangeColorToRgb({\n value: color,\n });\n }\n}\nexport function getHslFromAnimation(animation) {\n return animation !== undefined\n ? {\n h: animation.h.value,\n s: animation.s.value,\n l: animation.l.value,\n }\n : undefined;\n}\nexport function getHslAnimationFromHsl(hsl, animationOptions, reduceFactor) {\n const resColor = {\n h: {\n enable: false,\n value: hsl.h,\n },\n s: {\n enable: false,\n value: hsl.s,\n },\n l: {\n enable: false,\n value: hsl.l,\n },\n };\n if (animationOptions) {\n setColorAnimation(resColor.h, animationOptions.h, reduceFactor);\n setColorAnimation(resColor.s, animationOptions.s, reduceFactor);\n setColorAnimation(resColor.l, animationOptions.l, reduceFactor);\n }\n return resColor;\n}\nfunction setColorAnimation(colorValue, colorAnimation, reduceFactor) {\n colorValue.enable = colorAnimation.enable;\n if (colorValue.enable) {\n colorValue.velocity = (getRangeValue(colorAnimation.speed) / 100) * reduceFactor;\n colorValue.decay = 1 - getRangeValue(colorAnimation.decay);\n colorValue.status = \"increasing\";\n if (!colorAnimation.sync) {\n colorValue.velocity *= getRandom();\n colorValue.value *= getRandom();\n }\n }\n else {\n colorValue.velocity = 0;\n }\n}\n","import { getStyleFromRgb } from \"./ColorUtils\";\nexport function drawLine(context, begin, end) {\n context.beginPath();\n context.moveTo(begin.x, begin.y);\n context.lineTo(end.x, end.y);\n context.closePath();\n}\nexport function drawTriangle(context, p1, p2, p3) {\n context.beginPath();\n context.moveTo(p1.x, p1.y);\n context.lineTo(p2.x, p2.y);\n context.lineTo(p3.x, p3.y);\n context.closePath();\n}\nexport function paintBase(context, dimension, baseColor) {\n context.fillStyle = baseColor !== null && baseColor !== void 0 ? baseColor : \"rgba(0,0,0,0)\";\n context.fillRect(0, 0, dimension.width, dimension.height);\n}\nexport function clear(context, dimension) {\n context.clearRect(0, 0, dimension.width, dimension.height);\n}\nexport function drawParticle(data) {\n var _a, _b, _c, _d, _e, _f;\n const { container, context, particle, delta, colorStyles, backgroundMask, composite, radius, opacity, shadow, transform, } = data;\n const pos = particle.getPosition(), angle = particle.rotation + (particle.pathRotation ? particle.velocity.angle : 0), rotateData = {\n sin: Math.sin(angle),\n cos: Math.cos(angle),\n }, transformData = {\n a: rotateData.cos * ((_a = transform.a) !== null && _a !== void 0 ? _a : 1),\n b: rotateData.sin * ((_b = transform.b) !== null && _b !== void 0 ? _b : 1),\n c: -rotateData.sin * ((_c = transform.c) !== null && _c !== void 0 ? _c : 1),\n d: rotateData.cos * ((_d = transform.d) !== null && _d !== void 0 ? _d : 1),\n };\n context.setTransform(transformData.a, transformData.b, transformData.c, transformData.d, pos.x, pos.y);\n context.beginPath();\n if (backgroundMask) {\n context.globalCompositeOperation = composite;\n }\n const shadowColor = particle.shadowColor;\n if (shadow.enable && shadowColor) {\n context.shadowBlur = shadow.blur;\n context.shadowColor = getStyleFromRgb(shadowColor);\n context.shadowOffsetX = shadow.offset.x;\n context.shadowOffsetY = shadow.offset.y;\n }\n if (colorStyles.fill) {\n context.fillStyle = colorStyles.fill;\n }\n const stroke = particle.stroke;\n context.lineWidth = (_e = particle.strokeWidth) !== null && _e !== void 0 ? _e : 0;\n if (colorStyles.stroke) {\n context.strokeStyle = colorStyles.stroke;\n }\n drawShape(container, context, particle, radius, opacity, delta);\n if (((_f = stroke === null || stroke === void 0 ? void 0 : stroke.width) !== null && _f !== void 0 ? _f : 0) > 0) {\n context.stroke();\n }\n if (particle.close) {\n context.closePath();\n }\n if (particle.fill) {\n context.fill();\n }\n drawShapeAfterEffect(container, context, particle, radius, opacity, delta);\n context.globalCompositeOperation = \"source-over\";\n context.setTransform(1, 0, 0, 1, 0, 0);\n}\nexport function drawShape(container, context, particle, radius, opacity, delta) {\n if (!particle.shape) {\n return;\n }\n const drawer = container.drawers.get(particle.shape);\n if (!drawer) {\n return;\n }\n drawer.draw(context, particle, radius, opacity, delta, container.retina.pixelRatio);\n}\nexport function drawShapeAfterEffect(container, context, particle, radius, opacity, delta) {\n if (!particle.shape) {\n return;\n }\n const drawer = container.drawers.get(particle.shape);\n if (!(drawer === null || drawer === void 0 ? void 0 : drawer.afterEffect)) {\n return;\n }\n drawer.afterEffect(context, particle, radius, opacity, delta, container.retina.pixelRatio);\n}\nexport function drawPlugin(context, plugin, delta) {\n if (!plugin.draw) {\n return;\n }\n plugin.draw(context, delta);\n}\nexport function drawParticlePlugin(context, plugin, particle, delta) {\n if (!plugin.drawParticle) {\n return;\n }\n plugin.drawParticle(context, particle, delta);\n}\nexport function alterHsl(color, type, value) {\n return {\n h: color.h,\n s: color.s,\n l: color.l + (type === \"darken\" ? -1 : 1) * value,\n };\n}\n","export const generatedAttribute = \"generated\";\nexport const touchEndEvent = \"touchend\";\nexport const mouseDownEvent = \"pointerdown\";\nexport const mouseUpEvent = \"pointerup\";\nexport const mouseMoveEvent = \"pointermove\";\nexport const touchStartEvent = \"touchstart\";\nexport const touchMoveEvent = \"touchmove\";\nexport const mouseLeaveEvent = \"pointerleave\";\nexport const mouseOutEvent = \"pointerout\";\nexport const touchCancelEvent = \"touchcancel\";\nexport const resizeEvent = \"resize\";\nexport const visibilityChangeEvent = \"visibilitychange\";\n","import { clear, drawParticle, drawParticlePlugin, drawPlugin, paintBase } from \"../Utils/CanvasUtils\";\nimport { deepExtend, isSsr } from \"../Utils/Utils\";\nimport { getStyleFromHsl, getStyleFromRgb, rangeColorToHsl, rangeColorToRgb } from \"../Utils/ColorUtils\";\nimport { generatedAttribute } from \"./Utils/Constants\";\nfunction setTransformValue(factor, newFactor, key) {\n var _a;\n const newValue = newFactor[key];\n if (newValue !== undefined) {\n factor[key] = ((_a = factor[key]) !== null && _a !== void 0 ? _a : 1) * newValue;\n }\n}\nexport class Canvas {\n constructor(container) {\n this.container = container;\n this.size = {\n height: 0,\n width: 0,\n };\n this._context = null;\n this._generated = false;\n this._preDrawUpdaters = [];\n this._postDrawUpdaters = [];\n this._resizePlugins = [];\n this._colorPlugins = [];\n this._mutationObserver =\n !isSsr() && typeof MutationObserver !== \"undefined\"\n ? new MutationObserver((records) => {\n for (const record of records) {\n if (record.type === \"attributes\" && record.attributeName === \"style\") {\n this._repairStyle();\n }\n }\n })\n : undefined;\n }\n get _fullScreen() {\n return this.container.actualOptions.fullScreen.enable;\n }\n clear() {\n const options = this.container.actualOptions, trail = options.particles.move.trail;\n if (options.backgroundMask.enable) {\n this.paint();\n }\n else if (trail.enable && trail.length > 0 && this._trailFillColor) {\n this._paintBase(getStyleFromRgb(this._trailFillColor, 1 / trail.length));\n }\n else {\n this.draw((ctx) => {\n clear(ctx, this.size);\n });\n }\n }\n destroy() {\n var _a, _b;\n (_a = this._mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n if (this._generated) {\n (_b = this.element) === null || _b === void 0 ? void 0 : _b.remove();\n }\n else {\n this._resetOriginalStyle();\n }\n this.draw((ctx) => {\n clear(ctx, this.size);\n });\n this._preDrawUpdaters = [];\n this._postDrawUpdaters = [];\n this._resizePlugins = [];\n this._colorPlugins = [];\n }\n draw(cb) {\n if (!this._context) {\n return;\n }\n return cb(this._context);\n }\n drawParticle(particle, delta) {\n var _a;\n if (particle.spawning || particle.destroyed) {\n return;\n }\n const radius = particle.getRadius();\n if (radius <= 0) {\n return;\n }\n const pfColor = particle.getFillColor(), psColor = (_a = particle.getStrokeColor()) !== null && _a !== void 0 ? _a : pfColor;\n let [fColor, sColor] = this._getPluginParticleColors(particle);\n if (!fColor) {\n fColor = pfColor;\n }\n if (!sColor) {\n sColor = psColor;\n }\n if (!fColor && !sColor) {\n return;\n }\n this.draw((ctx) => {\n var _a, _b, _c, _d, _e;\n const options = this.container.actualOptions, zIndexOptions = particle.options.zIndex, zOpacityFactor = (1 - particle.zIndexFactor) ** zIndexOptions.opacityRate, opacity = (_c = (_a = particle.bubble.opacity) !== null && _a !== void 0 ? _a : (_b = particle.opacity) === null || _b === void 0 ? void 0 : _b.value) !== null && _c !== void 0 ? _c : 1, strokeOpacity = (_e = (_d = particle.stroke) === null || _d === void 0 ? void 0 : _d.opacity) !== null && _e !== void 0 ? _e : opacity, zOpacity = opacity * zOpacityFactor, zStrokeOpacity = strokeOpacity * zOpacityFactor, transform = {}, colorStyles = {\n fill: fColor ? getStyleFromHsl(fColor, zOpacity) : undefined,\n };\n colorStyles.stroke = sColor ? getStyleFromHsl(sColor, zStrokeOpacity) : colorStyles.fill;\n this._applyPreDrawUpdaters(ctx, particle, radius, zOpacity, colorStyles, transform);\n drawParticle({\n container: this.container,\n context: ctx,\n particle,\n delta,\n colorStyles,\n backgroundMask: options.backgroundMask.enable,\n composite: options.backgroundMask.composite,\n radius: radius * (1 - particle.zIndexFactor) ** zIndexOptions.sizeRate,\n opacity: zOpacity,\n shadow: particle.options.shadow,\n transform,\n });\n this._applyPostDrawUpdaters(particle);\n });\n }\n drawParticlePlugin(plugin, particle, delta) {\n this.draw((ctx) => {\n drawParticlePlugin(ctx, plugin, particle, delta);\n });\n }\n drawPlugin(plugin, delta) {\n this.draw((ctx) => {\n drawPlugin(ctx, plugin, delta);\n });\n }\n init() {\n var _a;\n this.resize();\n this._initStyle();\n this._initCover();\n this._initTrail();\n this.initBackground();\n if (this.element) {\n (_a = this._mutationObserver) === null || _a === void 0 ? void 0 : _a.observe(this.element, { attributes: true });\n }\n this.initUpdaters();\n this.initPlugins();\n this.paint();\n }\n initBackground() {\n const options = this.container.actualOptions, background = options.background, element = this.element, elementStyle = element === null || element === void 0 ? void 0 : element.style;\n if (!elementStyle) {\n return;\n }\n if (background.color) {\n const color = rangeColorToRgb(background.color);\n elementStyle.backgroundColor = color ? getStyleFromRgb(color, background.opacity) : \"\";\n }\n else {\n elementStyle.backgroundColor = \"\";\n }\n elementStyle.backgroundImage = background.image || \"\";\n elementStyle.backgroundPosition = background.position || \"\";\n elementStyle.backgroundRepeat = background.repeat || \"\";\n elementStyle.backgroundSize = background.size || \"\";\n }\n initPlugins() {\n this._resizePlugins = [];\n for (const [, plugin] of this.container.plugins) {\n if (plugin.resize) {\n this._resizePlugins.push(plugin);\n }\n if (plugin.particleFillColor || plugin.particleStrokeColor) {\n this._colorPlugins.push(plugin);\n }\n }\n }\n initUpdaters() {\n this._preDrawUpdaters = [];\n this._postDrawUpdaters = [];\n for (const updater of this.container.particles.updaters) {\n if (updater.afterDraw) {\n this._postDrawUpdaters.push(updater);\n }\n if (updater.getColorStyles || updater.getTransformValues || updater.beforeDraw) {\n this._preDrawUpdaters.push(updater);\n }\n }\n }\n loadCanvas(canvas) {\n var _a, _b;\n if (this._generated) {\n (_a = this.element) === null || _a === void 0 ? void 0 : _a.remove();\n }\n this._generated =\n canvas.dataset && generatedAttribute in canvas.dataset\n ? canvas.dataset[generatedAttribute] === \"true\"\n : this._generated;\n this.element = canvas;\n this.element.ariaHidden = \"true\";\n this._originalStyle = deepExtend({}, this.element.style);\n this.size.height = canvas.offsetHeight;\n this.size.width = canvas.offsetWidth;\n this._context = this.element.getContext(\"2d\");\n (_b = this._mutationObserver) === null || _b === void 0 ? void 0 : _b.observe(this.element, { attributes: true });\n this.container.retina.init();\n this.initBackground();\n }\n paint() {\n const options = this.container.actualOptions;\n this.draw((ctx) => {\n if (options.backgroundMask.enable && options.backgroundMask.cover) {\n clear(ctx, this.size);\n this._paintBase(this._coverColorStyle);\n }\n else {\n this._paintBase();\n }\n });\n }\n resize() {\n if (!this.element) {\n return;\n }\n const container = this.container, pxRatio = container.retina.pixelRatio, size = container.canvas.size, newSize = {\n width: this.element.offsetWidth * pxRatio,\n height: this.element.offsetHeight * pxRatio,\n };\n if (newSize.height === size.height &&\n newSize.width === size.width &&\n newSize.height === this.element.height &&\n newSize.width === this.element.width) {\n return;\n }\n const oldSize = Object.assign({}, size);\n this.element.width = size.width = this.element.offsetWidth * pxRatio;\n this.element.height = size.height = this.element.offsetHeight * pxRatio;\n if (this.container.started) {\n this.resizeFactor = {\n width: size.width / oldSize.width,\n height: size.height / oldSize.height,\n };\n }\n }\n async windowResize() {\n if (!this.element) {\n return;\n }\n this.resize();\n const container = this.container, needsRefresh = container.updateActualOptions();\n container.particles.setDensity();\n this._applyResizePlugins();\n if (needsRefresh) {\n await container.refresh();\n }\n }\n _applyPostDrawUpdaters(particle) {\n var _a;\n for (const updater of this._postDrawUpdaters) {\n (_a = updater.afterDraw) === null || _a === void 0 ? void 0 : _a.call(updater, particle);\n }\n }\n _applyPreDrawUpdaters(ctx, particle, radius, zOpacity, colorStyles, transform) {\n var _a;\n for (const updater of this._preDrawUpdaters) {\n if (updater.getColorStyles) {\n const { fill, stroke } = updater.getColorStyles(particle, ctx, radius, zOpacity);\n if (fill) {\n colorStyles.fill = fill;\n }\n if (stroke) {\n colorStyles.stroke = stroke;\n }\n }\n if (updater.getTransformValues) {\n const updaterTransform = updater.getTransformValues(particle);\n for (const key in updaterTransform) {\n setTransformValue(transform, updaterTransform, key);\n }\n }\n (_a = updater.beforeDraw) === null || _a === void 0 ? void 0 : _a.call(updater, particle);\n }\n }\n _applyResizePlugins() {\n for (const plugin of this._resizePlugins) {\n if (plugin.resize) {\n plugin.resize();\n }\n }\n }\n _getPluginParticleColors(particle) {\n let fColor, sColor;\n for (const plugin of this._colorPlugins) {\n if (!fColor && plugin.particleFillColor) {\n fColor = rangeColorToHsl(plugin.particleFillColor(particle));\n }\n if (!sColor && plugin.particleStrokeColor) {\n sColor = rangeColorToHsl(plugin.particleStrokeColor(particle));\n }\n if (fColor && sColor) {\n break;\n }\n }\n return [fColor, sColor];\n }\n _initCover() {\n const options = this.container.actualOptions, cover = options.backgroundMask.cover, color = cover.color, coverRgb = rangeColorToRgb(color);\n if (coverRgb) {\n const coverColor = {\n r: coverRgb.r,\n g: coverRgb.g,\n b: coverRgb.b,\n a: cover.opacity,\n };\n this._coverColorStyle = getStyleFromRgb(coverColor, coverColor.a);\n }\n }\n _initStyle() {\n const element = this.element, options = this.container.actualOptions;\n if (!element) {\n return;\n }\n if (this._fullScreen) {\n this._originalStyle = deepExtend({}, element.style);\n this._setFullScreenStyle();\n }\n else {\n this._resetOriginalStyle();\n }\n for (const key in options.style) {\n if (!key || !options.style) {\n continue;\n }\n const value = options.style[key];\n if (!value) {\n continue;\n }\n element.style.setProperty(key, value, \"important\");\n }\n }\n _initTrail() {\n const options = this.container.actualOptions, trail = options.particles.move.trail, fillColor = rangeColorToRgb(trail.fillColor);\n if (fillColor) {\n const trail = options.particles.move.trail;\n this._trailFillColor = Object.assign(Object.assign({}, fillColor), { a: 1 / trail.length });\n }\n }\n _paintBase(baseColor) {\n this.draw((ctx) => {\n paintBase(ctx, this.size, baseColor);\n });\n }\n _repairStyle() {\n var _a, _b;\n const element = this.element;\n if (!element) {\n return;\n }\n (_a = this._mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n this._initStyle();\n this.initBackground();\n (_b = this._mutationObserver) === null || _b === void 0 ? void 0 : _b.observe(element, { attributes: true });\n }\n _resetOriginalStyle() {\n const element = this.element, originalStyle = this._originalStyle;\n if (!(element && originalStyle)) {\n return;\n }\n element.style.position = originalStyle.position;\n element.style.zIndex = originalStyle.zIndex;\n element.style.top = originalStyle.top;\n element.style.left = originalStyle.left;\n element.style.width = originalStyle.width;\n element.style.height = originalStyle.height;\n }\n _setFullScreenStyle() {\n const element = this.element;\n if (!element) {\n return;\n }\n const priority = \"important\";\n element.style.setProperty(\"position\", \"fixed\", priority);\n element.style.setProperty(\"z-index\", this.container.actualOptions.fullScreen.zIndex.toString(10), priority);\n element.style.setProperty(\"top\", \"0\", priority);\n element.style.setProperty(\"left\", \"0\", priority);\n element.style.setProperty(\"width\", \"100%\", priority);\n element.style.setProperty(\"height\", \"100%\", priority);\n }\n}\n","import { executeOnSingleOrMultiple, safeMatchMedia } from \"../../Utils/Utils\";\nimport { mouseDownEvent, mouseLeaveEvent, mouseMoveEvent, mouseOutEvent, mouseUpEvent, resizeEvent, touchCancelEvent, touchEndEvent, touchMoveEvent, touchStartEvent, visibilityChangeEvent, } from \"./Constants\";\nfunction manageListener(element, event, handler, add, options) {\n if (add) {\n let addOptions = { passive: true };\n if (typeof options === \"boolean\") {\n addOptions.capture = options;\n }\n else if (options !== undefined) {\n addOptions = options;\n }\n element.addEventListener(event, handler, addOptions);\n }\n else {\n const removeOptions = options;\n element.removeEventListener(event, handler, removeOptions);\n }\n}\nexport class EventListeners {\n constructor(container) {\n this.container = container;\n this.canPush = true;\n this.handlers = {\n mouseMove: (e) => this.mouseTouchMove(e),\n touchStart: (e) => this.mouseTouchMove(e),\n touchMove: (e) => this.mouseTouchMove(e),\n touchEnd: () => this.mouseTouchFinish(),\n mouseLeave: () => this.mouseTouchFinish(),\n touchCancel: () => this.mouseTouchFinish(),\n touchEndClick: (e) => this.mouseTouchClick(e),\n mouseUp: (e) => this.mouseTouchClick(e),\n mouseDown: () => this.mouseDown(),\n visibilityChange: () => this.handleVisibilityChange(),\n themeChange: (e) => this.handleThemeChange(e),\n oldThemeChange: (e) => this.handleThemeChange(e),\n resize: () => this.handleWindowResize(),\n };\n }\n addListeners() {\n this.manageListeners(true);\n }\n removeListeners() {\n this.manageListeners(false);\n }\n doMouseTouchClick(e) {\n const container = this.container, options = container.actualOptions;\n if (this.canPush) {\n const mouseInteractivity = container.interactivity.mouse, mousePos = mouseInteractivity.position;\n if (!mousePos) {\n return;\n }\n mouseInteractivity.clickPosition = Object.assign({}, mousePos);\n mouseInteractivity.clickTime = new Date().getTime();\n const onClick = options.interactivity.events.onClick;\n executeOnSingleOrMultiple(onClick.mode, (mode) => this.handleClickMode(mode));\n }\n if (e.type === \"touchend\") {\n setTimeout(() => this.mouseTouchFinish(), 500);\n }\n }\n handleClickMode(mode) {\n this.container.handleClickMode(mode);\n }\n handleThemeChange(e) {\n const mediaEvent = e, container = this.container, options = container.options, defaultThemes = options.defaultThemes, themeName = mediaEvent.matches ? defaultThemes.dark : defaultThemes.light, theme = options.themes.find((theme) => theme.name === themeName);\n if (theme && theme.default.auto) {\n container.loadTheme(themeName);\n }\n }\n handleVisibilityChange() {\n const container = this.container, options = container.actualOptions;\n this.mouseTouchFinish();\n if (!options.pauseOnBlur) {\n return;\n }\n if (document === null || document === void 0 ? void 0 : document.hidden) {\n container.pageHidden = true;\n container.pause();\n }\n else {\n container.pageHidden = false;\n if (container.getAnimationStatus()) {\n container.play(true);\n }\n else {\n container.draw(true);\n }\n }\n }\n handleWindowResize() {\n if (this.resizeTimeout) {\n clearTimeout(this.resizeTimeout);\n delete this.resizeTimeout;\n }\n this.resizeTimeout = setTimeout(async () => { var _a; return (_a = this.container.canvas) === null || _a === void 0 ? void 0 : _a.windowResize(); }, this.container.actualOptions.interactivity.events.resize.delay * 1000);\n }\n manageListeners(add) {\n var _a;\n const handlers = this.handlers, container = this.container, options = container.actualOptions, detectType = options.interactivity.detectsOn;\n let mouseLeaveTmpEvent = mouseLeaveEvent;\n if (detectType === \"window\") {\n container.interactivity.element = window;\n mouseLeaveTmpEvent = mouseOutEvent;\n }\n else if (detectType === \"parent\" && container.canvas.element) {\n const canvasEl = container.canvas.element;\n container.interactivity.element = (_a = canvasEl.parentElement) !== null && _a !== void 0 ? _a : canvasEl.parentNode;\n }\n else {\n container.interactivity.element = container.canvas.element;\n }\n const mediaMatch = safeMatchMedia(\"(prefers-color-scheme: dark)\");\n if (mediaMatch) {\n if (mediaMatch.addEventListener !== undefined) {\n manageListener(mediaMatch, \"change\", handlers.themeChange, add);\n }\n else if (mediaMatch.addListener !== undefined) {\n if (add) {\n mediaMatch.addListener(handlers.oldThemeChange);\n }\n else {\n mediaMatch.removeListener(handlers.oldThemeChange);\n }\n }\n }\n const interactivityEl = container.interactivity.element;\n if (!interactivityEl) {\n return;\n }\n const html = interactivityEl;\n if (options.interactivity.events.onHover.enable || options.interactivity.events.onClick.enable) {\n manageListener(interactivityEl, mouseMoveEvent, handlers.mouseMove, add);\n manageListener(interactivityEl, touchStartEvent, handlers.touchStart, add);\n manageListener(interactivityEl, touchMoveEvent, handlers.touchMove, add);\n if (!options.interactivity.events.onClick.enable) {\n manageListener(interactivityEl, touchEndEvent, handlers.touchEnd, add);\n }\n else {\n manageListener(interactivityEl, touchEndEvent, handlers.touchEndClick, add);\n manageListener(interactivityEl, mouseUpEvent, handlers.mouseUp, add);\n manageListener(interactivityEl, mouseDownEvent, handlers.mouseDown, add);\n }\n manageListener(interactivityEl, mouseLeaveTmpEvent, handlers.mouseLeave, add);\n manageListener(interactivityEl, touchCancelEvent, handlers.touchCancel, add);\n }\n if (container.canvas.element) {\n container.canvas.element.style.pointerEvents = html === container.canvas.element ? \"initial\" : \"none\";\n }\n if (options.interactivity.events.resize) {\n if (typeof ResizeObserver !== \"undefined\") {\n if (this.resizeObserver && !add) {\n if (container.canvas.element) {\n this.resizeObserver.unobserve(container.canvas.element);\n }\n this.resizeObserver.disconnect();\n delete this.resizeObserver;\n }\n else if (!this.resizeObserver && add && container.canvas.element) {\n this.resizeObserver = new ResizeObserver((entries) => {\n const entry = entries.find((e) => e.target === container.canvas.element);\n if (!entry) {\n return;\n }\n this.handleWindowResize();\n });\n this.resizeObserver.observe(container.canvas.element);\n }\n }\n else {\n manageListener(window, resizeEvent, handlers.resize, add);\n }\n }\n if (document) {\n manageListener(document, visibilityChangeEvent, handlers.visibilityChange, add, false);\n }\n }\n mouseDown() {\n const interactivity = this.container.interactivity;\n if (interactivity) {\n const mouse = interactivity.mouse;\n mouse.clicking = true;\n mouse.downPosition = mouse.position;\n }\n }\n mouseTouchClick(e) {\n const container = this.container, options = container.actualOptions, mouse = container.interactivity.mouse;\n mouse.inside = true;\n let handled = false;\n const mousePosition = mouse.position;\n if (!mousePosition || !options.interactivity.events.onClick.enable) {\n return;\n }\n for (const [, plugin] of container.plugins) {\n if (!plugin.clickPositionValid) {\n continue;\n }\n handled = plugin.clickPositionValid(mousePosition);\n if (handled) {\n break;\n }\n }\n if (!handled) {\n this.doMouseTouchClick(e);\n }\n mouse.clicking = false;\n }\n mouseTouchFinish() {\n const interactivity = this.container.interactivity;\n if (!interactivity) {\n return;\n }\n const mouse = interactivity.mouse;\n delete mouse.position;\n delete mouse.clickPosition;\n delete mouse.downPosition;\n interactivity.status = mouseLeaveEvent;\n mouse.inside = false;\n mouse.clicking = false;\n }\n mouseTouchMove(e) {\n var _a, _b, _c, _d, _e, _f, _g;\n const container = this.container, options = container.actualOptions;\n if (!((_a = container.interactivity) === null || _a === void 0 ? void 0 : _a.element)) {\n return;\n }\n container.interactivity.mouse.inside = true;\n let pos;\n const canvas = container.canvas.element;\n if (e.type.startsWith(\"pointer\")) {\n this.canPush = true;\n const mouseEvent = e;\n if (container.interactivity.element === window) {\n if (canvas) {\n const clientRect = canvas.getBoundingClientRect();\n pos = {\n x: mouseEvent.clientX - clientRect.left,\n y: mouseEvent.clientY - clientRect.top,\n };\n }\n }\n else if (options.interactivity.detectsOn === \"parent\") {\n const source = mouseEvent.target, target = mouseEvent.currentTarget, canvasEl = container.canvas.element;\n if (source && target && canvasEl) {\n const sourceRect = source.getBoundingClientRect(), targetRect = target.getBoundingClientRect(), canvasRect = canvasEl.getBoundingClientRect();\n pos = {\n x: mouseEvent.offsetX + 2 * sourceRect.left - (targetRect.left + canvasRect.left),\n y: mouseEvent.offsetY + 2 * sourceRect.top - (targetRect.top + canvasRect.top),\n };\n }\n else {\n pos = {\n x: (_b = mouseEvent.offsetX) !== null && _b !== void 0 ? _b : mouseEvent.clientX,\n y: (_c = mouseEvent.offsetY) !== null && _c !== void 0 ? _c : mouseEvent.clientY,\n };\n }\n }\n else if (mouseEvent.target === container.canvas.element) {\n pos = {\n x: (_d = mouseEvent.offsetX) !== null && _d !== void 0 ? _d : mouseEvent.clientX,\n y: (_e = mouseEvent.offsetY) !== null && _e !== void 0 ? _e : mouseEvent.clientY,\n };\n }\n }\n else {\n this.canPush = e.type !== \"touchmove\";\n const touchEvent = e, lastTouch = touchEvent.touches[touchEvent.touches.length - 1], canvasRect = canvas === null || canvas === void 0 ? void 0 : canvas.getBoundingClientRect();\n pos = {\n x: lastTouch.clientX - ((_f = canvasRect === null || canvasRect === void 0 ? void 0 : canvasRect.left) !== null && _f !== void 0 ? _f : 0),\n y: lastTouch.clientY - ((_g = canvasRect === null || canvasRect === void 0 ? void 0 : canvasRect.top) !== null && _g !== void 0 ? _g : 0),\n };\n }\n const pxRatio = container.retina.pixelRatio;\n if (pos) {\n pos.x *= pxRatio;\n pos.y *= pxRatio;\n }\n container.interactivity.mouse.position = pos;\n container.interactivity.status = mouseMoveEvent;\n }\n}\n","function initDelta(value, fpsLimit = 60, smooth = false) {\n return {\n value,\n factor: smooth ? 60 / fpsLimit : (60 * value) / 1000,\n };\n}\nexport class FrameManager {\n constructor(container) {\n this.container = container;\n }\n async nextFrame(timestamp) {\n var _a;\n try {\n const container = this.container;\n if (!container.smooth &&\n container.lastFrameTime !== undefined &&\n timestamp < container.lastFrameTime + 1000 / container.fpsLimit) {\n container.draw(false);\n return;\n }\n (_a = container.lastFrameTime) !== null && _a !== void 0 ? _a : (container.lastFrameTime = timestamp);\n const delta = initDelta(timestamp - container.lastFrameTime, container.fpsLimit, container.smooth);\n container.lifeTime += delta.value;\n container.lastFrameTime = timestamp;\n if (delta.value > 1000) {\n container.draw(false);\n return;\n }\n await container.particles.draw(delta);\n if (container.duration > 0 && container.lifeTime > container.duration) {\n container.destroy();\n return;\n }\n if (container.getAnimationStatus()) {\n container.draw(false);\n }\n }\n catch (e) {\n console.error(\"tsParticles error in animation loop\", e);\n }\n }\n}\n","export class OptionsColor {\n constructor() {\n this.value = \"\";\n }\n static create(source, data) {\n const color = new OptionsColor();\n color.load(source);\n if (data !== undefined) {\n if (typeof data === \"string\" || data instanceof Array) {\n color.load({ value: data });\n }\n else {\n color.load(data);\n }\n }\n return color;\n }\n load(data) {\n if ((data === null || data === void 0 ? void 0 : data.value) === undefined) {\n return;\n }\n this.value = data.value;\n }\n}\n","import { OptionsColor } from \"../OptionsColor\";\nexport class Background {\n constructor() {\n this.color = new OptionsColor();\n this.color.value = \"\";\n this.image = \"\";\n this.position = \"\";\n this.repeat = \"\";\n this.size = \"\";\n this.opacity = 1;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.color !== undefined) {\n this.color = OptionsColor.create(this.color, data.color);\n }\n if (data.image !== undefined) {\n this.image = data.image;\n }\n if (data.position !== undefined) {\n this.position = data.position;\n }\n if (data.repeat !== undefined) {\n this.repeat = data.repeat;\n }\n if (data.size !== undefined) {\n this.size = data.size;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n }\n}\n","import { OptionsColor } from \"../OptionsColor\";\nexport class BackgroundMaskCover {\n constructor() {\n this.color = new OptionsColor();\n this.color.value = \"#fff\";\n this.opacity = 1;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.color !== undefined) {\n this.color = OptionsColor.create(this.color, data.color);\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n }\n}\n","import { BackgroundMaskCover } from \"./BackgroundMaskCover\";\nexport class BackgroundMask {\n constructor() {\n this.composite = \"destination-out\";\n this.cover = new BackgroundMaskCover();\n this.enable = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.composite !== undefined) {\n this.composite = data.composite;\n }\n if (data.cover !== undefined) {\n const cover = data.cover;\n const color = (typeof data.cover === \"string\" ? { color: data.cover } : data.cover);\n this.cover.load(cover.color !== undefined ? cover : { color: color });\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n }\n}\n","export class FullScreen {\n constructor() {\n this.enable = true;\n this.zIndex = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.zIndex !== undefined) {\n this.zIndex = data.zIndex;\n }\n }\n}\n","export class ClickEvent {\n constructor() {\n this.enable = false;\n this.mode = [];\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n }\n}\n","import { executeOnSingleOrMultiple } from \"../../../../Utils/Utils\";\nexport class DivEvent {\n constructor() {\n this.selectors = [];\n this.enable = false;\n this.mode = [];\n this.type = \"circle\";\n }\n get el() {\n return this.elementId;\n }\n set el(value) {\n this.elementId = value;\n }\n get elementId() {\n return this.ids;\n }\n set elementId(value) {\n this.ids = value;\n }\n get ids() {\n return executeOnSingleOrMultiple(this.selectors, (t) => t.replace(\"#\", \"\"));\n }\n set ids(value) {\n this.selectors = executeOnSingleOrMultiple(value, (t) => `#${t}`);\n }\n load(data) {\n var _a, _b;\n if (!data) {\n return;\n }\n const ids = (_b = (_a = data.ids) !== null && _a !== void 0 ? _a : data.elementId) !== null && _b !== void 0 ? _b : data.el;\n if (ids !== undefined) {\n this.ids = ids;\n }\n if (data.selectors !== undefined) {\n this.selectors = data.selectors;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n if (data.type !== undefined) {\n this.type = data.type;\n }\n }\n}\n","export class Parallax {\n constructor() {\n this.enable = false;\n this.force = 2;\n this.smooth = 10;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.force !== undefined) {\n this.force = data.force;\n }\n if (data.smooth !== undefined) {\n this.smooth = data.smooth;\n }\n }\n}\n","import { Parallax } from \"./Parallax\";\nexport class HoverEvent {\n constructor() {\n this.enable = false;\n this.mode = [];\n this.parallax = new Parallax();\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n this.parallax.load(data.parallax);\n }\n}\n","export class ResizeEvent {\n constructor() {\n this.delay = 0.5;\n this.enable = true;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.delay !== undefined) {\n this.delay = data.delay;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n }\n}\n","import { ClickEvent } from \"./ClickEvent\";\nimport { DivEvent } from \"./DivEvent\";\nimport { HoverEvent } from \"./HoverEvent\";\nimport { ResizeEvent } from \"./ResizeEvent\";\nimport { executeOnSingleOrMultiple } from \"../../../../Utils/Utils\";\nexport class Events {\n constructor() {\n this.onClick = new ClickEvent();\n this.onDiv = new DivEvent();\n this.onHover = new HoverEvent();\n this.resize = new ResizeEvent();\n }\n get onclick() {\n return this.onClick;\n }\n set onclick(value) {\n this.onClick = value;\n }\n get ondiv() {\n return this.onDiv;\n }\n set ondiv(value) {\n this.onDiv = value;\n }\n get onhover() {\n return this.onHover;\n }\n set onhover(value) {\n this.onHover = value;\n }\n load(data) {\n var _a, _b, _c;\n if (!data) {\n return;\n }\n this.onClick.load((_a = data.onClick) !== null && _a !== void 0 ? _a : data.onclick);\n const onDiv = (_b = data.onDiv) !== null && _b !== void 0 ? _b : data.ondiv;\n if (onDiv !== undefined) {\n this.onDiv = executeOnSingleOrMultiple(onDiv, (t) => {\n const tmp = new DivEvent();\n tmp.load(t);\n return tmp;\n });\n }\n this.onHover.load((_c = data.onHover) !== null && _c !== void 0 ? _c : data.onhover);\n if (typeof data.resize === \"boolean\") {\n this.resize.enable = data.resize;\n }\n else {\n this.resize.load(data.resize);\n }\n }\n}\n","export class Modes {\n constructor(engine, container) {\n this._engine = engine;\n this._container = container;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (this._container) {\n const interactors = this._engine.plugins.interactors.get(this._container);\n if (interactors) {\n for (const interactor of interactors) {\n if (interactor.loadModeOptions) {\n interactor.loadModeOptions(this, data);\n }\n }\n }\n }\n }\n}\n","import { Events } from \"./Events/Events\";\nimport { Modes } from \"./Modes/Modes\";\nexport class Interactivity {\n constructor(engine, container) {\n this.detectsOn = \"window\";\n this.events = new Events();\n this.modes = new Modes(engine, container);\n }\n get detect_on() {\n return this.detectsOn;\n }\n set detect_on(value) {\n this.detectsOn = value;\n }\n load(data) {\n var _a;\n if (!data) {\n return;\n }\n const detectsOn = (_a = data.detectsOn) !== null && _a !== void 0 ? _a : data.detect_on;\n if (detectsOn !== undefined) {\n this.detectsOn = detectsOn;\n }\n this.events.load(data.events);\n this.modes.load(data.modes);\n }\n}\n","import { deepExtend } from \"../../Utils/Utils\";\nexport class ManualParticle {\n load(data) {\n var _a, _b;\n if (!data) {\n return;\n }\n if (data.position !== undefined) {\n this.position = {\n x: (_a = data.position.x) !== null && _a !== void 0 ? _a : 50,\n y: (_b = data.position.y) !== null && _b !== void 0 ? _b : 50,\n };\n }\n if (data.options !== undefined) {\n this.options = deepExtend({}, data.options);\n }\n }\n}\n","import { deepExtend } from \"../../Utils/Utils\";\nexport class Responsive {\n constructor() {\n this.maxWidth = Infinity;\n this.options = {};\n this.mode = \"canvas\";\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.maxWidth !== undefined) {\n this.maxWidth = data.maxWidth;\n }\n if (data.mode !== undefined) {\n if (data.mode === \"screen\") {\n this.mode = \"screen\";\n }\n else {\n this.mode = \"canvas\";\n }\n }\n if (data.options !== undefined) {\n this.options = deepExtend({}, data.options);\n }\n }\n}\n","export class ThemeDefault {\n constructor() {\n this.auto = false;\n this.mode = \"any\";\n this.value = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.auto !== undefined) {\n this.auto = data.auto;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n if (data.value !== undefined) {\n this.value = data.value;\n }\n }\n}\n","import { ThemeDefault } from \"./ThemeDefault\";\nimport { deepExtend } from \"../../../Utils/Utils\";\nexport class Theme {\n constructor() {\n this.name = \"\";\n this.default = new ThemeDefault();\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.name !== undefined) {\n this.name = data.name;\n }\n this.default.load(data.default);\n if (data.options !== undefined) {\n this.options = deepExtend({}, data.options);\n }\n }\n}\n","import { setRangeValue } from \"../../Utils/NumberUtils\";\nexport class ColorAnimation {\n constructor() {\n this.count = 0;\n this.enable = false;\n this.offset = 0;\n this.speed = 1;\n this.decay = 0;\n this.sync = true;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.count !== undefined) {\n this.count = setRangeValue(data.count);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.offset !== undefined) {\n this.offset = setRangeValue(data.offset);\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n if (data.decay !== undefined) {\n this.decay = setRangeValue(data.decay);\n }\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { ColorAnimation } from \"./ColorAnimation\";\nexport class HslAnimation {\n constructor() {\n this.h = new ColorAnimation();\n this.s = new ColorAnimation();\n this.l = new ColorAnimation();\n }\n load(data) {\n if (!data) {\n return;\n }\n this.h.load(data.h);\n this.s.load(data.s);\n this.l.load(data.l);\n }\n}\n","import { HslAnimation } from \"./HslAnimation\";\nimport { OptionsColor } from \"./OptionsColor\";\nexport class AnimatableColor extends OptionsColor {\n constructor() {\n super();\n this.animation = new HslAnimation();\n }\n static create(source, data) {\n const color = new AnimatableColor();\n color.load(source);\n if (data !== undefined) {\n if (typeof data === \"string\" || data instanceof Array) {\n color.load({ value: data });\n }\n else {\n color.load(data);\n }\n }\n return color;\n }\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n const colorAnimation = data.animation;\n if (colorAnimation !== undefined) {\n if (colorAnimation.enable !== undefined) {\n this.animation.h.load(colorAnimation);\n }\n else {\n this.animation.load(data.animation);\n }\n }\n }\n}\n","export class CollisionsAbsorb {\n constructor() {\n this.speed = 2;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.speed !== undefined) {\n this.speed = data.speed;\n }\n }\n}\n","export class CollisionsOverlap {\n constructor() {\n this.enable = true;\n this.retries = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.retries !== undefined) {\n this.retries = data.retries;\n }\n }\n}\n","export class Random {\n constructor() {\n this.enable = false;\n this.minimumValue = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.minimumValue !== undefined) {\n this.minimumValue = data.minimumValue;\n }\n }\n}\n","import { Random } from \"./Random\";\nimport { setRangeValue } from \"../../Utils/NumberUtils\";\nexport class ValueWithRandom {\n constructor() {\n this.random = new Random();\n this.value = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (typeof data.random === \"boolean\") {\n this.random.enable = data.random;\n }\n else {\n this.random.load(data.random);\n }\n if (data.value !== undefined) {\n this.value = setRangeValue(data.value, this.random.enable ? this.random.minimumValue : undefined);\n }\n }\n}\n","import { ValueWithRandom } from \"../../ValueWithRandom\";\nexport class ParticlesBounceFactor extends ValueWithRandom {\n constructor() {\n super();\n this.random.minimumValue = 0.1;\n this.value = 1;\n }\n}\n","import { ParticlesBounceFactor } from \"./ParticlesBounceFactor\";\nexport class ParticlesBounce {\n constructor() {\n this.horizontal = new ParticlesBounceFactor();\n this.vertical = new ParticlesBounceFactor();\n }\n load(data) {\n if (!data) {\n return;\n }\n this.horizontal.load(data.horizontal);\n this.vertical.load(data.vertical);\n }\n}\n","import { CollisionsAbsorb } from \"./CollisionsAbsorb\";\nimport { CollisionsOverlap } from \"./CollisionsOverlap\";\nimport { ParticlesBounce } from \"../Bounce/ParticlesBounce\";\nexport class Collisions {\n constructor() {\n this.absorb = new CollisionsAbsorb();\n this.bounce = new ParticlesBounce();\n this.enable = false;\n this.mode = \"bounce\";\n this.overlap = new CollisionsOverlap();\n }\n load(data) {\n if (!data) {\n return;\n }\n this.absorb.load(data.absorb);\n this.bounce.load(data.bounce);\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n this.overlap.load(data.overlap);\n }\n}\n","import { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class MoveAngle {\n constructor() {\n this.offset = 0;\n this.value = 90;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.offset !== undefined) {\n this.offset = setRangeValue(data.offset);\n }\n if (data.value !== undefined) {\n this.value = setRangeValue(data.value);\n }\n }\n}\n","import { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class MoveAttract {\n constructor() {\n this.distance = 200;\n this.enable = false;\n this.rotate = {\n x: 3000,\n y: 3000,\n };\n }\n get rotateX() {\n return this.rotate.x;\n }\n set rotateX(value) {\n this.rotate.x = value;\n }\n get rotateY() {\n return this.rotate.y;\n }\n set rotateY(value) {\n this.rotate.y = value;\n }\n load(data) {\n var _a, _b, _c, _d;\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = setRangeValue(data.distance);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n const rotateX = (_b = (_a = data.rotate) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : data.rotateX;\n if (rotateX !== undefined) {\n this.rotate.x = rotateX;\n }\n const rotateY = (_d = (_c = data.rotate) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : data.rotateY;\n if (rotateY !== undefined) {\n this.rotate.y = rotateY;\n }\n }\n}\n","export class MoveCenter {\n constructor() {\n this.x = 50;\n this.y = 50;\n this.mode = \"percent\";\n this.radius = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.x !== undefined) {\n this.x = data.x;\n }\n if (data.y !== undefined) {\n this.y = data.y;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n if (data.radius !== undefined) {\n this.radius = data.radius;\n }\n }\n}\n","import { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class MoveGravity {\n constructor() {\n this.acceleration = 9.81;\n this.enable = false;\n this.inverse = false;\n this.maxSpeed = 50;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.acceleration !== undefined) {\n this.acceleration = setRangeValue(data.acceleration);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.inverse !== undefined) {\n this.inverse = data.inverse;\n }\n if (data.maxSpeed !== undefined) {\n this.maxSpeed = setRangeValue(data.maxSpeed);\n }\n }\n}\n","import { ValueWithRandom } from \"../../../ValueWithRandom\";\nimport { deepExtend } from \"../../../../../Utils/Utils\";\nexport class MovePath {\n constructor() {\n this.clamp = true;\n this.delay = new ValueWithRandom();\n this.enable = false;\n this.options = {};\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.clamp !== undefined) {\n this.clamp = data.clamp;\n }\n this.delay.load(data.delay);\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.generator = data.generator;\n if (data.options) {\n this.options = deepExtend(this.options, data.options);\n }\n }\n}\n","import { OptionsColor } from \"../../OptionsColor\";\nexport class MoveTrail {\n constructor() {\n this.enable = false;\n this.length = 10;\n this.fillColor = new OptionsColor();\n this.fillColor.value = \"#000000\";\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.fillColor = OptionsColor.create(this.fillColor, data.fillColor);\n if (data.length !== undefined) {\n this.length = data.length;\n }\n }\n}\n","export class OutModes {\n constructor() {\n this.default = \"out\";\n }\n load(data) {\n var _a, _b, _c, _d;\n if (!data) {\n return;\n }\n if (data.default !== undefined) {\n this.default = data.default;\n }\n this.bottom = (_a = data.bottom) !== null && _a !== void 0 ? _a : data.default;\n this.left = (_b = data.left) !== null && _b !== void 0 ? _b : data.default;\n this.right = (_c = data.right) !== null && _c !== void 0 ? _c : data.default;\n this.top = (_d = data.top) !== null && _d !== void 0 ? _d : data.default;\n }\n}\n","import { deepExtend } from \"../../../../Utils/Utils\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class Spin {\n constructor() {\n this.acceleration = 0;\n this.enable = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.acceleration !== undefined) {\n this.acceleration = setRangeValue(data.acceleration);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.position = data.position ? deepExtend({}, data.position) : undefined;\n }\n}\n","import { MoveAngle } from \"./MoveAngle\";\nimport { MoveAttract } from \"./MoveAttract\";\nimport { MoveCenter } from \"./MoveCenter\";\nimport { MoveGravity } from \"./MoveGravity\";\nimport { MovePath } from \"./Path/MovePath\";\nimport { MoveTrail } from \"./MoveTrail\";\nimport { OutModes } from \"./OutModes\";\nimport { Spin } from \"./Spin\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class Move {\n constructor() {\n this.angle = new MoveAngle();\n this.attract = new MoveAttract();\n this.center = new MoveCenter();\n this.decay = 0;\n this.distance = {};\n this.direction = \"none\";\n this.drift = 0;\n this.enable = false;\n this.gravity = new MoveGravity();\n this.path = new MovePath();\n this.outModes = new OutModes();\n this.random = false;\n this.size = false;\n this.speed = 2;\n this.spin = new Spin();\n this.straight = false;\n this.trail = new MoveTrail();\n this.vibrate = false;\n this.warp = false;\n }\n get bounce() {\n return this.collisions;\n }\n set bounce(value) {\n this.collisions = value;\n }\n get collisions() {\n return false;\n }\n set collisions(_) {\n }\n get noise() {\n return this.path;\n }\n set noise(value) {\n this.path = value;\n }\n get outMode() {\n return this.outModes.default;\n }\n set outMode(value) {\n this.outModes.default = value;\n }\n get out_mode() {\n return this.outMode;\n }\n set out_mode(value) {\n this.outMode = value;\n }\n load(data) {\n var _a, _b, _c;\n if (!data) {\n return;\n }\n this.angle.load(typeof data.angle === \"number\" ? { value: data.angle } : data.angle);\n this.attract.load(data.attract);\n this.center.load(data.center);\n if (data.decay !== undefined) {\n this.decay = data.decay;\n }\n if (data.direction !== undefined) {\n this.direction = data.direction;\n }\n if (data.distance !== undefined) {\n this.distance =\n typeof data.distance === \"number\"\n ? {\n horizontal: data.distance,\n vertical: data.distance,\n }\n : Object.assign({}, data.distance);\n }\n if (data.drift !== undefined) {\n this.drift = setRangeValue(data.drift);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.gravity.load(data.gravity);\n const outModes = (_b = (_a = data.outModes) !== null && _a !== void 0 ? _a : data.outMode) !== null && _b !== void 0 ? _b : data.out_mode;\n if (outModes !== undefined) {\n if (typeof outModes === \"object\") {\n this.outModes.load(outModes);\n }\n else {\n this.outModes.load({\n default: outModes,\n });\n }\n }\n this.path.load((_c = data.path) !== null && _c !== void 0 ? _c : data.noise);\n if (data.random !== undefined) {\n this.random = data.random;\n }\n if (data.size !== undefined) {\n this.size = data.size;\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n this.spin.load(data.spin);\n if (data.straight !== undefined) {\n this.straight = data.straight;\n }\n this.trail.load(data.trail);\n if (data.vibrate !== undefined) {\n this.vibrate = data.vibrate;\n }\n if (data.warp !== undefined) {\n this.warp = data.warp;\n }\n }\n}\n","import { setRangeValue } from \"../../Utils/NumberUtils\";\nexport class AnimationOptions {\n constructor() {\n this.count = 0;\n this.enable = false;\n this.speed = 1;\n this.decay = 0;\n this.sync = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.count !== undefined) {\n this.count = setRangeValue(data.count);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n if (data.decay !== undefined) {\n this.decay = setRangeValue(data.decay);\n }\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { AnimationOptions } from \"../../AnimationOptions\";\nexport class OpacityAnimation extends AnimationOptions {\n constructor() {\n super();\n this.destroy = \"none\";\n this.enable = false;\n this.speed = 2;\n this.startValue = \"random\";\n this.sync = false;\n }\n get opacity_min() {\n return this.minimumValue;\n }\n set opacity_min(value) {\n this.minimumValue = value;\n }\n load(data) {\n var _a;\n if (!data) {\n return;\n }\n super.load(data);\n if (data.destroy !== undefined) {\n this.destroy = data.destroy;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.minimumValue = (_a = data.minimumValue) !== null && _a !== void 0 ? _a : data.opacity_min;\n if (data.speed !== undefined) {\n this.speed = data.speed;\n }\n if (data.startValue !== undefined) {\n this.startValue = data.startValue;\n }\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { OpacityAnimation } from \"./OpacityAnimation\";\nimport { ValueWithRandom } from \"../../ValueWithRandom\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class Opacity extends ValueWithRandom {\n constructor() {\n super();\n this.animation = new OpacityAnimation();\n this.random.minimumValue = 0.1;\n this.value = 1;\n }\n get anim() {\n return this.animation;\n }\n set anim(value) {\n this.animation = value;\n }\n load(data) {\n var _a;\n if (!data) {\n return;\n }\n super.load(data);\n const animation = (_a = data.animation) !== null && _a !== void 0 ? _a : data.anim;\n if (animation !== undefined) {\n this.animation.load(animation);\n this.value = setRangeValue(this.value, this.animation.enable ? this.animation.minimumValue : undefined);\n }\n }\n}\n","export class ParticlesDensity {\n constructor() {\n this.enable = false;\n this.area = 800;\n this.factor = 1000;\n }\n get value_area() {\n return this.area;\n }\n set value_area(value) {\n this.area = value;\n }\n load(data) {\n var _a;\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n const area = (_a = data.area) !== null && _a !== void 0 ? _a : data.value_area;\n if (area !== undefined) {\n this.area = area;\n }\n if (data.factor !== undefined) {\n this.factor = data.factor;\n }\n }\n}\n","import { ParticlesDensity } from \"./ParticlesDensity\";\nexport class ParticlesNumber {\n constructor() {\n this.density = new ParticlesDensity();\n this.limit = 0;\n this.value = 100;\n }\n get max() {\n return this.limit;\n }\n set max(value) {\n this.limit = value;\n }\n load(data) {\n var _a;\n if (!data) {\n return;\n }\n this.density.load(data.density);\n const limit = (_a = data.limit) !== null && _a !== void 0 ? _a : data.max;\n if (limit !== undefined) {\n this.limit = limit;\n }\n if (data.value !== undefined) {\n this.value = data.value;\n }\n }\n}\n","import { OptionsColor } from \"../OptionsColor\";\nexport class Shadow {\n constructor() {\n this.blur = 0;\n this.color = new OptionsColor();\n this.enable = false;\n this.offset = {\n x: 0,\n y: 0,\n };\n this.color.value = \"#000\";\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.blur !== undefined) {\n this.blur = data.blur;\n }\n this.color = OptionsColor.create(this.color, data.color);\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.offset === undefined) {\n return;\n }\n if (data.offset.x !== undefined) {\n this.offset.x = data.offset.x;\n }\n if (data.offset.y !== undefined) {\n this.offset.y = data.offset.y;\n }\n }\n}\n","import { deepExtend } from \"../../../../Utils/Utils\";\nconst charKey = \"character\", charAltKey = \"char\", imageKey = \"image\", imageAltKey = \"images\", polygonKey = \"polygon\", polygonAltKey = \"star\";\nexport class Shape {\n constructor() {\n this.options = {};\n this.type = \"circle\";\n }\n get character() {\n var _a;\n return ((_a = this.options[charKey]) !== null && _a !== void 0 ? _a : this.options[charAltKey]);\n }\n set character(value) {\n this.options[charAltKey] = this.options[charKey] = value;\n }\n get custom() {\n return this.options;\n }\n set custom(value) {\n this.options = value;\n }\n get image() {\n var _a;\n return ((_a = this.options[imageKey]) !== null && _a !== void 0 ? _a : this.options[imageAltKey]);\n }\n set image(value) {\n this.options[imageAltKey] = this.options[imageKey] = value;\n }\n get images() {\n return this.image;\n }\n set images(value) {\n this.image = value;\n }\n get polygon() {\n var _a;\n return ((_a = this.options[polygonKey]) !== null && _a !== void 0 ? _a : this.options[polygonAltKey]);\n }\n set polygon(value) {\n this.options[polygonAltKey] = this.options[polygonKey] = value;\n }\n get stroke() {\n return [];\n }\n set stroke(_value) {\n }\n load(data) {\n var _a, _b, _c;\n if (!data) {\n return;\n }\n const options = (_a = data.options) !== null && _a !== void 0 ? _a : data.custom;\n if (options !== undefined) {\n for (const shape in options) {\n const item = options[shape];\n if (item) {\n this.options[shape] = deepExtend((_b = this.options[shape]) !== null && _b !== void 0 ? _b : {}, item);\n }\n }\n }\n this.loadShape(data.character, charKey, charAltKey, true);\n this.loadShape(data.polygon, polygonKey, polygonAltKey, false);\n this.loadShape((_c = data.image) !== null && _c !== void 0 ? _c : data.images, imageKey, imageAltKey, true);\n if (data.type !== undefined) {\n this.type = data.type;\n }\n }\n loadShape(item, mainKey, altKey, altOverride) {\n var _a, _b;\n if (!item) {\n return;\n }\n const isArray = item instanceof Array;\n const emptyValue = isArray ? [] : {}, mainDifferentValues = isArray !== this.options[mainKey] instanceof Array, altDifferentValues = isArray !== this.options[altKey] instanceof Array;\n if (mainDifferentValues) {\n this.options[mainKey] = emptyValue;\n }\n if (altDifferentValues && altOverride) {\n this.options[altKey] = emptyValue;\n }\n this.options[mainKey] = deepExtend((_a = this.options[mainKey]) !== null && _a !== void 0 ? _a : emptyValue, item);\n if (!this.options[altKey] || altOverride) {\n this.options[altKey] = deepExtend((_b = this.options[altKey]) !== null && _b !== void 0 ? _b : emptyValue, item);\n }\n }\n}\n","import { AnimationOptions } from \"../../AnimationOptions\";\nexport class SizeAnimation extends AnimationOptions {\n constructor() {\n super();\n this.destroy = \"none\";\n this.enable = false;\n this.speed = 5;\n this.startValue = \"random\";\n this.sync = false;\n }\n get size_min() {\n return this.minimumValue;\n }\n set size_min(value) {\n this.minimumValue = value;\n }\n load(data) {\n var _a;\n super.load(data);\n if (!data) {\n return;\n }\n if (data.destroy !== undefined) {\n this.destroy = data.destroy;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.minimumValue = (_a = data.minimumValue) !== null && _a !== void 0 ? _a : data.size_min;\n if (data.speed !== undefined) {\n this.speed = data.speed;\n }\n if (data.startValue !== undefined) {\n this.startValue = data.startValue;\n }\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { SizeAnimation } from \"./SizeAnimation\";\nimport { ValueWithRandom } from \"../../ValueWithRandom\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class Size extends ValueWithRandom {\n constructor() {\n super();\n this.animation = new SizeAnimation();\n this.random.minimumValue = 1;\n this.value = 3;\n }\n get anim() {\n return this.animation;\n }\n set anim(value) {\n this.animation = value;\n }\n load(data) {\n var _a;\n super.load(data);\n if (!data) {\n return;\n }\n const animation = (_a = data.animation) !== null && _a !== void 0 ? _a : data.anim;\n if (animation !== undefined) {\n this.animation.load(animation);\n this.value = setRangeValue(this.value, this.animation.enable ? this.animation.minimumValue : undefined);\n }\n }\n}\n","import { AnimatableColor } from \"../AnimatableColor\";\nexport class Stroke {\n constructor() {\n this.width = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.color !== undefined) {\n this.color = AnimatableColor.create(this.color, data.color);\n }\n if (data.width !== undefined) {\n this.width = data.width;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n }\n}\n","import { ValueWithRandom } from \"../../ValueWithRandom\";\nexport class ZIndex extends ValueWithRandom {\n constructor() {\n super();\n this.opacityRate = 1;\n this.sizeRate = 1;\n this.velocityRate = 1;\n }\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n if (data.opacityRate !== undefined) {\n this.opacityRate = data.opacityRate;\n }\n if (data.sizeRate !== undefined) {\n this.sizeRate = data.sizeRate;\n }\n if (data.velocityRate !== undefined) {\n this.velocityRate = data.velocityRate;\n }\n }\n}\n","import { deepExtend, executeOnSingleOrMultiple } from \"../../../Utils/Utils\";\nimport { AnimatableColor } from \"../AnimatableColor\";\nimport { Collisions } from \"./Collisions/Collisions\";\nimport { Move } from \"./Move/Move\";\nimport { Opacity } from \"./Opacity/Opacity\";\nimport { ParticlesBounce } from \"./Bounce/ParticlesBounce\";\nimport { ParticlesNumber } from \"./Number/ParticlesNumber\";\nimport { Shadow } from \"./Shadow\";\nimport { Shape } from \"./Shape/Shape\";\nimport { Size } from \"./Size/Size\";\nimport { Stroke } from \"./Stroke\";\nimport { ZIndex } from \"./ZIndex/ZIndex\";\nexport class ParticlesOptions {\n constructor(engine, container) {\n this._engine = engine;\n this._container = container;\n this.bounce = new ParticlesBounce();\n this.collisions = new Collisions();\n this.color = new AnimatableColor();\n this.color.value = \"#fff\";\n this.groups = {};\n this.move = new Move();\n this.number = new ParticlesNumber();\n this.opacity = new Opacity();\n this.reduceDuplicates = false;\n this.shadow = new Shadow();\n this.shape = new Shape();\n this.size = new Size();\n this.stroke = new Stroke();\n this.zIndex = new ZIndex();\n }\n load(data) {\n var _a, _b, _c, _d, _e, _f;\n if (!data) {\n return;\n }\n this.bounce.load(data.bounce);\n this.color.load(AnimatableColor.create(this.color, data.color));\n if (data.groups !== undefined) {\n for (const group in data.groups) {\n const item = data.groups[group];\n if (item !== undefined) {\n this.groups[group] = deepExtend((_a = this.groups[group]) !== null && _a !== void 0 ? _a : {}, item);\n }\n }\n }\n this.move.load(data.move);\n this.number.load(data.number);\n this.opacity.load(data.opacity);\n if (data.reduceDuplicates !== undefined) {\n this.reduceDuplicates = data.reduceDuplicates;\n }\n this.shape.load(data.shape);\n this.size.load(data.size);\n this.shadow.load(data.shadow);\n this.zIndex.load(data.zIndex);\n const collisions = (_c = (_b = data.move) === null || _b === void 0 ? void 0 : _b.collisions) !== null && _c !== void 0 ? _c : (_d = data.move) === null || _d === void 0 ? void 0 : _d.bounce;\n if (collisions !== undefined) {\n this.collisions.enable = collisions;\n }\n this.collisions.load(data.collisions);\n if (data.interactivity !== undefined) {\n this.interactivity = deepExtend({}, data.interactivity);\n }\n const strokeToLoad = (_e = data.stroke) !== null && _e !== void 0 ? _e : (_f = data.shape) === null || _f === void 0 ? void 0 : _f.stroke;\n if (strokeToLoad) {\n this.stroke = executeOnSingleOrMultiple(strokeToLoad, (t) => {\n const tmp = new Stroke();\n tmp.load(t);\n return tmp;\n });\n }\n if (this._container) {\n const updaters = this._engine.plugins.updaters.get(this._container);\n if (updaters) {\n for (const updater of updaters) {\n if (updater.loadOptions) {\n updater.loadOptions(this, data);\n }\n }\n }\n const interactors = this._engine.plugins.interactors.get(this._container);\n if (interactors) {\n for (const interactor of interactors) {\n if (interactor.loadParticlesOptions) {\n interactor.loadParticlesOptions(this, data);\n }\n }\n }\n }\n }\n}\n","import { ParticlesOptions } from \"../Options/Classes/Particles/ParticlesOptions\";\nexport function loadOptions(options, ...sourceOptionsArr) {\n for (const sourceOptions of sourceOptionsArr) {\n options.load(sourceOptions);\n }\n}\nexport function loadParticlesOptions(engine, container, ...sourceOptionsArr) {\n const options = new ParticlesOptions(engine, container);\n loadOptions(options, ...sourceOptionsArr);\n return options;\n}\n","import { deepExtend, executeOnSingleOrMultiple, safeMatchMedia } from \"../../Utils/Utils\";\nimport { Background } from \"./Background/Background\";\nimport { BackgroundMask } from \"./BackgroundMask/BackgroundMask\";\nimport { FullScreen } from \"./FullScreen/FullScreen\";\nimport { Interactivity } from \"./Interactivity/Interactivity\";\nimport { ManualParticle } from \"./ManualParticle\";\nimport { Responsive } from \"./Responsive\";\nimport { Theme } from \"./Theme/Theme\";\nimport { loadParticlesOptions } from \"../../Utils/OptionsUtils\";\nimport { setRangeValue } from \"../../Utils/NumberUtils\";\nexport class Options {\n constructor(engine, container) {\n this._engine = engine;\n this._container = container;\n this.autoPlay = true;\n this.background = new Background();\n this.backgroundMask = new BackgroundMask();\n this.defaultThemes = {};\n this.delay = 0;\n this.fullScreen = new FullScreen();\n this.detectRetina = true;\n this.duration = 0;\n this.fpsLimit = 120;\n this.interactivity = new Interactivity(engine, container);\n this.manualParticles = [];\n this.particles = loadParticlesOptions(this._engine, this._container);\n this.pauseOnBlur = true;\n this.pauseOnOutsideViewport = true;\n this.responsive = [];\n this.smooth = false;\n this.style = {};\n this.themes = [];\n this.zLayers = 100;\n }\n get backgroundMode() {\n return this.fullScreen;\n }\n set backgroundMode(value) {\n this.fullScreen.load(value);\n }\n get fps_limit() {\n return this.fpsLimit;\n }\n set fps_limit(value) {\n this.fpsLimit = value;\n }\n get retina_detect() {\n return this.detectRetina;\n }\n set retina_detect(value) {\n this.detectRetina = value;\n }\n load(data) {\n var _a, _b, _c, _d, _e;\n if (!data) {\n return;\n }\n if (data.preset !== undefined) {\n executeOnSingleOrMultiple(data.preset, (preset) => this._importPreset(preset));\n }\n if (data.autoPlay !== undefined) {\n this.autoPlay = data.autoPlay;\n }\n if (data.delay !== undefined) {\n this.delay = setRangeValue(data.delay);\n }\n const detectRetina = (_a = data.detectRetina) !== null && _a !== void 0 ? _a : data.retina_detect;\n if (detectRetina !== undefined) {\n this.detectRetina = detectRetina;\n }\n if (data.duration !== undefined) {\n this.duration = setRangeValue(data.duration);\n }\n const fpsLimit = (_b = data.fpsLimit) !== null && _b !== void 0 ? _b : data.fps_limit;\n if (fpsLimit !== undefined) {\n this.fpsLimit = fpsLimit;\n }\n if (data.pauseOnBlur !== undefined) {\n this.pauseOnBlur = data.pauseOnBlur;\n }\n if (data.pauseOnOutsideViewport !== undefined) {\n this.pauseOnOutsideViewport = data.pauseOnOutsideViewport;\n }\n if (data.zLayers !== undefined) {\n this.zLayers = data.zLayers;\n }\n this.background.load(data.background);\n const fullScreen = (_c = data.fullScreen) !== null && _c !== void 0 ? _c : data.backgroundMode;\n if (typeof fullScreen === \"boolean\") {\n this.fullScreen.enable = fullScreen;\n }\n else {\n this.fullScreen.load(fullScreen);\n }\n this.backgroundMask.load(data.backgroundMask);\n this.interactivity.load(data.interactivity);\n if (data.manualParticles !== undefined) {\n this.manualParticles = data.manualParticles.map((t) => {\n const tmp = new ManualParticle();\n tmp.load(t);\n return tmp;\n });\n }\n this.particles.load(data.particles);\n this.style = deepExtend(this.style, data.style);\n this._engine.plugins.loadOptions(this, data);\n if (data.smooth !== undefined) {\n this.smooth = data.smooth;\n }\n const interactors = this._engine.plugins.interactors.get(this._container);\n if (interactors) {\n for (const interactor of interactors) {\n if (interactor.loadOptions) {\n interactor.loadOptions(this, data);\n }\n }\n }\n if (data.responsive !== undefined) {\n for (const responsive of data.responsive) {\n const optResponsive = new Responsive();\n optResponsive.load(responsive);\n this.responsive.push(optResponsive);\n }\n }\n this.responsive.sort((a, b) => a.maxWidth - b.maxWidth);\n if (data.themes !== undefined) {\n for (const theme of data.themes) {\n const existingTheme = this.themes.find((t) => t.name === theme.name);\n if (!existingTheme) {\n const optTheme = new Theme();\n optTheme.load(theme);\n this.themes.push(optTheme);\n }\n else {\n existingTheme.load(theme);\n }\n }\n }\n this.defaultThemes.dark = (_d = this._findDefaultTheme(\"dark\")) === null || _d === void 0 ? void 0 : _d.name;\n this.defaultThemes.light = (_e = this._findDefaultTheme(\"light\")) === null || _e === void 0 ? void 0 : _e.name;\n }\n setResponsive(width, pxRatio, defaultOptions) {\n this.load(defaultOptions);\n const responsiveOptions = this.responsive.find((t) => t.mode === \"screen\" && screen ? t.maxWidth > screen.availWidth : t.maxWidth * pxRatio > width);\n this.load(responsiveOptions === null || responsiveOptions === void 0 ? void 0 : responsiveOptions.options);\n return responsiveOptions === null || responsiveOptions === void 0 ? void 0 : responsiveOptions.maxWidth;\n }\n setTheme(name) {\n if (name) {\n const chosenTheme = this.themes.find((theme) => theme.name === name);\n if (chosenTheme) {\n this.load(chosenTheme.options);\n }\n }\n else {\n const mediaMatch = safeMatchMedia(\"(prefers-color-scheme: dark)\"), clientDarkMode = mediaMatch && mediaMatch.matches, defaultTheme = this._findDefaultTheme(clientDarkMode ? \"dark\" : \"light\");\n if (defaultTheme) {\n this.load(defaultTheme.options);\n }\n }\n }\n _findDefaultTheme(mode) {\n var _a;\n return ((_a = this.themes.find((theme) => theme.default.value && theme.default.mode === mode)) !== null && _a !== void 0 ? _a : this.themes.find((theme) => theme.default.value && theme.default.mode === \"any\"));\n }\n _importPreset(preset) {\n this.load(this._engine.plugins.getPreset(preset));\n }\n}\n","export class InteractionManager {\n constructor(engine, container) {\n this.container = container;\n this._engine = engine;\n this._interactors = this._engine.plugins.getInteractors(this.container, true);\n this._externalInteractors = [];\n this._particleInteractors = [];\n }\n async externalInteract(delta) {\n for (const interactor of this._externalInteractors) {\n if (interactor.isEnabled()) {\n await interactor.interact(delta);\n }\n }\n }\n handleClickMode(mode) {\n for (const interactor of this._externalInteractors) {\n if (interactor.handleClickMode) {\n interactor.handleClickMode(mode);\n }\n }\n }\n init() {\n this._externalInteractors = [];\n this._particleInteractors = [];\n for (const interactor of this._interactors) {\n switch (interactor.type) {\n case \"external\":\n this._externalInteractors.push(interactor);\n break;\n case \"particles\":\n this._particleInteractors.push(interactor);\n break;\n }\n interactor.init();\n }\n }\n async particlesInteract(particle, delta) {\n for (const interactor of this._externalInteractors) {\n interactor.clear(particle, delta);\n }\n for (const interactor of this._particleInteractors) {\n if (interactor.isEnabled(particle)) {\n await interactor.interact(particle, delta);\n }\n }\n }\n async reset(particle) {\n for (const interactor of this._externalInteractors) {\n if (interactor.isEnabled()) {\n await interactor.reset(particle);\n }\n }\n for (const interactor of this._particleInteractors) {\n if (interactor.isEnabled(particle)) {\n await interactor.reset(particle);\n }\n }\n }\n}\n","import { calcExactPositionOrRandomFromSize, clamp, getDistance, getParticleBaseVelocity, getParticleDirectionAngle, getRandom, getRangeMax, getRangeMin, getRangeValue, getValue, randomInRange, setRangeValue, } from \"../Utils/NumberUtils\";\nimport { deepExtend, isInArray, itemFromSingleOrMultiple } from \"../Utils/Utils\";\nimport { getHslFromAnimation, rangeColorToRgb } from \"../Utils/ColorUtils\";\nimport { Interactivity } from \"../Options/Classes/Interactivity/Interactivity\";\nimport { Vector } from \"./Utils/Vector\";\nimport { Vector3d } from \"./Utils/Vector3d\";\nimport { alterHsl } from \"../Utils/CanvasUtils\";\nimport { loadParticlesOptions } from \"../Utils/OptionsUtils\";\nconst fixOutMode = (data) => {\n if (!isInArray(data.outMode, data.checkModes)) {\n return;\n }\n if (data.coord > data.maxCoord - data.radius * 2) {\n data.setCb(-data.radius);\n }\n else if (data.coord < data.radius * 2) {\n data.setCb(data.radius);\n }\n};\nexport class Particle {\n constructor(engine, id, container, position, overrideOptions, group) {\n this.container = container;\n this._engine = engine;\n this.init(id, position, overrideOptions, group);\n }\n destroy(override) {\n var _a;\n if (this.unbreakable || this.destroyed) {\n return;\n }\n this.destroyed = true;\n this.bubble.inRange = false;\n this.slow.inRange = false;\n for (const [, plugin] of this.container.plugins) {\n if (plugin.particleDestroyed) {\n plugin.particleDestroyed(this, override);\n }\n }\n for (const updater of this.container.particles.updaters) {\n if (updater.particleDestroyed) {\n updater.particleDestroyed(this, override);\n }\n }\n (_a = this.pathGenerator) === null || _a === void 0 ? void 0 : _a.reset(this);\n }\n draw(delta) {\n const container = this.container;\n for (const [, plugin] of container.plugins) {\n container.canvas.drawParticlePlugin(plugin, this, delta);\n }\n container.canvas.drawParticle(this, delta);\n }\n getFillColor() {\n var _a, _b;\n const color = (_a = this.bubble.color) !== null && _a !== void 0 ? _a : getHslFromAnimation(this.color);\n if (color && this.roll && (this.backColor || this.roll.alter)) {\n const backFactor = this.roll.horizontal && this.roll.vertical ? 2 : 1, backSum = this.roll.horizontal ? Math.PI / 2 : 0, rolled = Math.floor((((_b = this.roll.angle) !== null && _b !== void 0 ? _b : 0) + backSum) / (Math.PI / backFactor)) % 2;\n if (rolled) {\n if (this.backColor) {\n return this.backColor;\n }\n if (this.roll.alter) {\n return alterHsl(color, this.roll.alter.type, this.roll.alter.value);\n }\n }\n }\n return color;\n }\n getMass() {\n return (this.getRadius() ** 2 * Math.PI) / 2;\n }\n getPosition() {\n return {\n x: this.position.x + this.offset.x,\n y: this.position.y + this.offset.y,\n z: this.position.z,\n };\n }\n getRadius() {\n var _a;\n return (_a = this.bubble.radius) !== null && _a !== void 0 ? _a : this.size.value;\n }\n getStrokeColor() {\n var _a, _b;\n return (_b = (_a = this.bubble.color) !== null && _a !== void 0 ? _a : getHslFromAnimation(this.strokeColor)) !== null && _b !== void 0 ? _b : this.getFillColor();\n }\n init(id, position, overrideOptions, group) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n const container = this.container, engine = this._engine;\n this.id = id;\n this.group = group;\n this.fill = true;\n this.pathRotation = false;\n this.close = true;\n this.lastPathTime = 0;\n this.destroyed = false;\n this.unbreakable = false;\n this.rotation = 0;\n this.misplaced = false;\n this.retina = {\n maxDistance: {},\n };\n this.outType = \"normal\";\n this.ignoresResizeRatio = true;\n const pxRatio = container.retina.pixelRatio, mainOptions = container.actualOptions, particlesOptions = loadParticlesOptions(this._engine, container, mainOptions.particles), shapeType = particlesOptions.shape.type, { reduceDuplicates } = particlesOptions;\n this.shape = itemFromSingleOrMultiple(shapeType, this.id, reduceDuplicates);\n const shapeOptions = particlesOptions.shape;\n if (overrideOptions && overrideOptions.shape && overrideOptions.shape.type) {\n const overrideShapeType = overrideOptions.shape.type, shape = itemFromSingleOrMultiple(overrideShapeType, this.id, reduceDuplicates);\n if (shape) {\n this.shape = shape;\n shapeOptions.load(overrideOptions.shape);\n }\n }\n this.shapeData = this._loadShapeData(shapeOptions, reduceDuplicates);\n particlesOptions.load(overrideOptions);\n particlesOptions.load((_a = this.shapeData) === null || _a === void 0 ? void 0 : _a.particles);\n this.interactivity = new Interactivity(engine, container);\n this.interactivity.load(container.actualOptions.interactivity);\n this.interactivity.load(particlesOptions.interactivity);\n this.fill = (_c = (_b = this.shapeData) === null || _b === void 0 ? void 0 : _b.fill) !== null && _c !== void 0 ? _c : this.fill;\n this.close = (_e = (_d = this.shapeData) === null || _d === void 0 ? void 0 : _d.close) !== null && _e !== void 0 ? _e : this.close;\n this.options = particlesOptions;\n const pathOptions = this.options.move.path;\n this.pathDelay = getValue(pathOptions.delay) * 1000;\n if (pathOptions.generator) {\n this.pathGenerator = this._engine.plugins.getPathGenerator(pathOptions.generator);\n if (this.pathGenerator && container.addPath(pathOptions.generator, this.pathGenerator)) {\n this.pathGenerator.init(container);\n }\n }\n const zIndexValue = getRangeValue(this.options.zIndex.value);\n container.retina.initParticle(this);\n const sizeOptions = this.options.size, sizeRange = sizeOptions.value, sizeAnimation = sizeOptions.animation;\n this.size = {\n enable: sizeOptions.animation.enable,\n value: getRangeValue(sizeOptions.value) * container.retina.pixelRatio,\n max: getRangeMax(sizeRange) * pxRatio,\n min: getRangeMin(sizeRange) * pxRatio,\n loops: 0,\n maxLoops: getRangeValue(sizeOptions.animation.count),\n };\n if (sizeAnimation.enable) {\n this.size.status = \"increasing\";\n this.size.decay = 1 - getRangeValue(sizeAnimation.decay);\n switch (sizeAnimation.startValue) {\n case \"min\":\n this.size.value = this.size.min;\n this.size.status = \"increasing\";\n break;\n case \"random\":\n this.size.value = randomInRange(this.size) * pxRatio;\n this.size.status = getRandom() >= 0.5 ? \"increasing\" : \"decreasing\";\n break;\n case \"max\":\n default:\n this.size.value = this.size.max;\n this.size.status = \"decreasing\";\n break;\n }\n }\n this.bubble = {\n inRange: false,\n };\n this.slow = {\n inRange: false,\n factor: 1,\n };\n this.position = this._calcPosition(container, position, clamp(zIndexValue, 0, container.zLayers));\n this.initialPosition = this.position.copy();\n const canvasSize = container.canvas.size, moveCenter = Object.assign({}, this.options.move.center), isCenterPercent = moveCenter.mode === \"percent\";\n this.moveCenter = {\n x: moveCenter.x * (isCenterPercent ? canvasSize.width / 100 : 1),\n y: moveCenter.y * (isCenterPercent ? canvasSize.height / 100 : 1),\n radius: (_f = this.options.move.center.radius) !== null && _f !== void 0 ? _f : 0,\n mode: (_g = this.options.move.center.mode) !== null && _g !== void 0 ? _g : \"percent\",\n };\n this.direction = getParticleDirectionAngle(this.options.move.direction, this.position, this.moveCenter);\n switch (this.options.move.direction) {\n case \"inside\":\n this.outType = \"inside\";\n break;\n case \"outside\":\n this.outType = \"outside\";\n break;\n }\n this.initialVelocity = this._calculateVelocity();\n this.velocity = this.initialVelocity.copy();\n this.moveDecay = 1 - getRangeValue(this.options.move.decay);\n this.offset = Vector.origin;\n const particles = container.particles;\n particles.needsSort = particles.needsSort || particles.lastZIndex < this.position.z;\n particles.lastZIndex = this.position.z;\n this.zIndexFactor = this.position.z / container.zLayers;\n this.sides = 24;\n let drawer = container.drawers.get(this.shape);\n if (!drawer) {\n drawer = this._engine.plugins.getShapeDrawer(this.shape);\n if (drawer) {\n container.drawers.set(this.shape, drawer);\n }\n }\n if (drawer === null || drawer === void 0 ? void 0 : drawer.loadShape) {\n drawer === null || drawer === void 0 ? void 0 : drawer.loadShape(this);\n }\n const sideCountFunc = drawer === null || drawer === void 0 ? void 0 : drawer.getSidesCount;\n if (sideCountFunc) {\n this.sides = sideCountFunc(this);\n }\n this.spawning = false;\n this.shadowColor = rangeColorToRgb(this.options.shadow.color);\n for (const updater of container.particles.updaters) {\n updater.init(this);\n }\n for (const mover of container.particles.movers) {\n (_h = mover.init) === null || _h === void 0 ? void 0 : _h.call(mover, this);\n }\n if (drawer === null || drawer === void 0 ? void 0 : drawer.particleInit) {\n drawer.particleInit(container, this);\n }\n for (const [, plugin] of container.plugins) {\n (_j = plugin.particleCreated) === null || _j === void 0 ? void 0 : _j.call(plugin, this);\n }\n }\n isInsideCanvas() {\n const radius = this.getRadius(), canvasSize = this.container.canvas.size;\n return (this.position.x >= -radius &&\n this.position.y >= -radius &&\n this.position.y <= canvasSize.height + radius &&\n this.position.x <= canvasSize.width + radius);\n }\n isVisible() {\n return !this.destroyed && !this.spawning && this.isInsideCanvas();\n }\n reset() {\n var _a;\n for (const updater of this.container.particles.updaters) {\n (_a = updater.reset) === null || _a === void 0 ? void 0 : _a.call(updater, this);\n }\n }\n _calcPosition(container, position, zIndex, tryCount = 0) {\n var _a, _b, _c, _d;\n for (const [, plugin] of container.plugins) {\n const pluginPos = plugin.particlePosition !== undefined ? plugin.particlePosition(position, this) : undefined;\n if (pluginPos !== undefined) {\n return Vector3d.create(pluginPos.x, pluginPos.y, zIndex);\n }\n }\n const canvasSize = container.canvas.size, exactPosition = calcExactPositionOrRandomFromSize({\n size: canvasSize,\n position: position,\n }), pos = Vector3d.create(exactPosition.x, exactPosition.y, zIndex), radius = this.getRadius(), outModes = this.options.move.outModes, fixHorizontal = (outMode) => {\n fixOutMode({\n outMode,\n checkModes: [\"bounce\", \"bounce-horizontal\"],\n coord: pos.x,\n maxCoord: container.canvas.size.width,\n setCb: (value) => (pos.x += value),\n radius,\n });\n }, fixVertical = (outMode) => {\n fixOutMode({\n outMode,\n checkModes: [\"bounce\", \"bounce-vertical\"],\n coord: pos.y,\n maxCoord: container.canvas.size.height,\n setCb: (value) => (pos.y += value),\n radius,\n });\n };\n fixHorizontal((_a = outModes.left) !== null && _a !== void 0 ? _a : outModes.default);\n fixHorizontal((_b = outModes.right) !== null && _b !== void 0 ? _b : outModes.default);\n fixVertical((_c = outModes.top) !== null && _c !== void 0 ? _c : outModes.default);\n fixVertical((_d = outModes.bottom) !== null && _d !== void 0 ? _d : outModes.default);\n if (this._checkOverlap(pos, tryCount)) {\n return this._calcPosition(container, undefined, zIndex, tryCount + 1);\n }\n return pos;\n }\n _calculateVelocity() {\n const baseVelocity = getParticleBaseVelocity(this.direction), res = baseVelocity.copy(), moveOptions = this.options.move;\n if (moveOptions.direction === \"inside\" || moveOptions.direction === \"outside\") {\n return res;\n }\n const rad = (Math.PI / 180) * getRangeValue(moveOptions.angle.value), radOffset = (Math.PI / 180) * getRangeValue(moveOptions.angle.offset), range = {\n left: radOffset - rad / 2,\n right: radOffset + rad / 2,\n };\n if (!moveOptions.straight) {\n res.angle += randomInRange(setRangeValue(range.left, range.right));\n }\n if (moveOptions.random && typeof moveOptions.speed === \"number\") {\n res.length *= getRandom();\n }\n return res;\n }\n _checkOverlap(pos, tryCount = 0) {\n const collisionsOptions = this.options.collisions, radius = this.getRadius();\n if (!collisionsOptions.enable) {\n return false;\n }\n const overlapOptions = collisionsOptions.overlap;\n if (overlapOptions.enable) {\n return false;\n }\n const retries = overlapOptions.retries;\n if (retries >= 0 && tryCount > retries) {\n throw new Error(\"Particle is overlapping and can't be placed\");\n }\n let overlaps = false;\n for (const particle of this.container.particles.array) {\n if (getDistance(pos, particle.position) < radius + particle.getRadius()) {\n overlaps = true;\n break;\n }\n }\n return overlaps;\n }\n _loadShapeData(shapeOptions, reduceDuplicates) {\n const shapeData = shapeOptions.options[this.shape];\n if (shapeData) {\n return deepExtend({}, itemFromSingleOrMultiple(shapeData, this.id, reduceDuplicates));\n }\n }\n}\n","export class Point {\n constructor(position, particle) {\n this.position = position;\n this.particle = particle;\n }\n}\n","export class Range {\n constructor(x, y) {\n this.position = {\n x: x,\n y: y,\n };\n }\n}\n","import { Range } from \"./Range\";\nimport { getDistance } from \"../../Utils/NumberUtils\";\nexport class Circle extends Range {\n constructor(x, y, radius) {\n super(x, y);\n this.radius = radius;\n }\n contains(point) {\n return getDistance(point, this.position) <= this.radius;\n }\n intersects(range) {\n const rect = range, circle = range, pos1 = this.position, pos2 = range.position, distPos = { x: Math.abs(pos2.x - pos1.x), y: Math.abs(pos2.y - pos1.y) }, r = this.radius;\n if (circle.radius !== undefined) {\n const rSum = r + circle.radius, dist = Math.sqrt(distPos.x ** 2 + distPos.y ** 2);\n return rSum > dist;\n }\n else if (rect.size !== undefined) {\n const w = rect.size.width, h = rect.size.height, edges = Math.pow(distPos.x - w, 2) + Math.pow(distPos.y - h, 2);\n return edges <= r ** 2 || (distPos.x <= r + w && distPos.y <= r + h) || distPos.x <= w || distPos.y <= h;\n }\n return false;\n }\n}\n","import { Circle } from \"./Circle\";\nimport { Range } from \"./Range\";\nexport class Rectangle extends Range {\n constructor(x, y, width, height) {\n super(x, y);\n this.size = {\n height: height,\n width: width,\n };\n }\n contains(point) {\n const w = this.size.width, h = this.size.height, pos = this.position;\n return point.x >= pos.x && point.x <= pos.x + w && point.y >= pos.y && point.y <= pos.y + h;\n }\n intersects(range) {\n if (range instanceof Circle) {\n range.intersects(this);\n }\n const w = this.size.width, h = this.size.height, pos1 = this.position, pos2 = range.position, size2 = range instanceof Rectangle ? range.size : { width: 0, height: 0 }, w2 = size2.width, h2 = size2.height;\n return pos2.x < pos1.x + w && pos2.x + w2 > pos1.x && pos2.y < pos1.y + h && pos2.y + h2 > pos1.y;\n }\n}\n","import { Circle } from \"./Circle\";\nimport { Rectangle } from \"./Rectangle\";\nimport { getDistance } from \"../../Utils/NumberUtils\";\nexport class QuadTree {\n constructor(rectangle, capacity) {\n this.rectangle = rectangle;\n this.capacity = capacity;\n this._points = [];\n this._divided = false;\n }\n insert(point) {\n var _a, _b, _c, _d, _e;\n if (!this.rectangle.contains(point.position)) {\n return false;\n }\n if (this._points.length < this.capacity) {\n this._points.push(point);\n return true;\n }\n if (!this._divided) {\n this.subdivide();\n }\n return ((_e = (((_a = this._NE) === null || _a === void 0 ? void 0 : _a.insert(point)) ||\n ((_b = this._NW) === null || _b === void 0 ? void 0 : _b.insert(point)) ||\n ((_c = this._SE) === null || _c === void 0 ? void 0 : _c.insert(point)) ||\n ((_d = this._SW) === null || _d === void 0 ? void 0 : _d.insert(point)))) !== null && _e !== void 0 ? _e : false);\n }\n query(range, check, found) {\n var _a, _b, _c, _d;\n const res = found !== null && found !== void 0 ? found : [];\n if (!range.intersects(this.rectangle)) {\n return [];\n }\n for (const p of this._points) {\n if (!range.contains(p.position) &&\n getDistance(range.position, p.position) > p.particle.getRadius() &&\n (!check || check(p.particle))) {\n continue;\n }\n res.push(p.particle);\n }\n if (this._divided) {\n (_a = this._NE) === null || _a === void 0 ? void 0 : _a.query(range, check, res);\n (_b = this._NW) === null || _b === void 0 ? void 0 : _b.query(range, check, res);\n (_c = this._SE) === null || _c === void 0 ? void 0 : _c.query(range, check, res);\n (_d = this._SW) === null || _d === void 0 ? void 0 : _d.query(range, check, res);\n }\n return res;\n }\n queryCircle(position, radius, check) {\n return this.query(new Circle(position.x, position.y, radius), check);\n }\n queryRectangle(position, size, check) {\n return this.query(new Rectangle(position.x, position.y, size.width, size.height), check);\n }\n subdivide() {\n const x = this.rectangle.position.x, y = this.rectangle.position.y, w = this.rectangle.size.width, h = this.rectangle.size.height, capacity = this.capacity;\n this._NE = new QuadTree(new Rectangle(x, y, w / 2, h / 2), capacity);\n this._NW = new QuadTree(new Rectangle(x + w / 2, y, w / 2, h / 2), capacity);\n this._SE = new QuadTree(new Rectangle(x, y + h / 2, w / 2, h / 2), capacity);\n this._SW = new QuadTree(new Rectangle(x + w / 2, y + h / 2, w / 2, h / 2), capacity);\n this._divided = true;\n }\n}\n","import { InteractionManager } from \"./Utils/InteractionManager\";\nimport { Particle } from \"./Particle\";\nimport { Point } from \"./Utils/Point\";\nimport { QuadTree } from \"./Utils/QuadTree\";\nimport { Rectangle } from \"./Utils/Rectangle\";\nimport { calcPositionFromSize } from \"../Utils/NumberUtils\";\nexport class Particles {\n constructor(engine, container) {\n this.container = container;\n this._engine = engine;\n this.nextId = 0;\n this.array = [];\n this.zArray = [];\n this.pool = [];\n this.limit = 0;\n this.needsSort = false;\n this.lastZIndex = 0;\n this.interactionManager = new InteractionManager(this._engine, container);\n const canvasSize = this.container.canvas.size;\n this.quadTree = new QuadTree(new Rectangle(-canvasSize.width / 4, -canvasSize.height / 4, (canvasSize.width * 3) / 2, (canvasSize.height * 3) / 2), 4);\n this.movers = this._engine.plugins.getMovers(container, true);\n this.updaters = this._engine.plugins.getUpdaters(container, true);\n }\n get count() {\n return this.array.length;\n }\n addManualParticles() {\n const container = this.container, options = container.actualOptions;\n for (const particle of options.manualParticles) {\n this.addParticle(calcPositionFromSize({\n size: container.canvas.size,\n position: particle.position,\n }), particle.options);\n }\n }\n addParticle(position, overrideOptions, group, initializer) {\n const container = this.container, options = container.actualOptions, limit = options.particles.number.limit;\n if (limit > 0) {\n const countToRemove = this.count + 1 - limit;\n if (countToRemove > 0) {\n this.removeQuantity(countToRemove);\n }\n }\n return this._pushParticle(position, overrideOptions, group, initializer);\n }\n clear() {\n this.array = [];\n this.zArray = [];\n }\n destroy() {\n this.array = [];\n this.zArray = [];\n this.movers = [];\n this.updaters = [];\n }\n async draw(delta) {\n const container = this.container, canvasSize = this.container.canvas.size;\n this.quadTree = new QuadTree(new Rectangle(-canvasSize.width / 4, -canvasSize.height / 4, (canvasSize.width * 3) / 2, (canvasSize.height * 3) / 2), 4);\n container.canvas.clear();\n await this.update(delta);\n if (this.needsSort) {\n this.zArray.sort((a, b) => b.position.z - a.position.z || a.id - b.id);\n this.lastZIndex = this.zArray[this.zArray.length - 1].position.z;\n this.needsSort = false;\n }\n for (const [, plugin] of container.plugins) {\n container.canvas.drawPlugin(plugin, delta);\n }\n for (const p of this.zArray) {\n p.draw(delta);\n }\n }\n handleClickMode(mode) {\n this.interactionManager.handleClickMode(mode);\n }\n init() {\n var _a;\n const container = this.container, options = container.actualOptions;\n this.lastZIndex = 0;\n this.needsSort = false;\n let handled = false;\n this.updaters = this._engine.plugins.getUpdaters(container, true);\n this.interactionManager.init();\n for (const [, plugin] of container.plugins) {\n if (plugin.particlesInitialization !== undefined) {\n handled = plugin.particlesInitialization();\n }\n if (handled) {\n break;\n }\n }\n this.interactionManager.init();\n for (const [, pathGenerator] of container.pathGenerators) {\n pathGenerator.init(container);\n }\n this.addManualParticles();\n if (!handled) {\n for (const group in options.particles.groups) {\n const groupOptions = options.particles.groups[group];\n for (let i = this.count, j = 0; j < ((_a = groupOptions.number) === null || _a === void 0 ? void 0 : _a.value) && i < options.particles.number.value; i++, j++) {\n this.addParticle(undefined, groupOptions, group);\n }\n }\n for (let i = this.count; i < options.particles.number.value; i++) {\n this.addParticle();\n }\n }\n }\n push(nb, mouse, overrideOptions, group) {\n this.pushing = true;\n for (let i = 0; i < nb; i++) {\n this.addParticle(mouse === null || mouse === void 0 ? void 0 : mouse.position, overrideOptions, group);\n }\n this.pushing = false;\n }\n async redraw() {\n this.clear();\n this.init();\n await this.draw({ value: 0, factor: 0 });\n }\n remove(particle, group, override) {\n this.removeAt(this.array.indexOf(particle), undefined, group, override);\n }\n removeAt(index, quantity = 1, group, override) {\n if (index < 0 || index > this.count) {\n return;\n }\n let deleted = 0;\n for (let i = index; deleted < quantity && i < this.count; i++) {\n const particle = this.array[i];\n if (!particle || particle.group !== group) {\n continue;\n }\n particle.destroy(override);\n this.array.splice(i--, 1);\n const zIdx = this.zArray.indexOf(particle);\n this.zArray.splice(zIdx, 1);\n this.pool.push(particle);\n deleted++;\n this._engine.dispatchEvent(\"particleRemoved\", {\n container: this.container,\n data: {\n particle,\n },\n });\n }\n }\n removeQuantity(quantity, group) {\n this.removeAt(0, quantity, group);\n }\n setDensity() {\n const options = this.container.actualOptions;\n for (const group in options.particles.groups) {\n this._applyDensity(options.particles.groups[group], 0, group);\n }\n this._applyDensity(options.particles, options.manualParticles.length);\n }\n async update(delta) {\n var _a, _b;\n const container = this.container, particlesToDelete = [];\n for (const [, pathGenerator] of container.pathGenerators) {\n pathGenerator.update();\n }\n for (const [, plugin] of container.plugins) {\n (_a = plugin.update) === null || _a === void 0 ? void 0 : _a.call(plugin, delta);\n }\n for (const particle of this.array) {\n const resizeFactor = container.canvas.resizeFactor;\n if (resizeFactor && !particle.ignoresResizeRatio) {\n particle.position.x *= resizeFactor.width;\n particle.position.y *= resizeFactor.height;\n particle.initialPosition.x *= resizeFactor.width;\n particle.initialPosition.y *= resizeFactor.height;\n }\n particle.ignoresResizeRatio = false;\n await this.interactionManager.reset(particle);\n for (const [, plugin] of this.container.plugins) {\n if (particle.destroyed) {\n break;\n }\n (_b = plugin.particleUpdate) === null || _b === void 0 ? void 0 : _b.call(plugin, particle, delta);\n }\n for (const mover of this.movers) {\n if (mover.isEnabled(particle)) {\n mover.move(particle, delta);\n }\n }\n if (particle.destroyed) {\n particlesToDelete.push(particle);\n continue;\n }\n this.quadTree.insert(new Point(particle.getPosition(), particle));\n }\n for (const particle of particlesToDelete) {\n this.remove(particle);\n }\n await this.interactionManager.externalInteract(delta);\n for (const particle of this.array) {\n for (const updater of this.updaters) {\n updater.update(particle, delta);\n }\n if (!particle.destroyed && !particle.spawning) {\n await this.interactionManager.particlesInteract(particle, delta);\n }\n }\n delete container.canvas.resizeFactor;\n }\n _applyDensity(options, manualCount, group) {\n var _a;\n if (!((_a = options.number.density) === null || _a === void 0 ? void 0 : _a.enable)) {\n return;\n }\n const numberOptions = options.number, densityFactor = this._initDensityFactor(numberOptions.density), optParticlesNumber = numberOptions.value, optParticlesLimit = numberOptions.limit > 0 ? numberOptions.limit : optParticlesNumber, particlesNumber = Math.min(optParticlesNumber, optParticlesLimit) * densityFactor + manualCount, particlesCount = Math.min(this.count, this.array.filter((t) => t.group === group).length);\n this.limit = numberOptions.limit * densityFactor;\n if (particlesCount < particlesNumber) {\n this.push(Math.abs(particlesNumber - particlesCount), undefined, options, group);\n }\n else if (particlesCount > particlesNumber) {\n this.removeQuantity(particlesCount - particlesNumber, group);\n }\n }\n _initDensityFactor(densityOptions) {\n const container = this.container;\n if (!container.canvas.element || !densityOptions.enable) {\n return 1;\n }\n const canvas = container.canvas.element, pxRatio = container.retina.pixelRatio;\n return (canvas.width * canvas.height) / (densityOptions.factor * pxRatio ** 2 * densityOptions.area);\n }\n _pushParticle(position, overrideOptions, group, initializer) {\n try {\n let particle = this.pool.pop();\n if (particle) {\n particle.init(this.nextId, position, overrideOptions, group);\n }\n else {\n particle = new Particle(this._engine, this.nextId, this.container, position, overrideOptions, group);\n }\n let canAdd = true;\n if (initializer) {\n canAdd = initializer(particle);\n }\n if (!canAdd) {\n return;\n }\n this.array.push(particle);\n this.zArray.push(particle);\n this.nextId++;\n this._engine.dispatchEvent(\"particleAdded\", {\n container: this.container,\n data: {\n particle,\n },\n });\n return particle;\n }\n catch (e) {\n console.warn(`error adding particle: ${e}`);\n return;\n }\n }\n}\n","import { getRangeValue } from \"../Utils/NumberUtils\";\nimport { isSsr } from \"../Utils/Utils\";\nexport class Retina {\n constructor(container) {\n this.container = container;\n }\n init() {\n const container = this.container, options = container.actualOptions;\n this.pixelRatio = !options.detectRetina || isSsr() ? 1 : window.devicePixelRatio;\n this.reduceFactor = 1;\n const ratio = this.pixelRatio;\n if (container.canvas.element) {\n const element = container.canvas.element;\n container.canvas.size.width = element.offsetWidth * ratio;\n container.canvas.size.height = element.offsetHeight * ratio;\n }\n const particles = options.particles;\n this.attractDistance = getRangeValue(particles.move.attract.distance) * ratio;\n this.sizeAnimationSpeed = getRangeValue(particles.size.animation.speed) * ratio;\n this.maxSpeed = getRangeValue(particles.move.gravity.maxSpeed) * ratio;\n }\n initParticle(particle) {\n const options = particle.options, ratio = this.pixelRatio, moveDistance = options.move.distance, props = particle.retina;\n props.attractDistance = getRangeValue(options.move.attract.distance) * ratio;\n props.moveDrift = getRangeValue(options.move.drift) * ratio;\n props.moveSpeed = getRangeValue(options.move.speed) * ratio;\n props.sizeAnimationSpeed = getRangeValue(options.size.animation.speed) * ratio;\n const maxDistance = props.maxDistance;\n maxDistance.horizontal = moveDistance.horizontal !== undefined ? moveDistance.horizontal * ratio : undefined;\n maxDistance.vertical = moveDistance.vertical !== undefined ? moveDistance.vertical * ratio : undefined;\n props.maxSpeed = getRangeValue(options.move.gravity.maxSpeed) * ratio;\n }\n}\n","import { animate, cancelAnimation } from \"../Utils/Utils\";\nimport { Canvas } from \"./Canvas\";\nimport { EventListeners } from \"./Utils/EventListeners\";\nimport { FrameManager } from \"./Utils/FrameManager\";\nimport { Options } from \"../Options/Classes/Options\";\nimport { Particles } from \"./Particles\";\nimport { Retina } from \"./Retina\";\nimport { getRangeValue } from \"../Utils/NumberUtils\";\nimport { loadOptions } from \"../Utils/OptionsUtils\";\nfunction guardCheck(container) {\n return container && !container.destroyed;\n}\nfunction loadContainerOptions(engine, container, ...sourceOptionsArr) {\n const options = new Options(engine, container);\n loadOptions(options, ...sourceOptionsArr);\n return options;\n}\nconst defaultPathGeneratorKey = \"default\", defaultPathGenerator = {\n generate: (p) => {\n const v = p.velocity.copy();\n v.angle += (v.length * Math.PI) / 180;\n return v;\n },\n init: () => {\n },\n update: () => {\n },\n reset: () => {\n },\n};\nexport class Container {\n constructor(engine, id, sourceOptions) {\n this.id = id;\n this._engine = engine;\n this.fpsLimit = 120;\n this.smooth = false;\n this._delay = 0;\n this.duration = 0;\n this.lifeTime = 0;\n this._firstStart = true;\n this.started = false;\n this.destroyed = false;\n this._paused = true;\n this.lastFrameTime = 0;\n this.zLayers = 100;\n this.pageHidden = false;\n this._sourceOptions = sourceOptions;\n this._initialSourceOptions = sourceOptions;\n this.retina = new Retina(this);\n this.canvas = new Canvas(this);\n this.particles = new Particles(this._engine, this);\n this.frameManager = new FrameManager(this);\n this.pathGenerators = new Map();\n this.interactivity = {\n mouse: {\n clicking: false,\n inside: false,\n },\n };\n this.plugins = new Map();\n this.drawers = new Map();\n this._options = loadContainerOptions(this._engine, this);\n this.actualOptions = loadContainerOptions(this._engine, this);\n this._eventListeners = new EventListeners(this);\n if (typeof IntersectionObserver !== \"undefined\" && IntersectionObserver) {\n this._intersectionObserver = new IntersectionObserver((entries) => this._intersectionManager(entries));\n }\n this._engine.dispatchEvent(\"containerBuilt\", { container: this });\n }\n get options() {\n return this._options;\n }\n get sourceOptions() {\n return this._sourceOptions;\n }\n addClickHandler(callback) {\n if (!guardCheck(this)) {\n return;\n }\n const el = this.interactivity.element;\n if (!el) {\n return;\n }\n const clickOrTouchHandler = (e, pos, radius) => {\n if (!guardCheck(this)) {\n return;\n }\n const pxRatio = this.retina.pixelRatio, posRetina = {\n x: pos.x * pxRatio,\n y: pos.y * pxRatio,\n }, particles = this.particles.quadTree.queryCircle(posRetina, radius * pxRatio);\n callback(e, particles);\n };\n const clickHandler = (e) => {\n if (!guardCheck(this)) {\n return;\n }\n const mouseEvent = e, pos = {\n x: mouseEvent.offsetX || mouseEvent.clientX,\n y: mouseEvent.offsetY || mouseEvent.clientY,\n };\n clickOrTouchHandler(e, pos, 1);\n };\n const touchStartHandler = () => {\n if (!guardCheck(this)) {\n return;\n }\n touched = true;\n touchMoved = false;\n };\n const touchMoveHandler = () => {\n if (!guardCheck(this)) {\n return;\n }\n touchMoved = true;\n };\n const touchEndHandler = (e) => {\n if (!guardCheck(this)) {\n return;\n }\n if (touched && !touchMoved) {\n const touchEvent = e;\n let lastTouch = touchEvent.touches[touchEvent.touches.length - 1];\n if (!lastTouch) {\n lastTouch = touchEvent.changedTouches[touchEvent.changedTouches.length - 1];\n if (!lastTouch) {\n return;\n }\n }\n const element = this.canvas.element, canvasRect = element ? element.getBoundingClientRect() : undefined, pos = {\n x: lastTouch.clientX - (canvasRect ? canvasRect.left : 0),\n y: lastTouch.clientY - (canvasRect ? canvasRect.top : 0),\n };\n clickOrTouchHandler(e, pos, Math.max(lastTouch.radiusX, lastTouch.radiusY));\n }\n touched = false;\n touchMoved = false;\n };\n const touchCancelHandler = () => {\n if (!guardCheck(this)) {\n return;\n }\n touched = false;\n touchMoved = false;\n };\n let touched = false, touchMoved = false;\n el.addEventListener(\"click\", clickHandler);\n el.addEventListener(\"touchstart\", touchStartHandler);\n el.addEventListener(\"touchmove\", touchMoveHandler);\n el.addEventListener(\"touchend\", touchEndHandler);\n el.addEventListener(\"touchcancel\", touchCancelHandler);\n }\n addPath(key, generator, override = false) {\n if (!guardCheck(this) || (!override && this.pathGenerators.has(key))) {\n return false;\n }\n this.pathGenerators.set(key, generator !== null && generator !== void 0 ? generator : defaultPathGenerator);\n return true;\n }\n destroy() {\n if (!guardCheck(this)) {\n return;\n }\n this.stop();\n this.particles.destroy();\n this.canvas.destroy();\n for (const [, drawer] of this.drawers) {\n if (drawer.destroy) {\n drawer.destroy(this);\n }\n }\n for (const key of this.drawers.keys()) {\n this.drawers.delete(key);\n }\n this._engine.plugins.destroy(this);\n this.destroyed = true;\n const mainArr = this._engine.dom(), idx = mainArr.findIndex((t) => t === this);\n if (idx >= 0) {\n mainArr.splice(idx, 1);\n }\n this._engine.dispatchEvent(\"containerDestroyed\", { container: this });\n }\n draw(force) {\n if (!guardCheck(this)) {\n return;\n }\n let refreshTime = force;\n this._drawAnimationFrame = animate()(async (timestamp) => {\n if (refreshTime) {\n this.lastFrameTime = undefined;\n refreshTime = false;\n }\n await this.frameManager.nextFrame(timestamp);\n });\n }\n exportConfiguration() {\n return JSON.stringify(this.actualOptions, (key, value) => {\n if (key === \"_engine\" || key === \"_container\") {\n return;\n }\n return value;\n }, 2);\n }\n exportImage(callback, type, quality) {\n const element = this.canvas.element;\n if (element) {\n element.toBlob(callback, type !== null && type !== void 0 ? type : \"image/png\", quality);\n }\n }\n exportImg(callback) {\n this.exportImage(callback);\n }\n getAnimationStatus() {\n return !this._paused && !this.pageHidden && guardCheck(this);\n }\n handleClickMode(mode) {\n if (!guardCheck(this)) {\n return;\n }\n this.particles.handleClickMode(mode);\n for (const [, plugin] of this.plugins) {\n if (plugin.handleClickMode) {\n plugin.handleClickMode(mode);\n }\n }\n }\n async init() {\n if (!guardCheck(this)) {\n return;\n }\n const shapes = this._engine.plugins.getSupportedShapes();\n for (const type of shapes) {\n const drawer = this._engine.plugins.getShapeDrawer(type);\n if (drawer) {\n this.drawers.set(type, drawer);\n }\n }\n this._options = loadContainerOptions(this._engine, this, this._initialSourceOptions, this.sourceOptions);\n this.actualOptions = loadContainerOptions(this._engine, this, this._options);\n const availablePlugins = this._engine.plugins.getAvailablePlugins(this);\n for (const [id, plugin] of availablePlugins) {\n this.plugins.set(id, plugin);\n }\n this.retina.init();\n this.canvas.init();\n this.updateActualOptions();\n this.canvas.initBackground();\n this.canvas.resize();\n this.zLayers = this.actualOptions.zLayers;\n this.duration = getRangeValue(this.actualOptions.duration) * 1000;\n this._delay = getRangeValue(this.actualOptions.delay) * 1000;\n this.lifeTime = 0;\n this.fpsLimit = this.actualOptions.fpsLimit > 0 ? this.actualOptions.fpsLimit : 120;\n this.smooth = this.actualOptions.smooth;\n for (const [, drawer] of this.drawers) {\n if (drawer.init) {\n await drawer.init(this);\n }\n }\n for (const [, plugin] of this.plugins) {\n if (plugin.init) {\n await plugin.init();\n }\n }\n this._engine.dispatchEvent(\"containerInit\", { container: this });\n this.particles.init();\n this.particles.setDensity();\n for (const [, plugin] of this.plugins) {\n if (plugin.particlesSetup) {\n plugin.particlesSetup();\n }\n }\n this._engine.dispatchEvent(\"particlesSetup\", { container: this });\n }\n async loadTheme(name) {\n if (!guardCheck(this)) {\n return;\n }\n this._currentTheme = name;\n await this.refresh();\n }\n pause() {\n if (!guardCheck(this)) {\n return;\n }\n if (this._drawAnimationFrame !== undefined) {\n cancelAnimation()(this._drawAnimationFrame);\n delete this._drawAnimationFrame;\n }\n if (this._paused) {\n return;\n }\n for (const [, plugin] of this.plugins) {\n if (plugin.pause) {\n plugin.pause();\n }\n }\n if (!this.pageHidden) {\n this._paused = true;\n }\n this._engine.dispatchEvent(\"containerPaused\", { container: this });\n }\n play(force) {\n if (!guardCheck(this)) {\n return;\n }\n const needsUpdate = this._paused || force;\n if (this._firstStart && !this.actualOptions.autoPlay) {\n this._firstStart = false;\n return;\n }\n if (this._paused) {\n this._paused = false;\n }\n if (needsUpdate) {\n for (const [, plugin] of this.plugins) {\n if (plugin.play) {\n plugin.play();\n }\n }\n }\n this._engine.dispatchEvent(\"containerPlay\", { container: this });\n this.draw(needsUpdate || false);\n }\n async refresh() {\n if (!guardCheck(this)) {\n return;\n }\n this.stop();\n return this.start();\n }\n async reset() {\n if (!guardCheck(this)) {\n return;\n }\n this._options = loadContainerOptions(this._engine, this);\n return this.refresh();\n }\n setNoise(noiseOrGenerator, init, update) {\n if (!guardCheck(this)) {\n return;\n }\n this.setPath(noiseOrGenerator, init, update);\n }\n setPath(pathOrGenerator, init, update) {\n if (!pathOrGenerator || !guardCheck(this)) {\n return;\n }\n const pathGenerator = Object.assign({}, defaultPathGenerator);\n if (typeof pathOrGenerator === \"function\") {\n pathGenerator.generate = pathOrGenerator;\n if (init) {\n pathGenerator.init = init;\n }\n if (update) {\n pathGenerator.update = update;\n }\n }\n else {\n const oldGenerator = pathGenerator;\n pathGenerator.generate = pathOrGenerator.generate || oldGenerator.generate;\n pathGenerator.init = pathOrGenerator.init || oldGenerator.init;\n pathGenerator.update = pathOrGenerator.update || oldGenerator.update;\n }\n this.addPath(defaultPathGeneratorKey, pathGenerator, true);\n }\n async start() {\n if (!guardCheck(this) || this.started) {\n return;\n }\n await this.init();\n this.started = true;\n await new Promise((resolve) => {\n this._delayTimeout = setTimeout(async () => {\n this._eventListeners.addListeners();\n if (this.interactivity.element instanceof HTMLElement && this._intersectionObserver) {\n this._intersectionObserver.observe(this.interactivity.element);\n }\n for (const [, plugin] of this.plugins) {\n if (plugin.start) {\n await plugin.start();\n }\n }\n this._engine.dispatchEvent(\"containerStarted\", { container: this });\n this.play();\n resolve();\n }, this._delay);\n });\n }\n stop() {\n if (!guardCheck(this) || !this.started) {\n return;\n }\n if (this._delayTimeout) {\n clearTimeout(this._delayTimeout);\n delete this._delayTimeout;\n }\n this._firstStart = true;\n this.started = false;\n this._eventListeners.removeListeners();\n this.pause();\n this.particles.clear();\n this.canvas.clear();\n if (this.interactivity.element instanceof HTMLElement && this._intersectionObserver) {\n this._intersectionObserver.unobserve(this.interactivity.element);\n }\n for (const [, plugin] of this.plugins) {\n if (plugin.stop) {\n plugin.stop();\n }\n }\n for (const key of this.plugins.keys()) {\n this.plugins.delete(key);\n }\n this._sourceOptions = this._options;\n this._engine.dispatchEvent(\"containerStopped\", { container: this });\n }\n updateActualOptions() {\n this.actualOptions.responsive = [];\n const newMaxWidth = this.actualOptions.setResponsive(this.canvas.size.width, this.retina.pixelRatio, this._options);\n this.actualOptions.setTheme(this._currentTheme);\n if (this.responsiveMaxWidth === newMaxWidth) {\n return false;\n }\n this.responsiveMaxWidth = newMaxWidth;\n return true;\n }\n _intersectionManager(entries) {\n if (!guardCheck(this) || !this.actualOptions.pauseOnOutsideViewport) {\n return;\n }\n for (const entry of entries) {\n if (entry.target !== this.interactivity.element) {\n continue;\n }\n (entry.isIntersecting ? this.play : this.pause)();\n }\n }\n}\n","import { Container } from \"./Container\";\nimport { generatedAttribute } from \"./Utils/Constants\";\nimport { getRandom } from \"../Utils/NumberUtils\";\nimport { itemFromSingleOrMultiple } from \"../Utils/Utils\";\nasync function getDataFromUrl(jsonUrl, index) {\n const url = itemFromSingleOrMultiple(jsonUrl, index);\n if (!url) {\n return;\n }\n const response = await fetch(url);\n if (response.ok) {\n return response.json();\n }\n console.error(`tsParticles - Error ${response.status} while retrieving config file`);\n}\nexport class Loader {\n constructor(engine) {\n this._engine = engine;\n }\n load(tagId, options, index) {\n const params = { index, remote: false };\n if (typeof tagId === \"string\") {\n params.tagId = tagId;\n }\n else {\n params.options = tagId;\n }\n if (typeof options === \"number\") {\n params.index = options;\n }\n else {\n params.options = options !== null && options !== void 0 ? options : params.options;\n }\n return this.loadOptions(params);\n }\n async loadJSON(tagId, jsonUrl, index) {\n let url, id;\n if (typeof jsonUrl === \"number\" || jsonUrl === undefined) {\n url = tagId;\n }\n else {\n id = tagId;\n url = jsonUrl;\n }\n return this.loadRemoteOptions({ tagId: id, url, index, remote: true });\n }\n async loadOptions(params) {\n var _a, _b, _c;\n const tagId = (_a = params.tagId) !== null && _a !== void 0 ? _a : `tsparticles${Math.floor(getRandom() * 10000)}`, { index, url: jsonUrl, remote } = params, options = remote ? await getDataFromUrl(jsonUrl, index) : params.options;\n let domContainer = (_b = params.element) !== null && _b !== void 0 ? _b : document.getElementById(tagId);\n if (!domContainer) {\n domContainer = document.createElement(\"div\");\n domContainer.id = tagId;\n (_c = document.querySelector(\"body\")) === null || _c === void 0 ? void 0 : _c.append(domContainer);\n }\n const currentOptions = itemFromSingleOrMultiple(options, index), dom = this._engine.dom(), oldIndex = dom.findIndex((v) => v.id === tagId);\n if (oldIndex >= 0) {\n const old = this._engine.domItem(oldIndex);\n if (old && !old.destroyed) {\n old.destroy();\n dom.splice(oldIndex, 1);\n }\n }\n let canvasEl;\n if (domContainer.tagName.toLowerCase() === \"canvas\") {\n canvasEl = domContainer;\n canvasEl.dataset[generatedAttribute] = \"false\";\n }\n else {\n const existingCanvases = domContainer.getElementsByTagName(\"canvas\");\n if (existingCanvases.length) {\n canvasEl = existingCanvases[0];\n canvasEl.dataset[generatedAttribute] = \"false\";\n }\n else {\n canvasEl = document.createElement(\"canvas\");\n canvasEl.dataset[generatedAttribute] = \"true\";\n domContainer.appendChild(canvasEl);\n }\n }\n if (!canvasEl.style.width) {\n canvasEl.style.width = \"100%\";\n }\n if (!canvasEl.style.height) {\n canvasEl.style.height = \"100%\";\n }\n const newItem = new Container(this._engine, tagId, currentOptions);\n if (oldIndex >= 0) {\n dom.splice(oldIndex, 0, newItem);\n }\n else {\n dom.push(newItem);\n }\n newItem.canvas.loadCanvas(canvasEl);\n await newItem.start();\n return newItem;\n }\n async loadRemoteOptions(params) {\n return this.loadOptions(params);\n }\n async set(id, domContainer, options, index) {\n const params = { index, remote: false };\n if (typeof id === \"string\") {\n params.tagId = id;\n }\n else {\n params.element = id;\n }\n if (domContainer instanceof HTMLElement) {\n params.element = domContainer;\n }\n else {\n params.options = domContainer;\n }\n if (typeof options === \"number\") {\n params.index = options;\n }\n else {\n params.options = options !== null && options !== void 0 ? options : params.options;\n }\n return this.loadOptions(params);\n }\n async setJSON(id, domContainer, jsonUrl, index) {\n let url, newId, newIndex, element;\n if (id instanceof HTMLElement) {\n element = id;\n url = domContainer;\n newIndex = jsonUrl;\n }\n else {\n newId = id;\n element = domContainer;\n url = jsonUrl;\n newIndex = index;\n }\n return this.loadRemoteOptions({ tagId: newId, url, index: newIndex, element, remote: true });\n }\n}\n","function getItemsFromInitializer(container, map, initializers, force = false) {\n let res = map.get(container);\n if (!res || force) {\n res = [...initializers.values()].map((t) => t(container));\n map.set(container, res);\n }\n return res;\n}\nexport class Plugins {\n constructor(engine) {\n this._engine = engine;\n this.plugins = [];\n this._initializers = {\n interactors: new Map(),\n movers: new Map(),\n updaters: new Map(),\n };\n this.interactors = new Map();\n this.movers = new Map();\n this.updaters = new Map();\n this.presets = new Map();\n this.drawers = new Map();\n this.pathGenerators = new Map();\n }\n addInteractor(name, initInteractor) {\n this._initializers.interactors.set(name, initInteractor);\n }\n addParticleMover(name, initMover) {\n this._initializers.movers.set(name, initMover);\n }\n addParticleUpdater(name, initUpdater) {\n this._initializers.updaters.set(name, initUpdater);\n }\n addPathGenerator(type, pathGenerator) {\n if (!this.getPathGenerator(type)) {\n this.pathGenerators.set(type, pathGenerator);\n }\n }\n addPlugin(plugin) {\n if (!this.getPlugin(plugin.id)) {\n this.plugins.push(plugin);\n }\n }\n addPreset(presetKey, options, override = false) {\n if (override || !this.getPreset(presetKey)) {\n this.presets.set(presetKey, options);\n }\n }\n addShapeDrawer(type, drawer) {\n if (!this.getShapeDrawer(type)) {\n this.drawers.set(type, drawer);\n }\n }\n destroy(container) {\n this.updaters.delete(container);\n this.movers.delete(container);\n this.interactors.delete(container);\n }\n getAvailablePlugins(container) {\n const res = new Map();\n for (const plugin of this.plugins) {\n if (!plugin.needsPlugin(container.actualOptions)) {\n continue;\n }\n res.set(plugin.id, plugin.getPlugin(container));\n }\n return res;\n }\n getInteractors(container, force = false) {\n return getItemsFromInitializer(container, this.interactors, this._initializers.interactors, force);\n }\n getMovers(container, force = false) {\n return getItemsFromInitializer(container, this.movers, this._initializers.movers, force);\n }\n getPathGenerator(type) {\n return this.pathGenerators.get(type);\n }\n getPlugin(plugin) {\n return this.plugins.find((t) => t.id === plugin);\n }\n getPreset(preset) {\n return this.presets.get(preset);\n }\n getShapeDrawer(type) {\n return this.drawers.get(type);\n }\n getSupportedShapes() {\n return this.drawers.keys();\n }\n getUpdaters(container, force = false) {\n return getItemsFromInitializer(container, this.updaters, this._initializers.updaters, force);\n }\n loadOptions(options, sourceOptions) {\n for (const plugin of this.plugins) {\n plugin.loadOptions(options, sourceOptions);\n }\n }\n loadParticlesOptions(container, options, ...sourceOptions) {\n const updaters = this.updaters.get(container);\n if (!updaters) {\n return;\n }\n for (const updater of updaters) {\n if (updater.loadOptions) {\n updater.loadOptions(options, ...sourceOptions);\n }\n }\n }\n}\n","import { EventDispatcher } from \"./Utils/EventDispatcher\";\nimport { Loader } from \"./Core/Loader\";\nimport { Plugins } from \"./Core/Utils/Plugins\";\nexport class Engine {\n constructor() {\n this._domArray = [];\n this._eventDispatcher = new EventDispatcher();\n this._initialized = false;\n this._loader = new Loader(this);\n this.plugins = new Plugins(this);\n }\n addEventListener(type, listener) {\n this._eventDispatcher.addEventListener(type, listener);\n }\n async addInteractor(name, interactorInitializer) {\n this.plugins.addInteractor(name, interactorInitializer);\n await this.refresh();\n }\n async addMover(name, moverInitializer) {\n this.plugins.addParticleMover(name, moverInitializer);\n await this.refresh();\n }\n async addParticleUpdater(name, updaterInitializer) {\n this.plugins.addParticleUpdater(name, updaterInitializer);\n await this.refresh();\n }\n async addPathGenerator(name, generator) {\n this.plugins.addPathGenerator(name, generator);\n await this.refresh();\n }\n async addPlugin(plugin) {\n this.plugins.addPlugin(plugin);\n await this.refresh();\n }\n async addPreset(preset, options, override = false) {\n this.plugins.addPreset(preset, options, override);\n await this.refresh();\n }\n async addShape(shape, drawer, init, afterEffect, destroy) {\n let customDrawer;\n if (typeof drawer === \"function\") {\n customDrawer = {\n afterEffect: afterEffect,\n destroy: destroy,\n draw: drawer,\n init: init,\n };\n }\n else {\n customDrawer = drawer;\n }\n this.plugins.addShapeDrawer(shape, customDrawer);\n await this.refresh();\n }\n dispatchEvent(type, args) {\n this._eventDispatcher.dispatchEvent(type, args);\n }\n dom() {\n return this._domArray;\n }\n domItem(index) {\n const dom = this.dom(), item = dom[index];\n if (item && !item.destroyed) {\n return item;\n }\n dom.splice(index, 1);\n }\n init() {\n if (!this._initialized) {\n this._initialized = true;\n }\n }\n async load(tagId, options) {\n return this._loader.load(tagId, options);\n }\n async loadFromArray(tagId, options, index) {\n return this._loader.load(tagId, options, index);\n }\n async loadJSON(tagId, pathConfigJson, index) {\n return this._loader.loadJSON(tagId, pathConfigJson, index);\n }\n async refresh() {\n for (const instance of this.dom()) {\n await instance.refresh();\n }\n }\n removeEventListener(type, listener) {\n this._eventDispatcher.removeEventListener(type, listener);\n }\n async set(id, element, options) {\n return this._loader.set(id, element, options);\n }\n async setJSON(id, element, pathConfigJson, index) {\n return this._loader.setJSON(id, element, pathConfigJson, index);\n }\n setOnClickHandler(callback) {\n const dom = this.dom();\n if (!dom.length) {\n throw new Error(\"Can only set click handlers after calling tsParticles.load() or tsParticles.loadJSON()\");\n }\n for (const domItem of dom) {\n domItem.addClickHandler(callback);\n }\n }\n}\n","import { getRangeValue, parseAlpha } from \"./NumberUtils\";\nimport { hslToRgb, hslaToRgba } from \"./ColorUtils\";\nexport class HslColorManager {\n constructor() {\n this.key = \"hsl\";\n this.stringPrefix = \"hsl\";\n }\n handleColor(color) {\n var _a;\n const colorValue = color.value, hslColor = (_a = colorValue.hsl) !== null && _a !== void 0 ? _a : color.value;\n if (hslColor.h !== undefined && hslColor.s !== undefined && hslColor.l !== undefined) {\n return hslToRgb(hslColor);\n }\n }\n handleRangeColor(color) {\n var _a;\n const colorValue = color.value, hslColor = (_a = colorValue.hsl) !== null && _a !== void 0 ? _a : color.value;\n if (hslColor.h !== undefined && hslColor.l !== undefined) {\n return hslToRgb({\n h: getRangeValue(hslColor.h),\n l: getRangeValue(hslColor.l),\n s: getRangeValue(hslColor.s),\n });\n }\n }\n parseString(input) {\n if (!input.startsWith(\"hsl\")) {\n return;\n }\n const regex = /hsla?\\(\\s*(\\d+)\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*(,\\s*([\\d.%]+)\\s*)?\\)/i, result = regex.exec(input);\n return result\n ? hslaToRgba({\n a: result.length > 4 ? parseAlpha(result[5]) : 1,\n h: parseInt(result[1], 10),\n l: parseInt(result[3], 10),\n s: parseInt(result[2], 10),\n })\n : undefined;\n }\n}\n","import { getRangeValue, parseAlpha } from \"./NumberUtils\";\nexport class RgbColorManager {\n constructor() {\n this.key = \"rgb\";\n this.stringPrefix = \"rgb\";\n }\n handleColor(color) {\n var _a;\n const colorValue = color.value, rgbColor = (_a = colorValue.rgb) !== null && _a !== void 0 ? _a : color.value;\n if (rgbColor.r !== undefined) {\n return rgbColor;\n }\n }\n handleRangeColor(color) {\n var _a;\n const colorValue = color.value, rgbColor = (_a = colorValue.rgb) !== null && _a !== void 0 ? _a : color.value;\n if (rgbColor.r !== undefined) {\n return {\n r: getRangeValue(rgbColor.r),\n g: getRangeValue(rgbColor.g),\n b: getRangeValue(rgbColor.b),\n };\n }\n }\n parseString(input) {\n if (!input.startsWith(this.stringPrefix)) {\n return;\n }\n const regex = /rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([\\d.%]+)\\s*)?\\)/i, result = regex.exec(input);\n return result\n ? {\n a: result.length > 4 ? parseAlpha(result[5]) : 1,\n b: parseInt(result[3], 10),\n g: parseInt(result[2], 10),\n r: parseInt(result[1], 10),\n }\n : undefined;\n }\n}\n","export class ExternalInteractorBase {\n constructor(container) {\n this.container = container;\n this.type = \"external\";\n }\n}\n","export class ParticlesInteractorBase {\n constructor(container) {\n this.container = container;\n this.type = \"particles\";\n }\n}\n","import { Engine } from \"./engine\";\nimport { HslColorManager } from \"./Utils/HslColorManager\";\nimport { RgbColorManager } from \"./Utils/RgbColorManager\";\nimport { addColorManager } from \"./Utils/ColorUtils\";\nconst rgbColorManager = new RgbColorManager(), hslColorManager = new HslColorManager();\naddColorManager(rgbColorManager);\naddColorManager(hslColorManager);\nconst tsParticles = new Engine();\ntsParticles.init();\nexport * from \"./Core/Interfaces/Colors\";\nexport * from \"./Core/Interfaces/IBounds\";\nexport * from \"./Core/Interfaces/IBubbleParticleData\";\nexport * from \"./Core/Interfaces/ICircleBouncer\";\nexport * from \"./Core/Interfaces/IColorManager\";\nexport * from \"./Core/Interfaces/IContainerInteractivity\";\nexport * from \"./Core/Interfaces/IContainerPlugin\";\nexport * from \"./Core/Interfaces/ICoordinates\";\nexport * from \"./Core/Interfaces/IDelta\";\nexport * from \"./Core/Interfaces/IDimension\";\nexport * from \"./Core/Interfaces/IDistance\";\nexport * from \"./Core/Interfaces/IExternalInteractor\";\nexport * from \"./Core/Interfaces/IInteractor\";\nexport * from \"./Core/Interfaces/IMouseData\";\nexport * from \"./Core/Interfaces/IMovePathGenerator\";\nexport * from \"./Core/Interfaces/IParticle\";\nexport * from \"./Core/Interfaces/IParticleColorStyle\";\nexport * from \"./Core/Interfaces/IParticleHslAnimation\";\nexport * from \"./Core/Interfaces/IParticlesInteractor\";\nexport * from \"./Core/Interfaces/IParticleLife\";\nexport * from \"./Core/Interfaces/IParticleRetinaProps\";\nexport * from \"./Core/Interfaces/IParticleRoll\";\nexport * from \"./Core/Interfaces/IParticleTransformValues\";\nexport * from \"./Core/Interfaces/IParticleUpdater\";\nexport * from \"./Core/Interfaces/IParticleValueAnimation\";\nexport * from \"./Core/Interfaces/IParticleWobble\";\nexport * from \"./Core/Interfaces/IParticlesMover\";\nexport * from \"./Core/Interfaces/IPlugin\";\nexport * from \"./Core/Interfaces/IRangeValue\";\nexport * from \"./Core/Interfaces/IRectSideResult\";\nexport * from \"./Core/Interfaces/IShapeDrawer\";\nexport * from \"./Core/Interfaces/IShapeValues\";\nexport * from \"./Core/Interfaces/ISlowParticleData\";\nexport * from \"./Core/Utils/Circle\";\nexport * from \"./Core/Utils/Constants\";\nexport * from \"./Core/Utils/ExternalInteractorBase\";\nexport * from \"./Core/Utils/ParticlesInteractorBase\";\nexport * from \"./Core/Utils/Point\";\nexport * from \"./Core/Utils/Range\";\nexport * from \"./Core/Utils/Rectangle\";\nexport * from \"./Core/Utils/Vector\";\nexport * from \"./Core/Utils/Vector3d\";\nexport * from \"./Enums/Directions/MoveDirection\";\nexport * from \"./Enums/Directions/RotateDirection\";\nexport * from \"./Enums/Directions/OutModeDirection\";\nexport * from \"./Enums/Modes/ClickMode\";\nexport * from \"./Enums/Modes/DivMode\";\nexport * from \"./Enums/Modes/HoverMode\";\nexport * from \"./Enums/Modes/CollisionMode\";\nexport * from \"./Enums/Modes/OutMode\";\nexport * from \"./Enums/Modes/SizeMode\";\nexport * from \"./Enums/Modes/ThemeMode\";\nexport * from \"./Enums/Modes/ResponsiveMode\";\nexport * from \"./Enums/Types/AlterType\";\nexport * from \"./Enums/Types/DestroyType\";\nexport * from \"./Enums/Types/GradientType\";\nexport * from \"./Enums/Types/InteractorType\";\nexport * from \"./Enums/Types/ParticleOutType\";\nexport * from \"./Enums/Types/StartValueType\";\nexport * from \"./Enums/Types/DivType\";\nexport * from \"./Enums/Types/EasingType\";\nexport * from \"./Enums/AnimationStatus\";\nexport * from \"./Enums/InteractivityDetect\";\nexport * from \"./Options/Classes/AnimatableColor\";\nexport * from \"./Options/Classes/AnimationOptions\";\nexport * from \"./Options/Classes/Background/Background\";\nexport * from \"./Options/Classes/BackgroundMask/BackgroundMask\";\nexport * from \"./Options/Classes/BackgroundMask/BackgroundMaskCover\";\nexport * from \"./Options/Classes/ColorAnimation\";\nexport * from \"./Options/Classes/FullScreen/FullScreen\";\nexport * from \"./Options/Classes/HslAnimation\";\nexport * from \"./Options/Classes/Interactivity/Events/ClickEvent\";\nexport * from \"./Options/Classes/Interactivity/Events/DivEvent\";\nexport * from \"./Options/Classes/Interactivity/Events/ClickEvent\";\nexport * from \"./Options/Classes/Interactivity/Events/DivEvent\";\nexport * from \"./Options/Classes/Interactivity/Events/Events\";\nexport * from \"./Options/Classes/Interactivity/Events/HoverEvent\";\nexport * from \"./Options/Classes/Interactivity/Events/Parallax\";\nexport * from \"./Options/Classes/Interactivity/Interactivity\";\nexport * from \"./Options/Classes/Interactivity/Modes/Modes\";\nexport * from \"./Options/Classes/ManualParticle\";\nexport * from \"./Options/Classes/Options\";\nexport * from \"./Options/Classes/OptionsColor\";\nexport * from \"./Options/Classes/Particles/Bounce/ParticlesBounce\";\nexport * from \"./Options/Classes/Particles/Bounce/ParticlesBounceFactor\";\nexport * from \"./Options/Classes/Particles/Collisions/Collisions\";\nexport * from \"./Options/Classes/Particles/Collisions/CollisionsOverlap\";\nexport * from \"./Options/Classes/Particles/ParticlesOptions\";\nexport * from \"./Options/Classes/Particles/Shadow\";\nexport * from \"./Options/Classes/Particles/Stroke\";\nexport * from \"./Options/Classes/Particles/Move/MoveAttract\";\nexport * from \"./Options/Classes/Particles/Move/Move\";\nexport * from \"./Options/Classes/Particles/Move/MoveAngle\";\nexport * from \"./Options/Classes/Particles/Move/MoveCenter\";\nexport * from \"./Options/Classes/Particles/Move/MoveGravity\";\nexport * from \"./Options/Classes/Particles/Move/OutModes\";\nexport * from \"./Options/Classes/Particles/Move/Path/MovePath\";\nexport * from \"./Options/Classes/Particles/Move/Spin\";\nexport * from \"./Options/Classes/Particles/Move/MoveTrail\";\nexport * from \"./Options/Classes/Particles/Number/ParticlesNumber\";\nexport * from \"./Options/Classes/Particles/Number/ParticlesDensity\";\nexport * from \"./Options/Classes/Particles/Opacity/Opacity\";\nexport * from \"./Options/Classes/Particles/Opacity/OpacityAnimation\";\nexport * from \"./Options/Classes/Particles/Shape/Shape\";\nexport * from \"./Options/Classes/Particles/Size/Size\";\nexport * from \"./Options/Classes/Particles/Size/SizeAnimation\";\nexport * from \"./Options/Classes/Particles/ZIndex/ZIndex\";\nexport * from \"./Options/Classes/Responsive\";\nexport * from \"./Options/Classes/Theme/Theme\";\nexport * from \"./Options/Classes/Theme/ThemeDefault\";\nexport * from \"./Options/Classes/ValueWithRandom\";\nexport * from \"./Options/Interfaces/Background/IBackground\";\nexport * from \"./Options/Interfaces/BackgroundMask/IBackgroundMask\";\nexport * from \"./Options/Interfaces/BackgroundMask/IBackgroundMaskCover\";\nexport * from \"./Options/Interfaces/FullScreen/IFullScreen\";\nexport * from \"./Options/Interfaces/IAnimatable\";\nexport * from \"./Options/Interfaces/IAnimatableColor\";\nexport * from \"./Options/Interfaces/IAnimation\";\nexport * from \"./Options/Interfaces/IColorAnimation\";\nexport * from \"./Options/Interfaces/IHslAnimation\";\nexport * from \"./Options/Interfaces/IManualParticle\";\nexport * from \"./Options/Interfaces/IOptionLoader\";\nexport * from \"./Options/Interfaces/IOptions\";\nexport * from \"./Options/Interfaces/IOptionsColor\";\nexport * from \"./Options/Interfaces/IResponsive\";\nexport * from \"./Options/Interfaces/IValueWithRandom\";\nexport * from \"./Options/Interfaces/Interactivity/Events/IClickEvent\";\nexport * from \"./Options/Interfaces/Interactivity/Events/IDivEvent\";\nexport * from \"./Options/Interfaces/Interactivity/Events/IEvents\";\nexport * from \"./Options/Interfaces/Interactivity/Events/IHoverEvent\";\nexport * from \"./Options/Interfaces/Interactivity/Events/IParallax\";\nexport * from \"./Options/Interfaces/Interactivity/Modes/IModeDiv\";\nexport * from \"./Options/Interfaces/Interactivity/Modes/IModes\";\nexport * from \"./Options/Interfaces/Interactivity/IInteractivity\";\nexport * from \"./Options/Interfaces/Particles/Bounce/IParticlesBounce\";\nexport * from \"./Options/Interfaces/Particles/Collisions/ICollisions\";\nexport * from \"./Options/Interfaces/Particles/Collisions/ICollisionsOverlap\";\nexport * from \"./Options/Interfaces/Particles/IParticlesOptions\";\nexport * from \"./Options/Interfaces/Particles/IShadow\";\nexport * from \"./Options/Interfaces/Particles/IStroke\";\nexport * from \"./Options/Interfaces/Particles/Move/IMoveAttract\";\nexport * from \"./Options/Interfaces/Particles/Move/IMove\";\nexport * from \"./Options/Interfaces/Particles/Move/IMoveAngle\";\nexport * from \"./Options/Interfaces/Particles/Move/IMoveCenter\";\nexport * from \"./Options/Interfaces/Particles/Move/IMoveGravity\";\nexport * from \"./Options/Interfaces/Particles/Move/Path/IMovePath\";\nexport * from \"./Options/Interfaces/Particles/Move/IOutModes\";\nexport * from \"./Options/Interfaces/Particles/Move/ISpin\";\nexport * from \"./Options/Interfaces/Particles/Move/IMoveTrail\";\nexport * from \"./Options/Interfaces/Particles/Number/IParticlesDensity\";\nexport * from \"./Options/Interfaces/Particles/Number/IParticlesNumber\";\nexport * from \"./Options/Interfaces/Particles/Opacity/IOpacity\";\nexport * from \"./Options/Interfaces/Particles/Opacity/IOpacityAnimation\";\nexport * from \"./Options/Interfaces/Particles/Shape/ICharacterShape\";\nexport * from \"./Options/Interfaces/Particles/Shape/IImageShape\";\nexport * from \"./Options/Interfaces/Particles/Shape/IPolygonShape\";\nexport * from \"./Options/Interfaces/Particles/Shape/IShape\";\nexport * from \"./Options/Interfaces/Particles/Shape/IShapeValues\";\nexport * from \"./Options/Interfaces/Particles/Shape/IStarShape\";\nexport * from \"./Options/Interfaces/Particles/Size/ISize\";\nexport * from \"./Options/Interfaces/Particles/Size/ISizeAnimation\";\nexport * from \"./Options/Interfaces/Particles/ZIndex/IZIndex\";\nexport * from \"./Options/Interfaces/Theme/ITheme\";\nexport * from \"./Options/Interfaces/Theme/IThemeDefault\";\nexport * from \"./Types/RangeValue\";\nexport * from \"./Types/RecursivePartial\";\nexport * from \"./Types/ShapeData\";\nexport * from \"./Types/ShapeDrawerFunctions\";\nexport * from \"./Types/SingleOrMultiple\";\nexport * from \"./Types/PathOptions\";\nexport * from \"./Utils/CanvasUtils\";\nexport * from \"./Utils/ColorUtils\";\nexport * from \"./Utils/HslColorManager\";\nexport * from \"./Utils/NumberUtils\";\nexport * from \"./Utils/OptionsUtils\";\nexport * from \"./Utils/RgbColorManager\";\nexport * from \"./Utils/Utils\";\nexport { tsParticles };\nexport { CollisionsAbsorb } from \"./Options/Classes/Particles/Collisions/CollisionsAbsorb\";\nexport { ResizeEvent } from \"./Options/Classes/Interactivity/Events/ResizeEvent\";\n","export class AbsorberSizeLimit {\n constructor() {\n this.radius = 0;\n this.mass = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.mass !== undefined) {\n this.mass = data.mass;\n }\n if (data.radius !== undefined) {\n this.radius = data.radius;\n }\n }\n}\n","import { AbsorberSizeLimit } from \"./AbsorberSizeLimit\";\nimport { ValueWithRandom } from \"tsparticles-engine\";\nexport class AbsorberSize extends ValueWithRandom {\n constructor() {\n super();\n this.density = 5;\n this.value = 50;\n this.limit = new AbsorberSizeLimit();\n }\n load(data) {\n if (!data) {\n return;\n }\n super.load(data);\n if (data.density !== undefined) {\n this.density = data.density;\n }\n if (typeof data.limit === \"number\") {\n this.limit.radius = data.limit;\n }\n else {\n this.limit.load(data.limit);\n }\n }\n}\n","import { OptionsColor, setRangeValue } from \"tsparticles-engine\";\nimport { AbsorberSize } from \"./AbsorberSize\";\nexport class Absorber {\n constructor() {\n this.color = new OptionsColor();\n this.color.value = \"#000000\";\n this.draggable = false;\n this.opacity = 1;\n this.destroy = true;\n this.orbits = false;\n this.size = new AbsorberSize();\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.color !== undefined) {\n this.color = OptionsColor.create(this.color, data.color);\n }\n if (data.draggable !== undefined) {\n this.draggable = data.draggable;\n }\n this.name = data.name;\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n if (data.position !== undefined) {\n this.position = {};\n if (data.position.x !== undefined) {\n this.position.x = setRangeValue(data.position.x);\n }\n if (data.position.y !== undefined) {\n this.position.y = setRangeValue(data.position.y);\n }\n }\n if (data.size !== undefined) {\n this.size.load(data.size);\n }\n if (data.destroy !== undefined) {\n this.destroy = data.destroy;\n }\n if (data.orbits !== undefined) {\n this.orbits = data.orbits;\n }\n }\n}\n","import { Vector, calcPositionOrRandomFromSize, calcPositionOrRandomFromSizeRanged, getDistance, getDistances, getRandom, getRangeValue, getStyleFromRgb, isPointInside, rangeColorToRgb, } from \"tsparticles-engine\";\nimport { Absorber } from \"./Options/Classes/Absorber\";\nexport class AbsorberInstance {\n constructor(absorbers, container, options, position) {\n var _a, _b, _c;\n this.absorbers = absorbers;\n this.container = container;\n this.initialPosition = position ? Vector.create(position.x, position.y) : undefined;\n if (options instanceof Absorber) {\n this.options = options;\n }\n else {\n this.options = new Absorber();\n this.options.load(options);\n }\n this.dragging = false;\n this.name = this.options.name;\n this.opacity = this.options.opacity;\n this.size = getRangeValue(this.options.size.value) * container.retina.pixelRatio;\n this.mass = this.size * this.options.size.density * container.retina.reduceFactor;\n const limit = this.options.size.limit;\n this.limit = {\n radius: limit.radius * container.retina.pixelRatio * container.retina.reduceFactor,\n mass: limit.mass,\n };\n this.color = (_a = rangeColorToRgb(this.options.color)) !== null && _a !== void 0 ? _a : {\n b: 0,\n g: 0,\n r: 0,\n };\n this.position = (_c = (_b = this.initialPosition) === null || _b === void 0 ? void 0 : _b.copy()) !== null && _c !== void 0 ? _c : this.calcPosition();\n }\n attract(particle) {\n const container = this.container, options = this.options;\n if (options.draggable) {\n const mouse = container.interactivity.mouse;\n if (mouse.clicking && mouse.downPosition) {\n const mouseDist = getDistance(this.position, mouse.downPosition);\n if (mouseDist <= this.size) {\n this.dragging = true;\n }\n }\n else {\n this.dragging = false;\n }\n if (this.dragging && mouse.position) {\n this.position.x = mouse.position.x;\n this.position.y = mouse.position.y;\n }\n }\n const pos = particle.getPosition(), { dx, dy, distance } = getDistances(this.position, pos), v = Vector.create(dx, dy);\n v.length = (this.mass / Math.pow(distance, 2)) * container.retina.reduceFactor;\n if (distance < this.size + particle.getRadius()) {\n const sizeFactor = particle.getRadius() * 0.033 * container.retina.pixelRatio;\n if ((this.size > particle.getRadius() && distance < this.size - particle.getRadius()) ||\n (particle.absorberOrbit !== undefined && particle.absorberOrbit.length < 0)) {\n if (options.destroy) {\n particle.destroy();\n }\n else {\n particle.needsNewPosition = true;\n this.updateParticlePosition(particle, v);\n }\n }\n else {\n if (options.destroy) {\n particle.size.value -= sizeFactor;\n }\n this.updateParticlePosition(particle, v);\n }\n if (this.limit.radius <= 0 || this.size < this.limit.radius) {\n this.size += sizeFactor;\n }\n if (this.limit.mass <= 0 || this.mass < this.limit.mass) {\n this.mass += sizeFactor * this.options.size.density * container.retina.reduceFactor;\n }\n }\n else {\n this.updateParticlePosition(particle, v);\n }\n }\n draw(context) {\n context.translate(this.position.x, this.position.y);\n context.beginPath();\n context.arc(0, 0, this.size, 0, Math.PI * 2, false);\n context.closePath();\n context.fillStyle = getStyleFromRgb(this.color, this.opacity);\n context.fill();\n }\n resize() {\n const initialPosition = this.initialPosition;\n this.position =\n initialPosition && isPointInside(initialPosition, this.container.canvas.size, Vector.origin)\n ? initialPosition\n : this.calcPosition();\n }\n calcPosition() {\n const exactPosition = calcPositionOrRandomFromSizeRanged({\n size: this.container.canvas.size,\n position: this.options.position,\n });\n return Vector.create(exactPosition.x, exactPosition.y);\n }\n updateParticlePosition(particle, v) {\n var _a;\n if (particle.destroyed) {\n return;\n }\n const container = this.container, canvasSize = container.canvas.size;\n if (particle.needsNewPosition) {\n const newPosition = calcPositionOrRandomFromSize({ size: canvasSize });\n particle.position.setTo(newPosition);\n particle.velocity.setTo(particle.initialVelocity);\n particle.absorberOrbit = undefined;\n particle.needsNewPosition = false;\n }\n if (this.options.orbits) {\n if (particle.absorberOrbit === undefined) {\n particle.absorberOrbit = Vector.create(0, 0);\n particle.absorberOrbit.length = getDistance(particle.getPosition(), this.position);\n particle.absorberOrbit.angle = getRandom() * Math.PI * 2;\n }\n if (particle.absorberOrbit.length <= this.size && !this.options.destroy) {\n const minSize = Math.min(canvasSize.width, canvasSize.height);\n particle.absorberOrbit.length = minSize * (1 + (getRandom() * 0.2 - 0.1));\n }\n if (particle.absorberOrbitDirection === undefined) {\n particle.absorberOrbitDirection =\n particle.velocity.x >= 0 ? \"clockwise\" : \"counter-clockwise\";\n }\n const orbitRadius = particle.absorberOrbit.length, orbitAngle = particle.absorberOrbit.angle, orbitDirection = particle.absorberOrbitDirection;\n particle.velocity.setTo(Vector.origin);\n const updateFunc = {\n x: orbitDirection === \"clockwise\" ? Math.cos : Math.sin,\n y: orbitDirection === \"clockwise\" ? Math.sin : Math.cos,\n };\n particle.position.x = this.position.x + orbitRadius * updateFunc.x(orbitAngle);\n particle.position.y = this.position.y + orbitRadius * updateFunc.y(orbitAngle);\n particle.absorberOrbit.length -= v.length;\n particle.absorberOrbit.angle +=\n ((((_a = particle.retina.moveSpeed) !== null && _a !== void 0 ? _a : 0) * container.retina.pixelRatio) / 100) *\n container.retina.reduceFactor;\n }\n else {\n const addV = Vector.origin;\n addV.length = v.length;\n addV.angle = v.angle;\n particle.velocity.addTo(addV);\n }\n }\n}\n","import { executeOnSingleOrMultiple, itemFromSingleOrMultiple } from \"tsparticles-engine\";\nimport { AbsorberInstance } from \"./AbsorberInstance\";\nexport class Absorbers {\n constructor(container) {\n this.container = container;\n this.array = [];\n this.absorbers = [];\n this.interactivityAbsorbers = [];\n container.getAbsorber = (idxOrName) => idxOrName === undefined || typeof idxOrName === \"number\"\n ? this.array[idxOrName || 0]\n : this.array.find((t) => t.name === idxOrName);\n container.addAbsorber = (options, position) => this.addAbsorber(options, position);\n }\n addAbsorber(options, position) {\n const absorber = new AbsorberInstance(this, this.container, options, position);\n this.array.push(absorber);\n return absorber;\n }\n draw(context) {\n for (const absorber of this.array) {\n absorber.draw(context);\n }\n }\n handleClickMode(mode) {\n const absorberOptions = this.absorbers, modeAbsorbers = this.interactivityAbsorbers;\n if (mode === \"absorber\") {\n const absorbersModeOptions = itemFromSingleOrMultiple(modeAbsorbers), absorbersOptions = absorbersModeOptions !== null && absorbersModeOptions !== void 0 ? absorbersModeOptions : itemFromSingleOrMultiple(absorberOptions), aPosition = this.container.interactivity.mouse.clickPosition;\n this.addAbsorber(absorbersOptions, aPosition);\n }\n }\n async init() {\n this.absorbers = this.container.actualOptions.absorbers;\n this.interactivityAbsorbers = this.container.actualOptions.interactivity.modes.absorbers;\n executeOnSingleOrMultiple(this.absorbers, (absorber) => {\n this.addAbsorber(absorber);\n });\n }\n particleUpdate(particle) {\n for (const absorber of this.array) {\n absorber.attract(particle);\n if (particle.destroyed) {\n break;\n }\n }\n }\n removeAbsorber(absorber) {\n const index = this.array.indexOf(absorber);\n if (index >= 0) {\n this.array.splice(index, 1);\n }\n }\n resize() {\n for (const absorber of this.array) {\n absorber.resize();\n }\n }\n stop() {\n this.array = [];\n }\n}\n","import { executeOnSingleOrMultiple, isInArray } from \"tsparticles-engine\";\nimport { Absorber } from \"./Options/Classes/Absorber\";\nimport { Absorbers } from \"./Absorbers\";\nclass AbsorbersPlugin {\n constructor() {\n this.id = \"absorbers\";\n }\n getPlugin(container) {\n return new Absorbers(container);\n }\n loadOptions(options, source) {\n var _a, _b;\n if (!this.needsPlugin(options) && !this.needsPlugin(source)) {\n return;\n }\n if (source === null || source === void 0 ? void 0 : source.absorbers) {\n options.absorbers = executeOnSingleOrMultiple(source.absorbers, (absorber) => {\n const tmp = new Absorber();\n tmp.load(absorber);\n return tmp;\n });\n }\n options.interactivity.modes.absorbers = executeOnSingleOrMultiple((_b = (_a = source === null || source === void 0 ? void 0 : source.interactivity) === null || _a === void 0 ? void 0 : _a.modes) === null || _b === void 0 ? void 0 : _b.absorbers, (absorber) => {\n const tmp = new Absorber();\n tmp.load(absorber);\n return tmp;\n });\n }\n needsPlugin(options) {\n var _a, _b, _c;\n if (!options) {\n return false;\n }\n const absorbers = options.absorbers;\n if (absorbers instanceof Array) {\n return !!absorbers.length;\n }\n else if (absorbers) {\n return true;\n }\n else if (((_c = (_b = (_a = options.interactivity) === null || _a === void 0 ? void 0 : _a.events) === null || _b === void 0 ? void 0 : _b.onClick) === null || _c === void 0 ? void 0 : _c.mode) &&\n isInArray(\"absorber\", options.interactivity.events.onClick.mode)) {\n return true;\n }\n return false;\n }\n}\nexport async function loadAbsorbersPlugin(engine) {\n const plugin = new AbsorbersPlugin();\n await engine.addPlugin(plugin);\n}\nexport * from \"./AbsorberContainer\";\nexport * from \"./Enums/AbsorberClickMode\";\n","import { setRangeValue } from \"tsparticles-engine\";\nexport class DestroyBounds {\n load(data) {\n if (!data) {\n return;\n }\n if (data.bottom !== undefined) {\n this.bottom = setRangeValue(data.bottom);\n }\n if (data.left !== undefined) {\n this.left = setRangeValue(data.left);\n }\n if (data.right !== undefined) {\n this.right = setRangeValue(data.right);\n }\n if (data.top !== undefined) {\n this.top = setRangeValue(data.top);\n }\n }\n}\n","import { ValueWithRandom } from \"tsparticles-engine\";\nexport class SplitFactor extends ValueWithRandom {\n constructor() {\n super();\n this.value = 3;\n }\n}\n","import { ValueWithRandom } from \"tsparticles-engine\";\nexport class SplitRate extends ValueWithRandom {\n constructor() {\n super();\n this.value = { min: 4, max: 9 };\n }\n}\n","import { deepExtend, executeOnSingleOrMultiple } from \"tsparticles-engine\";\nimport { SplitFactor } from \"./SplitFactor\";\nimport { SplitRate } from \"./SplitRate\";\nexport class Split {\n constructor() {\n this.count = 1;\n this.factor = new SplitFactor();\n this.rate = new SplitRate();\n this.sizeOffset = true;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.count !== undefined) {\n this.count = data.count;\n }\n this.factor.load(data.factor);\n this.rate.load(data.rate);\n this.particles = executeOnSingleOrMultiple(data.particles, (particles) => {\n return deepExtend({}, particles);\n });\n if (data.sizeOffset !== undefined) {\n this.sizeOffset = data.sizeOffset;\n }\n }\n}\n","import { DestroyBounds } from \"./DestroyBounds\";\nimport { Split } from \"./Split\";\nexport class Destroy {\n constructor() {\n this.bounds = new DestroyBounds();\n this.mode = \"none\";\n this.split = new Split();\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.mode) {\n this.mode = data.mode;\n }\n if (data.bounds) {\n this.bounds.load(data.bounds);\n }\n this.split.load(data.split);\n }\n}\n","import { getRangeValue, getValue, itemFromSingleOrMultiple, loadParticlesOptions, randomInRange, setRangeValue, } from \"tsparticles-engine\";\nimport { Destroy } from \"./Options/Classes/Destroy\";\nexport class DestroyUpdater {\n constructor(engine, container) {\n this.engine = engine;\n this.container = container;\n }\n init(particle) {\n const container = this.container, particlesOptions = particle.options, destroyOptions = particlesOptions.destroy;\n if (!destroyOptions) {\n return;\n }\n particle.splitCount = 0;\n const destroyBounds = destroyOptions.bounds;\n if (!particle.destroyBounds) {\n particle.destroyBounds = {};\n }\n if (destroyBounds.bottom) {\n particle.destroyBounds.bottom = (getRangeValue(destroyBounds.bottom) * container.canvas.size.height) / 100;\n }\n if (destroyBounds.left) {\n particle.destroyBounds.left = (getRangeValue(destroyBounds.left) * container.canvas.size.width) / 100;\n }\n if (destroyBounds.right) {\n particle.destroyBounds.right = (getRangeValue(destroyBounds.right) * container.canvas.size.width) / 100;\n }\n if (destroyBounds.top) {\n particle.destroyBounds.top = (getRangeValue(destroyBounds.top) * container.canvas.size.height) / 100;\n }\n }\n isEnabled(particle) {\n return !particle.destroyed;\n }\n loadOptions(options, ...sources) {\n if (!options.destroy) {\n options.destroy = new Destroy();\n }\n for (const source of sources) {\n options.destroy.load(source === null || source === void 0 ? void 0 : source.destroy);\n }\n }\n particleDestroyed(particle, override) {\n if (override) {\n return;\n }\n const destroyOptions = particle.options.destroy;\n if (destroyOptions && destroyOptions.mode === \"split\") {\n this.split(particle);\n }\n }\n update(particle) {\n if (!this.isEnabled(particle)) {\n return;\n }\n const position = particle.getPosition(), bounds = particle.destroyBounds;\n if (!bounds) {\n return;\n }\n if ((bounds.bottom !== undefined && position.y >= bounds.bottom) ||\n (bounds.left !== undefined && position.x <= bounds.left) ||\n (bounds.right !== undefined && position.x >= bounds.right) ||\n (bounds.top !== undefined && position.y <= bounds.top)) {\n particle.destroy();\n }\n }\n addSplitParticle(parent, splitParticlesOptions) {\n const destroyOptions = parent.options.destroy;\n if (!destroyOptions) {\n return;\n }\n const splitOptions = destroyOptions.split, options = loadParticlesOptions(this.engine, this.container, parent.options), factor = getValue(splitOptions.factor);\n options.color.load({\n value: {\n hsl: parent.getFillColor(),\n },\n });\n options.move.load({\n center: {\n x: parent.position.x,\n y: parent.position.y,\n mode: \"precise\",\n },\n });\n if (typeof options.size.value === \"number\") {\n options.size.value /= factor;\n }\n else {\n options.size.value.min /= factor;\n options.size.value.max /= factor;\n }\n options.load(splitParticlesOptions);\n const offset = splitOptions.sizeOffset ? setRangeValue(-parent.size.value, parent.size.value) : 0, position = {\n x: parent.position.x + randomInRange(offset),\n y: parent.position.y + randomInRange(offset),\n };\n return this.container.particles.addParticle(position, options, parent.group, (particle) => {\n var _a;\n if (particle.size.value < 0.5) {\n return false;\n }\n particle.velocity.length = randomInRange(setRangeValue(parent.velocity.length, particle.velocity.length));\n particle.splitCount = ((_a = parent.splitCount) !== null && _a !== void 0 ? _a : 0) + 1;\n particle.unbreakable = true;\n setTimeout(() => {\n particle.unbreakable = false;\n }, 500);\n return true;\n });\n }\n split(particle) {\n const destroyOptions = particle.options.destroy;\n if (!destroyOptions) {\n return;\n }\n const splitOptions = destroyOptions.split;\n if (splitOptions.count >= 0 &&\n (particle.splitCount === undefined || particle.splitCount++ > splitOptions.count)) {\n return;\n }\n const rate = getValue(splitOptions.rate), particlesSplitOptions = itemFromSingleOrMultiple(splitOptions.particles);\n for (let i = 0; i < rate; i++) {\n this.addSplitParticle(particle, particlesSplitOptions);\n }\n }\n}\n","import { DestroyUpdater } from \"./DestroyUpdater\";\nexport async function loadDestroyUpdater(engine) {\n await engine.addParticleUpdater(\"destroy\", (container) => new DestroyUpdater(engine, container));\n}\n","import { getRandom } from \"tsparticles-engine\";\nexport class CircleShape {\n randomPosition(position, size, fill) {\n const generateTheta = (x, y) => {\n const u = getRandom() / 4.0, theta = Math.atan((y / x) * Math.tan(2 * Math.PI * u)), v = getRandom();\n if (v < 0.25) {\n return theta;\n }\n else if (v < 0.5) {\n return Math.PI - theta;\n }\n else if (v < 0.75) {\n return Math.PI + theta;\n }\n else {\n return -theta;\n }\n }, radius = (x, y, theta) => (x * y) / Math.sqrt((y * Math.cos(theta)) ** 2 + (x * Math.sin(theta)) ** 2), [a, b] = [size.width / 2, size.height / 2], randomTheta = generateTheta(a, b), maxRadius = radius(a, b, randomTheta), randomRadius = fill ? maxRadius * Math.sqrt(getRandom()) : maxRadius;\n return {\n x: position.x + randomRadius * Math.cos(randomTheta),\n y: position.y + randomRadius * Math.sin(randomTheta),\n };\n }\n}\n","export class EmitterLife {\n constructor() {\n this.wait = false;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.count !== undefined) {\n this.count = data.count;\n }\n if (data.delay !== undefined) {\n this.delay = data.delay;\n }\n if (data.duration !== undefined) {\n this.duration = data.duration;\n }\n if (data.wait !== undefined) {\n this.wait = data.wait;\n }\n }\n}\n","import { setRangeValue } from \"tsparticles-engine\";\nexport class EmitterRate {\n constructor() {\n this.quantity = 1;\n this.delay = 0.1;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.quantity !== undefined) {\n this.quantity = setRangeValue(data.quantity);\n }\n if (data.delay !== undefined) {\n this.delay = setRangeValue(data.delay);\n }\n }\n}\n","export class EmitterSize {\n constructor() {\n this.mode = \"percent\";\n this.height = 0;\n this.width = 0;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n if (data.height !== undefined) {\n this.height = data.height;\n }\n if (data.width !== undefined) {\n this.width = data.width;\n }\n }\n}\n","import { AnimatableColor, deepExtend, executeOnSingleOrMultiple, setRangeValue } from \"tsparticles-engine\";\nimport { EmitterLife } from \"./EmitterLife\";\nimport { EmitterRate } from \"./EmitterRate\";\nimport { EmitterSize } from \"./EmitterSize\";\nexport class Emitter {\n constructor() {\n this.autoPlay = true;\n this.fill = true;\n this.life = new EmitterLife();\n this.rate = new EmitterRate();\n this.shape = \"square\";\n this.startCount = 0;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.autoPlay !== undefined) {\n this.autoPlay = data.autoPlay;\n }\n if (data.size !== undefined) {\n if (this.size === undefined) {\n this.size = new EmitterSize();\n }\n this.size.load(data.size);\n }\n if (data.direction !== undefined) {\n this.direction = data.direction;\n }\n this.domId = data.domId;\n if (data.fill !== undefined) {\n this.fill = data.fill;\n }\n this.life.load(data.life);\n this.name = data.name;\n this.particles = executeOnSingleOrMultiple(data.particles, (particles) => {\n return deepExtend({}, particles);\n });\n this.rate.load(data.rate);\n if (data.shape !== undefined) {\n this.shape = data.shape;\n }\n if (data.position !== undefined) {\n this.position = {};\n if (data.position.x !== undefined) {\n this.position.x = setRangeValue(data.position.x);\n }\n if (data.position.y !== undefined) {\n this.position.y = setRangeValue(data.position.y);\n }\n }\n if (data.spawnColor !== undefined) {\n if (this.spawnColor === undefined) {\n this.spawnColor = new AnimatableColor();\n }\n this.spawnColor.load(data.spawnColor);\n }\n if (data.startCount !== undefined) {\n this.startCount = data.startCount;\n }\n }\n}\n","import { Vector, calcPositionOrRandomFromSizeRanged, deepExtend, getRangeValue, isPointInside, itemFromSingleOrMultiple, randomInRange, rangeColorToHsl, } from \"tsparticles-engine\";\nimport { Emitter } from \"./Options/Classes/Emitter\";\nimport { EmitterSize } from \"./Options/Classes/EmitterSize\";\nexport class EmitterInstance {\n constructor(engine, emitters, container, options, position) {\n var _a, _b, _c, _d, _e, _f, _g;\n var _h;\n this.emitters = emitters;\n this.container = container;\n this._engine = engine;\n this._currentDuration = 0;\n this._currentEmitDelay = 0;\n this._currentSpawnDelay = 0;\n this._initialPosition = position;\n if (options instanceof Emitter) {\n this.options = options;\n }\n else {\n this.options = new Emitter();\n this.options.load(options);\n }\n this._spawnDelay = (((_a = this.options.life.delay) !== null && _a !== void 0 ? _a : 0) * 1000) / this.container.retina.reduceFactor;\n this.position = (_b = this._initialPosition) !== null && _b !== void 0 ? _b : this.calcPosition();\n this.name = this.options.name;\n this._shape = (_c = this._engine.emitterShapeManager) === null || _c === void 0 ? void 0 : _c.getShape(this.options.shape);\n this.fill = this.options.fill;\n this._firstSpawn = !this.options.life.wait;\n this._startParticlesAdded = false;\n let particlesOptions = deepExtend({}, this.options.particles);\n particlesOptions !== null && particlesOptions !== void 0 ? particlesOptions : (particlesOptions = {});\n (_d = particlesOptions.move) !== null && _d !== void 0 ? _d : (particlesOptions.move = {});\n (_e = (_h = particlesOptions.move).direction) !== null && _e !== void 0 ? _e : (_h.direction = this.options.direction);\n if (this.options.spawnColor) {\n this.spawnColor = rangeColorToHsl(this.options.spawnColor);\n }\n this._paused = !this.options.autoPlay;\n this._particlesOptions = particlesOptions;\n this.size =\n (_f = this.options.size) !== null && _f !== void 0 ? _f : (() => {\n const size = new EmitterSize();\n size.load({\n height: 0,\n mode: \"percent\",\n width: 0,\n });\n return size;\n })();\n this._lifeCount = (_g = this.options.life.count) !== null && _g !== void 0 ? _g : -1;\n this._immortal = this._lifeCount <= 0;\n this._engine.dispatchEvent(\"emitterCreated\", {\n container,\n data: {\n emitter: this,\n },\n });\n this.play();\n }\n externalPause() {\n this._paused = true;\n this.pause();\n }\n externalPlay() {\n this._paused = false;\n this.play();\n }\n getPosition() {\n if (this.options.domId) {\n const container = this.container, element = document.getElementById(this.options.domId);\n if (element) {\n const elRect = element.getBoundingClientRect();\n return {\n x: (elRect.x + elRect.width / 2) * container.retina.pixelRatio,\n y: (elRect.y + elRect.height / 2) * container.retina.pixelRatio,\n };\n }\n }\n return this.position;\n }\n getSize() {\n const container = this.container;\n if (this.options.domId) {\n const element = document.getElementById(this.options.domId);\n if (element) {\n const elRect = element.getBoundingClientRect();\n return {\n width: elRect.width * container.retina.pixelRatio,\n height: elRect.height * container.retina.pixelRatio,\n };\n }\n }\n return {\n width: this.size.mode === \"percent\"\n ? (container.canvas.size.width * this.size.width) / 100\n : this.size.width,\n height: this.size.mode === \"percent\"\n ? (container.canvas.size.height * this.size.height) / 100\n : this.size.height,\n };\n }\n pause() {\n if (this._paused) {\n return;\n }\n delete this._emitDelay;\n }\n play() {\n var _a;\n if (this._paused) {\n return;\n }\n if (!(this.container.retina.reduceFactor &&\n (this._lifeCount > 0 || this._immortal || !this.options.life.count) &&\n (this._firstSpawn || this._currentSpawnDelay >= ((_a = this._spawnDelay) !== null && _a !== void 0 ? _a : 0)))) {\n return;\n }\n if (this._emitDelay === undefined) {\n const delay = getRangeValue(this.options.rate.delay);\n this._emitDelay = (1000 * delay) / this.container.retina.reduceFactor;\n }\n if (this._lifeCount > 0 || this._immortal) {\n this.prepareToDie();\n }\n }\n resize() {\n const initialPosition = this._initialPosition;\n this.position =\n initialPosition && isPointInside(initialPosition, this.container.canvas.size, Vector.origin)\n ? initialPosition\n : this.calcPosition();\n }\n update(delta) {\n var _a, _b, _c;\n if (this._paused) {\n return;\n }\n if (this._firstSpawn) {\n this._firstSpawn = false;\n this._currentSpawnDelay = (_a = this._spawnDelay) !== null && _a !== void 0 ? _a : 0;\n this._currentEmitDelay = (_b = this._emitDelay) !== null && _b !== void 0 ? _b : 0;\n }\n if (!this._startParticlesAdded) {\n this._startParticlesAdded = true;\n this.emitParticles(this.options.startCount);\n }\n if (this._duration !== undefined) {\n this._currentDuration += delta.value;\n if (this._currentDuration >= this._duration) {\n this.pause();\n if (this._spawnDelay !== undefined) {\n delete this._spawnDelay;\n }\n if (!this._immortal) {\n this._lifeCount--;\n }\n if (this._lifeCount > 0 || this._immortal) {\n this.position = this.calcPosition();\n this._spawnDelay = (((_c = this.options.life.delay) !== null && _c !== void 0 ? _c : 0) * 1000) / this.container.retina.reduceFactor;\n }\n else {\n this.destroy();\n }\n this._currentDuration -= this._duration;\n delete this._duration;\n }\n }\n if (this._spawnDelay !== undefined) {\n this._currentSpawnDelay += delta.value;\n if (this._currentSpawnDelay >= this._spawnDelay) {\n this._engine.dispatchEvent(\"emitterPlay\", {\n container: this.container,\n });\n this.play();\n this._currentSpawnDelay -= this._currentSpawnDelay;\n delete this._spawnDelay;\n }\n }\n if (this._emitDelay !== undefined) {\n this._currentEmitDelay += delta.value;\n if (this._currentEmitDelay >= this._emitDelay) {\n this.emit();\n this._currentEmitDelay -= this._emitDelay;\n }\n }\n }\n calcPosition() {\n return calcPositionOrRandomFromSizeRanged({\n size: this.container.canvas.size,\n position: this.options.position,\n });\n }\n destroy() {\n this.emitters.removeEmitter(this);\n this._engine.dispatchEvent(\"emitterDestroyed\", {\n container: this.container,\n data: {\n emitter: this,\n },\n });\n }\n emit() {\n if (this._paused) {\n return;\n }\n const quantity = getRangeValue(this.options.rate.quantity);\n this.emitParticles(quantity);\n }\n emitParticles(quantity) {\n var _a, _b, _c;\n const position = this.getPosition(), size = this.getSize(), singleParticlesOptions = itemFromSingleOrMultiple(this._particlesOptions);\n for (let i = 0; i < quantity; i++) {\n const particlesOptions = deepExtend({}, singleParticlesOptions);\n if (this.spawnColor) {\n const hslAnimation = (_a = this.options.spawnColor) === null || _a === void 0 ? void 0 : _a.animation;\n if (hslAnimation) {\n this.spawnColor.h = this.setColorAnimation(hslAnimation.h, this.spawnColor.h, 360);\n this.spawnColor.s = this.setColorAnimation(hslAnimation.s, this.spawnColor.s, 100);\n this.spawnColor.l = this.setColorAnimation(hslAnimation.l, this.spawnColor.l, 100);\n }\n if (!particlesOptions.color) {\n particlesOptions.color = {\n value: this.spawnColor,\n };\n }\n else {\n particlesOptions.color.value = this.spawnColor;\n }\n }\n if (!position) {\n return;\n }\n const pPosition = (_c = (_b = this._shape) === null || _b === void 0 ? void 0 : _b.randomPosition(position, size, this.fill)) !== null && _c !== void 0 ? _c : position;\n this.container.particles.addParticle(pPosition, particlesOptions);\n }\n }\n prepareToDie() {\n var _a;\n if (this._paused) {\n return;\n }\n const duration = (_a = this.options.life) === null || _a === void 0 ? void 0 : _a.duration;\n if (this.container.retina.reduceFactor &&\n (this._lifeCount > 0 || this._immortal) &&\n duration !== undefined &&\n duration > 0) {\n this._duration = duration * 1000;\n }\n }\n setColorAnimation(animation, initValue, maxValue) {\n var _a;\n const container = this.container;\n if (!animation.enable) {\n return initValue;\n }\n const colorOffset = randomInRange(animation.offset), delay = getRangeValue(this.options.rate.delay), emitFactor = (1000 * delay) / container.retina.reduceFactor, colorSpeed = getRangeValue((_a = animation.speed) !== null && _a !== void 0 ? _a : 0);\n return (initValue + (colorSpeed * container.fpsLimit) / emitFactor + colorOffset * 3.6) % maxValue;\n }\n}\n","import { arrayRandomIndex, executeOnSingleOrMultiple, itemFromArray } from \"tsparticles-engine\";\nimport { Emitter } from \"./Options/Classes/Emitter\";\nimport { EmitterInstance } from \"./EmitterInstance\";\nexport class Emitters {\n constructor(engine, container) {\n this.container = container;\n this._engine = engine;\n this.array = [];\n this.emitters = [];\n this.interactivityEmitters = {\n random: {\n count: 1,\n enable: false,\n },\n value: [],\n };\n container.getEmitter = (idxOrName) => idxOrName === undefined || typeof idxOrName === \"number\"\n ? this.array[idxOrName || 0]\n : this.array.find((t) => t.name === idxOrName);\n container.addEmitter = (options, position) => this.addEmitter(options, position);\n container.removeEmitter = (idxOrName) => {\n const emitter = container.getEmitter(idxOrName);\n if (emitter) {\n this.removeEmitter(emitter);\n }\n };\n container.playEmitter = (idxOrName) => {\n const emitter = container.getEmitter(idxOrName);\n if (emitter) {\n emitter.externalPlay();\n }\n };\n container.pauseEmitter = (idxOrName) => {\n const emitter = container.getEmitter(idxOrName);\n if (emitter) {\n emitter.externalPause();\n }\n };\n }\n addEmitter(options, position) {\n const emitterOptions = new Emitter();\n emitterOptions.load(options);\n const emitter = new EmitterInstance(this._engine, this, this.container, emitterOptions, position);\n this.array.push(emitter);\n return emitter;\n }\n handleClickMode(mode) {\n const emitterOptions = this.emitters, modeEmitters = this.interactivityEmitters;\n if (mode === \"emitter\") {\n let emittersModeOptions;\n if (modeEmitters && modeEmitters.value instanceof Array) {\n if (modeEmitters.value.length > 0 && modeEmitters.random.enable) {\n emittersModeOptions = [];\n const usedIndexes = [];\n for (let i = 0; i < modeEmitters.random.count; i++) {\n const idx = arrayRandomIndex(modeEmitters.value);\n if (usedIndexes.includes(idx) && usedIndexes.length < modeEmitters.value.length) {\n i--;\n continue;\n }\n usedIndexes.push(idx);\n emittersModeOptions.push(itemFromArray(modeEmitters.value, idx));\n }\n }\n else {\n emittersModeOptions = modeEmitters.value;\n }\n }\n else {\n emittersModeOptions = modeEmitters === null || modeEmitters === void 0 ? void 0 : modeEmitters.value;\n }\n const emittersOptions = emittersModeOptions !== null && emittersModeOptions !== void 0 ? emittersModeOptions : emitterOptions, ePosition = this.container.interactivity.mouse.clickPosition;\n executeOnSingleOrMultiple(emittersOptions, (emitter) => {\n this.addEmitter(emitter, ePosition);\n });\n }\n }\n async init() {\n this.emitters = this.container.actualOptions.emitters;\n this.interactivityEmitters = this.container.actualOptions.interactivity.modes.emitters;\n if (this.emitters instanceof Array) {\n for (const emitterOptions of this.emitters) {\n this.addEmitter(emitterOptions);\n }\n }\n else {\n this.addEmitter(this.emitters);\n }\n }\n pause() {\n for (const emitter of this.array) {\n emitter.pause();\n }\n }\n play() {\n for (const emitter of this.array) {\n emitter.play();\n }\n }\n removeEmitter(emitter) {\n const index = this.array.indexOf(emitter);\n if (index >= 0) {\n this.array.splice(index, 1);\n }\n }\n resize() {\n for (const emitter of this.array) {\n emitter.resize();\n }\n }\n stop() {\n this.array = [];\n }\n update(delta) {\n for (const emitter of this.array) {\n emitter.update(delta);\n }\n }\n}\n","const shapes = new Map();\nexport class ShapeManager {\n constructor(engine) {\n this._engine = engine;\n }\n addShape(name, drawer) {\n if (!this.getShape(name)) {\n shapes.set(name, drawer);\n }\n }\n getShape(name) {\n return shapes.get(name);\n }\n getSupportedShapes() {\n return shapes.keys();\n }\n}\n","import { getRandom } from \"tsparticles-engine\";\nfunction randomSquareCoordinate(position, offset) {\n return position + offset * (getRandom() - 0.5);\n}\nexport class SquareShape {\n randomPosition(position, size, fill) {\n if (fill) {\n return {\n x: randomSquareCoordinate(position.x, size.width),\n y: randomSquareCoordinate(position.y, size.height),\n };\n }\n else {\n const halfW = size.width / 2, halfH = size.height / 2, side = Math.floor(getRandom() * 4), v = (getRandom() - 0.5) * 2;\n switch (side) {\n case 0:\n return {\n x: position.x + v * halfW,\n y: position.y - halfH,\n };\n case 1:\n return {\n x: position.x - halfW,\n y: position.y + v * halfH,\n };\n case 2:\n return {\n x: position.x + v * halfW,\n y: position.y + halfH,\n };\n case 3:\n default:\n return {\n x: position.x + halfW,\n y: position.y + v * halfH,\n };\n }\n }\n }\n}\n","import { executeOnSingleOrMultiple, isInArray } from \"tsparticles-engine\";\nimport { CircleShape } from \"./Shapes/Circle/CircleShape\";\nimport { Emitter } from \"./Options/Classes/Emitter\";\nimport { Emitters } from \"./Emitters\";\nimport { ShapeManager } from \"./ShapeManager\";\nimport { SquareShape } from \"./Shapes/Square/SquareShape\";\nclass EmittersPlugin {\n constructor(engine) {\n this._engine = engine;\n this.id = \"emitters\";\n }\n getPlugin(container) {\n return new Emitters(this._engine, container);\n }\n loadOptions(options, source) {\n var _a, _b, _c, _d, _e, _f;\n if (!this.needsPlugin(options) && !this.needsPlugin(source)) {\n return;\n }\n if (source === null || source === void 0 ? void 0 : source.emitters) {\n options.emitters = executeOnSingleOrMultiple(source.emitters, (emitter) => {\n const tmp = new Emitter();\n tmp.load(emitter);\n return tmp;\n });\n }\n const interactivityEmitters = (_b = (_a = source === null || source === void 0 ? void 0 : source.interactivity) === null || _a === void 0 ? void 0 : _a.modes) === null || _b === void 0 ? void 0 : _b.emitters;\n if (interactivityEmitters) {\n if (interactivityEmitters instanceof Array) {\n options.interactivity.modes.emitters = {\n random: {\n count: 1,\n enable: true,\n },\n value: interactivityEmitters.map((s) => {\n const tmp = new Emitter();\n tmp.load(s);\n return tmp;\n }),\n };\n }\n else {\n const emitterMode = interactivityEmitters;\n if (emitterMode.value !== undefined) {\n if (emitterMode.value instanceof Array) {\n options.interactivity.modes.emitters = {\n random: {\n count: (_c = emitterMode.random.count) !== null && _c !== void 0 ? _c : 1,\n enable: (_d = emitterMode.random.enable) !== null && _d !== void 0 ? _d : false,\n },\n value: emitterMode.value.map((s) => {\n const tmp = new Emitter();\n tmp.load(s);\n return tmp;\n }),\n };\n }\n else {\n const tmp = new Emitter();\n tmp.load(emitterMode.value);\n options.interactivity.modes.emitters = {\n random: {\n count: (_e = emitterMode.random.count) !== null && _e !== void 0 ? _e : 1,\n enable: (_f = emitterMode.random.enable) !== null && _f !== void 0 ? _f : false,\n },\n value: tmp,\n };\n }\n }\n else {\n const emitterOptions = (options.interactivity.modes.emitters = {\n random: {\n count: 1,\n enable: false,\n },\n value: new Emitter(),\n });\n emitterOptions.value.load(interactivityEmitters);\n }\n }\n }\n }\n needsPlugin(options) {\n var _a, _b, _c;\n if (!options) {\n return false;\n }\n const emitters = options.emitters;\n return ((emitters instanceof Array && !!emitters.length) ||\n emitters !== undefined ||\n (!!((_c = (_b = (_a = options.interactivity) === null || _a === void 0 ? void 0 : _a.events) === null || _b === void 0 ? void 0 : _b.onClick) === null || _c === void 0 ? void 0 : _c.mode) &&\n isInArray(\"emitter\", options.interactivity.events.onClick.mode)));\n }\n}\nexport async function loadEmittersPlugin(engine) {\n if (!engine.emitterShapeManager) {\n engine.emitterShapeManager = new ShapeManager(engine);\n }\n if (!engine.addEmitterShape) {\n engine.addEmitterShape = (name, shape) => {\n var _a;\n (_a = engine.emitterShapeManager) === null || _a === void 0 ? void 0 : _a.addShape(name, shape);\n };\n }\n const plugin = new EmittersPlugin(engine);\n await engine.addPlugin(plugin);\n engine.addEmitterShape(\"circle\", new CircleShape());\n engine.addEmitterShape(\"square\", new SquareShape());\n}\nexport * from \"./EmitterContainer\";\nexport * from \"./EmittersEngine\";\nexport * from \"./Enums/EmitterClickMode\";\nexport * from \"./Enums/EmitterShapeType\";\n","import { deepExtend } from \"tsparticles-engine\";\nexport class Trail {\n constructor() {\n this.delay = 1;\n this.pauseOnStop = false;\n this.quantity = 1;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.delay !== undefined) {\n this.delay = data.delay;\n }\n if (data.quantity !== undefined) {\n this.quantity = data.quantity;\n }\n if (data.particles !== undefined) {\n this.particles = deepExtend({}, data.particles);\n }\n if (data.pauseOnStop !== undefined) {\n this.pauseOnStop = data.pauseOnStop;\n }\n }\n}\n","import { ExternalInteractorBase, isInArray } from \"tsparticles-engine\";\nimport { Trail } from \"./Options/Classes/Trail\";\nexport class TrailMaker extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n this._delay = 0;\n }\n clear() {\n }\n init() {\n }\n async interact(delta) {\n var _a, _b, _c, _d;\n if (!this.container.retina.reduceFactor) {\n return;\n }\n const container = this.container, options = container.actualOptions, trailOptions = options.interactivity.modes.trail;\n if (!trailOptions) {\n return;\n }\n const optDelay = (trailOptions.delay * 1000) / this.container.retina.reduceFactor;\n if (this._delay < optDelay) {\n this._delay += delta.value;\n }\n if (this._delay < optDelay) {\n return;\n }\n let canEmit = true;\n if (trailOptions.pauseOnStop) {\n if (container.interactivity.mouse.position === this._lastPosition ||\n (((_a = container.interactivity.mouse.position) === null || _a === void 0 ? void 0 : _a.x) === ((_b = this._lastPosition) === null || _b === void 0 ? void 0 : _b.x) &&\n ((_c = container.interactivity.mouse.position) === null || _c === void 0 ? void 0 : _c.y) === ((_d = this._lastPosition) === null || _d === void 0 ? void 0 : _d.y))) {\n canEmit = false;\n }\n }\n if (container.interactivity.mouse.position) {\n this._lastPosition = {\n x: container.interactivity.mouse.position.x,\n y: container.interactivity.mouse.position.y,\n };\n }\n else {\n delete this._lastPosition;\n }\n if (canEmit) {\n container.particles.push(trailOptions.quantity, container.interactivity.mouse, trailOptions.particles);\n }\n this._delay -= optDelay;\n }\n isEnabled(particle) {\n var _a;\n const container = this.container, options = container.actualOptions, mouse = container.interactivity.mouse, events = ((_a = particle === null || particle === void 0 ? void 0 : particle.interactivity) !== null && _a !== void 0 ? _a : options.interactivity).events;\n return ((mouse.clicking && mouse.inside && !!mouse.position && isInArray(\"trail\", events.onClick.mode)) ||\n (mouse.inside && !!mouse.position && isInArray(\"trail\", events.onHover.mode)));\n }\n loadModeOptions(options, ...sources) {\n if (!options.trail) {\n options.trail = new Trail();\n }\n for (const source of sources) {\n options.trail.load(source === null || source === void 0 ? void 0 : source.trail);\n }\n }\n reset() {\n }\n}\n","import { TrailMaker } from \"./TrailMaker\";\nexport async function loadExternalTrailInteraction(engine) {\n await engine.addInteractor(\"externalTrail\", (container) => new TrailMaker(container));\n}\nexport * from \"./Options/Classes/Trail\";\nexport * from \"./Options/Interfaces/ITrail\";\n","import { setRangeValue } from \"tsparticles-engine\";\nexport class RollLight {\n constructor() {\n this.enable = false;\n this.value = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.value !== undefined) {\n this.value = setRangeValue(data.value);\n }\n }\n}\n","import { OptionsColor, setRangeValue } from \"tsparticles-engine\";\nimport { RollLight } from \"./RollLight\";\nexport class Roll {\n constructor() {\n this.darken = new RollLight();\n this.enable = false;\n this.enlighten = new RollLight();\n this.mode = \"vertical\";\n this.speed = 25;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.backColor !== undefined) {\n this.backColor = OptionsColor.create(this.backColor, data.backColor);\n }\n this.darken.load(data.darken);\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.enlighten.load(data.enlighten);\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n }\n}\n","import { getRandom, getRangeValue, rangeColorToHsl } from \"tsparticles-engine\";\nimport { Roll } from \"./Options/Classes/Roll\";\nfunction updateRoll(particle, delta) {\n const roll = particle.options.roll;\n if (!particle.roll || !(roll === null || roll === void 0 ? void 0 : roll.enable)) {\n return;\n }\n const speed = particle.roll.speed * delta.factor, max = 2 * Math.PI;\n particle.roll.angle += speed;\n if (particle.roll.angle > max) {\n particle.roll.angle -= max;\n }\n}\nexport class RollUpdater {\n getTransformValues(particle) {\n var _a;\n const roll = ((_a = particle.roll) === null || _a === void 0 ? void 0 : _a.enable) && particle.roll, rollHorizontal = roll && roll.horizontal, rollVertical = roll && roll.vertical;\n return {\n a: rollHorizontal ? Math.cos(roll.angle) : undefined,\n d: rollVertical ? Math.sin(roll.angle) : undefined,\n };\n }\n init(particle) {\n const rollOpt = particle.options.roll;\n if (rollOpt === null || rollOpt === void 0 ? void 0 : rollOpt.enable) {\n particle.roll = {\n enable: rollOpt.enable,\n horizontal: rollOpt.mode === \"horizontal\" || rollOpt.mode === \"both\",\n vertical: rollOpt.mode === \"vertical\" || rollOpt.mode === \"both\",\n angle: getRandom() * Math.PI * 2,\n speed: getRangeValue(rollOpt.speed) / 360,\n };\n if (rollOpt.backColor) {\n particle.backColor = rangeColorToHsl(rollOpt.backColor);\n }\n else if (rollOpt.darken.enable && rollOpt.enlighten.enable) {\n const alterType = getRandom() >= 0.5 ? \"darken\" : \"enlighten\";\n particle.roll.alter = {\n type: alterType,\n value: getRangeValue(alterType === \"darken\" ? rollOpt.darken.value : rollOpt.enlighten.value),\n };\n }\n else if (rollOpt.darken.enable) {\n particle.roll.alter = {\n type: \"darken\",\n value: getRangeValue(rollOpt.darken.value),\n };\n }\n else if (rollOpt.enlighten.enable) {\n particle.roll.alter = {\n type: \"enlighten\",\n value: getRangeValue(rollOpt.enlighten.value),\n };\n }\n }\n else {\n particle.roll = {\n enable: false,\n horizontal: false,\n vertical: false,\n angle: 0,\n speed: 0,\n };\n }\n }\n isEnabled(particle) {\n const roll = particle.options.roll;\n return !particle.destroyed && !particle.spawning && !!(roll === null || roll === void 0 ? void 0 : roll.enable);\n }\n loadOptions(options, ...sources) {\n if (!options.roll) {\n options.roll = new Roll();\n }\n for (const source of sources) {\n options.roll.load(source === null || source === void 0 ? void 0 : source.roll);\n }\n }\n update(particle, delta) {\n if (!this.isEnabled(particle)) {\n return;\n }\n updateRoll(particle, delta);\n }\n}\n","import { RollUpdater } from \"./RollUpdater\";\nexport async function loadRollUpdater(engine) {\n await engine.addParticleUpdater(\"roll\", () => new RollUpdater());\n}\n","const initPjs = (engine) => {\n const particlesJS = (tagId, options) => {\n return engine.load(tagId, options);\n };\n particlesJS.load = (tagId, pathConfigJson, callback) => {\n engine\n .loadJSON(tagId, pathConfigJson)\n .then((container) => {\n if (container) {\n callback(container);\n }\n })\n .catch(() => {\n callback(undefined);\n });\n };\n particlesJS.setOnClickHandler = (callback) => {\n engine.setOnClickHandler(callback);\n };\n const pJSDom = engine.dom();\n return { particlesJS, pJSDom };\n};\nexport { initPjs };\n","import { setRangeValue } from \"tsparticles-engine\";\nexport class RotateAnimation {\n constructor() {\n this.enable = false;\n this.speed = 0;\n this.decay = 0;\n this.sync = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n if (data.decay !== undefined) {\n this.decay = setRangeValue(data.decay);\n }\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { ValueWithRandom } from \"tsparticles-engine\";\nimport { RotateAnimation } from \"./RotateAnimation\";\nexport class Rotate extends ValueWithRandom {\n constructor() {\n super();\n this.animation = new RotateAnimation();\n this.direction = \"clockwise\";\n this.path = false;\n this.value = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n super.load(data);\n if (data.direction !== undefined) {\n this.direction = data.direction;\n }\n this.animation.load(data.animation);\n if (data.path !== undefined) {\n this.path = data.path;\n }\n }\n}\n","import { getRandom, getRangeValue } from \"tsparticles-engine\";\nimport { Rotate } from \"./Options/Classes/Rotate\";\nfunction updateAngle(particle, delta) {\n var _a, _b;\n const rotate = particle.rotate, rotateOptions = particle.options.rotate;\n if (!rotate || !rotateOptions) {\n return;\n }\n const rotateAnimation = rotateOptions.animation, speed = ((_a = rotate.velocity) !== null && _a !== void 0 ? _a : 0) * delta.factor, max = 2 * Math.PI, decay = (_b = rotate.decay) !== null && _b !== void 0 ? _b : 1;\n if (!rotateAnimation.enable) {\n return;\n }\n switch (rotate.status) {\n case \"increasing\":\n rotate.value += speed;\n if (rotate.value > max) {\n rotate.value -= max;\n }\n break;\n case \"decreasing\":\n default:\n rotate.value -= speed;\n if (rotate.value < 0) {\n rotate.value += max;\n }\n break;\n }\n if (rotate.velocity && decay !== 1) {\n rotate.velocity *= decay;\n }\n}\nexport class RotateUpdater {\n constructor(container) {\n this.container = container;\n }\n init(particle) {\n const rotateOptions = particle.options.rotate;\n if (!rotateOptions) {\n return;\n }\n particle.rotate = {\n enable: rotateOptions.animation.enable,\n value: (getRangeValue(rotateOptions.value) * Math.PI) / 180,\n };\n particle.pathRotation = rotateOptions.path;\n let rotateDirection = rotateOptions.direction;\n if (rotateDirection === \"random\") {\n const index = Math.floor(getRandom() * 2);\n rotateDirection = index > 0 ? \"counter-clockwise\" : \"clockwise\";\n }\n switch (rotateDirection) {\n case \"counter-clockwise\":\n case \"counterClockwise\":\n particle.rotate.status = \"decreasing\";\n break;\n case \"clockwise\":\n particle.rotate.status = \"increasing\";\n break;\n }\n const rotateAnimation = rotateOptions.animation;\n if (rotateAnimation.enable) {\n particle.rotate.decay = 1 - getRangeValue(rotateAnimation.decay);\n particle.rotate.velocity =\n (getRangeValue(rotateAnimation.speed) / 360) * this.container.retina.reduceFactor;\n if (!rotateAnimation.sync) {\n particle.rotate.velocity *= getRandom();\n }\n }\n particle.rotation = particle.rotate.value;\n }\n isEnabled(particle) {\n const rotate = particle.options.rotate;\n if (!rotate) {\n return false;\n }\n return !particle.destroyed && !particle.spawning && rotate.animation.enable && !rotate.path;\n }\n loadOptions(options, ...sources) {\n if (!options.rotate) {\n options.rotate = new Rotate();\n }\n for (const source of sources) {\n options.rotate.load(source === null || source === void 0 ? void 0 : source.rotate);\n }\n }\n update(particle, delta) {\n var _a, _b;\n if (!this.isEnabled(particle)) {\n return;\n }\n updateAngle(particle, delta);\n particle.rotation = (_b = (_a = particle.rotate) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : 0;\n }\n}\n","import { RotateUpdater } from \"./RotateUpdater\";\nexport async function loadAngleUpdater(engine) {\n await engine.addParticleUpdater(\"rotate\", (container) => new RotateUpdater(container));\n}\n","import { clamp, getDistances, getRandom } from \"tsparticles-engine\";\nexport function applyDistance(particle) {\n const initialPosition = particle.initialPosition, { dx, dy } = getDistances(initialPosition, particle.position), dxFixed = Math.abs(dx), dyFixed = Math.abs(dy), hDistance = particle.retina.maxDistance.horizontal, vDistance = particle.retina.maxDistance.vertical;\n if (!hDistance && !vDistance) {\n return;\n }\n if (((hDistance && dxFixed >= hDistance) || (vDistance && dyFixed >= vDistance)) && !particle.misplaced) {\n particle.misplaced = (!!hDistance && dxFixed > hDistance) || (!!vDistance && dyFixed > vDistance);\n if (hDistance) {\n particle.velocity.x = particle.velocity.y / 2 - particle.velocity.x;\n }\n if (vDistance) {\n particle.velocity.y = particle.velocity.x / 2 - particle.velocity.y;\n }\n }\n else if ((!hDistance || dxFixed < hDistance) && (!vDistance || dyFixed < vDistance) && particle.misplaced) {\n particle.misplaced = false;\n }\n else if (particle.misplaced) {\n const pos = particle.position, vel = particle.velocity;\n if (hDistance && ((pos.x < initialPosition.x && vel.x < 0) || (pos.x > initialPosition.x && vel.x > 0))) {\n vel.x *= -getRandom();\n }\n if (vDistance && ((pos.y < initialPosition.y && vel.y < 0) || (pos.y > initialPosition.y && vel.y > 0))) {\n vel.y *= -getRandom();\n }\n }\n}\nexport function spin(particle, moveSpeed) {\n const container = particle.container;\n if (!particle.spin) {\n return;\n }\n const updateFunc = {\n x: particle.spin.direction === \"clockwise\" ? Math.cos : Math.sin,\n y: particle.spin.direction === \"clockwise\" ? Math.sin : Math.cos,\n };\n particle.position.x = particle.spin.center.x + particle.spin.radius * updateFunc.x(particle.spin.angle);\n particle.position.y = particle.spin.center.y + particle.spin.radius * updateFunc.y(particle.spin.angle);\n particle.spin.radius += particle.spin.acceleration;\n const maxCanvasSize = Math.max(container.canvas.size.width, container.canvas.size.height);\n if (particle.spin.radius > maxCanvasSize / 2) {\n particle.spin.radius = maxCanvasSize / 2;\n particle.spin.acceleration *= -1;\n }\n else if (particle.spin.radius < 0) {\n particle.spin.radius = 0;\n particle.spin.acceleration *= -1;\n }\n particle.spin.angle += (moveSpeed / 100) * (1 - particle.spin.radius / maxCanvasSize);\n}\nexport function applyPath(particle, delta) {\n var _a;\n const particlesOptions = particle.options, pathOptions = particlesOptions.move.path, pathEnabled = pathOptions.enable;\n if (!pathEnabled) {\n return;\n }\n if (particle.lastPathTime <= particle.pathDelay) {\n particle.lastPathTime += delta.value;\n return;\n }\n const path = (_a = particle.pathGenerator) === null || _a === void 0 ? void 0 : _a.generate(particle);\n if (path) {\n particle.velocity.addTo(path);\n }\n if (pathOptions.clamp) {\n particle.velocity.x = clamp(particle.velocity.x, -1, 1);\n particle.velocity.y = clamp(particle.velocity.y, -1, 1);\n }\n particle.lastPathTime -= particle.pathDelay;\n}\nexport function getProximitySpeedFactor(particle) {\n return particle.slow.inRange ? particle.slow.factor : 1;\n}\n","import { getDistance, getRangeMax, getRangeValue } from \"tsparticles-engine\";\nimport { applyDistance, applyPath, getProximitySpeedFactor, spin } from \"./Utils\";\nexport class BaseMover {\n init(particle) {\n var _a;\n const container = particle.container, options = particle.options, gravityOptions = options.move.gravity, spinOptions = options.move.spin;\n particle.gravity = {\n enable: gravityOptions.enable,\n acceleration: getRangeValue(gravityOptions.acceleration),\n inverse: gravityOptions.inverse,\n };\n if (spinOptions.enable) {\n const spinPos = (_a = spinOptions.position) !== null && _a !== void 0 ? _a : { x: 50, y: 50 }, spinCenter = {\n x: (spinPos.x / 100) * container.canvas.size.width,\n y: (spinPos.y / 100) * container.canvas.size.height,\n }, pos = particle.getPosition(), distance = getDistance(pos, spinCenter), spinAcceleration = getRangeValue(spinOptions.acceleration);\n particle.retina.spinAcceleration = spinAcceleration * container.retina.pixelRatio;\n particle.spin = {\n center: spinCenter,\n direction: particle.velocity.x >= 0 ? \"clockwise\" : \"counter-clockwise\",\n angle: particle.velocity.angle,\n radius: distance,\n acceleration: particle.retina.spinAcceleration,\n };\n }\n }\n isEnabled(particle) {\n return !particle.destroyed && particle.options.move.enable;\n }\n move(particle, delta) {\n var _a, _b, _c;\n var _d, _e;\n const particleOptions = particle.options, moveOptions = particleOptions.move;\n if (!moveOptions.enable) {\n return;\n }\n const container = particle.container, slowFactor = getProximitySpeedFactor(particle), baseSpeed = ((_a = (_d = particle.retina).moveSpeed) !== null && _a !== void 0 ? _a : (_d.moveSpeed = getRangeValue(moveOptions.speed) * container.retina.pixelRatio)) *\n container.retina.reduceFactor, moveDrift = ((_b = (_e = particle.retina).moveDrift) !== null && _b !== void 0 ? _b : (_e.moveDrift = getRangeValue(particle.options.move.drift) * container.retina.pixelRatio)), maxSize = getRangeMax(particleOptions.size.value) * container.retina.pixelRatio, sizeFactor = moveOptions.size ? particle.getRadius() / maxSize : 1, speedFactor = sizeFactor * slowFactor * (delta.factor || 1), diffFactor = 2, moveSpeed = (baseSpeed * speedFactor) / diffFactor;\n if (moveOptions.spin.enable) {\n spin(particle, moveSpeed);\n }\n else {\n applyPath(particle, delta);\n const gravityOptions = particle.gravity, gravityFactor = (gravityOptions === null || gravityOptions === void 0 ? void 0 : gravityOptions.enable) && gravityOptions.inverse ? -1 : 1;\n if ((gravityOptions === null || gravityOptions === void 0 ? void 0 : gravityOptions.enable) && moveSpeed) {\n particle.velocity.y +=\n (gravityFactor * (gravityOptions.acceleration * delta.factor)) / (60 * moveSpeed);\n }\n if (moveDrift && moveSpeed) {\n particle.velocity.x += (moveDrift * delta.factor) / (60 * moveSpeed);\n }\n const decay = particle.moveDecay;\n if (decay != 1) {\n particle.velocity.multTo(decay);\n }\n const velocity = particle.velocity.mult(moveSpeed), maxSpeed = (_c = particle.retina.maxSpeed) !== null && _c !== void 0 ? _c : container.retina.maxSpeed;\n if ((gravityOptions === null || gravityOptions === void 0 ? void 0 : gravityOptions.enable) &&\n maxSpeed > 0 &&\n ((!gravityOptions.inverse && velocity.y >= 0 && velocity.y >= maxSpeed) ||\n (gravityOptions.inverse && velocity.y <= 0 && velocity.y <= -maxSpeed))) {\n velocity.y = gravityFactor * maxSpeed;\n if (moveSpeed) {\n particle.velocity.y = velocity.y / moveSpeed;\n }\n }\n const zIndexOptions = particle.options.zIndex, zVelocityFactor = (1 - particle.zIndexFactor) ** zIndexOptions.velocityRate;\n if (zVelocityFactor != 1) {\n velocity.multTo(zVelocityFactor);\n }\n particle.position.addTo(velocity);\n if (moveOptions.vibrate) {\n particle.position.x += Math.sin(particle.position.x * Math.cos(particle.position.y));\n particle.position.y += Math.cos(particle.position.y * Math.sin(particle.position.x));\n }\n }\n applyDistance(particle);\n }\n}\n","import { BaseMover } from \"./BaseMover\";\nexport async function loadBaseMover(engine) {\n engine.addMover(\"base\", () => new BaseMover());\n}\n","export class CircleDrawer {\n draw(context, particle, radius) {\n context.arc(0, 0, radius, 0, Math.PI * 2, false);\n }\n getSidesCount() {\n return 12;\n }\n}\n","import { CircleDrawer } from \"./CircleDrawer\";\nexport async function loadCircleShape(engine) {\n await engine.addShape(\"circle\", new CircleDrawer());\n}\n","import { getHslAnimationFromHsl, randomInRange, rangeColorToHsl } from \"tsparticles-engine\";\nfunction updateColorValue(delta, value, valueAnimation, max, decrease) {\n var _a, _b;\n const colorValue = value;\n if (!colorValue || !valueAnimation.enable) {\n return;\n }\n const offset = randomInRange(valueAnimation.offset), velocity = ((_a = value.velocity) !== null && _a !== void 0 ? _a : 0) * delta.factor + offset * 3.6, decay = (_b = value.decay) !== null && _b !== void 0 ? _b : 1;\n if (!decrease || colorValue.status === \"increasing\") {\n colorValue.value += velocity;\n if (decrease && colorValue.value > max) {\n colorValue.status = \"decreasing\";\n colorValue.value -= colorValue.value % max;\n }\n }\n else {\n colorValue.value -= velocity;\n if (colorValue.value < 0) {\n colorValue.status = \"increasing\";\n colorValue.value += colorValue.value;\n }\n }\n if (colorValue.velocity && decay !== 1) {\n colorValue.velocity *= decay;\n }\n if (colorValue.value > max) {\n colorValue.value %= max;\n }\n}\nfunction updateColor(particle, delta) {\n var _a, _b, _c;\n const animationOptions = particle.options.color.animation;\n if (((_a = particle.color) === null || _a === void 0 ? void 0 : _a.h) !== undefined) {\n updateColorValue(delta, particle.color.h, animationOptions.h, 360, false);\n }\n if (((_b = particle.color) === null || _b === void 0 ? void 0 : _b.s) !== undefined) {\n updateColorValue(delta, particle.color.s, animationOptions.s, 100, true);\n }\n if (((_c = particle.color) === null || _c === void 0 ? void 0 : _c.l) !== undefined) {\n updateColorValue(delta, particle.color.l, animationOptions.l, 100, true);\n }\n}\nexport class ColorUpdater {\n constructor(container) {\n this.container = container;\n }\n init(particle) {\n const hslColor = rangeColorToHsl(particle.options.color, particle.id, particle.options.reduceDuplicates);\n if (hslColor) {\n particle.color = getHslAnimationFromHsl(hslColor, particle.options.color.animation, this.container.retina.reduceFactor);\n }\n }\n isEnabled(particle) {\n var _a, _b, _c;\n const animationOptions = particle.options.color.animation;\n return (!particle.destroyed &&\n !particle.spawning &&\n ((((_a = particle.color) === null || _a === void 0 ? void 0 : _a.h.value) !== undefined && animationOptions.h.enable) ||\n (((_b = particle.color) === null || _b === void 0 ? void 0 : _b.s.value) !== undefined && animationOptions.s.enable) ||\n (((_c = particle.color) === null || _c === void 0 ? void 0 : _c.l.value) !== undefined && animationOptions.l.enable)));\n }\n update(particle, delta) {\n updateColor(particle, delta);\n }\n}\n","import { ColorUpdater } from \"./ColorUpdater\";\nexport async function loadColorUpdater(engine) {\n await engine.addParticleUpdater(\"color\", (container) => new ColorUpdater(container));\n}\n","export class Attract {\n constructor() {\n this.distance = 200;\n this.duration = 0.4;\n this.easing = \"ease-out-quad\";\n this.factor = 1;\n this.maxSpeed = 50;\n this.speed = 1;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n if (data.duration !== undefined) {\n this.duration = data.duration;\n }\n if (data.easing !== undefined) {\n this.easing = data.easing;\n }\n if (data.factor !== undefined) {\n this.factor = data.factor;\n }\n if (data.maxSpeed !== undefined) {\n this.maxSpeed = data.maxSpeed;\n }\n if (data.speed !== undefined) {\n this.speed = data.speed;\n }\n }\n}\n","import { Circle, ExternalInteractorBase, Vector, clamp, getDistances, getEasing, isInArray, mouseMoveEvent, } from \"tsparticles-engine\";\nimport { Attract } from \"./Options/Classes/Attract\";\nexport class Attractor extends ExternalInteractorBase {\n constructor(engine, container) {\n super(container);\n this._engine = engine;\n if (!container.attract) {\n container.attract = { particles: [] };\n }\n this.handleClickMode = (mode) => {\n const options = this.container.actualOptions, attract = options.interactivity.modes.attract;\n if (!attract || mode !== \"attract\") {\n return;\n }\n if (!container.attract) {\n container.attract = { particles: [] };\n }\n container.attract.clicking = true;\n container.attract.count = 0;\n for (const particle of container.attract.particles) {\n if (!this.isEnabled(particle)) {\n continue;\n }\n particle.velocity.setTo(particle.initialVelocity);\n }\n container.attract.particles = [];\n container.attract.finish = false;\n setTimeout(() => {\n if (!container.destroyed) {\n if (!container.attract) {\n container.attract = { particles: [] };\n }\n container.attract.clicking = false;\n }\n }, attract.duration * 1000);\n };\n }\n clear() {\n }\n init() {\n const container = this.container, attract = container.actualOptions.interactivity.modes.attract;\n if (!attract) {\n return;\n }\n container.retina.attractModeDistance = attract.distance * container.retina.pixelRatio;\n }\n async interact() {\n const container = this.container, options = container.actualOptions, mouseMoveStatus = container.interactivity.status === mouseMoveEvent, events = options.interactivity.events, hoverEnabled = events.onHover.enable, hoverMode = events.onHover.mode, clickEnabled = events.onClick.enable, clickMode = events.onClick.mode;\n if (mouseMoveStatus && hoverEnabled && isInArray(\"attract\", hoverMode)) {\n this.hoverAttract();\n }\n else if (clickEnabled && isInArray(\"attract\", clickMode)) {\n this.clickAttract();\n }\n }\n isEnabled(particle) {\n var _a;\n const container = this.container, options = container.actualOptions, mouse = container.interactivity.mouse, events = ((_a = particle === null || particle === void 0 ? void 0 : particle.interactivity) !== null && _a !== void 0 ? _a : options.interactivity).events;\n if ((!mouse.position || !events.onHover.enable) && (!mouse.clickPosition || !events.onClick.enable)) {\n return false;\n }\n const hoverMode = events.onHover.mode, clickMode = events.onClick.mode;\n return isInArray(\"attract\", hoverMode) || isInArray(\"attract\", clickMode);\n }\n loadModeOptions(options, ...sources) {\n if (!options.attract) {\n options.attract = new Attract();\n }\n for (const source of sources) {\n options.attract.load(source === null || source === void 0 ? void 0 : source.attract);\n }\n }\n reset() {\n }\n clickAttract() {\n const container = this.container;\n if (!container.attract) {\n container.attract = { particles: [] };\n }\n if (!container.attract.finish) {\n if (!container.attract.count) {\n container.attract.count = 0;\n }\n container.attract.count++;\n if (container.attract.count === container.particles.count) {\n container.attract.finish = true;\n }\n }\n if (container.attract.clicking) {\n const mousePos = container.interactivity.mouse.clickPosition, attractRadius = container.retina.attractModeDistance;\n if (!attractRadius || attractRadius < 0 || !mousePos) {\n return;\n }\n this.processAttract(mousePos, attractRadius, new Circle(mousePos.x, mousePos.y, attractRadius));\n }\n else if (container.attract.clicking === false) {\n container.attract.particles = [];\n }\n return;\n }\n hoverAttract() {\n const container = this.container, mousePos = container.interactivity.mouse.position, attractRadius = container.retina.attractModeDistance;\n if (!attractRadius || attractRadius < 0 || !mousePos) {\n return;\n }\n this.processAttract(mousePos, attractRadius, new Circle(mousePos.x, mousePos.y, attractRadius));\n }\n processAttract(position, attractRadius, area) {\n const container = this.container, attractOptions = container.actualOptions.interactivity.modes.attract;\n if (!attractOptions) {\n return;\n }\n const query = container.particles.quadTree.query(area, (p) => this.isEnabled(p));\n for (const particle of query) {\n const { dx, dy, distance } = getDistances(particle.position, position);\n const velocity = attractOptions.speed * attractOptions.factor;\n const attractFactor = clamp(getEasing(attractOptions.easing)(1 - distance / attractRadius) * velocity, 0, attractOptions.maxSpeed);\n const normVec = Vector.create(distance === 0 ? velocity : (dx / distance) * attractFactor, distance === 0 ? velocity : (dy / distance) * attractFactor);\n particle.position.subFrom(normVec);\n }\n }\n}\n","import { Attractor } from \"./Attractor\";\nexport async function loadExternalAttractInteraction(engine) {\n await engine.addInteractor(\"externalAttract\", (container) => new Attractor(engine, container));\n}\nexport * from \"./Options/Classes/Attract\";\nexport * from \"./Options/Interfaces/IAttract\";\n","export class Bounce {\n constructor() {\n this.distance = 200;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n }\n}\n","import { Circle, ExternalInteractorBase, Rectangle, Vector, calculateBounds, circleBounce, circleBounceDataFromParticle, divModeExecute, isDivModeEnabled, isInArray, mouseMoveEvent, rectBounce, } from \"tsparticles-engine\";\nimport { Bounce } from \"./Options/Classes/Bounce\";\nexport class Bouncer extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n }\n clear() {\n }\n init() {\n const container = this.container, bounce = container.actualOptions.interactivity.modes.bounce;\n if (!bounce) {\n return;\n }\n container.retina.bounceModeDistance = bounce.distance * container.retina.pixelRatio;\n }\n async interact() {\n const container = this.container, options = container.actualOptions, events = options.interactivity.events, mouseMoveStatus = container.interactivity.status === mouseMoveEvent, hoverEnabled = events.onHover.enable, hoverMode = events.onHover.mode, divs = events.onDiv;\n if (mouseMoveStatus && hoverEnabled && isInArray(\"bounce\", hoverMode)) {\n this.processMouseBounce();\n }\n else {\n divModeExecute(\"bounce\", divs, (selector, div) => this.singleSelectorBounce(selector, div));\n }\n }\n isEnabled(particle) {\n var _a;\n const container = this.container, options = container.actualOptions, mouse = container.interactivity.mouse, events = ((_a = particle === null || particle === void 0 ? void 0 : particle.interactivity) !== null && _a !== void 0 ? _a : options.interactivity).events, divs = events.onDiv;\n return ((mouse.position && events.onHover.enable && isInArray(\"bounce\", events.onHover.mode)) ||\n isDivModeEnabled(\"bounce\", divs));\n }\n loadModeOptions(options, ...sources) {\n if (!options.bounce) {\n options.bounce = new Bounce();\n }\n for (const source of sources) {\n options.bounce.load(source === null || source === void 0 ? void 0 : source.bounce);\n }\n }\n reset() {\n }\n processBounce(position, radius, area) {\n const query = this.container.particles.quadTree.query(area, (p) => this.isEnabled(p));\n for (const particle of query) {\n if (area instanceof Circle) {\n circleBounce(circleBounceDataFromParticle(particle), {\n position,\n radius,\n mass: (radius ** 2 * Math.PI) / 2,\n velocity: Vector.origin,\n factor: Vector.origin,\n });\n }\n else if (area instanceof Rectangle) {\n rectBounce(particle, calculateBounds(position, radius));\n }\n }\n }\n processMouseBounce() {\n const container = this.container, pxRatio = container.retina.pixelRatio, tolerance = 10 * pxRatio, mousePos = container.interactivity.mouse.position, radius = container.retina.bounceModeDistance;\n if (!radius || radius < 0 || !mousePos) {\n return;\n }\n this.processBounce(mousePos, radius, new Circle(mousePos.x, mousePos.y, radius + tolerance));\n }\n singleSelectorBounce(selector, div) {\n const container = this.container, query = document.querySelectorAll(selector);\n if (!query.length) {\n return;\n }\n query.forEach((item) => {\n const elem = item, pxRatio = container.retina.pixelRatio, pos = {\n x: (elem.offsetLeft + elem.offsetWidth / 2) * pxRatio,\n y: (elem.offsetTop + elem.offsetHeight / 2) * pxRatio,\n }, radius = (elem.offsetWidth / 2) * pxRatio, tolerance = 10 * pxRatio, area = div.type === \"circle\"\n ? new Circle(pos.x, pos.y, radius + tolerance)\n : new Rectangle(elem.offsetLeft * pxRatio - tolerance, elem.offsetTop * pxRatio - tolerance, elem.offsetWidth * pxRatio + tolerance * 2, elem.offsetHeight * pxRatio + tolerance * 2);\n this.processBounce(pos, radius, area);\n });\n }\n}\n","import { Bouncer } from \"./Bouncer\";\nexport async function loadExternalBounceInteraction(engine) {\n await engine.addInteractor(\"externalBounce\", (container) => new Bouncer(container));\n}\nexport * from \"./Options/Classes/Bounce\";\nexport * from \"./Options/Interfaces/IBounce\";\n","import { OptionsColor, executeOnSingleOrMultiple } from \"tsparticles-engine\";\nexport class BubbleBase {\n constructor() {\n this.distance = 200;\n this.duration = 0.4;\n this.mix = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n if (data.duration !== undefined) {\n this.duration = data.duration;\n }\n if (data.mix !== undefined) {\n this.mix = data.mix;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n if (data.color !== undefined) {\n const sourceColor = this.color instanceof Array ? undefined : this.color;\n this.color = executeOnSingleOrMultiple(data.color, (color) => {\n return OptionsColor.create(sourceColor, color);\n });\n }\n if (data.size !== undefined) {\n this.size = data.size;\n }\n }\n}\n","import { BubbleBase } from \"./BubbleBase\";\nimport { executeOnSingleOrMultiple } from \"tsparticles-engine\";\nexport class BubbleDiv extends BubbleBase {\n constructor() {\n super();\n this.selectors = [];\n }\n get ids() {\n return executeOnSingleOrMultiple(this.selectors, (t) => t.replace(\"#\", \"\"));\n }\n set ids(value) {\n this.selectors = executeOnSingleOrMultiple(value, (t) => `#${t}`);\n }\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n if (data.ids !== undefined) {\n this.ids = data.ids;\n }\n if (data.selectors !== undefined) {\n this.selectors = data.selectors;\n }\n }\n}\n","import { BubbleBase } from \"./BubbleBase\";\nimport { BubbleDiv } from \"./BubbleDiv\";\nimport { executeOnSingleOrMultiple } from \"tsparticles-engine\";\nexport class Bubble extends BubbleBase {\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n this.divs = executeOnSingleOrMultiple(data.divs, (div) => {\n const tmp = new BubbleDiv();\n tmp.load(div);\n return tmp;\n });\n }\n}\n","import { Circle, ExternalInteractorBase, Rectangle, clamp, colorMix, divMode, divModeExecute, getDistance, getRangeMax, isDivModeEnabled, isInArray, itemFromSingleOrMultiple, mouseLeaveEvent, mouseMoveEvent, rangeColorToHsl, rgbToHsl, } from \"tsparticles-engine\";\nimport { Bubble } from \"./Options/Classes/Bubble\";\nfunction calculateBubbleValue(particleValue, modeValue, optionsValue, ratio) {\n if (modeValue >= optionsValue) {\n const value = particleValue + (modeValue - optionsValue) * ratio;\n return clamp(value, particleValue, modeValue);\n }\n else if (modeValue < optionsValue) {\n const value = particleValue - (optionsValue - modeValue) * ratio;\n return clamp(value, modeValue, particleValue);\n }\n}\nexport class Bubbler extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n if (!container.bubble) {\n container.bubble = {};\n }\n this.handleClickMode = (mode) => {\n if (mode !== \"bubble\") {\n return;\n }\n if (!container.bubble) {\n container.bubble = {};\n }\n container.bubble.clicking = true;\n };\n }\n clear(particle, delta, force) {\n if (particle.bubble.inRange && !force) {\n return;\n }\n delete particle.bubble.div;\n delete particle.bubble.opacity;\n delete particle.bubble.radius;\n delete particle.bubble.color;\n }\n init() {\n const container = this.container, bubble = container.actualOptions.interactivity.modes.bubble;\n if (!bubble) {\n return;\n }\n container.retina.bubbleModeDistance = bubble.distance * container.retina.pixelRatio;\n if (bubble.size !== undefined) {\n container.retina.bubbleModeSize = bubble.size * container.retina.pixelRatio;\n }\n }\n async interact(delta) {\n const options = this.container.actualOptions, events = options.interactivity.events, onHover = events.onHover, onClick = events.onClick, hoverEnabled = onHover.enable, hoverMode = onHover.mode, clickEnabled = onClick.enable, clickMode = onClick.mode, divs = events.onDiv;\n if (hoverEnabled && isInArray(\"bubble\", hoverMode)) {\n this.hoverBubble(delta);\n }\n else if (clickEnabled && isInArray(\"bubble\", clickMode)) {\n this.clickBubble(delta);\n }\n else {\n divModeExecute(\"bubble\", divs, (selector, div) => this.singleSelectorHover(delta, selector, div));\n }\n }\n isEnabled(particle) {\n var _a;\n const container = this.container, options = container.actualOptions, mouse = container.interactivity.mouse, events = ((_a = particle === null || particle === void 0 ? void 0 : particle.interactivity) !== null && _a !== void 0 ? _a : options.interactivity).events, divs = events.onDiv, divBubble = isDivModeEnabled(\"bubble\", divs);\n if (!(divBubble || (events.onHover.enable && mouse.position) || (events.onClick.enable && mouse.clickPosition))) {\n return false;\n }\n const hoverMode = events.onHover.mode;\n const clickMode = events.onClick.mode;\n return isInArray(\"bubble\", hoverMode) || isInArray(\"bubble\", clickMode) || divBubble;\n }\n loadModeOptions(options, ...sources) {\n if (!options.bubble) {\n options.bubble = new Bubble();\n }\n for (const source of sources) {\n options.bubble.load(source === null || source === void 0 ? void 0 : source.bubble);\n }\n }\n reset(particle) {\n particle.bubble.inRange = false;\n }\n clickBubble(delta) {\n var _a, _b;\n const container = this.container, options = container.actualOptions, mouseClickPos = container.interactivity.mouse.clickPosition, bubble = options.interactivity.modes.bubble;\n if (!bubble || !mouseClickPos) {\n return;\n }\n if (!container.bubble) {\n container.bubble = {};\n }\n const distance = container.retina.bubbleModeDistance;\n if (!distance || distance < 0) {\n return;\n }\n const query = container.particles.quadTree.queryCircle(mouseClickPos, distance, (p) => this.isEnabled(p));\n for (const particle of query) {\n if (!container.bubble.clicking) {\n continue;\n }\n particle.bubble.inRange = !container.bubble.durationEnd;\n const pos = particle.getPosition(), distMouse = getDistance(pos, mouseClickPos), timeSpent = (new Date().getTime() - (container.interactivity.mouse.clickTime || 0)) / 1000;\n if (timeSpent > bubble.duration) {\n container.bubble.durationEnd = true;\n }\n if (timeSpent > bubble.duration * 2) {\n container.bubble.clicking = false;\n container.bubble.durationEnd = false;\n }\n const sizeData = {\n bubbleObj: {\n optValue: container.retina.bubbleModeSize,\n value: particle.bubble.radius,\n },\n particlesObj: {\n optValue: getRangeMax(particle.options.size.value) * container.retina.pixelRatio,\n value: particle.size.value,\n },\n type: \"size\",\n };\n this.process(particle, distMouse, timeSpent, sizeData);\n const opacityData = {\n bubbleObj: {\n optValue: bubble.opacity,\n value: particle.bubble.opacity,\n },\n particlesObj: {\n optValue: getRangeMax(particle.options.opacity.value),\n value: (_b = (_a = particle.opacity) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : 1,\n },\n type: \"opacity\",\n };\n this.process(particle, distMouse, timeSpent, opacityData);\n if (!container.bubble.durationEnd) {\n if (distMouse <= distance) {\n this.hoverBubbleColor(particle, distMouse);\n }\n else {\n delete particle.bubble.color;\n }\n }\n else {\n delete particle.bubble.color;\n }\n }\n }\n hoverBubble(delta) {\n const container = this.container, mousePos = container.interactivity.mouse.position, distance = container.retina.bubbleModeDistance;\n if (!distance || distance < 0 || mousePos === undefined) {\n return;\n }\n const query = container.particles.quadTree.queryCircle(mousePos, distance, (p) => this.isEnabled(p));\n for (const particle of query) {\n particle.bubble.inRange = true;\n const pos = particle.getPosition(), pointDistance = getDistance(pos, mousePos), ratio = 1 - pointDistance / distance;\n if (pointDistance <= distance) {\n if (ratio >= 0 && container.interactivity.status === mouseMoveEvent) {\n this.hoverBubbleSize(particle, ratio);\n this.hoverBubbleOpacity(particle, ratio);\n this.hoverBubbleColor(particle, ratio);\n }\n }\n else {\n this.reset(particle);\n }\n if (container.interactivity.status === mouseLeaveEvent) {\n this.reset(particle);\n }\n }\n }\n hoverBubbleColor(particle, ratio, divBubble) {\n const options = this.container.actualOptions;\n const bubbleOptions = divBubble !== null && divBubble !== void 0 ? divBubble : options.interactivity.modes.bubble;\n if (!bubbleOptions) {\n return;\n }\n if (!particle.bubble.finalColor) {\n const modeColor = bubbleOptions.color;\n if (!modeColor) {\n return;\n }\n const bubbleColor = itemFromSingleOrMultiple(modeColor);\n particle.bubble.finalColor = rangeColorToHsl(bubbleColor);\n }\n if (!particle.bubble.finalColor) {\n return;\n }\n if (bubbleOptions.mix) {\n particle.bubble.color = undefined;\n const pColor = particle.getFillColor();\n particle.bubble.color = pColor\n ? rgbToHsl(colorMix(pColor, particle.bubble.finalColor, 1 - ratio, ratio))\n : particle.bubble.finalColor;\n }\n else {\n particle.bubble.color = particle.bubble.finalColor;\n }\n }\n hoverBubbleOpacity(particle, ratio, divBubble) {\n var _a, _b, _c, _d;\n const container = this.container, options = container.actualOptions, modeOpacity = (_a = divBubble === null || divBubble === void 0 ? void 0 : divBubble.opacity) !== null && _a !== void 0 ? _a : (_b = options.interactivity.modes.bubble) === null || _b === void 0 ? void 0 : _b.opacity;\n if (!modeOpacity) {\n return;\n }\n const optOpacity = particle.options.opacity.value;\n const pOpacity = (_d = (_c = particle.opacity) === null || _c === void 0 ? void 0 : _c.value) !== null && _d !== void 0 ? _d : 1;\n const opacity = calculateBubbleValue(pOpacity, modeOpacity, getRangeMax(optOpacity), ratio);\n if (opacity !== undefined) {\n particle.bubble.opacity = opacity;\n }\n }\n hoverBubbleSize(particle, ratio, divBubble) {\n const container = this.container, modeSize = (divBubble === null || divBubble === void 0 ? void 0 : divBubble.size) ? divBubble.size * container.retina.pixelRatio : container.retina.bubbleModeSize;\n if (modeSize === undefined) {\n return;\n }\n const optSize = getRangeMax(particle.options.size.value) * container.retina.pixelRatio;\n const pSize = particle.size.value;\n const size = calculateBubbleValue(pSize, modeSize, optSize, ratio);\n if (size !== undefined) {\n particle.bubble.radius = size;\n }\n }\n process(particle, distMouse, timeSpent, data) {\n const container = this.container, bubbleParam = data.bubbleObj.optValue, options = container.actualOptions, bubble = options.interactivity.modes.bubble;\n if (!bubble || bubbleParam === undefined) {\n return;\n }\n const bubbleDuration = bubble.duration, bubbleDistance = container.retina.bubbleModeDistance, particlesParam = data.particlesObj.optValue, pObjBubble = data.bubbleObj.value, pObj = data.particlesObj.value || 0, type = data.type;\n if (!bubbleDistance || bubbleDistance < 0 || bubbleParam === particlesParam) {\n return;\n }\n if (!container.bubble) {\n container.bubble = {};\n }\n if (!container.bubble.durationEnd) {\n if (distMouse <= bubbleDistance) {\n const obj = pObjBubble !== null && pObjBubble !== void 0 ? pObjBubble : pObj;\n if (obj !== bubbleParam) {\n const value = pObj - (timeSpent * (pObj - bubbleParam)) / bubbleDuration;\n if (type === \"size\") {\n particle.bubble.radius = value;\n }\n if (type === \"opacity\") {\n particle.bubble.opacity = value;\n }\n }\n }\n else {\n if (type === \"size\") {\n delete particle.bubble.radius;\n }\n if (type === \"opacity\") {\n delete particle.bubble.opacity;\n }\n }\n }\n else if (pObjBubble) {\n if (type === \"size\") {\n delete particle.bubble.radius;\n }\n if (type === \"opacity\") {\n delete particle.bubble.opacity;\n }\n }\n }\n singleSelectorHover(delta, selector, div) {\n const container = this.container, selectors = document.querySelectorAll(selector), bubble = container.actualOptions.interactivity.modes.bubble;\n if (!bubble || !selectors.length) {\n return;\n }\n selectors.forEach((item) => {\n const elem = item, pxRatio = container.retina.pixelRatio, pos = {\n x: (elem.offsetLeft + elem.offsetWidth / 2) * pxRatio,\n y: (elem.offsetTop + elem.offsetHeight / 2) * pxRatio,\n }, repulseRadius = (elem.offsetWidth / 2) * pxRatio, area = div.type === \"circle\"\n ? new Circle(pos.x, pos.y, repulseRadius)\n : new Rectangle(elem.offsetLeft * pxRatio, elem.offsetTop * pxRatio, elem.offsetWidth * pxRatio, elem.offsetHeight * pxRatio), query = container.particles.quadTree.query(area, (p) => this.isEnabled(p));\n for (const particle of query) {\n if (!area.contains(particle.getPosition())) {\n continue;\n }\n particle.bubble.inRange = true;\n const divs = bubble.divs;\n const divBubble = divMode(divs, elem);\n if (!particle.bubble.div || particle.bubble.div !== elem) {\n this.clear(particle, delta, true);\n particle.bubble.div = elem;\n }\n this.hoverBubbleSize(particle, 1, divBubble);\n this.hoverBubbleOpacity(particle, 1, divBubble);\n this.hoverBubbleColor(particle, 1, divBubble);\n }\n });\n }\n}\n","import { Bubbler } from \"./Bubbler\";\nexport async function loadExternalBubbleInteraction(engine) {\n await engine.addInteractor(\"externalBubble\", (container) => new Bubbler(container));\n}\nexport * from \"./Options/Classes/BubbleBase\";\nexport * from \"./Options/Classes/BubbleDiv\";\nexport * from \"./Options/Classes/Bubble\";\nexport * from \"./Options/Interfaces/IBubbleBase\";\nexport * from \"./Options/Interfaces/IBubbleDiv\";\nexport * from \"./Options/Interfaces/IBubble\";\n","export class ConnectLinks {\n constructor() {\n this.opacity = 0.5;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n }\n}\n","import { ConnectLinks } from \"./ConnectLinks\";\nexport class Connect {\n constructor() {\n this.distance = 80;\n this.links = new ConnectLinks();\n this.radius = 60;\n }\n get lineLinked() {\n return this.links;\n }\n set lineLinked(value) {\n this.links = value;\n }\n get line_linked() {\n return this.links;\n }\n set line_linked(value) {\n this.links = value;\n }\n load(data) {\n var _a, _b;\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n this.links.load((_b = (_a = data.links) !== null && _a !== void 0 ? _a : data.lineLinked) !== null && _b !== void 0 ? _b : data.line_linked);\n if (data.radius !== undefined) {\n this.radius = data.radius;\n }\n }\n}\n","import { ExternalInteractorBase, colorMix, drawLine, getStyleFromHsl, getStyleFromRgb, isInArray, } from \"tsparticles-engine\";\nimport { Connect } from \"./Options/Classes/Connect\";\nfunction gradient(context, p1, p2, opacity) {\n const gradStop = Math.floor(p2.getRadius() / p1.getRadius()), color1 = p1.getFillColor(), color2 = p2.getFillColor();\n if (!color1 || !color2) {\n return;\n }\n const sourcePos = p1.getPosition(), destPos = p2.getPosition(), midRgb = colorMix(color1, color2, p1.getRadius(), p2.getRadius()), grad = context.createLinearGradient(sourcePos.x, sourcePos.y, destPos.x, destPos.y);\n grad.addColorStop(0, getStyleFromHsl(color1, opacity));\n grad.addColorStop(gradStop > 1 ? 1 : gradStop, getStyleFromRgb(midRgb, opacity));\n grad.addColorStop(1, getStyleFromHsl(color2, opacity));\n return grad;\n}\nfunction drawConnectLine(context, width, lineStyle, begin, end) {\n drawLine(context, begin, end);\n context.lineWidth = width;\n context.strokeStyle = lineStyle;\n context.stroke();\n}\nfunction lineStyle(container, ctx, p1, p2) {\n const options = container.actualOptions, connectOptions = options.interactivity.modes.connect;\n if (!connectOptions) {\n return;\n }\n return gradient(ctx, p1, p2, connectOptions.links.opacity);\n}\nfunction drawConnection(container, p1, p2) {\n container.canvas.draw((ctx) => {\n var _a;\n const ls = lineStyle(container, ctx, p1, p2);\n if (!ls) {\n return;\n }\n const pos1 = p1.getPosition(), pos2 = p2.getPosition();\n drawConnectLine(ctx, (_a = p1.retina.linksWidth) !== null && _a !== void 0 ? _a : 0, ls, pos1, pos2);\n });\n}\nexport class Connector extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n }\n clear() {\n }\n init() {\n const container = this.container, connect = container.actualOptions.interactivity.modes.connect;\n if (!connect) {\n return;\n }\n container.retina.connectModeDistance = connect.distance * container.retina.pixelRatio;\n container.retina.connectModeRadius = connect.radius * container.retina.pixelRatio;\n }\n async interact() {\n const container = this.container, options = container.actualOptions;\n if (options.interactivity.events.onHover.enable && container.interactivity.status === \"pointermove\") {\n const mousePos = container.interactivity.mouse.position;\n if (!container.retina.connectModeDistance ||\n container.retina.connectModeDistance < 0 ||\n !container.retina.connectModeRadius ||\n container.retina.connectModeRadius < 0 ||\n !mousePos) {\n return;\n }\n const distance = Math.abs(container.retina.connectModeRadius), query = container.particles.quadTree.queryCircle(mousePos, distance, (p) => this.isEnabled(p));\n let i = 0;\n for (const p1 of query) {\n const pos1 = p1.getPosition();\n for (const p2 of query.slice(i + 1)) {\n const pos2 = p2.getPosition(), distMax = Math.abs(container.retina.connectModeDistance), xDiff = Math.abs(pos1.x - pos2.x), yDiff = Math.abs(pos1.y - pos2.y);\n if (xDiff < distMax && yDiff < distMax) {\n drawConnection(container, p1, p2);\n }\n }\n ++i;\n }\n }\n }\n isEnabled(particle) {\n var _a;\n const container = this.container, mouse = container.interactivity.mouse, events = ((_a = particle === null || particle === void 0 ? void 0 : particle.interactivity) !== null && _a !== void 0 ? _a : container.actualOptions.interactivity).events;\n if (!(events.onHover.enable && mouse.position)) {\n return false;\n }\n return isInArray(\"connect\", events.onHover.mode);\n }\n loadModeOptions(options, ...sources) {\n if (!options.connect) {\n options.connect = new Connect();\n }\n for (const source of sources) {\n options.connect.load(source === null || source === void 0 ? void 0 : source.connect);\n }\n }\n reset() {\n }\n}\n","import { Connector } from \"./Connector\";\nexport async function loadExternalConnectInteraction(engine) {\n await engine.addInteractor(\"externalConnect\", (container) => new Connector(container));\n}\nexport * from \"./Options/Classes/Connect\";\nexport * from \"./Options/Classes/ConnectLinks\";\nexport * from \"./Options/Interfaces/IConnect\";\nexport * from \"./Options/Interfaces/IConnectLinks\";\n","import { OptionsColor } from \"tsparticles-engine\";\nexport class GrabLinks {\n constructor() {\n this.blink = false;\n this.consent = false;\n this.opacity = 1;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.blink !== undefined) {\n this.blink = data.blink;\n }\n if (data.color !== undefined) {\n this.color = OptionsColor.create(this.color, data.color);\n }\n if (data.consent !== undefined) {\n this.consent = data.consent;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n }\n}\n","import { GrabLinks } from \"./GrabLinks\";\nexport class Grab {\n constructor() {\n this.distance = 100;\n this.links = new GrabLinks();\n }\n get lineLinked() {\n return this.links;\n }\n set lineLinked(value) {\n this.links = value;\n }\n get line_linked() {\n return this.links;\n }\n set line_linked(value) {\n this.links = value;\n }\n load(data) {\n var _a, _b;\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n this.links.load((_b = (_a = data.links) !== null && _a !== void 0 ? _a : data.lineLinked) !== null && _b !== void 0 ? _b : data.line_linked);\n }\n}\n","import { ExternalInteractorBase, drawLine, getDistance, getLinkColor, getLinkRandomColor, getStyleFromRgb, isInArray, mouseMoveEvent, } from \"tsparticles-engine\";\nimport { Grab } from \"./Options/Classes/Grab\";\nexport function drawGrabLine(context, width, begin, end, colorLine, opacity) {\n drawLine(context, begin, end);\n context.strokeStyle = getStyleFromRgb(colorLine, opacity);\n context.lineWidth = width;\n context.stroke();\n}\nfunction drawGrab(container, particle, lineColor, opacity, mousePos) {\n container.canvas.draw((ctx) => {\n var _a;\n const beginPos = particle.getPosition();\n drawGrabLine(ctx, (_a = particle.retina.linksWidth) !== null && _a !== void 0 ? _a : 0, beginPos, mousePos, lineColor, opacity);\n });\n}\nexport class Grabber extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n }\n clear() {\n }\n init() {\n const container = this.container, grab = container.actualOptions.interactivity.modes.grab;\n if (!grab) {\n return;\n }\n container.retina.grabModeDistance = grab.distance * container.retina.pixelRatio;\n }\n async interact() {\n var _a, _b;\n const container = this.container, options = container.actualOptions, interactivity = options.interactivity;\n if (!interactivity.modes.grab ||\n !interactivity.events.onHover.enable ||\n container.interactivity.status !== mouseMoveEvent) {\n return;\n }\n const mousePos = container.interactivity.mouse.position;\n if (!mousePos) {\n return;\n }\n const distance = container.retina.grabModeDistance;\n if (!distance || distance < 0) {\n return;\n }\n const query = container.particles.quadTree.queryCircle(mousePos, distance, (p) => this.isEnabled(p));\n for (const particle of query) {\n const pos = particle.getPosition(), pointDistance = getDistance(pos, mousePos);\n if (pointDistance > distance) {\n continue;\n }\n const grabLineOptions = interactivity.modes.grab.links, lineOpacity = grabLineOptions.opacity, opacityLine = lineOpacity - (pointDistance * lineOpacity) / distance;\n if (opacityLine <= 0) {\n continue;\n }\n const optColor = (_a = grabLineOptions.color) !== null && _a !== void 0 ? _a : (_b = particle.options.links) === null || _b === void 0 ? void 0 : _b.color;\n if (!container.particles.grabLineColor && optColor) {\n const linksOptions = interactivity.modes.grab.links;\n container.particles.grabLineColor = getLinkRandomColor(optColor, linksOptions.blink, linksOptions.consent);\n }\n const colorLine = getLinkColor(particle, undefined, container.particles.grabLineColor);\n if (!colorLine) {\n return;\n }\n drawGrab(container, particle, colorLine, opacityLine, mousePos);\n }\n }\n isEnabled(particle) {\n var _a;\n const container = this.container, mouse = container.interactivity.mouse, events = ((_a = particle === null || particle === void 0 ? void 0 : particle.interactivity) !== null && _a !== void 0 ? _a : container.actualOptions.interactivity).events;\n return events.onHover.enable && !!mouse.position && isInArray(\"grab\", events.onHover.mode);\n }\n loadModeOptions(options, ...sources) {\n if (!options.grab) {\n options.grab = new Grab();\n }\n for (const source of sources) {\n options.grab.load(source === null || source === void 0 ? void 0 : source.grab);\n }\n }\n reset() {\n }\n}\n","import { Grabber } from \"./Grabber\";\nexport async function loadExternalGrabInteraction(engine) {\n await engine.addInteractor(\"externalGrab\", (container) => new Grabber(container));\n}\nexport * from \"./Options/Classes/Grab\";\nexport * from \"./Options/Classes/GrabLinks\";\nexport * from \"./Options/Interfaces/IGrab\";\nexport * from \"./Options/Interfaces/IGrabLinks\";\n","import { ExternalInteractorBase } from \"tsparticles-engine\";\nexport class Pauser extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n this.handleClickMode = (mode) => {\n if (mode !== \"pause\") {\n return;\n }\n const container = this.container;\n if (container.getAnimationStatus()) {\n container.pause();\n }\n else {\n container.play();\n }\n };\n }\n clear() {\n }\n init() {\n }\n async interact() {\n }\n isEnabled() {\n return true;\n }\n reset() {\n }\n}\n","import { Pauser } from \"./Pauser\";\nexport function loadExternalPauseInteraction(engine) {\n engine.addInteractor(\"externalPause\", (container) => new Pauser(container));\n}\n","export class Push {\n constructor() {\n this.default = true;\n this.groups = [];\n this.quantity = 4;\n }\n get particles_nb() {\n return this.quantity;\n }\n set particles_nb(value) {\n this.quantity = value;\n }\n load(data) {\n var _a;\n if (!data) {\n return;\n }\n if (data.default !== undefined) {\n this.default = data.default;\n }\n if (data.groups !== undefined) {\n this.groups = data.groups.map((t) => t);\n }\n if (!this.groups.length) {\n this.default = true;\n }\n const quantity = (_a = data.quantity) !== null && _a !== void 0 ? _a : data.particles_nb;\n if (quantity !== undefined) {\n this.quantity = quantity;\n }\n }\n}\n","import { ExternalInteractorBase } from \"tsparticles-engine\";\nimport { Push } from \"./Options/Classes/Push\";\nimport { itemFromArray } from \"tsparticles-engine\";\nexport class Pusher extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n this.handleClickMode = (mode) => {\n if (mode !== \"push\") {\n return;\n }\n const container = this.container, options = container.actualOptions, pushOptions = options.interactivity.modes.push;\n if (!pushOptions) {\n return;\n }\n const pushNb = pushOptions.quantity;\n if (pushNb <= 0) {\n return;\n }\n const group = itemFromArray([undefined, ...pushOptions.groups]), groupOptions = group !== undefined ? container.actualOptions.particles.groups[group] : undefined;\n container.particles.push(pushNb, container.interactivity.mouse, groupOptions, group);\n };\n }\n clear() {\n }\n init() {\n }\n async interact() {\n }\n isEnabled() {\n return true;\n }\n loadModeOptions(options, ...sources) {\n if (!options.push) {\n options.push = new Push();\n }\n for (const source of sources) {\n options.push.load(source === null || source === void 0 ? void 0 : source.push);\n }\n }\n reset() {\n }\n}\n","import { Pusher } from \"./Pusher\";\nexport async function loadExternalPushInteraction(engine) {\n await engine.addInteractor(\"externalPush\", (container) => new Pusher(container));\n}\nexport * from \"./Options/Classes/Push\";\nexport * from \"./Options/Interfaces/IPush\";\n","export class Remove {\n constructor() {\n this.quantity = 2;\n }\n get particles_nb() {\n return this.quantity;\n }\n set particles_nb(value) {\n this.quantity = value;\n }\n load(data) {\n var _a;\n if (!data) {\n return;\n }\n const quantity = (_a = data.quantity) !== null && _a !== void 0 ? _a : data.particles_nb;\n if (quantity !== undefined) {\n this.quantity = quantity;\n }\n }\n}\n","import { ExternalInteractorBase } from \"tsparticles-engine\";\nimport { Remove } from \"./Options/Classes/Remove\";\nexport class Remover extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n this.handleClickMode = (mode) => {\n const container = this.container, options = container.actualOptions;\n if (!options.interactivity.modes.remove || mode !== \"remove\") {\n return;\n }\n const removeNb = options.interactivity.modes.remove.quantity;\n container.particles.removeQuantity(removeNb);\n };\n }\n clear() {\n }\n init() {\n }\n async interact() {\n }\n isEnabled() {\n return true;\n }\n loadModeOptions(options, ...sources) {\n if (!options.remove) {\n options.remove = new Remove();\n }\n for (const source of sources) {\n options.remove.load(source === null || source === void 0 ? void 0 : source.remove);\n }\n }\n reset() {\n }\n}\n","import { Remover } from \"./Remover\";\nexport function loadExternalRemoveInteraction(engine) {\n engine.addInteractor(\"externalRemove\", (container) => new Remover(container));\n}\nexport * from \"./Options/Classes/Remove\";\nexport * from \"./Options/Interfaces/IRemove\";\n","export class RepulseBase {\n constructor() {\n this.distance = 200;\n this.duration = 0.4;\n this.factor = 100;\n this.speed = 1;\n this.maxSpeed = 50;\n this.easing = \"ease-out-quad\";\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n if (data.duration !== undefined) {\n this.duration = data.duration;\n }\n if (data.easing !== undefined) {\n this.easing = data.easing;\n }\n if (data.factor !== undefined) {\n this.factor = data.factor;\n }\n if (data.speed !== undefined) {\n this.speed = data.speed;\n }\n if (data.maxSpeed !== undefined) {\n this.maxSpeed = data.maxSpeed;\n }\n }\n}\n","import { RepulseBase } from \"./RepulseBase\";\nimport { executeOnSingleOrMultiple } from \"tsparticles-engine\";\nexport class RepulseDiv extends RepulseBase {\n constructor() {\n super();\n this.selectors = [];\n }\n get ids() {\n return executeOnSingleOrMultiple(this.selectors, (t) => t.replace(\"#\", \"\"));\n }\n set ids(value) {\n this.selectors = executeOnSingleOrMultiple(value, (t) => `#${t}`);\n }\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n if (data.ids !== undefined) {\n this.ids = data.ids;\n }\n if (data.selectors !== undefined) {\n this.selectors = data.selectors;\n }\n }\n}\n","import { RepulseBase } from \"./RepulseBase\";\nimport { RepulseDiv } from \"./RepulseDiv\";\nimport { executeOnSingleOrMultiple } from \"tsparticles-engine\";\nexport class Repulse extends RepulseBase {\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n this.divs = executeOnSingleOrMultiple(data.divs, (div) => {\n const tmp = new RepulseDiv();\n tmp.load(div);\n return tmp;\n });\n }\n}\n","import { Circle, ExternalInteractorBase, Rectangle, Vector, clamp, divMode, divModeExecute, getDistances, getEasing, isDivModeEnabled, isInArray, mouseMoveEvent, } from \"tsparticles-engine\";\nimport { Repulse } from \"./Options/Classes/Repulse\";\nexport class Repulser extends ExternalInteractorBase {\n constructor(engine, container) {\n super(container);\n this._engine = engine;\n if (!container.repulse) {\n container.repulse = { particles: [] };\n }\n this.handleClickMode = (mode) => {\n const options = this.container.actualOptions, repulse = options.interactivity.modes.repulse;\n if (!repulse || mode !== \"repulse\") {\n return;\n }\n if (!container.repulse) {\n container.repulse = { particles: [] };\n }\n container.repulse.clicking = true;\n container.repulse.count = 0;\n for (const particle of container.repulse.particles) {\n if (!this.isEnabled(particle)) {\n continue;\n }\n particle.velocity.setTo(particle.initialVelocity);\n }\n container.repulse.particles = [];\n container.repulse.finish = false;\n setTimeout(() => {\n if (!container.destroyed) {\n if (!container.repulse) {\n container.repulse = { particles: [] };\n }\n container.repulse.clicking = false;\n }\n }, repulse.duration * 1000);\n };\n }\n clear() {\n }\n init() {\n const container = this.container, repulse = container.actualOptions.interactivity.modes.repulse;\n if (!repulse) {\n return;\n }\n container.retina.repulseModeDistance = repulse.distance * container.retina.pixelRatio;\n }\n async interact() {\n const container = this.container, options = container.actualOptions, mouseMoveStatus = container.interactivity.status === mouseMoveEvent, events = options.interactivity.events, hoverEnabled = events.onHover.enable, hoverMode = events.onHover.mode, clickEnabled = events.onClick.enable, clickMode = events.onClick.mode, divs = events.onDiv;\n if (mouseMoveStatus && hoverEnabled && isInArray(\"repulse\", hoverMode)) {\n this.hoverRepulse();\n }\n else if (clickEnabled && isInArray(\"repulse\", clickMode)) {\n this.clickRepulse();\n }\n else {\n divModeExecute(\"repulse\", divs, (selector, div) => this.singleSelectorRepulse(selector, div));\n }\n }\n isEnabled(particle) {\n var _a;\n const container = this.container, options = container.actualOptions, mouse = container.interactivity.mouse, events = ((_a = particle === null || particle === void 0 ? void 0 : particle.interactivity) !== null && _a !== void 0 ? _a : options.interactivity).events, divs = events.onDiv, divRepulse = isDivModeEnabled(\"repulse\", divs);\n if (!(divRepulse || (events.onHover.enable && mouse.position) || (events.onClick.enable && mouse.clickPosition))) {\n return false;\n }\n const hoverMode = events.onHover.mode, clickMode = events.onClick.mode;\n return isInArray(\"repulse\", hoverMode) || isInArray(\"repulse\", clickMode) || divRepulse;\n }\n loadModeOptions(options, ...sources) {\n if (!options.repulse) {\n options.repulse = new Repulse();\n }\n for (const source of sources) {\n options.repulse.load(source === null || source === void 0 ? void 0 : source.repulse);\n }\n }\n reset() {\n }\n clickRepulse() {\n const container = this.container, repulse = container.actualOptions.interactivity.modes.repulse;\n if (!repulse) {\n return;\n }\n if (!container.repulse) {\n container.repulse = { particles: [] };\n }\n if (!container.repulse.finish) {\n if (!container.repulse.count) {\n container.repulse.count = 0;\n }\n container.repulse.count++;\n if (container.repulse.count === container.particles.count) {\n container.repulse.finish = true;\n }\n }\n if (container.repulse.clicking) {\n const repulseDistance = container.retina.repulseModeDistance;\n if (!repulseDistance || repulseDistance < 0) {\n return;\n }\n const repulseRadius = Math.pow(repulseDistance / 6, 3), mouseClickPos = container.interactivity.mouse.clickPosition;\n if (mouseClickPos === undefined) {\n return;\n }\n const range = new Circle(mouseClickPos.x, mouseClickPos.y, repulseRadius), query = container.particles.quadTree.query(range, (p) => this.isEnabled(p));\n for (const particle of query) {\n const { dx, dy, distance } = getDistances(mouseClickPos, particle.position), d = distance ** 2, velocity = repulse.speed, force = (-repulseRadius * velocity) / d;\n if (d <= repulseRadius) {\n container.repulse.particles.push(particle);\n const vect = Vector.create(dx, dy);\n vect.length = force;\n particle.velocity.setTo(vect);\n }\n }\n }\n else if (container.repulse.clicking === false) {\n for (const particle of container.repulse.particles) {\n particle.velocity.setTo(particle.initialVelocity);\n }\n container.repulse.particles = [];\n }\n }\n hoverRepulse() {\n const container = this.container, mousePos = container.interactivity.mouse.position, repulseRadius = container.retina.repulseModeDistance;\n if (!repulseRadius || repulseRadius < 0 || !mousePos) {\n return;\n }\n this.processRepulse(mousePos, repulseRadius, new Circle(mousePos.x, mousePos.y, repulseRadius));\n }\n processRepulse(position, repulseRadius, area, divRepulse) {\n var _a;\n const container = this.container, query = container.particles.quadTree.query(area, (p) => this.isEnabled(p)), repulseOptions = container.actualOptions.interactivity.modes.repulse;\n if (!repulseOptions) {\n return;\n }\n for (const particle of query) {\n const { dx, dy, distance } = getDistances(particle.position, position), velocity = ((_a = divRepulse === null || divRepulse === void 0 ? void 0 : divRepulse.speed) !== null && _a !== void 0 ? _a : repulseOptions.speed) * repulseOptions.factor, repulseFactor = clamp(getEasing(repulseOptions.easing)(1 - distance / repulseRadius) * velocity, 0, repulseOptions.maxSpeed), normVec = Vector.create(distance === 0 ? velocity : (dx / distance) * repulseFactor, distance === 0 ? velocity : (dy / distance) * repulseFactor);\n particle.position.addTo(normVec);\n }\n }\n singleSelectorRepulse(selector, div) {\n const container = this.container, repulse = container.actualOptions.interactivity.modes.repulse;\n if (!repulse) {\n return;\n }\n const query = document.querySelectorAll(selector);\n if (!query.length) {\n return;\n }\n query.forEach((item) => {\n const elem = item, pxRatio = container.retina.pixelRatio, pos = {\n x: (elem.offsetLeft + elem.offsetWidth / 2) * pxRatio,\n y: (elem.offsetTop + elem.offsetHeight / 2) * pxRatio,\n }, repulseRadius = (elem.offsetWidth / 2) * pxRatio, area = div.type === \"circle\"\n ? new Circle(pos.x, pos.y, repulseRadius)\n : new Rectangle(elem.offsetLeft * pxRatio, elem.offsetTop * pxRatio, elem.offsetWidth * pxRatio, elem.offsetHeight * pxRatio), divs = repulse.divs, divRepulse = divMode(divs, elem);\n this.processRepulse(pos, repulseRadius, area, divRepulse);\n });\n }\n}\n","import { Repulser } from \"./Repulser\";\nexport async function loadExternalRepulseInteraction(engine) {\n await engine.addInteractor(\"externalRepulse\", (container) => new Repulser(engine, container));\n}\nexport * from \"./Options/Classes/RepulseBase\";\nexport * from \"./Options/Classes/RepulseDiv\";\nexport * from \"./Options/Classes/Repulse\";\nexport * from \"./Options/Interfaces/IRepulseBase\";\nexport * from \"./Options/Interfaces/IRepulseDiv\";\nexport * from \"./Options/Interfaces/IRepulse\";\n","export class Slow {\n constructor() {\n this.factor = 3;\n this.radius = 200;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.factor !== undefined) {\n this.factor = data.factor;\n }\n if (data.radius !== undefined) {\n this.radius = data.radius;\n }\n }\n}\n","import { ExternalInteractorBase, getDistance, isInArray } from \"tsparticles-engine\";\nimport { Slow } from \"./Options/Classes/Slow\";\nexport class Slower extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n }\n clear(particle, delta, force) {\n if (particle.slow.inRange && !force) {\n return;\n }\n particle.slow.factor = 1;\n }\n init() {\n const container = this.container, slow = container.actualOptions.interactivity.modes.slow;\n if (!slow) {\n return;\n }\n container.retina.slowModeRadius = slow.radius * container.retina.pixelRatio;\n }\n async interact() {\n }\n isEnabled(particle) {\n var _a;\n const container = this.container, mouse = container.interactivity.mouse, events = ((_a = particle === null || particle === void 0 ? void 0 : particle.interactivity) !== null && _a !== void 0 ? _a : container.actualOptions.interactivity).events;\n return events.onHover.enable && !!mouse.position && isInArray(\"slow\", events.onHover.mode);\n }\n loadModeOptions(options, ...sources) {\n if (!options.slow) {\n options.slow = new Slow();\n }\n for (const source of sources) {\n options.slow.load(source === null || source === void 0 ? void 0 : source.slow);\n }\n }\n reset(particle) {\n particle.slow.inRange = false;\n const container = this.container, options = container.actualOptions, mousePos = container.interactivity.mouse.position, radius = container.retina.slowModeRadius, slow = options.interactivity.modes.slow;\n if (!slow || !radius || radius < 0 || !mousePos) {\n return;\n }\n const particlePos = particle.getPosition(), dist = getDistance(mousePos, particlePos), proximityFactor = dist / radius, slowFactor = slow.factor;\n if (dist <= radius) {\n particle.slow.inRange = true;\n particle.slow.factor = proximityFactor / slowFactor;\n }\n }\n}\n","import { Slower } from \"./Slower\";\nexport async function loadExternalSlowInteraction(engine) {\n await engine.addInteractor(\"externalSlow\", (container) => new Slower(container));\n}\nexport * from \"./Options/Classes/Slow\";\nexport * from \"./Options/Interfaces/ISlow\";\n","import { getStyleFromHsl } from \"tsparticles-engine\";\nconst currentColorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\\((-?\\d+%?[,\\s]+){2,3}\\s*[\\d.]+%?\\))|currentcolor/gi;\nfunction replaceColorSvg(imageShape, color, opacity) {\n const { svgData } = imageShape;\n if (!svgData) {\n return \"\";\n }\n const colorStyle = getStyleFromHsl(color, opacity);\n if (svgData.includes(\"fill\")) {\n return svgData.replace(currentColorRegex, () => colorStyle);\n }\n const preFillIndex = svgData.indexOf(\">\");\n return `${svgData.substring(0, preFillIndex)} fill=\"${colorStyle}\"${svgData.substring(preFillIndex)}`;\n}\nexport async function loadImage(image) {\n return new Promise((resolve) => {\n image.loading = true;\n const img = new Image();\n image.element = img;\n img.addEventListener(\"load\", () => {\n image.loading = false;\n resolve();\n });\n img.addEventListener(\"error\", () => {\n image.element = undefined;\n image.error = true;\n image.loading = false;\n console.error(`Error tsParticles - loading image: ${image.source}`);\n resolve();\n });\n img.src = image.source;\n });\n}\nexport async function downloadSvgImage(image) {\n if (image.type !== \"svg\") {\n await loadImage(image);\n return;\n }\n image.loading = true;\n const response = await fetch(image.source);\n if (!response.ok) {\n console.error(\"Error tsParticles - Image not found\");\n image.error = true;\n }\n if (!image.error) {\n image.svgData = await response.text();\n }\n image.loading = false;\n}\nexport function replaceImageColor(image, imageData, color, particle) {\n var _a, _b, _c;\n const svgColoredData = replaceColorSvg(image, color, (_b = (_a = particle.opacity) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : 1), imageRes = {\n color,\n data: Object.assign(Object.assign({}, image), { svgData: svgColoredData }),\n loaded: false,\n ratio: imageData.width / imageData.height,\n replaceColor: (_c = imageData.replaceColor) !== null && _c !== void 0 ? _c : imageData.replace_color,\n source: imageData.src,\n };\n return new Promise((resolve) => {\n const svg = new Blob([svgColoredData], { type: \"image/svg+xml\" }), domUrl = URL || window.URL || window.webkitURL || window, url = domUrl.createObjectURL(svg), img = new Image();\n img.addEventListener(\"load\", () => {\n imageRes.loaded = true;\n imageRes.element = img;\n resolve(imageRes);\n domUrl.revokeObjectURL(url);\n });\n img.addEventListener(\"error\", async () => {\n domUrl.revokeObjectURL(url);\n const img2 = Object.assign(Object.assign({}, image), { error: false, loading: true });\n await loadImage(img2);\n imageRes.loaded = true;\n imageRes.element = img2.element;\n resolve(imageRes);\n });\n img.src = url;\n });\n}\n","import { downloadSvgImage, loadImage, replaceImageColor } from \"./Utils\";\nexport class ImageDrawer {\n constructor() {\n this._images = [];\n }\n addImage(container, image) {\n const containerImages = this.getImages(container);\n containerImages === null || containerImages === void 0 ? void 0 : containerImages.images.push(image);\n }\n destroy() {\n this._images = [];\n }\n draw(context, particle, radius, opacity) {\n var _a;\n const image = particle.image, element = image === null || image === void 0 ? void 0 : image.element;\n if (!element) {\n return;\n }\n const ratio = (_a = image === null || image === void 0 ? void 0 : image.ratio) !== null && _a !== void 0 ? _a : 1, pos = {\n x: -radius,\n y: -radius,\n };\n context.globalAlpha = opacity;\n context.drawImage(element, pos.x, pos.y, radius * 2, (radius * 2) / ratio);\n context.globalAlpha = 1;\n }\n getImages(container) {\n const containerImages = this._images.find((t) => t.id === container.id);\n if (!containerImages) {\n this._images.push({\n id: container.id,\n images: [],\n });\n return this.getImages(container);\n }\n else {\n return containerImages;\n }\n }\n getSidesCount() {\n return 12;\n }\n loadShape(particle) {\n if (particle.shape !== \"image\" && particle.shape !== \"images\") {\n return;\n }\n const container = particle.container, images = this.getImages(container).images, imageData = particle.shapeData, image = images.find((t) => t.source === imageData.src);\n if (!image) {\n this.loadImageShape(container, imageData).then(() => {\n this.loadShape(particle);\n });\n }\n }\n particleInit(container, particle) {\n var _a;\n if (particle.shape !== \"image\" && particle.shape !== \"images\") {\n return;\n }\n const images = this.getImages(container).images, imageData = particle.shapeData, color = particle.getFillColor(), replaceColor = (_a = imageData.replaceColor) !== null && _a !== void 0 ? _a : imageData.replace_color, image = images.find((t) => t.source === imageData.src);\n if (!image) {\n return;\n }\n if (image.loading) {\n setTimeout(() => {\n this.particleInit(container, particle);\n });\n return;\n }\n (async () => {\n var _a, _b;\n let imageRes;\n if (image.svgData && color) {\n imageRes = await replaceImageColor(image, imageData, color, particle);\n }\n else {\n imageRes = {\n color,\n data: image,\n element: image.element,\n loaded: true,\n ratio: imageData.width / imageData.height,\n replaceColor: replaceColor,\n source: imageData.src,\n };\n }\n if (!imageRes.ratio) {\n imageRes.ratio = 1;\n }\n const fill = (_a = imageData.fill) !== null && _a !== void 0 ? _a : particle.fill, close = (_b = imageData.close) !== null && _b !== void 0 ? _b : particle.close, imageShape = {\n image: imageRes,\n fill,\n close,\n };\n particle.image = imageShape.image;\n particle.fill = imageShape.fill;\n particle.close = imageShape.close;\n })();\n }\n async loadImageShape(container, imageShape) {\n var _a;\n const source = imageShape.src;\n if (!source) {\n throw new Error(\"Error tsParticles - No image.src\");\n }\n try {\n const image = {\n source: source,\n type: source.substring(source.length - 3),\n error: false,\n loading: true,\n };\n this.addImage(container, image);\n const imageFunc = ((_a = imageShape.replaceColor) !== null && _a !== void 0 ? _a : imageShape.replace_color) ? downloadSvgImage : loadImage;\n await imageFunc(image);\n }\n catch (_b) {\n throw new Error(`tsParticles error - ${imageShape.src} not found`);\n }\n }\n}\n","import { ImageDrawer } from \"./ImageDrawer\";\nexport async function loadImageShape(engine) {\n const imageDrawer = new ImageDrawer();\n await engine.addShape(\"image\", imageDrawer);\n await engine.addShape(\"images\", imageDrawer);\n}\n","import { ValueWithRandom } from \"tsparticles-engine\";\nexport class LifeDelay extends ValueWithRandom {\n constructor() {\n super();\n this.sync = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n super.load(data);\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { ValueWithRandom } from \"tsparticles-engine\";\nexport class LifeDuration extends ValueWithRandom {\n constructor() {\n super();\n this.random.minimumValue = 0.0001;\n this.sync = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n super.load(data);\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { LifeDelay } from \"./LifeDelay\";\nimport { LifeDuration } from \"./LifeDuration\";\nexport class Life {\n constructor() {\n this.count = 0;\n this.delay = new LifeDelay();\n this.duration = new LifeDuration();\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.count !== undefined) {\n this.count = data.count;\n }\n this.delay.load(data.delay);\n this.duration.load(data.duration);\n }\n}\n","import { getRandom, getRangeValue, randomInRange, setRangeValue } from \"tsparticles-engine\";\nimport { Life } from \"./Options/Classes/Life\";\nexport class LifeUpdater {\n constructor(container) {\n this.container = container;\n }\n init(particle) {\n const container = this.container, particlesOptions = particle.options, lifeOptions = particlesOptions.life;\n if (!lifeOptions) {\n return;\n }\n particle.life = {\n delay: container.retina.reduceFactor\n ? ((getRangeValue(lifeOptions.delay.value) * (lifeOptions.delay.sync ? 1 : getRandom())) /\n container.retina.reduceFactor) *\n 1000\n : 0,\n delayTime: 0,\n duration: container.retina.reduceFactor\n ? ((getRangeValue(lifeOptions.duration.value) * (lifeOptions.duration.sync ? 1 : getRandom())) /\n container.retina.reduceFactor) *\n 1000\n : 0,\n time: 0,\n count: lifeOptions.count,\n };\n if (particle.life.duration <= 0) {\n particle.life.duration = -1;\n }\n if (particle.life.count <= 0) {\n particle.life.count = -1;\n }\n if (particle.life) {\n particle.spawning = particle.life.delay > 0;\n }\n }\n isEnabled(particle) {\n return !particle.destroyed;\n }\n loadOptions(options, ...sources) {\n if (!options.life) {\n options.life = new Life();\n }\n for (const source of sources) {\n options.life.load(source === null || source === void 0 ? void 0 : source.life);\n }\n }\n update(particle, delta) {\n if (!this.isEnabled(particle) || !particle.life) {\n return;\n }\n const life = particle.life;\n let justSpawned = false;\n if (particle.spawning) {\n life.delayTime += delta.value;\n if (life.delayTime >= particle.life.delay) {\n justSpawned = true;\n particle.spawning = false;\n life.delayTime = 0;\n life.time = 0;\n }\n else {\n return;\n }\n }\n if (life.duration === -1) {\n return;\n }\n if (particle.spawning) {\n return;\n }\n if (justSpawned) {\n life.time = 0;\n }\n else {\n life.time += delta.value;\n }\n if (life.time < life.duration) {\n return;\n }\n life.time = 0;\n if (particle.life.count > 0) {\n particle.life.count--;\n }\n if (particle.life.count === 0) {\n particle.destroy();\n return;\n }\n const canvasSize = this.container.canvas.size, widthRange = setRangeValue(0, canvasSize.width), heightRange = setRangeValue(0, canvasSize.width);\n particle.position.x = randomInRange(widthRange);\n particle.position.y = randomInRange(heightRange);\n particle.spawning = true;\n life.delayTime = 0;\n life.time = 0;\n particle.reset();\n const lifeOptions = particle.options.life;\n if (lifeOptions) {\n life.delay = getRangeValue(lifeOptions.delay.value) * 1000;\n life.duration = getRangeValue(lifeOptions.duration.value) * 1000;\n }\n }\n}\n","import { LifeUpdater } from \"./LifeUpdater\";\nexport async function loadLifeUpdater(engine) {\n await engine.addParticleUpdater(\"life\", (container) => new LifeUpdater(container));\n}\n","export class LineDrawer {\n draw(context, particle, radius) {\n context.moveTo(-radius / 2, 0);\n context.lineTo(radius / 2, 0);\n }\n getSidesCount() {\n return 1;\n }\n}\n","import { LineDrawer } from \"./LineDrawer\";\nexport async function loadLineShape(engine) {\n await engine.addShape(\"line\", new LineDrawer());\n}\n","import { clamp, getRandom, getRangeMax, getRangeMin, getRangeValue, randomInRange, } from \"tsparticles-engine\";\nfunction checkDestroy(particle, value, minValue, maxValue) {\n switch (particle.options.opacity.animation.destroy) {\n case \"max\":\n if (value >= maxValue) {\n particle.destroy();\n }\n break;\n case \"min\":\n if (value <= minValue) {\n particle.destroy();\n }\n break;\n }\n}\nfunction updateOpacity(particle, delta) {\n var _a, _b, _c, _d, _e, _f;\n if (!particle.opacity) {\n return;\n }\n const minValue = particle.opacity.min, maxValue = particle.opacity.max, decay = (_a = particle.opacity.decay) !== null && _a !== void 0 ? _a : 1;\n if (particle.destroyed ||\n !particle.opacity.enable ||\n (((_b = particle.opacity.maxLoops) !== null && _b !== void 0 ? _b : 0) > 0 && ((_c = particle.opacity.loops) !== null && _c !== void 0 ? _c : 0) > ((_d = particle.opacity.maxLoops) !== null && _d !== void 0 ? _d : 0))) {\n return;\n }\n switch (particle.opacity.status) {\n case \"increasing\":\n if (particle.opacity.value >= maxValue) {\n particle.opacity.status = \"decreasing\";\n if (!particle.opacity.loops) {\n particle.opacity.loops = 0;\n }\n particle.opacity.loops++;\n }\n else {\n particle.opacity.value += ((_e = particle.opacity.velocity) !== null && _e !== void 0 ? _e : 0) * delta.factor;\n }\n break;\n case \"decreasing\":\n if (particle.opacity.value <= minValue) {\n particle.opacity.status = \"increasing\";\n if (!particle.opacity.loops) {\n particle.opacity.loops = 0;\n }\n particle.opacity.loops++;\n }\n else {\n particle.opacity.value -= ((_f = particle.opacity.velocity) !== null && _f !== void 0 ? _f : 0) * delta.factor;\n }\n break;\n }\n if (particle.opacity.velocity && particle.opacity.decay !== 1) {\n particle.opacity.velocity *= decay;\n }\n checkDestroy(particle, particle.opacity.value, minValue, maxValue);\n if (!particle.destroyed) {\n particle.opacity.value = clamp(particle.opacity.value, minValue, maxValue);\n }\n}\nexport class OpacityUpdater {\n constructor(container) {\n this.container = container;\n }\n init(particle) {\n const opacityOptions = particle.options.opacity;\n particle.opacity = {\n enable: opacityOptions.animation.enable,\n max: getRangeMax(opacityOptions.value),\n min: getRangeMin(opacityOptions.value),\n value: getRangeValue(opacityOptions.value),\n loops: 0,\n maxLoops: getRangeValue(opacityOptions.animation.count),\n };\n const opacityAnimation = opacityOptions.animation;\n if (opacityAnimation.enable) {\n particle.opacity.decay = 1 - getRangeValue(opacityAnimation.decay);\n particle.opacity.status = \"increasing\";\n const opacityRange = opacityOptions.value;\n particle.opacity.min = getRangeMin(opacityRange);\n particle.opacity.max = getRangeMax(opacityRange);\n switch (opacityAnimation.startValue) {\n case \"min\":\n particle.opacity.value = particle.opacity.min;\n particle.opacity.status = \"increasing\";\n break;\n case \"random\":\n particle.opacity.value = randomInRange(particle.opacity);\n particle.opacity.status =\n getRandom() >= 0.5 ? \"increasing\" : \"decreasing\";\n break;\n case \"max\":\n default:\n particle.opacity.value = particle.opacity.max;\n particle.opacity.status = \"decreasing\";\n break;\n }\n particle.opacity.velocity =\n (getRangeValue(opacityAnimation.speed) / 100) * this.container.retina.reduceFactor;\n if (!opacityAnimation.sync) {\n particle.opacity.velocity *= getRandom();\n }\n }\n }\n isEnabled(particle) {\n var _a, _b, _c, _d;\n return (!particle.destroyed &&\n !particle.spawning &&\n !!particle.opacity &&\n particle.opacity.enable &&\n (((_a = particle.opacity.maxLoops) !== null && _a !== void 0 ? _a : 0) <= 0 ||\n (((_b = particle.opacity.maxLoops) !== null && _b !== void 0 ? _b : 0) > 0 &&\n ((_c = particle.opacity.loops) !== null && _c !== void 0 ? _c : 0) < ((_d = particle.opacity.maxLoops) !== null && _d !== void 0 ? _d : 0))));\n }\n reset(particle) {\n if (particle.opacity) {\n particle.opacity.loops = 0;\n }\n }\n update(particle, delta) {\n if (!this.isEnabled(particle)) {\n return;\n }\n updateOpacity(particle, delta);\n }\n}\n","import { OpacityUpdater } from \"./OpacityUpdater\";\nexport async function loadOpacityUpdater(engine) {\n await engine.addParticleUpdater(\"opacity\", (container) => new OpacityUpdater(container));\n}\n","import { getValue } from \"tsparticles-engine\";\nexport function bounceHorizontal(data) {\n if (data.outMode !== \"bounce\" &&\n data.outMode !== \"bounce-horizontal\" &&\n data.outMode !== \"bounceHorizontal\" &&\n data.outMode !== \"split\") {\n return;\n }\n if (data.bounds.right < 0) {\n data.particle.position.x = data.size + data.offset.x;\n }\n else if (data.bounds.left > data.canvasSize.width) {\n data.particle.position.x = data.canvasSize.width - data.size - data.offset.x;\n }\n const velocity = data.particle.velocity.x;\n let bounced = false;\n if ((data.direction === \"right\" && data.bounds.right >= data.canvasSize.width && velocity > 0) ||\n (data.direction === \"left\" && data.bounds.left <= 0 && velocity < 0)) {\n const newVelocity = getValue(data.particle.options.bounce.horizontal);\n data.particle.velocity.x *= -newVelocity;\n bounced = true;\n }\n if (!bounced) {\n return;\n }\n const minPos = data.offset.x + data.size;\n if (data.bounds.right >= data.canvasSize.width) {\n data.particle.position.x = data.canvasSize.width - minPos;\n }\n else if (data.bounds.left <= 0) {\n data.particle.position.x = minPos;\n }\n if (data.outMode === \"split\") {\n data.particle.destroy();\n }\n}\nexport function bounceVertical(data) {\n if (data.outMode !== \"bounce\" &&\n data.outMode !== \"bounce-vertical\" &&\n data.outMode !== \"bounceVertical\" &&\n data.outMode !== \"split\") {\n return;\n }\n if (data.bounds.bottom < 0) {\n data.particle.position.y = data.size + data.offset.y;\n }\n else if (data.bounds.top > data.canvasSize.height) {\n data.particle.position.y = data.canvasSize.height - data.size - data.offset.y;\n }\n const velocity = data.particle.velocity.y;\n let bounced = false;\n if ((data.direction === \"bottom\" && data.bounds.bottom >= data.canvasSize.height && velocity > 0) ||\n (data.direction === \"top\" && data.bounds.top <= 0 && velocity < 0)) {\n const newVelocity = getValue(data.particle.options.bounce.vertical);\n data.particle.velocity.y *= -newVelocity;\n bounced = true;\n }\n if (!bounced) {\n return;\n }\n const minPos = data.offset.y + data.size;\n if (data.bounds.bottom >= data.canvasSize.height) {\n data.particle.position.y = data.canvasSize.height - minPos;\n }\n else if (data.bounds.top <= 0) {\n data.particle.position.y = minPos;\n }\n if (data.outMode === \"split\") {\n data.particle.destroy();\n }\n}\n","import { calculateBounds } from \"tsparticles-engine\";\nimport { bounceHorizontal, bounceVertical } from \"./Utils\";\nexport class BounceOutMode {\n constructor(container) {\n this.container = container;\n this.modes = [\n \"bounce\",\n \"bounce-vertical\",\n \"bounce-horizontal\",\n \"bounceVertical\",\n \"bounceHorizontal\",\n \"split\",\n ];\n }\n update(particle, direction, delta, outMode) {\n if (!this.modes.includes(outMode)) {\n return;\n }\n const container = this.container;\n let handled = false;\n for (const [, plugin] of container.plugins) {\n if (plugin.particleBounce !== undefined) {\n handled = plugin.particleBounce(particle, delta, direction);\n }\n if (handled) {\n break;\n }\n }\n if (handled) {\n return;\n }\n const pos = particle.getPosition(), offset = particle.offset, size = particle.getRadius(), bounds = calculateBounds(pos, size), canvasSize = container.canvas.size;\n bounceHorizontal({ particle, outMode, direction, bounds, canvasSize, offset, size });\n bounceVertical({ particle, outMode, direction, bounds, canvasSize, offset, size });\n }\n}\n","import { Vector, getDistances, isPointInside } from \"tsparticles-engine\";\nexport class DestroyOutMode {\n constructor(container) {\n this.container = container;\n this.modes = [\"destroy\"];\n }\n update(particle, direction, delta, outMode) {\n if (!this.modes.includes(outMode)) {\n return;\n }\n const container = this.container;\n switch (particle.outType) {\n case \"normal\":\n case \"outside\":\n if (isPointInside(particle.position, container.canvas.size, Vector.origin, particle.getRadius(), direction)) {\n return;\n }\n break;\n case \"inside\": {\n const { dx, dy } = getDistances(particle.position, particle.moveCenter);\n const { x: vx, y: vy } = particle.velocity;\n if ((vx < 0 && dx > particle.moveCenter.radius) ||\n (vy < 0 && dy > particle.moveCenter.radius) ||\n (vx >= 0 && dx < -particle.moveCenter.radius) ||\n (vy >= 0 && dy < -particle.moveCenter.radius)) {\n return;\n }\n break;\n }\n }\n container.particles.remove(particle, undefined, true);\n }\n}\n","import { Vector, isPointInside } from \"tsparticles-engine\";\nexport class NoneOutMode {\n constructor(container) {\n this.container = container;\n this.modes = [\"none\"];\n }\n update(particle, direction, delta, outMode) {\n if (!this.modes.includes(outMode)) {\n return;\n }\n if ((particle.options.move.distance.horizontal &&\n (direction === \"left\" || direction === \"right\")) ||\n (particle.options.move.distance.vertical &&\n (direction === \"top\" || direction === \"bottom\"))) {\n return;\n }\n const gravityOptions = particle.options.move.gravity, container = this.container;\n const canvasSize = container.canvas.size;\n const pRadius = particle.getRadius();\n if (!gravityOptions.enable) {\n if ((particle.velocity.y > 0 && particle.position.y <= canvasSize.height + pRadius) ||\n (particle.velocity.y < 0 && particle.position.y >= -pRadius) ||\n (particle.velocity.x > 0 && particle.position.x <= canvasSize.width + pRadius) ||\n (particle.velocity.x < 0 && particle.position.x >= -pRadius)) {\n return;\n }\n if (!isPointInside(particle.position, container.canvas.size, Vector.origin, pRadius, direction)) {\n container.particles.remove(particle);\n }\n }\n else {\n const position = particle.position;\n if ((!gravityOptions.inverse &&\n position.y > canvasSize.height + pRadius &&\n direction === \"bottom\") ||\n (gravityOptions.inverse && position.y < -pRadius && direction === \"top\")) {\n container.particles.remove(particle);\n }\n }\n }\n}\n","import { Vector, calculateBounds, getDistances, getRandom, isPointInside, randomInRange, } from \"tsparticles-engine\";\nexport class OutOutMode {\n constructor(container) {\n this.container = container;\n this.modes = [\"out\"];\n }\n update(particle, direction, delta, outMode) {\n if (!this.modes.includes(outMode)) {\n return;\n }\n const container = this.container;\n switch (particle.outType) {\n case \"inside\": {\n const { x: vx, y: vy } = particle.velocity;\n const circVec = Vector.origin;\n circVec.length = particle.moveCenter.radius;\n circVec.angle = particle.velocity.angle + Math.PI;\n circVec.addTo(Vector.create(particle.moveCenter));\n const { dx, dy } = getDistances(particle.position, circVec);\n if ((vx <= 0 && dx >= 0) || (vy <= 0 && dy >= 0) || (vx >= 0 && dx <= 0) || (vy >= 0 && dy <= 0)) {\n return;\n }\n particle.position.x = Math.floor(randomInRange({\n min: 0,\n max: container.canvas.size.width,\n }));\n particle.position.y = Math.floor(randomInRange({\n min: 0,\n max: container.canvas.size.height,\n }));\n const { dx: newDx, dy: newDy } = getDistances(particle.position, particle.moveCenter);\n particle.direction = Math.atan2(-newDy, -newDx);\n particle.velocity.angle = particle.direction;\n break;\n }\n default: {\n if (isPointInside(particle.position, container.canvas.size, Vector.origin, particle.getRadius(), direction)) {\n return;\n }\n switch (particle.outType) {\n case \"outside\": {\n particle.position.x =\n Math.floor(randomInRange({\n min: -particle.moveCenter.radius,\n max: particle.moveCenter.radius,\n })) + particle.moveCenter.x;\n particle.position.y =\n Math.floor(randomInRange({\n min: -particle.moveCenter.radius,\n max: particle.moveCenter.radius,\n })) + particle.moveCenter.y;\n const { dx, dy } = getDistances(particle.position, particle.moveCenter);\n if (particle.moveCenter.radius) {\n particle.direction = Math.atan2(dy, dx);\n particle.velocity.angle = particle.direction;\n }\n break;\n }\n case \"normal\": {\n const wrap = particle.options.move.warp, canvasSize = container.canvas.size, newPos = {\n bottom: canvasSize.height + particle.getRadius() + particle.offset.y,\n left: -particle.getRadius() - particle.offset.x,\n right: canvasSize.width + particle.getRadius() + particle.offset.x,\n top: -particle.getRadius() - particle.offset.y,\n }, sizeValue = particle.getRadius(), nextBounds = calculateBounds(particle.position, sizeValue);\n if (direction === \"right\" &&\n nextBounds.left > canvasSize.width + particle.offset.x) {\n particle.position.x = newPos.left;\n particle.initialPosition.x = particle.position.x;\n if (!wrap) {\n particle.position.y = getRandom() * canvasSize.height;\n particle.initialPosition.y = particle.position.y;\n }\n }\n else if (direction === \"left\" && nextBounds.right < -particle.offset.x) {\n particle.position.x = newPos.right;\n particle.initialPosition.x = particle.position.x;\n if (!wrap) {\n particle.position.y = getRandom() * canvasSize.height;\n particle.initialPosition.y = particle.position.y;\n }\n }\n if (direction === \"bottom\" &&\n nextBounds.top > canvasSize.height + particle.offset.y) {\n if (!wrap) {\n particle.position.x = getRandom() * canvasSize.width;\n particle.initialPosition.x = particle.position.x;\n }\n particle.position.y = newPos.top;\n particle.initialPosition.y = particle.position.y;\n }\n else if (direction === \"top\" && nextBounds.bottom < -particle.offset.y) {\n if (!wrap) {\n particle.position.x = getRandom() * canvasSize.width;\n particle.initialPosition.x = particle.position.x;\n }\n particle.position.y = newPos.bottom;\n particle.initialPosition.y = particle.position.y;\n }\n break;\n }\n }\n break;\n }\n }\n }\n}\n","import { BounceOutMode } from \"./BounceOutMode\";\nimport { DestroyOutMode } from \"./DestroyOutMode\";\nimport { NoneOutMode } from \"./NoneOutMode\";\nimport { OutOutMode } from \"./OutOutMode\";\nexport class OutOfCanvasUpdater {\n constructor(container) {\n this.container = container;\n this.updaters = [\n new BounceOutMode(container),\n new DestroyOutMode(container),\n new OutOutMode(container),\n new NoneOutMode(container),\n ];\n }\n init() {\n }\n isEnabled(particle) {\n return !particle.destroyed && !particle.spawning;\n }\n update(particle, delta) {\n var _a, _b, _c, _d;\n const outModes = particle.options.move.outModes;\n this.updateOutMode(particle, delta, (_a = outModes.bottom) !== null && _a !== void 0 ? _a : outModes.default, \"bottom\");\n this.updateOutMode(particle, delta, (_b = outModes.left) !== null && _b !== void 0 ? _b : outModes.default, \"left\");\n this.updateOutMode(particle, delta, (_c = outModes.right) !== null && _c !== void 0 ? _c : outModes.default, \"right\");\n this.updateOutMode(particle, delta, (_d = outModes.top) !== null && _d !== void 0 ? _d : outModes.default, \"top\");\n }\n updateOutMode(particle, delta, outMode, direction) {\n for (const updater of this.updaters) {\n updater.update(particle, direction, delta, outMode);\n }\n }\n}\n","import { OutOfCanvasUpdater } from \"./OutOfCanvasUpdater\";\nexport async function loadOutModesUpdater(engine) {\n await engine.addParticleUpdater(\"outModes\", (container) => new OutOfCanvasUpdater(container));\n}\n","import { isSsr } from \"tsparticles-engine\";\nexport class ParallaxMover {\n init() {\n }\n isEnabled(particle) {\n return (!isSsr() &&\n !particle.destroyed &&\n particle.container.actualOptions.interactivity.events.onHover.parallax.enable);\n }\n move(particle) {\n const container = particle.container, options = container.actualOptions;\n if (isSsr() || !options.interactivity.events.onHover.parallax.enable) {\n return;\n }\n const parallaxForce = options.interactivity.events.onHover.parallax.force, mousePos = container.interactivity.mouse.position;\n if (!mousePos) {\n return;\n }\n const canvasCenter = {\n x: container.canvas.size.width / 2,\n y: container.canvas.size.height / 2,\n }, parallaxSmooth = options.interactivity.events.onHover.parallax.smooth, factor = particle.getRadius() / parallaxForce, centerDistance = {\n x: (mousePos.x - canvasCenter.x) * factor,\n y: (mousePos.y - canvasCenter.y) * factor,\n };\n particle.offset.x += (centerDistance.x - particle.offset.x) / parallaxSmooth;\n particle.offset.y += (centerDistance.y - particle.offset.y) / parallaxSmooth;\n }\n}\n","import { ParallaxMover } from \"./ParallaxMover\";\nexport async function loadParallaxMover(engine) {\n engine.addMover(\"parallax\", () => new ParallaxMover());\n}\n","import { ParticlesInteractorBase, getDistances } from \"tsparticles-engine\";\nexport class Attractor extends ParticlesInteractorBase {\n constructor(container) {\n super(container);\n }\n clear() {\n }\n init() {\n }\n async interact(p1) {\n var _a;\n const container = this.container, distance = (_a = p1.retina.attractDistance) !== null && _a !== void 0 ? _a : container.retina.attractDistance, pos1 = p1.getPosition(), query = container.particles.quadTree.queryCircle(pos1, distance);\n for (const p2 of query) {\n if (p1 === p2 || !p2.options.move.attract.enable || p2.destroyed || p2.spawning) {\n continue;\n }\n const pos2 = p2.getPosition(), { dx, dy } = getDistances(pos1, pos2), rotate = p1.options.move.attract.rotate, ax = dx / (rotate.x * 1000), ay = dy / (rotate.y * 1000), p1Factor = p2.size.value / p1.size.value, p2Factor = 1 / p1Factor;\n p1.velocity.x -= ax * p1Factor;\n p1.velocity.y -= ay * p1Factor;\n p2.velocity.x += ax * p2Factor;\n p2.velocity.y += ay * p2Factor;\n }\n }\n isEnabled(particle) {\n return particle.options.move.attract.enable;\n }\n reset() {\n }\n}\n","import { Attractor } from \"./Attractor\";\nexport async function loadParticlesAttractInteraction(engine) {\n await engine.addInteractor(\"particlesAttract\", (container) => new Attractor(container));\n}\n","import { clamp } from \"tsparticles-engine\";\nfunction updateAbsorb(p1, r1, p2, r2, delta, pixelRatio) {\n const factor = clamp((p1.options.collisions.absorb.speed * delta.factor) / 10, 0, r2);\n p1.size.value += factor / 2;\n p2.size.value -= factor;\n if (r2 <= pixelRatio) {\n p2.size.value = 0;\n p2.destroy();\n }\n}\nexport function absorb(p1, p2, delta, pixelRatio) {\n const r1 = p1.getRadius(), r2 = p2.getRadius();\n if (r1 === undefined && r2 !== undefined) {\n p1.destroy();\n }\n else if (r1 !== undefined && r2 === undefined) {\n p2.destroy();\n }\n else if (r1 !== undefined && r2 !== undefined) {\n if (r1 >= r2) {\n updateAbsorb(p1, r1, p2, r2, delta, pixelRatio);\n }\n else {\n updateAbsorb(p2, r2, p1, r1, delta, pixelRatio);\n }\n }\n}\n","import { circleBounce, circleBounceDataFromParticle } from \"tsparticles-engine\";\nexport function bounce(p1, p2) {\n circleBounce(circleBounceDataFromParticle(p1), circleBounceDataFromParticle(p2));\n}\n","import { bounce } from \"./Bounce\";\nexport function destroy(p1, p2) {\n if (!p1.unbreakable && !p2.unbreakable) {\n bounce(p1, p2);\n }\n if (p1.getRadius() === undefined && p2.getRadius() !== undefined) {\n p1.destroy();\n }\n else if (p1.getRadius() !== undefined && p2.getRadius() === undefined) {\n p2.destroy();\n }\n else if (p1.getRadius() !== undefined && p2.getRadius() !== undefined) {\n const deleteP = p1.getRadius() >= p2.getRadius() ? p1 : p2;\n deleteP.destroy();\n }\n}\n","import { absorb } from \"./Absorb\";\nimport { bounce } from \"./Bounce\";\nimport { destroy } from \"./Destroy\";\nexport function resolveCollision(p1, p2, delta, pixelRatio) {\n switch (p1.options.collisions.mode) {\n case \"absorb\": {\n absorb(p1, p2, delta, pixelRatio);\n break;\n }\n case \"bounce\": {\n bounce(p1, p2);\n break;\n }\n case \"destroy\": {\n destroy(p1, p2);\n break;\n }\n }\n}\n","import { ParticlesInteractorBase, getDistance } from \"tsparticles-engine\";\nimport { resolveCollision } from \"./ResolveCollision\";\nexport class Collider extends ParticlesInteractorBase {\n constructor(container) {\n super(container);\n }\n clear() {\n }\n init() {\n }\n async interact(p1, delta) {\n const container = this.container, pos1 = p1.getPosition(), radius1 = p1.getRadius(), query = container.particles.quadTree.queryCircle(pos1, radius1 * 2);\n for (const p2 of query) {\n if (p1 === p2 ||\n !p2.options.collisions.enable ||\n p1.options.collisions.mode !== p2.options.collisions.mode ||\n p2.destroyed ||\n p2.spawning) {\n continue;\n }\n const pos2 = p2.getPosition(), radius2 = p2.getRadius();\n if (Math.abs(Math.round(pos1.z) - Math.round(pos2.z)) > radius1 + radius2) {\n continue;\n }\n const dist = getDistance(pos1, pos2), distP = radius1 + radius2;\n if (dist > distP) {\n continue;\n }\n resolveCollision(p1, p2, delta, container.retina.pixelRatio);\n }\n }\n isEnabled(particle) {\n return particle.options.collisions.enable;\n }\n reset() {\n }\n}\n","import { Collider } from \"./Collider\";\nexport async function loadParticlesCollisionsInteraction(engine) {\n await engine.addInteractor(\"particlesCollisions\", (container) => new Collider(container));\n}\n","import { Circle, Rectangle } from \"tsparticles-engine\";\nexport class CircleWarp extends Circle {\n constructor(x, y, radius, canvasSize) {\n super(x, y, radius);\n this.canvasSize = canvasSize;\n this.canvasSize = Object.assign({}, canvasSize);\n }\n contains(point) {\n if (super.contains(point)) {\n return true;\n }\n const posNE = {\n x: point.x - this.canvasSize.width,\n y: point.y,\n };\n if (super.contains(posNE)) {\n return true;\n }\n const posSE = {\n x: point.x - this.canvasSize.width,\n y: point.y - this.canvasSize.height,\n };\n if (super.contains(posSE)) {\n return true;\n }\n const posSW = {\n x: point.x,\n y: point.y - this.canvasSize.height,\n };\n return super.contains(posSW);\n }\n intersects(range) {\n if (super.intersects(range)) {\n return true;\n }\n const rect = range, circle = range, newPos = {\n x: range.position.x - this.canvasSize.width,\n y: range.position.y - this.canvasSize.height,\n };\n if (circle.radius !== undefined) {\n const biggerCircle = new Circle(newPos.x, newPos.y, circle.radius * 2);\n return super.intersects(biggerCircle);\n }\n else if (rect.size !== undefined) {\n const rectSW = new Rectangle(newPos.x, newPos.y, rect.size.width * 2, rect.size.height * 2);\n return super.intersects(rectSW);\n }\n return false;\n }\n}\n","import { OptionsColor } from \"tsparticles-engine\";\nexport class LinksShadow {\n constructor() {\n this.blur = 5;\n this.color = new OptionsColor();\n this.color.value = \"#000\";\n this.enable = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.blur !== undefined) {\n this.blur = data.blur;\n }\n this.color = OptionsColor.create(this.color, data.color);\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n }\n}\n","import { OptionsColor } from \"tsparticles-engine\";\nexport class LinksTriangle {\n constructor() {\n this.enable = false;\n this.frequency = 1;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.color !== undefined) {\n this.color = OptionsColor.create(this.color, data.color);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.frequency !== undefined) {\n this.frequency = data.frequency;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n }\n}\n","import { LinksShadow } from \"./LinksShadow\";\nimport { LinksTriangle } from \"./LinksTriangle\";\nimport { OptionsColor } from \"tsparticles-engine\";\nexport class Links {\n constructor() {\n this.blink = false;\n this.color = new OptionsColor();\n this.color.value = \"#fff\";\n this.consent = false;\n this.distance = 100;\n this.enable = false;\n this.frequency = 1;\n this.opacity = 1;\n this.shadow = new LinksShadow();\n this.triangles = new LinksTriangle();\n this.width = 1;\n this.warp = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.id !== undefined) {\n this.id = data.id;\n }\n if (data.blink !== undefined) {\n this.blink = data.blink;\n }\n this.color = OptionsColor.create(this.color, data.color);\n if (data.consent !== undefined) {\n this.consent = data.consent;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.frequency !== undefined) {\n this.frequency = data.frequency;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n this.shadow.load(data.shadow);\n this.triangles.load(data.triangles);\n if (data.width !== undefined) {\n this.width = data.width;\n }\n if (data.warp !== undefined) {\n this.warp = data.warp;\n }\n }\n}\n","import { Circle, ParticlesInteractorBase, getDistance, getLinkRandomColor } from \"tsparticles-engine\";\nimport { CircleWarp } from \"./CircleWarp\";\nimport { Links } from \"./Options/Classes/Links\";\nfunction getLinkDistance(pos1, pos2, optDistance, canvasSize, warp) {\n let distance = getDistance(pos1, pos2);\n if (!warp || distance <= optDistance) {\n return distance;\n }\n const pos2NE = {\n x: pos2.x - canvasSize.width,\n y: pos2.y,\n };\n distance = getDistance(pos1, pos2NE);\n if (distance <= optDistance) {\n return distance;\n }\n const pos2SE = {\n x: pos2.x - canvasSize.width,\n y: pos2.y - canvasSize.height,\n };\n distance = getDistance(pos1, pos2SE);\n if (distance <= optDistance) {\n return distance;\n }\n const pos2SW = {\n x: pos2.x,\n y: pos2.y - canvasSize.height,\n };\n distance = getDistance(pos1, pos2SW);\n return distance;\n}\nexport class Linker extends ParticlesInteractorBase {\n constructor(container) {\n super(container);\n this.linkContainer = container;\n }\n clear() {\n }\n init() {\n this.linkContainer.particles.linksColor = undefined;\n this.linkContainer.particles.linksColors = new Map();\n }\n async interact(p1) {\n var _a;\n if (!p1.options.links) {\n return;\n }\n p1.links = [];\n const pos1 = p1.getPosition(), container = this.container, canvasSize = container.canvas.size;\n if (pos1.x < 0 || pos1.y < 0 || pos1.x > canvasSize.width || pos1.y > canvasSize.height) {\n return;\n }\n const linkOpt1 = p1.options.links, optOpacity = linkOpt1.opacity, optDistance = (_a = p1.retina.linksDistance) !== null && _a !== void 0 ? _a : 0, warp = linkOpt1.warp, range = warp\n ? new CircleWarp(pos1.x, pos1.y, optDistance, canvasSize)\n : new Circle(pos1.x, pos1.y, optDistance), query = container.particles.quadTree.query(range);\n for (const p2 of query) {\n const linkOpt2 = p2.options.links;\n if (p1 === p2 ||\n !(linkOpt2 === null || linkOpt2 === void 0 ? void 0 : linkOpt2.enable) ||\n linkOpt1.id !== linkOpt2.id ||\n p2.spawning ||\n p2.destroyed ||\n !p2.links ||\n p1.links.map((t) => t.destination).indexOf(p2) !== -1 ||\n p2.links.map((t) => t.destination).indexOf(p1) !== -1) {\n continue;\n }\n const pos2 = p2.getPosition();\n if (pos2.x < 0 || pos2.y < 0 || pos2.x > canvasSize.width || pos2.y > canvasSize.height) {\n continue;\n }\n const distance = getLinkDistance(pos1, pos2, optDistance, canvasSize, warp && linkOpt2.warp);\n if (distance > optDistance) {\n return;\n }\n const opacityLine = (1 - distance / optDistance) * optOpacity;\n this.setColor(p1);\n p1.links.push({\n destination: p2,\n opacity: opacityLine,\n });\n }\n }\n isEnabled(particle) {\n var _a;\n return !!((_a = particle.options.links) === null || _a === void 0 ? void 0 : _a.enable);\n }\n loadParticlesOptions(options, ...sources) {\n var _a, _b;\n if (!options.links) {\n options.links = new Links();\n }\n for (const source of sources) {\n options.links.load((_b = (_a = source === null || source === void 0 ? void 0 : source.links) !== null && _a !== void 0 ? _a : source === null || source === void 0 ? void 0 : source.lineLinked) !== null && _b !== void 0 ? _b : source === null || source === void 0 ? void 0 : source.line_linked);\n }\n }\n reset() {\n }\n setColor(p1) {\n if (!p1.options.links) {\n return;\n }\n const container = this.linkContainer, linksOptions = p1.options.links;\n let linkColor = linksOptions.id === undefined\n ? container.particles.linksColor\n : container.particles.linksColors.get(linksOptions.id);\n if (linkColor) {\n return;\n }\n const optColor = linksOptions.color;\n linkColor = getLinkRandomColor(optColor, linksOptions.blink, linksOptions.consent);\n if (linksOptions.id === undefined) {\n container.particles.linksColor = linkColor;\n }\n else {\n container.particles.linksColors.set(linksOptions.id, linkColor);\n }\n }\n}\n","import { Linker } from \"./Linker\";\nexport async function loadInteraction(engine) {\n await engine.addInteractor(\"particlesLinks\", (container) => new Linker(container));\n}\n","import { drawLine, drawTriangle, getDistance, getDistances, getStyleFromRgb, rangeColorToRgb, } from \"tsparticles-engine\";\nexport function drawLinkLine(context, width, begin, end, maxDistance, canvasSize, warp, backgroundMask, composite, colorLine, opacity, shadow) {\n let drawn = false;\n if (getDistance(begin, end) <= maxDistance) {\n drawLine(context, begin, end);\n drawn = true;\n }\n else if (warp) {\n let pi1;\n let pi2;\n const endNE = {\n x: end.x - canvasSize.width,\n y: end.y,\n };\n const d1 = getDistances(begin, endNE);\n if (d1.distance <= maxDistance) {\n const yi = begin.y - (d1.dy / d1.dx) * begin.x;\n pi1 = { x: 0, y: yi };\n pi2 = { x: canvasSize.width, y: yi };\n }\n else {\n const endSW = {\n x: end.x,\n y: end.y - canvasSize.height,\n };\n const d2 = getDistances(begin, endSW);\n if (d2.distance <= maxDistance) {\n const yi = begin.y - (d2.dy / d2.dx) * begin.x;\n const xi = -yi / (d2.dy / d2.dx);\n pi1 = { x: xi, y: 0 };\n pi2 = { x: xi, y: canvasSize.height };\n }\n else {\n const endSE = {\n x: end.x - canvasSize.width,\n y: end.y - canvasSize.height,\n };\n const d3 = getDistances(begin, endSE);\n if (d3.distance <= maxDistance) {\n const yi = begin.y - (d3.dy / d3.dx) * begin.x;\n const xi = -yi / (d3.dy / d3.dx);\n pi1 = { x: xi, y: yi };\n pi2 = { x: pi1.x + canvasSize.width, y: pi1.y + canvasSize.height };\n }\n }\n }\n if (pi1 && pi2) {\n drawLine(context, begin, pi1);\n drawLine(context, end, pi2);\n drawn = true;\n }\n }\n if (!drawn) {\n return;\n }\n context.lineWidth = width;\n if (backgroundMask) {\n context.globalCompositeOperation = composite;\n }\n context.strokeStyle = getStyleFromRgb(colorLine, opacity);\n if (shadow.enable) {\n const shadowColor = rangeColorToRgb(shadow.color);\n if (shadowColor) {\n context.shadowBlur = shadow.blur;\n context.shadowColor = getStyleFromRgb(shadowColor);\n }\n }\n context.stroke();\n}\nexport function drawLinkTriangle(context, pos1, pos2, pos3, backgroundMask, composite, colorTriangle, opacityTriangle) {\n drawTriangle(context, pos1, pos2, pos3);\n if (backgroundMask) {\n context.globalCompositeOperation = composite;\n }\n context.fillStyle = getStyleFromRgb(colorTriangle, opacityTriangle);\n context.fill();\n}\n","import { drawLinkLine, drawLinkTriangle } from \"./Utils\";\nimport { getDistance, getLinkColor, getRandom, getRangeValue, rangeColorToRgb } from \"tsparticles-engine\";\nfunction getLinkKey(ids) {\n ids.sort((a, b) => a - b);\n return ids.join(\"_\");\n}\nfunction setLinkFrequency(particles, dictionary) {\n const key = getLinkKey(particles.map((t) => t.id));\n let res = dictionary.get(key);\n if (res === undefined) {\n res = getRandom();\n dictionary.set(key, res);\n }\n return res;\n}\nexport class LinkInstance {\n constructor(container) {\n this.container = container;\n this._freqs = {\n links: new Map(),\n triangles: new Map(),\n };\n }\n drawParticle(context, particle) {\n var _a;\n const pOptions = particle.options;\n if (!particle.links || particle.links.length <= 0) {\n return;\n }\n const p1Links = particle.links.filter((l) => pOptions.links && this.getLinkFrequency(particle, l.destination) <= pOptions.links.frequency);\n for (const link of p1Links) {\n this.drawTriangles(pOptions, particle, link, p1Links);\n if (link.opacity > 0 && ((_a = particle.retina.linksWidth) !== null && _a !== void 0 ? _a : 0) > 0) {\n this.drawLinkLine(particle, link);\n }\n }\n }\n async init() {\n this._freqs.links = new Map();\n this._freqs.triangles = new Map();\n }\n particleCreated(particle) {\n particle.links = [];\n if (!particle.options.links) {\n return;\n }\n const ratio = this.container.retina.pixelRatio;\n particle.retina.linksDistance = particle.options.links.distance * ratio;\n particle.retina.linksWidth = particle.options.links.width * ratio;\n }\n particleDestroyed(particle) {\n particle.links = [];\n }\n drawLinkLine(p1, link) {\n const container = this.container, options = container.actualOptions, p2 = link.destination, pos1 = p1.getPosition(), pos2 = p2.getPosition();\n let opacity = link.opacity;\n container.canvas.draw((ctx) => {\n var _a, _b, _c;\n if (!p1.options.links) {\n return;\n }\n let colorLine;\n const twinkle = (_a = p1.options.twinkle) === null || _a === void 0 ? void 0 : _a.lines;\n if (twinkle === null || twinkle === void 0 ? void 0 : twinkle.enable) {\n const twinkleFreq = twinkle.frequency, twinkleRgb = rangeColorToRgb(twinkle.color), twinkling = getRandom() < twinkleFreq;\n if (twinkling && twinkleRgb) {\n colorLine = twinkleRgb;\n opacity = getRangeValue(twinkle.opacity);\n }\n }\n if (!colorLine) {\n const linksOptions = p1.options.links, linkColor = (linksOptions === null || linksOptions === void 0 ? void 0 : linksOptions.id) !== undefined\n ? container.particles.linksColors.get(linksOptions.id)\n : container.particles.linksColor;\n colorLine = getLinkColor(p1, p2, linkColor);\n }\n if (!colorLine) {\n return;\n }\n const width = (_b = p1.retina.linksWidth) !== null && _b !== void 0 ? _b : 0, maxDistance = (_c = p1.retina.linksDistance) !== null && _c !== void 0 ? _c : 0;\n drawLinkLine(ctx, width, pos1, pos2, maxDistance, container.canvas.size, p1.options.links.warp, options.backgroundMask.enable, options.backgroundMask.composite, colorLine, opacity, p1.options.links.shadow);\n });\n }\n drawLinkTriangle(p1, link1, link2) {\n var _a;\n if (!p1.options.links) {\n return;\n }\n const container = this.container, options = container.actualOptions, p2 = link1.destination, p3 = link2.destination, triangleOptions = p1.options.links.triangles, opacityTriangle = (_a = triangleOptions.opacity) !== null && _a !== void 0 ? _a : (link1.opacity + link2.opacity) / 2;\n if (opacityTriangle <= 0) {\n return;\n }\n container.canvas.draw((ctx) => {\n var _a;\n const pos1 = p1.getPosition(), pos2 = p2.getPosition(), pos3 = p3.getPosition(), linksDistance = (_a = p1.retina.linksDistance) !== null && _a !== void 0 ? _a : 0;\n if (getDistance(pos1, pos2) > linksDistance ||\n getDistance(pos3, pos2) > linksDistance ||\n getDistance(pos3, pos1) > linksDistance) {\n return;\n }\n let colorTriangle = rangeColorToRgb(triangleOptions.color);\n if (!colorTriangle) {\n const linksOptions = p1.options.links, linkColor = (linksOptions === null || linksOptions === void 0 ? void 0 : linksOptions.id) !== undefined\n ? container.particles.linksColors.get(linksOptions.id)\n : container.particles.linksColor;\n colorTriangle = getLinkColor(p1, p2, linkColor);\n }\n if (!colorTriangle) {\n return;\n }\n drawLinkTriangle(ctx, pos1, pos2, pos3, options.backgroundMask.enable, options.backgroundMask.composite, colorTriangle, opacityTriangle);\n });\n }\n drawTriangles(options, p1, link, p1Links) {\n var _a, _b, _c;\n const p2 = link.destination;\n if (!(((_a = options.links) === null || _a === void 0 ? void 0 : _a.triangles.enable) && ((_b = p2.options.links) === null || _b === void 0 ? void 0 : _b.triangles.enable))) {\n return;\n }\n const vertices = (_c = p2.links) === null || _c === void 0 ? void 0 : _c.filter((t) => {\n const linkFreq = this.getLinkFrequency(p2, t.destination);\n return (p2.options.links &&\n linkFreq <= p2.options.links.frequency &&\n p1Links.findIndex((l) => l.destination === t.destination) >= 0);\n });\n if (!(vertices === null || vertices === void 0 ? void 0 : vertices.length)) {\n return;\n }\n for (const vertex of vertices) {\n const p3 = vertex.destination, triangleFreq = this.getTriangleFrequency(p1, p2, p3);\n if (triangleFreq > options.links.triangles.frequency) {\n continue;\n }\n this.drawLinkTriangle(p1, link, vertex);\n }\n }\n getLinkFrequency(p1, p2) {\n return setLinkFrequency([p1, p2], this._freqs.links);\n }\n getTriangleFrequency(p1, p2, p3) {\n return setLinkFrequency([p1, p2, p3], this._freqs.triangles);\n }\n}\n","import { LinkInstance } from \"./LinkInstance\";\nclass LinksPlugin {\n constructor() {\n this.id = \"links\";\n }\n getPlugin(container) {\n return new LinkInstance(container);\n }\n loadOptions() {\n }\n needsPlugin() {\n return true;\n }\n}\nexport async function loadPlugin(engine) {\n const plugin = new LinksPlugin();\n await engine.addPlugin(plugin);\n}\n","import { loadInteraction } from \"./interaction\";\nimport { loadPlugin } from \"./plugin\";\nexport async function loadParticlesLinksInteraction(engine) {\n await loadInteraction(engine);\n await loadPlugin(engine);\n}\nexport * from \"./Options/Classes/Links\";\nexport * from \"./Options/Classes/LinksShadow\";\nexport * from \"./Options/Classes/LinksTriangle\";\nexport * from \"./Options/Interfaces/ILinks\";\nexport * from \"./Options/Interfaces/ILinksShadow\";\nexport * from \"./Options/Interfaces/ILinksTriangle\";\n","export class PolygonDrawerBase {\n draw(context, particle, radius) {\n const start = this.getCenter(particle, radius);\n const side = this.getSidesData(particle, radius);\n const sideCount = side.count.numerator * side.count.denominator;\n const decimalSides = side.count.numerator / side.count.denominator;\n const interiorAngleDegrees = (180 * (decimalSides - 2)) / decimalSides;\n const interiorAngle = Math.PI - (Math.PI * interiorAngleDegrees) / 180;\n if (!context) {\n return;\n }\n context.beginPath();\n context.translate(start.x, start.y);\n context.moveTo(0, 0);\n for (let i = 0; i < sideCount; i++) {\n context.lineTo(side.length, 0);\n context.translate(side.length, 0);\n context.rotate(interiorAngle);\n }\n }\n getSidesCount(particle) {\n var _a, _b;\n const polygon = particle.shapeData;\n return (_b = (_a = polygon === null || polygon === void 0 ? void 0 : polygon.sides) !== null && _a !== void 0 ? _a : polygon === null || polygon === void 0 ? void 0 : polygon.nb_sides) !== null && _b !== void 0 ? _b : 5;\n }\n}\n","import { PolygonDrawerBase } from \"./PolygonDrawerBase\";\nexport class PolygonDrawer extends PolygonDrawerBase {\n getCenter(particle, radius) {\n const sides = this.getSidesCount(particle);\n return {\n x: -radius / (sides / 3.5),\n y: -radius / (2.66 / 3.5),\n };\n }\n getSidesData(particle, radius) {\n var _a, _b;\n const polygon = particle.shapeData;\n const sides = (_b = (_a = polygon === null || polygon === void 0 ? void 0 : polygon.sides) !== null && _a !== void 0 ? _a : polygon === null || polygon === void 0 ? void 0 : polygon.nb_sides) !== null && _b !== void 0 ? _b : 5;\n return {\n count: {\n denominator: 1,\n numerator: sides,\n },\n length: (radius * 2.66) / (sides / 3),\n };\n }\n}\n","import { PolygonDrawerBase } from \"./PolygonDrawerBase\";\nexport class TriangleDrawer extends PolygonDrawerBase {\n getCenter(particle, radius) {\n return {\n x: -radius,\n y: radius / 1.66,\n };\n }\n getSidesCount() {\n return 3;\n }\n getSidesData(particle, radius) {\n return {\n count: {\n denominator: 2,\n numerator: 3,\n },\n length: radius * 2,\n };\n }\n}\n","import { PolygonDrawer } from \"./PolygonDrawer\";\nimport { TriangleDrawer } from \"./TriangleDrawer\";\nexport async function loadGenericPolygonShape(engine) {\n await engine.addShape(\"polygon\", new PolygonDrawer());\n}\nexport async function loadTriangleShape(engine) {\n await engine.addShape(\"triangle\", new TriangleDrawer());\n}\nexport async function loadPolygonShape(engine) {\n await loadGenericPolygonShape(engine);\n await loadTriangleShape(engine);\n}\n","import { clamp, getRandom } from \"tsparticles-engine\";\nfunction checkDestroy(particle, value, minValue, maxValue) {\n switch (particle.options.size.animation.destroy) {\n case \"max\":\n if (value >= maxValue) {\n particle.destroy();\n }\n break;\n case \"min\":\n if (value <= minValue) {\n particle.destroy();\n }\n break;\n }\n}\nfunction updateSize(particle, delta) {\n var _a, _b, _c, _d, _e;\n const sizeVelocity = ((_a = particle.size.velocity) !== null && _a !== void 0 ? _a : 0) * delta.factor, minValue = particle.size.min, maxValue = particle.size.max, decay = (_b = particle.size.decay) !== null && _b !== void 0 ? _b : 1;\n if (particle.destroyed ||\n !particle.size.enable ||\n (((_c = particle.size.maxLoops) !== null && _c !== void 0 ? _c : 0) > 0 && ((_d = particle.size.loops) !== null && _d !== void 0 ? _d : 0) > ((_e = particle.size.maxLoops) !== null && _e !== void 0 ? _e : 0))) {\n return;\n }\n switch (particle.size.status) {\n case \"increasing\":\n if (particle.size.value >= maxValue) {\n particle.size.status = \"decreasing\";\n if (!particle.size.loops) {\n particle.size.loops = 0;\n }\n particle.size.loops++;\n }\n else {\n particle.size.value += sizeVelocity;\n }\n break;\n case \"decreasing\":\n if (particle.size.value <= minValue) {\n particle.size.status = \"increasing\";\n if (!particle.size.loops) {\n particle.size.loops = 0;\n }\n particle.size.loops++;\n }\n else {\n particle.size.value -= sizeVelocity;\n }\n }\n if (particle.size.velocity && decay !== 1) {\n particle.size.velocity *= decay;\n }\n checkDestroy(particle, particle.size.value, minValue, maxValue);\n if (!particle.destroyed) {\n particle.size.value = clamp(particle.size.value, minValue, maxValue);\n }\n}\nexport class SizeUpdater {\n init(particle) {\n var _a;\n const container = particle.container, sizeOptions = particle.options.size, sizeAnimation = sizeOptions.animation;\n if (sizeAnimation.enable) {\n particle.size.velocity =\n (((_a = particle.retina.sizeAnimationSpeed) !== null && _a !== void 0 ? _a : container.retina.sizeAnimationSpeed) / 100) *\n container.retina.reduceFactor;\n if (!sizeAnimation.sync) {\n particle.size.velocity *= getRandom();\n }\n }\n }\n isEnabled(particle) {\n var _a, _b, _c, _d;\n return (!particle.destroyed &&\n !particle.spawning &&\n particle.size.enable &&\n (((_a = particle.size.maxLoops) !== null && _a !== void 0 ? _a : 0) <= 0 ||\n (((_b = particle.size.maxLoops) !== null && _b !== void 0 ? _b : 0) > 0 && ((_c = particle.size.loops) !== null && _c !== void 0 ? _c : 0) < ((_d = particle.size.maxLoops) !== null && _d !== void 0 ? _d : 0))));\n }\n reset(particle) {\n particle.size.loops = 0;\n }\n update(particle, delta) {\n if (!this.isEnabled(particle)) {\n return;\n }\n updateSize(particle, delta);\n }\n}\n","import { SizeUpdater } from \"./SizeUpdater\";\nexport async function loadSizeUpdater(engine) {\n await engine.addParticleUpdater(\"size\", () => new SizeUpdater());\n}\n","const fixFactor = Math.sqrt(2);\nexport class SquareDrawer {\n draw(context, particle, radius) {\n context.rect(-radius / fixFactor, -radius / fixFactor, (radius * 2) / fixFactor, (radius * 2) / fixFactor);\n }\n getSidesCount() {\n return 4;\n }\n}\n","import { SquareDrawer } from \"./SquareDrawer\";\nexport async function loadSquareShape(engine) {\n const drawer = new SquareDrawer();\n await engine.addShape(\"edge\", drawer);\n await engine.addShape(\"square\", drawer);\n}\n","export class StarDrawer {\n draw(context, particle, radius) {\n var _a;\n const star = particle.shapeData, sides = this.getSidesCount(particle), inset = (_a = star === null || star === void 0 ? void 0 : star.inset) !== null && _a !== void 0 ? _a : 2;\n context.moveTo(0, 0 - radius);\n for (let i = 0; i < sides; i++) {\n context.rotate(Math.PI / sides);\n context.lineTo(0, 0 - radius * inset);\n context.rotate(Math.PI / sides);\n context.lineTo(0, 0 - radius);\n }\n }\n getSidesCount(particle) {\n var _a, _b;\n const star = particle.shapeData;\n return (_b = (_a = star === null || star === void 0 ? void 0 : star.sides) !== null && _a !== void 0 ? _a : star === null || star === void 0 ? void 0 : star.nb_sides) !== null && _b !== void 0 ? _b : 5;\n }\n}\n","import { StarDrawer } from \"./StarDrawer\";\nexport async function loadStarShape(engine) {\n await engine.addShape(\"star\", new StarDrawer());\n}\n","import { getHslAnimationFromHsl, itemFromSingleOrMultiple, randomInRange, rangeColorToHsl, } from \"tsparticles-engine\";\nfunction updateColorValue(delta, value, valueAnimation, max, decrease) {\n var _a, _b;\n const colorValue = value;\n if (!colorValue || !colorValue.enable) {\n return;\n }\n const offset = randomInRange(valueAnimation.offset), velocity = ((_a = value.velocity) !== null && _a !== void 0 ? _a : 0) * delta.factor + offset * 3.6, decay = (_b = value.decay) !== null && _b !== void 0 ? _b : 1;\n if (!decrease || colorValue.status === \"increasing\") {\n colorValue.value += velocity;\n if (decrease && colorValue.value > max) {\n colorValue.status = \"decreasing\";\n colorValue.value -= colorValue.value % max;\n }\n }\n else {\n colorValue.value -= velocity;\n if (colorValue.value < 0) {\n colorValue.status = \"increasing\";\n colorValue.value += colorValue.value;\n }\n }\n if (colorValue.velocity && decay !== 1) {\n colorValue.velocity *= decay;\n }\n if (colorValue.value > max) {\n colorValue.value %= max;\n }\n}\nfunction updateStrokeColor(particle, delta) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n if (!((_a = particle.stroke) === null || _a === void 0 ? void 0 : _a.color)) {\n return;\n }\n const animationOptions = particle.stroke.color.animation, h = (_c = (_b = particle.strokeColor) === null || _b === void 0 ? void 0 : _b.h) !== null && _c !== void 0 ? _c : (_d = particle.color) === null || _d === void 0 ? void 0 : _d.h;\n if (h) {\n updateColorValue(delta, h, animationOptions.h, 360, false);\n }\n const s = (_f = (_e = particle.strokeColor) === null || _e === void 0 ? void 0 : _e.s) !== null && _f !== void 0 ? _f : (_g = particle.color) === null || _g === void 0 ? void 0 : _g.s;\n if (s) {\n updateColorValue(delta, s, animationOptions.s, 100, true);\n }\n const l = (_j = (_h = particle.strokeColor) === null || _h === void 0 ? void 0 : _h.l) !== null && _j !== void 0 ? _j : (_k = particle.color) === null || _k === void 0 ? void 0 : _k.l;\n if (l) {\n updateColorValue(delta, l, animationOptions.l, 100, true);\n }\n}\nexport class StrokeColorUpdater {\n constructor(container) {\n this.container = container;\n }\n init(particle) {\n var _a, _b;\n const container = this.container;\n particle.stroke = itemFromSingleOrMultiple(particle.options.stroke, particle.id, particle.options.reduceDuplicates);\n particle.strokeWidth = particle.stroke.width * container.retina.pixelRatio;\n const strokeHslColor = (_a = rangeColorToHsl(particle.stroke.color)) !== null && _a !== void 0 ? _a : particle.getFillColor();\n if (strokeHslColor) {\n particle.strokeColor = getHslAnimationFromHsl(strokeHslColor, (_b = particle.stroke.color) === null || _b === void 0 ? void 0 : _b.animation, container.retina.reduceFactor);\n }\n }\n isEnabled(particle) {\n var _a, _b, _c, _d;\n const color = (_a = particle.stroke) === null || _a === void 0 ? void 0 : _a.color;\n return (!particle.destroyed &&\n !particle.spawning &&\n !!color &&\n ((((_b = particle.strokeColor) === null || _b === void 0 ? void 0 : _b.h.value) !== undefined && color.animation.h.enable) ||\n (((_c = particle.strokeColor) === null || _c === void 0 ? void 0 : _c.s.value) !== undefined && color.animation.s.enable) ||\n (((_d = particle.strokeColor) === null || _d === void 0 ? void 0 : _d.l.value) !== undefined && color.animation.l.enable)));\n }\n update(particle, delta) {\n if (!this.isEnabled(particle)) {\n return;\n }\n updateStrokeColor(particle, delta);\n }\n}\n","import { StrokeColorUpdater } from \"./StrokeColorUpdater\";\nexport async function loadStrokeColorUpdater(engine) {\n await engine.addParticleUpdater(\"strokeColor\", (container) => new StrokeColorUpdater(container));\n}\n","import { executeOnSingleOrMultiple, isInArray, itemFromSingleOrMultiple, loadFont } from \"tsparticles-engine\";\nexport const validTypes = [\"text\", \"character\", \"char\"];\nexport class TextDrawer {\n draw(context, particle, radius, opacity) {\n var _a, _b, _c;\n const character = particle.shapeData;\n if (character === undefined) {\n return;\n }\n const textData = character.value;\n if (textData === undefined) {\n return;\n }\n const textParticle = particle;\n if (textParticle.text === undefined) {\n textParticle.text = itemFromSingleOrMultiple(textData, particle.randomIndexData);\n }\n const text = textParticle.text, style = (_a = character.style) !== null && _a !== void 0 ? _a : \"\", weight = (_b = character.weight) !== null && _b !== void 0 ? _b : \"400\", size = Math.round(radius) * 2, font = (_c = character.font) !== null && _c !== void 0 ? _c : \"Verdana\", fill = particle.fill, offsetX = (text.length * radius) / 2;\n context.font = `${style} ${weight} ${size}px \"${font}\"`;\n const pos = {\n x: -offsetX,\n y: radius / 2,\n };\n context.globalAlpha = opacity;\n if (fill) {\n context.fillText(text, pos.x, pos.y);\n }\n else {\n context.strokeText(text, pos.x, pos.y);\n }\n context.globalAlpha = 1;\n }\n getSidesCount() {\n return 12;\n }\n async init(container) {\n const options = container.actualOptions;\n if (validTypes.find((t) => isInArray(t, options.particles.shape.type))) {\n const shapeOptions = validTypes\n .map((t) => options.particles.shape.options[t])\n .find((t) => !!t), promises = [];\n executeOnSingleOrMultiple(shapeOptions, (shape) => {\n promises.push(loadFont(shape.font, shape.weight));\n });\n await Promise.all(promises);\n }\n }\n}\n","import { TextDrawer, validTypes } from \"./TextDrawer\";\nexport async function loadTextShape(engine) {\n const drawer = new TextDrawer();\n for (const type of validTypes) {\n await engine.addShape(type, drawer);\n }\n}\n","import { initPjs } from \"tsparticles-particles.js\";\nimport { loadAngleUpdater } from \"tsparticles-updater-angle\";\nimport { loadBaseMover } from \"tsparticles-move-base\";\nimport { loadCircleShape } from \"tsparticles-shape-circle\";\nimport { loadColorUpdater } from \"tsparticles-updater-color\";\nimport { loadExternalAttractInteraction } from \"tsparticles-interaction-external-attract\";\nimport { loadExternalBounceInteraction } from \"tsparticles-interaction-external-bounce\";\nimport { loadExternalBubbleInteraction } from \"tsparticles-interaction-external-bubble\";\nimport { loadExternalConnectInteraction } from \"tsparticles-interaction-external-connect\";\nimport { loadExternalGrabInteraction } from \"tsparticles-interaction-external-grab\";\nimport { loadExternalPauseInteraction } from \"tsparticles-interaction-external-pause\";\nimport { loadExternalPushInteraction } from \"tsparticles-interaction-external-push\";\nimport { loadExternalRemoveInteraction } from \"tsparticles-interaction-external-remove\";\nimport { loadExternalRepulseInteraction } from \"tsparticles-interaction-external-repulse\";\nimport { loadExternalSlowInteraction } from \"tsparticles-interaction-external-slow\";\nimport { loadImageShape } from \"tsparticles-shape-image\";\nimport { loadLifeUpdater } from \"tsparticles-updater-life\";\nimport { loadLineShape } from \"tsparticles-shape-line\";\nimport { loadOpacityUpdater } from \"tsparticles-updater-opacity\";\nimport { loadOutModesUpdater } from \"tsparticles-updater-out-modes\";\nimport { loadParallaxMover } from \"tsparticles-move-parallax\";\nimport { loadParticlesAttractInteraction } from \"tsparticles-interaction-particles-attract\";\nimport { loadParticlesCollisionsInteraction } from \"tsparticles-interaction-particles-collisions\";\nimport { loadParticlesLinksInteraction } from \"tsparticles-interaction-particles-links\";\nimport { loadPolygonShape } from \"tsparticles-shape-polygon\";\nimport { loadSizeUpdater } from \"tsparticles-updater-size\";\nimport { loadSquareShape } from \"tsparticles-shape-square\";\nimport { loadStarShape } from \"tsparticles-shape-star\";\nimport { loadStrokeColorUpdater } from \"tsparticles-updater-stroke-color\";\nimport { loadTextShape } from \"tsparticles-shape-text\";\nexport async function loadSlim(engine) {\n await loadBaseMover(engine);\n await loadParallaxMover(engine);\n await loadExternalAttractInteraction(engine);\n await loadExternalBounceInteraction(engine);\n await loadExternalBubbleInteraction(engine);\n await loadExternalConnectInteraction(engine);\n await loadExternalGrabInteraction(engine);\n await loadExternalPauseInteraction(engine);\n await loadExternalPushInteraction(engine);\n await loadExternalRemoveInteraction(engine);\n await loadExternalRepulseInteraction(engine);\n await loadExternalSlowInteraction(engine);\n await loadParticlesAttractInteraction(engine);\n await loadParticlesCollisionsInteraction(engine);\n await loadParticlesLinksInteraction(engine);\n await loadCircleShape(engine);\n await loadImageShape(engine);\n await loadLineShape(engine);\n await loadPolygonShape(engine);\n await loadSquareShape(engine);\n await loadStarShape(engine);\n await loadTextShape(engine);\n await loadLifeUpdater(engine);\n await loadOpacityUpdater(engine);\n await loadSizeUpdater(engine);\n await loadAngleUpdater(engine);\n await loadColorUpdater(engine);\n await loadStrokeColorUpdater(engine);\n await loadOutModesUpdater(engine);\n await initPjs(engine);\n}\n","import { setRangeValue } from \"tsparticles-engine\";\nexport class TiltAnimation {\n constructor() {\n this.enable = false;\n this.speed = 0;\n this.decay = 0;\n this.sync = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n if (data.decay !== undefined) {\n this.decay = setRangeValue(data.decay);\n }\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { TiltAnimation } from \"./TiltAnimation\";\nimport { ValueWithRandom } from \"tsparticles-engine\";\nexport class Tilt extends ValueWithRandom {\n constructor() {\n super();\n this.animation = new TiltAnimation();\n this.direction = \"clockwise\";\n this.enable = false;\n this.value = 0;\n }\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n this.animation.load(data.animation);\n if (data.direction !== undefined) {\n this.direction = data.direction;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n }\n}\n","import { getRandom, getRangeValue } from \"tsparticles-engine\";\nimport { Tilt } from \"./Options/Classes/Tilt\";\nfunction updateTilt(particle, delta) {\n var _a, _b;\n if (!particle.tilt || !particle.options.tilt) {\n return;\n }\n const tilt = particle.options.tilt, tiltAnimation = tilt.animation, speed = ((_a = particle.tilt.velocity) !== null && _a !== void 0 ? _a : 0) * delta.factor, max = 2 * Math.PI, decay = (_b = particle.tilt.decay) !== null && _b !== void 0 ? _b : 1;\n if (!tiltAnimation.enable) {\n return;\n }\n switch (particle.tilt.status) {\n case \"increasing\":\n particle.tilt.value += speed;\n if (particle.tilt.value > max) {\n particle.tilt.value -= max;\n }\n break;\n case \"decreasing\":\n default:\n particle.tilt.value -= speed;\n if (particle.tilt.value < 0) {\n particle.tilt.value += max;\n }\n break;\n }\n if (particle.tilt.velocity && decay !== 1) {\n particle.tilt.velocity *= decay;\n }\n}\nexport class TiltUpdater {\n constructor(container) {\n this.container = container;\n }\n getTransformValues(particle) {\n var _a;\n const tilt = ((_a = particle.tilt) === null || _a === void 0 ? void 0 : _a.enable) && particle.tilt;\n return {\n b: tilt ? Math.cos(tilt.value) * tilt.cosDirection : undefined,\n c: tilt ? Math.sin(tilt.value) * tilt.sinDirection : undefined,\n };\n }\n init(particle) {\n var _a;\n const tiltOptions = particle.options.tilt;\n if (!tiltOptions) {\n return;\n }\n particle.tilt = {\n enable: tiltOptions.enable,\n value: (getRangeValue(tiltOptions.value) * Math.PI) / 180,\n sinDirection: getRandom() >= 0.5 ? 1 : -1,\n cosDirection: getRandom() >= 0.5 ? 1 : -1,\n };\n let tiltDirection = tiltOptions.direction;\n if (tiltDirection === \"random\") {\n const index = Math.floor(getRandom() * 2);\n tiltDirection = index > 0 ? \"counter-clockwise\" : \"clockwise\";\n }\n switch (tiltDirection) {\n case \"counter-clockwise\":\n case \"counterClockwise\":\n particle.tilt.status = \"decreasing\";\n break;\n case \"clockwise\":\n particle.tilt.status = \"increasing\";\n break;\n }\n const tiltAnimation = (_a = particle.options.tilt) === null || _a === void 0 ? void 0 : _a.animation;\n if (tiltAnimation === null || tiltAnimation === void 0 ? void 0 : tiltAnimation.enable) {\n particle.tilt.decay = 1 - getRangeValue(tiltAnimation.decay);\n particle.tilt.velocity = (getRangeValue(tiltAnimation.speed) / 360) * this.container.retina.reduceFactor;\n if (!tiltAnimation.sync) {\n particle.tilt.velocity *= getRandom();\n }\n }\n }\n isEnabled(particle) {\n var _a;\n const tiltAnimation = (_a = particle.options.tilt) === null || _a === void 0 ? void 0 : _a.animation;\n return !particle.destroyed && !particle.spawning && !!(tiltAnimation === null || tiltAnimation === void 0 ? void 0 : tiltAnimation.enable);\n }\n loadOptions(options, ...sources) {\n if (!options.tilt) {\n options.tilt = new Tilt();\n }\n for (const source of sources) {\n options.tilt.load(source === null || source === void 0 ? void 0 : source.tilt);\n }\n }\n update(particle, delta) {\n if (!this.isEnabled(particle)) {\n return;\n }\n updateTilt(particle, delta);\n }\n}\n","import { TiltUpdater } from \"./TiltUpdater\";\nexport async function loadTiltUpdater(engine) {\n await engine.addParticleUpdater(\"tilt\", (container) => new TiltUpdater(container));\n}\n","import { OptionsColor, setRangeValue } from \"tsparticles-engine\";\nexport class TwinkleValues {\n constructor() {\n this.enable = false;\n this.frequency = 0.05;\n this.opacity = 1;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.color !== undefined) {\n this.color = OptionsColor.create(this.color, data.color);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.frequency !== undefined) {\n this.frequency = data.frequency;\n }\n if (data.opacity !== undefined) {\n this.opacity = setRangeValue(data.opacity);\n }\n }\n}\n","import { TwinkleValues } from \"./TwinkleValues\";\nexport class Twinkle {\n constructor() {\n this.lines = new TwinkleValues();\n this.particles = new TwinkleValues();\n }\n load(data) {\n if (!data) {\n return;\n }\n this.lines.load(data.lines);\n this.particles.load(data.particles);\n }\n}\n","import { getRandom, getRangeValue, getStyleFromHsl, rangeColorToHsl } from \"tsparticles-engine\";\nimport { Twinkle } from \"./Options/Classes/Twinkle\";\nexport class TwinkleUpdater {\n getColorStyles(particle, context, radius, opacity) {\n const pOptions = particle.options, twinkleOptions = pOptions.twinkle;\n if (!twinkleOptions) {\n return {};\n }\n const twinkle = twinkleOptions.particles, twinkling = twinkle.enable && getRandom() < twinkle.frequency, zIndexOptions = particle.options.zIndex, zOpacityFactor = (1 - particle.zIndexFactor) ** zIndexOptions.opacityRate, twinklingOpacity = twinkling ? getRangeValue(twinkle.opacity) * zOpacityFactor : opacity, twinkleRgb = rangeColorToHsl(twinkle.color), twinkleStyle = twinkleRgb ? getStyleFromHsl(twinkleRgb, twinklingOpacity) : undefined, res = {}, needsTwinkle = twinkling && twinkleStyle;\n res.fill = needsTwinkle ? twinkleStyle : undefined;\n res.stroke = needsTwinkle ? twinkleStyle : undefined;\n return res;\n }\n init() {\n }\n isEnabled(particle) {\n const pOptions = particle.options, twinkleOptions = pOptions.twinkle;\n if (!twinkleOptions) {\n return false;\n }\n return twinkleOptions.particles.enable;\n }\n loadOptions(options, ...sources) {\n if (!options.twinkle) {\n options.twinkle = new Twinkle();\n }\n for (const source of sources) {\n options.twinkle.load(source === null || source === void 0 ? void 0 : source.twinkle);\n }\n }\n update() {\n }\n}\n","import { TwinkleUpdater } from \"./TwinkleUpdater\";\nexport async function loadTwinkleUpdater(engine) {\n await engine.addParticleUpdater(\"twinkle\", () => new TwinkleUpdater());\n}\n","import { setRangeValue } from \"tsparticles-engine\";\nexport class WobbleSpeed {\n constructor() {\n this.angle = 50;\n this.move = 10;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.angle !== undefined) {\n this.angle = setRangeValue(data.angle);\n }\n if (data.move !== undefined) {\n this.move = setRangeValue(data.move);\n }\n }\n}\n","import { WobbleSpeed } from \"./WobbleSpeed\";\nimport { setRangeValue } from \"tsparticles-engine\";\nexport class Wobble {\n constructor() {\n this.distance = 5;\n this.enable = false;\n this.speed = new WobbleSpeed();\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = setRangeValue(data.distance);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.speed !== undefined) {\n if (typeof data.speed === \"number\") {\n this.speed.load({ angle: data.speed });\n }\n else {\n const rangeSpeed = data.speed;\n if (rangeSpeed.min !== undefined) {\n this.speed.load({ angle: rangeSpeed });\n }\n else {\n this.speed.load(data.speed);\n }\n }\n }\n }\n}\n","import { getRandom, getRangeValue } from \"tsparticles-engine\";\nimport { Wobble } from \"./Options/Classes/Wobble\";\nfunction updateWobble(particle, delta) {\n var _a;\n const wobble = particle.options.wobble;\n if (!(wobble === null || wobble === void 0 ? void 0 : wobble.enable) || !particle.wobble) {\n return;\n }\n const angleSpeed = particle.wobble.angleSpeed * delta.factor, moveSpeed = particle.wobble.moveSpeed * delta.factor, distance = (moveSpeed * (((_a = particle.retina.wobbleDistance) !== null && _a !== void 0 ? _a : 0) * delta.factor)) / (1000 / 60), max = 2 * Math.PI;\n particle.wobble.angle += angleSpeed;\n if (particle.wobble.angle > max) {\n particle.wobble.angle -= max;\n }\n particle.position.x += distance * Math.cos(particle.wobble.angle);\n particle.position.y += distance * Math.abs(Math.sin(particle.wobble.angle));\n}\nexport class WobbleUpdater {\n constructor(container) {\n this.container = container;\n }\n init(particle) {\n var _a;\n const wobbleOpt = particle.options.wobble;\n if (wobbleOpt === null || wobbleOpt === void 0 ? void 0 : wobbleOpt.enable) {\n particle.wobble = {\n angle: getRandom() * Math.PI * 2,\n angleSpeed: getRangeValue(wobbleOpt.speed.angle) / 360,\n moveSpeed: getRangeValue(wobbleOpt.speed.move) / 10,\n };\n }\n else {\n particle.wobble = {\n angle: 0,\n angleSpeed: 0,\n moveSpeed: 0,\n };\n }\n particle.retina.wobbleDistance = getRangeValue((_a = wobbleOpt === null || wobbleOpt === void 0 ? void 0 : wobbleOpt.distance) !== null && _a !== void 0 ? _a : 0) * this.container.retina.pixelRatio;\n }\n isEnabled(particle) {\n var _a;\n return !particle.destroyed && !particle.spawning && !!((_a = particle.options.wobble) === null || _a === void 0 ? void 0 : _a.enable);\n }\n loadOptions(options, ...sources) {\n if (!options.wobble) {\n options.wobble = new Wobble();\n }\n for (const source of sources) {\n options.wobble.load(source === null || source === void 0 ? void 0 : source.wobble);\n }\n }\n update(particle, delta) {\n if (!this.isEnabled(particle)) {\n return;\n }\n updateWobble(particle, delta);\n }\n}\n","import { WobbleUpdater } from \"./WobbleUpdater\";\nexport async function loadWobbleUpdater(engine) {\n await engine.addParticleUpdater(\"wobble\", (container) => new WobbleUpdater(container));\n}\n","import { loadAbsorbersPlugin } from \"tsparticles-plugin-absorbers\";\nimport { loadDestroyUpdater } from \"tsparticles-updater-destroy\";\nimport { loadEmittersPlugin } from \"tsparticles-plugin-emitters\";\nimport { loadExternalTrailInteraction } from \"tsparticles-interaction-external-trail\";\nimport { loadRollUpdater } from \"tsparticles-updater-roll\";\nimport { loadSlim } from \"tsparticles-slim\";\nimport { loadTiltUpdater } from \"tsparticles-updater-tilt\";\nimport { loadTwinkleUpdater } from \"tsparticles-updater-twinkle\";\nimport { loadWobbleUpdater } from \"tsparticles-updater-wobble\";\nexport async function loadFull(engine) {\n await loadSlim(engine);\n await loadDestroyUpdater(engine);\n await loadRollUpdater(engine);\n await loadTiltUpdater(engine);\n await loadTwinkleUpdater(engine);\n await loadWobbleUpdater(engine);\n await loadExternalTrailInteraction(engine);\n await loadAbsorbersPlugin(engine);\n await loadEmittersPlugin(engine);\n}\n","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SoParticles.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SoParticles.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SoParticles.vue?vue&type=template&id=56911ad8&\"\nimport script from \"./SoParticles.vue?vue&type=script&lang=js&\"\nexport * from \"./SoParticles.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??ref--13-1!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Landing.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??ref--13-1!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Landing.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Landing.vue?vue&type=template&id=42adfd35&scoped=true&\"\nimport script from \"./Landing.vue?vue&type=script&lang=js&\"\nexport * from \"./Landing.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Landing.vue?vue&type=style&index=0&id=42adfd35&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"42adfd35\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Landing.vue?vue&type=style&index=0&id=42adfd35&prod&scoped=true&lang=css&\""],"sourceRoot":""}