packages feed

regex-examples (empty) → 0.2.0.0

raw patch · 74 files changed

+12692/−0 lines, 74 filesdep +arraydep +basedep +base-compatsetup-changed

Dependencies added: array, base, base-compat, bytestring, containers, directory, hashable, heredoc, http-conduit, regex, regex-base, regex-pcre-builtin, regex-tdfa, regex-tdfa-text, shelly, smallcheck, tasty, tasty-hunit, tasty-smallcheck, template-haskell, text, time, time-locale-compat, transformers, unordered-containers

Files

+ LICENSE view
@@ -0,0 +1,30 @@+Copyright (c) 2016-2017, Chris Dornan++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++    * Redistributions of source code must retain the above copyright+      notice, this list of conditions and the following disclaimer.++    * Redistributions in binary form must reproduce the above+      copyright notice, this list of conditions and the following+      disclaimer in the documentation and/or other materials provided+      with the distribution.++    * Neither the name of Iris Connect nor the names of other+      contributors may be used to endorse or promote products derived+      from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ README.markdown view
@@ -0,0 +1,109 @@+# regex-examples++Regex is a regular expression toolkit for regex-base with:++  * text-replacement operations with named captures;+  * special datatypes for matches and captures;+  * compile-time checking of RE syntax;+  * a unified means of controlling case-sensitivity and multi-line options;+  * high-level AWK-like tools for building text processing apps;+  * the option of using match operators with reduced polymorphism on the+    text and/or result types;+  * regular expression macros including:+      + a number of useful RE macros;+      + a test bench for testing and documenting new macro environments;+  * built-in support for the TDFA and PCRE backends;+  * comprehensive documentation and copious examples.+++See the [About page](http://about.regex.uk) for details.+++## regex and regex-examples++  * the `regex` package contains the regex library+  * the `regex-examples` package contains the tutorial, tests+    and example programs+++## Road Map++    ☒  2017-01-26  v0.0.0.1  Pre-release (I)++    ☒  2017-01-30  v0.0.0.2  Pre-release (II)++    ☒  2017-02-18  v0.1.0.0  [Proposed core API with presentable Haddocks](https://github.com/iconnect/regex/milestone/1)++    ☒  2017-02-19  v0.2.0.0  [Package split into regex and regex-examples](https://github.com/iconnect/regex/milestone/5)++    ☐  2017-02-26  v0.3.0.0  [API adjustments, tutorials and examples finalized](https://github.com/iconnect/regex/milestone/2)++    ☐  2017-03-20  v1.0.0.0  [First stable release](https://github.com/iconnect/regex/milestone/3)++    ☐  2017-08-31  v2.0.0.0  [Fast text replacement with benchmarks](https://github.com/iconnect/regex/milestone/4)++++See the [Roadmap page](http://roadmap.regex.uk) for details.+++## Build Status++[![Hackage](http://regex.uk/badges/hackage.svg)](https://hackage.haskell.org/package/regex) [![BSD3 License](http://regex.uk/badges/license.svg)](https://tldrlegal.com/license/bsd-3-clause-license-%28revised%29) [![Un*x build](http://regex.uk/badges/unix-build.svg)](https://travis-ci.org/iconnect/regex) [![Windows build](http://regex.uk/badges/windows-build.svg)](https://ci.appveyor.com/project/engineerirngirisconnectcouk/regex/branch/master) [![Coverage](http://regex.uk/badges/coverage.svg)](https://coveralls.io/github/iconnect/regex?branch=master)++See [build status page](http://regex.uk/build-status) for details.+++## Installing the Package++The package can be easily installed with cabal or stack on GHC-8.0,+ 7.10 or 7.8 for the above platforms. See the+[Installation page](http://installation.regex.uk) for details.+++## The Tutorial Tests and Examples++See the [Tutorial page](http://tutorial.regex.uk) and+[Examples page](http://examples.regex.uk) for details.+++## Helping Out++If you have any feedback or suggestion then please drop us a line.++    `t` [@hregex](https://twitter.com/hregex)++    `e` maintainers@regex.uk++    `w` http://issues.regex.uk++The [Contact page](http://contact.regex.uk) has more details.+++## The API++The Haddocks can be found at http://hs.regex.uk.+++## The Macro Tables++The macro environments are an important part of the package and+are documented [here](http://macros.regex.uk).+++## The regex.uk Directory++A handy overview of the regex.uk domain can be found+[here](http://directory.regex.uk).+++## The Changelog++The `changelog` is posted [here](http://changelog.regex.uk).+++## The Authors++This library was written and is currently maintained by+[Chris Dornan](mailto:chris.dornan@irisconnect.com) aka+[@cdornan](https://twitter.com/cdornan)
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ Text/RE.hs view
@@ -0,0 +1,199 @@+{-# OPTIONS_GHC -fno-warn-dodgy-exports #-}+-- |+-- Module      :  Text.RE+-- Copyright   :  (C) 2016-17 Chris Dornan+-- License     :  BSD3 (see the LICENSE file)+-- Maintainer  :  Chris Dornan <chris.dornan@irisconnect.com>+-- Stability   :  RFC+-- Portability :  portable++module Text.RE+  (+  -- * Tutorial+  -- $tutorial++  -- * How to use this library+  -- $use++  -- ** The Match Operators+  -- $operators++  -- * Matches, Match, Capture Types and Functions+    Matches(..)+  , Match(..)+  , Capture(..)+  , noMatch+  -- ** Matches functions+  , anyMatches+  , countMatches+  , matches+  , mainCaptures+  -- ** Match functions+  , matched+  , matchedText+  , matchCapture+  , matchCaptures+  , (!$$)+  , captureText+  , (!$$?)+  , captureTextMaybe+  , (!$)+  , capture+  , (!$?)+  , captureMaybe+  -- ** Capture functions+  , hasCaptured+  , capturePrefix+  , captureSuffix+  -- * IsRegex+  , IsRegex(..)+  -- * Options+  , Options_(..)+  , IsOption(..)+  , Mode(..)+  , MacroID(..)+  , Macros+  , emptyMacros+  , SimpleRegexOptions(..)+  -- * CaptureID+  , CaptureID(..)+  , CaptureNames+  , noCaptureNames+  , CaptureName(..)+  , CaptureOrdinal(..)+  , findCaptureID+  -- * Edit+  , Edits(..)+  , Edit(..)+  , LineEdit(..)+  , applyEdits+  , applyEdit+  , applyLineEdit+  -- * LineNo+  , LineNo(..)+  , firstLine+  , getLineNo+  , lineNo+  -- * Parsers+  , parseInteger+  , parseHex+  , parseDouble+  , parseString+  , parseSimpleString+  , parseDate+  , parseSlashesDate+  , parseTimeOfDay+  , parseTimeZone+  , parseDateTime+  , parseDateTime8601+  , parseDateTimeCLF+  , parseShortMonth+  , shortMonthArray+  , IPV4Address+  , parseIPv4Address+  , Severity(..)+  , parseSeverity+  , severityKeywords+  -- * Replace+  , Replace(..)+  , Replace_(..)+  , replace_+  , Phi(..)+  , Context(..)+  , Location(..)+  , isTopLocation+  , replace+  , replaceAll+  , replaceAllCaptures+  , replaceAllCaptures'+  , replaceAllCaptures_+  , replaceAllCapturesM+  , replaceCaptures+  , replaceCaptures'+  , replaceCaptures_+  , replaceCapturesM+  , expandMacros+  , expandMacros'+  -- * Tools+  -- ** Grep+  , Line(..)+  , grep+  , grepLines+  , GrepScript+  , grepScript+  , linesMatched+  -- ** Lex+  , alex+  , alex'+  -- ** Sed+  , SedScript+  , sed+  , sed'+  ) where++import           Text.RE.Capture+import           Text.RE.CaptureID+import           Text.RE.Edit+import           Text.RE.IsRegex+import           Text.RE.LineNo+import           Text.RE.Options+import           Text.RE.Parsers+import           Text.RE.Replace+import           Text.RE.Tools.Grep+import           Text.RE.Tools.Lex+import           Text.RE.Tools.Sed++-- $tutorial+-- We have a regex tutorial at <http://tutorial.regex.uk>. These API+-- docs are mainly for reference.++-- $use+--+-- This module won't provide any operators to match a regular expression+-- against text as it merely provides the toolkit for working with the+-- output of the match operators.  You probably won't import it directly+-- but import one of the modules that provides the match operators,+-- which will in tuen re-export this module.+--+-- The module that you choose to import will depend upon two factors:+--+-- * Which flavour of regular expression do you want to use? If you want+--   Posix flavour REs then you want the TDFA modules, otherwise its+--   PCRE for Perl-style REs.+--+-- * What type of text do you want to match: (slow) @String@s, @ByteString@,+--   @ByteString.Lazy@, @Text@, @Text.Lazy@ or the anachronistic @Seq Char@+--   or indeed a good old-fashioned polymorphic operators?+--+-- While we aim to provide all combinations of these choices, some of them+-- are currently not available.  We have:+--+-- * "Text.RE.PCRE"+-- * "Text.RE.PCRE.ByteString"+-- * "Text.RE.PCRE.ByteString.Lazy"+-- * "Text.RE.PCRE.RE"+-- * "Text.RE.PCRE.Sequence"+-- * "Text.RE.PCRE.String"+-- * "Text.RE.TDFA"+-- * "Text.RE.TDFA.ByteString"+-- * "Text.RE.TDFA.ByteString.Lazy"+-- * "Text.RE.TDFA.RE"+-- * "Text.RE.TDFA.Sequence"+-- * "Text.RE.TDFA.String"+-- * "Text.RE.TDFA.Text"+-- * "Text.RE.TDFA.Text.Lazy"++-- $operators+--+-- The traditional @=~@ and @=~~@ operators are exported by the @regex@,+-- but we recommend that you use the two new operators, especially if+-- you are not familiar with the old operators.  We have:+--+-- * @txt ?=~ re@ searches for a single match yielding a value of type+--   'Match' @a@ where @a@ is the type of the text you are searching.+--+-- * @txt *=~ re@ searches for all non-overlapping matches in @txt@,+--   returning a value of type 'Matches' @a@.+--+-- See the sections below for more information on these @Matches@ and+-- @Match@ result types.
+ Text/RE/Capture.lhs view
@@ -0,0 +1,290 @@+\begin{code}+{-# LANGUAGE RecordWildCards            #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# LANGUAGE UndecidableInstances       #-}+{-# LANGUAGE MultiParamTypeClasses      #-}+\end{code}++\begin{code}+module Text.RE.Capture+  ( Matches(..)+  , Match(..)+  , Capture(..)+  , noMatch+  , emptyMatchArray+  -- Matches functions+  , anyMatches+  , countMatches+  , matches+  , mainCaptures+  -- Match functions+  , matched+  , matchedText+  , matchCapture+  , matchCaptures+  , (!$$)+  , captureText+  , (!$$?)+  , captureTextMaybe+  , (!$)+  , capture+  , (!$?)+  , captureMaybe+  -- Capture functions+  , hasCaptured+  , capturePrefix+  , captureSuffix+  ) where+\end{code}++\begin{code}+import           Data.Array+import           Data.Maybe+import           Text.Regex.Base+import           Text.RE.CaptureID++infixl 9 !$, !$$+\end{code}++++\begin{code}+-- | the result type to use when every match is needed, not just the+-- first match of the RE against the source+data Matches a =+  Matches+    { matchesSource :: !a          -- ^ the source text being matched+    , allMatches    :: ![Match a]  -- ^ all captures found, left to right+    }+  deriving (Show,Eq)+\end{code}++\begin{code}+-- | the result of matching a RE to a text once, listing the text that+-- was matched and the named captures in the RE and all of the substrings+-- matched, with the text captured by the whole RE; a complete failure+-- to match will be represented with an empty array (with bounds (0,-1))+data Match a =+  Match+    { matchSource  :: !a                -- ^ the whole source text+    , captureNames :: !CaptureNames     -- ^ the RE's capture names+    , matchArray   :: !(Array CaptureOrdinal (Capture a))+                                        -- ^ 0..n-1 captures,+                                        -- starting with the+                                        -- text matched by the+                                        -- whole RE+    }+  deriving (Show,Eq)+\end{code}++\begin{code}+-- | the matching of a single sub-expression against part of the source+-- text+data Capture a =+  Capture+    { captureSource  :: !a    -- ^ the whole text that was searched+    , capturedText   :: !a    -- ^ the text that was matched+    , captureOffset  :: !Int  -- ^ the number of characters preceding the+                              -- match with -1 used if no text was captured+                              -- by the RE (not even the empty string)+    , captureLength  :: !Int  -- ^ the number of chacter in the captured+                              -- sub-string+    }+  deriving (Show,Eq)+\end{code}++\begin{code}+-- | Construct a Match that does not match anything.+noMatch :: a -> Match a+noMatch t = Match t noCaptureNames emptyMatchArray++-- | an empty array of Capture+emptyMatchArray :: Array CaptureOrdinal (Capture a)+emptyMatchArray = listArray (CaptureOrdinal 0,CaptureOrdinal $ -1) []+\end{code}++\begin{code}+instance Functor Matches where+  fmap f Matches{..} =+    Matches+      { matchesSource = f matchesSource+      , allMatches    = map (fmap f) allMatches+      }++instance Functor Match where+  fmap f Match{..} =+    Match+      { matchSource  = f matchSource+      , captureNames = captureNames+      , matchArray   = fmap (fmap f) matchArray+      }++instance Functor Capture where+  fmap f c@Capture{..} =+    c+      { captureSource = f captureSource+      , capturedText = f capturedText+      }+\end{code}++\begin{code}+-- | tests whether the RE matched the source text at all+anyMatches :: Matches a -> Bool+anyMatches = not . null . allMatches++-- | count the matches+countMatches :: Matches a -> Int+countMatches = length . allMatches++matches :: Matches a -> [a]+matches = map capturedText . mainCaptures++-- | extract the main capture from each match+mainCaptures :: Matches a -> [Capture a]+mainCaptures ac = [ capture c0 cs | cs<-allMatches ac ]+  where+    c0 = CID_ordinal $ CaptureOrdinal 0+\end{code}++++\begin{code}+-- | tests whether the RE matched the source text at all+matched :: Match a -> Bool+matched = isJust . matchCapture++-- | tests whether the RE matched the source text at all+matchedText :: Match a -> Maybe a+matchedText = fmap capturedText . matchCapture++-- | the top-level capture if the source text matched the RE,+-- Nothing otherwise+matchCapture :: Match a -> Maybe (Capture a)+matchCapture = fmap fst . matchCaptures++-- | the top-level capture and the sub captures if the text matched+-- the RE, Nothing otherwise+matchCaptures :: Match a -> Maybe (Capture a,[Capture a])+matchCaptures Match{..} = case rangeSize (bounds matchArray) == 0 of+  True  -> Nothing+  False -> Just (matchArray!0,drop 1 $ elems matchArray)++-- | an alternative for captureText+(!$$) :: Match a -> CaptureID -> a+(!$$) = flip captureText++-- | look up the text of the nth capture, 0 being the match of the whole+-- RE against the source text, 1, the first bracketed sub-expression to+-- be matched and so on+captureText :: CaptureID -> Match a -> a+captureText cid mtch = capturedText $ capture cid mtch++-- | an alternative for captureTextMaybe+(!$$?) :: Match a -> CaptureID -> Maybe a+(!$$?) = flip captureTextMaybe++-- | look up the text of the nth capture (0 being the match of the+-- whole), returning Nothing if the Match doesn't contain the capture+captureTextMaybe :: CaptureID -> Match a -> Maybe a+captureTextMaybe cid mtch = do+    cap <- mtch !$? cid+    case hasCaptured cap of+      True  -> Just $ capturedText cap+      False -> Nothing++-- | an alternative for capture+(!$) :: Match a -> CaptureID -> Capture a+(!$) = flip capture++-- | look up the nth capture, 0 being the match of the whole RE against+-- the source text, 1, the first bracketed sub-expression to be matched+-- and so on+capture :: CaptureID -> Match a -> Capture a+capture cid mtch = fromMaybe oops $ mtch !$? cid+  where+    oops = error $ "capture: out of bounds (" ++ show cid ++ ")"++-- | an alternative for capture captureMaybe+(!$?) :: Match a -> CaptureID -> Maybe (Capture a)+(!$?) = flip captureMaybe++-- | look up the nth capture, 0 being the match of the whole RE against+-- the source text, 1, the first bracketed sub-expression to be matched+-- and so on, returning Nothing if there is no such capture, or if the+-- capture failed to capture anything (being in a failed alternate)+captureMaybe :: CaptureID -> Match a -> Maybe (Capture a)+captureMaybe cid mtch@Match{..} = do+  cap <- case bounds matchArray `inRange` CaptureOrdinal i of+    True  -> Just $ matchArray ! CaptureOrdinal i+    False -> Nothing+  case hasCaptured cap of+    True  -> Just cap+    False -> Nothing+  where+    i = lookupCaptureID cid mtch++lookupCaptureID :: CaptureID -> Match a -> Int+lookupCaptureID cid Match{..} = findCaptureID cid captureNames+\end{code}+++\begin{code}+-- | test if the capture has matched any text+hasCaptured :: Capture a -> Bool+hasCaptured = (>=0) . captureOffset++-- | returns the text preceding the match+capturePrefix :: Extract a => Capture a -> a+capturePrefix Capture{..} = before captureOffset captureSource++-- | returns the text after the match+captureSuffix :: Extract a => Capture a -> a+captureSuffix Capture{..} = after (captureOffset+captureLength) captureSource+\end{code}+++\begin{code}+-- | for matching just the first RE against the source text+instance+    ( RegexContext regex source (AllTextSubmatches (Array Int) (source,(Int,Int)))+    , RegexLike    regex source+    ) =>+  RegexContext regex source (Match source) where+    match  r s = cvt s $ getAllTextSubmatches $ match r s+    matchM r s = do+      y <- matchM r s+      return $ cvt s $ getAllTextSubmatches y++-- | for matching all REs against the source text+instance+    ( RegexContext regex source [MatchText source]+    , RegexLike    regex source+    ) =>+  RegexContext regex source (Matches source) where+    match  r s = Matches s $ map (cvt s) $ match r s+    matchM r s = do+      y <- matchM r s+      return $ Matches s $ map (cvt s) y+\end{code}++\begin{code}+cvt :: source -> MatchText source -> Match source+cvt hay arr =+    Match+      { matchSource  = hay+      , captureNames = noCaptureNames+      , matchArray   =+          ixmap (CaptureOrdinal lo,CaptureOrdinal hi) getCaptureOrdinal $+            fmap f arr+      }+  where+    (lo,hi) = bounds arr++    f (ndl,(off,len)) =+      Capture+        { captureSource = hay+        , capturedText  = ndl+        , captureOffset = off+        , captureLength = len+        }+\end{code}
+ Text/RE/CaptureID.hs view
@@ -0,0 +1,39 @@+{-# LANGUAGE GeneralizedNewtypeDeriving #-}++module Text.RE.CaptureID where++import           Data.Ix+import           Data.Hashable+import qualified Data.HashMap.Strict            as HMS+import           Data.Maybe+import qualified Data.Text                      as T+++data CaptureID+  = CID_ordinal CaptureOrdinal+  | CID_name    CaptureName+  deriving (Show,Ord,Eq)++type CaptureNames = HMS.HashMap CaptureName CaptureOrdinal++noCaptureNames :: CaptureNames+noCaptureNames = HMS.empty++newtype CaptureName = CaptureName { getCaptureName :: T.Text }+  deriving (Show,Ord,Eq)++instance Hashable CaptureName where+  hashWithSalt i = hashWithSalt i . getCaptureName++newtype CaptureOrdinal = CaptureOrdinal { getCaptureOrdinal :: Int }+  deriving (Show,Ord,Eq,Enum,Ix,Num)++findCaptureID :: CaptureID -> CaptureNames -> Int+findCaptureID (CID_ordinal o) _   = getCaptureOrdinal o+findCaptureID (CID_name    n) hms =+    getCaptureOrdinal $ fromMaybe oops $ HMS.lookup n hms+  where+    oops = error $ unlines $+      ("lookupCaptureID: " ++ T.unpack t ++ " not found in:") :+        [ "  "++T.unpack (getCaptureName nm) | nm <- HMS.keys hms ]+    t = getCaptureName n
+ Text/RE/Edit.lhs view
@@ -0,0 +1,98 @@+\begin{code}+{-# LANGUAGE NoImplicitPrelude          #-}+{-# LANGUAGE RecordWildCards            #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.Edit+  ( LineNo+  , Edits(..)+  , Edit(..)+  , LineEdit(..)+  , applyEdits+  , applyEdit+  , applyLineEdit+  ) where++import           Data.Maybe+import           Prelude.Compat+import           Text.RE.Capture+import           Text.RE.IsRegex+import           Text.RE.LineNo+import           Text.RE.Replace+++data Edits m re s+  = Select [(re,Edit m s)]+  | Pipe   [(re,Edit m s)]++data Edit m s+  = EDIT_tpl s+  | EDIT_phi (Phi s)+  | EDIT_fun Context (LineNo->Match s->Location->Capture s->m (Maybe s))+  | EDIT_gen         (LineNo->Matches s->m (LineEdit s))++data LineEdit s+  = NoEdit+  | ReplaceWith s+  | Delete+  deriving (Show)++applyEdits :: (IsRegex re s,Monad m,Functor m)+           => LineNo+           -> Edits m re s+           -> s+           -> m s+applyEdits lno ez0 s0 = case ez0 of+  Select ez -> select_edit_scripts lno ez s0+  Pipe   ez -> pipe_edit_scripts   lno ez s0++applyEdit :: (IsRegex re s,Monad m,Functor m)+          => (s->s)+          -> LineNo+          -> re+          -> Edit m s+          -> s+          -> m (Maybe s)+applyEdit anl lno re edit s =+  case allMatches acs of+    [] -> return Nothing+    _  -> fmap Just $ case edit of+      EDIT_tpl tpl   -> return $ anl $ replaceAll         tpl acs+      EDIT_phi phi   -> return $ anl $ replaceAllCaptures phi acs+      EDIT_fun ctx f -> anl <$> replaceAllCapturesM replace_ ctx (f lno) acs+      EDIT_gen     g -> fromMaybe s' . applyLineEdit anl <$> g lno acs+  where+    s'  = anl s+    acs = matchMany re s++applyLineEdit :: Monoid s => (s->s) -> LineEdit s -> Maybe s+applyLineEdit _    NoEdit         = Nothing+applyLineEdit anl (ReplaceWith s) = Just $ anl s+applyLineEdit _    Delete         = Just $ mempty++select_edit_scripts :: (IsRegex re s,Monad m,Functor m)+                    => LineNo+                    -> [(re,Edit m s)]+                    -> s+                    -> m s+select_edit_scripts lno ps0 s = select ps0+  where+    select []           = return $ appendNewline s+    select ((re,es):ps) =+      applyEdit appendNewline lno re es s >>= maybe (select ps) return++pipe_edit_scripts :: (IsRegex re s,Monad m,Functor m)+                  => LineNo+                  -> [(re,Edit m s)]+                  -> s+                  -> m s+pipe_edit_scripts lno ez s0 =+    appendNewline <$> foldr f (return s0) ez+  where+    f (re,es) act = do+      s <- act+      fromMaybe s <$> applyEdit id lno re es s+\end{code}
+ Text/RE/Internal/AddCaptureNames.hs view
@@ -0,0 +1,11 @@+module Text.RE.Internal.AddCaptureNames where++import           Text.RE+++addCaptureNamesToMatches :: CaptureNames -> Matches a -> Matches a+addCaptureNamesToMatches cnms mtchs =+  mtchs { allMatches = map (addCaptureNamesToMatch cnms) $ allMatches mtchs }++addCaptureNamesToMatch :: CaptureNames -> Match a -> Match a+addCaptureNamesToMatch cnms mtch = mtch { captureNames = cnms }
+ Text/RE/Internal/NamedCaptures.lhs view
@@ -0,0 +1,205 @@+\begin{code}+{-# LANGUAGE QuasiQuotes                #-}+{-# LANGUAGE TemplateHaskell            #-}+{-# LANGUAGE DeriveGeneric              #-}+{-# LANGUAGE RecordWildCards            #-}++module Text.RE.Internal.NamedCaptures+  ( cp+  , extractNamedCaptures+  , idFormatTokenOptions+  , Token(..)+  , validToken+  , formatTokens+  , formatTokens'+  , formatTokens0+  , scan+  ) where++import           Data.Char+import qualified Data.HashMap.Strict          as HM+import qualified Data.Text                    as T+import           GHC.Generics+import qualified Language.Haskell.TH          as TH+import           Language.Haskell.TH.Quote+import           Text.Heredoc+import           Text.RE+import           Text.RE.Internal.PreludeMacros+import           Text.RE.Internal.QQ+import           Text.Regex.PCRE+++cp :: QuasiQuoter+cp =+    (qq0 "re_")+      { quoteExp = parse_capture+      }++extractNamedCaptures :: String -> Either String (CaptureNames,String)+extractNamedCaptures s = Right (analyseTokens tks,formatTokens tks)+  where+    tks = scan s+\end{code}+++Token+-----++\begin{code}+data Token+  = ECap (Maybe String)+  | PGrp+  | PCap+  | Bra+  | BS          Char+  | Other       Char+  deriving (Show,Generic,Eq)++validToken :: Token -> Bool+validToken tkn = case tkn of+    ECap  mb -> maybe True check_ecap mb+    PGrp     -> True+    PCap     -> True+    Bra      -> True+    BS    c  -> is_dot c+    Other c  -> is_dot c+  where+    check_ecap s = not (null s) && all not_br s+    is_dot     c = c/='\n'+    not_br     c = not $ c `elem` "{}\n"++\end{code}+++Analysing [Token] -> CaptureNames+---------------------------------++\begin{code}+analyseTokens :: [Token] -> CaptureNames+analyseTokens = HM.fromList . count_em 1+  where+    count_em _ []       = []+    count_em n (tk:tks) = bd ++ count_em (n `seq` n+d) tks+      where+        (d,bd) = case tk of+          ECap (Just nm) -> (,) 1 [(CaptureName $ T.pack nm,CaptureOrdinal n)]+          ECap  Nothing  -> (,) 1 []+          PGrp           -> (,) 0 []+          PCap           -> (,) 1 []+          Bra            -> (,) 1 []+          BS    _        -> (,) 0 []+          Other _        -> (,) 0 []+\end{code}+++Scanning Regex Strings+----------------------++\begin{code}+scan :: String -> [Token]+scan = alex' match al oops+  where+    al :: [(Regex,Match String->Maybe Token)]+    al =+      [ mk [here|\$\{([^{}]+)\}\(|] $         ECap . Just . x_1+      , mk [here|\$\(|]             $ const $ ECap Nothing+      , mk [here|\(\?:|]            $ const   PGrp+      , mk [here|\(\?|]             $ const   PCap+      , mk [here|\(|]               $ const   Bra+      , mk [here|\\(.)|]            $         BS    . s2c . x_1+      , mk [here|(.)|]              $         Other . s2c . x_1+      ]++    x_1     = captureText $ CID_ordinal $ CaptureOrdinal 1++    s2c [c] = c+    s2c _   = error "scan:s2c:internal error"++    mk s f  = (either error id $ makeRegexM s,Just . f)++    oops    = error "reScanner"+\end{code}+++Parsing captures+----------------++\begin{code}+parse_capture :: String -> TH.Q TH.Exp+parse_capture s = case all isDigit s of+  True  -> [|CID_ordinal $ CaptureOrdinal $ read s|]+  False -> [|CID_name    $ CaptureName $ T.pack  s|]+\end{code}+++Formatting [Token]+------------------++\begin{code}+formatTokens :: [Token] -> String+formatTokens = formatTokens' defFormatTokenOptions++data FormatTokenOptions =+  FormatTokenOptions+    { _fto_regex_type :: Maybe RegexType+    , _fto_min_caps   :: Bool+    , _fto_incl_caps  :: Bool+    }+  deriving (Show)++defFormatTokenOptions :: FormatTokenOptions+defFormatTokenOptions =+  FormatTokenOptions+    { _fto_regex_type = Nothing+    , _fto_min_caps   = False+    , _fto_incl_caps  = False+    }++idFormatTokenOptions :: FormatTokenOptions+idFormatTokenOptions =+  FormatTokenOptions+    { _fto_regex_type     = Nothing+    , _fto_min_caps       = False+    , _fto_incl_caps = True+    }++formatTokens' :: FormatTokenOptions -> [Token] -> String+formatTokens' FormatTokenOptions{..} = foldr f ""+  where+    f tk tl = t_s ++ tl+      where+        t_s = case tk of+          ECap  mb -> ecap mb+          PGrp     -> if _fto_regex_type == Just TDFA then "(" else "(?:"+          PCap     -> "(?"+          Bra      -> bra _fto_min_caps+          BS    c  -> "\\" ++ [c]+          Other c  -> [c]++    ecap mb = case _fto_incl_caps of+      True  -> case mb of+        Nothing -> "$("+        Just nm -> "${"++nm++"}("+      False -> bra _fto_min_caps++    bra mc  = case mc && _fto_regex_type == Just PCRE of+      True  -> "(?:"+      False -> "("+\end{code}++\begin{code}+-- this is a reference of formatTokens defFormatTokenOptions,+-- used for testing the latter+formatTokens0 :: [Token] -> String+formatTokens0 = foldr f ""+  where+    f tk tl = t_s ++ tl+      where+        t_s = case tk of+          ECap  _ -> "("+          PGrp    -> "(?:"+          PCap    -> "(?"+          Bra     -> "("+          BS    c -> "\\" ++ [c]+          Other c -> [c]+\end{code}
+ Text/RE/Internal/PreludeMacros.hs view
@@ -0,0 +1,907 @@+{-# LANGUAGE NoImplicitPrelude          #-}+{-# LANGUAGE RecordWildCards            #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE OverloadedStrings          #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.Internal.PreludeMacros+  ( RegexType(..)+  , WithCaptures(..)+  , MacroDescriptor(..)+  , RegexSource(..)+  , PreludeMacro(..)+  , presentPreludeMacro+  , preludeMacros+  , preludeMacroTable+  , preludeMacroSummary+  , preludeMacroSources+  , preludeMacroSource+  , preludeMacroEnv+  , preludeMacroDescriptor+  ) where++import           Data.Array+import qualified Data.HashMap.Lazy            as HML+import           Data.List+import           Data.Maybe+import qualified Data.Text                    as T+import           Data.Time+import           Prelude.Compat+import           Text.RE.Options+import           Text.RE.Parsers+import           Text.RE.TestBench+++preludeMacros :: (Monad m,Functor m)+              => (String->m r)+              -> RegexType+              -> WithCaptures+              -> m (Macros r)+preludeMacros prs rty wc = mkMacros prs rty wc $ preludeMacroEnv rty++preludeMacroTable :: RegexType -> String+preludeMacroTable rty = formatMacroTable rty $ preludeMacroEnv rty++preludeMacroSummary :: RegexType -> PreludeMacro -> String+preludeMacroSummary rty =+  formatMacroSummary rty (preludeMacroEnv rty) . prelude_macro_id++preludeMacroSources :: RegexType -> String+preludeMacroSources rty =+  formatMacroSources rty ExclCaptures $ preludeMacroEnv rty++preludeMacroSource :: RegexType -> PreludeMacro -> String+preludeMacroSource rty =+  formatMacroSource rty ExclCaptures (preludeMacroEnv rty) . prelude_macro_id++preludeMacroEnv :: RegexType -> MacroEnv+preludeMacroEnv TDFA = prelude_macro_env_tdfa+preludeMacroEnv PCRE = prelude_macro_env_pcre++prelude_macro_env_pcre :: MacroEnv+prelude_macro_env_pcre = fix $ prelude_macro_env PCRE++prelude_macro_env_tdfa :: MacroEnv+prelude_macro_env_tdfa = fix $ prelude_macro_env TDFA++prelude_macro_env :: RegexType -> MacroEnv -> MacroEnv+prelude_macro_env rty env = HML.fromList $ catMaybes+  [ (,) (prelude_macro_id pm) <$> preludeMacroDescriptor rty env pm+      | pm<-[minBound..maxBound]+      ]++preludeMacroDescriptor :: RegexType+                       -> MacroEnv+                       -> PreludeMacro+                       -> Maybe MacroDescriptor+preludeMacroDescriptor rty env pm = case pm of+  PM_nat              -> natural_macro          rty env pm+  PM_hex              -> natural_hex_macro      rty env pm+  PM_int              -> integer_macro          rty env pm+  PM_frac             -> decimal_macro          rty env pm+  PM_string           -> string_macro           rty env pm+  PM_string_simple    -> string_simple_macro    rty env pm+  PM_id               -> id_macro               rty env pm+  PM_id'              -> id'_macro              rty env pm+  PM_id_              -> id__macro              rty env pm+  PM_date             -> date_macro             rty env pm+  PM_date_slashes     -> date_slashes_macro     rty env pm+  PM_time             -> time_macro             rty env pm+  PM_timezone         -> timezone_macro         rty env pm+  PM_datetime         -> datetime_macro         rty env pm+  PM_datetime_8601    -> datetime_8601_macro    rty env pm+  PM_datetime_clf     -> datetime_clf_macro     rty env pm+  PM_shortmonth       -> shortmonth_macro       rty env pm+  PM_address_ipv4     -> address_ipv4_macros    rty env pm+  PM_email_simple     -> email_simple_macro     rty env pm+  PM_url              -> url_macro              rty env pm+  PM_syslog_severity  -> syslog_severity_macro  rty env pm++-- | an enumeration of all of the prelude macros+data PreludeMacro+  -- numbers+  = PM_nat+  | PM_hex+  | PM_int+  | PM_frac+  -- strings+  | PM_string+  | PM_string_simple+  -- identifiers+  | PM_id+  | PM_id'+  | PM_id_+  -- dates & times+  | PM_date+  | PM_date_slashes+  | PM_time+  | PM_timezone+  | PM_datetime+  | PM_datetime_8601+  | PM_datetime_clf+  | PM_shortmonth+  -- addresses+  | PM_address_ipv4+  | PM_email_simple+  | PM_url+  -- syslog+  | PM_syslog_severity+  deriving (Bounded,Enum,Ord,Eq,Show)++-- | naming the macros+presentPreludeMacro :: PreludeMacro -> String+presentPreludeMacro pm = case pm of+    PM_id_  -> prelude_prefix++"id-"+    _       -> fmt pm+  where+    fmt = (prelude_prefix++) . map tr . drop 3 . show++    tr '_' = '.'+    tr c   = c++-- | all prelude macros are prefixed with this+prelude_prefix :: String+prelude_prefix = "%"++prelude_macro_id :: PreludeMacro -> MacroID+prelude_macro_id = MacroID . presentPreludeMacro++natural_macro :: RegexType -> MacroEnv -> PreludeMacro -> Maybe MacroDescriptor+natural_macro rty env pm = Just $ run_tests rty parseInteger samples env pm+  MacroDescriptor+    { _md_source          = "[0-9]+"+    , _md_samples         = map fst samples+    , _md_counter_samples = counter_samples+    , _md_test_results    = []+    , _md_parser          = Just "parseInteger"+    , _md_description     = "a string of one or more decimal digits"+    }+  where+    samples :: [(String,Int)]+    samples =+      [ (,) "0"          0+      , (,) "1234567890" 1234567890+      , (,) "00"         0+      , (,) "01"         1+      ]++    counter_samples =+      [ ""+      , "0A"+      , "-1"+      ]++natural_hex_macro :: RegexType+                  -> MacroEnv+                  -> PreludeMacro+                  -> Maybe MacroDescriptor+natural_hex_macro rty env pm = Just $ run_tests rty parseHex samples env pm+  MacroDescriptor+    { _md_source          = "[0-9a-fA-F]+"+    , _md_samples         = map fst samples+    , _md_counter_samples = counter_samples+    , _md_test_results    = []+    , _md_parser          = Just "parseHex"+    , _md_description     = "a string of one or more hexadecimal digits"+    }+  where+    samples :: [(String,Int)]+    samples =+      [ (,) "0"         0x0+      , (,) "12345678"  0x12345678+      , (,) "90abcdef"  0x90abcdef+      , (,) "90ABCDEF"  0x90abcdef+      , (,) "00"        0x0+      , (,) "010"       0x10+      ]++    counter_samples =+      [ ""+      , "0x10"+      , "0z"+      , "-1a"+      ]++integer_macro :: RegexType -> MacroEnv -> PreludeMacro -> Maybe MacroDescriptor+integer_macro rty env pm = Just $ run_tests rty parseInteger samples env pm+  MacroDescriptor+    { _md_source          = "-?[0-9]+"+    , _md_samples         = map fst samples+    , _md_counter_samples = counter_samples+    , _md_test_results    = []+    , _md_parser          = Just "parseInteger"+    , _md_description     = "a decimal integer"+    }+  where+    samples :: [(String,Int)]+    samples =+      [ (,) "0"           0+      , (,) "1234567890"  1234567890+      , (,) "00"          0+      , (,) "01"          1+      , (,) "-1"       $ -1+      , (,) "-0"          0+      ]++    counter_samples =+      [ ""+      , "0A"+      , "+0"+      ]++-- | a digit string macro+decimal_macro :: RegexType -> MacroEnv -> PreludeMacro -> Maybe MacroDescriptor+decimal_macro rty env pm = Just $ run_tests rty parseDouble samples env pm+  MacroDescriptor+    { _md_source          = "-?[0-9]+(?:\\.[0-9]+)?"+    , _md_samples         = map fst samples+    , _md_counter_samples = counter_samples+    , _md_test_results    = []+    , _md_parser          = Just "parseInteger"+    , _md_description     = "a decimal integer"+    }+  where+    samples :: [(String,Double)]+    samples =+      [ (,) "0"             0+      , (,) "1234567890"    1234567890+      , (,) "00"            0+      , (,) "01"            1+      , (,) "-1"         $ -1+      , (,) "-0"            0+      , (,) "0.1234567890"  0.1234567890+      , (,) "-1.0"       $ -1.0+      ]++    counter_samples =+      [ ""+      , "0A"+      , "+0"+      , "0."+      , ".0"+      , "."+      , "-"+      , "-."+      , "-1."+      , "-.1"+      ]++string_macro :: RegexType+             -> MacroEnv+             -> PreludeMacro+             -> Maybe MacroDescriptor+string_macro     PCRE _  _   = Nothing+string_macro rty@TDFA env pm =+  Just $ run_tests rty (fmap T.unpack . parseString) samples env pm+    MacroDescriptor+      { _md_source          = "\"(?:[^\"\\]+|\\\\[\\\"])*\""+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Just "parseString"+      , _md_description     = "a double-quote string, with simple \\ escapes for \\s and \"s"+      }+  where+    samples :: [(String,String)]+    samples =+      [ (,) "\"\""                ""+      , (,) "\"foo\""             "foo"+      , (,) "\"\\\"\""            "\""+      , (,) "\"\\\"\\\"\""        "\"\""+      , (,) "\"\\\"\\\\\\\"\""    "\"\\\""+      , (,) "\"\\\"foo\\\"\""     "\"foo\""+      , (,) "\"\""                ""+      ]++    counter_samples =+      [ "\""+      , "\"aa"+      ]++string_simple_macro :: RegexType+                    -> MacroEnv+                    -> PreludeMacro+                    -> Maybe MacroDescriptor+string_simple_macro rty env pm =+  Just $ run_tests rty (fmap T.unpack . parseSimpleString) samples env pm+    MacroDescriptor+      { _md_source          = "\"[^\"[:cntrl:]]*\""+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Just "parseSimpleString"+      , _md_description     = "a decimal integer"+      }+  where+    samples :: [(String,String)]+    samples =+      [ (,) "\"\""      ""+      , (,) "\"foo\""   "foo"+      , (,) "\"\\\""    "\\"+      , (,) "\"\""      ""+      ]++    counter_samples =+      [ ""+      , "\""+      , "\"\\\"\""+      , "\"\\\"\\\"\""+      , "\"\\\"\\\\\\\"\""+      , "\"\\\"foo\\\"\""+      , "\"aa"+      ]++id_macro :: RegexType+         -> MacroEnv+         -> PreludeMacro+         -> Maybe MacroDescriptor+id_macro rty env pm =+  Just $ run_tests rty Just samples env pm+    MacroDescriptor+      { _md_source          = "_*[a-zA-Z][a-zA-Z0-9_]*"+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Nothing+      , _md_description     = "a standard C-style alphanumeric identifier (with _s)"+      }+  where+    samples :: [(String,String)]+    samples =+        [ f "a"+        , f "A"+        , f "A1"+        , f "a_"+        , f "a1_B2"+        , f "_abc"+        , f "__abc"+        ]+      where+        f s = (s,s)++    counter_samples =+        [ ""+        , "1"+        , "_"+        , "__"+        , "__1"+        , "1a"+        , "a'"+        ]++id'_macro :: RegexType+          -> MacroEnv+          -> PreludeMacro+          -> Maybe MacroDescriptor+id'_macro rty env pm =+  Just $ run_tests rty Just samples env pm+    MacroDescriptor+      { _md_source          = "_*[a-zA-Z][a-zA-Z0-9_']*"+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Nothing+      , _md_description     = "a standard Haskell-style alphanumeric identifier (with '_'s and '''s)"+      }+  where+    samples :: [(String,String)]+    samples =+        [ f "a"+        , f "A"+        , f "A1"+        , f "a_"+        , f "a1_B2"+        , f "_abc"+        , f "__abc"+        , f "a'"+        , f "_a'"+        , f "a'b"+        ]+      where+        f s = (s,s)++    counter_samples =+        [ ""+        , "1"+        , "_"+        , "__"+        , "__1"+        , "1a"+        , "'"+        , "'a"+        , "_'"+        , "_1'"+        ]++id__macro :: RegexType+          -> MacroEnv+          -> PreludeMacro+          -> Maybe MacroDescriptor+id__macro rty env pm =+  Just $ run_tests rty Just samples env pm+    MacroDescriptor+      { _md_source          = "_*[a-zA-Z][a-zA-Z0-9_'-]*"+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Nothing+      , _md_description     = "an identifier with -s"+      }+  where+    samples :: [(String,String)]+    samples =+        [ f "a"+        , f "A"+        , f "A1"+        , f "a_"+        , f "a1_B2"+        , f "_abc"+        , f "__abc"+        , f "a'"+        , f "_a'"+        , f "a'b"+        , f "a-"+        , f "a1-B2"+        , f "a1-B2-"+        ]+      where+        f s = (s,s)++    counter_samples =+        [ ""+        , "1"+        , "_"+        , "__"+        , "__1"+        , "1a"+        , "'"+        , "'a"+        , "_'"+        , "_1'"+        ]++date_macro :: RegexType -> MacroEnv -> PreludeMacro -> Maybe MacroDescriptor+date_macro rty env pm =+  Just $ run_tests rty parseDate samples env pm+    MacroDescriptor+      { _md_source          = "[0-9]{4}-[0-9]{2}-[0-9]{2}"+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Just "parseDate"+      , _md_description     = "a YYYY-MM-DD format date"+      }+  where+    samples :: [(String,Day)]+    samples =+        [ f "2016-12-31"+        , f "0001-01-01"+        , f "1000-01-01"+        ]+      where+        f s = (s,read s)++    counter_samples =+        [ ""+        , "2016/01/31"+        , "2016-1-31"+        , "2016-01-1"+        , "2016-001-01"+        ]++date_slashes_macro :: RegexType+                   -> MacroEnv+                   -> PreludeMacro+                   -> Maybe MacroDescriptor+date_slashes_macro rty env pm =+  Just $ run_tests rty parseSlashesDate samples env pm+    MacroDescriptor+      { _md_source          = "[0-9]{4}/[0-9]{2}/[0-9]{2}"+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Just "parseSlashesDate"+      , _md_description     = "a YYYY/MM/DD format date"+      }+  where+    samples :: [(String,Day)]+    samples =+        [ f "2016/12/31"+        , f "0001/01/01"+        , f "1000/01/01"+        ]+      where+        f s = (s,read $ map tr s)+          where+            tr '/' = '-'+            tr c   = c++    counter_samples =+        [ ""+        , "2016-01-31"+        , "2016/1/31"+        , "2016/01/1"+        , "2016/001/01"+        ]++time_macro :: RegexType -> MacroEnv -> PreludeMacro -> Maybe MacroDescriptor+time_macro rty env pm =+  Just $ run_tests rty parseTimeOfDay samples env pm+    MacroDescriptor+      { _md_source          = "[0-9]{2}:[0-9]{2}:[0-9]{2}(?:[.][0-9]+)?"+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Just "parseTimeOfDay"+      , _md_description     = "a HH:MM:SS[.Q+]"+      }+  where+    samples :: [(String,TimeOfDay)]+    samples =+        [ f "00:00:00"            00 00   0+        , f "23:59:59"            23 59   59+        , f "00:00:00.1234567890" 00 00 $ 123456789 / 1000000000+        ]+      where+        f s h m ps = (s,TimeOfDay h m ps)++    counter_samples =+        [ ""+        , "235959"+        , "10:20"+        , "A00:00:00"+        , "00:00:00A"+        , "23:59:59."+        ]++timezone_macro :: RegexType+               -> MacroEnv+               -> PreludeMacro+               -> Maybe MacroDescriptor+timezone_macro rty env pm =+  Just $ run_tests rty parseTimeZone samples env pm+    MacroDescriptor+      { _md_source          = "(?:Z|[+-][0-9]{2}:?[0-9]{2})"+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Just "parseTimeZone"+      , _md_description     = "an IOS-8601 TZ specification"+      }+  where+    samples :: [(String,TimeZone)]+    samples =+        [ f "Z"         $ minutesToTimeZone     0+        , f "+00:00"    $ minutesToTimeZone     0+        , f "+0000"     $ minutesToTimeZone     0+        , f "+0200"     $ minutesToTimeZone   120+        , f "-0100"     $ minutesToTimeZone $ -60+        ]+      where+        f = (,)++    counter_samples =+        [ ""+        , "00"+        , "A00:00"+        , "UTC"+        , "EST"+        , " EST"+        ]++datetime_macro :: RegexType -> MacroEnv -> PreludeMacro -> Maybe MacroDescriptor+datetime_macro rty env pm = Just $ run_tests rty parseDateTime samples env pm+  MacroDescriptor+    { _md_source          = "@{%date}[ T]@{%time}(?:@{%timezone}| UTC)?"+    , _md_samples         = map fst samples+    , _md_counter_samples = counter_samples+    , _md_test_results    = []+    , _md_parser          = Just "parseDateTime"+    , _md_description     = "ISO-8601 format date and time + simple variants"+    }+  where+    samples :: [(String,UTCTime)]+    samples =+        [ f "2016-12-31 23:37:22.525343 UTC" "2016-12-31 23:37:22.525343Z"+        , f "2016-12-31 23:37:22.525343"     "2016-12-31 23:37:22.525343Z"+        , f "2016-12-31 23:37:22"            "2016-12-31 23:37:22Z"+        , f "2016-12-31T23:37:22+0100"       "2016-12-31 23:37:22+0100"+        , f "2016-12-31T23:37:22-01:00"      "2016-12-31 23:37:22-0100"+        , f "2016-12-31T23:37:22-23:59"      "2016-12-31 23:37:22-2359"+        , f "2016-12-31T23:37:22Z"           "2016-12-31 23:37:22Z"+        ]+      where+        f :: String -> String -> (String,UTCTime)+        f s r_s = (s,read r_s)++    counter_samples =+        [ ""+        , "2016-12-31 23:37:22.525343 EST"+        ]++datetime_8601_macro :: RegexType+                    -> MacroEnv+                    -> PreludeMacro+                    -> Maybe MacroDescriptor+datetime_8601_macro rty env pm =+  Just $ run_tests rty parseDateTime samples env pm+    MacroDescriptor+      { _md_source          = "@{%date}T@{%time}@{%timezone}"+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Just "parseDateTime8601"+      , _md_description     = "YYYY-MM-DDTHH:MM:SS[.Q*](Z|[+-]HHMM) format date and time"+      }+  where+    samples :: [(String,UTCTime)]+    samples =+        [ f "2016-12-31T23:37:22.343Z"      "2016-12-31 23:37:22.343Z"+        , f "2016-12-31T23:37:22-0100"      "2016-12-31 23:37:22-0100"+        , f "2016-12-31T23:37:22+23:59"     "2016-12-31 23:37:22+2359"+        ]+      where+        f :: String -> String -> (String,UTCTime)+        f s r_s = (s,read r_s)++    counter_samples =+        [ ""+        , "2016-12-31 23:37:22.525343 EST"+        ]++datetime_clf_macro :: RegexType -> MacroEnv -> PreludeMacro -> Maybe MacroDescriptor+datetime_clf_macro rty env pm =+  Just $ run_tests rty parseDateTimeCLF samples env pm+    MacroDescriptor+      { _md_source          = re+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Just "parseDateTimeCLF"+      , _md_description     = "Common Log Format date+time: %d/%b/%Y:%H:%M:%S %z"+      }+  where+    samples :: [(String,UTCTime)]+    samples =+        [ f "10/Oct/2000:13:55:36 -0700"  "2000-10-10 13:55:36-0700"+        , f "10/Oct/2000:13:55:36 +07:00" "2000-10-10 13:55:36+0700"+        ]+      where+        f :: String -> String -> (String,UTCTime)+        f s r_s = (s,read r_s)++    counter_samples =+        [ ""+        , "2016-12-31T23:37+0100"+        , "10/Oct/2000:13:55:36-0700"+        , "10/OCT/2000:13:55:36 -0700"+        , "10/Oct/2000:13:55 -0700"+        , "10/Oct/2000:13:55Z"+        ]++    re = RegexSource $ unwords+      [ "[0-9]{2}/@{%shortmonth}/[0-9]{4}:[0-9]{2}:[0-9]{2}:[0-9]{2}"+      , "[+-][0-9]{2}:?[0-9]{2}"+      ]++shortmonth_macro :: RegexType+                 -> MacroEnv+                 -> PreludeMacro+                 -> Maybe MacroDescriptor+shortmonth_macro rty env pm =+  Just $ run_tests rty parseShortMonth samples env pm+    MacroDescriptor+      { _md_source          = bracketedRegexSource $+                                intercalate "|" $ map T.unpack $ elems shortMonthArray+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Just "parseShortMonth"+      , _md_description     = "three letter month name: Jan-Dec"+      }+  where+    samples :: [(String,Int)]+    samples =+        [ f "Jan"   1+        , f "Feb"   2+        , f "Dec"   12+        ]+      where+        f = (,)++    counter_samples =+        [ ""+        , "jan"+        , "DEC"+        , "January"+        , "01"+        , "1"+        ]++address_ipv4_macros :: RegexType+                    -> MacroEnv+                    -> PreludeMacro+                    -> Maybe MacroDescriptor+address_ipv4_macros rty env pm =+  Just $ run_tests rty parseIPv4Address samples env pm+    MacroDescriptor+      { _md_source          = "[0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}"+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Just "parseSeverity"+      , _md_description     = "an a.b.c.d IPv4 address"+      }+  where+    samples :: [(String,IPV4Address)]+    samples =+        [ f "0.0.0.0"           (  0,  0,  0,  0)+        , f "123.45.6.78"       (123, 45,  6, 78)+        , f "9.9.9.9"           (  9,  9,  9,  9)+        , f "255.255.255.255"   (255,255,255,255)+        ]+      where+        f = (,)++    counter_samples =+        [ ""+        , "foo"+        , "1234.0.0.0"+        , "1.2.3"+        , "1.2.3."+        , "1.2..4"+        , "www.example.com"+        , "2001:0db8:85a3:0000:0000:8a2e:0370:7334"+        ]++syslog_severity_macro :: RegexType+                      -> MacroEnv+                      -> PreludeMacro+                      -> Maybe MacroDescriptor+syslog_severity_macro rty env pm =+  Just $ run_tests rty parseSeverity samples env pm+    MacroDescriptor+      { _md_source          = re+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Just "parseSeverity"+      , _md_description     = "syslog severity keyword (debug-emerg)"+      }+  where+    samples :: [(String,Severity)]+    samples =+        [ f "emerg"     Emerg+        , f "panic"     Emerg+        , f "alert"     Alert+        , f "crit"      Crit+        , f "err"       Err+        , f "error"     Err+        , f "warn"      Warning+        , f "warning"   Warning+        , f "notice"    Notice+        , f "info"      Info+        , f "debug"     Debug+        ]+      where+        f = (,)++    counter_samples =+        [ ""+        , "Emergency"+        , "ALERT"+        ]++    re = case rty of+      PCRE -> re_pcre+      TDFA -> re_tdfa++    re_tdfa = bracketedRegexSource $+          intercalate "|" $+            [ T.unpack kw+              | (kw0,kws) <- map severityKeywords [minBound..maxBound]+              , kw <- kw0:kws+              ]++    re_pcre = bracketedRegexSource $+          intercalate "|" $+            [ T.unpack kw+              | (kw0,kws) <- map severityKeywords $+                                  filter (/=Err) [minBound..maxBound]+              , kw <- kw0:kws+              ] ++ ["err(?:or)?"]++email_simple_macro :: RegexType+                   -> MacroEnv+                   -> PreludeMacro+                   -> Maybe MacroDescriptor+email_simple_macro rty env pm =+  Just $ run_tests rty Just samples env pm+    MacroDescriptor+      { _md_source          = "[a-zA-Z0-9%_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9.-]+"+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Nothing+      , _md_description     = "an email address"+      }+  where+    samples :: [(String,String)]+    samples =+        [ f "user-name%foo.bar.com@an-example.com"+        ]+      where+        f s = (s,s)++    counter_samples =+        [ ""+        , "not-an-email-address"+        , "@not-an-email-address"+        ]+-- | see https://mathiasbynens.be/demo/url-regex+-- (based on @stephenhay URL)+url_macro :: RegexType+          -> MacroEnv+          -> PreludeMacro+          -> Maybe MacroDescriptor+url_macro rty env pm =+  Just $ run_tests rty Just samples env pm+    MacroDescriptor+      { _md_source          = "([hH][tT][tT][pP][sS]?|[fF][tT][pP])://[^[:space:]/$.?#].[^[:space:]]*"+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Nothing+      , _md_description     = "a URL"+      }+  where+    samples :: [(String,String)]+    samples =+        [ f "https://mathiasbynens.be/demo/url-regex"+        , f "http://foo.com/blah_blah"+        , f "http://foo.com/blah_blah/"+        , f "http://foo.com/blah_blah_(wikipedia)"+        , f "http://foo.com/blah_blah_(wikipedia)_(again)"+        , f "http://www.example.com/wpstyle/?p=364"+        , f "HTTPS://foo.bar/?q=Test%20URL-encoded%20stuff"+        , f "HTTP://223.255.255.254"+        , f "ftp://223.255.255.254"+        , f "FTP://223.255.255.254"+        ]+      where+        f s = (s,s)++    counter_samples =+        [ ""+        , "http://"+        , "http://."+        , "http://.."+        , "http://../"+        , "http://?"+        , "http://??"+        , "http://foo.bar?q=Spaces should be encoded"+        , "//"+        , "http://##/"+        , "http://##"+        , "http://##/"+        ]++run_tests :: (Eq a,Show a)+          => RegexType+          -> (String->Maybe a)+          -> [(String,a)]+          -> MacroEnv+          -> PreludeMacro+          -> MacroDescriptor+          -> MacroDescriptor+run_tests rty parser vector env =+  runTests rty parser vector env . prelude_macro_id++bracketedRegexSource :: String -> RegexSource+bracketedRegexSource re_s = RegexSource $ "(?:" ++ re_s ++ ")"++fix :: (a->a) -> a+fix f = f (fix f)
+ Text/RE/Internal/QQ.hs view
@@ -0,0 +1,26 @@+{-# LANGUAGE DeriveDataTypeable         #-}++module Text.RE.Internal.QQ where++import           Control.Exception+import           Data.Typeable+import           Language.Haskell.TH.Quote+++data QQFailure =+  QQFailure+    { _qqf_context   :: String+    , _qqf_component :: String+    }+  deriving (Show,Typeable)++instance Exception QQFailure where++qq0 :: String -> QuasiQuoter+qq0 ctx =+  QuasiQuoter+    { quoteExp  = const $ throw $ QQFailure ctx "expression"+    , quotePat  = const $ throw $ QQFailure ctx "pattern"+    , quoteType = const $ throw $ QQFailure ctx "type"+    , quoteDec  = const $ throw $ QQFailure ctx "declaration"+    }
+ Text/RE/IsRegex.lhs view
@@ -0,0 +1,17 @@+\begin{code}+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE AllowAmbiguousTypes        #-}++module Text.RE.IsRegex where++import           Text.RE.Capture+import           Text.RE.Replace+\end{code}+++\begin{code}+class Replace s => IsRegex re s where+  matchOnce   :: re -> s -> Match s+  matchMany   :: re -> s -> Matches s+  regexSource :: re -> String+\end{code}
+ Text/RE/LineNo.hs view
@@ -0,0 +1,18 @@+{-# LANGUAGE GeneralizedNewtypeDeriving #-}++module Text.RE.LineNo where+++newtype LineNo =+    ZeroBasedLineNo { getZeroBasedLineNo :: Int }+  deriving (Show,Enum)+++firstLine :: LineNo+firstLine = ZeroBasedLineNo 0++getLineNo :: LineNo -> Int+getLineNo = (+1) . getZeroBasedLineNo++lineNo :: Int -> LineNo+lineNo = ZeroBasedLineNo . (\x->x-1)
+ Text/RE/Options.lhs view
@@ -0,0 +1,77 @@+\begin{code}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE TemplateHaskell            #-}+{-# LANGUAGE QuasiQuotes                #-}+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FunctionalDependencies     #-}++module Text.RE.Options where++import           Data.Hashable+import qualified Data.HashMap.Strict        as HM+import           Data.String+import           Language.Haskell.TH+import           Language.Haskell.TH.Syntax+\end{code}++\begin{code}+data Options_ r c e =+  Options+    { _options_mode :: !Mode+    , _options_macs :: !(Macros r)+    , _options_comp :: !c+    , _options_exec :: !e+    }+  deriving (Show)+\end{code}++\begin{code}+class IsOption o r c e |+    e -> r, c -> e , e -> c, r -> c, c -> r, r -> e where+  makeOptions :: o -> Options_ r c e+\end{code}++\begin{code}+data Mode+  = Simple+  | Block+  deriving (Bounded,Enum,Ord,Eq,Show)+\end{code}++\begin{code}+newtype MacroID =+    MacroID { _MacroID :: String }+  deriving (IsString,Ord,Eq,Show)+\end{code}++\begin{code}+instance Hashable MacroID where+  hashWithSalt i = hashWithSalt i . _MacroID+\end{code}++\begin{code}+type Macros r = HM.HashMap MacroID r+\end{code}++\begin{code}+emptyMacros :: Macros r+emptyMacros = HM.empty+\end{code}++\begin{code}+data SimpleRegexOptions+  = MultilineSensitive+  | MultilineInsensitive+  | BlockSensitive+  | BlockInsensitive+  deriving (Bounded,Enum,Eq,Ord,Show)+\end{code}++\begin{code}+instance Lift SimpleRegexOptions where+  lift sro = case sro of+    MultilineSensitive    -> conE 'MultilineSensitive+    MultilineInsensitive  -> conE 'MultilineInsensitive+    BlockSensitive        -> conE 'BlockSensitive+    BlockInsensitive      -> conE 'BlockInsensitive+\end{code}
+ Text/RE/PCRE.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif+{-# OPTIONS_GHC -fno-warn-dodgy-exports #-}++module Text.RE.PCRE+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.PCRE.RE+  , module Text.RE.PCRE.ByteString+  , module Text.RE.PCRE.ByteString.Lazy+  , module Text.RE.PCRE.Sequence+  , module Text.RE.PCRE.String++  ) where+++import qualified Text.Regex.Base                          as B+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.PCRE.RE+import qualified Text.Regex.PCRE                          as PCRE+import           Text.RE.PCRE.ByteString()+import           Text.RE.PCRE.ByteString.Lazy()+import           Text.RE.PCRE.Sequence()+import           Text.RE.PCRE.String()+++(*=~) :: IsRegex RE s+      => s+      -> RE+      -> Matches s+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ matchMany rex bs++(?=~) :: IsRegex RE s+      => s+      -> RE+      -> Match s+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ matchOnce rex bs++(=~) :: ( B.RegexContext PCRE.Regex s a+        , B.RegexMaker   PCRE.Regex PCRE.CompOption PCRE.ExecOption s+        )+     => s+     -> RE+     -> a+(=~) bs rex = B.match (reRegex rex) bs++(=~~) :: ( Monad m+         , B.RegexContext PCRE.Regex s a+         , B.RegexMaker   PCRE.Regex PCRE.CompOption PCRE.ExecOption s+         )+      => s+      -> RE+      -> m a+(=~~) bs rex = B.matchM (reRegex rex) bs
+ Text/RE/PCRE/ByteString.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.PCRE.ByteString+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.PCRE.RE+  ) where++import qualified Data.ByteString               as B+import           Text.Regex.Base+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.PCRE.RE+import qualified Text.Regex.PCRE               as PCRE+++-- | find all matches in text+(*=~) :: B.ByteString+      -> RE+      -> Matches B.ByteString+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ match (reRegex rex) bs++-- | find first matches in text+(?=~) :: B.ByteString+      -> RE+      -> Match B.ByteString+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ match (reRegex rex) bs++-- | regex-base polymorphic match operator+(=~) :: ( RegexContext PCRE.Regex B.ByteString a+        , RegexMaker   PCRE.Regex PCRE.CompOption PCRE.ExecOption String+        )+     => B.ByteString+     -> RE+     -> a+(=~) bs rex = match (reRegex rex) bs++-- | regex-base monadic, polymorphic match operator+(=~~) :: ( Monad m+         , RegexContext PCRE.Regex B.ByteString a+         , RegexMaker   PCRE.Regex PCRE.CompOption PCRE.ExecOption String+         )+      => B.ByteString+      -> RE+      -> m a+(=~~) bs rex = matchM (reRegex rex) bs++instance IsRegex RE B.ByteString where+  matchOnce   = flip (?=~)+  matchMany   = flip (*=~)+  regexSource = reSource
+ Text/RE/PCRE/ByteString/Lazy.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.PCRE.ByteString.Lazy+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.PCRE.RE+  ) where++import qualified Data.ByteString.Lazy          as LBS+import           Text.Regex.Base+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.PCRE.RE+import qualified Text.Regex.PCRE               as PCRE+++-- | find all matches in text+(*=~) :: LBS.ByteString+      -> RE+      -> Matches LBS.ByteString+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ match (reRegex rex) bs++-- | find first matches in text+(?=~) :: LBS.ByteString+      -> RE+      -> Match LBS.ByteString+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ match (reRegex rex) bs++-- | regex-base polymorphic match operator+(=~) :: ( RegexContext PCRE.Regex LBS.ByteString a+        , RegexMaker   PCRE.Regex PCRE.CompOption PCRE.ExecOption String+        )+     => LBS.ByteString+     -> RE+     -> a+(=~) bs rex = match (reRegex rex) bs++-- | regex-base monadic, polymorphic match operator+(=~~) :: ( Monad m+         , RegexContext PCRE.Regex LBS.ByteString a+         , RegexMaker   PCRE.Regex PCRE.CompOption PCRE.ExecOption String+         )+      => LBS.ByteString+      -> RE+      -> m a+(=~~) bs rex = matchM (reRegex rex) bs++instance IsRegex RE LBS.ByteString where+  matchOnce   = flip (?=~)+  matchMany   = flip (*=~)+  regexSource = reSource
+ Text/RE/PCRE/RE.hs view
@@ -0,0 +1,249 @@+{-# LANGUAGE NoImplicitPrelude          #-}+{-# LANGUAGE RecordWildCards            #-}+{-# LANGUAGE QuasiQuotes                #-}+{-# LANGUAGE TemplateHaskell            #-}+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE TypeSynonymInstances       #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif+{-# OPTIONS_GHC -fno-warn-orphans       #-}++module Text.RE.PCRE.RE+  ( re+  , reMS+  , reMI+  , reBS+  , reBI+  , reMultilineSensitive+  , reMultilineInsensitive+  , reBlockSensitive+  , reBlockInsensitive+  , re_+  , cp+  , regexType+  , RE+  , reOptions+  , reSource+  , reCaptureNames+  , reRegex+  , Options+  , prelude+  , preludeEnv+  , preludeTestsFailing+  , preludeTable+  , preludeSummary+  , preludeSources+  , preludeSource+  , noPreludeOptions+  , defaultOptions+  , unpackSimpleRegexOptions+  , compileRegex+  ) where++import           Data.Bits+import           Data.Functor.Identity+import           Language.Haskell.TH+import           Language.Haskell.TH.Quote+import           Prelude.Compat+import           Text.RE+import           Text.RE.Internal.NamedCaptures+import           Text.RE.Internal.PreludeMacros+import           Text.RE.Internal.QQ+import           Text.RE.TestBench+import           Text.Regex.PCRE+++re+  , reMS+  , reMI+  , reBS+  , reBI+  , reMultilineSensitive+  , reMultilineInsensitive+  , reBlockSensitive+  , reBlockInsensitive+  , re_ :: QuasiQuoter++re                       = re' $ Just minBound+reMS                     = reMultilineSensitive+reMI                     = reMultilineInsensitive+reBS                     = reBlockSensitive+reBI                     = reBlockInsensitive+reMultilineSensitive     = re' $ Just  MultilineSensitive+reMultilineInsensitive   = re' $ Just  MultilineInsensitive+reBlockSensitive         = re' $ Just  BlockSensitive+reBlockInsensitive       = re' $ Just  BlockInsensitive+re_                      = re'   Nothing++regexType :: RegexType+regexType = PCRE++data RE =+  RE+    { _re_options :: !Options+    , _re_source  :: !String+    , _re_cnames  :: !CaptureNames+    , _re_regex   :: !Regex+    }++reOptions :: RE -> Options+reOptions = _re_options++reSource :: RE -> String+reSource = _re_source++reCaptureNames :: RE -> CaptureNames+reCaptureNames = _re_cnames++reRegex  :: RE -> Regex+reRegex = _re_regex++type Options = Options_ RE CompOption ExecOption++instance IsOption SimpleRegexOptions RE CompOption ExecOption where+  makeOptions    = unpackSimpleRegexOptions++instance IsOption Mode        RE CompOption ExecOption where+  makeOptions md = Options md prelude def_comp_option def_exec_option++instance IsOption (Macros RE) RE CompOption ExecOption where+  makeOptions ms = Options minBound ms def_comp_option def_exec_option++instance IsOption CompOption  RE CompOption ExecOption where+  makeOptions co = Options minBound prelude co def_exec_option++instance IsOption ExecOption  RE CompOption ExecOption where+  makeOptions eo = Options minBound prelude def_comp_option eo++instance IsOption Options     RE CompOption ExecOption where+  makeOptions    = id++instance IsOption ()          RE CompOption ExecOption where+  makeOptions _  = unpackSimpleRegexOptions minBound++def_comp_option :: CompOption+def_comp_option = _options_comp defaultOptions++def_exec_option :: ExecOption+def_exec_option = _options_exec defaultOptions++noPreludeOptions :: Options+noPreludeOptions = defaultOptions { _options_macs = emptyMacros }++defaultOptions :: Options+defaultOptions = makeOptions (minBound::SimpleRegexOptions)++unpackSimpleRegexOptions :: SimpleRegexOptions -> Options+unpackSimpleRegexOptions sro =+  Options+    { _options_mode = minBound+    , _options_macs = prelude+    , _options_comp = comp+    , _options_exec = defaultExecOpt+    }+  where+    comp =+      wiggle ml compMultiline $+      wiggle ci compCaseless+        defaultCompOpt++    wiggle True  m v = v .|.            m+    wiggle False m v = v .&. complement m++    (ml,ci) = case sro of+        MultilineSensitive    -> (,) True  False+        MultilineInsensitive  -> (,) True  True+        BlockSensitive        -> (,) False False+        BlockInsensitive      -> (,) False True++compileRegex :: ( IsOption o RE CompOption ExecOption+                , Functor m+                , Monad   m+                )+             => o+             -> String+             -> m RE+compileRegex = compileRegex_ . makeOptions++compileRegex_ :: ( Functor m , Monad m )+              => Options+              -> String+              -> m RE+compileRegex_ os re_s = uncurry mk <$> compileRegex' os re_s+  where+    mk cnms rex =+      RE+        { _re_options = os+        , _re_source  = re_s+        , _re_cnames  = cnms+        , _re_regex   = rex+        }++re' :: Maybe SimpleRegexOptions -> QuasiQuoter+re' mb = case mb of+  Nothing  ->+    (qq0 "re_")+      { quoteExp = parse minBound (\rs->[|flip unsafeCompileRegex rs|])+      }+  Just sro ->+    (qq0 "re")+      { quoteExp = parse sro (\rs->[|unsafeCompileRegexSimple sro rs|])+      }+  where+    parse :: SimpleRegexOptions -> (String->Q Exp) -> String -> Q Exp+    parse sro mk rs = either error (\_->mk rs) $ compileRegex_ os rs+      where+        os = unpackSimpleRegexOptions sro++unsafeCompileRegexSimple :: SimpleRegexOptions -> String -> RE+unsafeCompileRegexSimple sro re_s = unsafeCompileRegex os re_s+  where+    os = unpackSimpleRegexOptions sro++unsafeCompileRegex :: IsOption o RE CompOption ExecOption+                   => o+                   -> String+                   -> RE+unsafeCompileRegex = unsafeCompileRegex_ . makeOptions++unsafeCompileRegex_ :: Options -> String -> RE+unsafeCompileRegex_ os = either oops id . compileRegex os+  where+    oops = error . ("unsafeCompileRegex: " ++)++compileRegex' :: (Functor m,Monad m)+              => Options+              -> String+              -> m (CaptureNames,Regex)+compileRegex' Options{..} s0 = do+    (cnms,s2) <- either fail return $ extractNamedCaptures s1+    (,) cnms <$> makeRegexOptsM _options_comp _options_exec s2+  where+    s1 = expandMacros reSource _options_mode _options_macs s0++prelude :: Macros RE+prelude = runIdentity $ preludeMacros mk PCRE ExclCaptures+  where+    mk = Identity . unsafeCompileRegex_ noPreludeOptions++preludeTestsFailing :: [MacroID]+preludeTestsFailing = badMacros preludeEnv++preludeEnv :: MacroEnv+preludeEnv = preludeMacroEnv PCRE++preludeTable :: String+preludeTable = preludeMacroTable PCRE++preludeSummary :: PreludeMacro -> String+preludeSummary = preludeMacroSummary PCRE++preludeSources :: String+preludeSources = preludeMacroSources PCRE++preludeSource :: PreludeMacro -> String+preludeSource = preludeMacroSource PCRE
+ Text/RE/PCRE/Sequence.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.PCRE.Sequence+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.PCRE.RE+  ) where++import qualified Data.Sequence                 as S+import           Text.Regex.Base+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.PCRE.RE+import qualified Text.Regex.PCRE               as PCRE+++-- | find all matches in text+(*=~) :: (S.Seq Char)+      -> RE+      -> Matches (S.Seq Char)+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ match (reRegex rex) bs++-- | find first matches in text+(?=~) :: (S.Seq Char)+      -> RE+      -> Match (S.Seq Char)+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ match (reRegex rex) bs++-- | regex-base polymorphic match operator+(=~) :: ( RegexContext PCRE.Regex (S.Seq Char) a+        , RegexMaker   PCRE.Regex PCRE.CompOption PCRE.ExecOption String+        )+     => (S.Seq Char)+     -> RE+     -> a+(=~) bs rex = match (reRegex rex) bs++-- | regex-base monadic, polymorphic match operator+(=~~) :: ( Monad m+         , RegexContext PCRE.Regex (S.Seq Char) a+         , RegexMaker   PCRE.Regex PCRE.CompOption PCRE.ExecOption String+         )+      => (S.Seq Char)+      -> RE+      -> m a+(=~~) bs rex = matchM (reRegex rex) bs++instance IsRegex RE (S.Seq Char) where+  matchOnce   = flip (?=~)+  matchMany   = flip (*=~)+  regexSource = reSource
+ Text/RE/PCRE/String.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.PCRE.String+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.PCRE.RE+  ) where+++import           Text.Regex.Base+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.PCRE.RE+import qualified Text.Regex.PCRE               as PCRE+++-- | find all matches in text+(*=~) :: String+      -> RE+      -> Matches String+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ match (reRegex rex) bs++-- | find first matches in text+(?=~) :: String+      -> RE+      -> Match String+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ match (reRegex rex) bs++-- | regex-base polymorphic match operator+(=~) :: ( RegexContext PCRE.Regex String a+        , RegexMaker   PCRE.Regex PCRE.CompOption PCRE.ExecOption String+        )+     => String+     -> RE+     -> a+(=~) bs rex = match (reRegex rex) bs++-- | regex-base monadic, polymorphic match operator+(=~~) :: ( Monad m+         , RegexContext PCRE.Regex String a+         , RegexMaker   PCRE.Regex PCRE.CompOption PCRE.ExecOption String+         )+      => String+      -> RE+      -> m a+(=~~) bs rex = matchM (reRegex rex) bs++instance IsRegex RE String where+  matchOnce   = flip (?=~)+  matchMany   = flip (*=~)+  regexSource = reSource
+ Text/RE/Parsers.hs view
@@ -0,0 +1,166 @@+{-# OPTIONS_GHC -fno-warn-warnings-deprecations #-}+{-# LANGUAGE OverloadedStrings                  #-}++module Text.RE.Parsers+  ( parseInteger+  , parseHex+  , parseDouble+  , parseString+  , parseSimpleString+  , parseDate+  , parseSlashesDate+  , parseTimeOfDay+  , parseTimeZone+  , parseDateTime+  , parseDateTime8601+  , parseDateTimeCLF+  , parseShortMonth+  , shortMonthArray+  , IPV4Address+  , parseIPv4Address+  , Severity(..)+  , parseSeverity+  , severityKeywords+  ) where++import           Data.Array+import qualified Data.HashMap.Strict        as HM+import           Data.Maybe+import qualified Data.Text                  as T+import           Data.Time+import qualified Data.Time.Locale.Compat    as LC+import           Data.Word+import           Text.Printf+import           Text.Read+import           Text.RE.Replace+++parseInteger :: Replace a => a -> Maybe Int+parseInteger = readMaybe . unpack_++parseHex :: Replace a => a -> Maybe Int+parseHex = readMaybe . ("0x"++) . unpack_++parseDouble :: Replace a => a -> Maybe Double+parseDouble = readMaybe . unpack_++parseString :: Replace a => a -> Maybe T.Text+parseString = readMaybe . unpack_++parseSimpleString :: Replace a => a -> Maybe T.Text+parseSimpleString = Just . T.dropEnd 1 . T.drop 1 . textify++date_templates, time_templates, timezone_templates,+  date_time_8601_templates, date_time_templates :: [String]+date_templates            = ["%F"]+time_templates            = ["%H:%M:%S","%H:%M:%S%Q","%H:%M"]+timezone_templates        = ["Z","%z"]+date_time_8601_templates  =+    [ printf "%sT%s%s" dt tm tz+        | dt <- date_templates+        , tm <- time_templates+        , tz <- timezone_templates+        ]+date_time_templates       =+    [ printf "%s%c%s%s" dt sc tm tz+        | dt <- date_templates+        , sc <- ['T',' ']+        , tm <- time_templates+        , tz <- timezone_templates ++ [" UTC",""]+        ]++parseDate :: Replace a => a -> Maybe Day+parseDate = parse_time date_templates++parseSlashesDate :: Replace a => a -> Maybe Day+parseSlashesDate = parse_time ["%Y/%m/%d"]++parseTimeOfDay :: Replace a => a -> Maybe TimeOfDay+parseTimeOfDay = parse_time time_templates++parseTimeZone :: Replace a => a -> Maybe TimeZone+parseTimeZone = parse_time timezone_templates++parseDateTime :: Replace a => a -> Maybe UTCTime+parseDateTime = parse_time date_time_templates++parseDateTime8601 :: Replace a => a -> Maybe UTCTime+parseDateTime8601 = parse_time date_time_8601_templates++parseDateTimeCLF :: Replace a => a -> Maybe UTCTime+parseDateTimeCLF = parse_time ["%d/%b/%Y:%H:%M:%S %z"]++parseShortMonth :: Replace a => a -> Maybe Int+parseShortMonth = flip HM.lookup short_month_hm . unpack_++parse_time :: (ParseTime t,Replace s) => [String] -> s -> Maybe t+parse_time tpls = prs . unpack_+  where+    prs s = listToMaybe $ catMaybes+      [ parseTime LC.defaultTimeLocale fmt s+          | fmt<-tpls+          ]++short_month_hm :: HM.HashMap String Int+short_month_hm = HM.fromList [ (T.unpack $ shortMonthArray!i,i) | i<-[1..12] ]++shortMonthArray :: Array Int T.Text+shortMonthArray = listArray (1,12) $+  T.words "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"++type IPV4Address = (Word8,Word8,Word8,Word8)++parseIPv4Address :: Replace a => a -> Maybe IPV4Address+parseIPv4Address = prs . words_by (=='.') . unpack_+  where+    prs [a_s,b_s,c_s,d_s] = do+      a <- readMaybe a_s+      b <- readMaybe b_s+      c <- readMaybe c_s+      d <- readMaybe d_s+      case all is_o [a,b,c,d] of+        True  -> Just (toEnum a,toEnum b,toEnum c,toEnum d)+        False -> Nothing+    prs _ = Nothing++    is_o x = 0 <= x && x <= 255++data Severity+  = Emerg+  | Alert+  | Crit+  | Err+  | Warning+  | Notice+  | Info+  | Debug+  deriving (Bounded,Enum,Ord,Eq,Show)++parseSeverity :: Replace a => a -> Maybe Severity+parseSeverity = flip HM.lookup severity_hm . textify++severity_hm :: HM.HashMap T.Text Severity+severity_hm = HM.fromList+  [ (kw,pri)+      | pri<-[minBound..maxBound]+      , let (kw0,kws) = severityKeywords pri+      , kw <- kw0:kws+      ]++severityKeywords :: Severity -> (T.Text,[T.Text])+severityKeywords pri = case pri of+  Emerg     -> (,) "emerg"    ["panic"]+  Alert     -> (,) "alert"    []+  Crit      -> (,) "crit"     []+  Err       -> (,) "err"      ["error"]+  Warning   -> (,) "warning"  ["warn"]+  Notice    -> (,) "notice"   []+  Info      -> (,) "info"     []+  Debug     -> (,) "debug"    []++words_by :: (Char->Bool) -> String -> [String]+words_by f s = case dropWhile f s of+  "" -> []+  s' -> w : words_by f s''+        where+          (w, s'') = break f s'
+ Text/RE/Replace.lhs view
@@ -0,0 +1,498 @@+\begin{code}+{-# LANGUAGE NoImplicitPrelude          #-}+{-# LANGUAGE QuasiQuotes                #-}+{-# LANGUAGE OverloadedStrings          #-}+{-# LANGUAGE RecordWildCards            #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}++module Text.RE.Replace+  ( Replace(..)+  , Replace_(..)+  , replace_+  , Phi(..)+  , Context(..)+  , Location(..)+  , isTopLocation+  , replace+  , replaceAll+  , replaceAllCaptures+  , replaceAllCaptures'+  , replaceAllCaptures_+  , replaceAllCapturesM+  , replaceCaptures+  , replaceCaptures'+  , replaceCaptures_+  , replaceCapturesM+  , expandMacros+  , expandMacros'+  ) where++import           Control.Applicative+import           Data.Array+import qualified Data.ByteString.Char8          as B+import qualified Data.ByteString.Lazy.Char8     as LBS+import           Data.Char+import qualified Data.Foldable                  as F+import           Data.Functor.Identity+import qualified Data.HashMap.Strict            as HM+import           Data.Maybe+import           Data.Monoid+import qualified Data.Sequence                  as S+import qualified Data.Text                      as T+import qualified Data.Text.Encoding             as TE+import qualified Data.Text.Lazy                 as LT+import           Prelude.Compat+import           Text.Heredoc+import           Text.RE.Capture+import           Text.RE.CaptureID+import           Text.RE.Options+import           Text.Regex.TDFA+import           Text.Regex.TDFA.Text()+import           Text.Regex.TDFA.Text.Lazy()+\end{code}++\begin{code}+-- | Replace provides the missing methods needed to replace the matched+-- text; length_ is the minimum implementation+class (Extract a,Monoid a) => Replace a where+  -- | length function for a+  length_       :: a -> Int+  -- | inject String into a+  pack_         :: String -> a+  -- | project a onto a String+  unpack_       :: a -> String+  -- | inject into Text+  textify       :: a -> T.Text+  -- | project Text onto a+  detextify     :: T.Text -> a+  -- | append a newline+  appendNewline :: a -> a+  -- | apply a substitution function to a Capture+  subst         :: (a->a) -> Capture a -> a+  -- | convert a template containing $0, $1, etc., in the first+  -- argument, into a 'phi' replacement function for use with+  -- replaceAllCaptures' and replaceCaptures'+  parse_tpl     :: a -> Match a -> Location -> Capture a -> Maybe a++  textify       = T.pack . unpack_+  detextify     = pack_  . T.unpack+  appendNewline = (<> pack_ "\n")++  subst f m@Capture{..} =+    capturePrefix m <> f capturedText <> captureSuffix m+\end{code}++\begin{code}+-- | a selction of the Replace methods can be encapsulated with Replace_+-- for the higher-order replacement functions+data Replace_ a =+  Replace_+    { _r_length :: a -> Int+    , _r_subst  :: (a->a) -> Capture a -> a+    }++-- | replace_ encapsulates Replace_ a from a Replace a context+replace_ :: Replace a => Replace_ a+replace_ =+  Replace_+    { _r_length = length_+    , _r_subst  = subst+    }+\end{code}++\begin{code}+-- | @Phi@ specifies the substitution function for procesing the substrings+-- captured by the regular expression.+data Phi a =+  Phi+    { _phi_context :: Context             -- ^ the context for applying+                                          -- the substitution+    , _phi_phi     :: Location -> a -> a  -- ^ the substitution function+                                          -- takes the location and+                                          -- the text to be replaced and+                                          -- returns the replacement+                                          -- text to be substituted+    }++-- | @Context@ specifies which contexts the substitutions should be applied+data Context+  = TOP   -- ^ substitutions should be applied to the top-level only,+          -- the text that matched the whole RE+  | SUB   -- ^ substitutions should only be applied to the text+          -- captured by bracketed sub-REs+  | ALL   -- ^ the substitution function should be applied to all+          -- captures, the top level and the sub-expression captures+  deriving (Show)++-- | the @Location@ information passed into the substitution function+-- specifies which sub-expression is being substituted+data Location =+  Location+    { _loc_match   :: Int   -- ^ the zero-based, i-th string to be+                            -- matched, when matching all strings,+                            -- zero when only the first string is+                            -- being matched+    , _loc_capture :: CaptureOrdinal+                            -- ^ 0, when matching the top-level+                            -- string matched by the whole RE, 1+                            -- for the top-most, left-most redex+                            -- captured by bracketed sub-REs, etc.+    }+  deriving (Show)+\end{code}++\begin{code}+-- | True iff the location references a complete match+-- (i.e., not a bracketed capture)+isTopLocation :: Location -> Bool+isTopLocation = (==0) . _loc_capture+\end{code}++\begin{code}+-- | replace all with a template, $0 for whole text, $1 for first+-- capture, etc.+replaceAll :: Replace a+           => a+           -> Matches a+           -> a+replaceAll tpl ac = replaceAllCaptures' TOP (parse_tpl tpl) ac+\end{code}++\begin{code}+-- | substitutes the PHI substitutions through the Matches+replaceAllCaptures :: Replace a+                   => Phi a+                   -> Matches a+                   -> a+replaceAllCaptures = mk_phi replaceAllCaptures'+\end{code}++\begin{code}+-- | substitutes using a function that takes the full Match+-- context and returns the same replacement text as the _phi_phi+-- context.+replaceAllCaptures' :: Replace a+                    => Context+                    -> (Match a->Location->Capture a->Maybe a)+                    -> Matches a+                    -> a+\end{code}++\begin{code}+replaceAllCaptures' = replaceAllCaptures_ replace_+\end{code}++\begin{code}+-- | replaceAllCaptures_ is like like replaceAllCaptures' but takes the+-- Replace methods through the Replace_ argument+replaceAllCaptures_ :: Extract a+                    => Replace_ a+                    -> Context+                    -> (Match a->Location->Capture a->Maybe a)+                    -> Matches a+                    -> a+replaceAllCaptures_ s ctx phi ac =+    runIdentity $ replaceAllCapturesM s ctx (lift_phi phi) ac+\end{code}++\begin{code}+-- | replaceAllCapturesM is just a monadically generalised version of+-- replaceAllCaptures_+replaceAllCapturesM :: (Extract a,Monad m)+                    => Replace_ a+                    -> Context+                    -> (Match a->Location->Capture a->m (Maybe a))+                    -> Matches a+                    -> m a+replaceAllCapturesM r ctx phi_ Matches{..} =+    replaceCapturesM r ALL phi $ Match matchesSource cnms arr+  where+    phi _ (Location _ i) = case arr_c!i of+      Just caps -> phi_ caps . uncurry Location $ arr_i ! i+      Nothing   -> const $ return Nothing++    arr_c = listArray bds $+      concat $+        [ repl (rangeSize $ bounds $ matchArray cs) cs+            | cs <- allMatches+            ]++    arr_i = listArray bds j_ks++    arr   = listArray bds $+        [ arr_ ! k+            | arr_ <- map matchArray allMatches+            , k    <- indices arr_+            ]++    bds   = (0,CaptureOrdinal $ length j_ks-1)++    j_ks  =+        [ (j,k)+            | (j,arr_) <- zip [0..] $ map matchArray allMatches+            ,  k       <- indices arr_+            ]++    repl 0 _ = []+    repl n x = case ctx of+      TOP -> Just x  : replicate (n-1) Nothing+      SUB -> Nothing : replicate (n-1) (Just x)+      ALL -> replicate n $ Just x++    cnms = fromMaybe noCaptureNames $ listToMaybe $ map captureNames allMatches+\end{code}++\begin{code}+-- | replace with a template containing $0 for whole text,+-- $1 for first capture, etc.+replace :: Replace a+        => Match a+        -> a+        -> a+replace c tpl = replaceCaptures' TOP (parse_tpl tpl) c+\end{code}++\begin{code}+-- | substitutes the PHI substitutions through the Match+replaceCaptures :: Replace a+                => Phi a+                -> Match a+                -> a+replaceCaptures = mk_phi replaceCaptures'+\end{code}++\begin{code}+-- | substitutes using a function that takes the full Match+-- context and returns the same replacement text as the _phi_phi+-- context.+replaceCaptures' :: Replace a+                 => Context+                 -> (Match a->Location->Capture a->Maybe a)+                 -> Match a+                 -> a+replaceCaptures' = replaceCaptures_ replace_+\end{code}++\begin{code}+-- | replaceCaptures_ is like replaceCaptures' but takes the Replace methods+-- through the Replace_ argument+replaceCaptures_ :: Extract a+                 => Replace_ a+                 -> Context+                 -> (Match a->Location->Capture a->Maybe a)+                 -> Match a+                 -> a+replaceCaptures_ s ctx phi caps =+  runIdentity $ replaceCapturesM s ctx (lift_phi phi) caps+\end{code}++\begin{code}+-- | replaceCapturesM is just a monadically generalised version of+-- replaceCaptures_+replaceCapturesM :: (Monad m,Extract a)+                 => Replace_ a+                 -> Context+                 -> (Match a->Location->Capture a->m (Maybe a))+                 -> Match a+                 -> m a+replaceCapturesM Replace_{..} ctx phi_ caps@Match{..} = do+    (hay',_) <- foldr sc (return (matchSource,[])) $+                    zip [0..] $ elems matchArray+    return hay'+  where+    sc (i,cap0) act = do+      (hay,ds) <- act+      let ndl  = capturedText cap+          cap  = adj hay ds cap0+      mb <- phi i cap+      case mb of+        Nothing   -> return (hay,ds)+        Just ndl' ->+            return+              ( _r_subst (const ndl') cap+              , (captureOffset cap,len'-len) : ds+              )+          where+            len' = _r_length ndl'+            len  = _r_length ndl++    adj hay ds cap =+      Capture+        { captureSource = hay+        , capturedText  = before len $ after off0 hay+        , captureOffset = off0+        , captureLength = len+        }+      where+        len  = len0 + sum+          [ delta+            | (off,delta) <- ds+            , off < off0 + len0+            ]+        len0 = captureLength cap+        off0 = captureOffset cap++    phi i cap = case ctx of+      TOP | i/=0 -> return Nothing+      SUB | i==0 ->return  Nothing+      _          ->+        case not $ hasCaptured cap of+          True  -> return Nothing+          False -> phi_ caps (Location 0 i) cap+\end{code}++\begin{code}+-- the Replace instances++instance Replace [Char] where+  length_       = length+  pack_         = id+  unpack_       = id+  textify       = T.pack+  detextify     = T.unpack+  appendNewline = (<>"\n")+  parse_tpl     = parse_tpl_ id++instance Replace B.ByteString where+  length_   = B.length+  pack_     = B.pack+  unpack_   = B.unpack+  textify   = TE.decodeUtf8+  detextify = TE.encodeUtf8+  appendNewline = (<>"\n")+  parse_tpl = parse_tpl_ B.unpack++instance Replace LBS.ByteString where+  length_   = fromEnum . LBS.length+  pack_     = LBS.pack+  unpack_   = LBS.unpack+  textify   = TE.decodeUtf8  . LBS.toStrict+  detextify = LBS.fromStrict . TE.encodeUtf8+  appendNewline = (<>"\n")+  parse_tpl = parse_tpl_ LBS.unpack++instance Replace (S.Seq Char) where+  length_   = S.length+  pack_     = S.fromList+  unpack_   = F.toList+  parse_tpl = parse_tpl_ F.toList++instance Replace T.Text where+  length_   = T.length+  pack_     = T.pack+  unpack_   = T.unpack+  textify   = id+  detextify = id+  appendNewline = (<>"\n")+  parse_tpl = parse_tpl_ T.unpack++instance Replace LT.Text where+  length_   = fromEnum . LT.length+  pack_     = LT.pack+  unpack_   = LT.unpack+  textify   = LT.toStrict+  detextify = LT.fromStrict+  appendNewline = (<>"\n")+  parse_tpl = parse_tpl_ LT.unpack+\end{code}++\begin{code}+-- | expand all of the @{..} macros in the RE in the argument String+-- according to the Macros argument, preprocessing the RE String+-- according to the Mode argument (used internally)+expandMacros :: (r->String) -> Mode -> Macros r -> String -> String+expandMacros x_src md hm s0 =+  case HM.null hm of+    True  -> s+    False -> expandMacros' (fmap x_src . flip HM.lookup hm) s+  where+    s = case md of+      Simple -> s0+      Block  -> concat $ map clean $ lines s0++    clean = reverse . dropWhile isSpace . reverse . dropWhile isSpace+\end{code}++\begin{code}+-- | expand the @{..} macos in the argument string using the given+-- function+expandMacros' :: (MacroID->Maybe String) -> String -> String+expandMacros' lu = fixpoint e_m+  where+    e_m re_s = replaceAllCaptures' TOP phi $ re_s $=~ [here|@(@|\{([^{}]+)\})|]+      where+        phi mtch _ cap = case txt == "@@" of+            True  -> Just   "@"+            False -> Just $ fromMaybe txt $ lu ide+          where+            txt = capturedText cap+            ide = MacroID $ capturedText $ capture c2 mtch+            c2  = CID_ordinal $ CaptureOrdinal 2+\end{code}++\begin{code}+lift_phi :: Monad m+         => (Match a->Location->Capture a->Maybe a)+         -> (Match a->Location->Capture a->m (Maybe a))+lift_phi phi_ = phi+  where+    phi caps' loc' cap' = return $ phi_ caps' loc' cap'++mk_phi :: (Context->(Match a->Location->Capture a->Maybe a)->b)+       -> Phi a+       -> b+mk_phi f phi@Phi{..} = f _phi_context $ mk_phi' phi++mk_phi' :: Phi a -> Match a -> Location -> Capture a -> Maybe a+mk_phi' Phi{..} _ loc = Just . _phi_phi loc . capturedText+\end{code}++\begin{code}+parse_tpl_ :: ( Replace a+              , RegexContext Regex a (Matches a)+              , RegexMaker   Regex CompOption ExecOption String+              )+           => (a->String)+           -> a+           -> Match a+           -> Location+           -> Capture a+           -> Maybe a+parse_tpl_ unpack tpl mtch _ _ =+    Just $ replaceAllCaptures' TOP phi $+      tpl $=~ [here|\$(\$|[0-9]+|\{([^{}]+)\})|]+  where+    phi t_mtch _ _ = case t_mtch !$? c2  of+      Just cap -> this $ CID_name $ CaptureName txt+        where+          txt = T.pack $ unpack $ capturedText cap+      Nothing -> case s == "$" of+        True  -> Just t+        False -> this $ CID_ordinal $ CaptureOrdinal $ read s+      where+        s  = unpack t+        t  = capturedText $ capture c1 t_mtch++        this cid = capturedText <$> mtch !$? cid++    c1 = CID_ordinal $ CaptureOrdinal 1+    c2 = CID_ordinal $ CaptureOrdinal 2+\end{code}++\begin{code}+fixpoint :: (Eq a) => (a->a) -> a -> a+fixpoint f = chk . iterate f+  where+    chk (x:x':_) | x==x' = x+    chk xs               = chk $ tail xs+\end{code}++\begin{code}+($=~) :: ( RegexContext Regex source target+         , RegexMaker   Regex CompOption ExecOption String+         )+      => source -> String -> target+($=~) = (=~)++\end{code}
+ Text/RE/TDFA.hs view
@@ -0,0 +1,64 @@+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif+{-# OPTIONS_GHC -fno-warn-dodgy-exports #-}++module Text.RE.TDFA+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.TDFA.RE+  , module Text.RE.TDFA.ByteString+  , module Text.RE.TDFA.ByteString.Lazy+  , module Text.RE.TDFA.Sequence+  , module Text.RE.TDFA.String+  , module Text.RE.TDFA.Text+  , module Text.RE.TDFA.Text.Lazy+  ) where+++import qualified Text.Regex.Base                          as B+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.TDFA.RE+import qualified Text.Regex.TDFA                          as TDFA+import           Text.RE.TDFA.ByteString()+import           Text.RE.TDFA.ByteString.Lazy()+import           Text.RE.TDFA.Sequence()+import           Text.RE.TDFA.String()+import           Text.RE.TDFA.Text()+import           Text.RE.TDFA.Text.Lazy()+++(*=~) :: IsRegex RE s+      => s+      -> RE+      -> Matches s+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ matchMany rex bs++(?=~) :: IsRegex RE s+      => s+      -> RE+      -> Match s+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ matchOnce rex bs++(=~) :: ( B.RegexContext TDFA.Regex s a+        , B.RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption s+        )+     => s+     -> RE+     -> a+(=~) bs rex = B.match (reRegex rex) bs++(=~~) :: ( Monad m+         , B.RegexContext TDFA.Regex s a+         , B.RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption s+         )+      => s+      -> RE+      -> m a+(=~~) bs rex = B.matchM (reRegex rex) bs
+ Text/RE/TDFA/ByteString.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.TDFA.ByteString+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.TDFA.RE+  ) where++import qualified Data.ByteString               as B+import           Text.Regex.Base+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.TDFA.RE+import qualified Text.Regex.TDFA               as TDFA+++-- | find all matches in text+(*=~) :: B.ByteString+      -> RE+      -> Matches B.ByteString+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ match (reRegex rex) bs++-- | find first matches in text+(?=~) :: B.ByteString+      -> RE+      -> Match B.ByteString+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ match (reRegex rex) bs++-- | regex-base polymorphic match operator+(=~) :: ( RegexContext TDFA.Regex B.ByteString a+        , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+        )+     => B.ByteString+     -> RE+     -> a+(=~) bs rex = match (reRegex rex) bs++-- | regex-base monadic, polymorphic match operator+(=~~) :: ( Monad m+         , RegexContext TDFA.Regex B.ByteString a+         , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+         )+      => B.ByteString+      -> RE+      -> m a+(=~~) bs rex = matchM (reRegex rex) bs++instance IsRegex RE B.ByteString where+  matchOnce   = flip (?=~)+  matchMany   = flip (*=~)+  regexSource = reSource
+ Text/RE/TDFA/ByteString/Lazy.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.TDFA.ByteString.Lazy+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.TDFA.RE+  ) where++import qualified Data.ByteString.Lazy.Char8    as LBS+import           Text.Regex.Base+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.TDFA.RE+import qualified Text.Regex.TDFA               as TDFA+++-- | find all matches in text+(*=~) :: LBS.ByteString+      -> RE+      -> Matches LBS.ByteString+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ match (reRegex rex) bs++-- | find first matches in text+(?=~) :: LBS.ByteString+      -> RE+      -> Match LBS.ByteString+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ match (reRegex rex) bs++-- | regex-base polymorphic match operator+(=~) :: ( RegexContext TDFA.Regex LBS.ByteString a+        , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+        )+     => LBS.ByteString+     -> RE+     -> a+(=~) bs rex = match (reRegex rex) bs++-- | regex-base monadic, polymorphic match operator+(=~~) :: ( Monad m+         , RegexContext TDFA.Regex LBS.ByteString a+         , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+         )+      => LBS.ByteString+      -> RE+      -> m a+(=~~) bs rex = matchM (reRegex rex) bs++instance IsRegex RE LBS.ByteString where+  matchOnce   = flip (?=~)+  matchMany   = flip (*=~)+  regexSource = reSource
+ Text/RE/TDFA/RE.hs view
@@ -0,0 +1,245 @@+{-# LANGUAGE NoImplicitPrelude          #-}+{-# LANGUAGE RecordWildCards            #-}+{-# LANGUAGE QuasiQuotes                #-}+{-# LANGUAGE TemplateHaskell            #-}+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE TypeSynonymInstances       #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif+{-# OPTIONS_GHC -fno-warn-orphans       #-}++module Text.RE.TDFA.RE+  ( re+  , reMS+  , reMI+  , reBS+  , reBI+  , reMultilineSensitive+  , reMultilineInsensitive+  , reBlockSensitive+  , reBlockInsensitive+  , re_+  , cp+  , regexType+  , RE+  , reOptions+  , reSource+  , reCaptureNames+  , reRegex+  , Options+  , noPreludeOptions+  , defaultOptions+  , prelude+  , preludeEnv+  , preludeTestsFailing+  , preludeTable+  , preludeSummary+  , preludeSources+  , preludeSource+  , unpackSimpleRegexOptions+  , compileRegex+  ) where++import           Data.Functor.Identity+import           Language.Haskell.TH+import           Language.Haskell.TH.Quote+import           Prelude.Compat+import           Text.RE+import           Text.RE.Internal.NamedCaptures+import           Text.RE.Internal.PreludeMacros+import           Text.RE.Internal.QQ+import           Text.RE.TestBench+import           Text.Regex.TDFA+++re+  , reMS+  , reMI+  , reBS+  , reBI+  , reMultilineSensitive+  , reMultilineInsensitive+  , reBlockSensitive+  , reBlockInsensitive+  , re_ :: QuasiQuoter++re                       = re' $ Just minBound+reMS                     = reMultilineSensitive+reMI                     = reMultilineInsensitive+reBS                     = reBlockSensitive+reBI                     = reBlockInsensitive+reMultilineSensitive     = re' $ Just  MultilineSensitive+reMultilineInsensitive   = re' $ Just  MultilineInsensitive+reBlockSensitive         = re' $ Just  BlockSensitive+reBlockInsensitive       = re' $ Just  BlockInsensitive+re_                      = re'   Nothing++regexType :: RegexType+regexType = TDFA++data RE =+  RE+    { _re_options :: !Options+    , _re_source  :: !String+    , _re_cnames  :: !CaptureNames+    , _re_regex   :: !Regex+    }++reOptions :: RE -> Options+reOptions = _re_options++reSource :: RE -> String+reSource = _re_source++reCaptureNames :: RE -> CaptureNames+reCaptureNames = _re_cnames++reRegex :: RE -> Regex+reRegex = _re_regex++type Options = Options_ RE CompOption ExecOption++instance IsOption SimpleRegexOptions RE CompOption ExecOption where+  makeOptions    = unpackSimpleRegexOptions++instance IsOption Mode        RE CompOption ExecOption where+  makeOptions md = Options md prelude def_comp_option def_exec_option++instance IsOption (Macros RE) RE CompOption ExecOption where+  makeOptions ms = Options minBound ms def_comp_option def_exec_option++instance IsOption CompOption  RE CompOption ExecOption where+  makeOptions co = Options minBound prelude co def_exec_option++instance IsOption ExecOption  RE CompOption ExecOption where+  makeOptions eo = Options minBound prelude def_comp_option eo++instance IsOption Options     RE CompOption ExecOption where+  makeOptions    = id++instance IsOption ()          RE CompOption ExecOption where+  makeOptions _  = unpackSimpleRegexOptions minBound++def_comp_option :: CompOption+def_comp_option = _options_comp defaultOptions++def_exec_option :: ExecOption+def_exec_option = _options_exec defaultOptions++noPreludeOptions :: Options+noPreludeOptions = defaultOptions { _options_macs = emptyMacros }++defaultOptions :: Options+defaultOptions = makeOptions (minBound::SimpleRegexOptions)++unpackSimpleRegexOptions :: SimpleRegexOptions -> Options+unpackSimpleRegexOptions sro =+  Options+    { _options_mode = minBound+    , _options_macs = prelude+    , _options_comp = comp+    , _options_exec = defaultExecOpt+    }+  where+    comp = defaultCompOpt+      { caseSensitive = cs+      , multiline     = ml+      }++    (ml,cs) = case sro of+        MultilineSensitive    -> (,) True  True+        MultilineInsensitive  -> (,) True  False+        BlockSensitive        -> (,) False True+        BlockInsensitive      -> (,) False False++compileRegex :: ( IsOption o RE CompOption ExecOption+                , Functor m+                , Monad   m+                )+             => o+             -> String+             -> m RE+compileRegex = compileRegex_ . makeOptions++compileRegex_ :: (Functor m,Monad m)+              => Options+              -> String+              -> m RE+compileRegex_ os re_s = uncurry mk <$> compileRegex' os re_s+  where+    mk cnms rx =+      RE+        { _re_options = os+        , _re_source  = re_s+        , _re_cnames  = cnms+        , _re_regex   = rx+        }++re' :: Maybe SimpleRegexOptions -> QuasiQuoter+re' mb = case mb of+  Nothing  ->+    (qq0 "re_")+      { quoteExp = parse minBound (\rs->[|flip unsafeCompileRegex rs|])+      }+  Just sro ->+    (qq0 "re")+      { quoteExp = parse sro (\rs->[|unsafeCompileRegexSimple sro rs|])+      }+  where+    parse :: SimpleRegexOptions -> (String->Q Exp) -> String -> Q Exp+    parse sro mk rs = either error (\_->mk rs) $ compileRegex_ os rs+      where+        os = unpackSimpleRegexOptions sro++unsafeCompileRegexSimple :: SimpleRegexOptions -> String -> RE+unsafeCompileRegexSimple sro re_s = unsafeCompileRegex_ os re_s+  where+    os = unpackSimpleRegexOptions sro++unsafeCompileRegex :: IsOption o RE CompOption ExecOption+                   => o+                   -> String+                   -> RE+unsafeCompileRegex = unsafeCompileRegex_ . makeOptions++unsafeCompileRegex_ :: Options -> String -> RE+unsafeCompileRegex_ os = either oops id . compileRegex_ os+  where+    oops = error . ("unsafeCompileRegex: " ++)++compileRegex' :: (Functor m,Monad m)+              => Options+              -> String+              -> m (CaptureNames,Regex)+compileRegex' Options{..} s0 = do+    (cnms,s2) <- either fail return $ extractNamedCaptures s1+    (,) cnms <$> makeRegexOptsM _options_comp _options_exec s2+  where+    s1 = expandMacros reSource _options_mode _options_macs s0++prelude :: Macros RE+prelude = runIdentity $ preludeMacros mk TDFA ExclCaptures+  where+    mk = Identity . unsafeCompileRegex_ noPreludeOptions++preludeEnv :: MacroEnv+preludeEnv = preludeMacroEnv TDFA++preludeTestsFailing :: [MacroID]+preludeTestsFailing = badMacros $ preludeMacroEnv TDFA++preludeTable :: String+preludeTable = preludeMacroTable TDFA++preludeSummary :: PreludeMacro -> String+preludeSummary = preludeMacroSummary TDFA++preludeSources :: String+preludeSources = preludeMacroSources TDFA++preludeSource :: PreludeMacro -> String+preludeSource = preludeMacroSource TDFA
+ Text/RE/TDFA/Sequence.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.TDFA.Sequence+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.TDFA.RE+  ) where++import qualified Data.Sequence                 as S+import           Text.Regex.Base+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.TDFA.RE+import qualified Text.Regex.TDFA               as TDFA+++-- | find all matches in text+(*=~) :: (S.Seq Char)+      -> RE+      -> Matches (S.Seq Char)+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ match (reRegex rex) bs++-- | find first matches in text+(?=~) :: (S.Seq Char)+      -> RE+      -> Match (S.Seq Char)+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ match (reRegex rex) bs++-- | regex-base polymorphic match operator+(=~) :: ( RegexContext TDFA.Regex (S.Seq Char) a+        , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+        )+     => (S.Seq Char)+     -> RE+     -> a+(=~) bs rex = match (reRegex rex) bs++-- | regex-base monadic, polymorphic match operator+(=~~) :: ( Monad m+         , RegexContext TDFA.Regex (S.Seq Char) a+         , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+         )+      => (S.Seq Char)+      -> RE+      -> m a+(=~~) bs rex = matchM (reRegex rex) bs++instance IsRegex RE (S.Seq Char) where+  matchOnce   = flip (?=~)+  matchMany   = flip (*=~)+  regexSource = reSource
+ Text/RE/TDFA/String.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.TDFA.String+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.TDFA.RE+  ) where+++import           Text.Regex.Base+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.TDFA.RE+import qualified Text.Regex.TDFA               as TDFA+++-- | find all matches in text+(*=~) :: String+      -> RE+      -> Matches String+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ match (reRegex rex) bs++-- | find first matches in text+(?=~) :: String+      -> RE+      -> Match String+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ match (reRegex rex) bs++-- | regex-base polymorphic match operator+(=~) :: ( RegexContext TDFA.Regex String a+        , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+        )+     => String+     -> RE+     -> a+(=~) bs rex = match (reRegex rex) bs++-- | regex-base monadic, polymorphic match operator+(=~~) :: ( Monad m+         , RegexContext TDFA.Regex String a+         , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+         )+      => String+      -> RE+      -> m a+(=~~) bs rex = matchM (reRegex rex) bs++instance IsRegex RE String where+  matchOnce   = flip (?=~)+  matchMany   = flip (*=~)+  regexSource = reSource
+ Text/RE/TDFA/Text.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.TDFA.Text+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.TDFA.RE+  ) where++import qualified Data.Text                     as T+import           Text.Regex.Base+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.TDFA.RE+import qualified Text.Regex.TDFA               as TDFA+++-- | find all matches in text+(*=~) :: T.Text+      -> RE+      -> Matches T.Text+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ match (reRegex rex) bs++-- | find first matches in text+(?=~) :: T.Text+      -> RE+      -> Match T.Text+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ match (reRegex rex) bs++-- | regex-base polymorphic match operator+(=~) :: ( RegexContext TDFA.Regex T.Text a+        , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+        )+     => T.Text+     -> RE+     -> a+(=~) bs rex = match (reRegex rex) bs++-- | regex-base monadic, polymorphic match operator+(=~~) :: ( Monad m+         , RegexContext TDFA.Regex T.Text a+         , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+         )+      => T.Text+      -> RE+      -> m a+(=~~) bs rex = matchM (reRegex rex) bs++instance IsRegex RE T.Text where+  matchOnce   = flip (?=~)+  matchMany   = flip (*=~)+  regexSource = reSource
+ Text/RE/TDFA/Text/Lazy.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.TDFA.Text.Lazy+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.TDFA.RE+  ) where++import qualified Data.Text.Lazy                as TL+import           Text.Regex.Base+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.TDFA.RE+import qualified Text.Regex.TDFA               as TDFA+++-- | find all matches in text+(*=~) :: TL.Text+      -> RE+      -> Matches TL.Text+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ match (reRegex rex) bs++-- | find first matches in text+(?=~) :: TL.Text+      -> RE+      -> Match TL.Text+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ match (reRegex rex) bs++-- | regex-base polymorphic match operator+(=~) :: ( RegexContext TDFA.Regex TL.Text a+        , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+        )+     => TL.Text+     -> RE+     -> a+(=~) bs rex = match (reRegex rex) bs++-- | regex-base monadic, polymorphic match operator+(=~~) :: ( Monad m+         , RegexContext TDFA.Regex TL.Text a+         , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+         )+      => TL.Text+      -> RE+      -> m a+(=~~) bs rex = matchM (reRegex rex) bs++instance IsRegex RE TL.Text where+  matchOnce   = flip (?=~)+  matchMany   = flip (*=~)+  regexSource = reSource
+ Text/RE/TestBench.lhs view
@@ -0,0 +1,564 @@+\begin{code}+{-# LANGUAGE NoImplicitPrelude          #-}+{-# LANGUAGE RecordWildCards            #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE OverloadedStrings          #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.TestBench+  ( MacroID(..)+  , RegexType(..)+  , MacroEnv+  , WithCaptures(..)+  , MacroDescriptor(..)+  , TestResult(..)+  , RegexSource(..)+  , FunctionID(..)+  , mkMacros+  , testMacroEnv+  , badMacros+  , runTests+  , runTests'+  , formatMacroTable+  , dumpMacroTable+  , formatMacroSummary+  , formatMacroSources+  , formatMacroSource+  , testMacroDescriptors+  ) where++import           Data.Array+import           Data.Char+import qualified Data.HashMap.Lazy              as HML+import qualified Data.List                      as L+import           Data.Maybe+import           Data.Ord+import           Data.String+import           Text.Printf+import           Prelude.Compat+import           Text.RE.Capture+import           Text.RE.Options+import           Text.RE.Replace+import qualified Text.Regex.PCRE                as PCRE+import qualified Text.Regex.TDFA                as TDFA+\end{code}++Types+-----++\begin{code}+-- | what kind of back end will be compiling the RE+data RegexType+  = TDFA    -- the TDFA back end+  | PCRE    -- the PCRE back end+  deriving (Bounded,Enum,Eq,Ord,Show)++-- | do we need the captures in the RE or whould they be stripped out+-- where possible+data WithCaptures+  = InclCaptures+  | ExclCaptures+  deriving (Eq,Ord,Show)++-- | each macro can reference others, the whole environment being+-- required for each macro, so we use a Lazy HashMap+type MacroEnv = HML.HashMap MacroID MacroDescriptor++-- | describes a macro, giving the text of the RE and a si=ummary+-- description+data MacroDescriptor =+  MacroDescriptor+    { _md_source          :: !RegexSource         -- ^ the RE+    , _md_samples         :: ![String]            -- ^ some sample matches+    , _md_counter_samples :: ![String]            -- ^ some sample non-matches+    , _md_test_results    :: ![TestResult]        -- ^ validation test results+    , _md_parser          :: !(Maybe FunctionID)  -- ^ WA, the parser function+    , _md_description     :: !String              -- ^ summary comment+    }+  deriving (Show)++-- | list of failures on a validation run+newtype TestResult =+  TestResult { _TestResult :: String }+  deriving (IsString,Show)++-- | a RE that should work for POSIX and PCRE with open brackets ('(')+-- represented as follows:+--    \(    mere symbol+--    (?:   used for grouping only, not for captures+--    (}:   used for captures only, not for grouping+--    (]:   used for captures and grouping+--    (     do not modify+newtype RegexSource =+    RegexSource { _RegexSource :: String }+  deriving (IsString,Show)++-- | name of the Haskell parser function for parsing the text matched+-- by a macro+newtype FunctionID =+    FunctionID { _FunctionID :: String }+  deriving (IsString,Show)++-- | we are only interested in the open parentheses used for+-- grouping and/or capturing; if neither grouping or capturing then+-- there is no initial '(' or '(?:', just the suffic text+data REToken =+  REToken+    { _ret_prefix    :: String  -- ^ following text optional ( or (?:+    , _ret_fixed     :: Bool    -- ^ a '(' that is not safe to modify+    , _ret_grouping  :: Bool    -- ^ is this a grouping group+    , _ret_capturing :: Bool    -- ^ is this a capturing group+    }+  deriving (Show)+\end{code}+++mkMacros+--------++\begin{code}+mkMacros :: (Monad m,Functor m)+         => (String->m r)+         -> RegexType+         -> WithCaptures+         -> MacroEnv+         -> m (Macros r)+mkMacros prs rty wc env =+    HML.fromList <$> mapM (uncurry mk) (HML.toList env)+  where+    mk mid md = (,) mid <$> prs (mdRegexSource rty wc env md)+\end{code}+++testMacroEnv, badMacros+-----------------------++\begin{code}+testMacroEnv :: String -> RegexType -> MacroEnv -> IO Bool+testMacroEnv lab rty m_env = case badMacros m_env of+  []    -> return True+  fails -> do+    putStrLn $ lab' ++ " has failing tests for these macros: "+    putStr   $ unlines $ [ "  "++_MacroID mid | mid<-fails ]+    putStrLn $ "The whole table:"+    putStrLn $ "========================================================"+    putStr   $ formatMacroTable rty m_env+    putStrLn $ "========================================================"+    return False+  where+    lab' = lab ++ " [" ++ show rty ++"]"++badMacros :: MacroEnv -> [MacroID]+badMacros m_env =+  [ mid+      | (mid,MacroDescriptor{..}) <- HML.toList m_env+      , not $ null _md_test_results+      ]++runTests :: (Eq a,Show a)+         => RegexType+         -> (String->Maybe a)+         -> [(String,a)]+         -> MacroEnv+         -> MacroID+         -> MacroDescriptor+         -> MacroDescriptor+runTests rty parser = runTests' rty parser'+  where+    parser' caps = fmap capturedText (matchCapture caps) >>= parser++runTests' :: (Eq a,Show a)+          => RegexType+          -> (Match String->Maybe a)+          -> [(String,a)]+          -> MacroEnv+          -> MacroID+          -> MacroDescriptor+          -> MacroDescriptor+runTests' rty parser vector env mid md@MacroDescriptor{..} =+    md { _md_test_results = test_results }+  where+    test_results = concat+      [ concat $ map test     vector+      , concat $ map test_neg _md_counter_samples+      ]++    test (src,x) = test'     mid rty parser x $ match_ src env md++    test_neg src = test_neg' mid rty parser   $ match_ src env md++    match_ = case rty of+      TDFA -> match_tdfa+      PCRE -> match_pcre+\end{code}+++dumpMacroTable, formatMacroTable, formatMacroSummary, formatMacroSources, formatMacroSource+-------------------------------------------------------------------------------------------++\begin{code}+dumpMacroTable :: String -> RegexType -> MacroEnv -> IO ()+dumpMacroTable lab rty m_env = do+    writeFile fp_t $ formatMacroTable   rty              m_env+    writeFile fp_s $ formatMacroSources rty ExclCaptures m_env+  where+    fp_t  = "docs/" ++ rty_s ++ "-" ++ lab ++ ".txt"+    fp_s  = "docs/" ++ rty_s ++ "-" ++ lab ++ "-src.txt"++    rty_s = map toLower $ show rty+\end{code}++\begin{code}+formatMacroTable :: RegexType -> MacroEnv -> String+formatMacroTable rty env = unlines $+  format_table macro_table_hdr+    [ macro_table_row rty mid md+        | (mid,md) <- L.sortBy (comparing fst) $ HML.toList env+        ]+\end{code}++\begin{code}+formatMacroSummary :: RegexType -> MacroEnv -> MacroID -> String+formatMacroSummary rty env mid = maybe oops prep $ HML.lookup mid env+  where+    prep :: MacroDescriptor -> String+    prep md = unlines $ concat $ map (fmt md) [minBound..maxBound]++    fmt :: MacroDescriptor -> Col -> [String]+    fmt md c =+        [ printf "%-15s : %s" (present_col c) ini+        ] ++ map ("      "++) lns+      where+        (ini,lns) = case macro_attribute rty mid md c of+          []   -> (,) "" []+          [ln] -> (,) ln []+          lns_ -> (,) "" lns_++    oops = error $ _MacroID mid ++ ": macro not defined in this environment"+\end{code}++\begin{code}+formatMacroSources :: RegexType+                   -> WithCaptures+                   -> MacroEnv+                   -> String+formatMacroSources rty wc env = unlines $+    [ printf "%-20s : %s" (_MacroID mid) $ formatMacroSource rty wc env mid+        | mid <- L.sort $ HML.keys env+        ]+\end{code}++\begin{code}+formatMacroSource :: RegexType+                  -> WithCaptures+                  -> MacroEnv+                  -> MacroID+                  -> String+formatMacroSource rty wc env mid =+    mdRegexSource rty wc env $ fromMaybe oops $ HML.lookup mid env+  where+    oops = error $ "formatMacroSource: not found: " ++ _MacroID mid+\end{code}+++testMacroDescriptors, regexSource+---------------------------------++\begin{code}+testMacroDescriptors :: [MacroDescriptor] -> [TestResult]+testMacroDescriptors = concat . map _md_test_results++regexSource :: RegexType -> WithCaptures -> RegexSource -> String+regexSource rty wc = format_tokens rty wc . scan_re+\end{code}+++Formatting helpers+------------------++\begin{code}+type TableRow = Array Col [String]++data Col+  = C_name+  | C_caps+  | C_regex+  | C_examples+  | C_anti_examples+  | C_fails+  | C_parser+  | C_comment+  deriving (Ix,Bounded,Enum,Ord,Eq,Show)++present_col :: Col -> String+present_col = map tr . drop 2 . show+  where+    tr '_' = '-'+    tr c   = c++macro_table_hdr :: TableRow+macro_table_hdr = listArray (minBound,maxBound)+  [ [present_col c]+    | c<-[minBound..maxBound]+    ]++macro_table_row :: RegexType -> MacroID -> MacroDescriptor -> TableRow+macro_table_row rty mid md =+    listArray (minBound,maxBound) $+      map (macro_attribute rty mid md) [minBound..maxBound]++macro_attribute :: RegexType+                -> MacroID+                -> MacroDescriptor+                -> Col+                -> [String]+macro_attribute rty mid MacroDescriptor{..} c =+    case c of+      C_name          -> [_MacroID mid]+      C_caps          -> [show $ min_captures rty $ scan_re _md_source]+      C_regex         -> [regexSource rty ExclCaptures _md_source]+      C_examples      -> _md_samples+      C_anti_examples -> _md_counter_samples+      C_fails         -> map _TestResult _md_test_results+      C_parser        -> [maybe "-" _FunctionID _md_parser]+      C_comment       -> [_md_description]++format_table :: TableRow -> [TableRow] -> [String]+format_table hdr rows0 = concat+    [ format_row cws hdr'+    , format_row cws dsh+    , concat $ map (format_row cws) rows+    ]+  where+    dsh  = listArray (minBound,maxBound)+              [ [replicate n '-'] | n<-elems cws ]++    hdr' = hdr // [(,) C_regex $ [take n $ concat $ repeat "regex="] ]+      where+        n = min 29 $ cws!C_regex++    cws  = widths $ hdr : rows++    rows = map wrap_row rows0++field_width :: Int+field_width = 40++wrap_row :: TableRow -> TableRow+wrap_row = fmap $ concat . map f+  where+    f, g :: String -> [String]++    f cts = (ini ++ ['\\' | not (null rst)]) : g rst+      where+        (ini,rst) = splitAt (1+field_width) cts++    g ""  = []+    g cts = ('\\' : ini ++ ['\\' | not (null rst)]) : g rst+      where+        (ini,rst) = splitAt field_width cts+++widths :: [TableRow] -> Array Col Int+widths rows = listArray (minBound,maxBound)+  [ maximum $ concat [ map length $ row!c | row<-rows ]+    | c<-[minBound..maxBound]+    ]++format_row :: Array Col Int -> TableRow -> [String]+format_row cw_arr row =+  [ ("|"++) $ L.intercalate "|"+      [ field cw_arr row c i | c<-[minBound..maxBound] ]+    | i <- [0..depth-1]+    ]+  where+    depth = maximum [ length $ row!c | c<-[minBound..maxBound] ]++field :: Array Col Int -> TableRow -> Col -> Int -> String+field cws row c i = ljust (cws!c) $ sel i $ row!c++sel :: Int -> [String] -> String+sel i ss = case drop i ss of+  []  -> ""+  s:_ -> s++ljust :: Int -> String -> String+ljust w s = s ++ replicate n ' '+  where+    n = max 0 $ w - length s++min_captures :: RegexType -> [REToken] -> Int+min_captures rty rets = length+  [ ()+    | REToken{..}<-rets+    , _ret_fixed || (_ret_grouping && rty==TDFA)+    ]+\end{code}+++Formatting tokens+-----------------++\begin{code}+format_tokens :: RegexType -> WithCaptures -> [REToken] -> String+format_tokens rty wc = foldr f ""+  where+    f REToken{..} rst = _ret_prefix ++ bra ++ xket rst+      where+        bra = case _ret_fixed of+          True  -> "("+          False ->+            case (,) _ret_grouping (_ret_capturing && wc==InclCaptures) of+              (False,False) -> ""+              (True ,False) -> if rty==PCRE then "(?:" else "("+              (False,True ) -> "("+              (True ,True ) -> "("++        xket =+          case not _ret_grouping && _ret_capturing && wc==ExclCaptures of+            True  -> delete_ket 0+            False -> id++delete_ket :: Int -> String -> String+delete_ket _ "" = error "delete_ket: end of input"+delete_ket n (c:t) = case c of+  '\\' -> case t of+    ""    -> error "delete_ket: end of input"+    c':t' -> c : c' : delete_ket n t'+  ')'  -> case n of+    0  -> t+    _  -> c : delete_ket (n-1) t+  '('  -> c : delete_ket (n+1) t+  _    -> c : delete_ket  n    t+\end{code}+++scan_re+-------++\begin{code}+scan_re :: RegexSource -> [REToken]+scan_re (RegexSource src0) = loop src0+  where+    loop ""  = []+    loop src =+        case rst of+          '\\':t -> case t of+              ""    -> REToken (ini++['\\'])    False False False : []+              c':t' -> REToken (ini++['\\',c']) False False False : loop t'+          '(' :t -> case t of+            c:':':t'+              | c=='?'  -> REToken  ini False True  False : loop t'+              | c=='}'  -> REToken  ini False False True  : loop t'+              | c==']'  -> REToken  ini False True  True  : loop t'+            _           -> REToken  ini True  True  True  : loop t+          _ -> [REToken src False False False]+      where+        (ini,rst) = break chk src++        chk '\\'  = True+        chk '('   = True+        chk _     = False+\end{code}+++scan_re+-------++\begin{code}+match_tdfa :: String -> MacroEnv -> MacroDescriptor -> Matches String+match_tdfa txt env md = txt TDFA.=~ mdRegexSource TDFA ExclCaptures env md++match_pcre :: String -> MacroEnv -> MacroDescriptor -> Matches String+match_pcre txt env md = txt PCRE.=~ mdRegexSource PCRE ExclCaptures env md+\end{code}+++mdRegexSource+-------------++\begin{code}+mdRegexSource :: RegexType+              -> WithCaptures+              -> MacroEnv+              -> MacroDescriptor+              -> String+mdRegexSource rty wc env md =+    expandMacros' lu $ regexSource rty wc $ _md_source md+  where+    lu  = fmap (regexSource rty wc . _md_source) .+            flip HML.lookup env+\end{code}+++test', test_neg'+----------------++\begin{code}+test' :: (Eq a,Show a)+      => MacroID+      -> RegexType+      -> (Match String->Maybe a)+      -> a+      -> Matches String+      -> [TestResult]+test' mid rty prs x Matches{..} = either (:[]) (const []) $ do+    cs <- case allMatches of+      [cs] -> return cs+      _    -> oops "RE failed to parse"+    mtx <- case matchCapture cs of+      Nothing -> oops $ "RE parse failure: " ++ show cs+      Just c  -> return $ capturedText c+    case mtx == matchesSource of+      True  -> return ()+      False -> oops "RE failed to match the whole text"+    x' <- case prs cs of+      Nothing -> oops "matched text failed to parse"+      Just x' -> return x'+    case x'==x of+      True  -> return ()+      False -> oops "parser failed to yield the expected result"+  where+    oops = Left . test_diagnostic mid False rty matchesSource++test_neg' :: MacroID+          -> RegexType+          -> (Match String->Maybe a)+          -> Matches String+          -> [TestResult]+test_neg' mid rty prs Matches{..} = either id (const []) $ do+    case allMatches of+      [] -> return ()+      cz -> case ms of+          [] -> return ()+          _  -> Left [oops "RE parse succeeded"]+        where+          ms =+            [ ()+              | cs     <- cz+              , Just c <- [matchCapture cs]+              , let t = capturedText c+              , t == matchesSource+              , isJust $ prs cs+              ]++  where+    oops = test_diagnostic mid True rty matchesSource++test_diagnostic :: MacroID+                -> Bool+                -> RegexType+                -> String+                -> String+                -> TestResult+test_diagnostic mid is_neg rty tst msg =+    TestResult $+      printf "%-20s [%s %s] : %s (%s)" mid_s neg_s rty_s msg tst+  where+    mid_s = _MacroID mid+    neg_s = if is_neg then "-ve" else "+ve" :: String+    rty_s = show rty+\end{code}
+ Text/RE/Tools/Grep.lhs view
@@ -0,0 +1,62 @@+\begin{code}+{-# LANGUAGE NoImplicitPrelude          #-}+{-# LANGUAGE RecordWildCards            #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE CPP                        #-}++module Text.RE.Tools.Grep+  ( Line(..)+  , grep+  , grepLines+  , GrepScript+  , grepScript+  , linesMatched+  ) where++import qualified Data.ByteString.Lazy.Char8               as LBS+import           Prelude.Compat+import           Text.Printf+import           Text.RE.Capture+import           Text.RE.IsRegex+import           Text.RE.LineNo+++data Line =+  Line+    { _ln_no      :: LineNo+    , _ln_matches :: Matches LBS.ByteString+    }+  deriving (Show)++grep :: IsRegex re LBS.ByteString => re -> FilePath -> IO ()+grep rex fp = grepLines rex fp >>= putStr . report++grepLines :: IsRegex re LBS.ByteString => re -> FilePath -> IO [Line]+grepLines rex fp =+    grepScript [(rex,mk)] . LBS.lines <$> LBS.readFile fp+  where+    mk i mtchs = Just $ Line i mtchs++type GrepScript re s t = [(re,LineNo -> Matches s -> Maybe t)]++grepScript :: IsRegex re s => GrepScript re s t -> [s] -> [t]+grepScript scr = loop firstLine+  where+    loop _ []       = []+    loop i (ln:lns) = seq i $ choose i ln lns scr++    choose i _  lns []             = loop (succ i) lns+    choose i ln lns ((rex,f):scr') = case f i $ matchMany rex ln of+      Nothing -> choose i ln lns scr'+      Just t  -> t : loop (succ i) lns++report :: [Line] -> String+report = unlines . map fmt . linesMatched+  where+    fmt Line{..} =+      printf "%05d %s" (getLineNo _ln_no) $+          LBS.unpack $ matchesSource _ln_matches++linesMatched :: [Line] -> [Line]+linesMatched = filter $ anyMatches . _ln_matches+\end{code}
+ Text/RE/Tools/Lex.lhs view
@@ -0,0 +1,39 @@+\begin{code}+{-# LANGUAGE NoImplicitPrelude          #-}++module Text.RE.Tools.Lex where++import           Prelude.Compat+import           Text.RE.Capture+import           Text.RE.IsRegex+import           Text.RE.Replace+++alex :: IsRegex re s => [(re,Match s->Maybe t)] -> t -> s -> [t]+alex = alex' matchOnce++alex' :: Replace s+      => (re->s->Match s)+      -> [(re,Match s->Maybe t)]+      -> t+      -> s+      -> [t]+alex' mo al t_err = loop+  where+    loop s = case length_ s == 0 of+      True  -> []+      False -> choose al s++    choose []           _ = [t_err]+    choose ((re,f):al') s = case mb_p of+        Just (s',t) -> t : loop s'+        _           -> choose al' s+      where+        mb_p = do+          cap <- matchCapture mtch+          case captureOffset cap == 0 of+            True  -> (,) (captureSuffix cap) <$> f mtch+            False -> Nothing++        mtch = mo re s+\end{code}
+ Text/RE/Tools/Sed.lhs view
@@ -0,0 +1,55 @@+\begin{code}+{-# LANGUAGE NoImplicitPrelude          #-}+{-# LANGUAGE RecordWildCards            #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.Tools.Sed+  ( SedScript+  , sed+  , sed'+  ) where++import qualified Data.ByteString.Lazy.Char8               as LBS+import           Prelude.Compat+import           Text.RE.Edit+import           Text.RE.LineNo+import           Text.RE.IsRegex+++type SedScript re = Edits IO re LBS.ByteString++sed :: IsRegex re LBS.ByteString+    => SedScript re+    -> FilePath+    -> FilePath+    -> IO ()+sed as i_fp o_fp = do+  lns  <- LBS.lines <$> read_file i_fp+  lns' <- sequence+    [ applyEdits lno as s+        | (lno,s)<-zip [firstLine..] lns+        ]+  write_file o_fp $ LBS.concat lns'++sed' :: (IsRegex re LBS.ByteString,Monad m,Functor m)+     => Edits m re LBS.ByteString+     -> LBS.ByteString+     -> m LBS.ByteString+sed' as lbs = do+  LBS.concat <$> sequence+    [ applyEdits lno as s+        | (lno,s)<-zip [firstLine..] $ LBS.lines lbs+        ]++read_file :: FilePath -> IO LBS.ByteString+read_file "-" = LBS.getContents+read_file fp  = LBS.readFile fp++write_file :: FilePath -> LBS.ByteString ->IO ()+write_file "-" = LBS.putStr+write_file fp  = LBS.writeFile fp+\end{code}
+ changelog view
@@ -0,0 +1,27 @@+-*-change-log-*-++0.2.0.0 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-02-19+  * Split off the tutorial tests and examples into regex-examples,+    leaving just the library in regex++0.1.0.0 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-02-18+  * Cabal file generated from a DRY template+  * Library dependencies minimised, test depndencies moved into+    examples/re-tests+  * A proper static website generated by 're-prep all'+  * README/sidebar Badges are a static record of current release+    with links to a live build-status reporting on HEAD+  * Added !$, !$?, !$$ and !$$? alternatives for looking up captures+    in a Match+  * Text.RE.Parsers now generate Text where they were generating String+  * %nat, %int, %frac and %hex get their new names++0.0.0.2 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-01-30+  * Fix for Windows+  * Remove hsyslog dependency+  * Establish Travis CI, AppVeyor and coveralls.io integrations+  * Fix time parser to use Fixed arithmetic+  * Miscelaneous minor adjustments++0.0.0.1 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-01-26+	* First public release
+ data/access-errors.log view
@@ -0,0 +1,562 @@+192.168.100.200 - - [12/Jan/2016:12:08:36 +0000] "GET / HTTP/1.1" 200 3700 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:12:08:36 +0000] "GET /poweredby.png HTTP/1.1" 200 2811 "http://enterprise:443/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:12:08:36 +0000] "GET /nginx-logo.png HTTP/1.1" 200 368 "http://enterprise:443/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:12:08:36 +0000] "GET /favicon.ico HTTP/1.1" 404 3650 "http://enterprise:443/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:12:17:14 +0000] "GET / HTTP/1.1" 301 184 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:12:23:08 +0000] "\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03\xE8\x9CY\xD9\xB4\x9B[<y\xF5\xB2\x1B\xDCO\x91).\xCEI\x97\x82\xA4\xFA`6\xA2\xC4J2AV\xFF\x00\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:12:23:08 +0000] "\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03\xD5I\x9A\xA3\x10}\x7F\x1A\x7F\x9A#\x05\xB6\xD5\xCD\xEA\x06\x97\x08e7Pv\x92\xF5@I\x10\xCF\x89;c\x00\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:12:23:08 +0000] "\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03\xF2>\xAC\x99\x89|\xFA\x92\x894\xAF\xC5J:[U\xCEm\x97k$\x177y\x03Z]nn\xCD\x1B\x8A\x00\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:12:23:08 +0000] "\x16\x03\x01\x00\x9E\x01\x00\x00\x9A\x03\x028\xE7\x85\xA3b\xA8W\xAC#F\xAA\xE1gl\xF7\xFD6\xA3\xEE\xCD\xAA?\xFA;\xDA\xAA\xDF\x85bBN\x08\x00\x00\x14\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:12:23:08 +0000] "\x16\x03\x01\x00\x9E\x01\x00\x00\x9A\x03\x01~9\x9C\xF3\x0E\xFA8\xCE\xA7\xEA\xA4\x16\xE3\xCAdf\xF5\xAE\x10" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:12:23:46 +0000] "GET / HTTP/1.1" 301 184 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:12:29:04 +0000] "\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03\x89\xED\x0E\xED3\x9B\x1D\xB1\xB6W\x1E\x89D\xB5\xA7\x9A}2\xAC\xE8\x1F&\x17\xFC\xE2\x99\xE80A%!B\x00\x00\x16\xC0+\xC0/\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:12:33:51 +0000] "\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03g:!\x9E\xD6\xD0v\xFD\xDDI\x9A\xD7\xDB\xDC\x09i/CI\xE3\xAB\xBFY~\xB2`\xFF\x15\xC5Z\xE3\xD8\x00\x00\x16\xC0+\xC0/\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:12:34:00 +0000] "\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03\xB4|\xE7\xEEn\x9D\x1B\x00H\xE8\x97(\xD1(!6\xA4\xB0Z\xE8\xCB\x9D1\xD5\x05\xD5\xE9n" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:12:34:02 +0000] "\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03\xB0\xC3\xE7\x0E\x8A\x09\x10FJ\x82\xA5\x84\x8D\xA1z\xF2" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:12:36:54 +0000] "\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03y\xB1C\xEB\xA2\xCE\xB4\xAF\xDA\x1D\xBB]\xA8\x87C\xA4cu\x8B==$\x19\xCAK\x1EB!\xF4\xEEP\xF2\x00\x00\x16\xC0+\xC0/\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:14:12:42 +0000] "\x16\x03\x01\x00\xB3\x01\x00\x00\xAF\x03\x03}\x8E\x9D\xE5X\x07\xE2\xF6\x89Dtn&\xF1\x82\x12;t\x857\x98);k\x90\x82\xD6\x0E~\xCE\xD7\xC0\x00\x00\x16\xC0+\xC0/\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:14:23:51 +0000] "\x16\x03\x01\x00\xB3\x01\x00\x00\xAF\x03\x03\x9D\xCBj\xBF\x01=\x04\xBA7Sv9\x00\x8F\xCE\xDCO\x0F\xDE\xED4\x87\x1A\xD5\x8D\xACX\x99C=9\xBB\x00\x00\x16\xC0+\xC0/\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:14:42:40 +0000] "GET / HTTP/1.1" 502 172 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:43:31 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:44:01 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:44:01 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:44:04 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:44:04 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:44:06 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:44:06 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:44:31 +0000] "GET /favicon.ico HTTP/1.1" 502 172 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:44:32 +0000] "GET / HTTP/1.1" 502 172 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:44:48 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:44:48 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:45:25 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:45:25 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:46:25 +0000] "GET /favicon.ico HTTP/1.1" 502 172 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:09 +0000] "GET / HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/css/bootstrap.min.css HTTP/1.1" 200 21592 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/css/bootstrap-theme.min.css HTTP/1.1" 200 2004 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/js/underscore.string.min.js HTTP/1.1" 200 3590 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/css/screen.css HTTP/1.1" 200 668 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/css/yamm.css HTTP/1.1" 200 459 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/js/underscore.js HTTP/1.1" 200 6001 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/js/bootstrap.min.js HTTP/1.1" 200 9180 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/js/jquery.cookie.js HTTP/1.1" 200 1460 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/js/login.js HTTP/1.1" 200 196 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/js/base.js HTTP/1.1" 200 742 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/js/navbar.js HTTP/1.1" 200 295 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:03 +0000] "POST /login HTTP/1.1" 302 0 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /dashboard HTTP/1.1" 200 4902 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/graph.css HTTP/1.1" 200 1077 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/dashboard.css HTTP/1.1" 200 70 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/detail.css HTTP/1.1" 200 558 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/legend.css HTTP/1.1" 200 533 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/jquery.easy-pie-chart.css HTTP/1.1" 200 221 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/morris.css HTTP/1.1" 200 276 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/extensions.css HTTP/1.1" 200 1134 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/datatables/dataTables.min.css HTTP/1.1" 200 2480 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/datatables/dataTables.bootstrap.css HTTP/1.1" 200 1929 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/font-awesome.css HTTP/1.1" 200 5631 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/awesome-bootstrap-checkbox.css HTTP/1.1" 200 1264 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/checkbox-build.css HTTP/1.1" 200 1072 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/select2/select2.css HTTP/1.1" 200 3959 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/hermes/paginator.js HTTP/1.1" 200 407 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/atlas.js HTTP/1.1" 200 264 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/select2/select2-bootstrap.css HTTP/1.1" 200 547 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/jwplayer.js HTTP/1.1" 200 22875 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/hermes/all-videos.js HTTP/1.1" 200 308 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/noty.min.js HTTP/1.1" 200 8629 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/moment.min.js HTTP/1.1" 200 12558 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/readable-range.js HTTP/1.1" 200 810 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/reflections.js HTTP/1.1" 200 3788 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/select2/select2.min.js HTTP/1.1" 200 21628 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/datatables/dataTables.bootstrap.js HTTP/1.1" 200 1807 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/datatables/dataTables.min.js HTTP/1.1" 200 30733 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/hourglass.js HTTP/1.1" 200 1150 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/rickshaw/rickshaw.min.js HTTP/1.1" 200 18053 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/jquery.easypiechart.min.js HTTP/1.1" 200 1715 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/graph.js HTTP/1.1" 200 2091 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/d3/d3.v2.js HTTP/1.1" 200 65208 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/hermes/search-video-by-org.js HTTP/1.1" 200 488 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/typeahead.min.js HTTP/1.1" 200 1977 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/hermes/search-video.js HTTP/1.1" 200 263 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/json.js HTTP/1.1" 200 213 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/reflections/search-reflection.js HTTP/1.1" 200 262 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/reflections/search-reflections-by-org-name.js HTTP/1.1" 200 273 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/reflections/search-reflections-by-uid.js HTTP/1.1" 200 264 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/raphael.min.js HTTP/1.1" 200 36788 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/morris.min.js HTTP/1.1" 200 11891 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /purs/app.js HTTP/1.1" 200 41570 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/fonts/glyphicons-halflings-regular.woff HTTP/1.1" 200 16448 "https://enterprise:3031/static/css/bootstrap.min.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/favicon.ico HTTP/1.1" 200 1150 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /purs/app.js HTTP/1.1" 200 41570 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/datatables/sort_both.png HTTP/1.1" 200 1136 "https://enterprise:3031/static/css/datatables/dataTables.bootstrap.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /chronos/atlas/versions HTTP/1.1" 200 12332 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/region/RGN_au.png HTTP/1.1" 200 1466 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/clock.png HTTP/1.1" 200 1086 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/harddisk.png HTTP/1.1" 200 1263 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/cpu.png HTTP/1.1" 200 1076 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/memory.png HTTP/1.1" 200 951 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/notepad.png HTTP/1.1" 200 1499 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/database.png HTTP/1.1" 200 1390 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/locked.png HTTP/1.1" 200 1313 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/region/RGN_us.png HTTP/1.1" 200 1508 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/region/RGN_eu.png HTTP/1.1" 200 1245 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/region/globe.png HTTP/1.1" 200 1639 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/region/RGN_uk.png HTTP/1.1" 200 1484 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:06 +0000] "POST /chronos/reflections/datatables HTTP/1.1" 200 21324 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:07 +0000] "GET /static/img/datatables/sort_asc.png HTTP/1.1" 200 1118 "https://enterprise:3031/static/css/datatables/dataTables.bootstrap.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:07 +0000] "GET /static/fonts/fontawesome-webfont.woff?v=4.1.0 HTTP/1.1" 200 65452 "https://enterprise:3031/static/css/font-awesome.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:07 +0000] "GET /static/css/select2/select2.png HTTP/1.1" 200 613 "https://enterprise:3031/static/css/select2/select2.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:05:04 +0000] "GET /chronos/atlas/versions HTTP/1.1" 200 12346 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /dashboard HTTP/1.1" 200 4902 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/bootstrap.min.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/bootstrap-theme.min.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/screen.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/yamm.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/font-awesome.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/checkbox-build.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/awesome-bootstrap-checkbox.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/select2/select2.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/underscore.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/select2/select2-bootstrap.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/underscore.string.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/datatables/dataTables.bootstrap.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/datatables/dataTables.min.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/jwplayer.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/jquery.cookie.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/base.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/hermes/paginator.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/navbar.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/datatables/dataTables.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/bootstrap.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/datatables/dataTables.bootstrap.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/reflections/search-reflection.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/hermes/search-video-by-org.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/raphael.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/reflections/search-reflections-by-org-name.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/reflections/search-reflections-by-uid.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/morris.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/legend.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/detail.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/jquery.easy-pie-chart.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/graph.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/dashboard.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/morris.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/extensions.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/noty.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/hermes/all-videos.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/atlas.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/moment.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/readable-range.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /purs/app.js HTTP/1.1" 200 41570 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/select2/select2.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/reflections.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/hourglass.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/jquery.easypiechart.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/rickshaw/rickshaw.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/json.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/d3/d3.v2.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/typeahead.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/hermes/search-video.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/graph.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/hermes/paginator.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/datatables/dataTables.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/datatables/dataTables.bootstrap.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /purs/app.js HTTP/1.1" 200 41570 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/img/datatables/sort_both.png HTTP/1.1" 304 0 "https://enterprise:3031/static/css/datatables/dataTables.bootstrap.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /chronos/atlas/versions HTTP/1.1" 200 12332 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/img/region/RGN_au.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/img/clock.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/img/harddisk.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/img/memory.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/img/cpu.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/img/database.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/img/notepad.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/img/locked.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/img/region/RGN_us.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:16 +0000] "GET /static/img/region/RGN_eu.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:16 +0000] "GET /static/img/region/globe.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:16 +0000] "GET /static/img/region/RGN_uk.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:18 +0000] "POST /chronos/reflections/datatables HTTP/1.1" 200 22447 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:18 +0000] "GET /static/img/datatables/sort_asc.png HTTP/1.1" 304 0 "https://enterprise:3031/static/css/datatables/dataTables.bootstrap.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:18 +0000] "GET /static/css/select2/select2.png HTTP/1.1" 304 0 "https://enterprise:3031/static/css/select2/select2.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:19 +0000] "GET /dashboard HTTP/1.1" 200 4902 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:19 +0000] "GET /purs/app.js HTTP/1.1" 200 41570 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:20 +0000] "GET /purs/app.js HTTP/1.1" 200 41570 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:20 +0000] "GET /chronos/atlas/versions HTTP/1.1" 200 12332 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:24 +0000] "POST /chronos/reflections/datatables HTTP/1.1" 200 22815 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:07:20 +0000] "GET /chronos/atlas/versions HTTP/1.1" 200 12346 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:08:20 +0000] "GET /chronos/atlas/versions HTTP/1.1" 200 12346 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:09:25 +0000] "GET /chronos/atlas/versions HTTP/1.1" 200 12346 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:10:20 +0000] "GET /chronos/atlas/versions HTTP/1.1" 200 12346 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /dashboard HTTP/1.1" 200 4902 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/bootstrap-theme.min.css HTTP/1.1" 200 2004 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/bootstrap.min.css HTTP/1.1" 200 21592 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/graph.css HTTP/1.1" 200 1077 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/detail.css HTTP/1.1" 200 558 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/extensions.css HTTP/1.1" 200 1134 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/dashboard.css HTTP/1.1" 200 70 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/legend.css HTTP/1.1" 200 533 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/screen.css HTTP/1.1" 200 668 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/jquery.easy-pie-chart.css HTTP/1.1" 200 221 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/morris.css HTTP/1.1" 200 276 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/awesome-bootstrap-checkbox.css HTTP/1.1" 200 1264 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/yamm.css HTTP/1.1" 200 459 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/checkbox-build.css HTTP/1.1" 200 1072 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/font-awesome.css HTTP/1.1" 200 5625 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/datatables/dataTables.bootstrap.css HTTP/1.1" 200 1929 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/datatables/dataTables.min.css HTTP/1.1" 200 2480 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/underscore.js HTTP/1.1" 200 5995 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/select2/select2-bootstrap.css HTTP/1.1" 200 547 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/select2/select2.css HTTP/1.1" 200 3953 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/underscore.string.min.js HTTP/1.1" 200 3590 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/jwplayer.js HTTP/1.1" 200 22875 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/bootstrap.min.js HTTP/1.1" 200 9180 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/base.js HTTP/1.1" 200 742 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/jquery.cookie.js HTTP/1.1" 200 1460 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/noty.min.js HTTP/1.1" 200 8629 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/hermes/paginator.js HTTP/1.1" 200 407 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/navbar.js HTTP/1.1" 200 295 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/atlas.js HTTP/1.1" 200 264 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/moment.min.js HTTP/1.1" 200 12558 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/readable-range.js HTTP/1.1" 200 810 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/hermes/all-videos.js HTTP/1.1" 200 308 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/datatables/dataTables.bootstrap.js HTTP/1.1" 200 1807 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/datatables/dataTables.min.js HTTP/1.1" 200 30702 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/select2/select2.min.js HTTP/1.1" 200 21628 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/reflections.js HTTP/1.1" 200 3788 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/hourglass.js HTTP/1.1" 200 1150 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/json.js HTTP/1.1" 200 213 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/rickshaw/rickshaw.min.js HTTP/1.1" 200 18053 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/jquery.easypiechart.min.js HTTP/1.1" 200 1715 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/typeahead.min.js HTTP/1.1" 200 1977 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/hermes/search-video.js HTTP/1.1" 200 263 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/graph.js HTTP/1.1" 200 2091 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/d3/d3.v2.js HTTP/1.1" 200 65208 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/hermes/search-video-by-org.js HTTP/1.1" 200 488 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/reflections/search-reflections-by-uid.js HTTP/1.1" 200 264 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/reflections/search-reflection.js HTTP/1.1" 200 262 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/reflections/search-reflections-by-org-name.js HTTP/1.1" 200 273 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/morris.min.js HTTP/1.1" 200 11891 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/img/favicon.ico HTTP/1.1" 200 1150 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/raphael.min.js HTTP/1.1" 200 36788 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /purs/app.js HTTP/1.1" 200 41570 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/fonts/glyphicons-halflings-regular.woff HTTP/1.1" 200 16448 "https://enterprise/static/css/bootstrap.min.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/hermes/paginator.js HTTP/1.1" 304 0 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/datatables/dataTables.min.js HTTP/1.1" 304 0 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/datatables/dataTables.bootstrap.js HTTP/1.1" 304 0 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /purs/app.js HTTP/1.1" 200 41570 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/img/datatables/sort_both.png HTTP/1.1" 200 1136 "https://enterprise/static/css/datatables/dataTables.bootstrap.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /chronos/atlas/versions HTTP/1.1" 200 12332 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/clock.png HTTP/1.1" 200 1086 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/region/RGN_au.png HTTP/1.1" 200 1466 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/memory.png HTTP/1.1" 200 951 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/harddisk.png HTTP/1.1" 200 1263 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/cpu.png HTTP/1.1" 200 1076 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/database.png HTTP/1.1" 200 1390 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/notepad.png HTTP/1.1" 200 1499 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/locked.png HTTP/1.1" 200 1313 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/region/RGN_eu.png HTTP/1.1" 200 1245 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/region/RGN_us.png HTTP/1.1" 200 1508 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/region/globe.png HTTP/1.1" 200 1639 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/region/RGN_uk.png HTTP/1.1" 200 1484 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:09 +0000] "POST /chronos/reflections/datatables HTTP/1.1" 200 22882 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:09 +0000] "GET /static/img/datatables/sort_asc.png HTTP/1.1" 200 1118 "https://enterprise/static/css/datatables/dataTables.bootstrap.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:09 +0000] "GET /static/fonts/fontawesome-webfont.woff?v=4.1.0 HTTP/1.1" 200 65452 "https://enterprise/static/css/font-awesome.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:09 +0000] "GET /static/css/select2/select2.png HTTP/1.1" 200 613 "https://enterprise/static/css/select2/select2.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:21 +0000] "GET /dashboard HTTP/1.1" 301 184 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:21 +0000] "GET /dashboard HTTP/1.1" 200 4908 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:22 +0000] "GET /purs/app.js HTTP/1.1" 200 41570 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:22 +0000] "GET /purs/app.js HTTP/1.1" 200 41570 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:22 +0000] "GET /chronos/atlas/versions HTTP/1.1" 200 12332 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:24 +0000] "POST /chronos/reflections/datatables HTTP/1.1" 200 23395 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:13:11 +0000] "GET / HTTP/1.1" 200 3700 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:13:11 +0000] "GET /nginx-logo.png HTTP/1.1" 200 368 "http://enterprise:81/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:13:11 +0000] "GET /poweredby.png HTTP/1.1" 200 2811 "http://enterprise:81/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:13:11 +0000] "GET /favicon.ico HTTP/1.1" 404 3650 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:13:11 +0000] "GET /favicon.ico HTTP/1.1" 404 3650 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:14:23 +0000] "GET / HTTP/1.1" 301 184 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:14:23 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:14:23 +0000] "GET /static/js/login.js HTTP/1.1" 200 196 "https://enterprise/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:14:23 +0000] "GET /favicon.ico HTTP/1.1" 404 143 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:14:23 +0000] "GET /favicon.ico HTTP/1.1" 404 143 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET / HTTP/1.1" 301 184 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/css/bootstrap.min.css HTTP/1.1" 200 21592 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/css/bootstrap-theme.min.css HTTP/1.1" 200 2004 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/js/bootstrap.min.js HTTP/1.1" 200 9180 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/css/yamm.css HTTP/1.1" 200 459 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/css/screen.css HTTP/1.1" 200 668 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/js/jquery.cookie.js HTTP/1.1" 200 1460 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/js/underscore.js HTTP/1.1" 200 5995 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/js/base.js HTTP/1.1" 200 742 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/js/login.js HTTP/1.1" 200 196 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/js/navbar.js HTTP/1.1" 200 295 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/js/underscore.string.min.js HTTP/1.1" 200 3590 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /favicon.ico HTTP/1.1" 404 143 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /favicon.ico HTTP/1.1" 404 143 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:18:14 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:18:32 +0000] "GET / HTTP/1.1" 301 184 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:18:32 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:18:32 +0000] "GET /favicon.ico HTTP/1.1" 404 143 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:19:42 +0000] "GET / HTTP/1.1" 502 574 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:19:53 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:20:15 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:23:50 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:32:29 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:33:05 +0000] "GET / HTTP/1.1" 502 574 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:33:25 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:33:59 +0000] "GET / HTTP/1.1" 502 574 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:34:08 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:35:14 +0000] "GET / HTTP/1.1" 502 574 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:39:55 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+192.168.100.200 - - [12/Jan/2016:16:09:32 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03\x18\x07\xE53\x18\x91\xF4\x8B\xB9\xDB\xDF\x83H\xA9\xD0yL~\xC6\x06t\x8A\xCF\xD7\xD4{\x103O\xF6\xC2\xD3 $\xB9Kr\xF0\xD6Z\x10Pe\xFEwq?|\xCD\x80\x0F>g\xDB\xBB\xAB\xA2)8\xD1\xB6/\xD10\xE3\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:16:09:32 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03\x93\x94\xD0\xD0\xEF\xBDG`l8\xA2\x93A\x8D\xF8~\x83.o\xB24G\xDEoJ\x9D\xBC^\xC6WT" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:16:09:32 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03[\x1B\xB26\xE1\xF8\x17\x5C\x92\xE6\x89\x908\x89\xAD\xBD\x835\xA2\xC1\x9D\xE2\xC6Y \x22\x97\x92\xE2\x8Fa\xFD $\xB9Kr\xF0\xD6Z\x10Pe\xFEwq?|\xCD\x80\x0F>g\xDB\xBB\xAB\xA2)8\xD1\xB6/\xD10\xE3\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:16:09:32 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03d8\xF2\x90;P\xC4\xB0\xAB\xBB\xC2V\xF2]2dw4E\xB9\xC3\xC01\xDD\xD4\xDF\x8A\xEB\x8F\x80O\x99 $\xB9Kr\xF0\xD6Z\x10Pe\xFEwq?|\xCD\x80\x0F>g\xDB\xBB\xAB\xA2)8\xD1\xB6/\xD10\xE3\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:16:09:32 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03\x04\xC3\xA3R\x8B>\xCBf\xB2'L\x7F\x15\x1D\x0B\x8A\xE2\xD4%\x10R*sY\xB6\x04S\xEC\x9B\xC0lb $\xB9Kr\xF0\xD6Z\x10Pe\xFEwq?|\xCD\x80\x0F>g\xDB\xBB\xAB\xA2)8\xD1\xB6/\xD10\xE3\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:16:09:32 +0000] "\x16\x03\x01\x00\xAB\x01\x00\x00\xA7\x03\x02kS\x02o\x8A\xCA\x91hN\xBC\xBE\x0B\xBFg\xF5\xE9`\x89k\xF44n\xE9\xCD\xA1\x87\x00\xA6\xE0\x11K\xB4\x00\x00\x14\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:16:09:32 +0000] "\x16\x03\x01\x00\xAB\x01\x00\x00\xA7\x03\x01\x9A\xCF\xEF\xDC\x02F6\x8C\xF6\xE0\xF5\xE3\x84W\x96" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:16:26:35 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:16:29:30 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:16:29:44 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:16:31:59 +0000] "GET / HTTP/1.1" 502 574 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:16:32:19 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+192.168.100.200 - - [10/Mar/2016:15:47:52 +0000] "GET / HTTP/1.1" 403 570 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:15:47:52 +0000] "GET /favicon.ico HTTP/1.1" 404 570 "http://enterprise:4080/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:15:49:01 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 403 570 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:15:50:34 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 200 5876892 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:15:55:10 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 403 570 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:15:55:10 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 403 570 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:16:05:24 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 200 5876892 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:16:09:43 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 206 1 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:16:09:43 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 206 5874255 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:16:14:42 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 200 5876892 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:16:14:52 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 206 1 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:16:14:52 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 206 5874255 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:16:16:38 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 200 5876892 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [10/Mar/2016:16:16:54 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 200 5876892 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [10/Mar/2016:16:41:17 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 200 5876892 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [10/Mar/2016:16:52:18 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 200 5876892 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+127.0.0.1 - - [10/Mar/2016:17:42:28 +0000] "POST / HTTP/1.1" 403 168 "-" "curl/7.29.0" "-"+192.168.100.200 - - [10/Mar/2016:17:48:10 +0000] "GET /www/2016-03-10/17-47-35.csv HTTP/1.1" 404 570 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:17:48:10 +0000] "GET /favicon.ico HTTP/1.1" 404 570 "http://enterprise:4080/www/2016-03-10/17-47-35.csv" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:17:48:28 +0000] "GET /2016-03-10/17-47-35.csv HTTP/1.1" 200 5876894 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:18:10:00 +0000] "GET /2016-03-10/18-09-27.csv HTTP/1.1" 200 5876894 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:18:10:08 +0000] "GET /2016-03-10/18-09-27.csv HTTP/1.1" 200 5876894 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/601.4.4 (KHTML, like Gecko) Version/9.0.3 Safari/601.4.4" "-"+192.168.100.200 - - [10/Mar/2016:18:10:40 +0000] "GET /2016-03-10/18-09-27.csv HTTP/1.1" 200 5876894 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.108.220 - - [24/Mar/2016:08:30:45 +0000] "GET /untitled.svg HTTP/1.1" 404 570 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" "-"+192.168.108.220 - - [24/Mar/2016:08:30:45 +0000] "GET /favicon.ico HTTP/1.1" 404 570 "http://enterprise:4080/untitled.svg" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" "-"+192.168.108.220 - - [24/Mar/2016:08:31:16 +0000] "GET /Untitled.svg HTTP/1.1" 200 1484 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" "-"+192.168.108.220 - - [25/Apr/2016:11:21:42 +0100] "GET /2016-04-25-102102-qryrevbdpv$wg1nzbr6u/01/eu/eros-partner/2016-03,2016-04=all=monthly.csv HTTP/1.1" 404 570 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36" "-"+192.168.108.220 - - [25/Apr/2016:11:21:42 +0100] "GET /favicon.ico HTTP/1.1" 404 570 "http://enterprise:4080/2016-04-25-102102-qryrevbdpv$wg1nzbr6u/01/eu/eros-partner/2016-03,2016-04=all=monthly.csv" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36" "-"+127.0.0.1 - - [09/May/2016:16:37:55 +0100] "GET /aphrodite/2016-05-09-153751-01-uxgadcudzsk3vghkrnct HTTP/1.1" 404 168 "-" "-" "-"+127.0.0.1 - - [09/May/2016:17:16:08 +0100] "GET /aphrodite/2016-05-09-161604-01-uxoz2zb0dg10l1xhmgim/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1" 404 168 "-" "-" "-"+127.0.0.1 - - [09/May/2016:17:26:17 +0100] "GET /aphrodite/2016-05-09-162613-01-0sci1rt2qkfnb+rppojk/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1" 404 168 "-" "-" "-"+192.168.100.200 - - [09/May/2016:17:36:15 +0100] "GET /aphrodite/2016-05-09-163545-01-ipam4ea$+ergir8ca6y4/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1" 200 107 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36" "-"+192.168.100.240 - - [09/May/2016:17:53:46 +0100] "GET /aphrodite/2016-05-09-165048-01-+7t+mjmflsgyru98wb4q/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1" 200 107 "-" "Wget/1.14 (linux-gnu)" "-"+192.168.100.240 - - [09/May/2016:17:54:24 +0100] "GET /aphrodite/2016-05-09-165420-01-xy$ocodamcst+$fmnmdf/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1" 200 107 "-" "-" "-"+192.168.100.240 - - [09/May/2016:18:02:49 +0100] "GET /aphrodite/2016-05-09-170245-01-6ekoffxc3w1uejleq92o/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1" 200 107 "-" "-" "-"+192.168.100.240 - - [09/May/2016:18:03:29 +0100] "GET /aphrodite/2016-05-09-170326-01-iztthfuj3jmrspt4j1ex/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1" 200 107 "-" "-" "-"+192.168.108.240 - - [10/May/2016:09:44:23 +0100] "GET /aphrodite/2016-05-10-084420-01-n0mxsllyzjgdu3j3a5sz/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1" 200 107 "-" "-" "-"+192.168.108.240 - - [10/May/2016:10:58:27 +0100] "GET /aphrodite/2016-05-10-095822-01-9h150ct4wu9eds1o8yte/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1" 200 107 "-" "-" "-"+127.0.0.1 - - [11/May/2016:08:16:44 +0100] "GET /aphrodite/2016-05-11-071048-01-itf2kjrvtlxbbfd2msbs/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1" 200 107 "-" "Wget/1.14 (linux-gnu)" "-"+Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.+2016/11/30 10:19:04 [emerg] 1918#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/11/30 18:12:12 [emerg] 1919#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/01 15:42:55 [emerg] 1913#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/02 10:05:17 [emerg] 1906#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/02 20:18:52 [emerg] 1914#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/04 17:17:27 [emerg] 1921#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/04 17:47:00 [emerg] 1913#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/04 18:19:11 [emerg] 1883#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/04 18:29:31 [emerg] 1878#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/05 09:52:42 [emerg] 1907#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/05 11:04:54 [emerg] 1883#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/06 09:42:50 [emerg] 1885#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/06 13:54:02 [emerg] 1881#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/06 19:11:38 [emerg] 1886#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/07 13:02:09 [emerg] 1885#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/07 19:25:29 [emerg] 1898#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/07 19:53:57 [emerg] 6923#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/13 10:05:29 [emerg] 1879#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/13 18:30:32 [emerg] 1888#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/13 18:39:07 [emerg] 1882#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/13 18:52:06 [emerg] 1893#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/15 03:36:59 [emerg] 1879#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/21 11:53:35 [emerg] 1378#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)
+ data/access.log view
@@ -0,0 +1,538 @@+192.168.100.200 - - [12/Jan/2016:12:08:36 +0000] "GET / HTTP/1.1" 200 3700 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:12:08:36 +0000] "GET /poweredby.png HTTP/1.1" 200 2811 "http://enterprise:443/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:12:08:36 +0000] "GET /nginx-logo.png HTTP/1.1" 200 368 "http://enterprise:443/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:12:08:36 +0000] "GET /favicon.ico HTTP/1.1" 404 3650 "http://enterprise:443/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:12:17:14 +0000] "GET / HTTP/1.1" 301 184 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:12:23:08 +0000] "\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03\xE8\x9CY\xD9\xB4\x9B[<y\xF5\xB2\x1B\xDCO\x91).\xCEI\x97\x82\xA4\xFA`6\xA2\xC4J2AV\xFF\x00\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:12:23:08 +0000] "\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03\xD5I\x9A\xA3\x10}\x7F\x1A\x7F\x9A#\x05\xB6\xD5\xCD\xEA\x06\x97\x08e7Pv\x92\xF5@I\x10\xCF\x89;c\x00\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:12:23:08 +0000] "\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03\xF2>\xAC\x99\x89|\xFA\x92\x894\xAF\xC5J:[U\xCEm\x97k$\x177y\x03Z]nn\xCD\x1B\x8A\x00\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:12:23:08 +0000] "\x16\x03\x01\x00\x9E\x01\x00\x00\x9A\x03\x028\xE7\x85\xA3b\xA8W\xAC#F\xAA\xE1gl\xF7\xFD6\xA3\xEE\xCD\xAA?\xFA;\xDA\xAA\xDF\x85bBN\x08\x00\x00\x14\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:12:23:08 +0000] "\x16\x03\x01\x00\x9E\x01\x00\x00\x9A\x03\x01~9\x9C\xF3\x0E\xFA8\xCE\xA7\xEA\xA4\x16\xE3\xCAdf\xF5\xAE\x10" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:12:23:46 +0000] "GET / HTTP/1.1" 301 184 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:12:29:04 +0000] "\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03\x89\xED\x0E\xED3\x9B\x1D\xB1\xB6W\x1E\x89D\xB5\xA7\x9A}2\xAC\xE8\x1F&\x17\xFC\xE2\x99\xE80A%!B\x00\x00\x16\xC0+\xC0/\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:12:33:51 +0000] "\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03g:!\x9E\xD6\xD0v\xFD\xDDI\x9A\xD7\xDB\xDC\x09i/CI\xE3\xAB\xBFY~\xB2`\xFF\x15\xC5Z\xE3\xD8\x00\x00\x16\xC0+\xC0/\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:12:34:00 +0000] "\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03\xB4|\xE7\xEEn\x9D\x1B\x00H\xE8\x97(\xD1(!6\xA4\xB0Z\xE8\xCB\x9D1\xD5\x05\xD5\xE9n" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:12:34:02 +0000] "\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03\xB0\xC3\xE7\x0E\x8A\x09\x10FJ\x82\xA5\x84\x8D\xA1z\xF2" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:12:36:54 +0000] "\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03y\xB1C\xEB\xA2\xCE\xB4\xAF\xDA\x1D\xBB]\xA8\x87C\xA4cu\x8B==$\x19\xCAK\x1EB!\xF4\xEEP\xF2\x00\x00\x16\xC0+\xC0/\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:14:12:42 +0000] "\x16\x03\x01\x00\xB3\x01\x00\x00\xAF\x03\x03}\x8E\x9D\xE5X\x07\xE2\xF6\x89Dtn&\xF1\x82\x12;t\x857\x98);k\x90\x82\xD6\x0E~\xCE\xD7\xC0\x00\x00\x16\xC0+\xC0/\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:14:23:51 +0000] "\x16\x03\x01\x00\xB3\x01\x00\x00\xAF\x03\x03\x9D\xCBj\xBF\x01=\x04\xBA7Sv9\x00\x8F\xCE\xDCO\x0F\xDE\xED4\x87\x1A\xD5\x8D\xACX\x99C=9\xBB\x00\x00\x16\xC0+\xC0/\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:14:42:40 +0000] "GET / HTTP/1.1" 502 172 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:43:31 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:44:01 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:44:01 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:44:04 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:44:04 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:44:06 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:44:06 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:44:31 +0000] "GET /favicon.ico HTTP/1.1" 502 172 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:44:32 +0000] "GET / HTTP/1.1" 502 172 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:44:48 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:44:48 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:45:25 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:45:25 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:14:46:25 +0000] "GET /favicon.ico HTTP/1.1" 502 172 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:09 +0000] "GET / HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/css/bootstrap.min.css HTTP/1.1" 200 21592 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/css/bootstrap-theme.min.css HTTP/1.1" 200 2004 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/js/underscore.string.min.js HTTP/1.1" 200 3590 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/css/screen.css HTTP/1.1" 200 668 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/css/yamm.css HTTP/1.1" 200 459 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/js/underscore.js HTTP/1.1" 200 6001 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/js/bootstrap.min.js HTTP/1.1" 200 9180 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/js/jquery.cookie.js HTTP/1.1" 200 1460 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/js/login.js HTTP/1.1" 200 196 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/js/base.js HTTP/1.1" 200 742 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:02:55 +0000] "GET /static/js/navbar.js HTTP/1.1" 200 295 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:03 +0000] "POST /login HTTP/1.1" 302 0 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /dashboard HTTP/1.1" 200 4902 "https://enterprise:3031/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/graph.css HTTP/1.1" 200 1077 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/dashboard.css HTTP/1.1" 200 70 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/detail.css HTTP/1.1" 200 558 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/legend.css HTTP/1.1" 200 533 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/jquery.easy-pie-chart.css HTTP/1.1" 200 221 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/morris.css HTTP/1.1" 200 276 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/extensions.css HTTP/1.1" 200 1134 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/datatables/dataTables.min.css HTTP/1.1" 200 2480 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/datatables/dataTables.bootstrap.css HTTP/1.1" 200 1929 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/font-awesome.css HTTP/1.1" 200 5631 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/awesome-bootstrap-checkbox.css HTTP/1.1" 200 1264 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/checkbox-build.css HTTP/1.1" 200 1072 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/select2/select2.css HTTP/1.1" 200 3959 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/hermes/paginator.js HTTP/1.1" 200 407 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/atlas.js HTTP/1.1" 200 264 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/css/select2/select2-bootstrap.css HTTP/1.1" 200 547 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/jwplayer.js HTTP/1.1" 200 22875 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/hermes/all-videos.js HTTP/1.1" 200 308 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/noty.min.js HTTP/1.1" 200 8629 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/moment.min.js HTTP/1.1" 200 12558 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/readable-range.js HTTP/1.1" 200 810 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/reflections.js HTTP/1.1" 200 3788 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/select2/select2.min.js HTTP/1.1" 200 21628 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/datatables/dataTables.bootstrap.js HTTP/1.1" 200 1807 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/datatables/dataTables.min.js HTTP/1.1" 200 30733 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/hourglass.js HTTP/1.1" 200 1150 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/rickshaw/rickshaw.min.js HTTP/1.1" 200 18053 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/jquery.easypiechart.min.js HTTP/1.1" 200 1715 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/graph.js HTTP/1.1" 200 2091 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/d3/d3.v2.js HTTP/1.1" 200 65208 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/hermes/search-video-by-org.js HTTP/1.1" 200 488 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/typeahead.min.js HTTP/1.1" 200 1977 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/hermes/search-video.js HTTP/1.1" 200 263 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/json.js HTTP/1.1" 200 213 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/reflections/search-reflection.js HTTP/1.1" 200 262 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/reflections/search-reflections-by-org-name.js HTTP/1.1" 200 273 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/reflections/search-reflections-by-uid.js HTTP/1.1" 200 264 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/raphael.min.js HTTP/1.1" 200 36788 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/js/morris.min.js HTTP/1.1" 200 11891 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /purs/app.js HTTP/1.1" 200 41570 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/fonts/glyphicons-halflings-regular.woff HTTP/1.1" 200 16448 "https://enterprise:3031/static/css/bootstrap.min.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/favicon.ico HTTP/1.1" 200 1150 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /purs/app.js HTTP/1.1" 200 41570 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/datatables/sort_both.png HTTP/1.1" 200 1136 "https://enterprise:3031/static/css/datatables/dataTables.bootstrap.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /chronos/atlas/versions HTTP/1.1" 200 12332 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/region/RGN_au.png HTTP/1.1" 200 1466 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/clock.png HTTP/1.1" 200 1086 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/harddisk.png HTTP/1.1" 200 1263 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/cpu.png HTTP/1.1" 200 1076 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/memory.png HTTP/1.1" 200 951 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/notepad.png HTTP/1.1" 200 1499 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/database.png HTTP/1.1" 200 1390 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/locked.png HTTP/1.1" 200 1313 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/region/RGN_us.png HTTP/1.1" 200 1508 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/region/RGN_eu.png HTTP/1.1" 200 1245 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/region/globe.png HTTP/1.1" 200 1639 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:04 +0000] "GET /static/img/region/RGN_uk.png HTTP/1.1" 200 1484 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:06 +0000] "POST /chronos/reflections/datatables HTTP/1.1" 200 21324 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:07 +0000] "GET /static/img/datatables/sort_asc.png HTTP/1.1" 200 1118 "https://enterprise:3031/static/css/datatables/dataTables.bootstrap.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:07 +0000] "GET /static/fonts/fontawesome-webfont.woff?v=4.1.0 HTTP/1.1" 200 65452 "https://enterprise:3031/static/css/font-awesome.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:04:07 +0000] "GET /static/css/select2/select2.png HTTP/1.1" 200 613 "https://enterprise:3031/static/css/select2/select2.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:05:04 +0000] "GET /chronos/atlas/versions HTTP/1.1" 200 12346 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /dashboard HTTP/1.1" 200 4902 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/bootstrap.min.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/bootstrap-theme.min.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/screen.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/yamm.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/font-awesome.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/checkbox-build.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/awesome-bootstrap-checkbox.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/select2/select2.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/underscore.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/select2/select2-bootstrap.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/underscore.string.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/datatables/dataTables.bootstrap.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/datatables/dataTables.min.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/jwplayer.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/jquery.cookie.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/base.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/hermes/paginator.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/navbar.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/datatables/dataTables.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/bootstrap.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/datatables/dataTables.bootstrap.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/reflections/search-reflection.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/hermes/search-video-by-org.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/raphael.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/reflections/search-reflections-by-org-name.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/reflections/search-reflections-by-uid.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/morris.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/legend.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/detail.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/jquery.easy-pie-chart.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/graph.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/dashboard.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/morris.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/css/extensions.css HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/noty.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/hermes/all-videos.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/atlas.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/moment.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/readable-range.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /purs/app.js HTTP/1.1" 200 41570 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/select2/select2.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/reflections.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/hourglass.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/jquery.easypiechart.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/rickshaw/rickshaw.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/json.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/d3/d3.v2.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/typeahead.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/hermes/search-video.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/graph.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/hermes/paginator.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/datatables/dataTables.min.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/js/datatables/dataTables.bootstrap.js HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /purs/app.js HTTP/1.1" 200 41570 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/img/datatables/sort_both.png HTTP/1.1" 304 0 "https://enterprise:3031/static/css/datatables/dataTables.bootstrap.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /chronos/atlas/versions HTTP/1.1" 200 12332 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/img/region/RGN_au.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/img/clock.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/img/harddisk.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/img/memory.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/img/cpu.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/img/database.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/img/notepad.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/img/locked.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:15 +0000] "GET /static/img/region/RGN_us.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:16 +0000] "GET /static/img/region/RGN_eu.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:16 +0000] "GET /static/img/region/globe.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:16 +0000] "GET /static/img/region/RGN_uk.png HTTP/1.1" 304 0 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:18 +0000] "POST /chronos/reflections/datatables HTTP/1.1" 200 22447 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:18 +0000] "GET /static/img/datatables/sort_asc.png HTTP/1.1" 304 0 "https://enterprise:3031/static/css/datatables/dataTables.bootstrap.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:18 +0000] "GET /static/css/select2/select2.png HTTP/1.1" 304 0 "https://enterprise:3031/static/css/select2/select2.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:19 +0000] "GET /dashboard HTTP/1.1" 200 4902 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:19 +0000] "GET /purs/app.js HTTP/1.1" 200 41570 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:20 +0000] "GET /purs/app.js HTTP/1.1" 200 41570 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:20 +0000] "GET /chronos/atlas/versions HTTP/1.1" 200 12332 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:06:24 +0000] "POST /chronos/reflections/datatables HTTP/1.1" 200 22815 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:07:20 +0000] "GET /chronos/atlas/versions HTTP/1.1" 200 12346 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:08:20 +0000] "GET /chronos/atlas/versions HTTP/1.1" 200 12346 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:09:25 +0000] "GET /chronos/atlas/versions HTTP/1.1" 200 12346 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:10:20 +0000] "GET /chronos/atlas/versions HTTP/1.1" 200 12346 "https://enterprise:3031/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /dashboard HTTP/1.1" 200 4902 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/bootstrap-theme.min.css HTTP/1.1" 200 2004 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/bootstrap.min.css HTTP/1.1" 200 21592 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/graph.css HTTP/1.1" 200 1077 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/detail.css HTTP/1.1" 200 558 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/extensions.css HTTP/1.1" 200 1134 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/dashboard.css HTTP/1.1" 200 70 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/legend.css HTTP/1.1" 200 533 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/screen.css HTTP/1.1" 200 668 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/jquery.easy-pie-chart.css HTTP/1.1" 200 221 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/morris.css HTTP/1.1" 200 276 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/awesome-bootstrap-checkbox.css HTTP/1.1" 200 1264 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/yamm.css HTTP/1.1" 200 459 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/checkbox-build.css HTTP/1.1" 200 1072 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/font-awesome.css HTTP/1.1" 200 5625 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/datatables/dataTables.bootstrap.css HTTP/1.1" 200 1929 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/datatables/dataTables.min.css HTTP/1.1" 200 2480 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/underscore.js HTTP/1.1" 200 5995 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/select2/select2-bootstrap.css HTTP/1.1" 200 547 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/css/select2/select2.css HTTP/1.1" 200 3953 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/underscore.string.min.js HTTP/1.1" 200 3590 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/jwplayer.js HTTP/1.1" 200 22875 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/bootstrap.min.js HTTP/1.1" 200 9180 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/base.js HTTP/1.1" 200 742 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/jquery.cookie.js HTTP/1.1" 200 1460 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/noty.min.js HTTP/1.1" 200 8629 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/hermes/paginator.js HTTP/1.1" 200 407 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/navbar.js HTTP/1.1" 200 295 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/atlas.js HTTP/1.1" 200 264 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/moment.min.js HTTP/1.1" 200 12558 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/readable-range.js HTTP/1.1" 200 810 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/hermes/all-videos.js HTTP/1.1" 200 308 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/datatables/dataTables.bootstrap.js HTTP/1.1" 200 1807 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/datatables/dataTables.min.js HTTP/1.1" 200 30702 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/select2/select2.min.js HTTP/1.1" 200 21628 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/reflections.js HTTP/1.1" 200 3788 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/hourglass.js HTTP/1.1" 200 1150 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/json.js HTTP/1.1" 200 213 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/rickshaw/rickshaw.min.js HTTP/1.1" 200 18053 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/jquery.easypiechart.min.js HTTP/1.1" 200 1715 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/typeahead.min.js HTTP/1.1" 200 1977 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/hermes/search-video.js HTTP/1.1" 200 263 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/graph.js HTTP/1.1" 200 2091 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/d3/d3.v2.js HTTP/1.1" 200 65208 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/hermes/search-video-by-org.js HTTP/1.1" 200 488 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/reflections/search-reflections-by-uid.js HTTP/1.1" 200 264 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/reflections/search-reflection.js HTTP/1.1" 200 262 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/reflections/search-reflections-by-org-name.js HTTP/1.1" 200 273 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/morris.min.js HTTP/1.1" 200 11891 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/img/favicon.ico HTTP/1.1" 200 1150 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/raphael.min.js HTTP/1.1" 200 36788 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /purs/app.js HTTP/1.1" 200 41570 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/fonts/glyphicons-halflings-regular.woff HTTP/1.1" 200 16448 "https://enterprise/static/css/bootstrap.min.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/hermes/paginator.js HTTP/1.1" 304 0 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/datatables/dataTables.min.js HTTP/1.1" 304 0 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/js/datatables/dataTables.bootstrap.js HTTP/1.1" 304 0 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /purs/app.js HTTP/1.1" 200 41570 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:06 +0000] "GET /static/img/datatables/sort_both.png HTTP/1.1" 200 1136 "https://enterprise/static/css/datatables/dataTables.bootstrap.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /chronos/atlas/versions HTTP/1.1" 200 12332 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/clock.png HTTP/1.1" 200 1086 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/region/RGN_au.png HTTP/1.1" 200 1466 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/memory.png HTTP/1.1" 200 951 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/harddisk.png HTTP/1.1" 200 1263 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/cpu.png HTTP/1.1" 200 1076 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/database.png HTTP/1.1" 200 1390 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/notepad.png HTTP/1.1" 200 1499 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/locked.png HTTP/1.1" 200 1313 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/region/RGN_eu.png HTTP/1.1" 200 1245 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/region/RGN_us.png HTTP/1.1" 200 1508 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/region/globe.png HTTP/1.1" 200 1639 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:07 +0000] "GET /static/img/region/RGN_uk.png HTTP/1.1" 200 1484 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:09 +0000] "POST /chronos/reflections/datatables HTTP/1.1" 200 22882 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:09 +0000] "GET /static/img/datatables/sort_asc.png HTTP/1.1" 200 1118 "https://enterprise/static/css/datatables/dataTables.bootstrap.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:09 +0000] "GET /static/fonts/fontawesome-webfont.woff?v=4.1.0 HTTP/1.1" 200 65452 "https://enterprise/static/css/font-awesome.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:09 +0000] "GET /static/css/select2/select2.png HTTP/1.1" 200 613 "https://enterprise/static/css/select2/select2.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:21 +0000] "GET /dashboard HTTP/1.1" 301 184 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:21 +0000] "GET /dashboard HTTP/1.1" 200 4908 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:22 +0000] "GET /purs/app.js HTTP/1.1" 200 41570 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:22 +0000] "GET /purs/app.js HTTP/1.1" 200 41570 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:22 +0000] "GET /chronos/atlas/versions HTTP/1.1" 200 12332 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:12:24 +0000] "POST /chronos/reflections/datatables HTTP/1.1" 200 23395 "https://enterprise/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:13:11 +0000] "GET / HTTP/1.1" 200 3700 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:13:11 +0000] "GET /nginx-logo.png HTTP/1.1" 200 368 "http://enterprise:81/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:13:11 +0000] "GET /poweredby.png HTTP/1.1" 200 2811 "http://enterprise:81/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:13:11 +0000] "GET /favicon.ico HTTP/1.1" 404 3650 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:13:11 +0000] "GET /favicon.ico HTTP/1.1" 404 3650 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:14:23 +0000] "GET / HTTP/1.1" 301 184 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:14:23 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:14:23 +0000] "GET /static/js/login.js HTTP/1.1" 200 196 "https://enterprise/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:14:23 +0000] "GET /favicon.ico HTTP/1.1" 404 143 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:14:23 +0000] "GET /favicon.ico HTTP/1.1" 404 143 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET / HTTP/1.1" 301 184 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/css/bootstrap.min.css HTTP/1.1" 200 21592 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/css/bootstrap-theme.min.css HTTP/1.1" 200 2004 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/js/bootstrap.min.js HTTP/1.1" 200 9180 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/css/yamm.css HTTP/1.1" 200 459 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/css/screen.css HTTP/1.1" 200 668 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/js/jquery.cookie.js HTTP/1.1" 200 1460 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/js/underscore.js HTTP/1.1" 200 5995 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/js/base.js HTTP/1.1" 200 742 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/js/login.js HTTP/1.1" 200 196 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/js/navbar.js HTTP/1.1" 200 295 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /static/js/underscore.string.min.js HTTP/1.1" 200 3590 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /favicon.ico HTTP/1.1" 404 143 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:17:24 +0000] "GET /favicon.ico HTTP/1.1" 404 143 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:18:14 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [12/Jan/2016:15:18:32 +0000] "GET / HTTP/1.1" 301 184 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:18:32 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:18:32 +0000] "GET /favicon.ico HTTP/1.1" 404 143 "https://chronos.irisconnect.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:19:42 +0000] "GET / HTTP/1.1" 502 574 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:19:53 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:20:15 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:23:50 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:32:29 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:33:05 +0000] "GET / HTTP/1.1" 502 574 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:33:25 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:33:59 +0000] "GET / HTTP/1.1" 502 574 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:34:08 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:35:14 +0000] "GET / HTTP/1.1" 502 574 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:15:39:55 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+192.168.100.200 - - [12/Jan/2016:16:09:32 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03\x18\x07\xE53\x18\x91\xF4\x8B\xB9\xDB\xDF\x83H\xA9\xD0yL~\xC6\x06t\x8A\xCF\xD7\xD4{\x103O\xF6\xC2\xD3 $\xB9Kr\xF0\xD6Z\x10Pe\xFEwq?|\xCD\x80\x0F>g\xDB\xBB\xAB\xA2)8\xD1\xB6/\xD10\xE3\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:16:09:32 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03\x93\x94\xD0\xD0\xEF\xBDG`l8\xA2\x93A\x8D\xF8~\x83.o\xB24G\xDEoJ\x9D\xBC^\xC6WT" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:16:09:32 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03[\x1B\xB26\xE1\xF8\x17\x5C\x92\xE6\x89\x908\x89\xAD\xBD\x835\xA2\xC1\x9D\xE2\xC6Y \x22\x97\x92\xE2\x8Fa\xFD $\xB9Kr\xF0\xD6Z\x10Pe\xFEwq?|\xCD\x80\x0F>g\xDB\xBB\xAB\xA2)8\xD1\xB6/\xD10\xE3\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:16:09:32 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03d8\xF2\x90;P\xC4\xB0\xAB\xBB\xC2V\xF2]2dw4E\xB9\xC3\xC01\xDD\xD4\xDF\x8A\xEB\x8F\x80O\x99 $\xB9Kr\xF0\xD6Z\x10Pe\xFEwq?|\xCD\x80\x0F>g\xDB\xBB\xAB\xA2)8\xD1\xB6/\xD10\xE3\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:16:09:32 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03\x04\xC3\xA3R\x8B>\xCBf\xB2'L\x7F\x15\x1D\x0B\x8A\xE2\xD4%\x10R*sY\xB6\x04S\xEC\x9B\xC0lb $\xB9Kr\xF0\xD6Z\x10Pe\xFEwq?|\xCD\x80\x0F>g\xDB\xBB\xAB\xA2)8\xD1\xB6/\xD10\xE3\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:16:09:32 +0000] "\x16\x03\x01\x00\xAB\x01\x00\x00\xA7\x03\x02kS\x02o\x8A\xCA\x91hN\xBC\xBE\x0B\xBFg\xF5\xE9`\x89k\xF44n\xE9\xCD\xA1\x87\x00\xA6\xE0\x11K\xB4\x00\x00\x14\xC0" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:16:09:32 +0000] "\x16\x03\x01\x00\xAB\x01\x00\x00\xA7\x03\x01\x9A\xCF\xEF\xDC\x02F6\x8C\xF6\xE0\xF5\xE3\x84W\x96" 400 172 "-" "-" "-"+192.168.100.200 - - [12/Jan/2016:16:26:35 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:16:29:30 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:16:29:44 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:16:31:59 +0000] "GET / HTTP/1.1" 502 574 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+192.168.100.200 - - [12/Jan/2016:16:32:19 +0000] "GET / HTTP/1.1" 200 1782 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" "-"+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+ -  [] ""   "" "" ""+192.168.100.200 - - [10/Mar/2016:15:47:52 +0000] "GET / HTTP/1.1" 403 570 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:15:47:52 +0000] "GET /favicon.ico HTTP/1.1" 404 570 "http://enterprise:4080/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:15:49:01 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 403 570 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:15:50:34 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 200 5876892 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:15:55:10 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 403 570 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:15:55:10 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 403 570 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:16:05:24 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 200 5876892 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:16:09:43 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 206 1 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:16:09:43 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 206 5874255 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:16:14:42 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 200 5876892 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:16:14:52 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 206 1 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:16:14:52 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 206 5874255 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:16:16:38 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 200 5876892 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [10/Mar/2016:16:16:54 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 200 5876892 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [10/Mar/2016:16:41:17 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 200 5876892 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.100.200 - - [10/Mar/2016:16:52:18 +0000] "GET /2016-03-09/16-53-58.csv HTTP/1.1" 200 5876892 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+127.0.0.1 - - [10/Mar/2016:17:42:28 +0000] "POST / HTTP/1.1" 403 168 "-" "curl/7.29.0" "-"+192.168.100.200 - - [10/Mar/2016:17:48:10 +0000] "GET /www/2016-03-10/17-47-35.csv HTTP/1.1" 404 570 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:17:48:10 +0000] "GET /favicon.ico HTTP/1.1" 404 570 "http://enterprise:4080/www/2016-03-10/17-47-35.csv" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:17:48:28 +0000] "GET /2016-03-10/17-47-35.csv HTTP/1.1" 200 5876894 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:18:10:00 +0000] "GET /2016-03-10/18-09-27.csv HTTP/1.1" 200 5876894 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" "-"+192.168.100.200 - - [10/Mar/2016:18:10:08 +0000] "GET /2016-03-10/18-09-27.csv HTTP/1.1" 200 5876894 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/601.4.4 (KHTML, like Gecko) Version/9.0.3 Safari/601.4.4" "-"+192.168.100.200 - - [10/Mar/2016:18:10:40 +0000] "GET /2016-03-10/18-09-27.csv HTTP/1.1" 200 5876894 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0" "-"+192.168.108.220 - - [24/Mar/2016:08:30:45 +0000] "GET /untitled.svg HTTP/1.1" 404 570 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" "-"+192.168.108.220 - - [24/Mar/2016:08:30:45 +0000] "GET /favicon.ico HTTP/1.1" 404 570 "http://enterprise:4080/untitled.svg" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" "-"+192.168.108.220 - - [24/Mar/2016:08:31:16 +0000] "GET /Untitled.svg HTTP/1.1" 200 1484 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" "-"+192.168.108.220 - - [25/Apr/2016:11:21:42 +0100] "GET /2016-04-25-102102-qryrevbdpv$wg1nzbr6u/01/eu/eros-partner/2016-03,2016-04=all=monthly.csv HTTP/1.1" 404 570 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36" "-"+192.168.108.220 - - [25/Apr/2016:11:21:42 +0100] "GET /favicon.ico HTTP/1.1" 404 570 "http://enterprise:4080/2016-04-25-102102-qryrevbdpv$wg1nzbr6u/01/eu/eros-partner/2016-03,2016-04=all=monthly.csv" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36" "-"+127.0.0.1 - - [09/May/2016:16:37:55 +0100] "GET /aphrodite/2016-05-09-153751-01-uxgadcudzsk3vghkrnct HTTP/1.1" 404 168 "-" "-" "-"+127.0.0.1 - - [09/May/2016:17:16:08 +0100] "GET /aphrodite/2016-05-09-161604-01-uxoz2zb0dg10l1xhmgim/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1" 404 168 "-" "-" "-"+127.0.0.1 - - [09/May/2016:17:26:17 +0100] "GET /aphrodite/2016-05-09-162613-01-0sci1rt2qkfnb+rppojk/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1" 404 168 "-" "-" "-"+192.168.100.200 - - [09/May/2016:17:36:15 +0100] "GET /aphrodite/2016-05-09-163545-01-ipam4ea$+ergir8ca6y4/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1" 200 107 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36" "-"+192.168.100.240 - - [09/May/2016:17:53:46 +0100] "GET /aphrodite/2016-05-09-165048-01-+7t+mjmflsgyru98wb4q/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1" 200 107 "-" "Wget/1.14 (linux-gnu)" "-"+192.168.100.240 - - [09/May/2016:17:54:24 +0100] "GET /aphrodite/2016-05-09-165420-01-xy$ocodamcst+$fmnmdf/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1" 200 107 "-" "-" "-"+192.168.100.240 - - [09/May/2016:18:02:49 +0100] "GET /aphrodite/2016-05-09-170245-01-6ekoffxc3w1uejleq92o/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1" 200 107 "-" "-" "-"+192.168.100.240 - - [09/May/2016:18:03:29 +0100] "GET /aphrodite/2016-05-09-170326-01-iztthfuj3jmrspt4j1ex/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1" 200 107 "-" "-" "-"+192.168.108.240 - - [10/May/2016:09:44:23 +0100] "GET /aphrodite/2016-05-10-084420-01-n0mxsllyzjgdu3j3a5sz/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1" 200 107 "-" "-" "-"+192.168.108.240 - - [10/May/2016:10:58:27 +0100] "GET /aphrodite/2016-05-10-095822-01-9h150ct4wu9eds1o8yte/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1" 200 107 "-" "-" "-"+127.0.0.1 - - [11/May/2016:08:16:44 +0100] "GET /aphrodite/2016-05-11-071048-01-itf2kjrvtlxbbfd2msbs/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1" 200 107 "-" "Wget/1.14 (linux-gnu)" "-"
+ data/error.log view
@@ -0,0 +1,23 @@+2016/11/30 10:19:04 [emerg] 1918#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/11/30 18:12:12 [emerg] 1919#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/01 15:42:55 [emerg] 1913#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/02 10:05:17 [emerg] 1906#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/02 20:18:52 [emerg] 1914#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/04 17:17:27 [emerg] 1921#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/04 17:47:00 [emerg] 1913#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/04 18:19:11 [emerg] 1883#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/04 18:29:31 [emerg] 1878#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/05 09:52:42 [emerg] 1907#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/05 11:04:54 [emerg] 1883#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/06 09:42:50 [emerg] 1885#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/06 13:54:02 [emerg] 1881#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/06 19:11:38 [emerg] 1886#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/07 13:02:09 [emerg] 1885#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/07 19:25:29 [emerg] 1898#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/07 19:53:57 [emerg] 6923#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/13 10:05:29 [emerg] 1879#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/13 18:30:32 [emerg] 1888#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/13 18:39:07 [emerg] 1882#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/13 18:52:06 [emerg] 1893#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/15 03:36:59 [emerg] 1879#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)+2016/12/21 11:53:35 [emerg] 1378#0: SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)
+ data/events.log view
@@ -0,0 +1,562 @@+0001 ACC 2016-01-12 12:08:36 UTC -       192.168.100.200 [GET / HTTP/1.1 200 3700 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0002 ACC 2016-01-12 12:08:36 UTC -       192.168.100.200 [GET /poweredby.png HTTP/1.1 200 2811 http://enterprise:443/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0003 ACC 2016-01-12 12:08:36 UTC -       192.168.100.200 [GET /nginx-logo.png HTTP/1.1 200 368 http://enterprise:443/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0004 ACC 2016-01-12 12:08:36 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 404 3650 http://enterprise:443/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0005 ACC 2016-01-12 12:17:14 UTC -       192.168.100.200 [GET / HTTP/1.1 301 184 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0006 ACC 2016-01-12 12:23:08 UTC -       192.168.100.200 [\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03\xE8\x9CY\xD9\xB4\x9B[<y\xF5\xB2\x1B\xDCO\x91).\xCEI\x97\x82\xA4\xFA`6\xA2\xC4J2AV\xFF\x00\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0 400 172 - - -]+0007 ACC 2016-01-12 12:23:08 UTC -       192.168.100.200 [\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03\xD5I\x9A\xA3\x10}\x7F\x1A\x7F\x9A#\x05\xB6\xD5\xCD\xEA\x06\x97\x08e7Pv\x92\xF5@I\x10\xCF\x89;c\x00\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0 400 172 - - -]+0008 ACC 2016-01-12 12:23:08 UTC -       192.168.100.200 [\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03\xF2>\xAC\x99\x89|\xFA\x92\x894\xAF\xC5J:[U\xCEm\x97k$\x177y\x03Z]nn\xCD\x1B\x8A\x00\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0 400 172 - - -]+0009 ACC 2016-01-12 12:23:08 UTC -       192.168.100.200 [\x16\x03\x01\x00\x9E\x01\x00\x00\x9A\x03\x028\xE7\x85\xA3b\xA8W\xAC#F\xAA\xE1gl\xF7\xFD6\xA3\xEE\xCD\xAA?\xFA;\xDA\xAA\xDF\x85bBN\x08\x00\x00\x14\xC0 400 172 - - -]+0010 ACC 2016-01-12 12:23:08 UTC -       192.168.100.200 [\x16\x03\x01\x00\x9E\x01\x00\x00\x9A\x03\x01~9\x9C\xF3\x0E\xFA8\xCE\xA7\xEA\xA4\x16\xE3\xCAdf\xF5\xAE\x10 400 172 - - -]+0011 ACC 2016-01-12 12:23:46 UTC -       192.168.100.200 [GET / HTTP/1.1 301 184 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0012 ACC 2016-01-12 12:29:04 UTC -       192.168.100.200 [\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03\x89\xED\x0E\xED3\x9B\x1D\xB1\xB6W\x1E\x89D\xB5\xA7\x9A}2\xAC\xE8\x1F&\x17\xFC\xE2\x99\xE80A%!B\x00\x00\x16\xC0+\xC0/\xC0 400 172 - - -]+0013 ACC 2016-01-12 12:33:51 UTC -       192.168.100.200 [\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03g:!\x9E\xD6\xD0v\xFD\xDDI\x9A\xD7\xDB\xDC\x09i/CI\xE3\xAB\xBFY~\xB2`\xFF\x15\xC5Z\xE3\xD8\x00\x00\x16\xC0+\xC0/\xC0 400 172 - - -]+0014 ACC 2016-01-12 12:34:00 UTC -       192.168.100.200 [\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03\xB4|\xE7\xEEn\x9D\x1B\x00H\xE8\x97(\xD1(!6\xA4\xB0Z\xE8\xCB\x9D1\xD5\x05\xD5\xE9n 400 172 - - -]+0015 ACC 2016-01-12 12:34:02 UTC -       192.168.100.200 [\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03\xB0\xC3\xE7\x0E\x8A\x09\x10FJ\x82\xA5\x84\x8D\xA1z\xF2 400 172 - - -]+0016 ACC 2016-01-12 12:36:54 UTC -       192.168.100.200 [\x16\x03\x01\x00\xC5\x01\x00\x00\xC1\x03\x03y\xB1C\xEB\xA2\xCE\xB4\xAF\xDA\x1D\xBB]\xA8\x87C\xA4cu\x8B==$\x19\xCAK\x1EB!\xF4\xEEP\xF2\x00\x00\x16\xC0+\xC0/\xC0 400 172 - - -]+0017 ACC 2016-01-12 14:12:42 UTC -       192.168.100.200 [\x16\x03\x01\x00\xB3\x01\x00\x00\xAF\x03\x03}\x8E\x9D\xE5X\x07\xE2\xF6\x89Dtn&\xF1\x82\x12;t\x857\x98);k\x90\x82\xD6\x0E~\xCE\xD7\xC0\x00\x00\x16\xC0+\xC0/\xC0 400 172 - - -]+0018 ACC 2016-01-12 14:23:51 UTC -       192.168.100.200 [\x16\x03\x01\x00\xB3\x01\x00\x00\xAF\x03\x03\x9D\xCBj\xBF\x01=\x04\xBA7Sv9\x00\x8F\xCE\xDCO\x0F\xDE\xED4\x87\x1A\xD5\x8D\xACX\x99C=9\xBB\x00\x00\x16\xC0+\xC0/\xC0 400 172 - - -]+0019 ACC 2016-01-12 14:42:40 UTC -       192.168.100.200 [GET / HTTP/1.1 502 172 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0020 ACC 2016-01-12 14:43:31 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 499 0 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0021 ACC 2016-01-12 14:44:01 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 499 0 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0022 ACC 2016-01-12 14:44:01 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 499 0 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0023 ACC 2016-01-12 14:44:04 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 499 0 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0024 ACC 2016-01-12 14:44:04 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 499 0 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0025 ACC 2016-01-12 14:44:06 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 499 0 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0026 ACC 2016-01-12 14:44:06 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 499 0 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0027 ACC 2016-01-12 14:44:31 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 502 172 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0028 ACC 2016-01-12 14:44:32 UTC -       192.168.100.200 [GET / HTTP/1.1 502 172 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0029 ACC 2016-01-12 14:44:48 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 499 0 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0030 ACC 2016-01-12 14:44:48 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 499 0 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0031 ACC 2016-01-12 14:45:25 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 499 0 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0032 ACC 2016-01-12 14:45:25 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 499 0 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0033 ACC 2016-01-12 14:46:25 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 502 172 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0034 ACC 2016-01-12 15:02:09 UTC -       192.168.100.200 [GET / HTTP/1.1 499 0 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0035 ACC 2016-01-12 15:02:55 UTC -       192.168.100.200 [GET / HTTP/1.1 200 1782 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0036 ACC 2016-01-12 15:02:55 UTC -       192.168.100.200 [GET /static/css/bootstrap.min.css HTTP/1.1 200 21592 https://enterprise:3031/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0037 ACC 2016-01-12 15:02:55 UTC -       192.168.100.200 [GET /static/css/bootstrap-theme.min.css HTTP/1.1 200 2004 https://enterprise:3031/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0038 ACC 2016-01-12 15:02:55 UTC -       192.168.100.200 [GET /static/js/underscore.string.min.js HTTP/1.1 200 3590 https://enterprise:3031/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0039 ACC 2016-01-12 15:02:55 UTC -       192.168.100.200 [GET /static/css/screen.css HTTP/1.1 200 668 https://enterprise:3031/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0040 ACC 2016-01-12 15:02:55 UTC -       192.168.100.200 [GET /static/css/yamm.css HTTP/1.1 200 459 https://enterprise:3031/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0041 ACC 2016-01-12 15:02:55 UTC -       192.168.100.200 [GET /static/js/underscore.js HTTP/1.1 200 6001 https://enterprise:3031/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0042 ACC 2016-01-12 15:02:55 UTC -       192.168.100.200 [GET /static/js/bootstrap.min.js HTTP/1.1 200 9180 https://enterprise:3031/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0043 ACC 2016-01-12 15:02:55 UTC -       192.168.100.200 [GET /static/js/jquery.cookie.js HTTP/1.1 200 1460 https://enterprise:3031/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0044 ACC 2016-01-12 15:02:55 UTC -       192.168.100.200 [GET /static/js/login.js HTTP/1.1 200 196 https://enterprise:3031/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0045 ACC 2016-01-12 15:02:55 UTC -       192.168.100.200 [GET /static/js/base.js HTTP/1.1 200 742 https://enterprise:3031/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0046 ACC 2016-01-12 15:02:55 UTC -       192.168.100.200 [GET /static/js/navbar.js HTTP/1.1 200 295 https://enterprise:3031/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0047 ACC 2016-01-12 15:04:03 UTC -       192.168.100.200 [POST /login HTTP/1.1 302 0 https://enterprise:3031/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0048 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /dashboard HTTP/1.1 200 4902 https://enterprise:3031/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0049 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/css/graph.css HTTP/1.1 200 1077 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0050 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/css/dashboard.css HTTP/1.1 200 70 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0051 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/css/detail.css HTTP/1.1 200 558 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0052 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/css/legend.css HTTP/1.1 200 533 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0053 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/css/jquery.easy-pie-chart.css HTTP/1.1 200 221 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0054 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/css/morris.css HTTP/1.1 200 276 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0055 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/css/extensions.css HTTP/1.1 200 1134 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0056 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/css/datatables/dataTables.min.css HTTP/1.1 200 2480 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0057 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/css/datatables/dataTables.bootstrap.css HTTP/1.1 200 1929 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0058 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/css/font-awesome.css HTTP/1.1 200 5631 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0059 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/css/awesome-bootstrap-checkbox.css HTTP/1.1 200 1264 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0060 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/css/checkbox-build.css HTTP/1.1 200 1072 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0061 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/css/select2/select2.css HTTP/1.1 200 3959 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0062 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/hermes/paginator.js HTTP/1.1 200 407 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0063 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/atlas.js HTTP/1.1 200 264 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0064 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/css/select2/select2-bootstrap.css HTTP/1.1 200 547 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0065 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/jwplayer.js HTTP/1.1 200 22875 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0066 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/hermes/all-videos.js HTTP/1.1 200 308 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0067 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/noty.min.js HTTP/1.1 200 8629 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0068 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/moment.min.js HTTP/1.1 200 12558 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0069 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/readable-range.js HTTP/1.1 200 810 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0070 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/reflections.js HTTP/1.1 200 3788 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0071 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/select2/select2.min.js HTTP/1.1 200 21628 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0072 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/datatables/dataTables.bootstrap.js HTTP/1.1 200 1807 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0073 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/datatables/dataTables.min.js HTTP/1.1 200 30733 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0074 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/hourglass.js HTTP/1.1 200 1150 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0075 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/rickshaw/rickshaw.min.js HTTP/1.1 200 18053 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0076 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/jquery.easypiechart.min.js HTTP/1.1 200 1715 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0077 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/graph.js HTTP/1.1 200 2091 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0078 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/d3/d3.v2.js HTTP/1.1 200 65208 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0079 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/hermes/search-video-by-org.js HTTP/1.1 200 488 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0080 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/typeahead.min.js HTTP/1.1 200 1977 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0081 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/hermes/search-video.js HTTP/1.1 200 263 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0082 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/json.js HTTP/1.1 200 213 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0083 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/reflections/search-reflection.js HTTP/1.1 200 262 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0084 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/reflections/search-reflections-by-org-name.js HTTP/1.1 200 273 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0085 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/reflections/search-reflections-by-uid.js HTTP/1.1 200 264 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0086 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/raphael.min.js HTTP/1.1 200 36788 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0087 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/js/morris.min.js HTTP/1.1 200 11891 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0088 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /purs/app.js HTTP/1.1 200 41570 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0089 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/fonts/glyphicons-halflings-regular.woff HTTP/1.1 200 16448 https://enterprise:3031/static/css/bootstrap.min.css Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0090 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/img/favicon.ico HTTP/1.1 200 1150 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0091 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /purs/app.js HTTP/1.1 200 41570 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0092 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/img/datatables/sort_both.png HTTP/1.1 200 1136 https://enterprise:3031/static/css/datatables/dataTables.bootstrap.css Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0093 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /chronos/atlas/versions HTTP/1.1 200 12332 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0094 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/img/region/RGN_au.png HTTP/1.1 200 1466 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0095 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/img/clock.png HTTP/1.1 200 1086 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0096 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/img/harddisk.png HTTP/1.1 200 1263 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0097 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/img/cpu.png HTTP/1.1 200 1076 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0098 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/img/memory.png HTTP/1.1 200 951 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0099 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/img/notepad.png HTTP/1.1 200 1499 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0100 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/img/database.png HTTP/1.1 200 1390 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0101 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/img/locked.png HTTP/1.1 200 1313 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0102 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/img/region/RGN_us.png HTTP/1.1 200 1508 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0103 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/img/region/RGN_eu.png HTTP/1.1 200 1245 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0104 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/img/region/globe.png HTTP/1.1 200 1639 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0105 ACC 2016-01-12 15:04:04 UTC -       192.168.100.200 [GET /static/img/region/RGN_uk.png HTTP/1.1 200 1484 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0106 ACC 2016-01-12 15:04:06 UTC -       192.168.100.200 [POST /chronos/reflections/datatables HTTP/1.1 200 21324 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0107 ACC 2016-01-12 15:04:07 UTC -       192.168.100.200 [GET /static/img/datatables/sort_asc.png HTTP/1.1 200 1118 https://enterprise:3031/static/css/datatables/dataTables.bootstrap.css Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0108 ACC 2016-01-12 15:04:07 UTC -       192.168.100.200 [GET /static/fonts/fontawesome-webfont.woff?v=4.1.0 HTTP/1.1 200 65452 https://enterprise:3031/static/css/font-awesome.css Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0109 ACC 2016-01-12 15:04:07 UTC -       192.168.100.200 [GET /static/css/select2/select2.png HTTP/1.1 200 613 https://enterprise:3031/static/css/select2/select2.css Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0110 ACC 2016-01-12 15:05:04 UTC -       192.168.100.200 [GET /chronos/atlas/versions HTTP/1.1 200 12346 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0111 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /dashboard HTTP/1.1 200 4902 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0112 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/css/bootstrap.min.css HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0113 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/css/bootstrap-theme.min.css HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0114 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/css/screen.css HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0115 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/css/yamm.css HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0116 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/css/font-awesome.css HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0117 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/css/checkbox-build.css HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0118 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/css/awesome-bootstrap-checkbox.css HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0119 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/css/select2/select2.css HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0120 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/underscore.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0121 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/css/select2/select2-bootstrap.css HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0122 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/underscore.string.min.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0123 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/css/datatables/dataTables.bootstrap.css HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0124 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/css/datatables/dataTables.min.css HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0125 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/jwplayer.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0126 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/jquery.cookie.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0127 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/base.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0128 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/hermes/paginator.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0129 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/navbar.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0130 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/datatables/dataTables.min.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0131 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/bootstrap.min.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0132 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/datatables/dataTables.bootstrap.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0133 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/reflections/search-reflection.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0134 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/hermes/search-video-by-org.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0135 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/raphael.min.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0136 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/reflections/search-reflections-by-org-name.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0137 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/reflections/search-reflections-by-uid.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0138 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/morris.min.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0139 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/css/legend.css HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0140 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/css/detail.css HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0141 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/css/jquery.easy-pie-chart.css HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0142 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/css/graph.css HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0143 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/css/dashboard.css HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0144 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/css/morris.css HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0145 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/css/extensions.css HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0146 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/noty.min.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0147 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/hermes/all-videos.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0148 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/atlas.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0149 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/moment.min.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0150 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/readable-range.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0151 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /purs/app.js HTTP/1.1 200 41570 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0152 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/select2/select2.min.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0153 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/reflections.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0154 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/hourglass.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0155 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/jquery.easypiechart.min.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0156 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/rickshaw/rickshaw.min.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0157 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/json.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0158 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/d3/d3.v2.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0159 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/typeahead.min.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0160 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/hermes/search-video.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0161 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/graph.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0162 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/hermes/paginator.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0163 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/datatables/dataTables.min.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0164 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/js/datatables/dataTables.bootstrap.js HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0165 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /purs/app.js HTTP/1.1 200 41570 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0166 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/img/datatables/sort_both.png HTTP/1.1 304 0 https://enterprise:3031/static/css/datatables/dataTables.bootstrap.css Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0167 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /chronos/atlas/versions HTTP/1.1 200 12332 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0168 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/img/region/RGN_au.png HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0169 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/img/clock.png HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0170 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/img/harddisk.png HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0171 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/img/memory.png HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0172 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/img/cpu.png HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0173 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/img/database.png HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0174 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/img/notepad.png HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0175 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/img/locked.png HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0176 ACC 2016-01-12 15:06:15 UTC -       192.168.100.200 [GET /static/img/region/RGN_us.png HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0177 ACC 2016-01-12 15:06:16 UTC -       192.168.100.200 [GET /static/img/region/RGN_eu.png HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0178 ACC 2016-01-12 15:06:16 UTC -       192.168.100.200 [GET /static/img/region/globe.png HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0179 ACC 2016-01-12 15:06:16 UTC -       192.168.100.200 [GET /static/img/region/RGN_uk.png HTTP/1.1 304 0 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0180 ACC 2016-01-12 15:06:18 UTC -       192.168.100.200 [POST /chronos/reflections/datatables HTTP/1.1 200 22447 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0181 ACC 2016-01-12 15:06:18 UTC -       192.168.100.200 [GET /static/img/datatables/sort_asc.png HTTP/1.1 304 0 https://enterprise:3031/static/css/datatables/dataTables.bootstrap.css Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0182 ACC 2016-01-12 15:06:18 UTC -       192.168.100.200 [GET /static/css/select2/select2.png HTTP/1.1 304 0 https://enterprise:3031/static/css/select2/select2.css Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0183 ACC 2016-01-12 15:06:19 UTC -       192.168.100.200 [GET /dashboard HTTP/1.1 200 4902 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0184 ACC 2016-01-12 15:06:19 UTC -       192.168.100.200 [GET /purs/app.js HTTP/1.1 200 41570 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0185 ACC 2016-01-12 15:06:20 UTC -       192.168.100.200 [GET /purs/app.js HTTP/1.1 200 41570 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0186 ACC 2016-01-12 15:06:20 UTC -       192.168.100.200 [GET /chronos/atlas/versions HTTP/1.1 200 12332 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0187 ACC 2016-01-12 15:06:24 UTC -       192.168.100.200 [POST /chronos/reflections/datatables HTTP/1.1 200 22815 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0188 ACC 2016-01-12 15:07:20 UTC -       192.168.100.200 [GET /chronos/atlas/versions HTTP/1.1 200 12346 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0189 ACC 2016-01-12 15:08:20 UTC -       192.168.100.200 [GET /chronos/atlas/versions HTTP/1.1 200 12346 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0190 ACC 2016-01-12 15:09:25 UTC -       192.168.100.200 [GET /chronos/atlas/versions HTTP/1.1 200 12346 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0191 ACC 2016-01-12 15:10:20 UTC -       192.168.100.200 [GET /chronos/atlas/versions HTTP/1.1 200 12346 https://enterprise:3031/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0192 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /dashboard HTTP/1.1 200 4902 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0193 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/css/bootstrap-theme.min.css HTTP/1.1 200 2004 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0194 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/css/bootstrap.min.css HTTP/1.1 200 21592 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0195 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/css/graph.css HTTP/1.1 200 1077 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0196 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/css/detail.css HTTP/1.1 200 558 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0197 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/css/extensions.css HTTP/1.1 200 1134 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0198 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/css/dashboard.css HTTP/1.1 200 70 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0199 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/css/legend.css HTTP/1.1 200 533 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0200 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/css/screen.css HTTP/1.1 200 668 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0201 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/css/jquery.easy-pie-chart.css HTTP/1.1 200 221 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0202 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/css/morris.css HTTP/1.1 200 276 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0203 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/css/awesome-bootstrap-checkbox.css HTTP/1.1 200 1264 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0204 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/css/yamm.css HTTP/1.1 200 459 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0205 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/css/checkbox-build.css HTTP/1.1 200 1072 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0206 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/css/font-awesome.css HTTP/1.1 200 5625 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0207 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/css/datatables/dataTables.bootstrap.css HTTP/1.1 200 1929 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0208 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/css/datatables/dataTables.min.css HTTP/1.1 200 2480 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0209 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/underscore.js HTTP/1.1 200 5995 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0210 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/css/select2/select2-bootstrap.css HTTP/1.1 200 547 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0211 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/css/select2/select2.css HTTP/1.1 200 3953 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0212 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/underscore.string.min.js HTTP/1.1 200 3590 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0213 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/jwplayer.js HTTP/1.1 200 22875 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0214 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/bootstrap.min.js HTTP/1.1 200 9180 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0215 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/base.js HTTP/1.1 200 742 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0216 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/jquery.cookie.js HTTP/1.1 200 1460 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0217 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/noty.min.js HTTP/1.1 200 8629 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0218 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/hermes/paginator.js HTTP/1.1 200 407 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0219 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/navbar.js HTTP/1.1 200 295 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0220 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/atlas.js HTTP/1.1 200 264 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0221 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/moment.min.js HTTP/1.1 200 12558 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0222 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/readable-range.js HTTP/1.1 200 810 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0223 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/hermes/all-videos.js HTTP/1.1 200 308 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0224 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/datatables/dataTables.bootstrap.js HTTP/1.1 200 1807 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0225 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/datatables/dataTables.min.js HTTP/1.1 200 30702 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0226 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/select2/select2.min.js HTTP/1.1 200 21628 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0227 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/reflections.js HTTP/1.1 200 3788 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0228 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/hourglass.js HTTP/1.1 200 1150 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0229 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/json.js HTTP/1.1 200 213 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0230 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/rickshaw/rickshaw.min.js HTTP/1.1 200 18053 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0231 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/jquery.easypiechart.min.js HTTP/1.1 200 1715 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0232 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/typeahead.min.js HTTP/1.1 200 1977 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0233 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/hermes/search-video.js HTTP/1.1 200 263 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0234 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/graph.js HTTP/1.1 200 2091 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0235 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/d3/d3.v2.js HTTP/1.1 200 65208 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0236 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/hermes/search-video-by-org.js HTTP/1.1 200 488 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0237 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/reflections/search-reflections-by-uid.js HTTP/1.1 200 264 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0238 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/reflections/search-reflection.js HTTP/1.1 200 262 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0239 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/reflections/search-reflections-by-org-name.js HTTP/1.1 200 273 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0240 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/morris.min.js HTTP/1.1 200 11891 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0241 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/img/favicon.ico HTTP/1.1 200 1150 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0242 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/raphael.min.js HTTP/1.1 200 36788 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0243 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /purs/app.js HTTP/1.1 200 41570 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0244 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/fonts/glyphicons-halflings-regular.woff HTTP/1.1 200 16448 https://enterprise/static/css/bootstrap.min.css Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0245 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/hermes/paginator.js HTTP/1.1 304 0 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0246 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/datatables/dataTables.min.js HTTP/1.1 304 0 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0247 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/js/datatables/dataTables.bootstrap.js HTTP/1.1 304 0 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0248 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /purs/app.js HTTP/1.1 200 41570 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0249 ACC 2016-01-12 15:12:06 UTC -       192.168.100.200 [GET /static/img/datatables/sort_both.png HTTP/1.1 200 1136 https://enterprise/static/css/datatables/dataTables.bootstrap.css Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0250 ACC 2016-01-12 15:12:07 UTC -       192.168.100.200 [GET /chronos/atlas/versions HTTP/1.1 200 12332 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0251 ACC 2016-01-12 15:12:07 UTC -       192.168.100.200 [GET /static/img/clock.png HTTP/1.1 200 1086 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0252 ACC 2016-01-12 15:12:07 UTC -       192.168.100.200 [GET /static/img/region/RGN_au.png HTTP/1.1 200 1466 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0253 ACC 2016-01-12 15:12:07 UTC -       192.168.100.200 [GET /static/img/memory.png HTTP/1.1 200 951 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0254 ACC 2016-01-12 15:12:07 UTC -       192.168.100.200 [GET /static/img/harddisk.png HTTP/1.1 200 1263 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0255 ACC 2016-01-12 15:12:07 UTC -       192.168.100.200 [GET /static/img/cpu.png HTTP/1.1 200 1076 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0256 ACC 2016-01-12 15:12:07 UTC -       192.168.100.200 [GET /static/img/database.png HTTP/1.1 200 1390 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0257 ACC 2016-01-12 15:12:07 UTC -       192.168.100.200 [GET /static/img/notepad.png HTTP/1.1 200 1499 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0258 ACC 2016-01-12 15:12:07 UTC -       192.168.100.200 [GET /static/img/locked.png HTTP/1.1 200 1313 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0259 ACC 2016-01-12 15:12:07 UTC -       192.168.100.200 [GET /static/img/region/RGN_eu.png HTTP/1.1 200 1245 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0260 ACC 2016-01-12 15:12:07 UTC -       192.168.100.200 [GET /static/img/region/RGN_us.png HTTP/1.1 200 1508 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0261 ACC 2016-01-12 15:12:07 UTC -       192.168.100.200 [GET /static/img/region/globe.png HTTP/1.1 200 1639 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0262 ACC 2016-01-12 15:12:07 UTC -       192.168.100.200 [GET /static/img/region/RGN_uk.png HTTP/1.1 200 1484 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0263 ACC 2016-01-12 15:12:09 UTC -       192.168.100.200 [POST /chronos/reflections/datatables HTTP/1.1 200 22882 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0264 ACC 2016-01-12 15:12:09 UTC -       192.168.100.200 [GET /static/img/datatables/sort_asc.png HTTP/1.1 200 1118 https://enterprise/static/css/datatables/dataTables.bootstrap.css Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0265 ACC 2016-01-12 15:12:09 UTC -       192.168.100.200 [GET /static/fonts/fontawesome-webfont.woff?v=4.1.0 HTTP/1.1 200 65452 https://enterprise/static/css/font-awesome.css Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0266 ACC 2016-01-12 15:12:09 UTC -       192.168.100.200 [GET /static/css/select2/select2.png HTTP/1.1 200 613 https://enterprise/static/css/select2/select2.css Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0267 ACC 2016-01-12 15:12:21 UTC -       192.168.100.200 [GET /dashboard HTTP/1.1 301 184 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0268 ACC 2016-01-12 15:12:21 UTC -       192.168.100.200 [GET /dashboard HTTP/1.1 200 4908 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0269 ACC 2016-01-12 15:12:22 UTC -       192.168.100.200 [GET /purs/app.js HTTP/1.1 200 41570 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0270 ACC 2016-01-12 15:12:22 UTC -       192.168.100.200 [GET /purs/app.js HTTP/1.1 200 41570 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0271 ACC 2016-01-12 15:12:22 UTC -       192.168.100.200 [GET /chronos/atlas/versions HTTP/1.1 200 12332 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0272 ACC 2016-01-12 15:12:24 UTC -       192.168.100.200 [POST /chronos/reflections/datatables HTTP/1.1 200 23395 https://enterprise/dashboard Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0273 ACC 2016-01-12 15:13:11 UTC -       192.168.100.200 [GET / HTTP/1.1 200 3700 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0274 ACC 2016-01-12 15:13:11 UTC -       192.168.100.200 [GET /nginx-logo.png HTTP/1.1 200 368 http://enterprise:81/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0275 ACC 2016-01-12 15:13:11 UTC -       192.168.100.200 [GET /poweredby.png HTTP/1.1 200 2811 http://enterprise:81/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0276 ACC 2016-01-12 15:13:11 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 404 3650 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0277 ACC 2016-01-12 15:13:11 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 404 3650 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0278 ACC 2016-01-12 15:14:23 UTC -       192.168.100.200 [GET / HTTP/1.1 301 184 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0279 ACC 2016-01-12 15:14:23 UTC -       192.168.100.200 [GET / HTTP/1.1 200 1782 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0280 ACC 2016-01-12 15:14:23 UTC -       192.168.100.200 [GET /static/js/login.js HTTP/1.1 200 196 https://enterprise/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0281 ACC 2016-01-12 15:14:23 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 404 143 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0282 ACC 2016-01-12 15:14:23 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 404 143 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0283 ACC 2016-01-12 15:17:24 UTC -       192.168.100.200 [GET / HTTP/1.1 301 184 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0284 ACC 2016-01-12 15:17:24 UTC -       192.168.100.200 [GET / HTTP/1.1 200 1782 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0285 ACC 2016-01-12 15:17:24 UTC -       192.168.100.200 [GET /static/css/bootstrap.min.css HTTP/1.1 200 21592 https://chronos.irisconnect.com/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0286 ACC 2016-01-12 15:17:24 UTC -       192.168.100.200 [GET /static/css/bootstrap-theme.min.css HTTP/1.1 200 2004 https://chronos.irisconnect.com/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0287 ACC 2016-01-12 15:17:24 UTC -       192.168.100.200 [GET /static/js/bootstrap.min.js HTTP/1.1 200 9180 https://chronos.irisconnect.com/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0288 ACC 2016-01-12 15:17:24 UTC -       192.168.100.200 [GET /static/css/yamm.css HTTP/1.1 200 459 https://chronos.irisconnect.com/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0289 ACC 2016-01-12 15:17:24 UTC -       192.168.100.200 [GET /static/css/screen.css HTTP/1.1 200 668 https://chronos.irisconnect.com/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0290 ACC 2016-01-12 15:17:24 UTC -       192.168.100.200 [GET /static/js/jquery.cookie.js HTTP/1.1 200 1460 https://chronos.irisconnect.com/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0291 ACC 2016-01-12 15:17:24 UTC -       192.168.100.200 [GET /static/js/underscore.js HTTP/1.1 200 5995 https://chronos.irisconnect.com/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0292 ACC 2016-01-12 15:17:24 UTC -       192.168.100.200 [GET /static/js/base.js HTTP/1.1 200 742 https://chronos.irisconnect.com/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0293 ACC 2016-01-12 15:17:24 UTC -       192.168.100.200 [GET /static/js/login.js HTTP/1.1 200 196 https://chronos.irisconnect.com/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0294 ACC 2016-01-12 15:17:24 UTC -       192.168.100.200 [GET /static/js/navbar.js HTTP/1.1 200 295 https://chronos.irisconnect.com/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0295 ACC 2016-01-12 15:17:24 UTC -       192.168.100.200 [GET /static/js/underscore.string.min.js HTTP/1.1 200 3590 https://chronos.irisconnect.com/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0296 ACC 2016-01-12 15:17:24 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 404 143 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0297 ACC 2016-01-12 15:17:24 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 404 143 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0298 ACC 2016-01-12 15:18:14 UTC -       192.168.100.200 [GET / HTTP/1.1 200 1782 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0299 ACC 2016-01-12 15:18:32 UTC -       192.168.100.200 [GET / HTTP/1.1 301 184 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0300 ACC 2016-01-12 15:18:32 UTC -       192.168.100.200 [GET / HTTP/1.1 200 1782 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0301 ACC 2016-01-12 15:18:32 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 404 143 https://chronos.irisconnect.com/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0302 ACC 2016-01-12 15:19:42 UTC -       192.168.100.200 [GET / HTTP/1.1 502 574 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0303 ACC 2016-01-12 15:19:53 UTC -       192.168.100.200 [GET / HTTP/1.1 200 1782 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0304 ACC 2016-01-12 15:20:15 UTC -       192.168.100.200 [GET / HTTP/1.1 200 1782 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0305 ACC 2016-01-12 15:23:50 UTC -       192.168.100.200 [GET / HTTP/1.1 200 1782 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0306 ACC 2016-01-12 15:32:29 UTC -       192.168.100.200 [GET / HTTP/1.1 200 1782 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0307 ACC 2016-01-12 15:33:05 UTC -       192.168.100.200 [GET / HTTP/1.1 502 574 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0308 ACC 2016-01-12 15:33:25 UTC -       192.168.100.200 [GET / HTTP/1.1 200 1782 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0309 ACC 2016-01-12 15:33:59 UTC -       192.168.100.200 [GET / HTTP/1.1 502 574 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0310 ACC 2016-01-12 15:34:08 UTC -       192.168.100.200 [GET / HTTP/1.1 200 1782 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0311 ACC 2016-01-12 15:35:14 UTC -       192.168.100.200 [GET / HTTP/1.1 502 574 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0312 ACC 2016-01-12 15:39:55 UTC -       192.168.100.200 [GET / HTTP/1.1 200 1782 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0313 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0314 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0315 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0316 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0317 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0318 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0319 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0320 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0321 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0322 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0323 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0324 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0325 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0326 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0327 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0328 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0329 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0330 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0331 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0332 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0333 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0334 ACC 2016-01-12 16:09:32 UTC -       192.168.100.200 [\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03\x18\x07\xE53\x18\x91\xF4\x8B\xB9\xDB\xDF\x83H\xA9\xD0yL~\xC6\x06t\x8A\xCF\xD7\xD4{\x103O\xF6\xC2\xD3 $\xB9Kr\xF0\xD6Z\x10Pe\xFEwq?|\xCD\x80\x0F>g\xDB\xBB\xAB\xA2)8\xD1\xB6/\xD10\xE3\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0 400 172 - - -]+0335 ACC 2016-01-12 16:09:32 UTC -       192.168.100.200 [\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03\x93\x94\xD0\xD0\xEF\xBDG`l8\xA2\x93A\x8D\xF8~\x83.o\xB24G\xDEoJ\x9D\xBC^\xC6WT 400 172 - - -]+0336 ACC 2016-01-12 16:09:32 UTC -       192.168.100.200 [\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03[\x1B\xB26\xE1\xF8\x17\x5C\x92\xE6\x89\x908\x89\xAD\xBD\x835\xA2\xC1\x9D\xE2\xC6Y \x22\x97\x92\xE2\x8Fa\xFD $\xB9Kr\xF0\xD6Z\x10Pe\xFEwq?|\xCD\x80\x0F>g\xDB\xBB\xAB\xA2)8\xD1\xB6/\xD10\xE3\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0 400 172 - - -]+0337 ACC 2016-01-12 16:09:32 UTC -       192.168.100.200 [\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03d8\xF2\x90;P\xC4\xB0\xAB\xBB\xC2V\xF2]2dw4E\xB9\xC3\xC01\xDD\xD4\xDF\x8A\xEB\x8F\x80O\x99 $\xB9Kr\xF0\xD6Z\x10Pe\xFEwq?|\xCD\x80\x0F>g\xDB\xBB\xAB\xA2)8\xD1\xB6/\xD10\xE3\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0 400 172 - - -]+0338 ACC 2016-01-12 16:09:32 UTC -       192.168.100.200 [\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03\x04\xC3\xA3R\x8B>\xCBf\xB2'L\x7F\x15\x1D\x0B\x8A\xE2\xD4%\x10R*sY\xB6\x04S\xEC\x9B\xC0lb $\xB9Kr\xF0\xD6Z\x10Pe\xFEwq?|\xCD\x80\x0F>g\xDB\xBB\xAB\xA2)8\xD1\xB6/\xD10\xE3\x00\x1E\xC0+\xC0/\x00\x9E\xCC\x14\xCC\x13\xC0 400 172 - - -]+0339 ACC 2016-01-12 16:09:32 UTC -       192.168.100.200 [\x16\x03\x01\x00\xAB\x01\x00\x00\xA7\x03\x02kS\x02o\x8A\xCA\x91hN\xBC\xBE\x0B\xBFg\xF5\xE9`\x89k\xF44n\xE9\xCD\xA1\x87\x00\xA6\xE0\x11K\xB4\x00\x00\x14\xC0 400 172 - - -]+0340 ACC 2016-01-12 16:09:32 UTC -       192.168.100.200 [\x16\x03\x01\x00\xAB\x01\x00\x00\xA7\x03\x01\x9A\xCF\xEF\xDC\x02F6\x8C\xF6\xE0\xF5\xE3\x84W\x96 400 172 - - -]+0341 ACC 2016-01-12 16:26:35 UTC -       192.168.100.200 [GET / HTTP/1.1 200 1782 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0342 ACC 2016-01-12 16:29:30 UTC -       192.168.100.200 [GET / HTTP/1.1 200 1782 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0343 ACC 2016-01-12 16:29:44 UTC -       192.168.100.200 [GET / HTTP/1.1 200 1782 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0344 ACC 2016-01-12 16:31:59 UTC -       192.168.100.200 [GET / HTTP/1.1 502 574 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0345 ACC 2016-01-12 16:32:19 UTC -       192.168.100.200 [GET / HTTP/1.1 200 1782 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 -]+0346 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0347 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0348 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0349 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0350 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0351 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0352 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0353 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0354 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0355 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0356 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0357 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0358 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0359 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0360 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0361 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0362 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0363 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0364 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0365 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0366 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0367 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0368 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0369 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0370 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0371 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0372 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0373 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0374 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0375 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0376 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0377 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0378 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0379 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0380 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0381 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0382 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0383 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0384 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0385 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0386 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0387 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0388 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0389 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0390 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0391 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0392 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0393 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0394 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0395 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0396 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0397 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0398 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0399 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0400 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0401 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0402 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0403 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0404 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0405 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0406 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0407 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0408 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0409 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0410 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0411 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0412 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0413 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0414 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0415 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0416 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0417 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0418 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0419 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0420 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0421 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0422 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0423 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0424 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0425 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0426 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0427 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0428 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0429 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0430 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0431 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0432 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0433 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0434 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0435 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0436 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0437 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0438 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0439 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0440 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0441 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0442 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0443 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0444 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0445 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0446 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0447 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0448 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0449 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0450 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0451 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0452 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0453 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0454 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0455 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0456 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0457 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0458 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0459 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0460 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0461 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0462 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0463 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0464 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0465 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0466 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0467 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0468 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0469 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0470 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0471 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0472 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0473 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0474 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0475 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0476 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0477 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0478 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0479 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0480 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0481 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0482 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0483 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0484 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0485 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0486 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0487 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0488 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0489 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0490 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0491 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0492 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0493 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0494 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0495 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0496 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0497 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0498 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0499 AQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [ 0 0   ]+0500 ACC 2016-03-10 15:47:52 UTC -       192.168.100.200 [GET / HTTP/1.1 403 570 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 -]+0501 ACC 2016-03-10 15:47:52 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 404 570 http://enterprise:4080/ Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 -]+0502 ACC 2016-03-10 15:49:01 UTC -       192.168.100.200 [GET /2016-03-09/16-53-58.csv HTTP/1.1 403 570 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 -]+0503 ACC 2016-03-10 15:50:34 UTC -       192.168.100.200 [GET /2016-03-09/16-53-58.csv HTTP/1.1 200 5876892 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 -]+0504 ACC 2016-03-10 15:55:10 UTC -       192.168.100.200 [GET /2016-03-09/16-53-58.csv HTTP/1.1 403 570 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 -]+0505 ACC 2016-03-10 15:55:10 UTC -       192.168.100.200 [GET /2016-03-09/16-53-58.csv HTTP/1.1 403 570 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 -]+0506 ACC 2016-03-10 16:05:24 UTC -       192.168.100.200 [GET /2016-03-09/16-53-58.csv HTTP/1.1 200 5876892 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 -]+0507 ACC 2016-03-10 16:09:43 UTC -       192.168.100.200 [GET /2016-03-09/16-53-58.csv HTTP/1.1 206 1 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 -]+0508 ACC 2016-03-10 16:09:43 UTC -       192.168.100.200 [GET /2016-03-09/16-53-58.csv HTTP/1.1 206 5874255 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 -]+0509 ACC 2016-03-10 16:14:42 UTC -       192.168.100.200 [GET /2016-03-09/16-53-58.csv HTTP/1.1 200 5876892 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 -]+0510 ACC 2016-03-10 16:14:52 UTC -       192.168.100.200 [GET /2016-03-09/16-53-58.csv HTTP/1.1 206 1 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 -]+0511 ACC 2016-03-10 16:14:52 UTC -       192.168.100.200 [GET /2016-03-09/16-53-58.csv HTTP/1.1 206 5874255 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 -]+0512 ACC 2016-03-10 16:16:38 UTC -       192.168.100.200 [GET /2016-03-09/16-53-58.csv HTTP/1.1 200 5876892 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0513 ACC 2016-03-10 16:16:54 UTC -       192.168.100.200 [GET /2016-03-09/16-53-58.csv HTTP/1.1 200 5876892 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0514 ACC 2016-03-10 16:41:17 UTC -       192.168.100.200 [GET /2016-03-09/16-53-58.csv HTTP/1.1 200 5876892 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0515 ACC 2016-03-10 16:52:18 UTC -       192.168.100.200 [GET /2016-03-09/16-53-58.csv HTTP/1.1 200 5876892 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0516 ACC 2016-03-10 17:42:28 UTC -       127.  0.  0.  1 [POST / HTTP/1.1 403 168 - curl/7.29.0 -]+0517 ACC 2016-03-10 17:48:10 UTC -       192.168.100.200 [GET /www/2016-03-10/17-47-35.csv HTTP/1.1 404 570 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 -]+0518 ACC 2016-03-10 17:48:10 UTC -       192.168.100.200 [GET /favicon.ico HTTP/1.1 404 570 http://enterprise:4080/www/2016-03-10/17-47-35.csv Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 -]+0519 ACC 2016-03-10 17:48:28 UTC -       192.168.100.200 [GET /2016-03-10/17-47-35.csv HTTP/1.1 200 5876894 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 -]+0520 ACC 2016-03-10 18:10:00 UTC -       192.168.100.200 [GET /2016-03-10/18-09-27.csv HTTP/1.1 200 5876894 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 -]+0521 ACC 2016-03-10 18:10:08 UTC -       192.168.100.200 [GET /2016-03-10/18-09-27.csv HTTP/1.1 200 5876894 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/601.4.4 (KHTML, like Gecko) Version/9.0.3 Safari/601.4.4 -]+0522 ACC 2016-03-10 18:10:40 UTC -       192.168.100.200 [GET /2016-03-10/18-09-27.csv HTTP/1.1 200 5876894 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0 -]+0523 ACC 2016-03-24 08:30:45 UTC -       192.168.108.220 [GET /untitled.svg HTTP/1.1 404 570 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 -]+0524 ACC 2016-03-24 08:30:45 UTC -       192.168.108.220 [GET /favicon.ico HTTP/1.1 404 570 http://enterprise:4080/untitled.svg Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 -]+0525 ACC 2016-03-24 08:31:16 UTC -       192.168.108.220 [GET /Untitled.svg HTTP/1.1 200 1484 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 -]+0526 ACC 2016-04-25 10:21:42 UTC -       192.168.108.220 [GET /2016-04-25-102102-qryrevbdpv$wg1nzbr6u/01/eu/eros-partner/2016-03,2016-04=all=monthly.csv HTTP/1.1 404 570 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36 -]+0527 ACC 2016-04-25 10:21:42 UTC -       192.168.108.220 [GET /favicon.ico HTTP/1.1 404 570 http://enterprise:4080/2016-04-25-102102-qryrevbdpv$wg1nzbr6u/01/eu/eros-partner/2016-03,2016-04=all=monthly.csv Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36 -]+0528 ACC 2016-05-09 15:37:55 UTC -       127.  0.  0.  1 [GET /aphrodite/2016-05-09-153751-01-uxgadcudzsk3vghkrnct HTTP/1.1 404 168 - - -]+0529 ACC 2016-05-09 16:16:08 UTC -       127.  0.  0.  1 [GET /aphrodite/2016-05-09-161604-01-uxoz2zb0dg10l1xhmgim/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1 404 168 - - -]+0530 ACC 2016-05-09 16:26:17 UTC -       127.  0.  0.  1 [GET /aphrodite/2016-05-09-162613-01-0sci1rt2qkfnb+rppojk/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1 404 168 - - -]+0531 ACC 2016-05-09 16:36:15 UTC -       192.168.100.200 [GET /aphrodite/2016-05-09-163545-01-ipam4ea$+ergir8ca6y4/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1 200 107 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36 -]+0532 ACC 2016-05-09 16:53:46 UTC -       192.168.100.240 [GET /aphrodite/2016-05-09-165048-01-+7t+mjmflsgyru98wb4q/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1 200 107 - Wget/1.14 (linux-gnu) -]+0533 ACC 2016-05-09 16:54:24 UTC -       192.168.100.240 [GET /aphrodite/2016-05-09-165420-01-xy$ocodamcst+$fmnmdf/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1 200 107 - - -]+0534 ACC 2016-05-09 17:02:49 UTC -       192.168.100.240 [GET /aphrodite/2016-05-09-170245-01-6ekoffxc3w1uejleq92o/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1 200 107 - - -]+0535 ACC 2016-05-09 17:03:29 UTC -       192.168.100.240 [GET /aphrodite/2016-05-09-170326-01-iztthfuj3jmrspt4j1ex/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1 200 107 - - -]+0536 ACC 2016-05-10 08:44:23 UTC -       192.168.108.240 [GET /aphrodite/2016-05-10-084420-01-n0mxsllyzjgdu3j3a5sz/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1 200 107 - - -]+0537 ACC 2016-05-10 09:58:27 UTC -       192.168.108.240 [GET /aphrodite/2016-05-10-095822-01-9h150ct4wu9eds1o8yte/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1 200 107 - - -]+0538 ACC 2016-05-11 07:16:44 UTC -       127.  0.  0.  1 [GET /aphrodite/2016-05-11-071048-01-itf2kjrvtlxbbfd2msbs/eu/eros-partner/2016-04,2016-05=all=monthly.csv HTTP/1.1 200 107 - Wget/1.14 (linux-gnu) -]+0539 QQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 [Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.]0539 QQQ 1970-01-01 00:00:00 UTC -         0.  0.  0.  0 []+0540 ERR 2016-11-30 10:19:04 UTC emerg     0.  0.  0.  0 [1918#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0541 ERR 2016-11-30 18:12:12 UTC emerg     0.  0.  0.  0 [1919#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0542 ERR 2016-12-01 15:42:55 UTC emerg     0.  0.  0.  0 [1913#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0543 ERR 2016-12-02 10:05:17 UTC emerg     0.  0.  0.  0 [1906#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0544 ERR 2016-12-02 20:18:52 UTC emerg     0.  0.  0.  0 [1914#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0545 ERR 2016-12-04 17:17:27 UTC emerg     0.  0.  0.  0 [1921#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0546 ERR 2016-12-04 17:47:00 UTC emerg     0.  0.  0.  0 [1913#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0547 ERR 2016-12-04 18:19:11 UTC emerg     0.  0.  0.  0 [1883#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0548 ERR 2016-12-04 18:29:31 UTC emerg     0.  0.  0.  0 [1878#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0549 ERR 2016-12-05 09:52:42 UTC emerg     0.  0.  0.  0 [1907#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0550 ERR 2016-12-05 11:04:54 UTC emerg     0.  0.  0.  0 [1883#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0551 ERR 2016-12-06 09:42:50 UTC emerg     0.  0.  0.  0 [1885#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0552 ERR 2016-12-06 13:54:02 UTC emerg     0.  0.  0.  0 [1881#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0553 ERR 2016-12-06 19:11:38 UTC emerg     0.  0.  0.  0 [1886#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0554 ERR 2016-12-07 13:02:09 UTC emerg     0.  0.  0.  0 [1885#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0555 ERR 2016-12-07 19:25:29 UTC emerg     0.  0.  0.  0 [1898#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0556 ERR 2016-12-07 19:53:57 UTC emerg     0.  0.  0.  0 [6923#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0557 ERR 2016-12-13 10:05:29 UTC emerg     0.  0.  0.  0 [1879#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0558 ERR 2016-12-13 18:30:32 UTC emerg     0.  0.  0.  0 [1888#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0559 ERR 2016-12-13 18:39:07 UTC emerg     0.  0.  0.  0 [1882#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0560 ERR 2016-12-13 18:52:06 UTC emerg     0.  0.  0.  0 [1893#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0561 ERR 2016-12-15 03:36:59 UTC emerg     0.  0.  0.  0 [1879#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]+0562 ERR 2016-12-21 11:53:35 UTC emerg     0.  0.  0.  0 [1378#0:  SSL_CTX_use_PrivateKey_file("/var/lib/ic-tls/ic-tls.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)]
+ data/include-result.lhs view
@@ -0,0 +1,57 @@+re-pp and re-include test file+==============================++This is a psuedo-Haskell script used to test the re-pp (and it cut-down+variant, re-include).+++Here we have a couple of single-line vanilla code fragment.+\begin{code}+{-# LANGUAGE QuasiQuotes                      #-}+\end{code}++\begin{code}+{-# OPTIONS_GHC -fno-warn-missing-signatures  #-}+\end{code}++And here is an empty one.+\begin{code}+\end{code}++The top main stuff:+%main top++A multi-line vanilla code fragment.++\begin{code}+import           Control.Applicative+import           TestKit+\end{code}+++An (self-)include directive+<div class='includedcodeblock'>+\begin{code}+evalme_PPT_01 = checkThis "" (Just 0) $+  length <$>+    Just []+\end{code}+</div>++++A one-line evalme fragment.+\begin{code}+evalme_PPT_00 = checkThis "" 0 $+  length []+\end{code}++An evalme fragment spread over a couple of lines.+\begin{code}+evalme_PPT_01 = checkThis "" (Just 0) $+  length <$>+    Just []+\end{code}++And the main bottom stuff.+%main bottom
+ data/pp-result-doc.lhs view
@@ -0,0 +1,58 @@+re-pp and re-include test file+==============================++This is a psuedo-Haskell script used to test the re-pp (and it cut-down+variant, re-include).+++Here we have a couple of single-line vanilla code fragment.+\begin{code}+{-# LANGUAGE QuasiQuotes                      #-}+\end{code}++\begin{code}+{-# OPTIONS_GHC -fno-warn-missing-signatures  #-}+\end{code}++And here is an empty one.+\begin{code}+\end{code}+\begin{code}++The top main stuff:++A multi-line vanilla code fragment.++\begin{code}+import           Control.Applicative+import           TestKit+\end{code}+++An (self-)include directive+<div class='includedcodeblock'>+\begin{code}+evalme_PPT_01 = checkThis "" (Just 0) $+  length <$>+    Just []+\end{code}+</div>++++A one-line evalme fragment.+<div class="replcodeblock">+\begin{code}+  length []+\end{code}+</div>++An evalme fragment spread over a couple of lines.+<div class="replcodeblock">+\begin{code}+  length <$>+    Just []+\end{code}+</div>++And the main bottom stuff.
+ data/pp-result-gen.lhs view
@@ -0,0 +1,66 @@+re-pp and re-include test file+==============================++This is a psuedo-Haskell script used to test the re-pp (and it cut-down+variant, re-include).+++Here we have a couple of single-line vanilla code fragment.+\begin{code}+{-# LANGUAGE QuasiQuotes                      #-}+\end{code}++\begin{code}+{-# OPTIONS_GHC -fno-warn-missing-signatures  #-}+\end{code}++And here is an empty one.+\begin{code}+\end{code}++The top main stuff:+\begin{code}+module Main(main) where+\end{code}++*********************************************************+*+* WARNING: this is generated from pp-tutorial-master.lhs +*+*********************************************************+++A multi-line vanilla code fragment.++\begin{code}+import           Control.Applicative+import           TestKit+\end{code}+++An (self-)include directive+%include "data/pp-test.lhs" "^evalme_PPT_01"+++A one-line evalme fragment.+\begin{code}+evalme_PPT_00 = checkThis "evalme_PPT_00" 0 $+  length []+\end{code}++An evalme fragment spread over a couple of lines.+\begin{code}+evalme_PPT_01 = checkThis "evalme_PPT_01" (Just 0) $+  length <$>+    Just []+\end{code}++And the main bottom stuff.+\begin{code}+main :: IO ()+main = runTests+  [ evalme_PPT_01+  , evalme_PPT_00+  ]+\end{code}+
+ data/pp-test.lhs view
@@ -0,0 +1,50 @@+re-pp and re-include test file+==============================++This is a psuedo-Haskell script used to test the re-pp (and it cut-down+variant, re-include).+++Here we have a couple of single-line vanilla code fragment.+\begin{code}+{-# LANGUAGE QuasiQuotes                      #-}+\end{code}++\begin{code}+{-# OPTIONS_GHC -fno-warn-missing-signatures  #-}+\end{code}++And here is an empty one.+\begin{code}+\end{code}++The top main stuff:+%main top++A multi-line vanilla code fragment.++\begin{code}+import           Control.Applicative+import           TestKit+\end{code}+++An (self-)include directive+%include "data/pp-test.lhs" "^evalme_PPT_01"+++A one-line evalme fragment.+\begin{code}+evalme_PPT_00 = checkThis "" 0 $+  length []+\end{code}++An evalme fragment spread over a couple of lines.+\begin{code}+evalme_PPT_01 = checkThis "" (Just 0) $+  length <$>+    Just []+\end{code}++And the main bottom stuff.+%main bottom
+ docs/pcre-macros.txt view
@@ -0,0 +1,143 @@+|name            |caps|regex=regex=regex=regex=regex             |examples                                  |anti-examples                            |fails|parser           |comment                                   +|----------------|----|------------------------------------------|------------------------------------------|-----------------------------------------|-----|-----------------|------------------------------------------+|%address.ipv4   |0   |[0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}[.][0\|0.0.0.0                                   |                                         |     |parseSeverity    |an a.b.c.d IPv4 address                   +|                |    |\-9]{1,3}                                 |123.45.6.78                               |foo                                      |     |                 |                                          +|                |    |                                          |9.9.9.9                                   |1234.0.0.0                               |     |                 |                                          +|                |    |                                          |255.255.255.255                           |1.2.3                                    |     |                 |                                          +|                |    |                                          |                                          |1.2.3.                                   |     |                 |                                          +|                |    |                                          |                                          |1.2..4                                   |     |                 |                                          +|                |    |                                          |                                          |www.example.com                          |     |                 |                                          +|                |    |                                          |                                          |2001:0db8:85a3:0000:0000:8a2e:0370:7334  |     |                 |                                          +|%date           |0   |[0-9]{4}-[0-9]{2}-[0-9]{2}                |2016-12-31                                |                                         |     |parseDate        |a YYYY-MM-DD format date                  +|                |    |                                          |0001-01-01                                |2016/01/31                               |     |                 |                                          +|                |    |                                          |1000-01-01                                |2016-1-31                                |     |                 |                                          +|                |    |                                          |                                          |2016-01-1                                |     |                 |                                          +|                |    |                                          |                                          |2016-001-01                              |     |                 |                                          +|%date.slashes   |0   |[0-9]{4}/[0-9]{2}/[0-9]{2}                |2016/12/31                                |                                         |     |parseSlashesDate |a YYYY/MM/DD format date                  +|                |    |                                          |0001/01/01                                |2016-01-31                               |     |                 |                                          +|                |    |                                          |1000/01/01                                |2016/1/31                                |     |                 |                                          +|                |    |                                          |                                          |2016/01/1                                |     |                 |                                          +|                |    |                                          |                                          |2016/001/01                              |     |                 |                                          +|%datetime       |0   |@{%date}[ T]@{%time}(?:@{%timezone}| UTC)\|2016-12-31 23:37:22.525343 UTC            |                                         |     |parseDateTime    |ISO-8601 format date and time + simple va\+|                |    |\?                                        |2016-12-31 23:37:22.525343                |2016-12-31 23:37:22.525343 EST           |     |                 |\riants                                   +|                |    |                                          |2016-12-31 23:37:22                       |                                         |     |                 |                                          +|                |    |                                          |2016-12-31T23:37:22+0100                  |                                         |     |                 |                                          +|                |    |                                          |2016-12-31T23:37:22-01:00                 |                                         |     |                 |                                          +|                |    |                                          |2016-12-31T23:37:22-23:59                 |                                         |     |                 |                                          +|                |    |                                          |2016-12-31T23:37:22Z                      |                                         |     |                 |                                          +|%datetime.8601  |0   |@{%date}T@{%time}@{%timezone}             |2016-12-31T23:37:22.343Z                  |                                         |     |parseDateTime8601|YYYY-MM-DDTHH:MM:SS[.Q*](Z|[+-]HHMM) form\+|                |    |                                          |2016-12-31T23:37:22-0100                  |2016-12-31 23:37:22.525343 EST           |     |                 |\at date and time                         +|                |    |                                          |2016-12-31T23:37:22+23:59                 |                                         |     |                 |                                          +|%datetime.clf   |0   |[0-9]{2}/@{%shortmonth}/[0-9]{4}:[0-9]{2}\|10/Oct/2000:13:55:36 -0700                |                                         |     |parseDateTimeCLF |Common Log Format date+time: %d/%b/%Y:%H:\+|                |    |\:[0-9]{2}:[0-9]{2} [+-][0-9]{2}:?[0-9]{2\|10/Oct/2000:13:55:36 +07:00               |2016-12-31T23:37+0100                    |     |                 |\%M:%S %z                                 +|                |    |\}                                        |                                          |10/Oct/2000:13:55:36-0700                |     |                 |                                          +|                |    |                                          |                                          |10/OCT/2000:13:55:36 -0700               |     |                 |                                          +|                |    |                                          |                                          |10/Oct/2000:13:55 -0700                  |     |                 |                                          +|                |    |                                          |                                          |10/Oct/2000:13:55Z                       |     |                 |                                          +|%email.simple   |0   |[a-zA-Z0-9%_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0\|user-name%foo.bar.com@an-example.com      |                                         |     |-                |an email address                          +|                |    |\-9.-]+                                   |                                          |not-an-email-address                     |     |                 |                                          +|                |    |                                          |                                          |@not-an-email-address                    |     |                 |                                          +|%frac           |0   |-?[0-9]+(?:\.[0-9]+)?                     |0                                         |                                         |     |parseInteger     |a decimal integer                         +|                |    |                                          |1234567890                                |0A                                       |     |                 |                                          +|                |    |                                          |00                                        |+0                                       |     |                 |                                          +|                |    |                                          |01                                        |0.                                       |     |                 |                                          +|                |    |                                          |-1                                        |.0                                       |     |                 |                                          +|                |    |                                          |-0                                        |.                                        |     |                 |                                          +|                |    |                                          |0.1234567890                              |-                                        |     |                 |                                          +|                |    |                                          |-1.0                                      |-.                                       |     |                 |                                          +|                |    |                                          |                                          |-1.                                      |     |                 |                                          +|                |    |                                          |                                          |-.1                                      |     |                 |                                          +|%hex            |0   |[0-9a-fA-F]+                              |0                                         |                                         |     |parseHex         |a string of one or more hexadecimal digit\+|                |    |                                          |12345678                                  |0x10                                     |     |                 |\s                                        +|                |    |                                          |90abcdef                                  |0z                                       |     |                 |                                          +|                |    |                                          |90ABCDEF                                  |-1a                                      |     |                 |                                          +|                |    |                                          |00                                        |                                         |     |                 |                                          +|                |    |                                          |010                                       |                                         |     |                 |                                          +|%id             |0   |_*[a-zA-Z][a-zA-Z0-9_]*                   |a                                         |                                         |     |-                |a standard C-style alphanumeric identifie\+|                |    |                                          |A                                         |1                                        |     |                 |\r (with _s)                              +|                |    |                                          |A1                                        |_                                        |     |                 |                                          +|                |    |                                          |a_                                        |__                                       |     |                 |                                          +|                |    |                                          |a1_B2                                     |__1                                      |     |                 |                                          +|                |    |                                          |_abc                                      |1a                                       |     |                 |                                          +|                |    |                                          |__abc                                     |a'                                       |     |                 |                                          +|%id'            |0   |_*[a-zA-Z][a-zA-Z0-9_']*                  |a                                         |                                         |     |-                |a standard Haskell-style alphanumeric ide\+|                |    |                                          |A                                         |1                                        |     |                 |\ntifier (with '_'s and '''s)             +|                |    |                                          |A1                                        |_                                        |     |                 |                                          +|                |    |                                          |a_                                        |__                                       |     |                 |                                          +|                |    |                                          |a1_B2                                     |__1                                      |     |                 |                                          +|                |    |                                          |_abc                                      |1a                                       |     |                 |                                          +|                |    |                                          |__abc                                     |'                                        |     |                 |                                          +|                |    |                                          |a'                                        |'a                                       |     |                 |                                          +|                |    |                                          |_a'                                       |_'                                       |     |                 |                                          +|                |    |                                          |a'b                                       |_1'                                      |     |                 |                                          +|%id-            |0   |_*[a-zA-Z][a-zA-Z0-9_'-]*                 |a                                         |                                         |     |-                |an identifier with -s                     +|                |    |                                          |A                                         |1                                        |     |                 |                                          +|                |    |                                          |A1                                        |_                                        |     |                 |                                          +|                |    |                                          |a_                                        |__                                       |     |                 |                                          +|                |    |                                          |a1_B2                                     |__1                                      |     |                 |                                          +|                |    |                                          |_abc                                      |1a                                       |     |                 |                                          +|                |    |                                          |__abc                                     |'                                        |     |                 |                                          +|                |    |                                          |a'                                        |'a                                       |     |                 |                                          +|                |    |                                          |_a'                                       |_'                                       |     |                 |                                          +|                |    |                                          |a'b                                       |_1'                                      |     |                 |                                          +|                |    |                                          |a-                                        |                                         |     |                 |                                          +|                |    |                                          |a1-B2                                     |                                         |     |                 |                                          +|                |    |                                          |a1-B2-                                    |                                         |     |                 |                                          +|%int            |0   |-?[0-9]+                                  |0                                         |                                         |     |parseInteger     |a decimal integer                         +|                |    |                                          |1234567890                                |0A                                       |     |                 |                                          +|                |    |                                          |00                                        |+0                                       |     |                 |                                          +|                |    |                                          |01                                        |                                         |     |                 |                                          +|                |    |                                          |-1                                        |                                         |     |                 |                                          +|                |    |                                          |-0                                        |                                         |     |                 |                                          +|%nat            |0   |[0-9]+                                    |0                                         |                                         |     |parseInteger     |a string of one or more decimal digits    +|                |    |                                          |1234567890                                |0A                                       |     |                 |                                          +|                |    |                                          |00                                        |-1                                       |     |                 |                                          +|                |    |                                          |01                                        |                                         |     |                 |                                          +|%shortmonth     |0   |(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oc\|Jan                                       |                                         |     |parseShortMonth  |three letter month name: Jan-Dec          +|                |    |\t|Nov|Dec)                               |Feb                                       |jan                                      |     |                 |                                          +|                |    |                                          |Dec                                       |DEC                                      |     |                 |                                          +|                |    |                                          |                                          |January                                  |     |                 |                                          +|                |    |                                          |                                          |01                                       |     |                 |                                          +|                |    |                                          |                                          |1                                        |     |                 |                                          +|%string.simple  |0   |"[^"[:cntrl:]]*"                          |""                                        |                                         |     |parseSimpleString|a decimal integer                         +|                |    |                                          |"foo"                                     |"                                        |     |                 |                                          +|                |    |                                          |"\"                                       |"\""                                     |     |                 |                                          +|                |    |                                          |""                                        |"\"\""                                   |     |                 |                                          +|                |    |                                          |                                          |"\"\\\""                                 |     |                 |                                          +|                |    |                                          |                                          |"\"foo\""                                |     |                 |                                          +|                |    |                                          |                                          |"aa                                      |     |                 |                                          +|%syslog.severity|0   |(?:emerg|panic|alert|crit|warning|warn|no\|emerg                                     |                                         |     |parseSeverity    |syslog severity keyword (debug-emerg)     +|                |    |\tice|info|debug|err(?:or)?)              |panic                                     |Emergency                                |     |                 |                                          +|                |    |                                          |alert                                     |ALERT                                    |     |                 |                                          +|                |    |                                          |crit                                      |                                         |     |                 |                                          +|                |    |                                          |err                                       |                                         |     |                 |                                          +|                |    |                                          |error                                     |                                         |     |                 |                                          +|                |    |                                          |warn                                      |                                         |     |                 |                                          +|                |    |                                          |warning                                   |                                         |     |                 |                                          +|                |    |                                          |notice                                    |                                         |     |                 |                                          +|                |    |                                          |info                                      |                                         |     |                 |                                          +|                |    |                                          |debug                                     |                                         |     |                 |                                          +|%time           |0   |[0-9]{2}:[0-9]{2}:[0-9]{2}(?:[.][0-9]+)?  |00:00:00                                  |                                         |     |parseTimeOfDay   |a HH:MM:SS[.Q+]                           +|                |    |                                          |23:59:59                                  |235959                                   |     |                 |                                          +|                |    |                                          |00:00:00.1234567890                       |10:20                                    |     |                 |                                          +|                |    |                                          |                                          |A00:00:00                                |     |                 |                                          +|                |    |                                          |                                          |00:00:00A                                |     |                 |                                          +|                |    |                                          |                                          |23:59:59.                                |     |                 |                                          +|%timezone       |0   |(?:Z|[+-][0-9]{2}:?[0-9]{2})              |Z                                         |                                         |     |parseTimeZone    |an IOS-8601 TZ specification              +|                |    |                                          |+00:00                                    |00                                       |     |                 |                                          +|                |    |                                          |+0000                                     |A00:00                                   |     |                 |                                          +|                |    |                                          |+0200                                     |UTC                                      |     |                 |                                          +|                |    |                                          |-0100                                     |EST                                      |     |                 |                                          +|                |    |                                          |                                          | EST                                     |     |                 |                                          +|%url            |1   |([hH][tT][tT][pP][sS]?|[fF][tT][pP])://[^\|https://mathiasbynens.be/demo/url-regex   |                                         |     |-                |a URL                                     +|                |    |\[:space:]/$.?#].[^[:space:]]*            |http://foo.com/blah_blah                  |http://                                  |     |                 |                                          +|                |    |                                          |http://foo.com/blah_blah/                 |http://.                                 |     |                 |                                          +|                |    |                                          |http://foo.com/blah_blah_(wikipedia)      |http://..                                |     |                 |                                          +|                |    |                                          |http://foo.com/blah_blah_(wikipedia)_(aga\|http://../                               |     |                 |                                          +|                |    |                                          |\in)                                      |http://?                                 |     |                 |                                          +|                |    |                                          |http://www.example.com/wpstyle/?p=364     |http://??                                |     |                 |                                          +|                |    |                                          |HTTPS://foo.bar/?q=Test%20URL-encoded%20s\|http://foo.bar?q=Spaces should be encoded|     |                 |                                          +|                |    |                                          |\tuff                                     |//                                       |     |                 |                                          +|                |    |                                          |HTTP://223.255.255.254                    |http://##/                               |     |                 |                                          +|                |    |                                          |ftp://223.255.255.254                     |http://##                                |     |                 |                                          +|                |    |                                          |FTP://223.255.255.254                     |http://##/                               |     |                 |                                          
+ docs/pcre-nginx-log-processor.txt view
@@ -0,0 +1,159 @@+|name            |caps|regex=regex=regex=regex=regex             |examples                                  |anti-examples                            |fails|parser           |comment                                   +|----------------|----|------------------------------------------|------------------------------------------|-----------------------------------------|-----|-----------------|------------------------------------------+|%address.ipv4   |0   |[0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}[.][0\|0.0.0.0                                   |                                         |     |parseSeverity    |an a.b.c.d IPv4 address                   +|                |    |\-9]{1,3}                                 |123.45.6.78                               |foo                                      |     |                 |                                          +|                |    |                                          |9.9.9.9                                   |1234.0.0.0                               |     |                 |                                          +|                |    |                                          |255.255.255.255                           |1.2.3                                    |     |                 |                                          +|                |    |                                          |                                          |1.2.3.                                   |     |                 |                                          +|                |    |                                          |                                          |1.2..4                                   |     |                 |                                          +|                |    |                                          |                                          |www.example.com                          |     |                 |                                          +|                |    |                                          |                                          |2001:0db8:85a3:0000:0000:8a2e:0370:7334  |     |                 |                                          +|%date           |0   |[0-9]{4}-[0-9]{2}-[0-9]{2}                |2016-12-31                                |                                         |     |parseDate        |a YYYY-MM-DD format date                  +|                |    |                                          |0001-01-01                                |2016/01/31                               |     |                 |                                          +|                |    |                                          |1000-01-01                                |2016-1-31                                |     |                 |                                          +|                |    |                                          |                                          |2016-01-1                                |     |                 |                                          +|                |    |                                          |                                          |2016-001-01                              |     |                 |                                          +|%date.slashes   |0   |[0-9]{4}/[0-9]{2}/[0-9]{2}                |2016/12/31                                |                                         |     |parseSlashesDate |a YYYY/MM/DD format date                  +|                |    |                                          |0001/01/01                                |2016-01-31                               |     |                 |                                          +|                |    |                                          |1000/01/01                                |2016/1/31                                |     |                 |                                          +|                |    |                                          |                                          |2016/01/1                                |     |                 |                                          +|                |    |                                          |                                          |2016/001/01                              |     |                 |                                          +|%datetime       |0   |@{%date}[ T]@{%time}(?:@{%timezone}| UTC)\|2016-12-31 23:37:22.525343 UTC            |                                         |     |parseDateTime    |ISO-8601 format date and time + simple va\+|                |    |\?                                        |2016-12-31 23:37:22.525343                |2016-12-31 23:37:22.525343 EST           |     |                 |\riants                                   +|                |    |                                          |2016-12-31 23:37:22                       |                                         |     |                 |                                          +|                |    |                                          |2016-12-31T23:37:22+0100                  |                                         |     |                 |                                          +|                |    |                                          |2016-12-31T23:37:22-01:00                 |                                         |     |                 |                                          +|                |    |                                          |2016-12-31T23:37:22-23:59                 |                                         |     |                 |                                          +|                |    |                                          |2016-12-31T23:37:22Z                      |                                         |     |                 |                                          +|%datetime.8601  |0   |@{%date}T@{%time}@{%timezone}             |2016-12-31T23:37:22.343Z                  |                                         |     |parseDateTime8601|YYYY-MM-DDTHH:MM:SS[.Q*](Z|[+-]HHMM) form\+|                |    |                                          |2016-12-31T23:37:22-0100                  |2016-12-31 23:37:22.525343 EST           |     |                 |\at date and time                         +|                |    |                                          |2016-12-31T23:37:22+23:59                 |                                         |     |                 |                                          +|%datetime.clf   |0   |[0-9]{2}/@{%shortmonth}/[0-9]{4}:[0-9]{2}\|10/Oct/2000:13:55:36 -0700                |                                         |     |parseDateTimeCLF |Common Log Format date+time: %d/%b/%Y:%H:\+|                |    |\:[0-9]{2}:[0-9]{2} [+-][0-9]{2}:?[0-9]{2\|10/Oct/2000:13:55:36 +07:00               |2016-12-31T23:37+0100                    |     |                 |\%M:%S %z                                 +|                |    |\}                                        |                                          |10/Oct/2000:13:55:36-0700                |     |                 |                                          +|                |    |                                          |                                          |10/OCT/2000:13:55:36 -0700               |     |                 |                                          +|                |    |                                          |                                          |10/Oct/2000:13:55 -0700                  |     |                 |                                          +|                |    |                                          |                                          |10/Oct/2000:13:55Z                       |     |                 |                                          +|%email.simple   |0   |[a-zA-Z0-9%_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0\|user-name%foo.bar.com@an-example.com      |                                         |     |-                |an email address                          +|                |    |\-9.-]+                                   |                                          |not-an-email-address                     |     |                 |                                          +|                |    |                                          |                                          |@not-an-email-address                    |     |                 |                                          +|%frac           |0   |-?[0-9]+(?:\.[0-9]+)?                     |0                                         |                                         |     |parseInteger     |a decimal integer                         +|                |    |                                          |1234567890                                |0A                                       |     |                 |                                          +|                |    |                                          |00                                        |+0                                       |     |                 |                                          +|                |    |                                          |01                                        |0.                                       |     |                 |                                          +|                |    |                                          |-1                                        |.0                                       |     |                 |                                          +|                |    |                                          |-0                                        |.                                        |     |                 |                                          +|                |    |                                          |0.1234567890                              |-                                        |     |                 |                                          +|                |    |                                          |-1.0                                      |-.                                       |     |                 |                                          +|                |    |                                          |                                          |-1.                                      |     |                 |                                          +|                |    |                                          |                                          |-.1                                      |     |                 |                                          +|%hex            |0   |[0-9a-fA-F]+                              |0                                         |                                         |     |parseHex         |a string of one or more hexadecimal digit\+|                |    |                                          |12345678                                  |0x10                                     |     |                 |\s                                        +|                |    |                                          |90abcdef                                  |0z                                       |     |                 |                                          +|                |    |                                          |90ABCDEF                                  |-1a                                      |     |                 |                                          +|                |    |                                          |00                                        |                                         |     |                 |                                          +|                |    |                                          |010                                       |                                         |     |                 |                                          +|%id             |0   |_*[a-zA-Z][a-zA-Z0-9_]*                   |a                                         |                                         |     |-                |a standard C-style alphanumeric identifie\+|                |    |                                          |A                                         |1                                        |     |                 |\r (with _s)                              +|                |    |                                          |A1                                        |_                                        |     |                 |                                          +|                |    |                                          |a_                                        |__                                       |     |                 |                                          +|                |    |                                          |a1_B2                                     |__1                                      |     |                 |                                          +|                |    |                                          |_abc                                      |1a                                       |     |                 |                                          +|                |    |                                          |__abc                                     |a'                                       |     |                 |                                          +|%id'            |0   |_*[a-zA-Z][a-zA-Z0-9_']*                  |a                                         |                                         |     |-                |a standard Haskell-style alphanumeric ide\+|                |    |                                          |A                                         |1                                        |     |                 |\ntifier (with '_'s and '''s)             +|                |    |                                          |A1                                        |_                                        |     |                 |                                          +|                |    |                                          |a_                                        |__                                       |     |                 |                                          +|                |    |                                          |a1_B2                                     |__1                                      |     |                 |                                          +|                |    |                                          |_abc                                      |1a                                       |     |                 |                                          +|                |    |                                          |__abc                                     |'                                        |     |                 |                                          +|                |    |                                          |a'                                        |'a                                       |     |                 |                                          +|                |    |                                          |_a'                                       |_'                                       |     |                 |                                          +|                |    |                                          |a'b                                       |_1'                                      |     |                 |                                          +|%id-            |0   |_*[a-zA-Z][a-zA-Z0-9_'-]*                 |a                                         |                                         |     |-                |an identifier with -s                     +|                |    |                                          |A                                         |1                                        |     |                 |                                          +|                |    |                                          |A1                                        |_                                        |     |                 |                                          +|                |    |                                          |a_                                        |__                                       |     |                 |                                          +|                |    |                                          |a1_B2                                     |__1                                      |     |                 |                                          +|                |    |                                          |_abc                                      |1a                                       |     |                 |                                          +|                |    |                                          |__abc                                     |'                                        |     |                 |                                          +|                |    |                                          |a'                                        |'a                                       |     |                 |                                          +|                |    |                                          |_a'                                       |_'                                       |     |                 |                                          +|                |    |                                          |a'b                                       |_1'                                      |     |                 |                                          +|                |    |                                          |a-                                        |                                         |     |                 |                                          +|                |    |                                          |a1-B2                                     |                                         |     |                 |                                          +|                |    |                                          |a1-B2-                                    |                                         |     |                 |                                          +|%int            |0   |-?[0-9]+                                  |0                                         |                                         |     |parseInteger     |a decimal integer                         +|                |    |                                          |1234567890                                |0A                                       |     |                 |                                          +|                |    |                                          |00                                        |+0                                       |     |                 |                                          +|                |    |                                          |01                                        |                                         |     |                 |                                          +|                |    |                                          |-1                                        |                                         |     |                 |                                          +|                |    |                                          |-0                                        |                                         |     |                 |                                          +|%nat            |0   |[0-9]+                                    |0                                         |                                         |     |parseInteger     |a string of one or more decimal digits    +|                |    |                                          |1234567890                                |0A                                       |     |                 |                                          +|                |    |                                          |00                                        |-1                                       |     |                 |                                          +|                |    |                                          |01                                        |                                         |     |                 |                                          +|%shortmonth     |0   |(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oc\|Jan                                       |                                         |     |parseShortMonth  |three letter month name: Jan-Dec          +|                |    |\t|Nov|Dec)                               |Feb                                       |jan                                      |     |                 |                                          +|                |    |                                          |Dec                                       |DEC                                      |     |                 |                                          +|                |    |                                          |                                          |January                                  |     |                 |                                          +|                |    |                                          |                                          |01                                       |     |                 |                                          +|                |    |                                          |                                          |1                                        |     |                 |                                          +|%string.simple  |0   |"[^"[:cntrl:]]*"                          |""                                        |                                         |     |parseSimpleString|a decimal integer                         +|                |    |                                          |"foo"                                     |"                                        |     |                 |                                          +|                |    |                                          |"\"                                       |"\""                                     |     |                 |                                          +|                |    |                                          |""                                        |"\"\""                                   |     |                 |                                          +|                |    |                                          |                                          |"\"\\\""                                 |     |                 |                                          +|                |    |                                          |                                          |"\"foo\""                                |     |                 |                                          +|                |    |                                          |                                          |"aa                                      |     |                 |                                          +|%syslog.severity|0   |(?:emerg|panic|alert|crit|warning|warn|no\|emerg                                     |                                         |     |parseSeverity    |syslog severity keyword (debug-emerg)     +|                |    |\tice|info|debug|err(?:or)?)              |panic                                     |Emergency                                |     |                 |                                          +|                |    |                                          |alert                                     |ALERT                                    |     |                 |                                          +|                |    |                                          |crit                                      |                                         |     |                 |                                          +|                |    |                                          |err                                       |                                         |     |                 |                                          +|                |    |                                          |error                                     |                                         |     |                 |                                          +|                |    |                                          |warn                                      |                                         |     |                 |                                          +|                |    |                                          |warning                                   |                                         |     |                 |                                          +|                |    |                                          |notice                                    |                                         |     |                 |                                          +|                |    |                                          |info                                      |                                         |     |                 |                                          +|                |    |                                          |debug                                     |                                         |     |                 |                                          +|%time           |0   |[0-9]{2}:[0-9]{2}:[0-9]{2}(?:[.][0-9]+)?  |00:00:00                                  |                                         |     |parseTimeOfDay   |a HH:MM:SS[.Q+]                           +|                |    |                                          |23:59:59                                  |235959                                   |     |                 |                                          +|                |    |                                          |00:00:00.1234567890                       |10:20                                    |     |                 |                                          +|                |    |                                          |                                          |A00:00:00                                |     |                 |                                          +|                |    |                                          |                                          |00:00:00A                                |     |                 |                                          +|                |    |                                          |                                          |23:59:59.                                |     |                 |                                          +|%timezone       |0   |(?:Z|[+-][0-9]{2}:?[0-9]{2})              |Z                                         |                                         |     |parseTimeZone    |an IOS-8601 TZ specification              +|                |    |                                          |+00:00                                    |00                                       |     |                 |                                          +|                |    |                                          |+0000                                     |A00:00                                   |     |                 |                                          +|                |    |                                          |+0200                                     |UTC                                      |     |                 |                                          +|                |    |                                          |-0100                                     |EST                                      |     |                 |                                          +|                |    |                                          |                                          | EST                                     |     |                 |                                          +|%url            |1   |([hH][tT][tT][pP][sS]?|[fF][tT][pP])://[^\|https://mathiasbynens.be/demo/url-regex   |                                         |     |-                |a URL                                     +|                |    |\[:space:]/$.?#].[^[:space:]]*            |http://foo.com/blah_blah                  |http://                                  |     |                 |                                          +|                |    |                                          |http://foo.com/blah_blah/                 |http://.                                 |     |                 |                                          +|                |    |                                          |http://foo.com/blah_blah_(wikipedia)      |http://..                                |     |                 |                                          +|                |    |                                          |http://foo.com/blah_blah_(wikipedia)_(aga\|http://../                               |     |                 |                                          +|                |    |                                          |\in)                                      |http://?                                 |     |                 |                                          +|                |    |                                          |http://www.example.com/wpstyle/?p=364     |http://??                                |     |                 |                                          +|                |    |                                          |HTTPS://foo.bar/?q=Test%20URL-encoded%20s\|http://foo.bar?q=Spaces should be encoded|     |                 |                                          +|                |    |                                          |\tuff                                     |//                                       |     |                 |                                          +|                |    |                                          |HTTP://223.255.255.254                    |http://##/                               |     |                 |                                          +|                |    |                                          |ftp://223.255.255.254                     |http://##                                |     |                 |                                          +|                |    |                                          |FTP://223.255.255.254                     |http://##/                               |     |                 |                                          +|access          |9   |(@{%address.ipv4}) - (@{user}) \[(@{%date\|192.168.100.200 - - [12/Jan/2016:12:08:36\|                                         |     |parse_a          |an Nginx access log file line             +|                |    |\time.clf})\] (@{%string.simple}) (@{%nat\|\ +0000] "GET / HTTP/1.1" 200 3700 "-" "M\| -  [] ""   "" "" ""                     |     |                 |                                          +|                |    |\}) (@{%nat}) (@{%string.simple}) (@{%str\|\y Agent" "-"                             |                                         |     |                 |                                          +|                |    |\ing.simple}) (@{%string.simple})         |                                          |                                         |     |                 |                                          +|access_deg      |0   | -  \[\] ""   "" "" ""                    | -  [] ""   "" "" ""                      |                                         |     |-                |a degenerate Nginx access log file line   +|                |    |                                          |                                          |foo                                      |     |                 |                                          +|error           |5   |(@{%date.slashes}) (@{%time}) \[(@{%syslo\|2016/12/21 11:53:35 [emerg] 1378#0: foo   |                                         |     |parse_e          |an Nginx error log file line              +|                |    |\g.severity})\] (@{pid#tid:})(.*)         |2017/01/04 05:40:19 [error] 31623#0: *186\|foo                                      |     |                 |                                          +|                |    |                                          |\1296 no "ssl_certificate" is defined in \|                                         |     |                 |                                          +|                |    |                                          |\server listening on SSL port while SSL h\|                                         |     |                 |                                          +|                |    |                                          |\andshaking, client: 192.168.31.38, serve\|                                         |     |                 |                                          +|                |    |                                          |\r: 0.0.0.0:80                            |                                         |     |                 |                                          +|pid#tid:        |0   |(?:@{%nat})#(?:@{%nat}):                  |1378#0:                                   |                                         |     |parse_pid_tid    |<PID>#<TID>:                              +|                |    |                                          |                                          |24#:                                     |     |                 |                                          +|                |    |                                          |                                          |24.365:                                  |     |                 |                                          +|user            |0   |(?:-|[^[:space:]]+)                       |joe                                       |joe user                                 |     |parse_user       |a user ident (per RFC1413)                
+ docs/tdfa-macros.txt view
@@ -0,0 +1,150 @@+|name            |caps|regex=regex=regex=regex=regex             |examples                                  |anti-examples                            |fails|parser           |comment                                   +|----------------|----|------------------------------------------|------------------------------------------|-----------------------------------------|-----|-----------------|------------------------------------------+|%address.ipv4   |0   |[0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}[.][0\|0.0.0.0                                   |                                         |     |parseSeverity    |an a.b.c.d IPv4 address                   +|                |    |\-9]{1,3}                                 |123.45.6.78                               |foo                                      |     |                 |                                          +|                |    |                                          |9.9.9.9                                   |1234.0.0.0                               |     |                 |                                          +|                |    |                                          |255.255.255.255                           |1.2.3                                    |     |                 |                                          +|                |    |                                          |                                          |1.2.3.                                   |     |                 |                                          +|                |    |                                          |                                          |1.2..4                                   |     |                 |                                          +|                |    |                                          |                                          |www.example.com                          |     |                 |                                          +|                |    |                                          |                                          |2001:0db8:85a3:0000:0000:8a2e:0370:7334  |     |                 |                                          +|%date           |0   |[0-9]{4}-[0-9]{2}-[0-9]{2}                |2016-12-31                                |                                         |     |parseDate        |a YYYY-MM-DD format date                  +|                |    |                                          |0001-01-01                                |2016/01/31                               |     |                 |                                          +|                |    |                                          |1000-01-01                                |2016-1-31                                |     |                 |                                          +|                |    |                                          |                                          |2016-01-1                                |     |                 |                                          +|                |    |                                          |                                          |2016-001-01                              |     |                 |                                          +|%date.slashes   |0   |[0-9]{4}/[0-9]{2}/[0-9]{2}                |2016/12/31                                |                                         |     |parseSlashesDate |a YYYY/MM/DD format date                  +|                |    |                                          |0001/01/01                                |2016-01-31                               |     |                 |                                          +|                |    |                                          |1000/01/01                                |2016/1/31                                |     |                 |                                          +|                |    |                                          |                                          |2016/01/1                                |     |                 |                                          +|                |    |                                          |                                          |2016/001/01                              |     |                 |                                          +|%datetime       |1   |@{%date}[ T]@{%time}(@{%timezone}| UTC)?  |2016-12-31 23:37:22.525343 UTC            |                                         |     |parseDateTime    |ISO-8601 format date and time + simple va\+|                |    |                                          |2016-12-31 23:37:22.525343                |2016-12-31 23:37:22.525343 EST           |     |                 |\riants                                   +|                |    |                                          |2016-12-31 23:37:22                       |                                         |     |                 |                                          +|                |    |                                          |2016-12-31T23:37:22+0100                  |                                         |     |                 |                                          +|                |    |                                          |2016-12-31T23:37:22-01:00                 |                                         |     |                 |                                          +|                |    |                                          |2016-12-31T23:37:22-23:59                 |                                         |     |                 |                                          +|                |    |                                          |2016-12-31T23:37:22Z                      |                                         |     |                 |                                          +|%datetime.8601  |0   |@{%date}T@{%time}@{%timezone}             |2016-12-31T23:37:22.343Z                  |                                         |     |parseDateTime8601|YYYY-MM-DDTHH:MM:SS[.Q*](Z|[+-]HHMM) form\+|                |    |                                          |2016-12-31T23:37:22-0100                  |2016-12-31 23:37:22.525343 EST           |     |                 |\at date and time                         +|                |    |                                          |2016-12-31T23:37:22+23:59                 |                                         |     |                 |                                          +|%datetime.clf   |0   |[0-9]{2}/@{%shortmonth}/[0-9]{4}:[0-9]{2}\|10/Oct/2000:13:55:36 -0700                |                                         |     |parseDateTimeCLF |Common Log Format date+time: %d/%b/%Y:%H:\+|                |    |\:[0-9]{2}:[0-9]{2} [+-][0-9]{2}:?[0-9]{2\|10/Oct/2000:13:55:36 +07:00               |2016-12-31T23:37+0100                    |     |                 |\%M:%S %z                                 +|                |    |\}                                        |                                          |10/Oct/2000:13:55:36-0700                |     |                 |                                          +|                |    |                                          |                                          |10/OCT/2000:13:55:36 -0700               |     |                 |                                          +|                |    |                                          |                                          |10/Oct/2000:13:55 -0700                  |     |                 |                                          +|                |    |                                          |                                          |10/Oct/2000:13:55Z                       |     |                 |                                          +|%email.simple   |0   |[a-zA-Z0-9%_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0\|user-name%foo.bar.com@an-example.com      |                                         |     |-                |an email address                          +|                |    |\-9.-]+                                   |                                          |not-an-email-address                     |     |                 |                                          +|                |    |                                          |                                          |@not-an-email-address                    |     |                 |                                          +|%frac           |1   |-?[0-9]+(\.[0-9]+)?                       |0                                         |                                         |     |parseInteger     |a decimal integer                         +|                |    |                                          |1234567890                                |0A                                       |     |                 |                                          +|                |    |                                          |00                                        |+0                                       |     |                 |                                          +|                |    |                                          |01                                        |0.                                       |     |                 |                                          +|                |    |                                          |-1                                        |.0                                       |     |                 |                                          +|                |    |                                          |-0                                        |.                                        |     |                 |                                          +|                |    |                                          |0.1234567890                              |-                                        |     |                 |                                          +|                |    |                                          |-1.0                                      |-.                                       |     |                 |                                          +|                |    |                                          |                                          |-1.                                      |     |                 |                                          +|                |    |                                          |                                          |-.1                                      |     |                 |                                          +|%hex            |0   |[0-9a-fA-F]+                              |0                                         |                                         |     |parseHex         |a string of one or more hexadecimal digit\+|                |    |                                          |12345678                                  |0x10                                     |     |                 |\s                                        +|                |    |                                          |90abcdef                                  |0z                                       |     |                 |                                          +|                |    |                                          |90ABCDEF                                  |-1a                                      |     |                 |                                          +|                |    |                                          |00                                        |                                         |     |                 |                                          +|                |    |                                          |010                                       |                                         |     |                 |                                          +|%id             |0   |_*[a-zA-Z][a-zA-Z0-9_]*                   |a                                         |                                         |     |-                |a standard C-style alphanumeric identifie\+|                |    |                                          |A                                         |1                                        |     |                 |\r (with _s)                              +|                |    |                                          |A1                                        |_                                        |     |                 |                                          +|                |    |                                          |a_                                        |__                                       |     |                 |                                          +|                |    |                                          |a1_B2                                     |__1                                      |     |                 |                                          +|                |    |                                          |_abc                                      |1a                                       |     |                 |                                          +|                |    |                                          |__abc                                     |a'                                       |     |                 |                                          +|%id'            |0   |_*[a-zA-Z][a-zA-Z0-9_']*                  |a                                         |                                         |     |-                |a standard Haskell-style alphanumeric ide\+|                |    |                                          |A                                         |1                                        |     |                 |\ntifier (with '_'s and '''s)             +|                |    |                                          |A1                                        |_                                        |     |                 |                                          +|                |    |                                          |a_                                        |__                                       |     |                 |                                          +|                |    |                                          |a1_B2                                     |__1                                      |     |                 |                                          +|                |    |                                          |_abc                                      |1a                                       |     |                 |                                          +|                |    |                                          |__abc                                     |'                                        |     |                 |                                          +|                |    |                                          |a'                                        |'a                                       |     |                 |                                          +|                |    |                                          |_a'                                       |_'                                       |     |                 |                                          +|                |    |                                          |a'b                                       |_1'                                      |     |                 |                                          +|%id-            |0   |_*[a-zA-Z][a-zA-Z0-9_'-]*                 |a                                         |                                         |     |-                |an identifier with -s                     +|                |    |                                          |A                                         |1                                        |     |                 |                                          +|                |    |                                          |A1                                        |_                                        |     |                 |                                          +|                |    |                                          |a_                                        |__                                       |     |                 |                                          +|                |    |                                          |a1_B2                                     |__1                                      |     |                 |                                          +|                |    |                                          |_abc                                      |1a                                       |     |                 |                                          +|                |    |                                          |__abc                                     |'                                        |     |                 |                                          +|                |    |                                          |a'                                        |'a                                       |     |                 |                                          +|                |    |                                          |_a'                                       |_'                                       |     |                 |                                          +|                |    |                                          |a'b                                       |_1'                                      |     |                 |                                          +|                |    |                                          |a-                                        |                                         |     |                 |                                          +|                |    |                                          |a1-B2                                     |                                         |     |                 |                                          +|                |    |                                          |a1-B2-                                    |                                         |     |                 |                                          +|%int            |0   |-?[0-9]+                                  |0                                         |                                         |     |parseInteger     |a decimal integer                         +|                |    |                                          |1234567890                                |0A                                       |     |                 |                                          +|                |    |                                          |00                                        |+0                                       |     |                 |                                          +|                |    |                                          |01                                        |                                         |     |                 |                                          +|                |    |                                          |-1                                        |                                         |     |                 |                                          +|                |    |                                          |-0                                        |                                         |     |                 |                                          +|%nat            |0   |[0-9]+                                    |0                                         |                                         |     |parseInteger     |a string of one or more decimal digits    +|                |    |                                          |1234567890                                |0A                                       |     |                 |                                          +|                |    |                                          |00                                        |-1                                       |     |                 |                                          +|                |    |                                          |01                                        |                                         |     |                 |                                          +|%shortmonth     |1   |(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|\|Jan                                       |                                         |     |parseShortMonth  |three letter month name: Jan-Dec          +|                |    |\Nov|Dec)                                 |Feb                                       |jan                                      |     |                 |                                          +|                |    |                                          |Dec                                       |DEC                                      |     |                 |                                          +|                |    |                                          |                                          |January                                  |     |                 |                                          +|                |    |                                          |                                          |01                                       |     |                 |                                          +|                |    |                                          |                                          |1                                        |     |                 |                                          +|%string         |1   |"([^"\]+|\\[\"])*"                        |""                                        |"                                        |     |parseString      |a double-quote string, with simple \ esca\+|                |    |                                          |"foo"                                     |"aa                                      |     |                 |\pes for \s and "s                        +|                |    |                                          |"\""                                      |                                         |     |                 |                                          +|                |    |                                          |"\"\""                                    |                                         |     |                 |                                          +|                |    |                                          |"\"\\\""                                  |                                         |     |                 |                                          +|                |    |                                          |"\"foo\""                                 |                                         |     |                 |                                          +|                |    |                                          |""                                        |                                         |     |                 |                                          +|%string.simple  |0   |"[^"[:cntrl:]]*"                          |""                                        |                                         |     |parseSimpleString|a decimal integer                         +|                |    |                                          |"foo"                                     |"                                        |     |                 |                                          +|                |    |                                          |"\"                                       |"\""                                     |     |                 |                                          +|                |    |                                          |""                                        |"\"\""                                   |     |                 |                                          +|                |    |                                          |                                          |"\"\\\""                                 |     |                 |                                          +|                |    |                                          |                                          |"\"foo\""                                |     |                 |                                          +|                |    |                                          |                                          |"aa                                      |     |                 |                                          +|%syslog.severity|1   |(emerg|panic|alert|crit|err|error|warning\|emerg                                     |                                         |     |parseSeverity    |syslog severity keyword (debug-emerg)     +|                |    |\|warn|notice|info|debug)                 |panic                                     |Emergency                                |     |                 |                                          +|                |    |                                          |alert                                     |ALERT                                    |     |                 |                                          +|                |    |                                          |crit                                      |                                         |     |                 |                                          +|                |    |                                          |err                                       |                                         |     |                 |                                          +|                |    |                                          |error                                     |                                         |     |                 |                                          +|                |    |                                          |warn                                      |                                         |     |                 |                                          +|                |    |                                          |warning                                   |                                         |     |                 |                                          +|                |    |                                          |notice                                    |                                         |     |                 |                                          +|                |    |                                          |info                                      |                                         |     |                 |                                          +|                |    |                                          |debug                                     |                                         |     |                 |                                          +|%time           |1   |[0-9]{2}:[0-9]{2}:[0-9]{2}([.][0-9]+)?    |00:00:00                                  |                                         |     |parseTimeOfDay   |a HH:MM:SS[.Q+]                           +|                |    |                                          |23:59:59                                  |235959                                   |     |                 |                                          +|                |    |                                          |00:00:00.1234567890                       |10:20                                    |     |                 |                                          +|                |    |                                          |                                          |A00:00:00                                |     |                 |                                          +|                |    |                                          |                                          |00:00:00A                                |     |                 |                                          +|                |    |                                          |                                          |23:59:59.                                |     |                 |                                          +|%timezone       |1   |(Z|[+-][0-9]{2}:?[0-9]{2})                |Z                                         |                                         |     |parseTimeZone    |an IOS-8601 TZ specification              +|                |    |                                          |+00:00                                    |00                                       |     |                 |                                          +|                |    |                                          |+0000                                     |A00:00                                   |     |                 |                                          +|                |    |                                          |+0200                                     |UTC                                      |     |                 |                                          +|                |    |                                          |-0100                                     |EST                                      |     |                 |                                          +|                |    |                                          |                                          | EST                                     |     |                 |                                          +|%url            |1   |([hH][tT][tT][pP][sS]?|[fF][tT][pP])://[^\|https://mathiasbynens.be/demo/url-regex   |                                         |     |-                |a URL                                     +|                |    |\[:space:]/$.?#].[^[:space:]]*            |http://foo.com/blah_blah                  |http://                                  |     |                 |                                          +|                |    |                                          |http://foo.com/blah_blah/                 |http://.                                 |     |                 |                                          +|                |    |                                          |http://foo.com/blah_blah_(wikipedia)      |http://..                                |     |                 |                                          +|                |    |                                          |http://foo.com/blah_blah_(wikipedia)_(aga\|http://../                               |     |                 |                                          +|                |    |                                          |\in)                                      |http://?                                 |     |                 |                                          +|                |    |                                          |http://www.example.com/wpstyle/?p=364     |http://??                                |     |                 |                                          +|                |    |                                          |HTTPS://foo.bar/?q=Test%20URL-encoded%20s\|http://foo.bar?q=Spaces should be encoded|     |                 |                                          +|                |    |                                          |\tuff                                     |//                                       |     |                 |                                          +|                |    |                                          |HTTP://223.255.255.254                    |http://##/                               |     |                 |                                          +|                |    |                                          |ftp://223.255.255.254                     |http://##                                |     |                 |                                          +|                |    |                                          |FTP://223.255.255.254                     |http://##/                               |     |                 |                                          
+ examples/TestKit.lhs view
@@ -0,0 +1,200 @@+\begin{code}+{-# LANGUAGE NoImplicitPrelude          #-}+{-# LANGUAGE QuasiQuotes                #-}+{-# LANGUAGE RecordWildCards            #-}+{-# LANGUAGE OverloadedStrings          #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module TestKit+  ( Vrn(..)+  , presentVrn+  , parseVrn+  , bumpVersion+  , substVersion+  , substVersion_+  , readCurrentVersion+  , Test+  , runTests+  , checkThis+  , test_pp+  , include+  , cmp+  ) where++import           Control.Applicative+import           Control.Exception+import qualified Control.Monad                            as M+import           Data.Maybe+import qualified Data.Text                                as T+import qualified Data.ByteString.Lazy.Char8               as LBS+import           Prelude.Compat+import qualified Shelly                                   as SH+import           System.Directory+import           System.Environment+import           System.Exit+import           System.IO+import           Text.Printf+import           Text.RE.TDFA+\end{code}+++Vrn and friends+---------------++\begin{code}+data Vrn = Vrn { _vrn_a, _vrn_b, _vrn_c, _vrn_d :: Int }+  deriving (Show,Eq,Ord)++presentVrn :: Vrn -> String+presentVrn Vrn{..} = printf "%d.%d.%d.%d" _vrn_a _vrn_b _vrn_c _vrn_d++parseVrn :: String -> Vrn+parseVrn vrn_s = case matched m of+    True  -> Vrn (p [cp|a|]) (p [cp|b|]) (p [cp|c|]) (p [cp|d|])+    False -> error $ "not a valid version: " ++ vrn_s+  where+    p c  = fromMaybe oops $ parseInteger $ m !$$ c+    m    = vrn_s ?=~ [re|^${a}(@{%nat})\.${b}(@{%nat})\.${c}(@{%nat})\.${d}(@{%nat})$|]++    oops = error "parseVrn"++-- | register a new version of the package+bumpVersion :: String -> IO ()+bumpVersion vrn_s = do+    vrn0 <- readCurrentVersion+    rex' <- compileRegex () $ printf "- \\[[xX]\\].*%d\\.%d\\.%d\\.%d" _vrn_a _vrn_b _vrn_c _vrn_d+    nada <- null . linesMatched <$> grepLines rex' "lib/md/roadmap-incl.md"+    M.when nada $+      error $ vrn_s ++ ": not ticked off in the roadmap"+    rex  <- compileRegex () $ printf "%d\\.%d\\.%d\\.%d" _vrn_a _vrn_b _vrn_c _vrn_d+    nope <- null . linesMatched <$> grepLines rex "changelog"+    M.when nope $+      error $ vrn_s ++ ": not in the changelog"+    case vrn > vrn0 of+      True  -> do+        write_current_version vrn+        substVersion "lib/hackage-template.svg" "docs/badges/hackage.svg"+      False -> error $+        printf "version not later ~(%s > %s)" vrn_s $ presentVrn vrn0+  where+    vrn@Vrn{..} = parseVrn vrn_s++substVersion :: FilePath -> FilePath -> IO ()+substVersion in_f out_f =+    LBS.readFile in_f >>= substVersion_ >>= LBS.writeFile out_f++substVersion_ :: (IsRegex RE a,Replace a) => a -> IO a+substVersion_ txt =+    flip replaceAll ms . pack_ . presentVrn <$> readCurrentVersion+  where+    ms = txt *=~ [re|<<\$version\$>>|]++readCurrentVersion :: IO Vrn+readCurrentVersion = parseVrn <$> readFile "lib/version.txt"++write_current_version :: Vrn -> IO ()+write_current_version = writeFile "lib/version.txt" . presentVrn+\end{code}+++Test and friends+----------------++\begin{code}+data Test =+  Test+    { testLabel    :: String+    , testExpected :: String+    , testResult   :: String+    , testPassed   :: Bool+    }+  deriving (Show)++runTests :: [Test] -> IO ()+runTests tests = do+  as <- getArgs+  case as of+    [] -> return ()+    _  -> do+      pn <- getProgName+      putStrLn $ "usage:\n  "++pn++" --help"+      exitWith $ ExitFailure 1+  case filter (not . testPassed) tests of+    []  -> putStrLn $ "All "++show (length tests)++" tests passed."+    fts -> do+      mapM_ (putStr . present_test) fts+      putStrLn $ show (length fts) ++ " tests failed."+      exitWith $ ExitFailure 1++checkThis :: (Show a,Eq a) => String -> a -> a -> Test+checkThis lab ref val =+  Test+    { testLabel    = lab+    , testExpected = show ref+    , testResult   = show val+    , testPassed   = ref == val+    }++present_test :: Test -> String+present_test Test{..} = unlines+  [ "test: " ++ testLabel+  , "  expected : " ++ testExpected+  , "  result   : " ++ testResult+  , "  passed   : " ++ (if testPassed then "passed" else "**FAILED**")+  ]+\end{code}++\begin{code}+test_pp :: String+        -> (FilePath->FilePath->IO())+        -> FilePath+        -> FilePath+        -> IO ()+test_pp lab loop test_file gold_file = do+    createDirectoryIfMissing False "tmp"+    loop test_file tmp_pth+    ok <- cmp (T.pack tmp_pth) (T.pack gold_file)+    case ok of+      True  -> return ()+      False -> do+        putStrLn $ lab ++ ": mismatch with " ++ gold_file+        exitWith $ ExitFailure 1+  where+    tmp_pth = "tmp/mod.lhs"+\end{code}+++simple include processor+------------------------++\begin{code}+include :: LBS.ByteString -> IO LBS.ByteString+include = sed' $ Select+    [ (,) [re|^%include ${file}(@{%string})$|] $ EDIT_fun TOP   incl+    , (,) [re|^.*$|]                           $ EDIT_fun TOP $ \_ _ _ _->return Nothing+    ]+  where+    incl _ mtch _ _ = Just <$> LBS.readFile (prs_s $ mtch !$$ [cp|file|])+    prs_s           = maybe (error "include") T.unpack . parseString+\end{code}++cmp+---++\begin{code}+cmp :: T.Text -> T.Text -> IO Bool+cmp src dst = handle hdl $ do+    _ <- SH.shelly $ SH.verbosely $+            SH.run "cmp" [src,dst]+    return True+  where+    hdl :: SomeException -> IO Bool+    hdl se = do+      hPutStrLn stderr $+        "testing results against model answers failed: " ++ show se+      return False+\end{code}
+ examples/re-gen-cabals.lhs view
@@ -0,0 +1,257 @@+\begin{code}+{-# LANGUAGE NoImplicitPrelude          #-}+{-# LANGUAGE RecordWildCards            #-}+{-# LANGUAGE TemplateHaskell            #-}+{-# LANGUAGE QuasiQuotes                #-}+{-# LANGUAGE OverloadedStrings          #-}+{-# LANGUAGE CPP                        #-}++module Main (main) where++import qualified Data.ByteString.Lazy.Char8               as LBS+import           Data.Char+import           Data.IORef+import qualified Data.List                                as L+import qualified Data.Map                                 as Map+import           Data.Maybe+import           Data.Monoid+import qualified Data.Text                                as T+import qualified Data.Text.Encoding                       as TE+import           Prelude.Compat+import qualified Shelly                                   as SH+import           System.Directory+import           System.Environment+import           System.Exit+import           System.IO+import           TestKit+import           Text.Printf+import           Text.RE.TDFA.ByteString.Lazy+++main :: IO ()+main = do+  (pn,as) <- (,) <$> getProgName <*> getArgs+  case as of+    []        -> test+    ["test"]  -> test+    ["sdist"] -> sdist+    ["gen"]   -> do+      gen  "lib/cabal-masters/mega-regex.cabal"     "lib/mega-regex.cabal"+      gen  "lib/cabal-masters/regex.cabal"          "lib/regex.cabal"+      gen  "lib/cabal-masters/regex-examples.cabal" "lib/regex-examples.cabal"+      establish "mega-regex" "regex"+    _         -> do+      hPutStrLn stderr $ "usage: " ++ pn ++ " [test|sdist|gen]"+      exitWith $ ExitFailure 1++test :: IO ()+test = do+  createDirectoryIfMissing False "tmp"+  gen "lib/cabal-masters/mega-regex.cabal" "tmp/mega-regex.cabal"+  ok <- cmp "tmp/mega-regex.cabal" "lib/mega-regex.cabal"+  case ok of+    True  -> return ()+    False -> exitWith $ ExitFailure 1++gen :: FilePath -> FilePath -> IO ()+gen in_f out_f = do+    ctx <- setup+    LBS.writeFile out_f =<<+      sed' (gc_script ctx) =<< substVersion_ =<< include =<<+        LBS.readFile in_f++data Ctx =+  Ctx+    { _ctx_package_constraints :: IORef (Map.Map LBS.ByteString LBS.ByteString)+    , _ctx_test_exe            :: IORef (Maybe TestExe)+    }++data TestExe =+  TestExe+    { _te_test :: Bool+    , _te_exe  :: Bool+    , _te_name :: LBS.ByteString+    , _te_text :: LBS.ByteString+    }+  deriving (Show)++setup :: IO Ctx+setup = Ctx <$> (newIORef Map.empty) <*> (newIORef Nothing)++gc_script :: Ctx -> SedScript RE+gc_script ctx = Select+    [ (,) [re|^%- +${pkg}(@{%id-}) +${cond}(.*)$|]             $ EDIT_gen $ cond_gen                 ctx+    , (,) [re|^%build-depends +${list}(@{%id-}( +@{%id-})+)$|] $ EDIT_gen $ build_depends_gen        ctx+    , (,) [re|^%test +${i}(@{%id-})$|]                         $ EDIT_gen $ test_exe_gen True  False ctx+    , (,) [re|^%exe +${i}(@{%id-})$|]                          $ EDIT_gen $ test_exe_gen False True  ctx+    , (,) [re|^%test-exe +${i}(@{%id-})$|]                     $ EDIT_gen $ test_exe_gen True  True  ctx+    , (,) [re|^.*$|]                                           $ EDIT_gen $ default_gen              ctx+    ]++cond_gen, build_depends_gen,+  default_gen :: Ctx+              -> LineNo+              -> Matches LBS.ByteString+              -> IO (LineEdit LBS.ByteString)++cond_gen Ctx{..} _ mtchs = do+    modifyIORef _ctx_package_constraints $ Map.insert pkg cond+    return Delete+  where+    pkg  = captureText [cp|pkg|]  mtch+    cond = captureText [cp|cond|] mtch++    mtch = allMatches mtchs !! 0++build_depends_gen ctx@Ctx{..} _ mtchs = do+    mp <- readIORef _ctx_package_constraints+    put ctx $ mk_build_depends mp lst+  where+    lst  = LBS.words $ captureText [cp|list|] mtch+    mtch = allMatches mtchs !! 0++default_gen ctx@Ctx{..} _ mtchs = do+    mb <- readIORef _ctx_test_exe+    case mb of+      Nothing -> return $ ReplaceWith ln+      Just te -> case isSpace $ LBS.head $ ln<>"\n" of+        True  -> put ctx ln+        False -> adjust_le (<>ln) <$> close_test_exe ctx te+  where+    ln   = matchSource mtch+    mtch = allMatches mtchs !! 0++test_exe_gen :: Bool+             -> Bool+             -> Ctx+             -> LineNo+             -> Matches LBS.ByteString+             -> IO (LineEdit LBS.ByteString)+test_exe_gen is_t is_e ctx _ mtchs = do+    mb <- readIORef  (_ctx_test_exe ctx)+    le <- maybe (return Delete) (close_test_exe ctx) mb+    writeIORef (_ctx_test_exe ctx) $ Just $+      TestExe+        { _te_test = is_t+        , _te_exe  = is_e+        , _te_name = i+        , _te_text = ""+        }+    return le+  where+    i    = captureText [cp|i|] mtch++    mtch = allMatches mtchs !! 0++close_test_exe :: Ctx -> TestExe -> IO (LineEdit LBS.ByteString)+close_test_exe ctx@Ctx{..} te = do+  writeIORef _ctx_test_exe Nothing+  put ctx $ mconcat $ concat $+    [ [ mk_test_exe False te "Executable" | _te_exe  te ]+    , [ mk_test_exe True  te "Test-Suite" | _te_test te ]+    ]++put :: Ctx -> LBS.ByteString -> IO (LineEdit LBS.ByteString)+put Ctx{..} lbs = do+    mb <- readIORef _ctx_test_exe+    case mb of+      Nothing -> return $ ReplaceWith lbs+      Just te -> do+        writeIORef _ctx_test_exe $ Just te { _te_text = _te_text te <> lbs <> "\n" }+        return Delete++mk_test_exe :: Bool -> TestExe -> LBS.ByteString -> LBS.ByteString+mk_test_exe is_t te te_lbs_kw = (<>_te_text te) $ LBS.unlines $ concat+    [ [ LBS.pack $ printf "%s %s" (LBS.unpack te_lbs_kw) nm ]+    , [ "    type:               exitcode-stdio-1.0" | is_t ]+    ]+  where+    nm = case is_t of+      True  -> LBS.unpack $ _te_name te <> "-test"+      False -> LBS.unpack $ _te_name te++mk_build_depends :: Map.Map LBS.ByteString LBS.ByteString+                 -> [LBS.ByteString]+                 -> LBS.ByteString+mk_build_depends mp pks = LBS.unlines $+        (:) "    Build-depends:" $+          map fmt $ zip (True : repeat False) $+              L.sortBy comp pks+  where+    fmt (isf,pk) = LBS.pack $+      printf "      %c %-20s %s"+        (if isf then ' ' else ',')+        (LBS.unpack pk)+        (maybe "" LBS.unpack $ Map.lookup pk mp)++    comp x y = case (x=="regex",y=="regex") of+      (True ,True ) -> EQ+      (True ,False) -> LT+      (False,True ) -> GT+      (False,False) -> compare x y++adjust_le :: (LBS.ByteString->LBS.ByteString)+          -> LineEdit LBS.ByteString+          -> LineEdit LBS.ByteString+adjust_le f le = case le of+  NoEdit          -> error "adjust_le: not enough context"+  ReplaceWith lbs -> ReplaceWith $ f lbs+  Delete          -> ReplaceWith $ f ""+\end{code}++\begin{code}+sdist :: IO ()+sdist = do+  sdist'    "regex"+  sdist'    "regex-examples"+  establish "mega-regex" "regex"+  vrn_t <- T.pack . presentVrn <$> readCurrentVersion+  smy_t <- summary+  SH.shelly $ SH.verbosely $+    SH.run_ "git" ["tag",vrn_t,"-m",smy_t]++sdist' :: T.Text -> IO ()+sdist' nm = do+  establish nm nm+  SH.shelly $ SH.verbosely $ do+    SH.cp readme "README.markdown"+    SH.run_ "cabal" ["clean"]+    SH.run_ "cabal" ["configure"]+    SH.run_ "cabal" ["sdist"]+    vrn <- SH.liftIO readCurrentVersion+    let tb = nm<>"-"<>T.pack(presentVrn vrn)<>".tar.gz"+    SH.cp (SH.fromText $ "dist/"<>tb) $ SH.fromText $ "releases/"<>tb+  where+    readme = SH.fromText $ "lib/README-"<>nm<>".md"++establish :: T.Text -> T.Text -> IO ()+establish nm nm' = SH.shelly $ SH.verbosely $ do+    SH.rm_f "mega-regex.cabal"+    SH.rm_f "regex.cabal"+    SH.rm_f "regex-examples.cabal"+    SH.cp (SH.fromText sf) (SH.fromText df)+  where+    sf = "lib/"<>nm<>".cabal"+    df = nm'<>".cabal"++summary :: IO T.Text+summary = do+  vrn <- SH.liftIO readCurrentVersion+  let vrn_res = concat+        [ show $ _vrn_a vrn+        , "\\."+        , show $ _vrn_b vrn+        , "\\."+        , show $ _vrn_c vrn+        , "\\."+        , show $ _vrn_d vrn+        ]+  rex <- compileRegex () $ "- \\[[xX]\\] +@{%date} +v"++vrn_res++" +\\[?${smy}([^]]+)"+  lns <- linesMatched <$> grepLines rex "lib/md/roadmap-incl.md"+  case lns of+    [Line _ (Matches _ [mtch])] -> return $ TE.decodeUtf8 $ LBS.toStrict $ mtch !$$ [cp|smy|]+    _ -> error "failed to locate the summary text in the roadmap"+\end{code}+++let vrn_res = concat [ show $ _vrn_a vrn, "\\.", show $ _vrn_b vrn, "\\.", show $ _vrn_c vrn, "\\.", show $ _vrn_d vrn ]
+ examples/re-gen-modules.lhs view
@@ -0,0 +1,128 @@+\begin{code}+{-# LANGUAGE NoImplicitPrelude          #-}+{-# LANGUAGE TemplateHaskell            #-}+{-# LANGUAGE QuasiQuotes                #-}+{-# LANGUAGE OverloadedStrings          #-}+{-# LANGUAGE CPP                        #-}++module Main (main) where++import           Control.Exception+import qualified Data.ByteString.Lazy.Char8               as LBS+import qualified Data.Text                                as T+import           Prelude.Compat+import qualified Shelly                                   as SH+import           System.Directory+import           System.Environment+import           System.Exit+import           System.IO+import           Text.RE.TDFA.ByteString.Lazy+++main :: IO ()+main = do+  (pn,as) <- (,) <$> getProgName <*> getArgs+  case as of+    []        -> test+    ["test"]  -> test+    ["gen"]   -> gen+    _         -> do+      hPutStrLn stderr $ "usage: " ++ pn ++ " [test|gen]"+      exitWith $ ExitFailure 1++test :: IO ()+test = do+  createDirectoryIfMissing False "tmp"+  tdfa_ok <- and <$> mapM test' tdfa_edits+  pcre_ok <- and <$> mapM test' pcre_edits+  case tdfa_ok && pcre_ok of+    True  -> return ()+    False -> exitWith $ ExitFailure 1++test' :: (ModPath,SedScript RE) -> IO Bool+test' (mp,scr) = do+    putStrLn mp+    sed scr (mod_filepath source_mp) tmp_pth+    cmp     (T.pack tmp_pth) (T.pack $ mod_filepath mp)+  where+    tmp_pth = "tmp/prog.hs"++gen :: IO ()+gen = do+  mapM_ gen' tdfa_edits+  mapM_ gen' pcre_edits++gen' :: (ModPath,SedScript RE) -> IO ()+gen' (mp,scr) = do+  putStrLn mp+  sed scr (mod_filepath source_mp) (mod_filepath mp)++tdfa_edits :: [(ModPath,SedScript RE)]+tdfa_edits =+  [ tdfa_edit "Text.RE.TDFA.ByteString"       "B.ByteString"    "import qualified Data.ByteString               as B"+  , tdfa_edit "Text.RE.TDFA.Sequence"         "(S.Seq Char)"    "import qualified Data.Sequence                 as S"+  , tdfa_edit "Text.RE.TDFA.String"           "String"          ""+  , tdfa_edit "Text.RE.TDFA.Text"             "T.Text"          "import qualified Data.Text                     as T"+  , tdfa_edit "Text.RE.TDFA.Text.Lazy"        "TL.Text"         "import qualified Data.Text.Lazy                as TL"+  ]++pcre_edits :: [(ModPath,SedScript RE)]+pcre_edits =+  [ pcre_edit "Text.RE.PCRE.ByteString"       "B.ByteString"    "import qualified Data.ByteString               as B"+  , pcre_edit "Text.RE.PCRE.ByteString.Lazy"  "LBS.ByteString"  "import qualified Data.ByteString.Lazy          as LBS"+  , pcre_edit "Text.RE.PCRE.Sequence"         "(S.Seq Char)"    "import qualified Data.Sequence                 as S"+  , pcre_edit "Text.RE.PCRE.String"           "String"          ""+  ]++tdfa_edit :: ModPath+          -> LBS.ByteString+          -> LBS.ByteString+          -> (ModPath,SedScript RE)+tdfa_edit mp bs_lbs import_lbs =+    (,) mp $ Pipe+        [ (,) module_re $ EDIT_tpl $ LBS.pack mp+        , (,) import_re $ EDIT_tpl   import_lbs+        , (,) bs_re     $ EDIT_tpl   bs_lbs+        ]++pcre_edit :: ModPath+          -> LBS.ByteString+          -> LBS.ByteString+          -> (ModPath,SedScript RE)+pcre_edit mp bs_lbs import_lbs =+    (,) mp $ Pipe+        [ (,) tdfa_re   $ EDIT_tpl   "PCRE"+        , (,) module_re $ EDIT_tpl $ LBS.pack mp+        , (,) import_re $ EDIT_tpl   import_lbs+        , (,) bs_re     $ EDIT_tpl   bs_lbs+        ]++type ModPath = String++source_mp :: ModPath+source_mp = "Text.RE.TDFA.ByteString.Lazy"++tdfa_re, module_re, import_re, bs_re :: RE+tdfa_re   = [re|TDFA|]+module_re = [re|Text.RE.TDFA.ByteString.Lazy|]+import_re = [re|import qualified Data.ByteString.Lazy.Char8 *as LBS|]+bs_re     = [re|LBS.ByteString|]++mod_filepath :: ModPath -> FilePath+mod_filepath mp = map tr mp ++ ".hs"+  where+    tr '.' = '/'+    tr c   = c++cmp :: T.Text -> T.Text -> IO Bool+cmp src dst = handle hdl $ do+    _ <- SH.shelly $ SH.verbosely $+        SH.run "cmp" [src,dst]+    return True+  where+    hdl :: SomeException -> IO Bool+    hdl se = do+      hPutStrLn stderr $+        "testing results against model answers failed: " ++ show se+      return False+\end{code}
+ examples/re-include.lhs view
@@ -0,0 +1,139 @@+\begin{code}+{-# LANGUAGE NoImplicitPrelude          #-}+{-# LANGUAGE RecordWildCards            #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE TemplateHaskell            #-}+{-# LANGUAGE QuasiQuotes                #-}+{-# LANGUAGE OverloadedStrings          #-}++module Main+  ( main+  ) where++import           Control.Applicative+import qualified Data.ByteString.Lazy.Char8               as LBS+import           Data.Maybe+import qualified Data.Text                                as T+import           Prelude.Compat+import           System.Environment+import           TestKit+import           Text.RE.Edit+import           Text.RE.TDFA.ByteString.Lazy+\end{code}++\begin{code}+main :: IO ()+main = do+  as  <- getArgs+  case as of+    []                    -> test+    ["test"]              -> test+    [fn,fn'] | is_file fn -> loop fn fn'+    _                     -> usage+  where+    is_file = not . (== "--") . take 2++    usage = do+      prg <- getProgName+      putStr $ unlines+        [ "usage:"+        , "  "++prg++" [test]"+        , "  "++prg++" (-|<in-file>) (-|<out-file>)"+        ]+\end{code}+++The Sed Script+--------------++\begin{code}+loop :: FilePath -> FilePath -> IO ()+loop =+  sed $ Select+    [ (,) [re|^%include ${file}(@{%string}) ${rex}(@{%string})$|] $ EDIT_fun TOP   include_file+    , (,) [re|^.*$|]                                              $ EDIT_fun TOP $ \_ _ _ _->return Nothing+    ]+\end{code}++\begin{code}+include_file :: LineNo+             -> Match LBS.ByteString+             -> Location+             -> Capture LBS.ByteString+             -> IO (Maybe LBS.ByteString)+include_file _ mtch _ _ = fmap Just $+    extract fp =<< compileRegex () re_s+  where+    fp    = prs_s $ captureText [cp|file|] mtch+    re_s  = prs_s $ captureText [cp|rex|]  mtch++    prs_s = maybe (error "includeDoc") T.unpack . parseString+\end{code}+++Extracting a Literate Fragment from a Haskell Program Text+----------------------------------------------------------++\begin{code}+extract :: FilePath -> RE -> IO LBS.ByteString+extract fp rex = extr . LBS.lines <$> LBS.readFile fp+  where+    extr lns =+      case parse $ scan rex lns of+        Nothing      -> oops+        Just (lno,n) -> LBS.unlines $ (hdr :) $ (take n $ drop i lns) ++ [ftr]+          where+            i = getZeroBasedLineNo lno++    oops = error $ concat+      [ "failed to locate fragment matching "+      , show $ reSource rex+      , " in file "+      , show fp+      ]++    hdr  = "<div class='includedcodeblock'>"+    ftr  = "</div>"+\end{code}++\begin{code}+parse :: [Token] -> Maybe (LineNo,Int)+parse []       = Nothing+parse (tk:tks) = case (tk,tks) of+  (Bra b_ln,Hit:Ket k_ln:_) -> Just (b_ln,count_lines_incl b_ln k_ln)+  _                         -> parse tks+\end{code}++\begin{code}+count_lines_incl :: LineNo -> LineNo -> Int+count_lines_incl b_ln k_ln =+  getZeroBasedLineNo k_ln + 1 - getZeroBasedLineNo b_ln+\end{code}++\begin{code}+data Token = Bra LineNo | Hit | Ket LineNo   deriving (Show)+\end{code}++\begin{code}+scan :: RE -> [LBS.ByteString] -> [Token]+scan rex = grepScript+    [ (,) [re|\\begin\{code\}|] $ \i -> chk $ Bra i+    , (,) rex                   $ \_ -> chk   Hit+    , (,) [re|\\end\{code\}|]   $ \i -> chk $ Ket i+    ]+  where+    chk x mtchs = case anyMatches mtchs of+      True  -> Just x+      False -> Nothing+\end{code}+++Testing+-------++\begin{code}+test :: IO ()+test = do+  test_pp "include" loop "data/pp-test.lhs" "data/include-result.lhs"+  putStrLn "tests passed"+\end{code}
+ examples/re-nginx-log-processor.lhs view
@@ -0,0 +1,589 @@+\begin{code}+{-# LANGUAGE NoImplicitPrelude          #-}+{-# LANGUAGE RecordWildCards            #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE TemplateHaskell            #-}+{-# LANGUAGE QuasiQuotes                #-}+{-# LANGUAGE OverloadedStrings          #-}++module Main+  ( main+  -- development+  , parse_a+  , parse_e+  ) where++import           Control.Applicative+import           Control.Exception+import           Control.Monad+import qualified Data.ByteString.Lazy.Char8               as LBS+import qualified Data.HashMap.Lazy                        as HML+import           Data.Functor.Identity+import           Data.Maybe+import           Data.String+import qualified Data.Text                                as T+import           Data.Time+import           Prelude.Compat+import qualified Shelly                                   as SH+import           System.Directory+import           System.Environment+import           System.Exit+import           System.IO+import           Text.RE.Options+import           Text.RE.Parsers+import           Text.RE.TestBench+import           Text.RE.PCRE.ByteString.Lazy+import qualified Text.RE.PCRE.String                      as S+import           Text.Printf+\end{code}++\begin{code}+main :: IO ()+main = do+  as  <- getArgs+  case as of+    ["--macro"      ] -> putStr      lp_macro_table+    ["--macro",mid_s] -> putStrLn  $ lp_macro_summary $ MacroID mid_s+    ["--regex"      ] -> putStr      lp_macro_sources+    ["--regex",mid_s] -> putStrLn  $ lp_macro_source  $ MacroID mid_s+    ["--test"       ] -> test+    []                -> test+    [in_file          ] | is_file in_file -> go True  in_file "-"+    [in_file,out_file ] | is_file in_file -> go True  in_file out_file+    _                                     -> usage+  where+    is_file = not . (== "--") . take 2++    usage = do+      pnm <- getProgName+      let prg = ((pnm++" ")++)+      putStr $ unlines+        [ "usage:"+        , prg " --help"+        , prg " --macro"+        , prg " --macro <macro-id>"+        , prg " --regex"+        , prg " --regex <macro-id>"+        , prg "[--test]"+        , prg "(-|<in-file>) [-|<out-fileß>]"+        ]+\end{code}++\begin{code}++--+-- go+--++test :: IO ()+test = do+  putStrLn "============================================================"+  putStrLn "Testing the macro environment."+  putStrLn "nginx-log-processor"+  dumpMacroTable        "nginx-log-processor" regexType lp_env+  me_ok <- testMacroEnv "nginx-log-processor" regexType lp_env+  putStrLn "============================================================"+  putStrLn "Testing the log processor on reference data."+  putStrLn ""+  lp_ok <- test_log_processor+  putStrLn "============================================================"+  case me_ok && lp_ok of+    True  -> return ()+    False -> exitWith $ ExitFailure 1+++test_log_processor :: IO Bool+test_log_processor = do+    createDirectoryIfMissing False "tmp"+    go False "data/access-errors.log" "tmp/events.log"+    cmp "tmp/events.log" "data/events.log"+\end{code}++\begin{code}++--+-- go+--++go :: Bool -> FilePath -> FilePath -> IO ()+go rprt_flg in_file out_file = do+  ctx <- setup rprt_flg+  sed (script ctx) in_file out_file+\end{code}++\begin{code}+script :: Ctx -> SedScript RE+script ctx = Select+    [ on [re_|@{access}|]     ACC parse_access+    , on [re_|@{access_deg}|] AQQ parse_deg_access+    , on [re_|@{error}|]      ERR parse_error+    , on [re_|.*|]            QQQ parse_def+    ]+  where+    on rex src prs =+      (,) (rex lpo) $ EDIT_fun TOP $ process_line ctx src prs++    parse_def      = fmap capturedText . matchCapture+\end{code}++\begin{code}+process_line :: IsEvent a+             => Ctx+             -> Source+             -> (Match LBS.ByteString->Maybe a)+             -> LineNo+             -> Match LBS.ByteString+             -> Location+             -> Capture LBS.ByteString+             -> IO (Maybe LBS.ByteString)+process_line ctx src prs lno cs _ _ = do+    when (event_is_notifiable event) $+      flag_event ctx event+    return $ Just $ presentEvent event+  where+    event     = maybe def_event (mkEvent lno src) $ prs cs++    def_event =+      Event+        { _event_line     = lno+        , _event_source   = src+        , _event_utc      = read "1970-01-01 00:00:00"+        , _event_severity = Nothing+        , _event_address  = (0,0,0,0)+        , _event_details  = ""+        }+++--+-- Ctx, setup, event_is_notifiable, flag_event+--++type Ctx = Bool++setup :: Bool -> IO Ctx+setup = return++event_is_notifiable :: Event -> Bool+event_is_notifiable Event{..} =+  fromEnum (fromMaybe Debug _event_severity) <= fromEnum Err++flag_event :: Ctx -> Event -> IO ()+flag_event False = const $ return ()+flag_event True  = LBS.hPutStrLn stderr . presentEvent+++--+-- Event, presentEvent, IsEvent+--++data Event =+  Event+    { _event_line     :: LineNo+    , _event_source   :: Source+    , _event_utc      :: UTCTime+    , _event_severity :: Maybe Severity+    , _event_address  :: IPV4Address+    , _event_details  :: LBS.ByteString+    }+  deriving (Show)++data Source = ACC | AQQ | ERR | QQQ+  deriving (Show,Read)++presentEvent :: Event -> LBS.ByteString+presentEvent Event{..} = LBS.pack $+  printf "%04d %s %s %-7s %3d.%3d.%3d.%3d [%s]"+    (getLineNo                _event_line    )+    (show                     _event_source  )+    (show                     _event_utc     )+    (maybe "-" svrty_kw       _event_severity)+                              a b c d+    (LBS.unpack               _event_details )+  where+    (a,b,c,d) = _event_address++    svrty_kw  = T.unpack . fst . severityKeywords++class IsEvent a where+  mkEvent :: LineNo -> Source -> a -> Event++instance IsEvent Access where+  mkEvent lno src Access{..} =+    Event+      { _event_line     = lno+      , _event_source   = src+      , _event_utc      = _a_time_local+      , _event_severity = Nothing+      , _event_address  = _a_remote_addr+      , _event_details  = LBS.pack $+          printf "%s %d %d %s %s %s"+            (T.unpack _a_request        )+                      _a_status+                      _a_body_bytes+            (T.unpack _a_http_referrer  )+            (T.unpack _a_http_user_agent)+            (T.unpack _a_other          )+      }++instance IsEvent Error where+  mkEvent lno src ERROR{..} =+    Event+      { _event_line     = lno+      , _event_source   = src+      , _event_utc      = UTCTime _e_date $ timeOfDayToTime _e_time+      , _event_severity = Just _e_severity+      , _event_address  = (0,0,0,0)+      , _event_details  = LBS.pack $ printf "%d#%d: %s" pid tid $ LBS.unpack _e_other+      }+    where+      (pid,tid) = _e_pid_tid++instance IsEvent LBS.ByteString where+  mkEvent lno src lbs =+    Event+      { _event_line     = lno+      , _event_source   = src+      , _event_utc      = read "1970-01-01 00:00:00"+      , _event_severity = Nothing+      , _event_address  = (0,0,0,0)+      , _event_details  = lbs+      }+++--+-- Options and Prelude+--++lpo :: Options+lpo = makeOptions lp_prelude++lp_prelude :: Macros RE+lp_prelude = runIdentity $ mkMacros mk regexType ExclCaptures lp_env+  where+    mk   = maybe oops Identity . compileRegex noPreludeOptions++    oops = error "lp_prelude"++lp_macro_table :: String+lp_macro_table = formatMacroTable regexType lp_env++lp_macro_summary :: MacroID -> String+lp_macro_summary = formatMacroSummary regexType lp_env++lp_macro_sources :: String+lp_macro_sources = formatMacroSources regexType ExclCaptures lp_env++lp_macro_source :: MacroID -> String+lp_macro_source = formatMacroSource regexType ExclCaptures lp_env++lp_env :: MacroEnv+lp_env = preludeEnv `HML.union` HML.fromList+    [ f "user"        user_macro+    , f "pid#tid:"    pid_tid_macro+    , f "access"      access_macro+    , f "access_deg"  access_deg_macro+    , f "error"       error_macro+    ]+  where+    f mid mk = (mid, mk lp_env mid)+++--+-- The Macro Descriptors+--++user_macro :: MacroEnv -> MacroID -> MacroDescriptor+user_macro env mid =+  runTests regexType parse_user samples env mid+    MacroDescriptor+      { _md_source          = "(?:-|[^[:space:]]+)"+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Just "parse_user"+      , _md_description     = "a user ident (per RFC1413)"+      }+  where+    samples :: [(String,User)]+    samples =+        [ f "joe"+        ]+      where+        f nm = (nm,User $ LBS.pack nm)++    counter_samples =+        [ "joe user"+        ]++pid_tid_macro :: MacroEnv -> MacroID -> MacroDescriptor+pid_tid_macro env mid =+  runTests regexType parse_pid_tid samples env mid+    MacroDescriptor+      { _md_source          = "(?:@{%nat})#(?:@{%nat}):"+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Just "parse_pid_tid"+      , _md_description     = "<PID>#<TID>:"+      }+  where+    samples :: [(String,(Int,Int))]+    samples =+        [ f "1378#0:" (1378,0)+        ]+      where+        f = (,)++    counter_samples =+        [ ""+        , "24#:"+        , "24.365:"+        ]++access_macro :: MacroEnv -> MacroID -> MacroDescriptor+access_macro env mid =+  runTests' regexType (parse_access . fmap LBS.pack) samples env mid+    MacroDescriptor+      { _md_source          = access_re+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Just "parse_a"+      , _md_description     = "an Nginx access log file line"+      }+  where+    samples :: [(String,Access)]+    samples =+        [ (,) "192.168.100.200 - - [12/Jan/2016:12:08:36 +0000] \"GET / HTTP/1.1\" 200 3700 \"-\" \"My Agent\" \"-\""+            Access+              { _a_remote_addr      = (192,168,100,200)+              , _a_remote_user      = "-"+              , _a_time_local       = read "2016-01-12 12:08:36 UTC"+              , _a_request          = "GET / HTTP/1.1"+              , _a_status           = 200+              , _a_body_bytes       = 3700+              , _a_http_referrer    = "-"+              , _a_http_user_agent  = "My Agent"+              , _a_other            = "-"+              }+        ]++    counter_samples =+        [ ""+        , " -  [] \"\"   \"\" \"\" \"\""+        ]++access_deg_macro :: MacroEnv -> MacroID -> MacroDescriptor+access_deg_macro env mid =+  runTests' regexType (parse_deg_access . fmap LBS.pack) samples env mid+    MacroDescriptor+      { _md_source          = " -  \\[\\] \"\"   \"\" \"\" \"\""+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Nothing+      , _md_description     = "a degenerate Nginx access log file line"+      }+  where+    samples :: [(String,Access)]+    samples =+        [ (,) " -  [] \"\"   \"\" \"\" \"\"" deg_access+        ]++    counter_samples =+        [ ""+        , "foo"+        ]++error_macro :: MacroEnv -> MacroID -> MacroDescriptor+error_macro env mid =+  runTests' regexType (parse_error . fmap LBS.pack) samples env mid+    MacroDescriptor+      { _md_source          = error_re+      , _md_samples         = map fst samples+      , _md_counter_samples = counter_samples+      , _md_test_results    = []+      , _md_parser          = Just "parse_e"+      , _md_description     = "an Nginx error log file line"+      }+  where+    samples :: [(String,Error)]+    samples =+        [ (,) "2016/12/21 11:53:35 [emerg] 1378#0: foo"+            ERROR+              { _e_date     = read "2016-12-21"+              , _e_time     = read "11:53:35"+              , _e_severity = Emerg+              , _e_pid_tid  = (1378,0)+              , _e_other    = " foo"+              }+        , (,) "2017/01/04 05:40:19 [error] 31623#0: *1861296 no \"ssl_certificate\" is defined in server listening on SSL port while SSL handshaking, client: 192.168.31.38, server: 0.0.0.0:80"+            ERROR+              { _e_date     = read "2017-01-04"+              , _e_time     = read "05:40:19"+              , _e_severity = Err+              , _e_pid_tid  = (31623,0)+              , _e_other    = " *1861296 no \"ssl_certificate\" is defined in server listening on SSL port while SSL handshaking, client: 192.168.31.38, server: 0.0.0.0:80"+              }+        ]++    counter_samples =+        [ ""+        , "foo"+        ]+\end{code}++\begin{code}++--+-- Access, access_re, deg_access, parse_deg_access, parse_access+--++data Access =+  Access+    { _a_remote_addr      :: !IPV4Address+    , _a_remote_user      :: !User+    , _a_time_local       :: !UTCTime+    , _a_request          :: !T.Text+    , _a_status           :: !Int+    , _a_body_bytes       :: !Int+    , _a_http_referrer    :: !T.Text+    , _a_http_user_agent  :: !T.Text+    , _a_other            :: !T.Text+    }+  deriving (Eq,Show)+\end{code}++\begin{code}+access_re :: RegexSource+access_re = RegexSource $ unwords+  [ "(@{%address.ipv4})"+  , "-"+  , "(@{user})"+  , "\\[(@{%datetime.clf})\\]"+  , "(@{%string.simple})"+  , "(@{%nat})"+  , "(@{%nat})"+  , "(@{%string.simple})"+  , "(@{%string.simple})"+  , "(@{%string.simple})"+  ]+\end{code}++\begin{code}+deg_access :: Access+deg_access =+  Access+    { _a_remote_addr      = (0,0,0,0)+    , _a_remote_user      = "-"+    , _a_time_local       = read "1970-01-01 00:00:00"+    , _a_request          = ""+    , _a_status           = 0+    , _a_body_bytes       = 0+    , _a_http_referrer    = ""+    , _a_http_user_agent  = ""+    , _a_other            = ""+    }++parse_deg_access :: Match LBS.ByteString -> Maybe Access+parse_deg_access Match{..} =+  case matchSource == " -  [] \"\"   \"\" \"\" \"\"" of+    True  -> Just deg_access+    False -> Nothing++parse_a :: LBS.ByteString -> Maybe Access+parse_a lbs = parse_access $ lbs ?=~ [re_|@{access}|] lpo++parse_access :: Match LBS.ByteString -> Maybe Access+parse_access cs =+  Access+    <$> f parseIPv4Address  [cp|1|]+    <*> f parse_user        [cp|2|]+    <*> f parseDateTimeCLF  [cp|3|]+    <*> f parseSimpleString [cp|4|]+    <*> f parseInteger      [cp|5|]+    <*> f parseInteger      [cp|6|]+    <*> f parseSimpleString [cp|7|]+    <*> f parseSimpleString [cp|8|]+    <*> f parseSimpleString [cp|9|]+  where+    f psr i = psr $ capturedText $ capture i cs+++--+-- Error, error_re, parse_error+--++data Error =+  ERROR+    { _e_date     :: Day+    , _e_time     :: TimeOfDay+    , _e_severity :: Severity+    , _e_pid_tid  :: (Int,Int)+    , _e_other    :: LBS.ByteString+    }+  deriving (Eq,Show)++error_re :: RegexSource+error_re = RegexSource $ unwords+  [ "(@{%date.slashes})"+  , "(@{%time})"+  , "\\[(@{%syslog.severity})\\]"+  , "(@{pid#tid:})(.*)"+  ]++parse_e :: LBS.ByteString -> Maybe Error+parse_e lbs = parse_error $ lbs ?=~ [re_|@{error}|] lpo++parse_error :: Match LBS.ByteString -> Maybe Error+parse_error cs =+  ERROR+    <$> f parseSlashesDate    [cp|1|]+    <*> f parseTimeOfDay      [cp|2|]+    <*> f parseSeverity [cp|3|]+    <*> f parse_pid_tid       [cp|4|]+    <*> f Just                [cp|5|]+  where+    f psr i = psr $ capturedText $ capture i cs+++--+-- User, parseUser+--++newtype User =+    User { _User :: LBS.ByteString }+  deriving (IsString,Ord,Eq,Show)++parse_user :: Replace a => a -> Maybe User+parse_user = Just . User . LBS.pack . unpack_+++--+-- parse_pid_tid+--++parse_pid_tid :: Replace a => a -> Maybe (Int,Int)+parse_pid_tid x = case allMatches $ unpack_ x S.*=~ [re|@{%nat}|] of+    [cs,cs'] -> (,) <$> p cs <*> p cs'+    _        -> Nothing+  where+    p cs = matchCapture cs >>= parseInteger . capturedText+++--+-- cmp+--++cmp :: T.Text -> T.Text -> IO Bool+cmp src dst = handle hdl $ do+    _ <- SH.shelly $ SH.verbosely $+        SH.run "cmp" [src,dst]+    return True+  where+    hdl :: SomeException -> IO Bool+    hdl se = do+      hPutStrLn stderr $+        "testing results against model answers failed: " ++ show se+      return False+\end{code}
+ examples/re-prep.lhs view
@@ -0,0 +1,825 @@+\begin{code}+{-# LANGUAGE NoImplicitPrelude          #-}+{-# LANGUAGE RecordWildCards            #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE TemplateHaskell            #-}+{-# LANGUAGE QuasiQuotes                #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE OverloadedStrings          #-}++module Main+  ( main+  ) where++import           Control.Applicative+import qualified Control.Monad                            as M+import qualified Data.ByteString.Lazy.Char8               as LBS+import           Data.IORef+import           Data.Maybe+import           Data.Monoid+import qualified Data.Text                                as T+import qualified Data.Text.Encoding                       as TE+import           Network.HTTP.Conduit+import           Prelude.Compat+import qualified Shelly                                   as SH+import           System.Directory+import           System.Environment+import           TestKit+import           Text.Heredoc+import           Text.Printf+import           Text.RE.Edit+import           Text.RE.TDFA.ByteString.Lazy+import qualified Text.RE.TDFA.Text                        as TT+\end{code}++\begin{code}+main :: IO ()+main = do+  as  <- getArgs+  case as of+    []                          -> test+    ["test"]                    -> test+    ["doc",fn,fn'] | is_file fn -> doc fn fn'+    ["gen",fn,fn'] | is_file fn -> gen fn fn'+    ["badges"]                  -> badges+    ["bump-version",vrn]        -> bumpVersion vrn+    ["pages"]                   -> pages+    ["all"]                     -> gen_all+    _                           -> usage+  where+    is_file = not . (== "--") . take 2++    doc fn fn' = docMode >>= \dm -> loop dm fn fn'+    gen fn fn' = genMode >>= \gm -> loop gm fn fn'++    usage = do+      pnm <- getProgName+      let prg = (("  "++pnm++" ")++)+      putStr $ unlines+        [ "usage:"+        , prg "--help"+        , prg "[test]"+        , prg "badges"+        , prg "bump-version <version>"+        , prg "pages"+        , prg "all"+        , prg "doc (-|<in-file>) (-|<out-file>)"+        , prg "gen (-|<in-file>) (-|<out-file>)"+        ]+\end{code}+++The Sed Script+--------------++\begin{code}+-- | the MODE determines whether we are generating documentation+-- or a Haskell testsuite and includes any IO-accessible state+-- needed by the relevant processor+data MODE+  = Doc DocState  -- ^ document-generation state+  | Gen GenState  -- ^ adjusting-the-program-for-testing state+\end{code}++The `DocState` is initialised to `Outside` and flips though the different+states as it traverses a code block, so that we can wrap code+blocks in special <div class="replcodeblock"> blocks when their+first line indicates that it contains a REPL calculation, which the+style sheet can pick up and present accordingly.++\begin{code}+data DocMode+  = Outside     -- not inside a begin{code} ... \end{code} block+  | Beginning   -- at the start of a begin{code} ... \end{code} block+  | InsideRepl  -- inside a REPL code block+  | InsideProg  -- inside a non-REPL code block+  deriving (Eq,Show)++type DocState = IORef DocMode++genMode :: IO MODE+genMode = Gen <$> newIORef []+\end{code}++\begin{code}+-- | the state is the accumulated test function identifiers for+-- generating the list of them gets added to the end of the programme+type GenState = IORef [String]++docMode :: IO MODE+docMode = Doc <$> newIORef Outside+\end{code}+++\begin{code}+loop :: MODE -> FilePath -> FilePath -> IO ()+loop mode =+  sed $ Select+    [ (,) [re|^%include ${file}(@{%string}) ${rex}(@{%string})$|]      $ EDIT_fun TOP $ inclde mode+    , (,) [re|^%main ${arg}(top|bottom)$|]                             $ EDIT_gen     $ main_  mode+    , (,) [re|^\\begin\{code\}$|]                                      $ EDIT_gen     $ begin  mode+    , (,) [re|^${fn}(evalme@{%id}) = checkThis ${arg}(@{%string}).*$|] $ EDIT_fun TOP $ evalme mode+    , (,) [re|^\\end\{code\}$|]                                        $ EDIT_fun TOP $ end    mode+    , (,) [re|^.*$|]                                                   $ EDIT_fun TOP $ other  mode+    ]+\end{code}++\begin{code}+inclde, evalme, end,+  other :: MODE+        -> LineNo+        -> Match LBS.ByteString+        -> Location+        -> Capture LBS.ByteString+        -> IO (Maybe LBS.ByteString)++main_,+  begin :: MODE+        -> LineNo+        -> Matches LBS.ByteString+        -> IO (LineEdit LBS.ByteString)++inclde (Doc _ ) = includeDoc+inclde (Gen _ ) = passthru++main_  (Doc _ ) = mainDoc+main_  (Gen gs) = mainGen    gs++begin  (Doc ds) = beginDoc   ds+begin  (Gen _ ) = passthru_g++evalme (Doc ds) = evalmeDoc  ds+evalme (Gen gs) = evalmeGen  gs++end    (Doc ds) = endDoc     ds+end    (Gen _ ) = passthru++other  (Doc ds) = otherDoc   ds+other  (Gen _ ) = passthru++passthru :: LineNo+         -> Match LBS.ByteString+         -> Location+         -> Capture LBS.ByteString+         -> IO (Maybe LBS.ByteString)+passthru _ _ _ _ = return Nothing++passthru_g :: LineNo+           -> Matches LBS.ByteString+           -> IO (LineEdit LBS.ByteString)+passthru_g _ _ = return NoEdit+\end{code}+++Script to Generate the Whole Web Site+-------------------------------------++\begin{code}+gen_all :: IO ()+gen_all = do+    -- prepare HTML docs for the (literate) tools+    pd "re-gen-cabals"+    pd "re-gen-modules"+    pd "re-include"+    pd "re-nginx-log-processor"+    pd "re-prep"+    pd "re-tests"+    pd "TestKit"+    pd "RE/Capture"+    pd "RE/Edit"+    pd "RE/IsRegex"+    pd "RE/Options"+    pd "RE/Replace"+    pd "RE/TestBench"+    pd "RE/Tools/Grep"+    pd "RE/Tools/Lex"+    pd "RE/Tools/Sed"+    pd "RE/Internal/NamedCaptures"+    -- render the tutorial in HTML+    dm <- docMode+    loop dm "examples/re-tutorial-master.lhs" "tmp/re-tutorial.lhs"+    createDirectoryIfMissing False "tmp"+    pandoc_lhs'+      "re-tutorial.lhs"+      "examples/re-tutorial.lhs"+      "tmp/re-tutorial.lhs"+      "docs/re-tutorial.html"+    -- generate the tutorial-based tests+    gm <- genMode+    loop gm "examples/re-tutorial-master.lhs" "examples/re-tutorial.lhs"+    putStrLn ">> examples/re-tutorial.lhs"+    pages+  where+    pd fnm = case (mtch !$$? [cp|fdr|],mtch !$$? [cp|mnm|]) of+        (Nothing ,Just mnm) -> pandoc_lhs ("Text.RE."          <>mnm) ("Text/"    <>fnm<>".lhs") ("docs/"<>mnm<>".html")+        (Just fdr,Just mnm) -> pandoc_lhs ("Text.RE."<>fdr<>"."<>mnm) ("Text/"    <>fnm<>".lhs") ("docs/"<>mnm<>".html")+        _                   -> pandoc_lhs ("examples/"<>fnm<>".lhs" ) ("examples/"<>fnm<>".lhs") ("docs/"<>fnm<>".html")+      where+        mtch = fnm TT.?=~ [re|^RE/(${fdr}(Tools|Internal)/)?${mnm}(@{%id})|]+\end{code}+++Generating the Tutorial+-----------------------++\begin{code}+includeDoc :: LineNo+           -> Match LBS.ByteString+           -> Location+           -> Capture LBS.ByteString+           -> IO (Maybe LBS.ByteString)+includeDoc _ mtch _ _ = fmap Just $+    extract fp =<< compileRegex () re_s+  where+    fp    = prs_s $ captureText [cp|file|] mtch+    re_s  = prs_s $ captureText [cp|rex|]  mtch++    prs_s = maybe (error "includeDoc") T.unpack . parseString+\end{code}++\begin{code}+mainDoc :: LineNo+        -> Matches LBS.ByteString+        -> IO (LineEdit LBS.ByteString)+mainDoc _ _ = return Delete+\end{code}++\begin{code}+beginDoc :: DocState+         -> LineNo+         -> Matches LBS.ByteString+         -> IO (LineEdit LBS.ByteString)+beginDoc ds _ _ = writeIORef ds Beginning >> return Delete+\end{code}++\begin{code}+evalmeDoc, endDoc, otherDoc :: DocState+                            -> LineNo+                            -> Match LBS.ByteString+                            -> Location+                            -> Capture LBS.ByteString+                            -> IO (Maybe LBS.ByteString)++evalmeDoc ds lno _ _ _ = do+  dm <- readIORef ds+  M.when (dm/=Beginning) $+    bad_state "evalme" lno dm+  writeIORef ds InsideRepl+  return $ Just $ "<div class=\"replcodeblock\">\n"<>begin_code++endDoc    ds lno _ _ _ = do+  dm <- readIORef ds+  case dm of+    Outside    -> bad_state "end" lno dm+    Beginning  -> return $ Just $ begin_code <> "\n" <> end_code+    InsideRepl -> return $ Just $ end_code   <> "\n</div>"+    InsideProg -> return   Nothing++otherDoc  ds _ mtch _ _ = do+  dm <- readIORef ds+  case dm of+    Beginning -> do+      writeIORef ds InsideProg+      return $ Just $ begin_code <> "\n" <> matchSource mtch+    _ -> return Nothing++bad_state :: String -> LineNo -> DocMode -> IO a+bad_state lab lno dm = error $+  printf "Bad document syntax: %s: %d: %s" lab (getLineNo lno) $ show dm+\end{code}+++Generating the Tests+--------------------++\begin{code}+evalmeGen :: GenState+          -> LineNo+          -> Match LBS.ByteString+          -> Location+          -> Capture LBS.ByteString+          -> IO (Maybe LBS.ByteString)+evalmeGen gs _ mtch0 _ _ = Just <$>+    replaceCapturesM replace_ ALL f mtch0+  where+    f mtch loc cap = case _loc_capture loc of+      2 -> do+          modifyIORef gs (ide:)+          return $ Just $ LBS.pack $ show ide+        where+          ide = LBS.unpack $ captureText [cp|fn|] mtch+      _ -> return $ Just $ capturedText cap+\end{code}++How are we doing?++\begin{code}+mainGen :: GenState+        -> LineNo+        -> Matches LBS.ByteString+        -> IO (LineEdit LBS.ByteString)+mainGen gs _ mtchs = case allMatches mtchs of+  [mtch]  ->+    case captureText [cp|arg|] $ mtch of+      "top"    -> return $ ReplaceWith $ LBS.unlines $+          [ begin_code+          , "module Main(main) where"+          , end_code+          , ""+          , "*********************************************************"+          , "*"+          , "* WARNING: this is generated from pp-tutorial-master.lhs "+          , "*"+          , "*********************************************************"+          ]+      "bottom" -> do+        fns <- readIORef gs+        return $ ReplaceWith $ LBS.unlines $+          [ begin_code+          , "main :: IO ()"+          , "main = runTests"+          ] ++ mk_list fns +++          [ end_code+          ]+      _ -> error "mainGen (b)"+  _ -> error "mainGen (a)"+\end{code}++We cannot place these strings inline without confusing pandoc so we+use these definitions instead.++\begin{code}+begin_code, end_code :: LBS.ByteString+begin_code = "\\"<>"begin{code}"+end_code   = "\\"<>"end{code}"+\end{code}++++\begin{code}+mk_list :: [String] -> [LBS.ByteString]+mk_list []          = ["[]"]+mk_list (ide0:ides) = f "[" ide0 $ foldr (f ",") ["  ]"] ides+  where+    f pfx ide t = ("  "<>pfx<>" "<>LBS.pack ide) : t+\end{code}+++Extracting a Literate Fragment from a Haskell Program Text+----------------------------------------------------------++\begin{code}+extract :: FilePath -> RE -> IO LBS.ByteString+extract fp rex = extr . LBS.lines <$> LBS.readFile fp+  where+    extr lns =+      case parse $ scan rex lns of+        Nothing      -> oops+        Just (lno,n) -> LBS.unlines $ (hdr :) $ (take n $ drop i lns) ++ [ftr]+          where+            i = getZeroBasedLineNo lno++    oops = error $ concat+      [ "failed to locate fragment matching "+      , show $ reSource rex+      , " in file "+      , show fp+      ]++    hdr  = "<div class='includedcodeblock'>"+    ftr  = "</div>"+\end{code}++\begin{code}+parse :: [Token] -> Maybe (LineNo,Int)+parse []       = Nothing+parse (tk:tks) = case (tk,tks) of+  (Bra b_ln,Hit:Ket k_ln:_) -> Just (b_ln,count_lines_incl b_ln k_ln)+  _                         -> parse tks+\end{code}++\begin{code}+count_lines_incl :: LineNo -> LineNo -> Int+count_lines_incl b_ln k_ln =+  getZeroBasedLineNo k_ln + 1 - getZeroBasedLineNo b_ln+\end{code}++\begin{code}+data Token = Bra LineNo | Hit | Ket LineNo   deriving (Show)+\end{code}++\begin{code}+scan :: RE -> [LBS.ByteString] -> [Token]+scan rex = grepScript+    [ (,) [re|\\begin\{code\}|] $ \i -> chk $ Bra i+    , (,) rex                   $ \_ -> chk   Hit+    , (,) [re|\\end\{code\}|]   $ \i -> chk $ Ket i+    ]+  where+    chk x mtchs = case anyMatches mtchs of+      True  -> Just x+      False -> Nothing+\end{code}+++badges+------++\begin{code}+badges :: IO ()+badges = do+    mapM_ collect+      [ (,) "license"             "https://img.shields.io/badge/license-BSD3-brightgreen.svg"+      , (,) "unix-build"          "https://img.shields.io/travis/iconnect/regex.svg?label=Linux%2BmacOS"+      , (,) "windows-build"       "https://img.shields.io/appveyor/ci/engineerirngirisconnectcouk/regex.svg?label=Windows"+      , (,) "coverage"            "https://img.shields.io/coveralls/iconnect/regex.svg"+      , (,) "build-status"        "https://img.shields.io/travis/iconnect/regex.svg?label=Build%20Status"+      , (,) "maintainers-contact" "https://img.shields.io/badge/email-maintainers%40regex.uk-blue.svg"+      , (,) "feedback-contact"    "https://img.shields.io/badge/email-feedback%40regex.uk-blue.svg"+      ]+  where+    collect (nm,url) = do+      putStrLn $ "updating badge: " ++ nm+      simpleHttp url >>= LBS.writeFile (badge_fn nm)++    badge_fn nm = "docs/badges/"++nm++".svg"+\end{code}+++pages+-----++\begin{code}+pages :: IO ()+pages = do+  prep_page "regex"          MM_hackage "lib/md/index.md" "lib/README-regex.md"+  prep_page "regex-examples" MM_hackage "lib/md/index.md" "lib/README-regex-examples.md"+  prep_page "regex"          MM_github  "lib/md/index.md" "README.md"+  mapM_ pandoc_page [minBound..maxBound]+\end{code}++\begin{code}+data Page+  = PG_index+  | PG_about+  | PG_contact+  | PG_build_status+  | PG_installation+  | PG_tutorial+  | PG_examples+  | PG_roadmap+  | PG_macros+  | PG_directory+  | PG_changelog+  deriving (Bounded,Enum,Eq,Ord,Show)++page_root :: Page -> String+page_root = map tr . drop 3 . show+  where+    tr '_' = '-'+    tr c   = c++page_master_file, page_docs_file :: Page -> FilePath+page_master_file pg = "lib/md/" ++ page_root pg ++ ".md"+page_docs_file   pg = "docs/"   ++ page_root pg ++ ".html"++page_address :: Page -> LBS.ByteString+page_address = LBS.pack . page_root++page_title :: Page -> LBS.ByteString+page_title pg = case pg of+  PG_index        -> "Home"+  PG_about        -> "About"+  PG_contact      -> "Contact"+  PG_build_status -> "Build Status"+  PG_installation -> "Installation"+  PG_tutorial     -> "Tutorial"+  PG_examples     -> "Examples"+  PG_roadmap      -> "Roadmap"+  PG_macros       -> "Macro Tables"+  PG_directory    -> "Directory"+  PG_changelog    -> "Change Log"+\end{code}++\begin{code}+pandoc_page :: Page -> IO ()+pandoc_page pg = do+  mt_lbs <- setup_ttl <$> LBS.readFile (page_master_file pg)+  (hdgs,md_lbs) <- prep_page' MM_pandoc mt_lbs+  LBS.writeFile "tmp/metadata.markdown"  $ LBS.unlines ["---","title: "<>page_title pg,"---"]+  LBS.writeFile "tmp/heading.markdown"   $ page_heading pg+  LBS.writeFile "tmp/page_pre_body.html" $ mk_pre_body_html pg hdgs+  LBS.writeFile "tmp/page_pst_body.html"   pst_body_html+  LBS.writeFile "tmp/page.markdown"        md_lbs+  SH.shelly $ SH.verbosely $+    SH.run_ "pandoc"+      [ "-f", "markdown+grid_tables+autolink_bare_uris"+      , "-t", "html5"+      , "-T", "regex"+      , "-s"+      , "-H", "lib/favicons.html"+      , "-B", "tmp/page_pre_body.html"+      , "-A", "tmp/page_pst_body.html"+      , "-c", "lib/styles.css"+      , "-o", T.pack $ page_docs_file pg+      , "tmp/metadata.markdown"+      , "tmp/heading.markdown"+      , "tmp/page.markdown"+      ]+  where+    setup_ttl = case pg of+      PG_index -> set_title "regex"+      _        -> id++data Heading =+  Heading+    { _hdg_id    :: LBS.ByteString+    , _hdg_title :: LBS.ByteString+    }+  deriving (Show)++data MarkdownMode+  = MM_github+  | MM_hackage+  | MM_pandoc+  deriving (Eq,Show)++page_heading :: Page -> LBS.ByteString+page_heading PG_index = ""+page_heading pg       =+  "<p class='pagebc'><a href='.' title='Home'>Home</a> &raquo; **"<>page_title pg<>"**</p>\n"++prep_page :: LBS.ByteString -> MarkdownMode -> FilePath -> FilePath -> IO ()+prep_page ttl mmd in_fp out_fp = do+  lbs      <- set_title ttl <$> LBS.readFile in_fp+  (_,lbs') <- prep_page' mmd lbs+  LBS.writeFile out_fp lbs'++set_title :: LBS.ByteString -> LBS.ByteString -> LBS.ByteString+set_title ttl lbs = fromMaybe oops $ flip sed' lbs $ Pipe+    [ (,) [re|<<\$title\$>>|] $ EDIT_fun TOP $ \_ _ _ _->return $ Just ttl+    ]+  where+    -- runIdentity added to base in 4.9 only+    oops = error "set_title"++prep_page' :: MarkdownMode -> LBS.ByteString -> IO ([Heading],LBS.ByteString)+prep_page' mmd lbs = do+    rf_h <- newIORef []+    rf_t <- newIORef False+    lbs1 <- sed' (scr rf_h rf_t) =<< include lbs+    lbs2 <- fromMaybe "" <$> fin_task_list' mmd rf_t+    hdgs <- reverse <$> readIORef rf_h+    return (hdgs,lbs1<>lbs2)+  where+    scr rf_h rf_t = Select+      [ (,) [re|^%heading#${ide}(@{%id}) +${ttl}([^ ].*)$|] $ EDIT_fun TOP $ heading       mmd rf_t rf_h+      , (,) [re|^- \[ \] +${itm}(.*)$|]                     $ EDIT_fun TOP $ task_list     mmd rf_t False+      , (,) [re|^- \[[Xx]\] +${itm}(.*)$|]                  $ EDIT_fun TOP $ task_list     mmd rf_t True+      , (,) [re|^.*$|]                                      $ EDIT_fun TOP $ fin_task_list mmd rf_t+      ]++heading :: MarkdownMode+        -> IORef Bool+        -> IORef [Heading]+        -> LineNo+        -> Match LBS.ByteString+        -> Location+        -> Capture LBS.ByteString+        -> IO (Maybe LBS.ByteString)+heading mmd rf_t rf_h _ mtch _ _ = do+    lbs <- fromMaybe "" <$> fin_task_list' mmd rf_t+    modifyIORef rf_h (Heading ide ttl:)+    return $ Just $ lbs<>h2+  where+    h2 = case mmd of+      MM_github  -> "## "<>ttl+      MM_hackage -> "## "<>ttl+      MM_pandoc  -> "<h2 id='"<>ide<>"'>"<>ttl<>"</h2>"++    ide = mtch !$$ [cp|ide|]+    ttl = mtch !$$ [cp|ttl|]++mk_pre_body_html :: Page -> [Heading] -> LBS.ByteString+mk_pre_body_html pg hdgs = hdr <> LBS.concat (map nav [minBound..maxBound]) <> ftr+  where+    hdr :: LBS.ByteString+    hdr = [here|    <div id="container">+    <div id="sidebar">+      <div id="corner">+        |] <> branding <> [here|+      </div>+      <div class="widget" id="pages">+        <ul class="page-nav">+|]++    nav dst_pg = LBS.unlines $+      nav_li "          " pg_cls pg_adr pg_ttl :+        [ nav_li "            " ["secnav"] ("#"<>_hdg_id) _hdg_title+          | Heading{..} <- hdgs+          , is_moi+          ]+      where+        pg_cls = ["pagenav",if is_moi then "moi" else "toi"]+        pg_adr = page_address dst_pg+        pg_ttl = page_title   dst_pg+        is_moi = pg == dst_pg++    nav_li pfx cls dst title = LBS.concat+      [ pfx+      , "<li class='"+      , LBS.unwords cls+      , "'><a href='"+      , dst+      , "'>"+      , title+      , "</a></li>"+      ]++    ftr = [here|          </ul>+      </div>+      <div class="supplementary widget" id="github">+        <a href="https://github.com/iconnect/regex"><img src="images/code.svg" alt="github code" /> Code</a>+      </div>+      <div class="supplementary widget" id="github-issues">+        <a href="https://github.com/iconnect/regex/issues"><img src="images/issue-opened.svg" alt="github code" /> Issues</a>+      </div>+      <div class="widget-divider">&nbsp;</div>+      <div class="supplementary widget" id="build-status">+        <a href="https://hackage.haskell.org/package/regex">+          <img src="badges/hackage.svg" alt="hackage version" />+        </a>+      </div>+      <div class="supplementary widget" id="build-status">+        <a href="build-status">+          <img src="badges/build-status.svg" alt="build status" />+        </a>+      </div>+      <div class="supplementary widget" id="maintainers-contact">+        <a href="mailto:maintainers@regex.uk">+          <img src="badges/maintainers-contact.svg" alt="build status" />+        </a>+      </div>+      <div class="supplementary widget" id="feedback-contact">+        <a href="mailto:feedback@regex.uk">+          <img src="badges/feedback-contact.svg" alt="build status" />+        </a>+      </div>+      <div class="supplementary widget twitter">+        <iframe style="width:162px; height:20px;" src="https://platform.twitter.com/widgets/follow_button.html?screen_name=hregex&amp;show_count=false">+        </iframe>+      </div>+    </div>+    <div id="content">+|]++pst_body_html :: LBS.ByteString+pst_body_html = [here|      </div>+    </div>+|]+\end{code}+++Task Lists+----------++\begin{code}+-- | replacement function to convert GFM task list line into HTML if we+-- aren't writing GFM (i.e.,  generating markdown for GitHub)+task_list :: MarkdownMode               -- ^ what flavour of md are we generating+          -> IORef Bool                 -- ^ will contain True iff we have already entered a task list+          -> Bool                       -- ^ true if this is a checjed line+          -> LineNo                     -- ^ line no of the replacement redex (unused)+          -> Match LBS.ByteString       -- ^ the matched task-list line+          -> Location                   -- ^ which match and capure (unused)+          -> Capture LBS.ByteString     -- ^ the capture weare replacing (unsuded)+          -> IO (Maybe LBS.ByteString)  -- ^ the replacement text, or Nothing to indicate no change to this line+task_list mmd rf chk _ mtch _ _ =+  case mmd of+    MM_github  -> return Nothing+    MM_hackage -> return $ Just $ "&nbsp;&nbsp;&nbsp;&nbsp;"<>cb<>"&nbsp;&nbsp;"<>itm<>"\n"+    MM_pandoc  -> do+      in_tl <- readIORef rf+      writeIORef rf True+      return $ tl_line in_tl chk+  where+    tl_line in_tl enbl = Just $ LBS.concat+      [ if in_tl then "" else "<ul class='contains-task-list'>\n"+      , "  <li class='task-list-item'>"+      , "<input type='checkbox' class='task-list-item-checkbox'"+      , if enbl then " checked=''" else ""+      , " disabled=''/>"+      , itm+      , "</li>"+      ]++    cb  = if chk then "&#x2612;" else "&#x2610;"++    itm = mtch !$$ [cp|itm|]++-- | replacement function used for 'other' lines -- terminate any task+-- list that was being generated+fin_task_list :: MarkdownMode               -- ^ what flavour of md are we generating+              -> IORef Bool                 -- ^ will contain True iff we have already entered a task list+              -> LineNo                     -- ^ line no of the replacement redex (unused)+              -> Match LBS.ByteString       -- ^ the matched task-list line+              -> Location                   -- ^ which match and capure (unused)+              -> Capture LBS.ByteString     -- ^ the capture weare replacing (unsuded)+              -> IO (Maybe LBS.ByteString)  -- ^ the replacement text, or Nothing to indicate no change to this line+fin_task_list mmd rf_t _ mtch _ _ =+  fmap (<>matchSource mtch) <$> fin_task_list' mmd rf_t++-- | close any task list being processed, returning the closing text+-- as necessary+fin_task_list' :: MarkdownMode              -- ^ what flavour of md are we generating+               -> IORef Bool                -- ^ will contain True iff we have already entered a task list+               -> IO (Maybe LBS.ByteString) -- ^ task-list closure HTML, if task-list HTML needs closing+fin_task_list' mmd rf = do+  in_tl <- readIORef rf+  writeIORef rf False+  case mmd==MM_github || not in_tl of+    True  -> return Nothing+    False -> return $ Just $ "</ul>\n"+\end{code}+++Literate Haskell Pages+----------------------++\begin{code}+pandoc_lhs :: T.Text -> T.Text -> T.Text -> IO ()+pandoc_lhs title in_file = pandoc_lhs' title in_file in_file++pandoc_lhs' :: T.Text -> T.Text -> T.Text -> T.Text -> IO ()+pandoc_lhs' title repo_path in_file out_file = do+  LBS.writeFile "tmp/metadata.markdown"  $+                    LBS.unlines+                      [ "---"+                      , "title: "<>LBS.fromStrict (TE.encodeUtf8 title)+                      ,"---"+                      ]+  LBS.writeFile "tmp/bc.html" bc+  LBS.writeFile "tmp/ft.html" ft+  fmap (const ()) $+    SH.shelly $ SH.verbosely $+      SH.run "pandoc"+        [ "-f", "markdown+lhs+grid_tables"+        , "-t", "html5"+        , "-T", "regex"+        , "-s"+        , "-H", "lib/favicons.html"+        , "-B", "tmp/bc.html"+        , "-A", "tmp/ft.html"+        , "-c", "lib/lhs-styles.css"+        , "-c", "lib/bs.css"+        , "-o", out_file+        , "tmp/metadata.markdown"+        , in_file+        ]+  where+    bc = LBS.unlines+    --  [ "<div class='brandingdiv'>"+    --  , "  " <> branding+    --  , "</div>"+      [ "<div class='bcdiv'>"+      , "  <ol class='breadcrumb'>"+      , "    <li>"<>branding<>"</li>"+      , "    <li><a title='source file' href='" <>+              repo_url <> "'>" <> (LBS.pack $ T.unpack title) <> "</a></li>"+      , "</ol>"+      , "</div>"+      , "<div class='litcontent'>"+      ]++    ft = LBS.concat+      [ "</div>"+      ]++    repo_url = LBS.concat+      [ "https://github.com/iconnect/regex/blob/master/"+      , LBS.pack $ T.unpack repo_path+      ]+\end{code}+++branding+--------++\begin{code}+branding :: LBS.ByteString+branding = [here|<a href="." style="Arial, 'Helvetica Neue', Helvetica, sans-serif;" id="branding">[<span style='color:red;'>re</span>|${<span style='color:red;'>gex</span>}(.*)|<span></span>]</a>|]+\end{code}+++testing+-------++\begin{code}+test :: IO ()+test = do+  dm <- docMode+  test_pp "pp-doc" (loop dm) "data/pp-test.lhs" "data/pp-result-doc.lhs"+  gm <- genMode+  test_pp "pp-gen" (loop gm) "data/pp-test.lhs" "data/pp-result-gen.lhs"+  putStrLn "tests passed"+\end{code}
+ examples/re-tests.lhs view
@@ -0,0 +1,522 @@+\begin{code}+{-# LANGUAGE NoImplicitPrelude          #-}+{-# LANGUAGE RecordWildCards            #-}+{-# LANGUAGE OverloadedStrings          #-}+{-# LANGUAGE QuasiQuotes                #-}+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# LANGUAGE TemplateHaskell            #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}++module Main (main) where++import           Control.Exception+import           Data.Array+import qualified Data.ByteString.Char8          as B+import qualified Data.ByteString.Lazy.Char8     as LBS+import qualified Data.Foldable                  as F+import qualified Data.HashMap.Strict            as HM+import           Data.Maybe+import           Data.Monoid+import qualified Data.Sequence                  as S+import           Data.String+import qualified Data.Text                      as T+import qualified Data.Text.Lazy                 as LT+import           Language.Haskell.TH.Quote+import           Prelude.Compat+import           Test.SmallCheck.Series+import           Test.Tasty+import           Test.Tasty.HUnit+import           Test.Tasty.SmallCheck          as SC+import           Text.Heredoc+import qualified Text.Regex.PCRE                as PCRE_++import qualified Text.Regex.TDFA                as TDFA_+import           Text.RE+import           Text.RE.Internal.NamedCaptures+import           Text.RE.Internal.PreludeMacros+import           Text.RE.Internal.QQ+import qualified Text.RE.PCRE                   as PCRE+import           Text.RE.TDFA                   as TDFA+import           Text.RE.TestBench++import qualified Text.RE.PCRE.String            as P_ST+import qualified Text.RE.PCRE.ByteString        as P_BS+import qualified Text.RE.PCRE.ByteString.Lazy   as PLBS+import qualified Text.RE.PCRE.Sequence          as P_SQ++import qualified Text.RE.TDFA.String            as T_ST+import qualified Text.RE.TDFA.ByteString        as T_BS+import qualified Text.RE.TDFA.ByteString.Lazy   as TLBS+import qualified Text.RE.TDFA.Sequence          as T_SQ+import qualified Text.RE.TDFA.Text              as T_TX+import qualified Text.RE.TDFA.Text.Lazy         as TLTX+++main :: IO ()+main = defaultMain $+  testGroup "Tests"+    [ prelude_tests+    , parsing_tests+    , core_tests+    , replace_tests+    , options_tests+    , namedCapturesTestTree+    , many_tests+    , misc_tests+    ]++prelude_tests :: TestTree+prelude_tests = testGroup "Prelude"+  [ tc TDFA TDFA.preludeEnv+  , tc PCRE PCRE.preludeEnv+  ]+  where+    tc rty m_env =+      testCase (show rty) $ do+        dumpMacroTable "macros" rty m_env+        assertBool "testMacroEnv" =<< testMacroEnv "prelude" rty m_env++str_, str' :: String+str_      = "a bbbb aa b"+str'      = "foo"++regex_, regex_alt :: RE+regex_    = [re|(a+) (b+)|]+regex_alt = [re|(a+)|(b+)|]++regex_str_matches :: Matches String+regex_str_matches =+  Matches+    { matchesSource = "a bbbb aa b"+    , allMatches =+        [ regex_str_match+        , regex_str_match_2+        ]+    }++regex_str_match :: Match String+regex_str_match =+  Match+    { matchSource   = "a bbbb aa b"+    , captureNames  = noCaptureNames+    , matchArray    = array (0,2)+        [ (0,Capture {captureSource = "a bbbb aa b", capturedText = "a bbbb", captureOffset = 0, captureLength = 6})+        , (1,Capture {captureSource = "a bbbb aa b", capturedText = "a"     , captureOffset = 0, captureLength = 1})+        , (2,Capture {captureSource = "a bbbb aa b", capturedText = "bbbb"  , captureOffset = 2, captureLength = 4})+        ]+    }++regex_str_match_2 :: Match String+regex_str_match_2 =+  Match+    { matchSource   = "a bbbb aa b"+    , captureNames  = noCaptureNames+    , matchArray    = array (0,2)+        [ (0,Capture {captureSource = "a bbbb aa b", capturedText = "aa b", captureOffset = 7 , captureLength = 4})+        , (1,Capture {captureSource = "a bbbb aa b", capturedText = "aa"  , captureOffset = 7 , captureLength = 2})+        , (2,Capture {captureSource = "a bbbb aa b", capturedText = "b"   , captureOffset = 10, captureLength = 1})+        ]+    }++regex_alt_str_matches :: Matches String+regex_alt_str_matches =+  Matches+    { matchesSource = "a bbbb aa b"+    , allMatches    =+        [ Match+            { matchSource   = "a bbbb aa b"+            , captureNames  = noCaptureNames+            , matchArray    = array (0,2)+                [ (0,Capture {captureSource = "a bbbb aa b", capturedText = "a", captureOffset = 0, captureLength = 1})+                , (1,Capture {captureSource = "a bbbb aa b", capturedText = "a", captureOffset = 0, captureLength = 1})+                , (2,Capture {captureSource = "a bbbb aa b", capturedText = "", captureOffset = -1, captureLength = 0})+                ]+            }+        , Match+            { matchSource   = "a bbbb aa b"+            , captureNames  = noCaptureNames+            , matchArray    = array (0,2)+                [ (0,Capture {captureSource = "a bbbb aa b", capturedText = "bbbb", captureOffset = 2 , captureLength = 4})+                , (1,Capture {captureSource = "a bbbb aa b", capturedText = ""    , captureOffset = -1, captureLength = 0})+                , (2,Capture {captureSource = "a bbbb aa b", capturedText = "bbbb", captureOffset = 2 , captureLength = 4})+                ]+            }+        , Match+            { matchSource   = "a bbbb aa b"+            , captureNames  = noCaptureNames+            , matchArray    = array (0,2)+                [ (0,Capture {captureSource = "a bbbb aa b", capturedText = "aa", captureOffset = 7 , captureLength = 2})+                , (1,Capture {captureSource = "a bbbb aa b", capturedText = "aa", captureOffset = 7 , captureLength = 2})+                , (2,Capture {captureSource = "a bbbb aa b", capturedText = ""  , captureOffset = -1, captureLength = 0})+                ]+            }+        , Match+            { matchSource   = "a bbbb aa b"+            , captureNames  = noCaptureNames+            , matchArray    = array (0,2)+                [ (0,Capture {captureSource = "a bbbb aa b", capturedText = "b", captureOffset = 10, captureLength = 1})+                , (1,Capture {captureSource = "a bbbb aa b", capturedText = "" , captureOffset = -1, captureLength = 0})+                , (2,Capture {captureSource = "a bbbb aa b", capturedText = "b", captureOffset = 10, captureLength = 1})+                ]+            }+        ]+    }++parsing_tests :: TestTree+parsing_tests = testGroup "Parsing"+  [ testCase "complete check (matchM/ByteString)" $ do+      r    <- compileRegex () $ reSource regex_+      assertEqual "Match" (B.pack <$> regex_str_match) $ B.pack str_ ?=~ r+  , testCase "matched (matchM/Text)" $ do+      r     <- compileRegex () $ reSource regex_+      assertEqual "matched" True $ matched $ T.pack str_ ?=~ r+  ]++core_tests :: TestTree+core_tests = testGroup "Match"+  [ testCase "text (=~~Text.Lazy)" $ do+      txt <- LT.pack str_ =~~ [re|(a+) (b+)|] :: IO (LT.Text)+      assertEqual "text" txt "a bbbb"+  , testCase "multi (=~~/String)" $ do+      let sm = str_ =~ regex_ :: Match String+          m  = capture [cp|0|] sm+      assertEqual "captureSource" "a bbbb aa b" $ captureSource m+      assertEqual "capturedText"  "a bbbb"      $ capturedText  m+      assertEqual "capturePrefix" ""            $ capturePrefix m+      assertEqual "captureSuffix" " aa b"       $ captureSuffix m+  , testCase "complete (=~~/ByteString)" $ do+      mtch <- B.pack str_ =~~ regex_ :: IO (Match B.ByteString)+      assertEqual "Match" mtch $ B.pack <$> regex_str_match+  , testCase "complete (all,String)" $ do+      let mtchs = str_ =~ regex_     :: Matches String+      assertEqual "Matches" mtchs regex_str_matches+  , testCase "complete (all,reg_alt)" $ do+      let mtchs = str_ =~ regex_alt  :: Matches String+      assertEqual "Matches" mtchs regex_alt_str_matches+  , testCase "complete (=~~,all)" $ do+      mtchs <- str_ =~~ regex_       :: IO (Matches String)+      assertEqual "Matches" mtchs regex_str_matches+  , testCase "fail (all)" $ do+      let mtchs = str' =~ regex_    :: Matches String+      assertEqual "not.anyMatches" False $ anyMatches mtchs+  ]++replace_tests :: TestTree+replace_tests = testGroup "Replace"+  [ testCase "String/single" $ do+      let m = str_ =~ regex_ :: Match String+          r = replaceCaptures' ALL fmt m+      assertEqual "replaceCaptures'" r "(0:0:(0:1:a) (0:2:bbbb)) aa b"+  , testCase "String/alt" $ do+      let ms = str_ =~ regex_ :: Matches String+          r  = replaceAllCaptures' ALL fmt ms+      chk r+  , testCase "String" $ do+      let ms = str_ =~ regex_ :: Matches String+          r  = replaceAllCaptures' ALL fmt ms+      chk r+  , testCase "ByteString" $ do+      let ms = B.pack str_ =~ regex_ :: Matches B.ByteString+          r  = replaceAllCaptures' ALL fmt ms+      chk r+  , testCase "LBS.ByteString" $ do+      let ms = LBS.pack str_ =~ regex_ :: Matches LBS.ByteString+          r  = replaceAllCaptures' ALL fmt ms+      chk r+  , testCase "Seq Char" $ do+      let ms = S.fromList str_ =~ regex_ :: Matches (S.Seq Char)+          f  = \_ (Location i j) Capture{..} -> Just $ S.fromList $+                  "(" <> show i <> ":" <> show_co j <> ":" <>+                    F.toList capturedText <> ")"+          r  = replaceAllCaptures' ALL f ms+      assertEqual "replaceAllCaptures'" r $+        S.fromList "(0:0:(0:1:a) (0:2:bbbb)) (1:0:(1:1:aa) (1:2:b))"+  , testCase "Text" $ do+      let ms = T.pack str_ =~ regex_ :: Matches T.Text+          r  = replaceAllCaptures' ALL fmt ms+      chk r+  , testCase "LT.Text" $ do+      let ms = LT.pack str_ =~ regex_ :: Matches LT.Text+          r  = replaceAllCaptures' ALL fmt ms+      chk r+  ]+  where+    chk r =+      assertEqual+        "replaceAllCaptures'"+        r+        "(0:0:(0:1:a) (0:2:bbbb)) (1:0:(1:1:aa) (1:2:b))"++    fmt :: (IsString s,Replace s) => a -> Location -> Capture s -> Maybe s+    fmt _ (Location i j) Capture{..} = Just $ "(" <> pack_ (show i) <> ":" <>+      pack_ (show_co j) <> ":" <> capturedText <> ")"++    show_co (CaptureOrdinal j) = show j++options_tests :: TestTree+options_tests = testGroup "Simple Options"+  [ testGroup "TDFA Simple Options"+      [ testCase "default (MultilineSensitive)" $ assertEqual "#" 2 $+          countMatches $ s TDFA.*=~ [TDFA.re|[0-9a-f]{2}$|]+      , testCase "MultilineSensitive" $ assertEqual "#" 2 $+          countMatches $ s TDFA.*=~ [TDFA.reMultilineSensitive|[0-9a-f]{2}$|]+      , testCase "MultilineInsensitive" $ assertEqual "#" 4 $+          countMatches $ s TDFA.*=~ [TDFA.reMultilineInsensitive|[0-9a-f]{2}$|]+      , testCase "BlockSensitive" $ assertEqual "#" 0 $+          countMatches $ s TDFA.*=~ [TDFA.reBlockSensitive|[0-9a-f]{2}$|]+      , testCase "BlockInsensitive" $ assertEqual "#" 1 $+          countMatches $ s TDFA.*=~ [TDFA.reBlockInsensitive|[0-9a-f]{2}$|]+      ]+  , testGroup "PCRE Simple Options"+      [ testCase "default (MultilineSensitive)" $ assertEqual "#" 2 $+          countMatches $ s PCRE.*=~ [PCRE.re|[0-9a-f]{2}$|]+      , testCase "MultilineSensitive" $ assertEqual "#" 2 $+          countMatches $ s PCRE.*=~ [PCRE.reMultilineSensitive|[0-9a-f]{2}$|]+      , testCase "MultilineInsensitive" $ assertEqual "#" 4 $+          countMatches $ s PCRE.*=~ [PCRE.reMultilineInsensitive|[0-9a-f]{2}$|]+      , testCase "BlockSensitive" $ assertEqual "#" 0 $+          countMatches $ s PCRE.*=~ [PCRE.reBlockSensitive|[0-9a-f]{2}$|]+      , testCase "BlockInsensitive" $ assertEqual "#" 1 $+          countMatches $ s PCRE.*=~ [PCRE.reBlockInsensitive|[0-9a-f]{2}$|]+      ]+    ]+  where+    s = "0a\nbb\nFe\nA5" :: String++many_tests :: TestTree+many_tests = testGroup "Many Tests"+    [ testCase "PCRE a"               $ test (PCRE.*=~) (PCRE.?=~) (PCRE.=~) (PCRE.=~~) matchOnce matchMany id          re_pcre+    , testCase "PCRE ByteString"      $ test (P_BS.*=~) (P_BS.?=~) (P_BS.=~) (P_BS.=~~) matchOnce matchMany B.pack      re_pcre+    , testCase "PCRE ByteString.Lazy" $ test (PLBS.*=~) (PLBS.?=~) (PLBS.=~) (PLBS.=~~) matchOnce matchMany LBS.pack    re_pcre+    , testCase "PCRE Sequence"        $ test (P_SQ.*=~) (P_SQ.?=~) (P_SQ.=~) (P_SQ.=~~) matchOnce matchMany S.fromList  re_pcre+    , testCase "PCRE String"          $ test (P_ST.*=~) (P_ST.?=~) (P_ST.=~) (P_ST.=~~) matchOnce matchMany id          re_pcre+    , testCase "TDFA a"               $ test (TDFA.*=~) (TDFA.?=~) (TDFA.=~) (TDFA.=~~) matchOnce matchMany id          re_tdfa+    , testCase "TDFA ByteString"      $ test (T_BS.*=~) (T_BS.?=~) (T_BS.=~) (T_BS.=~~) matchOnce matchMany B.pack      re_tdfa+    , testCase "TDFA ByteString.Lazy" $ test (TLBS.*=~) (TLBS.?=~) (TLBS.=~) (TLBS.=~~) matchOnce matchMany LBS.pack    re_tdfa+    , testCase "TDFA Sequence"        $ test (T_SQ.*=~) (T_SQ.?=~) (T_SQ.=~) (T_SQ.=~~) matchOnce matchMany S.fromList  re_tdfa+    , testCase "TDFA String"          $ test (T_ST.*=~) (T_ST.?=~) (T_ST.=~) (T_ST.=~~) matchOnce matchMany id          re_tdfa+    , testCase "TDFA Text"            $ test (T_TX.*=~) (T_TX.?=~) (T_TX.=~) (T_TX.=~~) matchOnce matchMany T.pack      re_tdfa+    , testCase "TDFA Text.Lazy"       $ test (TLTX.*=~) (TLTX.?=~) (TLTX.=~) (TLTX.=~~) matchOnce matchMany LT.pack     re_tdfa+    ]+  where+    test :: (Show s,Eq s)+         => (s->r->Matches s)+         -> (s->r->Match   s)+         -> (s->r->Matches s)+         -> (s->r->Maybe(Match s))+         -> (r->s->Match   s)+         -> (r->s->Matches s)+         -> (String->s)+         -> r+         -> Assertion+    test (%*=~) (%?=~) (%=~) (%=~~) mo mm inj r = do+        2         @=? countMatches mtchs+        Just txt' @=? matchedText  mtch+        mtchs     @=? mtchs'+        mb_mtch   @=? Just mtch+        mtch      @=? mtch''+        mtchs     @=? mtchs''+      where+        mtchs   = txt %*=~ r+        mtch    = txt %?=~ r+        mtchs'  = txt %=~  r+        mb_mtch = txt %=~~ r+        mtch''  = mo r txt+        mtchs'' = mm r txt++        txt     = inj "2016-01-09 2015-12-5 2015-10-05"+        txt'    = inj "2016-01-09"++    re_pcre = fromMaybe oops $ PCRE.compileRegex () "[0-9]{4}-[0-9]{2}-[0-9]{2}"+    re_tdfa = fromMaybe oops $ TDFA.compileRegex () "[0-9]{4}-[0-9]{2}-[0-9]{2}"++    oops    = error "many_tests"++misc_tests :: TestTree+misc_tests = testGroup "Miscelaneous Tests"+    [ testGroup "QQ"+        [ qq_tc "expression"  quoteExp+        , qq_tc "pattern"     quotePat+        , qq_tc "type"        quoteType+        , qq_tc "declaration" quoteDec+        ]+    , testGroup "PreludeMacros"+        [ valid_string "preludeMacroTable"    preludeMacroTable+        , valid_macro  "preludeMacroSummary"  preludeMacroSummary+        , valid_string "preludeMacroSources"  preludeMacroSources+        , valid_macro  "preludeMacroSource"   preludeMacroSource+        ]+    , testGroup "RE"+        [ valid_res TDFA+            [ TDFA.re+            , TDFA.reMS+            , TDFA.reMI+            , TDFA.reBS+            , TDFA.reBI+            , TDFA.reMultilineSensitive+            , TDFA.reMultilineInsensitive+            , TDFA.reBlockSensitive+            , TDFA.reBlockInsensitive+            , TDFA.re_+            ]+        , testCase  "TDFA.regexType"           $ TDFA   @=? TDFA.regexType+        , testCase  "TDFA.reOptions"           $ Simple @=? _options_mode (TDFA.reOptions tdfa_re)+        , testCase  "TDFA.makeOptions md"      $ Block  @=? _options_mode (makeOptions Block :: Options_ TDFA.RE TDFA_.CompOption TDFA_.ExecOption)+        , testCase  "TDFA.preludeTestsFailing" $ []     @=? TDFA.preludeTestsFailing+        , ne_string "TDFA.preludeTable"          TDFA.preludeTable+        , ne_string "TDFA.preludeSources"        TDFA.preludeSources+        , testGroup "TDFA.preludeSummary"+            [ ne_string (presentPreludeMacro pm) $ TDFA.preludeSummary pm+                | pm <- tdfa_prelude_macros+                ]+        , testGroup  "TDFA.preludeSource"+            [ ne_string (presentPreludeMacro pm) $ TDFA.preludeSource  pm+                | pm <- tdfa_prelude_macros+                ]+        , valid_res PCRE+            [ PCRE.re+            , PCRE.reMS+            , PCRE.reMI+            , PCRE.reBS+            , PCRE.reBI+            , PCRE.reMultilineSensitive+            , PCRE.reMultilineInsensitive+            , PCRE.reBlockSensitive+            , PCRE.reBlockInsensitive+            , PCRE.re_+            ]+        , testCase  "PCRE.regexType"           $ PCRE   @=? PCRE.regexType+        , testCase  "PCRE.reOptions"           $ Simple @=? _options_mode (PCRE.reOptions pcre_re)+        , testCase  "PCRE.makeOptions md"      $ Block  @=? _options_mode (makeOptions Block :: Options_ PCRE.RE PCRE_.CompOption PCRE_.ExecOption)+        , testCase  "PCRE.preludeTestsFailing" $ []     @=? PCRE.preludeTestsFailing+        , ne_string "PCRE.preludeTable"          PCRE.preludeTable+        , ne_string "PCRE.preludeTable"          PCRE.preludeSources+        , testGroup "PCRE.preludeSummary"+            [ ne_string (presentPreludeMacro pm) $ PCRE.preludeSummary pm+                | pm <- pcre_prelude_macros+                ]+        , testGroup "PCRE.preludeSource"+            [ ne_string (presentPreludeMacro pm) $ PCRE.preludeSource  pm+                | pm <- pcre_prelude_macros+                ]+        ]+    ]+  where+    tdfa_re = fromMaybe oops $ TDFA.compileRegex () ".*"+    pcre_re = fromMaybe oops $ PCRE.compileRegex () ".*"++    oops = error "misc_tests"++qq_tc :: String -> (QuasiQuoter->String->a) -> TestTree+qq_tc sc prj = testCase sc $+    try tst >>= either hdl (const $ assertFailure "qq0")+  where+    tst :: IO ()+    tst = prj (qq0 "qq_tc") "" `seq` return ()++    hdl :: QQFailure -> IO ()+    hdl qqf = do+      "qq_tc" @=? _qqf_context   qqf+      sc      @=? _qqf_component qqf++valid_macro :: String -> (RegexType->PreludeMacro->String) -> TestTree+valid_macro label f = testGroup label+    [ valid_string (presentPreludeMacro pm) (flip f pm)+        | pm<-[minBound..maxBound]+        ]++valid_string :: String -> (RegexType->String) -> TestTree+valid_string label f = testGroup label+    [ ne_string (show rty) $ f rty+        | rty<-[TDFA] -- until PCRE has a binding for all macros+        ]++ne_string :: String -> String -> TestTree+ne_string label s =+  testCase label $ assertBool "non-empty string" $ length s > 0++-- just evaluating quasi quoters to HNF for now -- they+-- being tested everywhere [re|...|] (etc.) calculations+-- are bings used but HPC isn't measuring this+valid_res :: RegexType -> [QuasiQuoter] -> TestTree+valid_res rty = testCase (show rty) . foldr seq (return ())++pcre_prelude_macros :: [PreludeMacro]+pcre_prelude_macros = filter (/= PM_string) [minBound..maxBound]++tdfa_prelude_macros :: [PreludeMacro]+tdfa_prelude_macros = [minBound..maxBound]+\end{code}+++Testing : FormatToken/Scan Properties+-------------------------------------++\begin{code}+namedCapturesTestTree :: TestTree+namedCapturesTestTree = localOption (SmallCheckDepth 4) $+  testGroup "NamedCaptures"+    [ formatScanTestTree+    , analyseTokensTestTree+    ]+\end{code}++\begin{code}+instance Monad m => Serial m Token+\end{code}+++Testing : FormatToken/Scan Properties+-------------------------------------++\begin{code}+formatScanTestTree :: TestTree+formatScanTestTree =+  testGroup "FormatToken/Scan Properties"+    [ localOption (SmallCheckDepth 4) $+        SC.testProperty "formatTokens == formatTokens0" $+          \tks -> formatTokens tks == formatTokens0 tks+    , localOption (SmallCheckDepth 4) $+        SC.testProperty "scan . formatTokens' idFormatTokenOptions == id" $+          \tks -> all validToken tks ==>+                    scan (formatTokens' idFormatTokenOptions tks) == tks+    ]+\end{code}+++Testing : Analysing [Token] Unit Tests+--------------------------------------++\begin{code}+analyseTokensTestTree :: TestTree+analyseTokensTestTree =+  testGroup "Analysing [Token] Unit Tests"+    [ tc [here|foobar|]                                       []+    , tc [here||]                                             []+    , tc [here|$([0-9]{4})|]                                  []+    , tc [here|${x}()|]                                       [(1,"x")]+    , tc [here|${}()|]                                        []+    , tc [here|${}()${foo}()|]                                [(2,"foo")]+    , tc [here|${x}(${y()})|]                                 [(1,"x")]+    , tc [here|${x}(${y}())|]                                 [(1,"x"),(2,"y")]+    , tc [here|${a}(${b{}())|]                                [(1,"a")]+    , tc [here|${y}([0-9]{4})-${m}([0-9]{2})-${d}([0-9]{2})|] [(1,"y"),(2,"m"),(3,"d")]+    , tc [here|@$(@|\{${name}([^{}]+)\})|]                    [(2,"name")]+    , tc [here|${y}[0-9]{4}|]                                 []+    , tc [here|${}([0-9]{4})|]                                []+    ]+  where+    tc s al =+      testCase s $ assertEqual "CaptureNames"+        (xnc s)+        (HM.fromList+          [ (CaptureName $ T.pack n,CaptureOrdinal i)+              | (i,n)<-al+              ]+        )++    xnc = either oops fst . extractNamedCaptures+      where+        oops = error "analyseTokensTestTree: unexpected parse failure"+\end{code}
+ examples/re-tutorial.lhs view
@@ -0,0 +1,862 @@+The Regex Tutorial+==================++This is a literate Haskell programme lightly processed to produce this+web presentation and also to generate a test suite that verifies that+each of the example calculations are generating the expected results.+You can load it into ghci and try out the examples either by running+_ghci_ itself from the root folder of the regex package:+```bash+ghci examples/re-tutorial.lhs+```+or using `cabal repl`:+```+cabal configure --enable-tests+cabal repl examples/re-tutorial.lhs+```++Depending upon how you have configured and run `ghci` you may need to+set one of _ghci_'s interctive settings &mdash; the topic of the next+section.+++Setting Up: The Pragmas+-----------------------++Haskell programs typically start with a few compiler pragmas to switch+on the language extensions needed by the module. Because regex uses+Template Haskell to check regular expressions at compile time `QuasiQuotes`+should be enabled.++\begin{code}+{-# LANGUAGE QuasiQuotes #-}+\end{code}++Use this command to configure ghci accordingly (not necessary if you+have launched ghci with `cabal repl`):+```+:seti -XQuasiQuotes+```++Because we are mimicking the REPL in this tutorial we will leave off the type+signatures on the example calculations and disable the compiler+warnings about missing type signatures.+\begin{code}+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}+\end{code}++This pragma is a just technical pragma, combined with the+`Prelude.Compat` import below used to avoid certain warnings while+comiling against multiple versions of the compiler. It can be safely+ignored.+\begin{code}+{-# LANGUAGE NoImplicitPrelude #-}+\end{code}+++Loading Up: The Imports+-----------------------++\begin{code}+module Main(main) where+\end{code}++*********************************************************+*+* WARNING: this is generated from pp-tutorial-master.lhs +*+*********************************************************++We have two things to consider in the import to access the regex+goodies, which will take the form:+```haskell+import Text.RE.<regex-flavour>.<text-type>?+```++  * Which [flavour of regular expressions](https://wiki.haskell.org/Regular_expressions) do I need?+      + `PCRE` : [Perl-style](https://en.wikibooks.org/wiki/Regular_Expressions/Perl-Compatible_Regular_Expressions) regular expressions;+      + `TDFA`: [Posix-style](https://en.wikipedia.org/wiki/Regular_expression#POSIX_extended) regular expressions.++  * And which type of text am I matching?+      + `String` : low-performing, classic Haskell strings;+      + `ByteString` : raw bytestrings;+      + `ByteString.Lazy` : raw lazy bytestrings;+      + `Text`: efficient text (currently available for `TDFA` only);+      + `Text.Lazy` : efficient, lazy text (currently available for+        `TDFA` only);+      + polymorphic: if you need matching operators that work with all+        available text types then do not specify the `<text-type>` in+        the import path.++For this tutorial we will use classic Haskell strings but any application+dealing with bulk text will probably want to choose one of the other+options.+\begin{code}+import           Text.RE.TDFA.String+\end{code}+If you are predominantly matching against a single type in your module+then you will probably find it more convenient to use the relevant module+rather than than the more polymorphic opertors but it is really a+matter of convenience.++We will also need access to a small selection of common libraries for+our examples.+\begin{code}+import           Control.Applicative+import           Data.Maybe+import qualified Data.Text                      as T+import           Text.Printf+\end{code}++And finally we a special edition of the prelude (see the commentary for+the pragma section above) and a small specail toolkit will be used to help+manage the example calculations.+\begin{code}+import           Prelude.Compat+import           TestKit+\end{code}+This allows simple calculations to be defined stylistically+in the source program, presented as calculations when rendered+in HTML and tested that they have the expected result.+\begin{code}+evalme_LOA_00 = checkThis "evalme_LOA_00" 0 $+  length []+\end{code}+This trivial example calculation will be tested for equality to 0.+++Matching with the regex-base Operators+--------------------------------------++regex supports the regex-base polymorphic match operators. Used in a+`Bool` context `=~` will evaluate to True iff the string on the left matches+the RE on the right.+\begin{code}+evalme_TRD_00 = checkThis "evalme_TRD_00" True $+  ("2016-01-09 2015-12-5 2015-10-05" =~ [re|[0-9]{4}-[0-9]{2}-[0-9]{2}|] :: Bool)+\end{code}+Note that we enclose the RE itself in `[re|` ... `|]` quasi quote brackets,+allowing the compiler to run some regex code at compile time to verify that+the RE conforms to the correct syntax for the chosen RE flavour of choice+(`TDFA` in this case). The above expression should evaluate to `True` as the+string contains a matching sub-string.++Used in an `Int` context `=~` will count the number of matches in the target string.+\begin{code}+evalme_TRD_01 = checkThis "evalme_TRD_01" 2 $+  ("2016-01-09 2015-12-5 2015-10-05" =~ [re|[0-9]{4}-[0-9]{2}-[0-9]{2}|] :: Int)+\end{code}++To determine the string that has matched the modaic `=~~` operator can be used+in a `Maybe` context.+\begin{code}+evalme_TRD_02 = checkThis "evalme_TRD_02" (Just "2016-01-09") $+  ("2016-01-09 2015-12-5 2015-10-05" =~~ [re|[0-9]{4}-[0-9]{2}-[0-9]{2}|] :: Maybe String)+\end{code}+This should evaluate to `Just "2016-01-09"`.++A `=~` in a `[[String]]` extracts all of the matched substrings:+\begin{code}+evalme_TRD_04 = checkThis "evalme_TRD_04" [["2016-01-09"],["2015-10-05"]] $+  ("2016-01-09 2015-12-5 2015-10-05" =~ [re|[0-9]{4}-[0-9]{2}-[0-9]{2}|] :: [[String]])+\end{code}+yields `[["2016-01-09"],["2015-10-05"]]`.++regex provides special operators and types for extracting the first+match or all of the non-overlapping substrings matching a regular expression+which provide a little more structure that the flexible, venerable regex-base+match operators.+++Single Matches with `?=~`+-------------------------++regex also provides two matching operators: one for looking for the first+match in its search string and the other for finding all of the matches. The+first-match operator, `?=~`, yields the result of attempting to find the first+match. (It's result type will be explained below.) The boolean `matched`+function can be used to test whether a match was found.+\begin{code}+evalme_SGL_01 = checkThis "evalme_SGL_01" True $+  matched $ "2016-01-09 2015-12-5 2015-10-05" ?=~ [re|[0-9]{4}-[0-9]{2}-[0-9]{2}|]+\end{code}+This should yield `True`.++To get the matched text use `matchText`, which returns `Nothing` if no match was+found in the search string.+\begin{code}+evalme_SGL_02 = checkThis "evalme_SGL_02" (Just "2016-01-09") $+  matchedText $ "2016-01-09 2015-12-5 2015-10-05" ?=~ [re|[0-9]{4}-[0-9]{2}-[0-9]{2}|]+\end{code}+This should yield `Just "2016-01-09"`.+++Multiple Matches with `*=~`+---------------------------++Use `*=~` to locate all of the non-overlapping substrings that matches a RE.+`anyMatches` will return `True` iff any matches are found (and they will be).+\begin{code}+evalme_MLT_01 = checkThis "evalme_MLT_01" True $+  anyMatches $ "2016-01-09 2015-12-5 2015-10-05" *=~ [re|[0-9]{4}-[0-9]{2}-[0-9]{2}|]+\end{code}++`countMatches` will tell us how many sub-strings matched (2).+\begin{code}+evalme_MLT_02 = checkThis "evalme_MLT_02" 2 $+  countMatches $ "2016-01-09 2015-12-5 2015-10-05" *=~ [re|[0-9]{4}-[0-9]{2}-[0-9]{2}|]+\end{code}++`matches` will return all of the matches.+\begin{code}+evalme_MLT_03 = checkThis "evalme_MLT_03" ["2016-01-09","2015-10-05"] $+  matches $ "2016-01-09 2015-12-5 2015-10-05" *=~ [re|[0-9]{4}-[0-9]{2}-[0-9]{2}|]+\end{code}+This should yield `["2016-01-09","2015-10-05"]`.+++Simple Text Replacement+-----------------------++regex supports the replacement of matched text with alternative text. This+section will cover replacement text specified with templates. More flexible+tools that allow functions calculate the replacement text are covered below.++_Capture_ sub-expressions, whose matched text can be inserted into the+replacement template, can be specified as follows:++  * `$(` ... `)` identifies a capture that can be identified by its+    left-to-right position relative to the other captures in the replacement+    template, with `$1` being used to represent the leftmost capture, `$2` the+    next leftmost capture, and so on;++  * `${foo}(` ... `)` can be used to identify a capture by name. Such captures+    can be identified either by their left-to-right position in the regular+    expression or by `${foo}` in the template.++A function to convert ISO format dates into a UK-format date could be written+thus:+\begin{code}+uk_dates :: String -> String+uk_dates src =+  replaceAll "${d}/${m}/${y}" $ src *=~ [re|${y}([0-9]{4})-${m}([0-9]{2})-${d}([0-9]{2})|]+\end{code}+with+\begin{code}+evalme_RPL_01 = checkThis "evalme_RPL_01" "09/01/2016 2015-12-5 05/10/2015" $+  uk_dates "2016-01-09 2015-12-5 2015-10-05"+\end{code}+yielding `"09/01/2016 2015-12-5 05/10/2015"`.++The same function written with numbered captures:+\begin{code}+uk_dates' :: String -> String+uk_dates' src =+  replaceAll "$3/$2/$1" $ src *=~ [re|$([0-9]{4})-$([0-9]{2})-$([0-9]{2})|]+\end{code}+with+\begin{code}+evalme_RPL_02 = checkThis "evalme_RPL_02" "09/01/2016 2015-12-5 05/10/2015" $+  uk_dates' "2016-01-09 2015-12-5 2015-10-05"+\end{code}+yielding the same result.++(Most regex conventions use plain parentheses, `(` ... `)`, to mark+captures but we would like to reserve those exclusively for grouping+in regex REs.)+++Matches/Match/Capture+---------------------++The types returned by the `?=~` and `*=~` form the foundations of the+package. Understandingv these simple types is the key to understanding+the package.++The type of `*=~` in this module (imported from+`Text.RE.TDFA.String`) is:+<div class='inlinecodeblock'>+```+(*=~) :: String -> RE -> Matches String+```+</div>+with `Matches` defined in `Text.RE.Capture` thus:++%include "Text/RE/Capture.lhs" "^data Matches "++The critical component of the `Matches` type is the `[Match a]` in+`allMatches`, containing the details all of each substring matched by+the RE. The `matchSource` component also retains a copy of the original+search string but the critical information is in `allmatches`.++The type of `?=~` in this module (imported from+`Text.RE.TDFA.String`) is:+<div class='inlinecodeblock'>+```+(?=~) :: String -> RE -> Match String+```+</div>+with `Match` (referenced in the definition of `Matches` above) defined+in `Text.RE.Capture` thus:++%include "Text/RE/Capture.lhs" "^data Match "++Like `matchesSource` above, `matchSource` retains the original search+string, but also a `CaptureNames` field listing all of the capture+names in the RE (needed by the text replacemnt tools).++But the 'real' content of `Match` is to be found in the `MatchArray`,+enumerating all of the substrings captured by this match, starting with+`0` for the substring captured by the whole RE, `1` for the leftmost+explicit capture in the RE, `2` for the next leftmost capture, and so+on.++Each captured substring is represented by the following `Capture` type:++%include "Text/RE/Capture.lhs" "^data Capture "++Here we list the whole original search string in `captureSource` and+the text of the sub-string captured in `capturedText`. `captureOffset`+contains the number of characters preceding the captured substring, or+is negative if no substring was captured (which is a different+situation from epsilon, the empty string, being captured).+`captureLength` gives the length of the captured string in+`capturedText`.++The test suite in [examples/re-tests.lhs](re-tests.html) contains extensive+worked-out examples of these `Matches`/`Match`/`Capture` types.+++Simple Options+--------------++By default regular expressions are of the multi-line case-sensitive+variety so this query+\begin{code}+evalme_SOP_01 = checkThis "evalme_SOP_01" 2 $+  countMatches $ "0a\nbb\nFe\nA5" *=~ [re|[0-9a-f]{2}$|]+\end{code}+finds 2 matches, the '$' anchor matching each of the newlines, but only+the first two lowercase hex numbers matching the RE. The case sensitivity+and multiline-ness can be controled by selecting alternative parsers.+++--------------------------+-------------+-----------+----------------++| long name                | short forms | multiline | case sensitive |++==========================+=============+===========+================++| reMultilineSensitive     | reMS, re    | yes       | yes            |++--------------------------+-------------+-----------+----------------++| reMultilineInsensitive   | reMI        | yes       | no             |++--------------------------+-------------+-----------+----------------++| reBlockSensitive         | reBS        | no        | yes            |++--------------------------+-------------+-----------+----------------++| reBlockInsensitive       | reBI        | no        | no             |++--------------------------+-------------+-----------+----------------+++So while the default setup+\begin{code}+evalme_SOP_02 = checkThis "evalme_SOP_02" 2 $+  countMatches $ "0a\nbb\nFe\nA5" *=~ [reMultilineSensitive|[0-9a-f]{2}$|]+\end{code}+finds 2 matches, a case-insensitive RE+\begin{code}+evalme_SOP_03 = checkThis "evalme_SOP_03" 4 $+  countMatches $ "0a\nbb\nFe\nA5" *=~ [reMultilineInsensitive|[0-9a-f]{2}$|]+\end{code}+finds 4 matches, while a non-multiline RE+\begin{code}+evalme_SOP_04 = checkThis "evalme_SOP_04" 0 $+  countMatches $ "0a\nbb\nFe\nA5" *=~ [reBlockSensitive|[0-9a-f]{2}$|]+\end{code}+finds no matches but a non-multiline, case-insensitive match+\begin{code}+evalme_SOP_05 = checkThis "evalme_SOP_05" 1 $+  countMatches $ "0a\nbb\nFe\nA5" *=~ [reBlockInsensitive|[0-9a-f]{2}$|]+\end{code}+finds the final match.++For the hard of typing the shortforms are available.+\begin{code}+evalme_SOP_06 = checkThis "evalme_SOP_06" True $+  matched $ "SuperCaliFragilisticExpialidocious" ?=~ [reMI|supercalifragilisticexpialidocious|]+\end{code}+++Using Functions to Replace Text+-------------------------------++Sometimes you will need to process each string captured by an RE with a+function. `replaceAllCaptures` takes a `Phi` and a `Matches` and+applies the function to each captured substring according to the+`Context` specified in `Phi`, as we can see in the following example function+to clean up all of the mis-formatted dates in the argument string,+\begin{code}+fixup_dates :: String -> String+fixup_dates src =+    replaceAllCaptures phi $ src *=~ [re|([0-9]+)-([0-9]+)-([0-9]+)|]+  where+    phi = Phi SUB $ \loc s -> case _loc_capture loc of+      1 -> printf "%04d" (read s :: Int)+      2 -> printf "%02d" (read s :: Int)+      3 -> printf "%02d" (read s :: Int)+      _ -> error "fixup_date"+\end{code}+which will fix up our running example+\begin{code}+evalme_RPF_01 = checkThis "evalme_RPF_01" "2016-01-09 2015-12-05 2015-10-05" $+  fixup_dates "2016-01-09 2015-12-5 2015-10-05"+\end{code}+returning `"2016-01-09 2015-12-05 2015-10-05"`.++The `Phi`, `Context` and `Location` types are defined in+`Text.RE.Replace` as follows.++%include "Text/RE/Replace.lhs" "^data Phi"++The processing function gets applied to the captures specified by the+`Context`, which can be directed to process `ALL` of the captures,+including the substring captured by the whole RE and all of the+subsidiary capture, or just the `TOP`, `0` capture that the whole RE+matches, or just the `SUB` (subsidiary) captures, as was the case above.++If this doesn't provide enough flexibility, the `replaceAllCaptures'`+function accepts a processing function that takes the full `Match`+context for each capture along with the `Location` and the `Capture`+itself.++%include "Text/RE/Replace.lhs" "replaceAllCaptures' ::"++The above fixup function can be extended to enclose whole date in+square brackets and rewritten with the above more general replacement+function.+\begin{code}+fixup_and_reformat_dates :: String -> String+fixup_and_reformat_dates src =+    replaceAllCaptures' ALL f $ src *=~ [re|([0-9]+)-([0-9]+)-([0-9]+)|]+  where+    f _ loc cap = Just $ case _loc_capture loc of+        0 -> printf "[%s]"       txt+        1 -> printf "%04d" (read txt :: Int)+        2 -> printf "%02d" (read txt :: Int)+        3 -> printf "%02d" (read txt :: Int)+        _ -> error "fixup_date"+      where+        txt = capturedText cap+\end{code}+The `fixup_and_reformat_dates` applied to our running example,+\begin{code}+evalme_RPF_02 = checkThis "evalme_RPF_02" "[2016-01-09] [2015-12-05] [2015-10-05]" $+  fixup_and_reformat_dates "2016-01-09 2015-12-5 2015-10-05"+\end{code}+yields `"[2016-01-09] [2015-12-05] [2015-10-05]"`.++`Text.RE.Replace` provides analagous functions for replacing the+test of a single `Match` returned from `?=~`.+++Macros and Parsers+------------------++regex supports macros in regular expressions. There are a bunch of+standard macros and you can define your own.++RE macros are enclosed in `@{` ... '}'. By convention the macros in+the standard environment start with a '%'. `@{%date}` will match an+ISO 8601 date, this+\begin{code}+evalme_MAC_00 = checkThis "evalme_MAC_00" 2 $+  countMatches $ "2016-01-09 2015-12-5 2015-10-05" *=~ [re|@{%date}|]+\end{code}+picking out the two dates.++See the tables listing the standard macros in the tables folder of+the distribution.++See the log-processor example and the `Text.RE.TestBench` for+more on how you can develop, document and test RE macros with the+regex test bench.+++Compiling REs with the Complete Options+---------------------------------------++Each type of RE &mdash; TDFA and PCRE &mdash; has it own complile-time+options and execution-time options, called in each case `CompOption` and+`ExecOption`. The above simple options selected with the RE+parser (`reMultilineSensitive`, etc.) configures the RE backend+accordingly so that you don't have to, but you may need full access to+you chosen back end's options, or you may need to supply a different+set of macros to those provided in the standard environment. In which+case you will need to know about the `Options` type, defined by each of+the back ends in terms of the `Options_` type of `Text.RE.Options`+as follows.+<div class='inlinecodeblock'>+```+type Options = Options_ RE CompOption ExecOption+```+</div>+(Bear in mind that `CompOption` and `ExecOption` will be different+types for each back end.)++The `Options_` type is defined in `Text.RE.Options` as follows:++%include "Text/RE/Options.lhs" "data Options_"++  * `_options_mode` is an experimental feature that controls the RE+    parser.++  * `_options_macs` contains the macro definitions used to compile+    the REs (see above Macros section);++  * `_options_comp` contains the back end compile-time options;++  * `_options_exec` contains the back end execution-time options.++(For more information on the options provided by the back ends see the+decumentation for `regex-tdfa` and `regex-pcre` as apropriate.)++Each backend provides a function to compile REs from some options and a+string containing the RE as follows:+<div class='inlinecodeblock'>+```+compileRegex :: ( IsOption o RE CompOption ExecOption+                , Functor m+                , Monad   m+                )+             => o+             -> String+             -> m RE+```+</div>+where `o` is some type that is recognised as a type that can configure+REs. Your configuration-type options are:++  * `()` (the unit type) means just use the default multi-line+    case-sensitive that we get with the `re` parser.++  * `SimpleRegexOptions` this is just a simple enum type that we use to+    encode the standard options:++%include "Text/RE/Options.lhs" "^data SimpleRegexOptions"++  * `Mode`: you can specify the parser mode;++  * `Macros RE`: you can specify the macros use instead of the standard+    environment;++  * `CompOption`: you can specify the compile-time options for the back+    end;++  * `ExecOption`: you can specify the execution-time options for the+    back end;++  * `Options`: you can specify all of the options.++The compilation may fail so it is expressed monadically. For the+following examples we will use the following helper to just `error`+the failure.+\begin{code}+check_for_failure :: Either String a -> a+check_for_failure = either error id+\end{code}++\begin{code}+evalme_OPT_00 = checkThis "evalme_OPT_00" 2 $+  countMatches $+    "2016-01-09 2015-12-5 2015-10-05" *=~+      check_for_failure+        (compileRegex () "@{%date}")+\end{code}+\begin{code}+evalme_OPT_01 = checkThis "evalme_OPT_01" 1 $+  countMatches $+    "0a\nbb\nFe\nA5" *=~+      check_for_failure+        (compileRegex BlockInsensitive "[0-9a-f]{2}$")+\end{code}++This will allow you to compile regular expressions when the either the+text to be compiled or the options have been dynamically determined.+++Specifying Options with `re_`+-----------------------------++If you just need to specify some non-standard options while statically+checking the validity of the RE (with the default options) then you can+use the `re_` parser:+\begin{code}+evalme_REU_01 = checkThis "evalme_REU_01" 1 $+  countMatches $+    "0a\nbb\nFe\nA5" *=~ [re_|[0-9a-f]{2}$|] BlockInsensitive+\end{code}+Any option `o` such that `IsOption o RE CompOption ExecOption` (i.e.,+any option type accepted by `compileRegex` above) can be used with+`[re_` ..`|]`.+++The Tools: 'grep', 'lex' and 'sed'+----------------------------------++The classic tools assocciated with regular expressions have inspired some+regex conterparts.++  * [Text.RE.Tools.Grep}(Grep.html): takes a regular expression and a+    file or lazy ByteString (depending upon the variant) and returns all of the+    matching lines. (Used in the [include](re-include.html) example.)++  * [Text.RE.Tools.Lex}(Lex.html): takes an association list of REs and+    token-generating functions and the input text and returns a list of tokens.+    This should never be used where performance is important (use Alex),+    except as a development prototype (used internally in+    [Text.RE.Internal.NamedCaptures](NamedCaptures.html)).++  * [Text.RE.Tools.Lex}(Sed.html) using [Text.RE.Edit](Edit.html):+    takes an association list of regular expressions and substitution actions,+    some input text and invokes the associated action on each line of the file+    that matches one of the REs, substituting the text returned from the action+    in the output stream. (Used in the [include](re-include.html),+    [gen-modules](re-gen-modules.html),+    [log-processor](re-nginx-log-processor.html) and [tutorial-pp](re-prep)+    examples.)+++The Examples+------------++The remaining sections have been given over to various standalone+examples. All bar the first are taken from the package itself, each+contributing to either the API or the tools used to prepare the+documentation and test suites.+++Example: log processor: development with macros+-----------------------------------------------++To test regex at scale &mdash; which is to say, developing with+relatively complex  REs &mdash;+[a preprocessor](re-nginx-log-processor.html) for parsing NGINX access+and error logs has been written. Each line of input may be either a line+from an NGINX access log or the event log, producing a standard-format+event log on the output.++As a taster, here is the main script, where each type of line is+recognised by a high-level macro.++%include "examples/re-nginx-log-processor.lhs" "script ::"++Thes macros are based on the standard macros, using+`Text.RE.TestBench` to build the up into the above high-level+scanners with the apropriate+[tests and documentation](https://github.com/iconnect/regex/tree/master/tables).++The RE for recognising the access-log lines is built up here.++%include "examples/re-nginx-log-processor.lhs" "access_re ::"++(N.B., The Test Bench currently requires that we write our REs in Haskell+strings.)++See [the log-processor program sources](re-nginx-log-processor.html) for details.+++Example: Scanning REs: Named Captures+-------------------------------------++This package needs to recognise all captures in a regular expression so+that it can associate the named captures with their cature ordinal.++Here is the prototype scanner.++%include "Text/RE/Internal/NamedCaptures.lhs" "scan ::"++Once the package has stabilised it should be rewritten with Alex.++See [Text.RE.Internal.NamedCaptures](NamedCaptures.html) for+details.+++Anti-Example: Scanning REs in the TestBench+-------------------------------------------++The [Text.RE.TestBench](TestBench.html) contains an almost+identical parser to the above, written with recursive functions.++%include "Text/RE/TestBench.lhs" "scan_re ::"++Once some technical issues have been ersolved it will use the above+scanner in [Text.RE.Internal.NamedCaptures](NamedCaptures.html).+++Example: filename analysis+--------------------------++The preprocessor used to prepare the literate programs for this+package's website uses the following 'gen_all' diriver which uses+REs to analyse file paths.++%include "examples/re-prep.lhs" "^gen_all ::"++See [examples/re-prep.lhs](re-prep.html)+++Example: parsing RE macros+--------------------------++The regex RE macros are parsed with code that looks similar to+this.++\begin{code}+-- | expand the @{..} macos in the argument string using the given+-- function+expandMacros_ :: (MacroID->Maybe String) -> String -> String+expandMacros_ lu = fixpoint e_m+  where+    e_m re_s =+        replaceAllCaptures' TOP phi $ re_s *=~ [re|@$(@|\{${name}([^{}]+)\})|]++    phi mtch _ cap = case txt == "@@" of+        True  -> Just   "@"+        False -> Just $ fromMaybe txt $ lu ide+      where+        txt = capturedText cap+        ide = MacroID $ capturedText $ capture [cp|name|] mtch++fixpoint :: (Eq a) => (a->a) -> a -> a+fixpoint f = chk . iterate f+  where+    chk (x:x':_) | x==x' = x+    chk xs               = chk $ tail xs+\end{code}++For example:+\begin{code}+evalme_PMC_00 = checkThis "evalme_PMC_00" "foo MacroID {_MacroID = \"bar\"} baz" $+  expandMacros_ (Just . show) "foo @{bar} baz"+\end{code}++See [Text.RE.Replace](Replace.html) for details.+++Example: Parsing Replace Templates+----------------------------------++The regex replacement templates are parsed with code similar to this.++\begin{code}+type Template = String++parse_tpl_ :: Template+           -> Match String+           -> Location+           -> Capture String+           -> Maybe String+parse_tpl_ tpl mtch _ _ =+    Just $ replaceAllCaptures' TOP phi $+      tpl *=~ [re|\$${arg}(\$|[0-9]+|\{${name}([^{}]+)\})|]+  where+    phi t_mtch _ _ = case t_mtch !$? [cp|name|] of+      Just cap -> this $ CID_name $ CaptureName txt+        where+          txt = T.pack $ capturedText cap+      Nothing -> case t == "$" of+        True  -> Just t+        False -> this $ CID_ordinal $ CaptureOrdinal $ read t+      where+        t = capturedText $ capture [cp|arg|] t_mtch++        this cid = capturedText <$> mtch !$? cid++my_replace :: RE -> Template-> String -> String+my_replace rex tpl src = replaceAllCaptures' TOP (parse_tpl_ tpl) $ src *=~ rex+\end{code}++It can be tested with our date-reformater example.++\begin{code}+date_reformat :: String -> String+date_reformat = my_replace [re|${y}([0-9]{4})-${m}([0-9]{2})-${d}([0-9]{2})|] "${y}/${m}/${d}"+\end{code}++This should yield `"2016/01/11"`:++\begin{code}+evalme_TPL_00 = checkThis "evalme_TPL_00" "2016/01/11" $+  date_reformat "2016-01-11"+\end{code}++See [Text.RE.Replace](Replace.html)+++Example: include preprocessor+-----------------------------++The 'include' preprocessor for extracting literate programming fragments+(used in this and most of the other sections of the tutorial) has been+lifted out of the main preprocessor into its own example.++Here is sed script that makes up the main loop.++%include "examples/re-include.lhs" "loop ::"++The `extract` action takes the path to the file containing the fragment+and the RE that will match a line in the fragment and returns the text+of the fragment (wrapped in a simple styling div).++%include "examples/re-include.lhs" "extract ::"++And here is the scanner for recognising the literate fragments.++%include "examples/re-include.lhs" "scan ::"++See [examples/re-include.lhs](re-include.html)+++Example: literate preprocessor+------------------------------++The preprocessor that converts this literate Haskell program into a web+page and a test suite that makes plenty of use of regex is in+[examples/re-prep.lhs](re-prep.html).+++Example: gen-modules+--------------------++The many TDFA and PCRE API modules (but _not_ the `RE` modules) are all+generated from `Text.RE.TDFA.ByteString.Lazy` with+[examples/re-gen-modules.lhs](re-gen-modules.html) which is also an+application of regex.+++\begin{code}+main :: IO ()+main = runTests+  [ evalme_TPL_00+  , evalme_PMC_00+  , evalme_REU_01+  , evalme_OPT_01+  , evalme_OPT_00+  , evalme_MAC_00+  , evalme_RPF_02+  , evalme_RPF_01+  , evalme_SOP_06+  , evalme_SOP_05+  , evalme_SOP_04+  , evalme_SOP_03+  , evalme_SOP_02+  , evalme_SOP_01+  , evalme_RPL_02+  , evalme_RPL_01+  , evalme_MLT_03+  , evalme_MLT_02+  , evalme_MLT_01+  , evalme_SGL_02+  , evalme_SGL_01+  , evalme_TRD_04+  , evalme_TRD_02+  , evalme_TRD_01+  , evalme_TRD_00+  , evalme_LOA_00+  ]+\end{code}+
+ lib/cabal-masters/constraints-incl.cabal view
@@ -0,0 +1,25 @@+%-    regex                   == <<$version$>>+%-    array                   >= 0.4+%-    base                    >= 4 && < 5+%-    base-compat             >= 0.6.0+%-    bytestring              >= 0.10.2.0+%-    containers              >= 0.4+%-    directory               >= 1.2.1.0+%-    hashable                >= 1.2.3.3+%-    heredoc                 >= 0.2.0.0+%-    http-conduit            >= 2.1.7.2+%-    regex-base              >= 0.93.2+%-    regex-pcre-builtin      >= 0.94.4.8.8.35+%-    regex-tdfa              >= 1.2.0+%-    regex-tdfa-text         >= 1.0.0.3+%-    shelly                  >= 1.6.1.2+%-    smallcheck              >= 1.1.1+%-    tasty                   >= 0.10.1.2+%-    tasty-hunit             >= 0.9.2+%-    tasty-smallcheck        >= 0.8.0.1+%-    template-haskell        >= 2.7+%-    text                    >= 1.2.0.6+%-    time                    >= 1.4.2+%-    time-locale-compat      >= 0.1.0.1+%-    transformers            >= 0.2.2+%-    unordered-containers    >= 0.2.5.1
+ lib/cabal-masters/executables-incl.cabal view
@@ -0,0 +1,116 @@+%test-exe re-gen-cabals+    Hs-Source-Dirs:     examples++    Main-Is:            re-gen-cabals.lhs++    Other-Modules:+      TestKit++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++%build-depends regex array base base-compat containers bytestring directory regex-base regex-tdfa shelly text++%test-exe re-gen-modules+    Hs-Source-Dirs:     examples++    Main-Is:            re-gen-modules.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++%build-depends regex array base base-compat bytestring directory regex-base regex-tdfa shelly text++%test-exe re-include+    Hs-Source-Dirs:     examples++    Main-Is:            re-include.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Other-Modules:+      TestKit++%build-depends regex base base-compat bytestring directory shelly text++%test-exe re-nginx-log-processor+    Hs-Source-Dirs:     examples++    Main-Is:            re-nginx-log-processor.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++%build-depends regex array base base-compat bytestring directory regex-base regex-tdfa shelly text time time-locale-compat transformers unordered-containers++%test-exe re-prep+    Hs-Source-Dirs:     examples++    Main-Is:            re-prep.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Other-Modules:+      TestKit++%build-depends regex base base-compat bytestring directory heredoc http-conduit shelly text++%test-exe re-tests+    Hs-Source-Dirs:     examples++    Main-Is:            re-tests.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Other-Modules:+      TestKit++%build-depends regex array base base-compat bytestring containers directory heredoc regex-base regex-tdfa regex-tdfa-text regex-pcre-builtin smallcheck tasty tasty-hunit tasty-smallcheck template-haskell text unordered-containers++%test-exe re-tutorial+    Hs-Source-Dirs:     examples++    Main-Is:            re-tutorial.lhs++    Other-Modules:+      TestKit++    Default-Language:   Haskell2010+    Default-Extensions: QuasiQuotes+    GHC-Options:+      -Wall+      -fwarn-tabs++%build-depends regex array base base-compat bytestring containers directory hashable heredoc regex-base regex-tdfa regex-tdfa-text regex-pcre-builtin shelly smallcheck tasty tasty-hunit tasty-smallcheck template-haskell transformers text time time-locale-compat unordered-containers++%test re-tutorial-os+    Hs-Source-Dirs:     examples++    Main-Is:            re-tutorial.lhs++    Other-Modules:+      TestKit++    Default-Language:   Haskell2010+    Extensions:         OverloadedStrings+    Default-Extensions: QuasiQuotes+    GHC-Options:+      -Wall+      -fwarn-tabs++%build-depends regex array base base-compat bytestring containers directory hashable heredoc regex-base regex-tdfa regex-tdfa-text regex-pcre-builtin shelly smallcheck tasty tasty-hunit tasty-smallcheck template-haskell transformers text time time-locale-compat unordered-containers
+ lib/cabal-masters/library-incl.cabal view
@@ -0,0 +1,43 @@+Library+    Hs-Source-Dirs:     .+    Exposed-Modules:+      Text.RE+      Text.RE.Capture+      Text.RE.CaptureID+      Text.RE.Edit+      Text.RE.Internal.NamedCaptures+      Text.RE.Internal.PreludeMacros+      Text.RE.Internal.QQ+      Text.RE.IsRegex+      Text.RE.LineNo+      Text.RE.Options+      Text.RE.Parsers+      Text.RE.PCRE+      Text.RE.PCRE.ByteString+      Text.RE.PCRE.ByteString.Lazy+      Text.RE.PCRE.RE+      Text.RE.PCRE.Sequence+      Text.RE.PCRE.String+      Text.RE.Replace+      Text.RE.TDFA+      Text.RE.TDFA.ByteString+      Text.RE.TDFA.ByteString.Lazy+      Text.RE.TDFA.RE+      Text.RE.TDFA.Sequence+      Text.RE.TDFA.String+      Text.RE.TDFA.Text+      Text.RE.TDFA.Text.Lazy+      Text.RE.TestBench+      Text.RE.Tools.Grep+      Text.RE.Tools.Lex+      Text.RE.Tools.Sed++    Other-Modules:+      Text.RE.Internal.AddCaptureNames++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++%build-depends array bytestring base base-compat containers hashable heredoc regex-base regex-tdfa regex-tdfa-text regex-pcre-builtin template-haskell text time time-locale-compat transformers unordered-containers
+ lib/cabal-masters/mega-regex.cabal view
@@ -0,0 +1,40 @@+Name:                   regex+Version:                <<$version$>>+Synopsis:               Toolkit for regex-base+Description:            A Regular Expression Toolkit for regex-base with+                        Compile-time checking of RE syntax, data types for+                        matches and captures, a text replacement toolkit,+                        portable options, high-level AWK-like tools+                        for building text processing apps, regular expression+                        macros and test bench, a tutorial and copious examples.+Homepage:               http://regex.uk+Author:                 Chris Dornan+License:                BSD3+license-file:           LICENSE+Maintainer:             Chris Dornan <chris@regex.uk>+Copyright:              Chris Dornan 2016-2017+Category:               Text+Build-type:             Simple+Stability:              RFC+bug-reports:            http://issues.regex.uk++%include "lib/cabal-masters/test-extra-source-files-incl.cabal"++Cabal-Version:          >= 1.16++Source-Repository head+    type:               git+    location:           https://github.com/iconnect/regex.git++Source-Repository this+    Type:               git+    Location:           https://github.com/iconnect/regex.git+    Tag:                <<$version$>>++%include "lib/cabal-masters/constraints-incl.cabal"++%include "lib/cabal-masters/library-incl.cabal"++%include "lib/cabal-masters/executables-incl.cabal"++-- Generated from lib/cabal-masters/mega-regex with re-gen-cabals
+ lib/cabal-masters/regex-examples.cabal view
@@ -0,0 +1,41 @@+Name:                   regex-examples+Version:                <<$version$>>+Synopsis:               Tutorial, tests and example programs for regex+Description:            Tutorial, tests and example programs for regex,+                        a Regular Expression Toolkit for regex-base with+                        Compile-time checking of RE syntax, data types for+                        matches and captures, a text replacement toolkit,+                        portable options, high-level AWK-like tools+                        for building text processing apps, regular expression+                        macros and test bench, a tutorial and copious examples.+Homepage:               http://regex.uk+Author:                 Chris Dornan+License:                BSD3+license-file:           LICENSE+Maintainer:             Chris Dornan <chris@regex.uk>+Copyright:              Chris Dornan 2016-2017+Category:               Text+Build-type:             Simple+Stability:              RFC+bug-reports:            http://issues.regex.uk++%include "lib/cabal-masters/test-extra-source-files-incl.cabal"++Cabal-Version:          >= 1.16++Source-Repository head+    type:               git+    location:           https://github.com/iconnect/regex.git++Source-Repository this+    Type:               git+    Location:           https://github.com/iconnect/regex.git+    Tag:                <<$version$>>++%include "lib/cabal-masters/constraints-incl.cabal"++%include "lib/cabal-masters/library-incl.cabal"++%include "lib/cabal-masters/executables-incl.cabal"++-- Generated from lib/cabal-masters/mega-regex with re-gen-cabals
+ lib/cabal-masters/regex.cabal view
@@ -0,0 +1,40 @@+Name:                   regex+Version:                <<$version$>>+Synopsis:               Toolkit for regex-base+Description:            A Regular Expression Toolkit for regex-base with+                        Compile-time checking of RE syntax, data types for+                        matches and captures, a text replacement toolkit,+                        portable options, high-level AWK-like tools+                        for building text processing apps, regular expression+                        macros and test bench, a tutorial and copious examples.+Homepage:               http://regex.uk+Author:                 Chris Dornan+License:                BSD3+license-file:           LICENSE+Maintainer:             Chris Dornan <chris@regex.uk>+Copyright:              Chris Dornan 2016-2017+Category:               Text+Build-type:             Simple+Stability:              RFC+bug-reports:            http://issues.regex.uk++Extra-Source-Files:+    README.markdown+    changelog++Cabal-Version:          >= 1.16++Source-Repository head+    type:               git+    location:           https://github.com/iconnect/regex.git++Source-Repository this+    Type:               git+    Location:           https://github.com/iconnect/regex.git+    Tag:                <<$version$>>++%include "lib/cabal-masters/constraints-incl.cabal"++%include "lib/cabal-masters/library-incl.cabal"++-- Generated from lib/cabal-masters/mega-regex with re-gen-cabals
+ lib/cabal-masters/test-extra-source-files-incl.cabal view
@@ -0,0 +1,33 @@+Extra-Source-Files:+    README.markdown+    changelog+    data/access-errors.log+    data/access.log+    data/error.log+    data/events.log+    data/include-result.lhs+    data/pp-result-doc.lhs+    data/pp-result-gen.lhs+    data/pp-test.lhs+    lib/cabal-masters/constraints-incl.cabal+    lib/cabal-masters/executables-incl.cabal+    lib/cabal-masters/library-incl.cabal+    lib/cabal-masters/mega-regex.cabal+    lib/cabal-masters/regex.cabal+    lib/cabal-masters/regex-examples.cabal+    lib/cabal-masters/test-extra-source-files-incl.cabal+    lib/mega-regex.cabal+    lib/version.txt+    docs/pcre-nginx-log-processor.txt+    docs/tdfa-macros.txt+    docs/pcre-macros.txt+    src/Text/RE/PCRE/ByteString.hs+    src/Text/RE/PCRE/ByteString/Lazy.hs+    src/Text/RE/PCRE/Sequence.hs+    src/Text/RE/PCRE/String.hs+    src/Text/RE/TDFA/ByteString.hs+    src/Text/RE/TDFA/ByteString/Lazy.hs+    src/Text/RE/TDFA/Sequence.hs+    src/Text/RE/TDFA/String.hs+    src/Text/RE/TDFA/Text.hs+    src/Text/RE/TDFA/Text/Lazy.hs
+ lib/mega-regex.cabal view
@@ -0,0 +1,592 @@+Name:                   regex+Version:                0.2.0.0+Synopsis:               Toolkit for regex-base+Description:            A Regular Expression Toolkit for regex-base with+                        Compile-time checking of RE syntax, data types for+                        matches and captures, a text replacement toolkit,+                        portable options, high-level AWK-like tools+                        for building text processing apps, regular expression+                        macros and test bench, a tutorial and copious examples.+Homepage:               http://regex.uk+Author:                 Chris Dornan+License:                BSD3+license-file:           LICENSE+Maintainer:             Chris Dornan <chris@regex.uk>+Copyright:              Chris Dornan 2016-2017+Category:               Text+Build-type:             Simple+Stability:              RFC+bug-reports:            http://issues.regex.uk++Extra-Source-Files:+    README.markdown+    changelog+    data/access-errors.log+    data/access.log+    data/error.log+    data/events.log+    data/include-result.lhs+    data/pp-result-doc.lhs+    data/pp-result-gen.lhs+    data/pp-test.lhs+    lib/cabal-masters/constraints-incl.cabal+    lib/cabal-masters/executables-incl.cabal+    lib/cabal-masters/library-incl.cabal+    lib/cabal-masters/mega-regex.cabal+    lib/cabal-masters/regex.cabal+    lib/cabal-masters/regex-examples.cabal+    lib/cabal-masters/test-extra-source-files-incl.cabal+    lib/mega-regex.cabal+    lib/version.txt+    docs/pcre-nginx-log-processor.txt+    docs/tdfa-macros.txt+    docs/pcre-macros.txt+    src/Text/RE/PCRE/ByteString.hs+    src/Text/RE/PCRE/ByteString/Lazy.hs+    src/Text/RE/PCRE/Sequence.hs+    src/Text/RE/PCRE/String.hs+    src/Text/RE/TDFA/ByteString.hs+    src/Text/RE/TDFA/ByteString/Lazy.hs+    src/Text/RE/TDFA/Sequence.hs+    src/Text/RE/TDFA/String.hs+    src/Text/RE/TDFA/Text.hs+    src/Text/RE/TDFA/Text/Lazy.hs+++Cabal-Version:          >= 1.16++Source-Repository head+    type:               git+    location:           https://github.com/iconnect/regex.git++Source-Repository this+    Type:               git+    Location:           https://github.com/iconnect/regex.git+    Tag:                0.2.0.0++++Library+    Hs-Source-Dirs:     .+    Exposed-Modules:+      Text.RE+      Text.RE.Capture+      Text.RE.CaptureID+      Text.RE.Edit+      Text.RE.Internal.NamedCaptures+      Text.RE.Internal.PreludeMacros+      Text.RE.Internal.QQ+      Text.RE.IsRegex+      Text.RE.LineNo+      Text.RE.Options+      Text.RE.Parsers+      Text.RE.PCRE+      Text.RE.PCRE.ByteString+      Text.RE.PCRE.ByteString.Lazy+      Text.RE.PCRE.RE+      Text.RE.PCRE.Sequence+      Text.RE.PCRE.String+      Text.RE.Replace+      Text.RE.TDFA+      Text.RE.TDFA.ByteString+      Text.RE.TDFA.ByteString.Lazy+      Text.RE.TDFA.RE+      Text.RE.TDFA.Sequence+      Text.RE.TDFA.String+      Text.RE.TDFA.Text+      Text.RE.TDFA.Text.Lazy+      Text.RE.TestBench+      Text.RE.Tools.Grep+      Text.RE.Tools.Lex+      Text.RE.Tools.Sed++    Other-Modules:+      Text.RE.Internal.AddCaptureNames++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Build-depends:+        array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , containers           >= 0.4+      , hashable             >= 1.2.3.3+      , heredoc              >= 0.2.0.0+      , regex-base           >= 0.93.2+      , regex-pcre-builtin   >= 0.94.4.8.8.35+      , regex-tdfa           >= 1.2.0+      , regex-tdfa-text      >= 1.0.0.3+      , template-haskell     >= 2.7+      , text                 >= 1.2.0.6+      , time                 >= 1.4.2+      , time-locale-compat   >= 0.1.0.1+      , transformers         >= 0.2.2+      , unordered-containers >= 0.2.5.1++++Executable re-gen-cabals+    Hs-Source-Dirs:     examples++    Main-Is:            re-gen-cabals.lhs++    Other-Modules:+      TestKit++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , containers           >= 0.4+      , directory            >= 1.2.1.0+      , regex-base           >= 0.93.2+      , regex-tdfa           >= 1.2.0+      , shelly               >= 1.6.1.2+      , text                 >= 1.2.0.6+++Test-Suite re-gen-cabals-test+    type:               exitcode-stdio-1.0+    Hs-Source-Dirs:     examples++    Main-Is:            re-gen-cabals.lhs++    Other-Modules:+      TestKit++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , containers           >= 0.4+      , directory            >= 1.2.1.0+      , regex-base           >= 0.93.2+      , regex-tdfa           >= 1.2.0+      , shelly               >= 1.6.1.2+      , text                 >= 1.2.0.6++++Executable re-gen-modules+    Hs-Source-Dirs:     examples++    Main-Is:            re-gen-modules.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , directory            >= 1.2.1.0+      , regex-base           >= 0.93.2+      , regex-tdfa           >= 1.2.0+      , shelly               >= 1.6.1.2+      , text                 >= 1.2.0.6+++Test-Suite re-gen-modules-test+    type:               exitcode-stdio-1.0+    Hs-Source-Dirs:     examples++    Main-Is:            re-gen-modules.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , directory            >= 1.2.1.0+      , regex-base           >= 0.93.2+      , regex-tdfa           >= 1.2.0+      , shelly               >= 1.6.1.2+      , text                 >= 1.2.0.6++++Executable re-include+    Hs-Source-Dirs:     examples++    Main-Is:            re-include.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Other-Modules:+      TestKit++    Build-depends:+        regex                == 0.2.0.0+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , directory            >= 1.2.1.0+      , shelly               >= 1.6.1.2+      , text                 >= 1.2.0.6+++Test-Suite re-include-test+    type:               exitcode-stdio-1.0+    Hs-Source-Dirs:     examples++    Main-Is:            re-include.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Other-Modules:+      TestKit++    Build-depends:+        regex                == 0.2.0.0+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , directory            >= 1.2.1.0+      , shelly               >= 1.6.1.2+      , text                 >= 1.2.0.6++++Executable re-nginx-log-processor+    Hs-Source-Dirs:     examples++    Main-Is:            re-nginx-log-processor.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , directory            >= 1.2.1.0+      , regex-base           >= 0.93.2+      , regex-tdfa           >= 1.2.0+      , shelly               >= 1.6.1.2+      , text                 >= 1.2.0.6+      , time                 >= 1.4.2+      , time-locale-compat   >= 0.1.0.1+      , transformers         >= 0.2.2+      , unordered-containers >= 0.2.5.1+++Test-Suite re-nginx-log-processor-test+    type:               exitcode-stdio-1.0+    Hs-Source-Dirs:     examples++    Main-Is:            re-nginx-log-processor.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , directory            >= 1.2.1.0+      , regex-base           >= 0.93.2+      , regex-tdfa           >= 1.2.0+      , shelly               >= 1.6.1.2+      , text                 >= 1.2.0.6+      , time                 >= 1.4.2+      , time-locale-compat   >= 0.1.0.1+      , transformers         >= 0.2.2+      , unordered-containers >= 0.2.5.1++++Executable re-prep+    Hs-Source-Dirs:     examples++    Main-Is:            re-prep.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Other-Modules:+      TestKit++    Build-depends:+        regex                == 0.2.0.0+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , directory            >= 1.2.1.0+      , heredoc              >= 0.2.0.0+      , http-conduit         >= 2.1.7.2+      , shelly               >= 1.6.1.2+      , text                 >= 1.2.0.6+++Test-Suite re-prep-test+    type:               exitcode-stdio-1.0+    Hs-Source-Dirs:     examples++    Main-Is:            re-prep.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Other-Modules:+      TestKit++    Build-depends:+        regex                == 0.2.0.0+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , directory            >= 1.2.1.0+      , heredoc              >= 0.2.0.0+      , http-conduit         >= 2.1.7.2+      , shelly               >= 1.6.1.2+      , text                 >= 1.2.0.6++++Executable re-tests+    Hs-Source-Dirs:     examples++    Main-Is:            re-tests.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Other-Modules:+      TestKit++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , containers           >= 0.4+      , directory            >= 1.2.1.0+      , heredoc              >= 0.2.0.0+      , regex-base           >= 0.93.2+      , regex-pcre-builtin   >= 0.94.4.8.8.35+      , regex-tdfa           >= 1.2.0+      , regex-tdfa-text      >= 1.0.0.3+      , smallcheck           >= 1.1.1+      , tasty                >= 0.10.1.2+      , tasty-hunit          >= 0.9.2+      , tasty-smallcheck     >= 0.8.0.1+      , template-haskell     >= 2.7+      , text                 >= 1.2.0.6+      , unordered-containers >= 0.2.5.1+++Test-Suite re-tests-test+    type:               exitcode-stdio-1.0+    Hs-Source-Dirs:     examples++    Main-Is:            re-tests.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Other-Modules:+      TestKit++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , containers           >= 0.4+      , directory            >= 1.2.1.0+      , heredoc              >= 0.2.0.0+      , regex-base           >= 0.93.2+      , regex-pcre-builtin   >= 0.94.4.8.8.35+      , regex-tdfa           >= 1.2.0+      , regex-tdfa-text      >= 1.0.0.3+      , smallcheck           >= 1.1.1+      , tasty                >= 0.10.1.2+      , tasty-hunit          >= 0.9.2+      , tasty-smallcheck     >= 0.8.0.1+      , template-haskell     >= 2.7+      , text                 >= 1.2.0.6+      , unordered-containers >= 0.2.5.1++++Executable re-tutorial+    Hs-Source-Dirs:     examples++    Main-Is:            re-tutorial.lhs++    Other-Modules:+      TestKit++    Default-Language:   Haskell2010+    Default-Extensions: QuasiQuotes+    GHC-Options:+      -Wall+      -fwarn-tabs++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , containers           >= 0.4+      , directory            >= 1.2.1.0+      , hashable             >= 1.2.3.3+      , heredoc              >= 0.2.0.0+      , regex-base           >= 0.93.2+      , regex-pcre-builtin   >= 0.94.4.8.8.35+      , regex-tdfa           >= 1.2.0+      , regex-tdfa-text      >= 1.0.0.3+      , shelly               >= 1.6.1.2+      , smallcheck           >= 1.1.1+      , tasty                >= 0.10.1.2+      , tasty-hunit          >= 0.9.2+      , tasty-smallcheck     >= 0.8.0.1+      , template-haskell     >= 2.7+      , text                 >= 1.2.0.6+      , time                 >= 1.4.2+      , time-locale-compat   >= 0.1.0.1+      , transformers         >= 0.2.2+      , unordered-containers >= 0.2.5.1+++Test-Suite re-tutorial-test+    type:               exitcode-stdio-1.0+    Hs-Source-Dirs:     examples++    Main-Is:            re-tutorial.lhs++    Other-Modules:+      TestKit++    Default-Language:   Haskell2010+    Default-Extensions: QuasiQuotes+    GHC-Options:+      -Wall+      -fwarn-tabs++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , containers           >= 0.4+      , directory            >= 1.2.1.0+      , hashable             >= 1.2.3.3+      , heredoc              >= 0.2.0.0+      , regex-base           >= 0.93.2+      , regex-pcre-builtin   >= 0.94.4.8.8.35+      , regex-tdfa           >= 1.2.0+      , regex-tdfa-text      >= 1.0.0.3+      , shelly               >= 1.6.1.2+      , smallcheck           >= 1.1.1+      , tasty                >= 0.10.1.2+      , tasty-hunit          >= 0.9.2+      , tasty-smallcheck     >= 0.8.0.1+      , template-haskell     >= 2.7+      , text                 >= 1.2.0.6+      , time                 >= 1.4.2+      , time-locale-compat   >= 0.1.0.1+      , transformers         >= 0.2.2+      , unordered-containers >= 0.2.5.1++++Test-Suite re-tutorial-os-test+    type:               exitcode-stdio-1.0+    Hs-Source-Dirs:     examples++    Main-Is:            re-tutorial.lhs++    Other-Modules:+      TestKit++    Default-Language:   Haskell2010+    Extensions:         OverloadedStrings+    Default-Extensions: QuasiQuotes+    GHC-Options:+      -Wall+      -fwarn-tabs++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , containers           >= 0.4+      , directory            >= 1.2.1.0+      , hashable             >= 1.2.3.3+      , heredoc              >= 0.2.0.0+      , regex-base           >= 0.93.2+      , regex-pcre-builtin   >= 0.94.4.8.8.35+      , regex-tdfa           >= 1.2.0+      , regex-tdfa-text      >= 1.0.0.3+      , shelly               >= 1.6.1.2+      , smallcheck           >= 1.1.1+      , tasty                >= 0.10.1.2+      , tasty-hunit          >= 0.9.2+      , tasty-smallcheck     >= 0.8.0.1+      , template-haskell     >= 2.7+      , text                 >= 1.2.0.6+      , time                 >= 1.4.2+      , time-locale-compat   >= 0.1.0.1+      , transformers         >= 0.2.2+      , unordered-containers >= 0.2.5.1++++-- Generated from lib/cabal-masters/mega-regex with re-gen-cabals
+ lib/version.txt view
@@ -0,0 +1,1 @@+0.2.0.0
+ regex-examples.cabal view
@@ -0,0 +1,593 @@+Name:                   regex-examples+Version:                0.2.0.0+Synopsis:               Tutorial, tests and example programs for regex+Description:            Tutorial, tests and example programs for regex,+                        a Regular Expression Toolkit for regex-base with+                        Compile-time checking of RE syntax, data types for+                        matches and captures, a text replacement toolkit,+                        portable options, high-level AWK-like tools+                        for building text processing apps, regular expression+                        macros and test bench, a tutorial and copious examples.+Homepage:               http://regex.uk+Author:                 Chris Dornan+License:                BSD3+license-file:           LICENSE+Maintainer:             Chris Dornan <chris@regex.uk>+Copyright:              Chris Dornan 2016-2017+Category:               Text+Build-type:             Simple+Stability:              RFC+bug-reports:            http://issues.regex.uk++Extra-Source-Files:+    README.markdown+    changelog+    data/access-errors.log+    data/access.log+    data/error.log+    data/events.log+    data/include-result.lhs+    data/pp-result-doc.lhs+    data/pp-result-gen.lhs+    data/pp-test.lhs+    lib/cabal-masters/constraints-incl.cabal+    lib/cabal-masters/executables-incl.cabal+    lib/cabal-masters/library-incl.cabal+    lib/cabal-masters/mega-regex.cabal+    lib/cabal-masters/regex.cabal+    lib/cabal-masters/regex-examples.cabal+    lib/cabal-masters/test-extra-source-files-incl.cabal+    lib/mega-regex.cabal+    lib/version.txt+    docs/pcre-nginx-log-processor.txt+    docs/tdfa-macros.txt+    docs/pcre-macros.txt+    src/Text/RE/PCRE/ByteString.hs+    src/Text/RE/PCRE/ByteString/Lazy.hs+    src/Text/RE/PCRE/Sequence.hs+    src/Text/RE/PCRE/String.hs+    src/Text/RE/TDFA/ByteString.hs+    src/Text/RE/TDFA/ByteString/Lazy.hs+    src/Text/RE/TDFA/Sequence.hs+    src/Text/RE/TDFA/String.hs+    src/Text/RE/TDFA/Text.hs+    src/Text/RE/TDFA/Text/Lazy.hs+++Cabal-Version:          >= 1.16++Source-Repository head+    type:               git+    location:           https://github.com/iconnect/regex.git++Source-Repository this+    Type:               git+    Location:           https://github.com/iconnect/regex.git+    Tag:                0.2.0.0++++Library+    Hs-Source-Dirs:     .+    Exposed-Modules:+      Text.RE+      Text.RE.Capture+      Text.RE.CaptureID+      Text.RE.Edit+      Text.RE.Internal.NamedCaptures+      Text.RE.Internal.PreludeMacros+      Text.RE.Internal.QQ+      Text.RE.IsRegex+      Text.RE.LineNo+      Text.RE.Options+      Text.RE.Parsers+      Text.RE.PCRE+      Text.RE.PCRE.ByteString+      Text.RE.PCRE.ByteString.Lazy+      Text.RE.PCRE.RE+      Text.RE.PCRE.Sequence+      Text.RE.PCRE.String+      Text.RE.Replace+      Text.RE.TDFA+      Text.RE.TDFA.ByteString+      Text.RE.TDFA.ByteString.Lazy+      Text.RE.TDFA.RE+      Text.RE.TDFA.Sequence+      Text.RE.TDFA.String+      Text.RE.TDFA.Text+      Text.RE.TDFA.Text.Lazy+      Text.RE.TestBench+      Text.RE.Tools.Grep+      Text.RE.Tools.Lex+      Text.RE.Tools.Sed++    Other-Modules:+      Text.RE.Internal.AddCaptureNames++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Build-depends:+        array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , containers           >= 0.4+      , hashable             >= 1.2.3.3+      , heredoc              >= 0.2.0.0+      , regex-base           >= 0.93.2+      , regex-pcre-builtin   >= 0.94.4.8.8.35+      , regex-tdfa           >= 1.2.0+      , regex-tdfa-text      >= 1.0.0.3+      , template-haskell     >= 2.7+      , text                 >= 1.2.0.6+      , time                 >= 1.4.2+      , time-locale-compat   >= 0.1.0.1+      , transformers         >= 0.2.2+      , unordered-containers >= 0.2.5.1++++Executable re-gen-cabals+    Hs-Source-Dirs:     examples++    Main-Is:            re-gen-cabals.lhs++    Other-Modules:+      TestKit++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , containers           >= 0.4+      , directory            >= 1.2.1.0+      , regex-base           >= 0.93.2+      , regex-tdfa           >= 1.2.0+      , shelly               >= 1.6.1.2+      , text                 >= 1.2.0.6+++Test-Suite re-gen-cabals-test+    type:               exitcode-stdio-1.0+    Hs-Source-Dirs:     examples++    Main-Is:            re-gen-cabals.lhs++    Other-Modules:+      TestKit++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , containers           >= 0.4+      , directory            >= 1.2.1.0+      , regex-base           >= 0.93.2+      , regex-tdfa           >= 1.2.0+      , shelly               >= 1.6.1.2+      , text                 >= 1.2.0.6++++Executable re-gen-modules+    Hs-Source-Dirs:     examples++    Main-Is:            re-gen-modules.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , directory            >= 1.2.1.0+      , regex-base           >= 0.93.2+      , regex-tdfa           >= 1.2.0+      , shelly               >= 1.6.1.2+      , text                 >= 1.2.0.6+++Test-Suite re-gen-modules-test+    type:               exitcode-stdio-1.0+    Hs-Source-Dirs:     examples++    Main-Is:            re-gen-modules.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , directory            >= 1.2.1.0+      , regex-base           >= 0.93.2+      , regex-tdfa           >= 1.2.0+      , shelly               >= 1.6.1.2+      , text                 >= 1.2.0.6++++Executable re-include+    Hs-Source-Dirs:     examples++    Main-Is:            re-include.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Other-Modules:+      TestKit++    Build-depends:+        regex                == 0.2.0.0+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , directory            >= 1.2.1.0+      , shelly               >= 1.6.1.2+      , text                 >= 1.2.0.6+++Test-Suite re-include-test+    type:               exitcode-stdio-1.0+    Hs-Source-Dirs:     examples++    Main-Is:            re-include.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Other-Modules:+      TestKit++    Build-depends:+        regex                == 0.2.0.0+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , directory            >= 1.2.1.0+      , shelly               >= 1.6.1.2+      , text                 >= 1.2.0.6++++Executable re-nginx-log-processor+    Hs-Source-Dirs:     examples++    Main-Is:            re-nginx-log-processor.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , directory            >= 1.2.1.0+      , regex-base           >= 0.93.2+      , regex-tdfa           >= 1.2.0+      , shelly               >= 1.6.1.2+      , text                 >= 1.2.0.6+      , time                 >= 1.4.2+      , time-locale-compat   >= 0.1.0.1+      , transformers         >= 0.2.2+      , unordered-containers >= 0.2.5.1+++Test-Suite re-nginx-log-processor-test+    type:               exitcode-stdio-1.0+    Hs-Source-Dirs:     examples++    Main-Is:            re-nginx-log-processor.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , directory            >= 1.2.1.0+      , regex-base           >= 0.93.2+      , regex-tdfa           >= 1.2.0+      , shelly               >= 1.6.1.2+      , text                 >= 1.2.0.6+      , time                 >= 1.4.2+      , time-locale-compat   >= 0.1.0.1+      , transformers         >= 0.2.2+      , unordered-containers >= 0.2.5.1++++Executable re-prep+    Hs-Source-Dirs:     examples++    Main-Is:            re-prep.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Other-Modules:+      TestKit++    Build-depends:+        regex                == 0.2.0.0+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , directory            >= 1.2.1.0+      , heredoc              >= 0.2.0.0+      , http-conduit         >= 2.1.7.2+      , shelly               >= 1.6.1.2+      , text                 >= 1.2.0.6+++Test-Suite re-prep-test+    type:               exitcode-stdio-1.0+    Hs-Source-Dirs:     examples++    Main-Is:            re-prep.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Other-Modules:+      TestKit++    Build-depends:+        regex                == 0.2.0.0+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , directory            >= 1.2.1.0+      , heredoc              >= 0.2.0.0+      , http-conduit         >= 2.1.7.2+      , shelly               >= 1.6.1.2+      , text                 >= 1.2.0.6++++Executable re-tests+    Hs-Source-Dirs:     examples++    Main-Is:            re-tests.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Other-Modules:+      TestKit++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , containers           >= 0.4+      , directory            >= 1.2.1.0+      , heredoc              >= 0.2.0.0+      , regex-base           >= 0.93.2+      , regex-pcre-builtin   >= 0.94.4.8.8.35+      , regex-tdfa           >= 1.2.0+      , regex-tdfa-text      >= 1.0.0.3+      , smallcheck           >= 1.1.1+      , tasty                >= 0.10.1.2+      , tasty-hunit          >= 0.9.2+      , tasty-smallcheck     >= 0.8.0.1+      , template-haskell     >= 2.7+      , text                 >= 1.2.0.6+      , unordered-containers >= 0.2.5.1+++Test-Suite re-tests-test+    type:               exitcode-stdio-1.0+    Hs-Source-Dirs:     examples++    Main-Is:            re-tests.lhs++    Default-Language:   Haskell2010+    GHC-Options:+      -Wall+      -fwarn-tabs++    Other-Modules:+      TestKit++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , containers           >= 0.4+      , directory            >= 1.2.1.0+      , heredoc              >= 0.2.0.0+      , regex-base           >= 0.93.2+      , regex-pcre-builtin   >= 0.94.4.8.8.35+      , regex-tdfa           >= 1.2.0+      , regex-tdfa-text      >= 1.0.0.3+      , smallcheck           >= 1.1.1+      , tasty                >= 0.10.1.2+      , tasty-hunit          >= 0.9.2+      , tasty-smallcheck     >= 0.8.0.1+      , template-haskell     >= 2.7+      , text                 >= 1.2.0.6+      , unordered-containers >= 0.2.5.1++++Executable re-tutorial+    Hs-Source-Dirs:     examples++    Main-Is:            re-tutorial.lhs++    Other-Modules:+      TestKit++    Default-Language:   Haskell2010+    Default-Extensions: QuasiQuotes+    GHC-Options:+      -Wall+      -fwarn-tabs++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , containers           >= 0.4+      , directory            >= 1.2.1.0+      , hashable             >= 1.2.3.3+      , heredoc              >= 0.2.0.0+      , regex-base           >= 0.93.2+      , regex-pcre-builtin   >= 0.94.4.8.8.35+      , regex-tdfa           >= 1.2.0+      , regex-tdfa-text      >= 1.0.0.3+      , shelly               >= 1.6.1.2+      , smallcheck           >= 1.1.1+      , tasty                >= 0.10.1.2+      , tasty-hunit          >= 0.9.2+      , tasty-smallcheck     >= 0.8.0.1+      , template-haskell     >= 2.7+      , text                 >= 1.2.0.6+      , time                 >= 1.4.2+      , time-locale-compat   >= 0.1.0.1+      , transformers         >= 0.2.2+      , unordered-containers >= 0.2.5.1+++Test-Suite re-tutorial-test+    type:               exitcode-stdio-1.0+    Hs-Source-Dirs:     examples++    Main-Is:            re-tutorial.lhs++    Other-Modules:+      TestKit++    Default-Language:   Haskell2010+    Default-Extensions: QuasiQuotes+    GHC-Options:+      -Wall+      -fwarn-tabs++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , containers           >= 0.4+      , directory            >= 1.2.1.0+      , hashable             >= 1.2.3.3+      , heredoc              >= 0.2.0.0+      , regex-base           >= 0.93.2+      , regex-pcre-builtin   >= 0.94.4.8.8.35+      , regex-tdfa           >= 1.2.0+      , regex-tdfa-text      >= 1.0.0.3+      , shelly               >= 1.6.1.2+      , smallcheck           >= 1.1.1+      , tasty                >= 0.10.1.2+      , tasty-hunit          >= 0.9.2+      , tasty-smallcheck     >= 0.8.0.1+      , template-haskell     >= 2.7+      , text                 >= 1.2.0.6+      , time                 >= 1.4.2+      , time-locale-compat   >= 0.1.0.1+      , transformers         >= 0.2.2+      , unordered-containers >= 0.2.5.1++++Test-Suite re-tutorial-os-test+    type:               exitcode-stdio-1.0+    Hs-Source-Dirs:     examples++    Main-Is:            re-tutorial.lhs++    Other-Modules:+      TestKit++    Default-Language:   Haskell2010+    Extensions:         OverloadedStrings+    Default-Extensions: QuasiQuotes+    GHC-Options:+      -Wall+      -fwarn-tabs++    Build-depends:+        regex                == 0.2.0.0+      , array                >= 0.4+      , base                 >= 4 && < 5+      , base-compat          >= 0.6.0+      , bytestring           >= 0.10.2.0+      , containers           >= 0.4+      , directory            >= 1.2.1.0+      , hashable             >= 1.2.3.3+      , heredoc              >= 0.2.0.0+      , regex-base           >= 0.93.2+      , regex-pcre-builtin   >= 0.94.4.8.8.35+      , regex-tdfa           >= 1.2.0+      , regex-tdfa-text      >= 1.0.0.3+      , shelly               >= 1.6.1.2+      , smallcheck           >= 1.1.1+      , tasty                >= 0.10.1.2+      , tasty-hunit          >= 0.9.2+      , tasty-smallcheck     >= 0.8.0.1+      , template-haskell     >= 2.7+      , text                 >= 1.2.0.6+      , time                 >= 1.4.2+      , time-locale-compat   >= 0.1.0.1+      , transformers         >= 0.2.2+      , unordered-containers >= 0.2.5.1++++-- Generated from lib/cabal-masters/mega-regex with re-gen-cabals
+ src/Text/RE/PCRE/ByteString.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.PCRE.ByteString+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.PCRE.RE+  ) where++import qualified Data.ByteString               as B+import           Text.Regex.Base+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.PCRE.RE+import qualified Text.Regex.PCRE               as PCRE+++-- | find all matches in text+(*=~) :: B.ByteString+      -> RE+      -> Matches B.ByteString+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ match (reRegex rex) bs++-- | find first matches in text+(?=~) :: B.ByteString+      -> RE+      -> Match B.ByteString+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ match (reRegex rex) bs++-- | regex-base polymorphic match operator+(=~) :: ( RegexContext PCRE.Regex B.ByteString a+        , RegexMaker   PCRE.Regex PCRE.CompOption PCRE.ExecOption String+        )+     => B.ByteString+     -> RE+     -> a+(=~) bs rex = match (reRegex rex) bs++-- | regex-base monadic, polymorphic match operator+(=~~) :: ( Monad m+         , RegexContext PCRE.Regex B.ByteString a+         , RegexMaker   PCRE.Regex PCRE.CompOption PCRE.ExecOption String+         )+      => B.ByteString+      -> RE+      -> m a+(=~~) bs rex = matchM (reRegex rex) bs++instance IsRegex RE B.ByteString where+  matchOnce   = flip (?=~)+  matchMany   = flip (*=~)+  regexSource = reSource
+ src/Text/RE/PCRE/ByteString/Lazy.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.PCRE.ByteString.Lazy+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.PCRE.RE+  ) where++import qualified Data.ByteString.Lazy          as LBS+import           Text.Regex.Base+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.PCRE.RE+import qualified Text.Regex.PCRE               as PCRE+++-- | find all matches in text+(*=~) :: LBS.ByteString+      -> RE+      -> Matches LBS.ByteString+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ match (reRegex rex) bs++-- | find first matches in text+(?=~) :: LBS.ByteString+      -> RE+      -> Match LBS.ByteString+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ match (reRegex rex) bs++-- | regex-base polymorphic match operator+(=~) :: ( RegexContext PCRE.Regex LBS.ByteString a+        , RegexMaker   PCRE.Regex PCRE.CompOption PCRE.ExecOption String+        )+     => LBS.ByteString+     -> RE+     -> a+(=~) bs rex = match (reRegex rex) bs++-- | regex-base monadic, polymorphic match operator+(=~~) :: ( Monad m+         , RegexContext PCRE.Regex LBS.ByteString a+         , RegexMaker   PCRE.Regex PCRE.CompOption PCRE.ExecOption String+         )+      => LBS.ByteString+      -> RE+      -> m a+(=~~) bs rex = matchM (reRegex rex) bs++instance IsRegex RE LBS.ByteString where+  matchOnce   = flip (?=~)+  matchMany   = flip (*=~)+  regexSource = reSource
+ src/Text/RE/PCRE/Sequence.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.PCRE.Sequence+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.PCRE.RE+  ) where++import qualified Data.Sequence                 as S+import           Text.Regex.Base+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.PCRE.RE+import qualified Text.Regex.PCRE               as PCRE+++-- | find all matches in text+(*=~) :: (S.Seq Char)+      -> RE+      -> Matches (S.Seq Char)+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ match (reRegex rex) bs++-- | find first matches in text+(?=~) :: (S.Seq Char)+      -> RE+      -> Match (S.Seq Char)+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ match (reRegex rex) bs++-- | regex-base polymorphic match operator+(=~) :: ( RegexContext PCRE.Regex (S.Seq Char) a+        , RegexMaker   PCRE.Regex PCRE.CompOption PCRE.ExecOption String+        )+     => (S.Seq Char)+     -> RE+     -> a+(=~) bs rex = match (reRegex rex) bs++-- | regex-base monadic, polymorphic match operator+(=~~) :: ( Monad m+         , RegexContext PCRE.Regex (S.Seq Char) a+         , RegexMaker   PCRE.Regex PCRE.CompOption PCRE.ExecOption String+         )+      => (S.Seq Char)+      -> RE+      -> m a+(=~~) bs rex = matchM (reRegex rex) bs++instance IsRegex RE (S.Seq Char) where+  matchOnce   = flip (?=~)+  matchMany   = flip (*=~)+  regexSource = reSource
+ src/Text/RE/PCRE/String.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.PCRE.String+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.PCRE.RE+  ) where+++import           Text.Regex.Base+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.PCRE.RE+import qualified Text.Regex.PCRE               as PCRE+++-- | find all matches in text+(*=~) :: String+      -> RE+      -> Matches String+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ match (reRegex rex) bs++-- | find first matches in text+(?=~) :: String+      -> RE+      -> Match String+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ match (reRegex rex) bs++-- | regex-base polymorphic match operator+(=~) :: ( RegexContext PCRE.Regex String a+        , RegexMaker   PCRE.Regex PCRE.CompOption PCRE.ExecOption String+        )+     => String+     -> RE+     -> a+(=~) bs rex = match (reRegex rex) bs++-- | regex-base monadic, polymorphic match operator+(=~~) :: ( Monad m+         , RegexContext PCRE.Regex String a+         , RegexMaker   PCRE.Regex PCRE.CompOption PCRE.ExecOption String+         )+      => String+      -> RE+      -> m a+(=~~) bs rex = matchM (reRegex rex) bs++instance IsRegex RE String where+  matchOnce   = flip (?=~)+  matchMany   = flip (*=~)+  regexSource = reSource
+ src/Text/RE/TDFA/ByteString.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.TDFA.ByteString+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.TDFA.RE+  ) where++import qualified Data.ByteString               as B+import           Text.Regex.Base+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.TDFA.RE+import qualified Text.Regex.TDFA               as TDFA+++-- | find all matches in text+(*=~) :: B.ByteString+      -> RE+      -> Matches B.ByteString+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ match (reRegex rex) bs++-- | find first matches in text+(?=~) :: B.ByteString+      -> RE+      -> Match B.ByteString+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ match (reRegex rex) bs++-- | regex-base polymorphic match operator+(=~) :: ( RegexContext TDFA.Regex B.ByteString a+        , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+        )+     => B.ByteString+     -> RE+     -> a+(=~) bs rex = match (reRegex rex) bs++-- | regex-base monadic, polymorphic match operator+(=~~) :: ( Monad m+         , RegexContext TDFA.Regex B.ByteString a+         , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+         )+      => B.ByteString+      -> RE+      -> m a+(=~~) bs rex = matchM (reRegex rex) bs++instance IsRegex RE B.ByteString where+  matchOnce   = flip (?=~)+  matchMany   = flip (*=~)+  regexSource = reSource
+ src/Text/RE/TDFA/ByteString/Lazy.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.TDFA.ByteString.Lazy+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.TDFA.RE+  ) where++import qualified Data.ByteString.Lazy.Char8    as LBS+import           Text.Regex.Base+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.TDFA.RE+import qualified Text.Regex.TDFA               as TDFA+++-- | find all matches in text+(*=~) :: LBS.ByteString+      -> RE+      -> Matches LBS.ByteString+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ match (reRegex rex) bs++-- | find first matches in text+(?=~) :: LBS.ByteString+      -> RE+      -> Match LBS.ByteString+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ match (reRegex rex) bs++-- | regex-base polymorphic match operator+(=~) :: ( RegexContext TDFA.Regex LBS.ByteString a+        , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+        )+     => LBS.ByteString+     -> RE+     -> a+(=~) bs rex = match (reRegex rex) bs++-- | regex-base monadic, polymorphic match operator+(=~~) :: ( Monad m+         , RegexContext TDFA.Regex LBS.ByteString a+         , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+         )+      => LBS.ByteString+      -> RE+      -> m a+(=~~) bs rex = matchM (reRegex rex) bs++instance IsRegex RE LBS.ByteString where+  matchOnce   = flip (?=~)+  matchMany   = flip (*=~)+  regexSource = reSource
+ src/Text/RE/TDFA/Sequence.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.TDFA.Sequence+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.TDFA.RE+  ) where++import qualified Data.Sequence                 as S+import           Text.Regex.Base+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.TDFA.RE+import qualified Text.Regex.TDFA               as TDFA+++-- | find all matches in text+(*=~) :: (S.Seq Char)+      -> RE+      -> Matches (S.Seq Char)+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ match (reRegex rex) bs++-- | find first matches in text+(?=~) :: (S.Seq Char)+      -> RE+      -> Match (S.Seq Char)+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ match (reRegex rex) bs++-- | regex-base polymorphic match operator+(=~) :: ( RegexContext TDFA.Regex (S.Seq Char) a+        , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+        )+     => (S.Seq Char)+     -> RE+     -> a+(=~) bs rex = match (reRegex rex) bs++-- | regex-base monadic, polymorphic match operator+(=~~) :: ( Monad m+         , RegexContext TDFA.Regex (S.Seq Char) a+         , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+         )+      => (S.Seq Char)+      -> RE+      -> m a+(=~~) bs rex = matchM (reRegex rex) bs++instance IsRegex RE (S.Seq Char) where+  matchOnce   = flip (?=~)+  matchMany   = flip (*=~)+  regexSource = reSource
+ src/Text/RE/TDFA/String.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.TDFA.String+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.TDFA.RE+  ) where+++import           Text.Regex.Base+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.TDFA.RE+import qualified Text.Regex.TDFA               as TDFA+++-- | find all matches in text+(*=~) :: String+      -> RE+      -> Matches String+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ match (reRegex rex) bs++-- | find first matches in text+(?=~) :: String+      -> RE+      -> Match String+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ match (reRegex rex) bs++-- | regex-base polymorphic match operator+(=~) :: ( RegexContext TDFA.Regex String a+        , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+        )+     => String+     -> RE+     -> a+(=~) bs rex = match (reRegex rex) bs++-- | regex-base monadic, polymorphic match operator+(=~~) :: ( Monad m+         , RegexContext TDFA.Regex String a+         , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+         )+      => String+      -> RE+      -> m a+(=~~) bs rex = matchM (reRegex rex) bs++instance IsRegex RE String where+  matchOnce   = flip (?=~)+  matchMany   = flip (*=~)+  regexSource = reSource
+ src/Text/RE/TDFA/Text.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.TDFA.Text+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.TDFA.RE+  ) where++import qualified Data.Text                     as T+import           Text.Regex.Base+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.TDFA.RE+import qualified Text.Regex.TDFA               as TDFA+++-- | find all matches in text+(*=~) :: T.Text+      -> RE+      -> Matches T.Text+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ match (reRegex rex) bs++-- | find first matches in text+(?=~) :: T.Text+      -> RE+      -> Match T.Text+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ match (reRegex rex) bs++-- | regex-base polymorphic match operator+(=~) :: ( RegexContext TDFA.Regex T.Text a+        , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+        )+     => T.Text+     -> RE+     -> a+(=~) bs rex = match (reRegex rex) bs++-- | regex-base monadic, polymorphic match operator+(=~~) :: ( Monad m+         , RegexContext TDFA.Regex T.Text a+         , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+         )+      => T.Text+      -> RE+      -> m a+(=~~) bs rex = matchM (reRegex rex) bs++instance IsRegex RE T.Text where+  matchOnce   = flip (?=~)+  matchMany   = flip (*=~)+  regexSource = reSource
+ src/Text/RE/TDFA/Text/Lazy.hs view
@@ -0,0 +1,61 @@+{-# LANGUAGE MultiParamTypeClasses      #-}+{-# LANGUAGE FlexibleContexts           #-}+{-# LANGUAGE FlexibleInstances          #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-}+{-# LANGUAGE CPP                        #-}+#if __GLASGOW_HASKELL__ >= 800+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}+#endif++module Text.RE.TDFA.Text.Lazy+  ( (*=~)+  , (?=~)+  , (=~)+  , (=~~)+  , module Text.RE+  , module Text.RE.TDFA.RE+  ) where++import qualified Data.Text.Lazy                as TL+import           Text.Regex.Base+import           Text.RE+import           Text.RE.Internal.AddCaptureNames+import           Text.RE.TDFA.RE+import qualified Text.Regex.TDFA               as TDFA+++-- | find all matches in text+(*=~) :: TL.Text+      -> RE+      -> Matches TL.Text+(*=~) bs rex = addCaptureNamesToMatches (reCaptureNames rex) $ match (reRegex rex) bs++-- | find first matches in text+(?=~) :: TL.Text+      -> RE+      -> Match TL.Text+(?=~) bs rex = addCaptureNamesToMatch (reCaptureNames rex) $ match (reRegex rex) bs++-- | regex-base polymorphic match operator+(=~) :: ( RegexContext TDFA.Regex TL.Text a+        , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+        )+     => TL.Text+     -> RE+     -> a+(=~) bs rex = match (reRegex rex) bs++-- | regex-base monadic, polymorphic match operator+(=~~) :: ( Monad m+         , RegexContext TDFA.Regex TL.Text a+         , RegexMaker   TDFA.Regex TDFA.CompOption TDFA.ExecOption String+         )+      => TL.Text+      -> RE+      -> m a+(=~~) bs rex = matchM (reRegex rex) bs++instance IsRegex RE TL.Text where+  matchOnce   = flip (?=~)+  matchMany   = flip (*=~)+  regexSource = reSource