úÎ0Œ+/]      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\Safe&Command to loggerLog entry, scope or messageType to initialize rule updaterLog Logger$Converts message some representation Log messageRule for politicsScope politics!Level of message(Default politics)Debug politics*Trace politics+Silent politics,Supress all messages politics- Make rule.Absolute scope-path/Relative scope-path0Scope-path for child1Root scope-path2Scope-path by text p/ -- root foo/bar -- relative /foo/bar -- absolute foo/bar/ -- child of relative /foo/bar/ -- child of absolute 3 Rule by path4Just set new politics5Use predefined politics6Set new low level7Set new high level8*Convert consumer creater to logger creater9 Empty log: Create logŽMessages from distinct threads are splitted in several chans, where they are processed, and then messages combined back and sent to log-thread;Write message to log<Wait log messages and stop log= New log-scope>/New log-scope with lifting exceptions as errors?'New log-scope with tracing scope result@+Apply commands to construct list of entriesA'Flatten entries to raw list of commandsB Apply rules]Apply rules to pathK^_  !"#$%&'()*+,-./0123456789`ab:;<=>?c@AB]dC  !"#$%&'()*+,-./0123456789:;<=>?@ABC!"#$%&' ()*+,-./01234567@AB 8 9:;<=>?/^_  !"#$%&'()*+,-./0123456789`ab:;<=>?c@AB]dSafe4C Parse ruleFormat: path: rule1, rule2 where "path" is argument for 2, and "rule" is one of low low-value for 6high high-value for 7set low-value high-value for 4 use predefind for 5 Examples: 6/: use trace /foo: low trace foo/bar/quux: use silent ETry parse rule ignoring errorsFTry parse rules ignoring errorse Value namesfPredefined politicsGConstant rulesHRules from mvarIRules from file CDEFefGHICDEFGHICDEFGHI CDEFefGHISafe357PScope with log all exceptionsQ%Workaround: we must explicitely post RScope with log exceptions from g) | Workaround: we must explicitely post SScope with tracing resultU Ignore errorVIgnore MonadError errorW Trace valueJKLMNOPQRSTUVWhJKLMNOPQRSTUVWLMNOPQRSTUVWJKJKLMNOPQRSTUVWhSafeXDefault time formatY#Text log converter with time formatZ+Text log converter with default time formatXYZXYZXYZXYZSafe[[[[Safe\\\\SafeZ  !"#$%&'()*+,-./0123456789:;<=>?CDEFGHIJKLMNOPQRSTUVWXYZ[\i        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmsimpl_7wzIs3BILDY9cdZArYClNsSystem.Log.Simple.BaseSystem.Log.Simple.ConfigSystem.Log.Simple.MonadSystem.Log.Simple.TextSystem.Log.Simple.ConsoleSystem.Log.Simple.FileSystem.Log.SimpleCommand EnterScope LeaveScope PostMessageEntryScope RulesLoadLoglogPostlogStoplogRulesLoggerConsumer withConsumer ConverterMessage messageTime messageLevel messagePath messageTextRulesRulerulePath rulePoliticsPolitics politicsLow politicsHighLevelTraceDebugInfoWarningErrorFataldefaultPolitics debugPolitics tracePoliticssilentPoliticssupressPoliticsruleabsoluterelativechildrootpath%=politicsuselowhighloggernoLognewLogwriteLogstopLog scopeLog_scopeLog scoperLogentriesflattenrules parseRule parseRules parseRule_ parseRules_constantmvarfileCfgMonadLogaskLog withNoLogwithLoglogscope_scopescopeM_scopeMscoperscoperM ignoreError ignoreErrorMtracedefaultTimeFormattextFmttextconsolefileapplyFChan ThreadMap writeFChan stopFChangetFChanContents foldEntry$fNFDataMessagevalues predefinedsmtl_Aue4leSeVkpKLsfHIV51E8Control.Monad.Error.Class MonadError$fMonadLogReaderT