diff --git a/cmd/hack/hack.go b/cmd/hack/hack.go
index e9d8a273f21b4d4a6726d14dd98447b51a8e5eeb..5cb0e7ddfdfe507096bd6d7e7dcd38ca39d54515 100644
--- a/cmd/hack/hack.go
+++ b/cmd/hack/hack.go
@@ -26,7 +26,6 @@ import (
 	"github.com/ledgerwatch/turbo-geth/common"
 	"github.com/ledgerwatch/turbo-geth/common/changeset"
 	"github.com/ledgerwatch/turbo-geth/common/dbutils"
-	"github.com/ledgerwatch/turbo-geth/common/debug"
 	"github.com/ledgerwatch/turbo-geth/consensus/ethash"
 	"github.com/ledgerwatch/turbo-geth/core"
 	"github.com/ledgerwatch/turbo-geth/core/rawdb"
@@ -789,7 +788,6 @@ func testStartup() {
 }
 
 func testResolveCached() {
-	debug.IntermediateTrieHashAssertDbIntegrity = true
 	execToBlock(node.DefaultDataDir()+"/geth/chaindata", 100_000_000, false)
 	return
 	//startTime := time.Now()
@@ -1936,57 +1934,62 @@ func validateTxLookups2(db *ethdb.BoltDatabase, startBlock uint64, interruptCh c
 }
 
 func indexSize(chaindata string) {
+	//db, err := bolt.Open(chaindata, 0600, &bolt.Options{ReadOnly: true})
 	db, err := ethdb.NewBoltDatabase(chaindata)
 	check(err)
+	defer db.Close()
 	fStorage, err := os.Create("index_sizes_storage.csv")
 	check(err)
+	defer fStorage.Close()
 	fAcc, err := os.Create("index_sizes_acc.csv")
 	check(err)
+	defer fAcc.Close()
 	csvAcc := csv.NewWriter(fAcc)
+	defer csvAcc.Flush()
 	err = csvAcc.Write([]string{"key", "ln"})
 	check(err)
 	csvStorage := csv.NewWriter(fStorage)
+	defer csvStorage.Flush()
 	err = csvStorage.Write([]string{"key", "ln"})
+
 	i := 0
-	j := 0
 	maxLenAcc := 0
-	maxLenSt := 0
-	db.Walk(dbutils.AccountsHistoryBucket, []byte{}, 0, func(k, v []byte) (b bool, e error) {
-		if i > 10000 {
-			fmt.Println(j)
-			i = 0
-		}
+	if err := db.Walk(dbutils.AccountsHistoryBucket, []byte{}, 0, func(k, v []byte) (b bool, e error) {
 		i++
-		j++
+		if i%10_000_000 == 0 {
+			fmt.Println(i/10_000_000, maxLenAcc)
+		}
 		if len(v) > maxLenAcc {
 			maxLenAcc = len(v)
 		}
-		err = csvAcc.Write([]string{common.Bytes2Hex(k), strconv.Itoa(len(v))})
-		if err != nil {
+		if err := csvAcc.Write([]string{common.Bytes2Hex(k), strconv.Itoa(len(v))}); err != nil {
 			panic(err)
 		}
 
 		return true, nil
-	})
+	}); err != nil {
+		check(err)
+	}
+
 	i = 0
-	j = 0
-	db.Walk(dbutils.StorageHistoryBucket, []byte{}, 0, func(k, v []byte) (b bool, e error) {
-		if i > 10000 {
-			fmt.Println(j)
-			i = 0
-		}
+	maxLenSt := 0
+	if err := db.Walk(dbutils.StorageHistoryBucket, []byte{}, 0, func(k, v []byte) (b bool, e error) {
 		i++
-		j++
+		if i%10_000_000 == 0 {
+			fmt.Println(i/10_000_000, maxLenSt)
+		}
+
 		if len(v) > maxLenSt {
 			maxLenSt = len(v)
 		}
-		err = csvStorage.Write([]string{common.Bytes2Hex(k), strconv.Itoa(len(v))})
-		if err != nil {
+		if err := csvStorage.Write([]string{common.Bytes2Hex(k), strconv.Itoa(len(v))}); err != nil {
 			panic(err)
 		}
 
 		return true, nil
-	})
+	}); err != nil {
+		check(err)
+	}
 
 	fmt.Println("Results:")
 	fmt.Println("maxLenAcc:", maxLenAcc)
diff --git a/cmd/restapi/apis/intermediate_hash_api.go b/cmd/restapi/apis/intermediate_hash_api.go
new file mode 100644
index 0000000000000000000000000000000000000000..54df893109f76382166b568f32173005df011fcd
--- /dev/null
+++ b/cmd/restapi/apis/intermediate_hash_api.go
@@ -0,0 +1,71 @@
+package apis
+
+import (
+	"context"
+	"fmt"
+	"net/http"
+
+	"github.com/gin-gonic/gin"
+	"github.com/ledgerwatch/turbo-geth/common"
+	"github.com/ledgerwatch/turbo-geth/common/dbutils"
+	"github.com/ledgerwatch/turbo-geth/ethdb"
+)
+
+func RegisterIntermediateHashAPI(router *gin.RouterGroup, e *Env) error {
+	router.GET("/", e.FindIntermediateHash)
+	return nil
+}
+
+func (e *Env) FindIntermediateHash(c *gin.Context) {
+	results, err := findIntermediateHashByPrefix(c.Query("prefix"), c.Query("tombstones") == "on", e.DB)
+	if err != nil {
+		c.Error(err) //nolint:errcheck
+		return
+	}
+	c.JSON(http.StatusOK, results)
+}
+
+type IntermediateHashResponse struct {
+	Prefix string `json:"prefix"`
+	Value  string `json:"value"`
+}
+
+func findIntermediateHashByPrefix(prefixS string, tombstones bool, remoteDB ethdb.KV) ([]*IntermediateHashResponse, error) {
+	var results []*IntermediateHashResponse
+	prefix := common.FromHex(prefixS)
+	if err := remoteDB.View(context.TODO(), func(tx ethdb.Tx) error {
+		interBucket := tx.Bucket(dbutils.IntermediateTrieHashBucket)
+		c := interBucket.Cursor().Prefix(prefix)
+
+		for k, v, err := c.First(); k != nil || err != nil; k, v, err = c.Next() {
+			if err != nil {
+				return err
+			}
+
+			if tombstones && len(v) > 0 {
+				continue
+			}
+			if !tombstones && len(v) == 0 {
+				continue
+			}
+
+			results = append(results, &IntermediateHashResponse{
+				Prefix: fmt.Sprintf("%x\n", k),
+				Value:  fmt.Sprintf("%x\n", v),
+			})
+
+			if len(results) > 50 {
+				results = append(results, &IntermediateHashResponse{
+					Prefix: "too much results",
+				})
+				return nil
+			}
+		}
+
+		return nil
+	}); err != nil {
+		return nil, err
+	}
+
+	return results, nil
+}
diff --git a/cmd/restapi/rest/serve_rest.go b/cmd/restapi/rest/serve_rest.go
index 553bcf17e921a78cc053c2cf9c9052b4165c0fae..9c2e70a0349a66a280d9cb7cfaad284b238803fe 100644
--- a/cmd/restapi/rest/serve_rest.go
+++ b/cmd/restapi/rest/serve_rest.go
@@ -49,6 +49,9 @@ func ServeREST(ctx context.Context, localAddress, remoteDBAddress string) error
 	if err = apis.RegisterStorageAPI(root.Group("storage"), e); err != nil {
 		return err
 	}
+	if err = apis.RegisterIntermediateHashAPI(root.Group("intermediate-hash"), e); err != nil {
+		return err
+	}
 
 	log.Printf("serving on %v... press ctrl+C to abort\n", localAddress)
 
diff --git a/common/debug/experiments.go b/common/debug/experiments.go
index 17de94a1f8c39cce2481d36213c0fb468e691481..70f2f8270d2e36303b1d08dccb50c04c4f4c5fc2 100644
--- a/common/debug/experiments.go
+++ b/common/debug/experiments.go
@@ -53,6 +53,3 @@ func OverrideGetNodeData(val bool) {
 		atomic.StoreUint32(&getNodeData, gndInitializedFlag)
 	}
 }
-
-// --------------- Flags which are enabling additional runtime checks and asserts ----------------
-var IntermediateTrieHashAssertDbIntegrity = false
diff --git a/core/state/database.go b/core/state/database.go
index 238f701afec8bc7111bc6749ed5592c9baea269e..3c641c2f96cdc64c5502d3e298a643a8e6ac822f 100644
--- a/core/state/database.go
+++ b/core/state/database.go
@@ -706,6 +706,7 @@ func (tds *TrieDbState) updateTrieRoots(forward bool) ([]common.Hash, error) {
 				if len(v) > 0 {
 					//fmt.Printf("Update storage trie addrHash %x, keyHash %x: %x\n", addrHash, keyHash, v)
 					if forward {
+						_ = ClearTombstonesForNewStorage(tds.db, cKey)
 						tds.t.Update(cKey, v)
 					} else {
 						// If rewinding, it might not be possible to execute storage item update.
@@ -802,6 +803,7 @@ func (tds *TrieDbState) updateTrieRoots(forward bool) ([]common.Hash, error) {
 			}
 
 			tds.t.DeleteSubtree(addrHash[:])
+			_ = PutTombstoneForDeletedAccount(tds.db, addrHash[:])
 		}
 		roots[i] = tds.t.Hash()
 	}
diff --git a/core/state/intermediate_hashes.go b/core/state/intermediate_hashes.go
index ca60be45df3011b159d061a374bccdf9f8b05a51..6240a1343ebfd0881ca7790fdf3803c8be1b0e76 100644
--- a/core/state/intermediate_hashes.go
+++ b/core/state/intermediate_hashes.go
@@ -1,6 +1,10 @@
 package state
 
 import (
+	"bytes"
+	"fmt"
+
+	"github.com/ledgerwatch/bolt"
 	"github.com/ledgerwatch/turbo-geth/common"
 	"github.com/ledgerwatch/turbo-geth/common/dbutils"
 	"github.com/ledgerwatch/turbo-geth/common/pool"
@@ -28,6 +32,7 @@ func (ih *IntermediateHashes) WillUnloadBranchNode(prefixAsNibbles []byte, nodeH
 	}
 
 	key := pool.GetBuffer(keyBufferSize)
+	defer pool.PutBuffer(key)
 	trie.CompressNibbles(prefixAsNibbles, &key.B)
 
 	if err := ih.putter.Put(dbutils.IntermediateTrieHashBucket, common.CopyBytes(key.B), common.CopyBytes(nodeHash[:])); err != nil {
@@ -42,10 +47,92 @@ func (ih *IntermediateHashes) BranchNodeLoaded(prefixAsNibbles []byte) {
 	}
 
 	key := pool.GetBuffer(keyBufferSize)
+	defer pool.PutBuffer(key)
 	trie.CompressNibbles(prefixAsNibbles, &key.B)
 
-	if err := ih.deleter.Delete(dbutils.IntermediateTrieHashBucket, key.B); err != nil {
+	if err := ih.deleter.Delete(dbutils.IntermediateTrieHashBucket, common.CopyBytes(key.B)); err != nil {
 		log.Warn("could not delete intermediate trie hash", "err", err)
 		return
 	}
 }
+
+// PutTombstoneForDeletedAccount - placing tombstone only if given account has storage in database
+func PutTombstoneForDeletedAccount(db ethdb.Database, addrHash []byte) error {
+	if len(addrHash) != common.HashLength {
+		return nil
+	}
+
+	hasIH := false
+	if err := db.Walk(dbutils.IntermediateTrieHashBucket, addrHash, 32*8, func(_ []byte, _ []byte) (bool, error) {
+		hasIH = true
+		return false, nil
+	}); err != nil {
+		return err
+	}
+
+	if !hasIH {
+		return nil
+	}
+
+	return db.Put(dbutils.IntermediateTrieHashBucket, common.CopyBytes(addrHash), []byte{})
+}
+
+func ClearTombstonesForNewStorage(db ethdb.MinDatabase, storageKeyNoInc []byte) error {
+	var boltDb *bolt.DB
+	if hasKV, ok := db.(ethdb.HasKV); ok {
+		boltDb = hasKV.KV()
+	} else {
+		return fmt.Errorf("only Bolt supported yet, given: %T", db)
+	}
+
+	var toPut [][]byte
+	toDelete := map[string]struct{}{}
+
+	if err := boltDb.View(func(tx *bolt.Tx) error {
+		c := tx.Bucket(dbutils.IntermediateTrieHashBucket).Cursor()
+
+		i := common.HashLength
+		var k, v []byte
+		for ; i < len(storageKeyNoInc); i++ {
+			k, v = c.Seek(storageKeyNoInc[:i])
+			if k == nil {
+				return nil
+			}
+
+			isTombstone := v != nil && len(v) == 0
+			if isTombstone && bytes.HasPrefix(storageKeyNoInc, k) {
+				break
+			}
+		}
+
+		for ; bytes.HasPrefix(k, storageKeyNoInc[:i]); k, v = c.Next() {
+			isTombstone := v != nil && len(v) == 0
+			if isTombstone && bytes.HasPrefix(storageKeyNoInc, k) {
+				toDelete[string(k)] = struct{}{}
+			} else {
+				for j := i; j < len(k); j++ {
+					if storageKeyNoInc[j] != k[j] {
+						toPut = append(toPut, common.CopyBytes(k[:j+1]))
+						break
+					}
+				}
+			}
+		}
+		return nil
+	}); err != nil {
+		return err
+	}
+	for _, k := range toPut {
+		if err := db.Put(dbutils.IntermediateTrieHashBucket, k, []byte{}); err != nil {
+			return err
+		}
+	}
+
+	for k := range toDelete {
+		if err := db.Delete(dbutils.IntermediateTrieHashBucket, []byte(k)); err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
diff --git a/core/state/intermediate_hashes_test.go b/core/state/intermediate_hashes_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..4d9a8067155c509b0004da6a7bf0b74f495e4d6a
--- /dev/null
+++ b/core/state/intermediate_hashes_test.go
@@ -0,0 +1,161 @@
+package state_test
+
+import (
+	"errors"
+	"fmt"
+	"testing"
+
+	"github.com/ledgerwatch/turbo-geth/common"
+	"github.com/ledgerwatch/turbo-geth/common/dbutils"
+	"github.com/ledgerwatch/turbo-geth/core/state"
+	"github.com/ledgerwatch/turbo-geth/core/types/accounts"
+	"github.com/ledgerwatch/turbo-geth/ethdb"
+	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
+)
+
+func TestClearTombstonesForReCreatedAccount(t *testing.T) {
+	require, assert, db := require.New(t), assert.New(t), ethdb.NewMemDatabase()
+
+	accKey := fmt.Sprintf("11%062x", 0)
+	k1 := "11"
+	k2 := "2211"
+	k3 := "2233"
+	k4 := "44"
+
+	putTombStone := func(k string, v []byte) {
+		err := db.Put(dbutils.IntermediateTrieHashBucket, common.FromHex(k), v)
+		require.NoError(err)
+	}
+
+	//printBucket := func() {
+	//	fmt.Printf("IH bucket print\n")
+	//	_ = db.KV().View(func(tx *bolt.Tx) error {
+	//		tx.Bucket(dbutils.IntermediateTrieHashBucket).ForEach(func(k, v []byte) error {
+	//			if len(v) == 0 {
+	//				fmt.Printf("IH: %x\n", k)
+	//			}
+	//			return nil
+	//		})
+	//		return nil
+	//	})
+	//	fmt.Printf("IH bucket print END\n")
+	//}
+
+	acc := accounts.NewAccount()
+	acc.Incarnation = 1
+	encodedAcc := make([]byte, acc.EncodingLengthForStorage())
+	acc.EncodeForStorage(encodedAcc)
+	err := db.Put(dbutils.AccountsBucket, common.FromHex(accKey), encodedAcc)
+	require.NoError(err)
+
+	putTombStone(accKey+k1, []byte{})
+	putTombStone(accKey+k2, []byte{1})
+	putTombStone(accKey+k3, []byte{1})
+	putTombStone(accKey+k4, []byte{1})
+
+	// step 1: delete account
+	batch := db.NewBatch()
+	err = state.PutTombstoneForDeletedAccount(batch, common.FromHex(accKey))
+	require.NoError(err)
+	_, err = batch.Commit()
+	require.NoError(err)
+	//printBucket()
+
+	untouchedAcc := fmt.Sprintf("99%062x", 0)
+	checks := map[string]bool{
+		accKey:       true,
+		untouchedAcc: false,
+	}
+
+	for k, expect := range checks {
+		ok, err1 := HasTombstone(db, common.FromHex(k))
+		require.NoError(err1, k)
+		assert.Equal(expect, ok, k)
+	}
+
+	// step 2: re-create storage
+	batch = db.NewBatch()
+	err = state.ClearTombstonesForNewStorage(batch, common.FromHex(accKey+k2+fmt.Sprintf("%062x", 0)))
+	require.NoError(err)
+	_, err = batch.Commit()
+	require.NoError(err)
+	//printBucket()
+
+	checks = map[string]bool{
+		accKey:            false,
+		accKey + "11":     true,
+		accKey + k2:       false,
+		accKey + "22":     false,
+		accKey + "2200":   false,
+		accKey + "2211":   false,
+		accKey + "2233":   true,
+		accKey + "223300": false,
+		accKey + "22ab":   false,
+		accKey + "44":     true,
+	}
+
+	for k, expect := range checks {
+		ok, err1 := HasTombstone(db, common.FromHex(k))
+		require.NoError(err1, k)
+		assert.Equal(expect, ok, k)
+	}
+
+	// step 3: create one new storage
+	batch = db.NewBatch()
+	err = state.ClearTombstonesForNewStorage(batch, common.FromHex(accKey+k4+fmt.Sprintf("%062x", 0)))
+	require.NoError(err)
+	_, err = batch.Commit()
+	require.NoError(err)
+	//printBucket()
+
+	checks = map[string]bool{
+		accKey + k2:         false, // results of step2 preserved
+		accKey + "22":       false, // results of step2 preserved
+		accKey + "2211":     false, // results of step2 preserved
+		accKey + "22110000": false, // results of step2 preserved
+		accKey + "2233":     true,  // results of step2 preserved
+		accKey + "44":       false, // results of step2 preserved
+	}
+
+	for k, expect := range checks {
+		ok, err1 := HasTombstone(db, common.FromHex(k))
+		require.NoError(err1, k)
+		assert.Equal(expect, ok, k)
+	}
+
+	// step 4: delete account again - it must remove all tombstones and keep only 1 which will cover account itself
+	batch = db.NewBatch()
+	err = state.PutTombstoneForDeletedAccount(batch, common.FromHex(accKey))
+	require.NoError(err)
+	_, err = batch.Commit()
+	require.NoError(err)
+	//printBucket()
+
+	checks = map[string]bool{
+		accKey:       true,
+		untouchedAcc: false,
+
+		// accKey + "2233" was true on previous step, don't delete this tombstone even one with shorter prefix exists.
+		// Because account creation must do predictable amount of operations.
+		accKey + "2233": true,
+	}
+
+	for k, expect := range checks {
+		ok, err1 := HasTombstone(db, common.FromHex(k))
+		require.NoError(err1, k)
+		assert.Equal(expect, ok, k)
+	}
+
+}
+
+func HasTombstone(db ethdb.MinDatabase, prefix []byte) (bool, error) {
+	v, err := db.Get(dbutils.IntermediateTrieHashBucket, prefix)
+	if err != nil {
+		if errors.Is(err, ethdb.ErrKeyNotFound) {
+			return false, nil
+		}
+		return false, err
+	}
+	return v != nil && len(v) == 0, nil
+}
diff --git a/debug-web-ui/package.json b/debug-web-ui/package.json
index 2919ada507685c8dc4c186fc4bfe7fa1666038d5..5da3d7d69bcda0faabab325f48217f991576c678 100644
--- a/debug-web-ui/package.json
+++ b/debug-web-ui/package.json
@@ -12,10 +12,10 @@
     "react-scripts": "3.4.1"
   },
   "devDependencies": {
-    "@testing-library/jest-dom": "^5.1.1",
-    "@testing-library/react": "^10.0.1",
-    "@testing-library/user-event": "^10.0.0",
-    "prettier": "^2.0.2"
+    "@testing-library/jest-dom": "^5.3.0",
+    "@testing-library/react": "^10.0.2",
+    "@testing-library/user-event": "^10.0.1",
+    "prettier": "^2.0.4"
   },
   "scripts": {
     "start": "react-scripts start",
diff --git a/debug-web-ui/src/App.js b/debug-web-ui/src/App.js
index 651bc68e2449e11eb8ca9380f8441692a0e959fb..87d5a77862933e38d4699d45cd6370d18d19bdf3 100644
--- a/debug-web-ui/src/App.js
+++ b/debug-web-ui/src/App.js
@@ -1,12 +1,13 @@
 import React, { useState } from 'react';
 
+import './App.css';
 import { Col, Container, Nav, Row } from 'react-bootstrap';
 import API from './utils/API.js';
 import ErrorCatcher from './components/ErrorCatcher.js';
 import { BrowserRouter as Router, Link, NavLink, Redirect, Route, Switch } from 'react-router-dom';
 import AccountsPage from './page/Accounts';
+import IntermediateHashPage from './page/IntermediateHashPage';
 import { ReactComponent as Logo } from './logo.svg';
-import './App.css';
 import StoragePage from './page/Storage';
 import RemoteSidebar from './components/RemoteSidebar';
 
@@ -19,6 +20,10 @@ const sidebar = [
     url: '/storage',
     label: 'Storage',
   },
+  {
+    url: '/intermediate-hash',
+    label: 'Inter Hash',
+  },
 ];
 
 function App() {
@@ -63,6 +68,9 @@ function App() {
                 <Route path="/storage">
                   <StoragePage api={api} />
                 </Route>
+                <Route path="/intermediate-hash">
+                  <IntermediateHashPage api={api} />
+                </Route>
               </Switch>
             </Col>
           </Row>
diff --git a/debug-web-ui/src/components/LookupAccountForm.js b/debug-web-ui/src/components/LookupAccountForm.js
index f6782664f45488ed9c15a815da137d7a643b22a7..9297ff459e886b52f4bfc7283ca1e5213d34ec2f 100644
--- a/debug-web-ui/src/components/LookupAccountForm.js
+++ b/debug-web-ui/src/components/LookupAccountForm.js
@@ -29,7 +29,8 @@ const LookupAccountForm = ({ api }) => {
     <div>
       <SearchField
         placeholder="lookup by id or hash"
-        onClick={(id) => loadAccount(id, api).then(lookupSuccess).catch(lookupFail)}
+        disabled={state.loading}
+        onSubmit={(data) => loadAccount(data.search, api).then(lookupSuccess).catch(lookupFail)}
       />
       <hr />
       {state.account && <DetailsForm account={state.account} />}
diff --git a/debug-web-ui/src/components/LookupIntermediateHashForm.js b/debug-web-ui/src/components/LookupIntermediateHashForm.js
new file mode 100644
index 0000000000000000000000000000000000000000..beb5230db1d1cbeecaa14bae506840ba791a24b6
--- /dev/null
+++ b/debug-web-ui/src/components/LookupIntermediateHashForm.js
@@ -0,0 +1,77 @@
+import React, { useState } from 'react';
+
+import Row from 'react-bootstrap/Row';
+import Col from 'react-bootstrap/Col';
+import { Form, Spinner, Table } from 'react-bootstrap';
+
+import SearchField from './SearchField.js';
+
+const search = (prefix, tombstones, api, setState) => {
+  setState({ hashes: undefined, loading: true });
+
+  const lookupSuccess = (response) => setState({ hashes: response.data, loading: false });
+  const lookupFail = (error) => {
+    setState({ hashes: undefined, loading: false });
+
+    setState(() => {
+      throw error;
+    });
+  };
+
+  return api.lookupStorageTombstones(prefix, tombstones).then(lookupSuccess).catch(lookupFail);
+};
+
+const LookupIntermediateHashForm = ({ api }) => {
+  const [state, setState] = useState({ hashes: undefined, loading: false });
+
+  return (
+    <div>
+      <SearchField
+        placeholder="lookup by prefix"
+        disabled={state.loading}
+        onSubmit={(data) => search(data.search, data.tombstones, api, setState)}
+      >
+        <Form.Check name="tombstones" type="checkbox" label="Show tombstones" />
+      </SearchField>
+      {state.loading && <Spinner animation="border" />}
+      {state.hashes && <Details hashes={state.hashes} />}
+    </div>
+  );
+};
+
+const Details = ({ hashes }) => (
+  <Row>
+    <Col>
+      <Table size="sm" borderless>
+        <thead>
+          <tr>
+            <th>
+              <strong>Key</strong>
+            </th>
+            <th>
+              <strong>Value</strong>
+            </th>
+          </tr>
+        </thead>
+        <tbody>
+          {hashes.map((item, i) => (
+            <TableRow key={i} item={item} />
+          ))}
+        </tbody>
+      </Table>
+    </Col>
+  </Row>
+);
+
+const TableRow = ({ item }) => {
+  const { prefix, value } = item;
+
+  return (
+    <tr>
+      <td className="text-monospace">{prefix}</td>
+      <td className="text-monospace">{value}</td>
+    </tr>
+  );
+};
+
+export default LookupIntermediateHashForm;
diff --git a/debug-web-ui/src/components/LookupStorageForm.js b/debug-web-ui/src/components/LookupStorageForm.js
index 9f301a316adb6cd9491a6e5527fe6e234a73f337..fa4751f1bdc8e53bda4fe2dc99e2c90bf2810404 100644
--- a/debug-web-ui/src/components/LookupStorageForm.js
+++ b/debug-web-ui/src/components/LookupStorageForm.js
@@ -24,10 +24,12 @@ const LookupStorageForm = ({ api }) => {
 
   return (
     <div>
+      <SearchField
+        placeholder="lookup by prefix"
+        disabled={state.loading}
+        onSubmit={(data) => search(data.search, api, setState)}
+      />
       {state.loading && <Spinner animation="border" />}
-      {!state.loading && (
-        <SearchField placeholder="lookup by prefix" onClick={(prefix) => search(prefix, api, setState)} />
-      )}
       {state.data && <Details data={state.data} />}
     </div>
   );
diff --git a/debug-web-ui/src/components/SearchField.js b/debug-web-ui/src/components/SearchField.js
index a1a8a749802b33f0fafef9469b0996157a5885a7..5777ab38a6042a67859b87621236a8c4c043f7fd 100644
--- a/debug-web-ui/src/components/SearchField.js
+++ b/debug-web-ui/src/components/SearchField.js
@@ -4,45 +4,34 @@ import Form from 'react-bootstrap/Form';
 import Col from 'react-bootstrap/Col';
 import Button from 'react-bootstrap/Button';
 
-class SearchField extends React.Component {
-  constructor(props) {
-    super(props);
-    this.state = { value: '' };
-
-    this.handleChange = this.handleChange.bind(this);
-    this.handleSubmit = this.handleSubmit.bind(this);
-  }
-
-  handleChange(event) {
-    this.setState({ value: event.target.value });
-  }
-
-  handleSubmit(event) {
-    this.props.onClick(this.state.value);
+const SearchField = (props) => {
+  const handleSubmit = (event) => {
     event.preventDefault();
-  }
+    let data = {};
+    const formData = new FormData(event.target);
+    for (const [key, value] of formData.entries()) {
+      data[key] = value;
+    }
+    props.onSubmit(data);
+  };
 
-  render() {
-    return (
-      <Form onSubmit={this.handleSubmit}>
-        <Form.Row>
-          <Col>
-            <Form.Control
-              size="sm"
-              placeholder={this.props.placeholder}
-              value={this.state.value || ''}
-              onChange={this.handleChange}
-            />
-          </Col>
-          <Col>
-            <Button variant="primary" type="submit" size="sm">
-              Find
-            </Button>
-          </Col>
-        </Form.Row>
-      </Form>
-    );
-  }
-}
+  return (
+    <Form onSubmit={handleSubmit} disabled={props.disabled}>
+      <Form.Row>
+        <Col>
+          <Form.Control size="sm" name="search" placeholder={props.placeholder} />
+        </Col>
+        <Col>
+          <Button disabled={props.disabled} variant="primary" type="submit" size="sm">
+            Find
+          </Button>
+        </Col>
+      </Form.Row>
+      <Form.Row>
+        <Col>{props.children}</Col>
+      </Form.Row>
+    </Form>
+  );
+};
 
 export default SearchField;
diff --git a/debug-web-ui/src/components/StorageTombstonesIntegrityChecks.js b/debug-web-ui/src/components/StorageTombstonesIntegrityChecks.js
deleted file mode 100644
index d78208c74c7f76a632c0121978346c1391c0acea..0000000000000000000000000000000000000000
--- a/debug-web-ui/src/components/StorageTombstonesIntegrityChecks.js
+++ /dev/null
@@ -1,68 +0,0 @@
-import React, { useState } from 'react';
-
-import Row from 'react-bootstrap/Row';
-import Col from 'react-bootstrap/Col';
-import { Button, Spinner, Table } from 'react-bootstrap';
-
-const load = (api, setState) => {
-  const lookupSuccess = (response) => setState({ data: response.data, loading: false });
-  const lookupFail = (error) => {
-    setState({ data: undefined, loading: false });
-
-    setState(() => {
-      throw error;
-    });
-  };
-
-  setState({ data: undefined, loading: true });
-  return api.storageTombstonesIntegrityChecks().then(lookupSuccess).catch(lookupFail);
-};
-
-const StorageTombstonesIntegrityChecks = ({ api }) => {
-  const [state, setState] = useState({ data: undefined, loading: false });
-
-  return (
-    <div>
-      {state.loading && <Spinner animation="border" />}
-      {!state.loading && (
-        <Button size="sm" onClick={() => load(api, setState)}>
-          Integrity Checks
-        </Button>
-      )}
-      {state.data && <DetailsForm data={state.data} />}
-    </div>
-  );
-};
-
-const DetailsForm = ({ data }) => (
-  <Row>
-    <Col>
-      <Table size="sm" borderless>
-        <thead>
-          <tr>
-            <th>
-              <strong>Check</strong>
-            </th>
-            <th>Result</th>
-          </tr>
-        </thead>
-        <tbody>
-          {data.map((el, i) => (
-            <TableRow key={i} name={el.name} value={el.value} />
-          ))}
-        </tbody>
-      </Table>
-    </Col>
-  </Row>
-);
-
-const TableRow = ({ name, value }) => (
-  <tr>
-    <td>{name}</td>
-    <td>
-      <code>{value}</code>
-    </td>
-  </tr>
-);
-
-export default StorageTombstonesIntegrityChecks;
diff --git a/debug-web-ui/src/page/IntermediateHashPage.js b/debug-web-ui/src/page/IntermediateHashPage.js
new file mode 100644
index 0000000000000000000000000000000000000000..b49f4072aafee9e3cbb9613e4e7b26a4333c7e83
--- /dev/null
+++ b/debug-web-ui/src/page/IntermediateHashPage.js
@@ -0,0 +1,21 @@
+import React from 'react';
+
+import { Col, Container, Row } from 'react-bootstrap';
+import LookupIntermediateHashForm from '../components/LookupIntermediateHashForm';
+
+const IntermediateHashPage = ({ api }) => (
+  <Container fluid className="mt-1">
+    <Row>
+      <Col>
+        <h1>Intermediate Hash</h1>
+      </Col>
+    </Row>
+    <Row>
+      <Col xs={10}>
+        <LookupIntermediateHashForm api={api} />
+      </Col>
+    </Row>
+  </Container>
+);
+
+export default IntermediateHashPage;
diff --git a/debug-web-ui/src/utils/API.js b/debug-web-ui/src/utils/API.js
index 0f669d978eb93b023be0a0c9f88649373dc2655d..f1346eb46009fb7ee635be948fef6a8548bdefd4 100644
--- a/debug-web-ui/src/utils/API.js
+++ b/debug-web-ui/src/utils/API.js
@@ -44,20 +44,14 @@ export default class API {
     });
   }
 
-  lookupStorageTombstones(prefix) {
+  lookupStorageTombstones(prefix, tombstones) {
     return axios({
-      url: this.endpoint('/api/v1/storage-tombstones/'),
+      url: this.endpoint('/api/v1/intermediate-hash/'),
       method: 'get',
       params: {
         prefix: prefix,
+        tombstones: tombstones,
       },
     });
   }
-
-  storageTombstonesIntegrityChecks() {
-    return axios({
-      url: this.endpoint('/api/v1/storage-tombstones/integrity/'),
-      method: 'get',
-    });
-  }
 }
diff --git a/debug-web-ui/yarn.lock b/debug-web-ui/yarn.lock
index 0895abca1dcca3fe2fd99838b5c1054baf3f8ae8..c4cc5b6e7db3e6904031fc917979ae1e6f29b03a 100644
--- a/debug-web-ui/yarn.lock
+++ b/debug-web-ui/yarn.lock
@@ -899,7 +899,7 @@
   dependencies:
     regenerator-runtime "^0.13.4"
 
-"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.4", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.4", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
   version "7.9.2"
   resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06"
   integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==
@@ -1137,10 +1137,10 @@
     "@types/istanbul-reports" "^1.1.1"
     "@types/yargs" "^13.0.0"
 
-"@jest/types@^25.1.0":
-  version "25.1.0"
-  resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.1.0.tgz#b26831916f0d7c381e11dbb5e103a72aed1b4395"
-  integrity sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==
+"@jest/types@^25.2.6":
+  version "25.2.6"
+  resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.2.6.tgz#c12f44af9bed444438091e4b59e7ed05f8659cb6"
+  integrity sha512-myJTTV37bxK7+3NgKc4Y/DlQ5q92/NOwZsZ+Uch7OXdElxOg61QYc72fPYNAjlvbnJ2YvbXLamIsa9tj48BmyQ==
   dependencies:
     "@types/istanbul-lib-coverage" "^2.0.0"
     "@types/istanbul-reports" "^1.1.1"
@@ -1161,9 +1161,9 @@
   integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
 
 "@popperjs/core@^2.0.0":
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.1.1.tgz#12c572ab88ef7345b43f21883fca26631c223085"
-  integrity sha512-sLqWxCzC5/QHLhziXSCAksBxHfOnQlhPRVgPK0egEw+ktWvG75T2k+aYWVjVh9+WKeT3tlG3ZNbZQvZLmfuOIw==
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.2.1.tgz#d7d1d7fbdc1f2aa24e62f4ef4b001be7727340c5"
+  integrity sha512-BChdj3idQiLi+7vPhE6gEDiPzpozvSrUqbSMoSTlRbOQkU0p6u4si0UBydegTyphsYSZC2AUHGYYICP0gqmEVg==
 
 "@restart/context@^2.1.4":
   version "2.1.4"
@@ -1281,10 +1281,10 @@
     "@svgr/plugin-svgo" "^4.3.1"
     loader-utils "^1.2.3"
 
-"@testing-library/dom@^7.0.2":
-  version "7.1.1"
-  resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.1.1.tgz#bf890c2468bd717ffd8b336a819686907fbe4daa"
-  integrity sha512-CxspAIntyK2joLUJChOZgnwx7xBxdBC8ugwP+Z49Dd9O3sGVs0wHkOUOsfBVXHgBjmdZk8E3SyHZVrMRd9O1sA==
+"@testing-library/dom@^7.1.0":
+  version "7.2.1"
+  resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.2.1.tgz#bb3b31d669bbe0c4939dadd95d69caa3c1d0b372"
+  integrity sha512-xIGoHlQ2ZiEL1dJIFKNmLDypzYF+4OJTTASRctl/aoIDaS5y/pRVHRigoqvPUV11mdJoR71IIgi/6UviMgyz4g==
   dependencies:
     "@babel/runtime" "^7.9.2"
     "@types/testing-library__dom" "^7.0.0"
@@ -1292,40 +1292,39 @@
     dom-accessibility-api "^0.4.2"
     pretty-format "^25.1.0"
 
-"@testing-library/jest-dom@^5.1.1":
-  version "5.1.1"
-  resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.1.1.tgz#e88a5c08f9b9f36b384f948a0532eae2abbc8204"
-  integrity sha512-7xnmBFcUmmUVAUhFiZ/u3CxFh1e46THAwra4SiiKNCW4By26RedCRwEk0rtleFPZG0wlTSNOKDvJjWYy93dp0w==
+"@testing-library/jest-dom@^5.3.0":
+  version "5.3.0"
+  resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.3.0.tgz#2ae813b8b0eb69e8808f75d3af8efa3f0dc4d7ec"
+  integrity sha512-Cdhpc3BHL888X55qBNyra9eM0UG63LCm/FqCWTa1Ou/0MpsUbQTM9vW1NU6/jBQFoSLgkFfDG5XVpm2V0dOm/A==
   dependencies:
-    "@babel/runtime" "^7.8.3"
-    "@types/testing-library__jest-dom" "^5.0.0"
+    "@babel/runtime" "^7.9.2"
+    "@types/testing-library__jest-dom" "^5.0.2"
     chalk "^3.0.0"
     css "^2.2.4"
     css.escape "^1.5.1"
     jest-diff "^25.1.0"
     jest-matcher-utils "^25.1.0"
     lodash "^4.17.15"
-    pretty-format "^25.1.0"
     redent "^3.0.0"
 
-"@testing-library/react@^10.0.1":
-  version "10.0.1"
-  resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-10.0.1.tgz#4f5e2a8836257c5bd3df640b21d7bea5a0d83ead"
-  integrity sha512-sMHWud2dcymOzq2AhEniICSijEwKeTiBX+K0y36FYNY7wH2t0SIP1o732Bf5dDY0jYoMC2hj2UJSVpZC/rDsWg==
+"@testing-library/react@^10.0.2":
+  version "10.0.2"
+  resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-10.0.2.tgz#8eca7aa52d810cf7150048a2829fdc487162006d"
+  integrity sha512-YT6Mw0oJz7R6vlEkmo1FlUD+K15FeXApOB5Ffm9zooFVnrwkt00w18dUJFMOh1yRp9wTdVRonbor7o4PIpFCmA==
   dependencies:
-    "@babel/runtime" "^7.8.7"
-    "@testing-library/dom" "^7.0.2"
-    "@types/testing-library__react" "^9.1.3"
+    "@babel/runtime" "^7.9.2"
+    "@testing-library/dom" "^7.1.0"
+    "@types/testing-library__react" "^10.0.0"
 
-"@testing-library/user-event@^10.0.0":
-  version "10.0.0"
-  resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-10.0.0.tgz#68dc84111c882cbf595d6bafa3691e4daa375fbd"
-  integrity sha512-ygQ1SaX3AzWDGPer5e2LF7FvWwLPG+XYViHvpW4ObseOkqmJI2ruawp9iLmEwxQW88jNCCExvonh0jBAwwiYZw==
+"@testing-library/user-event@^10.0.1":
+  version "10.0.1"
+  resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-10.0.1.tgz#9a02dbbc813135f25778b17f92a63933a58e8af5"
+  integrity sha512-M63ftowo1QpAGMnWyz7df0ygqnu4XyF68Sty7mivMAz2HLcY1uLoN3qcen6WMobdY0MoZUi4+BLsziSDAP62Vg==
 
 "@types/babel__core@^7.1.0":
-  version "7.1.6"
-  resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.6.tgz#16ff42a5ae203c9af1c6e190ed1f30f83207b610"
-  integrity sha512-tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg==
+  version "7.1.7"
+  resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89"
+  integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw==
   dependencies:
     "@babel/parser" "^7.1.0"
     "@babel/types" "^7.0.0"
@@ -1349,9 +1348,9 @@
     "@babel/types" "^7.0.0"
 
 "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6":
-  version "7.0.9"
-  resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.9.tgz#be82fab304b141c3eee81a4ce3b034d0eba1590a"
-  integrity sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw==
+  version "7.0.10"
+  resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.10.tgz#d9a99f017317d9b3d1abc2ced45d3bca68df0daf"
+  integrity sha512-74fNdUGrWsgIB/V9kTO5FGHPWYY6Eqn+3Z7L6Hc4e/BxjYV7puvBqp5HwsVYYfLm6iURYBNCx4Ut37OF9yitCw==
   dependencies:
     "@babel/types" "^7.3.0"
 
@@ -1400,12 +1399,12 @@
     "@types/istanbul-lib-report" "*"
 
 "@types/jest@*":
-  version "25.1.4"
-  resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.1.4.tgz#9e9f1e59dda86d3fd56afce71d1ea1b331f6f760"
-  integrity sha512-QDDY2uNAhCV7TMCITrxz+MRk1EizcsevzfeS6LykIlq2V1E5oO4wXG8V2ZEd9w7Snxeeagk46YbMgZ8ESHx3sw==
+  version "25.2.1"
+  resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.1.tgz#9544cd438607955381c1bdbdb97767a249297db5"
+  integrity sha512-msra1bCaAeEdkSyA0CZ6gW1ukMIvZ5YoJkdXw/qhQdsuuDlFTcEUrUw8CLCPt2rVRUfXlClVvK2gvPs9IokZaA==
   dependencies:
-    jest-diff "^25.1.0"
-    pretty-format "^25.1.0"
+    jest-diff "^25.2.1"
+    pretty-format "^25.2.1"
 
 "@types/json-schema@^7.0.3":
   version "7.0.4"
@@ -1418,9 +1417,9 @@
   integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
 
 "@types/node@*":
-  version "13.9.3"
-  resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.3.tgz#6356df2647de9eac569f9a52eda3480fa9e70b4d"
-  integrity sha512-01s+ac4qerwd6RHD+mVbOEsraDHSgUaefQlEdBbUolnQFjKwCr7luvAlEwW1RFojh67u0z4OUTjPn9LEl4zIkA==
+  version "13.11.0"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-13.11.0.tgz#390ea202539c61c8fa6ba4428b57e05bc36dc47b"
+  integrity sha512-uM4mnmsIIPK/yeO+42F2RQhGUIs39K2RFmugcJANppXe6J1nvH87PvzPZYpza7Xhhs8Yn9yIAVdLZ84z61+0xQ==
 
 "@types/parse-json@^4.0.0":
   version "4.0.0"
@@ -1438,16 +1437,16 @@
   integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==
 
 "@types/react-dom@*":
-  version "16.9.5"
-  resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.5.tgz#5de610b04a35d07ffd8f44edad93a71032d9aaa7"
-  integrity sha512-BX6RQ8s9D+2/gDhxrj8OW+YD4R+8hj7FEM/OJHGNR0KipE1h1mSsf39YeyC81qafkq+N3rU3h3RFbLSwE5VqUg==
+  version "16.9.6"
+  resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.6.tgz#9e7f83d90566521cc2083be2277c6712dcaf754c"
+  integrity sha512-S6ihtlPMDotrlCJE9ST1fRmYrQNNwfgL61UB4I1W7M6kPulUKx9fXAleW5zpdIjUQ4fTaaog8uERezjsGUj9HQ==
   dependencies:
     "@types/react" "*"
 
 "@types/react@*", "@types/react@^16.9.11", "@types/react@^16.9.23":
-  version "16.9.25"
-  resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.25.tgz#6ae2159b40138c792058a23c3c04fd3db49e929e"
-  integrity sha512-Dlj2V72cfYLPNscIG3/SMUOzhzj7GK3bpSrfefwt2YT9GLynvLCCZjbhyF6VsT0q0+aRACRX03TDJGb7cA0cqg==
+  version "16.9.32"
+  resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.32.tgz#f6368625b224604148d1ddf5920e4fefbd98d383"
+  integrity sha512-fmejdp0CTH00mOJmxUPPbWCEBWPvRIL4m8r0qD+BSDUqmutPyGQCHifzMpMzdvZwROdEdL78IuZItntFWgPXHQ==
   dependencies:
     "@types/prop-types" "*"
     csstype "^2.2.0"
@@ -1458,23 +1457,23 @@
   integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==
 
 "@types/testing-library__dom@*", "@types/testing-library__dom@^7.0.0":
-  version "7.0.0"
-  resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-7.0.0.tgz#c0fb7d1c2495a3d26f19342102142d47500f0319"
-  integrity sha512-1TEPWyqQ6IQ7R1hCegZmFSA3KrBQjdzJW7yC9ybpRcFst5XuPOqBGNr0mTAKbxwI/TrTyc1skeyLJrpcvAf93w==
+  version "7.0.1"
+  resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-7.0.1.tgz#426bef0aa306a603fe071859d4b485941b28aca6"
+  integrity sha512-WokGRksRJb3Dla6h02/0/NNHTkjsj4S8aJZiwMj/5/UL8VZ1iCe3H8SHzfpmBeH8Vp4SPRT8iC2o9kYULFhDIw==
   dependencies:
     pretty-format "^25.1.0"
 
-"@types/testing-library__jest-dom@^5.0.0":
-  version "5.0.2"
-  resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.0.2.tgz#89b782e0f187fe1e80d6375133da74182ba02065"
-  integrity sha512-dZP+/WHndgCSmdaImITy0KhjGAa9c0hlGGkzefbtrPFpnGEPZECDA0zyvfSp8RKhHECJJSKHFExjOwzo0rHyIA==
+"@types/testing-library__jest-dom@^5.0.2":
+  version "5.0.3"
+  resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.0.3.tgz#8efef348eeedc62e7de21acbe455a779936417c4"
+  integrity sha512-NdbKc6yseg6uq4UJFwimPws0iwsGugVbPoOTP2EH+PJMJKiZsoSg5F2H3XYweOyytftCOuIMuXifBUrF9CSvaQ==
   dependencies:
     "@types/jest" "*"
 
-"@types/testing-library__react@^9.1.3":
-  version "9.1.3"
-  resolved "https://registry.yarnpkg.com/@types/testing-library__react/-/testing-library__react-9.1.3.tgz#35eca61cc6ea923543796f16034882a1603d7302"
-  integrity sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w==
+"@types/testing-library__react@^10.0.0":
+  version "10.0.1"
+  resolved "https://registry.yarnpkg.com/@types/testing-library__react/-/testing-library__react-10.0.1.tgz#92bb4a02394bf44428e35f1da2970ed77f803593"
+  integrity sha512-RbDwmActAckbujLZeVO/daSfdL1pnjVqas25UueOkAY5r7vriavWf0Zqg7ghXMHa8ycD/kLkv8QOj31LmSYwww==
   dependencies:
     "@types/react-dom" "*"
     "@types/testing-library__dom" "*"
@@ -1500,39 +1499,39 @@
     "@types/yargs-parser" "*"
 
 "@typescript-eslint/eslint-plugin@^2.10.0":
-  version "2.25.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.25.0.tgz#0b60917332f20dcff54d0eb9be2a9e9f4c9fbd02"
-  integrity sha512-W2YyMtjmlrOjtXc+FtTelVs9OhuR6OlYc4XKIslJ8PUJOqgYYAPRJhAqkYRQo3G4sjvG8jSodsNycEn4W2gHUw==
+  version "2.27.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.27.0.tgz#e479cdc4c9cf46f96b4c287755733311b0d0ba4b"
+  integrity sha512-/my+vVHRN7zYgcp0n4z5A6HAK7bvKGBiswaM5zIlOQczsxj/aiD7RcgD+dvVFuwFaGh5+kM7XA6Q6PN0bvb1tw==
   dependencies:
-    "@typescript-eslint/experimental-utils" "2.25.0"
+    "@typescript-eslint/experimental-utils" "2.27.0"
     functional-red-black-tree "^1.0.1"
     regexpp "^3.0.0"
     tsutils "^3.17.1"
 
-"@typescript-eslint/experimental-utils@2.25.0":
-  version "2.25.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.25.0.tgz#13691c4fe368bd377b1e5b1e4ad660b220bf7714"
-  integrity sha512-0IZ4ZR5QkFYbaJk+8eJ2kYeA+1tzOE1sBjbwwtSV85oNWYUBep+EyhlZ7DLUCyhMUGuJpcCCFL0fDtYAP1zMZw==
+"@typescript-eslint/experimental-utils@2.27.0":
+  version "2.27.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.27.0.tgz#801a952c10b58e486c9a0b36cf21e2aab1e9e01a"
+  integrity sha512-vOsYzjwJlY6E0NJRXPTeCGqjv5OHgRU1kzxHKWJVPjDYGbPgLudBXjIlc+OD1hDBZ4l1DLbOc5VjofKahsu9Jw==
   dependencies:
     "@types/json-schema" "^7.0.3"
-    "@typescript-eslint/typescript-estree" "2.25.0"
+    "@typescript-eslint/typescript-estree" "2.27.0"
     eslint-scope "^5.0.0"
     eslint-utils "^2.0.0"
 
 "@typescript-eslint/parser@^2.10.0":
-  version "2.25.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.25.0.tgz#abfb3d999084824d9a756d9b9c0f36fba03adb76"
-  integrity sha512-mccBLaBSpNVgp191CP5W+8U1crTyXsRziWliCqzj02kpxdjKMvFHGJbK33NroquH3zB/gZ8H511HEsJBa2fNEg==
+  version "2.27.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.27.0.tgz#d91664335b2c46584294e42eb4ff35838c427287"
+  integrity sha512-HFUXZY+EdwrJXZo31DW4IS1ujQW3krzlRjBrFRrJcMDh0zCu107/nRfhk/uBasO8m0NVDbBF5WZKcIUMRO7vPg==
   dependencies:
     "@types/eslint-visitor-keys" "^1.0.0"
-    "@typescript-eslint/experimental-utils" "2.25.0"
-    "@typescript-eslint/typescript-estree" "2.25.0"
+    "@typescript-eslint/experimental-utils" "2.27.0"
+    "@typescript-eslint/typescript-estree" "2.27.0"
     eslint-visitor-keys "^1.1.0"
 
-"@typescript-eslint/typescript-estree@2.25.0":
-  version "2.25.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.25.0.tgz#b790497556734b7476fa7dd3fa539955a5c79e2c"
-  integrity sha512-VUksmx5lDxSi6GfmwSK7SSoIKSw9anukWWNitQPqt58LuYrKalzsgeuignbqnB+rK/xxGlSsCy8lYnwFfB6YJg==
+"@typescript-eslint/typescript-estree@2.27.0":
+  version "2.27.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.27.0.tgz#a288e54605412da8b81f1660b56c8b2e42966ce8"
+  integrity sha512-t2miCCJIb/FU8yArjAvxllxbTiyNqaXJag7UOpB5DVoM3+xnjeOngtqlJkLRnMtzaRcJhe3CIR9RmL40omubhg==
   dependencies:
     debug "^4.1.1"
     eslint-visitor-keys "^1.1.0"
@@ -2070,12 +2069,12 @@ atob@^2.1.2:
   integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
 
 autoprefixer@^9.6.1:
-  version "9.7.5"
-  resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.5.tgz#8df10b9ff9b5814a8d411a5cfbab9c793c392376"
-  integrity sha512-URo6Zvt7VYifomeAfJlMFnYDhow1rk2bufwkbamPEAtQFcL11moLk4PnR7n9vlu7M+BkXAZkHFA0mIcY7tjQFg==
+  version "9.7.6"
+  resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.6.tgz#63ac5bbc0ce7934e6997207d5bb00d68fa8293a4"
+  integrity sha512-F7cYpbN7uVVhACZTeeIeealwdGM6wMtfWARVLTy5xmKtgVdBNJvbDRoCK3YO1orcs7gv/KwYlb3iXwu9Ug9BkQ==
   dependencies:
-    browserslist "^4.11.0"
-    caniuse-lite "^1.0.30001036"
+    browserslist "^4.11.1"
+    caniuse-lite "^1.0.30001039"
     chalk "^2.4.2"
     normalize-range "^0.1.2"
     num2fraction "^1.2.2"
@@ -2476,15 +2475,15 @@ browserslist@4.10.0:
     node-releases "^1.1.52"
     pkg-up "^3.1.0"
 
-browserslist@^4.0.0, browserslist@^4.11.0, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.8.3, browserslist@^4.9.1:
-  version "4.11.0"
-  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.0.tgz#aef4357b10a8abda00f97aac7cd587b2082ba1ad"
-  integrity sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A==
+browserslist@^4.0.0, browserslist@^4.11.1, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.8.3, browserslist@^4.9.1:
+  version "4.11.1"
+  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.1.tgz#92f855ee88d6e050e7e7311d987992014f1a1f1b"
+  integrity sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g==
   dependencies:
-    caniuse-lite "^1.0.30001035"
-    electron-to-chromium "^1.3.380"
-    node-releases "^1.1.52"
-    pkg-up "^3.1.0"
+    caniuse-lite "^1.0.30001038"
+    electron-to-chromium "^1.3.390"
+    node-releases "^1.1.53"
+    pkg-up "^2.0.0"
 
 bser@2.1.1:
   version "2.1.1"
@@ -2649,10 +2648,10 @@ caniuse-api@^3.0.0:
     lodash.memoize "^4.1.2"
     lodash.uniq "^4.5.0"
 
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001036:
-  version "1.0.30001036"
-  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001036.tgz#930ea5272010d8bf190d859159d757c0b398caf0"
-  integrity sha512-jU8CIFIj2oR7r4W+5AKcsvWNVIb6Q6OZE3UsrXrZBHFtreT4YgTeOJtTucp+zSedEpTi3L5wASSP0LYIE3if6w==
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001038, caniuse-lite@^1.0.30001039:
+  version "1.0.30001039"
+  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001039.tgz#b3814a1c38ffeb23567f8323500c09526a577bbe"
+  integrity sha512-SezbWCTT34eyFoWHgx8UWso7YtvtM7oosmFoXbCkdC6qJzRfBTeTgE9REtKtiuKXuMwWTZEvdnFNGAyVMorv8Q==
 
 capture-exit@^2.0.0:
   version "2.0.0"
@@ -2704,7 +2703,7 @@ chardet@^0.7.0:
   resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
   integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
 
-chokidar@^2.0.2, chokidar@^2.1.8:
+chokidar@^2.1.8:
   version "2.1.8"
   resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
   integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
@@ -3401,9 +3400,9 @@ cssstyle@^1.0.0, cssstyle@^1.1.1:
     cssom "0.3.x"
 
 csstype@^2.2.0, csstype@^2.6.7:
-  version "2.6.9"
-  resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.9.tgz#05141d0cd557a56b8891394c1911c40c8a98d098"
-  integrity sha512-xz39Sb4+OaTsULgUERcCk+TJj8ylkL4aSVDQiX/ksxbELSqwkgt4d4RD7fovIdgJGSuNYqwZEiVjYY5l0ask+Q==
+  version "2.6.10"
+  resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.10.tgz#e63af50e66d7c266edb6b32909cfd0aabe03928b"
+  integrity sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w==
 
 cyclist@^1.0.1:
   version "1.0.1"
@@ -3605,10 +3604,10 @@ diff-sequences@^24.9.0:
   resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5"
   integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==
 
-diff-sequences@^25.1.0:
-  version "25.1.0"
-  resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.1.0.tgz#fd29a46f1c913fd66c22645dc75bffbe43051f32"
-  integrity sha512-nFIfVk5B/NStCsJ+zaPO4vYuLjlzQ6uFvPxzYyHlejNZ/UGa7G/n7peOXVrVNvRuyfstt+mZQYGpjxg9Z6N8Kw==
+diff-sequences@^25.2.6:
+  version "25.2.6"
+  resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd"
+  integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==
 
 diffie-hellman@^5.0.0:
   version "5.0.3"
@@ -3682,11 +3681,11 @@ dom-converter@^0.2:
     utila "~0.4"
 
 dom-helpers@^5.0.1, dom-helpers@^5.1.0, dom-helpers@^5.1.2:
-  version "5.1.3"
-  resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.1.3.tgz#7233248eb3a2d1f74aafca31e52c5299cc8ce821"
-  integrity sha512-nZD1OtwfWGRBWlpANxacBEZrEuLa16o1nh7YopFWeoF68Zt8GGEmzHu6Xv4F3XaFIC+YXtTLrzgqKxFgLEe4jw==
+  version "5.1.4"
+  resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.1.4.tgz#4609680ab5c79a45f2531441f1949b79d6587f4b"
+  integrity sha512-TjMyeVUvNEnOnhzs6uAn9Ya47GmMo3qq7m+Lr/3ON0Rs5kHvb8I+SQYjLUSYn7qhEm0QjW0yrBkvz9yOrwwz1A==
   dependencies:
-    "@babel/runtime" "^7.6.3"
+    "@babel/runtime" "^7.8.7"
     csstype "^2.6.7"
 
 dom-serializer@0:
@@ -3795,10 +3794,10 @@ ee-first@1.1.1:
   resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
   integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
 
-electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.380:
-  version "1.3.383"
-  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.383.tgz#8bbef55963529bfbf8344ac3620e1bcb455cffc3"
-  integrity sha512-EHYVJl6Ox1kFy/SzGVbijHu8ksQotJnqHCFFfaVhXiC+erOSplwhCtOTSocu1jRwirlNsSn/aZ9Kf84Z6s5qrg==
+electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.390:
+  version "1.3.398"
+  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.398.tgz#4c01e29091bf39e578ac3f66c1f157d92fa5725d"
+  integrity sha512-BJjxuWLKFbM5axH3vES7HKMQgAknq9PZHBkMK/rEXUQG9i1Iw5R+6hGkm6GtsQSANjSUrh/a6m32nzCNDNo/+w==
 
 elliptic@^6.0.0:
   version "6.5.2"
@@ -3878,7 +3877,7 @@ error-ex@^1.2.0, error-ex@^1.3.1:
   dependencies:
     is-arrayish "^0.2.1"
 
-es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2:
+es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5:
   version "1.17.5"
   resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9"
   integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==
@@ -3984,9 +3983,9 @@ eslint-loader@3.0.3:
     schema-utils "^2.6.1"
 
 eslint-module-utils@^2.4.1:
-  version "2.5.2"
-  resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz#7878f7504824e1b857dd2505b59a8e5eda26a708"
-  integrity sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q==
+  version "2.6.0"
+  resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6"
+  integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==
   dependencies:
     debug "^2.6.9"
     pkg-dir "^2.0.0"
@@ -4531,9 +4530,9 @@ flat-cache@^2.0.1:
     write "1.0.3"
 
 flatted@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08"
-  integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138"
+  integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==
 
 flatten@^1.0.2:
   version "1.0.3"
@@ -4556,9 +4555,9 @@ follow-redirects@1.5.10:
     debug "=3.1.0"
 
 follow-redirects@^1.0.0:
-  version "1.10.0"
-  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.10.0.tgz#01f5263aee921c6a54fb91667f08f4155ce169eb"
-  integrity sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ==
+  version "1.11.0"
+  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.11.0.tgz#afa14f08ba12a52963140fe43212658897bc0ecb"
+  integrity sha512-KZm0V+ll8PfBrKwMzdo5D13b1bur9Iq9Zd/RMmAoQQcl2PxxFml8cxXPaaPYVbV0RjNjq1CU7zIzAOqtUPudmA==
   dependencies:
     debug "^3.0.0"
 
@@ -4872,9 +4871,9 @@ gzip-size@5.1.1:
     pify "^4.0.1"
 
 handle-thing@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754"
-  integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e"
+  integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==
 
 har-schema@^2.0.0:
   version "2.0.0"
@@ -5056,9 +5055,9 @@ html-entities@^1.2.1:
   integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=
 
 html-escaper@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.1.tgz#beed86b5d2b921e92533aa11bce6d8e3b583dee7"
-  integrity sha512-hNX23TjWwD3q56HpWjUHOKj1+4KKlnjv9PcmBUYKVpga+2cnb9nDx/B1o0yO4n+RZXZdiNxzx6B24C9aNMTkkQ==
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
+  integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
 
 html-minifier-terser@^5.0.1:
   version "5.0.5"
@@ -5837,15 +5836,15 @@ jest-diff@^24.9.0:
     jest-get-type "^24.9.0"
     pretty-format "^24.9.0"
 
-jest-diff@^25.1.0:
-  version "25.1.0"
-  resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.1.0.tgz#58b827e63edea1bc80c1de952b80cec9ac50e1ad"
-  integrity sha512-nepXgajT+h017APJTreSieh4zCqnSHEJ1iT8HDlewu630lSJ4Kjjr9KNzm+kzGwwcpsDE6Snx1GJGzzsefaEHw==
+jest-diff@^25.1.0, jest-diff@^25.2.1, jest-diff@^25.2.6:
+  version "25.2.6"
+  resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.2.6.tgz#a6d70a9ab74507715ea1092ac513d1ab81c1b5e7"
+  integrity sha512-KuadXImtRghTFga+/adnNrv9s61HudRMR7gVSbP35UKZdn4IK2/0N0PpGZIqtmllK9aUyye54I3nu28OYSnqOg==
   dependencies:
     chalk "^3.0.0"
-    diff-sequences "^25.1.0"
-    jest-get-type "^25.1.0"
-    pretty-format "^25.1.0"
+    diff-sequences "^25.2.6"
+    jest-get-type "^25.2.6"
+    pretty-format "^25.2.6"
 
 jest-docblock@^24.3.0:
   version "24.9.0"
@@ -5905,10 +5904,10 @@ jest-get-type@^24.9.0:
   resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e"
   integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==
 
-jest-get-type@^25.1.0:
-  version "25.1.0"
-  resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.1.0.tgz#1cfe5fc34f148dc3a8a3b7275f6b9ce9e2e8a876"
-  integrity sha512-yWkBnT+5tMr8ANB6V+OjmrIJufHtCAqI5ic2H40v+tRqxDmE0PGnIiTyvRWFOMtmVHYpwRqyazDbTnhpjsGvLw==
+jest-get-type@^25.2.6:
+  version "25.2.6"
+  resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877"
+  integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==
 
 jest-haste-map@^24.9.0:
   version "24.9.0"
@@ -5970,14 +5969,14 @@ jest-matcher-utils@^24.9.0:
     pretty-format "^24.9.0"
 
 jest-matcher-utils@^25.1.0:
-  version "25.1.0"
-  resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.1.0.tgz#fa5996c45c7193a3c24e73066fc14acdee020220"
-  integrity sha512-KGOAFcSFbclXIFE7bS4C53iYobKI20ZWleAdAFun4W1Wz1Kkej8Ng6RRbhL8leaEvIOjGXhGf/a1JjO8bkxIWQ==
+  version "25.2.7"
+  resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.2.7.tgz#53fad3c11fc42e92e374306df543026712c957a3"
+  integrity sha512-jNYmKQPRyPO3ny0KY1I4f0XW4XnpJ3Nx5ovT4ik0TYDOYzuXJW40axqOyS61l/voWbVT9y9nZ1THL1DlpaBVpA==
   dependencies:
     chalk "^3.0.0"
-    jest-diff "^25.1.0"
-    jest-get-type "^25.1.0"
-    pretty-format "^25.1.0"
+    jest-diff "^25.2.6"
+    jest-get-type "^25.2.6"
+    pretty-format "^25.2.6"
 
 jest-message-util@^24.9.0:
   version "24.9.0"
@@ -6173,9 +6172,9 @@ jest-worker@^24.6.0, jest-worker@^24.9.0:
     supports-color "^6.1.0"
 
 jest-worker@^25.1.0:
-  version "25.1.0"
-  resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.1.0.tgz#75d038bad6fdf58eba0d2ec1835856c497e3907a"
-  integrity sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg==
+  version "25.2.6"
+  resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.2.6.tgz#d1292625326794ce187c38f51109faced3846c58"
+  integrity sha512-FJn9XDUSxcOR4cwDzRfL1z56rUofNTFs539FGASpd50RHdb6EVkhxQqktodW2mI49l+W3H+tFJDotCHUQF6dmA==
   dependencies:
     merge-stream "^2.0.0"
     supports-color "^7.0.0"
@@ -6330,9 +6329,9 @@ json5@^1.0.1:
     minimist "^1.2.0"
 
 json5@^2.1.2:
-  version "2.1.2"
-  resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e"
-  integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==
+  version "2.1.3"
+  resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43"
+  integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==
   dependencies:
     minimist "^1.2.5"
 
@@ -6912,9 +6911,9 @@ mixin-object@^2.0.1:
     is-extendable "^0.1.1"
 
 mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1:
-  version "0.5.4"
-  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz#fd01504a6797ec5c9be81ff43d204961ed64a512"
-  integrity sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==
+  version "0.5.5"
+  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
+  integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
   dependencies:
     minimist "^1.2.5"
 
@@ -6991,9 +6990,9 @@ natural-compare@^1.4.0:
   integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
 
 needle@^2.2.1:
-  version "2.3.3"
-  resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz#a041ad1d04a871b0ebb666f40baaf1fb47867117"
-  integrity sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw==
+  version "2.4.1"
+  resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.1.tgz#14af48732463d7475696f937626b1b993247a56a"
+  integrity sha512-x/gi6ijr4B7fwl6WYL9FwlCvRQKGlUNvnceho8wxkwXqN8jvVmmmATTmZPRRG7b/yC1eode26C2HO9jl78Du9g==
   dependencies:
     debug "^3.2.6"
     iconv-lite "^0.4.4"
@@ -7098,12 +7097,10 @@ node-pre-gyp@*:
     semver "^5.3.0"
     tar "^4.4.2"
 
-node-releases@^1.1.52:
-  version "1.1.52"
-  resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9"
-  integrity sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==
-  dependencies:
-    semver "^6.3.0"
+node-releases@^1.1.52, node-releases@^1.1.53:
+  version "1.1.53"
+  resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4"
+  integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==
 
 nopt@^4.0.1:
   version "4.0.3"
@@ -7456,9 +7453,9 @@ p-limit@^1.1.0:
     p-try "^1.0.0"
 
 p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.2:
-  version "2.2.2"
-  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e"
-  integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+  integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
   dependencies:
     p-try "^2.0.0"
 
@@ -7784,6 +7781,13 @@ pkg-up@3.1.0, pkg-up@^3.1.0:
   dependencies:
     find-up "^3.0.0"
 
+pkg-up@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f"
+  integrity sha1-yBmscoBZpGHKscOImivjxJoATX8=
+  dependencies:
+    find-up "^2.1.0"
+
 pn@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb"
@@ -8481,10 +8485,10 @@ prepend-http@^1.0.0:
   resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
   integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
 
-prettier@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.2.tgz#1ba8f3eb92231e769b7fcd7cb73ae1b6b74ade08"
-  integrity sha512-5xJQIPT8BraI7ZnaDwSbu5zLrB6vvi8hVV58yHQ+QK64qrY40dULy0HSRlQ2/2IdzeBpjhDkqdcFBnFeDEMVdg==
+prettier@^2.0.4:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.4.tgz#2d1bae173e355996ee355ec9830a7a1ee05457ef"
+  integrity sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w==
 
 pretty-bytes@^5.1.0:
   version "5.3.0"
@@ -8509,12 +8513,12 @@ pretty-format@^24.9.0:
     ansi-styles "^3.2.0"
     react-is "^16.8.4"
 
-pretty-format@^25.1.0:
-  version "25.1.0"
-  resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.1.0.tgz#ed869bdaec1356fc5ae45de045e2c8ec7b07b0c8"
-  integrity sha512-46zLRSGLd02Rp+Lhad9zzuNZ+swunitn8zIpfD2B4OPCRLXbM87RJT2aBLBWYOznNUML/2l/ReMyWNC80PJBUQ==
+pretty-format@^25.1.0, pretty-format@^25.2.1, pretty-format@^25.2.6:
+  version "25.2.6"
+  resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.2.6.tgz#542a1c418d019bbf1cca2e3620443bc1323cb8d7"
+  integrity sha512-DEiWxLBaCHneffrIT4B+TpMvkV9RNvvJrd3lY9ew1CEQobDzEXmYT1mg0hJhljZty7kCc10z13ohOFAE8jrUDg==
   dependencies:
-    "@jest/types" "^25.1.0"
+    "@jest/types" "^25.2.6"
     ansi-regex "^5.0.0"
     ansi-styles "^4.0.0"
     react-is "^16.12.0"
@@ -8590,9 +8594,9 @@ prr@~1.0.1:
   integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
 
 psl@^1.1.28:
-  version "1.7.0"
-  resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c"
-  integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==
+  version "1.8.0"
+  resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
+  integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
 
 public-encrypt@^4.0.0:
   version "4.0.3"
@@ -9089,9 +9093,9 @@ regexpp@^2.0.1:
   integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
 
 regexpp@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e"
-  integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
+  integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
 
 regexpu-core@^4.7.0:
   version "4.7.0"
@@ -9355,9 +9359,9 @@ run-queue@^1.0.0, run-queue@^1.0.3:
     aproba "^1.1.1"
 
 rxjs@^6.5.3:
-  version "6.5.4"
-  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c"
-  integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==
+  version "6.5.5"
+  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec"
+  integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==
   dependencies:
     tslib "^1.9.0"
 
@@ -9623,9 +9627,9 @@ side-channel@^1.0.2:
     object-inspect "^1.7.0"
 
 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=
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
+  integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
 
 simple-swizzle@^0.2.2:
   version "0.2.2"
@@ -9798,9 +9802,9 @@ spdy-transport@^3.0.0:
     wbuf "^1.7.3"
 
 spdy@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2"
-  integrity sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b"
+  integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==
   dependencies:
     debug "^4.1.0"
     handle-thing "^2.0.0"
@@ -9978,21 +9982,39 @@ string.prototype.matchall@^4.0.2:
     regexp.prototype.flags "^1.3.0"
     side-channel "^1.0.2"
 
+string.prototype.trimend@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz#ee497fd29768646d84be2c9b819e292439614373"
+  integrity sha512-EEJnGqa/xNfIg05SxiPSqRS7S9qwDhYts1TSLR1BQfYUfPe1stofgGKvwERK9+9yf+PpfBMlpBaCHucXGPQfUA==
+  dependencies:
+    define-properties "^1.1.3"
+    es-abstract "^1.17.5"
+
 string.prototype.trimleft@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74"
-  integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc"
+  integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==
   dependencies:
     define-properties "^1.1.3"
-    function-bind "^1.1.1"
+    es-abstract "^1.17.5"
+    string.prototype.trimstart "^1.0.0"
 
 string.prototype.trimright@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9"
-  integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3"
+  integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==
   dependencies:
     define-properties "^1.1.3"
-    function-bind "^1.1.1"
+    es-abstract "^1.17.5"
+    string.prototype.trimend "^1.0.0"
+
+string.prototype.trimstart@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz#afe596a7ce9de905496919406c9734845f01a2f2"
+  integrity sha512-iCP8g01NFYiiBOnwG1Xc3WZLyoo+RuBymwIlWncShXDDJYWN6DbnM3odslBJdgCdRlq94B5s63NWAZlcn2CS4w==
+  dependencies:
+    define-properties "^1.1.3"
+    es-abstract "^1.17.5"
 
 string_decoder@^1.0.0, string_decoder@^1.1.1:
   version "1.3.0"
@@ -10071,9 +10093,9 @@ strip-indent@^3.0.0:
     min-indent "^1.0.0"
 
 strip-json-comments@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7"
-  integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180"
+  integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==
 
 strip-json-comments@~2.0.1:
   version "2.0.1"
@@ -10211,9 +10233,9 @@ terser-webpack-plugin@^1.4.3:
     worker-farm "^1.7.0"
 
 terser@^4.1.2, terser@^4.4.3, terser@^4.6.3:
-  version "4.6.7"
-  resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.7.tgz#478d7f9394ec1907f0e488c5f6a6a9a2bad55e72"
-  integrity sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g==
+  version "4.6.10"
+  resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.10.tgz#90f5bd069ff456ddbc9503b18e52f9c493d3b7c2"
+  integrity sha512-qbF/3UOo11Hggsbsqm2hPa6+L4w7bkr+09FNseEe8xrcVD3APGLFqE+Oz1ZKAxjYnFsj80rLOfgAtJ0LNJjtTA==
   dependencies:
     commander "^2.20.0"
     source-map "~0.6.1"
@@ -10353,11 +10375,16 @@ tr46@^1.0.1:
   dependencies:
     punycode "^2.1.0"
 
-ts-pnp@1.1.6, ts-pnp@^1.1.6:
+ts-pnp@1.1.6:
   version "1.1.6"
   resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.6.tgz#389a24396d425a0d3162e96d2b4638900fdc289a"
   integrity sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ==
 
+ts-pnp@^1.1.6:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
+  integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
+
 tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0:
   version "1.11.1"
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35"
@@ -10689,11 +10716,11 @@ warning@^4.0.0, warning@^4.0.3:
     loose-envify "^1.0.0"
 
 watchpack@^1.6.0:
-  version "1.6.0"
-  resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"
-  integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==
+  version "1.6.1"
+  resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.1.tgz#280da0a8718592174010c078c7585a74cd8cd0e2"
+  integrity sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==
   dependencies:
-    chokidar "^2.0.2"
+    chokidar "^2.1.8"
     graceful-fs "^4.1.2"
     neo-async "^2.5.0"
 
diff --git a/eth/handler.go b/eth/handler.go
index 11ccf916953ad5319bb7c4c25d3c03497780a099..a4eaa39f0e790f424196ee4f13d5f31d7f04d4b2 100644
--- a/eth/handler.go
+++ b/eth/handler.go
@@ -31,7 +31,6 @@ import (
 	"time"
 
 	"github.com/ledgerwatch/turbo-geth/common"
-	"github.com/ledgerwatch/turbo-geth/common/debug"
 	"github.com/ledgerwatch/turbo-geth/consensus"
 	"github.com/ledgerwatch/turbo-geth/core"
 	"github.com/ledgerwatch/turbo-geth/core/forkid"
@@ -1316,9 +1315,6 @@ func (pm *ProtocolManager) handleDebugMsg(p *debugPeer) error {
 		downloader.MaxHeaderFetch = 192 * 10
 		downloader.MaxReceiptFetch = 256 * 10
 
-		// hacks to enable asserts
-		debug.IntermediateTrieHashAssertDbIntegrity = true
-
 		log.Warn("Succeed to set new Genesis")
 		if err := p2p.Send(p.rw, DebugSetGenesisMsg, "{}"); err != nil {
 			return fmt.Errorf("p2p.Send: %w", err)
diff --git a/trie/intermediate_hashes_test.go b/trie/intermediate_hashes_test.go
index a8fed525d0bb7271b631dd4710850115b4ffeba1..3258f6d0f25a5655b3b4810dc82c8361083b8d17 100644
--- a/trie/intermediate_hashes_test.go
+++ b/trie/intermediate_hashes_test.go
@@ -2,7 +2,6 @@ package trie
 
 import (
 	"fmt"
-	"io"
 	"strconv"
 	"testing"
 
@@ -41,215 +40,3 @@ func TestCompressNibbles(t *testing.T) {
 		assert.Equal(t, tc.in, fmt.Sprintf("%x", decompressed), msg)
 	}
 }
-
-/*
-BenchmarkCompImplOnly/buf,_io.ByteWriter-12         	22229425	        53.0 ns/op	       0 B/op	       0 allocs/op
-BenchmarkCompImplOnly/[]byte-12                     	78929832	        15.1 ns/op	       0 B/op	       0 allocs/op
-BenchmarkCompImplOnly/*[]byte-12                    	77875892	        14.9 ns/op	       0 B/op	       0 allocs/op
-BenchmarkCompImplOnly/*[]byte_+_append()-12         	75405454	        15.7 ns/op	       0 B/op	       0 allocs/op
-BenchmarkCompImplOnly/[]byte_+_append()_+_return-12 	65988324	        18.0 ns/op	       0 B/op	       0 allocs/op
-BenchmarkCompImplOnly/var_[64]byte-12               	73355667	        20.0 ns/op	       0 B/op	       0 allocs/op
-*/
-func BenchmarkCompImplOnly(b *testing.B) {
-	in := common.Hex2Bytes("0102030405060708090f0102030405060708090f0102030405060708090f")
-	pool.PutBuffer(pool.GetBuffer(64))
-
-	b.Run("buf, io.ByteWriter", func(b *testing.B) {
-		buf := pool.GetBuffer(64)
-		defer pool.PutBuffer(buf)
-		for i := 0; i < b.N; i++ {
-			buf.B = buf.B[:0]
-			if err := Compress2(in, buf); err != nil {
-				panic(err)
-			}
-			_ = buf.B
-		}
-	})
-
-	b.Run("[]byte", func(b *testing.B) {
-		buf := pool.GetBuffer(64)
-		defer pool.PutBuffer(buf)
-		for i := 0; i < b.N; i++ {
-			buf.B = buf.B[:0]
-			l := Compress3(in, buf.B)
-			k := buf.B[:l]
-			_ = k
-		}
-	})
-
-	b.Run("*[]byte", func(b *testing.B) {
-		buf := pool.GetBuffer(64)
-		defer pool.PutBuffer(buf)
-		for i := 0; i < b.N; i++ {
-			buf.B = buf.B[:0]
-			Compress3a(in, &buf.B)
-		}
-	})
-
-	//b.Run("[]byte + append()", func(b *testing.B) {
-	//	buf := pool.GetBuffer(64)
-	//	defer pool.PutBuffer(buf)
-	//	for i := 0; i < b.N; i++ {
-	//		l := Compress4a(in, buf.B)
-	//		k := buf.B[:l]
-	//		_ = k
-	//	}
-	//})
-
-	b.Run("*[]byte + append()", func(b *testing.B) {
-		buf := pool.GetBuffer(64)
-		defer pool.PutBuffer(buf)
-		for i := 0; i < b.N; i++ {
-			buf.B = buf.B[:0]
-			Compress4(in, &buf.B)
-		}
-	})
-
-	b.Run("[]byte + append() + return", func(b *testing.B) {
-		buf := pool.GetBuffer(64)
-		defer pool.PutBuffer(buf)
-		for i := 0; i < b.N; i++ {
-			buf.B = Compress4a(in, buf.B)
-		}
-	})
-
-	b.Run("var [64]byte", func(b *testing.B) {
-		var out [64]byte
-		for i := 0; i < b.N; i++ {
-			l := Compress5(in, &out)
-			k := out[:l]
-			_ = k
-		}
-	})
-}
-
-/*
-BenchmarkCompWithAlloc/Buf_Pool_as_io.ByteWriter-12 	16608708	        90.4 ns/op	       0 B/op	       0 allocs/op
-BenchmarkCompWithAlloc/Buf_Pool_as_bytes-12         	34118124	        35.3 ns/op	       0 B/op	       0 allocs/op
-BenchmarkCompWithAlloc/Buf_Pool_as_bytes_2-12       	33667668	        36.5 ns/op	       0 B/op	       0 allocs/op
-BenchmarkCompWithAlloc/make_outside-12              	37161247	        32.0 ns/op	      16 B/op	       1 allocs/op
-BenchmarkCompWithAlloc/var_[64]byte-12              	72436761	        16.8 ns/op	       0 B/op	       0 allocs/op
-BenchmarkCompWithAlloc/make_inside_func-12          	38349050	        34.2 ns/op	      16 B/op	       1 allocs/op
-*/
-func BenchmarkCompWithAlloc(b *testing.B) {
-	in := common.Hex2Bytes("0102030405060708090f0102030405060708090f0102030405060708090f")
-	pool.PutBuffer(pool.GetBuffer(64))
-
-	b.Run("Buf Pool as io.ByteWriter", func(b *testing.B) {
-		for i := 0; i < b.N; i++ {
-			buf := pool.GetBuffer(64)
-			buf.Reset()
-			if err := Compress2(in, buf); err != nil {
-				panic(err)
-			}
-			pool.PutBuffer(buf)
-		}
-	})
-
-	b.Run("Buf Pool as bytes", func(b *testing.B) {
-		for i := 0; i < b.N; i++ {
-			buf := pool.GetBuffer(64)
-			Compress4(in, &buf.B)
-			pool.PutBuffer(buf)
-		}
-	})
-
-	b.Run("Buf Pool as bytes 2", func(b *testing.B) {
-		for i := 0; i < b.N; i++ {
-			buf := pool.GetBuffer(64)
-			buf.B = Compress4a(in, buf.B)
-			pool.PutBuffer(buf)
-		}
-	})
-
-	b.Run("make outside", func(b *testing.B) {
-		for i := 0; i < b.N; i++ {
-			k := make([]byte, len(in)/2)
-			Compress4(in, &k)
-		}
-	})
-
-	b.Run("var [64]byte", func(b *testing.B) {
-		for i := 0; i < b.N; i++ {
-			var out [64]byte
-			l := Compress5(in, &out)
-			k := out[:l]
-			_ = k
-		}
-	})
-	b.Run("make inside func", func(b *testing.B) {
-		for i := 0; i < b.N; i++ {
-			k := Compress6(in)
-			_ = k
-		}
-	})
-}
-
-func Compress2(nibbles []byte, out io.ByteWriter) error {
-	for i := 0; i < len(nibbles); i += 2 {
-		if err := out.WriteByte(nibbles[i]<<4 | nibbles[i+1]); err != nil {
-			return err
-		}
-	}
-
-	return nil
-}
-
-func Compress3(nibbles []byte, out []byte) int {
-	var bi int
-	out = out[:len(nibbles)/2]
-	for i := 0; i < len(nibbles); bi, i = bi+1, i+2 {
-		out[bi] = nibbles[i]<<4 | nibbles[i+1]
-	}
-	return bi
-}
-
-func Compress3a(nibbles []byte, out *[]byte) {
-	k := (*out)[:len(nibbles)/2]
-	var bi int
-	for i := 0; i < len(nibbles); bi, i = bi+1, i+2 {
-		k[bi] = nibbles[i]<<4 | nibbles[i+1]
-	}
-	*out = k
-}
-
-func Compress4(nibbles []byte, out *[]byte) {
-	k := (*out)[:0]
-	for j, i := 0, 0; i < len(nibbles); j, i = i+1, i+2 {
-		k = append(k, nibbles[i]<<4|nibbles[j])
-	}
-	*out = k
-}
-
-func Compress4a(nibbles []byte, out []byte) []byte {
-	out = out[:0]
-	for j, i := 0, 0; i < len(nibbles); j, i = i+1, i+2 {
-		out = append(out, nibbles[i]<<4|nibbles[j])
-	}
-	return out
-}
-
-// this version disqualified because linter doesn't like it
-//func Compress4a(nibbles []byte, out []byte) int {
-//	out = out[:0]
-//	for i := 0; i < len(nibbles); i += 2 {
-//		out = append(out, nibbles[i]<<4|nibbles[i+1])
-//	}
-//	return len(nibbles) / 2
-//}
-
-func Compress5(nibbles []byte, out *[64]byte) (outLength int) {
-	var bi int
-	for i := 0; i < len(nibbles); bi, i = bi+1, i+2 {
-		out[bi] = (nibbles[i] << 4) | nibbles[i+1]
-	}
-	return bi
-}
-
-func Compress6(nibbles []byte) []byte {
-	out := make([]byte, len(nibbles)/2)
-	for bi, i := 0, 0; i < len(nibbles); bi, i = bi+1, i+2 {
-		out[bi] = nibbles[i]<<4 | nibbles[i+1]
-	}
-	return out
-}
diff --git a/trie/resolver_stateful_cached.go b/trie/resolver_stateful_cached.go
index 357f41f38900c5ec6a45656f606c542288031997..ed7143eecabc3beaef67cce7921c084d83a87664 100644
--- a/trie/resolver_stateful_cached.go
+++ b/trie/resolver_stateful_cached.go
@@ -384,6 +384,19 @@ func (tr *ResolverStatefulCached) MultiWalk2(db *bolt.DB, blockNr uint64, bucket
 				fmt.Printf("For loop: %x, %x\n", cacheK, k)
 			}
 
+			// Special case: self-destructed accounts.
+			// self-destructed accounts may be marked in IH bucket by empty value
+			// in this case: skip all IH keys of given prefix
+			if cacheV != nil && len(cacheV) == 0 {
+				next, ok := nextSubtree(cacheK)
+				if !ok { // no siblings left
+					cacheK, cacheV = nil, nil
+					continue
+				}
+				cacheK, cacheV = cache.Seek(next)
+				continue
+			}
+
 			// for Address bucket, skip cache keys longer than 31 bytes
 			if isAccountBucket {
 				for len(cacheK) > maxAccountKeyLen {
@@ -502,10 +515,7 @@ func (tr *ResolverStatefulCached) MultiWalk2(db *bolt.DB, blockNr uint64, bucket
 			}
 
 			// cache part
-			if len(cacheV) == 0 { // skip empty values
-				cacheK, cacheV = cache.Next()
-				continue
-			}
+			canUseCache := false
 
 			currentReq := tr.requests[tr.reqIndices[rangeIdx]]
 			currentRs := tr.rss[rangeIdx]
@@ -517,7 +527,7 @@ func (tr *ResolverStatefulCached) MultiWalk2(db *bolt.DB, blockNr uint64, bucket
 				continue
 			}
 
-			canUseCache := currentRs.HashOnly(keyAsNibbles.B[currentReq.extResolvePos:])
+			canUseCache = currentRs.HashOnly(keyAsNibbles.B[currentReq.extResolvePos:])
 			if !canUseCache { // can't use cache as is, need go to children
 				cacheK, cacheV = cache.Next() // go to children, not to sibling
 				continue