{"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/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","noEasing","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","mouseMoveHandler","e","mouseTouchMove","touchStartHandler","touchMoveHandler","touchEndHandler","mouseTouchFinish","mouseLeaveHandler","touchCancelHandler","touchEndClickHandler","mouseTouchClick","mouseUpHandler","mouseDownHandler","mouseDown","visibilityChangeHandler","handleVisibilityChange","themeChangeHandler","handleThemeChange","oldThemeChangeHandler","resizeHandler","handleWindowResize","manageListeners","mousePos","interactivity","mouse","clickPosition","clickTime","Date","getTime","onClick","events","handleClickMode","mediaEvent","themeName","defaultThemes","dark","light","theme","themes","auto","loadTheme","pauseOnBlur","hidden","pageHidden","pause","getAnimationStatus","play","resizeTimeout","windowResize","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","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","delay","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","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","roll","backColor","alter","backFactor","backSum","rolled","strokeColor","_h","_j","lastPathTime","misplaced","maxDistance","outType","ignoresResizeRatio","mainOptions","particlesOptions","shapeType","shapeOptions","overrideShapeType","shapeData","_loadShapeData","pathOptions","pathDelay","pathGenerator","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","touched","touchMoved","changedTouches","radiusX","radiusY","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","fetchError","statusCode","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","linksColors","linkOpt1","linksDistance","linkOpt2","setColor","linksColor","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,IAAIwC,EACJ,MAAM2C,EAAYC,GAAUA,EAC5B,OAAoC,QAA5B5C,EAAKyC,EAAQvC,IAAI1C,UAA0B,IAAPwC,EAAgBA,EAAK2C,EAK9D,SAASE,IACZ,OAAOC,EAAMP,IAAW,EAAG,EAAI,OAE5B,SAASO,EAAMC,EAAKC,EAAKC,GAC5B,OAAO1B,KAAKyB,IAAIzB,KAAK0B,IAAIF,EAAKC,GAAMC,GAEjC,SAASC,EAAIC,EAAOC,EAAOC,EAASC,GACvC,OAAO/B,KAAKgC,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,GAAchC,EAAQe,GAClC,GAAIf,IAAWe,QAAoBxB,IAAVwB,GAAyC,kBAAXf,EACnD,OAAOA,EAEX,MAAMmB,EAAMW,GAAY9B,GAASoB,EAAMS,GAAY7B,GACnD,YAAiBT,IAAVwB,EACD,CACEI,IAAKzB,KAAKyB,IAAIA,EAAKJ,GACnBK,IAAK1B,KAAK0B,IAAIA,EAAKL,IAErBiB,GAAcb,EAAKC,GAEtB,SAASa,GAASC,GACrB,MAAMvB,EAASuB,EAAQvB,QAAQ,OAAEwB,EAAM,aAAEC,GAAmC,mBAAXzB,EAC3D,CACEwB,OAAQxB,EACRyB,aAAc,GAEhBzB,EACN,OAAgBoB,GAATI,EAAuBH,GAAcE,EAAQnB,MAAOqB,GAA+BF,EAAQnB,OAE/F,SAASsB,GAAaC,EAAQC,GACjC,MAAMC,EAAKF,EAAOjD,EAAIkD,EAAOlD,EAAGoD,EAAKH,EAAOnD,EAAIoD,EAAOpD,EACvD,MAAO,CAAEqD,GAAIA,EAAIC,GAAIA,EAAIC,SAAUhD,KAAKI,KAAK0C,EAAKA,EAAKC,EAAKA,IAEzD,SAASE,GAAYL,EAAQC,GAChC,OAAOF,GAAaC,EAAQC,GAAQG,SAEjC,SAASE,GAA0BC,EAAWC,EAAUC,GAC3D,GAAyB,kBAAdF,EACP,OAAQA,EAAYnD,KAAKsD,GAAM,IAG/B,OAAQH,GACJ,IAAK,MACD,OAAQnD,KAAKsD,GAAK,EACtB,IAAK,YACD,OAAQtD,KAAKsD,GAAK,EACtB,IAAK,QACD,OAAO,EACX,IAAK,eACD,OAAOtD,KAAKsD,GAAK,EACrB,IAAK,SACD,OAAOtD,KAAKsD,GAAK,EACrB,IAAK,cACD,OAAQ,EAAItD,KAAKsD,GAAM,EAC3B,IAAK,OACD,OAAOtD,KAAKsD,GAChB,IAAK,WACD,OAAS,EAAItD,KAAKsD,GAAM,EAC5B,IAAK,SACD,OAAOtD,KAAKC,MAAMoD,EAAO5D,EAAI2D,EAAS3D,EAAG4D,EAAO1D,EAAIyD,EAASzD,GACjE,IAAK,UACD,OAAOK,KAAKC,MAAMmD,EAAS3D,EAAI4D,EAAO5D,EAAG2D,EAASzD,EAAI0D,EAAO1D,GACjE,QACI,OAAO2B,IAActB,KAAKsD,GAAK,GAIxC,SAASC,GAAwBJ,GACpC,MAAMK,EAAe,EAAOC,OAG5B,OAFAD,EAAarE,OAAS,EACtBqE,EAAatD,MAAQiD,EACdK,EAEJ,SAASE,GAAkBC,EAAIC,EAAIC,EAAIC,GAC1C,OAAO,EAAO/D,OAAQ4D,EAAGhE,GAAKkE,EAAKC,IAAQD,EAAKC,GAAc,EAAPF,EAAGjE,EAAQmE,GAAOD,EAAKC,GAAKH,EAAGlE,GAEnF,SAASsE,GAAqBzH,GACjC,OAAOA,EAAK8G,eAAgCvD,IAApBvD,EAAK8G,SAASzD,QAAuCE,IAApBvD,EAAK8G,SAAS3D,EACjE,CACEE,EAAIrD,EAAK8G,SAASzD,EAAIrD,EAAK0H,KAAKC,MAAS,IACzCxE,EAAInD,EAAK8G,SAAS3D,EAAInD,EAAK0H,KAAKE,OAAU,UAE5CrE,EAEH,SAASsE,GAA6B7H,GACzC,IAAImC,EAAI2F,EAAIhH,EAAIiH,EAChB,MAAO,CACH1E,GAA+E,QAAzEyE,EAA8B,QAAxB3F,EAAKnC,EAAK8G,gBAA6B,IAAP3E,OAAgB,EAASA,EAAGkB,SAAsB,IAAPyE,EAAgBA,EAAmB,IAAd9C,KAAqBhF,EAAK0H,KAAKC,MAAS,IACpJxE,GAA+E,QAAzE4E,EAA8B,QAAxBjH,EAAKd,EAAK8G,gBAA6B,IAAPhG,OAAgB,EAASA,EAAGqC,SAAsB,IAAP4E,EAAgBA,EAAmB,IAAd/C,KAAqBhF,EAAK0H,KAAKE,OAAU,KAGtJ,SAASI,GAAmChI,GAC/C,IAAImC,EAAI2F,EACR,MAAMhB,EAAW,CACbzD,OAAwEE,KAA3C,QAAxBpB,EAAKnC,EAAK8G,gBAA6B,IAAP3E,OAAgB,EAASA,EAAGkB,GAAmB0C,GAAc/F,EAAK8G,SAASzD,QAAKE,EACrHJ,OAAwEI,KAA3C,QAAxBuE,EAAK9H,EAAK8G,gBAA6B,IAAPgB,OAAgB,EAASA,EAAG3E,GAAmB4C,GAAc/F,EAAK8G,SAAS3D,QAAKI,GAEzH,OAAOsE,GAA6B,CAAEH,KAAM1H,EAAK0H,KAAMZ,aAEpD,SAASmB,GAAkCjI,GAC9C,IAAImC,EAAI2F,EAAIhH,EAAIiH,EAChB,MAAO,CACH1E,EAA6E,QAAzEyE,EAA8B,QAAxB3F,EAAKnC,EAAK8G,gBAA6B,IAAP3E,OAAgB,EAASA,EAAGkB,SAAsB,IAAPyE,EAAgBA,EAAK9C,IAAchF,EAAK0H,KAAKC,MAClIxE,EAA6E,QAAzE4E,EAA8B,QAAxBjH,EAAKd,EAAK8G,gBAA6B,IAAPhG,OAAgB,EAASA,EAAGqC,SAAsB,IAAP4E,EAAgBA,EAAK/C,IAAchF,EAAK0H,KAAKE,QAWnI,SAASM,GAAWC,GACvB,OAAOA,EAASA,EAAMC,SAAS,KAAOC,WAAWF,GAAS,IAAME,WAAWF,GAAU,ECnJzF,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,EAAMzH,QAAQgC,IAAU,EAE1E0F,eAAeC,GAASC,EAAMC,GACjC,UACUlB,SAASmB,MAAMC,KAAK,GAAc,OAAXF,QAA8B,IAAXA,EAAoBA,EAAS,eAAwB,OAATD,QAA0B,IAATA,EAAkBA,EAAO,cAE1I,MAAOxI,KAGJ,SAAS4I,GAAiBP,GAC7B,OAAO9G,KAAKgC,MAAMV,IAAcwF,EAAM3H,QAEnC,SAASmI,GAAcR,EAAOS,EAAOC,GAAW,GACnD,OAAOV,OAAgBjH,IAAV0H,GAAuBC,EAAWD,EAAQT,EAAM3H,OAASkI,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,EAAOhI,IAE3CqI,GAAY7E,GAA2B,SAAdA,IACzB6E,EAASD,EAAOG,MAAQP,EAAOhI,IAE/BqI,GAAY7E,GAA2B,UAAdA,IACzB6E,EAASD,EAAOI,KAAOnE,EAAKC,MAAQ0D,EAAOlI,IAE3CuI,GAAY7E,GAA2B,QAAdA,IACzB6E,EAASD,EAAOK,OAAST,EAAOlI,GAE7BuI,EAEJ,SAASF,GAAgBJ,EAAOE,GACnC,MAAO,CACHQ,OAAQV,EAAMjI,EAAImI,EAClBO,KAAMT,EAAM/H,EAAIiI,EAChBM,MAAOR,EAAM/H,EAAIiI,EACjBK,IAAKP,EAAMjI,EAAImI,GAGhB,SAASS,GAAWC,KAAgBC,GACvC,IAAK,MAAMjI,KAAUiI,EAAS,CAC1B,QAAe1I,IAAXS,GAAmC,OAAXA,EACxB,SAEJ,GAAsB,kBAAXA,EAAqB,CAC5BgI,EAAchI,EACd,SAEJ,MAAMkI,EAAgB7C,MAAM8C,QAAQnI,IAChCkI,GAAyC,kBAAhBF,GAA6BA,GAAgB3C,MAAM8C,QAAQH,GAG9EE,GAAyC,kBAAhBF,GAA6BA,IAAe3C,MAAM8C,QAAQH,KACzFA,EAAc,IAHdA,EAAc,GAKlB,IAAK,MAAM1M,KAAO0E,EAAQ,CACtB,GAAY,cAAR1E,EACA,SAEJ,MAAM8M,EAAapI,EAAQe,EAAQqH,EAAW9M,GAAM+M,EAA4B,kBAAVtH,EAAoBuH,EAAWN,EACrGM,EAAShN,GACL+M,GAAYhD,MAAM8C,QAAQpH,GACpBA,EAAMwH,IAAKtI,GAAM8H,GAAWO,EAAShN,GAAM2E,IAC3C8H,GAAWO,EAAShN,GAAMyF,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,EAAOnF,OAAOwC,GAASiH,EAAEhH,QAAQqH,OAAOC,YAAavH,GAASiH,EAAEhH,QAAQqH,OAAOE,YAGxF,SAASC,GAAaC,EAAIC,GAC7B,MAAQvK,EAAGwK,EAAe1K,EAAG2K,GAAkBH,EAAGhF,SAASxE,IAAIyJ,EAAGjF,WAAYoF,EAAMC,GAAQ,CAACL,EAAG7G,SAAU8G,EAAG9G,WAAaN,GAAIyH,EAAOxH,GAAIyH,GAAU7H,GAAa2H,EAAMD,GACtK,GAAIF,EAAgBI,EAAQH,EAAgBI,EAAQ,EAChD,OAEJ,MAAMtK,GAASF,KAAKC,MAAMuK,EAAOD,GAAQ1G,EAAKoG,EAAGN,KAAM7F,EAAKoG,EAAGP,KAAMc,EAAKR,EAAGhF,SAASyF,OAAOxK,GAAQyK,EAAKT,EAAGjF,SAASyF,OAAOxK,GAAQyD,EAAKD,GAAkB+G,EAAIE,EAAI9G,EAAIC,GAAKF,EAAKF,GAAkBiH,EAAIF,EAAI5G,EAAIC,GAAK8G,EAAUjH,EAAG+G,QAAQxK,GAAQ2K,EAAUjH,EAAG8G,QAAQxK,GACvQ+J,EAAGhF,SAAStF,EAAIiL,EAAQjL,EAAIsK,EAAG/E,OAAOvF,EACtCsK,EAAGhF,SAASxF,EAAImL,EAAQnL,EAAIwK,EAAG/E,OAAOzF,EACtCyK,EAAGjF,SAAStF,EAAIkL,EAAQlL,EAAIuK,EAAGhF,OAAOvF,EACtCuK,EAAGjF,SAASxF,EAAIoL,EAAQpL,EAAIyK,EAAGhF,OAAOzF,EAEnC,SAASqL,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,SAAStF,EAAG4C,GAASwI,EAASvI,QAAQqH,OAAOC,aACrDoB,EAAK9F,eACiBvF,IAAlBqL,EAAKjG,WACL8F,EAAS9F,SAAStF,EAAIuL,EAAKjG,eAETpF,IAAlBqL,EAAK9H,WACL2H,EAAS3H,SAASzD,EAAIuL,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,SAASxF,EAAG8C,GAASwI,EAASvI,QAAQqH,OAAOE,WACrDoB,EAAK/F,eACiBvF,IAAlBsL,EAAKlG,WACL8F,EAAS9F,SAASxF,EAAI0L,EAAKlG,eAETpF,IAAlBsL,EAAK/H,WACL2H,EAAS3H,SAAS3D,EAAI0L,EAAK/H,WAIhC,SAASoC,GAA0B4F,EAAK9E,GAC3C,OAAO8E,aAAezF,MAAQyF,EAAIvC,IAAKhN,GAASyK,EAASzK,IAASyK,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,OAAMvL,ECnNvF,MAAM0L,GAAmB,SAAUC,GAAgB,MAAOC,GAAgB,IAAIlN,IACvE,SAASmN,GAAgBC,GAC5BF,GAAc7M,IAAI+M,EAAQ/P,IAAK+P,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,QAAW1M,IAAN2M,EAAkBA,EAAIA,EAAI,KAC1DC,EAAQ,yDAA0DC,EAASD,EAAME,KAAKR,GAC1F,OAAOO,EACD,CACEF,OAAiB3M,IAAd6M,EAAO,GAAmBE,SAASF,EAAO,GAAI,IAAM,IAAO,EAC9DH,EAAGK,SAASF,EAAO,GAAI,IACvBJ,EAAGM,SAASF,EAAO,GAAI,IACvBxK,EAAG0K,SAASF,EAAO,GAAI,UAEzB7M,EAEH,SAASgN,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,QAAOxN,EAE1B,SAASyN,GAASR,GACrB,MAAMS,EAAKT,EAAM5K,EAAI,IAAKsL,EAAKV,EAAMR,EAAI,IAAKmB,EAAKX,EAAMP,EAAI,IAAK7K,EAAM1B,KAAK0B,IAAI6L,EAAIC,EAAIC,GAAKhM,EAAMzB,KAAKyB,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,EAAIlC,KAAKgC,MAAiB,IAAX0K,EAAOxK,GAC7BwK,EAAOJ,EAAItM,KAAKgC,MAAiB,IAAX0K,EAAOJ,GAC7BI,EAAOH,EAAIvM,KAAKgC,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,EAAGvM,KAAKgC,MAAMC,EAAcK,GAAc6L,EAAU,OACpD7B,EAAGtM,KAAKgC,MAAMC,EAAcK,GAAc6L,EAAU,OACpDjM,EAAGlC,KAAKgC,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,YANe5O,IAAX+O,EAAK1M,IACL0M,EAAOf,GAASW,SAEL3O,IAAXgP,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,IAAItQ,EAAI2F,EACR,GAAI2K,IAAcxD,GACd,OAAO0B,KAEN,GAAI8B,IAAcvD,GAanB,OAAOuD,EAb2B,CAClC,MAAMC,EAA2C,QAA5BvQ,EAAKwL,EAAGgF,sBAAmC,IAAPxQ,EAAgBA,EAAKwL,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,YAAqB7P,IAAd6P,EACD,CACEhC,EAAGgC,EAAUhC,EAAErM,MACfuM,EAAG8B,EAAU9B,EAAEvM,MACfsM,EAAG+B,EAAU/B,EAAEtM,YAEjBxB,EAEH,SAAS8P,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,EACfH,EAAeI,OAChBL,EAAW/K,UAAY3D,IACvB0O,EAAW3O,OAASC,MAIxB0O,EAAW/K,SAAW,EC3QvB,SAASqL,GAASC,EAASC,EAAOC,GACrCF,EAAQG,YACRH,EAAQI,OAAOH,EAAM7Q,EAAG6Q,EAAM/Q,GAC9B8Q,EAAQK,OAAOH,EAAI9Q,EAAG8Q,EAAIhR,GAC1B8Q,EAAQM,YAEL,SAASC,GAAaP,EAAStG,EAAIC,EAAI6G,GAC1CR,EAAQG,YACRH,EAAQI,OAAO1G,EAAGtK,EAAGsK,EAAGxK,GACxB8Q,EAAQK,OAAO1G,EAAGvK,EAAGuK,EAAGzK,GACxB8Q,EAAQK,OAAOG,EAAGpR,EAAGoR,EAAGtR,GACxB8Q,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,GAAajV,GACzB,IAAImC,EAAI2F,EAAIhH,EAAIiH,EAAI7G,EAAIgU,EACxB,MAAM,UAAEC,EAAS,QAAElB,EAAO,SAAExF,EAAQ,MAAE2G,EAAK,YAAEC,EAAW,eAAEC,EAAc,UAAEC,EAAS,OAAEjK,EAAM,QAAEyG,EAAO,OAAEyD,EAAM,UAAEC,GAAezV,EACvH0V,EAAMjH,EAAStB,cAAevJ,EAAQ6K,EAASkH,UAAYlH,EAASmH,aAAenH,EAAS9F,SAAS/E,MAAQ,GAAIiS,EAAa,CAChIvR,IAAKZ,KAAKY,IAAIV,GACdS,IAAKX,KAAKW,IAAIT,IACfkS,EAAgB,CACf5F,EAAG2F,EAAWxR,KAA8B,QAAtBlC,EAAKsT,EAAUvF,SAAsB,IAAP/N,EAAgBA,EAAK,GACzE8N,EAAG4F,EAAWvR,KAA8B,QAAtBwD,EAAK2N,EAAUxF,SAAsB,IAAPnI,EAAgBA,EAAK,GACzEvD,GAAIsR,EAAWvR,KAA8B,QAAtBxD,EAAK2U,EAAUlR,SAAsB,IAAPzD,EAAgBA,EAAK,GAC1EiV,EAAGF,EAAWxR,KAA8B,QAAtB0D,EAAK0N,EAAUM,SAAsB,IAAPhO,EAAgBA,EAAK,IAE7EkM,EAAQ+B,aAAaF,EAAc5F,EAAG4F,EAAc7F,EAAG6F,EAAcvR,EAAGuR,EAAcC,EAAGL,EAAIrS,EAAGqS,EAAIvS,GACpG8Q,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,OAAOhI,EACtC4Q,EAAQqC,cAAgBd,EAAOnK,OAAOlI,GAEtCkS,EAAYkB,OACZtC,EAAQY,UAAYQ,EAAYkB,MAEpC,MAAMC,EAAS/H,EAAS+H,OACxBvC,EAAQwC,UAA4C,QAA/BvV,EAAKuN,EAASiI,mBAAgC,IAAPxV,EAAgBA,EAAK,EAC7EmU,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,QAAQ5U,IAAIoM,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,QAAQ5U,IAAIoM,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,EAAOzQ,EAAMgF,GAClC,MAAO,CACHqM,EAAGZ,EAAMY,EACTE,EAAGd,EAAMc,EACTD,EAAGb,EAAMa,GAAc,WAATtR,GAAqB,EAAI,GAAKgF,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,EAAWjZ,GAC1C,IAAI6C,EACJ,MAAMqW,EAAWD,EAAUjZ,QACViE,IAAbiV,IACA5P,EAAOtJ,IAA+B,QAAtB6C,EAAKyG,EAAOtJ,UAAyB,IAAP6C,EAAgBA,EAAK,GAAKqW,GAGzE,MAAM,GACT,YAAYrD,GACRzT,KAAKyT,UAAYA,EACjBzT,KAAKgG,KAAO,CACRE,OAAQ,EACRD,MAAO,GAEXjG,KAAK+W,SAAW,KAChB/W,KAAKgX,YAAa,EAClBhX,KAAKiX,iBAAmB,GACxBjX,KAAKkX,kBAAoB,GACzBlX,KAAKmX,eAAiB,GACtBnX,KAAKoX,cAAgB,GACrBpX,KAAKqX,kBACAvP,MAAuC,qBAArBwP,sBAQbzV,EAPA,IAAIyV,iBAAkBC,IACpB,IAAK,MAAMC,KAAUD,EACG,eAAhBC,EAAOnZ,MAAkD,UAAzBmZ,EAAOC,eACvCzX,KAAK0X,iBAM7B,kBACI,OAAO1X,KAAKyT,UAAUkE,cAAcC,WAAWnT,OAEnD,QACI,MAAMD,EAAUxE,KAAKyT,UAAUkE,cAAeE,EAAQrT,EAAQsT,UAAUC,KAAKF,MACzErT,EAAQoP,eAAenP,OACvBzE,KAAKgY,QAEAH,EAAMpT,QAAUoT,EAAM1W,OAAS,GAAKnB,KAAKiY,gBAC9CjY,KAAKkY,WAAW9H,GAAgBpQ,KAAKiY,gBAAiB,EAAIJ,EAAM1W,SAGhEnB,KAAKwV,KAAM2C,IACP9E,GAAM8E,EAAKnY,KAAKgG,QAI5B,UACI,IAAIvF,EAAI2F,EAC0B,QAAjC3F,EAAKT,KAAKqX,yBAAsC,IAAP5W,GAAyBA,EAAG2X,aAClEpY,KAAKgX,WACmB,QAAvB5Q,EAAKpG,KAAKsH,eAA4B,IAAPlB,GAAyBA,EAAGiS,SAG5DrY,KAAKsY,sBAETtY,KAAKwV,KAAM2C,IACP9E,GAAM8E,EAAKnY,KAAKgG,QAEpBhG,KAAKiX,iBAAmB,GACxBjX,KAAKkX,kBAAoB,GACzBlX,KAAKmX,eAAiB,GACtBnX,KAAKoX,cAAgB,GAEzB,KAAKmB,GACD,GAAKvY,KAAK+W,SAGV,OAAOwB,EAAGvY,KAAK+W,UAEnB,aAAahK,EAAU2G,GACnB,IAAIjT,EACJ,GAAIsM,EAASyL,UAAYzL,EAAS0L,UAC9B,OAEJ,MAAM7O,EAASmD,EAASrB,YACxB,GAAI9B,GAAU,EACV,OAEJ,MAAM8O,EAAU3L,EAASkE,eAAgB0H,EAA+C,QAApClY,EAAKsM,EAASmE,wBAAqC,IAAPzQ,EAAgBA,EAAKiY,EACrH,IAAKE,EAAQC,GAAU7Y,KAAK8Y,yBAAyB/L,GAChD6L,IACDA,EAASF,GAERG,IACDA,EAASF,IAERC,GAAWC,IAGhB7Y,KAAKwV,KAAM2C,IACP,IAAI1X,EAAI2F,EAAIhH,EAAIiH,EAAI7G,EACpB,MAAMgF,EAAUxE,KAAKyT,UAAUkE,cAAeoB,EAAgBhM,EAASvI,QAAQwU,OAAQC,GAAkB,EAAIlM,EAASmM,eAAiBH,EAAcI,YAAa9I,EAA2J,QAAhJjR,EAAwC,QAAlCqB,EAAKsM,EAASqM,OAAO/I,eAA4B,IAAP5P,EAAgBA,EAAiC,QAA3B2F,EAAK2G,EAASsD,eAA4B,IAAPjK,OAAgB,EAASA,EAAG/C,aAA0B,IAAPjE,EAAgBA,EAAK,EAAGia,EAAkG,QAAjF7Z,EAAgC,QAA1B6G,EAAK0G,EAAS+H,cAA2B,IAAPzO,OAAgB,EAASA,EAAGgK,eAA4B,IAAP7Q,EAAgBA,EAAK6Q,EAASiJ,EAAWjJ,EAAU4I,EAAgBM,EAAiBF,EAAgBJ,EAAgBlF,EAAY,GAAIJ,EAAc,CACrlBkB,KAAM+D,EAAStI,GAAgBsI,EAAQU,QAAYzX,GAEvD8R,EAAYmB,OAAS+D,EAASvI,GAAgBuI,EAAQU,GAAkB5F,EAAYkB,KACpF7U,KAAKwZ,sBAAsBrB,EAAKpL,EAAUnD,EAAQ0P,EAAU3F,EAAaI,GACzER,GAAa,CACTE,UAAWzT,KAAKyT,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,cAEJ/T,KAAK0Z,uBAAuB3M,KAGpC,mBAAmB8I,EAAQ9I,EAAU2G,GACjC1T,KAAKwV,KAAM2C,IACPrC,GAAmBqC,EAAKtC,EAAQ9I,EAAU2G,KAGlD,WAAWmC,EAAQnC,GACf1T,KAAKwV,KAAM2C,IACPvC,GAAWuC,EAAKtC,EAAQnC,KAGhC,OACI,IAAIjT,EACJT,KAAK2Z,SACL3Z,KAAK4Z,aACL5Z,KAAK6Z,aACL7Z,KAAK8Z,aACL9Z,KAAK+Z,iBACD/Z,KAAKsH,UAC6B,QAAjC7G,EAAKT,KAAKqX,yBAAsC,IAAP5W,GAAyBA,EAAGuZ,QAAQha,KAAKsH,QAAS,CAAE2S,YAAY,KAE9Gja,KAAKka,eACLla,KAAKma,cACLna,KAAKgY,QAET,iBACI,MAAMxT,EAAUxE,KAAKyT,UAAUkE,cAAeyC,EAAa5V,EAAQ4V,WAAY9S,EAAUtH,KAAKsH,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,cACIhG,KAAKmX,eAAiB,GACtB,IAAK,MAAO,CAAEtB,KAAW7V,KAAKyT,UAAUqH,QAChCjF,EAAO8D,QACP3Z,KAAKmX,eAAetW,KAAKgV,IAEzBA,EAAOkF,mBAAqBlF,EAAOmF,sBACnChb,KAAKoX,cAAcvW,KAAKgV,GAIpC,eACI7V,KAAKiX,iBAAmB,GACxBjX,KAAKkX,kBAAoB,GACzB,IAAK,MAAM+D,KAAWjb,KAAKyT,UAAUqE,UAAUoD,SACvCD,EAAQE,WACRnb,KAAKkX,kBAAkBrW,KAAKoa,IAE5BA,EAAQG,gBAAkBH,EAAQI,oBAAsBJ,EAAQK,aAChEtb,KAAKiX,iBAAiBpW,KAAKoa,GAIvC,WAAWM,GACP,IAAI9a,EAAI2F,EACJpG,KAAKgX,aACmB,QAAvBvW,EAAKT,KAAKsH,eAA4B,IAAP7G,GAAyBA,EAAG4X,UAEhErY,KAAKgX,WACDuE,EAAOC,SAAWxF,MAAsBuF,EAAOC,QACF,SAAvCD,EAAOC,QAAQxF,IACfhW,KAAKgX,WACfhX,KAAKsH,QAAUiU,EACfvb,KAAKsH,QAAQmU,WAAa,OAC1Bzb,KAAK0b,eAAiBrR,GAAW,GAAIrK,KAAKsH,QAAQgT,OAClDta,KAAKgG,KAAKE,OAASqV,EAAOI,aAC1B3b,KAAKgG,KAAKC,MAAQsV,EAAOK,YACzB5b,KAAK+W,SAAW/W,KAAKsH,QAAQuU,WAAW,MACN,QAAjCzV,EAAKpG,KAAKqX,yBAAsC,IAAPjR,GAAyBA,EAAG4T,QAAQha,KAAKsH,QAAS,CAAE2S,YAAY,IAC1Gja,KAAKyT,UAAUgC,OAAOqG,OACtB9b,KAAK+Z,iBAET,QACI,MAAMvV,EAAUxE,KAAKyT,UAAUkE,cAC/B3X,KAAKwV,KAAM2C,IACH3T,EAAQoP,eAAenP,QAAUD,EAAQoP,eAAemI,OACxD1I,GAAM8E,EAAKnY,KAAKgG,MAChBhG,KAAKkY,WAAWlY,KAAKgc,mBAGrBhc,KAAKkY,eAIjB,SACI,IAAKlY,KAAKsH,QACN,OAEJ,MAAMmM,EAAYzT,KAAKyT,UAAWwI,EAAUxI,EAAUgC,OAAOC,WAAY1P,EAAOyN,EAAU8H,OAAOvV,KAAMkW,EAAU,CAC7GjW,MAAOjG,KAAKsH,QAAQsU,YAAcK,EAClC/V,OAAQlG,KAAKsH,QAAQqU,aAAeM,GAExC,GAAIC,EAAQhW,SAAWF,EAAKE,QACxBgW,EAAQjW,QAAUD,EAAKC,OACvBiW,EAAQhW,SAAWlG,KAAKsH,QAAQpB,QAChCgW,EAAQjW,QAAUjG,KAAKsH,QAAQrB,MAC/B,OAEJ,MAAMkW,EAAUC,OAAOC,OAAO,GAAIrW,GAClChG,KAAKsH,QAAQrB,MAAQD,EAAKC,MAAQjG,KAAKsH,QAAQsU,YAAcK,EAC7Djc,KAAKsH,QAAQpB,OAASF,EAAKE,OAASlG,KAAKsH,QAAQqU,aAAeM,EAC5Djc,KAAKyT,UAAU6I,UACftc,KAAKuc,aAAe,CAChBtW,MAAOD,EAAKC,MAAQkW,EAAQlW,MAC5BC,OAAQF,EAAKE,OAASiW,EAAQjW,SAI1C,qBACI,IAAKlG,KAAKsH,QACN,OAEJtH,KAAK2Z,SACL,MAAMlG,EAAYzT,KAAKyT,UAAW+I,EAAe/I,EAAUgJ,sBAC3DhJ,EAAUqE,UAAU4E,aACpB1c,KAAK2c,sBACDH,SACM/I,EAAUmJ,UAGxB,uBAAuB7P,GACnB,IAAItM,EACJ,IAAK,MAAMwa,KAAWjb,KAAKkX,kBACM,QAA5BzW,EAAKwa,EAAQE,iBAA8B,IAAP1a,GAAyBA,EAAGoc,KAAK5B,EAASlO,GAGvF,sBAAsBoL,EAAKpL,EAAUnD,EAAQ0P,EAAU3F,EAAaI,GAChE,IAAItT,EACJ,IAAK,MAAMwa,KAAWjb,KAAKiX,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,MAAMnP,KAAOkf,EACdlG,GAAkB7C,EAAW+I,EAAkBlf,GAGzB,QAA7B6C,EAAKwa,EAAQK,kBAA+B,IAAP7a,GAAyBA,EAAGoc,KAAK5B,EAASlO,IAGxF,sBACI,IAAK,MAAM8I,KAAU7V,KAAKmX,eAClBtB,EAAO8D,QACP9D,EAAO8D,SAInB,yBAAyB5M,GACrB,IAAI6L,EAAQC,EACZ,IAAK,MAAMhD,KAAU7V,KAAKoX,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,EAAUxE,KAAKyT,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,SAEbrQ,KAAKgc,iBAAmB5L,GAAgB4M,EAAYA,EAAWxO,IAGvE,aACI,MAAMlH,EAAUtH,KAAKsH,QAAS9C,EAAUxE,KAAKyT,UAAUkE,cACvD,GAAKrQ,EAAL,CAGItH,KAAKid,aACLjd,KAAK0b,eAAiBrR,GAAW,GAAI/C,EAAQgT,OAC7Cta,KAAKkd,uBAGLld,KAAKsY,sBAET,IAAK,MAAM1a,KAAO4G,EAAQ8V,MAAO,CAC7B,IAAK1c,IAAQ4G,EAAQ8V,MACjB,SAEJ,MAAMjX,EAAQmB,EAAQ8V,MAAM1c,GACvByF,GAGLiE,EAAQgT,MAAM6C,YAAYvf,EAAKyF,EAAO,eAG9C,aACI,MAAMmB,EAAUxE,KAAKyT,UAAUkE,cAAeE,EAAQrT,EAAQsT,UAAUC,KAAKF,MAAOuF,EAAYvO,GAAgBgJ,EAAMuF,WACtH,GAAIA,EAAW,CACX,MAAMvF,EAAQrT,EAAQsT,UAAUC,KAAKF,MACrC7X,KAAKiY,gBAAkBmE,OAAOC,OAAOD,OAAOC,OAAO,GAAIe,GAAY,CAAE5O,EAAG,EAAIqJ,EAAM1W,UAG1F,WAAW+R,GACPlT,KAAKwV,KAAM2C,IACPnF,GAAUmF,EAAKnY,KAAKgG,KAAMkN,KAGlC,eACI,IAAIzS,EAAI2F,EACR,MAAMkB,EAAUtH,KAAKsH,QAChBA,IAG6B,QAAjC7G,EAAKT,KAAKqX,yBAAsC,IAAP5W,GAAyBA,EAAG2X,aACtEpY,KAAK4Z,aACL5Z,KAAK+Z,iBAC6B,QAAjC3T,EAAKpG,KAAKqX,yBAAsC,IAAPjR,GAAyBA,EAAG4T,QAAQ1S,EAAS,CAAE2S,YAAY,KAEzG,sBACI,MAAM3S,EAAUtH,KAAKsH,QAAS+V,EAAgBrd,KAAK0b,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,EAAUtH,KAAKsH,QACrB,IAAKA,EACD,OAEJ,MAAMgW,EAAW,YACjBhW,EAAQgT,MAAM6C,YAAY,WAAY,QAASG,GAC/ChW,EAAQgT,MAAM6C,YAAY,UAAWnd,KAAKyT,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,EAAOzc,EAAS0c,EAAKlZ,GAClD,GAAIkZ,EAAK,CACL,IAAIC,EAAa,CAAEC,SAAS,GACL,mBAAZpZ,EACPmZ,EAAWE,QAAUrZ,OAEJ3C,IAAZ2C,IACLmZ,EAAanZ,GAEjB8C,EAAQwW,iBAAiBL,EAAOzc,EAAS2c,OAExC,CACD,MAAMI,EAAgBvZ,EACtB8C,EAAQ5G,oBAAoB+c,EAAOzc,EAAS+c,IAG7C,MAAM,GACT,YAAYtK,GACRzT,KAAKyT,UAAYA,EACjBzT,KAAKge,SAAU,EACfhe,KAAKie,iBAAoBC,GAAMle,KAAKme,eAAeD,GACnDle,KAAKoe,kBAAqBF,GAAMle,KAAKme,eAAeD,GACpDle,KAAKqe,iBAAoBH,GAAMle,KAAKme,eAAeD,GACnDle,KAAKse,gBAAkB,IAAMte,KAAKue,mBAClCve,KAAKwe,kBAAoB,IAAMxe,KAAKue,mBACpCve,KAAKye,mBAAqB,IAAMze,KAAKue,mBACrCve,KAAK0e,qBAAwBR,GAAMle,KAAK2e,gBAAgBT,GACxDle,KAAK4e,eAAkBV,GAAMle,KAAK2e,gBAAgBT,GAClDle,KAAK6e,iBAAmB,IAAM7e,KAAK8e,YACnC9e,KAAK+e,wBAA0B,IAAM/e,KAAKgf,yBAC1Chf,KAAKif,mBAAsBf,GAAMle,KAAKkf,kBAAkBhB,GACxDle,KAAKmf,sBAAyBjB,GAAMle,KAAKkf,kBAAkBhB,GAC3Dle,KAAKof,cAAgB,IAAMpf,KAAKqf,qBAEpC,eACIrf,KAAKsf,iBAAgB,GAEzB,kBACItf,KAAKsf,iBAAgB,GAEzB,kBAAkBpB,GACd,MAAMzK,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cACtD,GAAI3X,KAAKge,QAAS,CACd,MAAMuB,EAAW9L,EAAU+L,cAAcC,MAAMra,SAC/C,IAAKma,EACD,OAEJ9L,EAAU+L,cAAcC,MAAMC,cAAgBtD,OAAOC,OAAO,GAAIkD,GAChE9L,EAAU+L,cAAcC,MAAME,WAAY,IAAIC,MAAOC,UACrD,MAAMC,EAAUtb,EAAQgb,cAAcO,OAAOD,QAC7CtY,GAA0BsY,EAAQ/U,KAAOA,GAAS/K,KAAKggB,gBAAgBjV,IAE5D,aAAXmT,EAAE7f,MACFkK,WAAW,IAAMvI,KAAKue,mBAAoB,KAGlD,gBAAgBxT,GACZ/K,KAAKyT,UAAUuM,gBAAgBjV,GAEnC,kBAAkBmT,GACd,MAAM+B,EAAa/B,EAAGgC,EAAYD,EAAWvY,QACvC1H,KAAKyT,UAAUjP,QAAQ2b,cAAcC,KACrCpgB,KAAKyT,UAAUjP,QAAQ2b,cAAcE,MAAOC,EAAQtgB,KAAKyT,UAAUjP,QAAQ+b,OAAOjT,KAAMgT,GAAUA,EAAMriB,OAASiiB,GACnHI,GAASA,EAAMliB,QAAQoiB,MACvBxgB,KAAKyT,UAAUgN,UAAUP,GAGjC,yBACI,MAAMzM,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cACtD3X,KAAKue,mBACA/Z,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,qBACQxV,KAAKghB,gBACLrY,aAAa3I,KAAKghB,sBACXhhB,KAAKghB,eAEhBhhB,KAAKghB,cAAgBzY,WAAWQ,UAAc,IAAItI,EAAI,OAAwC,QAAhCA,EAAKT,KAAKyT,UAAU8H,cAA2B,IAAP9a,OAAgB,EAASA,EAAGwgB,gBAAmB,KAEzJ,gBAAgBvD,GACZ,IAAIjd,EACJ,MAAMgT,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cAAeuJ,EAAa1c,EAAQgb,cAAc2B,UACxG,IAAIC,EAAqB7K,GACzB,GAAmB,WAAf2K,EACAzN,EAAU+L,cAAclY,QAAUS,OAClCqZ,EAAqB5K,QAEpB,GAAmB,WAAf0K,GAA2BzN,EAAU8H,OAAOjU,QAAS,CAC1D,MAAM+Z,EAAW5N,EAAU8H,OAAOjU,QAClCmM,EAAU+L,cAAclY,QAA4C,QAAjC7G,EAAK4gB,EAASC,qBAAkC,IAAP7gB,EAAgBA,EAAK4gB,EAASE,gBAG1G9N,EAAU+L,cAAclY,QAAUmM,EAAU8H,OAAOjU,QAEvD,MAAMka,EAAarZ,GAAe,gCAC9BqZ,SACoC3f,IAAhC2f,EAAW1D,iBACXN,GAAegE,EAAY,SAAUxhB,KAAKif,mBAAoBvB,QAE9B7b,IAA3B2f,EAAWC,cACZ/D,EACA8D,EAAWC,YAAYzhB,KAAKmf,uBAG5BqC,EAAWE,eAAe1hB,KAAKmf,yBAI3C,MAAMwC,EAAkBlO,EAAU+L,cAAclY,QAChD,IAAKqa,EACD,OAEJ,MAAMC,EAAOD,GACTnd,EAAQgb,cAAcO,OAAO8B,QAAQpd,QAAUD,EAAQgb,cAAcO,OAAOD,QAAQrb,UACpF+Y,GAAemE,EAAiBvL,GAAgBpW,KAAKie,iBAAkBP,GACvEF,GAAemE,EAAiBtL,GAAiBrW,KAAKoe,kBAAmBV,GACzEF,GAAemE,EAAiBrL,GAAgBtW,KAAKqe,iBAAkBX,GAClElZ,EAAQgb,cAAcO,OAAOD,QAAQrb,QAItC+Y,GAAemE,EAAiB1L,GAAejW,KAAK0e,qBAAsBhB,GAC1EF,GAAemE,EAAiBxL,GAAcnW,KAAK4e,eAAgBlB,GACnEF,GAAemE,EAAiBzL,GAAgBlW,KAAK6e,iBAAkBnB,IALvEF,GAAemE,EAAiB1L,GAAejW,KAAKse,gBAAiBZ,GAOzEF,GAAemE,EAAiBP,EAAoBphB,KAAKwe,kBAAmBd,GAC5EF,GAAemE,EAAiBlL,GAAkBzW,KAAKye,mBAAoBf,IAE3EjK,EAAU8H,OAAOjU,UACjBmM,EAAU8H,OAAOjU,QAAQgT,MAAMwH,cAAgBF,IAASnO,EAAU8H,OAAOjU,QAAU,UAAY,QAE/F9C,EAAQgb,cAAcO,OAAOpG,SACC,qBAAnBoI,eACH/hB,KAAKgiB,iBAAmBtE,GACpBjK,EAAU8H,OAAOjU,SACjBtH,KAAKgiB,eAAeC,UAAUxO,EAAU8H,OAAOjU,SAEnDtH,KAAKgiB,eAAe5J,oBACbpY,KAAKgiB,iBAENhiB,KAAKgiB,gBAAkBtE,GAAOjK,EAAU8H,OAAOjU,UACrDtH,KAAKgiB,eAAiB,IAAID,eAAgBG,IACtC,MAAMC,EAAQD,EAAQ5U,KAAM4Q,GAAMA,EAAEkE,SAAW3O,EAAU8H,OAAOjU,SAC3D6a,GAGLniB,KAAKqf,uBAETrf,KAAKgiB,eAAehI,QAAQvG,EAAU8H,OAAOjU,UAIjDkW,GAAezV,OAAQ2O,GAAa1W,KAAKof,cAAe1B,IAG5D1V,UACAwV,GAAexV,SAAU2O,GAAuB3W,KAAK+e,wBAAyBrB,GAAK,GAG3F,YACI,MAAM8B,EAAgBxf,KAAKyT,UAAU+L,cACrC,GAAIA,EAAe,CACf,MAAMC,EAAQD,EAAcC,MAC5BA,EAAM4C,UAAW,EACjB5C,EAAM6C,aAAe7C,EAAMra,UAGnC,gBAAgB8Y,GACZ,MAAMzK,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cAAe8H,EAAQhM,EAAU+L,cAAcC,MACrGA,EAAMzV,QAAS,EACf,IAAIuY,GAAU,EACd,MAAMC,EAAgB/C,EAAMra,SAC5B,GAAKod,GAAkBhe,EAAQgb,cAAcO,OAAOD,QAAQrb,OAA5D,CAGA,IAAK,MAAO,CAAEoR,KAAWpC,EAAUqH,QAC/B,GAAKjF,EAAO4M,qBAGZF,EAAU1M,EAAO4M,mBAAmBD,GAChCD,GACA,MAGHA,GACDviB,KAAK0iB,kBAAkBxE,GAE3BuB,EAAM4C,UAAW,GAErB,mBACI,MAAM7C,EAAgBxf,KAAKyT,UAAU+L,cACrC,IAAKA,EACD,OAEJ,MAAMC,EAAQD,EAAcC,aACrBA,EAAMra,gBACNqa,EAAMC,qBACND,EAAM6C,aACb9C,EAAcpN,OAASmE,GACvBkJ,EAAMzV,QAAS,EACfyV,EAAM4C,UAAW,EAErB,eAAenE,GACX,IAAIzd,EAAI2F,EAAIhH,EAAIiH,EAAI7G,EAAIgU,EAAImP,EAC5B,MAAMlP,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cACtD,KAAyC,QAAlClX,EAAKgT,EAAU+L,qBAAkC,IAAP/e,OAAgB,EAASA,EAAG6G,SACzE,OAGJ,IAAI0M,EADJP,EAAU+L,cAAcC,MAAMzV,QAAS,EAEvC,MAAMuR,EAAS9H,EAAU8H,OAAOjU,QAChC,GAAI4W,EAAE7f,KAAK0P,WAAW,WAAY,CAC9B/N,KAAKge,SAAU,EACf,MAAM4E,EAAa1E,EACnB,GAAIzK,EAAU+L,cAAclY,UAAYS,QACpC,GAAIwT,EAAQ,CACR,MAAMsH,EAAatH,EAAOuH,wBAC1B9O,EAAM,CACFrS,EAAGihB,EAAWG,QAAUF,EAAW1Y,KACnC1I,EAAGmhB,EAAWI,QAAUH,EAAW5Y,WAI1C,GAAwC,WAApCzF,EAAQgb,cAAc2B,UAAwB,CACnD,MAAM7e,EAASsgB,EAAWR,OAAQA,EAASQ,EAAWK,cAAe5B,EAAW5N,EAAU8H,OAAOjU,QACjG,GAAIhF,GAAU8f,GAAUf,EAAU,CAC9B,MAAM6B,EAAa5gB,EAAOwgB,wBAAyBK,EAAaf,EAAOU,wBAAyBM,EAAa/B,EAASyB,wBACtH9O,EAAM,CACFrS,EAAGihB,EAAWS,QAAU,EAAIH,EAAW/Y,MAAQgZ,EAAWhZ,KAAOiZ,EAAWjZ,MAC5E1I,EAAGmhB,EAAWU,QAAU,EAAIJ,EAAWjZ,KAAOkZ,EAAWlZ,IAAMmZ,EAAWnZ,WAI9E+J,EAAM,CACFrS,EAAiC,QAA7ByE,EAAKwc,EAAWS,eAA4B,IAAPjd,EAAgBA,EAAKwc,EAAWG,QACzEthB,EAAiC,QAA7BrC,EAAKwjB,EAAWU,eAA4B,IAAPlkB,EAAgBA,EAAKwjB,EAAWI,cAI5EJ,EAAWR,SAAW3O,EAAU8H,OAAOjU,UAC5C0M,EAAM,CACFrS,EAAiC,QAA7B0E,EAAKuc,EAAWS,eAA4B,IAAPhd,EAAgBA,EAAKuc,EAAWG,QACzEthB,EAAiC,QAA7BjC,EAAKojB,EAAWU,eAA4B,IAAP9jB,EAAgBA,EAAKojB,EAAWI,cAIhF,CACDhjB,KAAKge,QAAqB,cAAXE,EAAE7f,KACjB,MAAMklB,EAAarF,EAAGsF,EAAYD,EAAWE,QAAQF,EAAWE,QAAQtiB,OAAS,GAAIiiB,EAAwB,OAAX7H,QAA8B,IAAXA,OAAoB,EAASA,EAAOuH,wBACzJ9O,EAAM,CACFrS,EAAG6hB,EAAUT,SAA8F,QAAlFvP,EAAoB,OAAf4P,QAAsC,IAAfA,OAAwB,EAASA,EAAWjZ,YAAyB,IAAPqJ,EAAgBA,EAAK,GACxI/R,EAAG+hB,EAAUR,SAA6F,QAAjFL,EAAoB,OAAfS,QAAsC,IAAfA,OAAwB,EAASA,EAAWnZ,WAAwB,IAAP0Y,EAAgBA,EAAK,IAG/I,MAAM1G,EAAUxI,EAAUgC,OAAOC,WAC7B1B,IACAA,EAAIrS,GAAKsa,EACTjI,EAAIvS,GAAKwa,GAEbxI,EAAU+L,cAAcC,MAAMra,SAAW4O,EACzCP,EAAU+L,cAAcpN,OAASgE,ICrRzC,SAASsN,GAAUrgB,EAAOsgB,EAAW,GAAIC,GAAS,GAC9C,MAAO,CACHvgB,QACA6D,OAAQ0c,EAAS,GAAKD,EAAY,GAAKtgB,EAAS,KAGjD,MAAMwgB,GACT,YAAYpQ,GACRzT,KAAKyT,UAAYA,EAErB,gBAAgBqQ,GACZ,IAAIrjB,EACJ,IACI,MAAMgT,EAAYzT,KAAKyT,UACvB,IAAKA,EAAUmQ,aACiB/hB,IAA5B4R,EAAUsQ,eACVD,EAAYrQ,EAAUsQ,cAAgB,IAAOtQ,EAAUkQ,SAEvD,YADAlQ,EAAU+B,MAAK,GAGgB,QAAlC/U,EAAKgT,EAAUsQ,qBAAkC,IAAPtjB,IAAsBgT,EAAUsQ,cAAgBD,GAC3F,MAAMpQ,EAAQgQ,GAAUI,EAAYrQ,EAAUsQ,cAAetQ,EAAUkQ,SAAUlQ,EAAUmQ,QAG3F,GAFAnQ,EAAUuQ,UAAYtQ,EAAMrQ,MAC5BoQ,EAAUsQ,cAAgBD,EACtBpQ,EAAMrQ,MAAQ,IAEd,YADAoQ,EAAU+B,MAAK,GAInB,SADM/B,EAAUqE,UAAUtC,KAAK9B,GAC3BD,EAAUwQ,SAAW,GAAKxQ,EAAUuQ,SAAWvQ,EAAUwQ,SAEzD,YADAxQ,EAAUyQ,UAGVzQ,EAAUqN,sBACVrN,EAAU+B,MAAK,GAGvB,MAAO0I,GACHiG,QAAQC,MAAM,sCAAuClG,KCtC1D,MAAMmG,GACT,cACIrkB,KAAKqD,MAAQ,GAEjB,cAAcf,EAAQhE,GAClB,MAAMwQ,EAAQ,IAAIuV,GAUlB,OATAvV,EAAM1F,KAAK9G,QACET,IAATvD,IACoB,kBAATA,GAAqBA,aAAgBqJ,MAC5CmH,EAAM1F,KAAK,CAAE/F,MAAO/E,IAGpBwQ,EAAM1F,KAAK9K,IAGZwQ,EAEX,KAAKxQ,QACgEuD,KAAnD,OAATvD,QAA0B,IAATA,OAAkB,EAASA,EAAK+E,SAGtDrD,KAAKqD,MAAQ/E,EAAK+E,QCpBnB,MAAM,GACT,cACIrD,KAAK8O,MAAQ,IAAIuV,GACjBrkB,KAAK8O,MAAMzL,MAAQ,GACnBrD,KAAKya,MAAQ,GACbza,KAAKoF,SAAW,GAChBpF,KAAK4a,OAAS,GACd5a,KAAKgG,KAAO,GACZhG,KAAKqQ,QAAU,EAEnB,KAAK/R,GACIA,SAGcuD,IAAfvD,EAAKwQ,QACL9O,KAAK8O,MAAQuV,GAAatiB,OAAO/B,KAAK8O,MAAOxQ,EAAKwQ,aAEnCjN,IAAfvD,EAAKmc,QACLza,KAAKya,MAAQnc,EAAKmc,YAEA5Y,IAAlBvD,EAAK8G,WACLpF,KAAKoF,SAAW9G,EAAK8G,eAELvD,IAAhBvD,EAAKsc,SACL5a,KAAK4a,OAAStc,EAAKsc,aAEL/Y,IAAdvD,EAAK0H,OACLhG,KAAKgG,KAAO1H,EAAK0H,WAEAnE,IAAjBvD,EAAK+R,UACLrQ,KAAKqQ,QAAU/R,EAAK+R,WC9BzB,MAAM,GACT,cACIrQ,KAAK8O,MAAQ,IAAIuV,GACjBrkB,KAAK8O,MAAMzL,MAAQ,OACnBrD,KAAKqQ,QAAU,EAEnB,KAAK/R,GACIA,SAGcuD,IAAfvD,EAAKwQ,QACL9O,KAAK8O,MAAQuV,GAAatiB,OAAO/B,KAAK8O,MAAOxQ,EAAKwQ,aAEjCjN,IAAjBvD,EAAK+R,UACLrQ,KAAKqQ,QAAU/R,EAAK+R,WCdzB,MAAM,GACT,cACIrQ,KAAK6T,UAAY,kBACjB7T,KAAK+b,MAAQ,IAAI,GACjB/b,KAAKyE,QAAS,EAElB,KAAKnG,GACD,GAAKA,EAAL,CAMA,QAHuBuD,IAAnBvD,EAAKuV,YACL7T,KAAK6T,UAAYvV,EAAKuV,gBAEPhS,IAAfvD,EAAKyd,MAAqB,CAC1B,MAAMA,EAAQzd,EAAKyd,MACbjN,EAA+B,kBAAfxQ,EAAKyd,MAAqB,CAAEjN,MAAOxQ,EAAKyd,OAAUzd,EAAKyd,MAC7E/b,KAAK+b,MAAM3S,UAAqBvH,IAAhBka,EAAMjN,MAAsBiN,EAAQ,CAAEjN,MAAOA,SAE7CjN,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,UCpBxB,MAAM6f,GACT,cACItkB,KAAKyE,QAAS,EACdzE,KAAKgZ,OAAS,EAElB,KAAK1a,GACIA,SAGeuD,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,aAEH5C,IAAhBvD,EAAK0a,SACLhZ,KAAKgZ,OAAS1a,EAAK0a,UCbxB,MAAMuL,GACT,cACIvkB,KAAKyE,QAAS,EACdzE,KAAK+K,KAAO,GAEhB,KAAKzM,GACIA,SAGeuD,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,aAEL5C,IAAdvD,EAAKyM,OACL/K,KAAK+K,KAAOzM,EAAKyM,QCZtB,MAAM,GACT,cACI/K,KAAKuH,UAAY,GACjBvH,KAAKyE,QAAS,EACdzE,KAAK+K,KAAO,GACZ/K,KAAK3B,KAAO,SAEhB,SACI,OAAO2B,KAAKwkB,UAEhB,OAAOnhB,GACHrD,KAAKwkB,UAAYnhB,EAErB,gBACI,OAAOrD,KAAKykB,IAEhB,cAAcphB,GACVrD,KAAKykB,IAAMphB,EAEf,UACI,OAAOmE,GAA0BxH,KAAKuH,UAAYM,GAAMA,EAAEuG,QAAQ,IAAK,KAE3E,QAAQ/K,GACJrD,KAAKuH,UAAYC,GAA0BnE,EAAQwE,GAAM,IAAIA,GAEjE,KAAKvJ,GACD,IAAImC,EAAI2F,EACR,IAAK9H,EACD,OAEJ,MAAMmmB,EAAiF,QAA1Ere,EAAyB,QAAnB3F,EAAKnC,EAAKmmB,WAAwB,IAAPhkB,EAAgBA,EAAKnC,EAAKkmB,iBAA8B,IAAPpe,EAAgBA,EAAK9H,EAAKomB,QAC7G7iB,IAAR4iB,IACAzkB,KAAKykB,IAAMA,QAEQ5iB,IAAnBvD,EAAKiJ,YACLvH,KAAKuH,UAAYjJ,EAAKiJ,gBAEN1F,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,aAEL5C,IAAdvD,EAAKyM,OACL/K,KAAK+K,KAAOzM,EAAKyM,WAEHlJ,IAAdvD,EAAKD,OACL2B,KAAK3B,KAAOC,EAAKD,OC7CtB,MAAMsmB,GACT,cACI3kB,KAAKyE,QAAS,EACdzE,KAAK4kB,MAAQ,EACb5kB,KAAK4jB,OAAS,GAElB,KAAKtlB,GACIA,SAGeuD,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,aAEJ5C,IAAfvD,EAAKsmB,QACL5kB,KAAK4kB,MAAQtmB,EAAKsmB,YAEF/iB,IAAhBvD,EAAKslB,SACL5jB,KAAK4jB,OAAStlB,EAAKslB,UChBxB,MAAM,GACT,cACI5jB,KAAKyE,QAAS,EACdzE,KAAK+K,KAAO,GACZ/K,KAAK6kB,SAAW,IAAIF,GAExB,KAAKrmB,GACIA,SAGeuD,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,aAEL5C,IAAdvD,EAAKyM,OACL/K,KAAK+K,KAAOzM,EAAKyM,MAErB/K,KAAK6kB,SAASzb,KAAK9K,EAAKumB,YCbzB,MAAM,GACT,cACI7kB,KAAK8f,QAAU,IAAIyE,GACnBvkB,KAAK8kB,MAAQ,IAAI,GACjB9kB,KAAK6hB,QAAU,IAAI,GACnB7hB,KAAK2Z,QAAS,EAElB,cACI,OAAO3Z,KAAK8f,QAEhB,YAAYzc,GACRrD,KAAK8f,QAAUzc,EAEnB,YACI,OAAOrD,KAAK8kB,MAEhB,UAAUzhB,GACNrD,KAAK8kB,MAAQzhB,EAEjB,cACI,OAAOrD,KAAK6hB,QAEhB,YAAYxe,GACRrD,KAAK6hB,QAAUxe,EAEnB,KAAK/E,GACD,IAAImC,EAAI2F,EAAIhH,EACZ,IAAKd,EACD,OAEJ0B,KAAK8f,QAAQ1W,KAA6B,QAAvB3I,EAAKnC,EAAKwhB,eAA4B,IAAPrf,EAAgBA,EAAKnC,EAAKymB,SAC5E,MAAMD,EAA8B,QAArB1e,EAAK9H,EAAKwmB,aAA0B,IAAP1e,EAAgBA,EAAK9H,EAAK0mB,WACxDnjB,IAAVijB,IACA9kB,KAAK8kB,MAAQtd,GAA0Bsd,EAAQjd,IAC3C,MAAMod,EAAM,IAAI,GAEhB,OADAA,EAAI7b,KAAKvB,GACFod,KAGfjlB,KAAK6hB,QAAQzY,KAA6B,QAAvBhK,EAAKd,EAAKujB,eAA4B,IAAPziB,EAAgBA,EAAKd,EAAK4mB,cACxDrjB,IAAhBvD,EAAKqb,SACL3Z,KAAK2Z,OAASrb,EAAKqb,SC7CxB,MAAMwL,GACT,YAAYC,EAAQ3R,GAChBzT,KAAKqlB,QAAUD,EACfplB,KAAKslB,WAAa7R,EAEtB,KAAKnV,GACD,GAAKA,GAGD0B,KAAKslB,WAAY,CACjB,MAAMC,EAAcvlB,KAAKqlB,QAAQvK,QAAQyK,YAAY5kB,IAAIX,KAAKslB,YAC9D,GAAIC,EACA,IAAK,MAAMC,KAAcD,EACjBC,EAAWC,iBACXD,EAAWC,gBAAgBzlB,KAAM1B,KCZlD,MAAM,GACT,YAAY8mB,EAAQ3R,GAChBzT,KAAKmhB,UAAY,SACjBnhB,KAAK+f,OAAS,IAAI,GAClB/f,KAAK0lB,MAAQ,IAAIP,GAAMC,EAAQ3R,GAEnC,gBACI,OAAOzT,KAAKmhB,UAEhB,cAAc9d,GACVrD,KAAKmhB,UAAY9d,EAErB,KAAK/E,GACD,IAAImC,EACJ,IAAKnC,EACD,OAEJ,MAAM6iB,EAAsC,QAAzB1gB,EAAKnC,EAAK6iB,iBAA8B,IAAP1gB,EAAgBA,EAAKnC,EAAKqnB,eAC5D9jB,IAAdsf,IACAnhB,KAAKmhB,UAAYA,GAErBnhB,KAAK+f,OAAO3W,KAAK9K,EAAKyhB,QACtB/f,KAAK0lB,MAAMtc,KAAK9K,EAAKonB,QCvBtB,MAAM,GACT,KAAKpnB,GACD,IAAImC,EAAI2F,EACH9H,SAGiBuD,IAAlBvD,EAAK8G,WACLpF,KAAKoF,SAAW,CACZzD,EAA8B,QAA1BlB,EAAKnC,EAAK8G,SAASzD,SAAsB,IAAPlB,EAAgBA,EAAK,GAC3DgB,EAA8B,QAA1B2E,EAAK9H,EAAK8G,SAAS3D,SAAsB,IAAP2E,EAAgBA,EAAK,UAG9CvE,IAAjBvD,EAAKkG,UACLxE,KAAKwE,QAAU6F,GAAW,GAAI/L,EAAKkG,YCbxC,MAAM,GACT,cACIxE,KAAK4lB,SAAWC,IAChB7lB,KAAKwE,QAAU,GACfxE,KAAK+K,KAAO,SAEhB,KAAKzM,GACIA,SAGiBuD,IAAlBvD,EAAKsnB,WACL5lB,KAAK4lB,SAAWtnB,EAAKsnB,eAEP/jB,IAAdvD,EAAKyM,OACa,WAAdzM,EAAKyM,KACL/K,KAAK+K,KAAO,SAGZ/K,KAAK+K,KAAO,eAGClJ,IAAjBvD,EAAKkG,UACLxE,KAAKwE,QAAU6F,GAAW,GAAI/L,EAAKkG,YCvBxC,MAAMshB,GACT,cACI9lB,KAAKwgB,MAAO,EACZxgB,KAAK+K,KAAO,MACZ/K,KAAKqD,OAAQ,EAEjB,KAAK/E,GACIA,SAGauD,IAAdvD,EAAKkiB,OACLxgB,KAAKwgB,KAAOliB,EAAKkiB,WAEH3e,IAAdvD,EAAKyM,OACL/K,KAAK+K,KAAOzM,EAAKyM,WAEFlJ,IAAfvD,EAAK+E,QACLrD,KAAKqD,MAAQ/E,EAAK+E,SCfvB,MAAM,GACT,cACIrD,KAAK/B,KAAO,GACZ+B,KAAK5B,QAAU,IAAI0nB,GAEvB,KAAKxnB,GACIA,SAGauD,IAAdvD,EAAKL,OACL+B,KAAK/B,KAAOK,EAAKL,MAErB+B,KAAK5B,QAAQgL,KAAK9K,EAAKF,cACFyD,IAAjBvD,EAAKkG,UACLxE,KAAKwE,QAAU6F,GAAW,GAAI/L,EAAKkG,YCfxC,MAAM,GACT,cACIxE,KAAK+lB,MAAQ,EACb/lB,KAAKyE,QAAS,EACdzE,KAAK2J,OAAS,EACd3J,KAAKkS,MAAQ,EACblS,KAAKmS,MAAQ,EACbnS,KAAKqS,MAAO,EAEhB,KAAK/T,GACIA,SAGcuD,IAAfvD,EAAKynB,QACL/lB,KAAK+lB,MAAQzhB,GAAchG,EAAKynB,aAEhBlkB,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,aAEH5C,IAAhBvD,EAAKqL,SACL3J,KAAK2J,OAASrF,GAAchG,EAAKqL,cAElB9H,IAAfvD,EAAK4T,QACLlS,KAAKkS,MAAQ5N,GAAchG,EAAK4T,aAEjBrQ,IAAfvD,EAAK6T,QACLnS,KAAKmS,MAAQ7N,GAAchG,EAAK6T,aAElBtQ,IAAdvD,EAAK+T,OACLrS,KAAKqS,KAAO/T,EAAK+T,QC7BtB,MAAM,GACT,cACIrS,KAAK0P,EAAI,IAAI,GACb1P,KAAK4P,EAAI,IAAI,GACb5P,KAAK2P,EAAI,IAAI,GAEjB,KAAKrR,GACIA,IAGL0B,KAAK0P,EAAEtG,KAAK9K,EAAKoR,GACjB1P,KAAK4P,EAAExG,KAAK9K,EAAKsR,GACjB5P,KAAK2P,EAAEvG,KAAK9K,EAAKqR,KCXlB,MAAM,WAAwB0U,GACjC,cACIthB,QACA/C,KAAK0R,UAAY,IAAI,GAEzB,cAAcpP,EAAQhE,GAClB,MAAMwQ,EAAQ,IAAI,GAUlB,OATAA,EAAM1F,KAAK9G,QACET,IAATvD,IACoB,kBAATA,GAAqBA,aAAgBqJ,MAC5CmH,EAAM1F,KAAK,CAAE/F,MAAO/E,IAGpBwQ,EAAM1F,KAAK9K,IAGZwQ,EAEX,KAAKxQ,GAED,GADAyE,MAAMqG,KAAK9K,IACNA,EACD,OAEJ,MAAM2T,EAAiB3T,EAAKoT,eACL7P,IAAnBoQ,SAC8BpQ,IAA1BoQ,EAAexN,OACfzE,KAAK0R,UAAUhC,EAAEtG,KAAK6I,GAGtBjS,KAAK0R,UAAUtI,KAAK9K,EAAKoT,aC/BlC,MAAMsU,GACT,cACIhmB,KAAKkS,MAAQ,EAEjB,KAAK5T,GACIA,QAGcuD,IAAfvD,EAAK4T,QACLlS,KAAKkS,MAAQ5T,EAAK4T,QCTvB,MAAM+T,GACT,cACIjmB,KAAKyE,QAAS,EACdzE,KAAKkmB,QAAU,EAEnB,KAAK5nB,GACIA,SAGeuD,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,aAEF5C,IAAjBvD,EAAK4nB,UACLlmB,KAAKkmB,QAAU5nB,EAAK4nB,WCbzB,MAAMC,GACT,cACInmB,KAAKyE,QAAS,EACdzE,KAAK0E,aAAe,EAExB,KAAKpG,GACIA,SAGeuD,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,aAEG5C,IAAtBvD,EAAKoG,eACL1E,KAAK0E,aAAepG,EAAKoG,gBCX9B,MAAM,GACT,cACI1E,KAAKiD,OAAS,IAAIkjB,GAClBnmB,KAAKqD,MAAQ,EAEjB,KAAK/E,GACIA,IAGsB,mBAAhBA,EAAK2E,OACZjD,KAAKiD,OAAOwB,OAASnG,EAAK2E,OAG1BjD,KAAKiD,OAAOmG,KAAK9K,EAAK2E,aAEPpB,IAAfvD,EAAK+E,QACLrD,KAAKqD,MAAQiB,GAAchG,EAAK+E,MAAOrD,KAAKiD,OAAOwB,OAASzE,KAAKiD,OAAOyB,kBAAe7C,MCjB5F,MAAM,WAA8B,GACvC,cACIkB,QACA/C,KAAKiD,OAAOyB,aAAe,GAC3B1E,KAAKqD,MAAQ,GCJd,MAAM,GACT,cACIrD,KAAK8L,WAAa,IAAI,GACtB9L,KAAK+L,SAAW,IAAI,GAExB,KAAKzN,GACIA,IAGL0B,KAAK8L,WAAW1C,KAAK9K,EAAKwN,YAC1B9L,KAAK+L,SAAS3C,KAAK9K,EAAKyN,YCRzB,MAAM,GACT,cACI/L,KAAKomB,OAAS,IAAIJ,GAClBhmB,KAAK6L,OAAS,IAAI,GAClB7L,KAAKyE,QAAS,EACdzE,KAAK+K,KAAO,SACZ/K,KAAKqmB,QAAU,IAAIJ,GAEvB,KAAK3nB,GACIA,IAGL0B,KAAKomB,OAAOhd,KAAK9K,EAAK8nB,QACtBpmB,KAAK6L,OAAOzC,KAAK9K,EAAKuN,aACFhK,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,aAEL5C,IAAdvD,EAAKyM,OACL/K,KAAK+K,KAAOzM,EAAKyM,MAErB/K,KAAKqmB,QAAQjd,KAAK9K,EAAK+nB,WCtBxB,MAAM,GACT,cACIrmB,KAAK2J,OAAS,EACd3J,KAAKqD,MAAQ,GAEjB,KAAK/E,GACIA,SAGeuD,IAAhBvD,EAAKqL,SACL3J,KAAK2J,OAASrF,GAAchG,EAAKqL,cAElB9H,IAAfvD,EAAK+E,QACLrD,KAAKqD,MAAQiB,GAAchG,EAAK+E,UCbrC,MAAM,GACT,cACIrD,KAAKgF,SAAW,IAChBhF,KAAKyE,QAAS,EACdzE,KAAK0M,OAAS,CACV/K,EAAG,IACHF,EAAG,KAGX,cACI,OAAOzB,KAAK0M,OAAO/K,EAEvB,YAAY0B,GACRrD,KAAK0M,OAAO/K,EAAI0B,EAEpB,cACI,OAAOrD,KAAK0M,OAAOjL,EAEvB,YAAY4B,GACRrD,KAAK0M,OAAOjL,EAAI4B,EAEpB,KAAK/E,GACD,IAAImC,EAAI2F,EAAIhH,EAAIiH,EAChB,IAAK/H,EACD,YAEkBuD,IAAlBvD,EAAK0G,WACLhF,KAAKgF,SAAWV,GAAchG,EAAK0G,gBAEnBnD,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,QAEvB,MAAM6hB,EAAkF,QAAvElgB,EAA4B,QAAtB3F,EAAKnC,EAAKoO,cAA2B,IAAPjM,OAAgB,EAASA,EAAGkB,SAAsB,IAAPyE,EAAgBA,EAAK9H,EAAKgoB,aAC1GzkB,IAAZykB,IACAtmB,KAAK0M,OAAO/K,EAAI2kB,GAEpB,MAAMC,EAAkF,QAAvElgB,EAA4B,QAAtBjH,EAAKd,EAAKoO,cAA2B,IAAPtN,OAAgB,EAASA,EAAGqC,SAAsB,IAAP4E,EAAgBA,EAAK/H,EAAKioB,aAC1G1kB,IAAZ0kB,IACAvmB,KAAK0M,OAAOjL,EAAI8kB,ICvCrB,MAAMC,GACT,cACIxmB,KAAK2B,EAAI,GACT3B,KAAKyB,EAAI,GACTzB,KAAK+K,KAAO,UACZ/K,KAAK4J,OAAS,EAElB,KAAKtL,GACIA,SAGUuD,IAAXvD,EAAKqD,IACL3B,KAAK2B,EAAIrD,EAAKqD,QAEHE,IAAXvD,EAAKmD,IACLzB,KAAKyB,EAAInD,EAAKmD,QAEAI,IAAdvD,EAAKyM,OACL/K,KAAK+K,KAAOzM,EAAKyM,WAEDlJ,IAAhBvD,EAAKsL,SACL5J,KAAK4J,OAAStL,EAAKsL,UCpBxB,MAAM,GACT,cACI5J,KAAKymB,aAAe,KACpBzmB,KAAKyE,QAAS,EACdzE,KAAK0mB,SAAU,EACf1mB,KAAK2mB,SAAW,GAEpB,KAAKroB,GACIA,SAGqBuD,IAAtBvD,EAAKmoB,eACLzmB,KAAKymB,aAAeniB,GAAchG,EAAKmoB,oBAEvB5kB,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,aAEF5C,IAAjBvD,EAAKooB,UACL1mB,KAAK0mB,QAAUpoB,EAAKooB,cAEF7kB,IAAlBvD,EAAKqoB,WACL3mB,KAAK2mB,SAAWriB,GAAchG,EAAKqoB,aCpBxC,MAAM,GACT,cACI3mB,KAAKuD,OAAQ,EACbvD,KAAK4mB,MAAQ,IAAI,GACjB5mB,KAAKyE,QAAS,EACdzE,KAAKwE,QAAU,GAEnB,KAAKlG,GACIA,SAGcuD,IAAfvD,EAAKiF,QACLvD,KAAKuD,MAAQjF,EAAKiF,OAEtBvD,KAAK4mB,MAAMxd,KAAK9K,EAAKsoB,YACD/kB,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,QAEvBzE,KAAK6mB,UAAYvoB,EAAKuoB,UAClBvoB,EAAKkG,UACLxE,KAAKwE,QAAU6F,GAAWrK,KAAKwE,QAASlG,EAAKkG,YCrBlD,MAAM,GACT,cACIxE,KAAKyE,QAAS,EACdzE,KAAKmB,OAAS,GACdnB,KAAKod,UAAY,IAAIiH,GACrBrkB,KAAKod,UAAU/Z,MAAQ,UAE3B,KAAK/E,GACIA,SAGeuD,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,QAEvBzE,KAAKod,UAAYiH,GAAatiB,OAAO/B,KAAKod,UAAW9e,EAAK8e,gBACtCvb,IAAhBvD,EAAK6C,SACLnB,KAAKmB,OAAS7C,EAAK6C,UCjBxB,MAAM2lB,GACT,cACI9mB,KAAK5B,QAAU,MAEnB,KAAKE,GACD,IAAImC,EAAI2F,EAAIhH,EAAIiH,EACX/H,SAGgBuD,IAAjBvD,EAAKF,UACL4B,KAAK5B,QAAUE,EAAKF,SAExB4B,KAAKoK,OAAgC,QAAtB3J,EAAKnC,EAAK8L,cAA2B,IAAP3J,EAAgBA,EAAKnC,EAAKF,QACvE4B,KAAKmK,KAA4B,QAApB/D,EAAK9H,EAAK6L,YAAyB,IAAP/D,EAAgBA,EAAK9H,EAAKF,QACnE4B,KAAKkK,MAA8B,QAArB9K,EAAKd,EAAK4L,aAA0B,IAAP9K,EAAgBA,EAAKd,EAAKF,QACrE4B,KAAKiK,IAA0B,QAAnB5D,EAAK/H,EAAK2L,WAAwB,IAAP5D,EAAgBA,EAAK/H,EAAKF,UCblE,MAAM,GACT,cACI4B,KAAKymB,aAAe,EACpBzmB,KAAKyE,QAAS,EAElB,KAAKnG,GACIA,SAGqBuD,IAAtBvD,EAAKmoB,eACLzmB,KAAKymB,aAAeniB,GAAchG,EAAKmoB,oBAEvB5kB,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,QAEvBzE,KAAKoF,SAAW9G,EAAK8G,SAAWiF,GAAW,GAAI/L,EAAK8G,eAAYvD,ICRjE,MAAM,GACT,cACI7B,KAAKkC,MAAQ,IAAI,GACjBlC,KAAK+mB,QAAU,IAAI,GACnB/mB,KAAKqF,OAAS,IAAImhB,GAClBxmB,KAAKmS,MAAQ,EACbnS,KAAKgF,SAAW,GAChBhF,KAAKmF,UAAY,OACjBnF,KAAKgnB,MAAQ,EACbhnB,KAAKyE,QAAS,EACdzE,KAAKinB,QAAU,IAAI,GACnBjnB,KAAKknB,KAAO,IAAI,GAChBlnB,KAAKmnB,SAAW,IAAIL,GACpB9mB,KAAKiD,QAAS,EACdjD,KAAKgG,MAAO,EACZhG,KAAKkS,MAAQ,EACblS,KAAKonB,KAAO,IAAI,GAChBpnB,KAAKqnB,UAAW,EAChBrnB,KAAK6X,MAAQ,IAAI,GACjB7X,KAAKsnB,SAAU,EACftnB,KAAKunB,MAAO,EAEhB,aACI,OAAOvnB,KAAKwnB,WAEhB,WAAWnkB,GACPrD,KAAKwnB,WAAankB,EAEtB,iBACI,OAAO,EAEX,eAAegL,IAEf,YACI,OAAOrO,KAAKknB,KAEhB,UAAU7jB,GACNrD,KAAKknB,KAAO7jB,EAEhB,cACI,OAAOrD,KAAKmnB,SAAS/oB,QAEzB,YAAYiF,GACRrD,KAAKmnB,SAAS/oB,QAAUiF,EAE5B,eACI,OAAOrD,KAAKynB,QAEhB,aAAapkB,GACTrD,KAAKynB,QAAUpkB,EAEnB,KAAK/E,GACD,IAAImC,EAAI2F,EAAIhH,EACZ,IAAKd,EACD,OAEJ0B,KAAKkC,MAAMkH,KAA2B,kBAAf9K,EAAK4D,MAAqB,CAAEmB,MAAO/E,EAAK4D,OAAU5D,EAAK4D,OAC9ElC,KAAK+mB,QAAQ3d,KAAK9K,EAAKyoB,SACvB/mB,KAAKqF,OAAO+D,KAAK9K,EAAK+G,aACHxD,IAAfvD,EAAK6T,QACLnS,KAAKmS,MAAQ7T,EAAK6T,YAECtQ,IAAnBvD,EAAK6G,YACLnF,KAAKmF,UAAY7G,EAAK6G,gBAEJtD,IAAlBvD,EAAK0G,WACLhF,KAAKgF,SACwB,kBAAlB1G,EAAK0G,SACN,CACE8G,WAAYxN,EAAK0G,SACjB+G,SAAUzN,EAAK0G,UAEjBoX,OAAOC,OAAO,GAAI/d,EAAK0G,gBAElBnD,IAAfvD,EAAK0oB,QACLhnB,KAAKgnB,MAAQ1iB,GAAchG,EAAK0oB,aAEhBnlB,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,QAEvBzE,KAAKinB,QAAQ7d,KAAK9K,EAAK2oB,SACvB,MAAME,EAAyF,QAA7E/gB,EAA8B,QAAxB3F,EAAKnC,EAAK6oB,gBAA6B,IAAP1mB,EAAgBA,EAAKnC,EAAKmpB,eAA4B,IAAPrhB,EAAgBA,EAAK9H,EAAKopB,cAChH7lB,IAAbslB,IACwB,kBAAbA,EACPnnB,KAAKmnB,SAAS/d,KAAK+d,GAGnBnnB,KAAKmnB,SAAS/d,KAAK,CACfhL,QAAS+oB,KAIrBnnB,KAAKknB,KAAK9d,KAA0B,QAApBhK,EAAKd,EAAK4oB,YAAyB,IAAP9nB,EAAgBA,EAAKd,EAAKqpB,YAClD9lB,IAAhBvD,EAAK2E,SACLjD,KAAKiD,OAAS3E,EAAK2E,aAELpB,IAAdvD,EAAK0H,OACLhG,KAAKgG,KAAO1H,EAAK0H,WAEFnE,IAAfvD,EAAK4T,QACLlS,KAAKkS,MAAQ5N,GAAchG,EAAK4T,QAEpClS,KAAKonB,KAAKhe,KAAK9K,EAAK8oB,WACEvlB,IAAlBvD,EAAK+oB,WACLrnB,KAAKqnB,SAAW/oB,EAAK+oB,UAEzBrnB,KAAK6X,MAAMzO,KAAK9K,EAAKuZ,YACAhW,IAAjBvD,EAAKgpB,UACLtnB,KAAKsnB,QAAUhpB,EAAKgpB,cAENzlB,IAAdvD,EAAKipB,OACLvnB,KAAKunB,KAAOjpB,EAAKipB,OCvHtB,MAAM,GACT,cACIvnB,KAAK+lB,MAAQ,EACb/lB,KAAKyE,QAAS,EACdzE,KAAKkS,MAAQ,EACblS,KAAKmS,MAAQ,EACbnS,KAAKqS,MAAO,EAEhB,KAAK/T,GACIA,SAGcuD,IAAfvD,EAAKynB,QACL/lB,KAAK+lB,MAAQzhB,GAAchG,EAAKynB,aAEhBlkB,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,aAEJ5C,IAAfvD,EAAK4T,QACLlS,KAAKkS,MAAQ5N,GAAchG,EAAK4T,aAEjBrQ,IAAfvD,EAAK6T,QACLnS,KAAKmS,MAAQ7N,GAAchG,EAAK6T,aAElBtQ,IAAdvD,EAAK+T,OACLrS,KAAKqS,KAAO/T,EAAK+T,QCzBtB,MAAM,WAAyB,GAClC,cACItP,QACA/C,KAAKkkB,QAAU,OACflkB,KAAKyE,QAAS,EACdzE,KAAKkS,MAAQ,EACblS,KAAK4nB,WAAa,SAClB5nB,KAAKqS,MAAO,EAEhB,kBACI,OAAOrS,KAAK0E,aAEhB,gBAAgBrB,GACZrD,KAAK0E,aAAerB,EAExB,KAAK/E,GACD,IAAImC,EACCnC,IAGLyE,MAAMqG,KAAK9K,QACUuD,IAAjBvD,EAAK4lB,UACLlkB,KAAKkkB,QAAU5lB,EAAK4lB,cAEJriB,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,QAEvBzE,KAAK0E,aAA4C,QAA5BjE,EAAKnC,EAAKoG,oBAAiC,IAAPjE,EAAgBA,EAAKnC,EAAKupB,iBAChEhmB,IAAfvD,EAAK4T,QACLlS,KAAKkS,MAAQ5T,EAAK4T,YAEErQ,IAApBvD,EAAKspB,aACL5nB,KAAK4nB,WAAatpB,EAAKspB,iBAET/lB,IAAdvD,EAAK+T,OACLrS,KAAKqS,KAAO/T,EAAK+T,QCjCtB,MAAM,WAAgB,GACzB,cACItP,QACA/C,KAAK0R,UAAY,IAAI,GACrB1R,KAAKiD,OAAOyB,aAAe,GAC3B1E,KAAKqD,MAAQ,EAEjB,WACI,OAAOrD,KAAK0R,UAEhB,SAASrO,GACLrD,KAAK0R,UAAYrO,EAErB,KAAK/E,GACD,IAAImC,EACJ,IAAKnC,EACD,OAEJyE,MAAMqG,KAAK9K,GACX,MAAMoT,EAAsC,QAAzBjR,EAAKnC,EAAKoT,iBAA8B,IAAPjR,EAAgBA,EAAKnC,EAAKwpB,UAC5DjmB,IAAd6P,IACA1R,KAAK0R,UAAUtI,KAAKsI,GACpB1R,KAAKqD,MAAQiB,GAActE,KAAKqD,MAAOrD,KAAK0R,UAAUjN,OAASzE,KAAK0R,UAAUhN,kBAAe7C,KCzBlG,MAAMkmB,GACT,cACI/nB,KAAKyE,QAAS,EACdzE,KAAKgoB,KAAO,IACZhoB,KAAKkH,OAAS,IAElB,iBACI,OAAOlH,KAAKgoB,KAEhB,eAAe3kB,GACXrD,KAAKgoB,KAAO3kB,EAEhB,KAAK/E,GACD,IAAImC,EACJ,IAAKnC,EACD,YAEgBuD,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,QAEvB,MAAMujB,EAA4B,QAApBvnB,EAAKnC,EAAK0pB,YAAyB,IAAPvnB,EAAgBA,EAAKnC,EAAK2pB,gBACvDpmB,IAATmmB,IACAhoB,KAAKgoB,KAAOA,QAEInmB,IAAhBvD,EAAK4I,SACLlH,KAAKkH,OAAS5I,EAAK4I,SCxBxB,MAAM,GACT,cACIlH,KAAKkoB,QAAU,IAAIH,GACnB/nB,KAAKmoB,MAAQ,EACbnoB,KAAKqD,MAAQ,IAEjB,UACI,OAAOrD,KAAKmoB,MAEhB,QAAQ9kB,GACJrD,KAAKmoB,MAAQ9kB,EAEjB,KAAK/E,GACD,IAAImC,EACJ,IAAKnC,EACD,OAEJ0B,KAAKkoB,QAAQ9e,KAAK9K,EAAK4pB,SACvB,MAAMC,EAA8B,QAArB1nB,EAAKnC,EAAK6pB,aAA0B,IAAP1nB,EAAgBA,EAAKnC,EAAKoF,SACxD7B,IAAVsmB,IACAnoB,KAAKmoB,MAAQA,QAEEtmB,IAAfvD,EAAK+E,QACLrD,KAAKqD,MAAQ/E,EAAK+E,QCvBvB,MAAM,GACT,cACIrD,KAAK0U,KAAO,EACZ1U,KAAK8O,MAAQ,IAAIuV,GACjBrkB,KAAKyE,QAAS,EACdzE,KAAK2J,OAAS,CACVhI,EAAG,EACHF,EAAG,GAEPzB,KAAK8O,MAAMzL,MAAQ,OAEvB,KAAK/E,GACIA,SAGauD,IAAdvD,EAAKoW,OACL1U,KAAK0U,KAAOpW,EAAKoW,MAErB1U,KAAK8O,MAAQuV,GAAatiB,OAAO/B,KAAK8O,MAAOxQ,EAAKwQ,YAC9BjN,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,aAEH5C,IAAhBvD,EAAKqL,cAGa9H,IAAlBvD,EAAKqL,OAAOhI,IACZ3B,KAAK2J,OAAOhI,EAAIrD,EAAKqL,OAAOhI,QAEVE,IAAlBvD,EAAKqL,OAAOlI,IACZzB,KAAK2J,OAAOlI,EAAInD,EAAKqL,OAAOlI,MC7BxC,MAAM2mB,GAAU,YAAaC,GAAa,OAAQC,GAAW,QAASC,GAAc,SAAUC,GAAa,UAAWC,GAAgB,OAC/H,MAAM,GACT,cACIzoB,KAAKwE,QAAU,GACfxE,KAAK3B,KAAO,SAEhB,gBACI,IAAIoC,EACJ,OAAyC,QAAhCA,EAAKT,KAAKwE,QAAQ4jB,WAA6B,IAAP3nB,EAAgBA,EAAKT,KAAKwE,QAAQ6jB,IAEvF,cAAchlB,GACVrD,KAAKwE,QAAQ6jB,IAAcroB,KAAKwE,QAAQ4jB,IAAW/kB,EAEvD,aACI,OAAOrD,KAAKwE,QAEhB,WAAWnB,GACPrD,KAAKwE,QAAUnB,EAEnB,YACI,IAAI5C,EACJ,OAA0C,QAAjCA,EAAKT,KAAKwE,QAAQ8jB,WAA8B,IAAP7nB,EAAgBA,EAAKT,KAAKwE,QAAQ+jB,IAExF,UAAUllB,GACNrD,KAAKwE,QAAQ+jB,IAAevoB,KAAKwE,QAAQ8jB,IAAYjlB,EAEzD,aACI,OAAOrD,KAAKya,MAEhB,WAAWpX,GACPrD,KAAKya,MAAQpX,EAEjB,cACI,IAAI5C,EACJ,OAA4C,QAAnCA,EAAKT,KAAKwE,QAAQgkB,WAAgC,IAAP/nB,EAAgBA,EAAKT,KAAKwE,QAAQikB,IAE1F,YAAYplB,GACRrD,KAAKwE,QAAQikB,IAAiBzoB,KAAKwE,QAAQgkB,IAAcnlB,EAE7D,aACI,MAAO,GAEX,WAAWqlB,IAEX,KAAKpqB,GACD,IAAImC,EAAI2F,EAAIhH,EACZ,IAAKd,EACD,OAEJ,MAAMkG,EAAkC,QAAvB/D,EAAKnC,EAAKkG,eAA4B,IAAP/D,EAAgBA,EAAKnC,EAAKqqB,OAC1E,QAAgB9mB,IAAZ2C,EACA,IAAK,MAAM6Q,KAAS7Q,EAAS,CACzB,MAAM3G,EAAO2G,EAAQ6Q,GACjBxX,IACAmC,KAAKwE,QAAQ6Q,GAAShL,GAA0C,QAA9BjE,EAAKpG,KAAKwE,QAAQ6Q,UAA2B,IAAPjP,EAAgBA,EAAK,GAAIvI,IAI7GmC,KAAK4oB,UAAUtqB,EAAKuqB,UAAWT,GAASC,IAAY,GACpDroB,KAAK4oB,UAAUtqB,EAAKwqB,QAASN,GAAYC,IAAe,GACxDzoB,KAAK4oB,UAAgC,QAArBxpB,EAAKd,EAAKmc,aAA0B,IAAPrb,EAAgBA,EAAKd,EAAKyqB,OAAQT,GAAUC,IAAa,QACpF1mB,IAAdvD,EAAKD,OACL2B,KAAK3B,KAAOC,EAAKD,MAGzB,UAAUR,EAAMmrB,EAASC,EAAQC,GAC7B,IAAIzoB,EAAI2F,EACR,IAAKvI,EACD,OAEJ,MAAM4M,EAAU5M,aAAgB8J,MAC1BwhB,EAAa1e,EAAU,GAAK,GAAI2e,EAAsB3e,IAAYzK,KAAKwE,QAAQwkB,aAAoBrhB,MAAO0hB,EAAqB5e,IAAYzK,KAAKwE,QAAQykB,aAAmBthB,MAC7KyhB,IACAppB,KAAKwE,QAAQwkB,GAAWG,GAExBE,GAAsBH,IACtBlpB,KAAKwE,QAAQykB,GAAUE,GAE3BnpB,KAAKwE,QAAQwkB,GAAW3e,GAA4C,QAAhC5J,EAAKT,KAAKwE,QAAQwkB,UAA6B,IAAPvoB,EAAgBA,EAAK0oB,EAAYtrB,GACxGmC,KAAKwE,QAAQykB,KAAWC,IACzBlpB,KAAKwE,QAAQykB,GAAU5e,GAA2C,QAA/BjE,EAAKpG,KAAKwE,QAAQykB,UAA4B,IAAP7iB,EAAgBA,EAAK+iB,EAAYtrB,KChFhH,MAAM,WAAsB,GAC/B,cACIkF,QACA/C,KAAKkkB,QAAU,OACflkB,KAAKyE,QAAS,EACdzE,KAAKkS,MAAQ,EACblS,KAAK4nB,WAAa,SAClB5nB,KAAKqS,MAAO,EAEhB,eACI,OAAOrS,KAAK0E,aAEhB,aAAarB,GACTrD,KAAK0E,aAAerB,EAExB,KAAK/E,GACD,IAAImC,EACJsC,MAAMqG,KAAK9K,GACNA,SAGgBuD,IAAjBvD,EAAK4lB,UACLlkB,KAAKkkB,QAAU5lB,EAAK4lB,cAEJriB,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,QAEvBzE,KAAK0E,aAA4C,QAA5BjE,EAAKnC,EAAKoG,oBAAiC,IAAPjE,EAAgBA,EAAKnC,EAAKgrB,cAChEznB,IAAfvD,EAAK4T,QACLlS,KAAKkS,MAAQ5T,EAAK4T,YAEErQ,IAApBvD,EAAKspB,aACL5nB,KAAK4nB,WAAatpB,EAAKspB,iBAET/lB,IAAdvD,EAAK+T,OACLrS,KAAKqS,KAAO/T,EAAK+T,QCjCtB,MAAM,WAAa,GACtB,cACItP,QACA/C,KAAK0R,UAAY,IAAI,GACrB1R,KAAKiD,OAAOyB,aAAe,EAC3B1E,KAAKqD,MAAQ,EAEjB,WACI,OAAOrD,KAAK0R,UAEhB,SAASrO,GACLrD,KAAK0R,UAAYrO,EAErB,KAAK/E,GACD,IAAImC,EAEJ,GADAsC,MAAMqG,KAAK9K,IACNA,EACD,OAEJ,MAAMoT,EAAsC,QAAzBjR,EAAKnC,EAAKoT,iBAA8B,IAAPjR,EAAgBA,EAAKnC,EAAKwpB,UAC5DjmB,IAAd6P,IACA1R,KAAK0R,UAAUtI,KAAKsI,GACpB1R,KAAKqD,MAAQiB,GAActE,KAAKqD,MAAOrD,KAAK0R,UAAUjN,OAASzE,KAAK0R,UAAUhN,kBAAe7C,KCxBlG,MAAM,GACT,cACI7B,KAAKiG,MAAQ,EAEjB,KAAK3H,GACIA,SAGcuD,IAAfvD,EAAKwQ,QACL9O,KAAK8O,MAAQ,GAAgB/M,OAAO/B,KAAK8O,MAAOxQ,EAAKwQ,aAEtCjN,IAAfvD,EAAK2H,QACLjG,KAAKiG,MAAQ3H,EAAK2H,YAEDpE,IAAjBvD,EAAK+R,UACLrQ,KAAKqQ,QAAU/R,EAAK+R,WCfzB,MAAM,WAAe,GACxB,cACItN,QACA/C,KAAKmZ,YAAc,EACnBnZ,KAAKyZ,SAAW,EAChBzZ,KAAKupB,aAAe,EAExB,KAAKjrB,GACDyE,MAAMqG,KAAK9K,GACNA,SAGoBuD,IAArBvD,EAAK6a,cACLnZ,KAAKmZ,YAAc7a,EAAK6a,kBAENtX,IAAlBvD,EAAKmb,WACLzZ,KAAKyZ,SAAWnb,EAAKmb,eAEC5X,IAAtBvD,EAAKirB,eACLvpB,KAAKupB,aAAejrB,EAAKirB,gBCR9B,MAAM,GACT,YAAYnE,EAAQ3R,GAChBzT,KAAKqlB,QAAUD,EACfplB,KAAKslB,WAAa7R,EAClBzT,KAAK6L,OAAS,IAAI,GAClB7L,KAAKwnB,WAAa,IAAI,GACtBxnB,KAAK8O,MAAQ,IAAI,GACjB9O,KAAK8O,MAAMzL,MAAQ,OACnBrD,KAAKwpB,OAAS,GACdxpB,KAAK+X,KAAO,IAAI,GAChB/X,KAAKypB,OAAS,IAAI,GAClBzpB,KAAKqQ,QAAU,IAAI,GACnBrQ,KAAK0pB,kBAAmB,EACxB1pB,KAAK8T,OAAS,IAAI,GAClB9T,KAAKqV,MAAQ,IAAI,GACjBrV,KAAKgG,KAAO,IAAI,GAChBhG,KAAK8U,OAAS,IAAI,GAClB9U,KAAKgZ,OAAS,IAAI,GAEtB,KAAK1a,GACD,IAAImC,EAAI2F,EAAIhH,EAAIiH,EAAI7G,EAAIgU,EACxB,IAAKlV,EACD,OAIJ,GAFA0B,KAAK6L,OAAOzC,KAAK9K,EAAKuN,QACtB7L,KAAK8O,MAAM1F,KAAK,GAAgBrH,OAAO/B,KAAK8O,MAAOxQ,EAAKwQ,aACpCjN,IAAhBvD,EAAKkrB,OACL,IAAK,MAAMG,KAASrrB,EAAKkrB,OAAQ,CAC7B,MAAM3rB,EAAOS,EAAKkrB,OAAOG,QACZ9nB,IAAThE,IACAmC,KAAKwpB,OAAOG,GAAStf,GAAyC,QAA7B5J,EAAKT,KAAKwpB,OAAOG,UAA2B,IAAPlpB,EAAgBA,EAAK,GAAI5C,IAI3GmC,KAAK+X,KAAK3O,KAAK9K,EAAKyZ,MACpB/X,KAAKypB,OAAOrgB,KAAK9K,EAAKmrB,QACtBzpB,KAAKqQ,QAAQjH,KAAK9K,EAAK+R,cACOxO,IAA1BvD,EAAKorB,mBACL1pB,KAAK0pB,iBAAmBprB,EAAKorB,kBAEjC1pB,KAAKqV,MAAMjM,KAAK9K,EAAK+W,OACrBrV,KAAKgG,KAAKoD,KAAK9K,EAAK0H,MACpBhG,KAAK8T,OAAO1K,KAAK9K,EAAKwV,QACtB9T,KAAKgZ,OAAO5P,KAAK9K,EAAK0a,QACtB,MAAMwO,EAA4F,QAA9EpoB,EAA0B,QAApBgH,EAAK9H,EAAKyZ,YAAyB,IAAP3R,OAAgB,EAASA,EAAGohB,kBAA+B,IAAPpoB,EAAgBA,EAA0B,QAApBiH,EAAK/H,EAAKyZ,YAAyB,IAAP1R,OAAgB,EAASA,EAAGwF,YACrKhK,IAAf2lB,IACAxnB,KAAKwnB,WAAW/iB,OAAS+iB,GAE7BxnB,KAAKwnB,WAAWpe,KAAK9K,EAAKkpB,iBACC3lB,IAAvBvD,EAAKkhB,gBACLxf,KAAKwf,cAAgBnV,GAAW,GAAI/L,EAAKkhB,gBAE7C,MAAMoK,EAAsC,QAAtBpqB,EAAKlB,EAAKwW,cAA2B,IAAPtV,EAAgBA,EAA2B,QAArBgU,EAAKlV,EAAK+W,aAA0B,IAAP7B,OAAgB,EAASA,EAAGsB,OAQnI,GAPI8U,IACA5pB,KAAK8U,OAAStN,GAA0BoiB,EAAe/hB,IACnD,MAAMod,EAAM,IAAI,GAEhB,OADAA,EAAI7b,KAAKvB,GACFod,KAGXjlB,KAAKslB,WAAY,CACjB,MAAMpK,EAAWlb,KAAKqlB,QAAQvK,QAAQI,SAASva,IAAIX,KAAKslB,YACxD,GAAIpK,EACA,IAAK,MAAMD,KAAWC,EACdD,EAAQ4O,aACR5O,EAAQ4O,YAAY7pB,KAAM1B,GAItC,MAAMinB,EAAcvlB,KAAKqlB,QAAQvK,QAAQyK,YAAY5kB,IAAIX,KAAKslB,YAC9D,GAAIC,EACA,IAAK,MAAMC,KAAcD,EACjBC,EAAWsE,sBACXtE,EAAWsE,qBAAqB9pB,KAAM1B,KCpFvD,SAASurB,GAAYrlB,KAAYulB,GACpC,IAAK,MAAMC,KAAiBD,EACxBvlB,EAAQ4E,KAAK4gB,GAGd,SAASF,GAAqB1E,EAAQ3R,KAAcsW,GACvD,MAAMvlB,EAAU,IAAI,GAAiB4gB,EAAQ3R,GAE7C,OADAoW,GAAYrlB,KAAYulB,GACjBvlB,ECCJ,MAAM,GACT,YAAY4gB,EAAQ3R,GAChBzT,KAAKqlB,QAAUD,EACfplB,KAAKslB,WAAa7R,EAClBzT,KAAKiqB,UAAW,EAChBjqB,KAAKoa,WAAa,IAAI,GACtBpa,KAAK4T,eAAiB,IAAI,GAC1B5T,KAAKmgB,cAAgB,GACrBngB,KAAK4mB,MAAQ,EACb5mB,KAAK4X,WAAa,IAAI0M,GACtBtkB,KAAKkqB,cAAe,EACpBlqB,KAAKikB,SAAW,EAChBjkB,KAAK2jB,SAAW,IAChB3jB,KAAKwf,cAAgB,IAAI,GAAc4F,EAAQ3R,GAC/CzT,KAAKmqB,gBAAkB,GACvBnqB,KAAK8X,UAAYgS,GAAqB9pB,KAAKqlB,QAASrlB,KAAKslB,YACzDtlB,KAAK0gB,aAAc,EACnB1gB,KAAKoqB,wBAAyB,EAC9BpqB,KAAKqqB,WAAa,GAClBrqB,KAAK4jB,QAAS,EACd5jB,KAAKsa,MAAQ,GACbta,KAAKugB,OAAS,GACdvgB,KAAKsqB,QAAU,IAEnB,qBACI,OAAOtqB,KAAK4X,WAEhB,mBAAmBvU,GACfrD,KAAK4X,WAAWxO,KAAK/F,GAEzB,gBACI,OAAOrD,KAAK2jB,SAEhB,cAActgB,GACVrD,KAAK2jB,SAAWtgB,EAEpB,oBACI,OAAOrD,KAAKkqB,aAEhB,kBAAkB7mB,GACdrD,KAAKkqB,aAAe7mB,EAExB,KAAK/E,GACD,IAAImC,EAAI2F,EAAIhH,EAAIiH,EAAI7G,EACpB,IAAKlB,EACD,YAEgBuD,IAAhBvD,EAAKisB,QACL/iB,GAA0BlJ,EAAKisB,OAASA,GAAWvqB,KAAKwqB,cAAcD,SAEpD1oB,IAAlBvD,EAAK2rB,WACLjqB,KAAKiqB,SAAW3rB,EAAK2rB,eAENpoB,IAAfvD,EAAKsoB,QACL5mB,KAAK4mB,MAAQtiB,GAAchG,EAAKsoB,QAEpC,MAAMsD,EAA4C,QAA5BzpB,EAAKnC,EAAK4rB,oBAAiC,IAAPzpB,EAAgBA,EAAKnC,EAAKmsB,mBAC/D5oB,IAAjBqoB,IACAlqB,KAAKkqB,aAAeA,QAEFroB,IAAlBvD,EAAK2lB,WACLjkB,KAAKikB,SAAW3f,GAAchG,EAAK2lB,WAEvC,MAAMN,EAAoC,QAAxBvd,EAAK9H,EAAKqlB,gBAA6B,IAAPvd,EAAgBA,EAAK9H,EAAKosB,eAC3D7oB,IAAb8hB,IACA3jB,KAAK2jB,SAAWA,QAEK9hB,IAArBvD,EAAKoiB,cACL1gB,KAAK0gB,YAAcpiB,EAAKoiB,kBAEQ7e,IAAhCvD,EAAK8rB,yBACLpqB,KAAKoqB,uBAAyB9rB,EAAK8rB,6BAElBvoB,IAAjBvD,EAAKgsB,UACLtqB,KAAKsqB,QAAUhsB,EAAKgsB,SAExBtqB,KAAKoa,WAAWhR,KAAK9K,EAAK8b,YAC1B,MAAMxC,EAAwC,QAA1BxY,EAAKd,EAAKsZ,kBAA+B,IAAPxY,EAAgBA,EAAKd,EAAKqsB,eACtD,mBAAf/S,EACP5X,KAAK4X,WAAWnT,OAASmT,EAGzB5X,KAAK4X,WAAWxO,KAAKwO,GAEzB5X,KAAK4T,eAAexK,KAAK9K,EAAKsV,gBAC9B5T,KAAKwf,cAAcpW,KAAK9K,EAAKkhB,oBACA3d,IAAzBvD,EAAK6rB,kBACLnqB,KAAKmqB,gBAAkB7rB,EAAK6rB,gBAAgBtf,IAAKhD,IAC7C,MAAMod,EAAM,IAAI,GAEhB,OADAA,EAAI7b,KAAKvB,GACFod,KAGfjlB,KAAK8X,UAAU1O,KAAK9K,EAAKwZ,WACzB9X,KAAKsa,MAAQjQ,GAAWrK,KAAKsa,MAAOhc,EAAKgc,OACzCta,KAAKqlB,QAAQvK,QAAQ+O,YAAY7pB,KAAM1B,QACnBuD,IAAhBvD,EAAKslB,SACL5jB,KAAK4jB,OAAStlB,EAAKslB,QAEvB,MAAM2B,EAAcvlB,KAAKqlB,QAAQvK,QAAQyK,YAAY5kB,IAAIX,KAAKslB,YAC9D,GAAIC,EACA,IAAK,MAAMC,KAAcD,EACjBC,EAAWqE,aACXrE,EAAWqE,YAAY7pB,KAAM1B,GAIzC,QAAwBuD,IAApBvD,EAAK+rB,WACL,IAAK,MAAMA,KAAc/rB,EAAK+rB,WAAY,CACtC,MAAMO,EAAgB,IAAI,GAC1BA,EAAcxhB,KAAKihB,GACnBrqB,KAAKqqB,WAAWxpB,KAAK+pB,GAI7B,GADA5qB,KAAKqqB,WAAWQ,KAAK,CAACrc,EAAGD,IAAMC,EAAEoX,SAAWrX,EAAEqX,eAC1B/jB,IAAhBvD,EAAKiiB,OACL,IAAK,MAAMD,KAAShiB,EAAKiiB,OAAQ,CAC7B,MAAMuK,EAAW,IAAI,GACrBA,EAAS1hB,KAAKkX,GACdtgB,KAAKugB,OAAO1f,KAAKiqB,GAGzB9qB,KAAKmgB,cAAcC,KAAiD,QAAzC/Z,EAAKrG,KAAK+qB,kBAAkB,eAA4B,IAAP1kB,OAAgB,EAASA,EAAGpI,KACxG+B,KAAKmgB,cAAcE,MAAmD,QAA1C7gB,EAAKQ,KAAK+qB,kBAAkB,gBAA6B,IAAPvrB,OAAgB,EAASA,EAAGvB,KAE9G,cAAcgI,EAAOgW,EAAS+O,GAC1BhrB,KAAKoJ,KAAK4hB,GACV,MAAMC,EAAoBjrB,KAAKqqB,WAAW/c,KAAMzF,GAAiB,WAAXA,EAAEkD,MAAqBmgB,OAASrjB,EAAE+d,SAAWsF,OAAOC,WAAatjB,EAAE+d,SAAW3J,EAAUhW,GAE9I,OADAjG,KAAKoJ,KAA2B,OAAtB6hB,QAAoD,IAAtBA,OAA+B,EAASA,EAAkBzmB,SACrE,OAAtBymB,QAAoD,IAAtBA,OAA+B,EAASA,EAAkBrF,SAEnG,SAAS3nB,GACL,GAAIA,EAAM,CACN,MAAMmtB,EAAcprB,KAAKugB,OAAOjT,KAAMgT,GAAUA,EAAMriB,OAASA,GAC3DmtB,GACAprB,KAAKoJ,KAAKgiB,EAAY5mB,aAGzB,CACD,MAAMgd,EAAarZ,GAAe,gCAAiCkjB,EAAiB7J,GAAcA,EAAW9Z,QAAS4jB,EAAetrB,KAAK+qB,kBAAkBM,EAAiB,OAAS,SAClLC,GACAtrB,KAAKoJ,KAAKkiB,EAAa9mB,UAInC,kBAAkBuG,GACd,IAAItK,EACJ,OAAmG,QAA1FA,EAAKT,KAAKugB,OAAOjT,KAAMgT,GAAUA,EAAMliB,QAAQiF,OAASid,EAAMliB,QAAQ2M,OAASA,UAA0B,IAAPtK,EAAgBA,EAAKT,KAAKugB,OAAOjT,KAAMgT,GAAUA,EAAMliB,QAAQiF,OAAgC,QAAvBid,EAAMliB,QAAQ2M,MAErM,cAAcwf,GACVvqB,KAAKoJ,KAAKpJ,KAAKqlB,QAAQvK,QAAQyQ,UAAUhB,KChK1C,MAAMiB,GACT,YAAYpG,EAAQ3R,GAChBzT,KAAKyT,UAAYA,EACjBzT,KAAKqlB,QAAUD,EACfplB,KAAKyrB,aAAezrB,KAAKqlB,QAAQvK,QAAQ4Q,eAAe1rB,KAAKyT,WAAW,GACxEzT,KAAK2rB,qBAAuB,GAC5B3rB,KAAK4rB,qBAAuB,GAEhC,uBAAuBlY,GACnB,IAAK,MAAM8R,KAAcxlB,KAAK2rB,qBACtBnG,EAAWqG,mBACLrG,EAAWsG,SAASpY,GAItC,gBAAgB3I,GACZ,IAAK,MAAMya,KAAcxlB,KAAK2rB,qBACtBnG,EAAWxF,iBACXwF,EAAWxF,gBAAgBjV,GAIvC,OACI/K,KAAK2rB,qBAAuB,GAC5B3rB,KAAK4rB,qBAAuB,GAC5B,IAAK,MAAMpG,KAAcxlB,KAAKyrB,aAAc,CACxC,OAAQjG,EAAWnnB,MACf,KAAK,EACD2B,KAAK2rB,qBAAqB9qB,KAAK2kB,GAC/B,MACJ,KAAK,EACDxlB,KAAK4rB,qBAAqB/qB,KAAK2kB,GAC/B,MAERA,EAAW1J,QAGnB,wBAAwB/O,EAAU2G,GAC9B,IAAK,MAAM8R,KAAcxlB,KAAK2rB,qBAC1BnG,EAAWnS,MAAMtG,EAAU2G,GAE/B,IAAK,MAAM8R,KAAcxlB,KAAK4rB,qBACtBpG,EAAWqG,UAAU9e,UACfyY,EAAWsG,SAAS/e,EAAU2G,GAIhD,YAAY3G,GACR,IAAK,MAAMyY,KAAcxlB,KAAK2rB,qBACtBnG,EAAWqG,mBACLrG,EAAWuG,MAAMhf,GAG/B,IAAK,MAAMyY,KAAcxlB,KAAK4rB,qBACtBpG,EAAWqG,UAAU9e,UACfyY,EAAWuG,MAAMhf,IC/CvC,MAAMif,GAAc1tB,IACXuK,GAAUvK,EAAKmpB,QAASnpB,EAAK2tB,cAG9B3tB,EAAK4tB,MAAQ5tB,EAAK6tB,SAAyB,EAAd7tB,EAAKsL,OAClCtL,EAAK8tB,OAAO9tB,EAAKsL,QAEZtL,EAAK4tB,MAAsB,EAAd5tB,EAAKsL,QACvBtL,EAAK8tB,MAAM9tB,EAAKsL,UAGjB,MAAM,GACT,YAAYwb,EAAQiH,EAAI5Y,EAAWrO,EAAUknB,EAAiB3C,GAC1D3pB,KAAKyT,UAAYA,EACjBzT,KAAKqlB,QAAUD,EACfplB,KAAK8b,KAAKuQ,EAAIjnB,EAAUknB,EAAiB3C,GAE7C,QAAQ4C,GACJ,IAAIvsB,KAAKwsB,cAAexsB,KAAKyY,UAA7B,CAGAzY,KAAKyY,WAAY,EACjBzY,KAAKoZ,OAAOqT,SAAU,EACtBzsB,KAAK0sB,KAAKD,SAAU,EACpB,IAAK,MAAO,CAAE5W,KAAW7V,KAAKyT,UAAUqH,QAChCjF,EAAO8W,mBACP9W,EAAO8W,kBAAkB3sB,KAAMusB,GAGvC,IAAK,MAAMtR,KAAWjb,KAAKyT,UAAUqE,UAAUoD,SACvCD,EAAQ0R,mBACR1R,EAAQ0R,kBAAkB3sB,KAAMusB,IAI5C,KAAK7Y,GACD,MAAMD,EAAYzT,KAAKyT,UACvB,IAAK,MAAO,CAAEoC,KAAWpC,EAAUqH,QAC/BrH,EAAU8H,OAAOzF,mBAAmBD,EAAQ7V,KAAM0T,GAEtDD,EAAU8H,OAAOhI,aAAavT,KAAM0T,GAExC,eACI,IAAIjT,EAAI2F,EACR,MAAM0I,EAAqC,QAA5BrO,EAAKT,KAAKoZ,OAAOtK,aAA0B,IAAPrO,EAAgBA,EAAKgR,GAAoBzR,KAAK8O,OACjG,GAAIA,GAAS9O,KAAK4sB,OAAS5sB,KAAK6sB,WAAa7sB,KAAK4sB,KAAKE,OAAQ,CAC3D,MAAMC,EAAa/sB,KAAK4sB,KAAK9gB,YAAc9L,KAAK4sB,KAAK7gB,SAAW,EAAI,EAAGihB,EAAUhtB,KAAK4sB,KAAK9gB,WAAa9J,KAAKsD,GAAK,EAAI,EAAG2nB,EAASjrB,KAAKgC,QAAmC,QAA1BoC,EAAKpG,KAAK4sB,KAAK1qB,aAA0B,IAAPkE,EAAgBA,EAAK,GAAK4mB,IAAYhrB,KAAKsD,GAAKynB,IAAe,EACjP,GAAIE,EAAQ,CACR,GAAIjtB,KAAK6sB,UACL,OAAO7sB,KAAK6sB,UAEhB,GAAI7sB,KAAK4sB,KAAKE,MACV,OAAO/W,GAASjH,EAAO9O,KAAK4sB,KAAKE,MAAMzuB,KAAM2B,KAAK4sB,KAAKE,MAAMzpB,QAIzE,OAAOyL,EAEX,UACI,OAAQ9O,KAAK0L,aAAe,EAAI1J,KAAKsD,GAAM,EAE/C,cACI,MAAO,CACH3D,EAAG3B,KAAKoF,SAASzD,EAAI3B,KAAK2J,OAAOhI,EACjCF,EAAGzB,KAAKoF,SAAS3D,EAAIzB,KAAK2J,OAAOlI,EACjCC,EAAG1B,KAAKoF,SAAS1D,GAGzB,YACI,IAAIjB,EACJ,OAAqC,QAA7BA,EAAKT,KAAKoZ,OAAOxP,cAA2B,IAAPnJ,EAAgBA,EAAKT,KAAKgG,KAAK3C,MAEhF,iBACI,IAAI5C,EAAI2F,EACR,OAAkH,QAA1GA,EAAkC,QAA5B3F,EAAKT,KAAKoZ,OAAOtK,aAA0B,IAAPrO,EAAgBA,EAAKgR,GAAoBzR,KAAKktB,oBAAiC,IAAP9mB,EAAgBA,EAAKpG,KAAKiR,eAExJ,KAAKob,EAAIjnB,EAAUknB,EAAiB3C,GAChC,IAAIlpB,EAAI2F,EAAIhH,EAAIiH,EAAI7G,EAAIgU,EAAImP,EAAIwK,EAAIC,EACpC,MAAM3Z,EAAYzT,KAAKyT,UAAW2R,EAASplB,KAAKqlB,QAChDrlB,KAAK2pB,MAAQA,EACb3pB,KAAK6U,MAAO,EACZ7U,KAAKkU,cAAe,EACpBlU,KAAKmV,OAAQ,EACbnV,KAAKqtB,aAAe,EACpBrtB,KAAKyY,WAAY,EACjBzY,KAAKwsB,aAAc,EACnBxsB,KAAKiU,SAAW,EAChBjU,KAAKstB,WAAY,EACjBttB,KAAKyV,OAAS,CACV8X,YAAa,IAEjBvtB,KAAKwtB,QAAU,SACfxtB,KAAKytB,oBAAqB,EAC1B,MAAMxR,EAAUxI,EAAUgC,OAAOC,WAAYgY,EAAcja,EAAUkE,cAAegW,EAAmB7D,GAAqB9pB,KAAKqlB,QAAS5R,EAAWia,EAAY5V,WAAY8V,EAAYD,EAAiBtY,MAAMhX,MAAM,iBAAEqrB,GAAqBiE,EAC7O3tB,KAAKqV,MAAQhI,GAAyBugB,EAAW5tB,KAAKqsB,GAAI3C,GAC1D,MAAMmE,EAAeF,EAAiBtY,MACtC,GAAIiX,GAAmBA,EAAgBjX,OAASiX,EAAgBjX,MAAMhX,KAAM,CACxE,MAAMyvB,EAAoBxB,EAAgBjX,MAAMhX,KAAMgX,EAAQhI,GAAyBygB,EAAmB9tB,KAAKqsB,GAAI3C,GAC/GrU,IACArV,KAAKqV,MAAQA,EACbwY,EAAazkB,KAAKkjB,EAAgBjX,QAG1CrV,KAAK+tB,UAAY/tB,KAAKguB,eAAeH,EAAcnE,GACnDiE,EAAiBvkB,KAAKkjB,GACtBqB,EAAiBvkB,KAA+B,QAAzB3I,EAAKT,KAAK+tB,iBAA8B,IAAPttB,OAAgB,EAASA,EAAGqX,WACpF9X,KAAKwf,cAAgB,IAAI,GAAc4F,EAAQ3R,GAC/CzT,KAAKwf,cAAcpW,KAAKqK,EAAUkE,cAAc6H,eAChDxf,KAAKwf,cAAcpW,KAAKukB,EAAiBnO,eACzCxf,KAAK6U,KAAqF,QAA7EzV,EAA+B,QAAzBgH,EAAKpG,KAAK+tB,iBAA8B,IAAP3nB,OAAgB,EAASA,EAAGyO,YAAyB,IAAPzV,EAAgBA,EAAKY,KAAK6U,KAC5H7U,KAAKmV,MAAuF,QAA9E3V,EAA+B,QAAzB6G,EAAKrG,KAAK+tB,iBAA8B,IAAP1nB,OAAgB,EAASA,EAAG8O,aAA0B,IAAP3V,EAAgBA,EAAKQ,KAAKmV,MAC9HnV,KAAKwE,QAAUmpB,EACf,MAAMM,EAAcjuB,KAAKwE,QAAQuT,KAAKmP,KACtClnB,KAAKkuB,UAA0C,IAA9B3pB,GAAS0pB,EAAYrH,OAClCqH,EAAYpH,YACZ7mB,KAAKmuB,cAAgBnuB,KAAKqlB,QAAQvK,QAAQsT,iBAAiBH,EAAYpH,WACnE7mB,KAAKmuB,eAAiB1a,EAAU4a,QAAQJ,EAAYpH,UAAW7mB,KAAKmuB,gBACpEnuB,KAAKmuB,cAAcrS,KAAKrI,IAGhC,MAAM6a,EAAcjqB,GAAcrE,KAAKwE,QAAQwU,OAAO3V,OACtDoQ,EAAUgC,OAAO8Y,aAAavuB,MAC9B,MAAMwuB,EAAcxuB,KAAKwE,QAAQwB,KAAMyoB,EAAYD,EAAYnrB,MAAOqrB,EAAgBF,EAAY9c,UASlG,GARA1R,KAAKgG,KAAO,CACRvB,OAAQ+pB,EAAY9c,UAAUjN,OAC9BpB,MAAOgB,GAAcmqB,EAAYnrB,OAASoQ,EAAUgC,OAAOC,WAC3DhS,IAAKS,GAAYsqB,GAAaxS,EAC9BxY,IAAKW,GAAYqqB,GAAaxS,EAC9B0S,MAAO,EACPC,SAAUvqB,GAAcmqB,EAAY9c,UAAUqU,QAE9C2I,EAAcjqB,OAGd,OAFAzE,KAAKgG,KAAKoM,OAAS,EACnBpS,KAAKgG,KAAKmM,MAAQ,EAAI9N,GAAcqqB,EAAcvc,OAC1Cuc,EAAc9G,YAClB,IAAK,MACD5nB,KAAKgG,KAAK3C,MAAQrD,KAAKgG,KAAKvC,IAC5BzD,KAAKgG,KAAKoM,OAAS,EACnB,MACJ,IAAK,SACDpS,KAAKgG,KAAK3C,MAAQY,EAAcjE,KAAKgG,MAAQiW,EAC7Cjc,KAAKgG,KAAKoM,OAAS9O,KAAe,GAAM,EAAI,EAC5C,MACJ,IAAK,MACL,QACItD,KAAKgG,KAAK3C,MAAQrD,KAAKgG,KAAKtC,IAC5B1D,KAAKgG,KAAKoM,OAAS,EACnB,MAGZpS,KAAKoZ,OAAS,CACVqT,SAAS,GAEbzsB,KAAK0sB,KAAO,CACRD,SAAS,EACTvlB,OAAQ,GAEZlH,KAAKoF,SAAWpF,KAAK6uB,cAAcpb,EAAWrO,EAAU7B,EAAM+qB,EAAa,EAAG7a,EAAU6W,UACxFtqB,KAAK8uB,gBAAkB9uB,KAAKoF,SAAS2pB,OACrC,MAAMC,EAAavb,EAAU8H,OAAOvV,KAAMipB,EAAa7S,OAAOC,OAAO,GAAIrc,KAAKwE,QAAQuT,KAAK1S,QAAS6pB,EAAsC,YAApBD,EAAWlkB,KAQjI,OAPA/K,KAAKivB,WAAa,CACdttB,EAAGstB,EAAWttB,GAAKutB,EAAkBF,EAAW/oB,MAAQ,IAAM,GAC9DxE,EAAGwtB,EAAWxtB,GAAKytB,EAAkBF,EAAW9oB,OAAS,IAAM,GAC/D0D,OAAmD,QAA1C4J,EAAKxT,KAAKwE,QAAQuT,KAAK1S,OAAOuE,cAA2B,IAAP4J,EAAgBA,EAAK,EAChFzI,KAA+C,QAAxC4X,EAAK3iB,KAAKwE,QAAQuT,KAAK1S,OAAO0F,YAAyB,IAAP4X,EAAgBA,EAAK,WAEhF3iB,KAAKmF,UAAYD,GAA0BlF,KAAKwE,QAAQuT,KAAK5S,UAAWnF,KAAKoF,SAAUpF,KAAKivB,YACpFjvB,KAAKwE,QAAQuT,KAAK5S,WACtB,IAAK,SACDnF,KAAKwtB,QAAU,SACf,MACJ,IAAK,UACDxtB,KAAKwtB,QAAU,UACf,MAERxtB,KAAKmvB,gBAAkBnvB,KAAKovB,qBAC5BpvB,KAAKiH,SAAWjH,KAAKmvB,gBAAgBJ,OACrC/uB,KAAKqvB,UAAY,EAAIhrB,GAAcrE,KAAKwE,QAAQuT,KAAK5F,OACrDnS,KAAK2J,OAAS,EAAOlE,OACrB,MAAMqS,EAAYrE,EAAUqE,UAC5BA,EAAUwX,UAAYxX,EAAUwX,WAAaxX,EAAUyX,WAAavvB,KAAKoF,SAAS1D,EAClFoW,EAAUyX,WAAavvB,KAAKoF,SAAS1D,EACrC1B,KAAKkZ,aAAelZ,KAAKoF,SAAS1D,EAAI+R,EAAU6W,QAChDtqB,KAAKwvB,MAAQ,GACb,IAAIla,EAAS7B,EAAU8B,QAAQ5U,IAAIX,KAAKqV,OACnCC,IACDA,EAAStV,KAAKqlB,QAAQvK,QAAQ2U,eAAezvB,KAAKqV,OAC9CC,GACA7B,EAAU8B,QAAQ3U,IAAIZ,KAAKqV,MAAOC,KAG3B,OAAXA,QAA8B,IAAXA,OAAoB,EAASA,EAAOsT,aAC5C,OAAXtT,QAA8B,IAAXA,GAA6BA,EAAOsT,UAAU5oB,OAErE,MAAM0vB,EAA2B,OAAXpa,QAA8B,IAAXA,OAAoB,EAASA,EAAOqa,cACzED,IACA1vB,KAAKwvB,MAAQE,EAAc1vB,OAE/BA,KAAKwY,UAAW,EAChBxY,KAAKwU,YAAc3F,GAAgB7O,KAAKwE,QAAQsP,OAAOhF,OACvD,IAAK,MAAMmM,KAAWxH,EAAUqE,UAAUoD,SACtCD,EAAQa,KAAK9b,MAEjB,IAAK,MAAM4vB,KAASnc,EAAUqE,UAAU+X,OACd,QAArB1C,EAAKyC,EAAM9T,YAAyB,IAAPqR,GAAyBA,EAAGtQ,KAAK+S,EAAO5vB,OAE3D,OAAXsV,QAA8B,IAAXA,OAAoB,EAASA,EAAOwa,eACvDxa,EAAOwa,aAAarc,EAAWzT,MAEnC,IAAK,MAAO,CAAE6V,KAAWpC,EAAUqH,QACG,QAAjCsS,EAAKvX,EAAOka,uBAAoC,IAAP3C,GAAyBA,EAAGvQ,KAAKhH,EAAQ7V,MAG3F,iBACI,MAAM4J,EAAS5J,KAAK0L,YAAasjB,EAAahvB,KAAKyT,UAAU8H,OAAOvV,KACpE,OAAQhG,KAAKoF,SAASzD,IAAMiI,GACxB5J,KAAKoF,SAAS3D,IAAMmI,GACpB5J,KAAKoF,SAAS3D,GAAKutB,EAAW9oB,OAAS0D,GACvC5J,KAAKoF,SAASzD,GAAKqtB,EAAW/oB,MAAQ2D,EAE9C,YACI,OAAQ5J,KAAKyY,YAAczY,KAAKwY,UAAYxY,KAAKgwB,iBAErD,QACI,IAAIvvB,EACJ,IAAK,MAAMwa,KAAWjb,KAAKyT,UAAUqE,UAAUoD,SAClB,QAAxBza,EAAKwa,EAAQ8Q,aAA0B,IAAPtrB,GAAyBA,EAAGoc,KAAK5B,EAASjb,MAGnF,cAAcyT,EAAWrO,EAAU4T,EAAQiX,EAAW,GAClD,IAAIxvB,EAAI2F,EAAIhH,EAAIiH,EAChB,IAAK,MAAO,CAAEwP,KAAWpC,EAAUqH,QAAS,CACxC,MAAMoV,OAAwCruB,IAA5BgU,EAAOsa,iBAAiCta,EAAOsa,iBAAiB/qB,EAAUpF,WAAQ6B,EACpG,QAAkBA,IAAdquB,EACA,OAAO3uB,EAASQ,OAAOmuB,EAAUvuB,EAAGuuB,EAAUzuB,EAAGuX,GAGzD,MAAMgW,EAAavb,EAAU8H,OAAOvV,KAAMoqB,EAAgB7pB,GAAkC,CACxFP,KAAMgpB,EACN5pB,SAAUA,IACV4O,EAAMzS,EAASQ,OAAOquB,EAAczuB,EAAGyuB,EAAc3uB,EAAGuX,GAASpP,EAAS5J,KAAK0L,YAAayb,EAAWnnB,KAAKwE,QAAQuT,KAAKoP,SAAUkJ,EAAiB5I,IACpJuE,GAAW,CACPvE,UACAwE,WAAY,CAAC,SAAU,qBACvBC,MAAOlY,EAAIrS,EACXwqB,SAAU1Y,EAAU8H,OAAOvV,KAAKC,MAChCmmB,MAAQ/oB,GAAW2Q,EAAIrS,GAAK0B,EAC5BuG,YAEL0mB,EAAe7I,IACduE,GAAW,CACPvE,UACAwE,WAAY,CAAC,SAAU,mBACvBC,MAAOlY,EAAIvS,EACX0qB,SAAU1Y,EAAU8H,OAAOvV,KAAKE,OAChCkmB,MAAQ/oB,GAAW2Q,EAAIvS,GAAK4B,EAC5BuG,YAOR,OAJAymB,EAAuC,QAAxB5vB,EAAK0mB,EAAShd,YAAyB,IAAP1J,EAAgBA,EAAK0mB,EAAS/oB,SAC7EiyB,EAAwC,QAAzBjqB,EAAK+gB,EAASjd,aAA0B,IAAP9D,EAAgBA,EAAK+gB,EAAS/oB,SAC9EkyB,EAAoC,QAAvBlxB,EAAK+nB,EAASld,WAAwB,IAAP7K,EAAgBA,EAAK+nB,EAAS/oB,SAC1EkyB,EAAuC,QAA1BjqB,EAAK8gB,EAAS/c,cAA2B,IAAP/D,EAAgBA,EAAK8gB,EAAS/oB,SACzE4B,KAAKuwB,cAAcvc,EAAKic,GACjBjwB,KAAK6uB,cAAcpb,OAAW5R,EAAWmX,EAAQiX,EAAW,GAEhEjc,EAEX,qBACI,MAAMxO,EAAeD,GAAwBvF,KAAKmF,WAC5CgC,EAAM3B,EAAaupB,OACnByB,EAAcxwB,KAAKwE,QAAQuT,KACjC,GAA8B,WAA1ByY,EAAYrrB,WAAoD,YAA1BqrB,EAAYrrB,UAClD,OAAOgC,EAEX,MAAMspB,EAAOzuB,KAAKsD,GAAK,IAAOjB,GAAcmsB,EAAYtuB,MAAMmB,OAAQqtB,EAAa1uB,KAAKsD,GAAK,IAAOjB,GAAcmsB,EAAYtuB,MAAMyH,QAASgnB,EAAQ,CACjJxmB,KAAMumB,EAAYD,EAAM,EACxBvmB,MAAOwmB,EAAYD,EAAM,GAQ7B,OANKD,EAAYnJ,WACblgB,EAAIjF,OAAS+B,EAAcK,GAAcqsB,EAAMxmB,KAAMwmB,EAAMzmB,SAE3DsmB,EAAYvtB,QAAuC,kBAAtButB,EAAYte,QACzC/K,EAAIhG,QAAUmC,KAEX6D,EAEX,cAAc6M,EAAKic,EAAW,GAC1B,MAAMW,EAAoB5wB,KAAKwE,QAAQgjB,WAAY5d,EAAS5J,KAAK0L,YACjE,IAAKklB,EAAkBnsB,OACnB,OAAO,EAEX,MAAMosB,EAAiBD,EAAkBvK,QACzC,GAAIwK,EAAepsB,OACf,OAAO,EAEX,MAAMyhB,EAAU2K,EAAe3K,QAC/B,GAAIA,GAAW,GAAK+J,EAAW/J,EAC3B,MAAM,IAAIpkB,MAAM,+CAEpB,IAAIgvB,GAAW,EACf,IAAK,MAAM/jB,KAAY/M,KAAKyT,UAAUqE,UAAUhP,MAC5C,GAAI7D,GAAY+O,EAAKjH,EAAS3H,UAAYwE,EAASmD,EAASrB,YAAa,CACrEolB,GAAW,EACX,MAGR,OAAOA,EAEX,eAAejD,EAAcnE,GACzB,MAAMqE,EAAYF,EAAarpB,QAAQxE,KAAKqV,OAC5C,GAAI0Y,EACA,OAAO1jB,GAAW,GAAIgD,GAAyB0gB,EAAW/tB,KAAKqsB,GAAI3C,KChUxE,MAAMqH,GACT,YAAY3rB,EAAU2H,GAClB/M,KAAKoF,SAAWA,EAChBpF,KAAK+M,SAAWA,GCHjB,MAAMikB,GACT,YAAYrvB,EAAGF,GACXzB,KAAKoF,SAAW,CACZzD,EAAGA,EACHF,EAAGA,ICFR,MAAM,WAAeuvB,GACxB,YAAYrvB,EAAGF,EAAGmI,GACd7G,MAAMpB,EAAGF,GACTzB,KAAK4J,OAASA,EAElB,SAASF,GACL,OAAOzE,GAAYyE,EAAO1J,KAAKoF,WAAapF,KAAK4J,OAErD,WAAW+mB,GACP,MAAMM,EAAON,EAAOO,EAASP,EAAOtkB,EAAOrM,KAAKoF,SAAUkH,EAAOqkB,EAAMvrB,SAAU+rB,EAAU,CAAExvB,EAAGK,KAAKovB,IAAI9kB,EAAK3K,EAAI0K,EAAK1K,GAAIF,EAAGO,KAAKovB,IAAI9kB,EAAK7K,EAAI4K,EAAK5K,IAAMyC,EAAIlE,KAAK4J,OACpK,QAAsB/H,IAAlBqvB,EAAOtnB,OAAsB,CAC7B,MAAMynB,EAAOntB,EAAIgtB,EAAOtnB,OAAQ0nB,EAAOtvB,KAAKI,KAAK+uB,EAAQxvB,GAAK,EAAIwvB,EAAQ1vB,GAAK,GAC/E,OAAO4vB,EAAOC,EAEb,QAAkBzvB,IAAdovB,EAAKjrB,KAAoB,CAC9B,MAAMurB,EAAIN,EAAKjrB,KAAKC,MAAOyJ,EAAIuhB,EAAKjrB,KAAKE,OAAQsrB,EAAQxvB,KAAKyvB,IAAIN,EAAQxvB,EAAI4vB,EAAG,GAAKvvB,KAAKyvB,IAAIN,EAAQ1vB,EAAIiO,EAAG,GAC9G,OAAO8hB,GAASttB,GAAK,GAAMitB,EAAQxvB,GAAKuC,EAAIqtB,GAAKJ,EAAQ1vB,GAAKyC,EAAIwL,GAAMyhB,EAAQxvB,GAAK4vB,GAAKJ,EAAQ1vB,GAAKiO,EAE3G,OAAO,GClBR,MAAM,WAAkBshB,GAC3B,YAAYrvB,EAAGF,EAAGwE,EAAOC,GACrBnD,MAAMpB,EAAGF,GACTzB,KAAKgG,KAAO,CACRE,OAAQA,EACRD,MAAOA,GAGf,SAASyD,GACL,MAAM6nB,EAAIvxB,KAAKgG,KAAKC,MAAOyJ,EAAI1P,KAAKgG,KAAKE,OAAQ8N,EAAMhU,KAAKoF,SAC5D,OAAOsE,EAAM/H,GAAKqS,EAAIrS,GAAK+H,EAAM/H,GAAKqS,EAAIrS,EAAI4vB,GAAK7nB,EAAMjI,GAAKuS,EAAIvS,GAAKiI,EAAMjI,GAAKuS,EAAIvS,EAAIiO,EAE9F,WAAWihB,GACHA,aAAiB,IACjBA,EAAMe,WAAW1xB,MAErB,MAAMuxB,EAAIvxB,KAAKgG,KAAKC,MAAOyJ,EAAI1P,KAAKgG,KAAKE,OAAQmG,EAAOrM,KAAKoF,SAAUkH,EAAOqkB,EAAMvrB,SAAUuL,EAAQggB,aAAiB,GAAYA,EAAM3qB,KAAO,CAAEC,MAAO,EAAGC,OAAQ,GAAKyrB,EAAKhhB,EAAM1K,MAAO2rB,EAAKjhB,EAAMzK,OACtM,OAAOoG,EAAK3K,EAAI0K,EAAK1K,EAAI4vB,GAAKjlB,EAAK3K,EAAIgwB,EAAKtlB,EAAK1K,GAAK2K,EAAK7K,EAAI4K,EAAK5K,EAAIiO,GAAKpD,EAAK7K,EAAImwB,EAAKvlB,EAAK5K,GChBjG,MAAM,GACT,YAAYowB,EAAWC,GACnB9xB,KAAK6xB,UAAYA,EACjB7xB,KAAK8xB,SAAWA,EAChB9xB,KAAK+xB,QAAU,GACf/xB,KAAKgyB,UAAW,EAEpB,OAAOtoB,GACH,IAAIjJ,EAAI2F,EAAIhH,EAAIiH,EAAI7G,EACpB,QAAKQ,KAAK6xB,UAAUI,SAASvoB,EAAMtE,YAG/BpF,KAAK+xB,QAAQ5wB,OAASnB,KAAK8xB,UAC3B9xB,KAAK+xB,QAAQlxB,KAAK6I,IACX,IAEN1J,KAAKgyB,UACNhyB,KAAKkyB,YAKyE,QAHzE1yB,GAA2B,QAAnBiB,EAAKT,KAAKmyB,WAAwB,IAAP1xB,OAAgB,EAASA,EAAG2xB,OAAO1oB,MACtD,QAAnBtD,EAAKpG,KAAKqyB,WAAwB,IAAPjsB,OAAgB,EAASA,EAAGgsB,OAAO1oB,MAC3C,QAAnBtK,EAAKY,KAAKsyB,WAAwB,IAAPlzB,OAAgB,EAASA,EAAGgzB,OAAO1oB,MAC3C,QAAnBrD,EAAKrG,KAAKuyB,WAAwB,IAAPlsB,OAAgB,EAASA,EAAG+rB,OAAO1oB,WAA6B,IAAPlK,GAAgBA,IAE9G,MAAMmxB,EAAO6B,EAAOC,GAChB,IAAIhyB,EAAI2F,EAAIhH,EAAIiH,EAChB,MAAMc,EAAgB,OAAVsrB,QAA4B,IAAVA,EAAmBA,EAAQ,GACzD,IAAK9B,EAAMe,WAAW1xB,KAAK6xB,WACvB,MAAO,GAEX,IAAK,MAAMrmB,KAAKxL,KAAK+xB,SACZpB,EAAMsB,SAASzmB,EAAEpG,WAClBH,GAAY0rB,EAAMvrB,SAAUoG,EAAEpG,UAAYoG,EAAEuB,SAASrB,eACnD8mB,GAASA,EAAMhnB,EAAEuB,YAGvB5F,EAAItG,KAAK2K,EAAEuB,UAQf,OANI/M,KAAKgyB,WACe,QAAnBvxB,EAAKT,KAAKmyB,WAAwB,IAAP1xB,GAAyBA,EAAG2H,MAAMuoB,EAAO6B,EAAOrrB,GACxD,QAAnBf,EAAKpG,KAAKqyB,WAAwB,IAAPjsB,GAAyBA,EAAGgC,MAAMuoB,EAAO6B,EAAOrrB,GACxD,QAAnB/H,EAAKY,KAAKsyB,WAAwB,IAAPlzB,GAAyBA,EAAGgJ,MAAMuoB,EAAO6B,EAAOrrB,GACxD,QAAnBd,EAAKrG,KAAKuyB,WAAwB,IAAPlsB,GAAyBA,EAAG+B,MAAMuoB,EAAO6B,EAAOrrB,IAEzEA,EAEX,YAAY/B,EAAUwE,EAAQ4oB,GAC1B,OAAOxyB,KAAKoI,MAAM,IAAI,GAAOhD,EAASzD,EAAGyD,EAAS3D,EAAGmI,GAAS4oB,GAElE,eAAeptB,EAAUY,EAAMwsB,GAC3B,OAAOxyB,KAAKoI,MAAM,IAAI,GAAUhD,EAASzD,EAAGyD,EAAS3D,EAAGuE,EAAKC,MAAOD,EAAKE,QAASssB,GAEtF,YACI,MAAM7wB,EAAI3B,KAAK6xB,UAAUzsB,SAASzD,EAAGF,EAAIzB,KAAK6xB,UAAUzsB,SAAS3D,EAAG8vB,EAAIvxB,KAAK6xB,UAAU7rB,KAAKC,MAAOyJ,EAAI1P,KAAK6xB,UAAU7rB,KAAKE,OAAQ4rB,EAAW9xB,KAAK8xB,SACnJ9xB,KAAKmyB,IAAM,IAAI,GAAS,IAAI,GAAUxwB,EAAGF,EAAG8vB,EAAI,EAAG7hB,EAAI,GAAIoiB,GAC3D9xB,KAAKqyB,IAAM,IAAI,GAAS,IAAI,GAAU1wB,EAAI4vB,EAAI,EAAG9vB,EAAG8vB,EAAI,EAAG7hB,EAAI,GAAIoiB,GACnE9xB,KAAKsyB,IAAM,IAAI,GAAS,IAAI,GAAU3wB,EAAGF,EAAIiO,EAAI,EAAG6hB,EAAI,EAAG7hB,EAAI,GAAIoiB,GACnE9xB,KAAKuyB,IAAM,IAAI,GAAS,IAAI,GAAU5wB,EAAI4vB,EAAI,EAAG9vB,EAAIiO,EAAI,EAAG6hB,EAAI,EAAG7hB,EAAI,GAAIoiB,GAC3E9xB,KAAKgyB,UAAW,GCvDjB,MAAM,GACT,YAAY5M,EAAQ3R,GAChBzT,KAAKyT,UAAYA,EACjBzT,KAAKqlB,QAAUD,EACfplB,KAAK0yB,OAAS,EACd1yB,KAAK8I,MAAQ,GACb9I,KAAK2yB,OAAS,GACd3yB,KAAK4yB,KAAO,GACZ5yB,KAAKmoB,MAAQ,EACbnoB,KAAKsvB,WAAY,EACjBtvB,KAAKuvB,WAAa,EAClBvvB,KAAK6yB,mBAAqB,IAAIrH,GAAmBxrB,KAAKqlB,QAAS5R,GAC/D,MAAMub,EAAahvB,KAAKyT,UAAU8H,OAAOvV,KACzChG,KAAK8yB,SAAW,IAAI,GAAS,IAAI,IAAW9D,EAAW/oB,MAAQ,GAAI+oB,EAAW9oB,OAAS,EAAuB,EAAnB8oB,EAAW/oB,MAAa,EAAwB,EAApB+oB,EAAW9oB,OAAc,GAAI,GACpJlG,KAAK6vB,OAAS7vB,KAAKqlB,QAAQvK,QAAQiY,UAAUtf,GAAW,GACxDzT,KAAKkb,SAAWlb,KAAKqlB,QAAQvK,QAAQkY,YAAYvf,GAAW,GAEhE,YACI,OAAOzT,KAAK8I,MAAM3H,OAEtB,qBACI,MAAMsS,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cACtD,IAAK,MAAM5K,KAAYvI,EAAQ2lB,gBAC3BnqB,KAAKizB,YAAYltB,GAAqB,CAClCC,KAAMyN,EAAU8H,OAAOvV,KACvBZ,SAAU2H,EAAS3H,WACnB2H,EAASvI,SAGrB,YAAYY,EAAUknB,EAAiB3C,EAAOuJ,GAC1C,MAAMzf,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cAAewQ,EAAQ3jB,EAAQsT,UAAU2R,OAAOtB,MACtG,GAAIA,EAAQ,EAAG,CACX,MAAMgL,EAAgBnzB,KAAK+lB,MAAQ,EAAIoC,EACnCgL,EAAgB,GAChBnzB,KAAKozB,eAAeD,GAG5B,OAAOnzB,KAAKqzB,cAAcjuB,EAAUknB,EAAiB3C,EAAOuJ,GAEhE,QACIlzB,KAAK8I,MAAQ,GACb9I,KAAK2yB,OAAS,GAElB,UACI3yB,KAAK8I,MAAQ,GACb9I,KAAK2yB,OAAS,GACd3yB,KAAK6vB,OAAS,GACd7vB,KAAKkb,SAAW,GAEpB,WAAWxH,GACP,MAAMD,EAAYzT,KAAKyT,UAAWub,EAAahvB,KAAKyT,UAAU8H,OAAOvV,KACrEhG,KAAK8yB,SAAW,IAAI,GAAS,IAAI,IAAW9D,EAAW/oB,MAAQ,GAAI+oB,EAAW9oB,OAAS,EAAuB,EAAnB8oB,EAAW/oB,MAAa,EAAwB,EAApB+oB,EAAW9oB,OAAc,GAAI,GACpJuN,EAAU8H,OAAOlI,cACXrT,KAAKszB,OAAO5f,GACd1T,KAAKsvB,YACLtvB,KAAK2yB,OAAO9H,KAAK,CAACrc,EAAGD,IAAMA,EAAEnJ,SAAS1D,EAAI8M,EAAEpJ,SAAS1D,GAAK8M,EAAE6d,GAAK9d,EAAE8d,IACnErsB,KAAKuvB,WAAavvB,KAAK2yB,OAAO3yB,KAAK2yB,OAAOxxB,OAAS,GAAGiE,SAAS1D,EAC/D1B,KAAKsvB,WAAY,GAErB,IAAK,MAAO,CAAEzZ,KAAWpC,EAAUqH,QAC/BrH,EAAU8H,OAAO3F,WAAWC,EAAQnC,GAExC,IAAK,MAAMlI,KAAKxL,KAAK2yB,OACjBnnB,EAAEgK,KAAK9B,GAGf,gBAAgB3I,GACZ/K,KAAK6yB,mBAAmB7S,gBAAgBjV,GAE5C,OACI,IAAItK,EACJ,MAAMgT,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cACtD3X,KAAKuvB,WAAa,EAClBvvB,KAAKsvB,WAAY,EACjB,IAAI/M,GAAU,EACdviB,KAAKkb,SAAWlb,KAAKqlB,QAAQvK,QAAQkY,YAAYvf,GAAW,GAC5DzT,KAAK6yB,mBAAmB/W,OACxB,IAAK,MAAO,CAAEjG,KAAWpC,EAAUqH,QAI/B,QAHuCjZ,IAAnCgU,EAAO0d,0BACPhR,EAAU1M,EAAO0d,2BAEjBhR,EACA,MAGRviB,KAAK6yB,mBAAmB/W,OACxB,IAAK,MAAO,CAAEqS,KAAkB1a,EAAU+f,eACtCrF,EAAcrS,KAAKrI,GAGvB,GADAzT,KAAKyzB,sBACAlR,EAAS,CACV,IAAK,MAAMoH,KAASnlB,EAAQsT,UAAU0R,OAAQ,CAC1C,MAAMkK,EAAelvB,EAAQsT,UAAU0R,OAAOG,GAC9C,IAAK,IAAIgK,EAAI3zB,KAAK+lB,MAAO6N,EAAI,EAAGA,GAAoC,QAA9BnzB,EAAKizB,EAAajK,cAA2B,IAAPhpB,OAAgB,EAASA,EAAG4C,QAAUswB,EAAInvB,EAAQsT,UAAU2R,OAAOpmB,MAAOswB,IAAKC,IACvJ5zB,KAAKizB,iBAAYpxB,EAAW6xB,EAAc/J,GAGlD,IAAK,IAAIgK,EAAI3zB,KAAK+lB,MAAO4N,EAAInvB,EAAQsT,UAAU2R,OAAOpmB,MAAOswB,IACzD3zB,KAAKizB,eAIjB,KAAKY,EAAIpU,EAAO6M,EAAiB3C,GAC7B3pB,KAAK8zB,SAAU,EACf,IAAK,IAAIH,EAAI,EAAGA,EAAIE,EAAIF,IACpB3zB,KAAKizB,YAAsB,OAAVxT,QAA4B,IAAVA,OAAmB,EAASA,EAAMra,SAAUknB,EAAiB3C,GAEpG3pB,KAAK8zB,SAAU,EAEnB,eACI9zB,KAAKqT,QACLrT,KAAK8b,aACC9b,KAAKwV,KAAK,CAAEnS,MAAO,EAAG6D,OAAQ,IAExC,OAAO6F,EAAU4c,EAAO4C,GACpBvsB,KAAK+zB,SAAS/zB,KAAK8I,MAAMzH,QAAQ0L,QAAWlL,EAAW8nB,EAAO4C,GAElE,SAAShjB,EAAOyqB,EAAW,EAAGrK,EAAO4C,GACjC,GAAIhjB,EAAQ,GAAKA,EAAQvJ,KAAK+lB,MAC1B,OAEJ,IAAIkO,EAAU,EACd,IAAK,IAAIN,EAAIpqB,EAAO0qB,EAAUD,GAAYL,EAAI3zB,KAAK+lB,MAAO4N,IAAK,CAC3D,MAAM5mB,EAAW/M,KAAK8I,MAAM6qB,GAC5B,IAAK5mB,GAAYA,EAAS4c,QAAUA,EAChC,SAEJ5c,EAASmX,QAAQqI,GACjBvsB,KAAK8I,MAAMxH,OAAOqyB,IAAK,GACvB,MAAMO,EAAOl0B,KAAK2yB,OAAOtxB,QAAQ0L,GACjC/M,KAAK2yB,OAAOrxB,OAAO4yB,EAAM,GACzBl0B,KAAK4yB,KAAK/xB,KAAKkM,GACfknB,IACAj0B,KAAKqlB,QAAQ8O,cAAc,kBAAmB,CAC1C1gB,UAAWzT,KAAKyT,UAChBnV,KAAM,CACFyO,eAKhB,eAAeinB,EAAUrK,GACrB3pB,KAAK+zB,SAAS,EAAGC,EAAUrK,GAE/B,aACI,MAAMnlB,EAAUxE,KAAKyT,UAAUkE,cAC/B,IAAK,MAAMgS,KAASnlB,EAAQsT,UAAU0R,OAClCxpB,KAAKo0B,cAAc5vB,EAAQsT,UAAU0R,OAAOG,GAAQ,EAAGA,GAE3D3pB,KAAKo0B,cAAc5vB,EAAQsT,UAAWtT,EAAQ2lB,gBAAgBhpB,QAElE,aAAauS,GACT,IAAIjT,EAAI2F,EACR,MAAMqN,EAAYzT,KAAKyT,UAAW4gB,EAAoB,GACtD,IAAK,MAAO,CAAElG,KAAkB1a,EAAU+f,eACtCrF,EAAcmF,SAElB,IAAK,MAAO,CAAEzd,KAAWpC,EAAUqH,QACN,QAAxBra,EAAKoV,EAAOyd,cAA2B,IAAP7yB,GAAyBA,EAAGoc,KAAKhH,EAAQnC,GAE9E,IAAK,MAAM3G,KAAY/M,KAAK8I,MAAO,CAC/B,MAAMyT,EAAe9I,EAAU8H,OAAOgB,aAClCA,IAAiBxP,EAAS0gB,qBAC1B1gB,EAAS3H,SAASzD,GAAK4a,EAAatW,MACpC8G,EAAS3H,SAAS3D,GAAK8a,EAAarW,OACpC6G,EAAS+hB,gBAAgBntB,GAAK4a,EAAatW,MAC3C8G,EAAS+hB,gBAAgBrtB,GAAK8a,EAAarW,QAE/C6G,EAAS0gB,oBAAqB,QACxBztB,KAAK6yB,mBAAmB9G,MAAMhf,GACpC,IAAK,MAAO,CAAE8I,KAAW7V,KAAKyT,UAAUqH,QAAS,CAC7C,GAAI/N,EAAS0L,UACT,MAE6B,QAAhCrS,EAAKyP,EAAOye,sBAAmC,IAAPluB,GAAyBA,EAAGyW,KAAKhH,EAAQ9I,EAAU2G,GAEhG,IAAK,MAAMkc,KAAS5vB,KAAK6vB,OACjBD,EAAM/D,UAAU9e,IAChB6iB,EAAM7X,KAAKhL,EAAU2G,GAGzB3G,EAAS0L,UACT4b,EAAkBxzB,KAAKkM,GAG3B/M,KAAK8yB,SAASV,OAAO,IAAIrB,GAAMhkB,EAAStB,cAAesB,IAE3D,IAAK,MAAMA,KAAYsnB,EACnBr0B,KAAKqY,OAAOtL,SAEV/M,KAAK6yB,mBAAmB0B,iBAAiB7gB,GAC/C,IAAK,MAAM3G,KAAY/M,KAAK8I,MAAO,CAC/B,IAAK,MAAMmS,KAAWjb,KAAKkb,SACvBD,EAAQqY,OAAOvmB,EAAU2G,GAExB3G,EAAS0L,WAAc1L,EAASyL,gBAC3BxY,KAAK6yB,mBAAmB2B,kBAAkBznB,EAAU2G,UAG3DD,EAAU8H,OAAOgB,aAE5B,cAAc/X,EAASiwB,EAAa9K,GAChC,IAAIlpB,EACJ,KAAwC,QAAjCA,EAAK+D,EAAQilB,OAAOvB,eAA4B,IAAPznB,OAAgB,EAASA,EAAGgE,QACxE,OAEJ,MAAMiwB,EAAgBlwB,EAAQilB,OAAQkL,EAAgB30B,KAAK40B,mBAAmBF,EAAcxM,SAAU2M,EAAqBH,EAAcrxB,MAAOyxB,EAAoBJ,EAAcvM,MAAQ,EAAIuM,EAAcvM,MAAQ0M,EAAoBE,EAAkB/yB,KAAKyB,IAAIoxB,EAAoBC,GAAqBH,EAAgBF,EAAaO,EAAiBhzB,KAAKyB,IAAIzD,KAAK+lB,MAAO/lB,KAAK8I,MAAMmsB,OAAQptB,GAAMA,EAAE8hB,QAAUA,GAAOxoB,QAC3ZnB,KAAKmoB,MAAQuM,EAAcvM,MAAQwM,EAC/BK,EAAiBD,EACjB/0B,KAAKa,KAAKmB,KAAKovB,IAAI2D,EAAkBC,QAAiBnzB,EAAW2C,EAASmlB,GAErEqL,EAAiBD,GACtB/0B,KAAKozB,eAAe4B,EAAiBD,EAAiBpL,GAG9D,mBAAmBuL,GACf,MAAMzhB,EAAYzT,KAAKyT,UACvB,IAAKA,EAAU8H,OAAOjU,UAAY4tB,EAAezwB,OAC7C,OAAO,EAEX,MAAM8W,EAAS9H,EAAU8H,OAAOjU,QAAS2U,EAAUxI,EAAUgC,OAAOC,WACpE,OAAQ6F,EAAOtV,MAAQsV,EAAOrV,QAAWgvB,EAAehuB,OAAS+U,GAAW,EAAIiZ,EAAelN,MAEnG,cAAc5iB,EAAUknB,EAAiB3C,EAAOuJ,GAC5C,IACI,IAAInmB,EAAW/M,KAAK4yB,KAAKuC,MACrBpoB,EACAA,EAAS+O,KAAK9b,KAAK0yB,OAAQttB,EAAUknB,EAAiB3C,GAGtD5c,EAAW,IAAI,GAAS/M,KAAKqlB,QAASrlB,KAAK0yB,OAAQ1yB,KAAKyT,UAAWrO,EAAUknB,EAAiB3C,GAElG,IAAIyL,GAAS,EAIb,GAHIlC,IACAkC,EAASlC,EAAYnmB,KAEpBqoB,EACD,OAWJ,OATAp1B,KAAK8I,MAAMjI,KAAKkM,GAChB/M,KAAK2yB,OAAO9xB,KAAKkM,GACjB/M,KAAK0yB,SACL1yB,KAAKqlB,QAAQ8O,cAAc,gBAAiB,CACxC1gB,UAAWzT,KAAKyT,UAChBnV,KAAM,CACFyO,cAGDA,EAEX,MAAOmR,GAEH,YADAiG,QAAQkR,KAAK,0BAA0BnX,KC/P5C,MAAM,GACT,YAAYzK,GACRzT,KAAKyT,UAAYA,EAErB,OACI,MAAMA,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cACtD3X,KAAK0V,YAAclR,EAAQ0lB,cAAgBpiB,KAAU,EAAIC,OAAOutB,iBAChEt1B,KAAK6R,aAAe,EACpB,MAAM0jB,EAAQv1B,KAAK0V,WACnB,GAAIjC,EAAU8H,OAAOjU,QAAS,CAC1B,MAAMA,EAAUmM,EAAU8H,OAAOjU,QACjCmM,EAAU8H,OAAOvV,KAAKC,MAAQqB,EAAQsU,YAAc2Z,EACpD9hB,EAAU8H,OAAOvV,KAAKE,OAASoB,EAAQqU,aAAe4Z,EAE1D,MAAMzd,EAAYtT,EAAQsT,UAC1B9X,KAAKw1B,gBAAkBnxB,GAAcyT,EAAUC,KAAKgP,QAAQ/hB,UAAYuwB,EACxEv1B,KAAKy1B,mBAAqBpxB,GAAcyT,EAAU9R,KAAK0L,UAAUQ,OAASqjB,EAC1Ev1B,KAAK2mB,SAAWtiB,GAAcyT,EAAUC,KAAKkP,QAAQN,UAAY4O,EAErE,aAAaxoB,GACT,MAAMvI,EAAUuI,EAASvI,QAAS+wB,EAAQv1B,KAAK0V,WAAYggB,EAAelxB,EAAQuT,KAAK/S,SAAU9G,EAAQ6O,EAAS0I,OAClHvX,EAAMs3B,gBAAkBnxB,GAAcG,EAAQuT,KAAKgP,QAAQ/hB,UAAYuwB,EACvEr3B,EAAMy3B,UAAYtxB,GAAcG,EAAQuT,KAAKiP,OAASuO,EACtDr3B,EAAM03B,UAAYvxB,GAAcG,EAAQuT,KAAK7F,OAASqjB,EACtDr3B,EAAMu3B,mBAAqBpxB,GAAcG,EAAQwB,KAAK0L,UAAUQ,OAASqjB,EACzE,MAAMhI,EAAcrvB,EAAMqvB,YAC1BA,EAAYzhB,gBAAyCjK,IAA5B6zB,EAAa5pB,WAA2B4pB,EAAa5pB,WAAaypB,OAAQ1zB,EACnG0rB,EAAYxhB,cAAqClK,IAA1B6zB,EAAa3pB,SAAyB2pB,EAAa3pB,SAAWwpB,OAAQ1zB,EAC7F3D,EAAMyoB,SAAWtiB,GAAcG,EAAQuT,KAAKkP,QAAQN,UAAY4O,GCrBxE,SAASM,GAAWpiB,GAChB,OAAOA,IAAcA,EAAUgF,UAEnC,SAASqd,GAAqB1Q,EAAQ3R,KAAcsW,GAChD,MAAMvlB,EAAU,IAAI,GAAQ4gB,EAAQ3R,GAEpC,OADAoW,GAAYrlB,KAAYulB,GACjBvlB,EAEX,MAAMuxB,GAA0B,UAAWC,GAAuB,CAC9DC,SAAWzqB,IACP,MAAMjJ,EAAIiJ,EAAEvE,SAAS8nB,OAErB,OADAxsB,EAAEL,OAAUK,EAAEpB,OAASa,KAAKsD,GAAM,IAC3B/C,GAEXuZ,KAAM,OAENwX,OAAQ,QAGL,MAAM,GACT,YAAYlO,EAAQiH,EAAIrC,GACpBhqB,KAAKqsB,GAAKA,EACVrsB,KAAKqlB,QAAUD,EACfplB,KAAK2jB,SAAW,IAChB3jB,KAAK4jB,QAAS,EACd5jB,KAAKk2B,OAAS,EACdl2B,KAAKikB,SAAW,EAChBjkB,KAAKgkB,SAAW,EAChBhkB,KAAKm2B,aAAc,EACnBn2B,KAAKsc,SAAU,EACftc,KAAKyY,WAAY,EACjBzY,KAAKo2B,SAAU,EACfp2B,KAAK+jB,cAAgB,EACrB/jB,KAAKsqB,QAAU,IACftqB,KAAK4gB,YAAa,EAClB5gB,KAAKq2B,eAAiBrM,EACtBhqB,KAAKs2B,sBAAwBtM,EAC7BhqB,KAAKyV,OAAS,IAAI,GAAOzV,MACzBA,KAAKub,OAAS,IAAI,GAAOvb,MACzBA,KAAK8X,UAAY,IAAI,GAAU9X,KAAKqlB,QAASrlB,MAC7CA,KAAKu2B,aAAe,IAAI1S,GAAa7jB,MACrCA,KAAKwzB,eAAiB,IAAIjzB,IAC1BP,KAAKwf,cAAgB,CACjBC,MAAO,CACH4C,UAAU,EACVrY,QAAQ,IAGhBhK,KAAK8a,QAAU,IAAIva,IACnBP,KAAKuV,QAAU,IAAIhV,IACnBP,KAAKw2B,SAAWV,GAAqB91B,KAAKqlB,QAASrlB,MACnDA,KAAK2X,cAAgBme,GAAqB91B,KAAKqlB,QAASrlB,MACxDA,KAAKy2B,gBAAkB,IAAI,GAAez2B,MACN,qBAAzB02B,sBAAwCA,uBAC/C12B,KAAK22B,sBAAwB,IAAID,qBAAsBxU,GAAYliB,KAAK42B,qBAAqB1U,KAEjGliB,KAAKqlB,QAAQ8O,cAAc,iBAAkB,CAAE1gB,UAAWzT,OAE9D,cACI,OAAOA,KAAKw2B,SAEhB,oBACI,OAAOx2B,KAAKq2B,eAEhB,gBAAgB/tB,GACZ,IAAKutB,GAAW71B,MACZ,OAEJ,MAAM0kB,EAAK1kB,KAAKwf,cAAclY,QAC9B,IAAKod,EACD,OAEJ,MAAMmS,EAAsB,CAAC3Y,EAAGlK,EAAKpK,KACjC,IAAKisB,GAAW71B,MACZ,OAEJ,MAAMic,EAAUjc,KAAKyV,OAAOC,WAAYohB,EAAY,CAChDn1B,EAAGqS,EAAIrS,EAAIsa,EACXxa,EAAGuS,EAAIvS,EAAIwa,GACZnE,EAAY9X,KAAK8X,UAAUgb,SAASiE,YAAYD,EAAWltB,EAASqS,GACvE3T,EAAS4V,EAAGpG,IAEVkf,EAAgB9Y,IAClB,IAAK2X,GAAW71B,MACZ,OAEJ,MAAM4iB,EAAa1E,EAAGlK,EAAM,CACxBrS,EAAGihB,EAAWS,SAAWT,EAAWG,QACpCthB,EAAGmhB,EAAWU,SAAWV,EAAWI,SAExC6T,EAAoB3Y,EAAGlK,EAAK,IAE1BoK,EAAoB,KACjByX,GAAW71B,QAGhBi3B,GAAU,EACVC,GAAa,IAEX7Y,EAAmB,KAChBwX,GAAW71B,QAGhBk3B,GAAa,IAEX5Y,EAAmBJ,IACrB,GAAK2X,GAAW71B,MAAhB,CAGA,GAAIi3B,IAAYC,EAAY,CACxB,MAAM3T,EAAarF,EACnB,IAAIsF,EAAYD,EAAWE,QAAQF,EAAWE,QAAQtiB,OAAS,GAC/D,IAAKqiB,IACDA,EAAYD,EAAW4T,eAAe5T,EAAW4T,eAAeh2B,OAAS,IACpEqiB,GACD,OAGR,MAAMlc,EAAUtH,KAAKub,OAAOjU,QAAS8b,EAAa9b,EAAUA,EAAQwb,6BAA0BjhB,EAAWmS,EAAM,CAC3GrS,EAAG6hB,EAAUT,SAAWK,EAAaA,EAAWjZ,KAAO,GACvD1I,EAAG+hB,EAAUR,SAAWI,EAAaA,EAAWnZ,IAAM,IAE1D4sB,EAAoB3Y,EAAGlK,EAAKhS,KAAK0B,IAAI8f,EAAU4T,QAAS5T,EAAU6T,UAEtEJ,GAAU,EACVC,GAAa,IAEXzY,EAAqB,KAClBoX,GAAW71B,QAGhBi3B,GAAU,EACVC,GAAa,IAEjB,IAAID,GAAU,EAAOC,GAAa,EAClCxS,EAAG5G,iBAAiB,QAASkZ,GAC7BtS,EAAG5G,iBAAiB,aAAcM,GAClCsG,EAAG5G,iBAAiB,YAAaO,GACjCqG,EAAG5G,iBAAiB,WAAYQ,GAChCoG,EAAG5G,iBAAiB,cAAeW,GAEvC,QAAQ7gB,EAAKipB,EAAW0F,GAAW,GAC/B,SAAKsJ,GAAW71B,QAAWusB,GAAYvsB,KAAKwzB,eAAe8D,IAAI15B,MAG/DoC,KAAKwzB,eAAe5yB,IAAIhD,EAAmB,OAAdipB,QAAoC,IAAdA,EAAuBA,EAAYmP,KAC/E,GAEX,UACI,IAAKH,GAAW71B,MACZ,OAEJA,KAAKu3B,OACLv3B,KAAK8X,UAAUoM,UACflkB,KAAKub,OAAO2I,UACZ,IAAK,MAAO,CAAE5O,KAAWtV,KAAKuV,QACtBD,EAAO4O,SACP5O,EAAO4O,QAAQlkB,MAGvB,IAAK,MAAMpC,KAAOoC,KAAKuV,QAAQiiB,OAC3Bx3B,KAAKuV,QAAQtU,OAAOrD,GAExBoC,KAAKqlB,QAAQvK,QAAQoJ,QAAQlkB,MAC7BA,KAAKyY,WAAY,EACjB,MAAMgf,EAAUz3B,KAAKqlB,QAAQqS,MAAOt2B,EAAMq2B,EAAQE,UAAW9vB,GAAMA,IAAM7H,MACrEoB,GAAO,GACPq2B,EAAQn2B,OAAOF,EAAK,GAExBpB,KAAKqlB,QAAQ8O,cAAc,qBAAsB,CAAE1gB,UAAWzT,OAElE,KAAK4kB,GACD,IAAKiR,GAAW71B,MACZ,OAEJ,IAAI43B,EAAchT,EAClB5kB,KAAK63B,oBAAsBxvB,KAAUU,MAAO+a,IACpC8T,IACA53B,KAAK+jB,mBAAgBliB,EACrB+1B,GAAc,SAEZ53B,KAAKu2B,aAAauB,UAAUhU,KAG1C,sBACI,OAAOiU,KAAKC,UAAUh4B,KAAK2X,cAAe,CAAC/Z,EAAKyF,KAC5C,GAAY,YAARzF,GAA6B,eAARA,EAGzB,OAAOyF,GACR,GAEP,YAAYiF,EAAUjK,EAAM45B,GACxB,MAAM3wB,EAAUtH,KAAKub,OAAOjU,QACxBA,GACAA,EAAQ4wB,OAAO5vB,EAAmB,OAATjK,QAA0B,IAATA,EAAkBA,EAAO,YAAa45B,GAGxF,UAAU3vB,GACNtI,KAAKm4B,YAAY7vB,GAErB,qBACI,OAAQtI,KAAKo2B,UAAYp2B,KAAK4gB,YAAciV,GAAW71B,MAE3D,gBAAgB+K,GACZ,GAAK8qB,GAAW71B,MAAhB,CAGAA,KAAK8X,UAAUkI,gBAAgBjV,GAC/B,IAAK,MAAO,CAAE8K,KAAW7V,KAAK8a,QACtBjF,EAAOmK,iBACPnK,EAAOmK,gBAAgBjV,IAInC,aACI,IAAK8qB,GAAW71B,MACZ,OAEJ,MAAMo4B,EAASp4B,KAAKqlB,QAAQvK,QAAQud,qBACpC,IAAK,MAAMh6B,KAAQ+5B,EAAQ,CACvB,MAAM9iB,EAAStV,KAAKqlB,QAAQvK,QAAQ2U,eAAepxB,GAC/CiX,GACAtV,KAAKuV,QAAQ3U,IAAIvC,EAAMiX,GAG/BtV,KAAKw2B,SAAWV,GAAqB91B,KAAKqlB,QAASrlB,KAAMA,KAAKs2B,sBAAuBt2B,KAAKgqB,eAC1FhqB,KAAK2X,cAAgBme,GAAqB91B,KAAKqlB,QAASrlB,KAAMA,KAAKw2B,UACnE,MAAM8B,EAAmBt4B,KAAKqlB,QAAQvK,QAAQyd,oBAAoBv4B,MAClE,IAAK,MAAOqsB,EAAIxW,KAAWyiB,EACvBt4B,KAAK8a,QAAQla,IAAIyrB,EAAIxW,GAEzB7V,KAAKyV,OAAOqG,OACZ9b,KAAKub,OAAOO,OACZ9b,KAAKyc,sBACLzc,KAAKub,OAAOxB,iBACZ/Z,KAAKub,OAAO5B,SACZ3Z,KAAKsqB,QAAUtqB,KAAK2X,cAAc2S,QAClCtqB,KAAKikB,SAAwD,IAA7C5f,GAAcrE,KAAK2X,cAAcsM,UACjDjkB,KAAKk2B,OAAmD,IAA1C7xB,GAAcrE,KAAK2X,cAAciP,OAC/C5mB,KAAKgkB,SAAW,EAChBhkB,KAAK2jB,SAAW3jB,KAAK2X,cAAcgM,SAAW,EAAI3jB,KAAK2X,cAAcgM,SAAW,IAChF3jB,KAAK4jB,OAAS5jB,KAAK2X,cAAciM,OACjC,IAAK,MAAO,CAAEtO,KAAWtV,KAAKuV,QACtBD,EAAOwG,YACDxG,EAAOwG,KAAK9b,MAG1B,IAAK,MAAO,CAAE6V,KAAW7V,KAAK8a,QACtBjF,EAAOiG,YACDjG,EAAOiG,OAGrB9b,KAAKqlB,QAAQ8O,cAAc,gBAAiB,CAAE1gB,UAAWzT,OACzDA,KAAK8X,UAAUgE,OACf9b,KAAK8X,UAAU4E,aACf,IAAK,MAAO,CAAE7G,KAAW7V,KAAK8a,QACtBjF,EAAO2iB,gBACP3iB,EAAO2iB,iBAGfx4B,KAAKqlB,QAAQ8O,cAAc,iBAAkB,CAAE1gB,UAAWzT,OAE9D,gBAAgB/B,GACP43B,GAAW71B,QAGhBA,KAAKy4B,cAAgBx6B,QACf+B,KAAK4c,WAEf,QACI,GAAKiZ,GAAW71B,aAGiB6B,IAA7B7B,KAAK63B,sBACLpvB,KAAkBzI,KAAK63B,4BAChB73B,KAAK63B,sBAEZ73B,KAAKo2B,SAAT,CAGA,IAAK,MAAO,CAAEvgB,KAAW7V,KAAK8a,QACtBjF,EAAOgL,OACPhL,EAAOgL,QAGV7gB,KAAK4gB,aACN5gB,KAAKo2B,SAAU,GAEnBp2B,KAAKqlB,QAAQ8O,cAAc,kBAAmB,CAAE1gB,UAAWzT,QAE/D,KAAK4kB,GACD,IAAKiR,GAAW71B,MACZ,OAEJ,MAAM04B,EAAc14B,KAAKo2B,SAAWxR,EACpC,IAAI5kB,KAAKm2B,aAAgBn2B,KAAK2X,cAAcsS,SAA5C,CAOA,GAHIjqB,KAAKo2B,UACLp2B,KAAKo2B,SAAU,GAEfsC,EACA,IAAK,MAAO,CAAE7iB,KAAW7V,KAAK8a,QACtBjF,EAAOkL,MACPlL,EAAOkL,OAInB/gB,KAAKqlB,QAAQ8O,cAAc,gBAAiB,CAAE1gB,UAAWzT,OACzDA,KAAKwV,KAAKkjB,IAAe,QAdrB14B,KAAKm2B,aAAc,EAgB3B,gBACI,GAAKN,GAAW71B,MAIhB,OADAA,KAAKu3B,OACEv3B,KAAK24B,QAEhB,cACI,GAAK9C,GAAW71B,MAIhB,OADAA,KAAKw2B,SAAWV,GAAqB91B,KAAKqlB,QAASrlB,MAC5CA,KAAK4c,UAEhB,SAASgc,EAAkB9c,EAAMwX,GACxBuC,GAAW71B,OAGhBA,KAAK64B,QAAQD,EAAkB9c,EAAMwX,GAEzC,QAAQwF,EAAiBhd,EAAMwX,GAC3B,IAAKwF,IAAoBjD,GAAW71B,MAChC,OAEJ,MAAMmuB,EAAgB/R,OAAOC,OAAO,GAAI2Z,IACxC,GAA+B,oBAApB8C,EACP3K,EAAc8H,SAAW6C,EACrBhd,IACAqS,EAAcrS,KAAOA,GAErBwX,IACAnF,EAAcmF,OAASA,OAG1B,CACD,MAAMyF,EAAe5K,EACrBA,EAAc8H,SAAW6C,EAAgB7C,UAAY8C,EAAa9C,SAClE9H,EAAcrS,KAAOgd,EAAgBhd,MAAQid,EAAajd,KAC1DqS,EAAcmF,OAASwF,EAAgBxF,QAAUyF,EAAazF,OAElEtzB,KAAKquB,QAAQ0H,GAAyB5H,GAAe,GAEzD,cACS0H,GAAW71B,QAASA,KAAKsc,gBAGxBtc,KAAK8b,OACX9b,KAAKsc,SAAU,QACT,IAAI0c,QAASC,IACfj5B,KAAKk5B,cAAgB3wB,WAAWQ,UAC5B/I,KAAKy2B,gBAAgB0C,eACjBn5B,KAAKwf,cAAclY,mBAAmB8xB,aAAep5B,KAAK22B,uBAC1D32B,KAAK22B,sBAAsB3c,QAAQha,KAAKwf,cAAclY,SAE1D,IAAK,MAAO,CAAEuO,KAAW7V,KAAK8a,QACtBjF,EAAO8iB,aACD9iB,EAAO8iB,QAGrB34B,KAAKqlB,QAAQ8O,cAAc,mBAAoB,CAAE1gB,UAAWzT,OAC5DA,KAAK+gB,OACLkY,KACDj5B,KAAKk2B,WAGhB,OACI,GAAKL,GAAW71B,OAAUA,KAAKsc,QAA/B,CAGItc,KAAKk5B,gBACLvwB,aAAa3I,KAAKk5B,sBACXl5B,KAAKk5B,eAEhBl5B,KAAKm2B,aAAc,EACnBn2B,KAAKsc,SAAU,EACftc,KAAKy2B,gBAAgB4C,kBACrBr5B,KAAK6gB,QACL7gB,KAAK8X,UAAUzE,QACfrT,KAAKub,OAAOlI,QACRrT,KAAKwf,cAAclY,mBAAmB8xB,aAAep5B,KAAK22B,uBAC1D32B,KAAK22B,sBAAsB1U,UAAUjiB,KAAKwf,cAAclY,SAE5D,IAAK,MAAO,CAAEuO,KAAW7V,KAAK8a,QACtBjF,EAAO0hB,MACP1hB,EAAO0hB,OAGf,IAAK,MAAM35B,KAAOoC,KAAK8a,QAAQ0c,OAC3Bx3B,KAAK8a,QAAQ7Z,OAAOrD,GAExBoC,KAAKq2B,eAAiBr2B,KAAKw2B,SAC3Bx2B,KAAKqlB,QAAQ8O,cAAc,mBAAoB,CAAE1gB,UAAWzT,QAEhE,sBACIA,KAAK2X,cAAc0S,WAAa,GAChC,MAAMiP,EAAct5B,KAAK2X,cAAc4hB,cAAcv5B,KAAKub,OAAOvV,KAAKC,MAAOjG,KAAKyV,OAAOC,WAAY1V,KAAKw2B,UAE1G,OADAx2B,KAAK2X,cAAc6hB,SAASx5B,KAAKy4B,eAC7Bz4B,KAAKy5B,qBAAuBH,IAGhCt5B,KAAKy5B,mBAAqBH,GACnB,GAEX,qBAAqBpX,GACjB,GAAK2T,GAAW71B,OAAUA,KAAK2X,cAAcyS,uBAG7C,IAAK,MAAMjI,KAASD,EACZC,EAAMC,SAAWpiB,KAAKwf,cAAclY,UAGvC6a,EAAMuX,eAAiB15B,KAAK+gB,KAAO/gB,KAAK6gB,UC7arD,SAAS8Y,GAAWC,GAChBzV,QAAQC,MAAM,uBAAuBwV,kCAEzC7wB,eAAe8wB,GAAeC,EAASvwB,GACnC,MAAMwwB,EAAM1sB,GAAyBysB,EAASvwB,GAC9C,IAAKwwB,EACD,OAEJ,MAAMC,QAAiBC,MAAMF,GAC7B,GAAIC,EAASE,GACT,OAAOF,EAASG,OAEpBR,GAAWK,EAAS5nB,QAEjB,MAAM,GACT,YAAYgT,GACRplB,KAAKqlB,QAAUD,EAEnB,KAAKgV,EAAO51B,EAAS+E,GACjB,MAAM8wB,EAAS,CAAE9wB,QAAO+wB,QAAQ,GAahC,MAZqB,kBAAVF,EACPC,EAAOD,MAAQA,EAGfC,EAAO71B,QAAU41B,EAEE,kBAAZ51B,EACP61B,EAAO9wB,MAAQ/E,EAGf61B,EAAO71B,QAAsB,OAAZA,QAAgC,IAAZA,EAAqBA,EAAU61B,EAAO71B,QAExExE,KAAK6pB,YAAYwQ,GAE5B,eAAeD,EAAON,EAASvwB,GAC3B,IAAIwwB,EAAK1N,EAQT,MAPuB,kBAAZyN,QAAoCj4B,IAAZi4B,EAC/BC,EAAMK,GAGN/N,EAAK+N,EACLL,EAAMD,GAEH95B,KAAKu6B,kBAAkB,CAAEH,MAAO/N,EAAI0N,MAAKxwB,QAAO+wB,QAAQ,IAEnE,kBAAkBD,GACd,IAAI55B,EAAI2F,EAAIhH,EACZ,MAAMg7B,EAAgC,QAAvB35B,EAAK45B,EAAOD,aAA0B,IAAP35B,EAAgBA,EAAK,cAAcuB,KAAKgC,MAAoB,IAAdV,MAAwB,MAAEiG,EAAOwwB,IAAKD,EAAO,OAAEQ,GAAWD,EAAQ71B,EAAU81B,QAAeT,GAAeC,EAASvwB,GAAS8wB,EAAO71B,QAC/N,IAAIg2B,EAAyC,QAAzBp0B,EAAKi0B,EAAO/yB,eAA4B,IAAPlB,EAAgBA,EAAK4B,SAASyyB,eAAeL,GAC7FI,IACDA,EAAexyB,SAAS0yB,cAAc,OACtCF,EAAanO,GAAK+N,EACwB,QAAzCh7B,EAAK4I,SAAS2yB,cAAc,eAA4B,IAAPv7B,GAAyBA,EAAGw7B,OAAOJ,IAEzF,MAAMK,EAAiBxtB,GAAyB7I,EAAS+E,GAAQmuB,EAAM13B,KAAKqlB,QAAQqS,MAAOoD,EAAWpD,EAAIC,UAAWp1B,GAAMA,EAAE8pB,KAAO+N,GACpI,GAAIU,GAAY,EAAG,CACf,MAAMC,EAAM/6B,KAAKqlB,QAAQ2V,QAAQF,GAC7BC,IAAQA,EAAItiB,YACZsiB,EAAI7W,UACJwT,EAAIp2B,OAAOw5B,EAAU,IAG7B,IAAIzZ,EACJ,GAA2C,WAAvCmZ,EAAaS,QAAQC,cACrB7Z,EAAWmZ,EACXnZ,EAAS7F,QAAQxF,IAAsB,YAEtC,CACD,MAAMmlB,EAAmBX,EAAaY,qBAAqB,UACvDD,EAAiBh6B,QACjBkgB,EAAW8Z,EAAiB,GAC5B9Z,EAAS7F,QAAQxF,IAAsB,UAGvCqL,EAAWrZ,SAAS0yB,cAAc,UAClCrZ,EAAS7F,QAAQxF,IAAsB,OACvCwkB,EAAaa,YAAYha,IAG5BA,EAAS/G,MAAMrU,QAChBob,EAAS/G,MAAMrU,MAAQ,QAEtBob,EAAS/G,MAAMpU,SAChBmb,EAAS/G,MAAMpU,OAAS,QAE5B,MAAMo1B,EAAU,IAAI,GAAUt7B,KAAKqlB,QAAS+U,EAAOS,GASnD,OARIC,GAAY,EACZpD,EAAIp2B,OAAOw5B,EAAU,EAAGQ,GAGxB5D,EAAI72B,KAAKy6B,GAEbA,EAAQ/f,OAAOggB,WAAWla,SACpBia,EAAQ3C,QACP2C,EAEX,wBAAwBjB,GACpB,OAAOr6B,KAAK6pB,YAAYwQ,GAE5B,UAAUhO,EAAImO,EAAch2B,EAAS+E,GACjC,MAAM8wB,EAAS,CAAE9wB,QAAO+wB,QAAQ,GAmBhC,MAlBkB,kBAAPjO,EACPgO,EAAOD,MAAQ/N,EAGfgO,EAAO/yB,QAAU+kB,EAEjBmO,aAAwBpB,YACxBiB,EAAO/yB,QAAUkzB,EAGjBH,EAAO71B,QAAUg2B,EAEE,kBAAZh2B,EACP61B,EAAO9wB,MAAQ/E,EAGf61B,EAAO71B,QAAsB,OAAZA,QAAgC,IAAZA,EAAqBA,EAAU61B,EAAO71B,QAExExE,KAAK6pB,YAAYwQ,GAE5B,cAAchO,EAAImO,EAAcV,EAASvwB,GACrC,IAAIwwB,EAAKyB,EAAOC,EAAUn0B,EAY1B,OAXI+kB,aAAc+M,aACd9xB,EAAU+kB,EACV0N,EAAMS,EACNiB,EAAW3B,IAGX0B,EAAQnP,EACR/kB,EAAUkzB,EACVT,EAAMD,EACN2B,EAAWlyB,GAERvJ,KAAKu6B,kBAAkB,CAAEH,MAAOoB,EAAOzB,MAAKxwB,MAAOkyB,EAAUn0B,UAASgzB,QAAQ,KC1I7F,SAASoB,GAAwBjoB,EAAW5I,EAAK8wB,EAAc/W,GAAQ,GACnE,IAAIzd,EAAM0D,EAAIlK,IAAI8S,GAKlB,OAJKtM,IAAOyd,IACRzd,EAAM,IAAIw0B,EAAaC,UAAU/wB,IAAKhD,GAAMA,EAAE4L,IAC9C5I,EAAIjK,IAAI6S,EAAWtM,IAEhBA,EAEJ,MAAM00B,GACT,YAAYzW,GACRplB,KAAKqlB,QAAUD,EACfplB,KAAK8a,QAAU,GACf9a,KAAK87B,cAAgB,CACjBvW,YAAa,IAAIhlB,IACjBsvB,OAAQ,IAAItvB,IACZ2a,SAAU,IAAI3a,KAElBP,KAAKulB,YAAc,IAAIhlB,IACvBP,KAAK6vB,OAAS,IAAItvB,IAClBP,KAAKkb,SAAW,IAAI3a,IACpBP,KAAK+7B,QAAU,IAAIx7B,IACnBP,KAAKuV,QAAU,IAAIhV,IACnBP,KAAKwzB,eAAiB,IAAIjzB,IAE9B,cAActC,EAAM+9B,GAChBh8B,KAAK87B,cAAcvW,YAAY3kB,IAAI3C,EAAM+9B,GAE7C,iBAAiB/9B,EAAMg+B,GACnBj8B,KAAK87B,cAAcjM,OAAOjvB,IAAI3C,EAAMg+B,GAExC,mBAAmBh+B,EAAMi+B,GACrBl8B,KAAK87B,cAAc5gB,SAASta,IAAI3C,EAAMi+B,GAE1C,iBAAiB79B,EAAM8vB,GACdnuB,KAAKouB,iBAAiB/vB,IACvB2B,KAAKwzB,eAAe5yB,IAAIvC,EAAM8vB,GAGtC,UAAUtY,GACD7V,KAAKm8B,UAAUtmB,EAAOwW,KACvBrsB,KAAK8a,QAAQja,KAAKgV,GAG1B,UAAUumB,EAAW53B,EAAS+nB,GAAW,IACjCA,GAAavsB,KAAKurB,UAAU6Q,IAC5Bp8B,KAAK+7B,QAAQn7B,IAAIw7B,EAAW53B,GAGpC,eAAenG,EAAMiX,GACZtV,KAAKyvB,eAAepxB,IACrB2B,KAAKuV,QAAQ3U,IAAIvC,EAAMiX,GAG/B,QAAQ7B,GACJzT,KAAKkb,SAASja,OAAOwS,GACrBzT,KAAK6vB,OAAO5uB,OAAOwS,GACnBzT,KAAKulB,YAAYtkB,OAAOwS,GAE5B,oBAAoBA,GAChB,MAAMtM,EAAM,IAAI5G,IAChB,IAAK,MAAMsV,KAAU7V,KAAK8a,QACjBjF,EAAOwmB,YAAY5oB,EAAUkE,gBAGlCxQ,EAAIvG,IAAIiV,EAAOwW,GAAIxW,EAAOsmB,UAAU1oB,IAExC,OAAOtM,EAEX,eAAesM,EAAWmR,GAAQ,GAC9B,OAAO8W,GAAwBjoB,EAAWzT,KAAKulB,YAAavlB,KAAK87B,cAAcvW,YAAaX,GAEhG,UAAUnR,EAAWmR,GAAQ,GACzB,OAAO8W,GAAwBjoB,EAAWzT,KAAK6vB,OAAQ7vB,KAAK87B,cAAcjM,OAAQjL,GAEtF,iBAAiBvmB,GACb,OAAO2B,KAAKwzB,eAAe7yB,IAAItC,GAEnC,UAAUwX,GACN,OAAO7V,KAAK8a,QAAQxN,KAAMzF,GAAMA,EAAEwkB,KAAOxW,GAE7C,UAAU0U,GACN,OAAOvqB,KAAK+7B,QAAQp7B,IAAI4pB,GAE5B,eAAelsB,GACX,OAAO2B,KAAKuV,QAAQ5U,IAAItC,GAE5B,qBACI,OAAO2B,KAAKuV,QAAQiiB,OAExB,YAAY/jB,EAAWmR,GAAQ,GAC3B,OAAO8W,GAAwBjoB,EAAWzT,KAAKkb,SAAUlb,KAAK87B,cAAc5gB,SAAU0J,GAE1F,YAAYpgB,EAASwlB,GACjB,IAAK,MAAMnU,KAAU7V,KAAK8a,QACtBjF,EAAOgU,YAAYrlB,EAASwlB,GAGpC,qBAAqBvW,EAAWjP,KAAYwlB,GACxC,MAAM9O,EAAWlb,KAAKkb,SAASva,IAAI8S,GACnC,GAAKyH,EAGL,IAAK,MAAMD,KAAWC,EACdD,EAAQ4O,aACR5O,EAAQ4O,YAAYrlB,KAAYwlB,ICrGzC,MAAM,GACT,cACIhqB,KAAKs8B,UAAY,GACjBt8B,KAAKu8B,iBAAmB,IAAIl8B,EAC5BL,KAAKw8B,cAAe,EACpBx8B,KAAKy8B,QAAU,IAAI,GAAOz8B,MAC1BA,KAAK8a,QAAU,IAAI+gB,GAAQ77B,MAE/B,iBAAiB3B,EAAMmC,GACnBR,KAAKu8B,iBAAiBze,iBAAiBzf,EAAMmC,GAEjD,oBAAoBvC,EAAMy+B,GACtB18B,KAAK8a,QAAQ6hB,cAAc1+B,EAAMy+B,SAC3B18B,KAAK4c,UAEf,eAAe3e,EAAM2+B,GACjB58B,KAAK8a,QAAQ+hB,iBAAiB5+B,EAAM2+B,SAC9B58B,KAAK4c,UAEf,yBAAyB3e,EAAM6+B,GAC3B98B,KAAK8a,QAAQiiB,mBAAmB9+B,EAAM6+B,SAChC98B,KAAK4c,UAEf,uBAAuB3e,EAAM4oB,GACzB7mB,KAAK8a,QAAQkiB,iBAAiB/+B,EAAM4oB,SAC9B7mB,KAAK4c,UAEf,gBAAgB/G,GACZ7V,KAAK8a,QAAQmiB,UAAUpnB,SACjB7V,KAAK4c,UAEf,gBAAgB2N,EAAQ/lB,EAAS+nB,GAAW,GACxCvsB,KAAK8a,QAAQoiB,UAAU3S,EAAQ/lB,EAAS+nB,SAClCvsB,KAAK4c,UAEf,eAAevH,EAAOC,EAAQwG,EAAMnG,EAAauO,GAC7C,IAAIiZ,EAEAA,EADkB,oBAAX7nB,EACQ,CACXK,YAAaA,EACbuO,QAASA,EACT1O,KAAMF,EACNwG,KAAMA,GAIKxG,EAEnBtV,KAAK8a,QAAQsiB,eAAe/nB,EAAO8nB,SAC7Bn9B,KAAK4c,UAEf,cAAcve,EAAMyC,GAChBd,KAAKu8B,iBAAiBpI,cAAc91B,EAAMyC,GAE9C,MACI,OAAOd,KAAKs8B,UAEhB,QAAQ/yB,GACJ,MAAMmuB,EAAM13B,KAAK03B,MAAO75B,EAAO65B,EAAInuB,GACnC,GAAI1L,IAASA,EAAK4a,UACd,OAAO5a,EAEX65B,EAAIp2B,OAAOiI,EAAO,GAEtB,OACSvJ,KAAKw8B,eACNx8B,KAAKw8B,cAAe,GAG5B,WAAWpC,EAAO51B,GACd,OAAOxE,KAAKy8B,QAAQrzB,KAAKgxB,EAAO51B,GAEpC,oBAAoB41B,EAAO51B,EAAS+E,GAChC,OAAOvJ,KAAKy8B,QAAQrzB,KAAKgxB,EAAO51B,EAAS+E,GAE7C,eAAe6wB,EAAOiD,EAAgB9zB,GAClC,OAAOvJ,KAAKy8B,QAAQa,SAASlD,EAAOiD,EAAgB9zB,GAExD,gBACI,IAAK,MAAMg0B,KAAYv9B,KAAK03B,YAClB6F,EAAS3gB,UAGvB,oBAAoBve,EAAMmC,GACtBR,KAAKu8B,iBAAiB77B,oBAAoBrC,EAAMmC,GAEpD,UAAU6rB,EAAI/kB,EAAS9C,GACnB,OAAOxE,KAAKy8B,QAAQ77B,IAAIyrB,EAAI/kB,EAAS9C,GAEzC,cAAc6nB,EAAI/kB,EAAS+1B,EAAgB9zB,GACvC,OAAOvJ,KAAKy8B,QAAQe,QAAQnR,EAAI/kB,EAAS+1B,EAAgB9zB,GAE7D,kBAAkBjB,GACd,MAAMovB,EAAM13B,KAAK03B,MACjB,IAAKA,EAAIv2B,OACL,MAAM,IAAIW,MAAM,0FAEpB,IAAK,MAAMk5B,KAAWtD,EAClBsD,EAAQyC,gBAAgBn1B,ICnG7B,MAAM,GACT,cACItI,KAAKpC,IAAM,MACXoC,KAAKgO,aAAe,MAExB,YAAYc,GACR,IAAIrO,EACJ,MAAMuR,EAAalD,EAAMzL,MAAO+N,EAAqC,QAAzB3Q,EAAKuR,EAAWlC,WAAwB,IAAPrP,EAAgBA,EAAKqO,EAAMzL,MACxG,QAAmBxB,IAAfuP,EAAS1B,QAAkC7N,IAAfuP,EAASzB,EACrC,OAAOE,GAASuB,GAGxB,iBAAiBtC,GACb,IAAIrO,EACJ,MAAMuR,EAAalD,EAAMzL,MAAO+N,EAAqC,QAAzB3Q,EAAKuR,EAAWlC,WAAwB,IAAPrP,EAAgBA,EAAKqO,EAAMzL,MACxG,QAAmBxB,IAAfuP,EAAS1B,QAAkC7N,IAAfuP,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,EAAOvN,OAAS,EAAIqF,GAAWkI,EAAO,IAAM,EAC/CgB,EAAGd,SAASF,EAAO,GAAI,IACvBiB,EAAGf,SAASF,EAAO,GAAI,IACvBkB,EAAGhB,SAASF,EAAO,GAAI,WAEzB7M,GCpCP,MAAM,GACT,cACI7B,KAAKpC,IAAM,MACXoC,KAAKgO,aAAe,MAExB,YAAYc,GACR,IAAIrO,EACJ,MAAMuR,EAAalD,EAAMzL,MAAOq6B,EAAqC,QAAzBj9B,EAAKuR,EAAW3C,WAAwB,IAAP5O,EAAgBA,EAAKqO,EAAMzL,MACxG,QAAmBxB,IAAf67B,EAASx5B,EACT,OAAOw5B,EAGf,iBAAiB5uB,GACb,IAAIrO,EACJ,MAAMuR,EAAalD,EAAMzL,MAAOq6B,EAAqC,QAAzBj9B,EAAKuR,EAAW3C,WAAwB,IAAP5O,EAAgBA,EAAKqO,EAAMzL,MACxG,QAAmBxB,IAAf67B,EAASx5B,EACT,MAAO,CACHA,EAAGG,GAAcq5B,EAASx5B,GAC1BoK,EAAGjK,GAAcq5B,EAASpvB,GAC1BC,EAAGlK,GAAcq5B,EAASnvB,IAItC,YAAY9H,GACR,IAAKA,EAAMsH,WAAW/N,KAAKgO,cACvB,OAEJ,MAAMS,EAAQ,mEAAoEC,EAASD,EAAME,KAAKlI,GACtG,OAAOiI,EACD,CACEF,EAAGE,EAAOvN,OAAS,EAAIqF,GAAWkI,EAAO,IAAM,EAC/CH,EAAGK,SAASF,EAAO,GAAI,IACvBJ,EAAGM,SAASF,EAAO,GAAI,IACvBxK,EAAG0K,SAASF,EAAO,GAAI,UAEzB7M,GCpCP,MAAM87B,GACT,YAAYlqB,GACRzT,KAAKyT,UAAYA,EACjBzT,KAAK3B,KAAO,GCHb,MAAMu/B,GACT,YAAYnqB,GACRzT,KAAKyT,UAAYA,EACjBzT,KAAK3B,KAAO,GCCpB,MAAMw/B,GAAkB,IAAI,GAAmBC,GAAkB,IAAI,GACrEpwB,GAAgBmwB,IAChBnwB,GAAgBowB,IAChB,MAAMC,GAAc,IAAI,GACxBA,GAAYjiB,OCRL,MAAMkiB,GACT,cACIh+B,KAAK4J,OAAS,EACd5J,KAAK2L,KAAO,EAEhB,KAAKrN,GACIA,SAGauD,IAAdvD,EAAKqN,OACL3L,KAAK2L,KAAOrN,EAAKqN,WAED9J,IAAhBvD,EAAKsL,SACL5J,KAAK4J,OAAStL,EAAKsL,UCXxB,MAAM,WAAqB,GAC9B,cACI7G,QACA/C,KAAKkoB,QAAU,EACfloB,KAAKqD,MAAQ,GACbrD,KAAKmoB,MAAQ,IAAI6V,GAErB,KAAK1/B,GACIA,IAGLyE,MAAMqG,KAAK9K,QACUuD,IAAjBvD,EAAK4pB,UACLloB,KAAKkoB,QAAU5pB,EAAK4pB,SAEE,kBAAf5pB,EAAK6pB,MACZnoB,KAAKmoB,MAAMve,OAAStL,EAAK6pB,MAGzBnoB,KAAKmoB,MAAM/e,KAAK9K,EAAK6pB,SCnB1B,MAAM,GACT,cACInoB,KAAK8O,MAAQ,IAAIuV,GACjBrkB,KAAK8O,MAAMzL,MAAQ,UACnBrD,KAAKi+B,WAAY,EACjBj+B,KAAKqQ,QAAU,EACfrQ,KAAKkkB,SAAU,EACflkB,KAAKk+B,QAAS,EACdl+B,KAAKgG,KAAO,IAAI,GAEpB,KAAK1H,QACYuD,IAATvD,SAGeuD,IAAfvD,EAAKwQ,QACL9O,KAAK8O,MAAQuV,GAAatiB,OAAO/B,KAAK8O,MAAOxQ,EAAKwQ,aAE/BjN,IAAnBvD,EAAK2/B,YACLj+B,KAAKi+B,UAAY3/B,EAAK2/B,WAE1Bj+B,KAAK/B,KAAOK,EAAKL,UACI4D,IAAjBvD,EAAK+R,UACLrQ,KAAKqQ,QAAU/R,EAAK+R,cAEFxO,IAAlBvD,EAAK8G,WACLpF,KAAKoF,SAAW,QACQvD,IAApBvD,EAAK8G,SAASzD,IACd3B,KAAKoF,SAASzD,EAAI2C,GAAchG,EAAK8G,SAASzD,SAE1BE,IAApBvD,EAAK8G,SAAS3D,IACdzB,KAAKoF,SAAS3D,EAAI6C,GAAchG,EAAK8G,SAAS3D,UAGpCI,IAAdvD,EAAK0H,MACLhG,KAAKgG,KAAKoD,KAAK9K,EAAK0H,WAEHnE,IAAjBvD,EAAK4lB,UACLlkB,KAAKkkB,QAAU5lB,EAAK4lB,cAEJriB,IAAhBvD,EAAK4/B,SACLl+B,KAAKk+B,OAAS5/B,EAAK4/B,UCxCxB,MAAM,GACT,YAAYC,EAAW1qB,EAAWjP,EAASY,GACvC,IAAI3E,EAAI2F,EAAIhH,EACZY,KAAKm+B,UAAYA,EACjBn+B,KAAKyT,UAAYA,EACjBzT,KAAK8uB,gBAAkB1pB,EAAW,EAAOrD,OAAOqD,EAASzD,EAAGyD,EAAS3D,QAAKI,EACtE2C,aAAmB,GACnBxE,KAAKwE,QAAUA,GAGfxE,KAAKwE,QAAU,IAAI,GACnBxE,KAAKwE,QAAQ4E,KAAK5E,IAEtBxE,KAAKo+B,UAAW,EAChBp+B,KAAK/B,KAAO+B,KAAKwE,QAAQvG,KACzB+B,KAAKqQ,QAAUrQ,KAAKwE,QAAQ6L,QAC5BrQ,KAAKgG,KAAO3B,GAAcrE,KAAKwE,QAAQwB,KAAK3C,OAASoQ,EAAUgC,OAAOC,WACtE1V,KAAK2L,KAAO3L,KAAKgG,KAAOhG,KAAKwE,QAAQwB,KAAKkiB,QAAUzU,EAAUgC,OAAO5D,aACrE,MAAMsW,EAAQnoB,KAAKwE,QAAQwB,KAAKmiB,MAChCnoB,KAAKmoB,MAAQ,CACTve,OAAQue,EAAMve,OAAS6J,EAAUgC,OAAOC,WAAajC,EAAUgC,OAAO5D,aACtElG,KAAMwc,EAAMxc,MAEhB3L,KAAK8O,MAAuD,QAA9CrO,EAAKoO,GAAgB7O,KAAKwE,QAAQsK,cAA2B,IAAPrO,EAAgBA,EAAK,CACrF8N,EAAG,EACHD,EAAG,EACHpK,EAAG,GAEPlE,KAAKoF,SAAiG,QAArFhG,EAAqC,QAA/BgH,EAAKpG,KAAK8uB,uBAAoC,IAAP1oB,OAAgB,EAASA,EAAG2oB,cAA2B,IAAP3vB,EAAgBA,EAAKY,KAAKq+B,eAE5I,QAAQtxB,GACJ,MAAM0G,EAAYzT,KAAKyT,UAAWjP,EAAUxE,KAAKwE,QACjD,GAAIA,EAAQy5B,UAAW,CACnB,MAAMxe,EAAQhM,EAAU+L,cAAcC,MACtC,GAAIA,EAAM4C,UAAY5C,EAAM6C,aAAc,CACtC,MAAMgc,EAAYr5B,GAAYjF,KAAKoF,SAAUqa,EAAM6C,cAC/Cgc,GAAat+B,KAAKgG,OAClBhG,KAAKo+B,UAAW,QAIpBp+B,KAAKo+B,UAAW,EAEhBp+B,KAAKo+B,UAAY3e,EAAMra,WACvBpF,KAAKoF,SAASzD,EAAI8d,EAAMra,SAASzD,EACjC3B,KAAKoF,SAAS3D,EAAIge,EAAMra,SAAS3D,GAGzC,MAAMuS,EAAMjH,EAAStB,eAAe,GAAE3G,EAAE,GAAEC,EAAE,SAAEC,GAAaL,GAAa3E,KAAKoF,SAAU4O,GAAMzR,EAAI,EAAOR,OAAO+C,EAAIC,GAEnH,GADAxC,EAAEpB,OAAUnB,KAAK2L,KAAO3J,KAAKyvB,IAAIzsB,EAAU,GAAMyO,EAAUgC,OAAO5D,aAC9D7M,EAAWhF,KAAKgG,KAAO+G,EAASrB,YAAa,CAC7C,MAAM6yB,EAAoC,KAAvBxxB,EAASrB,YAAsB+H,EAAUgC,OAAOC,WAC9D1V,KAAKgG,KAAO+G,EAASrB,aAAe1G,EAAWhF,KAAKgG,KAAO+G,EAASrB,kBACzC7J,IAA3BkL,EAASyxB,eAA+BzxB,EAASyxB,cAAcr9B,OAAS,EACrEqD,EAAQ0f,QACRnX,EAASmX,WAGTnX,EAAS0xB,kBAAmB,EAC5Bz+B,KAAK0+B,uBAAuB3xB,EAAUxK,KAItCiC,EAAQ0f,UACRnX,EAAS/G,KAAK3C,OAASk7B,GAE3Bv+B,KAAK0+B,uBAAuB3xB,EAAUxK,KAEtCvC,KAAKmoB,MAAMve,QAAU,GAAK5J,KAAKgG,KAAOhG,KAAKmoB,MAAMve,UACjD5J,KAAKgG,MAAQu4B,IAEbv+B,KAAKmoB,MAAMxc,MAAQ,GAAK3L,KAAK2L,KAAO3L,KAAKmoB,MAAMxc,QAC/C3L,KAAK2L,MAAQ4yB,EAAav+B,KAAKwE,QAAQwB,KAAKkiB,QAAUzU,EAAUgC,OAAO5D,mBAI3E7R,KAAK0+B,uBAAuB3xB,EAAUxK,GAG9C,KAAKgQ,GACDA,EAAQosB,UAAU3+B,KAAKoF,SAASzD,EAAG3B,KAAKoF,SAAS3D,GACjD8Q,EAAQG,YACRH,EAAQqsB,IAAI,EAAG,EAAG5+B,KAAKgG,KAAM,EAAa,EAAVhE,KAAKsD,IAAQ,GAC7CiN,EAAQM,YACRN,EAAQY,UAAY/C,GAAgBpQ,KAAK8O,MAAO9O,KAAKqQ,SACrDkC,EAAQsC,OAEZ,SACI,MAAMia,EAAkB9uB,KAAK8uB,gBAC7B9uB,KAAKoF,SACD0pB,GAAmBrlB,GAAcqlB,EAAiB9uB,KAAKyT,UAAU8H,OAAOvV,KAAM,EAAOP,QAC/EqpB,EACA9uB,KAAKq+B,eAEnB,eACI,MAAMjO,EAAgB9pB,GAAmC,CACrDN,KAAMhG,KAAKyT,UAAU8H,OAAOvV,KAC5BZ,SAAUpF,KAAKwE,QAAQY,WAE3B,OAAO,EAAOrD,OAAOquB,EAAczuB,EAAGyuB,EAAc3uB,GAExD,uBAAuBsL,EAAUxK,GAC7B,IAAI9B,EACJ,GAAIsM,EAAS0L,UACT,OAEJ,MAAMhF,EAAYzT,KAAKyT,UAAWub,EAAavb,EAAU8H,OAAOvV,KAChE,GAAI+G,EAAS0xB,iBAAkB,CAC3B,MAAMI,EAAc14B,GAA6B,CAAEH,KAAMgpB,IACzDjiB,EAAS3H,SAAS05B,MAAMD,GACxB9xB,EAAS9F,SAAS63B,MAAM/xB,EAASoiB,iBACjCpiB,EAASyxB,mBAAgB38B,EACzBkL,EAAS0xB,kBAAmB,EAEhC,GAAIz+B,KAAKwE,QAAQ05B,OAAQ,CAMrB,QAL+Br8B,IAA3BkL,EAASyxB,gBACTzxB,EAASyxB,cAAgB,EAAOz8B,OAAO,EAAG,GAC1CgL,EAASyxB,cAAcr9B,OAAS8D,GAAY8H,EAAStB,cAAezL,KAAKoF,UACzE2H,EAASyxB,cAAct8B,MAAQoB,IAActB,KAAKsD,GAAK,GAEvDyH,EAASyxB,cAAcr9B,QAAUnB,KAAKgG,OAAShG,KAAKwE,QAAQ0f,QAAS,CACrE,MAAM6a,EAAU/8B,KAAKyB,IAAIurB,EAAW/oB,MAAO+oB,EAAW9oB,QACtD6G,EAASyxB,cAAcr9B,OAAS49B,GAA8B,GAAdz7B,IAAoB,GAAzB,QAEPzB,IAApCkL,EAASiyB,yBACTjyB,EAASiyB,uBACLjyB,EAAS9F,SAAStF,GAAK,EAAI,YAAc,qBAEjD,MAAMs9B,EAAclyB,EAASyxB,cAAcr9B,OAAQ+9B,EAAanyB,EAASyxB,cAAct8B,MAAOi9B,EAAiBpyB,EAASiyB,uBACxHjyB,EAAS9F,SAAS63B,MAAM,EAAOr5B,QAC/B,MAAM25B,EAAa,CACfz9B,EAAsB,cAAnBw9B,EAAiCn9B,KAAKW,IAAMX,KAAKY,IACpDnB,EAAsB,cAAnB09B,EAAiCn9B,KAAKY,IAAMZ,KAAKW,KAExDoK,EAAS3H,SAASzD,EAAI3B,KAAKoF,SAASzD,EAAIs9B,EAAcG,EAAWz9B,EAAEu9B,GACnEnyB,EAAS3H,SAAS3D,EAAIzB,KAAKoF,SAAS3D,EAAIw9B,EAAcG,EAAW39B,EAAEy9B,GACnEnyB,EAASyxB,cAAcr9B,QAAUoB,EAAEpB,OACnC4L,EAASyxB,cAAct8B,QACqB,QAApCzB,EAAKsM,EAAS0I,OAAOmgB,iBAA8B,IAAPn1B,EAAgBA,EAAK,GAAKgT,EAAUgC,OAAOC,WAAc,IACrGjC,EAAUgC,OAAO5D,iBAExB,CACD,MAAMwtB,EAAO,EAAO55B,OACpB45B,EAAKl+B,OAASoB,EAAEpB,OAChBk+B,EAAKn9B,MAAQK,EAAEL,MACf6K,EAAS9F,SAASq4B,MAAMD,KCjJ7B,MAAM,GACT,YAAY5rB,GACRzT,KAAKyT,UAAYA,EACjBzT,KAAK8I,MAAQ,GACb9I,KAAKm+B,UAAY,GACjBn+B,KAAKu/B,uBAAyB,GAC9B9rB,EAAU+rB,YAAeC,QAA4B59B,IAAd49B,GAAgD,kBAAdA,EACnEz/B,KAAK8I,MAAM22B,GAAa,GACxBz/B,KAAK8I,MAAMwE,KAAMzF,GAAMA,EAAE5J,OAASwhC,GACxChsB,EAAUisB,YAAc,CAACl7B,EAASY,IAAapF,KAAK0/B,YAAYl7B,EAASY,GAE7E,YAAYZ,EAASY,GACjB,MAAMu6B,EAAW,IAAI,GAAiB3/B,KAAMA,KAAKyT,UAAWjP,EAASY,GAErE,OADApF,KAAK8I,MAAMjI,KAAK8+B,GACTA,EAEX,KAAKptB,GACD,IAAK,MAAMotB,KAAY3/B,KAAK8I,MACxB62B,EAASnqB,KAAKjD,GAGtB,gBAAgBxH,GACZ,MAAM60B,EAAkB5/B,KAAKm+B,UAAW0B,EAAgB7/B,KAAKu/B,uBAC7D,GAAa,aAATx0B,EAAqB,CACrB,MAAM+0B,EAAuBzyB,GAAyBwyB,GAAgBE,EAA4C,OAAzBD,QAA0D,IAAzBA,EAAkCA,EAAuBzyB,GAAyBuyB,GAAkBI,EAAYhgC,KAAKyT,UAAU+L,cAAcC,MAAMC,cAC7Q1f,KAAK0/B,YAAYK,EAAkBC,IAG3C,aACIhgC,KAAKm+B,UAAYn+B,KAAKyT,UAAUkE,cAAcwmB,UAC9Cn+B,KAAKu/B,uBAAyBv/B,KAAKyT,UAAUkE,cAAc6H,cAAckG,MAAMyY,UAC/E32B,GAA0BxH,KAAKm+B,UAAYwB,IACvC3/B,KAAK0/B,YAAYC,KAGzB,eAAe5yB,GACX,IAAK,MAAM4yB,KAAY3/B,KAAK8I,MAExB,GADA62B,EAAS5Y,QAAQha,GACbA,EAAS0L,UACT,MAIZ,eAAeknB,GACX,MAAMp2B,EAAQvJ,KAAK8I,MAAMzH,QAAQs+B,GAC7Bp2B,GAAS,GACTvJ,KAAK8I,MAAMxH,OAAOiI,EAAO,GAGjC,SACI,IAAK,MAAMo2B,KAAY3/B,KAAK8I,MACxB62B,EAAShmB,SAGjB,OACI3Z,KAAK8I,MAAQ,ICtDrB,MAAM,GACF,cACI9I,KAAKqsB,GAAK,YAEd,UAAU5Y,GACN,OAAO,IAAI,GAAUA,GAEzB,YAAYjP,EAASlC,GACjB,IAAI7B,EAAI2F,GACHpG,KAAKq8B,YAAY73B,IAAaxE,KAAKq8B,YAAY/5B,OAGrC,OAAXA,QAA8B,IAAXA,OAAoB,EAASA,EAAO67B,aACvD35B,EAAQ25B,UAAY32B,GAA0BlF,EAAO67B,UAAYwB,IAC7D,MAAM1a,EAAM,IAAI,GAEhB,OADAA,EAAI7b,KAAKu2B,GACF1a,KAGfzgB,EAAQgb,cAAckG,MAAMyY,UAAY32B,GAA+J,QAApIpB,EAAqF,QAA/E3F,EAAgB,OAAX6B,QAA8B,IAAXA,OAAoB,EAASA,EAAOkd,qBAAkC,IAAP/e,OAAgB,EAASA,EAAGilB,aAA0B,IAAPtf,OAAgB,EAASA,EAAG+3B,UAAYwB,IACnP,MAAM1a,EAAM,IAAI,GAEhB,OADAA,EAAI7b,KAAKu2B,GACF1a,KAGf,YAAYzgB,GACR,IAAI/D,EAAI2F,EAAIhH,EACZ,IAAKoF,EACD,OAAO,EAEX,MAAM25B,EAAY35B,EAAQ25B,UAC1B,OAAIA,aAAqBx2B,QACZw2B,EAAUh9B,SAEdg9B,OAG+I,QAA7I/+B,EAA4F,QAAtFgH,EAAsC,QAAhC3F,EAAK+D,EAAQgb,qBAAkC,IAAP/e,OAAgB,EAASA,EAAGsf,cAA2B,IAAP3Z,OAAgB,EAASA,EAAG0Z,eAA4B,IAAP1gB,OAAgB,EAASA,EAAG2L,QACxLlC,GAAU,WAAYrE,EAAQgb,cAAcO,OAAOD,QAAQ/U,QAMhEhC,eAAek3B,GAAoB7a,GACtC,MAAMvP,EAAS,IAAI,SACbuP,EAAO6X,UAAUpnB,GChDpB,MAAM,GACT,KAAKvX,GACIA,SAGeuD,IAAhBvD,EAAK8L,SACLpK,KAAKoK,OAAS9F,GAAchG,EAAK8L,cAEnBvI,IAAdvD,EAAK6L,OACLnK,KAAKmK,KAAO7F,GAAchG,EAAK6L,YAEhBtI,IAAfvD,EAAK4L,QACLlK,KAAKkK,MAAQ5F,GAAchG,EAAK4L,aAEnBrI,IAAbvD,EAAK2L,MACLjK,KAAKiK,IAAM3F,GAAchG,EAAK2L,QCfnC,MAAM,WAAoB,GAC7B,cACIlH,QACA/C,KAAKqD,MAAQ,GCHd,MAAM,WAAkB,GAC3B,cACIN,QACA/C,KAAKqD,MAAQ,CAAEI,IAAK,EAAGC,IAAK,ICD7B,MAAM,GACT,cACI1D,KAAK+lB,MAAQ,EACb/lB,KAAKkH,OAAS,IAAI,GAClBlH,KAAKkgC,KAAO,IAAI,GAChBlgC,KAAKmgC,YAAa,EAEtB,KAAK7hC,GACIA,SAGcuD,IAAfvD,EAAKynB,QACL/lB,KAAK+lB,MAAQznB,EAAKynB,OAEtB/lB,KAAKkH,OAAOkC,KAAK9K,EAAK4I,QACtBlH,KAAKkgC,KAAK92B,KAAK9K,EAAK4hC,MACpBlgC,KAAK8X,UAAYtQ,GAA0BlJ,EAAKwZ,UAAYA,GACjDzN,GAAW,GAAIyN,SAEFjW,IAApBvD,EAAK6hC,aACLngC,KAAKmgC,WAAa7hC,EAAK6hC,cCrB5B,MAAM,GACT,cACIngC,KAAK+J,OAAS,IAAI,GAClB/J,KAAK+K,KAAO,OACZ/K,KAAKogC,MAAQ,IAAI,GAErB,KAAK9hC,GACIA,IAGDA,EAAKyM,OACL/K,KAAK+K,KAAOzM,EAAKyM,MAEjBzM,EAAKyL,QACL/J,KAAK+J,OAAOX,KAAK9K,EAAKyL,QAE1B/J,KAAKogC,MAAMh3B,KAAK9K,EAAK8hC,SChBtB,MAAM,GACT,YAAYhb,EAAQ3R,GAChBzT,KAAKolB,OAASA,EACdplB,KAAKyT,UAAYA,EAErB,KAAK1G,GACD,MAAM0G,EAAYzT,KAAKyT,UAAWka,EAAmB5gB,EAASvI,QAAS67B,EAAiB1S,EAAiBzJ,QACzG,IAAKmc,EACD,OAEJtzB,EAASuzB,WAAa,EACtB,MAAMC,EAAgBF,EAAet2B,OAChCgD,EAASwzB,gBACVxzB,EAASwzB,cAAgB,IAEzBA,EAAcn2B,SACd2C,EAASwzB,cAAcn2B,OAAU/F,GAAck8B,EAAcn2B,QAAUqJ,EAAU8H,OAAOvV,KAAKE,OAAU,KAEvGq6B,EAAcp2B,OACd4C,EAASwzB,cAAcp2B,KAAQ9F,GAAck8B,EAAcp2B,MAAQsJ,EAAU8H,OAAOvV,KAAKC,MAAS,KAElGs6B,EAAcr2B,QACd6C,EAASwzB,cAAcr2B,MAAS7F,GAAck8B,EAAcr2B,OAASuJ,EAAU8H,OAAOvV,KAAKC,MAAS,KAEpGs6B,EAAct2B,MACd8C,EAASwzB,cAAct2B,IAAO5F,GAAck8B,EAAct2B,KAAOwJ,EAAU8H,OAAOvV,KAAKE,OAAU,KAGzG,UAAU6G,GACN,OAAQA,EAAS0L,UAErB,YAAYjU,KAAY+F,GACf/F,EAAQ0f,UACT1f,EAAQ0f,QAAU,IAAI,IAE1B,IAAK,MAAM5hB,KAAUiI,EACjB/F,EAAQ0f,QAAQ9a,KAAgB,OAAX9G,QAA8B,IAAXA,OAAoB,EAASA,EAAO4hB,SAGpF,kBAAkBnX,EAAUwf,GACxB,GAAIA,EACA,OAEJ,MAAM8T,EAAiBtzB,EAASvI,QAAQ0f,QACpCmc,GAA0C,UAAxBA,EAAet1B,MACjC/K,KAAKogC,MAAMrzB,GAGnB,OAAOA,GACH,IAAK/M,KAAK6rB,UAAU9e,GAChB,OAEJ,MAAM3H,EAAW2H,EAAStB,cAAe1B,EAASgD,EAASwzB,cACtDx2B,SAGkBlI,IAAlBkI,EAAOK,QAAwBhF,EAAS3D,GAAKsI,EAAOK,aACpCvI,IAAhBkI,EAAOI,MAAsB/E,EAASzD,GAAKoI,EAAOI,WACjCtI,IAAjBkI,EAAOG,OAAuB9E,EAASzD,GAAKoI,EAAOG,YACpCrI,IAAfkI,EAAOE,KAAqB7E,EAAS3D,GAAKsI,EAAOE,MAClD8C,EAASmX,UAGjB,iBAAiBsc,EAAQC,GACrB,MAAMJ,EAAiBG,EAAOh8B,QAAQ0f,QACtC,IAAKmc,EACD,OAEJ,MAAMK,EAAeL,EAAeD,MAAO57B,EAAUslB,GAAqB9pB,KAAKolB,OAAQplB,KAAKyT,UAAW+sB,EAAOh8B,SAAU0C,EAAS3C,GAASm8B,EAAax5B,QACvJ1C,EAAQsK,MAAM1F,KAAK,CACf/F,MAAO,CACHyM,IAAK0wB,EAAOvvB,kBAGpBzM,EAAQuT,KAAK3O,KAAK,CACd/D,OAAQ,CACJ1D,EAAG6+B,EAAOp7B,SAASzD,EACnBF,EAAG++B,EAAOp7B,SAAS3D,EACnBsJ,KAAM,aAGoB,kBAAvBvG,EAAQwB,KAAK3C,MACpBmB,EAAQwB,KAAK3C,OAAS6D,GAGtB1C,EAAQwB,KAAK3C,MAAMI,KAAOyD,EAC1B1C,EAAQwB,KAAK3C,MAAMK,KAAOwD,GAE9B1C,EAAQ4E,KAAKq3B,GACb,MAAM92B,EAAS+2B,EAAaP,WAAa77B,IAAek8B,EAAOx6B,KAAK3C,MAAOm9B,EAAOx6B,KAAK3C,OAAS,EAAG+B,EAAW,CAC1GzD,EAAG6+B,EAAOp7B,SAASzD,EAAIsC,EAAc0F,GACrClI,EAAG++B,EAAOp7B,SAAS3D,EAAIwC,EAAc0F,IAEzC,OAAO3J,KAAKyT,UAAUqE,UAAUmb,YAAY7tB,EAAUZ,EAASg8B,EAAO7W,MAAQ5c,IAC1E,IAAItM,EACJ,QAAIsM,EAAS/G,KAAK3C,MAAQ,MAG1B0J,EAAS9F,SAAS9F,OAAS8C,EAAcK,GAAck8B,EAAOv5B,SAAS9F,OAAQ4L,EAAS9F,SAAS9F,SACjG4L,EAASuzB,YAA2C,QAA5B7/B,EAAK+/B,EAAOF,kBAA+B,IAAP7/B,EAAgBA,EAAK,GAAK,EACtFsM,EAASyf,aAAc,EACvBjkB,WAAW,KACPwE,EAASyf,aAAc,GACxB,MACI,KAGf,MAAMzf,GACF,MAAMszB,EAAiBtzB,EAASvI,QAAQ0f,QACxC,IAAKmc,EACD,OAEJ,MAAMK,EAAeL,EAAeD,MACpC,GAAIM,EAAa3a,OAAS,SACGlkB,IAAxBkL,EAASuzB,YAA4BvzB,EAASuzB,aAAeI,EAAa3a,OAC3E,OAEJ,MAAMma,EAAO37B,GAASm8B,EAAaR,MAAOS,EAAwBtzB,GAAyBqzB,EAAa5oB,WACxG,IAAK,IAAI6b,EAAI,EAAGA,EAAIuM,EAAMvM,IACtB3zB,KAAK4gC,iBAAiB7zB,EAAU4zB,ICxHrC53B,eAAe83B,GAAmBzb,SAC/BA,EAAO2X,mBAAmB,UAAYtpB,GAAc,IAAI,GAAe2R,EAAQ3R,ICDlF,MAAM,GACT,eAAerO,EAAUY,EAAM6O,GAC3B,MAAMisB,EAAgB,CAACn/B,EAAGF,KACtB,MAAMs/B,EAAIz9B,IAAc,EAAK09B,EAAQh/B,KAAKi/B,KAAMx/B,EAAIE,EAAKK,KAAKk/B,IAAI,EAAIl/B,KAAKsD,GAAKy7B,IAAKx+B,EAAIe,IACzF,OAAIf,EAAI,IACGy+B,EAEFz+B,EAAI,GACFP,KAAKsD,GAAK07B,EAEZz+B,EAAI,IACFP,KAAKsD,GAAK07B,GAGTA,GAEbp3B,EAAS,CAACjI,EAAGF,EAAGu/B,IAAWr/B,EAAIF,EAAKO,KAAKI,MAAMX,EAAIO,KAAKW,IAAIq+B,KAAW,GAAKr/B,EAAIK,KAAKY,IAAIo+B,KAAW,IAAKxyB,EAAGD,GAAK,CAACvI,EAAKC,MAAQ,EAAGD,EAAKE,OAAS,GAAIi7B,EAAcL,EAActyB,EAAGD,GAAI6yB,EAAYx3B,EAAO4E,EAAGD,EAAG4yB,GAAcE,EAAexsB,EAAOusB,EAAYp/B,KAAKI,KAAKkB,KAAe89B,EAC5R,MAAO,CACHz/B,EAAGyD,EAASzD,EAAI0/B,EAAer/B,KAAKW,IAAIw+B,GACxC1/B,EAAG2D,EAAS3D,EAAI4/B,EAAer/B,KAAKY,IAAIu+B,KCpB7C,MAAMG,GACT,cACIthC,KAAKuhC,MAAO,EAEhB,KAAKjjC,QACYuD,IAATvD,SAGeuD,IAAfvD,EAAKynB,QACL/lB,KAAK+lB,MAAQznB,EAAKynB,YAEHlkB,IAAfvD,EAAKsoB,QACL5mB,KAAK4mB,MAAQtoB,EAAKsoB,YAEA/kB,IAAlBvD,EAAK2lB,WACLjkB,KAAKikB,SAAW3lB,EAAK2lB,eAEPpiB,IAAdvD,EAAKijC,OACLvhC,KAAKuhC,KAAOjjC,EAAKijC,QCjBtB,MAAM,GACT,cACIvhC,KAAKg0B,SAAW,EAChBh0B,KAAK4mB,MAAQ,GAEjB,KAAKtoB,QACYuD,IAATvD,SAGkBuD,IAAlBvD,EAAK01B,WACLh0B,KAAKg0B,SAAW1vB,GAAchG,EAAK01B,gBAEpBnyB,IAAfvD,EAAKsoB,QACL5mB,KAAK4mB,MAAQtiB,GAAchG,EAAKsoB,UCdrC,MAAM4a,GACT,cACIxhC,KAAK+K,KAAO,UACZ/K,KAAKkG,OAAS,EACdlG,KAAKiG,MAAQ,EAEjB,KAAK3H,QACYuD,IAATvD,SAGcuD,IAAdvD,EAAKyM,OACL/K,KAAK+K,KAAOzM,EAAKyM,WAEDlJ,IAAhBvD,EAAK4H,SACLlG,KAAKkG,OAAS5H,EAAK4H,aAEJrE,IAAfvD,EAAK2H,QACLjG,KAAKiG,MAAQ3H,EAAK2H,SCbvB,MAAM,GACT,cACIjG,KAAKiqB,UAAW,EAChBjqB,KAAK6U,MAAO,EACZ7U,KAAKyhC,KAAO,IAAIH,GAChBthC,KAAKkgC,KAAO,IAAI,GAChBlgC,KAAKqV,MAAQ,SACbrV,KAAK0hC,WAAa,EAEtB,KAAKpjC,QACYuD,IAATvD,SAGkBuD,IAAlBvD,EAAK2rB,WACLjqB,KAAKiqB,SAAW3rB,EAAK2rB,eAEPpoB,IAAdvD,EAAK0H,YACanE,IAAd7B,KAAKgG,OACLhG,KAAKgG,KAAO,IAAIw7B,IAEpBxhC,KAAKgG,KAAKoD,KAAK9K,EAAK0H,YAEDnE,IAAnBvD,EAAK6G,YACLnF,KAAKmF,UAAY7G,EAAK6G,WAE1BnF,KAAK2hC,MAAQrjC,EAAKqjC,WACA9/B,IAAdvD,EAAKuW,OACL7U,KAAK6U,KAAOvW,EAAKuW,MAErB7U,KAAKyhC,KAAKr4B,KAAK9K,EAAKmjC,MACpBzhC,KAAK/B,KAAOK,EAAKL,KACjB+B,KAAK8X,UAAYtQ,GAA0BlJ,EAAKwZ,UAAYA,GACjDzN,GAAW,GAAIyN,IAE1B9X,KAAKkgC,KAAK92B,KAAK9K,EAAK4hC,WACDr+B,IAAfvD,EAAK+W,QACLrV,KAAKqV,MAAQ/W,EAAK+W,YAEAxT,IAAlBvD,EAAK8G,WACLpF,KAAKoF,SAAW,QACQvD,IAApBvD,EAAK8G,SAASzD,IACd3B,KAAKoF,SAASzD,EAAI2C,GAAchG,EAAK8G,SAASzD,SAE1BE,IAApBvD,EAAK8G,SAAS3D,IACdzB,KAAKoF,SAAS3D,EAAI6C,GAAchG,EAAK8G,SAAS3D,UAG9BI,IAApBvD,EAAKsjC,kBACmB//B,IAApB7B,KAAK4hC,aACL5hC,KAAK4hC,WAAa,IAAI,IAE1B5hC,KAAK4hC,WAAWx4B,KAAK9K,EAAKsjC,kBAEN//B,IAApBvD,EAAKojC,aACL1hC,KAAK0hC,WAAapjC,EAAKojC,cCvD5B,MAAM,GACT,YAAYtc,EAAQyc,EAAUpuB,EAAWjP,EAASY,GAC9C,IAAI3E,EAAI2F,EAAIhH,EAAIiH,EAAI7G,EAAIgU,EAAImP,EACxBwK,EACJntB,KAAK6hC,SAAWA,EAChB7hC,KAAKyT,UAAYA,EACjBzT,KAAKqlB,QAAUD,EACfplB,KAAK8hC,iBAAmB,EACxB9hC,KAAK+hC,kBAAoB,EACzB/hC,KAAKgiC,mBAAqB,EAC1BhiC,KAAKiiC,iBAAmB78B,EACpBZ,aAAmB,GACnBxE,KAAKwE,QAAUA,GAGfxE,KAAKwE,QAAU,IAAI,GACnBxE,KAAKwE,QAAQ4E,KAAK5E,IAEtBxE,KAAKkiC,YAAqF,KAAlC,QAAlCzhC,EAAKT,KAAKwE,QAAQi9B,KAAK7a,aAA0B,IAAPnmB,EAAgBA,EAAK,GAAaT,KAAKyT,UAAUgC,OAAO5D,aACxH7R,KAAKoF,SAA4C,QAAhCgB,EAAKpG,KAAKiiC,wBAAqC,IAAP77B,EAAgBA,EAAKpG,KAAKq+B,eACnFr+B,KAAK/B,KAAO+B,KAAKwE,QAAQvG,KACzB+B,KAAKmiC,OAAqD,QAA3C/iC,EAAKY,KAAKqlB,QAAQ+c,2BAAwC,IAAPhjC,OAAgB,EAASA,EAAGijC,SAASriC,KAAKwE,QAAQ6Q,OACpHrV,KAAK6U,KAAO7U,KAAKwE,QAAQqQ,KACzB7U,KAAKsiC,aAAetiC,KAAKwE,QAAQi9B,KAAKF,KACtCvhC,KAAKuiC,sBAAuB,EAC5B,IAAI5U,EAAmBtjB,GAAW,GAAIrK,KAAKwE,QAAQsT,WAC9B,OAArB6V,QAAkD,IAArBA,IAAkDA,EAAmB,IACjE,QAAhCtnB,EAAKsnB,EAAiB5V,YAAyB,IAAP1R,IAAsBsnB,EAAiB5V,KAAO,IACrC,QAAjDvY,GAAM2tB,EAAKQ,EAAiB5V,MAAM5S,iBAA8B,IAAP3F,IAAsB2tB,EAAGhoB,UAAYnF,KAAKwE,QAAQW,WACxGnF,KAAKwE,QAAQo9B,aACb5hC,KAAK4hC,WAAaxyB,GAAgBpP,KAAKwE,QAAQo9B,aAEnD5hC,KAAKo2B,SAAWp2B,KAAKwE,QAAQylB,SAC7BjqB,KAAKwiC,kBAAoB7U,EACzB3tB,KAAKgG,KAC4B,QAA5BwN,EAAKxT,KAAKwE,QAAQwB,YAAyB,IAAPwN,EAAgBA,EAAK,MACtD,MAAMxN,EAAO,IAAIw7B,GAMjB,OALAx7B,EAAKoD,KAAK,CACNlD,OAAQ,EACR6E,KAAM,UACN9E,MAAO,IAEJD,GAP+C,GAS9DhG,KAAKyiC,WAAgD,QAAlC9f,EAAK3iB,KAAKwE,QAAQi9B,KAAK1b,aAA0B,IAAPpD,EAAgBA,GAAM,EACnF3iB,KAAK0iC,UAAY1iC,KAAKyiC,YAAc,EACpCziC,KAAKqlB,QAAQ8O,cAAc,iBAAkB,CACzC1gB,YACAnV,KAAM,CACFqkC,QAAS3iC,QAGjBA,KAAK+gB,OAET,gBACI/gB,KAAKo2B,SAAU,EACfp2B,KAAK6gB,QAET,eACI7gB,KAAKo2B,SAAU,EACfp2B,KAAK+gB,OAET,cACI,GAAI/gB,KAAKwE,QAAQm9B,MAAO,CACpB,MAAMluB,EAAYzT,KAAKyT,UAAWnM,EAAUU,SAASyyB,eAAez6B,KAAKwE,QAAQm9B,OACjF,GAAIr6B,EAAS,CACT,MAAMs7B,EAASt7B,EAAQwb,wBACvB,MAAO,CACHnhB,GAAIihC,EAAOjhC,EAAIihC,EAAO38B,MAAQ,GAAKwN,EAAUgC,OAAOC,WACpDjU,GAAImhC,EAAOnhC,EAAImhC,EAAO18B,OAAS,GAAKuN,EAAUgC,OAAOC,aAIjE,OAAO1V,KAAKoF,SAEhB,UACI,MAAMqO,EAAYzT,KAAKyT,UACvB,GAAIzT,KAAKwE,QAAQm9B,MAAO,CACpB,MAAMr6B,EAAUU,SAASyyB,eAAez6B,KAAKwE,QAAQm9B,OACrD,GAAIr6B,EAAS,CACT,MAAMs7B,EAASt7B,EAAQwb,wBACvB,MAAO,CACH7c,MAAO28B,EAAO38B,MAAQwN,EAAUgC,OAAOC,WACvCxP,OAAQ08B,EAAO18B,OAASuN,EAAUgC,OAAOC,aAIrD,MAAO,CACHzP,MAA0B,YAAnBjG,KAAKgG,KAAK+E,KACV0I,EAAU8H,OAAOvV,KAAKC,MAAQjG,KAAKgG,KAAKC,MAAS,IAClDjG,KAAKgG,KAAKC,MAChBC,OAA2B,YAAnBlG,KAAKgG,KAAK+E,KACX0I,EAAU8H,OAAOvV,KAAKE,OAASlG,KAAKgG,KAAKE,OAAU,IACpDlG,KAAKgG,KAAKE,QAGxB,QACQlG,KAAKo2B,gBAGFp2B,KAAK6iC,WAEhB,OACI,IAAIpiC,EACJ,IAAIT,KAAKo2B,SAGHp2B,KAAKyT,UAAUgC,OAAO5D,eACvB7R,KAAKyiC,WAAa,GAAKziC,KAAK0iC,YAAc1iC,KAAKwE,QAAQi9B,KAAK1b,SAC5D/lB,KAAKsiC,aAAetiC,KAAKgiC,qBAAmD,QAA3BvhC,EAAKT,KAAKkiC,mBAAgC,IAAPzhC,EAAgBA,EAAK,IAF9G,CAKA,QAAwBoB,IAApB7B,KAAK6iC,WAA0B,CAC/B,MAAMjc,EAAQviB,GAAcrE,KAAKwE,QAAQ07B,KAAKtZ,OAC9C5mB,KAAK6iC,WAAc,IAAOjc,EAAS5mB,KAAKyT,UAAUgC,OAAO5D,cAEzD7R,KAAKyiC,WAAa,GAAKziC,KAAK0iC,YAC5B1iC,KAAK8iC,gBAGb,SACI,MAAMhU,EAAkB9uB,KAAKiiC,iBAC7BjiC,KAAKoF,SACD0pB,GAAmBrlB,GAAcqlB,EAAiB9uB,KAAKyT,UAAU8H,OAAOvV,KAAM,EAAOP,QAC/EqpB,EACA9uB,KAAKq+B,eAEnB,OAAO3qB,GACH,IAAIjT,EAAI2F,EAAIhH,EACRY,KAAKo2B,UAGLp2B,KAAKsiC,cACLtiC,KAAKsiC,aAAc,EACnBtiC,KAAKgiC,mBAAiD,QAA3BvhC,EAAKT,KAAKkiC,mBAAgC,IAAPzhC,EAAgBA,EAAK,EACnFT,KAAK+hC,kBAA+C,QAA1B37B,EAAKpG,KAAK6iC,kBAA+B,IAAPz8B,EAAgBA,EAAK,GAEhFpG,KAAKuiC,uBACNviC,KAAKuiC,sBAAuB,EAC5BviC,KAAK+iC,cAAc/iC,KAAKwE,QAAQk9B,kBAEb7/B,IAAnB7B,KAAKgjC,YACLhjC,KAAK8hC,kBAAoBpuB,EAAMrQ,MAC3BrD,KAAK8hC,kBAAoB9hC,KAAKgjC,YAC9BhjC,KAAK6gB,aACoBhf,IAArB7B,KAAKkiC,oBACEliC,KAAKkiC,YAEXliC,KAAK0iC,WACN1iC,KAAKyiC,aAELziC,KAAKyiC,WAAa,GAAKziC,KAAK0iC,WAC5B1iC,KAAKoF,SAAWpF,KAAKq+B,eACrBr+B,KAAKkiC,YAAqF,KAAlC,QAAlC9iC,EAAKY,KAAKwE,QAAQi9B,KAAK7a,aAA0B,IAAPxnB,EAAgBA,EAAK,GAAaY,KAAKyT,UAAUgC,OAAO5D,cAGxH7R,KAAKkkB,UAETlkB,KAAK8hC,kBAAoB9hC,KAAKgjC,iBACvBhjC,KAAKgjC,iBAGKnhC,IAArB7B,KAAKkiC,cACLliC,KAAKgiC,oBAAsBtuB,EAAMrQ,MAC7BrD,KAAKgiC,oBAAsBhiC,KAAKkiC,cAChCliC,KAAKqlB,QAAQ8O,cAAc,cAAe,CACtC1gB,UAAWzT,KAAKyT,YAEpBzT,KAAK+gB,OACL/gB,KAAKgiC,oBAAsBhiC,KAAKgiC,0BACzBhiC,KAAKkiC,mBAGIrgC,IAApB7B,KAAK6iC,aACL7iC,KAAK+hC,mBAAqBruB,EAAMrQ,MAC5BrD,KAAK+hC,mBAAqB/hC,KAAK6iC,aAC/B7iC,KAAKijC,OACLjjC,KAAK+hC,mBAAqB/hC,KAAK6iC,cAI3C,eACI,OAAOv8B,GAAmC,CACtCN,KAAMhG,KAAKyT,UAAU8H,OAAOvV,KAC5BZ,SAAUpF,KAAKwE,QAAQY,WAG/B,UACIpF,KAAK6hC,SAASqB,cAAcljC,MAC5BA,KAAKqlB,QAAQ8O,cAAc,mBAAoB,CAC3C1gB,UAAWzT,KAAKyT,UAChBnV,KAAM,CACFqkC,QAAS3iC,QAIrB,OACI,GAAIA,KAAKo2B,QACL,OAEJ,MAAMpC,EAAW3vB,GAAcrE,KAAKwE,QAAQ07B,KAAKlM,UACjDh0B,KAAK+iC,cAAc/O,GAEvB,cAAcA,GACV,IAAIvzB,EAAI2F,EAAIhH,EACZ,MAAMgG,EAAWpF,KAAKyL,cAAezF,EAAOhG,KAAKmjC,UAAWC,EAAyB/1B,GAAyBrN,KAAKwiC,mBACnH,IAAK,IAAI7O,EAAI,EAAGA,EAAIK,EAAUL,IAAK,CAC/B,MAAMhG,EAAmBtjB,GAAW,GAAI+4B,GACxC,GAAIpjC,KAAK4hC,WAAY,CACjB,MAAMyB,EAAkD,QAAlC5iC,EAAKT,KAAKwE,QAAQo9B,kBAA+B,IAAPnhC,OAAgB,EAASA,EAAGiR,UACxF2xB,IACArjC,KAAK4hC,WAAWlyB,EAAI1P,KAAK+R,kBAAkBsxB,EAAa3zB,EAAG1P,KAAK4hC,WAAWlyB,EAAG,KAC9E1P,KAAK4hC,WAAWhyB,EAAI5P,KAAK+R,kBAAkBsxB,EAAazzB,EAAG5P,KAAK4hC,WAAWhyB,EAAG,KAC9E5P,KAAK4hC,WAAWjyB,EAAI3P,KAAK+R,kBAAkBsxB,EAAa1zB,EAAG3P,KAAK4hC,WAAWjyB,EAAG,MAE7Ege,EAAiB7e,MAMlB6e,EAAiB7e,MAAMzL,MAAQrD,KAAK4hC,WALpCjU,EAAiB7e,MAAQ,CACrBzL,MAAOrD,KAAK4hC,YAOxB,IAAKx8B,EACD,OAEJ,MAAMk+B,EAA4H,QAA/GlkC,EAA4B,QAAtBgH,EAAKpG,KAAKmiC,cAA2B,IAAP/7B,OAAgB,EAASA,EAAGm9B,eAAen+B,EAAUY,EAAMhG,KAAK6U,aAA0B,IAAPzV,EAAgBA,EAAKgG,EAC/JpF,KAAKyT,UAAUqE,UAAUmb,YAAYqQ,EAAW3V,IAGxD,eACI,IAAIltB,EACJ,GAAIT,KAAKo2B,QACL,OAEJ,MAAMnS,EAAwC,QAA5BxjB,EAAKT,KAAKwE,QAAQi9B,YAAyB,IAAPhhC,OAAgB,EAASA,EAAGwjB,SAC9EjkB,KAAKyT,UAAUgC,OAAO5D,eACrB7R,KAAKyiC,WAAa,GAAKziC,KAAK0iC,iBAChB7gC,IAAboiB,GACAA,EAAW,IACXjkB,KAAKgjC,UAAuB,IAAX/e,GAGzB,kBAAkBvS,EAAW8xB,EAAWC,GACpC,IAAIhjC,EACJ,MAAMgT,EAAYzT,KAAKyT,UACvB,IAAK/B,EAAUjN,OACX,OAAO++B,EAEX,MAAME,EAAcz/B,EAAcyN,EAAU/H,QAASid,EAAQviB,GAAcrE,KAAKwE,QAAQ07B,KAAKtZ,OAAQ+c,EAAc,IAAO/c,EAASnT,EAAUgC,OAAO5D,aAAc+xB,EAAav/B,GAAyC,QAA1B5D,EAAKiR,EAAUQ,aAA0B,IAAPzR,EAAgBA,EAAK,GACrP,OAAQ+iC,EAAaI,EAAanwB,EAAUkQ,SAAYggB,EAA2B,IAAdD,GAAqBD,GC3P3F,MAAM,GACT,YAAYre,EAAQ3R,GAChBzT,KAAKyT,UAAYA,EACjBzT,KAAKqlB,QAAUD,EACfplB,KAAK8I,MAAQ,GACb9I,KAAK6hC,SAAW,GAChB7hC,KAAK6jC,sBAAwB,CACzB5gC,OAAQ,CACJ8iB,MAAO,EACPthB,QAAQ,GAEZpB,MAAO,IAEXoQ,EAAUqwB,WAAcrE,QAA4B59B,IAAd49B,GAAgD,kBAAdA,EAClEz/B,KAAK8I,MAAM22B,GAAa,GACxBz/B,KAAK8I,MAAMwE,KAAMzF,GAAMA,EAAE5J,OAASwhC,GACxChsB,EAAUswB,WAAa,CAACv/B,EAASY,IAAapF,KAAK+jC,WAAWv/B,EAASY,GACvEqO,EAAUyvB,cAAiBzD,IACvB,MAAMkD,EAAUlvB,EAAUqwB,WAAWrE,GACjCkD,GACA3iC,KAAKkjC,cAAcP,IAG3BlvB,EAAUuwB,YAAevE,IACrB,MAAMkD,EAAUlvB,EAAUqwB,WAAWrE,GACjCkD,GACAA,EAAQsB,gBAGhBxwB,EAAUywB,aAAgBzE,IACtB,MAAMkD,EAAUlvB,EAAUqwB,WAAWrE,GACjCkD,GACAA,EAAQwB,iBAIpB,WAAW3/B,EAASY,GAChB,MAAMg/B,EAAiB,IAAI,GAC3BA,EAAeh7B,KAAK5E,GACpB,MAAMm+B,EAAU,IAAI,GAAgB3iC,KAAKqlB,QAASrlB,KAAMA,KAAKyT,UAAW2wB,EAAgBh/B,GAExF,OADApF,KAAK8I,MAAMjI,KAAK8hC,GACTA,EAEX,gBAAgB53B,GACZ,MAAMq5B,EAAiBpkC,KAAK6hC,SAAUwC,EAAerkC,KAAK6jC,sBAC1D,GAAa,YAAT94B,EAAoB,CACpB,IAAIu5B,EACJ,GAAID,GAAgBA,EAAahhC,iBAAiBsE,MAC9C,GAAI08B,EAAahhC,MAAMlC,OAAS,GAAKkjC,EAAaphC,OAAOwB,OAAQ,CAC7D6/B,EAAsB,GACtB,MAAMC,EAAc,GACpB,IAAK,IAAI5Q,EAAI,EAAGA,EAAI0Q,EAAaphC,OAAO8iB,MAAO4N,IAAK,CAChD,MAAMvyB,EAAMiI,GAAiBg7B,EAAahhC,OACtCkhC,EAAYC,SAASpjC,IAAQmjC,EAAYpjC,OAASkjC,EAAahhC,MAAMlC,OACrEwyB,KAGJ4Q,EAAY1jC,KAAKO,GACjBkjC,EAAoBzjC,KAAKyI,GAAc+6B,EAAahhC,MAAOjC,WAI/DkjC,EAAsBD,EAAahhC,WAIvCihC,EAAuC,OAAjBD,QAA0C,IAAjBA,OAA0B,EAASA,EAAahhC,MAEnG,MAAMohC,EAA0C,OAAxBH,QAAwD,IAAxBA,EAAiCA,EAAsBF,EAAgBM,EAAY1kC,KAAKyT,UAAU+L,cAAcC,MAAMC,cAC9KlY,GAA0Bi9B,EAAkB9B,IACxC3iC,KAAK+jC,WAAWpB,EAAS+B,MAIrC,aAGI,GAFA1kC,KAAK6hC,SAAW7hC,KAAKyT,UAAUkE,cAAckqB,SAC7C7hC,KAAK6jC,sBAAwB7jC,KAAKyT,UAAUkE,cAAc6H,cAAckG,MAAMmc,SAC1E7hC,KAAK6hC,oBAAoBl6B,MACzB,IAAK,MAAMy8B,KAAkBpkC,KAAK6hC,SAC9B7hC,KAAK+jC,WAAWK,QAIpBpkC,KAAK+jC,WAAW/jC,KAAK6hC,UAG7B,QACI,IAAK,MAAMc,KAAW3iC,KAAK8I,MACvB65B,EAAQ9hB,QAGhB,OACI,IAAK,MAAM8hB,KAAW3iC,KAAK8I,MACvB65B,EAAQ5hB,OAGhB,cAAc4hB,GACV,MAAMp5B,EAAQvJ,KAAK8I,MAAMzH,QAAQshC,GAC7Bp5B,GAAS,GACTvJ,KAAK8I,MAAMxH,OAAOiI,EAAO,GAGjC,SACI,IAAK,MAAMo5B,KAAW3iC,KAAK8I,MACvB65B,EAAQhpB,SAGhB,OACI3Z,KAAK8I,MAAQ,GAEjB,OAAO4K,GACH,IAAK,MAAMivB,KAAW3iC,KAAK8I,MACvB65B,EAAQrP,OAAO5f,ICnH3B,MAAM,GAAS,IAAInT,IACZ,MAAMokC,GACT,YAAYvf,GACRplB,KAAKqlB,QAAUD,EAEnB,SAASnnB,EAAMqX,GACNtV,KAAKqiC,SAASpkC,IACf,GAAO2C,IAAI3C,EAAMqX,GAGzB,SAASrX,GACL,OAAO,GAAO0C,IAAI1C,GAEtB,qBACI,OAAO,GAAOu5B,QCbtB,SAASoN,GAAuBx/B,EAAUuE,GACtC,OAAOvE,EAAWuE,GAAUrG,IAAc,IAEvC,MAAM,GACT,eAAe8B,EAAUY,EAAM6O,GAC3B,GAAIA,EACA,MAAO,CACHlT,EAAGijC,GAAuBx/B,EAASzD,EAAGqE,EAAKC,OAC3CxE,EAAGmjC,GAAuBx/B,EAAS3D,EAAGuE,EAAKE,SAG9C,CACD,MAAM2+B,EAAQ7+B,EAAKC,MAAQ,EAAG6+B,EAAQ9+B,EAAKE,OAAS,EAAG6+B,EAAO/iC,KAAKgC,MAAoB,EAAdV,KAAkBf,EAA0B,GAArBe,IAAc,IAC9G,OAAQyhC,GACJ,KAAK,EACD,MAAO,CACHpjC,EAAGyD,EAASzD,EAAIY,EAAIsiC,EACpBpjC,EAAG2D,EAAS3D,EAAIqjC,GAExB,KAAK,EACD,MAAO,CACHnjC,EAAGyD,EAASzD,EAAIkjC,EAChBpjC,EAAG2D,EAAS3D,EAAIc,EAAIuiC,GAE5B,KAAK,EACD,MAAO,CACHnjC,EAAGyD,EAASzD,EAAIY,EAAIsiC,EACpBpjC,EAAG2D,EAAS3D,EAAIqjC,GAExB,KAAK,EACL,QACI,MAAO,CACHnjC,EAAGyD,EAASzD,EAAIkjC,EAChBpjC,EAAG2D,EAAS3D,EAAIc,EAAIuiC,MC5B5C,MAAM,GACF,YAAY1f,GACRplB,KAAKqlB,QAAUD,EACfplB,KAAKqsB,GAAK,WAEd,UAAU5Y,GACN,OAAO,IAAI,GAASzT,KAAKqlB,QAAS5R,GAEtC,YAAYjP,EAASlC,GACjB,IAAI7B,EAAI2F,EAAIhH,EAAIiH,EAAI7G,EAAIgU,EACxB,IAAKxT,KAAKq8B,YAAY73B,KAAaxE,KAAKq8B,YAAY/5B,GAChD,QAEW,OAAXA,QAA8B,IAAXA,OAAoB,EAASA,EAAOu/B,YACvDr9B,EAAQq9B,SAAWr6B,GAA0BlF,EAAOu/B,SAAWc,IAC3D,MAAM1d,EAAM,IAAI,GAEhB,OADAA,EAAI7b,KAAKu5B,GACF1d,KAGf,MAAM4e,EAA6J,QAApIz9B,EAAqF,QAA/E3F,EAAgB,OAAX6B,QAA8B,IAAXA,OAAoB,EAASA,EAAOkd,qBAAkC,IAAP/e,OAAgB,EAASA,EAAGilB,aAA0B,IAAPtf,OAAgB,EAASA,EAAGy7B,SACvM,GAAIgC,EACA,GAAIA,aAAiCl8B,MACjCnD,EAAQgb,cAAckG,MAAMmc,SAAW,CACnC5+B,OAAQ,CACJ8iB,MAAO,EACPthB,QAAQ,GAEZpB,MAAOwgC,EAAsBh5B,IAAK+E,IAC9B,MAAMqV,EAAM,IAAI,GAEhB,OADAA,EAAI7b,KAAKwG,GACFqV,SAId,CACD,MAAM+f,EAAcnB,EACpB,QAA0BhiC,IAAtBmjC,EAAY3hC,MACZ,GAAI2hC,EAAY3hC,iBAAiBsE,MAC7BnD,EAAQgb,cAAckG,MAAMmc,SAAW,CACnC5+B,OAAQ,CACJ8iB,MAA2C,QAAnC3mB,EAAK4lC,EAAY/hC,OAAO8iB,aAA0B,IAAP3mB,EAAgBA,EAAK,EACxEqF,OAA6C,QAApC4B,EAAK2+B,EAAY/hC,OAAOwB,cAA2B,IAAP4B,GAAgBA,GAEzEhD,MAAO2hC,EAAY3hC,MAAMwH,IAAK+E,IAC1B,MAAMqV,EAAM,IAAI,GAEhB,OADAA,EAAI7b,KAAKwG,GACFqV,SAId,CACD,MAAMA,EAAM,IAAI,GAChBA,EAAI7b,KAAK47B,EAAY3hC,OACrBmB,EAAQgb,cAAckG,MAAMmc,SAAW,CACnC5+B,OAAQ,CACJ8iB,MAA2C,QAAnCvmB,EAAKwlC,EAAY/hC,OAAO8iB,aAA0B,IAAPvmB,EAAgBA,EAAK,EACxEiF,OAA6C,QAApC+O,EAAKwxB,EAAY/hC,OAAOwB,cAA2B,IAAP+O,GAAgBA,GAEzEnQ,MAAO4hB,OAId,CACD,MAAMmf,EAAkB5/B,EAAQgb,cAAckG,MAAMmc,SAAW,CAC3D5+B,OAAQ,CACJ8iB,MAAO,EACPthB,QAAQ,GAEZpB,MAAO,IAAI,IAEf+gC,EAAe/gC,MAAM+F,KAAKy6B,KAK1C,YAAYr/B,GACR,IAAI/D,EAAI2F,EAAIhH,EACZ,IAAKoF,EACD,OAAO,EAEX,MAAMq9B,EAAWr9B,EAAQq9B,SACzB,OAASA,aAAoBl6B,SAAWk6B,EAAS1gC,aAChCU,IAAbggC,MACkJ,QAA7IziC,EAA4F,QAAtFgH,EAAsC,QAAhC3F,EAAK+D,EAAQgb,qBAAkC,IAAP/e,OAAgB,EAASA,EAAGsf,cAA2B,IAAP3Z,OAAgB,EAASA,EAAG0Z,eAA4B,IAAP1gB,OAAgB,EAASA,EAAG2L,OAClLlC,GAAU,UAAWrE,EAAQgb,cAAcO,OAAOD,QAAQ/U,OAGnEhC,eAAek8B,GAAmB7f,GAChCA,EAAOgd,sBACRhd,EAAOgd,oBAAsB,IAAIuC,GAAavf,IAE7CA,EAAO8f,kBACR9f,EAAO8f,gBAAkB,CAACjnC,EAAMoX,KAC5B,IAAI5U,EACkC,QAArCA,EAAK2kB,EAAOgd,2BAAwC,IAAP3hC,GAAyBA,EAAG0kC,SAASlnC,EAAMoX,KAGjG,MAAMQ,EAAS,IAAI,GAAeuP,SAC5BA,EAAO6X,UAAUpnB,GACvBuP,EAAO8f,gBAAgB,SAAU,IAAI,IACrC9f,EAAO8f,gBAAgB,SAAU,IAAI,IC1GlC,MAAM,GACT,cACIllC,KAAK4mB,MAAQ,EACb5mB,KAAKolC,aAAc,EACnBplC,KAAKg0B,SAAW,EAEpB,KAAK11B,GACIA,SAGcuD,IAAfvD,EAAKsoB,QACL5mB,KAAK4mB,MAAQtoB,EAAKsoB,YAEA/kB,IAAlBvD,EAAK01B,WACLh0B,KAAKg0B,SAAW11B,EAAK01B,eAEFnyB,IAAnBvD,EAAKwZ,YACL9X,KAAK8X,UAAYzN,GAAW,GAAI/L,EAAKwZ,iBAEhBjW,IAArBvD,EAAK8mC,cACLplC,KAAKolC,YAAc9mC,EAAK8mC,eCnB7B,MAAM,WAAmBzH,GAC5B,YAAYlqB,GACR1Q,MAAM0Q,GACNzT,KAAKk2B,OAAS,EAElB,SAEA,QAEA,eAAexiB,GACX,IAAIjT,EAAI2F,EAAIhH,EAAIiH,EAChB,IAAKrG,KAAKyT,UAAUgC,OAAO5D,aACvB,OAEJ,MAAM4B,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cAAe0tB,EAAe7gC,EAAQgb,cAAckG,MAAM7N,MAChH,IAAKwtB,EACD,OAEJ,MAAMC,EAAiC,IAArBD,EAAaze,MAAgB5mB,KAAKyT,UAAUgC,OAAO5D,aAIrE,GAHI7R,KAAKk2B,OAASoP,IACdtlC,KAAKk2B,QAAUxiB,EAAMrQ,OAErBrD,KAAKk2B,OAASoP,EACd,OAEJ,IAAIC,GAAU,EACVF,EAAaD,cACT3xB,EAAU+L,cAAcC,MAAMra,WAAapF,KAAKwlC,gBACI,QAAjD/kC,EAAKgT,EAAU+L,cAAcC,MAAMra,gBAA6B,IAAP3E,OAAgB,EAASA,EAAGkB,MAAsC,QAA7ByE,EAAKpG,KAAKwlC,qBAAkC,IAAPp/B,OAAgB,EAASA,EAAGzE,KAC3G,QAAjDvC,EAAKqU,EAAU+L,cAAcC,MAAMra,gBAA6B,IAAPhG,OAAgB,EAASA,EAAGqC,MAAsC,QAA7B4E,EAAKrG,KAAKwlC,qBAAkC,IAAPn/B,OAAgB,EAASA,EAAG5E,MACrK8jC,GAAU,GAGd9xB,EAAU+L,cAAcC,MAAMra,SAC9BpF,KAAKwlC,cAAgB,CACjB7jC,EAAG8R,EAAU+L,cAAcC,MAAMra,SAASzD,EAC1CF,EAAGgS,EAAU+L,cAAcC,MAAMra,SAAS3D,UAIvCzB,KAAKwlC,cAEZD,GACA9xB,EAAUqE,UAAUjX,KAAKwkC,EAAarR,SAAUvgB,EAAU+L,cAAcC,MAAO4lB,EAAavtB,WAEhG9X,KAAKk2B,QAAUoP,EAEnB,UAAUv4B,GACN,IAAItM,EACJ,MAAMgT,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cAAe8H,EAAQhM,EAAU+L,cAAcC,MAAOM,GAAgG,QAArFtf,EAAkB,OAAbsM,QAAkC,IAAbA,OAAsB,EAASA,EAASyS,qBAAkC,IAAP/e,EAAgBA,EAAK+D,EAAQgb,eAAeO,OAChQ,OAASN,EAAM4C,UAAY5C,EAAMzV,UAAYyV,EAAMra,UAAYyD,GAAU,QAASkX,EAAOD,QAAQ/U,OAC5F0U,EAAMzV,UAAYyV,EAAMra,UAAYyD,GAAU,QAASkX,EAAO8B,QAAQ9W,MAE/E,gBAAgBvG,KAAY+F,GACnB/F,EAAQqT,QACTrT,EAAQqT,MAAQ,IAAI,IAExB,IAAK,MAAMvV,KAAUiI,EACjB/F,EAAQqT,MAAMzO,KAAgB,OAAX9G,QAA8B,IAAXA,OAAoB,EAASA,EAAOuV,OAGlF,UC9DG9O,eAAe08B,GAA6BrgB,SACzCA,EAAOuX,cAAc,gBAAkBlpB,GAAc,IAAI,GAAWA,ICDvE,MAAM,GACT,cACIzT,KAAKyE,QAAS,EACdzE,KAAKqD,MAAQ,EAEjB,KAAK/E,GACIA,SAGeuD,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,aAEJ5C,IAAfvD,EAAK+E,QACLrD,KAAKqD,MAAQiB,GAAchG,EAAK+E,UCZrC,MAAM,GACT,cACIrD,KAAK0lC,OAAS,IAAI,GAClB1lC,KAAKyE,QAAS,EACdzE,KAAK2lC,UAAY,IAAI,GACrB3lC,KAAK+K,KAAO,WACZ/K,KAAKkS,MAAQ,GAEjB,KAAK5T,GACIA,SAGkBuD,IAAnBvD,EAAKuuB,YACL7sB,KAAK6sB,UAAYxI,GAAatiB,OAAO/B,KAAK6sB,UAAWvuB,EAAKuuB,YAE9D7sB,KAAK0lC,OAAOt8B,KAAK9K,EAAKonC,aACF7jC,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,QAEvBzE,KAAK2lC,UAAUv8B,KAAK9K,EAAKqnC,gBACP9jC,IAAdvD,EAAKyM,OACL/K,KAAK+K,KAAOzM,EAAKyM,WAEFlJ,IAAfvD,EAAK4T,QACLlS,KAAKkS,MAAQ5N,GAAchG,EAAK4T,UCxB5C,SAAS0zB,GAAW74B,EAAU2G,GAC1B,MAAMkZ,EAAO7f,EAASvI,QAAQooB,KAC9B,IAAK7f,EAAS6f,QAAmB,OAATA,QAA0B,IAATA,OAAkB,EAASA,EAAKnoB,QACrE,OAEJ,MAAMyN,EAAQnF,EAAS6f,KAAK1a,MAAQwB,EAAMxM,OAAQxD,EAAM,EAAI1B,KAAKsD,GACjEyH,EAAS6f,KAAK1qB,OAASgQ,EACnBnF,EAAS6f,KAAK1qB,MAAQwB,IACtBqJ,EAAS6f,KAAK1qB,OAASwB,GAGxB,MAAM,GACT,mBAAmBqJ,GACf,IAAItM,EACJ,MAAMmsB,GAAiC,QAAxBnsB,EAAKsM,EAAS6f,YAAyB,IAAPnsB,OAAgB,EAASA,EAAGgE,SAAWsI,EAAS6f,KAAMiZ,EAAiBjZ,GAAQA,EAAK9gB,WAAYg6B,EAAelZ,GAAQA,EAAK7gB,SAC3K,MAAO,CACHyC,EAAGq3B,EAAiB7jC,KAAKW,IAAIiqB,EAAK1qB,YAASL,EAC3CwS,EAAGyxB,EAAe9jC,KAAKY,IAAIgqB,EAAK1qB,YAASL,GAGjD,KAAKkL,GACD,MAAMg5B,EAAUh5B,EAASvI,QAAQooB,KACjC,GAAgB,OAAZmZ,QAAgC,IAAZA,OAAqB,EAASA,EAAQthC,OAQ1D,GAPAsI,EAAS6f,KAAO,CACZnoB,OAAQshC,EAAQthC,OAChBqH,WAA6B,eAAjBi6B,EAAQh7B,MAA0C,SAAjBg7B,EAAQh7B,KACrDgB,SAA2B,aAAjBg6B,EAAQh7B,MAAwC,SAAjBg7B,EAAQh7B,KACjD7I,MAAOoB,IAActB,KAAKsD,GAAK,EAC/B4M,MAAO7N,GAAc0hC,EAAQ7zB,OAAS,KAEtC6zB,EAAQlZ,UACR9f,EAAS8f,UAAYzd,GAAgB22B,EAAQlZ,gBAE5C,GAAIkZ,EAAQL,OAAOjhC,QAAUshC,EAAQJ,UAAUlhC,OAAQ,CACxD,MAAMuhC,EAAY1iC,KAAe,GAAM,SAAW,YAClDyJ,EAAS6f,KAAKE,MAAQ,CAClBzuB,KAAM2nC,EACN3iC,MAAOgB,GAA4B,WAAd2hC,EAAyBD,EAAQL,OAAOriC,MAAQ0iC,EAAQJ,UAAUtiC,aAGtF0iC,EAAQL,OAAOjhC,OACpBsI,EAAS6f,KAAKE,MAAQ,CAClBzuB,KAAM,SACNgF,MAAOgB,GAAc0hC,EAAQL,OAAOriC,QAGnC0iC,EAAQJ,UAAUlhC,SACvBsI,EAAS6f,KAAKE,MAAQ,CAClBzuB,KAAM,YACNgF,MAAOgB,GAAc0hC,EAAQJ,UAAUtiC,cAK/C0J,EAAS6f,KAAO,CACZnoB,QAAQ,EACRqH,YAAY,EACZC,UAAU,EACV7J,MAAO,EACPgQ,MAAO,GAInB,UAAUnF,GACN,MAAM6f,EAAO7f,EAASvI,QAAQooB,KAC9B,OAAQ7f,EAAS0L,YAAc1L,EAASyL,aAAwB,OAAToU,QAA0B,IAATA,OAAkB,EAASA,EAAKnoB,QAE5G,YAAYD,KAAY+F,GACf/F,EAAQooB,OACTpoB,EAAQooB,KAAO,IAAI,IAEvB,IAAK,MAAMtqB,KAAUiI,EACjB/F,EAAQooB,KAAKxjB,KAAgB,OAAX9G,QAA8B,IAAXA,OAAoB,EAASA,EAAOsqB,MAGjF,OAAO7f,EAAU2G,GACR1T,KAAK6rB,UAAU9e,IAGpB64B,GAAW74B,EAAU2G,IChFtB3K,eAAek9B,GAAgB7gB,SAC5BA,EAAO2X,mBAAmB,OAAQ,IAAM,IAAI,ICFtD,MAAMmJ,GAAW9gB,IACb,MAAM+gB,EAAc,CAAC/L,EAAO51B,IACjB4gB,EAAOhc,KAAKgxB,EAAO51B,GAE9B2hC,EAAY/8B,KAAO,CAACgxB,EAAOiD,EAAgB/0B,KACvC8c,EACKkY,SAASlD,EAAOiD,GAChB+I,KAAM3yB,IACHA,GACAnL,EAASmL,KAGZ4yB,MAAM,KACP/9B,OAASzG,MAGjBskC,EAAYG,kBAAqBh+B,IAC7B8c,EAAOkhB,kBAAkBh+B,IAE7B,MAAMi+B,EAASnhB,EAAOsS,MACtB,MAAO,CAAEyO,cAAaI,WCnBnB,MAAM,GACT,cACIvmC,KAAKyE,QAAS,EACdzE,KAAKkS,MAAQ,EACblS,KAAKmS,MAAQ,EACbnS,KAAKqS,MAAO,EAEhB,KAAK/T,GACIA,SAGeuD,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,aAEJ5C,IAAfvD,EAAK4T,QACLlS,KAAKkS,MAAQ5N,GAAchG,EAAK4T,aAEjBrQ,IAAfvD,EAAK6T,QACLnS,KAAKmS,MAAQ7N,GAAchG,EAAK6T,aAElBtQ,IAAdvD,EAAK+T,OACLrS,KAAKqS,KAAO/T,EAAK+T,QCpBtB,MAAM,WAAe,GACxB,cACItP,QACA/C,KAAK0R,UAAY,IAAI,GACrB1R,KAAKmF,UAAY,YACjBnF,KAAKknB,MAAO,EACZlnB,KAAKqD,MAAQ,EAEjB,KAAK/E,GACIA,IAGLyE,MAAMqG,KAAK9K,QACYuD,IAAnBvD,EAAK6G,YACLnF,KAAKmF,UAAY7G,EAAK6G,WAE1BnF,KAAK0R,UAAUtI,KAAK9K,EAAKoT,gBACP7P,IAAdvD,EAAK4oB,OACLlnB,KAAKknB,KAAO5oB,EAAK4oB,QClB7B,SAASsf,GAAYz5B,EAAU2G,GAC3B,IAAIjT,EAAI2F,EACR,MAAMsG,EAASK,EAASL,OAAQ+5B,EAAgB15B,EAASvI,QAAQkI,OACjE,IAAKA,IAAW+5B,EACZ,OAEJ,MAAMC,EAAkBD,EAAc/0B,UAAWQ,GAAoC,QAA1BzR,EAAKiM,EAAOzF,gBAA6B,IAAPxG,EAAgBA,EAAK,GAAKiT,EAAMxM,OAAQxD,EAAM,EAAI1B,KAAKsD,GAAI6M,EAAgC,QAAvB/L,EAAKsG,EAAOyF,aAA0B,IAAP/L,EAAgBA,EAAK,EACrN,GAAKsgC,EAAgBjiC,OAArB,CAGA,OAAQiI,EAAO0F,QACX,KAAK,EACD1F,EAAOrJ,OAAS6O,EACZxF,EAAOrJ,MAAQK,IACfgJ,EAAOrJ,OAASK,GAEpB,MACJ,KAAK,EACL,QACIgJ,EAAOrJ,OAAS6O,EACZxF,EAAOrJ,MAAQ,IACfqJ,EAAOrJ,OAASK,GAEpB,MAEJgJ,EAAOzF,UAAsB,IAAVkL,IACnBzF,EAAOzF,UAAYkL,IAGpB,MAAM,GACT,YAAYsB,GACRzT,KAAKyT,UAAYA,EAErB,KAAK1G,GACD,MAAM05B,EAAgB15B,EAASvI,QAAQkI,OACvC,IAAK+5B,EACD,OAEJ15B,EAASL,OAAS,CACdjI,OAAQgiC,EAAc/0B,UAAUjN,OAChCpB,MAAQgB,GAAcoiC,EAAcpjC,OAASrB,KAAKsD,GAAM,KAE5DyH,EAASmH,aAAeuyB,EAAcvf,KACtC,IAAIyf,EAAkBF,EAActhC,UACpC,GAAwB,WAApBwhC,EAA8B,CAC9B,MAAMp9B,EAAQvH,KAAKgC,MAAoB,EAAdV,KACzBqjC,EAAkBp9B,EAAQ,EAAI,oBAAsB,YAExD,OAAQo9B,GACJ,IAAK,oBACL,IAAK,mBACD55B,EAASL,OAAO0F,OAAS,EACzB,MACJ,IAAK,YACDrF,EAASL,OAAO0F,OAAS,EACzB,MAER,MAAMs0B,EAAkBD,EAAc/0B,UAClCg1B,EAAgBjiC,SAChBsI,EAASL,OAAOyF,MAAQ,EAAI9N,GAAcqiC,EAAgBv0B,OAC1DpF,EAASL,OAAOzF,SACX5C,GAAcqiC,EAAgBx0B,OAAS,IAAOlS,KAAKyT,UAAUgC,OAAO5D,aACpE60B,EAAgBr0B,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,EAAOwa,MAE3F,YAAY1iB,KAAY+F,GACf/F,EAAQkI,SACTlI,EAAQkI,OAAS,IAAI,IAEzB,IAAK,MAAMpK,KAAUiI,EACjB/F,EAAQkI,OAAOtD,KAAgB,OAAX9G,QAA8B,IAAXA,OAAoB,EAASA,EAAOoK,QAGnF,OAAOK,EAAU2G,GACb,IAAIjT,EAAI2F,EACHpG,KAAK6rB,UAAU9e,KAGpBy5B,GAAYz5B,EAAU2G,GACtB3G,EAASkH,SAA2F,QAA/E7N,EAAgC,QAA1B3F,EAAKsM,EAASL,cAA2B,IAAPjM,OAAgB,EAASA,EAAG4C,aAA0B,IAAP+C,EAAgBA,EAAK,IC1FlI2C,eAAe69B,GAAiBxhB,SAC7BA,EAAO2X,mBAAmB,SAAWtpB,GAAc,IAAI,GAAcA,ICDxE,SAASozB,GAAc95B,GAC1B,MAAM+hB,EAAkB/hB,EAAS+hB,iBAAiB,GAAEhqB,EAAE,GAAEC,GAAOJ,GAAamqB,EAAiB/hB,EAAS3H,UAAW0hC,EAAU9kC,KAAKovB,IAAItsB,GAAKiiC,EAAU/kC,KAAKovB,IAAIrsB,GAAKiiC,EAAYj6B,EAAS0I,OAAO8X,YAAYzhB,WAAYm7B,EAAYl6B,EAAS0I,OAAO8X,YAAYxhB,SAC7P,GAAKi7B,GAAcC,EAGnB,IAAMD,GAAaF,GAAWE,GAAeC,GAAaF,GAAWE,KAAgBl6B,EAASugB,UAC1FvgB,EAASugB,YAAe0Z,GAAaF,EAAUE,KAAiBC,GAAaF,EAAUE,EACnFD,IACAj6B,EAAS9F,SAAStF,EAAIoL,EAAS9F,SAASxF,EAAI,EAAIsL,EAAS9F,SAAStF,GAElEslC,IACAl6B,EAAS9F,SAASxF,EAAIsL,EAAS9F,SAAStF,EAAI,EAAIoL,EAAS9F,SAASxF,QAGrE,KAAMulC,GAAaF,EAAUE,MAAgBC,GAAaF,EAAUE,IAAcl6B,EAASugB,UAC5FvgB,EAASugB,WAAY,OAEpB,GAAIvgB,EAASugB,UAAW,CACzB,MAAMtZ,EAAMjH,EAAS3H,SAAU8hC,EAAMn6B,EAAS9F,SAC1C+/B,IAAehzB,EAAIrS,EAAImtB,EAAgBntB,GAAKulC,EAAIvlC,EAAI,GAAOqS,EAAIrS,EAAImtB,EAAgBntB,GAAKulC,EAAIvlC,EAAI,KAChGulC,EAAIvlC,IAAM2B,KAEV2jC,IAAejzB,EAAIvS,EAAIqtB,EAAgBrtB,GAAKylC,EAAIzlC,EAAI,GAAOuS,EAAIvS,EAAIqtB,EAAgBrtB,GAAKylC,EAAIzlC,EAAI,KAChGylC,EAAIzlC,IAAM6B,MAIf,SAAS8jB,GAAKra,EAAU6oB,GAC3B,MAAMniB,EAAY1G,EAAS0G,UAC3B,IAAK1G,EAASqa,KACV,OAEJ,MAAMgY,EAAa,CACfz9B,EAA+B,cAA5BoL,EAASqa,KAAKjiB,UAA4BnD,KAAKW,IAAMX,KAAKY,IAC7DnB,EAA+B,cAA5BsL,EAASqa,KAAKjiB,UAA4BnD,KAAKY,IAAMZ,KAAKW,KAEjEoK,EAAS3H,SAASzD,EAAIoL,EAASqa,KAAK/hB,OAAO1D,EAAIoL,EAASqa,KAAKxd,OAASw1B,EAAWz9B,EAAEoL,EAASqa,KAAKllB,OACjG6K,EAAS3H,SAAS3D,EAAIsL,EAASqa,KAAK/hB,OAAO5D,EAAIsL,EAASqa,KAAKxd,OAASw1B,EAAW39B,EAAEsL,EAASqa,KAAKllB,OACjG6K,EAASqa,KAAKxd,QAAUmD,EAASqa,KAAKX,aACtC,MAAM0gB,EAAgBnlC,KAAK0B,IAAI+P,EAAU8H,OAAOvV,KAAKC,MAAOwN,EAAU8H,OAAOvV,KAAKE,QAC9E6G,EAASqa,KAAKxd,OAASu9B,EAAgB,GACvCp6B,EAASqa,KAAKxd,OAASu9B,EAAgB,EACvCp6B,EAASqa,KAAKX,eAAiB,GAE1B1Z,EAASqa,KAAKxd,OAAS,IAC5BmD,EAASqa,KAAKxd,OAAS,EACvBmD,EAASqa,KAAKX,eAAiB,GAEnC1Z,EAASqa,KAAKllB,OAAU0zB,EAAY,KAAQ,EAAI7oB,EAASqa,KAAKxd,OAASu9B,GAEpE,SAASC,GAAUr6B,EAAU2G,GAChC,IAAIjT,EACJ,MAAMktB,EAAmB5gB,EAASvI,QAASypB,EAAcN,EAAiB5V,KAAKmP,KAAMmgB,EAAcpZ,EAAYxpB,OAC/G,IAAK4iC,EACD,OAEJ,GAAIt6B,EAASsgB,cAAgBtgB,EAASmhB,UAElC,YADAnhB,EAASsgB,cAAgB3Z,EAAMrQ,OAGnC,MAAM6jB,EAAyC,QAAjCzmB,EAAKsM,EAASohB,qBAAkC,IAAP1tB,OAAgB,EAASA,EAAGw1B,SAASlpB,GACxFma,GACAna,EAAS9F,SAASq4B,MAAMpY,GAExB+G,EAAY1qB,QACZwJ,EAAS9F,SAAStF,EAAI4B,EAAMwJ,EAAS9F,SAAStF,GAAI,EAAG,GACrDoL,EAAS9F,SAASxF,EAAI8B,EAAMwJ,EAAS9F,SAASxF,GAAI,EAAG,IAEzDsL,EAASsgB,cAAgBtgB,EAASmhB,UAE/B,SAASoZ,GAAwBv6B,GACpC,OAAOA,EAAS2f,KAAKD,QAAU1f,EAAS2f,KAAKxlB,OAAS,ECtEnD,MAAM,GACT,KAAK6F,GACD,IAAItM,EACJ,MAAMgT,EAAY1G,EAAS0G,UAAWjP,EAAUuI,EAASvI,QAAS+iC,EAAiB/iC,EAAQuT,KAAKkP,QAASugB,EAAchjC,EAAQuT,KAAKqP,KAMpI,GALAra,EAASka,QAAU,CACfxiB,OAAQ8iC,EAAe9iC,OACvBgiB,aAAcpiB,GAAckjC,EAAe9gB,cAC3CC,QAAS6gB,EAAe7gB,SAExB8gB,EAAY/iC,OAAQ,CACpB,MAAMgjC,EAA0C,QAA/BhnC,EAAK+mC,EAAYpiC,gBAA6B,IAAP3E,EAAgBA,EAAK,CAAEkB,EAAG,GAAIF,EAAG,IAAMimC,EAAa,CACxG/lC,EAAI8lC,EAAQ9lC,EAAI,IAAO8R,EAAU8H,OAAOvV,KAAKC,MAC7CxE,EAAIgmC,EAAQhmC,EAAI,IAAOgS,EAAU8H,OAAOvV,KAAKE,QAC9C8N,EAAMjH,EAAStB,cAAezG,EAAWC,GAAY+O,EAAK0zB,GAAaC,EAAmBtjC,GAAcmjC,EAAY/gB,cACvH1Z,EAAS0I,OAAOkyB,iBAAmBA,EAAmBl0B,EAAUgC,OAAOC,WACvE3I,EAASqa,KAAO,CACZ/hB,OAAQqiC,EACRviC,UAAW4H,EAAS9F,SAAStF,GAAK,EAAI,YAAc,oBACpDO,MAAO6K,EAAS9F,SAAS/E,MACzB0H,OAAQ5E,EACRyhB,aAAc1Z,EAAS0I,OAAOkyB,mBAI1C,UAAU56B,GACN,OAAQA,EAAS0L,WAAa1L,EAASvI,QAAQuT,KAAKtT,OAExD,KAAKsI,EAAU2G,GACX,IAAIjT,EAAI2F,EAAIhH,EACRiH,EAAI7G,EACR,MAAMY,EAAkB2M,EAASvI,QAASgsB,EAAcpwB,EAAgB2X,KACxE,IAAKyY,EAAY/rB,OACb,OAEJ,MAAMgP,EAAY1G,EAAS0G,UAAWm0B,EAAaN,GAAwBv6B,GAAW86B,GAAyD,QAA3CpnC,GAAM4F,EAAK0G,EAAS0I,QAAQmgB,iBAA8B,IAAPn1B,EAAgBA,EAAM4F,EAAGuvB,UAAYvxB,GAAcmsB,EAAYte,OAASuB,EAAUgC,OAAOC,YAC5OjC,EAAUgC,OAAO5D,aAAc8jB,EAAyD,QAA3CvvB,GAAM5G,EAAKuN,EAAS0I,QAAQkgB,iBAA8B,IAAPvvB,EAAgBA,EAAM5G,EAAGm2B,UAAYtxB,GAAc0I,EAASvI,QAAQuT,KAAKiP,OAASvT,EAAUgC,OAAOC,WAAcoyB,EAAU3jC,GAAY/D,EAAgB4F,KAAK3C,OAASoQ,EAAUgC,OAAOC,WAAY6oB,EAAa/N,EAAYxqB,KAAO+G,EAASrB,YAAco8B,EAAU,EAAGC,EAAcxJ,EAAaqJ,GAAcl0B,EAAMxM,QAAU,GAAI8gC,EAAa,EAAGpS,EAAaiS,EAAYE,EAAeC,EAC/d,GAAIxX,EAAYpJ,KAAK3iB,OACjB2iB,GAAKra,EAAU6oB,OAEd,CACDwR,GAAUr6B,EAAU2G,GACpB,MAAM6zB,EAAiBx6B,EAASka,QAASghB,GAAoC,OAAnBV,QAA8C,IAAnBA,OAA4B,EAASA,EAAe9iC,SAAW8iC,EAAe7gB,SAAW,EAAI,GAC1J,OAAnB6gB,QAA8C,IAAnBA,OAA4B,EAASA,EAAe9iC,SAAWmxB,IAC3F7oB,EAAS9F,SAASxF,GACbwmC,GAAiBV,EAAe9gB,aAAe/S,EAAMxM,SAAY,GAAK0uB,IAE3ED,GAAaC,IACb7oB,EAAS9F,SAAStF,GAAMg0B,EAAYjiB,EAAMxM,QAAW,GAAK0uB,IAE9D,MAAMzjB,EAAQpF,EAASsiB,UACV,GAATld,GACApF,EAAS9F,SAASihC,OAAO/1B,GAE7B,MAAMlL,EAAW8F,EAAS9F,SAASkhC,KAAKvS,GAAYjP,EAA+C,QAAnCvnB,EAAK2N,EAAS0I,OAAOkR,gBAA6B,IAAPvnB,EAAgBA,EAAKqU,EAAUgC,OAAOkR,UACzH,OAAnB4gB,QAA8C,IAAnBA,OAA4B,EAASA,EAAe9iC,SAChFkiB,EAAW,KACR4gB,EAAe7gB,SAAWzf,EAASxF,GAAK,GAAKwF,EAASxF,GAAKklB,GACzD4gB,EAAe7gB,SAAWzf,EAASxF,GAAK,GAAKwF,EAASxF,IAAMklB,KACjE1f,EAASxF,EAAIwmC,EAAgBthB,EACzBiP,IACA7oB,EAAS9F,SAASxF,EAAIwF,EAASxF,EAAIm0B,IAG3C,MAAM7c,EAAgBhM,EAASvI,QAAQwU,OAAQovB,GAAmB,EAAIr7B,EAASmM,eAAiBH,EAAcwQ,aACvF,GAAnB6e,GACAnhC,EAASihC,OAAOE,GAEpBr7B,EAAS3H,SAASk6B,MAAMr4B,GACpBupB,EAAYlJ,UACZva,EAAS3H,SAASzD,GAAKK,KAAKY,IAAImK,EAAS3H,SAASzD,EAAIK,KAAKW,IAAIoK,EAAS3H,SAAS3D,IACjFsL,EAAS3H,SAAS3D,GAAKO,KAAKW,IAAIoK,EAAS3H,SAAS3D,EAAIO,KAAKY,IAAImK,EAAS3H,SAASzD,KAGzFklC,GAAc95B,IC1EfhE,eAAes/B,GAAcjjB,GAChCA,EAAOkjB,SAAS,OAAQ,IAAM,IAAI,ICF/B,MAAMC,GACT,KAAKh2B,EAASxF,EAAUnD,GACpB2I,EAAQqsB,IAAI,EAAG,EAAGh1B,EAAQ,EAAa,EAAV5H,KAAKsD,IAAQ,GAE9C,gBACI,OAAO,ICJRyD,eAAey/B,GAAgBpjB,SAC5BA,EAAO+f,SAAS,SAAU,IAAIoD,ICDxC,SAASE,GAAiB/0B,EAAOrQ,EAAOqlC,EAAgBhlC,EAAKilC,GACzD,IAAIloC,EAAI2F,EACR,MAAM4L,EAAa3O,EACnB,IAAK2O,IAAe02B,EAAejkC,OAC/B,OAEJ,MAAMkF,EAAS1F,EAAcykC,EAAe/+B,QAAS1C,GAAsC,QAAzBxG,EAAK4C,EAAM4D,gBAA6B,IAAPxG,EAAgBA,EAAK,GAAKiT,EAAMxM,OAAkB,IAATyC,EAAcwI,EAA+B,QAAtB/L,EAAK/C,EAAM8O,aAA0B,IAAP/L,EAAgBA,EAAK,EACjNuiC,GAAkC,IAAtB32B,EAAWI,QAQxBJ,EAAW3O,OAAS4D,EAChB+K,EAAW3O,MAAQ,IACnB2O,EAAWI,OAAS,EACpBJ,EAAW3O,OAAS2O,EAAW3O,SAVnC2O,EAAW3O,OAAS4D,EAChB0hC,GAAY32B,EAAW3O,MAAQK,IAC/BsO,EAAWI,OAAS,EACpBJ,EAAW3O,OAAS2O,EAAW3O,MAAQK,IAU3CsO,EAAW/K,UAAsB,IAAVkL,IACvBH,EAAW/K,UAAYkL,GAEvBH,EAAW3O,MAAQK,IACnBsO,EAAW3O,OAASK,GAG5B,SAASklC,GAAY77B,EAAU2G,GAC3B,IAAIjT,EAAI2F,EAAIhH,EACZ,MAAMwS,EAAmB7E,EAASvI,QAAQsK,MAAM4C,eAC0B7P,KAA3C,QAAzBpB,EAAKsM,EAAS+B,aAA0B,IAAPrO,OAAgB,EAASA,EAAGiP,IAC/D+4B,GAAiB/0B,EAAO3G,EAAS+B,MAAMY,EAAGkC,EAAiBlC,EAAG,KAAK,QAEG7N,KAA3C,QAAzBuE,EAAK2G,EAAS+B,aAA0B,IAAP1I,OAAgB,EAASA,EAAGwJ,IAC/D64B,GAAiB/0B,EAAO3G,EAAS+B,MAAMc,EAAGgC,EAAiBhC,EAAG,KAAK,QAEG/N,KAA3C,QAAzBzC,EAAK2N,EAAS+B,aAA0B,IAAP1P,OAAgB,EAASA,EAAGuQ,IAC/D84B,GAAiB/0B,EAAO3G,EAAS+B,MAAMa,EAAGiC,EAAiBjC,EAAG,KAAK,GAGpE,MAAM,GACT,YAAY8D,GACRzT,KAAKyT,UAAYA,EAErB,KAAK1G,GACD,MAAMqE,EAAWhC,GAAgBrC,EAASvI,QAAQsK,MAAO/B,EAASsf,GAAItf,EAASvI,QAAQklB,kBACnFtY,IACArE,EAAS+B,MAAQ6C,GAAuBP,EAAUrE,EAASvI,QAAQsK,MAAM4C,UAAW1R,KAAKyT,UAAUgC,OAAO5D,eAGlH,UAAU9E,GACN,IAAItM,EAAI2F,EAAIhH,EACZ,MAAMwS,EAAmB7E,EAASvI,QAAQsK,MAAM4C,UAChD,OAAS3E,EAAS0L,YACb1L,EAASyL,gBACoE3W,KAAjD,QAAzBpB,EAAKsM,EAAS+B,aAA0B,IAAPrO,OAAgB,EAASA,EAAGiP,EAAErM,QAAwBuO,EAAiBlC,EAAEjL,aAC7B5C,KAAjD,QAAzBuE,EAAK2G,EAAS+B,aAA0B,IAAP1I,OAAgB,EAASA,EAAGwJ,EAAEvM,QAAwBuO,EAAiBhC,EAAEnL,aAChC5C,KAAjD,QAAzBzC,EAAK2N,EAAS+B,aAA0B,IAAP1P,OAAgB,EAASA,EAAGuQ,EAAEtM,QAAwBuO,EAAiBjC,EAAElL,QAEzH,OAAOsI,EAAU2G,GACbk1B,GAAY77B,EAAU2G,IC7DvB3K,eAAe8/B,GAAiBzjB,SAC7BA,EAAO2X,mBAAmB,QAAUtpB,GAAc,IAAI,GAAaA,ICFtE,MAAMq1B,GACT,cACI9oC,KAAKgF,SAAW,IAChBhF,KAAKikB,SAAW,GAChBjkB,KAAK+oC,OAAS,gBACd/oC,KAAKkH,OAAS,EACdlH,KAAK2mB,SAAW,GAChB3mB,KAAKkS,MAAQ,EAEjB,KAAK5T,GACIA,SAGiBuD,IAAlBvD,EAAK0G,WACLhF,KAAKgF,SAAW1G,EAAK0G,eAEHnD,IAAlBvD,EAAK2lB,WACLjkB,KAAKikB,SAAW3lB,EAAK2lB,eAELpiB,IAAhBvD,EAAKyqC,SACL/oC,KAAK+oC,OAASzqC,EAAKyqC,aAEHlnC,IAAhBvD,EAAK4I,SACLlH,KAAKkH,OAAS5I,EAAK4I,aAEDrF,IAAlBvD,EAAKqoB,WACL3mB,KAAK2mB,SAAWroB,EAAKqoB,eAEN9kB,IAAfvD,EAAK4T,QACLlS,KAAKkS,MAAQ5T,EAAK4T,SC3BvB,MAAM,WAAkByrB,GAC3B,YAAYvY,EAAQ3R,GAChB1Q,MAAM0Q,GACNzT,KAAKqlB,QAAUD,EACV3R,EAAUsT,UACXtT,EAAUsT,QAAU,CAAEjP,UAAW,KAErC9X,KAAKggB,gBAAmBjV,IACpB,MAAMvG,EAAUxE,KAAKyT,UAAUkE,cAAeoP,EAAUviB,EAAQgb,cAAckG,MAAMqB,QACpF,GAAKA,GAAoB,YAAThc,EAAhB,CAGK0I,EAAUsT,UACXtT,EAAUsT,QAAU,CAAEjP,UAAW,KAErCrE,EAAUsT,QAAQ1E,UAAW,EAC7B5O,EAAUsT,QAAQhB,MAAQ,EAC1B,IAAK,MAAMhZ,KAAY0G,EAAUsT,QAAQjP,UAChC9X,KAAK6rB,UAAU9e,IAGpBA,EAAS9F,SAAS63B,MAAM/xB,EAASoiB,iBAErC1b,EAAUsT,QAAQjP,UAAY,GAC9BrE,EAAUsT,QAAQiiB,QAAS,EAC3BzgC,WAAW,KACFkL,EAAUgF,YACNhF,EAAUsT,UACXtT,EAAUsT,QAAU,CAAEjP,UAAW,KAErCrE,EAAUsT,QAAQ1E,UAAW,IAEf,IAAnB0E,EAAQ9C,YAGnB,SAEA,OACI,MAAMxQ,EAAYzT,KAAKyT,UAAWsT,EAAUtT,EAAUkE,cAAc6H,cAAckG,MAAMqB,QACnFA,IAGLtT,EAAUgC,OAAOwzB,oBAAsBliB,EAAQ/hB,SAAWyO,EAAUgC,OAAOC,YAE/E,iBACI,MAAMjC,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cAAeuxB,EAAkBz1B,EAAU+L,cAAcpN,SAAWgE,GAAgB2J,EAASvb,EAAQgb,cAAcO,OAAQopB,EAAeppB,EAAO8B,QAAQpd,OAAQ2kC,EAAYrpB,EAAO8B,QAAQ9W,KAAMs+B,EAAetpB,EAAOD,QAAQrb,OAAQ6kC,EAAYvpB,EAAOD,QAAQ/U,KACrTm+B,GAAmBC,GAAgBtgC,GAAU,UAAWugC,GACxDppC,KAAKupC,eAEAF,GAAgBxgC,GAAU,UAAWygC,IAC1CtpC,KAAKwpC,eAGb,UAAUz8B,GACN,IAAItM,EACJ,MAAMgT,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cAAe8H,EAAQhM,EAAU+L,cAAcC,MAAOM,GAAgG,QAArFtf,EAAkB,OAAbsM,QAAkC,IAAbA,OAAsB,EAASA,EAASyS,qBAAkC,IAAP/e,EAAgBA,EAAK+D,EAAQgb,eAAeO,OAChQ,KAAMN,EAAMra,WAAa2a,EAAO8B,QAAQpd,WAAagb,EAAMC,gBAAkBK,EAAOD,QAAQrb,QACxF,OAAO,EAEX,MAAM2kC,EAAYrpB,EAAO8B,QAAQ9W,KAAMu+B,EAAYvpB,EAAOD,QAAQ/U,KAClE,OAAOlC,GAAU,UAAWugC,IAAcvgC,GAAU,UAAWygC,GAEnE,gBAAgB9kC,KAAY+F,GACnB/F,EAAQuiB,UACTviB,EAAQuiB,QAAU,IAAI+hB,IAE1B,IAAK,MAAMxmC,KAAUiI,EACjB/F,EAAQuiB,QAAQ3d,KAAgB,OAAX9G,QAA8B,IAAXA,OAAoB,EAASA,EAAOykB,SAGpF,SAEA,eACI,MAAMtT,EAAYzT,KAAKyT,UAavB,GAZKA,EAAUsT,UACXtT,EAAUsT,QAAU,CAAEjP,UAAW,KAEhCrE,EAAUsT,QAAQiiB,SACdv1B,EAAUsT,QAAQhB,QACnBtS,EAAUsT,QAAQhB,MAAQ,GAE9BtS,EAAUsT,QAAQhB,QACdtS,EAAUsT,QAAQhB,QAAUtS,EAAUqE,UAAUiO,QAChDtS,EAAUsT,QAAQiiB,QAAS,IAG/Bv1B,EAAUsT,QAAQ1E,SAAU,CAC5B,MAAM9C,EAAW9L,EAAU+L,cAAcC,MAAMC,cAAe+pB,EAAgBh2B,EAAUgC,OAAOwzB,oBAC/F,IAAKQ,GAAiBA,EAAgB,IAAMlqB,EACxC,OAEJvf,KAAK0pC,eAAenqB,EAAUkqB,EAAe,IAAI,GAAOlqB,EAAS5d,EAAG4d,EAAS9d,EAAGgoC,SAE5C,IAA/Bh2B,EAAUsT,QAAQ1E,WACvB5O,EAAUsT,QAAQjP,UAAY,IAItC,eACI,MAAMrE,EAAYzT,KAAKyT,UAAW8L,EAAW9L,EAAU+L,cAAcC,MAAMra,SAAUqkC,EAAgBh2B,EAAUgC,OAAOwzB,qBACjHQ,GAAiBA,EAAgB,IAAMlqB,GAG5Cvf,KAAK0pC,eAAenqB,EAAUkqB,EAAe,IAAI,GAAOlqB,EAAS5d,EAAG4d,EAAS9d,EAAGgoC,IAEpF,eAAerkC,EAAUqkC,EAAezhB,GACpC,MAAMvU,EAAYzT,KAAKyT,UAAWk2B,EAAiBl2B,EAAUkE,cAAc6H,cAAckG,MAAMqB,QAC/F,IAAK4iB,EACD,OAEJ,MAAMvhC,EAAQqL,EAAUqE,UAAUgb,SAAS1qB,MAAM4f,EAAOxc,GAAMxL,KAAK6rB,UAAUrgB,IAC7E,IAAK,MAAMuB,KAAY3E,EAAO,CAC1B,MAAM,GAAEtD,EAAE,GAAEC,EAAE,SAAEC,GAAaL,GAAaoI,EAAS3H,SAAUA,GACvD6B,EAAW0iC,EAAez3B,MAAQy3B,EAAeziC,OACjD0iC,EAAgBrmC,EAAMJ,EAAUwmC,EAAeZ,OAAzB5lC,CAAiC,EAAI6B,EAAWykC,GAAiBxiC,EAAU,EAAG0iC,EAAehjB,UACnHkjB,EAAU,EAAO9nC,OAAoB,IAAbiD,EAAiBiC,EAAYnC,EAAKE,EAAY4kC,EAA4B,IAAb5kC,EAAiBiC,EAAYlC,EAAKC,EAAY4kC,GACzI78B,EAAS3H,SAAS0kC,QAAQD,KCrH/B9gC,eAAeghC,GAA+B3kB,SAC3CA,EAAOuX,cAAc,kBAAoBlpB,GAAc,IAAI,GAAU2R,EAAQ3R,ICFhF,MAAMu2B,GACT,cACIhqC,KAAKgF,SAAW,IAEpB,KAAK1G,GACIA,QAGiBuD,IAAlBvD,EAAK0G,WACLhF,KAAKgF,SAAW1G,EAAK0G,WCP1B,MAAM,WAAgB24B,GACzB,YAAYlqB,GACR1Q,MAAM0Q,GAEV,SAEA,OACI,MAAMA,EAAYzT,KAAKyT,UAAW5H,EAAS4H,EAAUkE,cAAc6H,cAAckG,MAAM7Z,OAClFA,IAGL4H,EAAUgC,OAAOw0B,mBAAqBp+B,EAAO7G,SAAWyO,EAAUgC,OAAOC,YAE7E,iBACI,MAAMjC,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cAAeoI,EAASvb,EAAQgb,cAAcO,OAAQmpB,EAAkBz1B,EAAU+L,cAAcpN,SAAWgE,GAAgB+yB,EAAeppB,EAAO8B,QAAQpd,OAAQ2kC,EAAYrpB,EAAO8B,QAAQ9W,KAAMC,EAAO+U,EAAO+E,MAClQokB,GAAmBC,GAAgBtgC,GAAU,SAAUugC,GACvDppC,KAAKkqC,qBAGLh/B,GAAe,SAAUF,EAAM,CAACvD,EAAU0D,IAAQnL,KAAKmqC,qBAAqB1iC,EAAU0D,IAG9F,UAAU4B,GACN,IAAItM,EACJ,MAAMgT,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cAAe8H,EAAQhM,EAAU+L,cAAcC,MAAOM,GAAgG,QAArFtf,EAAkB,OAAbsM,QAAkC,IAAbA,OAAsB,EAASA,EAASyS,qBAAkC,IAAP/e,EAAgBA,EAAK+D,EAAQgb,eAAeO,OAAQ/U,EAAO+U,EAAO+E,MACtR,OAASrF,EAAMra,UAAY2a,EAAO8B,QAAQpd,QAAUoE,GAAU,SAAUkX,EAAO8B,QAAQ9W,OACnFD,GAAiB,SAAUE,GAEnC,gBAAgBxG,KAAY+F,GACnB/F,EAAQqH,SACTrH,EAAQqH,OAAS,IAAIm+B,IAEzB,IAAK,MAAM1nC,KAAUiI,EACjB/F,EAAQqH,OAAOzC,KAAgB,OAAX9G,QAA8B,IAAXA,OAAoB,EAASA,EAAOuJ,QAGnF,SAEA,cAAczG,EAAUwE,EAAQoe,GAC5B,MAAM5f,EAAQpI,KAAKyT,UAAUqE,UAAUgb,SAAS1qB,MAAM4f,EAAOxc,GAAMxL,KAAK6rB,UAAUrgB,IAClF,IAAK,MAAMuB,KAAY3E,EACf4f,aAAgB,GAChBhc,GAAaT,GAA6BwB,GAAW,CACjD3H,WACAwE,SACA+B,KAAO/B,GAAU,EAAI5H,KAAKsD,GAAM,EAChC2B,SAAU,EAAOxB,OACjByB,OAAQ,EAAOzB,SAGduiB,aAAgB,IACrBlb,GAAWC,EAAUjD,GAAgB1E,EAAUwE,IAI3D,qBACI,MAAM6J,EAAYzT,KAAKyT,UAAWwI,EAAUxI,EAAUgC,OAAOC,WAAY00B,EAAY,GAAKnuB,EAASsD,EAAW9L,EAAU+L,cAAcC,MAAMra,SAAUwE,EAAS6J,EAAUgC,OAAOw0B,oBAC3KrgC,GAAUA,EAAS,IAAM2V,GAG9Bvf,KAAKqqC,cAAc9qB,EAAU3V,EAAQ,IAAI,GAAO2V,EAAS5d,EAAG4d,EAAS9d,EAAGmI,EAASwgC,IAErF,qBAAqB3iC,EAAU0D,GAC3B,MAAMsI,EAAYzT,KAAKyT,UAAWrL,EAAQJ,SAASsiC,iBAAiB7iC,GAC/DW,EAAMjH,QAGXiH,EAAMrH,QAASlD,IACX,MAAM0sC,EAAO1sC,EAAMoe,EAAUxI,EAAUgC,OAAOC,WAAY1B,EAAM,CAC5DrS,GAAI4oC,EAAKC,WAAaD,EAAK3uB,YAAc,GAAKK,EAC9Cxa,GAAI8oC,EAAKE,UAAYF,EAAK5uB,aAAe,GAAKM,GAC/CrS,EAAU2gC,EAAK3uB,YAAc,EAAKK,EAASmuB,EAAY,GAAKnuB,EAAS+L,EAAoB,WAAb7c,EAAI9M,KAC7E,IAAI,GAAO2V,EAAIrS,EAAGqS,EAAIvS,EAAGmI,EAASwgC,GAClC,IAAI,GAAUG,EAAKC,WAAavuB,EAAUmuB,EAAWG,EAAKE,UAAYxuB,EAAUmuB,EAAWG,EAAK3uB,YAAcK,EAAsB,EAAZmuB,EAAeG,EAAK5uB,aAAeM,EAAsB,EAAZmuB,GAC3KpqC,KAAKqqC,cAAcr2B,EAAKpK,EAAQoe,MC3ErCjf,eAAe2hC,GAA8BtlB,SAC1CA,EAAOuX,cAAc,iBAAmBlpB,GAAc,IAAI,GAAQA,ICDrE,MAAM,GACT,cACIzT,KAAKgF,SAAW,IAChBhF,KAAKikB,SAAW,GAChBjkB,KAAK2D,KAAM,EAEf,KAAKrF,GACD,GAAKA,EAAL,CAeA,QAZsBuD,IAAlBvD,EAAK0G,WACLhF,KAAKgF,SAAW1G,EAAK0G,eAEHnD,IAAlBvD,EAAK2lB,WACLjkB,KAAKikB,SAAW3lB,EAAK2lB,eAERpiB,IAAbvD,EAAKqF,MACL3D,KAAK2D,IAAMrF,EAAKqF,UAEC9B,IAAjBvD,EAAK+R,UACLrQ,KAAKqQ,QAAU/R,EAAK+R,cAELxO,IAAfvD,EAAKwQ,MAAqB,CAC1B,MAAMkC,EAAchR,KAAK8O,iBAAiBnH,WAAQ9F,EAAY7B,KAAK8O,MACnE9O,KAAK8O,MAAQtH,GAA0BlJ,EAAKwQ,MAAQA,GACzCuV,GAAatiB,OAAOiP,EAAalC,SAG9BjN,IAAdvD,EAAK0H,OACLhG,KAAKgG,KAAO1H,EAAK0H,QC5BtB,MAAM,WAAkB,GAC3B,cACIjD,QACA/C,KAAKuH,UAAY,GAErB,UACI,OAAOC,GAA0BxH,KAAKuH,UAAYM,GAAMA,EAAEuG,QAAQ,IAAK,KAE3E,QAAQ/K,GACJrD,KAAKuH,UAAYC,GAA0BnE,EAAQwE,GAAM,IAAIA,GAEjE,KAAKvJ,GACDyE,MAAMqG,KAAK9K,GACNA,SAGYuD,IAAbvD,EAAKmmB,MACLzkB,KAAKykB,IAAMnmB,EAAKmmB,UAEG5iB,IAAnBvD,EAAKiJ,YACLvH,KAAKuH,UAAYjJ,EAAKiJ,aCnB3B,MAAM,WAAe,GACxB,KAAKjJ,GACDyE,MAAMqG,KAAK9K,GACNA,IAGL0B,KAAKgL,KAAOxD,GAA0BlJ,EAAK0M,KAAOG,IAC9C,MAAM8Z,EAAM,IAAI,GAEhB,OADAA,EAAI7b,KAAK+B,GACF8Z,MCVnB,SAAS0lB,GAAqBC,EAAeC,EAAWC,EAAcvV,GAClE,GAAIsV,GAAaC,EAAc,CAC3B,MAAMznC,EAAQunC,GAAiBC,EAAYC,GAAgBvV,EAC3D,OAAOhyB,EAAMF,EAAOunC,EAAeC,GAElC,GAAIA,EAAYC,EAAc,CAC/B,MAAMznC,EAAQunC,GAAiBE,EAAeD,GAAatV,EAC3D,OAAOhyB,EAAMF,EAAOwnC,EAAWD,IAGhC,MAAM,WAAgBjN,GACzB,YAAYlqB,GACR1Q,MAAM0Q,GACDA,EAAU2F,SACX3F,EAAU2F,OAAS,IAEvBpZ,KAAKggB,gBAAmBjV,IACP,WAATA,IAGC0I,EAAU2F,SACX3F,EAAU2F,OAAS,IAEvB3F,EAAU2F,OAAOiJ,UAAW,IAGpC,MAAMtV,EAAU2G,EAAOkR,GACf7X,EAASqM,OAAOqT,UAAY7H,WAGzB7X,EAASqM,OAAOjO,WAChB4B,EAASqM,OAAO/I,eAChBtD,EAASqM,OAAOxP,cAChBmD,EAASqM,OAAOtK,OAE3B,OACI,MAAM2E,EAAYzT,KAAKyT,UAAW2F,EAAS3F,EAAUkE,cAAc6H,cAAckG,MAAMtM,OAClFA,IAGL3F,EAAUgC,OAAOs1B,mBAAqB3xB,EAAOpU,SAAWyO,EAAUgC,OAAOC,gBACrD7T,IAAhBuX,EAAOpT,OACPyN,EAAUgC,OAAOu1B,eAAiB5xB,EAAOpT,KAAOyN,EAAUgC,OAAOC,aAGzE,eAAehC,GACX,MAAMlP,EAAUxE,KAAKyT,UAAUkE,cAAeoI,EAASvb,EAAQgb,cAAcO,OAAQ8B,EAAU9B,EAAO8B,QAAS/B,EAAUC,EAAOD,QAASqpB,EAAetnB,EAAQpd,OAAQ2kC,EAAYvnB,EAAQ9W,KAAMs+B,EAAevpB,EAAQrb,OAAQ6kC,EAAYxpB,EAAQ/U,KAAMC,EAAO+U,EAAO+E,MACrQqkB,GAAgBtgC,GAAU,SAAUugC,GACpCppC,KAAKirC,YAAYv3B,GAEZ21B,GAAgBxgC,GAAU,SAAUygC,GACzCtpC,KAAKkrC,YAAYx3B,GAGjBxI,GAAe,SAAUF,EAAM,CAACvD,EAAU0D,IAAQnL,KAAKmrC,oBAAoBz3B,EAAOjM,EAAU0D,IAGpG,UAAU4B,GACN,IAAItM,EACJ,MAAMgT,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cAAe8H,EAAQhM,EAAU+L,cAAcC,MAAOM,GAAgG,QAArFtf,EAAkB,OAAbsM,QAAkC,IAAbA,OAAsB,EAASA,EAASyS,qBAAkC,IAAP/e,EAAgBA,EAAK+D,EAAQgb,eAAeO,OAAQ/U,EAAO+U,EAAO+E,MAAOsmB,EAAYtgC,GAAiB,SAAUE,GACpU,KAAMogC,GAAcrrB,EAAO8B,QAAQpd,QAAUgb,EAAMra,UAAc2a,EAAOD,QAAQrb,QAAUgb,EAAMC,eAC5F,OAAO,EAEX,MAAM0pB,EAAYrpB,EAAO8B,QAAQ9W,KAC3Bu+B,EAAYvpB,EAAOD,QAAQ/U,KACjC,OAAOlC,GAAU,SAAUugC,IAAcvgC,GAAU,SAAUygC,IAAc8B,EAE/E,gBAAgB5mC,KAAY+F,GACnB/F,EAAQ4U,SACT5U,EAAQ4U,OAAS,IAAI,IAEzB,IAAK,MAAM9W,KAAUiI,EACjB/F,EAAQ4U,OAAOhQ,KAAgB,OAAX9G,QAA8B,IAAXA,OAAoB,EAASA,EAAO8W,QAGnF,MAAMrM,GACFA,EAASqM,OAAOqT,SAAU,EAE9B,YAAY/Y,GACR,IAAIjT,EAAI2F,EACR,MAAMqN,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cAAe0zB,EAAgB53B,EAAU+L,cAAcC,MAAMC,cAAetG,EAAS5U,EAAQgb,cAAckG,MAAMtM,OACvK,IAAKA,IAAWiyB,EACZ,OAEC53B,EAAU2F,SACX3F,EAAU2F,OAAS,IAEvB,MAAMpU,EAAWyO,EAAUgC,OAAOs1B,mBAClC,IAAK/lC,GAAYA,EAAW,EACxB,OAEJ,MAAMoD,EAAQqL,EAAUqE,UAAUgb,SAASiE,YAAYsU,EAAermC,EAAWwG,GAAMxL,KAAK6rB,UAAUrgB,IACtG,IAAK,MAAMuB,KAAY3E,EAAO,CAC1B,IAAKqL,EAAU2F,OAAOiJ,SAClB,SAEJtV,EAASqM,OAAOqT,SAAWhZ,EAAU2F,OAAOkyB,YAC5C,MAAMt3B,EAAMjH,EAAStB,cAAe8/B,EAAYtmC,GAAY+O,EAAKq3B,GAAgBG,IAAa,IAAI5rB,MAAOC,WAAapM,EAAU+L,cAAcC,MAAME,WAAa,IAAM,IACnK6rB,EAAYpyB,EAAO6K,WACnBxQ,EAAU2F,OAAOkyB,aAAc,GAE/BE,EAA8B,EAAlBpyB,EAAO6K,WACnBxQ,EAAU2F,OAAOiJ,UAAW,EAC5B5O,EAAU2F,OAAOkyB,aAAc,GAEnC,MAAMG,EAAW,CACbC,UAAW,CACPC,SAAUl4B,EAAUgC,OAAOu1B,eAC3B3nC,MAAO0J,EAASqM,OAAOxP,QAE3BgiC,aAAc,CACVD,SAAUxnC,GAAY4I,EAASvI,QAAQwB,KAAK3C,OAASoQ,EAAUgC,OAAOC,WACtErS,MAAO0J,EAAS/G,KAAK3C,OAEzBhF,KAAM,QAEV2B,KAAK6rC,QAAQ9+B,EAAUw+B,EAAWC,EAAWC,GAC7C,MAAMK,EAAc,CAChBJ,UAAW,CACPC,SAAUvyB,EAAO/I,QACjBhN,MAAO0J,EAASqM,OAAO/I,SAE3Bu7B,aAAc,CACVD,SAAUxnC,GAAY4I,EAASvI,QAAQ6L,QAAQhN,OAC/CA,MAAwF,QAAhF+C,EAAiC,QAA3B3F,EAAKsM,EAASsD,eAA4B,IAAP5P,OAAgB,EAASA,EAAG4C,aAA0B,IAAP+C,EAAgBA,EAAK,GAEzH/H,KAAM,WAEV2B,KAAK6rC,QAAQ9+B,EAAUw+B,EAAWC,EAAWM,GACxCr4B,EAAU2F,OAAOkyB,mBASXv+B,EAASqM,OAAOtK,MARnBy8B,GAAavmC,EACbhF,KAAK+rC,iBAAiBh/B,EAAUw+B,UAGzBx+B,EAASqM,OAAOtK,OAQvC,YAAY4E,GACR,MAAMD,EAAYzT,KAAKyT,UAAW8L,EAAW9L,EAAU+L,cAAcC,MAAMra,SAAUJ,EAAWyO,EAAUgC,OAAOs1B,mBACjH,IAAK/lC,GAAYA,EAAW,QAAkBnD,IAAb0d,EAC7B,OAEJ,MAAMnX,EAAQqL,EAAUqE,UAAUgb,SAASiE,YAAYxX,EAAUva,EAAWwG,GAAMxL,KAAK6rB,UAAUrgB,IACjG,IAAK,MAAMuB,KAAY3E,EAAO,CAC1B2E,EAASqM,OAAOqT,SAAU,EAC1B,MAAMzY,EAAMjH,EAAStB,cAAeugC,EAAgB/mC,GAAY+O,EAAKuL,GAAWgW,EAAQ,EAAIyW,EAAgBhnC,EACxGgnC,GAAiBhnC,EACbuwB,GAAS,GAAK9hB,EAAU+L,cAAcpN,SAAWgE,KACjDpW,KAAKisC,gBAAgBl/B,EAAUwoB,GAC/Bv1B,KAAKksC,mBAAmBn/B,EAAUwoB,GAClCv1B,KAAK+rC,iBAAiBh/B,EAAUwoB,IAIpCv1B,KAAK+rB,MAAMhf,GAEX0G,EAAU+L,cAAcpN,SAAWmE,IACnCvW,KAAK+rB,MAAMhf,IAIvB,iBAAiBA,EAAUwoB,EAAO6V,GAC9B,MAAM5mC,EAAUxE,KAAKyT,UAAUkE,cACzBw0B,EAA8B,OAAdf,QAAoC,IAAdA,EAAuBA,EAAY5mC,EAAQgb,cAAckG,MAAMtM,OAC3G,GAAK+yB,EAAL,CAGA,IAAKp/B,EAASqM,OAAOgzB,WAAY,CAC7B,MAAMC,EAAYF,EAAcr9B,MAChC,IAAKu9B,EACD,OAEJ,MAAMC,EAAcj/B,GAAyBg/B,GAC7Ct/B,EAASqM,OAAOgzB,WAAah9B,GAAgBk9B,GAEjD,GAAKv/B,EAASqM,OAAOgzB,WAGrB,GAAID,EAAcxoC,IAAK,CACnBoJ,EAASqM,OAAOtK,WAAQjN,EACxB,MAAM0qC,EAASx/B,EAASkE,eACxBlE,EAASqM,OAAOtK,MAAQy9B,EAClBj9B,GAASiB,GAASg8B,EAAQx/B,EAASqM,OAAOgzB,WAAY,EAAI7W,EAAOA,IACjExoB,EAASqM,OAAOgzB,gBAGtBr/B,EAASqM,OAAOtK,MAAQ/B,EAASqM,OAAOgzB,YAGhD,mBAAmBr/B,EAAUwoB,EAAO6V,GAChC,IAAI3qC,EAAI2F,EAAIhH,EAAIiH,EAChB,MAAMoN,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cAAe60B,EAAiG,QAAlF/rC,EAAmB,OAAd2qC,QAAoC,IAAdA,OAAuB,EAASA,EAAU/6B,eAA4B,IAAP5P,EAAgBA,EAAmD,QAA7C2F,EAAK5B,EAAQgb,cAAckG,MAAMtM,cAA2B,IAAPhT,OAAgB,EAASA,EAAGiK,QACrR,IAAKm8B,EACD,OAEJ,MAAMC,EAAa1/B,EAASvI,QAAQ6L,QAAQhN,MACtCqpC,EAA4F,QAAhFrmC,EAAiC,QAA3BjH,EAAK2N,EAASsD,eAA4B,IAAPjR,OAAgB,EAASA,EAAGiE,aAA0B,IAAPgD,EAAgBA,EAAK,EACzHgK,EAAUs6B,GAAqB+B,EAAUF,EAAaroC,GAAYsoC,GAAalX,QACrE1zB,IAAZwO,IACAtD,EAASqM,OAAO/I,QAAUA,GAGlC,gBAAgBtD,EAAUwoB,EAAO6V,GAC7B,MAAM33B,EAAYzT,KAAKyT,UAAWk5B,GAA0B,OAAdvB,QAAoC,IAAdA,OAAuB,EAASA,EAAUplC,MAAQolC,EAAUplC,KAAOyN,EAAUgC,OAAOC,WAAajC,EAAUgC,OAAOu1B,eACtL,QAAiBnpC,IAAb8qC,EACA,OAEJ,MAAMC,EAAUzoC,GAAY4I,EAASvI,QAAQwB,KAAK3C,OAASoQ,EAAUgC,OAAOC,WACtEm3B,EAAQ9/B,EAAS/G,KAAK3C,MACtB2C,EAAO2kC,GAAqBkC,EAAOF,EAAUC,EAASrX,QAC/C1zB,IAATmE,IACA+G,EAASqM,OAAOxP,OAAS5D,GAGjC,QAAQ+G,EAAUw+B,EAAWC,EAAWltC,GACpC,MAAMmV,EAAYzT,KAAKyT,UAAWq5B,EAAcxuC,EAAKotC,UAAUC,SAAUnnC,EAAUiP,EAAUkE,cAAeyB,EAAS5U,EAAQgb,cAAckG,MAAMtM,OACjJ,IAAKA,QAA0BvX,IAAhBirC,EACX,OAEJ,MAAMC,EAAiB3zB,EAAO6K,SAAU+oB,EAAiBv5B,EAAUgC,OAAOs1B,mBAAoBkC,EAAiB3uC,EAAKstC,aAAaD,SAAUuB,EAAa5uC,EAAKotC,UAAUroC,MAAO8pC,EAAO7uC,EAAKstC,aAAavoC,OAAS,EAAGhF,EAAOC,EAAKD,KAC/N,GAAK2uC,KAAkBA,EAAiB,IAAKF,IAAgBG,EAM7D,GAHKx5B,EAAU2F,SACX3F,EAAU2F,OAAS,IAElB3F,EAAU2F,OAAOkyB,YAsBb4B,IACQ,SAAT7uC,UACO0O,EAASqM,OAAOxP,OAEd,YAATvL,UACO0O,EAASqM,OAAO/I,cA1B3B,GAAIk7B,GAAayB,EAAgB,CAC7B,MAAM5/B,EAAqB,OAAf8/B,QAAsC,IAAfA,EAAwBA,EAAaC,EACxE,GAAI//B,IAAQ0/B,EAAa,CACrB,MAAMzpC,EAAQ8pC,EAAQ3B,GAAa2B,EAAOL,GAAgBC,EAC7C,SAAT1uC,IACA0O,EAASqM,OAAOxP,OAASvG,GAEhB,YAAThF,IACA0O,EAASqM,OAAO/I,QAAUhN,QAKrB,SAAThF,UACO0O,EAASqM,OAAOxP,OAEd,YAATvL,UACO0O,EAASqM,OAAO/I,QAavC,oBAAoBqD,EAAOjM,EAAU0D,GACjC,MAAMsI,EAAYzT,KAAKyT,UAAWlM,EAAYS,SAASsiC,iBAAiB7iC,GAAW2R,EAAS3F,EAAUkE,cAAc6H,cAAckG,MAAMtM,OACnIA,GAAW7R,EAAUpG,QAG1BoG,EAAUxG,QAASlD,IACf,MAAM0sC,EAAO1sC,EAAMoe,EAAUxI,EAAUgC,OAAOC,WAAY1B,EAAM,CAC5DrS,GAAI4oC,EAAKC,WAAaD,EAAK3uB,YAAc,GAAKK,EAC9Cxa,GAAI8oC,EAAKE,UAAYF,EAAK5uB,aAAe,GAAKM,GAC/CmxB,EAAiB7C,EAAK3uB,YAAc,EAAKK,EAAS+L,EAAoB,WAAb7c,EAAI9M,KAC1D,IAAI,GAAO2V,EAAIrS,EAAGqS,EAAIvS,EAAG2rC,GACzB,IAAI,GAAU7C,EAAKC,WAAavuB,EAASsuB,EAAKE,UAAYxuB,EAASsuB,EAAK3uB,YAAcK,EAASsuB,EAAK5uB,aAAeM,GAAU7T,EAAQqL,EAAUqE,UAAUgb,SAAS1qB,MAAM4f,EAAOxc,GAAMxL,KAAK6rB,UAAUrgB,IAC1M,IAAK,MAAMuB,KAAY3E,EAAO,CAC1B,IAAK4f,EAAKiK,SAASllB,EAAStB,eACxB,SAEJsB,EAASqM,OAAOqT,SAAU,EAC1B,MAAMzhB,EAAOoO,EAAOpO,KACdogC,EAAYhgC,GAAQJ,EAAMu/B,GAC3Bx9B,EAASqM,OAAOjO,KAAO4B,EAASqM,OAAOjO,MAAQo/B,IAChDvqC,KAAKqT,MAAMtG,EAAU2G,GAAO,GAC5B3G,EAASqM,OAAOjO,IAAMo/B,GAE1BvqC,KAAKisC,gBAAgBl/B,EAAU,EAAGq+B,GAClCprC,KAAKksC,mBAAmBn/B,EAAU,EAAGq+B,GACrCprC,KAAK+rC,iBAAiBh/B,EAAU,EAAGq+B,OChS5CriC,eAAeskC,GAA8BjoB,SAC1CA,EAAOuX,cAAc,iBAAmBlpB,GAAc,IAAI,GAAQA,ICFrE,MAAM65B,GACT,cACIttC,KAAKqQ,QAAU,GAEnB,KAAK/R,GACIA,QAGgBuD,IAAjBvD,EAAK+R,UACLrQ,KAAKqQ,QAAU/R,EAAK+R,UCRzB,MAAM,GACT,cACIrQ,KAAKgF,SAAW,GAChBhF,KAAKutC,MAAQ,IAAID,GACjBttC,KAAK4J,OAAS,GAElB,iBACI,OAAO5J,KAAKutC,MAEhB,eAAelqC,GACXrD,KAAKutC,MAAQlqC,EAEjB,kBACI,OAAOrD,KAAKutC,MAEhB,gBAAgBlqC,GACZrD,KAAKutC,MAAQlqC,EAEjB,KAAK/E,GACD,IAAImC,EAAI2F,EACH9H,SAGiBuD,IAAlBvD,EAAK0G,WACLhF,KAAKgF,SAAW1G,EAAK0G,UAEzBhF,KAAKutC,MAAMnkC,KAAmF,QAA7EhD,EAA2B,QAArB3F,EAAKnC,EAAKivC,aAA0B,IAAP9sC,EAAgBA,EAAKnC,EAAKkvC,kBAA+B,IAAPpnC,EAAgBA,EAAK9H,EAAKmvC,kBAC5G5rC,IAAhBvD,EAAKsL,SACL5J,KAAK4J,OAAStL,EAAKsL,UC3B/B,SAAS8jC,GAASn7B,EAAStG,EAAIC,EAAImE,GAC/B,MAAMs9B,EAAW3rC,KAAKgC,MAAMkI,EAAGR,YAAcO,EAAGP,aAAc8E,EAASvE,EAAGgF,eAAgBR,EAASvE,EAAG+E,eACtG,IAAKT,IAAWC,EACZ,OAEJ,MAAMm9B,EAAY3hC,EAAGR,cAAeoiC,EAAU3hC,EAAGT,cAAeqiC,EAASv9B,GAASC,EAAQC,EAAQxE,EAAGP,YAAaQ,EAAGR,aAAcqiC,EAAOx7B,EAAQy7B,qBAAqBJ,EAAUjsC,EAAGisC,EAAUnsC,EAAGosC,EAAQlsC,EAAGksC,EAAQpsC,GAIpN,OAHAssC,EAAKE,aAAa,EAAG39B,GAAgBE,EAAQH,IAC7C09B,EAAKE,aAAaN,EAAW,EAAI,EAAIA,EAAUv9B,GAAgB09B,EAAQz9B,IACvE09B,EAAKE,aAAa,EAAG39B,GAAgBG,EAAQJ,IACtC09B,EAEX,SAASG,GAAgB37B,EAAStM,EAAOkoC,EAAW37B,EAAOC,GACvDH,GAASC,EAASC,EAAOC,GACzBF,EAAQwC,UAAY9O,EACpBsM,EAAQ0C,YAAck5B,EACtB57B,EAAQuC,SAEZ,SAAS,GAAUrB,EAAW0E,EAAKlM,EAAIC,GACnC,MAAM1H,EAAUiP,EAAUkE,cAAey2B,EAAiB5pC,EAAQgb,cAAckG,MAAM2oB,QACtF,GAAKD,EAGL,OAAOV,GAASv1B,EAAKlM,EAAIC,EAAIkiC,EAAeb,MAAMl9B,SAEtD,SAASi+B,GAAe76B,EAAWxH,EAAIC,GACnCuH,EAAU8H,OAAO/F,KAAM2C,IACnB,IAAI1X,EACJ,MAAM8tC,EAAK,GAAU96B,EAAW0E,EAAKlM,EAAIC,GACzC,IAAKqiC,EACD,OAEJ,MAAMliC,EAAOJ,EAAGR,cAAea,EAAOJ,EAAGT,cACzCyiC,GAAgB/1B,EAAqC,QAA/B1X,EAAKwL,EAAGwJ,OAAO+4B,kBAA+B,IAAP/tC,EAAgBA,EAAK,EAAG8tC,EAAIliC,EAAMC,KAGhG,MAAM,WAAkBqxB,GAC3B,YAAYlqB,GACR1Q,MAAM0Q,GAEV,SAEA,OACI,MAAMA,EAAYzT,KAAKyT,UAAW46B,EAAU56B,EAAUkE,cAAc6H,cAAckG,MAAM2oB,QACnFA,IAGL56B,EAAUgC,OAAOg5B,oBAAsBJ,EAAQrpC,SAAWyO,EAAUgC,OAAOC,WAC3EjC,EAAUgC,OAAOi5B,kBAAoBL,EAAQzkC,OAAS6J,EAAUgC,OAAOC,YAE3E,iBACI,MAAMjC,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cACtD,GAAInT,EAAQgb,cAAcO,OAAO8B,QAAQpd,QAA6C,gBAAnCgP,EAAU+L,cAAcpN,OAA0B,CACjG,MAAMmN,EAAW9L,EAAU+L,cAAcC,MAAMra,SAC/C,IAAKqO,EAAUgC,OAAOg5B,qBAClBh7B,EAAUgC,OAAOg5B,oBAAsB,IACtCh7B,EAAUgC,OAAOi5B,mBAClBj7B,EAAUgC,OAAOi5B,kBAAoB,IACpCnvB,EACD,OAEJ,MAAMva,EAAWhD,KAAKovB,IAAI3d,EAAUgC,OAAOi5B,mBAAoBtmC,EAAQqL,EAAUqE,UAAUgb,SAASiE,YAAYxX,EAAUva,EAAWwG,GAAMxL,KAAK6rB,UAAUrgB,IAC1J,IAAImoB,EAAI,EACR,IAAK,MAAM1nB,KAAM7D,EAAO,CACpB,MAAMiE,EAAOJ,EAAGR,cAChB,IAAK,MAAMS,KAAM9D,EAAMumC,MAAMhb,EAAI,GAAI,CACjC,MAAMrnB,EAAOJ,EAAGT,cAAemjC,EAAU5sC,KAAKovB,IAAI3d,EAAUgC,OAAOg5B,qBAAsBI,EAAQ7sC,KAAKovB,IAAI/kB,EAAK1K,EAAI2K,EAAK3K,GAAImtC,EAAQ9sC,KAAKovB,IAAI/kB,EAAK5K,EAAI6K,EAAK7K,GACvJotC,EAAQD,GAAWE,EAAQF,GAC3BN,GAAe76B,EAAWxH,EAAIC,KAGpCynB,IAId,UAAU5mB,GACN,IAAItM,EACJ,MAAMgT,EAAYzT,KAAKyT,UAAWgM,EAAQhM,EAAU+L,cAAcC,MAAOM,GAAgG,QAArFtf,EAAkB,OAAbsM,QAAkC,IAAbA,OAAsB,EAASA,EAASyS,qBAAkC,IAAP/e,EAAgBA,EAAKgT,EAAUkE,cAAc6H,eAAeO,OAC7O,SAAMA,EAAO8B,QAAQpd,SAAUgb,EAAMra,WAG9ByD,GAAU,UAAWkX,EAAO8B,QAAQ9W,MAE/C,gBAAgBvG,KAAY+F,GACnB/F,EAAQ6pC,UACT7pC,EAAQ6pC,QAAU,IAAI,IAE1B,IAAK,MAAM/rC,KAAUiI,EACjB/F,EAAQ6pC,QAAQjlC,KAAgB,OAAX9G,QAA8B,IAAXA,OAAoB,EAASA,EAAO+rC,SAGpF,UC3FGtlC,eAAegmC,GAA+B3pB,SAC3CA,EAAOuX,cAAc,kBAAoBlpB,GAAc,IAAI,GAAUA,ICDxE,MAAM,GACT,cACIzT,KAAKuR,OAAQ,EACbvR,KAAKwR,SAAU,EACfxR,KAAKqQ,QAAU,EAEnB,KAAK/R,GACIA,SAGcuD,IAAfvD,EAAKiT,QACLvR,KAAKuR,MAAQjT,EAAKiT,YAEH1P,IAAfvD,EAAKwQ,QACL9O,KAAK8O,MAAQuV,GAAatiB,OAAO/B,KAAK8O,MAAOxQ,EAAKwQ,aAEjCjN,IAAjBvD,EAAKkT,UACLxR,KAAKwR,QAAUlT,EAAKkT,cAEH3P,IAAjBvD,EAAK+R,UACLrQ,KAAKqQ,QAAU/R,EAAK+R,WCpBzB,MAAM,GACT,cACIrQ,KAAKgF,SAAW,IAChBhF,KAAKutC,MAAQ,IAAI,GAErB,iBACI,OAAOvtC,KAAKutC,MAEhB,eAAelqC,GACXrD,KAAKutC,MAAQlqC,EAEjB,kBACI,OAAOrD,KAAKutC,MAEhB,gBAAgBlqC,GACZrD,KAAKutC,MAAQlqC,EAEjB,KAAK/E,GACD,IAAImC,EAAI2F,EACH9H,SAGiBuD,IAAlBvD,EAAK0G,WACLhF,KAAKgF,SAAW1G,EAAK0G,UAEzBhF,KAAKutC,MAAMnkC,KAAmF,QAA7EhD,EAA2B,QAArB3F,EAAKnC,EAAKivC,aAA0B,IAAP9sC,EAAgBA,EAAKnC,EAAKkvC,kBAA+B,IAAPpnC,EAAgBA,EAAK9H,EAAKmvC,eCxBjI,SAASuB,GAAaz8B,EAAStM,EAAOuM,EAAOC,EAAKw8B,EAAW5+B,GAChEiC,GAASC,EAASC,EAAOC,GACzBF,EAAQ0C,YAAc7E,GAAgB6+B,EAAW5+B,GACjDkC,EAAQwC,UAAY9O,EACpBsM,EAAQuC,SAEZ,SAASo6B,GAASz7B,EAAW1G,EAAUoiC,EAAW9+B,EAASkP,GACvD9L,EAAU8H,OAAO/F,KAAM2C,IACnB,IAAI1X,EACJ,MAAM2uC,EAAWriC,EAAStB,cAC1BujC,GAAa72B,EAA2C,QAArC1X,EAAKsM,EAAS0I,OAAO+4B,kBAA+B,IAAP/tC,EAAgBA,EAAK,EAAG2uC,EAAU7vB,EAAU4vB,EAAW9+B,KAGxH,MAAM,WAAgBstB,GACzB,YAAYlqB,GACR1Q,MAAM0Q,GAEV,SAEA,OACI,MAAMA,EAAYzT,KAAKyT,UAAW47B,EAAO57B,EAAUkE,cAAc6H,cAAckG,MAAM2pB,KAChFA,IAGL57B,EAAUgC,OAAO65B,iBAAmBD,EAAKrqC,SAAWyO,EAAUgC,OAAOC,YAEzE,iBACI,IAAIjV,EAAI2F,EACR,MAAMqN,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cAAe6H,EAAgBhb,EAAQgb,cAC7F,IAAKA,EAAckG,MAAM2pB,OACpB7vB,EAAcO,OAAO8B,QAAQpd,QAC9BgP,EAAU+L,cAAcpN,SAAWgE,GACnC,OAEJ,MAAMmJ,EAAW9L,EAAU+L,cAAcC,MAAMra,SAC/C,IAAKma,EACD,OAEJ,MAAMva,EAAWyO,EAAUgC,OAAO65B,iBAClC,IAAKtqC,GAAYA,EAAW,EACxB,OAEJ,MAAMoD,EAAQqL,EAAUqE,UAAUgb,SAASiE,YAAYxX,EAAUva,EAAWwG,GAAMxL,KAAK6rB,UAAUrgB,IACjG,IAAK,MAAMuB,KAAY3E,EAAO,CAC1B,MAAM4L,EAAMjH,EAAStB,cAAeugC,EAAgB/mC,GAAY+O,EAAKuL,GACrE,GAAIysB,EAAgBhnC,EAChB,SAEJ,MAAMuqC,EAAkB/vB,EAAckG,MAAM2pB,KAAK9B,MAAOiC,EAAcD,EAAgBl/B,QAASo/B,EAAcD,EAAexD,EAAgBwD,EAAexqC,EAC3J,GAAIyqC,GAAe,EACf,SAEJ,MAAMn+B,EAA4C,QAAhC7Q,EAAK8uC,EAAgBzgC,aAA0B,IAAPrO,EAAgBA,EAAuC,QAAjC2F,EAAK2G,EAASvI,QAAQ+oC,aAA0B,IAAPnnC,OAAgB,EAASA,EAAG0I,MACrJ,IAAK2E,EAAUqE,UAAU43B,eAAiBp+B,EAAU,CAChD,MAAMq+B,EAAenwB,EAAckG,MAAM2pB,KAAK9B,MAC9C95B,EAAUqE,UAAU43B,cAAgBr+B,GAAmBC,EAAUq+B,EAAap+B,MAAOo+B,EAAan+B,SAEtG,MAAMy9B,EAAYn+B,GAAa/D,OAAUlL,EAAW4R,EAAUqE,UAAU43B,eACxE,IAAKT,EACD,OAEJC,GAASz7B,EAAW1G,EAAUkiC,EAAWQ,EAAalwB,IAG9D,UAAUxS,GACN,IAAItM,EACJ,MAAMgT,EAAYzT,KAAKyT,UAAWgM,EAAQhM,EAAU+L,cAAcC,MAAOM,GAAgG,QAArFtf,EAAkB,OAAbsM,QAAkC,IAAbA,OAAsB,EAASA,EAASyS,qBAAkC,IAAP/e,EAAgBA,EAAKgT,EAAUkE,cAAc6H,eAAeO,OAC7O,OAAOA,EAAO8B,QAAQpd,UAAYgb,EAAMra,UAAYyD,GAAU,OAAQkX,EAAO8B,QAAQ9W,MAEzF,gBAAgBvG,KAAY+F,GACnB/F,EAAQ6qC,OACT7qC,EAAQ6qC,KAAO,IAAI,IAEvB,IAAK,MAAM/sC,KAAUiI,EACjB/F,EAAQ6qC,KAAKjmC,KAAgB,OAAX9G,QAA8B,IAAXA,OAAoB,EAASA,EAAO+sC,MAGjF,UC9EGtmC,eAAe6mC,GAA4BxqB,SACxCA,EAAOuX,cAAc,eAAiBlpB,GAAc,IAAI,GAAQA,ICDnE,MAAM,WAAekqB,GACxB,YAAYlqB,GACR1Q,MAAM0Q,GACNzT,KAAKggB,gBAAmBjV,IACpB,GAAa,UAATA,EACA,OAEJ,MAAM0I,EAAYzT,KAAKyT,UACnBA,EAAUqN,qBACVrN,EAAUoN,QAGVpN,EAAUsN,QAItB,SAEA,QAEA,kBAEA,YACI,OAAO,EAEX,UCzBG,SAAS8uB,GAA6BzqB,GACzCA,EAAOuX,cAAc,gBAAkBlpB,GAAc,IAAI,GAAOA,ICF7D,MAAMq8B,GACT,cACI9vC,KAAK5B,SAAU,EACf4B,KAAKwpB,OAAS,GACdxpB,KAAKg0B,SAAW,EAEpB,mBACI,OAAOh0B,KAAKg0B,SAEhB,iBAAiB3wB,GACbrD,KAAKg0B,SAAW3wB,EAEpB,KAAK/E,GACD,IAAImC,EACJ,IAAKnC,EACD,YAEiBuD,IAAjBvD,EAAKF,UACL4B,KAAK5B,QAAUE,EAAKF,cAEJyD,IAAhBvD,EAAKkrB,SACLxpB,KAAKwpB,OAASlrB,EAAKkrB,OAAO3e,IAAKhD,GAAMA,IAEpC7H,KAAKwpB,OAAOroB,SACbnB,KAAK5B,SAAU,GAEnB,MAAM41B,EAAoC,QAAxBvzB,EAAKnC,EAAK01B,gBAA6B,IAAPvzB,EAAgBA,EAAKnC,EAAKyxC,kBAC3DluC,IAAbmyB,IACAh0B,KAAKg0B,SAAWA,ICzBrB,MAAM,WAAe2J,GACxB,YAAYlqB,GACR1Q,MAAM0Q,GACNzT,KAAKggB,gBAAmBjV,IACpB,GAAa,SAATA,EACA,OAEJ,MAAM0I,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cAAeq4B,EAAcxrC,EAAQgb,cAAckG,MAAM7kB,KAC/G,IAAKmvC,EACD,OAEJ,MAAMC,EAASD,EAAYhc,SAC3B,GAAIic,GAAU,EACV,OAEJ,MAAMtmB,EAAQrgB,GAAc,MAACzH,KAAcmuC,EAAYxmB,SAAUkK,OAAyB7xB,IAAV8nB,EAAsBlW,EAAUkE,cAAcG,UAAU0R,OAAOG,QAAS9nB,EACxJ4R,EAAUqE,UAAUjX,KAAKovC,EAAQx8B,EAAU+L,cAAcC,MAAOiU,EAAc/J,IAGtF,SAEA,QAEA,kBAEA,YACI,OAAO,EAEX,gBAAgBnlB,KAAY+F,GACnB/F,EAAQ3D,OACT2D,EAAQ3D,KAAO,IAAIivC,IAEvB,IAAK,MAAMxtC,KAAUiI,EACjB/F,EAAQ3D,KAAKuI,KAAgB,OAAX9G,QAA8B,IAAXA,OAAoB,EAASA,EAAOzB,MAGjF,UCtCGkI,eAAemnC,GAA4B9qB,SACxCA,EAAOuX,cAAc,eAAiBlpB,GAAc,IAAI,GAAOA,ICFlE,MAAM08B,GACT,cACInwC,KAAKg0B,SAAW,EAEpB,mBACI,OAAOh0B,KAAKg0B,SAEhB,iBAAiB3wB,GACbrD,KAAKg0B,SAAW3wB,EAEpB,KAAK/E,GACD,IAAImC,EACJ,IAAKnC,EACD,OAEJ,MAAM01B,EAAoC,QAAxBvzB,EAAKnC,EAAK01B,gBAA6B,IAAPvzB,EAAgBA,EAAKnC,EAAKyxC,kBAC3DluC,IAAbmyB,IACAh0B,KAAKg0B,SAAWA,ICfrB,MAAM,WAAgB2J,GACzB,YAAYlqB,GACR1Q,MAAM0Q,GACNzT,KAAKggB,gBAAmBjV,IACpB,MAAM0I,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cACtD,IAAKnT,EAAQgb,cAAckG,MAAMrN,QAAmB,WAATtN,EACvC,OAEJ,MAAMqlC,EAAW5rC,EAAQgb,cAAckG,MAAMrN,OAAO2b,SACpDvgB,EAAUqE,UAAUsb,eAAegd,IAG3C,SAEA,QAEA,kBAEA,YACI,OAAO,EAEX,gBAAgB5rC,KAAY+F,GACnB/F,EAAQ6T,SACT7T,EAAQ6T,OAAS,IAAI83B,IAEzB,IAAK,MAAM7tC,KAAUiI,EACjB/F,EAAQ6T,OAAOjP,KAAgB,OAAX9G,QAA8B,IAAXA,OAAoB,EAASA,EAAO+V,QAGnF,UC9BG,SAASg4B,GAA8BjrB,GAC1CA,EAAOuX,cAAc,iBAAmBlpB,GAAc,IAAI,GAAQA,ICF/D,MAAM68B,GACT,cACItwC,KAAKgF,SAAW,IAChBhF,KAAKikB,SAAW,GAChBjkB,KAAKkH,OAAS,IACdlH,KAAKkS,MAAQ,EACblS,KAAK2mB,SAAW,GAChB3mB,KAAK+oC,OAAS,gBAElB,KAAKzqC,GACIA,SAGiBuD,IAAlBvD,EAAK0G,WACLhF,KAAKgF,SAAW1G,EAAK0G,eAEHnD,IAAlBvD,EAAK2lB,WACLjkB,KAAKikB,SAAW3lB,EAAK2lB,eAELpiB,IAAhBvD,EAAKyqC,SACL/oC,KAAK+oC,OAASzqC,EAAKyqC,aAEHlnC,IAAhBvD,EAAK4I,SACLlH,KAAKkH,OAAS5I,EAAK4I,aAEJrF,IAAfvD,EAAK4T,QACLlS,KAAKkS,MAAQ5T,EAAK4T,YAEArQ,IAAlBvD,EAAKqoB,WACL3mB,KAAK2mB,SAAWroB,EAAKqoB,YC3B1B,MAAM,WAAmB2pB,GAC5B,cACIvtC,QACA/C,KAAKuH,UAAY,GAErB,UACI,OAAOC,GAA0BxH,KAAKuH,UAAYM,GAAMA,EAAEuG,QAAQ,IAAK,KAE3E,QAAQ/K,GACJrD,KAAKuH,UAAYC,GAA0BnE,EAAQwE,GAAM,IAAIA,GAEjE,KAAKvJ,GACDyE,MAAMqG,KAAK9K,GACNA,SAGYuD,IAAbvD,EAAKmmB,MACLzkB,KAAKykB,IAAMnmB,EAAKmmB,UAEG5iB,IAAnBvD,EAAKiJ,YACLvH,KAAKuH,UAAYjJ,EAAKiJ,aCnB3B,MAAM,WAAgB+oC,GACzB,KAAKhyC,GACDyE,MAAMqG,KAAK9K,GACNA,IAGL0B,KAAKgL,KAAOxD,GAA0BlJ,EAAK0M,KAAOG,IAC9C,MAAM8Z,EAAM,IAAI,GAEhB,OADAA,EAAI7b,KAAK+B,GACF8Z,MCVZ,MAAM,WAAiB0Y,GAC1B,YAAYvY,EAAQ3R,GAChB1Q,MAAM0Q,GACNzT,KAAKqlB,QAAUD,EACV3R,EAAU88B,UACX98B,EAAU88B,QAAU,CAAEz4B,UAAW,KAErC9X,KAAKggB,gBAAmBjV,IACpB,MAAMvG,EAAUxE,KAAKyT,UAAUkE,cAAe44B,EAAU/rC,EAAQgb,cAAckG,MAAM6qB,QACpF,GAAKA,GAAoB,YAATxlC,EAAhB,CAGK0I,EAAU88B,UACX98B,EAAU88B,QAAU,CAAEz4B,UAAW,KAErCrE,EAAU88B,QAAQluB,UAAW,EAC7B5O,EAAU88B,QAAQxqB,MAAQ,EAC1B,IAAK,MAAMhZ,KAAY0G,EAAU88B,QAAQz4B,UAChC9X,KAAK6rB,UAAU9e,IAGpBA,EAAS9F,SAAS63B,MAAM/xB,EAASoiB,iBAErC1b,EAAU88B,QAAQz4B,UAAY,GAC9BrE,EAAU88B,QAAQvH,QAAS,EAC3BzgC,WAAW,KACFkL,EAAUgF,YACNhF,EAAU88B,UACX98B,EAAU88B,QAAU,CAAEz4B,UAAW,KAErCrE,EAAU88B,QAAQluB,UAAW,IAEf,IAAnBkuB,EAAQtsB,YAGnB,SAEA,OACI,MAAMxQ,EAAYzT,KAAKyT,UAAW88B,EAAU98B,EAAUkE,cAAc6H,cAAckG,MAAM6qB,QACnFA,IAGL98B,EAAUgC,OAAO+6B,oBAAsBD,EAAQvrC,SAAWyO,EAAUgC,OAAOC,YAE/E,iBACI,MAAMjC,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cAAeuxB,EAAkBz1B,EAAU+L,cAAcpN,SAAWgE,GAAgB2J,EAASvb,EAAQgb,cAAcO,OAAQopB,EAAeppB,EAAO8B,QAAQpd,OAAQ2kC,EAAYrpB,EAAO8B,QAAQ9W,KAAMs+B,EAAetpB,EAAOD,QAAQrb,OAAQ6kC,EAAYvpB,EAAOD,QAAQ/U,KAAMC,EAAO+U,EAAO+E,MACzUokB,GAAmBC,GAAgBtgC,GAAU,UAAWugC,GACxDppC,KAAKywC,eAEApH,GAAgBxgC,GAAU,UAAWygC,GAC1CtpC,KAAK0wC,eAGLxlC,GAAe,UAAWF,EAAM,CAACvD,EAAU0D,IAAQnL,KAAK2wC,sBAAsBlpC,EAAU0D,IAGhG,UAAU4B,GACN,IAAItM,EACJ,MAAMgT,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cAAe8H,EAAQhM,EAAU+L,cAAcC,MAAOM,GAAgG,QAArFtf,EAAkB,OAAbsM,QAAkC,IAAbA,OAAsB,EAASA,EAASyS,qBAAkC,IAAP/e,EAAgBA,EAAK+D,EAAQgb,eAAeO,OAAQ/U,EAAO+U,EAAO+E,MAAO8rB,EAAa9lC,GAAiB,UAAWE,GACtU,KAAM4lC,GAAe7wB,EAAO8B,QAAQpd,QAAUgb,EAAMra,UAAc2a,EAAOD,QAAQrb,QAAUgb,EAAMC,eAC7F,OAAO,EAEX,MAAM0pB,EAAYrpB,EAAO8B,QAAQ9W,KAAMu+B,EAAYvpB,EAAOD,QAAQ/U,KAClE,OAAOlC,GAAU,UAAWugC,IAAcvgC,GAAU,UAAWygC,IAAcsH,EAEjF,gBAAgBpsC,KAAY+F,GACnB/F,EAAQ+rC,UACT/rC,EAAQ+rC,QAAU,IAAI,IAE1B,IAAK,MAAMjuC,KAAUiI,EACjB/F,EAAQ+rC,QAAQnnC,KAAgB,OAAX9G,QAA8B,IAAXA,OAAoB,EAASA,EAAOiuC,SAGpF,SAEA,eACI,MAAM98B,EAAYzT,KAAKyT,UAAW88B,EAAU98B,EAAUkE,cAAc6H,cAAckG,MAAM6qB,QACxF,GAAKA,EAeL,GAZK98B,EAAU88B,UACX98B,EAAU88B,QAAU,CAAEz4B,UAAW,KAEhCrE,EAAU88B,QAAQvH,SACdv1B,EAAU88B,QAAQxqB,QACnBtS,EAAU88B,QAAQxqB,MAAQ,GAE9BtS,EAAU88B,QAAQxqB,QACdtS,EAAU88B,QAAQxqB,QAAUtS,EAAUqE,UAAUiO,QAChDtS,EAAU88B,QAAQvH,QAAS,IAG/Bv1B,EAAU88B,QAAQluB,SAAU,CAC5B,MAAMwuB,EAAkBp9B,EAAUgC,OAAO+6B,oBACzC,IAAKK,GAAmBA,EAAkB,EACtC,OAEJ,MAAMzD,EAAgBprC,KAAKyvB,IAAIof,EAAkB,EAAG,GAAIxF,EAAgB53B,EAAU+L,cAAcC,MAAMC,cACtG,QAAsB7d,IAAlBwpC,EACA,OAEJ,MAAM1a,EAAQ,IAAI,GAAO0a,EAAc1pC,EAAG0pC,EAAc5pC,EAAG2rC,GAAgBhlC,EAAQqL,EAAUqE,UAAUgb,SAAS1qB,MAAMuoB,EAAQnlB,GAAMxL,KAAK6rB,UAAUrgB,IACnJ,IAAK,MAAMuB,KAAY3E,EAAO,CAC1B,MAAM,GAAEtD,EAAE,GAAEC,EAAE,SAAEC,GAAaL,GAAa0mC,EAAet+B,EAAS3H,UAAWiP,EAAIrP,GAAY,EAAGiC,EAAWspC,EAAQr+B,MAAO0S,GAAUwoB,EAAgBnmC,EAAYoN,EAChK,GAAIA,GAAK+4B,EAAe,CACpB35B,EAAU88B,QAAQz4B,UAAUjX,KAAKkM,GACjC,MAAM+jC,EAAO,EAAO/uC,OAAO+C,EAAIC,GAC/B+rC,EAAK3vC,OAASyjB,EACd7X,EAAS9F,SAAS63B,MAAMgS,UAI/B,IAAmC,IAA/Br9B,EAAU88B,QAAQluB,SAAoB,CAC3C,IAAK,MAAMtV,KAAY0G,EAAU88B,QAAQz4B,UACrC/K,EAAS9F,SAAS63B,MAAM/xB,EAASoiB,iBAErC1b,EAAU88B,QAAQz4B,UAAY,IAGtC,eACI,MAAMrE,EAAYzT,KAAKyT,UAAW8L,EAAW9L,EAAU+L,cAAcC,MAAMra,SAAUgoC,EAAgB35B,EAAUgC,OAAO+6B,qBACjHpD,GAAiBA,EAAgB,IAAM7tB,GAG5Cvf,KAAK+wC,eAAexxB,EAAU6tB,EAAe,IAAI,GAAO7tB,EAAS5d,EAAG4d,EAAS9d,EAAG2rC,IAEpF,eAAehoC,EAAUgoC,EAAeplB,EAAM4oB,GAC1C,IAAInwC,EACJ,MAAMgT,EAAYzT,KAAKyT,UAAWrL,EAAQqL,EAAUqE,UAAUgb,SAAS1qB,MAAM4f,EAAOxc,GAAMxL,KAAK6rB,UAAUrgB,IAAKwlC,EAAiBv9B,EAAUkE,cAAc6H,cAAckG,MAAM6qB,QAC3K,GAAKS,EAGL,IAAK,MAAMjkC,KAAY3E,EAAO,CAC1B,MAAM,GAAEtD,EAAE,GAAEC,EAAE,SAAEC,GAAaL,GAAaoI,EAAS3H,SAAUA,GAAW6B,GAAgG,QAAnFxG,EAAoB,OAAfmwC,QAAsC,IAAfA,OAAwB,EAASA,EAAW1+B,aAA0B,IAAPzR,EAAgBA,EAAKuwC,EAAe9+B,OAAS8+B,EAAe9pC,OAAQ+pC,EAAgB1tC,EAAMJ,EAAU6tC,EAAejI,OAAzB5lC,CAAiC,EAAI6B,EAAWooC,GAAiBnmC,EAAU,EAAG+pC,EAAerqB,UAAWkjB,EAAU,EAAO9nC,OAAoB,IAAbiD,EAAiBiC,EAAYnC,EAAKE,EAAYisC,EAA4B,IAAbjsC,EAAiBiC,EAAYlC,EAAKC,EAAYisC,GACrflkC,EAAS3H,SAASk6B,MAAMuK,IAGhC,sBAAsBpiC,EAAU0D,GAC5B,MAAMsI,EAAYzT,KAAKyT,UAAW88B,EAAU98B,EAAUkE,cAAc6H,cAAckG,MAAM6qB,QACxF,IAAKA,EACD,OAEJ,MAAMnoC,EAAQJ,SAASsiC,iBAAiB7iC,GACnCW,EAAMjH,QAGXiH,EAAMrH,QAASlD,IACX,MAAM0sC,EAAO1sC,EAAMoe,EAAUxI,EAAUgC,OAAOC,WAAY1B,EAAM,CAC5DrS,GAAI4oC,EAAKC,WAAaD,EAAK3uB,YAAc,GAAKK,EAC9Cxa,GAAI8oC,EAAKE,UAAYF,EAAK5uB,aAAe,GAAKM,GAC/CmxB,EAAiB7C,EAAK3uB,YAAc,EAAKK,EAAS+L,EAAoB,WAAb7c,EAAI9M,KAC1D,IAAI,GAAO2V,EAAIrS,EAAGqS,EAAIvS,EAAG2rC,GACzB,IAAI,GAAU7C,EAAKC,WAAavuB,EAASsuB,EAAKE,UAAYxuB,EAASsuB,EAAK3uB,YAAcK,EAASsuB,EAAK5uB,aAAeM,GAAUjR,EAAOulC,EAAQvlC,KAAM4lC,EAAaxlC,GAAQJ,EAAMu/B,GACnLvqC,KAAK+wC,eAAe/8B,EAAKo5B,EAAeplB,EAAM4oB,MC1JnD7nC,eAAemoC,GAA+B9rB,SAC3CA,EAAOuX,cAAc,kBAAoBlpB,GAAc,IAAI,GAAS2R,EAAQ3R,ICF/E,MAAM09B,GACT,cACInxC,KAAKkH,OAAS,EACdlH,KAAK4J,OAAS,IAElB,KAAKtL,GACIA,SAGeuD,IAAhBvD,EAAK4I,SACLlH,KAAKkH,OAAS5I,EAAK4I,aAEHrF,IAAhBvD,EAAKsL,SACL5J,KAAK4J,OAAStL,EAAKsL,UCXxB,MAAM,WAAe+zB,GACxB,YAAYlqB,GACR1Q,MAAM0Q,GAEV,MAAM1G,EAAU2G,EAAOkR,GACf7X,EAAS2f,KAAKD,UAAY7H,IAG9B7X,EAAS2f,KAAKxlB,OAAS,GAE3B,OACI,MAAMuM,EAAYzT,KAAKyT,UAAWiZ,EAAOjZ,EAAUkE,cAAc6H,cAAckG,MAAMgH,KAChFA,IAGLjZ,EAAUgC,OAAO27B,eAAiB1kB,EAAK9iB,OAAS6J,EAAUgC,OAAOC,YAErE,kBAEA,UAAU3I,GACN,IAAItM,EACJ,MAAMgT,EAAYzT,KAAKyT,UAAWgM,EAAQhM,EAAU+L,cAAcC,MAAOM,GAAgG,QAArFtf,EAAkB,OAAbsM,QAAkC,IAAbA,OAAsB,EAASA,EAASyS,qBAAkC,IAAP/e,EAAgBA,EAAKgT,EAAUkE,cAAc6H,eAAeO,OAC7O,OAAOA,EAAO8B,QAAQpd,UAAYgb,EAAMra,UAAYyD,GAAU,OAAQkX,EAAO8B,QAAQ9W,MAEzF,gBAAgBvG,KAAY+F,GACnB/F,EAAQkoB,OACTloB,EAAQkoB,KAAO,IAAIykB,IAEvB,IAAK,MAAM7uC,KAAUiI,EACjB/F,EAAQkoB,KAAKtjB,KAAgB,OAAX9G,QAA8B,IAAXA,OAAoB,EAASA,EAAOoqB,MAGjF,MAAM3f,GACFA,EAAS2f,KAAKD,SAAU,EACxB,MAAMhZ,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cAAe4H,EAAW9L,EAAU+L,cAAcC,MAAMra,SAAUwE,EAAS6J,EAAUgC,OAAO27B,eAAgB1kB,EAAOloB,EAAQgb,cAAckG,MAAMgH,KACrM,IAAKA,IAAS9iB,GAAUA,EAAS,IAAM2V,EACnC,OAEJ,MAAM8xB,EAActkC,EAAStB,cAAe6lB,EAAOrsB,GAAYsa,EAAU8xB,GAAcC,EAAkBhgB,EAAO1nB,EAAQg+B,EAAalb,EAAKxlB,OACtIoqB,GAAQ1nB,IACRmD,EAAS2f,KAAKD,SAAU,EACxB1f,EAAS2f,KAAKxlB,OAASoqC,EAAkB1J,IC1C9C7+B,eAAewoC,GAA4BnsB,SACxCA,EAAOuX,cAAc,eAAiBlpB,GAAc,IAAI,GAAOA,ICDzE,MAAM+9B,GAAoB,uGAC1B,SAASC,GAAgBC,EAAY5iC,EAAOuB,GACxC,MAAM,QAAEshC,GAAYD,EACpB,IAAKC,EACD,MAAO,GAEX,MAAMC,EAAathC,GAAgBxB,EAAOuB,GAC1C,GAAIshC,EAAQnN,SAAS,QACjB,OAAOmN,EAAQvjC,QAAQojC,GAAmB,IAAMI,GAEpD,MAAMC,EAAeF,EAAQtwC,QAAQ,KACrC,MAAO,GAAGswC,EAAQG,UAAU,EAAGD,YAAuBD,KAAcD,EAAQG,UAAUD,KAEnF9oC,eAAegpC,GAAUt3B,GAC5B,OAAO,IAAIue,QAASC,IAChBxe,EAAMu3B,SAAU,EAChB,MAAMC,EAAM,IAAIC,MAChBz3B,EAAMnT,QAAU2qC,EAChBA,EAAIn0B,iBAAiB,OAAQ,KACzBrD,EAAMu3B,SAAU,EAChB/Y,MAEJgZ,EAAIn0B,iBAAiB,QAAS,KAC1BrD,EAAMnT,aAAUzF,EAChB4Y,EAAM2J,OAAQ,EACd3J,EAAMu3B,SAAU,EAChB7tB,QAAQC,MAAM,sCAAsC3J,EAAMnY,QAC1D22B,MAEJgZ,EAAIE,IAAM13B,EAAMnY,SAGjByG,eAAeqpC,GAAiB33B,GACnC,GAAmB,QAAfA,EAAMpc,KAEN,kBADM0zC,GAAUt3B,GAGpBA,EAAMu3B,SAAU,EAChB,MAAMhY,QAAiBC,MAAMxf,EAAMnY,QAC9B03B,EAASE,KACV/V,QAAQC,MAAM,uCACd3J,EAAM2J,OAAQ,GAEb3J,EAAM2J,QACP3J,EAAMk3B,cAAgB3X,EAASqY,QAEnC53B,EAAMu3B,SAAU,EAEb,SAASM,GAAkB73B,EAAO83B,EAAWzjC,EAAO/B,GACvD,IAAItM,EAAI2F,EAAIhH,EACZ,MAAMozC,EAAiBf,GAAgBh3B,EAAO3L,EAAwF,QAAhF1I,EAAiC,QAA3B3F,EAAKsM,EAASsD,eAA4B,IAAP5P,OAAgB,EAASA,EAAG4C,aAA0B,IAAP+C,EAAgBA,EAAK,GAAIqsC,EAAW,CAC9K3jC,QACAxQ,KAAM8d,OAAOC,OAAOD,OAAOC,OAAO,GAAI5B,GAAQ,CAAEk3B,QAASa,IACzDE,QAAQ,EACRnd,MAAOgd,EAAUtsC,MAAQssC,EAAUrsC,OACnCysC,aAAgD,QAAjCvzC,EAAKmzC,EAAUI,oBAAiC,IAAPvzC,EAAgBA,EAAKmzC,EAAUK,cACvFtwC,OAAQiwC,EAAUJ,KAEtB,OAAO,IAAInZ,QAASC,IAChB,MAAM4Z,EAAM,IAAIC,KAAK,CAACN,GAAiB,CAAEn0C,KAAM,kBAAoB00C,EAASC,KAAOjrC,OAAOirC,KAAOjrC,OAAOkrC,WAAalrC,OAAQgyB,EAAMgZ,EAAOG,gBAAgBL,GAAMZ,EAAM,IAAIC,MAC1KD,EAAIn0B,iBAAiB,OAAQ,KACzB20B,EAASC,QAAS,EAClBD,EAASnrC,QAAU2qC,EACnBhZ,EAAQwZ,GACRM,EAAOI,gBAAgBpZ,KAE3BkY,EAAIn0B,iBAAiB,QAAS/U,UAC1BgqC,EAAOI,gBAAgBpZ,GACvB,MAAMqZ,EAAOh3B,OAAOC,OAAOD,OAAOC,OAAO,GAAI5B,GAAQ,CAAE2J,OAAO,EAAO4tB,SAAS,UACxED,GAAUqB,GAChBX,EAASC,QAAS,EAClBD,EAASnrC,QAAU8rC,EAAK9rC,QACxB2xB,EAAQwZ,KAEZR,EAAIE,IAAMpY,IC1EX,MAAM,GACT,cACI/5B,KAAKqzC,QAAU,GAEnB,SAAS5/B,EAAWgH,GAChB,MAAM64B,EAAkBtzC,KAAKuzC,UAAU9/B,GACnB,OAApB6/B,QAAgD,IAApBA,GAAsCA,EAAgBvqB,OAAOloB,KAAK4Z,GAElG,UACIza,KAAKqzC,QAAU,GAEnB,KAAK9gC,EAASxF,EAAUnD,EAAQyG,GAC5B,IAAI5P,EACJ,MAAMga,EAAQ1N,EAAS0N,MAAOnT,EAAoB,OAAVmT,QAA4B,IAAVA,OAAmB,EAASA,EAAMnT,QAC5F,IAAKA,EACD,OAEJ,MAAMiuB,EAA6E,QAApE90B,EAAe,OAAVga,QAA4B,IAAVA,OAAmB,EAASA,EAAM8a,aAA0B,IAAP90B,EAAgBA,EAAK,EAAGuT,EAAM,CACrHrS,GAAIiI,EACJnI,GAAImI,GAER2I,EAAQihC,YAAcnjC,EACtBkC,EAAQkhC,UAAUnsC,EAAS0M,EAAIrS,EAAGqS,EAAIvS,EAAY,EAATmI,EAAsB,EAATA,EAAc2rB,GACpEhjB,EAAQihC,YAAc,EAE1B,UAAU//B,GACN,MAAM6/B,EAAkBtzC,KAAKqzC,QAAQ/lC,KAAMzF,GAAMA,EAAEwkB,KAAO5Y,EAAU4Y,IACpE,OAAKinB,IACDtzC,KAAKqzC,QAAQxyC,KAAK,CACdwrB,GAAI5Y,EAAU4Y,GACdtD,OAAQ,KAEL/oB,KAAKuzC,UAAU9/B,IAM9B,gBACI,OAAO,GAEX,UAAU1G,GACN,GAAuB,UAAnBA,EAASsI,OAAwC,WAAnBtI,EAASsI,MACvC,OAEJ,MAAM5B,EAAY1G,EAAS0G,UAAWsV,EAAS/oB,KAAKuzC,UAAU9/B,GAAWsV,OAAQwpB,EAAYxlC,EAASghB,UAAWtT,EAAQsO,EAAOzb,KAAMzF,GAAMA,EAAEvF,SAAWiwC,EAAUJ,KAC9J13B,GACDza,KAAK0zC,eAAejgC,EAAW8+B,GAAWnM,KAAK,KAC3CpmC,KAAK4oB,UAAU7b,KAI3B,aAAa0G,EAAW1G,GACpB,IAAItM,EACJ,GAAuB,UAAnBsM,EAASsI,OAAwC,WAAnBtI,EAASsI,MACvC,OAEJ,MAAM0T,EAAS/oB,KAAKuzC,UAAU9/B,GAAWsV,OAAQwpB,EAAYxlC,EAASghB,UAAWjf,EAAQ/B,EAASkE,eAAgB0hC,EAAiD,QAAjClyC,EAAK8xC,EAAUI,oBAAiC,IAAPlyC,EAAgBA,EAAK8xC,EAAUK,cAAen4B,EAAQsO,EAAOzb,KAAMzF,GAAMA,EAAEvF,SAAWiwC,EAAUJ,KACtQ13B,IAGDA,EAAMu3B,QACNzpC,WAAW,KACPvI,KAAK8vB,aAAarc,EAAW1G,KAIrC,WACI,IAAItM,EAAI2F,EACR,IAAIqsC,EAEAA,EADAh4B,EAAMk3B,SAAW7iC,QACAwjC,GAAkB73B,EAAO83B,EAAWzjC,EAAO/B,GAGjD,CACP+B,QACAxQ,KAAMmc,EACNnT,QAASmT,EAAMnT,QACforC,QAAQ,EACRnd,MAAOgd,EAAUtsC,MAAQssC,EAAUrsC,OACnCysC,aAAcA,EACdrwC,OAAQiwC,EAAUJ,KAGrBM,EAASld,QACVkd,EAASld,MAAQ,GAErB,MAAM1gB,EAAiC,QAAzBpU,EAAK8xC,EAAU19B,YAAyB,IAAPpU,EAAgBA,EAAKsM,EAAS8H,KAAMM,EAAmC,QAA1B/O,EAAKmsC,EAAUp9B,aAA0B,IAAP/O,EAAgBA,EAAK2G,EAASoI,MAAOu8B,EAAa,CAC5Kj3B,MAAOg4B,EACP59B,OACAM,SAEJpI,EAAS0N,MAAQi3B,EAAWj3B,MAC5B1N,EAAS8H,KAAO68B,EAAW78B,KAC3B9H,EAASoI,MAAQu8B,EAAWv8B,OA3BhC,IA8BJ,qBAAqB1B,EAAWi+B,GAC5B,IAAIjxC,EACJ,MAAM6B,EAASovC,EAAWS,IAC1B,IAAK7vC,EACD,MAAM,IAAIR,MAAM,oCAEpB,IACI,MAAM2Y,EAAQ,CACVnY,OAAQA,EACRjE,KAAMiE,EAAOwvC,UAAUxvC,EAAOnB,OAAS,GACvCijB,OAAO,EACP4tB,SAAS,GAEbhyC,KAAK2zC,SAASlgC,EAAWgH,GACzB,MAAMm5B,GAAgD,QAAlCnzC,EAAKixC,EAAWiB,oBAAiC,IAAPlyC,EAAgBA,EAAKixC,EAAWkB,eAAiBR,GAAmBL,SAC5H6B,EAAUn5B,GAEpB,MAAOrU,GACH,MAAM,IAAItE,MAAM,uBAAuB4vC,EAAWS,mBCnHvDppC,eAAe2qC,GAAetuB,GACjC,MAAMyuB,EAAc,IAAI,SAClBzuB,EAAO+f,SAAS,QAAS0O,SACzBzuB,EAAO+f,SAAS,SAAU0O,GCH7B,MAAM,WAAkB,GAC3B,cACI9wC,QACA/C,KAAKqS,MAAO,EAEhB,KAAK/T,GACIA,IAGLyE,MAAMqG,KAAK9K,QACOuD,IAAdvD,EAAK+T,OACLrS,KAAKqS,KAAO/T,EAAK+T,QCXtB,MAAM,WAAqB,GAC9B,cACItP,QACA/C,KAAKiD,OAAOyB,aAAe,KAC3B1E,KAAKqS,MAAO,EAEhB,KAAK/T,GACIA,IAGLyE,MAAMqG,KAAK9K,QACOuD,IAAdvD,EAAK+T,OACLrS,KAAKqS,KAAO/T,EAAK+T,QCXtB,MAAM,GACT,cACIrS,KAAK+lB,MAAQ,EACb/lB,KAAK4mB,MAAQ,IAAI,GACjB5mB,KAAKikB,SAAW,IAAI,GAExB,KAAK3lB,GACIA,SAGcuD,IAAfvD,EAAKynB,QACL/lB,KAAK+lB,MAAQznB,EAAKynB,OAEtB/lB,KAAK4mB,MAAMxd,KAAK9K,EAAKsoB,OACrB5mB,KAAKikB,SAAS7a,KAAK9K,EAAK2lB,YCdzB,MAAM,GACT,YAAYxQ,GACRzT,KAAKyT,UAAYA,EAErB,KAAK1G,GACD,MAAM0G,EAAYzT,KAAKyT,UAAWka,EAAmB5gB,EAASvI,QAASsvC,EAAcnmB,EAAiB8T,KACjGqS,IAGL/mC,EAAS00B,KAAO,CACZ7a,MAAOnT,EAAUgC,OAAO5D,aAChBxN,GAAcyvC,EAAYltB,MAAMvjB,QAAUywC,EAAYltB,MAAMvU,KAAO,EAAI/O,KACvEmQ,EAAUgC,OAAO5D,aACjB,IACF,EACNkiC,UAAW,EACX9vB,SAAUxQ,EAAUgC,OAAO5D,aACnBxN,GAAcyvC,EAAY7vB,SAAS5gB,QAAUywC,EAAY7vB,SAAS5R,KAAO,EAAI/O,KAC7EmQ,EAAUgC,OAAO5D,aACjB,IACF,EACNmiC,KAAM,EACNjuB,MAAO+tB,EAAY/tB,OAEnBhZ,EAAS00B,KAAKxd,UAAY,IAC1BlX,EAAS00B,KAAKxd,UAAY,GAE1BlX,EAAS00B,KAAK1b,OAAS,IACvBhZ,EAAS00B,KAAK1b,OAAS,GAEvBhZ,EAAS00B,OACT10B,EAASyL,SAAWzL,EAAS00B,KAAK7a,MAAQ,IAGlD,UAAU7Z,GACN,OAAQA,EAAS0L,UAErB,YAAYjU,KAAY+F,GACf/F,EAAQi9B,OACTj9B,EAAQi9B,KAAO,IAAI,IAEvB,IAAK,MAAMn/B,KAAUiI,EACjB/F,EAAQi9B,KAAKr4B,KAAgB,OAAX9G,QAA8B,IAAXA,OAAoB,EAASA,EAAOm/B,MAGjF,OAAO10B,EAAU2G,GACb,IAAK1T,KAAK6rB,UAAU9e,KAAcA,EAAS00B,KACvC,OAEJ,MAAMA,EAAO10B,EAAS00B,KACtB,IAAIwS,GAAc,EAClB,GAAIlnC,EAASyL,SAAU,CAEnB,GADAipB,EAAKsS,WAAargC,EAAMrQ,QACpBo+B,EAAKsS,WAAahnC,EAAS00B,KAAK7a,OAOhC,OANAqtB,GAAc,EACdlnC,EAASyL,UAAW,EACpBipB,EAAKsS,UAAY,EACjBtS,EAAKuS,KAAO,EAMpB,IAAuB,IAAnBvS,EAAKxd,SACL,OAEJ,GAAIlX,EAASyL,SACT,OAQJ,GANIy7B,EACAxS,EAAKuS,KAAO,EAGZvS,EAAKuS,MAAQtgC,EAAMrQ,MAEnBo+B,EAAKuS,KAAOvS,EAAKxd,SACjB,OAMJ,GAJAwd,EAAKuS,KAAO,EACRjnC,EAAS00B,KAAK1b,MAAQ,GACtBhZ,EAAS00B,KAAK1b,QAEU,IAAxBhZ,EAAS00B,KAAK1b,MAEd,YADAhZ,EAASmX,UAGb,MAAM8K,EAAahvB,KAAKyT,UAAU8H,OAAOvV,KAAMkuC,EAAa5vC,GAAc,EAAG0qB,EAAW/oB,OAAQkuC,EAAc7vC,GAAc,EAAG0qB,EAAW/oB,OAC1I8G,EAAS3H,SAASzD,EAAIsC,EAAciwC,GACpCnnC,EAAS3H,SAAS3D,EAAIwC,EAAckwC,GACpCpnC,EAASyL,UAAW,EACpBipB,EAAKsS,UAAY,EACjBtS,EAAKuS,KAAO,EACZjnC,EAASgf,QACT,MAAM+nB,EAAc/mC,EAASvI,QAAQi9B,KACjCqS,IACArS,EAAK7a,MAAiD,IAAzCviB,GAAcyvC,EAAYltB,MAAMvjB,OAC7Co+B,EAAKxd,SAAuD,IAA5C5f,GAAcyvC,EAAY7vB,SAAS5gB,SCjGxD0F,eAAeqrC,GAAgBhvB,SAC5BA,EAAO2X,mBAAmB,OAAStpB,GAAc,IAAI,GAAYA,ICFpE,MAAM4gC,GACT,KAAK9hC,EAASxF,EAAUnD,GACpB2I,EAAQI,QAAQ/I,EAAS,EAAG,GAC5B2I,EAAQK,OAAOhJ,EAAS,EAAG,GAE/B,gBACI,OAAO,GCLRb,eAAeurC,GAAclvB,SAC1BA,EAAO+f,SAAS,OAAQ,IAAIkP,ICDtC,SAASE,GAAaxnC,EAAU1J,EAAOmxC,EAAU/Q,GAC7C,OAAQ12B,EAASvI,QAAQ6L,QAAQqB,UAAUwS,SACvC,IAAK,MACG7gB,GAASogC,GACT12B,EAASmX,UAEb,MACJ,IAAK,MACG7gB,GAASmxC,GACTznC,EAASmX,UAEb,OAGZ,SAASuwB,GAAc1nC,EAAU2G,GAC7B,IAAIjT,EAAI2F,EAAIhH,EAAIiH,EAAI7G,EAAIgU,EACxB,IAAKzG,EAASsD,QACV,OAEJ,MAAMmkC,EAAWznC,EAASsD,QAAQ5M,IAAKggC,EAAW12B,EAASsD,QAAQ3M,IAAKyO,EAA0C,QAAjC1R,EAAKsM,EAASsD,QAAQ8B,aAA0B,IAAP1R,EAAgBA,EAAK,EAC/I,KAAIsM,EAAS0L,YACR1L,EAASsD,QAAQ5L,SACqB,QAApC2B,EAAK2G,EAASsD,QAAQue,gBAA6B,IAAPxoB,EAAgBA,EAAK,GAAK,IAAwC,QAAjChH,EAAK2N,EAASsD,QAAQse,aAA0B,IAAPvvB,EAAgBA,EAAK,IAA2C,QAApCiH,EAAK0G,EAASsD,QAAQue,gBAA6B,IAAPvoB,EAAgBA,EAAK,IAF1N,CAKA,OAAQ0G,EAASsD,QAAQ+B,QACrB,KAAK,EACGrF,EAASsD,QAAQhN,OAASogC,GAC1B12B,EAASsD,QAAQ+B,OAAS,EACrBrF,EAASsD,QAAQse,QAClB5hB,EAASsD,QAAQse,MAAQ,GAE7B5hB,EAASsD,QAAQse,SAGjB5hB,EAASsD,QAAQhN,QAA+C,QAApC7D,EAAKuN,EAASsD,QAAQpJ,gBAA6B,IAAPzH,EAAgBA,EAAK,GAAKkU,EAAMxM,OAE5G,MACJ,KAAK,EACG6F,EAASsD,QAAQhN,OAASmxC,GAC1BznC,EAASsD,QAAQ+B,OAAS,EACrBrF,EAASsD,QAAQse,QAClB5hB,EAASsD,QAAQse,MAAQ,GAE7B5hB,EAASsD,QAAQse,SAGjB5hB,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,GAEjCoiC,GAAaxnC,EAAUA,EAASsD,QAAQhN,MAAOmxC,EAAU/Q,GACpD12B,EAAS0L,YACV1L,EAASsD,QAAQhN,MAAQE,EAAMwJ,EAASsD,QAAQhN,MAAOmxC,EAAU/Q,KAGlE,MAAM,GACT,YAAYhwB,GACRzT,KAAKyT,UAAYA,EAErB,KAAK1G,GACD,MAAM2nC,EAAiB3nC,EAASvI,QAAQ6L,QACxCtD,EAASsD,QAAU,CACf5L,OAAQiwC,EAAehjC,UAAUjN,OACjCf,IAAKS,GAAYuwC,EAAerxC,OAChCI,IAAKW,GAAYswC,EAAerxC,OAChCA,MAAOgB,GAAcqwC,EAAerxC,OACpCsrB,MAAO,EACPC,SAAUvqB,GAAcqwC,EAAehjC,UAAUqU,QAErD,MAAM4uB,EAAmBD,EAAehjC,UACxC,GAAIijC,EAAiBlwC,OAAQ,CACzBsI,EAASsD,QAAQ8B,MAAQ,EAAI9N,GAAcswC,EAAiBxiC,OAC5DpF,EAASsD,QAAQ+B,OAAS,EAC1B,MAAMwiC,EAAeF,EAAerxC,MAGpC,OAFA0J,EAASsD,QAAQ5M,IAAMW,GAAYwwC,GACnC7nC,EAASsD,QAAQ3M,IAAMS,GAAYywC,GAC3BD,EAAiB/sB,YACrB,IAAK,MACD7a,EAASsD,QAAQhN,MAAQ0J,EAASsD,QAAQ5M,IAC1CsJ,EAASsD,QAAQ+B,OAAS,EAC1B,MACJ,IAAK,SACDrF,EAASsD,QAAQhN,MAAQY,EAAc8I,EAASsD,SAChDtD,EAASsD,QAAQ+B,OACb9O,KAAe,GAAM,EAAI,EAC7B,MACJ,IAAK,MACL,QACIyJ,EAASsD,QAAQhN,MAAQ0J,EAASsD,QAAQ3M,IAC1CqJ,EAASsD,QAAQ+B,OAAS,EAC1B,MAERrF,EAASsD,QAAQpJ,SACZ5C,GAAcswC,EAAiBziC,OAAS,IAAOlS,KAAKyT,UAAUgC,OAAO5D,aACrE8iC,EAAiBtiC,OAClBtF,EAASsD,QAAQpJ,UAAY3D,MAIzC,UAAUyJ,GACN,IAAItM,EAAI2F,EAAIhH,EAAIiH,EAChB,OAAS0G,EAAS0L,YACb1L,EAASyL,YACRzL,EAASsD,SACXtD,EAASsD,QAAQ5L,UACsB,QAApChE,EAAKsM,EAASsD,QAAQue,gBAA6B,IAAPnuB,EAAgBA,EAAK,IAAM,IAC/B,QAApC2F,EAAK2G,EAASsD,QAAQue,gBAA6B,IAAPxoB,EAAgBA,EAAK,GAAK,IAClC,QAAjChH,EAAK2N,EAASsD,QAAQse,aAA0B,IAAPvvB,EAAgBA,EAAK,IAA2C,QAApCiH,EAAK0G,EAASsD,QAAQue,gBAA6B,IAAPvoB,EAAgBA,EAAK,IAExJ,MAAM0G,GACEA,EAASsD,UACTtD,EAASsD,QAAQse,MAAQ,GAGjC,OAAO5hB,EAAU2G,GACR1T,KAAK6rB,UAAU9e,IAGpB0nC,GAAc1nC,EAAU2G,IC1HzB3K,eAAe8rC,GAAmBzvB,SAC/BA,EAAO2X,mBAAmB,UAAYtpB,GAAc,IAAI,GAAeA,ICD1E,SAASqhC,GAAiBx2C,GAC7B,GAAqB,WAAjBA,EAAKmpB,SACY,sBAAjBnpB,EAAKmpB,SACY,qBAAjBnpB,EAAKmpB,SACY,UAAjBnpB,EAAKmpB,QACL,OAEAnpB,EAAKyL,OAAOG,MAAQ,EACpB5L,EAAKyO,SAAS3H,SAASzD,EAAIrD,EAAK0H,KAAO1H,EAAKqL,OAAOhI,EAE9CrD,EAAKyL,OAAOI,KAAO7L,EAAK0wB,WAAW/oB,QACxC3H,EAAKyO,SAAS3H,SAASzD,EAAIrD,EAAK0wB,WAAW/oB,MAAQ3H,EAAK0H,KAAO1H,EAAKqL,OAAOhI,GAE/E,MAAMsF,EAAW3I,EAAKyO,SAAS9F,SAAStF,EACxC,IAAIyF,GAAU,EACd,GAAwB,UAAnB9I,EAAK6G,WAAyB7G,EAAKyL,OAAOG,OAAS5L,EAAK0wB,WAAW/oB,OAASgB,EAAW,GACpE,SAAnB3I,EAAK6G,WAAwB7G,EAAKyL,OAAOI,MAAQ,GAAKlD,EAAW,EAAI,CACtE,MAAM8tC,EAAcxwC,GAASjG,EAAKyO,SAASvI,QAAQqH,OAAOC,YAC1DxN,EAAKyO,SAAS9F,SAAStF,IAAMozC,EAC7B3tC,GAAU,EAEd,IAAKA,EACD,OAEJ,MAAM4tC,EAAS12C,EAAKqL,OAAOhI,EAAIrD,EAAK0H,KAChC1H,EAAKyL,OAAOG,OAAS5L,EAAK0wB,WAAW/oB,MACrC3H,EAAKyO,SAAS3H,SAASzD,EAAIrD,EAAK0wB,WAAW/oB,MAAQ+uC,EAE9C12C,EAAKyL,OAAOI,MAAQ,IACzB7L,EAAKyO,SAAS3H,SAASzD,EAAIqzC,GAEV,UAAjB12C,EAAKmpB,SACLnpB,EAAKyO,SAASmX,UAGf,SAAS+wB,GAAe32C,GAC3B,GAAqB,WAAjBA,EAAKmpB,SACY,oBAAjBnpB,EAAKmpB,SACY,mBAAjBnpB,EAAKmpB,SACY,UAAjBnpB,EAAKmpB,QACL,OAEAnpB,EAAKyL,OAAOK,OAAS,EACrB9L,EAAKyO,SAAS3H,SAAS3D,EAAInD,EAAK0H,KAAO1H,EAAKqL,OAAOlI,EAE9CnD,EAAKyL,OAAOE,IAAM3L,EAAK0wB,WAAW9oB,SACvC5H,EAAKyO,SAAS3H,SAAS3D,EAAInD,EAAK0wB,WAAW9oB,OAAS5H,EAAK0H,KAAO1H,EAAKqL,OAAOlI,GAEhF,MAAMwF,EAAW3I,EAAKyO,SAAS9F,SAASxF,EACxC,IAAI2F,GAAU,EACd,GAAwB,WAAnB9I,EAAK6G,WAA0B7G,EAAKyL,OAAOK,QAAU9L,EAAK0wB,WAAW9oB,QAAUe,EAAW,GACvE,QAAnB3I,EAAK6G,WAAuB7G,EAAKyL,OAAOE,KAAO,GAAKhD,EAAW,EAAI,CACpE,MAAM8tC,EAAcxwC,GAASjG,EAAKyO,SAASvI,QAAQqH,OAAOE,UAC1DzN,EAAKyO,SAAS9F,SAASxF,IAAMszC,EAC7B3tC,GAAU,EAEd,IAAKA,EACD,OAEJ,MAAM4tC,EAAS12C,EAAKqL,OAAOlI,EAAInD,EAAK0H,KAChC1H,EAAKyL,OAAOK,QAAU9L,EAAK0wB,WAAW9oB,OACtC5H,EAAKyO,SAAS3H,SAAS3D,EAAInD,EAAK0wB,WAAW9oB,OAAS8uC,EAE/C12C,EAAKyL,OAAOE,KAAO,IACxB3L,EAAKyO,SAAS3H,SAAS3D,EAAIuzC,GAEV,UAAjB12C,EAAKmpB,SACLnpB,EAAKyO,SAASmX,UClEf,MAAM,GACT,YAAYzQ,GACRzT,KAAKyT,UAAYA,EACjBzT,KAAK0lB,MAAQ,CACT,SACA,kBACA,oBACA,iBACA,mBACA,SAGR,OAAO3Y,EAAU5H,EAAWuO,EAAO+T,GAC/B,IAAKznB,KAAK0lB,MAAM8e,SAAS/c,GACrB,OAEJ,MAAMhU,EAAYzT,KAAKyT,UACvB,IAAI8O,GAAU,EACd,IAAK,MAAO,CAAE1M,KAAWpC,EAAUqH,QAI/B,QAH8BjZ,IAA1BgU,EAAOq/B,iBACP3yB,EAAU1M,EAAOq/B,eAAenoC,EAAU2G,EAAOvO,IAEjDod,EACA,MAGR,GAAIA,EACA,OAEJ,MAAMvO,EAAMjH,EAAStB,cAAe9B,EAASoD,EAASpD,OAAQ3D,EAAO+G,EAASrB,YAAa3B,EAASD,GAAgBkK,EAAKhO,GAAOgpB,EAAavb,EAAU8H,OAAOvV,KAC9J8uC,GAAiB,CAAE/nC,WAAU0a,UAAStiB,YAAW4E,SAAQilB,aAAYrlB,SAAQ3D,SAC7EivC,GAAe,CAAEloC,WAAU0a,UAAStiB,YAAW4E,SAAQilB,aAAYrlB,SAAQ3D,UChC5E,MAAM,GACT,YAAYyN,GACRzT,KAAKyT,UAAYA,EACjBzT,KAAK0lB,MAAQ,CAAC,WAElB,OAAO3Y,EAAU5H,EAAWuO,EAAO+T,GAC/B,IAAKznB,KAAK0lB,MAAM8e,SAAS/c,GACrB,OAEJ,MAAMhU,EAAYzT,KAAKyT,UACvB,OAAQ1G,EAASygB,SACb,IAAK,SACL,IAAK,UACD,GAAI/jB,GAAcsD,EAAS3H,SAAUqO,EAAU8H,OAAOvV,KAAM,EAAOP,OAAQsH,EAASrB,YAAavG,GAC7F,OAEJ,MACJ,IAAK,SAAU,CACX,MAAM,GAAEL,EAAE,GAAEC,GAAOJ,GAAaoI,EAAS3H,SAAU2H,EAASkiB,aACpDttB,EAAGwzC,EAAI1zC,EAAG2zC,GAAOroC,EAAS9F,SAClC,GAAKkuC,EAAK,GAAKrwC,EAAKiI,EAASkiB,WAAWrlB,QACnCwrC,EAAK,GAAKrwC,EAAKgI,EAASkiB,WAAWrlB,QACnCurC,GAAM,GAAKrwC,GAAMiI,EAASkiB,WAAWrlB,QACrCwrC,GAAM,GAAKrwC,GAAMgI,EAASkiB,WAAWrlB,OACtC,OAEJ,OAGR6J,EAAUqE,UAAUO,OAAOtL,OAAUlL,GAAW,IC7BjD,MAAM,GACT,YAAY4R,GACRzT,KAAKyT,UAAYA,EACjBzT,KAAK0lB,MAAQ,CAAC,QAElB,OAAO3Y,EAAU5H,EAAWuO,EAAO+T,GAC/B,IAAKznB,KAAK0lB,MAAM8e,SAAS/c,GACrB,OAEJ,GAAK1a,EAASvI,QAAQuT,KAAK/S,SAAS8G,aACjB,SAAd3G,GAAsC,UAAdA,IACxB4H,EAASvI,QAAQuT,KAAK/S,SAAS+G,WACb,QAAd5G,GAAqC,WAAdA,GAC5B,OAEJ,MAAMoiC,EAAiBx6B,EAASvI,QAAQuT,KAAKkP,QAASxT,EAAYzT,KAAKyT,UACjEub,EAAavb,EAAU8H,OAAOvV,KAC9BqvC,EAAUtoC,EAASrB,YACzB,GAAK67B,EAAe9iC,OAWf,CACD,MAAMW,EAAW2H,EAAS3H,WACpBmiC,EAAe7gB,SACjBthB,EAAS3D,EAAIutB,EAAW9oB,OAASmvC,GACnB,WAAdlwC,GACCoiC,EAAe7gB,SAAWthB,EAAS3D,GAAK4zC,GAAyB,QAAdlwC,IACpDsO,EAAUqE,UAAUO,OAAOtL,OAjBP,CACxB,GAAKA,EAAS9F,SAASxF,EAAI,GAAKsL,EAAS3H,SAAS3D,GAAKutB,EAAW9oB,OAASmvC,GACtEtoC,EAAS9F,SAASxF,EAAI,GAAKsL,EAAS3H,SAAS3D,IAAM4zC,GACnDtoC,EAAS9F,SAAStF,EAAI,GAAKoL,EAAS3H,SAASzD,GAAKqtB,EAAW/oB,MAAQovC,GACrEtoC,EAAS9F,SAAStF,EAAI,GAAKoL,EAAS3H,SAASzD,IAAM0zC,EACpD,OAEC5rC,GAAcsD,EAAS3H,SAAUqO,EAAU8H,OAAOvV,KAAM,EAAOP,OAAQ4vC,EAASlwC,IACjFsO,EAAUqE,UAAUO,OAAOtL,KC1BpC,MAAM,GACT,YAAY0G,GACRzT,KAAKyT,UAAYA,EACjBzT,KAAK0lB,MAAQ,CAAC,OAElB,OAAO3Y,EAAU5H,EAAWuO,EAAO+T,GAC/B,IAAKznB,KAAK0lB,MAAM8e,SAAS/c,GACrB,OAEJ,MAAMhU,EAAYzT,KAAKyT,UACvB,OAAQ1G,EAASygB,SACb,IAAK,SAAU,CACX,MAAQ7rB,EAAGwzC,EAAI1zC,EAAG2zC,GAAOroC,EAAS9F,SAC5BquC,EAAU,EAAO7vC,OACvB6vC,EAAQn0C,OAAS4L,EAASkiB,WAAWrlB,OACrC0rC,EAAQpzC,MAAQ6K,EAAS9F,SAAS/E,MAAQF,KAAKsD,GAC/CgwC,EAAQhW,MAAM,EAAOv9B,OAAOgL,EAASkiB,aACrC,MAAM,GAAEnqB,EAAE,GAAEC,GAAOJ,GAAaoI,EAAS3H,SAAUkwC,GACnD,GAAKH,GAAM,GAAKrwC,GAAM,GAAOswC,GAAM,GAAKrwC,GAAM,GAAOowC,GAAM,GAAKrwC,GAAM,GAAOswC,GAAM,GAAKrwC,GAAM,EAC1F,OAEJgI,EAAS3H,SAASzD,EAAIK,KAAKgC,MAAMC,EAAc,CAC3CR,IAAK,EACLC,IAAK+P,EAAU8H,OAAOvV,KAAKC,SAE/B8G,EAAS3H,SAAS3D,EAAIO,KAAKgC,MAAMC,EAAc,CAC3CR,IAAK,EACLC,IAAK+P,EAAU8H,OAAOvV,KAAKE,UAE/B,MAAQpB,GAAIywC,EAAOxwC,GAAIywC,GAAU7wC,GAAaoI,EAAS3H,SAAU2H,EAASkiB,YAC1EliB,EAAS5H,UAAYnD,KAAKC,OAAOuzC,GAAQD,GACzCxoC,EAAS9F,SAAS/E,MAAQ6K,EAAS5H,UACnC,MAEJ,QACI,GAAIsE,GAAcsD,EAAS3H,SAAUqO,EAAU8H,OAAOvV,KAAM,EAAOP,OAAQsH,EAASrB,YAAavG,GAC7F,OAEJ,OAAQ4H,EAASygB,SACb,IAAK,UAAW,CACZzgB,EAAS3H,SAASzD,EACdK,KAAKgC,MAAMC,EAAc,CACrBR,KAAMsJ,EAASkiB,WAAWrlB,OAC1BlG,IAAKqJ,EAASkiB,WAAWrlB,UACvBmD,EAASkiB,WAAWttB,EAC9BoL,EAAS3H,SAAS3D,EACdO,KAAKgC,MAAMC,EAAc,CACrBR,KAAMsJ,EAASkiB,WAAWrlB,OAC1BlG,IAAKqJ,EAASkiB,WAAWrlB,UACvBmD,EAASkiB,WAAWxtB,EAC9B,MAAM,GAAEqD,EAAE,GAAEC,GAAOJ,GAAaoI,EAAS3H,SAAU2H,EAASkiB,YACxDliB,EAASkiB,WAAWrlB,SACpBmD,EAAS5H,UAAYnD,KAAKC,MAAM8C,EAAID,GACpCiI,EAAS9F,SAAS/E,MAAQ6K,EAAS5H,WAEvC,MAEJ,IAAK,SAAU,CACX,MAAMswC,EAAO1oC,EAASvI,QAAQuT,KAAKwP,KAAMyH,EAAavb,EAAU8H,OAAOvV,KAAM0vC,EAAS,CAClFtrC,OAAQ4kB,EAAW9oB,OAAS6G,EAASrB,YAAcqB,EAASpD,OAAOlI,EACnE0I,MAAO4C,EAASrB,YAAcqB,EAASpD,OAAOhI,EAC9CuI,MAAO8kB,EAAW/oB,MAAQ8G,EAASrB,YAAcqB,EAASpD,OAAOhI,EACjEsI,KAAM8C,EAASrB,YAAcqB,EAASpD,OAAOlI,GAC9Ck0C,EAAY5oC,EAASrB,YAAakqC,EAAa9rC,GAAgBiD,EAAS3H,SAAUuwC,GACnE,UAAdxwC,GACAywC,EAAWzrC,KAAO6kB,EAAW/oB,MAAQ8G,EAASpD,OAAOhI,GACrDoL,EAAS3H,SAASzD,EAAI+zC,EAAOvrC,KAC7B4C,EAAS+hB,gBAAgBntB,EAAIoL,EAAS3H,SAASzD,EAC1C8zC,IACD1oC,EAAS3H,SAAS3D,EAAI6B,IAAc0rB,EAAW9oB,OAC/C6G,EAAS+hB,gBAAgBrtB,EAAIsL,EAAS3H,SAAS3D,IAGhC,SAAd0D,GAAwBywC,EAAW1rC,OAAS6C,EAASpD,OAAOhI,IACjEoL,EAAS3H,SAASzD,EAAI+zC,EAAOxrC,MAC7B6C,EAAS+hB,gBAAgBntB,EAAIoL,EAAS3H,SAASzD,EAC1C8zC,IACD1oC,EAAS3H,SAAS3D,EAAI6B,IAAc0rB,EAAW9oB,OAC/C6G,EAAS+hB,gBAAgBrtB,EAAIsL,EAAS3H,SAAS3D,IAGrC,WAAd0D,GACAywC,EAAW3rC,IAAM+kB,EAAW9oB,OAAS6G,EAASpD,OAAOlI,GAChDg0C,IACD1oC,EAAS3H,SAASzD,EAAI2B,IAAc0rB,EAAW/oB,MAC/C8G,EAAS+hB,gBAAgBntB,EAAIoL,EAAS3H,SAASzD,GAEnDoL,EAAS3H,SAAS3D,EAAIi0C,EAAOzrC,IAC7B8C,EAAS+hB,gBAAgBrtB,EAAIsL,EAAS3H,SAAS3D,GAE5B,QAAd0D,GAAuBywC,EAAWxrC,QAAU2C,EAASpD,OAAOlI,IAC5Dg0C,IACD1oC,EAAS3H,SAASzD,EAAI2B,IAAc0rB,EAAW/oB,MAC/C8G,EAAS+hB,gBAAgBntB,EAAIoL,EAAS3H,SAASzD,GAEnDoL,EAAS3H,SAAS3D,EAAIi0C,EAAOtrC,OAC7B2C,EAAS+hB,gBAAgBrtB,EAAIsL,EAAS3H,SAAS3D,GAEnD,OAGR,QClGT,MAAM,GACT,YAAYgS,GACRzT,KAAKyT,UAAYA,EACjBzT,KAAKkb,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,IAAIjT,EAAI2F,EAAIhH,EAAIiH,EAChB,MAAM8gB,EAAWpa,EAASvI,QAAQuT,KAAKoP,SACvCnnB,KAAK61C,cAAc9oC,EAAU2G,EAAkC,QAA1BjT,EAAK0mB,EAAS/c,cAA2B,IAAP3J,EAAgBA,EAAK0mB,EAAS/oB,QAAS,UAC9G4B,KAAK61C,cAAc9oC,EAAU2G,EAAgC,QAAxBtN,EAAK+gB,EAAShd,YAAyB,IAAP/D,EAAgBA,EAAK+gB,EAAS/oB,QAAS,QAC5G4B,KAAK61C,cAAc9oC,EAAU2G,EAAiC,QAAzBtU,EAAK+nB,EAASjd,aAA0B,IAAP9K,EAAgBA,EAAK+nB,EAAS/oB,QAAS,SAC7G4B,KAAK61C,cAAc9oC,EAAU2G,EAA+B,QAAvBrN,EAAK8gB,EAASld,WAAwB,IAAP5D,EAAgBA,EAAK8gB,EAAS/oB,QAAS,OAE/G,cAAc2O,EAAU2G,EAAO+T,EAAStiB,GACpC,IAAK,MAAM8V,KAAWjb,KAAKkb,SACvBD,EAAQqY,OAAOvmB,EAAU5H,EAAWuO,EAAO+T,IC5BhD1e,eAAe+sC,GAAoB1wB,SAChCA,EAAO2X,mBAAmB,WAAatpB,GAAc,IAAI,GAAmBA,ICD/E,MAAM,GACT,QAEA,UAAU1G,GACN,OAASjF,OACJiF,EAAS0L,WACV1L,EAAS0G,UAAUkE,cAAc6H,cAAcO,OAAO8B,QAAQgD,SAASpgB,OAE/E,KAAKsI,GACD,MAAM0G,EAAY1G,EAAS0G,UAAWjP,EAAUiP,EAAUkE,cAC1D,GAAI7P,OAAYtD,EAAQgb,cAAcO,OAAO8B,QAAQgD,SAASpgB,OAC1D,OAEJ,MAAMsxC,EAAgBvxC,EAAQgb,cAAcO,OAAO8B,QAAQgD,SAASD,MAAOrF,EAAW9L,EAAU+L,cAAcC,MAAMra,SACpH,IAAKma,EACD,OAEJ,MAAMy2B,EAAe,CACjBr0C,EAAG8R,EAAU8H,OAAOvV,KAAKC,MAAQ,EACjCxE,EAAGgS,EAAU8H,OAAOvV,KAAKE,OAAS,GACnC+vC,EAAiBzxC,EAAQgb,cAAcO,OAAO8B,QAAQgD,SAASjB,OAAQ1c,EAAS6F,EAASrB,YAAcqqC,EAAeG,EAAiB,CACtIv0C,GAAI4d,EAAS5d,EAAIq0C,EAAar0C,GAAKuF,EACnCzF,GAAI8d,EAAS9d,EAAIu0C,EAAav0C,GAAKyF,GAEvC6F,EAASpD,OAAOhI,IAAMu0C,EAAev0C,EAAIoL,EAASpD,OAAOhI,GAAKs0C,EAC9DlpC,EAASpD,OAAOlI,IAAMy0C,EAAez0C,EAAIsL,EAASpD,OAAOlI,GAAKw0C,GCzB/DltC,eAAeotC,GAAkB/wB,GACpCA,EAAOkjB,SAAS,WAAY,IAAM,IAAI,ICDnC,MAAM,WAAkB1K,GAC3B,YAAYnqB,GACR1Q,MAAM0Q,GAEV,SAEA,QAEA,eAAexH,GACX,IAAIxL,EACJ,MAAMgT,EAAYzT,KAAKyT,UAAWzO,EAAgD,QAApCvE,EAAKwL,EAAGwJ,OAAO+f,uBAAoC,IAAP/0B,EAAgBA,EAAKgT,EAAUgC,OAAO+f,gBAAiBnpB,EAAOJ,EAAGR,cAAerD,EAAQqL,EAAUqE,UAAUgb,SAASiE,YAAY1qB,EAAMrH,GACjO,IAAK,MAAMkH,KAAM9D,EAAO,CACpB,GAAI6D,IAAOC,IAAOA,EAAG1H,QAAQuT,KAAKgP,QAAQtiB,QAAUyH,EAAGuM,WAAavM,EAAGsM,SACnE,SAEJ,MAAMlM,EAAOJ,EAAGT,eAAe,GAAE3G,EAAE,GAAEC,GAAOJ,GAAa0H,EAAMC,GAAOI,EAAST,EAAGzH,QAAQuT,KAAKgP,QAAQra,OAAQ0pC,EAAKtxC,GAAiB,IAAX4H,EAAO/K,GAAW00C,EAAKtxC,GAAiB,IAAX2H,EAAOjL,GAAW60C,EAAWpqC,EAAGlG,KAAK3C,MAAQ4I,EAAGjG,KAAK3C,MAAOkzC,EAAW,EAAID,EAClOrqC,EAAGhF,SAAStF,GAAKy0C,EAAKE,EACtBrqC,EAAGhF,SAASxF,GAAK40C,EAAKC,EACtBpqC,EAAGjF,SAAStF,GAAKy0C,EAAKG,EACtBrqC,EAAGjF,SAASxF,GAAK40C,EAAKE,GAG9B,UAAUxpC,GACN,OAAOA,EAASvI,QAAQuT,KAAKgP,QAAQtiB,OAEzC,UCzBGsE,eAAeytC,GAAgCpxB,SAC5CA,EAAOuX,cAAc,mBAAqBlpB,GAAc,IAAI,GAAUA,ICDhF,SAASgjC,GAAaxqC,EAAIsD,EAAIrD,EAAIwqC,EAAIhjC,EAAOgC,GACzC,MAAMxO,EAAS3D,EAAO0I,EAAGzH,QAAQgjB,WAAWpB,OAAOlU,MAAQwB,EAAMxM,OAAU,GAAI,EAAGwvC,GAClFzqC,EAAGjG,KAAK3C,OAAS6D,EAAS,EAC1BgF,EAAGlG,KAAK3C,OAAS6D,EACbwvC,GAAMhhC,IACNxJ,EAAGlG,KAAK3C,MAAQ,EAChB6I,EAAGgY,WAGJ,SAASkC,GAAOna,EAAIC,EAAIwH,EAAOgC,GAClC,MAAMnG,EAAKtD,EAAGP,YAAagrC,EAAKxqC,EAAGR,iBACxB7J,IAAP0N,QAA2B1N,IAAP60C,EACpBzqC,EAAGiY,eAESriB,IAAP0N,QAA2B1N,IAAP60C,EACzBxqC,EAAGgY,eAESriB,IAAP0N,QAA2B1N,IAAP60C,IACrBnnC,GAAMmnC,EACND,GAAaxqC,EAAIsD,EAAIrD,EAAIwqC,EAAIhjC,EAAOgC,GAGpC+gC,GAAavqC,EAAIwqC,EAAIzqC,EAAIsD,EAAImE,EAAOgC,ICtBzC,SAAS7J,GAAOI,EAAIC,GACvBF,GAAaT,GAA6BU,GAAKV,GAA6BW,ICDzE,SAASgY,GAAQjY,EAAIC,GAIxB,GAHKD,EAAGugB,aAAgBtgB,EAAGsgB,aACvB3gB,GAAOI,EAAIC,QAEQrK,IAAnBoK,EAAGP,kBAAgD7J,IAAnBqK,EAAGR,YACnCO,EAAGiY,eAEF,QAAuBriB,IAAnBoK,EAAGP,kBAAgD7J,IAAnBqK,EAAGR,YACxCQ,EAAGgY,eAEF,QAAuBriB,IAAnBoK,EAAGP,kBAAgD7J,IAAnBqK,EAAGR,YAA2B,CACnE,MAAMirC,EAAU1qC,EAAGP,aAAeQ,EAAGR,YAAcO,EAAKC,EACxDyqC,EAAQzyB,WCVT,SAAS0yB,GAAiB3qC,EAAIC,EAAIwH,EAAOgC,GAC5C,OAAQzJ,EAAGzH,QAAQgjB,WAAWzc,MAC1B,IAAK,SACDqb,GAAOna,EAAIC,EAAIwH,EAAOgC,GACtB,MAEJ,IAAK,SACD7J,GAAOI,EAAIC,GACX,MAEJ,IAAK,UACDgY,GAAQjY,EAAIC,GACZ,OCbL,MAAM,WAAiB0xB,GAC1B,YAAYnqB,GACR1Q,MAAM0Q,GAEV,SAEA,QAEA,eAAexH,EAAIyH,GACf,MAAMD,EAAYzT,KAAKyT,UAAWpH,EAAOJ,EAAGR,cAAeorC,EAAU5qC,EAAGP,YAAatD,EAAQqL,EAAUqE,UAAUgb,SAASiE,YAAY1qB,EAAgB,EAAVwqC,GAC5I,IAAK,MAAM3qC,KAAM9D,EAAO,CACpB,GAAI6D,IAAOC,IACNA,EAAG1H,QAAQgjB,WAAW/iB,QACvBwH,EAAGzH,QAAQgjB,WAAWzc,OAASmB,EAAG1H,QAAQgjB,WAAWzc,MACrDmB,EAAGuM,WACHvM,EAAGsM,SACH,SAEJ,MAAMlM,EAAOJ,EAAGT,cAAeqrC,EAAU5qC,EAAGR,YAC5C,GAAI1J,KAAKovB,IAAIpvB,KAAK+0C,MAAM1qC,EAAK3K,GAAKM,KAAK+0C,MAAMzqC,EAAK5K,IAAMm1C,EAAUC,EAC9D,SAEJ,MAAMxlB,EAAOrsB,GAAYoH,EAAMC,GAAO0qC,EAAQH,EAAUC,EACpDxlB,EAAO0lB,GAGXJ,GAAiB3qC,EAAIC,EAAIwH,EAAOD,EAAUgC,OAAOC,aAGzD,UAAU3I,GACN,OAAOA,EAASvI,QAAQgjB,WAAW/iB,OAEvC,UCjCGsE,eAAekuC,GAAmC7xB,SAC/CA,EAAOuX,cAAc,sBAAwBlpB,GAAc,IAAI,GAASA,ICD3E,MAAM,WAAmB,GAC5B,YAAY9R,EAAGF,EAAGmI,EAAQolB,GACtBjsB,MAAMpB,EAAGF,EAAGmI,GACZ5J,KAAKgvB,WAAaA,EAClBhvB,KAAKgvB,WAAa5S,OAAOC,OAAO,GAAI2S,GAExC,SAAStlB,GACL,GAAI3G,MAAMkvB,SAASvoB,GACf,OAAO,EAEX,MAAMwtC,EAAQ,CACVv1C,EAAG+H,EAAM/H,EAAI3B,KAAKgvB,WAAW/oB,MAC7BxE,EAAGiI,EAAMjI,GAEb,GAAIsB,MAAMkvB,SAASilB,GACf,OAAO,EAEX,MAAMC,EAAQ,CACVx1C,EAAG+H,EAAM/H,EAAI3B,KAAKgvB,WAAW/oB,MAC7BxE,EAAGiI,EAAMjI,EAAIzB,KAAKgvB,WAAW9oB,QAEjC,GAAInD,MAAMkvB,SAASklB,GACf,OAAO,EAEX,MAAMC,EAAQ,CACVz1C,EAAG+H,EAAM/H,EACTF,EAAGiI,EAAMjI,EAAIzB,KAAKgvB,WAAW9oB,QAEjC,OAAOnD,MAAMkvB,SAASmlB,GAE1B,WAAWzmB,GACP,GAAI5tB,MAAM2uB,WAAWf,GACjB,OAAO,EAEX,MAAMM,EAAON,EAAOO,EAASP,EAAO+kB,EAAS,CACzC/zC,EAAGgvB,EAAMvrB,SAASzD,EAAI3B,KAAKgvB,WAAW/oB,MACtCxE,EAAGkvB,EAAMvrB,SAAS3D,EAAIzB,KAAKgvB,WAAW9oB,QAE1C,QAAsBrE,IAAlBqvB,EAAOtnB,OAAsB,CAC7B,MAAMytC,EAAe,IAAI,GAAO3B,EAAO/zC,EAAG+zC,EAAOj0C,EAAmB,EAAhByvB,EAAOtnB,QAC3D,OAAO7G,MAAM2uB,WAAW2lB,GAEvB,QAAkBx1C,IAAdovB,EAAKjrB,KAAoB,CAC9B,MAAMsxC,EAAS,IAAI,GAAU5B,EAAO/zC,EAAG+zC,EAAOj0C,EAAqB,EAAlBwvB,EAAKjrB,KAAKC,MAA8B,EAAnBgrB,EAAKjrB,KAAKE,QAChF,OAAOnD,MAAM2uB,WAAW4lB,GAE5B,OAAO,GC9CR,MAAM,GACT,cACIt3C,KAAK0U,KAAO,EACZ1U,KAAK8O,MAAQ,IAAIuV,GACjBrkB,KAAK8O,MAAMzL,MAAQ,OACnBrD,KAAKyE,QAAS,EAElB,KAAKnG,GACIA,SAGauD,IAAdvD,EAAKoW,OACL1U,KAAK0U,KAAOpW,EAAKoW,MAErB1U,KAAK8O,MAAQuV,GAAatiB,OAAO/B,KAAK8O,MAAOxQ,EAAKwQ,YAC9BjN,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,UChBxB,MAAM,GACT,cACIzE,KAAKyE,QAAS,EACdzE,KAAKu3C,UAAY,EAErB,KAAKj5C,GACIA,SAGcuD,IAAfvD,EAAKwQ,QACL9O,KAAK8O,MAAQuV,GAAatiB,OAAO/B,KAAK8O,MAAOxQ,EAAKwQ,aAElCjN,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,aAEA5C,IAAnBvD,EAAKi5C,YACLv3C,KAAKu3C,UAAYj5C,EAAKi5C,gBAEL11C,IAAjBvD,EAAK+R,UACLrQ,KAAKqQ,QAAU/R,EAAK+R,WCjBzB,MAAM,GACT,cACIrQ,KAAKuR,OAAQ,EACbvR,KAAK8O,MAAQ,IAAIuV,GACjBrkB,KAAK8O,MAAMzL,MAAQ,OACnBrD,KAAKwR,SAAU,EACfxR,KAAKgF,SAAW,IAChBhF,KAAKyE,QAAS,EACdzE,KAAKu3C,UAAY,EACjBv3C,KAAKqQ,QAAU,EACfrQ,KAAK8T,OAAS,IAAI,GAClB9T,KAAKw3C,UAAY,IAAI,GACrBx3C,KAAKiG,MAAQ,EACbjG,KAAKunB,MAAO,EAEhB,KAAKjpB,GACIA,SAGWuD,IAAZvD,EAAK+tB,KACLrsB,KAAKqsB,GAAK/tB,EAAK+tB,SAEAxqB,IAAfvD,EAAKiT,QACLvR,KAAKuR,MAAQjT,EAAKiT,OAEtBvR,KAAK8O,MAAQuV,GAAatiB,OAAO/B,KAAK8O,MAAOxQ,EAAKwQ,YAC7BjN,IAAjBvD,EAAKkT,UACLxR,KAAKwR,QAAUlT,EAAKkT,cAEF3P,IAAlBvD,EAAK0G,WACLhF,KAAKgF,SAAW1G,EAAK0G,eAELnD,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,aAEA5C,IAAnBvD,EAAKi5C,YACLv3C,KAAKu3C,UAAYj5C,EAAKi5C,gBAEL11C,IAAjBvD,EAAK+R,UACLrQ,KAAKqQ,QAAU/R,EAAK+R,SAExBrQ,KAAK8T,OAAO1K,KAAK9K,EAAKwV,QACtB9T,KAAKw3C,UAAUpuC,KAAK9K,EAAKk5C,gBACN31C,IAAfvD,EAAK2H,QACLjG,KAAKiG,MAAQ3H,EAAK2H,YAEJpE,IAAdvD,EAAKipB,OACLvnB,KAAKunB,KAAOjpB,EAAKipB,QC/C7B,SAASkwB,GAAgBprC,EAAMC,EAAMorC,EAAa1oB,EAAYzH,GAC1D,IAAIviB,EAAWC,GAAYoH,EAAMC,GACjC,IAAKib,GAAQviB,GAAY0yC,EACrB,OAAO1yC,EAEX,MAAM2yC,EAAS,CACXh2C,EAAG2K,EAAK3K,EAAIqtB,EAAW/oB,MACvBxE,EAAG6K,EAAK7K,GAGZ,GADAuD,EAAWC,GAAYoH,EAAMsrC,GACzB3yC,GAAY0yC,EACZ,OAAO1yC,EAEX,MAAM4yC,EAAS,CACXj2C,EAAG2K,EAAK3K,EAAIqtB,EAAW/oB,MACvBxE,EAAG6K,EAAK7K,EAAIutB,EAAW9oB,QAG3B,GADAlB,EAAWC,GAAYoH,EAAMurC,GACzB5yC,GAAY0yC,EACZ,OAAO1yC,EAEX,MAAM6yC,EAAS,CACXl2C,EAAG2K,EAAK3K,EACRF,EAAG6K,EAAK7K,EAAIutB,EAAW9oB,QAG3B,OADAlB,EAAWC,GAAYoH,EAAMwrC,GACtB7yC,EAEJ,MAAM,WAAe44B,GACxB,YAAYnqB,GACR1Q,MAAM0Q,GACNzT,KAAK83C,cAAgBrkC,EAEzB,SAEA,OACIzT,KAAK83C,cAAchgC,UAAUigC,YAAc,IAAIx3C,IAEnD,eAAe0L,GACX,IAAIxL,EACJ,IAAKwL,EAAGzH,QAAQ+oC,MACZ,OAEJthC,EAAGshC,MAAQ,GACX,MAAMlhC,EAAOJ,EAAGR,cAAegI,EAAYzT,KAAKyT,UAAWub,EAAavb,EAAU8H,OAAOvV,KACzF,GAAIqG,EAAK1K,EAAI,GAAK0K,EAAK5K,EAAI,GAAK4K,EAAK1K,EAAIqtB,EAAW/oB,OAASoG,EAAK5K,EAAIutB,EAAW9oB,OAC7E,OAEJ,MAAM8xC,EAAW/rC,EAAGzH,QAAQ+oC,MAAOd,EAAauL,EAAS3nC,QAASqnC,EAAiD,QAAlCj3C,EAAKwL,EAAGwJ,OAAOwiC,qBAAkC,IAAPx3C,EAAgBA,EAAK,EAAG8mB,EAAOywB,EAASzwB,KAAMoJ,EAAQpJ,EAC3K,IAAI,GAAWlb,EAAK1K,EAAG0K,EAAK5K,EAAGi2C,EAAa1oB,GAC5C,IAAI,GAAO3iB,EAAK1K,EAAG0K,EAAK5K,EAAGi2C,GAActvC,EAAQqL,EAAUqE,UAAUgb,SAAS1qB,MAAMuoB,GAC1F,IAAK,MAAMzkB,KAAM9D,EAAO,CACpB,MAAM8vC,EAAWhsC,EAAG1H,QAAQ+oC,MAC5B,GAAIthC,IAAOC,KACQ,OAAbgsC,QAAkC,IAAbA,OAAsB,EAASA,EAASzzC,SAC/DuzC,EAAS3rB,KAAO6rB,EAAS7rB,IACzBngB,EAAGsM,UACHtM,EAAGuM,YACFvM,EAAGqhC,QACgD,IAApDthC,EAAGshC,MAAM1iC,IAAKhD,GAAMA,EAAEyC,aAAajJ,QAAQ6K,KACS,IAApDA,EAAGqhC,MAAM1iC,IAAKhD,GAAMA,EAAEyC,aAAajJ,QAAQ4K,GAC3C,SAEJ,MAAMK,EAAOJ,EAAGT,cAChB,GAAIa,EAAK3K,EAAI,GAAK2K,EAAK7K,EAAI,GAAK6K,EAAK3K,EAAIqtB,EAAW/oB,OAASqG,EAAK7K,EAAIutB,EAAW9oB,OAC7E,SAEJ,MAAMlB,EAAWyyC,GAAgBprC,EAAMC,EAAMorC,EAAa1oB,EAAYzH,GAAQ2wB,EAAS3wB,MACvF,GAAIviB,EAAW0yC,EACX,OAEJ,MAAMjI,GAAe,EAAIzqC,EAAW0yC,GAAejL,EACnDzsC,KAAKm4C,SAASlsC,GACdA,EAAGshC,MAAM1sC,KAAK,CACVyJ,YAAa4B,EACbmE,QAASo/B,KAIrB,UAAU1iC,GACN,IAAItM,EACJ,SAA4C,QAAjCA,EAAKsM,EAASvI,QAAQ+oC,aAA0B,IAAP9sC,OAAgB,EAASA,EAAGgE,QAEpF,qBAAqBD,KAAY+F,GAC7B,IAAI9J,EAAI2F,EACH5B,EAAQ+oC,QACT/oC,EAAQ+oC,MAAQ,IAAI,IAExB,IAAK,MAAMjrC,KAAUiI,EACjB/F,EAAQ+oC,MAAMnkC,KAAuL,QAAjLhD,EAA6E,QAAvE3F,EAAgB,OAAX6B,QAA8B,IAAXA,OAAoB,EAASA,EAAOirC,aAA0B,IAAP9sC,EAAgBA,EAAgB,OAAX6B,QAA8B,IAAXA,OAAoB,EAASA,EAAOkrC,kBAA+B,IAAPpnC,EAAgBA,EAAgB,OAAX9D,QAA8B,IAAXA,OAAoB,EAASA,EAAOmrC,aAGjS,SAEA,SAASxhC,GACL,IAAKA,EAAGzH,QAAQ+oC,MACZ,OAEJ,MAAM95B,EAAYzT,KAAK83C,cAAenI,EAAe1jC,EAAGzH,QAAQ+oC,MAChE,IAAIx8B,OAAgClP,IAApB8tC,EAAatjB,GACvB5Y,EAAUqE,UAAUsgC,WACpB3kC,EAAUqE,UAAUigC,YAAYp3C,IAAIgvC,EAAatjB,IACvD,GAAItb,EACA,OAEJ,MAAMO,EAAWq+B,EAAa7gC,MAC9BiC,EAAYM,GAAmBC,EAAUq+B,EAAap+B,MAAOo+B,EAAan+B,cAClD3P,IAApB8tC,EAAatjB,GACb5Y,EAAUqE,UAAUsgC,WAAarnC,EAGjC0C,EAAUqE,UAAUigC,YAAYn3C,IAAI+uC,EAAatjB,GAAItb,ICjH1DhI,eAAesvC,GAAgBjzB,SAC5BA,EAAOuX,cAAc,iBAAmBlpB,GAAc,IAAI,GAAOA,ICDpE,SAAS6kC,GAAa/lC,EAAStM,EAAOuM,EAAOC,EAAK8a,EAAayB,EAAYzH,EAAM3T,EAAgBC,EAAWo7B,EAAW5+B,EAASyD,GACnI,IAAIykC,GAAQ,EACZ,GAAItzC,GAAYuN,EAAOC,IAAQ8a,EAC3Bjb,GAASC,EAASC,EAAOC,GACzB8lC,GAAQ,OAEP,GAAIhxB,EAAM,CACX,IAAIixB,EACAC,EACJ,MAAMC,EAAQ,CACV/2C,EAAG8Q,EAAI9Q,EAAIqtB,EAAW/oB,MACtBxE,EAAGgR,EAAIhR,GAELk3C,EAAKh0C,GAAa6N,EAAOkmC,GAC/B,GAAIC,EAAG3zC,UAAYuoB,EAAa,CAC5B,MAAMqrB,EAAKpmC,EAAM/Q,EAAKk3C,EAAG5zC,GAAK4zC,EAAG7zC,GAAM0N,EAAM7Q,EAC7C62C,EAAM,CAAE72C,EAAG,EAAGF,EAAGm3C,GACjBH,EAAM,CAAE92C,EAAGqtB,EAAW/oB,MAAOxE,EAAGm3C,OAE/B,CACD,MAAMC,EAAQ,CACVl3C,EAAG8Q,EAAI9Q,EACPF,EAAGgR,EAAIhR,EAAIutB,EAAW9oB,QAEpB4yC,EAAKn0C,GAAa6N,EAAOqmC,GAC/B,GAAIC,EAAG9zC,UAAYuoB,EAAa,CAC5B,MAAMqrB,EAAKpmC,EAAM/Q,EAAKq3C,EAAG/zC,GAAK+zC,EAAGh0C,GAAM0N,EAAM7Q,EACvCo3C,GAAMH,GAAME,EAAG/zC,GAAK+zC,EAAGh0C,IAC7B0zC,EAAM,CAAE72C,EAAGo3C,EAAIt3C,EAAG,GAClBg3C,EAAM,CAAE92C,EAAGo3C,EAAIt3C,EAAGutB,EAAW9oB,YAE5B,CACD,MAAM8yC,EAAQ,CACVr3C,EAAG8Q,EAAI9Q,EAAIqtB,EAAW/oB,MACtBxE,EAAGgR,EAAIhR,EAAIutB,EAAW9oB,QAEpB+yC,EAAKt0C,GAAa6N,EAAOwmC,GAC/B,GAAIC,EAAGj0C,UAAYuoB,EAAa,CAC5B,MAAMqrB,EAAKpmC,EAAM/Q,EAAKw3C,EAAGl0C,GAAKk0C,EAAGn0C,GAAM0N,EAAM7Q,EACvCo3C,GAAMH,GAAMK,EAAGl0C,GAAKk0C,EAAGn0C,IAC7B0zC,EAAM,CAAE72C,EAAGo3C,EAAIt3C,EAAGm3C,GAClBH,EAAM,CAAE92C,EAAG62C,EAAI72C,EAAIqtB,EAAW/oB,MAAOxE,EAAG+2C,EAAI/2C,EAAIutB,EAAW9oB,UAInEsyC,GAAOC,IACPnmC,GAASC,EAASC,EAAOgmC,GACzBlmC,GAASC,EAASE,EAAKgmC,GACvBF,GAAQ,GAGhB,GAAKA,EAAL,CAQA,GALAhmC,EAAQwC,UAAY9O,EAChB2N,IACArB,EAAQgC,yBAA2BV,GAEvCtB,EAAQ0C,YAAc7E,GAAgB6+B,EAAW5+B,GAC7CyD,EAAOrP,OAAQ,CACf,MAAM+P,EAAc3F,GAAgBiF,EAAOhF,OACvC0F,IACAjC,EAAQkC,WAAaX,EAAOY,KAC5BnC,EAAQiC,YAAcpE,GAAgBoE,IAG9CjC,EAAQuC,UAEL,SAASokC,GAAiB3mC,EAASlG,EAAMC,EAAM6sC,EAAMvlC,EAAgBC,EAAWulC,EAAeC,GAClGvmC,GAAaP,EAASlG,EAAMC,EAAM6sC,GAC9BvlC,IACArB,EAAQgC,yBAA2BV,GAEvCtB,EAAQY,UAAY/C,GAAgBgpC,EAAeC,GACnD9mC,EAAQsC,OCzEZ,SAASykC,GAAW70B,GAEhB,OADAA,EAAIoG,KAAK,CAACrc,EAAGD,IAAMC,EAAID,GAChBkW,EAAI80B,KAAK,KAEpB,SAASC,GAAiB1hC,EAAW2hC,GACjC,MAAM77C,EAAM07C,GAAWxhC,EAAUjN,IAAKhD,GAAMA,EAAEwkB,KAC9C,IAAIllB,EAAMsyC,EAAW94C,IAAI/C,GAKzB,YAJYiE,IAARsF,IACAA,EAAM7D,IACNm2C,EAAW74C,IAAIhD,EAAKuJ,IAEjBA,EAEJ,MAAM,GACT,YAAYsM,GACRzT,KAAKyT,UAAYA,EACjBzT,KAAK05C,OAAS,CACVnM,MAAO,IAAIhtC,IACXi3C,UAAW,IAAIj3C,KAGvB,aAAagS,EAASxF,GAClB,IAAItM,EACJ,MAAMgT,EAAYzT,KAAKyT,UAAWkmC,EAAW5sC,EAASvI,QACtD,IAAKuI,EAASwgC,OAASxgC,EAASwgC,MAAMpsC,QAAU,EAC5C,OAEJ,MAAMy4C,EAAU7sC,EAASwgC,MAAMtY,OAAQtlB,GAAMgqC,EAASpM,OAASvtC,KAAK65C,iBAAiB9sC,EAAU4C,EAAErF,cAAgBqvC,EAASpM,MAAMgK,WAChI,IAAK,MAAMuC,KAAQF,EACf55C,KAAK+5C,cAActmC,EAAWkmC,EAAU5sC,EAAU+sC,EAAMF,GACpDE,EAAKzpC,QAAU,IAA4C,QAArC5P,EAAKsM,EAAS0I,OAAO+4B,kBAA+B,IAAP/tC,EAAgBA,EAAK,GAAK,GAC7FT,KAAKs4C,aAAavrC,EAAU+sC,GAIxC,aACI95C,KAAK05C,OAAOnM,MAAQ,IAAIhtC,IACxBP,KAAK05C,OAAOlC,UAAY,IAAIj3C,IAEhC,gBAAgBwM,GAEZ,GADAA,EAASwgC,MAAQ,IACZxgC,EAASvI,QAAQ+oC,MAClB,OAEJ,MAAMhY,EAAQv1B,KAAKyT,UAAUgC,OAAOC,WACpC3I,EAAS0I,OAAOwiC,cAAgBlrC,EAASvI,QAAQ+oC,MAAMvoC,SAAWuwB,EAClExoB,EAAS0I,OAAO+4B,WAAazhC,EAASvI,QAAQ+oC,MAAMtnC,MAAQsvB,EAEhE,kBAAkBxoB,GACdA,EAASwgC,MAAQ,GAErB,aAAathC,EAAI6tC,GACb,MAAMrmC,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cAAezL,EAAK4tC,EAAKxvC,YAAa+B,EAAOJ,EAAGR,cAAea,EAAOJ,EAAGT,cAC/H,IAAI4E,EAAUypC,EAAKzpC,QACnBoD,EAAU8H,OAAO/F,KAAM2C,IACnB,IAAI1X,EAAI2F,EAAIhH,EACZ,IAAK6M,EAAGzH,QAAQ+oC,MACZ,OAEJ,IAAI0B,EACJ,MAAM+K,EAAwC,QAA7Bv5C,EAAKwL,EAAGzH,QAAQw1C,eAA4B,IAAPv5C,OAAgB,EAASA,EAAGw5C,MAClF,GAAgB,OAAZD,QAAgC,IAAZA,OAAqB,EAASA,EAAQv1C,OAAQ,CAClE,MAAMy1C,EAAcF,EAAQzC,UAAW4C,EAAatrC,GAAgBmrC,EAAQlrC,OAAQsrC,EAAY92C,IAAc42C,EAC1GE,GAAaD,IACblL,EAAYkL,EACZ9pC,EAAUhM,GAAc21C,EAAQ3pC,UAGxC,IAAK4+B,EAAW,CACZ,MAAMU,EAAe1jC,EAAGzH,QAAQ+oC,MAAOx8B,OAA8FlP,KAAhE,OAAjB8tC,QAA0C,IAAjBA,OAA0B,EAASA,EAAatjB,IACvH5Y,EAAUqE,UAAUigC,YAAYp3C,IAAIgvC,EAAatjB,IACjD5Y,EAAUqE,UAAUsgC,WAC1BnJ,EAAYn+B,GAAa7E,EAAIC,EAAI6E,GAErC,IAAKk+B,EACD,OAEJ,MAAMhpC,EAAwC,QAA/BG,EAAK6F,EAAGwJ,OAAO+4B,kBAA+B,IAAPpoC,EAAgBA,EAAK,EAAGmnB,EAAiD,QAAlCnuB,EAAK6M,EAAGwJ,OAAOwiC,qBAAkC,IAAP74C,EAAgBA,EAAK,EAC5Jk5C,GAAangC,EAAKlS,EAAOoG,EAAMC,EAAMihB,EAAa9Z,EAAU8H,OAAOvV,KAAMiG,EAAGzH,QAAQ+oC,MAAMhmB,KAAM/iB,EAAQoP,eAAenP,OAAQD,EAAQoP,eAAeC,UAAWo7B,EAAW5+B,EAASpE,EAAGzH,QAAQ+oC,MAAMz5B,UAG9M,iBAAiB7H,EAAIouC,EAAOC,GACxB,IAAI75C,EACJ,IAAKwL,EAAGzH,QAAQ+oC,MACZ,OAEJ,MAAM95B,EAAYzT,KAAKyT,UAAWjP,EAAUiP,EAAUkE,cAAezL,EAAKmuC,EAAM/vC,YAAayI,EAAKunC,EAAMhwC,YAAaiwC,EAAkBtuC,EAAGzH,QAAQ+oC,MAAMiK,UAAW6B,EAAqD,QAAlC54C,EAAK85C,EAAgBlqC,eAA4B,IAAP5P,EAAgBA,GAAM45C,EAAMhqC,QAAUiqC,EAAMjqC,SAAW,EACnRgpC,GAAmB,GAGvB5lC,EAAU8H,OAAO/F,KAAM2C,IACnB,IAAI1X,EACJ,MAAM4L,EAAOJ,EAAGR,cAAea,EAAOJ,EAAGT,cAAe0tC,EAAOpmC,EAAGtH,cAAewsC,EAAmD,QAAlCx3C,EAAKwL,EAAGwJ,OAAOwiC,qBAAkC,IAAPx3C,EAAgBA,EAAK,EACjK,GAAIwE,GAAYoH,EAAMC,GAAQ2rC,GAC1BhzC,GAAYk0C,EAAM7sC,GAAQ2rC,GAC1BhzC,GAAYk0C,EAAM9sC,GAAQ4rC,EAC1B,OAEJ,IAAImB,EAAgBvqC,GAAgB0rC,EAAgBzrC,OACpD,IAAKsqC,EAAe,CAChB,MAAMzJ,EAAe1jC,EAAGzH,QAAQ+oC,MAAOx8B,OAA8FlP,KAAhE,OAAjB8tC,QAA0C,IAAjBA,OAA0B,EAASA,EAAatjB,IACvH5Y,EAAUqE,UAAUigC,YAAYp3C,IAAIgvC,EAAatjB,IACjD5Y,EAAUqE,UAAUsgC,WAC1BgB,EAAgBtoC,GAAa7E,EAAIC,EAAI6E,GAEpCqoC,GAGLF,GAAiB/gC,EAAK9L,EAAMC,EAAM6sC,EAAM30C,EAAQoP,eAAenP,OAAQD,EAAQoP,eAAeC,UAAWulC,EAAeC,KAGhI,cAAc5lC,EAAWjP,EAASyH,EAAI6tC,EAAMF,GACxC,IAAIn5C,EAAI2F,EAAIhH,EACZ,MAAM8M,EAAK4tC,EAAKxvC,YAChB,KAAgC,QAAxB7J,EAAK+D,EAAQ+oC,aAA0B,IAAP9sC,OAAgB,EAASA,EAAG+2C,UAAU/yC,WAAwC,QAA3B2B,EAAK8F,EAAG1H,QAAQ+oC,aAA0B,IAAPnnC,OAAgB,EAASA,EAAGoxC,UAAU/yC,QAChK,OAEJ,MAAM+1C,EAA+B,QAAnBp7C,EAAK8M,EAAGqhC,aAA0B,IAAPnuC,OAAgB,EAASA,EAAG61B,OAAQptB,IAC7E,MAAM4yC,EAAWz6C,KAAK65C,iBAAiB3tC,EAAIrE,EAAEyC,aAC7C,OAAQ4B,EAAG1H,QAAQ+oC,OACfkN,GAAYvuC,EAAG1H,QAAQ+oC,MAAMgK,WAC7BqC,EAAQjiB,UAAWhoB,GAAMA,EAAErF,cAAgBzC,EAAEyC,cAAgB,IAErE,GAAmB,OAAbkwC,QAAkC,IAAbA,OAAsB,EAASA,EAASr5C,OAGnE,IAAK,MAAMu5C,KAAUF,EAAU,CAC3B,MAAMznC,EAAK2nC,EAAOpwC,YAAaqwC,EAAe36C,KAAK46C,qBAAqB3uC,EAAIC,EAAI6G,GAC5E4nC,EAAen2C,EAAQ+oC,MAAMiK,UAAUD,WAG3Cv3C,KAAKk5C,iBAAiBjtC,EAAI6tC,EAAMY,IAGxC,iBAAiBzuC,EAAIC,GACjB,OAAOstC,GAAiB,CAACvtC,EAAIC,GAAKlM,KAAK05C,OAAOnM,OAElD,qBAAqBthC,EAAIC,EAAI6G,GACzB,OAAOymC,GAAiB,CAACvtC,EAAIC,EAAI6G,GAAK/S,KAAK05C,OAAOlC,YC3I1D,MAAM,GACF,cACIx3C,KAAKqsB,GAAK,QAEd,UAAU5Y,GACN,OAAO,IAAI,GAAaA,GAE5B,eAEA,cACI,OAAO,GAGR1K,eAAe8xC,GAAWz1B,GAC7B,MAAMvP,EAAS,IAAI,SACbuP,EAAO6X,UAAUpnB,GCdpB9M,eAAe+xC,GAA8B11B,SAC1CizB,GAAgBjzB,SAChBy1B,GAAWz1B,GCJd,MAAM21B,GACT,KAAKxoC,EAASxF,EAAUnD,GACpB,MAAM+uB,EAAQ34B,KAAKg7C,UAAUjuC,EAAUnD,GACjCm7B,EAAO/kC,KAAKi7C,aAAaluC,EAAUnD,GACnCsxC,EAAYnW,EAAKhf,MAAMo1B,UAAYpW,EAAKhf,MAAMq1B,YAC9CC,EAAetW,EAAKhf,MAAMo1B,UAAYpW,EAAKhf,MAAMq1B,YACjDE,EAAwB,KAAOD,EAAe,GAAMA,EACpDE,EAAgBv5C,KAAKsD,GAAMtD,KAAKsD,GAAKg2C,EAAwB,IACnE,GAAK/oC,EAAL,CAGAA,EAAQG,YACRH,EAAQosB,UAAUhG,EAAMh3B,EAAGg3B,EAAMl3B,GACjC8Q,EAAQI,OAAO,EAAG,GAClB,IAAK,IAAIghB,EAAI,EAAGA,EAAIunB,EAAWvnB,IAC3BphB,EAAQK,OAAOmyB,EAAK5jC,OAAQ,GAC5BoR,EAAQosB,UAAUoG,EAAK5jC,OAAQ,GAC/BoR,EAAQ7F,OAAO6uC,IAGvB,cAAcxuC,GACV,IAAItM,EAAI2F,EACR,MAAM0iB,EAAU/b,EAASghB,UACzB,OAA6L,QAArL3nB,EAAgF,QAA1E3F,EAAiB,OAAZqoB,QAAgC,IAAZA,OAAqB,EAASA,EAAQ0G,aAA0B,IAAP/uB,EAAgBA,EAAiB,OAAZqoB,QAAgC,IAAZA,OAAqB,EAASA,EAAQ0yB,gBAA6B,IAAPp1C,EAAgBA,EAAK,GCtB3N,MAAM,WAAsB20C,GAC/B,UAAUhuC,EAAUnD,GAChB,MAAM4lB,EAAQxvB,KAAK2vB,cAAc5iB,GACjC,MAAO,CACHpL,GAAIiI,GAAU4lB,EAAQ,KACtB/tB,GAAImI,EAAS,KAGrB,aAAamD,EAAUnD,GACnB,IAAInJ,EAAI2F,EACR,MAAM0iB,EAAU/b,EAASghB,UACnByB,EAA8L,QAArLppB,EAAgF,QAA1E3F,EAAiB,OAAZqoB,QAAgC,IAAZA,OAAqB,EAASA,EAAQ0G,aAA0B,IAAP/uB,EAAgBA,EAAiB,OAAZqoB,QAAgC,IAAZA,OAAqB,EAASA,EAAQ0yB,gBAA6B,IAAPp1C,EAAgBA,EAAK,EACjO,MAAO,CACH2f,MAAO,CACHq1B,YAAa,EACbD,UAAW3rB,GAEfruB,OAAkB,KAATyI,GAAkB4lB,EAAQ,KCjBxC,MAAM,WAAuBurB,GAChC,UAAUhuC,EAAUnD,GAChB,MAAO,CACHjI,GAAIiI,EACJnI,EAAGmI,EAAS,MAGpB,gBACI,OAAO,EAEX,aAAamD,EAAUnD,GACnB,MAAO,CACHmc,MAAO,CACHq1B,YAAa,EACbD,UAAW,GAEfh6C,OAAiB,EAATyI,ICfbb,eAAe0yC,GAAwBr2B,SACpCA,EAAO+f,SAAS,UAAW,IAAI,IAElCp8B,eAAe2yC,GAAkBt2B,SAC9BA,EAAO+f,SAAS,WAAY,IAAI,IAEnCp8B,eAAe4yC,GAAiBv2B,SAC7Bq2B,GAAwBr2B,SACxBs2B,GAAkBt2B,GCT5B,SAAS,GAAarY,EAAU1J,EAAOmxC,EAAU/Q,GAC7C,OAAQ12B,EAASvI,QAAQwB,KAAK0L,UAAUwS,SACpC,IAAK,MACG7gB,GAASogC,GACT12B,EAASmX,UAEb,MACJ,IAAK,MACG7gB,GAASmxC,GACTznC,EAASmX,UAEb,OAGZ,SAAS03B,GAAW7uC,EAAU2G,GAC1B,IAAIjT,EAAI2F,EAAIhH,EAAIiH,EAAI7G,EACpB,MAAMq8C,GAAkD,QAAjCp7C,EAAKsM,EAAS/G,KAAKiB,gBAA6B,IAAPxG,EAAgBA,EAAK,GAAKiT,EAAMxM,OAAQstC,EAAWznC,EAAS/G,KAAKvC,IAAKggC,EAAW12B,EAAS/G,KAAKtC,IAAKyO,EAAuC,QAA9B/L,EAAK2G,EAAS/G,KAAKmM,aAA0B,IAAP/L,EAAgBA,EAAK,EACxO,KAAI2G,EAAS0L,YACR1L,EAAS/G,KAAKvB,SACqB,QAAjCrF,EAAK2N,EAAS/G,KAAK4oB,gBAA6B,IAAPxvB,EAAgBA,EAAK,GAAK,IAAqC,QAA9BiH,EAAK0G,EAAS/G,KAAK2oB,aAA0B,IAAPtoB,EAAgBA,EAAK,IAAwC,QAAjC7G,EAAKuN,EAAS/G,KAAK4oB,gBAA6B,IAAPpvB,EAAgBA,EAAK,IAFjN,CAKA,OAAQuN,EAAS/G,KAAKoM,QAClB,KAAK,EACGrF,EAAS/G,KAAK3C,OAASogC,GACvB12B,EAAS/G,KAAKoM,OAAS,EAClBrF,EAAS/G,KAAK2oB,QACf5hB,EAAS/G,KAAK2oB,MAAQ,GAE1B5hB,EAAS/G,KAAK2oB,SAGd5hB,EAAS/G,KAAK3C,OAASw4C,EAE3B,MACJ,KAAK,EACG9uC,EAAS/G,KAAK3C,OAASmxC,GACvBznC,EAAS/G,KAAKoM,OAAS,EAClBrF,EAAS/G,KAAK2oB,QACf5hB,EAAS/G,KAAK2oB,MAAQ,GAE1B5hB,EAAS/G,KAAK2oB,SAGd5hB,EAAS/G,KAAK3C,OAASw4C,EAG/B9uC,EAAS/G,KAAKiB,UAAsB,IAAVkL,IAC1BpF,EAAS/G,KAAKiB,UAAYkL,GAE9B,GAAapF,EAAUA,EAAS/G,KAAK3C,MAAOmxC,EAAU/Q,GACjD12B,EAAS0L,YACV1L,EAAS/G,KAAK3C,MAAQE,EAAMwJ,EAAS/G,KAAK3C,MAAOmxC,EAAU/Q,KAG5D,MAAM,GACT,KAAK12B,GACD,IAAItM,EACJ,MAAMgT,EAAY1G,EAAS0G,UAAW+a,EAAczhB,EAASvI,QAAQwB,KAAM0oB,EAAgBF,EAAY9c,UACnGgd,EAAcjqB,SACdsI,EAAS/G,KAAKiB,UACsC,QAA7CxG,EAAKsM,EAAS0I,OAAOggB,0BAAuC,IAAPh1B,EAAgBA,EAAKgT,EAAUgC,OAAOggB,oBAAsB,IAChHhiB,EAAUgC,OAAO5D,aACpB6c,EAAcrc,OACftF,EAAS/G,KAAKiB,UAAY3D,MAItC,UAAUyJ,GACN,IAAItM,EAAI2F,EAAIhH,EAAIiH,EAChB,OAAS0G,EAAS0L,YACb1L,EAASyL,UACVzL,EAAS/G,KAAKvB,UACsB,QAAjChE,EAAKsM,EAAS/G,KAAK4oB,gBAA6B,IAAPnuB,EAAgBA,EAAK,IAAM,IAC/B,QAAjC2F,EAAK2G,EAAS/G,KAAK4oB,gBAA6B,IAAPxoB,EAAgBA,EAAK,GAAK,IAAqC,QAA9BhH,EAAK2N,EAAS/G,KAAK2oB,aAA0B,IAAPvvB,EAAgBA,EAAK,IAAwC,QAAjCiH,EAAK0G,EAAS/G,KAAK4oB,gBAA6B,IAAPvoB,EAAgBA,EAAK,IAEzN,MAAM0G,GACFA,EAAS/G,KAAK2oB,MAAQ,EAE1B,OAAO5hB,EAAU2G,GACR1T,KAAK6rB,UAAU9e,IAGpB6uC,GAAW7uC,EAAU2G,ICnFtB3K,eAAe+yC,GAAgB12B,SAC5BA,EAAO2X,mBAAmB,OAAQ,IAAM,IAAI,ICFtD,MAAMgf,GAAY/5C,KAAKI,KAAK,GACrB,MAAM45C,GACT,KAAKzpC,EAASxF,EAAUnD,GACpB2I,EAAQ0e,MAAMrnB,EAASmyC,IAAYnyC,EAASmyC,GAAqB,EAATnyC,EAAcmyC,GAAqB,EAATnyC,EAAcmyC,IAEpG,gBACI,OAAO,GCLRhzC,eAAekzC,GAAgB72B,GAClC,MAAM9P,EAAS,IAAI0mC,SACb52B,EAAO+f,SAAS,OAAQ7vB,SACxB8P,EAAO+f,SAAS,SAAU7vB,GCJ7B,MAAM4mC,GACT,KAAK3pC,EAASxF,EAAUnD,GACpB,IAAInJ,EACJ,MAAM07C,EAAOpvC,EAASghB,UAAWyB,EAAQxvB,KAAK2vB,cAAc5iB,GAAWqvC,EAA0E,QAAjE37C,EAAc,OAAT07C,QAA0B,IAATA,OAAkB,EAASA,EAAKC,aAA0B,IAAP37C,EAAgBA,EAAK,EAC9K8R,EAAQI,OAAO,EAAG,EAAI/I,GACtB,IAAK,IAAI+pB,EAAI,EAAGA,EAAInE,EAAOmE,IACvBphB,EAAQ7F,OAAO1K,KAAKsD,GAAKkqB,GACzBjd,EAAQK,OAAO,EAAG,EAAIhJ,EAASwyC,GAC/B7pC,EAAQ7F,OAAO1K,KAAKsD,GAAKkqB,GACzBjd,EAAQK,OAAO,EAAG,EAAIhJ,GAG9B,cAAcmD,GACV,IAAItM,EAAI2F,EACR,MAAM+1C,EAAOpvC,EAASghB,UACtB,OAA2K,QAAnK3nB,EAAuE,QAAjE3F,EAAc,OAAT07C,QAA0B,IAATA,OAAkB,EAASA,EAAK3sB,aAA0B,IAAP/uB,EAAgBA,EAAc,OAAT07C,QAA0B,IAATA,OAAkB,EAASA,EAAKX,gBAA6B,IAAPp1C,EAAgBA,EAAK,GCdzM2C,eAAeszC,GAAcj3B,SAC1BA,EAAO+f,SAAS,OAAQ,IAAI+W,ICDtC,SAAS,GAAiBxoC,EAAOrQ,EAAOqlC,EAAgBhlC,EAAKilC,GACzD,IAAIloC,EAAI2F,EACR,MAAM4L,EAAa3O,EACnB,IAAK2O,IAAeA,EAAWvN,OAC3B,OAEJ,MAAMkF,EAAS1F,EAAcykC,EAAe/+B,QAAS1C,GAAsC,QAAzBxG,EAAK4C,EAAM4D,gBAA6B,IAAPxG,EAAgBA,EAAK,GAAKiT,EAAMxM,OAAkB,IAATyC,EAAcwI,EAA+B,QAAtB/L,EAAK/C,EAAM8O,aAA0B,IAAP/L,EAAgBA,EAAK,EACjNuiC,GAAkC,IAAtB32B,EAAWI,QAQxBJ,EAAW3O,OAAS4D,EAChB+K,EAAW3O,MAAQ,IACnB2O,EAAWI,OAAS,EACpBJ,EAAW3O,OAAS2O,EAAW3O,SAVnC2O,EAAW3O,OAAS4D,EAChB0hC,GAAY32B,EAAW3O,MAAQK,IAC/BsO,EAAWI,OAAS,EACpBJ,EAAW3O,OAAS2O,EAAW3O,MAAQK,IAU3CsO,EAAW/K,UAAsB,IAAVkL,IACvBH,EAAW/K,UAAYkL,GAEvBH,EAAW3O,MAAQK,IACnBsO,EAAW3O,OAASK,GAG5B,SAAS44C,GAAkBvvC,EAAU2G,GACjC,IAAIjT,EAAI2F,EAAIhH,EAAIiH,EAAI7G,EAAIgU,EAAImP,EAAIwK,EAAIC,EAAImvB,EACxC,KAAiC,QAA1B97C,EAAKsM,EAAS+H,cAA2B,IAAPrU,OAAgB,EAASA,EAAGqO,OACjE,OAEJ,MAAM8C,EAAmB7E,EAAS+H,OAAOhG,MAAM4C,UAAWhC,EAAqF,QAAhFtQ,EAAqC,QAA/BgH,EAAK2G,EAASmgB,mBAAgC,IAAP9mB,OAAgB,EAASA,EAAGsJ,SAAsB,IAAPtQ,EAAgBA,EAA+B,QAAzBiH,EAAK0G,EAAS+B,aAA0B,IAAPzI,OAAgB,EAASA,EAAGqJ,EACtOA,GACA,GAAiBgE,EAAOhE,EAAGkC,EAAiBlC,EAAG,KAAK,GAExD,MAAME,EAAqF,QAAhF4D,EAAqC,QAA/BhU,EAAKuN,EAASmgB,mBAAgC,IAAP1tB,OAAgB,EAASA,EAAGoQ,SAAsB,IAAP4D,EAAgBA,EAA+B,QAAzBmP,EAAK5V,EAAS+B,aAA0B,IAAP6T,OAAgB,EAASA,EAAG/S,EAClLA,GACA,GAAiB8D,EAAO9D,EAAGgC,EAAiBhC,EAAG,KAAK,GAExD,MAAMD,EAAqF,QAAhFyd,EAAqC,QAA/BD,EAAKpgB,EAASmgB,mBAAgC,IAAPC,OAAgB,EAASA,EAAGxd,SAAsB,IAAPyd,EAAgBA,EAA+B,QAAzBmvB,EAAKxvC,EAAS+B,aAA0B,IAAPytC,OAAgB,EAASA,EAAG5sC,EAClLA,GACA,GAAiB+D,EAAO/D,EAAGiC,EAAiBjC,EAAG,KAAK,GAGrD,MAAM,GACT,YAAY8D,GACRzT,KAAKyT,UAAYA,EAErB,KAAK1G,GACD,IAAItM,EAAI2F,EACR,MAAMqN,EAAYzT,KAAKyT,UACvB1G,EAAS+H,OAASzH,GAAyBN,EAASvI,QAAQsQ,OAAQ/H,EAASsf,GAAItf,EAASvI,QAAQklB,kBAClG3c,EAASiI,YAAcjI,EAAS+H,OAAO7O,MAAQwN,EAAUgC,OAAOC,WAChE,MAAM8mC,EAAmE,QAAjD/7C,EAAK2O,GAAgBrC,EAAS+H,OAAOhG,cAA2B,IAAPrO,EAAgBA,EAAKsM,EAASkE,eAC3GurC,IACAzvC,EAASmgB,YAAcvb,GAAuB6qC,EAAiD,QAAhCp2C,EAAK2G,EAAS+H,OAAOhG,aAA0B,IAAP1I,OAAgB,EAASA,EAAGsL,UAAW+B,EAAUgC,OAAO5D,eAGvK,UAAU9E,GACN,IAAItM,EAAI2F,EAAIhH,EAAIiH,EAChB,MAAMyI,EAAmC,QAA1BrO,EAAKsM,EAAS+H,cAA2B,IAAPrU,OAAgB,EAASA,EAAGqO,MAC7E,OAAS/B,EAAS0L,YACb1L,EAASyL,YACR1J,SACkFjN,KAAjD,QAA/BuE,EAAK2G,EAASmgB,mBAAgC,IAAP9mB,OAAgB,EAASA,EAAGsJ,EAAErM,QAAwByL,EAAM4C,UAAUhC,EAAEjL,aAC5B5C,KAAjD,QAA/BzC,EAAK2N,EAASmgB,mBAAgC,IAAP9tB,OAAgB,EAASA,EAAGwQ,EAAEvM,QAAwByL,EAAM4C,UAAU9B,EAAEnL,aAC/B5C,KAAjD,QAA/BwE,EAAK0G,EAASmgB,mBAAgC,IAAP7mB,OAAgB,EAASA,EAAGsJ,EAAEtM,QAAwByL,EAAM4C,UAAU/B,EAAElL,QAE9H,OAAOsI,EAAU2G,GACR1T,KAAK6rB,UAAU9e,IAGpBuvC,GAAkBvvC,EAAU2G,IC1E7B3K,eAAe0zC,GAAuBr3B,SACnCA,EAAO2X,mBAAmB,cAAgBtpB,GAAc,IAAI,GAAmBA,ICDlF,MAAMipC,GAAa,CAAC,OAAQ,YAAa,QACzC,MAAM,GACT,KAAKnqC,EAASxF,EAAUnD,EAAQyG,GAC5B,IAAI5P,EAAI2F,EAAIhH,EACZ,MAAMypB,EAAY9b,EAASghB,UAC3B,QAAkBlsB,IAAdgnB,EACA,OAEJ,MAAM8zB,EAAW9zB,EAAUxlB,MAC3B,QAAiBxB,IAAb86C,EACA,OAEJ,MAAMC,EAAe7vC,OACKlL,IAAtB+6C,EAAavK,OACbuK,EAAavK,KAAOhlC,GAAyBsvC,EAAU5vC,EAAS8vC,kBAEpE,MAAMxK,EAAOuK,EAAavK,KAAM/3B,EAAmC,QAA1B7Z,EAAKooB,EAAUvO,aAA0B,IAAP7Z,EAAgBA,EAAK,GAAIyI,EAAqC,QAA3B9C,EAAKyiB,EAAU3f,cAA2B,IAAP9C,EAAgBA,EAAK,MAAOJ,EAA4B,EAArBhE,KAAK+0C,MAAMntC,GAAaX,EAAiC,QAAzB7J,EAAKypB,EAAU5f,YAAyB,IAAP7J,EAAgBA,EAAK,UAAWyV,EAAO9H,EAAS8H,KAAMwO,EAAWgvB,EAAKlxC,OAASyI,EAAU,EAC9U2I,EAAQtJ,KAAO,GAAGqR,KAASpR,KAAUlD,QAAWiD,KAChD,MAAM+K,EAAM,CACRrS,GAAI0hB,EACJ5hB,EAAGmI,EAAS,GAEhB2I,EAAQihC,YAAcnjC,EAClBwE,EACAtC,EAAQuqC,SAASzK,EAAMr+B,EAAIrS,EAAGqS,EAAIvS,GAGlC8Q,EAAQwqC,WAAW1K,EAAMr+B,EAAIrS,EAAGqS,EAAIvS,GAExC8Q,EAAQihC,YAAc,EAE1B,gBACI,OAAO,GAEX,WAAW//B,GACP,MAAMjP,EAAUiP,EAAUkE,cAC1B,GAAI+kC,GAAWpvC,KAAMzF,GAAMgB,GAAUhB,EAAGrD,EAAQsT,UAAUzC,MAAMhX,OAAQ,CACpE,MAAMwvB,EAAe6uB,GAChB7xC,IAAKhD,GAAMrD,EAAQsT,UAAUzC,MAAM7Q,QAAQqD,IAC3CyF,KAAMzF,KAAQA,GAAIm1C,EAAW,GAClCx1C,GAA0BqmB,EAAexY,IACrC2nC,EAASn8C,KAAKmI,GAASqM,EAAMpM,KAAMoM,EAAMnM,iBAEvC8vB,QAAQikB,IAAID,KC3CvBj0C,eAAem0C,GAAc93B,GAChC,MAAM9P,EAAS,IAAI,GACnB,IAAK,MAAMjX,KAAQq+C,SACTt3B,EAAO+f,SAAS9mC,EAAMiX,GC0B7BvM,eAAeo0C,GAAS/3B,SACrBijB,GAAcjjB,SACd+wB,GAAkB/wB,SAClB2kB,GAA+B3kB,SAC/BslB,GAA8BtlB,SAC9BioB,GAA8BjoB,SAC9B2pB,GAA+B3pB,SAC/BwqB,GAA4BxqB,SAC5ByqB,GAA6BzqB,SAC7B8qB,GAA4B9qB,SAC5BirB,GAA8BjrB,SAC9B8rB,GAA+B9rB,SAC/BmsB,GAA4BnsB,SAC5BoxB,GAAgCpxB,SAChC6xB,GAAmC7xB,SACnC01B,GAA8B11B,SAC9BojB,GAAgBpjB,SAChBsuB,GAAetuB,SACfkvB,GAAclvB,SACdu2B,GAAiBv2B,SACjB62B,GAAgB72B,SAChBi3B,GAAcj3B,SACd83B,GAAc93B,SACdgvB,GAAgBhvB,SAChByvB,GAAmBzvB,SACnB02B,GAAgB12B,SAChBwhB,GAAiBxhB,SACjByjB,GAAiBzjB,SACjBq3B,GAAuBr3B,SACvB0wB,GAAoB1wB,SACpB8gB,GAAQ9gB,GC3DX,MAAM,GACT,cACIplB,KAAKyE,QAAS,EACdzE,KAAKkS,MAAQ,EACblS,KAAKmS,MAAQ,EACbnS,KAAKqS,MAAO,EAEhB,KAAK/T,GACIA,SAGeuD,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,aAEJ5C,IAAfvD,EAAK4T,QACLlS,KAAKkS,MAAQ5N,GAAchG,EAAK4T,aAEjBrQ,IAAfvD,EAAK6T,QACLnS,KAAKmS,MAAQ7N,GAAchG,EAAK6T,aAElBtQ,IAAdvD,EAAK+T,OACLrS,KAAKqS,KAAO/T,EAAK+T,QCpBtB,MAAM,WAAa,GACtB,cACItP,QACA/C,KAAK0R,UAAY,IAAI,GACrB1R,KAAKmF,UAAY,YACjBnF,KAAKyE,QAAS,EACdzE,KAAKqD,MAAQ,EAEjB,KAAK/E,GACDyE,MAAMqG,KAAK9K,GACNA,IAGL0B,KAAK0R,UAAUtI,KAAK9K,EAAKoT,gBACF7P,IAAnBvD,EAAK6G,YACLnF,KAAKmF,UAAY7G,EAAK6G,gBAENtD,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,UClB/B,SAAS24C,GAAWrwC,EAAU2G,GAC1B,IAAIjT,EAAI2F,EACR,IAAK2G,EAASswC,OAAStwC,EAASvI,QAAQ64C,KACpC,OAEJ,MAAMA,EAAOtwC,EAASvI,QAAQ64C,KAAMC,EAAgBD,EAAK3rC,UAAWQ,GAA2C,QAAjCzR,EAAKsM,EAASswC,KAAKp2C,gBAA6B,IAAPxG,EAAgBA,EAAK,GAAKiT,EAAMxM,OAAQxD,EAAM,EAAI1B,KAAKsD,GAAI6M,EAAuC,QAA9B/L,EAAK2G,EAASswC,KAAKlrC,aAA0B,IAAP/L,EAAgBA,EAAK,EACtP,GAAKk3C,EAAc74C,OAAnB,CAGA,OAAQsI,EAASswC,KAAKjrC,QAClB,KAAK,EACDrF,EAASswC,KAAKh6C,OAAS6O,EACnBnF,EAASswC,KAAKh6C,MAAQK,IACtBqJ,EAASswC,KAAKh6C,OAASK,GAE3B,MACJ,KAAK,EACL,QACIqJ,EAASswC,KAAKh6C,OAAS6O,EACnBnF,EAASswC,KAAKh6C,MAAQ,IACtB0J,EAASswC,KAAKh6C,OAASK,GAE3B,MAEJqJ,EAASswC,KAAKp2C,UAAsB,IAAVkL,IAC1BpF,EAASswC,KAAKp2C,UAAYkL,IAG3B,MAAM,GACT,YAAYsB,GACRzT,KAAKyT,UAAYA,EAErB,mBAAmB1G,GACf,IAAItM,EACJ,MAAM48C,GAAiC,QAAxB58C,EAAKsM,EAASswC,YAAyB,IAAP58C,OAAgB,EAASA,EAAGgE,SAAWsI,EAASswC,KAC/F,MAAO,CACH9uC,EAAG8uC,EAAOr7C,KAAKW,IAAI06C,EAAKh6C,OAASg6C,EAAKE,kBAAe17C,EACrDgB,EAAGw6C,EAAOr7C,KAAKY,IAAIy6C,EAAKh6C,OAASg6C,EAAKG,kBAAe37C,GAG7D,KAAKkL,GACD,IAAItM,EACJ,MAAMg9C,EAAc1wC,EAASvI,QAAQ64C,KACrC,IAAKI,EACD,OAEJ1wC,EAASswC,KAAO,CACZ54C,OAAQg5C,EAAYh5C,OACpBpB,MAAQgB,GAAco5C,EAAYp6C,OAASrB,KAAKsD,GAAM,IACtDk4C,aAAcl6C,KAAe,GAAM,GAAK,EACxCi6C,aAAcj6C,KAAe,GAAM,GAAK,GAE5C,IAAIo6C,EAAgBD,EAAYt4C,UAChC,GAAsB,WAAlBu4C,EAA4B,CAC5B,MAAMn0C,EAAQvH,KAAKgC,MAAoB,EAAdV,KACzBo6C,EAAgBn0C,EAAQ,EAAI,oBAAsB,YAEtD,OAAQm0C,GACJ,IAAK,oBACL,IAAK,mBACD3wC,EAASswC,KAAKjrC,OAAS,EACvB,MACJ,IAAK,YACDrF,EAASswC,KAAKjrC,OAAS,EACvB,MAER,MAAMkrC,EAAiD,QAAhC78C,EAAKsM,EAASvI,QAAQ64C,YAAyB,IAAP58C,OAAgB,EAASA,EAAGiR,WACrE,OAAlB4rC,QAA4C,IAAlBA,OAA2B,EAASA,EAAc74C,UAC5EsI,EAASswC,KAAKlrC,MAAQ,EAAI9N,GAAci5C,EAAcnrC,OACtDpF,EAASswC,KAAKp2C,SAAY5C,GAAci5C,EAAcprC,OAAS,IAAOlS,KAAKyT,UAAUgC,OAAO5D,aACvFyrC,EAAcjrC,OACftF,EAASswC,KAAKp2C,UAAY3D,MAItC,UAAUyJ,GACN,IAAItM,EACJ,MAAM68C,EAAiD,QAAhC78C,EAAKsM,EAASvI,QAAQ64C,YAAyB,IAAP58C,OAAgB,EAASA,EAAGiR,UAC3F,OAAQ3E,EAAS0L,YAAc1L,EAASyL,aAAiC,OAAlB8kC,QAA4C,IAAlBA,OAA2B,EAASA,EAAc74C,QAEvI,YAAYD,KAAY+F,GACf/F,EAAQ64C,OACT74C,EAAQ64C,KAAO,IAAI,IAEvB,IAAK,MAAM/6C,KAAUiI,EACjB/F,EAAQ64C,KAAKj0C,KAAgB,OAAX9G,QAA8B,IAAXA,OAAoB,EAASA,EAAO+6C,MAGjF,OAAOtwC,EAAU2G,GACR1T,KAAK6rB,UAAU9e,IAGpBqwC,GAAWrwC,EAAU2G,IC7FtB3K,eAAe40C,GAAgBv4B,SAC5BA,EAAO2X,mBAAmB,OAAStpB,GAAc,IAAI,GAAYA,ICDpE,MAAM,GACT,cACIzT,KAAKyE,QAAS,EACdzE,KAAKu3C,UAAY,IACjBv3C,KAAKqQ,QAAU,EAEnB,KAAK/R,GACIA,SAGcuD,IAAfvD,EAAKwQ,QACL9O,KAAK8O,MAAQuV,GAAatiB,OAAO/B,KAAK8O,MAAOxQ,EAAKwQ,aAElCjN,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,aAEA5C,IAAnBvD,EAAKi5C,YACLv3C,KAAKu3C,UAAYj5C,EAAKi5C,gBAEL11C,IAAjBvD,EAAK+R,UACLrQ,KAAKqQ,QAAU/L,GAAchG,EAAK+R,YCpBvC,MAAM,GACT,cACIrQ,KAAKi6C,MAAQ,IAAI,GACjBj6C,KAAK8X,UAAY,IAAI,GAEzB,KAAKxZ,GACIA,IAGL0B,KAAKi6C,MAAM7wC,KAAK9K,EAAK27C,OACrBj6C,KAAK8X,UAAU1O,KAAK9K,EAAKwZ,aCT1B,MAAM,GACT,eAAe/K,EAAUwF,EAAS3I,EAAQyG,GACtC,MAAMspC,EAAW5sC,EAASvI,QAASo5C,EAAiBjE,EAASK,QAC7D,IAAK4D,EACD,MAAO,GAEX,MAAM5D,EAAU4D,EAAe9lC,UAAWsiC,EAAYJ,EAAQv1C,QAAUnB,IAAc02C,EAAQzC,UAAWx+B,EAAgBhM,EAASvI,QAAQwU,OAAQC,GAAkB,EAAIlM,EAASmM,eAAiBH,EAAcI,YAAa0kC,EAAmBzD,EAAY/1C,GAAc21C,EAAQ3pC,SAAW4I,EAAiB5I,EAAS8pC,EAAa/qC,GAAgB4qC,EAAQlrC,OAAQgvC,EAAe3D,EAAa7pC,GAAgB6pC,EAAY0D,QAAoBh8C,EAAWsF,EAAM,GAAI42C,EAAe3D,GAAa0D,EAGje,OAFA32C,EAAI0N,KAAOkpC,EAAeD,OAAej8C,EACzCsF,EAAI2N,OAASipC,EAAeD,OAAej8C,EACpCsF,EAEX,QAEA,UAAU4F,GACN,MAAM4sC,EAAW5sC,EAASvI,QAASo5C,EAAiBjE,EAASK,QAC7D,QAAK4D,GAGEA,EAAe9lC,UAAUrT,OAEpC,YAAYD,KAAY+F,GACf/F,EAAQw1C,UACTx1C,EAAQw1C,QAAU,IAAI,IAE1B,IAAK,MAAM13C,KAAUiI,EACjB/F,EAAQw1C,QAAQ5wC,KAAgB,OAAX9G,QAA8B,IAAXA,OAAoB,EAASA,EAAO03C,SAGpF,WC7BGjxC,eAAei1C,GAAmB54B,SAC/BA,EAAO2X,mBAAmB,UAAW,IAAM,IAAI,ICDlD,MAAM,GACT,cACI/8B,KAAKkC,MAAQ,GACblC,KAAK+X,KAAO,GAEhB,KAAKzZ,GACIA,SAGcuD,IAAfvD,EAAK4D,QACLlC,KAAKkC,MAAQoC,GAAchG,EAAK4D,aAElBL,IAAdvD,EAAKyZ,OACL/X,KAAK+X,KAAOzT,GAAchG,EAAKyZ,SCZpC,MAAM,GACT,cACI/X,KAAKgF,SAAW,EAChBhF,KAAKyE,QAAS,EACdzE,KAAKkS,MAAQ,IAAI,GAErB,KAAK5T,GACD,GAAKA,SAGiBuD,IAAlBvD,EAAK0G,WACLhF,KAAKgF,SAAWV,GAAchG,EAAK0G,gBAEnBnD,IAAhBvD,EAAKmG,SACLzE,KAAKyE,OAASnG,EAAKmG,aAEJ5C,IAAfvD,EAAK4T,OACL,GAA0B,kBAAf5T,EAAK4T,MACZlS,KAAKkS,MAAM9I,KAAK,CAAElH,MAAO5D,EAAK4T,YAE7B,CACD,MAAM+rC,EAAa3/C,EAAK4T,WACDrQ,IAAnBo8C,EAAWx6C,IACXzD,KAAKkS,MAAM9I,KAAK,CAAElH,MAAO+7C,IAGzBj+C,KAAKkS,MAAM9I,KAAK9K,EAAK4T,SC1BzC,SAASgsC,GAAanxC,EAAU2G,GAC5B,IAAIjT,EACJ,MAAM09C,EAASpxC,EAASvI,QAAQ25C,OAChC,KAAiB,OAAXA,QAA8B,IAAXA,OAAoB,EAASA,EAAO15C,UAAYsI,EAASoxC,OAC9E,OAEJ,MAAMC,EAAarxC,EAASoxC,OAAOC,WAAa1qC,EAAMxM,OAAQ0uB,EAAY7oB,EAASoxC,OAAOvoB,UAAYliB,EAAMxM,OAAQlC,EAAY4wB,IAAwD,QAAzCn1B,EAAKsM,EAAS0I,OAAO4oC,sBAAmC,IAAP59C,EAAgBA,EAAK,GAAKiT,EAAMxM,SAAY,IAAO,IAAKxD,EAAM,EAAI1B,KAAKsD,GACvQyH,EAASoxC,OAAOj8C,OAASk8C,EACrBrxC,EAASoxC,OAAOj8C,MAAQwB,IACxBqJ,EAASoxC,OAAOj8C,OAASwB,GAE7BqJ,EAAS3H,SAASzD,GAAKqD,EAAWhD,KAAKW,IAAIoK,EAASoxC,OAAOj8C,OAC3D6K,EAAS3H,SAAS3D,GAAKuD,EAAWhD,KAAKovB,IAAIpvB,KAAKY,IAAImK,EAASoxC,OAAOj8C,QAEjE,MAAM,GACT,YAAYuR,GACRzT,KAAKyT,UAAYA,EAErB,KAAK1G,GACD,IAAItM,EACJ,MAAM69C,EAAYvxC,EAASvI,QAAQ25C,QACjB,OAAdG,QAAoC,IAAdA,OAAuB,EAASA,EAAU75C,QAChEsI,EAASoxC,OAAS,CACdj8C,MAAOoB,IAActB,KAAKsD,GAAK,EAC/B84C,WAAY/5C,GAAci6C,EAAUpsC,MAAMhQ,OAAS,IACnD0zB,UAAWvxB,GAAci6C,EAAUpsC,MAAM6F,MAAQ,IAIrDhL,EAASoxC,OAAS,CACdj8C,MAAO,EACPk8C,WAAY,EACZxoB,UAAW,GAGnB7oB,EAAS0I,OAAO4oC,eAAiBh6C,GAAkG,QAAnF5D,EAAmB,OAAd69C,QAAoC,IAAdA,OAAuB,EAASA,EAAUt5C,gBAA6B,IAAPvE,EAAgBA,EAAK,GAAKT,KAAKyT,UAAUgC,OAAOC,WAE/L,UAAU3I,GACN,IAAItM,EACJ,OAAQsM,EAAS0L,YAAc1L,EAASyL,aAAkD,QAAlC/X,EAAKsM,EAASvI,QAAQ25C,cAA2B,IAAP19C,OAAgB,EAASA,EAAGgE,QAElI,YAAYD,KAAY+F,GACf/F,EAAQ25C,SACT35C,EAAQ25C,OAAS,IAAI,IAEzB,IAAK,MAAM77C,KAAUiI,EACjB/F,EAAQ25C,OAAO/0C,KAAgB,OAAX9G,QAA8B,IAAXA,OAAoB,EAASA,EAAO67C,QAGnF,OAAOpxC,EAAU2G,GACR1T,KAAK6rB,UAAU9e,IAGpBmxC,GAAanxC,EAAU2G,ICtDxB3K,eAAew1C,GAAkBn5B,SAC9BA,EAAO2X,mBAAmB,SAAWtpB,GAAc,IAAI,GAAcA,ICOxE1K,eAAey1C,GAASp5B,SACrB+3B,GAAS/3B,SACTyb,GAAmBzb,SACnB6gB,GAAgB7gB,SAChBu4B,GAAgBv4B,SAChB44B,GAAmB54B,SACnBm5B,GAAkBn5B,SAClBqgB,GAA6BrgB,SAC7B6a,GAAoB7a,SACpB6f,GAAmB7f,GCGd,QACfnnB,mBAEAK,gBACA,OACA4B,iBACAC,mBACAC,iBACAsqB,aACAlL,eACAmG,mBACA5F,QACAiF,OACAvgB,UACA+f,kBACAzZ,cACA1M,kBAEAsb,WAEA+L,OACAtM,QACApU,aACAif,WACA5T,WACArK,OACAkM,QACApD,+BAIAgJ,WACAhJ,OACAzL,6BAEAkqC,OACAz+B,eACA9J,aACAP,UACA4L,WACApK,SAEA8R,MACAyP,cACAriB,iBACAV,UACAijB,kBACAzkB,UACAiP,QACAmV,aAEAoC,QAAAvB,SAAAzjB,UAAAwjB,gBAAA5kB,UACAgN,SACAqB,WACAjN,UACAC,gBACAwN,QACAG,SAEApP,UACAI,UAEAgS,OACAhX,eAEA2H,MACA0L,WACAjN,UACAC,eACAwN,QACAG,SAEApP,QACAwB,UACAC,gBAEArB,UAGAonB,oBAIA9rB,SACA8/C,4BAAA,yJACAD,MAAA,0CADA,MCzGqT,MCOjT,GAAY,eACd,GACA,EACA,GACA,EACA,KACA,KACA,MAIa,M,QCoFA,IACfvgD,mBACAK,gBACA,OACAogD,uBACAp/C,OACAq/C,aACAC,4BACAC,cACAnM,YAGAoM,YACAC,eACAC,cACAC,WACAC,WACAC,kBACAC,gBAGA5gD,0CACAC,+DACAA,wBAAA4gD,uBAGAv/C,mBAAA,oKACA,2BACA,aACA,mCAEA,gBAEA,sDAPA,IAUAnB,yCACAC,yDAEA0gD,oBACA,kBACA,kBACA,YAEA,YAEA,yBACA7rC,iBACAs1B,iBACAp/B,WACAib,SACAjjB,KACAF,QAIA89C,wBACA,kBAEA,UADA,IACA,gBAEA,EAEA,yBACA9rC,iBACAs1B,iBACAp/B,WACAib,SACAjjB,KACAF,WC3KqS,MCQjS,I,UAAY,eACd,GACA,EACAvC,GACA,EACA,KACA,WACA,OAIa,gB,2CCnBf,W","file":"js/chunk-b81ec0ae.30898d46.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 var _a;\n const noEasing = (value) => value;\n return (_a = easings.get(name)) !== null && _a !== void 0 ? _a : noEasing;\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 * dx + dy * dy) };\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 = 0;\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.mouseMoveHandler = (e) => this.mouseTouchMove(e);\n this.touchStartHandler = (e) => this.mouseTouchMove(e);\n this.touchMoveHandler = (e) => this.mouseTouchMove(e);\n this.touchEndHandler = () => this.mouseTouchFinish();\n this.mouseLeaveHandler = () => this.mouseTouchFinish();\n this.touchCancelHandler = () => this.mouseTouchFinish();\n this.touchEndClickHandler = (e) => this.mouseTouchClick(e);\n this.mouseUpHandler = (e) => this.mouseTouchClick(e);\n this.mouseDownHandler = () => this.mouseDown();\n this.visibilityChangeHandler = () => this.handleVisibilityChange();\n this.themeChangeHandler = (e) => this.handleThemeChange(e);\n this.oldThemeChangeHandler = (e) => this.handleThemeChange(e);\n this.resizeHandler = () => this.handleWindowResize();\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 mousePos = container.interactivity.mouse.position;\n if (!mousePos) {\n return;\n }\n container.interactivity.mouse.clickPosition = Object.assign({}, mousePos);\n container.interactivity.mouse.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, themeName = mediaEvent.matches\n ? this.container.options.defaultThemes.dark\n : this.container.options.defaultThemes.light, theme = this.container.options.themes.find((theme) => theme.name === themeName);\n if (theme && theme.default.auto) {\n this.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(); }, 500);\n }\n manageListeners(add) {\n var _a;\n const 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\", this.themeChangeHandler, add);\n }\n else if (mediaMatch.addListener !== undefined) {\n if (add) {\n mediaMatch.addListener(this.oldThemeChangeHandler);\n }\n else {\n mediaMatch.removeListener(this.oldThemeChangeHandler);\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, this.mouseMoveHandler, add);\n manageListener(interactivityEl, touchStartEvent, this.touchStartHandler, add);\n manageListener(interactivityEl, touchMoveEvent, this.touchMoveHandler, add);\n if (!options.interactivity.events.onClick.enable) {\n manageListener(interactivityEl, touchEndEvent, this.touchEndHandler, add);\n }\n else {\n manageListener(interactivityEl, touchEndEvent, this.touchEndClickHandler, add);\n manageListener(interactivityEl, mouseUpEvent, this.mouseUpHandler, add);\n manageListener(interactivityEl, mouseDownEvent, this.mouseDownHandler, add);\n }\n manageListener(interactivityEl, mouseLeaveTmpEvent, this.mouseLeaveHandler, add);\n manageListener(interactivityEl, touchCancelEvent, this.touchCancelHandler, 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, this.resizeHandler, add);\n }\n }\n if (document) {\n manageListener(document, visibilityChangeEvent, this.visibilityChangeHandler, 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","import { ClickEvent } from \"./ClickEvent\";\nimport { DivEvent } from \"./DivEvent\";\nimport { HoverEvent } from \"./HoverEvent\";\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 = true;\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 (data.resize !== undefined) {\n this.resize = 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 optTheme = new Theme();\n optTheme.load(theme);\n this.themes.push(optTheme);\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 0:\n this._externalInteractors.push(interactor);\n break;\n case 1:\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 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 }\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.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 = 0;\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 = 0;\n break;\n case \"random\":\n this.size.value = randomInRange(this.size) * pxRatio;\n this.size.status = getRandom() >= 0.5 ? 0 : 1;\n break;\n case \"max\":\n default:\n this.size.value = this.size.max;\n this.size.status = 1;\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);\n const res = baseVelocity.copy();\n const 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};\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\";\nfunction fetchError(statusCode) {\n console.error(`tsParticles - Error ${statusCode} while retrieving config file`);\n}\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 fetchError(response.status);\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.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 = 0;\n }\n}\n","export class ParticlesInteractorBase {\n constructor(container) {\n this.container = container;\n this.type = 1;\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\";\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 0:\n rotate.value += speed;\n if (rotate.value > max) {\n rotate.value -= max;\n }\n break;\n case 1:\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 = 1;\n break;\n case \"clockwise\":\n particle.rotate.status = 0;\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 === 0) {\n colorValue.value += velocity;\n if (decrease && colorValue.value > max) {\n colorValue.status = 1;\n colorValue.value -= colorValue.value % max;\n }\n }\n else {\n colorValue.value -= velocity;\n if (colorValue.value < 0) {\n colorValue.status = 0;\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 0:\n if (particle.opacity.value >= maxValue) {\n particle.opacity.status = 1;\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 1:\n if (particle.opacity.value <= minValue) {\n particle.opacity.status = 0;\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 = 0;\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 = 0;\n break;\n case \"random\":\n particle.opacity.value = randomInRange(particle.opacity);\n particle.opacity.status =\n getRandom() >= 0.5 ? 0 : 1;\n break;\n case \"max\":\n default:\n particle.opacity.value = particle.opacity.max;\n particle.opacity.status = 1;\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.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 container = this.container, 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(container, 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(container, 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 0:\n if (particle.size.value >= maxValue) {\n particle.size.status = 1;\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 1:\n if (particle.size.value <= minValue) {\n particle.size.status = 0;\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 === 0) {\n colorValue.value += velocity;\n if (decrease && colorValue.value > max) {\n colorValue.status = 1;\n colorValue.value -= colorValue.value % max;\n }\n }\n else {\n colorValue.value -= velocity;\n if (colorValue.value < 0) {\n colorValue.status = 0;\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 0:\n particle.tilt.value += speed;\n if (particle.tilt.value > max) {\n particle.tilt.value -= max;\n }\n break;\n case 1:\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 = 1;\n break;\n case \"clockwise\":\n particle.tilt.status = 0;\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":""}