diff --git a/node_modules/logalot/LICENSE.md b/node_modules/logalot/LICENSE.md
new file mode 100644
index 0000000..3beff79
--- /dev/null
+++ b/node_modules/logalot/LICENSE.md
@@ -0,0 +1,19 @@
+Copyright (c) Kevin Mårtensson
+
+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/logalot/README.md b/node_modules/logalot/README.md
new file mode 100644
index 0000000..fcbd12d
--- /dev/null
+++ b/node_modules/logalot/README.md
@@ -0,0 +1,33 @@
+# logalot [![Build Status](http://img.shields.io/travis/imagemin/logalot.svg?style=flat)](https://travis-ci.org/imagemin/logalot)
+
+> Tiny log utility
+
+## Install
+
+```sh
+$ npm install --save logalot
+```
+
+## Usage
+
+```js
+var log = require('logalot');
+
+log.info('this is a message');
+log.warn('this is a warning');
+log.success('this is a success message');
+log.error(new Error('this is a error').stack);
+
+/*
+  ℹ this is a message
+  ⚠ this is a warning
+  ✔ this is a success message
+  ✖ Error: this is an error
+    at ChildProcess.exithandler (child_process.js:648:15)
+    at ChildProcess.emit (events.js:98:17)
+ */
+```
+
+## License
+
+MIT © [imagemin](https://github.com/imagemin)
diff --git a/node_modules/logalot/index.js b/node_modules/logalot/index.js
new file mode 100644
index 0000000..2aed53d
--- /dev/null
+++ b/node_modules/logalot/index.js
@@ -0,0 +1,40 @@
+'use strict';
+
+var figures = require('figures');
+var Squeak = require('squeak');
+
+/**
+ * Initialize `log`
+ */
+
+var log = new Squeak({separator: ' '});
+
+/**
+ * Add types
+ */
+
+log.type('info', {
+	color: 'cyan',
+	prefix: figures.info
+});
+
+log.type('warn', {
+	color: 'yellow',
+	prefix: figures.warning
+});
+
+log.type('success', {
+	color: 'green',
+	prefix: figures.tick
+});
+
+log.type('error', {
+	color: 'red',
+	prefix: figures.cross
+});
+
+/**
+ * Module exports
+ */
+
+module.exports = log;
diff --git a/node_modules/logalot/package.json b/node_modules/logalot/package.json
new file mode 100644
index 0000000..e8ff5fd
--- /dev/null
+++ b/node_modules/logalot/package.json
@@ -0,0 +1,68 @@
+{
+  "_from": "logalot@^2.0.0",
+  "_id": "logalot@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=",
+  "_location": "/logalot",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "logalot@^2.0.0",
+    "name": "logalot",
+    "escapedName": "logalot",
+    "rawSpec": "^2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^2.0.0"
+  },
+  "_requiredBy": [
+    "/gifsicle",
+    "/imagemin-optipng/optipng-bin",
+    "/jpegtran-bin",
+    "/optipng-bin"
+  ],
+  "_resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz",
+  "_shasum": "5f8e8c90d304edf12530951a5554abb8c5e3f552",
+  "_spec": "logalot@^2.0.0",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\gifsicle",
+  "author": {
+    "name": "Kevin Mårtensson",
+    "email": "kevinmartensson@gmail.com",
+    "url": "https://github.com/kevva"
+  },
+  "bugs": {
+    "url": "https://github.com/imagemin/logalot/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "figures": "^1.3.5",
+    "squeak": "^1.0.0"
+  },
+  "deprecated": false,
+  "description": "Tiny log utility",
+  "devDependencies": {
+    "ava": "^0.0.4"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/imagemin/logalot#readme",
+  "keywords": [
+    "imagemin",
+    "log",
+    "sqeak"
+  ],
+  "license": "MIT",
+  "name": "logalot",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/imagemin/logalot.git"
+  },
+  "scripts": {
+    "test": "node test.js"
+  },
+  "version": "2.1.0"
+}
