H1At      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrsNone2I1The particle storage datatypeThe particle stored last:List of particles in ascending order of remaining lifetimeThe particle systemA single particle!Time to live in seconds"7Creation time of particle in seconds form program start#Position of particle on canvas$Particle rotation%0particle velocity as vector of pixels per second&3Rotational velocity of particle in angle per second'Root t of (Node Graph of  per particle)t to connect other s to*t to connect draw actions to+%Typeclass for converting Angles from 0 to / and vice versa..Type for defining angles/Angle in radians0Angle in degrees11Type for defining the draw type of draw functions2-Fill the specified area completely with color3!only draw the outline of the area4Width of line in pixels<Affection's state monad?Inner u\ monad for the update state type AffectionStateInner us m a = StateT (AffectionData us) m avA type for storing C( results to be executed frequently. TODOC2This datatype stores information about areas of a  to be updatedEThe area to updateFBuffer to drawGShall the drawRequest persistHJMain type for defining the look, feel and action of the whole application.J Loop breaker.KState data provided by userL SDL windowM SDL surfaceN Target formatO Stack of Cs to be processedP Stack of Cs to be invalidatedQElapsed time in secondsR Components to initialize in SDL.U4Configuration for the aplication. needed at startup.W'SDL components to initialize at startupX Window titleYWindow configurationZ+Actions to be performed, before loop starts[Function for updating graphics.\;Main update function. Takes fractions of a second as input.]3Provide your own load function to create this data.^6Provide your own finisher function to clean your data.M !"#$%&'()*+,-./0123456789:;<=>?vw@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`]    !"#$%&'()*+,-./0123456:789;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^];HIJKLMNOPQUVWXYZ[\]^<=>?RST56789:1234CDEFG@AB./0+,- !"#$%&'()*    !"#$%&'()*+,-./0123456789:;<=>?vw@ABCDEFGH IJKLMNOPQRSTU VWXYZ[\]^_`None!"h+Force update of a specific region on screenifunction for handling Cs and updating the outputjclear a previously drawn areax compute color for a single pixelk0Clear a specified area of a buffer from all datag Target NodeColor to draw in Draw typeDimensions of Rectangle Final BufferhArea to be updated Target buffer Shall the C persist?iBPixel buffer to blit to -> B.BablFormatPtr -- ^ format to blit inStrideComponents per PixelC to handlejBPixel buffer to blit to -> B.BablFormatPtr -- ^ format to blit inStrideComponents per PixelDrawrequest to invalidatexPixel information in bufferColor to draw overResulting colouryk Target buffer Area to clearghijkgijhkghijxykNone!"z(Get the next living particle from a listoFunction for inserting a new  into its  PartileSystem{ Insert a & into its chronologically ordered listlElapsed time in secondsUpdate function for a single t This Function should take the elapsed time in seconds and the initial particle as arguments. -> [Maybe Particle]2 to be processed -> Affection us [Maybe Particle] resulting zmno to insert into to insertresulting new {3Time in seconds from beginning of program executionList to insert to to insertResulting listlmnolmnolzmno{None!"p/Main function which bootstraps everything else.q Return the userstate to the userrPut altered user state backs-block a thread for a specified amount of timep)Configuration of the Game and its engine.qrsNumber of secondsl    !"#$%&'()*+,-./0123456:789;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^ghijklmnopqrspqrspqrs|          ! "##$%&&'()**+,-./0123456789:;<=>??@ABCDDEFGHIJJKLMNNOPQRSTUVWXYZZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}}~(affection-0.0.0.1-4cIXSVtjWtjAHVEe1944QUAffection.Types AffectionAffection.DrawAffection.ParticleG GeglNodesbaseControl.Monad.IO.ClassliftIO!sdl2-2.1.3-DowE7uPk79X5oshOMg5tVk SDL.VideowindowResizablewindowPosition windowOpenGL windowModewindowInputGrabbedwindowInitialSize windowHighDPI windowBorder WindowConfig defaultWindow#gegl-0.0.0.0-IvL8rumPVW7L2cs45S9PlQGEGL.FFI.Rectangle rectangleY rectangleXrectangleWidthrectangleHeight GeglRectangleGEGL.FFI.Buffer GeglBuffer mtl-2.2.1-6qsR1PHUy5lL47Hpoa4jCMControl.Monad.State.ClassputgetParticleStoragepartStorLatest partStorListParticleSystem partSysParts partSysNode partSysBufferParticleparticleTimeToLiveparticleCreationparticlePositionparticleRotationparticleVelocityparticlePitchRateparticleRootNodeparticleNodeGraphparticleStackContparticleDrawFlange ConvertAngletoRadtoDegAngleRadDegDrawTypeFillLine lineWidthRGBArgbaAffectionStaterunStateAffectionStateInnerRequestPersistYesKill DrawRequest requestArea requestBufferrequestPersist AffectionData quitEvent userState drawWindow drawSurface drawFormat drawStack clearStack elapsedTimeInitComponentsAllOnlyAffectionConfiginitComponents windowTitle windowConfigpreLoopdrawLoop updateLoop loadStatecleanUp $fEqAngle$fConvertAngleAngle$fFunctorAffectionState$fApplicativeAffectionState$fMonadAffectionState$fMonadIOAffectionState$fMonadStateAffectionState $fShowAngledrawRectpresenthandleDrawRequestinvalidateDrawRequest clearAreaupdateParticle drawParticlesupdateParticleSysteminsertParticle withAffection getAffection putAffectiondelaySec GEGL.FFI.NodeGeglNodetransformers-0.5.2.0Control.Monad.Trans.State.LazyStateT DrawAssetcolorizeunsafeColorize nextLiving chronoInsert