0      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\IObtain the final value of a Future. Blocks until the value is available `The type of a Behaviour. A behaviour maps the bus to a list of differences to apply to the bus  before the next Behaviour's sample of time. The type of future events..  A behaviour doesn'Ct know about the time that it assigns events, only that they exist < at some point after the time that the Behaviour sampled. The type of widgets. b A widget is an input-only way to assign Events to time. A mouse is a widget. A keyboard is a - widget. A webcam is a widget, and so on. 2The type of a discrete sample of continuous time. &The map of just Event.name to events. %The map of just Event.src to events. 'The map of just Event.group to events. The map of FQNs to events. An discrete event in time The time of the event' s inception. ^The unique name of an event. Group + src + name = the fully qualified name FQN of the event. The group of an event. The timespan from time that an event exists.  The data attached to the event. 9The behaviour or widget that assigned the event to time. 'Defines the data attachable to events.  !"#$%\Defines time in terms of the differences from time t0 to the next instant. This is the type I returned by Behaviours to describe time directly after the Behaviour. &'9Time t1 contains all events at time t0 minus this event. (8Time t1 contains all events at time t0 plus this event. )1Defines the amount of time that an event exists. *MThe event exists for a certain number of samples of time from its inception. +5The event exists for a specified amount of real time ,The event exists forever -./01234566Show without risking running into an unshowable type. 789:;The empty bus <$Add an event to time within the bus =%An IO action sometime in the future. >CThe null Behaviour. Samples the bus and adds and deletes nothing. ?the in front of behaviour combinator. behaviour 1 is in front of behaviour 0, so behavour 0 will see the bus filtered through behaviour 1 @the behind behaviour combinator. behaviour 0 is behind behaviour 1, so behaviour 0 will see the bus filtered through behaviour 1 AXthe beside behaviour combinator. All behaviours that are side-by-side see the same bus. BGAn infinite loop of behaviours and widgets over time, sampled forward. C4Sample time and apply the behaviour to that sample. D>Assign an event to time given some event data and a TimeSpan. (produce group source nm timetolive edataE'Assign an event to time from a widget. produce'% group source nm timetolive edata busF_Sample all events with a given name at the current time and output their deletions as Diffs as ; well as any additional Diffs returned by the behaviour. GHIJKLMN`Sample all events with a given group at the current time and output their deletions as Diffs as ; well as any additional Diffs returned by the behaviour. OPaSample all events with a given source at the current time and output their deletions as Diffs as ; well as any additional Diffs returned by the behaviour. QRaSample a single fully qualified event at the current time and output their deletions as Diffs as h well as any additional Diffs returned by the behaviour. Parameter order is bus, group, source, name S:Sample all events with a given name and apply a Behaviour TBSample all events with a given name and apply a Behaviour to each U;Sample all events with a given group and apply a Behaviour VCSample all events with a gien group and apply a Behaviour to each. W<Sample all events with a given source and apply a Behaviour XESample all events with a given source and apply a Behaviour to each. Y=Sample a single fully qualified event and output some Diffs. 0 Parameter order is bus, group, source, name. ZAApply a behaviour to all events in the bus, one event at a time. [EApply a behaviour to the collection of all events on the bus at once   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\-0/.),+*12345%('&$#"! 6  789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\    $#"!  !"#$%('&&'(),+**+,-0/../0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[U\IObtain the final value of a Future. Blocks until the value is available `The type of a Behaviour. A behaviour maps the bus to a list of differences to apply to the bus  before the next Behaviour's sample of time. ]The type of future events..  A behaviour doesn'Ct know about the time that it assigns events, only that they exist < at some point after the time that the Behaviour sampled. ^The type of widgets. b A widget is an input-only way to assign Events to time. A mouse is a widget. A keyboard is a - widget. A webcam is a widget, and so on. _2The type of a discrete sample of continuous time. `The map of FQNs to events. a&The map of just Event.name to events. b%The map of just Event.src to events. c'The map of just Event.group to events. deAn discrete event in time fThe time of the event' s inception. g^The unique name of an event. Group + src + name = the fully qualified name FQN of the event. hThe group of an event. iThe timespan from time that an event exists. j The data attached to the event. k9The behaviour or widget that assigned the event to time. lm'Defines the data attachable to events. nopqrstuvwxyz{|}~\Defines time in terms of the differences from time t0 to the next instant. This is the type I returned by Behaviours to describe time directly after the Behaviour. 9Time t1 contains all events at time t0 minus this event. 8Time t1 contains all events at time t0 plus this event. 1Defines the amount of time that an event exists. MThe event exists for a certain number of samples of time from its inception. 5The event exists for a specified amount of real time The event exists forever 6Show without risking running into an unshowable type. The empty bus $Add an event to time within the bus %An IO action sometime in the future. CThe null Behaviour. Samples the bus and adds and deletes nothing. the in front of behaviour combinator. behaviour 1 is in front of behaviour 0, so behavour 0 will see the bus filtered through behaviour 1 the behind behaviour combinator. behaviour 0 is behind behaviour 1, so behaviour 0 will see the bus filtered through behaviour 1 Xthe beside behaviour combinator. All behaviours that are side-by-side see the same bus. GAn infinite loop of behaviours and widgets over time, sampled forward. 4Sample time and apply the behaviour to that sample. >Assign an event to time given some event data and a TimeSpan. (produce group source nm timetolive edata'Assign an event to time from a widget. produce'% group source nm timetolive edata bus_Sample all events with a given name at the current time and output their deletions as Diffs as ; well as any additional Diffs returned by the behaviour. `Sample all events with a given group at the current time and output their deletions as Diffs as ; well as any additional Diffs returned by the behaviour. aSample all events with a given source at the current time and output their deletions as Diffs as ; well as any additional Diffs returned by the behaviour. aSample a single fully qualified event at the current time and output their deletions as Diffs as h well as any additional Diffs returned by the behaviour. Parameter order is bus, group, source, name :Sample all events with a given name and apply a Behaviour BSample all events with a given name and apply a Behaviour to each ;Sample all events with a given group and apply a Behaviour CSample all events with a gien group and apply a Behaviour to each. <Sample all events with a given source and apply a Behaviour ESample all events with a given source and apply a Behaviour to each. =Sample a single fully qualified event and output some Diffs. 0 Parameter order is bus, group, source, name. AApply a behaviour to all events in the bus, one event at a time. EApply a behaviour to the collection of all events on the bus at once y\]^_`abcdefghijklmnopqrstuvwxyz{|}~     Um~}|{zyxwvutsrqponefghijkl_`abcd^]\U\]^_`abcd`abcdefghijklfghijklm~}|{zyxwvutsrqponnopqrstuvwxyz{|}~  IBork the program when an unhandled exception makes it to this behaviour. % Catches all events with the group " Exception"' and throws them as one big exception. dHandle exceptions by completely ignoring them. Not recommended, really, but hey, who am I to judge? dHandle exceptions by completely ignoring them. Not recommended, really, but hey, who am I to judge? PHandle exceptions by printing them to stdout and then completely ignoring them. OHandle exceptions by printing them to stdout and then completely ignoring them RHandle exceptions by printing them to a handle and then completely ignoring them. OHandle exceptions by printing them to handle and then completely ignoring them readFileBehaviour name datatype# looks for any event with the name name and reads the file ( into an event following the pattern:  name: same as filename. ' group: same as name of the behaviour, name  source: " ReadSource"  timespan: Persistent 2 eventdata: the file, read in and processed using read to be of the datatype that . corresponds to the constructor in the datatype parameter. *NOTE: This function can only be used with EData a where a has a  instance. For event $ data without a read instance, use  !readFileBehaviourNR name datatype# looks for any event with the name name and reads the file ( into an event following the pattern:  name: same as filename. ' group: same as name of the behaviour, name  source: " ReadSource"  timespan: Persistent 2 eventdata: the file, read in and processed using  to be of the datatype that . corresponds to the constructor in the datatype+ parameter. The constructor itself should  not be serialized. "NOTE: Attempting to read datatype EOther a. using this will cause the program to emit an  event with " Exception" as the group and name as the source. !decodeFileBehaviour name datatype# looks for any event with the name name and reads the file ( into an event following the pattern:  name: same as filename. ' group: same as name of the behaviour, name  source: " ReadSource"  timespan: Persistent 2 eventdata: the file, read in and processed using   to be of the < datatype that corresponds to the constructor in the datatype parameter. The constructor ' itself need not be serialized. *NOTE: This function can only be used with EData a where a has a ! instance. For event $ data without a read instance, use  readFileBehaviour name datatype# looks for any event with the name name and reads the file ( into an event following the pattern:  name: same as filename. ' group: same as name of the behaviour, name  source: " ReadSource"  timespan: Persistent 2 eventdata: the file, read in and processed using read to be of the datatype that . corresponds to the constructor in the datatype parameter. "NOTE: Attempting to read datatype EOther a/ using this will cause the program to raise an  Event with " Exception" as the group. writeFileBehaviour looks for " WriteFile"/ named events with event data corresponding to  [EString filepath, data constructor contents]( and removes them from the bus, writing  the file named filepath?. Any error is placed on the bus with an Exception event with  " WriteFile" as the source. writeFileBehaviour looks for " WriteFile"/ named events with event data corresponding to  [EString filepath, data constructor contents]( and removes them from the bus, writing  the file named filepath?. Any error is placed on the bus with an Exception event with  " WriteFile" as the source. NOTE: Attempting to encode 'EOther a'% using this will raise an Exception. writeFileBehaviour looks for " WriteFile"/ named events with event data corresponding to  [EString filepath, data constructor contents]( and removes them from the bus, writing  the file named filepath?. Any error is placed on the bus with an Exception event with  " WriteFile" as the source. NOTE: Attempting to encode 'EOther a'% using this will raise an Exception. writeFileBehaviour looks for " WriteFile"/ named events with event data corresponding to  [EString filepath, data constructor contents]( and removes them from the bus, writing  the file named filepath?. Any error is placed on the bus with an Exception event with  " WriteFile" as the source. :NOTE: This can only be used with an EData a where a has a ! instance. "#$%&'(),paceMicrosecondsWidget timeout timername bus  | $ | Send a heartbeat event out every timeout microseconds to the bus ,paceMillisecondsWidget timeout timername bus  | $ | Send a heartbeat event out every timeout milliseconds to the bus 'paceSecondsWidget timeout timername bus  | $ | Send a heartbeat event out every timeout seconds to the bus NPlace the command line arguments on the bus as an Event following the pattern  name : argv  group : Environment  source : CommandLineArgsWidget  timespan : Persistent * data : EStringL of the command line args lRead a config file and place it on the bus as individual events for each config item following the pattern:  name : config item name  group : Environment  source : filename.ConfigFileWidget  timespan : Persistent " data : EString config item value -Config files follow a fairly simple grammar: ConfigFile := [ConfigLine] ConfigLine :=  key spaces = spaces  value endl | CommentLine | BlankLine CommentLine := # anychars endl BlankLine := spaces endl jRead in all environment variables and place them on the bus individually as events following the pattern:  name : variable name  group : Environment  source : EnvironmentWidget  timespan : Persistent  data : EString variable value ISet the program name as an event on the bus using the following pattern:  name : ProgramName  group : Environment  source : ProgramNameWidget  timespan : Persistent  data : EString progran name *+,-.       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a       !"#$%&'()*+-./012789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ buster-2.5App.DebugEventBus App.EventBusApp.Behaviours.PrintEventsApp.Behaviours.ExceptionApp.Behaviours.FileOpsApp.Widgets.PacerApp.Widgets.Environment BehaviourFutureWidgetBusnameMapsrcMapgroupMapfullyQualifiedMapcurrentProducerConsumerdebugoutEventenamegrouptimespan eventdatasrctimeEDataEOtherLEAssocLEAssocEOtherEBoolLEIntLEDoubleLEStringLEBoolEIntEDoubleEChar ELByteStringL ELByteString EByteStringL EByteStringEStringDiffInstrumentedBehaviourDeletion InsertionTimeSpan IterationsTime PersistentBusIterationChangesClickInsertedDeletedsecondsminuteshoursdaysoncesafeShow eventsByNameeventsBySource eventsByGroup eventByQNameemptyBusaddEventfuture passthrough<~<>~>|~|bus busIterationproduceproduce'"consumeNamedEventsCollectivelyWithconsumeNamedEventsconsumeEventGroupconsumeEventsFromSourceconsumeFullyQualifiedEventmodifyEventData modifyEventconsumeNamedEventsWith!consumeEventGroupCollectivelyWithconsumeEventGroupWith'consumeEventsFromSourceCollectivelyWithconsumeEventsFromSourceWithconsumeFullyQualifiedEventWithpollNamedEventsCollectivelyWithpollNamedEventsWithpollEventGroupCollectivelyWithpollEventGroupWith$pollEventsFromSourceCollectivelyWithpollEventsFromSourceWithpollFullyQualifiedEventWithpollAllEventsWithpollAllEventsCollectivelyWithprintEventsBehaviourprintEventGroupBehaviourprintEventNameBehaviourprintEventSourceBehaviourprintQNameBehaviour checkpointlogEventsBehaviourlogEventGroupBehaviourlogEventNameBehaviourlogEventSourceBehaviourunhandledExceptionBehaviourdisregardExceptionsFromSourcedisregardExceptionsNamed%printAndDisregardExceptionsFromSource printAndDisregardExceptionsNamed#logAndDisregardExceptionsFromSourcelogAndDisregardExceptionsNamedreadFileBehaviourreadFileBehaviourNRdecodeFileBehaviourdecodeFileBehaviourNBwriteFileBehaviourNSwriteFileBehaviourencodeFileBehaviourNBencodeFileBehaviourpaceMicrosecondsWidgetpaceMillisecondsWidgetpaceSecondsWidgetcommandLineArgsWidgetconfigFileWidgetenvironmentWidgetprogNameWidget/>//on=<<^ fromEStringfromEByteStringfromEByteStringLfromELByteStringfromELByteStringL fromEChar fromEDoublefromEInt fromEBool fromEStringL fromEDoubleL fromEIntL fromEBoolL fromEOther fromEAssoc fromEAssocL fromEOtherL showQName eventsForfilteredEventsFortopEvent immediatebehindbeside infrontof applyDiff instrument singletondecrementTimeSpanexpirelistMshowIfPossible showAssoclogQNameBehaviour logCheckpointrenderExceptionbaseGHC.ReadRead Text.Readreadbinary-0.5.0.2 Data.Binary decodeFileBinarywFilewFile0wBinarywBinary0rFiledFilerFile0dFile0isNotBlankLineisNotCommentLinehasValueparseConfigLine