diff --git a/node_modules/imagemin-jpegtran/index.js b/node_modules/imagemin-jpegtran/index.js
new file mode 100644
index 0000000..2afc284
--- /dev/null
+++ b/node_modules/imagemin-jpegtran/index.js
@@ -0,0 +1,39 @@
+'use strict';
+const execBuffer = require('exec-buffer');
+const isJpg = require('is-jpg');
+const jpegtran = require('jpegtran-bin');
+
+module.exports = opts => buf => {
+	opts = Object.assign({}, opts);
+
+	if (!Buffer.isBuffer(buf)) {
+		return Promise.reject(new TypeError('Expected a buffer'));
+	}
+
+	if (!isJpg(buf)) {
+		return Promise.resolve(buf);
+	}
+
+	const args = ['-copy', 'none'];
+
+	if (opts.progressive) {
+		args.push('-progressive');
+	}
+
+	if (opts.arithmetic) {
+		args.push('-arithmetic');
+	} else {
+		args.push('-optimize');
+	}
+
+	args.push('-outfile', execBuffer.output, execBuffer.input);
+
+	return execBuffer({
+		input: buf,
+		bin: jpegtran,
+		args
+	}).catch(error => {
+		error.message = error.stderr || error.message;
+		throw error;
+	});
+};
diff --git a/node_modules/imagemin-jpegtran/license b/node_modules/imagemin-jpegtran/license
new file mode 100644
index 0000000..78e84a1
--- /dev/null
+++ b/node_modules/imagemin-jpegtran/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) imagemin
+
+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/imagemin-jpegtran/package.json b/node_modules/imagemin-jpegtran/package.json
new file mode 100644
index 0000000..2659a0c
--- /dev/null
+++ b/node_modules/imagemin-jpegtran/package.json
@@ -0,0 +1,89 @@
+{
+  "_from": "imagemin-jpegtran@^6.0.0",
+  "_id": "imagemin-jpegtran@6.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-Ih+NgThzqYfEWv9t58EItncaaXIHR0u9RuhKa8CtVBlMBvY0dCIxgQJQCfwImA4AV1PMfmUKlkyIHJjb7V4z1g==",
+  "_location": "/imagemin-jpegtran",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "imagemin-jpegtran@^6.0.0",
+    "name": "imagemin-jpegtran",
+    "escapedName": "imagemin-jpegtran",
+    "rawSpec": "^6.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^6.0.0"
+  },
+  "_requiredBy": [
+    "/grunt-contrib-imagemin"
+  ],
+  "_resolved": "https://registry.npmjs.org/imagemin-jpegtran/-/imagemin-jpegtran-6.0.0.tgz",
+  "_shasum": "c8d3bcfb6ec9c561c20a987142854be70d90b04f",
+  "_spec": "imagemin-jpegtran@^6.0.0",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\grunt-contrib-imagemin",
+  "author": {
+    "name": "Kevin Mårtensson",
+    "email": "kevinmartensson@gmail.com",
+    "url": "github.com/kevva"
+  },
+  "bugs": {
+    "url": "https://github.com/imagemin/imagemin-jpegtran/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "exec-buffer": "^3.0.0",
+    "is-jpg": "^2.0.0",
+    "jpegtran-bin": "^4.0.0"
+  },
+  "deprecated": false,
+  "description": "jpegtran imagemin plugin",
+  "devDependencies": {
+    "ava": "*",
+    "is-progressive": "^3.0.0",
+    "pify": "^4.0.0",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/imagemin/imagemin-jpegtran#readme",
+  "keywords": [
+    "compress",
+    "image",
+    "imageminplugin",
+    "img",
+    "jpeg",
+    "jpegtran",
+    "jpg",
+    "minify",
+    "optimize"
+  ],
+  "license": "MIT",
+  "maintainers": [
+    {
+      "name": "Sindre Sorhus",
+      "email": "sindresorhus@gmail.com",
+      "url": "sindresorhus.com"
+    },
+    {
+      "name": "Shinnosuke Watanabe",
+      "url": "github.com/shinnn"
+    }
+  ],
+  "name": "imagemin-jpegtran",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/imagemin/imagemin-jpegtran.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "6.0.0",
+  "xo": {
+    "esnext": true
+  }
+}
diff --git a/node_modules/imagemin-jpegtran/readme.md b/node_modules/imagemin-jpegtran/readme.md
new file mode 100644
index 0000000..02f9a92
--- /dev/null
+++ b/node_modules/imagemin-jpegtran/readme.md
@@ -0,0 +1,56 @@
+# imagemin-jpegtran [![Build Status](https://travis-ci.org/imagemin/imagemin-jpegtran.svg?branch=master)](https://travis-ci.org/imagemin/imagemin-jpegtran) [![Build status](https://ci.appveyor.com/api/projects/status/rwf4by6qcbne1qet?svg=true)](https://ci.appveyor.com/project/ShinnosukeWatanabe/imagemin-jpegtran)
+
+> jpegtran imagemin plugin
+
+
+## Install
+
+```
+$ npm install --save imagemin-jpegtran
+```
+
+
+## Usage
+
+```js
+const imagemin = require('imagemin');
+const imageminJpegtran = require('imagemin-jpegtran');
+
+imagemin(['images/*.jpg'], 'build/images', {use: [imageminJpegtran()]}).then(() => {
+	console.log('Images optimized');
+});
+```
+
+
+## API
+
+### imageminJpegtran([options])(buffer)
+
+Returns a promise for a buffer.
+
+#### options
+
+##### progressive
+
+Type: `boolean`<br>
+Default: `false`
+
+Lossless conversion to progressive.
+
+##### arithmetic
+
+Type: `boolean`<br>
+Default: `false`
+
+Use [arithmetic coding](http://en.wikipedia.org/wiki/Arithmetic_coding).
+
+#### buffer
+
+Type: `buffer`
+
+Buffer to optimize.
+
+
+## License
+
+MIT © [imagemin](https://github.com/imagemin)
