diff --git a/node_modules/figures/index.js b/node_modules/figures/index.js
new file mode 100644
index 0000000..090af2a
--- /dev/null
+++ b/node_modules/figures/index.js
@@ -0,0 +1,147 @@
+'use strict';
+var objectAssign = require('object-assign');
+var escapeStringRegexp = require('escape-string-regexp');
+var platform = process.platform;
+
+var main = {
+	tick: '✔',
+	cross: '✖',
+	star: '★',
+	square: '▇',
+	squareSmall: '◻',
+	squareSmallFilled: '◼',
+	play: '▶',
+	circle: '◯',
+	circleFilled: '◉',
+	circleDotted: '◌',
+	circleDouble: '◎',
+	circleCircle: 'ⓞ',
+	circleCross: 'ⓧ',
+	circlePipe: 'Ⓘ',
+	circleQuestionMark: '?⃝',
+	bullet: '●',
+	dot: '․',
+	line: '─',
+	ellipsis: '…',
+	pointer: '❯',
+	pointerSmall: '›',
+	info: 'ℹ',
+	warning: '⚠',
+	hamburger: '☰',
+	smiley: '㋡',
+	mustache: '෴',
+	heart: '♥',
+	arrowUp: '↑',
+	arrowDown: '↓',
+	arrowLeft: '←',
+	arrowRight: '→',
+	radioOn: '◉',
+	radioOff: '◯',
+	checkboxOn: '☒',
+	checkboxOff: '☐',
+	checkboxCircleOn: 'ⓧ',
+	checkboxCircleOff: 'Ⓘ',
+	questionMarkPrefix: '?⃝',
+	oneHalf: '½',
+	oneThird: '⅓',
+	oneQuarter: '¼',
+	oneFifth: '⅕',
+	oneSixth: '⅙',
+	oneSeventh: '⅐',
+	oneEighth: '⅛',
+	oneNinth: '⅑',
+	oneTenth: '⅒',
+	twoThirds: '⅔',
+	twoFifths: '⅖',
+	threeQuarters: '¾',
+	threeFifths: '⅗',
+	threeEighths: '⅜',
+	fourFifths: '⅘',
+	fiveSixths: '⅚',
+	fiveEighths: '⅝',
+	sevenEighths: '⅞'
+};
+
+var win = {
+	tick: '√',
+	cross: '×',
+	star: '*',
+	square: '█',
+	squareSmall: '[ ]',
+	squareSmallFilled: '[█]',
+	play: '►',
+	circle: '( )',
+	circleFilled: '(*)',
+	circleDotted: '( )',
+	circleDouble: '( )',
+	circleCircle: '(○)',
+	circleCross: '(×)',
+	circlePipe: '(│)',
+	circleQuestionMark: '(?)',
+	bullet: '*',
+	dot: '.',
+	line: '─',
+	ellipsis: '...',
+	pointer: '>',
+	pointerSmall: '»',
+	info: 'i',
+	warning: '‼',
+	hamburger: '≡',
+	smiley: '☺',
+	mustache: '┌─┐',
+	heart: main.heart,
+	arrowUp: main.arrowUp,
+	arrowDown: main.arrowDown,
+	arrowLeft: main.arrowLeft,
+	arrowRight: main.arrowRight,
+	radioOn: '(*)',
+	radioOff: '( )',
+	checkboxOn: '[×]',
+	checkboxOff: '[ ]',
+	checkboxCircleOn: '(×)',
+	checkboxCircleOff: '( )',
+	questionMarkPrefix: '？',
+	oneHalf: '1/2',
+	oneThird: '1/3',
+	oneQuarter: '1/4',
+	oneFifth: '1/5',
+	oneSixth: '1/6',
+	oneSeventh: '1/7',
+	oneEighth: '1/8',
+	oneNinth: '1/9',
+	oneTenth: '1/10',
+	twoThirds: '2/3',
+	twoFifths: '2/5',
+	threeQuarters: '3/4',
+	threeFifths: '3/5',
+	threeEighths: '3/8',
+	fourFifths: '4/5',
+	fiveSixths: '5/6',
+	fiveEighths: '5/8',
+	sevenEighths: '7/8'
+};
+
+if (platform === 'linux') {
+	// the main one doesn't look that good on Ubuntu
+	main.questionMarkPrefix = '?';
+}
+
+var figures = platform === 'win32' ? win : main;
+
+var fn = function (str) {
+	if (figures === main) {
+		return str;
+	}
+
+	Object.keys(main).forEach(function (key) {
+		if (main[key] === figures[key]) {
+			return;
+		}
+
+		str = str.replace(new RegExp(escapeStringRegexp(main[key]), 'g'), figures[key]);
+	});
+
+	return str;
+};
+
+module.exports = objectAssign(fn, figures);
diff --git a/node_modules/figures/license b/node_modules/figures/license
new file mode 100644
index 0000000..654d0bf
--- /dev/null
+++ b/node_modules/figures/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/figures/package.json b/node_modules/figures/package.json
new file mode 100644
index 0000000..96b5cda
--- /dev/null
+++ b/node_modules/figures/package.json
@@ -0,0 +1,77 @@
+{
+  "_from": "figures@^1.3.5",
+  "_id": "figures@1.7.0",
+  "_inBundle": false,
+  "_integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
+  "_location": "/figures",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "figures@^1.3.5",
+    "name": "figures",
+    "escapedName": "figures",
+    "rawSpec": "^1.3.5",
+    "saveSpec": null,
+    "fetchSpec": "^1.3.5"
+  },
+  "_requiredBy": [
+    "/logalot"
+  ],
+  "_resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
+  "_shasum": "cbe1e3affcf1cd44b80cadfed28dc793a9701d2e",
+  "_spec": "figures@^1.3.5",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\logalot",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/figures/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "escape-string-regexp": "^1.0.5",
+    "object-assign": "^4.1.0"
+  },
+  "deprecated": false,
+  "description": "Unicode symbols with Windows CMD fallbacks",
+  "devDependencies": {
+    "ava": "*",
+    "markdown-table": "^0.4.0",
+    "require-uncached": "^1.0.2",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/figures#readme",
+  "keywords": [
+    "unicode",
+    "cli",
+    "cmd",
+    "command-line",
+    "characters",
+    "char",
+    "symbol",
+    "symbols",
+    "figure",
+    "figures",
+    "fallback"
+  ],
+  "license": "MIT",
+  "name": "figures",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/figures.git"
+  },
+  "scripts": {
+    "make": "./makefile.js",
+    "test": "xo && ava"
+  },
+  "version": "1.7.0"
+}
diff --git a/node_modules/figures/readme.md b/node_modules/figures/readme.md
new file mode 100644
index 0000000..10ae286
--- /dev/null
+++ b/node_modules/figures/readme.md
@@ -0,0 +1,115 @@
+# figures [![Build Status: Linux](https://travis-ci.org/sindresorhus/figures.svg?branch=master)](https://travis-ci.org/sindresorhus/figures) [![Build status: Windows](https://ci.appveyor.com/api/projects/status/mb743hl70269be3r/branch/master?svg=true)](https://ci.appveyor.com/project/sindresorhus/figures/branch/master)
+
+> Unicode symbols with Windows CMD fallbacks
+
+[![](screenshot.png)](index.js)
+
+[*and more...*](index.js)
+
+Windows CMD only supports a [limited character set](http://en.wikipedia.org/wiki/Code_page_437).
+
+
+## Install
+
+```
+$ npm install --save figures
+```
+
+
+## Usage
+
+See the [source](index.js) for supported symbols.
+
+```js
+const figures = require('figures');
+
+console.log(figures('✔︎ check'));
+// On real OSes:  ✔︎ check
+// On Windows:    √ check
+
+console.log(figures.tick);
+// On real OSes:  ✔︎
+// On Windows:    √
+```
+
+
+## API
+
+### figures(input)
+
+Returns the input with replaced fallback unicode symbols on Windows.
+
+All the below [figures](#figures) are attached to the main export as shown in the example above.
+
+#### input
+
+Type: `string`
+
+String where the unicode symbols will be replaced with fallback symbols depending on the OS.
+
+
+## Figures
+
+| Name               | Real OSes | Windows |
+| ------------------ | :-------: | :-----: |
+| tick               |     ✔     |    √    |
+| cross              |     ✖     |    ×    |
+| star               |     ★     |    *    |
+| square             |     ▇     |    █    |
+| squareSmall        |     ◻     |   [ ]   |
+| squareSmallFilled  |     ◼     |   [█]   |
+| play               |     ▶     |    ►    |
+| circle             |     ◯     |   ( )   |
+| circleFilled       |     ◉     |   (*)   |
+| circleDotted       |     ◌     |   ( )   |
+| circleDouble       |     ◎     |   ( )   |
+| circleCircle       |     ⓞ     |   (○)   |
+| circleCross        |     ⓧ     |   (×)   |
+| circlePipe         |     Ⓘ     |   (│)   |
+| circleQuestionMark |     ?⃝    |   (?)   |
+| bullet             |     ●     |    *    |
+| dot                |     ․     |    .    |
+| line               |     ─     |    ─    |
+| ellipsis           |     …     |   ...   |
+| pointer            |     ❯     |    >    |
+| pointerSmall       |     ›     |    »    |
+| info               |     ℹ     |    i    |
+| warning            |     ⚠     |    ‼    |
+| hamburger          |     ☰     |    ≡    |
+| smiley             |     ㋡     |    ☺    |
+| mustache           |     ෴     |   ┌─┐   |
+| heart              |     ♥     |    ♥    |
+| arrowUp            |     ↑     |    ↑    |
+| arrowDown          |     ↓     |    ↓    |
+| arrowLeft          |     ←     |    ←    |
+| arrowRight         |     →     |    →    |
+| radioOn            |     ◉     |   (*)   |
+| radioOff           |     ◯     |   ( )   |
+| checkboxOn         |     ☒     |   [×]   |
+| checkboxOff        |     ☐     |   [ ]   |
+| checkboxCircleOn   |     ⓧ     |   (×)   |
+| checkboxCircleOff  |     Ⓘ     |   ( )   |
+| questionMarkPrefix |     ?⃝    |    ？    |
+| oneHalf            |     ½     |   1/2   |
+| oneThird           |     ⅓     |   1/3   |
+| oneQuarter         |     ¼     |   1/4   |
+| oneFifth           |     ⅕     |   1/5   |
+| oneSixth           |     ⅙     |   1/6   |
+| oneSeventh         |     ⅐     |   1/7   |
+| oneEighth          |     ⅛     |   1/8   |
+| oneNinth           |     ⅑     |   1/9   |
+| oneTenth           |     ⅒     |   1/10  |
+| twoThirds          |     ⅔     |   2/3   |
+| twoFifths          |     ⅖     |   2/5   |
+| threeQuarters      |     ¾     |   3/4   |
+| threeFifths        |     ⅗     |   3/5   |
+| threeEighths       |     ⅜     |   3/8   |
+| fourFifths         |     ⅘     |   4/5   |
+| fiveSixths         |     ⅚     |   5/6   |
+| fiveEighths        |     ⅝     |   5/8   |
+| sevenEighths       |     ⅞     |   7/8   |
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
