diff --git a/bower.json b/bower.json
index fb9aa5820270602b0fa4971730f2470e9a7710b9..4d14ce58a1e89ef5c847c95422e3c0c8dcf12b26 100644
--- a/bower.json
+++ b/bower.json
@@ -8,7 +8,7 @@
   ],
   "dependencies": {
     "purescript-console": "^4.1.0",
-    "purescript-thermite": "https://github.com/np/purescript-thermite.git#d7395aec9ff4e7b8f820e882b4b07ed15c4f804d",
+    "purescript-thermite": "https://github.com/np/purescript-thermite.git#hide",
     "purescript-affjax": "^7.0.0",
     "purescript-routing": "^8.0.0",
     "purescript-argonaut": "^4.0.1",
diff --git a/rebuild b/rebuild
deleted file mode 100755
index deb3dd1ba5bb8157fa38ef0b5d0a253cb9294f88..0000000000000000000000000000000000000000
--- a/rebuild
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-
-rm -rf output bower_components node_modules
-bower install && yarn install && pulp build && pulp browserify --to dist/bundle.js
diff --git a/src/Gargantext/Components/Loader.purs b/src/Gargantext/Components/Loader.purs
deleted file mode 100644
index cfe052ac7f71abd71ef71c3fa1e6d2c7a2a22039..0000000000000000000000000000000000000000
--- a/src/Gargantext/Components/Loader.purs
+++ /dev/null
@@ -1,51 +0,0 @@
-module Gargantext.Components.Loader where
-
-import Data.Maybe (Maybe(..))
-import Data.Either (Either(..))
-import Data.Traversable (traverse_)
-import React as React
-import React (ReactClass)
-import Gargantext.Prelude
-import Effect.Aff (Aff, launchAff, launchAff_, makeAff, nonCanceler, killFiber)
-import Effect.Exception (error)
-
-type InnerProps a b =
-  { path     :: a
-  , loaded   :: Maybe b
-  , children :: React.Children
-  }
-
-type Props a b = { path      :: a
-                 , component :: ReactClass (InnerProps a b)
-                 }
-
-createLoaderClass :: forall a b
-                   . String
-                  -> (a -> Aff b)
-                  -> ReactClass (Props a b)
-createLoaderClass name loader = React.component name mk
-  where
-    mk this =
-      pure
-        { state: { loaded: Nothing, fiber: Nothing }
-        , componentDidMount: do
-            logs "componentDidMount"
-            {path} <- React.getProps this
-            fiber <- launchAff $ do
-              newState <- loader path
-              makeAff $ \cb -> do
-                void $ React.modifyStateWithCallback
-                         this
-                         (_ {loaded = Just newState})
-                         (cb (Right unit))
-                pure nonCanceler
-            React.modifyState this (_ { fiber = Just fiber })
-        , componentWillUnmount: do
-            {fiber} <- React.getState this
-            traverse_ (launchAff_ <<< killFiber (error "Loader: killFiber"))
-                      fiber
-        , render: do
-            {path, component} <- React.getProps this
-            {loaded} <- React.getState this
-            pure $ React.createElement component {path, loaded} []
-        }
diff --git a/src/Gargantext/Components/Login.purs b/src/Gargantext/Components/Login.purs
index 9a3d61ce5fddddb557696c776a637d23b4e21d32..2b572d15f30ea86748358b13e2227ee65ee2bbb3 100644
--- a/src/Gargantext/Components/Login.purs
+++ b/src/Gargantext/Components/Login.purs
@@ -1,11 +1,22 @@
 module Gargantext.Components.Login where
 
-import Data.Argonaut (class DecodeJson, class EncodeJson, decodeJson, jsonEmptyObject, (.?), (:=), (~>))
+import Prelude hiding (div)
+
+import Affjax (defaultRequest, printResponseFormatError, request)
+import Affjax.RequestBody (RequestBody(..))
+import Affjax.RequestHeader (RequestHeader(..))
+import Affjax.ResponseFormat as ResponseFormat
+import Data.Argonaut (class DecodeJson, class EncodeJson, decodeJson, encodeJson, jsonEmptyObject, stringify, (.?), (:=), (~>))
+import Data.Either (Either(..))
+import Data.HTTP.Method (Method(..))
 import Data.Lens (over)
-import Data.Maybe (Maybe)
-import Effect.Class (liftEffect)
+import Data.Maybe (Maybe(..))
+import Data.MediaType.Common (applicationJSON)
 import Effect (Effect)
 import Effect.Aff (Aff)
+import Effect.Class (liftEffect)
+import Effect.Console (log)
+import Gargantext.Components.Modals.Modal (modalHide)
 import React.DOM (a, button, div, h2, h4, h5, i, input, label, p, span, text)
 import React.DOM.Props (_data, _id, _type, aria, className, href, maxLength, name, onClick, onInput, placeholder, role, target, value)
 import Thermite (PerformAction, Render, Spec, _render, modifyState, simpleSpec)
@@ -14,13 +25,7 @@ import Web.HTML (window)
 import Web.HTML.Window (localStorage)
 import Web.Storage.Storage (getItem, setItem)
 
-------------------------------------------------------------------------
-import Gargantext.Prelude
-import Gargantext.Config.REST (post)
-import Gargantext.Components.Modals.Modal (modalHide)
-
--- TODO: ask for login (modal) or account creation after 15 mn when user
--- is not logged and has made one search at least
+--          TODO: ask for login (modal) or account creation after 15 mn when user is not logged and has made one search at least
 
 newtype State = State
   { username :: String
@@ -46,6 +51,31 @@ data Action
   | SetPassword String
 
 
+performAction :: PerformAction State {} Action
+
+performAction (SetUserName usr) _ _ = void do
+  modifyState \(State state) -> State $ state { username = usr }
+
+
+performAction (SetPassword pwd) _ _ = void do
+  modifyState \(State state) -> State $ state { password = pwd }
+
+
+
+performAction Login _ _ = void do
+  --lift $ setHash "/search"
+  liftEffect $ modalHide "loginModal"
+  modifyState \(State state) -> State $ state {loginC = true}
+  -- res <- lift $ loginReq $ LoginReq { username : state.username, password : state.password }
+  -- case res of
+  --   Left e -> do
+  --     lift $ log $ show e
+  --     modifyState \(State s) ->  State $ s { errorMessage = e}
+  --   Right r@(LoginRes response) -> do
+  --     lift $ setHash "/addCorpus"
+  --     modifyState \(State s) ->  State $ s {response = r, errorMessage = ""}
+
+
 modalSpec :: forall props. Boolean -> String -> Spec State props Action -> Spec State props Action
 modalSpec sm t = over _render \render d p s c ->
   [ div [ _id "loginModal", className $ "modal myModal" <> if sm then "" else " fade"
@@ -80,27 +110,6 @@ spec' = modalSpec true "Login" renderSpec
 renderSpec :: Spec State {} Action
 renderSpec = simpleSpec performAction render
   where
-    performAction :: PerformAction State {} Action
-
-    performAction (SetUserName usr) _ _ = void do
-      modifyState \(State state) -> State $ state { username = usr }
-
-    performAction (SetPassword pwd) _ _ = void do
-      modifyState \(State state) -> State $ state { password = pwd }
-
-    performAction Login _ _ = void do
-      --lift $ setHash "/search"
-      liftEffect $ modalHide "loginModal"
-      modifyState \(State state) -> State $ state {loginC = true}
-      -- res <- lift $ loginReq $ LoginReq { username : state.username, password : state.password }
-      -- case res of
-      --   Left e -> do
-      --     logs e
-      --     modifyState \(State s) ->  State $ s { errorMessage = e}
-      --   Right r@(LoginRes response) -> do
-      --     lift $ setHash "/addCorpus"
-      --     modifyState \(State s) ->  State $ s {response = r, errorMessage = ""}
-
     render :: Render State {} Action
     render dispatch _ (State state) _ =
       [
@@ -224,8 +233,37 @@ newtype LoginReq = LoginReq
   , password :: String
   }
 
-loginReq :: LoginReq -> Aff LoginRes
-loginReq = post "https://dev.gargantext.org/api/auth/token"
+loginReq :: LoginReq -> Aff (Either String LoginRes)
+loginReq encodeData =
+  let
+    setting =
+      defaultRequest
+        { url = "https://dev.gargantext.org/api/auth/token"
+        , method = Left POST
+        , responseFormat = ResponseFormat.json
+        , headers =
+            [ ContentType applicationJSON
+            , Accept applicationJSON
+            ]
+        , content = Just $ Json $ encodeJson encodeData
+        }
+  in
+    do
+      affResp <- request setting
+      case affResp.body of
+        Left err -> do
+          liftEffect $ log $ printResponseFormatError err
+          pure $ Left $ printResponseFormatError err
+        Right json -> do
+          liftEffect $ log $ "POST method Completed"
+          liftEffect $ log $ "GET /api response: " <> stringify json
+          let obj = decodeJson json
+          case obj of
+            Left e ->
+              liftEffect $ log $ "Error Decoding : " <> show e
+            Right (LoginRes res1) ->
+              liftEffect $ setToken res1.token
+          pure obj
 
 instance decodeLoginRes :: DecodeJson LoginRes where
   decodeJson json = do
diff --git a/src/Gargantext/Components/Node.purs b/src/Gargantext/Components/Node.purs
deleted file mode 100644
index 5aea70e49467b3d58e5b1837d487de999e230f87..0000000000000000000000000000000000000000
--- a/src/Gargantext/Components/Node.purs
+++ /dev/null
@@ -1,41 +0,0 @@
-module Gargantext.Components.Node 
-  where
-
-import Gargantext.Prelude
-import Data.Argonaut (class DecodeJson, decodeJson, (.?))
-
-newtype NodePoly a =
-  NodePoly { id :: Int
-           , typename :: Int
-           , userId   :: Int
-           , parentId  :: Int
-           , name      :: String
-           , date      :: String
-           , hyperdata :: a
-           }
-
-
-instance decodeNodePoly :: (DecodeJson a)
-  => DecodeJson (NodePoly a) where
-  decodeJson json = do
-    obj <- decodeJson json
-    id        <- obj .? "id"
-    typename  <- obj .? "typename"
-    userId    <- obj .? "userId"
-    parentId  <- obj .? "parentId"
-    name      <- obj .? "name"
-    date      <- obj .? "date"
-    
-    hyperdata  <- obj .? "hyperdata"
-    hyperdata' <- decodeJson hyperdata
-    
-    pure $ NodePoly  { id : id
-                 , typename : typename
-                 , userId   : userId
-                 , parentId : parentId
-                 , name     : name
-                 , date     : date
-                 , hyperdata: hyperdata'
-                 }
-
-
diff --git a/src/Gargantext/Components/Tab.purs b/src/Gargantext/Components/Tab.purs
index 362081a3e8aa03228571e3b3d41f6be08b339405..870fb5faae652fa504f50d21e38af539f1398edf 100644
--- a/src/Gargantext/Components/Tab.purs
+++ b/src/Gargantext/Components/Tab.purs
@@ -27,10 +27,6 @@ tabs l p ls = withState \st ->
   , wrapper $ fold $ mapWithIndex        (   tab (activeTab st)) ls
   ]
   where
-    performAction :: forall props.
-      PerformAction State props Action
-    performAction (ChangeTab i) _ _ =
-      void $ modifyState $ const i
     activeTab = view l
     wrapper = over _render \render d p s c ->
       [div [className "tab-content"] $ render d p s c]
@@ -48,6 +44,11 @@ tab sid iid (Tuple name spec) = over _render tabRender spec
       ]
 
 
+performAction :: forall props.
+  PerformAction State props Action
+performAction (ChangeTab i) _ _ =
+  void $ modifyState $ const i
+
 render :: forall state props action.
   State -> List (Tuple String (Spec state props action))
                           -> Render State props Action
diff --git a/src/Gargantext/Components/Table.purs b/src/Gargantext/Components/Table.purs
deleted file mode 100644
index 07d473f0d8244edc55196225ddfc880356e909e5..0000000000000000000000000000000000000000
--- a/src/Gargantext/Components/Table.purs
+++ /dev/null
@@ -1,243 +0,0 @@
-module Gargantext.Components.Table where
-
-import Control.Monad.Cont.Trans (lift)
-import Data.Array (filter)
-import Data.Maybe (Maybe(..), maybe)
-import Data.Either (Either(..))
-import Effect (Effect)
-import Effect.Aff (Aff)
-import React as React
-import React (ReactElement, ReactClass, Children, createElement)
-import React.DOM (a, b, b', div, option, select, span, table, tbody, td, text, th, thead, tr)
-import React.DOM.Props (className, href, onChange, onClick, scope, selected, value)
-import Thermite (PerformAction, Render, Spec, modifyState, simpleSpec,
-    createReactSpec, StateCoTransformer)
-import Unsafe.Coerce (unsafeCoerce)
-
-import Gargantext.Prelude
-
-type Rows = Array { row    :: Array ReactElement
-                  , delete :: Boolean
-                  }
-
-type LoadRows = { offset :: Int, limit :: Int } -> Aff Rows
-
-type Props' =
-  ( title        :: String
-  , colNames     :: Array String
-  , totalRecords :: Int
-  , loadRows     :: LoadRows
-  )
-
-type Props = Record Props'
-
-type State =
-  { rows        :: Maybe Rows
-  , currentPage :: Int
-  , pageSize    :: PageSizes
---, tree        :: FTree
-  }
-
-initialState :: State
-initialState =
-  { rows         : Nothing
-  , currentPage  : 1
-  , pageSize     : PS10
---, tree         : exampleTree
-  }
-
-data Action
-  = ChangePageSize PageSizes
-  | ChangePage     Int
-
-type ChangePageAction = Int -> Effect Unit
-
--- | Action
--- ChangePageSize
-changePageSize :: PageSizes -> State -> State
-changePageSize ps td =
-  td { pageSize      = ps
-     , currentPage   = 1
-     }
-
-tableSpec :: Spec State Props Action
-tableSpec = simpleSpec performAction render
-  where
-    modifyStateAndReload :: (State -> State) -> Props -> State -> StateCoTransformer State Unit
-    modifyStateAndReload f {loadRows} state = do
-      void $ modifyState f
-      loadAndSetRows {loadRows} $ f state
-
-    performAction :: PerformAction State Props Action
-    performAction (ChangePageSize ps) =
-      modifyStateAndReload $ changePageSize ps
-    performAction (ChangePage p) =
-      modifyStateAndReload $ _ { currentPage = p }
-
-    render :: Render State Props Action
-    render dispatch {title, colNames, totalRecords}
-                    {pageSize, currentPage, rows} _ =
-      let
-        ps = pageSizes2Int pageSize
-        totalPages = (totalRecords / ps) + min 1 (totalRecords `mod` ps)
-      in
-      [ div [className "row"]
-        [ div [className "col-md-1"] [b [] [text title]]
-        , div [className "col-md-2"] [sizeDD pageSize dispatch]
-        , div [className "col-md-3"] [textDescription currentPage pageSize totalRecords]
-        , div [className "col-md-3"] [pagination (dispatch <<< ChangePage) totalPages currentPage]
-              ]
-      , table [ className "table"]
-        [ thead [className "thead-dark"]
-                [tr [] ((\colName -> th [scope "col"] [ b' [text colName]]) <$> colNames)]
-        , tbody [] $ map (tr [] <<< map (\c -> td [] [c]) <<< _.row)
-                         (maybe [] identity rows)
-                      -- TODO display a loading spinner when rows == Nothing
-                      -- instead of an empty list of results.
-        ]
-      ]
-
-loadAndSetRows :: {loadRows :: LoadRows} -> State -> StateCoTransformer State Unit
-loadAndSetRows {loadRows} {pageSize, currentPage} = do
-  let limit = pageSizes2Int pageSize
-      offset = limit * (currentPage - 1)
-  rows <- lift $ loadRows {offset, limit}
-  void $ modifyState (_ { rows = Just rows })
-
-tableClass :: ReactClass {children :: Children | Props'}
-tableClass =
-  React.component "Table"
-    (\this -> do
-       {state, render} <- spec this
-       pure { state, render
-            , componentDidMount: do
-                {loadRows} <- React.getProps this
-                state' <- React.getState this
-                dispatcher' this $ loadAndSetRows {loadRows} state'
-            })
-  where
-    { spec, dispatcher' } = createReactSpec tableSpec initialState
-
-tableElt :: Props -> ReactElement
-tableElt props = createElement tableClass props []
-
-sizeDD :: PageSizes -> (Action -> Effect Unit) -> ReactElement
-sizeDD ps d
-  = span []
-    [ text "Show : "
-    , select [onChange (\e -> d (ChangePageSize $ string2PageSize $ (unsafeCoerce e).target.value))] $ map (optps ps) aryPS
-    ]
-
-textDescription :: Int -> PageSizes -> Int -> ReactElement
-textDescription currPage pageSize totalRecords
-  =  div [className "row1"]
-          [ div [className ""]
-                [ text $ "Showing " <> show start <> " to " <> show end <> " of " <> show totalRecords ]
-          ]
-    where
-      start = (currPage - 1) * pageSizes2Int pageSize + 1
-      end' = currPage * pageSizes2Int pageSize
-      end  = if end' > totalRecords then totalRecords else end'
-
-pagination :: ChangePageAction -> Int -> Int -> ReactElement
-pagination changePage tp cp
-  = span [] $
-    [ text "Pages: ", prev, first, ldots]
-    <>
-    lnums
-    <>
-    [b' [text $ " " <> show cp <> " "]]
-    <>
-    rnums
-    <>
-    [ rdots, last, next ]
-    where
-      prev = if cp == 1 then
-               text " Previous "
-               else
-               span []
-               [ text " "
-               , a [ href "javascript:void()"
-                   , onClick (\e -> changePage $ cp - 1)
-                   ] [text "Previous"]
-               , text " "
-               ]
-      next = if cp == tp then
-               text " Next "
-               else
-               span []
-               [ text " "
-               , a [ href "javascript:void()"
-                   , onClick (\e -> changePage $ cp + 1)
-                   ] [text "Next"]
-               , text " "
-               ]
-      first = if cp == 1 then
-                text ""
-                else
-                span []
-                [ text " "
-                , a [ href "javascript:void()"
-                    , onClick (\e -> changePage 1)
-                    ] [text "1"]
-                , text " "
-                ]
-      last = if cp == tp then
-               text ""
-             else
-               span []
-               [ text " "
-               , a [ href "javascript:void()"
-                   , onClick (\e -> changePage tp)
-                   ] [text $ show tp]
-               , text " "
-               ]
-      ldots = if cp >= 5 then
-                text " ... "
-                else
-                text ""
-      rdots = if cp + 3 < tp then
-                text " ... "
-                else
-                text ""
-      lnums = map (\i -> fnmid changePage i) $ filter (1  < _) [cp - 2, cp - 1]
-      rnums = map (\i -> fnmid changePage i) $ filter (tp > _) [cp + 1, cp + 2]
-
-fnmid :: ChangePageAction -> Int -> ReactElement
-fnmid changePage i
-  = span []
-    [ text " "
-    , a [ href "javascript:void()"
-        , onClick (\e -> changePage i)
-        ] [text $ show i]
-    , text " "
-    ]
-
-data PageSizes = PS10 | PS20 | PS50 | PS100
-
-derive instance eqPageSizes :: Eq PageSizes
-
-instance showPageSize :: Show PageSizes where
-  show PS10  = "10"
-  show PS20  = "20"
-  show PS50  = "50"
-  show PS100 = "100"
-
-pageSizes2Int :: PageSizes -> Int
-pageSizes2Int PS10  = 10
-pageSizes2Int PS20  = 20
-pageSizes2Int PS50  = 50
-pageSizes2Int PS100 = 100
-
-aryPS :: Array PageSizes
-aryPS = [PS10, PS20, PS50, PS100]
-
-string2PageSize :: String -> PageSizes
-string2PageSize "10" = PS10
-string2PageSize "20" = PS20
-string2PageSize "50" = PS50
-string2PageSize "100" = PS100
-string2PageSize _    = PS10
-
-optps :: PageSizes -> PageSizes -> ReactElement
-optps cv val = option [ selected (cv == val), value $ show val ] [text $ show val]
diff --git a/src/Gargantext/Components/Tree.purs b/src/Gargantext/Components/Tree.purs
index 12b1d86148ad18aa9630afa3365ed141bea6365d..f8bd86f443811ae4c6ba73006723210b5752da05 100644
--- a/src/Gargantext/Components/Tree.purs
+++ b/src/Gargantext/Components/Tree.purs
@@ -1,22 +1,29 @@
 module Gargantext.Components.Tree where
 
+import Prelude hiding (div)
+
+import Affjax (defaultRequest, printResponseFormatError, request)
+import Affjax.RequestBody (RequestBody(..))
+import Affjax.ResponseFormat as ResponseFormat
 import Control.Monad.Cont.Trans (lift)
-import Data.Argonaut (class DecodeJson, class EncodeJson, decodeJson, jsonEmptyObject, (.?), (:=), (~>))
+import Data.Argonaut (class DecodeJson, class EncodeJson, Json, decodeJson, encodeJson, jsonEmptyObject, (.?), (:=), (~>))
+import Data.Argonaut.Core (Json)
+import Data.Either (Either(..))
+import Data.HTTP.Method (Method(..))
+import Data.Maybe (Maybe(..))
 import Data.Newtype (class Newtype)
-import Data.Traversable (traverse)
 import Effect (Effect)
 import Effect.Aff (Aff)
+import Effect.Class (liftEffect)
+import Effect.Console (log)
 import Prelude (identity)
 import React (ReactElement)
-import React.DOM (a, button, div, h5, i, input, li, text, ul)
+import Gargantext.Config (NodeType(..), readNodeType, toUrl, readNodeType, End(..), ApiVersion, defaultRoot)
+import React.DOM (a, button, div, h5, i, input, li, span, text, ul)
 import React.DOM.Props (Props, _type, className, href, onClick, onInput, placeholder, style, value)
-import Thermite (PerformAction, Render, Spec, modifyState, simpleSpec)
+import Thermite (PerformAction, Render, Spec, cotransform, modifyState, simpleSpec)
 import Unsafe.Coerce (unsafeCoerce)
 
-import Gargantext.Prelude
-import Gargantext.Config.REST (get, put, post, delete)
-import Gargantext.Config (NodeType(..), toUrl, End(..), defaultRoot)
-
 type Name = String
 type Open = Boolean
 type URL  = String
@@ -30,7 +37,7 @@ data Action =  ShowPopOver
               | ToggleFolder ID
               | RenameNode  String
               | Submit
-            -- | Initialize
+            --| Initialize
 
 type State = FTree
 
@@ -43,6 +50,33 @@ initialState = NTree (LNode { id : 3
                             , renameNodeValue : ""
                           }) []
 
+performAction :: PerformAction State {} Action
+performAction (ToggleFolder i) _ _ =
+  void $ cotransform (\td -> toggleNode i td)
+
+
+
+performAction ShowPopOver _ _ = void $
+ modifyState $ \(NTree (LNode lnode) ary) -> NTree (LNode $ lnode { popOver = true }) ary
+
+
+performAction Submit _  s@(NTree (LNode {id, name, nodeType, open, popOver, renameNodeValue}) ary)  = void $ do
+  s' <- lift $ renameNode  id  $ RenameValue { name : getRenameNodeValue s}
+  case s' of
+    Left err -> modifyState identity
+    Right d -> modifyState identity
+
+
+performAction (RenameNode  r) _ _ = void $
+ modifyState $ \(NTree (LNode lnode) ary) -> NTree (LNode $ lnode { renameNodeValue  = r }) ary
+
+
+-- performAction Initialize _ _ = void $ do
+--  s <- lift $ loadDefaultNode
+--  case s of
+--    Left err -> modifyState identity
+--    Right d -> modifyState (\state -> d)
+
 
 toggleNode :: Int -> NTree LNode -> NTree LNode
 toggleNode sid (NTree (LNode {id, name, nodeType, open, popOver, renameNodeValue}) ary) =
@@ -77,7 +111,7 @@ exampleTree = NTree (LNode { id : 1
 
 -- corpus :: Int -> String -> NTree (Tuple String String)
 -- corpus n name = NTree (LNode {id : n, name, nodeType : "", open : false})
---     [ NTree (Tuple "Tabs"    "#/corpus") []
+--     [ NTree (Tuple "Facets"    "#/corpus") []
 --     , NTree (Tuple "Dashboard" "#/dashboard") []
 --     , NTree (Tuple "Graph"     "#/graphExplorer") []
 --     ]
@@ -116,22 +150,6 @@ nodeOptionsRename d activated =  case activated of
 treeview :: Spec State {} Action
 treeview = simpleSpec performAction render
   where
-    performAction :: PerformAction State {} Action
-    performAction (ToggleFolder i) _ _ =
-      void $ modifyState (\td -> toggleNode i td)
-    performAction ShowPopOver _ _ = void $
-      modifyState $ \(NTree (LNode lnode) ary) -> NTree (LNode $ lnode { popOver = true }) ary
-    performAction Submit _  s@(NTree (LNode {id, name, nodeType, open, popOver, renameNodeValue}) ary)  = void $ do
-      d <- lift $ renameNode  id  $ RenameValue { name : getRenameNodeValue s}
-      modifyState identity -- TODO why ???
-    performAction (RenameNode  r) _ _ = void $
-      modifyState $ \(NTree (LNode lnode) ary) -> NTree (LNode $ lnode { renameNodeValue  = r }) ary
-    -- performAction Initialize _ _ = void $ do
-    --  s <- lift $ loadDefaultNode
-    --  case s of
-    --    Left err -> modifyState identity
-    --    Right d -> modifyState (\state -> d)
-
     render :: Render State {} Action
     render dispatch _ state _ =
       [ div [className "tree"]
@@ -200,8 +218,8 @@ toHtml d s@(NTree (LNode {id, name, nodeType, open, popOver, renameNodeValue}) [
       ( [ text (name <> "    ")
         ]
         <> nodeOptionsView false
-        <> (nodeOptionsRename  d false)
-        -- <>[ if ((popOverValue s) == true) then (renameTreeView d s ) else (renameTreeView d s)]
+        <> (nodeOptionsRename  d true)
+        <>[ if ((popOverValue s) == true) then (renameTreeView d s ) else (renameTreeView d s)]
       )
     ]
   ]
@@ -217,8 +235,8 @@ toHtml d s@(NTree (LNode {id, name, nodeType, open, popOver, renameNodeValue}) a
         map (toHtml d) ary
         else []
      <> nodeOptionsView false
-     <> (nodeOptionsRename  d false)
-     -- <>[ if ((popOverValue s) == true) then (renameTreeView d s ) else (renameTreeView d s)]
+     <> (nodeOptionsRename  d true)
+     <>[ if ((popOverValue s) == true) then (renameTreeView d s ) else (renameTreeView d s)]
     )
   ]
 
@@ -261,8 +279,24 @@ instance decodeJsonFTree :: DecodeJson (NTree LNode) where
     nodes' <- decodeJson nodes
     pure $ NTree node' nodes'
 
-loadDefaultNode :: Aff (NTree LNode)
-loadDefaultNode = get $ toUrl Back Tree defaultRoot
+loadDefaultNode :: Aff (Either String (NTree LNode))
+loadDefaultNode = do
+  res <- request $ defaultRequest
+         { url = toUrl Back Tree defaultRoot
+         , responseFormat = ResponseFormat.json
+         , method = Left GET
+         , headers = []
+         }
+  case res.body of
+    Left err -> do
+      _ <- liftEffect $ log $ printResponseFormatError err
+      pure $ Left $ printResponseFormatError err
+    Right json -> do
+      --_ <- liftEffect $ log $ show a.status
+      --_ <- liftEffect $ log $ show a.headers
+      --_ <- liftEffect $ log $ show a.body
+      let obj = decodeJson json
+      pure obj
 
 ----- TREE CRUD Operations
 
@@ -277,25 +311,96 @@ instance encodeJsonRenameValue :: EncodeJson RenameValue where
     ~> jsonEmptyObject
 
 
-renameNode :: Int -> RenameValue -> Aff Int     --- need to change return type herre
-renameNode renameNodeId reqbody =
-  put ("http://localhost:8008/api/v1.0/node/" <> show renameNodeId <> "/rename")
-      reqbody
-
-deleteNode :: Int -> Aff Int
-deleteNode = delete <<< toUrl Back Tree
+renameNode :: Int -> RenameValue -> Aff (Either String (Int))     --- need to change return type herre
+renameNode renameNodeId reqbody = do
+  res <- request $ defaultRequest
+         { url = "http://localhost:8008/api/v1.0/node/" <> show renameNodeId  <> "/rename"
+         , responseFormat = ResponseFormat.json
+         , method = Left PUT
+         , headers = []
+         , content  = Just $ Json $ encodeJson reqbody
+         }
+  case res.body of
+    Left err -> do
+      _ <- liftEffect $ log $ printResponseFormatError err
+      pure $ Left $ printResponseFormatError err
+    Right json -> do
+      --_ <- liftEffect $ log $ show a.status
+      --_ <- liftEffect $ log $ show a.headers
+      --_ <- liftEffect $ log $ show a.body
+      let obj = decodeJson json
+      pure obj
+
+
+
+deleteNode :: Aff (Either String (Int))
+deleteNode = do
+  res <- request $ defaultRequest
+         { url = toUrl Back Tree 1
+         , responseFormat = ResponseFormat.json
+         , method = Left DELETE
+         , headers = []
+         }
+
+  case res.body of
+    Left err -> do
+      _ <- liftEffect $ log $ printResponseFormatError err
+      pure $ Left $ printResponseFormatError err
+    Right json -> do
+      --_ <- liftEffect $ log $ show a.status
+      --_ <- liftEffect $ log $ show a.headers
+      --_ <- liftEffect $ log $ show a.body
+      let obj = decodeJson json
+      pure obj
+
+
+
+deleteNodes :: String -> Aff (Either String  Int)
+deleteNodes reqbody = do
+  res <- request $ defaultRequest
+         { url = toUrl Back Tree 1
+         , responseFormat = ResponseFormat.json
+         , method = Left DELETE
+         , headers = []
+         , content = Just $ Json $ encodeJson reqbody
+         }
+  case res.body of
+    Left err -> do
+      _ <- liftEffect $ log $ printResponseFormatError err
+      pure $ Left $ printResponseFormatError err
+    Right json -> do
+      --_ <- liftEffect $ log $ show a.status
+      --_ <- liftEffect $ log $ show a.headers
+      --_ <- liftEffect $ log $ show a.body
+      let obj = decodeJson json
+      pure  obj
+
+
+createNode :: String -> Aff (Either String (Int))
+createNode  reqbody= do
+  res <- request $ defaultRequest
+         { url = toUrl Back Tree 1
+         , responseFormat = ResponseFormat.json
+         , method = Left POST
+         , headers = []
+         , content = Just $ Json $ encodeJson reqbody
+         }
+  case res.body of
+    Left err -> do
+      _ <- liftEffect $ log $ printResponseFormatError err
+      pure $ Left $ printResponseFormatError err
+    Right json -> do
+      --_ <- liftEffect $ log $ show a.status
+      --_ <- liftEffect $ log $ show a.headers
+      --_ <- liftEffect $ log $ show a.body
+      let obj = decodeJson json
+      pure obj
 
--- See https://stackoverflow.com/questions/21863326/delete-multiple-records-using-rest
--- As of now I would recommend simply issuing many requests.
--- In a second time implement a set of end points for batch edition.
-deleteNodes :: Array Int -> Aff (Array Int)
-deleteNodes = traverse deleteNode
 
-createNode :: String -> Aff Int
-createNode reqbody = post (toUrl Back Tree 1) reqbody
 
 fnTransform :: LNode -> FTree
 fnTransform n = NTree n []
 
+
 unsafeEventValue :: forall event. event -> String
 unsafeEventValue e = (unsafeCoerce e).target.value
diff --git a/src/Gargantext/Config.purs b/src/Gargantext/Config.purs
index c9b0eff8350a01b84aca3d1204014f3b58ddb951..e397b856fa2c7f6f417f56f4efe27407578c7aba 100644
--- a/src/Gargantext/Config.purs
+++ b/src/Gargantext/Config.purs
@@ -94,11 +94,11 @@ baseUrl :: Config -> UrlBase
 baseUrl conf = conf.proto <> conf.domain <> ":" <> show conf.port
 ------------------------------------------------------------
 endPathUrl :: End -> EndConfig -> NodeType -> Id -> UrlPath
-endPathUrl Back  c nt i = pathUrl c.back  nt i
+endPathUrl Back  c nt i = pathUrl c.back nt i
 endPathUrl Front c nt i = pathUrl c.front nt i
 
 pathUrl :: Config -> NodeType -> Id -> UrlPath
-pathUrl c nt@(Tab _ _ _) i = pathUrl c Node i <> "/" <> show nt
+pathUrl c Children i = pathUrl c Node i <> "/" <> show Children
 pathUrl c nt i = c.prePath <> urlConfig nt <> "/" <> show i
 ------------------------------------------------------------
 toUrl :: End -> NodeType -> Id -> Url
@@ -110,11 +110,10 @@ toUrl e nt i = doUrl base path params
 ------------------------------------------------------------
 data NodeType = NodeUser
               | Annuaire
-              | Tab TabType Offset Limit
+              | Children
               | Corpus
-              | CorpusV3
               | Dashboard
-              | Url_Document
+              | Document
               | Error
               | Folder
               | Graph
@@ -123,34 +122,19 @@ data NodeType = NodeUser
               | Tree
 data End = Back | Front
 type Id  = Int
-
-type Limit  = Int
-type Offset = Int
-
 ------------------------------------------------------------
 data ApiVersion = V10 | V11
 instance showApiVersion :: Show ApiVersion where
   show V10 = "v1.0"
   show V11 = "v1.1"
 ------------------------------------------------------------
-
-data TabType = TabDocs | TabTerms | TabSources | TabAuthors | TabTrash
-
-instance showTabType :: Show TabType where
-  show TabDocs    = "Docs"
-  show TabTerms   = "Terms"
-  show TabSources = "Sources"
-  show TabAuthors = "Authors"
-  show TabTrash   = "Trash"
-
 ------------------------------------------------------------
 urlConfig :: NodeType -> Url
 urlConfig Annuaire  = show Annuaire
-urlConfig nt@(Tab _ _ _) = show nt
+urlConfig Children  = show Children
 urlConfig Corpus    = show Corpus
-urlConfig CorpusV3  = show CorpusV3
 urlConfig Dashboard = show Dashboard
-urlConfig Url_Document  = show Url_Document
+urlConfig Document  = show Document
 urlConfig Error     = show Error
 urlConfig Folder    = show Folder
 urlConfig Graph     = show Graph
@@ -161,10 +145,10 @@ urlConfig Tree      = show Tree
 ------------------------------------------------------------
 instance showNodeType :: Show NodeType where
   show Annuaire  = "annuaire"
+  show Children  = "children"
   show Corpus    = "corpus"
-  show CorpusV3  = "corpus"
   show Dashboard = "dashboard"
-  show Url_Document  = "document"
+  show Document  = "document"
   show Error     = "ErrorNodeType"
   show Folder    = "folder"
   show Graph     = "graph"
@@ -172,21 +156,19 @@ instance showNodeType :: Show NodeType where
   show Node      = "node"
   show NodeUser  = "user"
   show Tree      = "tree"
-  show (Tab t o l) = "table?view=" <> show t <> "&offset=" <> show o <> "&limit=" <> show l <> "&order=DateAsc"
 
 -- | TODO : where is the Read Class ?
 -- instance readNodeType :: Read NodeType where
 readNodeType :: String -> NodeType
-readNodeType "NodeAnnuaire"   = Annuaire
-readNodeType "Tab"   = (Tab TabDocs 0 0)
-readNodeType "NodeDashboard"  = Dashboard
-readNodeType "Document"   = Url_Document
-readNodeType "NodeFolder"     = Folder
-readNodeType "NodeGraph"      = Graph
+readNodeType "Annuaire"   = Annuaire
+readNodeType "Children"   = Children
+readNodeType "Dashboard"  = Dashboard
+readNodeType "Document"   = Document
+readNodeType "Folder"     = Folder
+readNodeType "Graph"      = Graph
 readNodeType "Individu"   = Individu
 readNodeType "Node"       = Node
 readNodeType "NodeCorpus" = Corpus
-readNodeType "NodeCorpusV3" = CorpusV3
 readNodeType "NodeUser"   = NodeUser
 readNodeType "Tree"       = Tree
 readNodeType _            = Error
diff --git a/src/Gargantext/Config/REST.purs b/src/Gargantext/Config/REST.purs
index ce51276f860f3211b85430d9ebf6ff86d2322568..d0c324a007d1e97d26277004e12e430900ea226d 100644
--- a/src/Gargantext/Config/REST.purs
+++ b/src/Gargantext/Config/REST.purs
@@ -1,55 +1,31 @@
 module Gargantext.Config.REST where
 
+import Prelude
+
 import Affjax (defaultRequest, printResponseFormatError, request)
-import Affjax.RequestBody (RequestBody(..))
 import Affjax.RequestHeader (RequestHeader(..))
 import Affjax.ResponseFormat as ResponseFormat
-import Data.Argonaut (class DecodeJson, decodeJson, class EncodeJson, encodeJson)
+import Data.Argonaut (class DecodeJson, decodeJson)
 import Data.Either (Either(..))
 import Data.HTTP.Method (Method(..))
-import Data.Maybe (Maybe(..))
 import Data.MediaType.Common (applicationJSON)
-import Effect.Aff (Aff, throwError)
-import Effect.Exception (error)
-
-import Gargantext.Prelude
-
-send :: forall a b. EncodeJson a => DecodeJson b =>
-        Method -> String -> Maybe a -> Aff b
-send m url reqbody = do
-  affResp <- request $ defaultRequest
-         { url = url
-         , responseFormat = ResponseFormat.json
-         , method = Left m
-         , headers =  [ ContentType applicationJSON
-                      , Accept applicationJSON
-                        --   , RequestHeader "Authorization" $  "Bearer " <> token
-                      ]
-         , content  = (Json <<< encodeJson) <$> reqbody
-         }
+import Effect.Aff (Aff)
+
+get :: forall t31. DecodeJson t31 => String ->
+                      Aff (Either String t31)
+get url = do
+  affResp <- request defaultRequest
+    { method  = Left GET
+    , url     = url
+    , responseFormat = ResponseFormat.json
+    , headers =  [ ContentType applicationJSON
+                 , Accept applicationJSON
+                   --   , RequestHeader "Authorization" $  "Bearer " <> token
+                 ]
+    }
   case affResp.body of
     Left err -> do
-      _ <-  logs $ printResponseFormatError err
-      throwError $ error $ printResponseFormatError err
-    Right json -> do
-      --_ <-  logs $ show json.status
-      --_ <-  logs $ show json.headers
-      --_ <-  logs $ show json.body
-      case decodeJson json of
-        Left err -> throwError $ error $ "decodeJson affResp.body: " <> err
-        Right b -> pure b
-
-noReqBody :: Maybe Unit
-noReqBody = Nothing
-
-get :: forall a. DecodeJson a => String -> Aff a
-get url = send GET url noReqBody
-
-put :: forall a b. EncodeJson a => DecodeJson b => String -> a -> Aff b
-put url = send PUT url <<< Just
-
-delete :: forall a. DecodeJson a => String -> Aff a
-delete url = send DELETE url noReqBody
-
-post :: forall a b. EncodeJson a => DecodeJson b => String -> a -> Aff b
-post url = send POST url <<< Just
+      pure $ Left $ printResponseFormatError err
+    Right a -> do
+      let res = decodeJson a
+      pure res
diff --git a/src/Gargantext/Pages/Annuaire.purs b/src/Gargantext/Pages/Annuaire.purs
index 9340b4f8e63ec8a86cb66600396c1b6bae144fdc..293b3283638b3fbd012e046f23cd906004161b58 100644
--- a/src/Gargantext/Pages/Annuaire.purs
+++ b/src/Gargantext/Pages/Annuaire.purs
@@ -1,23 +1,29 @@
 module Gargantext.Pages.Annuaire where
 
+import Prelude
+
+import Data.Array (concat)
+import Data.Traversable (foldl)
 import Control.Monad.Trans.Class (lift)
-import Data.Lens (Lens', lens, (?~))
+import Data.Either (Either(..))
+import Data.Lens (Lens', Prism', lens, prism, (?~))
 import Data.Maybe (Maybe(..), maybe)
+import Effect.Class (liftEffect)
 import React (ReactElement)
-import React.DOM (a, b, b', br', div, h3, hr, i, input, p, table, tbody, td, text, th, thead, tr)
-import React.DOM.Props (className, href, scope, style)
-import Effect.Aff (Aff)
+import React.DOM (div, h1, h3, hr, i, p, text, thead, tbody, input, br', b, b', tr, th, table, td, a)
+import React.DOM.Props (_type, className, href, onChange, onClick, scope, selected, value, style)
 import Thermite (Render, Spec
-                , simpleSpec
+                , simpleSpec, defaultPerformAction
                 , PerformAction, modifyState)
+import Effect.Console (log)
+import Effect.Aff (Aff)
 
-------------------------------------------------------------------------------
-import Gargantext.Prelude
-import Gargantext.Config      (toUrl, NodeType(..), TabType(..), End(..))
+import Gargantext.Config      (toUrl, NodeType(..), End(..))
 import Gargantext.Config.REST (get)
-import Gargantext.Pages.Annuaire.User.Contacts.Types (Contact(..), HyperData(..))
+import Gargantext.Pages.Annuaire.User.Contacts.Types.Types (Contact(..), HyperData(..))
 import Gargantext.Utils.DecodeMaybe ((.?|))
 import Data.Argonaut (class DecodeJson, decodeJson, (.?))
+
 ------------------------------------------------------------------------------
 type State = { info  :: Maybe AnnuaireInfo
              , stable :: Maybe AnnuaireTable
@@ -74,20 +80,9 @@ toRows (AnnuaireTable a) = a.annuaireTable
 
 layoutAnnuaire :: Spec State {} Action
 layoutAnnuaire = simpleSpec performAction render
-  where
-    performAction :: PerformAction State {} Action
-    performAction (Load aId) _ _ = do
-      info' <- lift $ getInfo aId
-      void $ modifyState $ _info ?~ info'
-      table' <- lift $ getTable aId
-      logs "Feching Table"
-      void $ modifyState $ _table ?~ table'
-      logs "Annuaire page fetched."
-    performAction (ChangePageSize _) _ _ = pure unit -- TODO
-    performAction (ChangePage _)     _ _ = pure unit -- TODO
-
-    render :: Render State {} Action
-    render dispatch _ state _ = [ div [className "row"]
+
+render :: Render State {} Action
+render dispatch _ state _ = [ div [className "row"]
                      [ div [className "col-md-3"] [ h3 [] [text info.name] ]
                             , div [className "col-md-9"] [ hr [style {height : "2px",backgroundColor : "black"}] ]
                             ]
@@ -135,7 +130,7 @@ showRow :: Maybe Contact -> ReactElement
 showRow Nothing = tr [][]
 showRow (Just (Contact { id : id, hyperdata : (HyperData contact) })) =
   tr []
-  [ td [] [ a [ href (toUrl Front NodeUser id) ] [ text $ maybe' contact.nom <> " " <> maybe' contact.prenom ] ]
+  [ td [] [ a [ href (toUrl Back NodeUser id) ] [ text $ maybe' contact.nom <> " " <> maybe' contact.prenom ] ]
   , td [] [text $ maybe' contact.fonction]
   , td [] [text $ maybe' contact.service]
   , td [] [text $ maybe' contact.groupe]
@@ -180,10 +175,28 @@ instance decodeAnnuaireTable :: DecodeJson AnnuaireTable where
     rows <- decodeJson json
     pure $ AnnuaireTable { annuaireTable : rows}
 ------------------------------------------------------------------------
-getTable :: Int -> Aff AnnuaireTable
-getTable id = get $ toUrl Back (Tab TabDocs 0 10) id
+performAction :: PerformAction State {} Action
+performAction (Load aId) _ _ = do
+  eitherInfo <- lift $ getInfo aId
+  _ <- case eitherInfo of
+            (Right info') -> void $ modifyState $ _info ?~ info'
+            (Left       err)  -> do
+              liftEffect $ log err
+
+  eitherTable <- lift $ getTable aId
+  liftEffect $ log "Feching Table"
+  _ <- case eitherTable of
+            (Right table') -> void $ modifyState $ _table ?~ table'
+            (Left       err)  -> do
+              liftEffect $ log err
+  liftEffect <<< log $ "Annuaire page fetched."
+
+performAction _ _ _ = pure unit
+------------------------------------------------------------------------
+getTable :: Int -> Aff (Either String AnnuaireTable)
+getTable id = get $ toUrl Back Children id
 
-getInfo :: Int -> Aff AnnuaireInfo
+getInfo :: Int -> Aff (Either String AnnuaireInfo)
 getInfo id = get $ toUrl Back Node id
 ------------------------------------------------------------------------------
 _table :: Lens' State (Maybe AnnuaireTable)
diff --git a/src/Gargantext/Pages/Annuaire/User/Contacts/API.purs b/src/Gargantext/Pages/Annuaire/User/Contacts/API.purs
index 8e4bef1ab1996affd0e617b278931a4993c95c9a..0e26f9e7e8d08e33e5d945f92a3065cede46ec44 100644
--- a/src/Gargantext/Pages/Annuaire/User/Contacts/API.purs
+++ b/src/Gargantext/Pages/Annuaire/User/Contacts/API.purs
@@ -1,5 +1,7 @@
 module Gargantext.Pages.Annuaire.User.Contacts.API where
 
+import Prelude
+
 import Control.Monad.Trans.Class (lift)
 import Data.Either (Either(..))
 import Data.Lens ((?~))
@@ -7,19 +9,22 @@ import Data.Maybe (Maybe(..))
 import Effect.Aff (Aff)
 import Effect.Class (liftEffect)
 import Effect.Console (log)
-import Thermite (StateCoTransformer, modifyState)
 
 import Gargantext.Config (toUrl, NodeType(..), End(..))
 import Gargantext.Config.REST (get)
-import Gargantext.Prelude
 import Gargantext.Pages.Annuaire.User.Contacts.Types (Action(..), State, Contact, _contact)
 import Thermite (PerformAction, modifyState)
 
-getContact :: Int -> Aff Contact
-getContact id = get $ toUrl Back Node id
+getUser :: Int -> Aff (Either String Contact)
+getUser id = get $ toUrl Back Node id
+
 
-fetchContact :: Int -> StateCoTransformer State Unit
-fetchContact contactId = do
-  contact <- lift $ getContact contactId
-  void $ modifyState $ _contact ?~ contact
-  logs "Fetching contact..."
+performAction :: PerformAction State {} Action
+performAction (FetchContact contactId) _ _ = do
+  value <- lift $ getUser contactId
+  _ <- case value of
+    (Right contact) -> void $ modifyState $ _contact ?~ contact
+    (Left err) -> do
+      liftEffect $ log err
+  liftEffect <<< log $ "Fetching contact..."
+performAction _ _ _ = pure unit
diff --git a/src/Gargantext/Pages/Annuaire/User/Contacts/Specs.purs b/src/Gargantext/Pages/Annuaire/User/Contacts/Specs.purs
index baa0643e87968ad0719a280e9ae946f000b1fe65..1b554c885fda1ef4f3c56c1e133ca563f78968f8 100644
--- a/src/Gargantext/Pages/Annuaire/User/Contacts/Specs.purs
+++ b/src/Gargantext/Pages/Annuaire/User/Contacts/Specs.purs
@@ -1,49 +1,13 @@
 module Gargantext.Pages.Annuaire.User.Contacts.Specs
        (module Gargantext.Pages.Annuaire.User.Contacts.Specs.Renders,
-        brevetSpec,
-        projectSpec,
-        facets,
         layoutUser)
        where
 
+import Gargantext.Pages.Annuaire.User.Contacts.Specs.Renders
 
-import Data.List (fromFoldable)
-import Data.Tuple (Tuple(..))
-import Thermite (Render, PerformAction, Spec, focus, noState, defaultPerformAction, simpleSpec)
-import Gargantext.Prelude
-import Gargantext.Components.Tab as Tab
-import Gargantext.Pages.Annuaire.User.Brevets as B
-import Gargantext.Pages.Annuaire.User.Contacts.Specs.Documents as P
-import Gargantext.Pages.Annuaire.User.Contacts.Types (Action(..), State, _tablens, _tabAction)
-import Gargantext.Pages.Annuaire.User.Contacts.API (fetchContact)
-import Gargantext.Pages.Annuaire.User.Contacts.Specs.Renders (render)
+import Thermite (Spec, simpleSpec)
+import Gargantext.Pages.Annuaire.User.Contacts.Types (Action, State)
+import Gargantext.Pages.Annuaire.User.Contacts.API (performAction)
 
 layoutUser :: Spec State {} Action
 layoutUser = simpleSpec performAction render
-  where
-    performAction :: PerformAction State {} Action
-    performAction (FetchContact contactId) _ _ = fetchContact contactId
-    performAction (TabA _) _ _ = pure unit
-
-brevetSpec :: Spec State {} Action
-brevetSpec = noState B.brevetsSpec
-
-projets :: Spec {} {} Void
-projets = simpleSpec defaultPerformAction render
-  where
-    render :: Render {} {} Void
-    render dispatch _ state _ =
-      []
-
-projectSpec :: Spec State {} Action
-projectSpec = noState projets
-
-publicationSpec :: Spec State {} Action
-publicationSpec = noState P.publicationSpec
-
-facets :: Spec State {} Action
-facets = Tab.tabs _tablens _tabAction $ fromFoldable
-         [ Tuple "Publications (12)" publicationSpec
-         , Tuple "Brevets (2)" brevetSpec
-         , Tuple "Projets IMT (5)" projectSpec
-         ]
diff --git a/src/Gargantext/Pages/Annuaire/User/Contacts/Specs/Renders.purs b/src/Gargantext/Pages/Annuaire/User/Contacts/Specs/Renders.purs
index cb29a0c3b212b78f4d22ee4274ef1ffc1b3917f9..b8f766cdf4ec1dbb4b21995b5592a69dd9491afc 100644
--- a/src/Gargantext/Pages/Annuaire/User/Contacts/Specs/Renders.purs
+++ b/src/Gargantext/Pages/Annuaire/User/Contacts/Specs/Renders.purs
@@ -54,14 +54,13 @@ mapMyMap f m = toUnfoldable
 
 infixl 4 mapMyMap as <.~$>
 
-contactInfos :: HyperData -> ReactElement
+contactInfos :: Maybe HyperData -> ReactElement
 contactInfos hyperdata =
-    ul [className "list-group"] [] {- $
-    listInfo <.~$> hyperdata
+    ul [className "list-group"] $
+    listInfo <.~$> (checkMaybe hyperdata)
   where
     checkMaybe (Nothing) = empty
     checkMaybe (Just (HyperData a)) = a
--}
 
 listInfo :: Tuple String String -> ReactElement
 listInfo s = listElement $ infoRender s
diff --git a/src/Gargantext/Pages/Annuaire/User/Contacts/Types.purs b/src/Gargantext/Pages/Annuaire/User/Contacts/Types.purs
index cd50449d8c7c01359ce3475f57e22c51e14256c3..8054b0254010fc09ad756b496efd89d7760068c8 100644
--- a/src/Gargantext/Pages/Annuaire/User/Contacts/Types.purs
+++ b/src/Gargantext/Pages/Annuaire/User/Contacts/Types.purs
@@ -1,122 +1,40 @@
-module Gargantext.Pages.Annuaire.User.Contacts.Types where
+module Gargantext.Pages.Annuaire.User.Contacts.Types
+       (module Gargantext.Pages.Annuaire.User.Contacts.Types.Types,
+        module Gargantext.Pages.Annuaire.User.Contacts.Types.Lens,
+        module Gargantext.Pages.Annuaire.User.Contacts.Types.States,
+        brevetSpec,
+        projectSpec,
+        facets
+       )
+       where
 
 import Prelude
 
-import Data.Argonaut (class DecodeJson, decodeJson, (.?))
-import Data.Either (Either(..))
-import Data.Lens (Lens', Prism', lens, prism)
-import Data.Maybe (Maybe(..))
-
-import Gargantext.Components.Tab as Tab
-import Gargantext.Utils.DecodeMaybe ((.?|))
-
-newtype Contact = Contact
-  { id        :: Int
-  , typename  :: Maybe Int
-  , userId    :: Int
-  , parentId  :: Int
-  , name      :: String
-  , date      :: Maybe String
-  , hyperdata :: HyperData
-  }
-
-newtype HyperData =
-  HyperData
-  { bureau :: Maybe String
-  , atel   :: Maybe String
-  , fax    :: Maybe String
-  , aprecision :: Maybe String
-  , service    :: Maybe String
-  , service2   :: Maybe String
-  , groupe     :: Maybe String
-  , lieu       :: Maybe String
-  , pservice   :: Maybe String
-  , date_modification :: Maybe String
-  , fonction          :: Maybe String
-  , pfonction         :: Maybe String
-  , url               :: Maybe String
-  , prenom            :: Maybe String
-  , nom               :: Maybe String
-  , idutilentite      :: Maybe String
-  , afonction         :: Maybe String
-  , grprech           :: Maybe String
-  , entite            :: Maybe String
-  , entite2           :: Maybe String
-  , mail              :: Maybe String
-  }
-
-instance decodeUserHyperData :: DecodeJson HyperData where
-  decodeJson json = do
-    obj <- decodeJson json
-    bureau <- obj .?| "bureau"
-    atel   <- obj .?| "atel"
-    fax    <- obj .?| "fax"
-    aprecision <- obj .?| "aprecision"
-    service    <- obj .?| "service"
-    service2   <- obj .?| "service2"
-    groupe     <- obj .?| "groupe"
-    lieu       <- obj .?| "lieu"
-    pservice   <- obj .?| "pservice"
-    date_modification <- obj .?| "date_modification"
-    fonction          <- obj .?| "fonction"
-    pfonction         <- obj .?| "pfonction"
-    url               <- obj .?| "url"
-    prenom            <- obj .?| "prenom"
-    nom               <- obj .?| "nom"
-    idutilentite    <- obj .?| "idutilentite"
-    afonction       <- obj .?| "afonction"
-    grprech         <- obj .?| "grprech"
-    entite          <- obj .?| "entite"
-    entite2         <- obj .?| "entite2"
-    mail            <- obj .?| "mail"
-    pure $ HyperData { bureau, atel, fax
-                     , aprecision, service
-                     , service2, groupe, lieu
-                     , pservice, date_modification
-                     , fonction, pfonction, url
-                     , prenom, nom, idutilentite
-                     , afonction, grprech, entite
-                     , entite2, mail
-                     }
-
-instance decodeUser :: DecodeJson Contact where
-  decodeJson json = do
-    obj      <- decodeJson json
-    id       <- obj .? "id"
-    typename <- obj .?| "typename"
-    userId   <- obj .? "userId"
-    parentId <- obj .? "parentId"
-    name     <- obj .? "name"
-    date     <- obj .?| "date"
-    hyperdata <- obj .? "hyperdata"
-    pure $ Contact { id, typename, userId
-                   , parentId, name, date
-                   , hyperdata
-                   }
-
-data Action
-  = TabA Tab.Action
-  | FetchContact Int
-
-type State =
-  { activeTab :: Int
-  , contact :: Maybe Contact
-  }
-
-initialState :: State
-initialState =
-  { activeTab : 0
-  , contact: Nothing
-  }
-
-_contact :: Lens' State (Maybe Contact)
-_contact = lens (\s -> s.contact) (\s ss -> s{contact = ss})
-
-_tablens :: Lens' State Tab.State
-_tablens = lens (\s -> s.activeTab) (\s ss -> s {activeTab = ss})
-
-_tabAction :: Prism' Action Tab.Action
-_tabAction = prism TabA \ action ->
-  case action of
-    TabA laction -> Right laction
-    _-> Left action
+import Gargantext.Pages.Annuaire.User.Contacts.Types.Lens
+import Gargantext.Pages.Annuaire.User.Contacts.Types.Types
+import Gargantext.Pages.Annuaire.User.Contacts.Types.States
+import Gargantext.Pages.Annuaire.User.Brevets as B
+import Data.List (fromFoldable)
+import Data.Tuple (Tuple(..))
+import Gargantext.Components.Tab (tabs)
+import Thermite (Render, Spec, focus, noState, defaultPerformAction, simpleSpec)
+
+brevetSpec :: Spec State {} Action
+brevetSpec = noState B.brevetsSpec
+
+projets :: Spec {} {} Void
+projets = simpleSpec defaultPerformAction render
+  where
+    render :: Render {} {} Void
+    render dispatch _ state _ =
+      []
+
+projectSpec :: Spec State {} Action
+projectSpec = noState projets
+
+facets :: Spec State {} Action
+facets = tabs _tablens _tabAction $ fromFoldable
+         [ Tuple "Publications (12)" publicationSpec
+         , Tuple "Brevets (2)" brevetSpec
+         , Tuple "Projets IMT (5)" projectSpec
+         ]
diff --git a/src/Gargantext/Pages/Annuaire/User/Contacts/Types/Lens.purs b/src/Gargantext/Pages/Annuaire/User/Contacts/Types/Lens.purs
new file mode 100644
index 0000000000000000000000000000000000000000..deb816c282297fd565376f3a5398dd54f938aa11
--- /dev/null
+++ b/src/Gargantext/Pages/Annuaire/User/Contacts/Types/Lens.purs
@@ -0,0 +1,26 @@
+module Gargantext.Pages.Annuaire.User.Contacts.Types.Lens where
+
+import Gargantext.Pages.Annuaire.User.Brevets as B
+import Data.Either (Either(..))
+import Data.Lens (Lens', Prism', lens, prism)
+import Data.Maybe (Maybe)
+import Gargantext.Pages.Annuaire.User.Contacts.Types.States (Action(..), State)
+import Gargantext.Pages.Annuaire.User.Contacts.Types.Types (Contact)
+import Gargantext.Pages.Annuaire.User.Contacts.Specs.Documents as P
+import Gargantext.Components.Tab as Tab
+import Thermite (Spec, noState)
+
+_contact :: Lens' State (Maybe Contact)
+_contact = lens (\s -> s.contact) (\s ss -> s{contact = ss})
+
+_tablens :: Lens' State Tab.State
+_tablens = lens (\s -> s.activeTab) (\s ss -> s {activeTab = ss})
+
+_tabAction :: Prism' Action Tab.Action
+_tabAction = prism TabA \ action ->
+  case action of
+    TabA laction -> Right laction
+    _-> Left action
+
+publicationSpec :: Spec State {} Action
+publicationSpec = noState P.publicationSpec
diff --git a/src/Gargantext/Pages/Annuaire/User/Contacts/Types/States.purs b/src/Gargantext/Pages/Annuaire/User/Contacts/Types/States.purs
new file mode 100644
index 0000000000000000000000000000000000000000..26b4101a2d59c0c2326ce1e94f392284df240870
--- /dev/null
+++ b/src/Gargantext/Pages/Annuaire/User/Contacts/Types/States.purs
@@ -0,0 +1,21 @@
+module Gargantext.Pages.Annuaire.User.Contacts.Types.States  where
+
+import Data.Maybe (Maybe(..))
+import Gargantext.Pages.Annuaire.User.Contacts.Types.Types (Contact)
+import Gargantext.Pages.Annuaire.User.Contacts.Specs.Documents as P
+import Gargantext.Components.Tab as Tab
+
+data Action
+  = TabA Tab.Action
+  | FetchContact Int
+
+type State =
+  { activeTab :: Int
+  , contact :: Maybe Contact
+  }
+
+initialState :: State
+initialState =
+  { activeTab : 0
+  , contact : Nothing
+  }
diff --git a/src/Gargantext/Pages/Annuaire/User/Contacts/Types/Types.purs b/src/Gargantext/Pages/Annuaire/User/Contacts/Types/Types.purs
new file mode 100644
index 0000000000000000000000000000000000000000..4122605dcd199fc91a36b050ba476e60c38985a4
--- /dev/null
+++ b/src/Gargantext/Pages/Annuaire/User/Contacts/Types/Types.purs
@@ -0,0 +1,121 @@
+module Gargantext.Pages.Annuaire.User.Contacts.Types.Types where
+
+import Prelude
+
+import Data.Argonaut (class DecodeJson, decodeJson, (.?))
+import Data.Maybe (Maybe)
+import Gargantext.Utils.DecodeMaybe ((.?|))
+
+{-
+newtype User =
+User {
+  id :: Int,
+  ... fields for all the gargantext utilities
+  authors :: [Author]
+}
+
+newtype Author =
+Author {
+  user :: Maybe User,
+  name :: String,
+  hyperdata :: [Map String String]
+  ...
+}
+
+newtype Document =
+Document {
+  authors :: [Author],
+  ...
+}
+
+So Users have many Author and Authors have one User. This relation permit to
+retrieve all the authors of a user to create corpus with it.
+It also permit to have multiple authors name to permit to retrace document signed with a nickname.
+It will happend that we can't establish a link between an Author and a User, this is why
+the "user" field is encapsulated in a Maybe.
+
+-}
+
+newtype Contact =
+  Contact { id        :: Int
+       , typename  :: Maybe Int
+       , userId    :: Int
+       , parentId  :: Int
+       , name      :: String
+       , date      :: Maybe String
+       , hyperdata :: HyperData
+       }
+
+newtype HyperData =
+  HyperData
+  { bureau :: Maybe String
+  , atel   :: Maybe String
+  , fax    :: Maybe String
+  , aprecision :: Maybe String
+  , service    :: Maybe String
+  , service2   :: Maybe String
+  , groupe     :: Maybe String
+  , lieu       :: Maybe String
+  , pservice   :: Maybe String
+  , date_modification :: Maybe String
+  , fonction          :: Maybe String
+  , pfonction         :: Maybe String
+  , url               :: Maybe String
+  , prenom            :: Maybe String
+  , nom               :: Maybe String
+  , idutilentite      :: Maybe String
+  , afonction         :: Maybe String
+  , grprech           :: Maybe String
+  , entite            :: Maybe String
+  , entite2           :: Maybe String
+  , mail              :: Maybe String
+  }
+
+instance decodeUserHyperData :: DecodeJson HyperData where
+  decodeJson json = do
+    obj <- decodeJson json
+    bureau <- obj .?| "bureau"
+    atel   <- obj .?| "atel"
+    fax    <- obj .?| "fax"
+    aprecision <- obj .?| "aprecision"
+    service    <- obj .?| "service"
+    service2   <- obj .?| "service2"
+    groupe     <- obj .?| "groupe"
+    lieu       <- obj .?| "lieu"
+    pservice   <- obj .?| "pservice"
+    date_modification <- obj .?| "date_modification"
+    fonction          <- obj .?| "fonction"
+    pfonction         <- obj .?| "pfonction"
+    url               <- obj .?| "url"
+    prenom            <- obj .?| "prenom"
+    nom               <- obj .?| "nom"
+    idutilentite    <- obj .?| "idutilentite"
+    afonction       <- obj .?| "afonction"
+    grprech         <- obj .?| "grprech"
+    entite          <- obj .?| "entite"
+    entite2         <- obj .?| "entite2"
+    mail            <- obj .?| "mail"
+    pure $ HyperData { bureau, atel, fax
+                     , aprecision, service
+                     , service2, groupe, lieu
+                     , pservice, date_modification
+                     , fonction, pfonction, url
+                     , prenom, nom, idutilentite
+                     , afonction, grprech, entite
+                     , entite2, mail
+                     }
+
+instance decodeUser :: DecodeJson Contact where
+  decodeJson json = do
+    obj      <- decodeJson json
+    id       <- obj .? "id"
+    typename <- obj .?| "typename"
+    userId   <- obj .? "userId"
+    parentId <- obj .? "parentId"
+    name     <- obj .? "name"
+    date     <- obj .?| "date"
+    hyperdata <- obj .? "hyperdata"
+    pure $ Contact { id, typename, userId
+                , parentId, name, date
+                , hyperdata
+                }
diff --git a/src/Gargantext/Pages/Corpus.purs b/src/Gargantext/Pages/Corpus.purs
index c951d530eb3ad1bbde9281706f10cc6a91668a8b..e7b3d986fc3d4ca6374b4fb25dab7f6e652b2108 100644
--- a/src/Gargantext/Pages/Corpus.purs
+++ b/src/Gargantext/Pages/Corpus.purs
@@ -1,109 +1,120 @@
 module Gargantext.Pages.Corpus where
 
-
-import Data.Either (Either(..))
-import Data.Lens (Lens', Prism', lens, prism)
-import Data.Maybe (maybe)
-import Effect.Aff (Aff)
-import React as React
-import React (ReactClass, ReactElement)
+import Data.Maybe (Maybe(..), maybe)
+import Prelude hiding (div)
+import Data.Argonaut (class DecodeJson, decodeJson, (.?))
+import Gargantext.Components.Charts.Options.ECharts (chart)
+import Gargantext.Pages.Corpus.Doc.Facets.Dashboard (globalPublis)
+import Gargantext.Pages.Corpus.Doc.Facets as Tab
 import React.DOM (div, h3, hr, i, p, text)
 import React.DOM.Props (className, style)
-import Thermite ( Render, Spec, createClass, defaultPerformAction, focus
-                , simpleSpec, noState )
---------------------------------------------------------
-import Gargantext.Prelude
-import Gargantext.Components.Node (NodePoly(..))
-import Gargantext.Components.Loader as Loader
-import Gargantext.Components.Loader (createLoaderClass)
-import Gargantext.Config      (toUrl, NodeType(..), End(..))
-import Gargantext.Config.REST (get)
-import Gargantext.Pages.Corpus.Tabs.Types (CorpusInfo(..), corpusInfoDefault)
-import Gargantext.Pages.Corpus.Tabs.Types (Props) as Tabs
-import Gargantext.Pages.Corpus.Tabs.States (State, initialState) as Tabs
-import Gargantext.Pages.Corpus.Tabs.Actions (Action) as Tabs
-import Gargantext.Pages.Corpus.Tabs.Specs (statefulTabs) as Tabs
+import Thermite (Render, Spec, defaultPerformAction, simpleSpec)
+
 -------------------------------------------------------------------
-type Props = Tabs.Props
 
-type State = { tabsView    :: Tabs.State
+type State = { info    :: Maybe CorpusInfo
              }
 
 initialState :: State
-initialState = { tabsView    : Tabs.initialState
-               }
+initialState = { info : Nothing }
 
-------------------------------------------------------------------------
-_tabsView :: forall a b. Lens' { tabsView :: a | b } a
-_tabsView = lens (\s -> s.tabsView) (\s ss -> s{tabsView = ss})
-------------------------------------------------------------------------
+data Action = Load Int
 
-data Action
-  = TabsA   Tabs.Action
+newtype Node a = Node { id       :: Int
+                      , typename :: Int
+                      , userId   :: Int
+                      , parentId  :: Int
+                      , name      :: String
+                      , date      :: String
+                      , hyperdata :: a
+                      }
 
-_tabsAction :: Prism' Action Tabs.Action
-_tabsAction = prism TabsA \ action ->
-  case action of
-    TabsA taction -> Right taction
-    -- _-> Left action
+newtype CorpusInfo = CorpusInfo { title   :: String
+                  , desc    :: String
+                  , query   :: String
+                  , date    :: String
+                  , authors :: String
+                  , chart   :: (Maybe (Array Number))
+                  }
+
+corpusInfoDefault :: CorpusInfo
+corpusInfoDefault = CorpusInfo
+                    { title : "Global Publications"
+                    , desc  : " Hal Database"
+                    , query : " Query: all publications"
+                    , date  : " June. 26 2018, 10:59 am"
+                    , authors : " Author(s): first.last name"
+                    , chart   : Nothing
+                    }
+
+instance decodeCorpusInfo :: DecodeJson CorpusInfo where
+  decodeJson json = do
+    obj <- decodeJson json
+    title <- obj .? "title"
+    desc  <- obj .? "desc"
+    query <- obj .? "query"
+    date  <- obj .? "date"
+    authors <- obj .? "authors"
+    chart   <- obj .? "chart"
+    pure $ CorpusInfo {title, desc, query, date, authors, chart}
 
-------------------------------------------------------------------------
-layout :: Spec {} {nodeId :: Int} Void
-layout = simpleSpec defaultPerformAction render
-  where
-    render :: Render {} {nodeId :: Int} Void
-    render _ {nodeId} _ _ =
-      [ corpusLoader { path: nodeId
-                     , component: createClass "Layout" layout' initialState
-                     } ]
 
-layout' :: Spec State Props Action
-layout' = noState corpusHeaderSpec
-       <> focus _tabsView _tabsAction Tabs.statefulTabs
+instance decodeNode :: (DecodeJson a) => DecodeJson (Node a) where
+  decodeJson json = do
+    obj <- decodeJson json
+    id        <- obj .? "id"
+    typename  <- obj .? "typename"
+    userId    <- obj .? "userId"
+    parentId  <- obj .? "parentId"
+    name      <- obj .? "name"
+    date      <- obj .? "date"
+    
+    hyperdata  <- obj .? "hyperdata"
+    hyperdata' <- decodeJson hyperdata
+    
+    pure $ Node  { id : id
+                 , typename : typename
+                 , userId   : userId
+                 , parentId : parentId
+                 , name     : name
+                 , date     : date
+                 , hyperdata: hyperdata'
+                 }
 
-corpusHeaderSpec :: Spec {} Props Void
-corpusHeaderSpec = simpleSpec defaultPerformAction render
+
+layout :: Spec State {} Action
+layout = corpusSpec -- <> Tab.pureTab1
+
+corpusSpec :: Spec State {} Action
+corpusSpec = simpleSpec defaultPerformAction render
   where
-    render :: Render {} Props Void
-    render dispatch {loaded} _ _ =
+    render :: Render State {} Action
+    render dispatch _ state _ =
         [ div [className "row"]
-          [ div [className "col-md-3"] [ h3 [] [text "Corpus " <> text title] ]
+          [ div [className "col-md-3"] [ h3 [] [text corpus.title] ]
           , div [className "col-md-9"] [ hr [style {height : "2px",backgroundColor : "black"}] ]
           ]
         , div [className "row"] [ div [className "jumbotron1", style {padding : "12px 0px 20px 12px"}]
               [ div [ className "col-md-8 content"]
                     [ p [] [ i [className "fa fa-globe"] []
-                           , text $ " " <> corpus.desc
+                           , text corpus.desc
                            ]
                     , p [] [ i [className "fab fa-searchengin"] []
-                           , text $ " " <> corpus.query
+                           , text corpus.query
                            ]
                     ]
               , div [ className "col-md-4 content"]
                     [ p [] [ i [className "fa fa-calendar"] []
-                           , text $ " " <> date'
+                           , text corpus.date
                            ]
                     , p [] [ i [className "fa fa-user"] []
-                           , text $ " " <> corpus.authors
+                           , text corpus.authors
                            ]
                     ]
               ]
           ]
+          -- , chart globalPublis TODO add chart data in state
         ]
           where
-            NodePoly { name: title
-                     , date: date'
-                     , hyperdata : CorpusInfo corpus
-                   }
-              = maybe corpusInfoDefault identity loaded
-
-------------------------------------------------------------------------
-
-getCorpus :: Int -> Aff (NodePoly CorpusInfo)
-getCorpus = get <<< toUrl Back Corpus
-
-corpusLoaderClass :: ReactClass (Loader.Props Int (NodePoly CorpusInfo))
-corpusLoaderClass = createLoaderClass "CorpusLoader" getCorpus
+            CorpusInfo corpus = maybe corpusInfoDefault identity state.info
 
-corpusLoader :: Loader.Props Int (NodePoly CorpusInfo) -> ReactElement
-corpusLoader = React.createLeafElement corpusLoaderClass
diff --git a/src/Gargantext/Pages/Corpus/Doc/Annotation.purs b/src/Gargantext/Pages/Corpus/Doc/Annotation.purs
new file mode 100644
index 0000000000000000000000000000000000000000..633db4f75298cbe2b300a1cc87000994773973f0
--- /dev/null
+++ b/src/Gargantext/Pages/Corpus/Doc/Annotation.purs
@@ -0,0 +1,135 @@
+module Gargantext.Pages.Corpus.Doc.Annotation where
+
+import Prelude hiding (div)
+import React (ReactElement)
+import React.DOM (a, button, div, h4, h6, input, li, nav, option, p, select, span, text, ul)
+import React.DOM.Props (_data, _id, _type, aria, className, href, name, onChange, onInput, placeholder, role, style, value)
+import Thermite (PerformAction, Render, Spec, modifyState, simpleSpec)
+import Unsafe.Coerce (unsafeCoerce)
+
+
+type State =
+  {
+    inputValue :: String
+  }
+
+initialState :: State
+initialState =
+  {
+    inputValue : ""
+  }
+
+
+data Action
+  = ChangeString String
+  | ChangeAnotherString String
+  | SetInput String
+
+
+performAction :: PerformAction State {} Action
+performAction (ChangeString ps) _ _ = pure unit
+
+performAction (ChangeAnotherString ps) _ _ = pure unit
+
+performAction (SetInput ps) _ _ = void do
+  modifyState $ _ { inputValue = ps }
+
+
+
+docview :: Spec State {} Action
+docview = simpleSpec performAction render
+  where
+    render :: Render State {} Action
+    render dispatch _ state _ =
+      [
+          div [className "container1"]
+          [
+            div [className "row"]
+            [
+              div [className "col-md-4", style {border : "1px solid black", padding : "34px"}]
+              [
+                div [className "row"]
+                [
+                  div [className "col-md-12 input-group mb-3"] [select [className "form-control custom-select",onChange (\e -> dispatch (ChangeString $ (unsafeCoerce e).target.value)) ] $ map optps aryPS ]
+                , div [className "col-md-12 form-control input-group mb-3"] [ select [className "form-control custom-select",onChange (\e -> dispatch (ChangeAnotherString $ (unsafeCoerce e).target.value)) ] $ map optps aryPS1 ]
+                ]
+              , div [className "row", style { marginTop : "35px"}]
+                [
+                  nav [ ]
+                  [ div [className "nav nav-tabs", _id "nav-tab",role "tablist"]
+                    [ a [className "nav-item nav-link active",_id "nav-home-tab"   ,  _data {toggle : "tab"},href "#nav-home"   ,role "tab",aria {controls : "nav-home"}   ,aria {selected:true}] [ text "STOPLIST"]
+                    , a [className "nav-item nav-link"       ,_id "nav-profile-tab",  _data {toggle : "tab"},href "#nav-profile",role "tab",aria {controls : "nav-profile"},aria {selected:true}] [ text "MAINLIST"]
+                    , a [className "nav-item nav-link"       ,_id "nav-contact-tab",  _data {toggle : "tab"},href "#nav-contact",role "tab",aria {controls : "nav-contact"},aria {selected:true}] [ text "MAPLIST"]
+
+                    ]
+                  ]
+                , div [className "tab-content" , _id "nav-tabContent"]
+                  [
+                    div [ className "tab-pane fade show active"
+                        , role "tabpanel"
+                        , aria {labelledby : "nav-home-tab"}
+                        , _id "nav-home"
+                        ]
+                    [
+                      h6 [] [text "Add a free term to STOPLIST"]
+                    ,  div [className "form-group"]
+                       [ input [className "form-control", _id "id_password", name "password", placeholder "Any text", _type "value",value state.inputValue,onInput \e -> dispatch (SetInput (unsafeEventValue e))]
+                       , div [className "clearfix"] []
+                       ]
+                    , button [className "btn btn-primary", _type "button"] [text "Create and Add"]
+                    ]
+
+                  , div [ className "tab-pane fade show"
+                        , role "tabpanel"
+                        , aria {labelledby : "nav-profile-tab"}
+                        , _id "nav-profile"
+                        ]
+                    [ ]
+                  , div [ className "tab-pane fade show"
+                        , role "tabpanel"
+                        , aria {labelledby : "nav-contact-tab"}
+                        , _id "nav-contact"
+                        ]
+                    [ ]
+                  ]
+                ]
+              ]
+            , div [className "col-md-8"]
+              [ h4 [] [text "Ultrasonic sensors in urban traffic driving-aid systems"]
+              , ul [className "list-group"]
+                [ li [className "list-group-item justify-content-between"]
+                  [  span [] [text "Sensors (Basel, switzerland)"]
+                  , span [className "badge badge-default badge-pill"] [text "source"]
+                  ]
+                , li [className "list-group-item justify-content-between"]
+                  [  a [href "http://localhost:2015/#/userPage"] [text "Luciano Alonso, Vicente Milanes, Carlos Torre-Ferarro, Jorge Godoy, Juan P oria, Teresa de pedro"]
+                  , span [className "badge badge-default badge-pill"] [text "authors"]
+                  ]
+
+                , li [className "list-group-item justify-content-between"]
+                  [  span [] [text "2011-01-11 0.00"]
+                  , span [className "badge badge-default badge-pill"] [text "date"]
+                  ]
+                ]
+              , span [className "badge badge-default badge-pill"] [text "abstract"]
+              , p [] [text "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like)."]
+              , div [className "jumbotron"]
+                [ p [] [text "Empty Full Text"]
+                ]
+              ]
+            ]
+          ]
+      ]
+
+aryPS :: Array String
+aryPS = ["STOPLIST", "MAINLIST", "MAPLIST"]
+
+aryPS1 :: Array String
+aryPS1 = ["Nothing Selected","STOPLIST", "MAINLIST", "MAPLIST"]
+
+
+optps :: String -> ReactElement
+optps val = option [ value  val ] [text  val]
+
+unsafeEventValue :: forall event. event -> String
+unsafeEventValue e = (unsafeCoerce e).target.value
diff --git a/src/Gargantext/Pages/Corpus/Doc/Facets.purs b/src/Gargantext/Pages/Corpus/Doc/Facets.purs
new file mode 100644
index 0000000000000000000000000000000000000000..6fe18e525867abbf698592142668a2d95c75d3b6
--- /dev/null
+++ b/src/Gargantext/Pages/Corpus/Doc/Facets.purs
@@ -0,0 +1,10 @@
+module Gargantext.Pages.Corpus.Doc.Facets
+  ( module Gargantext.Pages.Corpus.Doc.Facets.States
+  , module Gargantext.Pages.Corpus.Doc.Facets.Actions
+  , module Gargantext.Pages.Corpus.Doc.Facets.Specs
+  ) where
+
+import Gargantext.Pages.Corpus.Doc.Facets.States
+import Gargantext.Pages.Corpus.Doc.Facets.Actions
+import Gargantext.Pages.Corpus.Doc.Facets.Specs
+
diff --git a/src/Gargantext/Pages/Corpus/Tabs/Actions.purs b/src/Gargantext/Pages/Corpus/Doc/Facets/Actions.purs
similarity index 78%
rename from src/Gargantext/Pages/Corpus/Tabs/Actions.purs
rename to src/Gargantext/Pages/Corpus/Doc/Facets/Actions.purs
index 10f7dce789bccf6510aed1afc3990ff5e6b638c3..c3ededf9a7e4fe0a11926ea7804647e5efeabaaa 100644
--- a/src/Gargantext/Pages/Corpus/Tabs/Actions.purs
+++ b/src/Gargantext/Pages/Corpus/Doc/Facets/Actions.purs
@@ -1,13 +1,13 @@
-module Gargantext.Pages.Corpus.Tabs.Actions where
+module Gargantext.Pages.Corpus.Doc.Facets.Actions where
 
 
 import Data.Lens (Prism', prism)
 import Data.Either (Either(..))
 
-import Gargantext.Pages.Corpus.Tabs.Documents as DV
-import Gargantext.Pages.Corpus.Tabs.Sources as SV
-import Gargantext.Pages.Corpus.Tabs.Authors as AV
-import Gargantext.Pages.Corpus.Tabs.Terms as TV
+import Gargantext.Pages.Corpus.Doc.Facets.Documents as DV
+import Gargantext.Pages.Corpus.Doc.Facets.Sources as SV
+import Gargantext.Pages.Corpus.Doc.Facets.Authors as AV
+import Gargantext.Pages.Corpus.Doc.Facets.Terms as TV
 import Gargantext.Components.Tab as Tab
 
 data Action
@@ -46,3 +46,6 @@ _tabAction = prism TabViewA \ action ->
   case action of
     TabViewA laction -> Right laction
     _-> Left action
+
+
+
diff --git a/src/Gargantext/Pages/Corpus/Tabs/Authors.purs b/src/Gargantext/Pages/Corpus/Doc/Facets/Authors.purs
similarity index 55%
rename from src/Gargantext/Pages/Corpus/Tabs/Authors.purs
rename to src/Gargantext/Pages/Corpus/Doc/Facets/Authors.purs
index 653ff7ad8e867c26e352af6bd8260fa3717d218e..b11478eee7478ff80789adfeb249198e09198a6f 100644
--- a/src/Gargantext/Pages/Corpus/Tabs/Authors.purs
+++ b/src/Gargantext/Pages/Corpus/Doc/Facets/Authors.purs
@@ -1,16 +1,18 @@
-module Gargantext.Pages.Corpus.Tabs.Authors where
+module Gargantext.Pages.Corpus.Doc.Facets.Authors where
 
 
+import Data.Array (fold)
+import Gargantext.Pages.Corpus.Doc.Facets.Documents as D
 import Prelude hiding (div)
 import React.DOM (h3, text)
 import Thermite (PerformAction, Render, Spec, defaultPerformAction, simpleSpec)
 
-type State = {}
+type State = D.State
 
 initialState :: State
-initialState = {}
+initialState = D.tdata
 
-type Action = Void
+type Action = D.Action
 
 authorSpec :: Spec State {} Action
 authorSpec = simpleSpec defaultPerformAction render
@@ -18,3 +20,6 @@ authorSpec = simpleSpec defaultPerformAction render
     render :: Render State {} Action
     render dispatch _ state _ =
        [ h3 [] [text "AuthorView"]]
+
+authorspec' :: Spec State {} Action
+authorspec' = fold [authorSpec, D.layoutDocview]
diff --git a/src/Gargantext/Pages/Corpus/Dashboard.purs b/src/Gargantext/Pages/Corpus/Doc/Facets/Dashboard.purs
similarity index 99%
rename from src/Gargantext/Pages/Corpus/Dashboard.purs
rename to src/Gargantext/Pages/Corpus/Doc/Facets/Dashboard.purs
index 6bda493aa04576ad45c45d15b0bf94adade16de9..865bcab71a7e6f717eaa6a8931379876dc0ceae1 100644
--- a/src/Gargantext/Pages/Corpus/Dashboard.purs
+++ b/src/Gargantext/Pages/Corpus/Doc/Facets/Dashboard.purs
@@ -1,4 +1,4 @@
-module Gargantext.Pages.Corpus.Dashboard where
+module Gargantext.Pages.Corpus.Doc.Facets.Dashboard where
 
 import Prelude hiding (div)
 
diff --git a/src/Gargantext/Pages/Corpus/Doc/Facets/Documents.purs b/src/Gargantext/Pages/Corpus/Doc/Facets/Documents.purs
new file mode 100644
index 0000000000000000000000000000000000000000..6e97437c396ce17dc769eff2c7c08c9abcc2f993
--- /dev/null
+++ b/src/Gargantext/Pages/Corpus/Doc/Facets/Documents.purs
@@ -0,0 +1,456 @@
+module Gargantext.Pages.Corpus.Doc.Facets.Documents where
+
+import Prelude hiding (div)
+
+import Affjax (defaultRequest, printResponseFormatError, request)
+import Affjax.ResponseFormat as ResponseFormat
+import Control.Monad.Cont.Trans (lift)
+import Data.Argonaut (class DecodeJson, class EncodeJson, decodeJson, jsonEmptyObject, (.?), (:=), (~>))
+import Data.Array (filter)
+import Data.Either (Either(..))
+import Data.Generic.Rep (class Generic)
+import Data.Generic.Rep.Show (genericShow)
+import Data.HTTP.Method (Method(..))
+import Data.Tuple (Tuple(..))
+import Effect (Effect)
+import Effect.Aff (Aff)
+import Effect.Class (liftEffect)
+import Effect.Console (log)
+
+import Gargantext.Config (NodeType(..), toUrl, End(..))
+import Gargantext.Config.REST (get)
+import Gargantext.Utils.DecodeMaybe ((.|))
+
+import React (ReactElement)
+import React.DOM (a, b, b', br', div, input, option, select, span, table, tbody, td, text, th, thead, tr, p)
+import React.DOM.Props (_type, className, href, onChange, onClick, scope, selected, value)
+import Thermite (PerformAction, Render, Spec, modifyState, defaultPerformAction, simpleSpec)
+import Unsafe.Coerce (unsafeCoerce)
+
+--main :: forall e. Eff (dom:: DOM, console :: CONSOLE, ajax :: AJAX | e) Unit
+--main = do
+--  case createReactSpec layoutDocview tdata of
+--    { spec, dispatcher } -> void $ do
+--      document  <- DOM.window >>= DOM.document
+--      container <- unsafePartial (fromJust  <$> DOM.querySelector (QuerySelector "#app") (DOM.htmlDocumentToParentNode document))
+--      RDOM.render (R.createFactory (R.createClass spec) {}) container
+--
+-- TODO: Pagination Details are not available from the BackEnd
+-- TODO: PageSize Change manually sets the totalPages, need to get from backend and reload the data
+-- TODO: Search is pending
+-- TODO: Fav is pending
+-- TODO: Sort is Pending
+-- TODO: Filter is Pending
+-- TODO: When a pagination link is clicked, reload data. 
+          -- Right now it doesn't make sense to reload mock data.
+
+data Action
+  = LoadData       Int
+  | ChangePageSize PageSizes
+  | ChangePage     Int
+
+type State = CorpusTableData
+
+type CorpusTableData = TableData CorpusView
+
+newtype TableData a
+  = TableData
+    { rows         :: Array { row    :: a
+                            , delete :: Boolean
+                            }
+    , totalPages   :: Int
+    , currentPage  :: Int
+    , pageSize     :: PageSizes
+    , totalRecords :: Int
+    , title        :: String
+   -- , tree         :: FTree
+    }
+
+newtype CorpusView
+  = CorpusView
+    { _id    :: Int
+    , url    :: String
+    , date   :: String
+    , title  :: String
+    , source :: String
+    , fav    :: Boolean
+    , ngramCount :: Int
+    }
+
+
+derive instance genericCorpus :: Generic CorpusView _
+
+instance showCorpus :: Show CorpusView where
+  show = genericShow
+
+
+newtype Response = Response
+  { cid        :: Int
+  , created    :: String
+  , hyperdata  :: Hyperdata
+  , favorite   :: Boolean
+  , ngramCount :: Int
+  }
+
+
+newtype Hyperdata = Hyperdata
+  { title  :: String
+  , source :: String
+  }
+
+--instance decodeHyperdata :: DecodeJson Hyperdata where
+--  decodeJson json = do
+--    obj    <- decodeJson json
+--    title  <- obj .? "title"
+--    source <- obj .? "source"
+--    pure $ Hyperdata { title,source }
+--instance decodeResponse :: DecodeJson Response where
+--  decodeJson json = do
+--    obj        <- decodeJson json
+--    cid        <- obj .? "id"
+--    created    <- obj .? "created"
+--    favorite   <- obj .? "favorite"
+--    ngramCount <- obj .? "ngramCount"
+--    hyperdata  <- obj .? "hyperdata"
+--    pure $ Response { cid, created, favorite, ngramCount, hyperdata }
+
+
+instance decodeHyperdata :: DecodeJson Hyperdata where
+  decodeJson json = do
+    obj    <- decodeJson json
+    title  <- obj .| "title"
+    source <- obj .| "source"
+    pure $ Hyperdata { title,source }
+
+instance decodeResponse :: DecodeJson Response where
+  decodeJson json = do
+    obj        <- decodeJson json
+    cid        <- obj .? "id"
+    created    <- pure "2018"
+    --created    <- obj .? "date"
+    favorite   <- pure true
+    ngramCount <- obj .? "id"
+    hyperdata  <- obj .? "hyperdata"
+    pure $ Response { cid, created, favorite, ngramCount, hyperdata }
+
+
+
+-- | Filter
+filterSpec :: Spec State {} Action
+filterSpec = simpleSpec defaultPerformAction render
+  where
+    render d p s c = [div [] [ text "    Filter "
+                     , input []
+                     ]]
+
+layoutDocview :: Spec State {} Action
+layoutDocview = simpleSpec performAction render
+  where
+    render :: Render State {} Action
+    render dispatch _ state@(TableData d) _ =
+      [ div [className "container1"]
+        [ div [className "row"]
+          [
+           div [className "col-md-12"]
+            [ p [] []
+            , div [] [ text "    Filter ", input []]
+            , br'
+            , div [className "row"]
+              [  div [className "col-md-1"] [b [] [text d.title]]
+              , div [className "col-md-2"] [sizeDD d.pageSize dispatch]
+              , div [className "col-md-3"] [textDescription d.currentPage d.pageSize d.totalRecords]
+              , div [className "col-md-3"] [pagination dispatch d.totalPages d.currentPage]
+                     ]
+            , table [ className "table"]
+              [thead  [ className "thead-dark"]
+                         [tr [] [ th [scope "col"] [ b' [text ""]    ]
+                                , th [scope "col"] [ b' [text "Date"]]
+                                , th [scope "col"] [ b' [text "Title"]   ]
+                                , th [scope "col"] [ b' [text "Delete"]  ]
+                                ]
+                         ]
+              , tbody [] $ map showRow d.rows
+              ]
+            ]
+          ]
+        ]
+      ]
+
+
+performAction :: PerformAction State {} Action
+performAction (ChangePageSize ps) _ _ = void $ modifyState $ changePageSize ps
+
+performAction (ChangePage p) _ _ = void $ modifyState \(TableData td) -> TableData $ td { currentPage = p }
+
+performAction (LoadData n) _ _ = do
+  res <- lift $ loadPage n
+  case res of
+     Left err      -> do
+       _ <- liftEffect $ log $ show err
+       _ <- liftEffect $ log $ show "Error: loading page documents"
+       pure unit
+     Right resData -> do
+       _ <- liftEffect $ log $ show "OK: loading page documents"
+       void $ modifyState $ const resData
+
+
+loadPage :: Int -> Aff (Either String CorpusTableData)
+loadPage n = do
+  res <- get $ toUrl Back Children n
+  -- TODO: offset and limit
+  -- res <- get "http://localhost:8008/corpus/472764/facet/documents/table?offset=0&limit=10"
+  case res of
+     Left err -> do
+       _ <- liftEffect $ log $ show "Err: loading page documents"
+       _ <- liftEffect $ log $ show err
+       pure $ Left $ show err
+     Right resData -> do
+       let docs = toTableData (res2corpus $ resData)
+       _ <- liftEffect $ log $ show "Ok: loading page documents"
+       _ <- liftEffect $ log $ show $ map (\({ row: r, delete :_}) -> show r) ((\(TableData docs') -> docs'.rows) docs)
+       pure $ Right docs
+      where
+        res2corpus :: Array Response -> Array CorpusView
+        res2corpus rs = map (\(Response r) ->
+          CorpusView { _id : r.cid
+          , url    : ""
+          , date   :  r.created
+          , title  : (\(Hyperdata hr) -> hr.title) r.hyperdata
+          , source : (\(Hyperdata hr) -> hr.source) r.hyperdata
+          , fav    : r.favorite
+          , ngramCount : r.ngramCount
+         }) rs
+
+
+        toTableData :: Array CorpusView -> CorpusTableData
+        toTableData ds = TableData
+                { rows         : map (\d -> { row : d , delete : false}) ds
+                , totalPages   : 474
+                , currentPage  : 1
+                , pageSize     : PS100
+                , totalRecords : 47361
+                , title        : "Documents"
+                }
+
+---------------------------------------------------------
+
+sampleData' :: CorpusView
+sampleData' = CorpusView {_id : 1, url : "", date : "date3", title : "title", source : "source", fav : false, ngramCount : 1}
+
+sampleData :: Array CorpusView
+--sampleData = replicate 10 sampleData'
+sampleData = map (\(Tuple t s) -> CorpusView {_id : 1, url : "", date : "2017", title: t, source: s, fav : false, ngramCount : 10}) sampleDocuments
+
+sampleDocuments :: Array (Tuple String String)
+sampleDocuments = [Tuple "Macroscopic dynamics of the fusion process" "Journal de Physique Lettres",Tuple "Effects of static and cyclic fatigue at high temperature upon reaction bonded silicon nitride" "Journal de Physique Colloques",Tuple "Reliability of metal/glass-ceramic junctions made by solid state bonding" "Journal de Physique Colloques",Tuple "High temperature mechanical properties and intergranular structure of sialons" "Journal de Physique Colloques",Tuple "SOLUTIONS OF THE LANDAU-VLASOV EQUATION IN NUCLEAR PHYSICS" "Journal de Physique Colloques",Tuple "A STUDY ON THE FUSION REACTION 139La + 12C AT 50 MeV/u WITH THE VUU EQUATION" "Journal de Physique Colloques",Tuple "Atomic structure of \"vitreous\" interfacial films in sialon" "Journal de Physique Colloques",Tuple "MICROSTRUCTURAL AND ANALYTICAL CHARACTERIZATION OF Al2O3/Al-Mg COMPOSITE INTERFACES" "Journal de Physique Colloques",Tuple "Development of oxidation resistant high temperature NbTiAl alloys and intermetallics" "Journal de Physique IV Colloque",Tuple "Determination of brazed joint constitutive law by inverse method" "Journal de Physique IV Colloque",Tuple "Two dimensional estimates from ocean SAR images" "Nonlinear Processes in Geophysics",Tuple "Comparison Between New Carbon Nanostructures Produced by Plasma with Industrial Carbon Black Grades" "Journal de Physique III",Tuple "<i>Letter to the Editor:</i> SCIPION, a new flexible ionospheric sounder in Senegal" "Annales Geophysicae",Tuple "Is reducibility in nuclear multifragmentation related to thermal scaling?" "Physics Letters B",Tuple "Independence of fragment charge distributions of the size of heavy multifragmenting sources" "Physics Letters B",Tuple "Hard photons and neutral pions as probes of hot and dense nuclear matter" "Nuclear Physics A",Tuple "Surveying the nuclear caloric curve" "Physics Letters B",Tuple "A hot expanding source in 50 A MeV Xe+Sn central reactions" "Physics Letters B"]
+
+
+data' :: Array CorpusView -> Array {row :: CorpusView, delete :: Boolean}
+data' = map {row : _, delete : false}
+
+sdata :: Array { row :: CorpusView, delete :: Boolean }
+sdata = data' sampleData
+
+tdata :: TableData CorpusView
+tdata = TableData
+        { rows         : sdata
+        , totalPages   : 10
+        , currentPage  : 1
+        , pageSize     : PS10
+        , totalRecords : 100
+        , title        : "Documents"
+     --   , tree         : exampleTree
+        }
+
+
+showRow :: {row :: CorpusView, delete :: Boolean} -> ReactElement
+showRow {row : (CorpusView c), delete} =
+  tr []
+  [ td [] [div [className $ fa <> "fa-star"][]]
+  -- TODO show date: Year-Month-Day only
+  , td [] [text c.date]
+  , td [] [ a [ href (toUrl Front Document c._id) ] [ text c.title ] ]
+  , td [] [text c.source]
+  , td [] [input [ _type "checkbox"]]
+  ]
+    where
+      fa = case c.fav of
+                true  -> "fas "
+                false -> "far "
+
+
+
+--------------------------------------------------------------
+-- | Action
+-- ChangePageSize
+changePageSize :: PageSizes -> CorpusTableData -> CorpusTableData
+changePageSize ps (TableData td) =
+  TableData $ td { pageSize      = ps
+                 , totalPages    = td.totalRecords / pageSizes2Int ps
+                 , currentPage   = 1
+                 }
+
+
+data PageSizes = PS10 | PS20 | PS50 | PS100
+
+derive instance eqPageSizes :: Eq PageSizes
+
+instance showPageSize :: Show PageSizes where
+  show PS10  = "10"
+  show PS20  = "20"
+  show PS50  = "50"
+  show PS100 = "100"
+
+pageSizes2Int :: PageSizes -> Int
+pageSizes2Int PS10  = 10
+pageSizes2Int PS20  = 20
+pageSizes2Int PS50  = 50
+pageSizes2Int PS100 = 100
+
+aryPS :: Array PageSizes
+aryPS = [PS10, PS20, PS50, PS100]
+
+string2PageSize :: String -> PageSizes
+string2PageSize "10" = PS10
+string2PageSize "20" = PS20
+string2PageSize "50" = PS50
+string2PageSize "100" = PS100
+string2PageSize _    = PS10
+
+sizeDD :: PageSizes -> (Action -> Effect Unit) -> ReactElement
+sizeDD ps d
+  = span []
+    [ text "Show : "
+    , select [onChange (\e -> d (ChangePageSize $ string2PageSize $ (unsafeCoerce e).target.value))] $ map (optps ps) aryPS
+    ]
+
+optps :: PageSizes -> PageSizes -> ReactElement
+optps cv val = option [ selected (cv == val), value $ show val ] [text $ show val]
+
+
+textDescription :: Int -> PageSizes -> Int -> ReactElement
+textDescription currPage pageSize totalRecords
+  =  div [className "row1"]
+          [ div [className ""]
+                [ text $ "Showing " <> show start <> " to " <> show end <> " of " <> show totalRecords ]
+          ]
+    where
+      start = (currPage - 1) * pageSizes2Int pageSize + 1
+      end' = currPage * pageSizes2Int pageSize
+      end  = if end' > totalRecords then totalRecords else end'
+
+
+pagination :: (Action -> Effect Unit) -> Int -> Int -> ReactElement
+pagination d tp cp
+  = span [] $
+    [ text "Pages: ", prev, first, ldots]
+    <>
+    lnums
+    <>
+    [b' [text $ " " <> show cp <> " "]]
+    <>
+    rnums
+    <>
+    [ rdots, last, next ]
+    where
+      prev = if cp == 1 then
+               text " Previous "
+               else
+               span []
+               [ text " "
+               , a [ href "javascript:void()"
+                   , onClick (\e -> d $ ChangePage $ cp - 1)
+                   ] [text "Previous"]
+               , text " "
+               ]
+      next = if cp == tp then
+               text " Next "
+               else
+               span []
+               [ text " "
+               , a [ href "javascript:void()"
+                   , onClick (\e -> d $ ChangePage $ cp + 1)
+                   ] [text "Next"]
+               , text " "
+               ]
+      first = if cp == 1 then
+                text ""
+                else
+                span []
+                [ text " "
+                , a [ href "javascript:void()"
+                    , onClick (\e -> d $ ChangePage 1)
+                    ] [text "1"]
+                , text " "
+                ]
+      last = if cp == tp then
+               text ""
+             else
+               span []
+               [ text " "
+               , a [ href "javascript:void()"
+                   , onClick (\e -> d $ ChangePage tp)
+                   ] [text $ show tp]
+               , text " "
+               ]
+      ldots = if cp >= 5 then
+                text " ... "
+                else
+                text ""
+      rdots = if cp + 3 < tp then
+                text " ... "
+                else
+                text ""
+      lnums = map (\i -> fnmid d i) $ filter (lessthan 1) [cp - 2, cp - 1]
+      rnums = map (\i -> fnmid d i) $ filter (greaterthan tp) [cp + 1, cp + 2]
+
+fnmid :: (Action -> Effect Unit) -> Int -> ReactElement
+fnmid d i
+  = span []
+    [ text " "
+    , a [ href "javascript:void()"
+        , onClick (\e -> d $ ChangePage i)
+        ] [text $ show i]
+    , text " "
+    ]
+
+
+lessthan :: forall t28. Ord t28 => t28 -> t28 -> Boolean
+lessthan x y = x < y
+
+greaterthan :: forall t28. Ord t28 => t28 -> t28 -> Boolean
+greaterthan x y = x > y
+
+newtype SearchQuery = SearchQuery
+  {
+    query :: Array String
+  , parent_id :: Int
+  }
+
+
+instance encodeJsonSQuery :: EncodeJson SearchQuery where
+  encodeJson (SearchQuery post)
+     = "query" := post.query
+    ~> "parent_id" := post.parent_id
+    ~> jsonEmptyObject
+
+
+
+searchResults ::  SearchQuery -> Aff (Either String (Int))
+searchResults squery = do
+  res <- request $ defaultRequest
+         { url = "http://localhost:8008/count"
+         , responseFormat = ResponseFormat.json
+         , method = Left POST
+         , headers = []
+         }
+  case res.body of
+    Left err -> do
+      _ <- liftEffect $ log $ printResponseFormatError err
+      pure $ Left $ printResponseFormatError err
+    Right json -> do
+      --_ <- liftEffect $ log $ show a.status
+      --_ <- liftEffect $ log $ show a.headers
+      --_ <- liftEffect $ log $ show a.body
+      let obj = decodeJson json
+      pure obj
diff --git a/src/Gargantext/Pages/Corpus/Graph.purs b/src/Gargantext/Pages/Corpus/Doc/Facets/Graph.purs
similarity index 93%
rename from src/Gargantext/Pages/Corpus/Graph.purs
rename to src/Gargantext/Pages/Corpus/Doc/Facets/Graph.purs
index b5eac7b38c4cd1dfc28cd848f366d496a8ebd2c1..35124e9af60bda3b217156ffdce4d56567f64292 100644
--- a/src/Gargantext/Pages/Corpus/Graph.purs
+++ b/src/Gargantext/Pages/Corpus/Doc/Facets/Graph.purs
@@ -1,12 +1,25 @@
-module Gargantext.Pages.Corpus.Graph where
+module Gargantext.Pages.Corpus.Doc.Facets.Graph where
 
+import Prelude hiding (div)
+
+import Affjax (defaultRequest, printResponseFormatError, request)
+import Affjax.RequestHeader (RequestHeader(..))
+import Affjax.ResponseFormat as ResponseFormat
 import Control.Monad.Cont.Trans (lift)
+import Data.Argonaut (decodeJson, stringify)
 import Data.Array (length, mapWithIndex, (!!))
 import Data.Either (Either(..))
+import Data.HTTP.Method (Method(..))
 import Data.Int (toNumber)
 import Data.Maybe (Maybe(..), fromJust)
+import Data.MediaType.Common (applicationJSON)
 import Data.Newtype (class Newtype)
 import Effect.Aff (Aff)
+import Effect.Class (liftEffect)
+import Effect.Console (log)
+import Gargantext.Components.GraphExplorer.Sigmajs (Color(Color), SigmaEasing, SigmaGraphData(SigmaGraphData), SigmaNode, SigmaSettings, canvas, edgeShape, edgeShapes, forceAtlas2, sStyle, sigma, sigmaEasing, sigmaEdge, sigmaEnableWebGL, sigmaNode, sigmaSettings)
+import Gargantext.Components.GraphExplorer.Types (Cluster(..), Edge(..), GraphData(..), Legend(..), Node(..), getLegendData)
+import Gargantext.Utils (getter)
 import Math (cos, sin)
 import Partial.Unsafe (unsafePartial)
 import React (ReactElement)
@@ -15,13 +28,6 @@ import React.DOM.Props (_id, _type, checked, className, href, name, onChange, pl
 import Thermite (PerformAction, Render, Spec, modifyState, simpleSpec)
 import Unsafe.Coerce (unsafeCoerce)
 
-import Gargantext.Prelude
-import Gargantext.Config.REST (get)
-import Gargantext.Components.GraphExplorer.Sigmajs (Color(Color), SigmaEasing, SigmaGraphData(SigmaGraphData), SigmaNode, SigmaSettings, canvas, edgeShape, edgeShapes, forceAtlas2, sStyle, sigma, sigmaEasing, sigmaEdge, sigmaEnableWebGL, sigmaNode, sigmaSettings)
-import Gargantext.Components.GraphExplorer.Types (Cluster(..), Edge(..), GraphData(..), Legend(..), Node(..), getLegendData)
-import Gargantext.Utils (getter)
-
-
 data Action
   = LoadGraph String
   | SelectNode SelectedNode
@@ -53,16 +59,18 @@ graphSpec = simpleSpec performAction render
 
 performAction :: PerformAction State {} Action
 performAction (LoadGraph fp) _ _ = void do
-  _ <- logs fp
+  _ <- liftEffect $ log fp
   case fp of
     "" -> do
       modifyState \(State s) -> State s {filePath = fp, graphData = GraphData {nodes : [], edges : []}, sigmaGraphData = Nothing}
     _  -> do
       _ <- modifyState \(State s) -> State s {filePath = fp, sigmaGraphData = Nothing}
       gd <- lift $ getGraphData fp
-      -- TODO: here one might `catchError getGraphData` to visually empty the
-      -- graph.
-      modifyState \(State s) -> State s {filePath = fp, graphData = gd, sigmaGraphData = Just $ convert gd, legendData = getLegendData gd}
+      case gd of
+        Left err -> do
+          modifyState \(State s) -> State s {filePath = fp, graphData = GraphData {nodes : [], edges : []}}
+        Right gd' -> do
+          modifyState \(State s) -> State s {filePath = fp, graphData = gd', sigmaGraphData = Just $ convert gd', legendData = getLegendData gd'}
 
 performAction (SelectNode node) _ _ = void do
   modifyState $ \(State s) -> State s {selectedNode = pure node}
@@ -109,7 +117,7 @@ render d p (State s) c =
               , settings : mySettings
               , style : sStyle { height : "95%"}
               -- , onClickNode : \e -> do
-              --   logs $ unsafeCoerce e
+              --   log $ unsafeCoerce e
               --   d $ SelectNode $ SelectedNode {id : (unsafeCoerce e).data.node.id, label : (unsafeCoerce e).data.node.label}
               --   pure unit
               -- TODO: fix this!
@@ -213,8 +221,27 @@ mySettings = sigmaSettings { verbose : true
 
 
 -- loadJSON  {path : "http://localhost:2015/examples/sites_coords.json"}
-getGraphData :: String -> Aff GraphData
-getGraphData fp = get $ "http://localhost:2015/examples/" <> fp
+getGraphData :: String -> Aff (Either String GraphData)
+getGraphData fp = do
+  resp <- request defaultRequest
+          { url =("http://localhost:2015/examples/" <> fp)
+          , method = Left GET
+          , responseFormat = ResponseFormat.json
+          , headers =
+            [ ContentType applicationJSON
+            , Accept applicationJSON
+            ]
+          }
+  case resp.body of
+    Left err -> do
+      liftEffect $ log $ printResponseFormatError err
+      pure $ Left $ printResponseFormatError err
+    Right json -> do
+      liftEffect $ log $ stringify json
+      let gd = decodeJson json
+      pure gd
+
+
 
 defaultPalette :: Array Color
 defaultPalette = map Color defaultPalette'
@@ -365,7 +392,7 @@ specOld = simpleSpec performAction render'
                              , settings : mySettings
                              , style : sStyle { height : "95%"}
                              -- , onClickNode : \e -> do
-                             --   logs $ unsafeCoerce e
+                             --   log $ unsafeCoerce e
                              --   d $ SelectNode $ SelectedNode {id : (unsafeCoerce e).data.node.id, label : (unsafeCoerce e).data.node.label}
                              --   pure unit
                              }
diff --git a/src/Gargantext/Pages/Corpus/Tabs/Sources.purs b/src/Gargantext/Pages/Corpus/Doc/Facets/Sources.purs
similarity index 50%
rename from src/Gargantext/Pages/Corpus/Tabs/Sources.purs
rename to src/Gargantext/Pages/Corpus/Doc/Facets/Sources.purs
index 1345101b9ebbef22f8d3b8c8e056b0f2c192581e..62cc8c5ea5378a45bfecadca6d6d87ca2024e5a2 100644
--- a/src/Gargantext/Pages/Corpus/Tabs/Sources.purs
+++ b/src/Gargantext/Pages/Corpus/Doc/Facets/Sources.purs
@@ -1,16 +1,20 @@
-module Gargantext.Pages.Corpus.Tabs.Sources where
+module Gargantext.Pages.Corpus.Doc.Facets.Sources where
 
 
+import Data.Array (fold)
+import Gargantext.Pages.Corpus.Doc.Facets.Documents as D
 import Prelude hiding (div)
 import React.DOM (h3, text)
 import Thermite (Render, Spec, defaultPerformAction, simpleSpec)
 
-type State = {}
+type State = D.State
 
-initialState :: State
-initialState = {}
 
-type Action = Void
+initialState :: D.State
+initialState = D.tdata
+
+type Action = D.Action
+
 
 sourceSpec :: Spec State {} Action
 sourceSpec = simpleSpec defaultPerformAction render
@@ -18,3 +22,6 @@ sourceSpec = simpleSpec defaultPerformAction render
     render :: Render State {} Action
     render dispatch _ state _ =
       [ h3 [] [text "Source view"]]
+
+sourcespec' :: Spec State {} Action
+sourcespec' = fold [sourceSpec, D.layoutDocview]
diff --git a/src/Gargantext/Pages/Corpus/Doc/Facets/Specs.purs b/src/Gargantext/Pages/Corpus/Doc/Facets/Specs.purs
new file mode 100644
index 0000000000000000000000000000000000000000..24912a2473be3cea9e0b71625f6b997a1e10c423
--- /dev/null
+++ b/src/Gargantext/Pages/Corpus/Doc/Facets/Specs.purs
@@ -0,0 +1,41 @@
+module Gargantext.Pages.Corpus.Doc.Facets.Specs where
+
+import Prelude hiding (div)
+
+import Data.List (fromFoldable)
+import Data.Tuple (Tuple(..))
+
+import Gargantext.Pages.Corpus.Doc.Facets.States (State(), _doclens, _sourcelens, _authorlens, _termslens, _tablens, initialState)
+import Gargantext.Pages.Corpus.Doc.Facets.Actions (Action(), _docAction, _sourceAction, _authorAction, _termsAction, _tabAction)
+
+import Gargantext.Pages.Corpus.Doc.Facets.Documents as DV
+import Gargantext.Pages.Corpus.Doc.Facets.Sources as SV
+import Gargantext.Pages.Corpus.Doc.Facets.Authors as AV
+import Gargantext.Pages.Corpus.Doc.Facets.Terms as TV
+import Gargantext.Components.Tab as Tab
+
+import Thermite (Spec, focus, hide)
+
+
+pureTab1 :: Spec {} {} Void
+pureTab1 = hide initialState statefulTab1
+
+statefulTab1 :: Spec State {} Action
+statefulTab1 =
+  Tab.tabs _tablens _tabAction $ fromFoldable [ Tuple "Doc View"    docPageSpec
+                                              , Tuple "Author View" authorPageSpec
+                                              , Tuple "Source View" sourcePageSpec
+                                              , Tuple "Terms View"  termsPageSpec
+                                              ]
+
+docPageSpec :: Spec State {} Action
+docPageSpec = focus _doclens _docAction DV.layoutDocview
+
+authorPageSpec :: Spec State  {} Action
+authorPageSpec = focus _authorlens _authorAction AV.authorspec'
+
+sourcePageSpec :: Spec State {} Action
+sourcePageSpec = focus _sourcelens _sourceAction SV.sourcespec'
+
+termsPageSpec :: Spec State {} Action
+termsPageSpec = focus _termslens _termsAction TV.termSpec'
diff --git a/src/Gargantext/Pages/Corpus/Doc/Facets/States.purs b/src/Gargantext/Pages/Corpus/Doc/Facets/States.purs
new file mode 100644
index 0000000000000000000000000000000000000000..5e514ec2408fd9f886af131b4b98c407d8bacd1b
--- /dev/null
+++ b/src/Gargantext/Pages/Corpus/Doc/Facets/States.purs
@@ -0,0 +1,45 @@
+module Gargantext.Pages.Corpus.Doc.Facets.States where
+
+import Data.Lens (Lens', lens)
+import Gargantext.Pages.Corpus.Doc.Facets.Documents as DV
+import Gargantext.Pages.Corpus.Doc.Facets.Sources as SV
+import Gargantext.Pages.Corpus.Doc.Facets.Authors as AV
+import Gargantext.Pages.Corpus.Doc.Facets.Terms as TV
+import Gargantext.Components.Tab as Tab
+
+
+type State =
+  { docview :: DV.State
+  , authorview :: AV.State
+  , sourceview :: SV.State
+  , termsview :: TV.State
+  , activeTab :: Int
+  }
+
+initialState :: State
+initialState =
+  { docview : DV.tdata
+  , authorview : AV.initialState
+  , sourceview : SV.initialState
+  , termsview : TV.initialState
+  , activeTab : 0
+  }
+
+_doclens :: Lens' State DV.State
+_doclens = lens (\s -> s.docview) (\s ss -> s {docview = ss})
+
+_authorlens :: Lens' State AV.State
+_authorlens = lens (\s -> s.authorview) (\s ss -> s {authorview = ss})
+
+_sourcelens :: Lens' State SV.State
+_sourcelens = lens (\s -> s.sourceview) (\s ss -> s {sourceview = ss})
+
+_termslens :: Lens' State TV.State
+_termslens = lens (\s -> s.termsview) (\s ss -> s {termsview = ss})
+
+_tablens :: Lens' State Tab.State
+_tablens = lens (\s -> s.activeTab) (\s ss -> s {activeTab = ss})
+
+
+
+
diff --git a/src/Gargantext/Pages/Corpus/Tabs/Terms.purs b/src/Gargantext/Pages/Corpus/Doc/Facets/Terms.purs
similarity index 56%
rename from src/Gargantext/Pages/Corpus/Tabs/Terms.purs
rename to src/Gargantext/Pages/Corpus/Doc/Facets/Terms.purs
index 9fc6cc56d2eae25156d5d99ce2cd78ebe23e1f19..9f7af5d78eef92e181de94eaf0608e6dfb5eee6d 100644
--- a/src/Gargantext/Pages/Corpus/Tabs/Terms.purs
+++ b/src/Gargantext/Pages/Corpus/Doc/Facets/Terms.purs
@@ -1,17 +1,21 @@
-module Gargantext.Pages.Corpus.Tabs.Terms where
+module Gargantext.Pages.Corpus.Doc.Facets.Terms where
 
 import Data.Array (fold)
+import Gargantext.Pages.Corpus.Doc.Facets.Documents as D
 import Prelude hiding (div)
 import React.DOM (h3, text)
 import Thermite (PerformAction, Render, Spec, defaultPerformAction, simpleSpec)
 
 
-type State = {}
 
-initialState :: State
-initialState = {}
+type State = D.State
+
+
+initialState :: D.State
+initialState = D.tdata
+
+type Action = D.Action
 
-type Action = Void
 
 termsSpec :: Spec State {} Action
 termsSpec = simpleSpec defaultPerformAction render
@@ -19,3 +23,6 @@ termsSpec = simpleSpec defaultPerformAction render
     render :: Render State {} Action
     render dispatch _ state _ =
       [ h3 [] [text "Terms view"]]
+
+termSpec' :: Spec State {} Action
+termSpec' = fold [termsSpec, D.layoutDocview]
diff --git a/src/Gargantext/Pages/Corpus/Tabs/Terms/NgramsItem.purs b/src/Gargantext/Pages/Corpus/Doc/Facets/Terms/NgramsItem.purs
similarity index 82%
rename from src/Gargantext/Pages/Corpus/Tabs/Terms/NgramsItem.purs
rename to src/Gargantext/Pages/Corpus/Doc/Facets/Terms/NgramsItem.purs
index 674653743c16afd4f4be345c87d0ee799b97b379..56216aedf64c763bfd1e636574de2d239c5738c8 100644
--- a/src/Gargantext/Pages/Corpus/Tabs/Terms/NgramsItem.purs
+++ b/src/Gargantext/Pages/Corpus/Doc/Facets/Terms/NgramsItem.purs
@@ -1,4 +1,4 @@
-module Gargantext.Pages.Corpus.Tabs.Terms.NgramsItem where
+module Gargantext.Pages.Corpus.Doc.Facets.Terms.NgramsItem where
 
 import Prelude
 
@@ -8,7 +8,7 @@ import Data.Lens.Iso.Newtype (_Newtype)
 import React (ReactElement)
 import React.DOM (input, span, td, text, tr)
 import React.DOM.Props (_type, checked, className, onChange, style, title)
-import Thermite (PerformAction, Render, Spec, modifyState, simpleSpec, hideState, focusState)
+import Thermite (PerformAction, Render, Spec, modifyState, simpleSpec, hide, focusState)
 import Gargantext.Utils (getter, setter)
 
 newtype State = State
@@ -37,18 +37,18 @@ data Action
   = SetMap Boolean
   | SetStop Boolean
 
+performAction :: PerformAction State {} Action
+performAction (SetMap b)   _ _ = void do
+  modifyState \(State s) -> State s {term = setter (_{_type = (if b then MapTerm else None)}) s.term}
+
+performAction (SetStop b)   _ _ = void do
+    modifyState \(State s) -> State s {term = setter (_{_type = (if b then StopTerm else None)}) s.term}
+
 ngramsItemSpec :: Spec {} {} Void
-ngramsItemSpec = hideState (unwrap initialState) $
+ngramsItemSpec = hide (unwrap initialState) $
                  focusState (re _Newtype) $
                  simpleSpec performAction render
   where
-    performAction :: PerformAction State {} Action
-    performAction (SetMap b)   _ _ = void do
-      modifyState \(State s) -> State s {term = setter (_{_type = (if b then MapTerm else None)}) s.term}
-
-    performAction (SetStop b)   _ _ = void do
-        modifyState \(State s) -> State s {term = setter (_{_type = (if b then StopTerm else None)}) s.term}
-
     render :: Render State {} Action
     render dispatch _ (State state) _ =
       [
diff --git a/src/Gargantext/Pages/Corpus/Tabs/Terms/NgramsTable.purs b/src/Gargantext/Pages/Corpus/Doc/Facets/Terms/NgramsTable.purs
similarity index 95%
rename from src/Gargantext/Pages/Corpus/Tabs/Terms/NgramsTable.purs
rename to src/Gargantext/Pages/Corpus/Doc/Facets/Terms/NgramsTable.purs
index 17ce295562ff1eac97c799ea15b1fd9323f7bff5..e46991fc239fe8aa7d9a6dd84c0682c1722138db 100644
--- a/src/Gargantext/Pages/Corpus/Tabs/Terms/NgramsTable.purs
+++ b/src/Gargantext/Pages/Corpus/Doc/Facets/Terms/NgramsTable.purs
@@ -1,4 +1,4 @@
-module Gargantext.Pages.Corpus.Tabs.Terms.NgramsTable where
+module Gargantext.Pages.Corpus.Doc.Facets.Terms.NgramsTable where
 
 
 import Data.Array (filter, toUnfoldable)
@@ -12,12 +12,12 @@ import Data.Tuple (Tuple(..), uncurry)
 import Data.Void (Void)
 import Data.Unit (Unit)
 import Effect (Effect)
-import Gargantext.Pages.Corpus.Tabs.Terms.NgramsItem as NI
+import Gargantext.Pages.Corpus.Doc.Facets.Terms.NgramsItem as NI
 import Prelude (class Eq, class Ord, class Show, map, show, void, ($), (*), (+), (-), (/), (<), (<>), (==), (>), (>=), pure, unit)
 import React (ReactElement)
 import React.DOM hiding (style, map)
 import React.DOM.Props (_id, _type, className, href, name, onChange, onClick, onInput, placeholder, scope, selected, style, value)
-import Thermite (PerformAction, Spec, _render, focus, foreach, modifyState, focusState, hideState)
+import Thermite (PerformAction, Spec, _render, focus, foreach, modifyState, focusState, hide)
 import Unsafe.Coerce (unsafeCoerce)
 
 newtype State = State
@@ -60,7 +60,6 @@ _ItemAction = prism (uncurry ItemAction) \ta ->
 
 type Dispatch = Action -> Effect Unit
 
-{-
 performAction :: PerformAction State {} Action
 
 performAction (ChangePageSize ps) _ _ = void $ modifyState $ changePageSize ps
@@ -78,7 +77,6 @@ performAction (SetInput s) _ _ = void do
   modifyState \(State state) -> State $ state { search = s }
 
 performAction _ _ _ = pure unit
--}
 
 tableSpec :: Spec State {} Action -> Spec State {} Action
 tableSpec = over _render \render dispatch p (State s) c ->
@@ -159,7 +157,7 @@ tableSpec = over _render \render dispatch p (State s) c ->
 
 ngramsTableSpec :: Spec {} {} Void
 ngramsTableSpec =
-  hideState (unwrap initialState) $
+  hide (unwrap initialState) $
   focusState (re _Newtype) $
   container $
   tableSpec $
@@ -316,8 +314,8 @@ pagination d tp cp
                 text " ... "
                 else
                 text ""
-      lnums = map (\i -> fnmid d i) $ filter (1  < _) [cp - 2, cp - 1]
-      rnums = map (\i -> fnmid d i) $ filter (tp > _) [cp + 1, cp + 2]
+      lnums = map (\i -> fnmid d i) $ filter (lessthan 1) [cp - 2, cp - 1]
+      rnums = map (\i -> fnmid d i) $ filter (greaterthan tp) [cp + 1, cp + 2]
 
 fnmid :: Dispatch -> Int -> ReactElement
 fnmid d i
@@ -328,3 +326,10 @@ fnmid d i
         ] [text $ show i]
     , text " "
     ]
+
+
+lessthan :: forall t28. Ord t28 => t28 -> t28 -> Boolean
+lessthan x y = x < y
+
+greaterthan :: forall t28. Ord t28 => t28 -> t28 -> Boolean
+greaterthan x y = x > y
diff --git a/src/Gargantext/Pages/Corpus/Document.purs b/src/Gargantext/Pages/Corpus/Document.purs
deleted file mode 100644
index 33a9b7d8175efa810cf8cdca83e7e3036db544e6..0000000000000000000000000000000000000000
--- a/src/Gargantext/Pages/Corpus/Document.purs
+++ /dev/null
@@ -1,411 +0,0 @@
-module Gargantext.Pages.Corpus.Document where
-
-
-import Data.Argonaut (class DecodeJson, class EncodeJson, decodeJson, jsonEmptyObject, (.?), (:=), (~>))
-import Data.Generic.Rep (class Generic)
-import Data.Lens (Lens', Prism', lens, prism, (?~))
-import Data.Generic.Rep.Show (genericShow)
-import Data.Maybe (Maybe(..), maybe)
-import Data.Either (Either(..))
-import Effect.Aff (Aff)
-import React (ReactElement)
-import React.DOM (a, button, div, h4, h6, input, li, nav, option, p, select, span, text, ul)
-import React.DOM.Props (_data, _id, _type, aria, className, href, name, onChange, onInput, placeholder, role, style, value)
-import Thermite (PerformAction, Render, Spec, modifyState, simpleSpec)
-import Unsafe.Coerce (unsafeCoerce)
-import Control.Monad.Trans.Class (lift)
-
-import Gargantext.Prelude
-import Gargantext.Config          (toUrl, NodeType(..), End(..))
-import Gargantext.Config.REST     (get)
-import Gargantext.Components.Node (NodePoly(..))
-
-
-type State =
-  { document   :: Maybe (NodePoly DocumentV3)
-  , inputValue :: String
-  }
-
-initialState :: State
-initialState =
-  { document   : Nothing
-  , inputValue : ""
-  }
-
-data Action
-  = Load Int
-  | ChangeString String
-  | SetInput String
-
-
-newtype Status = Status { failed    :: Int
-                        , succeeded :: Int
-                        , remaining :: Int
-                        }
-
-newtype DocumentV3 =
-  DocumentV3 { abstract           :: Maybe String
-             , authors            :: Maybe String
-             --, error              :: Maybe String
-             , language_iso2      :: Maybe String
-             , language_iso3      :: Maybe String
-             , language_name      :: Maybe String
-             , publication_date   :: Maybe String
-             , publication_day    :: Maybe Int
-             , publication_hour   :: Maybe Int
-             , publication_minute :: Maybe Int
-             , publication_month  :: Maybe Int
-             , publication_second :: Maybe Int
-             , publication_year   :: Maybe Int
-             , realdate_full_     :: Maybe String
-             , source             :: Maybe String
-             , statuses           :: Maybe (Array Status)
-             , title              :: Maybe String
-             }
-
-defaultNodeDocumentV3 :: NodePoly DocumentV3
-defaultNodeDocumentV3 =
-  NodePoly { id : 0
-           , typename : 0
-           , userId   : 0
-           , parentId : 0
-           , name     : "Default name"
-           , date     : "Default date"
-           , hyperdata : defaultDocumentV3
-         }
-
-defaultDocumentV3 :: DocumentV3
-defaultDocumentV3 =
-  DocumentV3 { abstract           : Nothing
-             , authors            : Nothing
-             --, error              : Nothing
-             , language_iso2      : Nothing
-             , language_iso3      : Nothing
-             , language_name      : Nothing
-             , publication_date   : Nothing
-             , publication_day    : Nothing
-             , publication_hour   : Nothing
-             , publication_minute : Nothing
-             , publication_month  : Nothing
-             , publication_second : Nothing
-             , publication_year   : Nothing
-             , realdate_full_     : Nothing
-             , source             : Nothing
-             , statuses           : Nothing
-             , title              : Nothing
-             }
-
-data Document =
-  Document { abstract           :: Maybe String
-           , authors            :: Maybe String
-           , bdd                :: Maybe String
-           , doi                :: Maybe Int
-           , language_iso2      :: Maybe String
-           , language_iso3      :: Maybe String
-           , page               :: Maybe Int
-           , publication_date   :: Maybe String
-           , publication_second :: Maybe Int
-           , publication_minute :: Maybe Int
-           , publication_hour   :: Maybe Int
-           , publication_day    :: Maybe String
-           , publication_month  :: Maybe Int
-           , publication_year   :: Maybe Int
-           , source             :: Maybe String
-           , title              :: Maybe String
-           , uniqId             :: Maybe String
-           , url                :: Maybe String
-           , text               :: Maybe String
-           }
-
-defaultNodeDocument :: NodePoly Document
-defaultNodeDocument =
-  NodePoly { id : 0
-           , typename : 0
-           , userId   : 0
-           , parentId : 0
-           , name     : "Default name"
-           , date     : "Default date"
-           , hyperdata : defaultDocument
-         }
-
-defaultDocument :: Document
-defaultDocument =
-  Document { abstract           : Nothing
-           , authors            : Nothing
-           , bdd                : Nothing
-           , doi                : Nothing
-           , language_iso2      : Nothing
-           , language_iso3      : Nothing
-           , page               : Nothing
-           , publication_date   : Nothing
-           , publication_second : Nothing
-           , publication_minute : Nothing
-           , publication_hour   : Nothing
-           , publication_day    : Nothing
-           , publication_month  : Nothing
-           , publication_year   : Nothing
-           , source             : Nothing
-           , title              : Nothing
-           , uniqId             : Nothing
-           , url                : Nothing
-           , text               : Nothing
-           }
-
-derive instance genericDocument   :: Generic Document   _
-derive instance genericDocumentV3 :: Generic DocumentV3 _
-derive instance genericStatus     :: Generic Status     _
-
-instance showDocument :: Show Document where
-  show = genericShow
-
-instance showDocumentV3 :: Show DocumentV3 where
-  show = genericShow
-
-instance showStatus :: Show Status where
-  show = genericShow
-
-instance decodeStatus :: DecodeJson Status
-  where
-    decodeJson json = do
-      obj <- decodeJson json
-      failed <- obj .? "failed"
-      succeeded <- obj .? "succeeded"
-      remaining <- obj .? "remaining"
-      pure $ Status {failed, succeeded, remaining}
-
-
-instance decodeDocumentV3 :: DecodeJson DocumentV3
-  where
-    decodeJson json = do
-      obj <- decodeJson json
-      abstract <- obj .? "abstract"
-      authors  <- obj .? "authors"
-      --error    <- obj .? "error"
-      language_iso2 <- obj .? "language_iso2"
-      language_iso3 <- obj .? "language_iso3"
-      language_name <- obj .? "language_name"
-      publication_date   <- obj .? "publication_date"
-      publication_day    <- obj .? "publication_day"
-      publication_hour   <- obj .? "publication_hour"
-      publication_minute <- obj .? "publication_minute"
-      publication_month  <- obj .? "publication_month"
-      publication_second <- obj .? "publication_second"
-      publication_year   <- obj .? "publication_year"
-      realdate_full_     <- obj .? "realdate_full_"
-      source   <- obj .? "source"
-      statuses <- obj .? "statuses"
-      title    <- obj .? "title"
-      pure $ DocumentV3 { abstract
-                        , authors
-                        --, error
-                        , language_iso2
-                        , language_iso3
-                        , language_name
-                        , publication_date
-                        , publication_day
-                        , publication_hour
-                        , publication_minute
-                        , publication_month
-                        , publication_second
-                        , publication_year
-                        , realdate_full_
-                        , source
-                        , statuses
-                        , title
-                        }
-
-instance decodeDocument :: DecodeJson Document
-  where
-    decodeJson json = do
-      obj <- decodeJson json
-      abstract <- obj .? "abstract"
-      authors  <- obj .? "authors"
-      bdd      <- obj .? "bdd"
-      doi      <- obj .? "doi"
-      language_iso2 <- obj .? "language_iso2"
-      language_iso3 <- obj .? "language_iso3"
-      page          <- obj .? "page"
-      publication_date   <- obj .? "publication_date"
-      publication_second <- obj .? "publication_second"
-      publication_minute <- obj .? "publication_minute"
-      publication_hour   <- obj .? "publication_hour"
-      publication_day    <- obj .? "publication_day"
-      publication_month  <- obj .? "publication_month"
-      publication_year   <- obj .? "publication_year"
-      source             <- obj .? "source"
-      title              <- obj .? "title"
-      uniqId             <- obj .? "uniqId"
-      url                <- obj .? "url"
-      text               <- obj .? "text"
-      pure $ Document { abstract
-                      , authors
-                      , bdd
-                      , doi
-                      , language_iso2
-                      , language_iso3
-                      , page
-                      , publication_date
-                      , publication_second
-                      , publication_minute
-                      , publication_hour
-                      , publication_day
-                      , publication_month
-                      , publication_year
-                      , source
-                      , title
-                      , uniqId
-                      , url
-                      , text
-                      }
-
-------------------------------------------------------------------------
-performAction :: PerformAction State {} Action
-performAction (Load nId) _ _ = do
-  node <- lift $ getNode nId
-  void $ modifyState $ _document ?~ node
-  logs $ "Node Document " <> show nId <> " fetched."
-performAction (ChangeString ps) _ _ = pure unit
-performAction (SetInput ps) _ _ = void <$> modifyState $ _ { inputValue = ps }
-
-getNode :: Int -> Aff (NodePoly DocumentV3)
-getNode = get <<< toUrl Back Node
-
-_document :: Lens' State (Maybe (NodePoly DocumentV3))
-_document = lens (\s -> s.document) (\s ss -> s{document = ss})
-------------------------------------------------------------------------
-
-docview :: Spec State {} Action
-docview = simpleSpec performAction render
-  where
-    render :: Render State {} Action
-    render dispatch _ state _ =
-      [
-          div [className "container1"]
-          [
-            div [className "row"]
-            [
-              div [className "col-md-4", style {border : "1px solid black", padding : "34px"}]
-              [
-                div [className "row"]
-                [
-                  div [ className "col-md-12 input-group mb-3"] 
-                      [ select [ className "form-control custom-select"
-                               , onChange (\e -> dispatch (ChangeString $ (unsafeCoerce e).target.value))
-                               ] $ map optps aryPS 
-                      ]
-                ]
-              , div [className "row", style { marginTop : "35px"}]
-                [
-                  nav [ ]
-                  [ div [ className "nav nav-tabs", _id "nav-tab", role "tablist"]
-                    [ a [ className "nav-item nav-link active"
-                        , _id "nav-home-tab"
-                        , _data {toggle : "tab"},href "#nav-home"
-                        , role "tab"
-                        , aria {controls : "nav-home"}
-                        , aria {selected:true}
-                        ] [ text "STOPLIST"]
-                    , a [ className "nav-item nav-link"
-                        , _id "nav-profile-tab"
-                        , _data {toggle : "tab"}
-                        , href "#nav-profile"
-                        , role "tab"
-                        , aria {controls : "nav-profile"}
-                        , aria {selected:true}
-                        ] [ text "MAINLIST"]
-                    , a [ className "nav-item nav-link"
-                        , _id "nav-contact-tab"
-                        , _data {toggle : "tab"}
-                        , href "#nav-contact"
-                        , role "tab"
-                        , aria {controls : "nav-contact"}
-                        , aria {selected:true}
-                        ] [ text "MAPLIST"]
-
-                    ]
-                  ]
-                , div [className "tab-content" , _id "nav-tabContent"]
-                  [
-                    div [ className "tab-pane fade show active"
-                        , role "tabpanel"
-                        , aria {labelledby : "nav-home-tab"}
-                        , _id "nav-home"
-                        ]
-                    [
-                      h6 [] [text "Add a free term to STOPLIST"]
-                    ,  div [className "form-group"]
-                       [ input [ className "form-control"
-                               , _id "id_password"
-                               , name "password"
-                               , placeholder "Any text"
-                               , _type "value"
-                               , value state.inputValue,onInput \e -> dispatch (SetInput (unsafeEventValue e))
-                               ]
-                       , div [className "clearfix"] []
-                       ]
-                    , button [ className "btn btn-primary"
-                             , _type "button"
-                             ] [text "Create and Add"]
-                    ]
-
-                  , div [ className "tab-pane fade show"
-                        , role "tabpanel"
-                        , aria {labelledby : "nav-profile-tab"}
-                        , _id "nav-profile"
-                        ]
-                    [ ]
-                  , div [ className "tab-pane fade show"
-                        , role "tabpanel"
-                        , aria {labelledby : "nav-contact-tab"}
-                        , _id "nav-contact"
-                        ]
-                    [ ]
-                  ]
-                ]
-              ]
-            , div [className "col-md-8"]
-              [ h4 [] [text' document.title]
-              , ul [className "list-group"]
-                [ li' [ span [] [text' document.source]
-                      , badge "source"
-                      ]
-                
-                -- TODO add href to /author/ if author present in
-                , li' [ span [] [text' document.authors]
-                      , badge "authors"
-                      ]
-                
-                , li' [ span [] [text' document.publication_date]
-                      , badge "date"
-                      ]
-                ]
-              , badge "abstract"
-              , p [] [text' document.abstract]
-              
-              , div [className "jumbotron"]
-                [ p [] [text "Empty Full Text"]
-                ]
-              ]
-            ]
-          ]
-      ]
-        where
-          li' = li [className "list-group-item justify-content-between"]
-          text' x = text $ maybe "Nothing" identity x
-          badge s = span [className "badge badge-default badge-pill"] [text s]
-
-          NodePoly {hyperdata : DocumentV3 document} = 
-            maybe defaultNodeDocumentV3 identity state.document
-
-aryPS :: Array String
-aryPS = ["Map", "Main", "Stop"]
-
-aryPS1 :: Array String
-aryPS1 = ["Nothing Selected","STOPLIST", "MAINLIST", "MAPLIST"]
-
-
-optps :: String -> ReactElement
-optps val = option [ value  val ] [text  val]
-
-unsafeEventValue :: forall event. event -> String
-unsafeEventValue e = (unsafeCoerce e).target.value
diff --git a/src/Gargantext/Pages/Corpus/Tabs.purs b/src/Gargantext/Pages/Corpus/Tabs.purs
deleted file mode 100644
index 95b9c20105e30e83cdb9363cec747aefe2f18506..0000000000000000000000000000000000000000
--- a/src/Gargantext/Pages/Corpus/Tabs.purs
+++ /dev/null
@@ -1,10 +0,0 @@
-module Gargantext.Pages.Corpus.Tabs
-  ( module Gargantext.Pages.Corpus.Tabs.States
-  , module Gargantext.Pages.Corpus.Tabs.Actions
-  , module Gargantext.Pages.Corpus.Tabs.Specs
-  ) where
-
-import Gargantext.Pages.Corpus.Tabs.States
-import Gargantext.Pages.Corpus.Tabs.Actions
-import Gargantext.Pages.Corpus.Tabs.Specs
-
diff --git a/src/Gargantext/Pages/Corpus/Tabs/Documents.purs b/src/Gargantext/Pages/Corpus/Tabs/Documents.purs
deleted file mode 100644
index bd52fdc74b06e1e6a5f1f42c1dd5048f348f4b59..0000000000000000000000000000000000000000
--- a/src/Gargantext/Pages/Corpus/Tabs/Documents.purs
+++ /dev/null
@@ -1,225 +0,0 @@
-module Gargantext.Pages.Corpus.Tabs.Documents where
-
-import Data.Array (take, drop)
-import Data.Argonaut (class DecodeJson, class EncodeJson, decodeJson, jsonEmptyObject, (.?), (:=), (~>))
-
-import Data.Generic.Rep (class Generic)
-import Data.Generic.Rep.Show (genericShow)
-import Data.Maybe (maybe)
-import Data.Tuple (Tuple(..))
-import Effect.Aff (Aff)
-import React.DOM (a, br', div, input, p, text)
-import React.DOM.Props (_type, className, href)
-import Thermite (Render, Spec, defaultPerformAction, simpleSpec)
-------------------------------------------------------------------------
-import Gargantext.Prelude
-import Gargantext.Config (NodeType(..), TabType(..), toUrl, End(..))
-import Gargantext.Config.REST (get, post)
-import Gargantext.Utils.DecodeMaybe ((.|))
-import Gargantext.Components.Charts.Options.ECharts (chart)
-import Gargantext.Components.Table as T
-import Gargantext.Components.Node (NodePoly(..))
-import Gargantext.Pages.Corpus.Tabs.Types
-import Gargantext.Pages.Corpus.Dashboard (globalPublis)
-------------------------------------------------------------------------
--- TODO: Pagination Details are not available from the BackEnd
--- TODO: Search is pending
--- TODO: Fav is pending
--- TODO: Sort is Pending
--- TODO: Filter is Pending
--- TODO: When a pagination link is clicked, reload data. 
-
-type State = {}
-
-type Action = Void
-
-newtype DocumentsView
-  = DocumentsView
-    { _id    :: Int
-    , url    :: String
-    , date   :: String
-    , title  :: String
-    , source :: String
-    , fav    :: Boolean
-    , ngramCount :: Int
-    }
-
-
-derive instance genericCorpus :: Generic DocumentsView _
-
-instance showCorpus :: Show DocumentsView where
-  show = genericShow
-
-
-newtype Response = Response
-  { cid        :: Int
-  , created    :: String
-  , hyperdata  :: Hyperdata
-  , favorite   :: Boolean
-  , ngramCount :: Int
-  }
-
-
-newtype Hyperdata = Hyperdata
-  { title  :: String
-  , source :: String
-  }
-
---instance decodeHyperdata :: DecodeJson Hyperdata where
---  decodeJson json = do
---    obj    <- decodeJson json
---    title  <- obj .? "title"
---    source <- obj .? "source"
---    pure $ Hyperdata { title,source }
---instance decodeResponse :: DecodeJson Response where
---  decodeJson json = do
---    obj        <- decodeJson json
---    cid        <- obj .? "id"
---    created    <- obj .? "created"
---    favorite   <- obj .? "favorite"
---    ngramCount <- obj .? "ngramCount"
---    hyperdata  <- obj .? "hyperdata"
---    pure $ Response { cid, created, favorite, ngramCount, hyperdata }
-
-
-instance decodeHyperdata :: DecodeJson Hyperdata where
-  decodeJson json = do
-    obj    <- decodeJson json
-    title  <- obj .| "title"
-    source <- obj .| "source"
-    pure $ Hyperdata { title,source }
-
-instance decodeResponse :: DecodeJson Response where
-  decodeJson json = do
-    obj        <- decodeJson json
-    cid        <- obj .? "id"
-    created    <- pure "2018"
-    --created    <- obj .? "date"
-    favorite   <- pure true
-    ngramCount <- obj .? "id"
-    hyperdata  <- obj .? "hyperdata"
-    pure $ Response { cid, created, favorite, ngramCount, hyperdata }
-
-
-
--- | Filter
-filterSpec :: Spec State {} Action
-filterSpec = simpleSpec defaultPerformAction render
-  where
-    render d p s c = [div [] [ text "    Filter "
-                     , input []
-                     ]]
-
--- | Main layout of the Documents Tab of a Corpus
-layoutDocview :: Spec State Props Action
-layoutDocview = simpleSpec absurd render
-  where
-    render :: Render State Props Action
-    render dispatch {path, loaded} _ _ =
-      [ div [className "container1"]
-        [ div [className "row"]
-          [ chart globalPublis
-          , div [className "col-md-12"]
-            [ p [] []
-            , div [] [ text "    Filter ", input []]
-            , br'
-            , T.tableElt
-                { loadRows
-                , title: "Documents"
-                , colNames:
-                    [ ""
-                    , "Date"
-                    , "Title"
-                    , "Source"
-                    , "Delete"
-                    ]
-                , totalRecords: maybe 47361 -- TODO
-                                  identity
-                                  ((\(NodePoly n) -> n.hyperdata)
-                                   >>>
-                                   (\(CorpusInfo c) -> c.totalRecords)
-                                  <$> loaded)
-                }
-            ]
-          ]
-        ]
-      ]
-      where
-        loadRows {offset, limit} = do
-          _ <- logs "loading documents page"
-          res <- loadPage {nodeId: path,offset,limit}
-          _ <- logs "OK: loading page documents."
-          pure $
-            (\(DocumentsView r) ->
-                { row:
-                    [ div [className $ fa r.fav <> "fa-star"] []
-                    -- TODO show date: Year-Month-Day only
-                    , text r.date
-                    , a [ href (toUrl Front Url_Document r._id) ] [ text r.title ]
-                    , text r.source
-                    , input [ _type "checkbox"]
-                    ]
-                , delete: false
-                }) <$> res
-    fa true  = "fas "
-    fa false = "far "
-
-mock :: Boolean
-mock = false
-
-loadPage :: {nodeId :: Int, limit :: Int, offset :: Int} -> Aff (Array DocumentsView)
-loadPage {nodeId, limit, offset} = do
-  logs "loading documents page: loadPage with Offset and limit"
-  --res <- get $ toUrl Back (Children Url_Document offset limit) nodeId
-  res <- get $ toUrl Back (Tab TabDocs offset limit ) nodeId
-  let docs = res2corpus <$> res
-  _ <- logs "Ok: loading page documents"
-  _ <- logs $ map show docs
-  pure $
-    if mock then take limit $ drop offset sampleData else
-    docs
-  where
-    res2corpus :: Response -> DocumentsView
-    res2corpus (Response r) =
-      DocumentsView { _id : r.cid
-      , url    : ""
-      , date   :  r.created
-      , title  : (\(Hyperdata hr) -> hr.title) r.hyperdata
-      , source : (\(Hyperdata hr) -> hr.source) r.hyperdata
-      , fav    : r.favorite
-      , ngramCount : r.ngramCount
-     }
-
-
----------------------------------------------------------
-sampleData' :: DocumentsView
-sampleData' = DocumentsView {_id : 1, url : "", date : "date3", title : "title", source : "source", fav : false, ngramCount : 1}
-
-sampleData :: Array DocumentsView
---sampleData = replicate 10 sampleData'
-sampleData = map (\(Tuple t s) -> DocumentsView {_id : 1, url : "", date : "2017", title: t, source: s, fav : false, ngramCount : 10}) sampleDocuments
-
-sampleDocuments :: Array (Tuple String String)
-sampleDocuments = [Tuple "Macroscopic dynamics of the fusion process" "Journal de Physique Lettres",Tuple "Effects of static and cyclic fatigue at high temperature upon reaction bonded silicon nitride" "Journal de Physique Colloques",Tuple "Reliability of metal/glass-ceramic junctions made by solid state bonding" "Journal de Physique Colloques",Tuple "High temperature mechanical properties and intergranular structure of sialons" "Journal de Physique Colloques",Tuple "SOLUTIONS OF THE LANDAU-VLASOV EQUATION IN NUCLEAR PHYSICS" "Journal de Physique Colloques",Tuple "A STUDY ON THE FUSION REACTION 139La + 12C AT 50 MeV/u WITH THE VUU EQUATION" "Journal de Physique Colloques",Tuple "Atomic structure of \"vitreous\" interfacial films in sialon" "Journal de Physique Colloques",Tuple "MICROSTRUCTURAL AND ANALYTICAL CHARACTERIZATION OF Al2O3/Al-Mg COMPOSITE INTERFACES" "Journal de Physique Colloques",Tuple "Development of oxidation resistant high temperature NbTiAl alloys and intermetallics" "Journal de Physique IV Colloque",Tuple "Determination of brazed joint constitutive law by inverse method" "Journal de Physique IV Colloque",Tuple "Two dimensional estimates from ocean SAR images" "Nonlinear Processes in Geophysics",Tuple "Comparison Between New Carbon Nanostructures Produced by Plasma with Industrial Carbon Black Grades" "Journal de Physique III",Tuple "<i>Letter to the Editor:</i> SCIPION, a new flexible ionospheric sounder in Senegal" "Annales Geophysicae",Tuple "Is reducibility in nuclear multifragmentation related to thermal scaling?" "Physics Letters B",Tuple "Independence of fragment charge distributions of the size of heavy multifragmenting sources" "Physics Letters B",Tuple "Hard photons and neutral pions as probes of hot and dense nuclear matter" "Nuclear Physics A",Tuple "Surveying the nuclear caloric curve" "Physics Letters B",Tuple "A hot expanding source in 50 A MeV Xe+Sn central reactions" "Physics Letters B"]
-
-initialState :: State
-initialState = {}
-
-newtype SearchQuery = SearchQuery
-  {
-    query :: Array String
-  , parent_id :: Int
-  }
-
-
-instance encodeJsonSQuery :: EncodeJson SearchQuery where
-  encodeJson (SearchQuery post)
-     = "query" := post.query
-    ~> "parent_id" := post.parent_id
-    ~> jsonEmptyObject
-
-
-
-searchResults :: SearchQuery -> Aff Int
-searchResults squery = post "http://localhost:8008/count" unit
-  -- TODO
diff --git a/src/Gargantext/Pages/Corpus/Tabs/Specs.purs b/src/Gargantext/Pages/Corpus/Tabs/Specs.purs
deleted file mode 100644
index 0b4cf9f7fba15dd68aec95789d2f040a81f0420b..0000000000000000000000000000000000000000
--- a/src/Gargantext/Pages/Corpus/Tabs/Specs.purs
+++ /dev/null
@@ -1,44 +0,0 @@
-module Gargantext.Pages.Corpus.Tabs.Specs where
-
-import Prelude hiding (div)
-
-import Data.List (fromFoldable)
-import Data.Tuple (Tuple(..))
-
-import Gargantext.Pages.Corpus.Tabs.Types (Props)
-import Gargantext.Pages.Corpus.Tabs.States (State(), _doclens, _sourcelens, _authorlens, _termslens, _tablens, initialState)
-import Gargantext.Pages.Corpus.Tabs.Actions (Action(), _docAction, _sourceAction, _authorAction, _termsAction, _tabAction)
-
-import Gargantext.Pages.Corpus.Tabs.Documents as DV
-import Gargantext.Pages.Corpus.Tabs.Sources as SV
-import Gargantext.Pages.Corpus.Tabs.Authors as AV
-import Gargantext.Pages.Corpus.Tabs.Terms as TV
-import Gargantext.Components.Tab as Tab
-import Thermite (Spec, focus, hideState, cmapProps)
-
-
-pureTabs :: Spec {} Props Void
-pureTabs = hideState initialState statefulTabs
-
-statefulTabs :: Spec State Props Action
-statefulTabs =
-  Tab.tabs _tablens _tabAction $ fromFoldable [ Tuple "Documents" docPageSpec
-                                              , Tuple "Authors"   authorPageSpec
-                                              , Tuple "Sources"   sourcePageSpec
-                                              , Tuple "Terms"     termsPageSpec
-                                              ]
-
-docPageSpec :: Spec State Props Action
-docPageSpec = focus _doclens _docAction DV.layoutDocview
-
-authorPageSpec :: Spec State  Props Action
-authorPageSpec = cmapProps (const {}) (focus _authorlens _authorAction AV.authorSpec)
-              <> docPageSpec
-
-sourcePageSpec :: Spec State Props Action
-sourcePageSpec = cmapProps (const {}) (focus _sourcelens _sourceAction SV.sourceSpec)
-              <> docPageSpec
-
-termsPageSpec :: Spec State Props Action
-termsPageSpec = cmapProps (const {}) (focus _termslens _termsAction TV.termsSpec)
-             <> docPageSpec
diff --git a/src/Gargantext/Pages/Corpus/Tabs/States.purs b/src/Gargantext/Pages/Corpus/Tabs/States.purs
deleted file mode 100644
index b90e3146f58aeb0095e4652115d6d38e70b12034..0000000000000000000000000000000000000000
--- a/src/Gargantext/Pages/Corpus/Tabs/States.purs
+++ /dev/null
@@ -1,41 +0,0 @@
-module Gargantext.Pages.Corpus.Tabs.States where
-
-import Data.Lens (Lens', lens)
-import Gargantext.Pages.Corpus.Tabs.Documents as D
-import Gargantext.Pages.Corpus.Tabs.Sources   as S
-import Gargantext.Pages.Corpus.Tabs.Authors   as A
-import Gargantext.Pages.Corpus.Tabs.Terms     as T
-import Gargantext.Components.Tab as Tab
-
-
-type State =
-  { docsView    :: D.State
-  , authorsView :: A.State
-  , sourcesView :: S.State
-  , termsView   :: T.State
-  , activeTab   :: Int
-  }
-
-initialState :: State
-initialState =
-  { docsView    : D.initialState
-  , authorsView : A.initialState
-  , sourcesView : S.initialState
-  , termsView   : T.initialState
-  , activeTab : 0
-  }
-
-_doclens :: Lens' State D.State
-_doclens = lens (\s -> s.docsView) (\s ss -> s {docsView = ss})
-
-_authorlens :: Lens' State A.State
-_authorlens = lens (\s -> s.authorsView) (\s ss -> s {authorsView = ss})
-
-_sourcelens :: Lens' State S.State
-_sourcelens = lens (\s -> s.sourcesView) (\s ss -> s {sourcesView = ss})
-
-_termslens :: Lens' State T.State
-_termslens = lens (\s -> s.termsView) (\s ss -> s {termsView = ss})
-
-_tablens :: Lens' State Tab.State
-_tablens = lens (\s -> s.activeTab) (\s ss -> s {activeTab = ss})
diff --git a/src/Gargantext/Pages/Corpus/Tabs/Types.purs b/src/Gargantext/Pages/Corpus/Tabs/Types.purs
deleted file mode 100644
index 8fceffa6dabbf3f4d1a16306e250bf8e5e48f7cb..0000000000000000000000000000000000000000
--- a/src/Gargantext/Pages/Corpus/Tabs/Types.purs
+++ /dev/null
@@ -1,49 +0,0 @@
-module Gargantext.Pages.Corpus.Tabs.Types where
-
-import Data.Argonaut (class DecodeJson, decodeJson, (.?), (.??))
-import Data.Maybe (Maybe(..))
---------------------------------------------------------
-import Gargantext.Prelude
-import Gargantext.Components.Node (NodePoly(..))
-
-newtype CorpusInfo = CorpusInfo { title   :: String
-                                , desc    :: String
-                                , query   :: String
-                                , authors :: String
-                                , chart   :: (Maybe (Array Number))
-                                , totalRecords :: Int
-                                }
-
-corpusInfoDefault :: NodePoly CorpusInfo
-corpusInfoDefault = NodePoly { id : 0
-                             , typename : 0
-                             , userId : 0
-                             , parentId : 0
-                             , name : "Default name"
-                             , date  : " Default date"
-                             , hyperdata : CorpusInfo
-                                { title : "Default title"
-                                , desc  : " Default desc"
-                                , query : " Default Query"
-                                , authors : " Author(s): default"
-                                , chart   : Nothing
-                                , totalRecords : 0
-                                }
-                             }
-
-instance decodeCorpusInfo :: DecodeJson CorpusInfo where
-  decodeJson json = do
-    obj <- decodeJson json
-    title <- obj .? "title"
-    desc  <- obj .? "desc"
-    query <- obj .? "query"
-    authors <- obj .? "authors"
-    chart   <- obj .?? "chart"
-    let totalRecords = 47361 -- TODO
-    pure $ CorpusInfo {title, desc, query, authors, chart, totalRecords}
-
--- TODO type Props = {nodeId :: Int, info :: Maybe (NodePoly CorpusInfo) }
-type Props = {path :: Int, loaded :: Maybe (NodePoly CorpusInfo) }
-
--- TODO include Gargantext.Pages.Corpus.Tabs.States
--- TODO include Gargantext.Pages.Corpus.Tabs.Actions
diff --git a/src/Gargantext/Pages/Home/Specs.purs b/src/Gargantext/Pages/Home/Specs.purs
index f2ba1cdd9a89bf8dca80907f4f0145bbb5562764..9b62762535b6a26287849d70b8a852d2a1c59fc2 100644
--- a/src/Gargantext/Pages/Home/Specs.purs
+++ b/src/Gargantext/Pages/Home/Specs.purs
@@ -16,7 +16,7 @@ import Gargantext.Pages.Home.Actions (Action, performAction)
 import React (ReactElement)
 import React.DOM (a, div, h3, i, img, p, span, text)
 import React.DOM.Props (Props, _id, aria, className, href, src, target, title)
-import Thermite (Render, Spec, simpleSpec, hideState, focusState)
+import Thermite (Render, Spec, simpleSpec, hide, focusState)
 
 
 -- Layout |
@@ -26,7 +26,7 @@ landingData FR = Fr.landingData
 landingData EN = En.landingData
 
 layoutLanding :: Lang -> Spec {} {} Void
-layoutLanding = hideState (unwrap initialState)
+layoutLanding = hide (unwrap initialState)
             <<< focusState (re _Newtype)
             <<< layoutLanding' <<< landingData
 
diff --git a/src/Gargantext/Pages/Layout.purs b/src/Gargantext/Pages/Layout.purs
index cb42eb9f6df040f2bade245f0dba552e63ed1842..8c45a7e21628a799e74b25a3dd04d0b0f88e6ee1 100644
--- a/src/Gargantext/Pages/Layout.purs
+++ b/src/Gargantext/Pages/Layout.purs
@@ -4,11 +4,13 @@ import Prelude hiding (div)
 -- import Gargantext.Components.Login as LN
 import Gargantext.Pages.Layout.Actions (Action(..))
 import Gargantext.Pages.Layout.Specs.AddCorpus as AC
--- import Gargantext.Pages.Corpus.Tabs as TV
+-- import Gargantext.Pages.Corpus.Doc.Facets as TV
+-- import Gargantext.Pages.Corpus.Doc.Annotation as D
 
-import Gargantext.Pages.Corpus.Document       as Document
-import Gargantext.Pages.Corpus.Graph          as GE
--- import Gargantext.Pages.Corpus.Tabs.Terms.NgramsTable as NG
+import Gargantext.Pages.Corpus as Corpus
+import Gargantext.Pages.Corpus.Doc.Facets.Documents         as DV
+import Gargantext.Pages.Corpus.Doc.Facets.Graph             as GE
+-- import Gargantext.Pages.Corpus.Doc.Facets.Terms.NgramsTable as NG
 
 import Gargantext.Pages.Annuaire.User.Contacts as C
 import Gargantext.Pages.Annuaire   as Annuaire
@@ -34,8 +36,13 @@ dispatchAction dispatcher _ AddCorpus = do
   dispatcher $ SetRoute   AddCorpus
   dispatcher $ AddCorpusA AC.LoadDatabaseDetails
 
+dispatchAction dispatcher _ (DocView n) = do
+  dispatcher $ SetRoute   (DocView n)
+  dispatcher $ DocViewA $ DV.LoadData n
+
 dispatchAction dispatcher _ (Corpus n) = do
-  dispatcher $ SetRoute $ Corpus n
+  dispatcher $ SetRoute     $ Corpus n
+  dispatcher $ CorpusAction $ Corpus.Load n
 
 dispatchAction dispatcher _ SearchView = do
   dispatcher $ SetRoute SearchView
@@ -53,9 +60,13 @@ dispatchAction dispatcher _ (Annuaire id) = do
 dispatchAction dispatcher _ (Folder id) = do
   dispatcher $ SetRoute $ Folder id
 
-dispatchAction dispatcher _ (Document n) = do
-  dispatcher $ SetRoute $ Document n
-  dispatcher $ DocumentViewA $ Document.Load n
+dispatchAction dispatcher _ (DocAnnotation i) = do
+  dispatcher $ SetRoute $ DocAnnotation i
+  -- dispatcher $ DocAnnotationViewA TODO
+
+dispatchAction dispatcher _ Tabview = do
+  dispatcher $ SetRoute Tabview
+  -- dispatcher $ TabViewA TODO
 
 dispatchAction dispatcher _ PGraphExplorer = do
   dispatcher $ SetRoute PGraphExplorer
diff --git a/src/Gargantext/Pages/Layout/Actions.purs b/src/Gargantext/Pages/Layout/Actions.purs
index 2a70e26277e4d21b10de0418b923954587621c7d..30429d1afd369aeafbe866691672bb7b315bb979 100644
--- a/src/Gargantext/Pages/Layout/Actions.purs
+++ b/src/Gargantext/Pages/Layout/Actions.purs
@@ -2,24 +2,28 @@
 
 module Gargantext.Pages.Layout.Actions where
 
+import Prelude hiding (div)
+
 import Control.Monad.Cont.Trans                        (lift)
 import Data.Either                                     (Either(..))
 import Data.Lens                                       (Prism', prism)
 import Effect.Class                                    (liftEffect)
-import Thermite                                        (PerformAction, modifyState)
-
+import Effect.Console                                  (log)
 import Gargantext.Components.Login                  as LN
 import Gargantext.Components.Modals.Modal              (modalShow)
 import Gargantext.Components.Tree                   as Tree
+
+import Gargantext.Pages.Corpus                      as Corpus
+import Gargantext.Pages.Corpus.Doc.Annotation       as D
+import Gargantext.Pages.Corpus.Doc.Facets.Documents as DV
+import Gargantext.Pages.Corpus.Doc.Facets.Graph     as GE
+import Gargantext.Pages.Annuaire.User.Contacts           as C
 import Gargantext.Pages.Annuaire             as Annuaire
-import Gargantext.Pages.Annuaire.User.Contacts      as C
-import Gargantext.Pages.Corpus.Document       as D
-import Gargantext.Pages.Corpus.Graph     as GE
 import Gargantext.Pages.Layout.Specs.AddCorpus      as AC
 import Gargantext.Pages.Layout.Specs.Search         as S
 import Gargantext.Pages.Layout.States                  (AppState)
-import Gargantext.Prelude
 import Gargantext.Router                               (Routes)
+import Thermite                                        (PerformAction, modifyState)
 
 ------------------------------------------------------------------------
 
@@ -27,12 +31,14 @@ data Action
   = Initialize
   | LoginA     LN.Action
   | SetRoute   Routes
+  | AddCorpusA AC.Action
+  | DocViewA   DV.Action
+  | SearchA    S.Action
+  | Search             String
   | TreeViewA          Tree.Action
-    | SearchA    S.Action
-    | Search             String
-    | AddCorpusA AC.Action
+  | CorpusAction       Corpus.Action
     | GraphExplorerA     GE.Action
-    | DocumentViewA D.Action
+  | DocAnnotationViewA D.Action
   | AnnuaireAction     Annuaire.Action
     | UserPageA  C.Action
   | Go
@@ -64,19 +70,40 @@ performAction Go  _ _ = void do
 ---------------------------------------------------------
 
 performAction Initialize  _ state = void do
-  _ <- logs "loading Initial nodes"
+  _ <- liftEffect $ log "loading Initial nodes"
   case state.initialized of
     false -> do
       lnodes <- lift $ Tree.loadDefaultNode
-      void $ modifyState $ _ { initialized = true, ntreeState = lnodes }
+      case lnodes of
+        Left err -> do
+          pure unit
+        Right d -> do
+          _ <- modifyState $ _ { initialized = true, ntreeState = d}
+          pure unit
+--          page <- lift $ DV.loadPage
+--          case page of
+--            Left err -> do
+--              pure unit
+--            Right docs -> void do
+--              modifyState $ _ { initialized = true
+--                              , ntreeState = d
+--                                -- if length d > 0
+--                                --             then Tree.exampleTree
+--                                --            --then fnTransform $ unsafePartial $ fromJust $ head d
+--                                --            else Tree.initialState
+--
+--                              , docViewState = docs
+--                              }
     _ -> do
       pure unit
 
 performAction (LoginA        _) _ _ = pure unit
 performAction (AddCorpusA    _) _ _ = pure unit
+performAction (CorpusAction  _) _ _ = pure unit
+performAction (DocViewA      _) _ _ = pure unit
 performAction (SearchA       _) _ _ = pure unit
 performAction (UserPageA     _) _ _ = pure unit
-performAction (DocumentViewA _) _ _ = pure unit
+performAction (DocAnnotationViewA _) _ _ = pure unit
 performAction (TreeViewA          _) _ _ = pure unit
 performAction (GraphExplorerA     _) _ _ = pure unit
 performAction (AnnuaireAction     _) _ _ = pure unit
@@ -95,6 +122,18 @@ _addCorpusAction = prism AddCorpusA \action ->
     AddCorpusA caction -> Right caction
     _-> Left action
 
+_corpusAction :: Prism' Action Corpus.Action
+_corpusAction = prism CorpusAction \action ->
+  case action of
+    CorpusAction caction -> Right caction
+    _-> Left action
+
+_docViewAction :: Prism' Action DV.Action
+_docViewAction = prism DocViewA \action ->
+  case action of
+    DocViewA caction -> Right caction
+    _-> Left action
+
 _searchAction :: Prism' Action S.Action
 _searchAction = prism SearchA \action ->
   case action of
@@ -113,10 +152,10 @@ _annuaireAction = prism AnnuaireAction \action ->
        AnnuaireAction a -> Right a
        _                -> Left  action
 
-_documentViewAction :: Prism' Action D.Action
-_documentViewAction = prism DocumentViewA \action ->
+_docAnnotationViewAction :: Prism' Action D.Action
+_docAnnotationViewAction = prism DocAnnotationViewA \action ->
   case action of
-    DocumentViewA caction -> Right caction
+    DocAnnotationViewA caction -> Right caction
     _-> Left action
 
 _treeAction :: Prism' Action Tree.Action
diff --git a/src/Gargantext/Pages/Layout/Specs.purs b/src/Gargantext/Pages/Layout/Specs.purs
index e51fbf2635a7d1265833eac721e4135fa13d6dc0..b44ea17fbc10b4bc345213f24a74f18881097f4c 100644
--- a/src/Gargantext/Pages/Layout/Specs.purs
+++ b/src/Gargantext/Pages/Layout/Specs.purs
@@ -1,33 +1,35 @@
 module Gargantext.Pages.Layout.Specs where
 
+import Prelude hiding (div)
+
 import Data.Foldable (fold, intercalate)
 import Data.Lens (over)
 import Data.Maybe (Maybe(Nothing, Just))
 import Effect (Effect)
-import React (ReactElement)
-import React.DOM (a, button, div, footer, hr', img, input, li, p, span, text, ul)
-import React.DOM.Props (_data, _id, _type, aria, className, href, onChange, onClick, placeholder, role, src, style, tabIndex, target, title)
-import Thermite (Render, Spec, _render, defaultPerformAction, defaultRender, focus, simpleSpec, withState, noState, cmapProps)
-import Unsafe.Coerce (unsafeCoerce)
-
-import Gargantext.Prelude
 import Gargantext.Components.Data.Lang (Lang(..))
 import Gargantext.Components.Login as LN
 import Gargantext.Components.Tree  as Tree
-import Gargantext.Folder           as F
 import Gargantext.Pages.Annuaire   as A
-import Gargantext.Pages.Annuaire.User.Contacts as C
+import Gargantext.Folder           as F
 import Gargantext.Pages.Corpus     as Corpus
-import Gargantext.Pages.Corpus.Document as Annotation
-import Gargantext.Pages.Corpus.Dashboard as Dsh
-import Gargantext.Pages.Corpus.Graph as GE
-import Gargantext.Pages.Corpus.Tabs.Terms.NgramsTable as NG
+import Gargantext.Pages.Corpus.Doc.Annotation as Annotation
+import Gargantext.Pages.Corpus.Doc.Facets as TV
+import Gargantext.Pages.Corpus.Doc.Facets.Dashboard as Dsh
+import Gargantext.Pages.Corpus.Doc.Facets.Documents as DV
+import Gargantext.Pages.Corpus.Doc.Facets.Graph as GE
+import Gargantext.Pages.Corpus.Doc.Facets.Terms.NgramsTable as NG
+import Gargantext.Pages.Annuaire.User.Contacts as C
 import Gargantext.Pages.Home as L
-import Gargantext.Pages.Layout.Actions (Action(..), _addCorpusAction, _documentViewAction, _graphExplorerAction, _loginAction, _searchAction, _treeAction, _userPageAction, performAction, _annuaireAction)
+import Gargantext.Pages.Layout.Actions (Action(..), _corpusAction, _addCorpusAction, _docAnnotationViewAction, _docViewAction, _graphExplorerAction, _loginAction, _searchAction, _treeAction, _userPageAction, performAction, _annuaireAction)
 import Gargantext.Pages.Layout.Specs.AddCorpus as AC
-import Gargantext.Pages.Layout.Specs.Search    as S
-import Gargantext.Pages.Layout.States (AppState, _addCorpusState, _documentViewState, _graphExplorerState, _loginState, _searchState, _treeState, _userPageState, _annuaireState)
+import Gargantext.Pages.Layout.Specs.Search as S
+import Gargantext.Pages.Layout.States (AppState, _corpusState, _addCorpusState, _docAnnotationViewState, _docViewState, _graphExplorerState, _loginState, _searchState, _treeState, _userPageState, _annuaireState)
 import Gargantext.Router (Routes(..))
+import React (ReactElement)
+import React.DOM (a, button, div, footer, hr', img, input, li, p, span, text, ul)
+import React.DOM.Props (_data, _id, _type, aria, className, href, onChange, onClick, placeholder, role, src, style, tabIndex, target, title)
+import Thermite (Render, Spec, _render, defaultPerformAction, defaultRender, focus, simpleSpec, withState, noState)
+import Unsafe.Coerce (unsafeCoerce)
 
 layoutSpec :: Spec AppState {} Action
 layoutSpec =
@@ -46,26 +48,28 @@ layoutSpec =
       (render d p s c)
 
 pagesComponent :: AppState -> Spec AppState {} Action
-pagesComponent s = case s.currentRoute of
+pagesComponent s =
+  case s.currentRoute of
     Just route -> selectSpec route
-    Nothing    -> selectSpec Home -- TODO add Error page here: url requested does not exist (with funny Garg image)
+    Nothing    -> selectSpec Home
   where
     selectSpec :: Routes -> Spec AppState {} Action
-    selectSpec Home              = layout0 $ noState (L.layoutLanding EN)
+    selectSpec (Corpus   i)      = layout0 $ focus _corpusState   _corpusAction   Corpus.layout
     selectSpec Login             = focus _loginState _loginAction LN.renderSpec
-    selectSpec (Folder i)        = layout0 $ noState F.layoutFolder
-    
-    selectSpec (Corpus   i)      = layout0 $ cmapProps (const {nodeId: i}) $ noState Corpus.layout
+    selectSpec Home              = layout0 $ noState (L.layoutLanding EN)
     selectSpec AddCorpus         = layout0 $ focus _addCorpusState _addCorpusAction AC.layoutAddcorpus
+    selectSpec (DocView  i)      = layout0 $ focus _docViewState   _docViewAction   DV.layoutDocview
+    selectSpec (UserPage i)      = layout0 $ focus _userPageState  _userPageAction  C.layoutUser
+    selectSpec (DocAnnotation i) = layout0 $ focus _docAnnotationViewState
+                                                   _docAnnotationViewAction  Annotation.docview
+    -- To be removed
+    selectSpec Tabview           = layout0 $ noState TV.pureTab1
     selectSpec SearchView        = layout0 $ focus _searchState _searchAction  S.searchSpec
-    selectSpec (Document i) = layout0 $ focus _documentViewState _documentViewAction  Annotation.docview
+    selectSpec NGramsTable       = layout0 $ noState NG.ngramsTableSpec
     selectSpec PGraphExplorer    = focus _graphExplorerState _graphExplorerAction  GE.specOld
     selectSpec Dashboard         = layout0 $ noState Dsh.layoutDashboard
-    
     selectSpec (Annuaire i)      = layout0 $ focus _annuaireState _annuaireAction A.layoutAnnuaire
-    selectSpec (UserPage i)      = layout0 $ focus _userPageState  _userPageAction  C.layoutUser
-    -- To be removed
-    selectSpec NGramsTable       = layout0 $ noState NG.ngramsTableSpec
+    selectSpec (Folder i)        = layout0 $ noState F.layoutFolder
 
     -- selectSpec _ = simpleSpec defaultPerformAction defaultRender
 
diff --git a/src/Gargantext/Pages/Layout/Specs/AddCorpus/Actions.purs b/src/Gargantext/Pages/Layout/Specs/AddCorpus/Actions.purs
index 9a9af9086f9cda2797543de85f61caad5dbac5ab..20adbf9767b6a65df3e29f66d7e7dc019777501a 100644
--- a/src/Gargantext/Pages/Layout/Specs/AddCorpus/Actions.purs
+++ b/src/Gargantext/Pages/Layout/Specs/AddCorpus/Actions.purs
@@ -1,16 +1,24 @@
 module Gargantext.Pages.Layout.Specs.AddCorpus.Actions where
 
+import Prelude hiding (div)
+
+import Affjax (defaultRequest, printResponseFormatError, request)
+import Affjax.RequestBody (RequestBody(..))
+import Affjax.RequestHeader (RequestHeader(..))
+import Affjax.ResponseFormat as ResponseFormat
 import Control.Monad.Cont.Trans (lift)
-import Data.Argonaut (class EncodeJson, jsonEmptyObject, (:=), (~>))
+import Data.Argonaut (class EncodeJson, decodeJson, encodeJson, jsonEmptyObject, stringify, (:=), (~>))
+import Data.Either (Either(..))
+import Data.HTTP.Method (Method(..))
+import Data.Maybe (Maybe(Just))
+import Data.MediaType.Common (applicationJSON)
 import Effect.Aff (Aff)
 import Effect.Class (liftEffect)
-import Routing.Hash (setHash)
-import Thermite (PerformAction, modifyState)
-
-import Gargantext.Prelude
-import Gargantext.Config.REST (post)
+import Effect.Console (log)
 import Gargantext.Components.Modals.Modal (modalHide)
 import Gargantext.Pages.Layout.Specs.AddCorpus.States (Response, State)
+import Routing.Hash (setHash)
+import Thermite (PerformAction, modifyState)
 
 data Action
   = SelectDatabase Boolean
@@ -27,7 +35,10 @@ performAction (UnselectDatabase unselected) _ _ = void do
 
 performAction (LoadDatabaseDetails) _ _ = do
   res <- lift $ getDatabaseDetails $ QueryString { query_query: "string",query_name: ["Pubmed"]}
-  void $ modifyState $ _ {response = res}
+  case res of
+     Left err -> pure unit
+     Right resData -> do
+       void $ modifyState $ _ {response  = resData}
 
 performAction GO _ _ = do
   liftEffect $ setHash "/corpus"
@@ -57,7 +68,25 @@ instance encodeJsonQueryString :: EncodeJson QueryString where
     ~> "query_name"        := obj.query_name
     ~> jsonEmptyObject
 
-getDatabaseDetails :: QueryString -> Aff (Array Response)
+getDatabaseDetails :: QueryString -> Aff (Either String (Array Response))
 getDatabaseDetails reqBody = do
-  -- TODO let token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1MTk5OTg1ODMsInVzZXJfaWQiOjUsImVtYWlsIjoiYWxleGFuZHJlLmRlbGFub2VAaXNjcGlmLmZyIiwidXNlcm5hbWUiOiJkZXZlbG9wZXIifQ.Os-3wuFNSmRIxCZi98oFNBu2zqGc0McO-dgDayozHJg"
-  post "http://localhost:8009/count" reqBody
+  let token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1MTk5OTg1ODMsInVzZXJfaWQiOjUsImVtYWlsIjoiYWxleGFuZHJlLmRlbGFub2VAaXNjcGlmLmZyIiwidXNlcm5hbWUiOiJkZXZlbG9wZXIifQ.Os-3wuFNSmRIxCZi98oFNBu2zqGc0McO-dgDayozHJg"
+  affResp <- request $ defaultRequest
+    { method = Left POST
+    , responseFormat = ResponseFormat.json
+    , url = "http://localhost:8009/count"
+    , headers = [ ContentType applicationJSON
+                , Accept applicationJSON
+                  --   , RequestHeader "Authorization" $  "Bearer " <> token
+                ]
+    , content = Just $ Json $ encodeJson reqBody
+    }
+  case affResp.body of
+    Left err -> do
+      liftEffect $ log $ "error" <> printResponseFormatError err
+      pure $ Left $ printResponseFormatError err
+    Right json -> do
+      liftEffect $ log $ "POST method Completed"
+      liftEffect $ log $ "GET /api response: " <> stringify json
+      let obj = decodeJson json
+      pure obj
diff --git a/src/Gargantext/Pages/Layout/Specs/AddCorpus/Specs.purs b/src/Gargantext/Pages/Layout/Specs/AddCorpus/Specs.purs
index f81be14e5c8d93b15e629cd28448c9c5049ba446..cbf081503c5753db26c18eac8980aef87eda8ce8 100644
--- a/src/Gargantext/Pages/Layout/Specs/AddCorpus/Specs.purs
+++ b/src/Gargantext/Pages/Layout/Specs/AddCorpus/Specs.purs
@@ -1,16 +1,28 @@
 module Gargantext.Pages.Layout.Specs.AddCorpus.Specs where
 
+import Gargantext.Pages.Layout.Specs.AddCorpus.Actions
+import Gargantext.Pages.Layout.Specs.AddCorpus.States
+import Prelude hiding (div)
+
+import Affjax (defaultRequest, printResponseFormatError, request)
+import Affjax.RequestBody (RequestBody(..))
+import Affjax.ResponseFormat as ResponseFormat
+import Control.Monad.Cont.Trans (lift)
+import Data.Argonaut (class DecodeJson, class EncodeJson, decodeJson, encodeJson, jsonEmptyObject, (.?), (:=), (~>))
+import Data.Either (Either(..))
+import Data.HTTP.Method (Method(..))
 import Data.Lens (over)
+import Data.Maybe (Maybe(Just))
+import Data.MediaType.Common (applicationJSON)
 import Effect.Aff (Aff)
+import Effect.Class (liftEffect)
+import Effect.Console (log)
+import Gargantext.Components.Modals.Modal (modalHide)
 import React (ReactElement)
 import React.DOM (button, div, h3, h5, li, span, text, ul)
 import React.DOM.Props (_data, _id, _type, aria, className, onClick, role)
-import Thermite (Render, Spec, _render, simpleSpec)
+import Thermite (PerformAction, Render, Spec, _render, simpleSpec)
 
-import Gargantext.Prelude
-import Gargantext.Config.REST (post)
-import Gargantext.Pages.Layout.Specs.AddCorpus.Actions (Action(..), performAction)
-import Gargantext.Pages.Layout.Specs.AddCorpus.States (Query, Response(..), State)
 
 modalSpec :: Boolean -> String -> Spec State {} Action -> Spec State {} Action
 modalSpec sm t = over _render \render d p s c ->
@@ -113,5 +125,22 @@ layoutAddcorpus = simpleSpec performAction render
 
 
 
-countResults :: Query -> Aff Int
-countResults = post "http://localhost:8008/count"
+countResults ::  Query -> Aff (Either String (Int))
+countResults query = do
+  res <- request $ defaultRequest
+         { url = "http://localhost:8008/count"
+         , responseFormat = ResponseFormat.json
+         , method = Left POST
+         , headers = []
+         , content = Just $ Json $ encodeJson query
+         }
+  case res.body of
+    Left err -> do
+      _ <- liftEffect $ log $ printResponseFormatError err
+      pure $ Left $ printResponseFormatError err
+    Right json -> do
+      --_ <- liftEffect $ log $ show a.status
+      --_ <- liftEffect $ log $ show a.headers
+      --_ <- liftEffect $ log $ show a.body
+      let obj = decodeJson json
+      pure obj
diff --git a/src/Gargantext/Pages/Layout/Specs/Search.purs b/src/Gargantext/Pages/Layout/Specs/Search.purs
index 2cb76a54f13cb7305949fdf1cde5c92bdfb93153..c58fdcb5c39361f07b123371eb38adcb1ed11f04 100644
--- a/src/Gargantext/Pages/Layout/Specs/Search.purs
+++ b/src/Gargantext/Pages/Layout/Specs/Search.purs
@@ -27,19 +27,20 @@ data Action
   | SetQuery String
 
 
+performAction :: PerformAction State {} Action
+performAction (SetQuery q) _ _ = void do
+   modifyState $ _ { query = q }
+
+
+performAction GO _ _ = void do
+  liftEffect $ setHash "/addCorpus"
+
 unsafeEventValue :: forall event. event -> String
 unsafeEventValue e = (unsafeCoerce e).target.value
 
 searchSpec :: Spec State {} Action
 searchSpec = simpleSpec performAction render
   where
-    performAction :: PerformAction State {} Action
-    performAction (SetQuery q) _ _ = void do
-      modifyState $ _ { query = q }
-
-    performAction GO _ _ = void do
-      liftEffect $ setHash "/addCorpus"
-
     render :: Render State {} Action
     render dispatch _ state _ =
       [ div [className "container1"] []
diff --git a/src/Gargantext/Pages/Layout/States.purs b/src/Gargantext/Pages/Layout/States.purs
index 8f11c509edcba0d503d76bbf45ded02e8f415029..9fe5e8af93548bf7482504662710d65942b153ab 100644
--- a/src/Gargantext/Pages/Layout/States.purs
+++ b/src/Gargantext/Pages/Layout/States.purs
@@ -7,10 +7,11 @@ import Data.Maybe                                      (Maybe(Just))
 import Gargantext.Components.Login                  as LN
 import Gargantext.Components.Tree                   as Tree
 
-import Gargantext.Pages.Corpus.Document       as D
-import Gargantext.Pages.Annuaire                    as Annuaire
-import Gargantext.Pages.Corpus.Tabs.Documents as DV
-import Gargantext.Pages.Corpus.Graph     as GE
+import Gargantext.Pages.Corpus                      as Corpus
+import Gargantext.Pages.Corpus.Doc.Annotation       as D
+import Gargantext.Pages.Annuaire             as Annuaire
+import Gargantext.Pages.Corpus.Doc.Facets.Documents as DV
+import Gargantext.Pages.Corpus.Doc.Facets.Graph     as GE
 import Gargantext.Pages.Annuaire.User.Contacts      as C
 import Gargantext.Pages.Layout.Specs.AddCorpus      as AC
 import Gargantext.Pages.Layout.Specs.Search         as S
@@ -19,11 +20,12 @@ import Gargantext.Router                               (Routes(..))
 type AppState =
   { currentRoute   :: Maybe Routes
   , loginState   :: LN.State
+  , corpus         :: Corpus.State
   , addCorpusState :: AC.State
   , docViewState   :: DV.State
   , searchState    :: S.State
   , userPageState  :: C.State
-  , documentState  :: D.State
+  , docAnnotationState :: D.State
   , annuaireState  :: Annuaire.State
   , ntreeState     :: Tree.State
   , search         :: String
@@ -36,12 +38,13 @@ type AppState =
 initAppState :: AppState
 initAppState =
   { currentRoute   : Just Home
+  , corpus         : Corpus.initialState
   , loginState     : LN.initialState
   , addCorpusState : AC.initialState
-  , docViewState   : DV.initialState
+  , docViewState   : DV.tdata
   , searchState    : S.initialState
   , userPageState  : C.initialState
-  , documentState  : D.initialState
+  , docAnnotationState : D.initialState
   , ntreeState     : Tree.exampleTree
   , annuaireState  : Annuaire.initialState
   , search         : ""
@@ -58,6 +61,9 @@ _loginState = lens (\s -> s.loginState) (\s ss -> s{loginState = ss})
 _addCorpusState :: Lens' AppState AC.State
 _addCorpusState = lens (\s -> s.addCorpusState) (\s ss -> s{addCorpusState = ss})
 
+_corpusState :: Lens' AppState Corpus.State
+_corpusState = lens (\s -> s.corpus) (\s ss -> s{corpus = ss})
+
 _docViewState :: Lens' AppState DV.State
 _docViewState = lens (\s -> s.docViewState) (\s ss -> s{docViewState = ss})
 
@@ -70,8 +76,8 @@ _userPageState = lens (\s -> s.userPageState) (\s ss -> s{userPageState = ss})
 _annuaireState :: Lens' AppState Annuaire.State
 _annuaireState = lens (\s -> s.annuaireState) (\s ss -> s{annuaireState = ss})
 
-_documentViewState :: Lens' AppState D.State
-_documentViewState = lens (\s -> s.documentState) (\s ss -> s{documentState = ss})
+_docAnnotationViewState :: Lens' AppState D.State
+_docAnnotationViewState = lens (\s -> s.docAnnotationState) (\s ss -> s{docAnnotationState = ss})
 
 _treeState :: Lens' AppState Tree.State
 _treeState = lens (\s -> s.ntreeState) (\s ss -> s {ntreeState = ss})
diff --git a/src/Gargantext/Prelude.purs b/src/Gargantext/Prelude.purs
deleted file mode 100644
index 561ecf1fa4116712b23c0cdad1b4dfb0ed085a94..0000000000000000000000000000000000000000
--- a/src/Gargantext/Prelude.purs
+++ /dev/null
@@ -1,13 +0,0 @@
-module Gargantext.Prelude (module Prelude, logs)
-  where
-
-import Prelude hiding (div)
-import Effect.Console (log)
-import Effect.Class   -- (MonadEffect(), liftEffect) -- TODO fix import
-
-
-logs:: forall message effect.
-       (MonadEffect effect) => Show message => message 
-       -> effect Unit
-logs = liftEffect <<< log <<< show
-
diff --git a/src/Gargantext/Router.purs b/src/Gargantext/Router.purs
index e42e4963197f02b5feec3f2fccbbeeb3847077e0..7beb4625d0392baf42de1861e4b01f398c4d87d0 100644
--- a/src/Gargantext/Router.purs
+++ b/src/Gargantext/Router.purs
@@ -1,12 +1,13 @@
 module Gargantext.Router where
 
-import Gargantext.Prelude
+import Prelude
 
 import Control.Alt ((<|>))
 import Data.Int (floor)
 import Data.Maybe (Maybe(..))
 import Effect (Effect)
 import Effect.Class (liftEffect)
+import Effect.Console (log)
 import Routing.Match (Match, lit, num)
 import Web.HTML (window)
 import Web.HTML.Window (localStorage)
@@ -19,7 +20,9 @@ data Routes
   | Folder             Int
     | Corpus           Int
       | AddCorpus
-      | Document  Int
+      | Tabview
+      | DocView        Int
+      | DocAnnotation  Int
       | PGraphExplorer
       | NGramsTable
       | Dashboard
@@ -33,8 +36,10 @@ routing =
   <|> AddCorpus        <$   route "addCorpus"
   <|> Folder           <$> (route "folder"   *> int)
   <|> Corpus           <$> (route "corpus"   *> int)
-    <|> NGramsTable  <$   route "ngrams"
-    <|> Document  <$> (route "document" *> int)
+    <|> Tabview        <$   route "tabview"
+      <|> DocView      <$> (route "docView"  *> int)
+      <|> NGramsTable  <$   route "ngrams"
+    <|> DocAnnotation  <$> (route "document" *> int)
     <|> Dashboard      <$   route "dashboard"
     <|> PGraphExplorer <$   route "graph"
   <|> Annuaire         <$> (route "annuaire" *> int)
@@ -52,8 +57,10 @@ instance showRoutes :: Show Routes where
   show AddCorpus        = "AddCorpus"
   show SearchView       = "Search"
   show (UserPage i)     = "User"   <> show i
-  show (Document i)= "Document"
+  show (DocAnnotation i)= "Document"
   show (Corpus i)       = "Corpus" <> show i
+  show Tabview          = "Tabview"
+  show (DocView i)      = "DocView"
   show NGramsTable      = "NGramsTable"
   show (Annuaire i)     = "Annuaire" <> show i
   show (Folder   i)     = "Folder"   <> show i
@@ -65,19 +72,19 @@ instance showRoutes :: Show Routes where
 routeHandler :: (Maybe Routes -> Routes -> Effect Unit)
               -> Maybe Routes -> Routes -> Effect Unit
 routeHandler dispatchAction old new = do
-  logs $ "change route : " <> show new
+  liftEffect $ log $ "change route : " <> show new
   
   w      <- window
   ls     <- localStorage w
   token  <- getItem "accessToken" ls
   let tkn = token
   
-  logs $ "JWToken : " <> show tkn
+  liftEffect $ log $ "JWToken : " <> show tkn
   
   case tkn of
     Nothing -> do
       dispatchAction old new
-      logs $ "called SignIn Route :"
+      liftEffect $ log $ "called SignIn Route :"
     Just t -> do
       dispatchAction old new
-      logs $ "called Route : " <> show new
+      liftEffect $ log $ "called Route : " <> show new
diff --git a/yarn.lock b/yarn.lock
index e88b70001c175699d3b426c1fdb0283422e77238..31e8ce13af0cbd79fca652d1c9656d8ffa876bcb 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5,7 +5,6 @@
 JSONStream@^0.10.0:
   version "0.10.0"
   resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.10.0.tgz#74349d0d89522b71f30f0a03ff9bd20ca6f12ac0"
-  integrity sha1-dDSdDYlSK3HzDwoD/5vSDKbxKsA=
   dependencies:
     jsonparse "0.0.5"
     through ">=2.2.7 <3"
@@ -13,7 +12,6 @@ JSONStream@^0.10.0:
 JSONStream@^1.0.3:
   version "1.3.4"
   resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.4.tgz#615bb2adb0cd34c8f4c447b5f6512fa1d8f16a2e"
-  integrity sha512-Y7vfi3I5oMOYIr+WxV8NZxDSwcbNgzdKYsTNInmycOq9bUYwGg9ryu57Wg5NLmCjqdFPNUmpMBo3kSJN9tCbXg==
   dependencies:
     jsonparse "^1.2.0"
     through ">=2.2.7 <3"
@@ -21,19 +19,16 @@ JSONStream@^1.0.3:
 abbrev@1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
-  integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
 
 acorn-dynamic-import@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278"
-  integrity sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==
   dependencies:
     acorn "^5.0.0"
 
 acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2:
   version "1.5.2"
   resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.5.2.tgz#2ca723df19d997b05824b69f6c7fb091fc42c322"
-  integrity sha512-krFKvw/d1F17AN3XZbybIUzEY4YEPNiGo05AfP3dBlfVKrMHETKpgjpuZkSF8qDNt9UkQcqj7am8yJLseklCMg==
   dependencies:
     acorn "^5.7.1"
     acorn-dynamic-import "^3.0.0"
@@ -42,39 +37,32 @@ acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2:
 acorn@^5.0.0, acorn@^5.2.1, acorn@^5.7.1:
   version "5.7.2"
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.2.tgz#91fa871883485d06708800318404e72bfb26dcc5"
-  integrity sha512-cJrKCNcr2kv8dlDnbw+JPUGjHZzo4myaxOLmpOX8a+rgX94YeTcTMv/LFJUSByRpc+i4GgVnnhLxvMu/2Y+rqw==
 
 ansi-escapes@^3.0.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30"
-  integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==
 
 ansi-regex@^2.0.0:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
-  integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
 
 ansi-regex@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
-  integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
 
 ansi-styles@^2.2.1:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
-  integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
 
 ansi-styles@^3.2.1:
   version "3.2.1"
   resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
-  integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
   dependencies:
     color-convert "^1.9.0"
 
 anymatch@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
-  integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
   dependencies:
     micromatch "^3.1.4"
     normalize-path "^2.1.1"
@@ -82,29 +70,24 @@ anymatch@^2.0.0:
 app-cache-dir@^0.3.0:
   version "0.3.1"
   resolved "https://registry.yarnpkg.com/app-cache-dir/-/app-cache-dir-0.3.1.tgz#ce36a8aa966e26516adcdf3356ea47f4720805f1"
-  integrity sha512-zJ/Gj1wEQ7Z9yuLID6XhAaSbWGkGVEwMkqcrv5/Jv0GCT19UpDKkyybq84SOWBi+WzT7Y3mihYXGtMnK7Z3DMQ==
   dependencies:
     inspect-with-kind "^1.0.2"
 
 append-type@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/append-type/-/append-type-1.0.1.tgz#e29a6eb22cec0c0b9b93063b3cf6b10d9e0c60f4"
-  integrity sha512-ro+W6UHJuoA2NXqKHug9bmXDbPB3eCALjcJOsYjgI9cz9cjLFthvincBCWjk25VFzJmIUHd8saOWZZBuMycXrg==
 
 aproba@^1.0.3:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
-  integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
 
 arch@^2.1.0:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e"
-  integrity sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==
 
 are-we-there-yet@~1.1.2:
   version "1.1.5"
   resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
-  integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
   dependencies:
     delegates "^1.0.0"
     readable-stream "^2.0.6"
@@ -112,47 +95,38 @@ are-we-there-yet@~1.1.2:
 arr-diff@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
-  integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
 
 arr-flatten@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
-  integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
 
 arr-union@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
-  integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
 
 array-filter@~0.0.0:
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec"
-  integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw=
 
 array-map@~0.0.0:
   version "0.0.0"
   resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662"
-  integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=
 
 array-reduce@~0.0.0:
   version "0.0.0"
   resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b"
-  integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=
 
 array-unique@^0.3.2:
   version "0.3.2"
   resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
-  integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
 
 asap@~2.0.3:
   version "2.0.6"
   resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
-  integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
 
 asn1.js@^4.0.0:
   version "4.10.1"
   resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
-  integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==
   dependencies:
     bn.js "^4.0.0"
     inherits "^2.0.1"
@@ -161,34 +135,28 @@ asn1.js@^4.0.0:
 assert@^1.4.0:
   version "1.4.1"
   resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
-  integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=
   dependencies:
     util "0.10.3"
 
 assign-symbols@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
-  integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
 
 async-each@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
-  integrity sha1-GdOGodntxufByF04iu28xW0zYC0=
 
 async@^1.5.2:
   version "1.5.2"
   resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
-  integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
 
 atob@^2.1.1:
   version "2.1.2"
   resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
-  integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
 
 babel-code-frame@^6.26.0:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
-  integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=
   dependencies:
     chalk "^1.1.3"
     esutils "^2.0.2"
@@ -197,7 +165,6 @@ babel-code-frame@^6.26.0:
 babel-core@^6.26.0:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8"
-  integrity sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=
   dependencies:
     babel-code-frame "^6.26.0"
     babel-generator "^6.26.0"
@@ -222,7 +189,6 @@ babel-core@^6.26.0:
 babel-generator@^6.26.0:
   version "6.26.1"
   resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90"
-  integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==
   dependencies:
     babel-messages "^6.23.0"
     babel-runtime "^6.26.0"
@@ -236,7 +202,6 @@ babel-generator@^6.26.0:
 babel-helper-bindify-decorators@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330"
-  integrity sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=
   dependencies:
     babel-runtime "^6.22.0"
     babel-traverse "^6.24.1"
@@ -245,7 +210,6 @@ babel-helper-bindify-decorators@^6.24.1:
 babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664"
-  integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=
   dependencies:
     babel-helper-explode-assignable-expression "^6.24.1"
     babel-runtime "^6.22.0"
@@ -254,7 +218,6 @@ babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
 babel-helper-builder-react-jsx@^6.24.1:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0"
-  integrity sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=
   dependencies:
     babel-runtime "^6.26.0"
     babel-types "^6.26.0"
@@ -263,7 +226,6 @@ babel-helper-builder-react-jsx@^6.24.1:
 babel-helper-call-delegate@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
-  integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=
   dependencies:
     babel-helper-hoist-variables "^6.24.1"
     babel-runtime "^6.22.0"
@@ -273,7 +235,6 @@ babel-helper-call-delegate@^6.24.1:
 babel-helper-define-map@^6.24.1:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f"
-  integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=
   dependencies:
     babel-helper-function-name "^6.24.1"
     babel-runtime "^6.26.0"
@@ -283,7 +244,6 @@ babel-helper-define-map@^6.24.1:
 babel-helper-explode-assignable-expression@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa"
-  integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo=
   dependencies:
     babel-runtime "^6.22.0"
     babel-traverse "^6.24.1"
@@ -292,7 +252,6 @@ babel-helper-explode-assignable-expression@^6.24.1:
 babel-helper-explode-class@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb"
-  integrity sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=
   dependencies:
     babel-helper-bindify-decorators "^6.24.1"
     babel-runtime "^6.22.0"
@@ -302,7 +261,6 @@ babel-helper-explode-class@^6.24.1:
 babel-helper-function-name@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
-  integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=
   dependencies:
     babel-helper-get-function-arity "^6.24.1"
     babel-runtime "^6.22.0"
@@ -313,7 +271,6 @@ babel-helper-function-name@^6.24.1:
 babel-helper-get-function-arity@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
-  integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=
   dependencies:
     babel-runtime "^6.22.0"
     babel-types "^6.24.1"
@@ -321,7 +278,6 @@ babel-helper-get-function-arity@^6.24.1:
 babel-helper-hoist-variables@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
-  integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY=
   dependencies:
     babel-runtime "^6.22.0"
     babel-types "^6.24.1"
@@ -329,7 +285,6 @@ babel-helper-hoist-variables@^6.24.1:
 babel-helper-optimise-call-expression@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
-  integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=
   dependencies:
     babel-runtime "^6.22.0"
     babel-types "^6.24.1"
@@ -337,7 +292,6 @@ babel-helper-optimise-call-expression@^6.24.1:
 babel-helper-regex@^6.24.1:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72"
-  integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=
   dependencies:
     babel-runtime "^6.26.0"
     babel-types "^6.26.0"
@@ -346,7 +300,6 @@ babel-helper-regex@^6.24.1:
 babel-helper-remap-async-to-generator@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b"
-  integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=
   dependencies:
     babel-helper-function-name "^6.24.1"
     babel-runtime "^6.22.0"
@@ -357,7 +310,6 @@ babel-helper-remap-async-to-generator@^6.24.1:
 babel-helper-replace-supers@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
-  integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo=
   dependencies:
     babel-helper-optimise-call-expression "^6.24.1"
     babel-messages "^6.23.0"
@@ -369,7 +321,6 @@ babel-helper-replace-supers@^6.24.1:
 babel-helpers@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
-  integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=
   dependencies:
     babel-runtime "^6.22.0"
     babel-template "^6.24.1"
@@ -377,91 +328,74 @@ babel-helpers@^6.24.1:
 babel-messages@^6.23.0:
   version "6.23.0"
   resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
-  integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=
   dependencies:
     babel-runtime "^6.22.0"
 
 babel-plugin-check-es2015-constants@^6.22.0:
   version "6.22.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
-  integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=
   dependencies:
     babel-runtime "^6.22.0"
 
 babel-plugin-syntax-async-functions@^6.8.0:
   version "6.13.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
-  integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=
 
 babel-plugin-syntax-async-generators@^6.5.0:
   version "6.13.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a"
-  integrity sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=
 
 babel-plugin-syntax-class-constructor-call@^6.18.0:
   version "6.18.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416"
-  integrity sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=
 
 babel-plugin-syntax-class-properties@^6.8.0:
   version "6.13.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de"
-  integrity sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=
 
 babel-plugin-syntax-decorators@^6.13.0:
   version "6.13.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b"
-  integrity sha1-MSVjtNvePMgGzuPkFszurd0RrAs=
 
 babel-plugin-syntax-do-expressions@^6.8.0:
   version "6.13.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz#5747756139aa26d390d09410b03744ba07e4796d"
-  integrity sha1-V0d1YTmqJtOQ0JQQsDdEugfkeW0=
 
 babel-plugin-syntax-dynamic-import@^6.18.0:
   version "6.18.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da"
-  integrity sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=
 
 babel-plugin-syntax-exponentiation-operator@^6.8.0:
   version "6.13.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de"
-  integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=
 
 babel-plugin-syntax-export-extensions@^6.8.0:
   version "6.13.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721"
-  integrity sha1-cKFITw+QiaToStRLrDU8lbmxJyE=
 
 babel-plugin-syntax-flow@^6.18.0:
   version "6.18.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d"
-  integrity sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=
 
 babel-plugin-syntax-function-bind@^6.8.0:
   version "6.13.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz#48c495f177bdf31a981e732f55adc0bdd2601f46"
-  integrity sha1-SMSV8Xe98xqYHnMvVa3AvdJgH0Y=
 
 babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0:
   version "6.18.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
-  integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=
 
 babel-plugin-syntax-object-rest-spread@^6.8.0:
   version "6.13.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
-  integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=
 
 babel-plugin-syntax-trailing-function-commas@^6.22.0:
   version "6.22.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3"
-  integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=
 
 babel-plugin-transform-async-generator-functions@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db"
-  integrity sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=
   dependencies:
     babel-helper-remap-async-to-generator "^6.24.1"
     babel-plugin-syntax-async-generators "^6.5.0"
@@ -470,7 +404,6 @@ babel-plugin-transform-async-generator-functions@^6.24.1:
 babel-plugin-transform-async-to-generator@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761"
-  integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=
   dependencies:
     babel-helper-remap-async-to-generator "^6.24.1"
     babel-plugin-syntax-async-functions "^6.8.0"
@@ -479,7 +412,6 @@ babel-plugin-transform-async-to-generator@^6.24.1:
 babel-plugin-transform-class-constructor-call@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9"
-  integrity sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=
   dependencies:
     babel-plugin-syntax-class-constructor-call "^6.18.0"
     babel-runtime "^6.22.0"
@@ -488,7 +420,6 @@ babel-plugin-transform-class-constructor-call@^6.24.1:
 babel-plugin-transform-class-properties@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac"
-  integrity sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=
   dependencies:
     babel-helper-function-name "^6.24.1"
     babel-plugin-syntax-class-properties "^6.8.0"
@@ -498,7 +429,6 @@ babel-plugin-transform-class-properties@^6.24.1:
 babel-plugin-transform-decorators@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d"
-  integrity sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=
   dependencies:
     babel-helper-explode-class "^6.24.1"
     babel-plugin-syntax-decorators "^6.13.0"
@@ -509,7 +439,6 @@ babel-plugin-transform-decorators@^6.24.1:
 babel-plugin-transform-do-expressions@^6.22.0:
   version "6.22.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz#28ccaf92812d949c2cd1281f690c8fdc468ae9bb"
-  integrity sha1-KMyvkoEtlJws0SgfaQyP3EaK6bs=
   dependencies:
     babel-plugin-syntax-do-expressions "^6.8.0"
     babel-runtime "^6.22.0"
@@ -517,21 +446,18 @@ babel-plugin-transform-do-expressions@^6.22.0:
 babel-plugin-transform-es2015-arrow-functions@^6.22.0:
   version "6.22.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
-  integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=
   dependencies:
     babel-runtime "^6.22.0"
 
 babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
   version "6.22.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
-  integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE=
   dependencies:
     babel-runtime "^6.22.0"
 
 babel-plugin-transform-es2015-block-scoping@^6.24.1:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f"
-  integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=
   dependencies:
     babel-runtime "^6.26.0"
     babel-template "^6.26.0"
@@ -542,7 +468,6 @@ babel-plugin-transform-es2015-block-scoping@^6.24.1:
 babel-plugin-transform-es2015-classes@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
-  integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=
   dependencies:
     babel-helper-define-map "^6.24.1"
     babel-helper-function-name "^6.24.1"
@@ -557,7 +482,6 @@ babel-plugin-transform-es2015-classes@^6.24.1:
 babel-plugin-transform-es2015-computed-properties@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
-  integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=
   dependencies:
     babel-runtime "^6.22.0"
     babel-template "^6.24.1"
@@ -565,14 +489,12 @@ babel-plugin-transform-es2015-computed-properties@^6.24.1:
 babel-plugin-transform-es2015-destructuring@^6.22.0:
   version "6.23.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
-  integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=
   dependencies:
     babel-runtime "^6.22.0"
 
 babel-plugin-transform-es2015-duplicate-keys@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
-  integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4=
   dependencies:
     babel-runtime "^6.22.0"
     babel-types "^6.24.1"
@@ -580,14 +502,12 @@ babel-plugin-transform-es2015-duplicate-keys@^6.24.1:
 babel-plugin-transform-es2015-for-of@^6.22.0:
   version "6.23.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
-  integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=
   dependencies:
     babel-runtime "^6.22.0"
 
 babel-plugin-transform-es2015-function-name@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
-  integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=
   dependencies:
     babel-helper-function-name "^6.24.1"
     babel-runtime "^6.22.0"
@@ -596,14 +516,12 @@ babel-plugin-transform-es2015-function-name@^6.24.1:
 babel-plugin-transform-es2015-literals@^6.22.0:
   version "6.22.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
-  integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=
   dependencies:
     babel-runtime "^6.22.0"
 
 babel-plugin-transform-es2015-modules-amd@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
-  integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=
   dependencies:
     babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
     babel-runtime "^6.22.0"
@@ -612,7 +530,6 @@ babel-plugin-transform-es2015-modules-amd@^6.24.1:
 babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a"
-  integrity sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=
   dependencies:
     babel-plugin-transform-strict-mode "^6.24.1"
     babel-runtime "^6.26.0"
@@ -622,7 +539,6 @@ babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
 babel-plugin-transform-es2015-modules-systemjs@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
-  integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=
   dependencies:
     babel-helper-hoist-variables "^6.24.1"
     babel-runtime "^6.22.0"
@@ -631,7 +547,6 @@ babel-plugin-transform-es2015-modules-systemjs@^6.24.1:
 babel-plugin-transform-es2015-modules-umd@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
-  integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg=
   dependencies:
     babel-plugin-transform-es2015-modules-amd "^6.24.1"
     babel-runtime "^6.22.0"
@@ -640,7 +555,6 @@ babel-plugin-transform-es2015-modules-umd@^6.24.1:
 babel-plugin-transform-es2015-object-super@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
-  integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40=
   dependencies:
     babel-helper-replace-supers "^6.24.1"
     babel-runtime "^6.22.0"
@@ -648,7 +562,6 @@ babel-plugin-transform-es2015-object-super@^6.24.1:
 babel-plugin-transform-es2015-parameters@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
-  integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=
   dependencies:
     babel-helper-call-delegate "^6.24.1"
     babel-helper-get-function-arity "^6.24.1"
@@ -660,7 +573,6 @@ babel-plugin-transform-es2015-parameters@^6.24.1:
 babel-plugin-transform-es2015-shorthand-properties@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
-  integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=
   dependencies:
     babel-runtime "^6.22.0"
     babel-types "^6.24.1"
@@ -668,14 +580,12 @@ babel-plugin-transform-es2015-shorthand-properties@^6.24.1:
 babel-plugin-transform-es2015-spread@^6.22.0:
   version "6.22.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
-  integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE=
   dependencies:
     babel-runtime "^6.22.0"
 
 babel-plugin-transform-es2015-sticky-regex@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
-  integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw=
   dependencies:
     babel-helper-regex "^6.24.1"
     babel-runtime "^6.22.0"
@@ -684,21 +594,18 @@ babel-plugin-transform-es2015-sticky-regex@^6.24.1:
 babel-plugin-transform-es2015-template-literals@^6.22.0:
   version "6.22.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
-  integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=
   dependencies:
     babel-runtime "^6.22.0"
 
 babel-plugin-transform-es2015-typeof-symbol@^6.22.0:
   version "6.23.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
-  integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=
   dependencies:
     babel-runtime "^6.22.0"
 
 babel-plugin-transform-es2015-unicode-regex@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
-  integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek=
   dependencies:
     babel-helper-regex "^6.24.1"
     babel-runtime "^6.22.0"
@@ -707,7 +614,6 @@ babel-plugin-transform-es2015-unicode-regex@^6.24.1:
 babel-plugin-transform-exponentiation-operator@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
-  integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=
   dependencies:
     babel-helper-builder-binary-assignment-operator-visitor "^6.24.1"
     babel-plugin-syntax-exponentiation-operator "^6.8.0"
@@ -716,7 +622,6 @@ babel-plugin-transform-exponentiation-operator@^6.24.1:
 babel-plugin-transform-export-extensions@^6.22.0:
   version "6.22.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653"
-  integrity sha1-U3OLR+deghhYnuqUbLvTkQm75lM=
   dependencies:
     babel-plugin-syntax-export-extensions "^6.8.0"
     babel-runtime "^6.22.0"
@@ -724,7 +629,6 @@ babel-plugin-transform-export-extensions@^6.22.0:
 babel-plugin-transform-flow-strip-types@^6.22.0:
   version "6.22.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf"
-  integrity sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=
   dependencies:
     babel-plugin-syntax-flow "^6.18.0"
     babel-runtime "^6.22.0"
@@ -732,7 +636,6 @@ babel-plugin-transform-flow-strip-types@^6.22.0:
 babel-plugin-transform-function-bind@^6.22.0:
   version "6.22.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz#c6fb8e96ac296a310b8cf8ea401462407ddf6a97"
-  integrity sha1-xvuOlqwpajELjPjqQBRiQH3fapc=
   dependencies:
     babel-plugin-syntax-function-bind "^6.8.0"
     babel-runtime "^6.22.0"
@@ -740,7 +643,6 @@ babel-plugin-transform-function-bind@^6.22.0:
 babel-plugin-transform-object-rest-spread@^6.22.0:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06"
-  integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=
   dependencies:
     babel-plugin-syntax-object-rest-spread "^6.8.0"
     babel-runtime "^6.26.0"
@@ -748,14 +650,12 @@ babel-plugin-transform-object-rest-spread@^6.22.0:
 babel-plugin-transform-react-display-name@^6.23.0:
   version "6.25.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1"
-  integrity sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=
   dependencies:
     babel-runtime "^6.22.0"
 
 babel-plugin-transform-react-jsx-self@^6.22.0:
   version "6.22.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e"
-  integrity sha1-322AqdomEqEh5t3XVYvL7PBuY24=
   dependencies:
     babel-plugin-syntax-jsx "^6.8.0"
     babel-runtime "^6.22.0"
@@ -763,7 +663,6 @@ babel-plugin-transform-react-jsx-self@^6.22.0:
 babel-plugin-transform-react-jsx-source@^6.22.0:
   version "6.22.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6"
-  integrity sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=
   dependencies:
     babel-plugin-syntax-jsx "^6.8.0"
     babel-runtime "^6.22.0"
@@ -771,7 +670,6 @@ babel-plugin-transform-react-jsx-source@^6.22.0:
 babel-plugin-transform-react-jsx@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3"
-  integrity sha1-hAoCjn30YN/DotKfDA2R9jduZqM=
   dependencies:
     babel-helper-builder-react-jsx "^6.24.1"
     babel-plugin-syntax-jsx "^6.8.0"
@@ -780,14 +678,12 @@ babel-plugin-transform-react-jsx@^6.24.1:
 babel-plugin-transform-regenerator@^6.24.1:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f"
-  integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=
   dependencies:
     regenerator-transform "^0.10.0"
 
 babel-plugin-transform-strict-mode@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
-  integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=
   dependencies:
     babel-runtime "^6.22.0"
     babel-types "^6.24.1"
@@ -795,7 +691,6 @@ babel-plugin-transform-strict-mode@^6.24.1:
 babel-preset-es2015@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939"
-  integrity sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=
   dependencies:
     babel-plugin-check-es2015-constants "^6.22.0"
     babel-plugin-transform-es2015-arrow-functions "^6.22.0"
@@ -825,14 +720,12 @@ babel-preset-es2015@^6.24.1:
 babel-preset-flow@^6.23.0:
   version "6.23.0"
   resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d"
-  integrity sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=
   dependencies:
     babel-plugin-transform-flow-strip-types "^6.22.0"
 
 babel-preset-react@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380"
-  integrity sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=
   dependencies:
     babel-plugin-syntax-jsx "^6.3.13"
     babel-plugin-transform-react-display-name "^6.23.0"
@@ -844,7 +737,6 @@ babel-preset-react@^6.24.1:
 babel-preset-stage-0@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz#5642d15042f91384d7e5af8bc88b1db95b039e6a"
-  integrity sha1-VkLRUEL5E4TX5a+LyIsduVsDnmo=
   dependencies:
     babel-plugin-transform-do-expressions "^6.22.0"
     babel-plugin-transform-function-bind "^6.22.0"
@@ -853,7 +745,6 @@ babel-preset-stage-0@^6.24.1:
 babel-preset-stage-1@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0"
-  integrity sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=
   dependencies:
     babel-plugin-transform-class-constructor-call "^6.24.1"
     babel-plugin-transform-export-extensions "^6.22.0"
@@ -862,7 +753,6 @@ babel-preset-stage-1@^6.24.1:
 babel-preset-stage-2@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1"
-  integrity sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=
   dependencies:
     babel-plugin-syntax-dynamic-import "^6.18.0"
     babel-plugin-transform-class-properties "^6.24.1"
@@ -872,7 +762,6 @@ babel-preset-stage-2@^6.24.1:
 babel-preset-stage-3@^6.24.1:
   version "6.24.1"
   resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395"
-  integrity sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=
   dependencies:
     babel-plugin-syntax-trailing-function-commas "^6.22.0"
     babel-plugin-transform-async-generator-functions "^6.24.1"
@@ -883,7 +772,6 @@ babel-preset-stage-3@^6.24.1:
 babel-register@^6.26.0:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071"
-  integrity sha1-btAhFz4vy0htestFxgCahW9kcHE=
   dependencies:
     babel-core "^6.26.0"
     babel-runtime "^6.26.0"
@@ -896,7 +784,6 @@ babel-register@^6.26.0:
 babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
-  integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
   dependencies:
     core-js "^2.4.0"
     regenerator-runtime "^0.11.0"
@@ -904,7 +791,6 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0:
 babel-template@^6.24.1, babel-template@^6.26.0:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
-  integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=
   dependencies:
     babel-runtime "^6.26.0"
     babel-traverse "^6.26.0"
@@ -915,7 +801,6 @@ babel-template@^6.24.1, babel-template@^6.26.0:
 babel-traverse@^6.24.1, babel-traverse@^6.26.0:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
-  integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=
   dependencies:
     babel-code-frame "^6.26.0"
     babel-messages "^6.23.0"
@@ -930,7 +815,6 @@ babel-traverse@^6.24.1, babel-traverse@^6.26.0:
 babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
-  integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=
   dependencies:
     babel-runtime "^6.26.0"
     esutils "^2.0.2"
@@ -940,27 +824,22 @@ babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0:
 babelify@^8.0.0:
   version "8.0.0"
   resolved "https://registry.yarnpkg.com/babelify/-/babelify-8.0.0.tgz#6f60f5f062bfe7695754ef2403b842014a580ed3"
-  integrity sha512-xVr63fKEvMWUrrIbqlHYsMcc5Zdw4FSVesAHgkgajyCE1W8gbm9rbMakqavhxKvikGYMhEcqxTwB/gQmQ6lBtw==
 
 babylon@^6.18.0:
   version "6.18.0"
   resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
-  integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==
 
 balanced-match@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
-  integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
 
 base64-js@^1.0.2:
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
-  integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==
 
 base@^0.11.1:
   version "0.11.2"
   resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
-  integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
   dependencies:
     cache-base "^1.0.1"
     class-utils "^0.3.5"
@@ -973,22 +852,18 @@ base@^0.11.1:
 batch-processor@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/batch-processor/-/batch-processor-1.0.0.tgz#75c95c32b748e0850d10c2b168f6bdbe9891ace8"
-  integrity sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg=
 
 big.js@^3.1.3:
   version "3.2.0"
   resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
-  integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==
 
 binary-extensions@^1.0.0:
   version "1.11.0"
   resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205"
-  integrity sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=
 
 bl@^1.0.0:
   version "1.2.2"
   resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c"
-  integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==
   dependencies:
     readable-stream "^2.3.5"
     safe-buffer "^5.1.1"
@@ -996,17 +871,14 @@ bl@^1.0.0:
 bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
   version "4.11.8"
   resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
-  integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==
 
 bower@^1.8.4:
   version "1.8.4"
   resolved "https://registry.yarnpkg.com/bower/-/bower-1.8.4.tgz#e7876a076deb8137f7d06525dc5e8c66db82f28a"
-  integrity sha1-54dqB23rgTf30GUl3F6MZtuC8oo=
 
 brace-expansion@^1.1.7:
   version "1.1.11"
   resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
-  integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
   dependencies:
     balanced-match "^1.0.0"
     concat-map "0.0.1"
@@ -1014,7 +886,6 @@ brace-expansion@^1.1.7:
 braces@^2.3.0, braces@^2.3.1:
   version "2.3.2"
   resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
-  integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
   dependencies:
     arr-flatten "^1.1.0"
     array-unique "^0.3.2"
@@ -1030,12 +901,10 @@ braces@^2.3.0, braces@^2.3.1:
 brorand@^1.0.1:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
-  integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
 
 browser-pack@^6.0.1:
   version "6.1.0"
   resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.1.0.tgz#c34ba10d0b9ce162b5af227c7131c92c2ecd5774"
-  integrity sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==
   dependencies:
     JSONStream "^1.0.3"
     combine-source-map "~0.8.0"
@@ -1047,14 +916,12 @@ browser-pack@^6.0.1:
 browser-resolve@^1.11.0, browser-resolve@^1.7.0:
   version "1.11.3"
   resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6"
-  integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==
   dependencies:
     resolve "1.1.7"
 
 browserify-aes@^1.0.0, browserify-aes@^1.0.4:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
-  integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
   dependencies:
     buffer-xor "^1.0.3"
     cipher-base "^1.0.0"
@@ -1066,7 +933,6 @@ browserify-aes@^1.0.0, browserify-aes@^1.0.4:
 browserify-cache-api@^3.0.0:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/browserify-cache-api/-/browserify-cache-api-3.0.1.tgz#96247e853f068fd6e0d45cc73f0bb2cd9778ef02"
-  integrity sha1-liR+hT8Gj9bg1FzHPwuyzZd47wI=
   dependencies:
     async "^1.5.2"
     through2 "^2.0.0"
@@ -1075,7 +941,6 @@ browserify-cache-api@^3.0.0:
 browserify-cipher@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
-  integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
   dependencies:
     browserify-aes "^1.0.4"
     browserify-des "^1.0.0"
@@ -1084,7 +949,6 @@ browserify-cipher@^1.0.0:
 browserify-des@^1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
-  integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
   dependencies:
     cipher-base "^1.0.1"
     des.js "^1.0.0"
@@ -1094,7 +958,6 @@ browserify-des@^1.0.0:
 browserify-incremental@^3.0.1:
   version "3.1.1"
   resolved "https://registry.yarnpkg.com/browserify-incremental/-/browserify-incremental-3.1.1.tgz#0713cb7587247a632a9f08cf1bd169b878b62a8a"
-  integrity sha1-BxPLdYckemMqnwjPG9FpuHi2Koo=
   dependencies:
     JSONStream "^0.10.0"
     browserify-cache-api "^3.0.0"
@@ -1104,7 +967,6 @@ browserify-incremental@^3.0.1:
 browserify-rsa@^4.0.0:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
-  integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=
   dependencies:
     bn.js "^4.1.0"
     randombytes "^2.0.1"
@@ -1112,7 +974,6 @@ browserify-rsa@^4.0.0:
 browserify-sign@^4.0.0:
   version "4.0.4"
   resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
-  integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=
   dependencies:
     bn.js "^4.1.1"
     browserify-rsa "^4.0.0"
@@ -1125,14 +986,12 @@ browserify-sign@^4.0.0:
 browserify-zlib@~0.1.2:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
-  integrity sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=
   dependencies:
     pako "~0.2.0"
 
 browserify@^13.1.0:
   version "13.3.0"
   resolved "https://registry.yarnpkg.com/browserify/-/browserify-13.3.0.tgz#b5a9c9020243f0c70e4675bec8223bc627e415ce"
-  integrity sha1-tanJAgJD8McORnW+yCI7xifkFc4=
   dependencies:
     JSONStream "^1.0.3"
     assert "^1.4.0"
@@ -1185,12 +1044,10 @@ browserify@^13.1.0:
 buffer-alloc-unsafe@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
-  integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==
 
 buffer-alloc@^1.1.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
-  integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==
   dependencies:
     buffer-alloc-unsafe "^1.1.0"
     buffer-fill "^1.0.0"
@@ -1198,27 +1055,22 @@ buffer-alloc@^1.1.0:
 buffer-crc32@^0.2.5:
   version "0.2.13"
   resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
-  integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
 
 buffer-fill@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
-  integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
 
 buffer-from@^1.0.0:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
-  integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
 
 buffer-xor@^1.0.3:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
-  integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
 
 buffer@^4.1.0:
   version "4.9.1"
   resolved "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
-  integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=
   dependencies:
     base64-js "^1.0.2"
     ieee754 "^1.1.4"
@@ -1227,7 +1079,6 @@ buffer@^4.1.0:
 build-purescript@^0.2.0:
   version "0.2.3"
   resolved "https://registry.yarnpkg.com/build-purescript/-/build-purescript-0.2.3.tgz#49dffd5917384d55b8b22d0100a74e11baf69513"
-  integrity sha512-oIBeOxbEHG8don4jqxCMhZxoXCqk21jIqN+a9U/8jiiwYOAS6KcssxcTklhE+LzEIsBx/hh8cObQ5Lupos/mVw==
   dependencies:
     download-purescript-source "^0.4.0"
     feint "^1.0.2"
@@ -1244,17 +1095,14 @@ build-purescript@^0.2.0:
 builtin-status-codes@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
-  integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
 
 byline@^5.0.0:
   version "5.0.0"
   resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1"
-  integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=
 
 cache-base@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
-  integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
   dependencies:
     collection-visit "^1.0.0"
     component-emitter "^1.2.1"
@@ -1269,26 +1117,22 @@ cache-base@^1.0.1:
 cached-path-relative@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.1.tgz#d09c4b52800aa4c078e2dd81a869aac90d2e54e7"
-  integrity sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=
 
 cancelable-pump@^0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/cancelable-pump/-/cancelable-pump-0.2.0.tgz#865665d4c23a69788d4bcdf498db740f1b230d57"
-  integrity sha1-hlZl1MI6aXiNS830mNt0DxsjDVc=
   dependencies:
     pump "^1.0.2"
 
 cancelable-pump@^0.4.0:
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/cancelable-pump/-/cancelable-pump-0.4.0.tgz#9d02b16a30fe81835238fc6582670b660bf511cf"
-  integrity sha512-7Yvp8ADC9exD0Kdq/Q35UD5wOiuXTTLp159gFHC+uMQvjRMllrsM6EUKnozmIe43yesLBiH/ni0KD69k07yzZQ==
   dependencies:
     pump "^3.0.0"
 
 chalk@^1.1.3:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
-  integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
   dependencies:
     ansi-styles "^2.2.1"
     escape-string-regexp "^1.0.2"
@@ -1299,7 +1143,6 @@ chalk@^1.1.3:
 chalk@^2.0.1, chalk@^2.4.0, chalk@^2.4.1:
   version "2.4.1"
   resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
-  integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==
   dependencies:
     ansi-styles "^3.2.1"
     escape-string-regexp "^1.0.5"
@@ -1308,7 +1151,6 @@ chalk@^2.0.1, chalk@^2.4.0, chalk@^2.4.1:
 chokidar@^2.0.2:
   version "2.0.4"
   resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26"
-  integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==
   dependencies:
     anymatch "^2.0.0"
     async-each "^1.0.0"
@@ -1328,12 +1170,10 @@ chokidar@^2.0.2:
 chownr@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181"
-  integrity sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=
 
 cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
-  integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
   dependencies:
     inherits "^2.0.1"
     safe-buffer "^5.0.1"
@@ -1341,7 +1181,6 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
 class-utils@^0.3.5:
   version "0.3.6"
   resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
-  integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
   dependencies:
     arr-union "^3.1.0"
     define-property "^0.2.5"
@@ -1351,24 +1190,20 @@ class-utils@^0.3.5:
 clean-stack@^1.3.0:
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-1.3.0.tgz#9e821501ae979986c46b1d66d2d432db2fd4ae31"
-  integrity sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=
 
 cli-cursor@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
-  integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
   dependencies:
     restore-cursor "^2.0.0"
 
 code-point-at@^1.0.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
-  integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
 
 collection-visit@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
-  integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
   dependencies:
     map-visit "^1.0.0"
     object-visit "^1.0.0"
@@ -1376,29 +1211,24 @@ collection-visit@^1.0.0:
 color-convert@^1.9.0:
   version "1.9.3"
   resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
-  integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
   dependencies:
     color-name "1.1.3"
 
 color-name@1.1.3:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
-  integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
 
 colors@1.0.3:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b"
-  integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=
 
 colors@>=0.6.0:
   version "1.3.2"
   resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.2.tgz#2df8ff573dfbf255af562f8ce7181d6b971a359b"
-  integrity sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ==
 
 combine-source-map@^0.8.0, combine-source-map@~0.8.0:
   version "0.8.0"
   resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b"
-  integrity sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=
   dependencies:
     convert-source-map "~1.1.0"
     inline-source-map "~0.6.0"
@@ -1408,17 +1238,14 @@ combine-source-map@^0.8.0, combine-source-map@~0.8.0:
 component-emitter@^1.2.1:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
-  integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
 
 concat-map@0.0.1:
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-  integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
 
 concat-stream@^1.4.6, concat-stream@^1.6.1:
   version "1.6.2"
   resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
-  integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
   dependencies:
     buffer-from "^1.0.0"
     inherits "^2.0.3"
@@ -1428,7 +1255,6 @@ concat-stream@^1.4.6, concat-stream@^1.6.1:
 concat-stream@~1.5.0, concat-stream@~1.5.1:
   version "1.5.2"
   resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266"
-  integrity sha1-cIl4Yk2FavQaWnQd790mHadSwmY=
   dependencies:
     inherits "~2.0.1"
     readable-stream "~2.0.0"
@@ -1437,59 +1263,48 @@ concat-stream@~1.5.0, concat-stream@~1.5.1:
 console-browserify@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
-  integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
   dependencies:
     date-now "^0.1.4"
 
 console-control-strings@^1.0.0, console-control-strings@~1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
-  integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
 
 constants-browserify@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
-  integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
 
 convert-source-map@^1.1.0, convert-source-map@^1.5.0:
   version "1.5.1"
   resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5"
-  integrity sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=
 
 convert-source-map@~1.1.0:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860"
-  integrity sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=
 
 copy-descriptor@^0.1.0:
   version "0.1.1"
   resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
-  integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
 
 core-js@^1.0.0:
   version "1.2.7"
   resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
-  integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=
 
 core-js@^2.4.0, core-js@^2.5.0:
   version "2.5.5"
   resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.5.tgz#b14dde936c640c0579a6b50cabcc132dd6127e3b"
-  integrity sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=
 
 core-util-is@~1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
-  integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
 
 corser@~2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87"
-  integrity sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=
 
 create-ecdh@^4.0.0:
   version "4.0.3"
   resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
-  integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==
   dependencies:
     bn.js "^4.1.0"
     elliptic "^6.0.0"
@@ -1497,7 +1312,6 @@ create-ecdh@^4.0.0:
 create-hash@^1.1.0, create-hash@^1.1.2:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
-  integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
   dependencies:
     cipher-base "^1.0.1"
     inherits "^2.0.1"
@@ -1508,7 +1322,6 @@ create-hash@^1.1.0, create-hash@^1.1.2:
 create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
   version "1.1.7"
   resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
-  integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
   dependencies:
     cipher-base "^1.0.3"
     create-hash "^1.1.0"
@@ -1520,7 +1333,6 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
 create-react-class@^15.6.3:
   version "15.6.3"
   resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036"
-  integrity sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==
   dependencies:
     fbjs "^0.8.9"
     loose-envify "^1.3.1"
@@ -1529,7 +1341,6 @@ create-react-class@^15.6.3:
 cross-spawn@^5.0.1:
   version "5.1.0"
   resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
-  integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=
   dependencies:
     lru-cache "^4.0.1"
     shebang-command "^1.2.0"
@@ -1538,7 +1349,6 @@ cross-spawn@^5.0.1:
 cross-spawn@^6.0.0:
   version "6.0.5"
   resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
-  integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
   dependencies:
     nice-try "^1.0.4"
     path-key "^2.0.1"
@@ -1549,7 +1359,6 @@ cross-spawn@^6.0.0:
 crypto-browserify@^3.0.0:
   version "3.12.0"
   resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
-  integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
   dependencies:
     browserify-cipher "^1.0.0"
     browserify-sign "^4.0.0"
@@ -1566,50 +1375,42 @@ crypto-browserify@^3.0.0:
 date-now@^0.1.4:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
-  integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
 
 debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8:
   version "2.6.9"
   resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
-  integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
   dependencies:
     ms "2.0.0"
 
 debug@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
-  integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
   dependencies:
     ms "2.0.0"
 
 decode-uri-component@^0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
-  integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
 
 deep-extend@^0.6.0:
   version "0.6.0"
   resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
-  integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
 
 define-property@^0.2.5:
   version "0.2.5"
   resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
-  integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
   dependencies:
     is-descriptor "^0.1.0"
 
 define-property@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
-  integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
   dependencies:
     is-descriptor "^1.0.0"
 
 define-property@^2.0.2:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
-  integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
   dependencies:
     is-descriptor "^1.0.2"
     isobject "^3.0.1"
@@ -1617,17 +1418,14 @@ define-property@^2.0.2:
 defined@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
-  integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=
 
 delegates@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
-  integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
 
 deps-sort@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5"
-  integrity sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=
   dependencies:
     JSONStream "^1.0.3"
     shasum "^1.0.0"
@@ -1637,7 +1435,6 @@ deps-sort@^2.0.0:
 des.js@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
-  integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=
   dependencies:
     inherits "^2.0.1"
     minimalistic-assert "^1.0.0"
@@ -1645,19 +1442,16 @@ des.js@^1.0.0:
 detect-indent@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
-  integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg=
   dependencies:
     repeating "^2.0.0"
 
 detect-libc@^1.0.2:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
-  integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
 
 detective@^4.0.0:
   version "4.7.1"
   resolved "https://registry.yarnpkg.com/detective/-/detective-4.7.1.tgz#0eca7314338442febb6d65da54c10bb1c82b246e"
-  integrity sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==
   dependencies:
     acorn "^5.2.1"
     defined "^1.0.0"
@@ -1665,7 +1459,6 @@ detective@^4.0.0:
 diffie-hellman@^5.0.0:
   version "5.0.3"
   resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
-  integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
   dependencies:
     bn.js "^4.1.0"
     miller-rabin "^4.0.0"
@@ -1674,7 +1467,6 @@ diffie-hellman@^5.0.0:
 dl-tar@^0.6.0:
   version "0.6.0"
   resolved "https://registry.yarnpkg.com/dl-tar/-/dl-tar-0.6.0.tgz#a3b829bb504dafea523d0ee23e187c0d95c93167"
-  integrity sha512-bh6sKubl/RzCNC6v6PEim13GDA0D0OEq8j1yqORFQrVnH8C1aaP2xb4BSRP8VxFPKYVvAi4zzDEBMr72z2M9Wg==
   dependencies:
     cancelable-pump "^0.2.0"
     graceful-fs "^4.1.11"
@@ -1689,7 +1481,6 @@ dl-tar@^0.6.0:
 dl-tgz@^0.6.0:
   version "0.6.0"
   resolved "https://registry.yarnpkg.com/dl-tgz/-/dl-tgz-0.6.0.tgz#5dc2dd7fa93c33e6e10e9e3d4b1f3785f021a845"
-  integrity sha512-pkf0P6EwWfVmpbFTvgfrWOh9JvrCwW/bnx2i+M9ffKfKCP20B/3ZHRL/jGXL8nuZ+TQcI/rsasx1fzjf+expmQ==
   dependencies:
     dl-tar "^0.6.0"
     is-plain-obj "^1.1.0"
@@ -1698,12 +1489,10 @@ dl-tgz@^0.6.0:
 domain-browser@~1.1.0:
   version "1.1.7"
   resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
-  integrity sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=
 
 download-or-build-purescript@^0.0.9:
   version "0.0.9"
   resolved "https://registry.yarnpkg.com/download-or-build-purescript/-/download-or-build-purescript-0.0.9.tgz#c9cd1c6d65f34fca51f9e1a3947d88ccbe2bc73a"
-  integrity sha512-1SOq5zLZd2Nh1bmyQUhMlmZoUxuUMYYTHcyU8kR2Y9nRRiuogEWQcD2+SiJfEl5S6Ap+S4x2hVNP3bbQp0/80g==
   dependencies:
     build-purescript "^0.2.0"
     download-purescript "0.5.0-0"
@@ -1721,7 +1510,6 @@ download-or-build-purescript@^0.0.9:
 download-purescript-source@^0.4.0:
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/download-purescript-source/-/download-purescript-source-0.4.0.tgz#0bcd29cc67959db7a4fcc5def2452d880721013f"
-  integrity sha512-Y+5VqajGu9uv63XbY7R27UZGplqxQkyYMg52nSBHQMOyML/2TIm4HmP3trTSM2lxFR4yCeKGQgPas35OERCFWg==
   dependencies:
     dl-tgz "^0.6.0"
     inspect-with-kind "^1.0.4"
@@ -1731,7 +1519,6 @@ download-purescript-source@^0.4.0:
 download-purescript@0.5.0-0:
   version "0.5.0-0"
   resolved "https://registry.yarnpkg.com/download-purescript/-/download-purescript-0.5.0-0.tgz#b1d8e5fab6aafe5304d3005daf828b9a6f8101e7"
-  integrity sha512-oBjNPPBBB/zcsIvn9VUgL+YnT9E3dSszwISKmPxU4ehIkAisysrII8pvQAoQRxSikppJhmajo/VYEpa5LD0whQ==
   dependencies:
     dl-tgz "^0.6.0"
     inspect-with-kind "^1.0.4"
@@ -1741,14 +1528,12 @@ download-purescript@0.5.0-0:
 duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
-  integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=
   dependencies:
     readable-stream "^2.0.2"
 
 echarts-for-react@^2.0.14:
   version "2.0.14"
   resolved "https://registry.yarnpkg.com/echarts-for-react/-/echarts-for-react-2.0.14.tgz#6df7a31eea43ef35321e20a5854109cbc52c9df3"
-  integrity sha512-W56Cr3KP5KatVlGPKNZmmZT1IsozehT03sin7ABhzsV98jJ3rDfgKedIvrn/mlp22u/Wneddd0P7rqxLq2lO8g==
   dependencies:
     fast-deep-equal "^2.0.1"
     size-sensor "^0.2.0"
@@ -1756,14 +1541,12 @@ echarts-for-react@^2.0.14:
 echarts@^3.8.5:
   version "3.8.5"
   resolved "https://registry.yarnpkg.com/echarts/-/echarts-3.8.5.tgz#58e4a51d2743c6fb75257b0dc0a9cf9f5378ac0e"
-  integrity sha512-E+nnROMfCeiLeoT/fZyX8SE8mKzwkTjyemyoBF543oqjRtjTSKQAVDEihMXy4oC6pJS0tYGdMqCA2ATk8onyRg==
   dependencies:
     zrender "3.7.4"
 
 ecstatic@^3.0.0:
   version "3.3.0"
   resolved "https://registry.yarnpkg.com/ecstatic/-/ecstatic-3.3.0.tgz#91cd417d152abf85b37b1ab3ebf3bd25cdc64e80"
-  integrity sha512-EblWYTd+wPIAMQ0U4oYJZ7QBypT9ZUIwpqli0bKDjeIIQnXDBK2dXtZ9yzRCOlkW1HkO8gn7/FxLK1yPIW17pw==
   dependencies:
     he "^1.1.1"
     mime "^1.6.0"
@@ -1773,14 +1556,12 @@ ecstatic@^3.0.0:
 element-resize-detector@latest:
   version "1.1.14"
   resolved "https://registry.yarnpkg.com/element-resize-detector/-/element-resize-detector-1.1.14.tgz#af064a0a618a820ad570a95c5eec5b77be0128c1"
-  integrity sha1-rwZKCmGKggrVcKlcXuxbd74BKME=
   dependencies:
     batch-processor "^1.0.0"
 
 elliptic@^6.0.0:
   version "6.4.1"
   resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a"
-  integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==
   dependencies:
     bn.js "^4.4.0"
     brorand "^1.0.1"
@@ -1793,51 +1574,42 @@ elliptic@^6.0.0:
 emojis-list@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
-  integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
 
 encoding@^0.1.11:
   version "0.1.12"
   resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
-  integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=
   dependencies:
     iconv-lite "~0.4.13"
 
 end-of-stream@^1.0.0, end-of-stream@^1.1.0:
   version "1.4.1"
   resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
-  integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==
   dependencies:
     once "^1.4.0"
 
 es6-promise@^3.1.2:
   version "3.3.1"
   resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613"
-  integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=
 
 escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
-  integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
 
 esutils@^2.0.2:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
-  integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
 
 eventemitter3@^3.0.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163"
-  integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==
 
 events@~1.1.0:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
-  integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=
 
 evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
-  integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
   dependencies:
     md5.js "^1.3.4"
     safe-buffer "^5.1.1"
@@ -1845,7 +1617,6 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
 execa@^0.10.0:
   version "0.10.0"
   resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50"
-  integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==
   dependencies:
     cross-spawn "^6.0.0"
     get-stream "^3.0.0"
@@ -1858,7 +1629,6 @@ execa@^0.10.0:
 execa@^0.7.0:
   version "0.7.0"
   resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
-  integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=
   dependencies:
     cross-spawn "^5.0.1"
     get-stream "^3.0.0"
@@ -1871,12 +1641,10 @@ execa@^0.7.0:
 executing-npm-path@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/executing-npm-path/-/executing-npm-path-0.1.0.tgz#37199c565eb1f703533beca5eebb7f14ed082d2c"
-  integrity sha512-NG/Pw0xD4KBcb5ilpZa57n7U17obIvZX1TCBLdv9M7Jd3wSsfU8BtMSy+EFkx9hhJsnIBBEmaPQd12dXWaxlHA==
 
 expand-brackets@^2.1.4:
   version "2.1.4"
   resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
-  integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
   dependencies:
     debug "^2.3.3"
     define-property "^0.2.5"
@@ -1889,14 +1657,12 @@ expand-brackets@^2.1.4:
 extend-shallow@^2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
-  integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
   dependencies:
     is-extendable "^0.1.0"
 
 extend-shallow@^3.0.0, extend-shallow@^3.0.2:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
-  integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
   dependencies:
     assign-symbols "^1.0.0"
     is-extendable "^1.0.1"
@@ -1904,7 +1670,6 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2:
 extglob@^2.0.4:
   version "2.0.4"
   resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
-  integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
   dependencies:
     array-unique "^0.3.2"
     define-property "^1.0.0"
@@ -1918,12 +1683,10 @@ extglob@^2.0.4:
 fast-deep-equal@^2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
-  integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
 
 fbjs@^0.8.16:
   version "0.8.16"
   resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db"
-  integrity sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=
   dependencies:
     core-js "^1.0.0"
     isomorphic-fetch "^2.1.1"
@@ -1936,7 +1699,6 @@ fbjs@^0.8.16:
 fbjs@^0.8.9:
   version "0.8.14"
   resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.14.tgz#d1dbe2be254c35a91e09f31f9cd50a40b2a0ed1c"
-  integrity sha1-0dviviVMNakeCfMfnNUKQLKg7Rw=
   dependencies:
     core-js "^1.0.0"
     isomorphic-fetch "^2.1.1"
@@ -1949,14 +1711,12 @@ fbjs@^0.8.9:
 feint@1.0.2, feint@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/feint/-/feint-1.0.2.tgz#f4ac51d6ed7db2cc5a0ba6913f84d43f72dd680b"
-  integrity sha512-PC77rn63FAMGcmHEkuGh4AdofqI6/c/YGjyvLo60mGLcCOHUUzCnKFzoij062piVgBblkl/KlN1vHGVJsK88cg==
   dependencies:
     append-type "^1.0.1"
 
 file-to-tar@^0.3.1:
   version "0.3.1"
   resolved "https://registry.yarnpkg.com/file-to-tar/-/file-to-tar-0.3.1.tgz#d5ccb4753c53f23245f7226a54cd85723d626c31"
-  integrity sha512-bFYkxQR2weH7Bgdj6Dxuo+0rRZagcqY0uuu2CcXUdrOp8TFfkGYEdHy3uSqLiwhkXCcFFDk0584bdIyyEvJKBA==
   dependencies:
     cancelable-pump "^0.4.0"
     graceful-fs "^4.1.11"
@@ -1970,12 +1730,10 @@ file-to-tar@^0.3.1:
 filesize@^3.5.10:
   version "3.6.1"
   resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317"
-  integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==
 
 fill-range@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
-  integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
   dependencies:
     extend-shallow "^2.0.1"
     is-number "^3.0.0"
@@ -1985,43 +1743,36 @@ fill-range@^4.0.0:
 follow-redirects@^1.0.0:
   version "1.5.7"
   resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.7.tgz#a39e4804dacb90202bca76a9e2ac10433ca6a69a"
-  integrity sha512-NONJVIFiX7Z8k2WxfqBjtwqMifx7X42ORLFrOZ2LTKGj71G3C0kfdyTqGqr8fx5zSX6Foo/D95dgGWbPUiwnew==
   dependencies:
     debug "^3.1.0"
 
 for-in@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
-  integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
 
 fragment-cache@^0.2.1:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
-  integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
   dependencies:
     map-cache "^0.2.2"
 
 fs-constants@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
-  integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
 
 fs-minipass@^1.2.5:
   version "1.2.5"
   resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
-  integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==
   dependencies:
     minipass "^2.2.1"
 
 fs.realpath@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
-  integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
 
 fsevents@^1.2.2:
   version "1.2.4"
   resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426"
-  integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==
   dependencies:
     nan "^2.9.2"
     node-pre-gyp "^0.10.0"
@@ -2029,12 +1780,10 @@ fsevents@^1.2.2:
 function-bind@^1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
-  integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
 
 gauge@~2.7.3:
   version "2.7.4"
   resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
-  integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
   dependencies:
     aproba "^1.0.3"
     console-control-strings "^1.0.0"
@@ -2048,22 +1797,18 @@ gauge@~2.7.3:
 get-assigned-identifiers@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1"
-  integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==
 
 get-stream@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
-  integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
 
 get-value@^2.0.3, get-value@^2.0.6:
   version "2.0.6"
   resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
-  integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
 
 glob-parent@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
-  integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
   dependencies:
     is-glob "^3.1.0"
     path-dirname "^1.0.0"
@@ -2071,7 +1816,6 @@ glob-parent@^3.1.0:
 glob@^7.0.5, glob@^7.1.0, glob@^7.1.1:
   version "7.1.3"
   resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
-  integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
   dependencies:
     fs.realpath "^1.0.0"
     inflight "^1.0.4"
@@ -2083,34 +1827,28 @@ glob@^7.0.5, glob@^7.1.0, glob@^7.1.1:
 globals@^9.18.0:
   version "9.18.0"
   resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
-  integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==
 
 graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3:
   version "4.1.11"
   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
-  integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=
 
 has-ansi@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
-  integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
   dependencies:
     ansi-regex "^2.0.0"
 
 has-flag@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
-  integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
 
 has-unicode@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
-  integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
 
 has-value@^0.3.1:
   version "0.3.1"
   resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
-  integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
   dependencies:
     get-value "^2.0.3"
     has-values "^0.1.4"
@@ -2119,7 +1857,6 @@ has-value@^0.3.1:
 has-value@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
-  integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
   dependencies:
     get-value "^2.0.6"
     has-values "^1.0.0"
@@ -2128,12 +1865,10 @@ has-value@^1.0.0:
 has-values@^0.1.4:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
-  integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
 
 has-values@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
-  integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
   dependencies:
     is-number "^3.0.0"
     kind-of "^4.0.0"
@@ -2141,14 +1876,12 @@ has-values@^1.0.0:
 has@^1.0.0:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
-  integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
   dependencies:
     function-bind "^1.1.1"
 
 hash-base@^3.0.0:
   version "3.0.4"
   resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
-  integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=
   dependencies:
     inherits "^2.0.1"
     safe-buffer "^5.0.1"
@@ -2156,7 +1889,6 @@ hash-base@^3.0.0:
 hash.js@^1.0.0, hash.js@^1.0.3:
   version "1.1.5"
   resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz#e38ab4b85dfb1e0c40fe9265c0e9b54854c23812"
-  integrity sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==
   dependencies:
     inherits "^2.0.3"
     minimalistic-assert "^1.0.1"
@@ -2164,12 +1896,10 @@ hash.js@^1.0.0, hash.js@^1.0.3:
 he@^1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
-  integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0=
 
 hmac-drbg@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
-  integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
   dependencies:
     hash.js "^1.0.3"
     minimalistic-assert "^1.0.0"
@@ -2178,7 +1908,6 @@ hmac-drbg@^1.0.0:
 home-or-tmp@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
-  integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg=
   dependencies:
     os-homedir "^1.0.0"
     os-tmpdir "^1.0.1"
@@ -2186,12 +1915,10 @@ home-or-tmp@^2.0.0:
 htmlescape@^1.1.0:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351"
-  integrity sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=
 
 http-proxy@^1.8.1:
   version "1.17.0"
   resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a"
-  integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==
   dependencies:
     eventemitter3 "^3.0.0"
     follow-redirects "^1.0.0"
@@ -2200,7 +1927,6 @@ http-proxy@^1.8.1:
 http-server@^0.11.1:
   version "0.11.1"
   resolved "https://registry.yarnpkg.com/http-server/-/http-server-0.11.1.tgz#2302a56a6ffef7f9abea0147d838a5e9b6b6a79b"
-  integrity sha512-6JeGDGoujJLmhjiRGlt8yK8Z9Kl0vnl/dQoQZlc4oeqaUoAKQg94NILLfrY3oWzSyFaQCVNTcKE5PZ3cH8VP9w==
   dependencies:
     colors "1.0.3"
     corser "~2.0.0"
@@ -2214,36 +1940,30 @@ http-server@^0.11.1:
 https-browserify@~0.0.0:
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
-  integrity sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=
 
 iconv-lite@^0.4.4:
   version "0.4.24"
   resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
-  integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
   dependencies:
     safer-buffer ">= 2.1.2 < 3"
 
 iconv-lite@~0.4.13:
   version "0.4.18"
   resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.18.tgz#23d8656b16aae6742ac29732ea8f0336a4789cf2"
-  integrity sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==
 
 ieee754@^1.1.4:
   version "1.1.12"
   resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b"
-  integrity sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==
 
 ignore-walk@^3.0.1:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
-  integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==
   dependencies:
     minimatch "^3.0.4"
 
 imports-loader@^0.8.0:
   version "0.8.0"
   resolved "https://registry.yarnpkg.com/imports-loader/-/imports-loader-0.8.0.tgz#030ea51b8ca05977c40a3abfd9b4088fe0be9a69"
-  integrity sha512-kXWL7Scp8KQ4552ZcdVTeaQCZSLW+e6nJfp3cwUMB673T7Hr98Xjx5JK+ql7ADlJUvj1JS5O01RLbKoutN5QDQ==
   dependencies:
     loader-utils "^1.0.2"
     source-map "^0.6.1"
@@ -2251,12 +1971,10 @@ imports-loader@^0.8.0:
 indexof@0.0.1:
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
-  integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=
 
 inflight@^1.0.4:
   version "1.0.6"
   resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
-  integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
   dependencies:
     once "^1.3.0"
     wrappy "1"
@@ -2264,29 +1982,24 @@ inflight@^1.0.4:
 inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
   version "2.0.3"
   resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
-  integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
 
 inherits@2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
-  integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
 
 ini@~1.3.0:
   version "1.3.5"
   resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
-  integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
 
 inline-source-map@~0.6.0:
   version "0.6.2"
   resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5"
-  integrity sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=
   dependencies:
     source-map "~0.5.3"
 
 insert-module-globals@^7.0.0:
   version "7.2.0"
   resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.2.0.tgz#ec87e5b42728479e327bd5c5c71611ddfb4752ba"
-  integrity sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw==
   dependencies:
     JSONStream "^1.0.3"
     acorn-node "^1.5.2"
@@ -2302,14 +2015,12 @@ insert-module-globals@^7.0.0:
 inspect-with-kind@^1.0.2, inspect-with-kind@^1.0.3, inspect-with-kind@^1.0.4:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/inspect-with-kind/-/inspect-with-kind-1.0.5.tgz#fce151d4ce89722c82ca8e9860bb96f9167c316c"
-  integrity sha512-MAQUJuIo7Xqk8EVNP+6d3CKq9c80hi4tjIbIAT6lmGW9W6WzlHiu9PS8uSuUYU+Do+j1baiFp3H25XEVxDIG2g==
   dependencies:
     kind-of "^6.0.2"
 
 "install-purescript-cli@^0.4.0 || ^0.3.0":
   version "0.3.0"
   resolved "https://registry.yarnpkg.com/install-purescript-cli/-/install-purescript-cli-0.3.0.tgz#0281c3962809481eece66c59c4bd4be8de968cf2"
-  integrity sha512-fxxJ2nnKfDHli530XVz7w5bd5I7UKODtVjMLJuvpOHPSqPfHgOPqHat2vjPTqaW5B4sHt3NYGopvt/fYPfwl2A==
   dependencies:
     chalk "^2.4.1"
     install-purescript "^0.4.0"
@@ -2329,7 +2040,6 @@ inspect-with-kind@^1.0.2, inspect-with-kind@^1.0.3, inspect-with-kind@^1.0.4:
 install-purescript@^0.4.0:
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/install-purescript/-/install-purescript-0.4.0.tgz#4e07ebc8bb5ffa512720f5df54c0a9beaa04eb7b"
-  integrity sha512-hXfy12CP/aSCxEhx75kA2jTsbUrkQYFwbolNIrFcFVaiSYc3GpEcAsLqSuijzMCtfxAq+2S6Uw5o6QrVVNVpwQ==
   dependencies:
     app-cache-dir "^0.3.0"
     arch "^2.1.0"
@@ -2352,54 +2062,46 @@ install-purescript@^0.4.0:
 invariant@^2.2.2:
   version "2.2.4"
   resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
-  integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
   dependencies:
     loose-envify "^1.0.0"
 
 is-accessor-descriptor@^0.1.6:
   version "0.1.6"
   resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
-  integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
   dependencies:
     kind-of "^3.0.2"
 
 is-accessor-descriptor@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
-  integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
   dependencies:
     kind-of "^6.0.0"
 
 is-binary-path@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
-  integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
   dependencies:
     binary-extensions "^1.0.0"
 
 is-buffer@^1.1.0, is-buffer@^1.1.5:
   version "1.1.6"
   resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
-  integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
 
 is-data-descriptor@^0.1.4:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
-  integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
   dependencies:
     kind-of "^3.0.2"
 
 is-data-descriptor@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
-  integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
   dependencies:
     kind-of "^6.0.0"
 
 is-descriptor@^0.1.0:
   version "0.1.6"
   resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
-  integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
   dependencies:
     is-accessor-descriptor "^0.1.6"
     is-data-descriptor "^0.1.4"
@@ -2408,7 +2110,6 @@ is-descriptor@^0.1.0:
 is-descriptor@^1.0.0, is-descriptor@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
-  integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
   dependencies:
     is-accessor-descriptor "^1.0.0"
     is-data-descriptor "^1.0.0"
@@ -2417,118 +2118,98 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2:
 is-dir@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-dir/-/is-dir-1.0.0.tgz#41d37f495fccacc05a4778d66e83024c292ba3ff"
-  integrity sha1-QdN/SV/MrMBaR3jWboMCTCkro/8=
 
 is-extendable@^0.1.0, is-extendable@^0.1.1:
   version "0.1.1"
   resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
-  integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
 
 is-extendable@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
-  integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
   dependencies:
     is-plain-object "^2.0.4"
 
 is-extglob@^2.1.0, is-extglob@^2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
-  integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
 
 is-finite@^1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
-  integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
   dependencies:
     number-is-nan "^1.0.0"
 
 is-fullwidth-code-point@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
-  integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
   dependencies:
     number-is-nan "^1.0.0"
 
 is-fullwidth-code-point@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
-  integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
 
 is-glob@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
-  integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
   dependencies:
     is-extglob "^2.1.0"
 
 is-glob@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0"
-  integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=
   dependencies:
     is-extglob "^2.1.1"
 
 is-number@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
-  integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
   dependencies:
     kind-of "^3.0.2"
 
 is-plain-obj@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
-  integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
 
 is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
   version "2.0.4"
   resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
-  integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
   dependencies:
     isobject "^3.0.1"
 
 is-stream@^1.0.1, is-stream@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
-  integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
 
 is-windows@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
-  integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
 
 isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
-  integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
 
 isarray@^2.0.4:
   version "2.0.4"
   resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.4.tgz#38e7bcbb0f3ba1b7933c86ba1894ddfc3781bbb7"
-  integrity sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA==
 
 isexe@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
-  integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
 
 isobject@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
-  integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
   dependencies:
     isarray "1.0.0"
 
 isobject@^3.0.0, isobject@^3.0.1:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
-  integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
 
 isomorphic-fetch@^2.1.1:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
-  integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=
   dependencies:
     node-fetch "^1.0.1"
     whatwg-fetch ">=0.10.0"
@@ -2536,78 +2217,64 @@ isomorphic-fetch@^2.1.1:
 js-tokens@^3.0.0, js-tokens@^3.0.2:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
-  integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
 
 jsesc@^1.3.0:
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
-  integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s=
 
 jsesc@~0.5.0:
   version "0.5.0"
   resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
-  integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
 
 json-stable-stringify@~0.0.0:
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45"
-  integrity sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=
   dependencies:
     jsonify "~0.0.0"
 
 json5@^0.5.0, json5@^0.5.1:
   version "0.5.1"
   resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
-  integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
 
 jsonify@~0.0.0:
   version "0.0.0"
   resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
-  integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=
 
 jsonparse@0.0.5:
   version "0.0.5"
   resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-0.0.5.tgz#330542ad3f0a654665b778f3eb2d9a9fa507ac64"
-  integrity sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=
 
 jsonparse@^1.2.0:
   version "1.3.1"
   resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
-  integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=
 
 junk@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/junk/-/junk-2.1.0.tgz#f431b4b7f072dc500a5f10ce7f4ec71930e70134"
-  integrity sha1-9DG0t/By3FAKXxDOf07HGTDnATQ=
 
 kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
   version "3.2.2"
   resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
-  integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
   dependencies:
     is-buffer "^1.1.5"
 
 kind-of@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
-  integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
   dependencies:
     is-buffer "^1.1.5"
 
 kind-of@^5.0.0:
   version "5.1.0"
   resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
-  integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
 
 kind-of@^6.0.0, kind-of@^6.0.2:
   version "6.0.2"
   resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
-  integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
 
 labeled-stream-splicer@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz#9cffa32fd99e1612fd1d86a8db962416d5292926"
-  integrity sha512-MC94mHZRvJ3LfykJlTUipBqenZz1pacOZEMhhQ8dMGcDHs0SBE5GbsavUXV7YtP3icBW17W0Zy1I0lfASmo9Pg==
   dependencies:
     inherits "^2.0.1"
     isarray "^2.0.4"
@@ -2616,7 +2283,6 @@ labeled-stream-splicer@^2.0.0:
 load-from-cwd-or-npm@^2.2.1:
   version "2.2.2"
   resolved "https://registry.yarnpkg.com/load-from-cwd-or-npm/-/load-from-cwd-or-npm-2.2.2.tgz#86d21082f13c7cb4969ddeb90d0261c18b671e42"
-  integrity sha512-Ox0Cl1RfKMKrwqhBqYADWeFspY28bhlaJVe08GJqYtVYoE0kyAnWBOnw3V/+HDoeWb7o33X/ZUcvamIlJ4O4Gg==
   dependencies:
     inspect-with-kind "^1.0.4"
     npm-cli-dir "^2.0.1"
@@ -2626,14 +2292,12 @@ load-from-cwd-or-npm@^2.2.1:
 load-request-from-cwd-or-npm@^2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/load-request-from-cwd-or-npm/-/load-request-from-cwd-or-npm-2.0.1.tgz#27a87ec70e56f20708280c8f42bc3b4ca3793a6e"
-  integrity sha512-RMDblVBrhyatt2KBScYzbPZrg2KGOryEdcAXIF3Jh3nqcE1awqUtJABwkPv1UrC802QFFxn/mn10m9dHN+fXrQ==
   dependencies:
     load-from-cwd-or-npm "^2.2.1"
 
 loader-utils@^1.0.2:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
-  integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=
   dependencies:
     big.js "^3.1.3"
     emojis-list "^2.0.0"
@@ -2642,29 +2306,24 @@ loader-utils@^1.0.2:
 lodash.debounce@^4.0.8:
   version "4.0.8"
   resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
-  integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
 
 lodash.memoize@~3.0.3:
   version "3.0.4"
   resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f"
-  integrity sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=
 
 lodash@^4.17.4, lodash@latest:
   version "4.17.5"
   resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511"
-  integrity sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==
 
 log-symbols@^2.2.0:
   version "2.2.0"
   resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
-  integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==
   dependencies:
     chalk "^2.0.1"
 
 log-update@^2.3.0:
   version "2.3.0"
   resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708"
-  integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg=
   dependencies:
     ansi-escapes "^3.0.0"
     cli-cursor "^2.0.0"
@@ -2673,14 +2332,12 @@ log-update@^2.3.0:
 loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1:
   version "1.3.1"
   resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
-  integrity sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=
   dependencies:
     js-tokens "^3.0.0"
 
 lru-cache@^4.0.1:
   version "4.1.3"
   resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c"
-  integrity sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==
   dependencies:
     pseudomap "^1.0.2"
     yallist "^2.1.2"
@@ -2688,19 +2345,16 @@ lru-cache@^4.0.1:
 map-cache@^0.2.2:
   version "0.2.2"
   resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
-  integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
 
 map-visit@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
-  integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
   dependencies:
     object-visit "^1.0.0"
 
 md5.js@^1.3.4:
   version "1.3.4"
   resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d"
-  integrity sha1-6b296UogpawYsENA/Fdk1bCdkB0=
   dependencies:
     hash-base "^3.0.0"
     inherits "^2.0.1"
@@ -2708,7 +2362,6 @@ md5.js@^1.3.4:
 micromatch@^3.1.4:
   version "3.1.10"
   resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
-  integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
   dependencies:
     arr-diff "^4.0.0"
     array-unique "^0.3.2"
@@ -2727,7 +2380,6 @@ micromatch@^3.1.4:
 miller-rabin@^4.0.0:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
-  integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
   dependencies:
     bn.js "^4.0.0"
     brorand "^1.0.1"
@@ -2735,49 +2387,40 @@ miller-rabin@^4.0.0:
 mime@^1.2.9, mime@^1.6.0:
   version "1.6.0"
   resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
-  integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
 
 mimic-fn@^1.0.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
-  integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
 
 minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
-  integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
 
 minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
-  integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
 
 minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4:
   version "3.0.4"
   resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
-  integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
   dependencies:
     brace-expansion "^1.1.7"
 
 minimist@0.0.8:
   version "0.0.8"
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
-  integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
 
 minimist@^1.1.0, minimist@^1.2.0:
   version "1.2.0"
   resolved "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
-  integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
 
 minimist@~0.0.1:
   version "0.0.10"
   resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
-  integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=
 
 minipass@^2.2.1, minipass@^2.3.3:
   version "2.3.4"
   resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957"
-  integrity sha512-mlouk1OHlaUE8Odt1drMtG1bAJA4ZA6B/ehysgV0LUIrDHdKgo1KorZq3pK0b/7Z7LJIQ12MNM6aC+Tn6lUZ5w==
   dependencies:
     safe-buffer "^5.1.2"
     yallist "^3.0.0"
@@ -2785,14 +2428,12 @@ minipass@^2.2.1, minipass@^2.3.3:
 minizlib@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb"
-  integrity sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==
   dependencies:
     minipass "^2.2.1"
 
 mixin-deep@^1.2.0:
   version "1.3.1"
   resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
-  integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==
   dependencies:
     for-in "^1.0.2"
     is-extendable "^1.0.1"
@@ -2800,14 +2441,12 @@ mixin-deep@^1.2.0:
 mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1:
   version "0.5.1"
   resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
-  integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
   dependencies:
     minimist "0.0.8"
 
 module-deps@^4.0.8:
   version "4.1.1"
   resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-4.1.1.tgz#23215833f1da13fd606ccb8087b44852dcb821fd"
-  integrity sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=
   dependencies:
     JSONStream "^1.0.3"
     browser-resolve "^1.7.0"
@@ -2828,7 +2467,6 @@ module-deps@^4.0.8:
 mold-source-map@^0.4.0:
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/mold-source-map/-/mold-source-map-0.4.0.tgz#cf67e0b31c47ab9badb5c9c25651862127bb8317"
-  integrity sha1-z2fgsxxHq5uttcnCVlGGISe7gxc=
   dependencies:
     convert-source-map "^1.1.0"
     through "~2.2.7"
@@ -2836,27 +2474,22 @@ mold-source-map@^0.4.0:
 ms@2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
-  integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
 
 ms@^2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
-  integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
 
 mute-stream@~0.0.4:
   version "0.0.7"
   resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
-  integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
 
 nan@^2.9.2:
   version "2.11.0"
   resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.0.tgz#574e360e4d954ab16966ec102c0c049fd961a099"
-  integrity sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw==
 
 nanomatch@^1.2.9:
   version "1.2.13"
   resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
-  integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
   dependencies:
     arr-diff "^4.0.0"
     array-unique "^0.3.2"
@@ -2873,7 +2506,6 @@ nanomatch@^1.2.9:
 neat-frame@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/neat-frame/-/neat-frame-1.0.1.tgz#869ce2ca7e121dc5afd3648fbe80249ec8fd7990"
-  integrity sha512-4rcKecmbH5Wkk/iIzvN9E0x1OtFOLbGNIcag8z+oedZPhqWOVKZ+YOvoK6bA32Z7TbC7xhSgF2cVpiAePZCtEA==
   dependencies:
     inspect-with-kind "^1.0.4"
     string-width "^2.1.1"
@@ -2883,7 +2515,6 @@ neat-frame@^1.0.1:
 neat-stack@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/neat-stack/-/neat-stack-1.0.0.tgz#d3e867acc4bb15bf8d518762beb6aa76a632d151"
-  integrity sha512-T8/XRUmzb+trkqF3gEKFZoidbOodhXIKYvDwO0yi9cVs+6f0geF4xy/VOEX2v3ewUq+OJnpBldXUjiC7Ng+cyw==
   dependencies:
     chalk "^2.4.0"
     clean-stack "^1.3.0"
@@ -2891,7 +2522,6 @@ neat-stack@^1.0.0:
 needle@^2.2.1:
   version "2.2.2"
   resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.2.tgz#1120ca4c41f2fcc6976fd28a8968afe239929418"
-  integrity sha512-mW7W8dKuVYefCpNzE3Z7xUmPI9wSrSL/1qH31YGMxmSOAnjatS3S9Zv3cmiHrhx3Jkp1SrWWBdOFXjfF48Uq3A==
   dependencies:
     debug "^2.1.2"
     iconv-lite "^0.4.4"
@@ -2900,17 +2530,14 @@ needle@^2.2.1:
 neo-async@^2.5.0:
   version "2.5.2"
   resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.2.tgz#489105ce7bc54e709d736b195f82135048c50fcc"
-  integrity sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw==
 
 nice-try@^1.0.4:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
-  integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
 
 node-fetch@^1.0.1:
   version "1.7.2"
   resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.2.tgz#c54e9aac57e432875233525f3c891c4159ffefd7"
-  integrity sha512-xZZUq2yDhKMIn/UgG5q//IZSNLJIwW2QxS14CNH5spuiXkITM2pUitjdq58yLSaU7m4M0wBNaM2Gh/ggY4YJig==
   dependencies:
     encoding "^0.1.11"
     is-stream "^1.0.1"
@@ -2918,7 +2545,6 @@ node-fetch@^1.0.1:
 node-pre-gyp@^0.10.0:
   version "0.10.3"
   resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
-  integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==
   dependencies:
     detect-libc "^1.0.2"
     mkdirp "^0.5.1"
@@ -2934,7 +2560,6 @@ node-pre-gyp@^0.10.0:
 node-static@^0.7.9:
   version "0.7.10"
   resolved "https://registry.yarnpkg.com/node-static/-/node-static-0.7.10.tgz#a1ddb72027c7f67179fb33487807b57e8bc7d2e7"
-  integrity sha512-bd7zO5hvCWzdglgwz9t82T4mYTEUzEG5pXnSqEzitvmEacusbhl8/VwuCbMaYR9g2PNK5191yBtAEQLJEmQh1A==
   dependencies:
     colors ">=0.6.0"
     mime "^1.2.9"
@@ -2943,7 +2568,6 @@ node-static@^0.7.9:
 nopt@^4.0.1:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
-  integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=
   dependencies:
     abbrev "1"
     osenv "^0.1.4"
@@ -2951,26 +2575,22 @@ nopt@^4.0.1:
 normalize-path@^2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
-  integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
   dependencies:
     remove-trailing-separator "^1.0.1"
 
 npm-bundled@^1.0.1:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979"
-  integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==
 
 npm-cli-dir@^2.0.1, npm-cli-dir@^2.0.2:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/npm-cli-dir/-/npm-cli-dir-2.0.2.tgz#291fec5eb6eb722868011aee5f5ac028c184a573"
-  integrity sha512-ibO7mB5Na7yv4fFTi39y3dKeK0D51ttyldqqOZKR9GU0Qwr0FFycQhXIliwqzNCVRkNi/iTG0D9WIVt7pP+vGQ==
   dependencies:
     npm-cli-path "^2.0.1"
 
 npm-cli-path@^2.0.1:
   version "2.0.5"
   resolved "https://registry.yarnpkg.com/npm-cli-path/-/npm-cli-path-2.0.5.tgz#a7853c21ef77ffb71abff94d48ea07301e35e600"
-  integrity sha512-Mdd8f1l0o7KUkL8Mty5XbaJVD6hQ/Kq10AFgyjhHg6d/0KHXc4p/O6hPWXSmoJ/RXyzPKIqDCXM1zq46i+Yfeg==
   dependencies:
     executing-npm-path "^0.1.0"
     real-executable-path "^2.0.2"
@@ -2979,7 +2599,6 @@ npm-cli-path@^2.0.1:
 npm-packlist@^1.1.6:
   version "1.1.11"
   resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de"
-  integrity sha512-CxKlZ24urLkJk+9kCm48RTQ7L4hsmgSVzEk0TLGPzzyuFxD7VNgy5Sl24tOLMzQv773a/NeJ1ce1DKeacqffEA==
   dependencies:
     ignore-walk "^3.0.1"
     npm-bundled "^1.0.1"
@@ -2987,14 +2606,12 @@ npm-packlist@^1.1.6:
 npm-run-path@^2.0.0:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
-  integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
   dependencies:
     path-key "^2.0.0"
 
 npmlog@^4.0.2:
   version "4.1.2"
   resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
-  integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
   dependencies:
     are-we-there-yet "~1.1.2"
     console-control-strings "~1.1.0"
@@ -3004,17 +2621,14 @@ npmlog@^4.0.2:
 number-is-nan@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
-  integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
 
 object-assign@^4.1.0, object-assign@^4.1.1:
   version "4.1.1"
   resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
-  integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
 
 object-copy@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
-  integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
   dependencies:
     copy-descriptor "^0.1.0"
     define-property "^0.2.5"
@@ -3023,40 +2637,34 @@ object-copy@^0.1.0:
 object-visit@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
-  integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
   dependencies:
     isobject "^3.0.0"
 
 object.pick@^1.3.0:
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
-  integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
   dependencies:
     isobject "^3.0.1"
 
 once@^1.3.0, once@^1.3.1, once@^1.4.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
-  integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
   dependencies:
     wrappy "1"
 
 onetime@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
-  integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
   dependencies:
     mimic-fn "^1.0.0"
 
 opener@~1.4.0:
   version "1.4.3"
   resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8"
-  integrity sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=
 
 optimist@0.6.x, optimist@>=0.3.4:
   version "0.6.1"
   resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
-  integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY=
   dependencies:
     minimist "~0.0.1"
     wordwrap "~0.0.2"
@@ -3064,27 +2672,22 @@ optimist@0.6.x, optimist@>=0.3.4:
 optional@^0.1.4:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/optional/-/optional-0.1.4.tgz#cdb1a9bedc737d2025f690ceeb50e049444fd5b3"
-  integrity sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw==
 
 os-browserify@~0.1.1:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.1.2.tgz#49ca0293e0b19590a5f5de10c7f265a617d8fe54"
-  integrity sha1-ScoCk+CxlZCl9d4Qx/JlphfY/lQ=
 
 os-homedir@^1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
-  integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
 
 os-tmpdir@^1.0.0, os-tmpdir@^1.0.1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
-  integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
 
 osenv@^0.1.4:
   version "0.1.5"
   resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
-  integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
   dependencies:
     os-homedir "^1.0.0"
     os-tmpdir "^1.0.0"
@@ -3092,24 +2695,20 @@ osenv@^0.1.4:
 p-finally@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
-  integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
 
 pako@~0.2.0:
   version "0.2.9"
   resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
-  integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=
 
 parents@^1.0.0, parents@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751"
-  integrity sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=
   dependencies:
     path-platform "~0.11.15"
 
 parse-asn1@^5.0.0:
   version "5.1.1"
   resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8"
-  integrity sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==
   dependencies:
     asn1.js "^4.0.0"
     browserify-aes "^1.0.0"
@@ -3120,42 +2719,34 @@ parse-asn1@^5.0.0:
 pascalcase@^0.1.1:
   version "0.1.1"
   resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
-  integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
 
 path-browserify@~0.0.0:
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
-  integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
 
 path-dirname@^1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
-  integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
 
 path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
-  integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
 
 path-key@^2.0.0, path-key@^2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
-  integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
 
 path-parse@^1.0.5:
   version "1.0.6"
   resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
-  integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
 
 path-platform@~0.11.15:
   version "0.11.15"
   resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2"
-  integrity sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=
 
 pbkdf2@^3.0.3:
   version "3.0.16"
   resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c"
-  integrity sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==
   dependencies:
     create-hash "^1.1.2"
     create-hmac "^1.1.4"
@@ -3166,14 +2757,12 @@ pbkdf2@^3.0.3:
 platform-name@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/platform-name/-/platform-name-1.0.0.tgz#3396ea7bfea3a68aedd13483e055100f9e609755"
-  integrity sha512-ZRbqJ30uRRKGKW2O1XnG/Ls1K/aBGlnyjq1Z0BbjqDPTNN+XZKFaugCsCm3/mq6XGR5DZNVdV75afpQEvNNY3Q==
   dependencies:
     inspect-with-kind "^1.0.4"
 
 portfinder@^1.0.13:
   version "1.0.17"
   resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.17.tgz#a8a1691143e46c4735edefcf4fbcccedad26456a"
-  integrity sha512-syFcRIRzVI1BoEFOCaAiizwDolh1S1YXSodsVhncbhjzjZQulhczNRbqnUl9N31Q4dKGOXsNDqxC2BWBgSMqeQ==
   dependencies:
     async "^1.5.2"
     debug "^2.2.0"
@@ -3182,12 +2771,10 @@ portfinder@^1.0.13:
 posix-character-classes@^0.1.0:
   version "0.1.1"
   resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
-  integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
 
 prepare-write@^0.3.1:
   version "0.3.1"
   resolved "https://registry.yarnpkg.com/prepare-write/-/prepare-write-0.3.1.tgz#7a2fe52f269f5bedc27bae253be434f330743b67"
-  integrity sha512-p4NqFH9qi2Qjkh8OxdUSbF32+OVp6j/Vu/RQC/v0Yar5nWdmLQvDm+uEjy9Z8c+HgqC0tS0eZRLHnn+AWAk3Hg==
   dependencies:
     graceful-fs "^4.1.11"
     inspect-with-kind "^1.0.2"
@@ -3197,7 +2784,6 @@ prepare-write@^0.3.1:
 prepare-write@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/prepare-write/-/prepare-write-1.0.0.tgz#9ad085e39e541d3b36142496419d2335c7e34199"
-  integrity sha512-p3OWhGbr3136RlcX5hRY1ohxUV0PoP0Xy1hAbHo2U1LA6IMJYeu9t9AqBI/08iMh2F+4zzH5aVxKgqoTh/45ig==
   dependencies:
     graceful-fs "^4.1.11"
     inspect-with-kind "^1.0.4"
@@ -3207,34 +2793,28 @@ prepare-write@^1.0.0:
 private@^0.1.6, private@^0.1.7:
   version "0.1.8"
   resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
-  integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==
 
 process-nextick-args@~1.0.6:
   version "1.0.7"
   resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
-  integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=
 
 process-nextick-args@~2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
-  integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
 
 process@~0.11.0:
   version "0.11.10"
   resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
-  integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
 
 promise@^7.1.1:
   version "7.3.1"
   resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
-  integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==
   dependencies:
     asap "~2.0.3"
 
 prop-types@15.6.2:
   version "15.6.2"
   resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102"
-  integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==
   dependencies:
     loose-envify "^1.3.1"
     object-assign "^4.1.1"
@@ -3242,7 +2822,6 @@ prop-types@15.6.2:
 prop-types@^15.6.0:
   version "15.6.1"
   resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca"
-  integrity sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ==
   dependencies:
     fbjs "^0.8.16"
     loose-envify "^1.3.1"
@@ -3251,12 +2830,10 @@ prop-types@^15.6.0:
 pseudomap@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
-  integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
 
 public-encrypt@^4.0.0:
   version "4.0.2"
   resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.2.tgz#46eb9107206bf73489f8b85b69d91334c6610994"
-  integrity sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==
   dependencies:
     bn.js "^4.1.0"
     browserify-rsa "^4.0.0"
@@ -3267,7 +2844,6 @@ public-encrypt@^4.0.0:
 pulp@^12.3.0:
   version "12.3.0"
   resolved "https://registry.yarnpkg.com/pulp/-/pulp-12.3.0.tgz#8721b8528ef55816384360c2e63f04be0fd447a1"
-  integrity sha512-Sm1XQg2h2JBVHWK3bxSHnmMdMoM0hEi5cbGfBBLpM6E2qU1vjJhDJsO/8bEkxC2RvNAAEOWROKMI3tTzmVxLbQ==
   dependencies:
     browserify "^13.1.0"
     browserify-incremental "^3.0.1"
@@ -3289,7 +2865,6 @@ pulp@^12.3.0:
 pump@^1.0.0, pump@^1.0.2:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954"
-  integrity sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==
   dependencies:
     end-of-stream "^1.1.0"
     once "^1.3.1"
@@ -3297,7 +2872,6 @@ pump@^1.0.0, pump@^1.0.2:
 pump@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
-  integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
   dependencies:
     end-of-stream "^1.1.0"
     once "^1.3.1"
@@ -3305,46 +2879,38 @@ pump@^3.0.0:
 punycode@1.3.2:
   version "1.3.2"
   resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
-  integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
 
 punycode@^1.3.2:
   version "1.4.1"
   resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
-  integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
 
 purescript@^0.12.0:
   version "0.12.0"
   resolved "https://registry.yarnpkg.com/purescript/-/purescript-0.12.0.tgz#45331c61c586f09dcae20bb5242705831ef0ec20"
-  integrity sha512-q9kYKqjcukY3/4xdu3wk13Qs6po3NQR1QLGTmyVgqjKpz8l7coZCAx5Ajpi3u2Qla7eXurgD3mWFo0iMOUzUUA==
   dependencies:
     install-purescript-cli "^0.4.0 || ^0.3.0"
 
 qs@~2.3.3:
   version "2.3.3"
   resolved "https://registry.yarnpkg.com/qs/-/qs-2.3.3.tgz#e9e85adbe75da0bbe4c8e0476a086290f863b404"
-  integrity sha1-6eha2+ddoLvkyOBHaghikPhjtAQ=
 
 querystring-es3@~0.2.0:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
-  integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
 
 querystring@0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
-  integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
 
 randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
   version "2.0.6"
   resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80"
-  integrity sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==
   dependencies:
     safe-buffer "^5.1.0"
 
 randomfill@^1.0.3:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
-  integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
   dependencies:
     randombytes "^2.0.5"
     safe-buffer "^5.1.0"
@@ -3352,14 +2918,12 @@ randomfill@^1.0.3:
 rate-map@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/rate-map/-/rate-map-1.0.1.tgz#10436b75145053e0d5eb4b30521741652304cb4b"
-  integrity sha512-7Y7PeDrzR/hA3QP//S3Kt/8v9zyjwSzWeFPbMEtqwLg8jyUNgmh039NyNKguR9e9ixAhmDB7yuz9kZxlujuQ7Q==
   dependencies:
     append-type "^1.0.1"
 
 rc@^1.2.7:
   version "1.2.8"
   resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
-  integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
   dependencies:
     deep-extend "^0.6.0"
     ini "~1.3.0"
@@ -3369,7 +2933,6 @@ rc@^1.2.7:
 react-dom@^16.4.2:
   version "16.4.2"
   resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.4.2.tgz#4afed569689f2c561d2b8da0b819669c38a0bda4"
-  integrity sha512-Usl73nQqzvmJN+89r97zmeUpQDKDlh58eX6Hbs/ERdDHzeBzWy+ENk7fsGQ+5KxArV1iOFPT46/VneklK9zoWw==
   dependencies:
     fbjs "^0.8.16"
     loose-envify "^1.1.0"
@@ -3379,7 +2942,6 @@ react-dom@^16.4.2:
 react-echarts-v3@^1.0.19:
   version "1.0.19"
   resolved "https://registry.yarnpkg.com/react-echarts-v3/-/react-echarts-v3-1.0.19.tgz#04148f16e3e7f01c2f6f3e6f0654bb32f238c2dc"
-  integrity sha512-2ro1lU/nfuIVxdrdvK0ZL2/tgxHmDMEeDY++JYfvDqZci//i9fGvBaKDJC/ZHgGmknffqXESoAOwZSgVgc0XOA==
   dependencies:
     element-resize-detector latest
     lodash latest
@@ -3387,12 +2949,10 @@ react-echarts-v3@^1.0.19:
 react-sigma@^1.2.30:
   version "1.2.30"
   resolved "https://registry.yarnpkg.com/react-sigma/-/react-sigma-1.2.30.tgz#794f88e796c4f763158afe404d10d9635f848846"
-  integrity sha512-8KVwKwHO9vrX1VohusZZm8ldMab32EHLZKkU1TrAnvSOHv6it6EEMwPOOtkJZOirnydKM0cXpxfFQv2LdBFAqQ==
 
 react@^16.4.2:
   version "16.4.2"
   resolved "https://registry.yarnpkg.com/react/-/react-16.4.2.tgz#2cd90154e3a9d9dd8da2991149fdca3c260e129f"
-  integrity sha512-dMv7YrbxO4y2aqnvA7f/ik9ibeLSHQJTI6TrYAenPSaQ6OXfb+Oti+oJiy8WBxgRzlKatYqtCjphTgDSCEiWFg==
   dependencies:
     fbjs "^0.8.16"
     loose-envify "^1.1.0"
@@ -3402,21 +2962,18 @@ react@^16.4.2:
 read-only-stream@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0"
-  integrity sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=
   dependencies:
     readable-stream "^2.0.2"
 
 read@^1.0.7:
   version "1.0.7"
   resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4"
-  integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=
   dependencies:
     mute-stream "~0.0.4"
 
 readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6:
   version "2.3.6"
   resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
-  integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
   dependencies:
     core-util-is "~1.0.0"
     inherits "~2.0.3"
@@ -3429,7 +2986,6 @@ readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable
 readable-stream@~2.0.0:
   version "2.0.6"
   resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
-  integrity sha1-j5A0HmilPMySh4jaz80Rs265t44=
   dependencies:
     core-util-is "~1.0.0"
     inherits "~2.0.1"
@@ -3441,7 +2997,6 @@ readable-stream@~2.0.0:
 readdir-clean@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/readdir-clean/-/readdir-clean-1.0.0.tgz#2c578af9edcd45a13229585a0d211cf22e54c256"
-  integrity sha512-9+/foOFyAlmXdMLIsrSm/aoBxnSQ+8fruH814Z3hm5xlwfKYP35qhdJH05KYSSd0RUw9cPEKqvgKdGNjn88aYg==
   dependencies:
     graceful-fs "^4.1.11"
     junk "^2.1.0"
@@ -3449,7 +3004,6 @@ readdir-clean@^1.0.0:
 readdirp@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
-  integrity sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=
   dependencies:
     graceful-fs "^4.1.2"
     minimatch "^3.0.2"
@@ -3459,7 +3013,6 @@ readdirp@^2.0.0:
 real-executable-path-callback@^2.1.2:
   version "2.1.2"
   resolved "https://registry.yarnpkg.com/real-executable-path-callback/-/real-executable-path-callback-2.1.2.tgz#fa3afe80f19344628c0f74575655dbdaf1a67133"
-  integrity sha512-dyOgKEhLKNg9tgFPs354X5fQpaAsUT+3dTO3JYoNLdPhMmRDjwwre6zHw58biFMVeFx9yxwI6MC7iMDfxSuMJA==
   dependencies:
     inspect-with-kind "^1.0.4"
     is-plain-obj "^1.1.0"
@@ -3468,24 +3021,20 @@ real-executable-path-callback@^2.1.2:
 real-executable-path@^2.0.2:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/real-executable-path/-/real-executable-path-2.0.2.tgz#121ee5bb7d09e55c2ddd5f2bd38b9f0d9c6b5f24"
-  integrity sha512-fRv44zvrzFeItoj/f/SNBqO/VWUHSZeqQ28oPOzd6weXaiRG6OVGu7UrHe6pY8JlXeoe/7gWYv6kOFHmHk4EFw==
   dependencies:
     real-executable-path-callback "^2.1.2"
 
 regenerate@^1.2.1:
   version "1.3.3"
   resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f"
-  integrity sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==
 
 regenerator-runtime@^0.11.0:
   version "0.11.1"
   resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
-  integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
 
 regenerator-transform@^0.10.0:
   version "0.10.1"
   resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd"
-  integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==
   dependencies:
     babel-runtime "^6.18.0"
     babel-types "^6.19.0"
@@ -3494,7 +3043,6 @@ regenerator-transform@^0.10.0:
 regex-not@^1.0.0, regex-not@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
-  integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
   dependencies:
     extend-shallow "^3.0.2"
     safe-regex "^1.1.0"
@@ -3502,7 +3050,6 @@ regex-not@^1.0.0, regex-not@^1.0.2:
 regexpu-core@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
-  integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=
   dependencies:
     regenerate "^1.2.1"
     regjsgen "^0.2.0"
@@ -3511,46 +3058,38 @@ regexpu-core@^2.0.0:
 regjsgen@^0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
-  integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=
 
 regjsparser@^0.1.4:
   version "0.1.5"
   resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
-  integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=
   dependencies:
     jsesc "~0.5.0"
 
 remove-trailing-separator@^1.0.1:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
-  integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
 
 repeat-element@^1.1.2:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
-  integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
 
 repeat-string@^1.6.1:
   version "1.6.1"
   resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
-  integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
 
 repeating@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
-  integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
   dependencies:
     is-finite "^1.0.0"
 
 requires-port@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
-  integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
 
 resolve-from-npm@^2.0.4:
   version "2.0.4"
   resolved "https://registry.yarnpkg.com/resolve-from-npm/-/resolve-from-npm-2.0.4.tgz#d331f8b7fc40a710281fdf8ff7daeaf223717495"
-  integrity sha512-JrwN+SRILVjq/mdPNd6bhoOvYMBFf0CYqvfAgaDGB9dWjyr3XDAe40O2WcxToYWMmbQabM4FM6hHVLcSxBPKOQ==
   dependencies:
     inspect-with-kind "^1.0.3"
     npm-cli-dir "^2.0.2"
@@ -3559,29 +3098,24 @@ resolve-from-npm@^2.0.4:
 resolve-from@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
-  integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
 
 resolve-url@^0.2.1:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
-  integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
 
 resolve@1.1.7:
   version "1.1.7"
   resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
-  integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
 
 resolve@^1.1.3, resolve@^1.1.4:
   version "1.8.1"
   resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26"
-  integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==
   dependencies:
     path-parse "^1.0.5"
 
 restore-cursor@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
-  integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
   dependencies:
     onetime "^2.0.0"
     signal-exit "^3.0.2"
@@ -3589,24 +3123,20 @@ restore-cursor@^2.0.0:
 ret@~0.1.10:
   version "0.1.15"
   resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
-  integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
 
 rimraf@^2.5.2, rimraf@^2.6.1, rimraf@^2.6.2:
   version "2.6.2"
   resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
-  integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==
   dependencies:
     glob "^7.0.5"
 
 rimraf@~2.2.6:
   version "2.2.8"
   resolved "http://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582"
-  integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=
 
 ripemd160@^2.0.0, ripemd160@^2.0.1:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
-  integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
   dependencies:
     hash-base "^3.0.0"
     inherits "^2.0.1"
@@ -3614,24 +3144,20 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
 safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
   version "5.1.2"
   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
-  integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
 
 safe-regex@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
-  integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
   dependencies:
     ret "~0.1.10"
 
 "safer-buffer@>= 2.1.2 < 3":
   version "2.1.2"
   resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
-  integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
 
 sander@^0.5.0:
   version "0.5.1"
   resolved "https://registry.yarnpkg.com/sander/-/sander-0.5.1.tgz#741e245e231f07cafb6fdf0f133adfa216a502ad"
-  integrity sha1-dB4kXiMfB8r7b98PEzrfohalAq0=
   dependencies:
     es6-promise "^3.1.2"
     graceful-fs "^4.1.3"
@@ -3641,27 +3167,22 @@ sander@^0.5.0:
 sax@^1.2.4:
   version "1.2.4"
   resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
-  integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
 
 semver@^5.3.0, semver@^5.5.0:
   version "5.5.1"
   resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477"
-  integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==
 
 set-blocking@~2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
-  integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
 
 set-immediate-shim@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
-  integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=
 
 set-value@^0.4.3:
   version "0.4.3"
   resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
-  integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE=
   dependencies:
     extend-shallow "^2.0.1"
     is-extendable "^0.1.1"
@@ -3671,7 +3192,6 @@ set-value@^0.4.3:
 set-value@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
-  integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==
   dependencies:
     extend-shallow "^2.0.1"
     is-extendable "^0.1.1"
@@ -3681,12 +3201,10 @@ set-value@^2.0.0:
 setimmediate@^1.0.5:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
-  integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
 
 sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4:
   version "2.4.11"
   resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
-  integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
   dependencies:
     inherits "^2.0.1"
     safe-buffer "^5.0.1"
@@ -3694,7 +3212,6 @@ sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4:
 shasum@^1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f"
-  integrity sha1-5wEjENj0F/TetXEhUOVni4euVl8=
   dependencies:
     json-stable-stringify "~0.0.0"
     sha.js "~2.4.4"
@@ -3702,19 +3219,16 @@ shasum@^1.0.0:
 shebang-command@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
-  integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
   dependencies:
     shebang-regex "^1.0.0"
 
 shebang-regex@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
-  integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
 
 shell-quote@^1.6.1:
   version "1.6.1"
   resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767"
-  integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=
   dependencies:
     array-filter "~0.0.0"
     array-map "~0.0.0"
@@ -3724,17 +3238,14 @@ shell-quote@^1.6.1:
 signal-exit@^3.0.0, signal-exit@^3.0.2:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
-  integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
 
 simple-concat@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6"
-  integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=
 
 size-rate@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/size-rate/-/size-rate-0.1.0.tgz#58fd22013cf02d18acf5397430d5b16c5d0b84d5"
-  integrity sha512-Yinx2XAfbhJu+Pxz1TD3xFT6nPB54+wyRd4u82Kq+ZqzOtaODYS5/7QJtlOcRxJLUvNXMzJKGvJ/O1KyN/9+hQ==
   dependencies:
     filesize "^3.5.10"
     inspect-with-kind "^1.0.2"
@@ -3742,24 +3253,20 @@ size-rate@^0.1.0:
 size-sensor@^0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/size-sensor/-/size-sensor-0.2.0.tgz#f929368b025b0e69013f30fa24dd473008885eb3"
-  integrity sha512-M3vOXe5lMIsGSO+LIAPZfRk3aGQbVPYGlh5DIWgEOAdjNto1JYELD5eXqIJKAN5ptfjgFN3gG3P0UhL/mg/r+A==
 
 slash@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
-  integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
 
 slice-ansi@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
-  integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==
   dependencies:
     is-fullwidth-code-point "^2.0.0"
 
 snapdragon-node@^2.0.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
-  integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
   dependencies:
     define-property "^1.0.0"
     isobject "^3.0.0"
@@ -3768,14 +3275,12 @@ snapdragon-node@^2.0.1:
 snapdragon-util@^3.0.1:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
-  integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
   dependencies:
     kind-of "^3.2.0"
 
 snapdragon@^0.8.1:
   version "0.8.2"
   resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
-  integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
   dependencies:
     base "^0.11.1"
     debug "^2.2.0"
@@ -3789,7 +3294,6 @@ snapdragon@^0.8.1:
 sorcery@^0.10.0:
   version "0.10.0"
   resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.10.0.tgz#8ae90ad7d7cb05fc59f1ab0c637845d5c15a52b7"
-  integrity sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=
   dependencies:
     buffer-crc32 "^0.2.5"
     minimist "^1.2.0"
@@ -3799,7 +3303,6 @@ sorcery@^0.10.0:
 source-map-resolve@^0.5.0:
   version "0.5.2"
   resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
-  integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==
   dependencies:
     atob "^2.1.1"
     decode-uri-component "^0.2.0"
@@ -3810,34 +3313,28 @@ source-map-resolve@^0.5.0:
 source-map-support@^0.4.15:
   version "0.4.18"
   resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
-  integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==
   dependencies:
     source-map "^0.5.6"
 
 source-map-url@^0.4.0:
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
-  integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
 
 source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.3:
   version "0.5.7"
   resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
-  integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
 
 source-map@^0.6.1:
   version "0.6.1"
   resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
-  integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
 
 sourcemap-codec@^1.3.0:
   version "1.4.1"
   resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.1.tgz#c8fd92d91889e902a07aee392bdd2c5863958ba2"
-  integrity sha512-hX1eNBNuilj8yfFnECh0DzLgwKpBLMIvmhgEhixXNui8lMLBInTI8Kyxt++RwJnMNu7cAUo635L2+N1TxMJCzA==
 
 spawn-stack@^0.5.0:
   version "0.5.0"
   resolved "https://registry.yarnpkg.com/spawn-stack/-/spawn-stack-0.5.0.tgz#67c2fea37d33405a934ef1c7bca3bf86b9f2d3d4"
-  integrity sha512-suwvBV2WNTOYe/TQBoAFrGbdRvo5t/pWYq/vNw24wbSmIJXr/eaadsF+92VyPm2dBYsYwBnsTLhQFCo3EdCA+Q==
   dependencies:
     byline "^5.0.0"
     execa "^0.10.0"
@@ -3847,14 +3344,12 @@ spawn-stack@^0.5.0:
 split-string@^3.0.1, split-string@^3.0.2:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
-  integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
   dependencies:
     extend-shallow "^3.0.0"
 
 static-extend@^0.1.1:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
-  integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
   dependencies:
     define-property "^0.2.5"
     object-copy "^0.1.0"
@@ -3862,7 +3357,6 @@ static-extend@^0.1.1:
 stream-browserify@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
-  integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=
   dependencies:
     inherits "~2.0.1"
     readable-stream "^2.0.2"
@@ -3870,7 +3364,6 @@ stream-browserify@^2.0.0:
 stream-combiner2@^1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe"
-  integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4=
   dependencies:
     duplexer2 "~0.1.0"
     readable-stream "^2.0.2"
@@ -3878,7 +3371,6 @@ stream-combiner2@^1.1.1:
 stream-http@^2.0.0:
   version "2.8.3"
   resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
-  integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
   dependencies:
     builtin-status-codes "^3.0.0"
     inherits "^2.0.1"
@@ -3889,7 +3381,6 @@ stream-http@^2.0.0:
 stream-splicer@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83"
-  integrity sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=
   dependencies:
     inherits "^2.0.1"
     readable-stream "^2.0.2"
@@ -3897,12 +3388,10 @@ stream-splicer@^2.0.0:
 string-stream@0.0.7:
   version "0.0.7"
   resolved "https://registry.yarnpkg.com/string-stream/-/string-stream-0.0.7.tgz#cfcde82799fa62f303429aaa79336ee8834332fe"
-  integrity sha1-z83oJ5n6YvMDQpqqeTNu6INDMv4=
 
 string-width@^1.0.1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
-  integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
   dependencies:
     code-point-at "^1.0.0"
     is-fullwidth-code-point "^1.0.0"
@@ -3911,7 +3400,6 @@ string-width@^1.0.1:
 "string-width@^1.0.2 || 2", string-width@^2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
-  integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
   dependencies:
     is-fullwidth-code-point "^2.0.0"
     strip-ansi "^4.0.0"
@@ -3919,69 +3407,58 @@ string-width@^1.0.1:
 string_decoder@~0.10.0, string_decoder@~0.10.x:
   version "0.10.31"
   resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
-  integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
 
 string_decoder@~1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
-  integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
   dependencies:
     safe-buffer "~5.1.0"
 
 strip-ansi@^3.0.0, strip-ansi@^3.0.1:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
-  integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
   dependencies:
     ansi-regex "^2.0.0"
 
 strip-ansi@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
-  integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
   dependencies:
     ansi-regex "^3.0.0"
 
 strip-eof@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
-  integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
 
 strip-json-comments@~2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
-  integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
 
 subarg@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2"
-  integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI=
   dependencies:
     minimist "^1.1.0"
 
 supports-color@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
-  integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
 
 supports-color@^5.3.0:
   version "5.5.0"
   resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
-  integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
   dependencies:
     has-flag "^3.0.0"
 
 syntax-error@^1.1.1:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c"
-  integrity sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==
   dependencies:
     acorn-node "^1.2.0"
 
 tar-fs@^1.16.0, tar-fs@^1.16.2:
   version "1.16.3"
   resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509"
-  integrity sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==
   dependencies:
     chownr "^1.0.1"
     mkdirp "^0.5.1"
@@ -3991,7 +3468,6 @@ tar-fs@^1.16.0, tar-fs@^1.16.2:
 tar-stream@^1.1.2, tar-stream@^1.5.5, tar-stream@^1.6.1:
   version "1.6.1"
   resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.1.tgz#f84ef1696269d6223ca48f6e1eeede3f7e81f395"
-  integrity sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA==
   dependencies:
     bl "^1.0.0"
     buffer-alloc "^1.1.0"
@@ -4004,7 +3480,6 @@ tar-stream@^1.1.2, tar-stream@^1.5.5, tar-stream@^1.6.1:
 tar-to-file@^0.4.0:
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/tar-to-file/-/tar-to-file-0.4.0.tgz#b998bec435ac72cd6edd0718e184beae6461070e"
-  integrity sha512-DFRBSotqmgeMrU/H7z0VIMPv8taOheRUlAhi6Q+r5Xso9xoa5vez/Z3uvASSzuT1dwe2orAdENT7NXlAh1zwvA==
   dependencies:
     cancelable-pump "^0.4.0"
     graceful-fs "^4.1.11"
@@ -4018,7 +3493,6 @@ tar-to-file@^0.4.0:
 tar@^4:
   version "4.4.6"
   resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b"
-  integrity sha512-tMkTnh9EdzxyfW+6GK6fCahagXsnYk6kE6S9Gr9pjVdys769+laCTbodXDhPAjzVtEBazRgP0gYqOjnk9dQzLg==
   dependencies:
     chownr "^1.0.1"
     fs-minipass "^1.2.5"
@@ -4031,7 +3505,6 @@ tar@^4:
 temp@^0.8.1:
   version "0.8.3"
   resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59"
-  integrity sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=
   dependencies:
     os-tmpdir "^1.0.0"
     rimraf "~2.2.6"
@@ -4039,14 +3512,12 @@ temp@^0.8.1:
 term-size@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69"
-  integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=
   dependencies:
     execa "^0.7.0"
 
 through2@^2.0.0:
   version "2.0.3"
   resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
-  integrity sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=
   dependencies:
     readable-stream "^2.1.5"
     xtend "~4.0.1"
@@ -4054,51 +3525,42 @@ through2@^2.0.0:
 "through@>=2.2.7 <3", through@^2.3.8:
   version "2.3.8"
   resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
-  integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
 
 through@~2.2.7:
   version "2.2.7"
   resolved "https://registry.yarnpkg.com/through/-/through-2.2.7.tgz#6e8e21200191d4eb6a99f6f010df46aa1c6eb2bd"
-  integrity sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=
 
 tilde-path@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/tilde-path/-/tilde-path-2.0.0.tgz#ded931f9d3c522e38118a068d007e5b7523fec25"
-  integrity sha512-3aDt7b/wBbxJjUTMiCW+uu7iqrB6F1DfxSL0qB4biSrP1+knIPveccs7thL34AkzPZ/0T7+oYXZDKiokMc1d6g==
 
 timers-browserify@^1.0.1:
   version "1.4.2"
   resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d"
-  integrity sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=
   dependencies:
     process "~0.11.0"
 
 to-arraybuffer@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
-  integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
 
 to-buffer@^1.1.0:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80"
-  integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==
 
 to-fast-properties@^1.0.3:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
-  integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=
 
 to-object-path@^0.3.0:
   version "0.3.0"
   resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
-  integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
   dependencies:
     kind-of "^3.0.2"
 
 to-regex-range@^2.1.0:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
-  integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
   dependencies:
     is-number "^3.0.0"
     repeat-string "^1.6.1"
@@ -4106,7 +3568,6 @@ to-regex-range@^2.1.0:
 to-regex@^3.0.1, to-regex@^3.0.2:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
-  integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
   dependencies:
     define-property "^2.0.2"
     extend-shallow "^3.0.2"
@@ -4116,29 +3577,24 @@ to-regex@^3.0.1, to-regex@^3.0.2:
 tree-kill@^1.0.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36"
-  integrity sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==
 
 trim-right@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
-  integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
 
 truncated-list@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/truncated-list/-/truncated-list-1.0.1.tgz#08f751c7c044111ece2c7868f5ef736412f2ead4"
-  integrity sha512-aNcDZ1PfxAtUXXLEmy+m1D465lFv0VgWltGlTWuJuhPh+FGeOiHV9S2DYOD8IEgZU8yOInZBRHVcAts+xIYzew==
   dependencies:
     inspect-with-kind "^1.0.4"
 
 tty-browserify@~0.0.0:
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811"
-  integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==
 
 tty-truncate@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/tty-truncate/-/tty-truncate-1.0.0.tgz#0a835a5b5553f00f17f7d65c29f40a55fe217475"
-  integrity sha512-pUnGE8KQJl/aGOkPtAPXcKnJRPNBzn/c+9gWFPtGPtayGUp0luLyM3RST10g5UbybJAWlHUuYjIO4NXsilg6nA==
   dependencies:
     ansi-regex "^3.0.0"
     inspect-with-kind "^1.0.4"
@@ -4148,22 +3604,18 @@ tty-truncate@^1.0.0:
 typedarray@^0.0.6, typedarray@~0.0.5:
   version "0.0.6"
   resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
-  integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
 
 ua-parser-js@^0.7.9:
   version "0.7.14"
   resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.14.tgz#110d53fa4c3f326c121292bbeac904d2e03387ca"
-  integrity sha1-EQ1T+kw/MmwSEpK76skE0uAzh8o=
 
 umd@^3.0.0:
   version "3.0.3"
   resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf"
-  integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==
 
 undeclared-identifiers@^1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/undeclared-identifiers/-/undeclared-identifiers-1.1.2.tgz#7d850a98887cff4bd0bf64999c014d08ed6d1acc"
-  integrity sha512-13EaeocO4edF/3JKime9rD7oB6QI8llAGhgn5fKOPyfkJbRb6NFv9pYV6dFEmpa4uRjKeBqLZP8GpuzqHlKDMQ==
   dependencies:
     acorn-node "^1.3.0"
     get-assigned-identifiers "^1.2.0"
@@ -4173,7 +3625,6 @@ undeclared-identifiers@^1.1.2:
 union-value@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
-  integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=
   dependencies:
     arr-union "^3.1.0"
     get-value "^2.0.6"
@@ -4183,14 +3634,12 @@ union-value@^1.0.0:
 union@~0.4.3:
   version "0.4.6"
   resolved "https://registry.yarnpkg.com/union/-/union-0.4.6.tgz#198fbdaeba254e788b0efcb630bc11f24a2959e0"
-  integrity sha1-GY+9rrolTniLDvy2MLwR8kopWeA=
   dependencies:
     qs "~2.3.3"
 
 unset-value@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
-  integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
   dependencies:
     has-value "^0.3.1"
     isobject "^3.0.0"
@@ -4198,22 +3647,18 @@ unset-value@^1.0.0:
 upath@^1.0.5:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd"
-  integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==
 
 urix@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
-  integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
 
 url-join@^2.0.5:
   version "2.0.5"
   resolved "https://registry.yarnpkg.com/url-join/-/url-join-2.0.5.tgz#5af22f18c052a000a48d7b82c5e9c2e2feeda728"
-  integrity sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=
 
 url@~0.11.0:
   version "0.11.0"
   resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
-  integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
   dependencies:
     punycode "1.3.2"
     querystring "0.2.0"
@@ -4221,45 +3666,38 @@ url@~0.11.0:
 use@^3.1.0:
   version "3.1.1"
   resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
-  integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
 
 util-deprecate@~1.0.1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
-  integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
 
 util@0.10.3:
   version "0.10.3"
   resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
-  integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
   dependencies:
     inherits "2.0.1"
 
 util@~0.10.1:
   version "0.10.4"
   resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
-  integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==
   dependencies:
     inherits "2.0.3"
 
 vertical-meter@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/vertical-meter/-/vertical-meter-1.0.0.tgz#b910bfc107294346b612618bc8bbfc3da62259cd"
-  integrity sha512-xvtone0DHRBrWSBVF2p3+/KSz/mzHvDZ7+HYB3g68hBpqIC3tIF8J1maf5osHPKHB/45iq2B+T4ju/mfxArd/Q==
   dependencies:
     rate-map "^1.0.1"
 
 vm-browserify@~0.0.1:
   version "0.0.4"
   resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
-  integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=
   dependencies:
     indexof "0.0.1"
 
 watchpack@^1.0.1:
   version "1.6.0"
   resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"
-  integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==
   dependencies:
     chokidar "^2.0.2"
     graceful-fs "^4.1.2"
@@ -4268,41 +3706,34 @@ watchpack@^1.0.1:
 whatwg-fetch@>=0.10.0:
   version "2.0.3"
   resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"
-  integrity sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=
 
 which@^1.2.1, which@^1.2.9, which@^1.3.0:
   version "1.3.1"
   resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
-  integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
   dependencies:
     isexe "^2.0.0"
 
 wide-align@^1.1.0:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
-  integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
   dependencies:
     string-width "^1.0.2 || 2"
 
 win-user-installed-npm-cli-path@^2.0.2:
   version "2.0.4"
   resolved "https://registry.yarnpkg.com/win-user-installed-npm-cli-path/-/win-user-installed-npm-cli-path-2.0.4.tgz#698282e619f21e672cdbf674ee7b85c2082a7e73"
-  integrity sha512-i+fSInL3Li47P9gGcJabtgvl2+hLmZwMsh4664WWuI1F/pQPtv4XerrOyg8poxvDv4o/QwB60f20MKtIX/CCxQ==
 
 wordwrap@1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
-  integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
 
 wordwrap@~0.0.2:
   version "0.0.3"
   resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
-  integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
 
 wrap-ansi@^3.0.1:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba"
-  integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=
   dependencies:
     string-width "^2.1.1"
     strip-ansi "^4.0.0"
@@ -4310,29 +3741,23 @@ wrap-ansi@^3.0.1:
 wrappy@1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
-  integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
 
 xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
-  integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
 
 yallist@^2.1.2:
   version "2.1.2"
   resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
-  integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
 
 yallist@^3.0.0, yallist@^3.0.2:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9"
-  integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=
 
 zen-observable@^0.6.0, zen-observable@^0.6.1:
   version "0.6.1"
   resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.6.1.tgz#01dbed3bc8d02cbe9ee1112c83e04c807f647244"
-  integrity sha512-DKjFTL7siVLIUMZOFZ0alqMEdTsXPUxoCZzrvB2tdWEVN/6606Qh1nCfSTCAOZMrtcPzzFI3BXmwBKLAew52NA==
 
 zrender@3.7.4:
   version "3.7.4"
   resolved "https://registry.yarnpkg.com/zrender/-/zrender-3.7.4.tgz#f847d53948481ef6d42906d1ea9aeec7acbefdf2"
-  integrity sha512-5Nz7+L1wIoL0+Pp/iOP56jD6eD017qC9VRSgUBheXBiAHgOBJZ4uh4/g6e83acIwa8RKSyZf/FlceKu5ntUuxQ==