text: /******/ (function(modules) { // webpackBootstrap
  /******/ 	// The module cache
  /******/ 	var installedModules = {};
  /******/
  /******/ 	// The require function
  /******/ 	function __webpack_require__(moduleId) {
  /******/
  /******/ 		// Check if module is in cache
  /******/ 		if(installedModules[moduleId]) {
  /******/ 			return installedModules[moduleId].exports;
  /******/ 		}
  /******/ 		// Create a new module (and put it into the cache)
  /******/ 		var module = installedModules[moduleId] = {
  /******/ 			i: moduleId,
  /******/ 			l: false,
  /******/ 			exports: {}
  /******/ 		};
  /******/
  /******/ 		// Execute the module function
  /******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  /******/
  /******/ 		// Flag the module as loaded
  /******/ 		module.l = true;
  /******/
  /******/ 		// Return the exports of the module
  /******/ 		return module.exports;
  /******/ 	}
  /******/
  /******/
  /******/ 	// expose the modules object (__webpack_modules__)
  /******/ 	__webpack_require__.m = modules;
  /******/
  /******/ 	// expose the module cache
  /******/ 	__webpack_require__.c = installedModules;
  /******/
  /******/ 	// define getter function for harmony exports
  /******/ 	__webpack_require__.d = function(exports, name, getter) {
  /******/ 		if(!__webpack_require__.o(exports, name)) {
  /******/ 			Object.defineProperty(exports, name, {
  /******/ 				configurable: false,
  /******/ 				enumerable: true,
  /******/ 				get: getter
  /******/ 			});
  /******/ 		}
  /******/ 	};
  /******/
  /******/ 	// getDefaultExport function for compatibility with non-harmony modules
  /******/ 	__webpack_require__.n = function(module) {
  /******/ 		var getter = module && module.__esModule ?
  /******/ 			function getDefault() { return module['default']; } :
  /******/ 			function getModuleExports() { return module; };
  /******/ 		__webpack_require__.d(getter, 'a', getter);
  /******/ 		return getter;
  /******/ 	};
  /******/
  /******/ 	// Object.prototype.hasOwnProperty.call
  /******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
  /******/
  /******/ 	// __webpack_public_path__
  /******/ 	__webpack_require__.p = "";
  /******/
  /******/ 	// Load entry module and return exports
  /******/ 	return __webpack_require__(__webpack_require__.s = 2);
  /******/ })
  /************************************************************************/
  /******/ ({
  
  /***/ "./node_modules/babel-loader/lib/index.js?{\"cacheDirectory\":true,\"presets\":[[\"env\",{\"modules\":false,\"targets\":{\"browsers\":[\"> 2%\"],\"uglify\":true}}]]}!./node_modules/vue-loader/lib/selector.js?type=script&index=0!./resources/assets/js/components/backend/AlbumUpload.vue":
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_clip__ = __webpack_require__("./node_modules/vue-clip/dist/vue-clip.js");
  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_clip___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue_clip__);
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  
  
  
  Vue.use(__WEBPACK_IMPORTED_MODULE_0_vue_clip___default.a);
  
  /* harmony default export */ __webpack_exports__["default"] = ({
  	name: 'album-upload',
  	data: function data() {
  		return {
  			options: {
  				url: url,
  				parallelUploads: 2,
  				maxFilesize: 45,
  				acceptedFiles: 'audio/*',
  				headers: {
  					'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  				}
  			},
  			files: [],
  			reload: false
  		};
  	},
  
  	methods: {
  		fileAdded: function fileAdded(file) {
  			file.name = _.upperFirst(_.toLower(file.name));
  			file.size = (file.size / 1000000).toFixed(2);
  			this.files.push(file);
  		},
  		progressClassObject: function progressClassObject(progress) {
  			return {
  				'progress-bar-danger': progress <= 25,
  				'progress-bar-warning': progress <= 50,
  				'progress-bar-info': progress <= 80,
  				'progress-bar-success': progress > 80
  			};
  		},
  		statusClassObject: function statusClassObject(status) {
  			return {
  				'label-success': status == 'success',
  				'label-danger': status == 'error',
  				'label-info': status == 'added'
  			};
  		},
  		sending: function sending(file, xhr, formData) {
  			formData.append('album_id', albumId);
  			var input = document.getElementById(file.name);
  			input.scrollIntoView();
  		},
  		queueComplete: function queueComplete() {
  			this.reload = true;
  		},
  		reloadPage: function reloadPage() {
  			if (this.reload) location.reload();
  		}
  	}
  });
  
  /***/ }),
  
  /***/ "./node_modules/babel-loader/lib/index.js?{\"cacheDirectory\":true,\"presets\":[[\"env\",{\"modules\":false,\"targets\":{\"browsers\":[\"> 2%\"],\"uglify\":true}}]]}!./node_modules/vue-loader/lib/selector.js?type=script&index=0!./resources/assets/js/components/backend/ImageUpload.vue":
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
  //
  //
  //
  //
  
  /* harmony default export */ __webpack_exports__["default"] = ({
      methods: {
          onChange: function onChange(e) {
              var _this = this;
  
              if (!e.target.files.length) return;
  
              var file = e.target.files[0];
  
              var reader = new FileReader();
  
              reader.readAsDataURL(file);
  
              reader.onload = function (e) {
                  var src = e.target.result;
  
                  _this.$emit('loaded', { src: src, file: file });
              };
          }
      }
  });
  
  /***/ }),
  
  /***/ "./node_modules/css-loader/index.js!./node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-3aa7f1d6\",\"scoped\":true,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./resources/assets/js/components/backend/AlbumUpload.vue":
  /***/ (function(module, exports, __webpack_require__) {
  
  exports = module.exports = __webpack_require__("./node_modules/css-loader/lib/css-base.js")(undefined);
  // imports
  
  
  // module
  exports.push([module.i, "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/*table layout - last column*/\ntable tr td[data-v-3aa7f1d6]:last-child {\n    white-space: nowrap;\n    width: 1px;\n    text-align:right;\n}\n\n/* layout.css Style */\n.upload-drop-zone[data-v-3aa7f1d6] {\n  height: 200px;\n  border-width: 2px;\n  margin-bottom: 20px;\n}\n\n/* skin.css Style*/\n.upload-drop-zone[data-v-3aa7f1d6] {\n  color: #ccc;\n  border-style: dashed;\n  border-color: #ccc;\n  line-height: 200px;\n  text-align: center\n}\n.upload-drop-zone.drop[data-v-3aa7f1d6] {\n  color: #222;\n  border-color: #222;\n}\n.image-preview-input[data-v-3aa7f1d6] {\n    position: relative;\n    overflow: hidden;\n  margin: 0px;    \n    color: #333;\n    background-color: #fff;\n    border-color: #ccc;\n}\n.image-preview-input input[type=file][data-v-3aa7f1d6] {\n  position: absolute;\n  top: 0;\n  right: 0;\n  margin: 0;\n  padding: 0;\n  font-size: 20px;\n  cursor: pointer;\n  opacity: 0;\n  filter: alpha(opacity=0);\n}\n.image-preview-input-title[data-v-3aa7f1d6] {\n    margin-left:2px;\n}\n", ""]);
  
  // exports
  
  
  /***/ }),
  
  /***/ "./node_modules/css-loader/lib/css-base.js":
  /***/ (function(module, exports) {
  
  /*
  	MIT License http://www.opensource.org/licenses/mit-license.php
  	Author Tobias Koppers @sokra
  */
  // css base code, injected by the css-loader
  module.exports = function(useSourceMap) {
  	var list = [];
  
  	// return the list of modules as css string
  	list.toString = function toString() {
  		return this.map(function (item) {
  			var content = cssWithMappingToString(item, useSourceMap);
  			if(item[2]) {
  				return "@media " + item[2] + "{" + content + "}";
  			} else {
  				return content;
  			}
  		}).join("");
  	};
  
  	// import a list of modules into the list
  	list.i = function(modules, mediaQuery) {
  		if(typeof modules === "string")
  			modules = [[null, modules, ""]];
  		var alreadyImportedModules = {};
  		for(var i = 0; i < this.length; i++) {
  			var id = this[i][0];
  			if(typeof id === "number")
  				alreadyImportedModules[id] = true;
  		}
  		for(i = 0; i < modules.length; i++) {
  			var item = modules[i];
  			// skip already imported module
  			// this implementation is not 100% perfect for weird media query combinations
  			//  when a module is imported multiple times with different media queries.
  			//  I hope this will never occur (Hey this way we have smaller bundles)
  			if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
  				if(mediaQuery && !item[2]) {
  					item[2] = mediaQuery;
  				} else if(mediaQuery) {
  					item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
  				}
  				list.push(item);
  			}
  		}
  	};
  	return list;
  };
  
  function cssWithMappingToString(item, useSourceMap) {
  	var content = item[1] || '';
  	var cssMapping = item[3];
  	if (!cssMapping) {
  		return content;
  	}
  
  	if (useSourceMap && typeof btoa === 'function') {
  		var sourceMapping = toComment(cssMapping);
  		var sourceURLs = cssMapping.sources.map(function (source) {
  			return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'
  		});
  
  		return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
  	}
  
  	return [content].join('\n');
  }
  
  // Adapted from convert-source-map (MIT)
  function toComment(sourceMap) {
  	// eslint-disable-next-line no-undef
  	var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
  	var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;
  
  	return '/*# ' + data + ' */';
  }
  
  
  /***/ }),
  
  /***/ "./node_modules/vue-clip/dist/vue-clip.js":
  /***/ (function(module, exports, __webpack_require__) {
  
  (function webpackUniversalModuleDefinition(root, factory) {
  	if(true)
  		module.exports = factory();
  	else if(typeof define === 'function' && define.amd)
  		define([], factory);
  	else {
  		var a = factory();
  		for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
  	}
  })(this, function() {
  return /******/ (function(modules) { // webpackBootstrap
  /******/ 	// The module cache
  /******/ 	var installedModules = {};
  /******/
  /******/ 	// The require function
  /******/ 	function __webpack_require__(moduleId) {
  /******/
  /******/ 		// Check if module is in cache
  /******/ 		if(installedModules[moduleId])
  /******/ 			return installedModules[moduleId].exports;
  /******/
  /******/ 		// Create a new module (and put it into the cache)
  /******/ 		var module = installedModules[moduleId] = {
  /******/ 			exports: {},
  /******/ 			id: moduleId,
  /******/ 			loaded: false
  /******/ 		};
  /******/
  /******/ 		// Execute the module function
  /******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  /******/
  /******/ 		// Flag the module as loaded
  /******/ 		module.loaded = true;
  /******/
  /******/ 		// Return the exports of the module
  /******/ 		return module.exports;
  /******/ 	}
  /******/
  /******/
  /******/ 	// expose the modules object (__webpack_modules__)
  /******/ 	__webpack_require__.m = modules;
  /******/
  /******/ 	// expose the module cache
  /******/ 	__webpack_require__.c = installedModules;
  /******/
  /******/ 	// __webpack_public_path__
  /******/ 	__webpack_require__.p = "";
  /******/
  /******/ 	// Load entry module and return exports
  /******/ 	return __webpack_require__(0);
  /******/ })
  /************************************************************************/
  /******/ ([
  /* 0 */
  /***/ function(module, exports, __webpack_require__) {
  
  	'use strict';
  	
  	Object.defineProperty(exports, "__esModule", {
  	  value: true
  	});
  	
  	var _index = __webpack_require__(33);
  	
  	var _index2 = _interopRequireDefault(_index);
  	
  	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  	
  	var VueClip = {
  	  install: function install(Vue) {
  	    Vue.component('vue-clip', _index2.default);
  	  }
  	};
  	
  	/**
  	 * When required globally
  	 */
  	if (typeof window !== 'undefined' && typeof window.Vue !== 'undefined') {
  	  window.Vue.use(VueClip);
  	}
  	
  	exports.default = VueClip;
  
  /***/ },
  /* 1 */
  /***/ function(module, exports) {
  
  	// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
  	var global = module.exports = typeof window != 'undefined' && window.Math == Math
  	  ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
  	if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
  
  /***/ },
  /* 2 */
  /***/ function(module, exports, __webpack_require__) {
  
  	// Thank's IE8 for his funny defineProperty
  	module.exports = !__webpack_require__(7)(function(){
  	  return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;
  	});
  
  /***/ },
  /* 3 */
  /***/ function(module, exports, __webpack_require__) {
  
  	var anObject       = __webpack_require__(6)
  	  , IE8_DOM_DEFINE = __webpack_require__(22)
  	  , toPrimitive    = __webpack_require__(17)
  	  , dP             = Object.defineProperty;
  	
  	exports.f = __webpack_require__(2) ? Object.defineProperty : function defineProperty(O, P, Attributes){
  	  anObject(O);
  	  P = toPrimitive(P, true);
  	  anObject(Attributes);
  	  if(IE8_DOM_DEFINE)try {
  	    return dP(O, P, Attributes);
  	  } catch(e){ /* empty */ }
  	  if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');
  	  if('value' in Attributes)O[P] = Attributes.value;
  	  return O;
  	};
  
  /***/ },
  /* 4 */
  /***/ function(module, exports, __webpack_require__) {
  
  	// to indexed object, toObject with fallback for non-array-like ES3 strings
  	var IObject = __webpack_require__(43)
  	  , defined = __webpack_require__(39);
  	module.exports = function(it){
  	  return IObject(defined(it));
  	};
  
  /***/ },
  /* 5 */
  /***/ function(module, exports) {
  
  	var hasOwnProperty = {}.hasOwnProperty;
  	module.exports = function(it, key){
  	  return hasOwnProperty.call(it, key);
  	};
  
  /***/ },
  /* 6 */
  /***/ function(module, exports, __webpack_require__) {
  
  	var isObject = __webpack_require__(8);
  	module.exports = function(it){
  	  if(!isObject(it))throw TypeError(it + ' is not an object!');
  	  return it;
  	};
  
  /***/ },
  /* 7 */
  /***/ function(module, exports) {
  
  	module.exports = function(exec){
  	  try {
  	    return !!exec();
  	  } catch(e){
  	    return true;
  	  }
  	};
  
  /***/ },
  /* 8 */
  /***/ function(module, exports) {
  
  	module.exports = function(it){
  	  return typeof it === 'object' ? it !== null : typeof it === 'function';
  	};
  
  /***/ },
  /* 9 */
  /***/ function(module, exports, __webpack_require__) {
  
  	// 19.1.2.14 / 15.2.3.14 Object.keys(O)
  	var $keys       = __webpack_require__(26)
  	  , enumBugKeys = __webpack_require__(12);
  	
  	module.exports = Object.keys || function keys(O){
  	  return $keys(O, enumBugKeys);
  	};
  
  /***/ },
  /* 10 */
  /***/ function(module, exports) {
  
  	var id = 0
  	  , px = Math.random();
  	module.exports = function(key){
  	  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
  	};
  
  /***/ },
  /* 11 */
  /***/ function(module, exports) {
  
  	var core = module.exports = {version: '2.4.0'};
  	if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
  
  /***/ },
  /* 12 */
  /***/ function(module, exports) {
  
  	// IE 8- don't enum bug keys
  	module.exports = (
  	  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
  	).split(',');
  
  /***/ },
  /* 13 */
  /***/ function(module, exports, __webpack_require__) {
  
  	var dP         = __webpack_require__(3)
  	  , createDesc = __webpack_require__(15);
  	module.exports = __webpack_require__(2) ? function(object, key, value){
  	  return dP.f(object, key, createDesc(1, value));
  	} : function(object, key, value){
  	  object[key] = value;
  	  return object;
  	};
  
  /***/ },
  /* 14 */
  /***/ function(module, exports) {
  
  	exports.f = {}.propertyIsEnumerable;
  
  /***/ },
  /* 15 */
  /***/ function(module, exports) {
  
  	module.exports = function(bitmap, value){
  	  return {
  	    enumerable  : !(bitmap & 1),
  	    configurable: !(bitmap & 2),
  	    writable    : !(bitmap & 4),
  	    value       : value
  	  };
  	};
  
  /***/ },
  /* 16 */
  /***/ function(module, exports, __webpack_require__) {
  
  	var global = __webpack_require__(1)
  	  , SHARED = '__core-js_shared__'
  	  , store  = global[SHARED] || (global[SHARED] = {});
  	module.exports = function(key){
  	  return store[key] || (store[key] = {});
  	};
  
  /***/ },
  /* 17 */
  /***/ function(module, exports, __webpack_require__) {
  
  	// 7.1.1 ToPrimitive(input [, PreferredType])
  	var isObject = __webpack_require__(8);
  	// instead of the ES6 spec version, we didn't implement @@toPrimitive case
  	// and the second argument - flag - preferred type is a string
  	module.exports = function(it, S){
  	  if(!isObject(it))return it;
  	  var fn, val;
  	  if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
  	  if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;
  	  if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
  	  throw TypeError("Can't convert object to primitive value");
  	};
  
  /***/ },
  /* 18 */
  /***/ function(module, exports, __webpack_require__) {
  
  	var global         = __webpack_require__(1)
  	  , core           = __webpack_require__(11)
  	  , LIBRARY        = __webpack_require__(23)
  	  , wksExt         = __webpack_require__(29)
  	  , defineProperty = __webpack_require__(3).f;
  	module.exports = function(name){
  	  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
  	  if(name.charAt(0) != '_' && !(name in $Symbol))defineProperty($Symbol, name, {value: wksExt.f(name)});
  	};
  
  /***/ },
  /* 19 */
  /***/ function(module, exports, __webpack_require__) {
  
  	var store      = __webpack_require__(16)('wks')
  	  , uid        = __webpack_require__(10)
  	  , Symbol     = __webpack_require__(1).Symbol
  	  , USE_SYMBOL = typeof Symbol == 'function';
  	
  	var $exports = module.exports = function(name){
  	  return store[name] || (store[name] =
  	    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
  	};
  	
  	$exports.store = store;
  
  /***/ },
  /* 20 */
  /***/ function(module, exports) {
  
  	var toString = {}.toString;
  	
  	module.exports = function(it){
  	  return toString.call(it).slice(8, -1);
  	};
  
  /***/ },
  /* 21 */
  /***/ function(module, exports, __webpack_require__) {
  
  	var isObject = __webpack_require__(8)
  	  , document = __webpack_require__(1).document
  	  // in old IE typeof document.createElement is 'object'
  	  , is = isObject(document) && isObject(document.createElement);
  	module.exports = function(it){
  	  return is ? document.createElement(it) : {};
  	};
  
  /***/ },
  /* 22 */
  /***/ function(module, exports, __webpack_require__) {
  
  	module.exports = !__webpack_require__(2) && !__webpack_require__(7)(function(){
  	  return Object.defineProperty(__webpack_require__(21)('div'), 'a', {get: function(){ return 7; }}).a != 7;
  	});
  
  /***/ },
  /* 23 */
  /***/ function(module, exports) {
  
  	module.exports = true;
  
  /***/ },
  /* 24 */
  /***/ function(module, exports, __webpack_require__) {
  
  	// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
  	var $keys      = __webpack_require__(26)
  	  , hiddenKeys = __webpack_require__(12).concat('length', 'prototype');
  	
  	exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){
  	  return $keys(O, hiddenKeys);
  	};
  
  /***/ },
  /* 25 */
  /***/ function(module, exports) {
  
  	exports.f = Object.getOwnPropertySymbols;
  
  /***/ },
  /* 26 */
  /***/ function(module, exports, __webpack_require__) {
  
  	var has          = __webpack_require__(5)
  	  , toIObject    = __webpack_require__(4)
  	  , arrayIndexOf = __webpack_require__(37)(false)
  	  , IE_PROTO     = __webpack_require__(27)('IE_PROTO');
  	
  	module.exports = function(object, names){
  	  var O      = toIObject(object)
  	    , i      = 0
  	    , result = []
  	    , key;
  	  for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);
  	  // Don't enum bug & hidden keys
  	  while(names.length > i)if(has(O, key = names[i++])){
  	    ~arrayIndexOf(result, key) || result.push(key);
  	  }
  	  return result;
  	};
  
  /***/ },
  /* 27 */
  /***/ function(module, exports, __webpack_require__) {
  
  	var shared = __webpack_require__(16)('keys')
  	  , uid    = __webpack_require__(10);
  	module.exports = function(key){
  	  return shared[key] || (shared[key] = uid(key));
  	};
  
  /***/ },
  /* 28 */
  /***/ function(module, exports) {
  
  	// 7.1.4 ToInteger
  	var ceil  = Math.ceil
  	  , floor = Math.floor;
  	module.exports = function(it){
  	  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
  	};
  
  /***/ },
  /* 29 */
  /***/ function(module, exports, __webpack_require__) {
  
  	exports.f = __webpack_require__(19);
  
  /***/ },
  /* 30 */
  /***/ function(module, exports) {
  
  	module.exports = function(module) {
  		if(!module.webpackPolyfill) {
  			module.deprecate = function() {};
  			module.paths = [];
  			// module.parent = undefined by default
  			module.children = [];
  			module.webpackPolyfill = 1;
  		}
  		return module;
  	}
  
  
  /***/ },
  /* 31 */
  /***/ function(module, exports) {
  
  	'use strict';
  	
  	Object.defineProperty(exports, "__esModule", {
  	  value: true
  	});
  	
  	var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  	
  	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  	
  	var File = function () {
  	  function File(file) {
  	    _classCallCheck(this, File);
  	
  	    this._file = file;
  	    this.status = file.status;
  	    this.name = file.name;
  	    this.width = file.width;
  	    this.height = file.height;
  	    this.bytesSent = file.upload.bytesSent || 0;
  	    this.progress = file.upload.progress || 0;
  	    this.total = file.upload.total;
  	    this.type = file.type;
  	    this.size = file.size;
  	    this.dataUrl = '';
  	    this.xhrResponse = {};
  	    this.customAttributes = {};
  	    this.errorMessage = '';
  	  }
  	
  	  _createClass(File, [{
  	    key: 'updateDataUrl',
  	    value: function updateDataUrl(dataUrl) {
  	      this.dataUrl = dataUrl;
  	    }
  	  }, {
  	    key: 'updateStatus',
  	    value: function updateStatus(status) {
  	      this.status = status;
  	    }
  	  }, {
  	    key: 'updateProgress',
  	    value: function updateProgress(progress) {
  	      this.progress = progress;
  	    }
  	  }, {
  	    key: 'updateBytesSent',
  	    value: function updateBytesSent(bytesSent) {
  	      this.bytesSent = bytesSent;
  	    }
  	  }, {
  	    key: 'updateXhrResponse',
  	    value: function updateXhrResponse(response) {
  	      this.xhrResponse = response;
  	    }
  	  }, {
  	    key: 'updateErrorMessage',
  	    value: function updateErrorMessage(errorMessage) {
  	      this.errorMessage = errorMessage;
  	    }
  	  }, {
  	    key: 'addAttribute',
  	    value: function addAttribute(key, value) {
  	      this.customAttributes[key] = value;
  	    }
  	  }]);
  	
  	  return File;
  	}();
  	
  	exports.default = File;
  
  /***/ },
  /* 32 */
  /***/ function(module, exports, __webpack_require__) {
  
  	'use strict';
  	
  	Object.defineProperty(exports, "__esModule", {
  	  value: true
  	});
  	
  	var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  	
  	var _dropzone = __webpack_require__(59);
  	
  	var _dropzone2 = _interopRequireDefault(_dropzone);
  	
  	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  	
  	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  	
  	_dropzone2.default.autoDiscover = false;
  	
  	var Uploader = function () {
  	  function Uploader(options) {
  	    _classCallCheck(this, Uploader);
  	
  	    this._options = options || {};
  	    this._existingInit = this._options.init || function () {};
  	    this._hooks = [];
  	    this._uploader = null;
  	  }
  	
  	  /**
  	   * Bind hooks to the uploader instance. Also
  	   * makes sure to call the options init if
  	   * defined.
  	   *
  	   * @private
  	   */
  	
  	
  	  _createClass(Uploader, [{
  	    key: '_bindHooks',
  	    value: function _bindHooks(self) {
  	      var _this = this;
  	
  	      self._existingInit.bind(this)();
  	      self._hooks.forEach(function (hook) {
  	        _this.on(hook.event, hook.callback);
  	      });
  	      self._hooks = [];
  	    }
  	
  	    /**
  	     * Mounts uploader to the DOM
  	     *
  	     * @param  {DOMElement} domElem
  	     */
  	
  	  }, {
  	    key: 'mount',
  	    value: function mount(domElem) {
  	      var self = this;
  	      this._options.init = function () {
  	        self._bindHooks.bind(this)(self);
  	      };
  	      this._uploader = new _dropzone2.default(domElem, this._options);
  	    }
  	
  	    /**
  	     * Binds a hook listener
  	     *
  	     * @param  {String}   event
  	     * @param  {Function} callback
  	     */
  	
  	  }, {
  	    key: 'on',
  	    value: function on(event, callback) {
  	      this._hooks.push({ event: event, callback: callback });
  	    }
  	
  	    /**
  	     * Removes all listeners and dom bindings.
  	     */
  	
  	  }, {
  	    key: 'destroy',
  	    value: function destroy() {
  	      this._uploader.disable();
  	    }
  	
  	    /**
  	     * Remove file from the uploader
  	     *
  	     * @param  {Object} file
  	     */
  	
  	  }, {
  	    key: 'removeFile',
  	    value: function removeFile(file) {
  	      this._uploader.removeFile(file);
  	    }
  	
  	    /**
  	     * Add native file object to dropzone
  	     *
  	     * @param {Object} file
  	     */
  	
  	  }, {
  	    key: 'addFile',
  	    value: function addFile(file) {
  	      this._uploader.addFile(file);
  	    }
  	
  	    /**
  	     * Remove all files
  	     *
  	     * @param  {Boolean} [cancelQueued]
  	     */
  	
  	  }, {
  	    key: 'removeAllFiles',
  	    value: function removeAllFiles(cancelQueued) {
  	      this._uploader.removeAllFiles(cancelQueued);
  	    }
  	  }]);
  	
  	  return Uploader;
  	}();
  	
  	exports.default = Uploader;
  
  /***/ },
  /* 33 */
  /***/ function(module, exports, __webpack_require__) {
  
  	'use strict';
  	
  	/*
  	 * vue-clip
  	 *
  	 * (c) Harminder Virk <virk@adonisjs.com>
  	 *
  	 * For the full copyright and license information, please view the LICENSE
  	 * file that was distributed with this source code.
  	*/
  	
  	Object.defineProperty(exports, "__esModule", {
  	  value: true
  	});
  	
  	var _Uploader = __webpack_require__(32);
  	
  	var _Uploader2 = _interopRequireDefault(_Uploader);
  	
  	var _File = __webpack_require__(31);
  	
  	var _File2 = _interopRequireDefault(_File);
  	
  	var _lodash = __webpack_require__(60);
  	
  	var _lodash2 = _interopRequireDefault(_lodash);
  	
  	var _symbol = __webpack_require__(34);
  	
  	var _symbol2 = _interopRequireDefault(_symbol);
  	
  	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  	
  	var component = {};
  	
  	component.template = '<div v-bind:class="uploaderClass">\n  <slot name="clip-uploader-action" :dragging="dragCounter > 0"></slot>\n  <slot name="clip-uploader-body" :files="files"></slot>\n  <div ref="clip-preview-template" class="clip-preview-template" style="display: none;"><div></div></div>\n</div>';
  	
  	// DEFINING PROPS
  	component.props = {};
  	
  	/**
  	 * css class to be placed on action button parent div.
  	 * clip component sets its display to inline-block,
  	 * which may cause issues and this class can be
  	 * used to override it's styles.
  	 *
  	 * @type {Object}
  	 */
  	component.props.uploaderClass = {
  	  type: String
  	};
  	
  	/**
  	 * Uploader options, majority of options
  	 * are based of dropzone. Check docs
  	 * for more insights.
  	 *
  	 * @type {Object}
  	 */
  	component.props.options = {
  	  type: Object,
  	  default: function _default() {
  	    return {};
  	  }
  	};
  	
  	component.props.onAddedFile = {
  	  type: Function,
  	  default: function _default() {
  	    return function () {};
  	  }
  	};
  	
  	component.props.onRemovedFile = {
  	  type: Function,
  	  default: function _default() {
  	    return function () {};
  	  }
  	};
  	
  	component.props.onSending = {
  	  type: Function,
  	  default: function _default() {
  	    return function () {};
  	  }
  	};
  	
  	component.props.onDragEnter = {
  	  type: Function,
  	  default: function _default() {
  	    return function () {};
  	  }
  	};
  	
  	component.props.onDragLeave = {
  	  type: Function,
  	  default: function _default() {
  	    return function () {};
  	  }
  	};
  	
  	component.props.onDrop = {
  	  type: Function,
  	  default: function _default() {
  	    return function () {};
  	  }
  	};
  	
  	component.props.onTotalProgress = {
  	  type: Function,
  	  default: function _default() {
  	    return function () {};
  	  }
  	};
  	
  	component.props.onQueueComplete = {
  	  type: Function,
  	  default: function _default() {
  	    return function () {};
  	  }
  	};
  	
  	component.props.onMaxFiles = {
  	  type: Function,
  	  default: function _default() {
  	    return function () {};
  	  }
  	};
  	
  	component.props.onInit = {
  	  type: Function,
  	  default: function _default() {
  	    return function () {};
  	  }
  	};
  	
  	component.props.onComplete = {
  	  type: Function,
  	  default: function _default() {
  	    return function () {};
  	  }
  	};
  	
  	// COMPONENT DATA
  	component.data = function () {
  	  return {
  	    files: [],
  	    dragCounter: 0,
  	    uploader: null
  	  };
  	};
  	
  	// LIFECYCLE HOOKS
  	component.mounted = function () {
  	  var _this = this;
  	
  	  var options = (0, _lodash2.default)(this.options);
  	  var accept = options.accept || function (file, done) {
  	    done();
  	  };
  	
  	  /**
  	   * Overriding properties of the options object
  	   */
  	  options.previewTemplate = this.$refs['clip-preview-template'].innerHTML;
  	  options.accept = function (_ref, done) {
  	    var blobId = _ref.blobId;
  	
  	    accept(_this.getFile(blobId), done);
  	  };
  	
  	  if (typeof options.maxFiles !== 'undefined' && options.maxFiles instanceof Object === true) {
  	    var _options$maxFiles = options.maxFiles,
  	        limit = _options$maxFiles.limit,
  	        message = _options$maxFiles.message;
  	
  	    options.maxFiles = limit;
  	    options.dictMaxFilesExceeded = message;
  	  }
  	
  	  if (typeof options.maxFilesize !== 'undefined' && options.maxFilesize instanceof Object === true) {
  	    var _options$maxFilesize = options.maxFilesize,
  	        _limit = _options$maxFilesize.limit,
  	        _message = _options$maxFilesize.message;
  	
  	    options.maxFilesize = _limit;
  	    options.dictFileTooBig = _message;
  	  }
  	
  	  if (typeof options.acceptedFiles !== 'undefined' && options.acceptedFiles instanceof Object === true && options.acceptedFiles instanceof Array === false) {
  	    var _options$acceptedFile = options.acceptedFiles,
  	        extensions = _options$acceptedFile.extensions,
  	        _message2 = _options$acceptedFile.message;
  	
  	    options.acceptedFiles = extensions.join(',');
  	    options.dictInvalidFileType = _message2;
  	  }
  	
  	  /**
  	   * Instantiating uploader
  	   */
  	  this.uploader = new _Uploader2.default(options);
  	  this.bindEvents();
  	  this.uploader.mount(this.$el.firstElementChild);
  	  this.onInit(this);
  	};
  	
  	// DEFINING METHODS
  	component.methods = {};
  	
  	/**
  	 * Listening for uploader events.
  	 *
  	 * @param  {Object}
  	 */
  	component.methods.bindEvents = function () {
  	  this.uploader.on('addedfile', this.addedFile.bind(this));
  	  this.uploader.on('removedfile', this.removedFile.bind(this));
  	  this.uploader.on('sending', this.sending.bind(this));
  	  this.uploader.on('complete', this.complete.bind(this));
  	  this.uploader.on('error', this.error.bind(this));
  	  this.uploader.on('uploadprogress', this.uploadProgress.bind(this));
  	  this.uploader.on('thumbnail', this.thumbnail.bind(this));
  	  this.uploader.on('drop', this.drop.bind(this));
  	  this.uploader.on('dragenter', this.dragEnter.bind(this));
  	  this.uploader.on('dragleave', this.dragLeave.bind(this));
  	  this.uploader.on('totaluploadprogress', this.totalUploadProgress.bind(this));
  	  this.uploader.on('maxfilesexceeded', this.maxFilesExceeded.bind(this));
  	  this.uploader.on('queuecomplete', this.queueComplete.bind(this));
  	};
  	
  	/**
  	 * Returns file instance of a unique file id or
  	 * an empty object
  	 *
  	 * @param  {Symbol} blobId
  	 *
  	 * @return {Object}
  	 */
  	component.methods.getFile = function (blobId) {
  	  var matchedFile = {};
  	  this.files.forEach(function (file) {
  	    if (file._file.blobId === blobId) {
  	      matchedFile = file;
  	    }
  	  });
  	  return matchedFile;
  	};
  	
  	/**
  	 * Adds file to the list of local files object
  	 * with a unique symbol key. Same is required
  	 * for update the file object to keep it
  	 * reactive.
  	 *
  	 * Also invokes the onAddedFile prop.
  	 *
  	 * @param  {Object} file
  	 */
  	component.methods.addedFile = function (file) {
  	  var fileId = (0, _symbol2.default)();
  	  file.blobId = fileId;
  	  this.files.push(new _File2.default(file));
  	  this.onAddedFile(this.getFile(fileId));
  	};
  	
  	/**
  	 * Removes the file from the files list and invokes
  	 * the onRemovedFile prop
  	 *
  	 * @param  {Symbol} options.blobId
  	 */
  	component.methods.removedFile = function (_ref2) {
  	  var blobId = _ref2.blobId;
  	
  	  var fileInstance = this.getFile(blobId);
  	  fileInstance.updateStatus('removed');
  	  this.onRemovedFile(fileInstance);
  	};
  	
  	/**
  	 * Listens for sending event and calls onSending
  	 * prop
  	 *
  	 * @param  {Symbol} options.blobId
  	 * @param  {Object} xhr
  	 * @param  {Object} formData
  	 */
  	component.methods.sending = function (_ref3, xhr, formData) {
  	  var blobId = _ref3.blobId;
  	
  	  var fileInstance = this.getFile(blobId);
  	  this.onSending(fileInstance, xhr, formData);
  	};
  	
  	/**
  	 * Updates the file status on completion
  	 *
  	 * @param  {Symbol} options.blobId
  	 * @param  {String} options.status
  	 */
  	component.methods.complete = function (_ref4) {
  	  var blobId = _ref4.blobId,
  	      status = _ref4.status,
  	      _ref4$xhr = _ref4.xhr,
  	      xhr = _ref4$xhr === undefined ? {} : _ref4$xhr;
  	
  	  var fileInstance = this.getFile(blobId);
  	  fileInstance.updateStatus(status);
  	  fileInstance.updateXhrResponse({
  	    response: xhr.response,
  	    responseText: xhr.responseText,
  	    statusCode: xhr.status
  	  });
  	  this.onComplete(fileInstance, status, xhr);
  	};
  	
  	/**
  	 * Update the file error message to be used for
  	 * displaying the error
  	 *
  	 * @param  {Symbol} options.blobId
  	 * @param  {String} options.status
  	 * @param  {String} errorMessage
  	 */
  	component.methods.error = function (_ref5, errorMessage) {
  	  var blobId = _ref5.blobId,
  	      status = _ref5.status;
  	
  	  var fileInstance = this.getFile(blobId);
  	  fileInstance.updateStatus(status);
  	  fileInstance.updateErrorMessage(errorMessage);
  	};
  	
  	/**
  	 * Updates file progress and bytes sent
  	 *
  	 * @param  {Symbol} options.blobId
  	 * @param  {Number} progress
  	 * @param  {Number} bytesSent
  	 */
  	component.methods.uploadProgress = function (_ref6, progress, bytesSent) {
  	  var blobId = _ref6.blobId;
  	
  	  var fileInstance = this.getFile(blobId);
  	  fileInstance.updateProgress(progress);
  	  fileInstance.updateBytesSent(bytesSent);
  	};
  	
  	/**
  	 * Updates file thumbnail, only in case of image uploads
  	 *
  	 * @param  {Symbol} options.blobId
  	 * @param  {String} dataUrl
  	 */
  	component.methods.thumbnail = function (_ref7, dataUrl) {
  	  var blobId = _ref7.blobId;
  	
  	  var fileInstance = this.getFile(blobId);
  	  fileInstance.updateDataUrl(dataUrl);
  	};
  	
  	/**
  	 * Listen for drop event and call onDrop
  	 * and onDragLeave prop.
  	 */
  	component.methods.drop = function () {
  	  this.dragCounter = 0;
  	  this.onDrop();
  	  this.onDragLeave();
  	};
  	
  	/**
  	 * Listen for dragenter event and call onDragEnter
  	 * prop. Also increment the drag counter, required
  	 * for handling browser flickering issues.
  	 *
  	 * @param  {Object} event
  	 */
  	component.methods.dragEnter = function (event) {
  	  event.preventDefault();
  	  this.dragCounter++;
  	  this.onDragEnter();
  	};
  	
  	/**
  	 * Listen for dragleave event and call onDragLeave
  	 * prop. Also decrement the drag counter, required
  	 * for handling browser flickering issues.
  	 */
  	component.methods.dragLeave = function () {
  	  this.dragCounter--;
  	  if (this.dragCounter === 0) {
  	    this.onDragLeave();
  	  }
  	};
  	
  	/**
  	 * Listen for totaluploadprogress event and call
  	 * onTotalProgress prop.
  	 *
  	 * @param  {Spread} args
  	 */
  	component.methods.totalUploadProgress = function () {
  	  this.onTotalProgress.apply(this, arguments);
  	};
  	
  	/**
  	 * Listen for queuecomplete event and call
  	 * onQueueComplete prop.
  	 *
  	 */
  	component.methods.queueComplete = function () {
  	  this.onQueueComplete();
  	};
  	
  	/**
  	 * Listen for maxfilesreached event and call
  	 * onMaxFiles prop.
  	 *
  	 * @param {Symbol} blobId
  	 *
  	 */
  	component.methods.maxFilesExceeded = function (_ref8) {
  	  var blobId = _ref8.blobId;
  	
  	  var fileInstance = this.getFile(blobId);
  	  this.onMaxFiles(fileInstance);
  	};
  	
  	/**
  	 * Removes file from the uploader. This file will
  	 * not receive any more events.
  	 *
  	 * @param  {Object} file
  	 */
  	component.methods.removeFile = function (file) {
  	  this.uploader.removeFile(file._file);
  	};
  	
  	/**
  	 * Add a native file object directly to dropzone.
  	 *
  	 * @param {Object} file
  	 */
  	component.methods.addFile = function (file) {
  	  this.uploader.addFile(file);
  	};
  	
  	/**
  	 * Remove all files.
  	 *
  	 * @param  {Boolean} cancelQueued
  	 */
  	component.methods.removeAllFiles = function (cancelQueued) {
  	  this.uploader.removeAllFiles(cancelQueued);
  	};
  	
  	exports.default = component;
  
  /***/ },
  /* 34 */
  /***/ function(module, exports, __webpack_require__) {
  
  	module.exports = { "default": __webpack_require__(35), __esModule: true };
  
  /***/ },
  /* 35 */
  /***/ function(module, exports, __webpack_require__) {
  
  	__webpack_require__(56);
  	__webpack_require__(55);
  	__webpack_require__(57);
  	__webpack_require__(58);
  	module.exports = __webpack_require__(11).Symbol;
  
  /***/ },
  /* 36 */
  /***/ function(module, exports) {
  
  	module.exports = function(it){
  	  if(typeof it != 'function')throw TypeError(it + ' is not a function!');
  	  return it;
  	};
  
  /***/ },
  /* 37 */
  /***/ function(module, exports, __webpack_require__) {
  
  	// false -> Array#indexOf
  	// true  -> Array#includes
  	var toIObject = __webpack_require__(4)
  	  , toLength  = __webpack_require__(54)
  	  , toIndex   = __webpack_require__(53);
  	module.exports = function(IS_INCLUDES){
  	  return function($this, el, fromIndex){
  	    var O      = toIObject($this)
  	      , length = toLength(O.length)
  	      , index  = toIndex(fromIndex, length)
  	      , value;
  	    // Array#includes uses SameValueZero equality algorithm
  	    if(IS_INCLUDES && el != el)while(length > index){
  	      value = O[index++];
  	      if(value != value)return true;
  	    // Array#toIndex ignores holes, Array#includes - not
  	    } else for(;length > index; index++)if(IS_INCLUDES || index in O){
  	      if(O[index] === el)return IS_INCLUDES || index || 0;
  	    } return !IS_INCLUDES && -1;
  	  };
  	};
  
  /***/ },
  /* 38 */
  /***/ function(module, exports, __webpack_require__) {
  
  	// optional / simple context binding
  	var aFunction = __webpack_require__(36);
  	module.exports = function(fn, that, length){
  	  aFunction(fn);
  	  if(that === undefined)return fn;
  	  switch(length){
  	    case 1: return function(a){
  	      return fn.call(that, a);
  	    };
  	    case 2: return function(a, b){
  	      return fn.call(that, a, b);
  	    };
  	    case 3: return function(a, b, c){
  	      return fn.call(that, a, b, c);
  	    };
  	  }
  	  return function(/* ...args */){
  	    return fn.apply(that, arguments);
  	  };
  	};
  
  /***/ },
  /* 39 */
  /***/ function(module, exports) {
  
  	// 7.2.1 RequireObjectCoercible(argument)
  	module.exports = function(it){
  	  if(it == undefined)throw TypeError("Can't call method on  " + it);
  	  return it;
  	};
  
  /***/ },
  /* 40 */
  /***/ function(module, exports, __webpack_require__) {
  
  	// all enumerable object keys, includes symbols
  	var getKeys = __webpack_require__(9)
  	  , gOPS    = __webpack_require__(25)
  	  , pIE     = __webpack_require__(14);
  	module.exports = function(it){
  	  var result     = getKeys(it)
  	    , getSymbols = gOPS.f;
  	  if(getSymbols){
  	    var symbols = getSymbols(it)
  	      , isEnum  = pIE.f
  	      , i       = 0
  	      , key;
  	    while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key);
  	  } return result;
  	};
  
  /***/ },
  /* 41 */
  /***/ function(module, exports, __webpack_require__) {
  
  	var global    = __webpack_require__(1)
  	  , core      = __webpack_require__(11)
  	  , ctx       = __webpack_require__(38)
  	  , hide      = __webpack_require__(13)
  	  , PROTOTYPE = 'prototype';
  	
  	var $export = function(type, name, source){
  	  var IS_FORCED = type & $export.F
  	    , IS_GLOBAL = type & $export.G
  	    , IS_STATIC = type & $export.S
  	    , IS_PROTO  = type & $export.P
  	    , IS_BIND   = type & $export.B
  	    , IS_WRAP   = type & $export.W
  	    , exports   = IS_GLOBAL ? core : core[name] || (core[name] = {})
  	    , expProto  = exports[PROTOTYPE]
  	    , target    = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]
  	    , key, own, out;
  	  if(IS_GLOBAL)source = name;
  	  for(key in source){
  	    // contains in native
  	    own = !IS_FORCED && target && target[key] !== undefined;
  	    if(own && key in exports)continue;
  	    // export native or passed
  	    out = own ? target[key] : source[key];
  	    // prevent global pollution for namespaces
  	    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
  	    // bind timers to global for call from export context
  	    : IS_BIND && own ? ctx(out, global)
  	    // wrap global constructors for prevent change them in library
  	    : IS_WRAP && target[key] == out ? (function(C){
  	      var F = function(a, b, c){
  	        if(this instanceof C){
  	          switch(arguments.length){
  	            case 0: return new C;
  	            case 1: return new C(a);
  	            case 2: return new C(a, b);
  	          } return new C(a, b, c);
  	        } return C.apply(this, arguments);
  	      };
  	      F[PROTOTYPE] = C[PROTOTYPE];
  	      return F;
  	    // make static versions for prototype methods
  	    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
  	    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
  	    if(IS_PROTO){
  	      (exports.virtual || (exports.virtual = {}))[key] = out;
  	      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
  	      if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);
  	    }
  	  }
  	};
  	// type bitmap
  	$export.F = 1;   // forced
  	$export.G = 2;   // global
  	$export.S = 4;   // static
  	$export.P = 8;   // proto
  	$export.B = 16;  // bind
  	$export.W = 32;  // wrap
  	$export.U = 64;  // safe
  	$export.R = 128; // real proto method for `library` 
  	module.exports = $export;
  
  /***/ },
  /* 42 */
  /***/ function(module, exports, __webpack_require__) {
  
  	module.exports = __webpack_require__(1).document && document.documentElement;
  
  /***/ },
  /* 43 */
  /***/ function(module, exports, __webpack_require__) {
  
  	// fallback for non-array-like ES3 and non-enumerable old V8 strings
  	var cof = __webpack_require__(20);
  	module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
  	  return cof(it) == 'String' ? it.split('') : Object(it);
  	};
  
  /***/ },
  /* 44 */
  /***/ function(module, exports, __webpack_require__) {
  
  	// 7.2.2 IsArray(argument)
  	var cof = __webpack_require__(20);
  	module.exports = Array.isArray || function isArray(arg){
  	  return cof(arg) == 'Array';
  	};
  
  /***/ },
  /* 45 */
  /***/ function(module, exports, __webpack_require__) {
  
  	var getKeys   = __webpack_require__(9)
  	  , toIObject = __webpack_require__(4);
  	module.exports = function(object, el){
  	  var O      = toIObject(object)
  	    , keys   = getKeys(O)
  	    , length = keys.length
  	    , index  = 0
  	    , key;
  	  while(length > index)if(O[key = keys[index++]] === el)return key;
  	};
  
  /***/ },
  /* 46 */
  /***/ function(module, exports, __webpack_require__) {
  
  	var META     = __webpack_require__(10)('meta')
  	  , isObject = __webpack_require__(8)
  	  , has      = __webpack_require__(5)
  	  , setDesc  = __webpack_require__(3).f
  	  , id       = 0;
  	var isExtensible = Object.isExtensible || function(){
  	  return true;
  	};
  	var FREEZE = !__webpack_require__(7)(function(){
  	  return isExtensible(Object.preventExtensions({}));
  	});
  	var setMeta = function(it){
  	  setDesc(it, META, {value: {
  	    i: 'O' + ++id, // object ID
  	    w: {}          // weak collections IDs
  	  }});
  	};
  	var fastKey = function(it, create){
  	  // return primitive with prefix
  	  if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
  	  if(!has(it, META)){
  	    // can't set metadata to uncaught frozen object
  	    if(!isExtensible(it))return 'F';
  	    // not necessary to add metadata
  	    if(!create)return 'E';
  	    // add missing metadata
  	    setMeta(it);
  	  // return object ID
  	  } return it[META].i;
  	};
  	var getWeak = function(it, create){
  	  if(!has(it, META)){
  	    // can't set metadata to uncaught frozen object
  	    if(!isExtensible(it))return true;
  	    // not necessary to add metadata
  	    if(!create)return false;
  	    // add missing metadata
  	    setMeta(it);
  	  // return hash weak collections IDs
  	  } return it[META].w;
  	};
  	// add metadata on freeze-family methods calling
  	var onFreeze = function(it){
  	  if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it);
  	  return it;
  	};
  	var meta = module.exports = {
  	  KEY:      META,
  	  NEED:     false,
  	  fastKey:  fastKey,
  	  getWeak:  getWeak,
  	  onFreeze: onFreeze
  	};
  
  /***/ },
  /* 47 */
  /***/ function(module, exports, __webpack_require__) {
  
  	// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
  	var anObject    = __webpack_require__(6)
  	  , dPs         = __webpack_require__(48)
  	  , enumBugKeys = __webpack_require__(12)
  	  , IE_PROTO    = __webpack_require__(27)('IE_PROTO')
  	  , Empty       = function(){ /* empty */ }
  	  , PROTOTYPE   = 'prototype';
  	
  	// Create object with fake `null` prototype: use iframe Object with cleared prototype
  	var createDict = function(){
  	  // Thrash, waste and sodomy: IE GC bug
  	  var iframe = __webpack_require__(21)('iframe')
  	    , i      = enumBugKeys.length
  	    , lt     = '<'
  	    , gt     = '>'
  	    , iframeDocument;
  	  iframe.style.display = 'none';
  	  __webpack_require__(42).appendChild(iframe);
  	  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
  	  // createDict = iframe.contentWindow.Object;
  	  // html.removeChild(iframe);
  	  iframeDocument = iframe.contentWindow.document;
  	  iframeDocument.open();
  	  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
  	  iframeDocument.close();
  	  createDict = iframeDocument.F;
  	  while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];
  	  return createDict();
  	};
  	
  	module.exports = Object.create || function create(O, Properties){
  	  var result;
  	  if(O !== null){
  	    Empty[PROTOTYPE] = anObject(O);
  	    result = new Empty;
  	    Empty[PROTOTYPE] = null;
  	    // add "__proto__" for Object.getPrototypeOf polyfill
  	    result[IE_PROTO] = O;
  	  } else result = createDict();
  	  return Properties === undefined ? result : dPs(result, Properties);
  	};
  
  
  /***/ },
  /* 48 */
  /***/ function(module, exports, __webpack_require__) {
  
  	var dP       = __webpack_require__(3)
  	  , anObject = __webpack_require__(6)
  	  , getKeys  = __webpack_require__(9);
  	
  	module.exports = __webpack_require__(2) ? Object.defineProperties : function defineProperties(O, Properties){
  	  anObject(O);
  	  var keys   = getKeys(Properties)
  	    , length = keys.length
  	    , i = 0
  	    , P;
  	  while(length > i)dP.f(O, P = keys[i++], Properties[P]);
  	  return O;
  	};
  
  /***/ },
  /* 49 */
  /***/ function(module, exports, __webpack_require__) {
  
  	var pIE            = __webpack_require__(14)
  	  , createDesc     = __webpack_require__(15)
  	  , toIObject      = __webpack_require__(4)
  	  , toPrimitive    = __webpack_require__(17)
  	  , has            = __webpack_require__(5)
  	  , IE8_DOM_DEFINE = __webpack_require__(22)
  	  , gOPD           = Object.getOwnPropertyDescriptor;
  	
  	exports.f = __webpack_require__(2) ? gOPD : function getOwnPropertyDescriptor(O, P){
  	  O = toIObject(O);
  	  P = toPrimitive(P, true);
  	  if(IE8_DOM_DEFINE)try {
  	    return gOPD(O, P);
  	  } catch(e){ /* empty */ }
  	  if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]);
  	};
  
  /***/ },
  /* 50 */
  /***/ function(module, exports, __webpack_require__) {
  
  	// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
  	var toIObject = __webpack_require__(4)
  	  , gOPN      = __webpack_require__(24).f
  	  , toString  = {}.toString;
  	
  	var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
  	  ? Object.getOwnPropertyNames(window) : [];
  	
  	var getWindowNames = function(it){
  	  try {
  	    return gOPN(it);
  	  } catch(e){
  	    return windowNames.slice();
  	  }
  	};
  	
  	module.exports.f = function getOwnPropertyNames(it){
  	  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
  	};
  
  
  /***/ },
  /* 51 */
  /***/ function(module, exports, __webpack_require__) {
  
  	module.exports = __webpack_require__(13);
  
  /***/ },
  /* 52 */
  /***/ function(module, exports, __webpack_require__) {
  
  	var def = __webpack_require__(3).f
  	  , has = __webpack_require__(5)
  	  , TAG = __webpack_require__(19)('toStringTag');
  	
  	module.exports = function(it, tag, stat){
  	  if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});
  	};
  
  /***/ },
  /* 53 */
  /***/ function(module, exports, __webpack_require__) {
  
  	var toInteger = __webpack_require__(28)
  	  , max       = Math.max
  	  , min       = Math.min;
  	module.exports = function(index, length){
  	  index = toInteger(index);
  	  return index < 0 ? max(index + length, 0) : min(index, length);
  	};
  
  /***/ },
  /* 54 */
  /***/ function(module, exports, __webpack_require__) {
  
  	// 7.1.15 ToLength
  	var toInteger = __webpack_require__(28)
  	  , min       = Math.min;
  	module.exports = function(it){
  	  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
  	};
  
  /***/ },
  /* 55 */
  /***/ function(module, exports) {
  
  
  
  /***/ },
  /* 56 */
  /***/ function(module, exports, __webpack_require__) {
  
  	'use strict';
  	// ECMAScript 6 symbols shim
  	var global         = __webpack_require__(1)
  	  , has            = __webpack_require__(5)
  	  , DESCRIPTORS    = __webpack_require__(2)
  	  , $export        = __webpack_require__(41)
  	  , redefine       = __webpack_require__(51)
  	  , META           = __webpack_require__(46).KEY
  	  , $fails         = __webpack_require__(7)
  	  , shared         = __webpack_require__(16)
  	  , setToStringTag = __webpack_require__(52)
  	  , uid            = __webpack_require__(10)
  	  , wks            = __webpack_require__(19)
  	  , wksExt         = __webpack_require__(29)
  	  , wksDefine      = __webpack_require__(18)
  	  , keyOf          = __webpack_require__(45)
  	  , enumKeys       = __webpack_require__(40)
  	  , isArray        = __webpack_require__(44)
  	  , anObject       = __webpack_require__(6)
  	  , toIObject      = __webpack_require__(4)
  	  , toPrimitive    = __webpack_require__(17)
  	  , createDesc     = __webpack_require__(15)
  	  , _create        = __webpack_require__(47)
  	  , gOPNExt        = __webpack_require__(50)
  	  , $GOPD          = __webpack_require__(49)
  	  , $DP            = __webpack_require__(3)
  	  , $keys          = __webpack_require__(9)
  	  , gOPD           = $GOPD.f
  	  , dP             = $DP.f
  	  , gOPN           = gOPNExt.f
  	  , $Symbol        = global.Symbol
  	  , $JSON          = global.JSON
  	  , _stringify     = $JSON && $JSON.stringify
  	  , PROTOTYPE      = 'prototype'
  	  , HIDDEN         = wks('_hidden')
  	  , TO_PRIMITIVE   = wks('toPrimitive')
  	  , isEnum         = {}.propertyIsEnumerable
  	  , SymbolRegistry = shared('symbol-registry')
  	  , AllSymbols     = shared('symbols')
  	  , OPSymbols      = shared('op-symbols')
  	  , ObjectProto    = Object[PROTOTYPE]
  	  , USE_NATIVE     = typeof $Symbol == 'function'
  	  , QObject        = global.QObject;
  	// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
  	var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
  	
  	// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
  	var setSymbolDesc = DESCRIPTORS && $fails(function(){
  	  return _create(dP({}, 'a', {
  	    get: function(){ return dP(this, 'a', {value: 7}).a; }
  	  })).a != 7;
  	}) ? function(it, key, D){
  	  var protoDesc = gOPD(ObjectProto, key);
  	  if(protoDesc)delete ObjectProto[key];
  	  dP(it, key, D);
  	  if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc);
  	} : dP;
  	
  	var wrap = function(tag){
  	  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
  	  sym._k = tag;
  	  return sym;
  	};
  	
  	var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){
  	  return typeof it == 'symbol';
  	} : function(it){
  	  return it instanceof $Symbol;
  	};
  	
  	var $defineProperty = function defineProperty(it, key, D){
  	  if(it === ObjectProto)$defineProperty(OPSymbols, key, D);
  	  anObject(it);
  	  key = toPrimitive(key, true);
  	  anObject(D);
  	  if(has(AllSymbols, key)){
  	    if(!D.enumerable){
  	      if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {}));
  	      it[HIDDEN][key] = true;
  	    } else {
  	      if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;
  	      D = _create(D, {enumerable: createDesc(0, false)});
  	    } return setSymbolDesc(it, key, D);
  	  } return dP(it, key, D);
  	};
  	var $defineProperties = function defineProperties(it, P){
  	  anObject(it);
  	  var keys = enumKeys(P = toIObject(P))
  	    , i    = 0
  	    , l = keys.length
  	    , key;
  	  while(l > i)$defineProperty(it, key = keys[i++], P[key]);
  	  return it;
  	};
  	var $create = function create(it, P){
  	  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
  	};
  	var $propertyIsEnumerable = function propertyIsEnumerable(key){
  	  var E = isEnum.call(this, key = toPrimitive(key, true));
  	  if(this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return false;
  	  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
  	};
  	var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){
  	  it  = toIObject(it);
  	  key = toPrimitive(key, true);
  	  if(it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return;
  	  var D = gOPD(it, key);
  	  if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;
  	  return D;
  	};
  	var $getOwnPropertyNames = function getOwnPropertyNames(it){
  	  var names  = gOPN(toIObject(it))
  	    , result = []
  	    , i      = 0
  	    , key;
  	  while(names.length > i){
  	    if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);
  	  } return result;
  	};
  	var $getOwnPropertySymbols = function getOwnPropertySymbols(it){
  	  var IS_OP  = it === ObjectProto
  	    , names  = gOPN(IS_OP ? OPSymbols : toIObject(it))
  	    , result = []
  	    , i      = 0
  	    , key;
  	  while(names.length > i){
  	    if(has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true))result.push(AllSymbols[key]);
  	  } return result;
  	};
  	
  	// 19.4.1.1 Symbol([description])
  	if(!USE_NATIVE){
  	  $Symbol = function Symbol(){
  	    if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');
  	    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
  	    var $set = function(value){
  	      if(this === ObjectProto)$set.call(OPSymbols, value);
  	      if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;
  	      setSymbolDesc(this, tag, createDesc(1, value));
  	    };
  	    if(DESCRIPTORS && setter)setSymbolDesc(ObjectProto, tag, {configurable: true, set: $set});
  	    return wrap(tag);
  	  };
  	  redefine($Symbol[PROTOTYPE], 'toString', function toString(){
  	    return this._k;
  	  });
  	
  	  $GOPD.f = $getOwnPropertyDescriptor;
  	  $DP.f   = $defineProperty;
  	  __webpack_require__(24).f = gOPNExt.f = $getOwnPropertyNames;
  	  __webpack_require__(14).f  = $propertyIsEnumerable;
  	  __webpack_require__(25).f = $getOwnPropertySymbols;
  	
  	  if(DESCRIPTORS && !__webpack_require__(23)){
  	    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
  	  }
  	
  	  wksExt.f = function(name){
  	    return wrap(wks(name));
  	  }
  	}
  	
  	$export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});
  	
  	for(var symbols = (
  	  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
  	  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
  	).split(','), i = 0; symbols.length > i; )wks(symbols[i++]);
  	
  	for(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]);
  	
  	$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
  	  // 19.4.2.1 Symbol.for(key)
  	  'for': function(key){
  	    return has(SymbolRegistry, key += '')
  	      ? SymbolRegistry[key]
  	      : SymbolRegistry[key] = $Symbol(key);
  	  },
  	  // 19.4.2.5 Symbol.keyFor(sym)
  	  keyFor: function keyFor(key){
  	    if(isSymbol(key))return keyOf(SymbolRegistry, key);
  	    throw TypeError(key + ' is not a symbol!');
  	  },
  	  useSetter: function(){ setter = true; },
  	  useSimple: function(){ setter = false; }
  	});
  	
  	$export($export.S + $export.F * !USE_NATIVE, 'Object', {
  	  // 19.1.2.2 Object.create(O [, Properties])
  	  create: $create,
  	  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
  	  defineProperty: $defineProperty,
  	  // 19.1.2.3 Object.defineProperties(O, Properties)
  	  defineProperties: $defineProperties,
  	  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
  	  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
  	  // 19.1.2.7 Object.getOwnPropertyNames(O)
  	  getOwnPropertyNames: $getOwnPropertyNames,
  	  // 19.1.2.8 Object.getOwnPropertySymbols(O)
  	  getOwnPropertySymbols: $getOwnPropertySymbols
  	});
  	
  	// 24.3.2 JSON.stringify(value [, replacer [, space]])
  	$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function(){
  	  var S = $Symbol();
  	  // MS Edge converts symbol values to JSON as {}
  	  // WebKit converts symbol values to JSON as null
  	  // V8 throws on boxed symbols
  	  return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';
  	})), 'JSON', {
  	  stringify: function stringify(it){
  	    if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined
  	    var args = [it]
  	      , i    = 1
  	      , replacer, $replacer;
  	    while(arguments.length > i)args.push(arguments[i++]);
  	    replacer = args[1];
  	    if(typeof replacer == 'function')$replacer = replacer;
  	    if($replacer || !isArray(replacer))replacer = function(key, value){
  	      if($replacer)value = $replacer.call(this, key, value);
  	      if(!isSymbol(value))return value;
  	    };
  	    args[1] = replacer;
  	    return _stringify.apply($JSON, args);
  	  }
  	});
  	
  	// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
  	$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(13)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
  	// 19.4.3.5 Symbol.prototype[@@toStringTag]
  	setToStringTag($Symbol, 'Symbol');
  	// 20.2.1.9 Math[@@toStringTag]
  	setToStringTag(Math, 'Math', true);
  	// 24.3.3 JSON[@@toStringTag]
  	setToStringTag(global.JSON, 'JSON', true);
  
  /***/ },
  /* 57 */
  /***/ function(module, exports, __webpack_require__) {
  
  	__webpack_require__(18)('asyncIterator');
  
  /***/ },
  /* 58 */
  /***/ function(module, exports, __webpack_require__) {
  
  	__webpack_require__(18)('observable');
  
  /***/ },
  /* 59 */
  /***/ function(module, exports, __webpack_require__) {
  
  	/* WEBPACK VAR INJECTION */(function(module) {
  	/*
  	 *
  	 * More info at [www.dropzonejs.com](http://www.dropzonejs.com)
  	 *
  	 * Copyright (c) 2012, Matias Meno
  	 *
  	 * 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.
  	 *
  	 */
  	
  	(function() {
  	  var Dropzone, Emitter, camelize, contentLoaded, detectVerticalSquash, drawImageIOSFix, noop, without,
  	    __slice = [].slice,
  	    __hasProp = {}.hasOwnProperty,
  	    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
  	
  	  noop = function() {};
  	
  	  Emitter = (function() {
  	    function Emitter() {}
  	
  	    Emitter.prototype.addEventListener = Emitter.prototype.on;
  	
  	    Emitter.prototype.on = function(event, fn) {
  	      this._callbacks = this._callbacks || {};
  	      if (!this._callbacks[event]) {
  	        this._callbacks[event] = [];
  	      }
  	      this._callbacks[event].push(fn);
  	      return this;
  	    };
  	
  	    Emitter.prototype.emit = function() {
  	      var args, callback, callbacks, event, _i, _len;
  	      event = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
  	      this._callbacks = this._callbacks || {};
  	      callbacks = this._callbacks[event];
  	      if (callbacks) {
  	        for (_i = 0, _len = callbacks.length; _i < _len; _i++) {
  	          callback = callbacks[_i];
  	          callback.apply(this, args);
  	        }
  	      }
  	      return this;
  	    };
  	
  	    Emitter.prototype.removeListener = Emitter.prototype.off;
  	
  	    Emitter.prototype.removeAllListeners = Emitter.prototype.off;
  	
  	    Emitter.prototype.removeEventListener = Emitter.prototype.off;
  	
  	    Emitter.prototype.off = function(event, fn) {
  	      var callback, callbacks, i, _i, _len;
  	      if (!this._callbacks || arguments.length === 0) {
  	        this._callbacks = {};
  	        return this;
  	      }
  	      callbacks = this._callbacks[event];
  	      if (!callbacks) {
  	        return this;
  	      }
  	      if (arguments.length === 1) {
  	        delete this._callbacks[event];
  	        return this;
  	      }
  	      for (i = _i = 0, _len = callbacks.length; _i < _len; i = ++_i) {
  	        callback = callbacks[i];
  	        if (callback === fn) {
  	          callbacks.splice(i, 1);
  	          break;
  	        }
  	      }
  	      return this;
  	    };
  	
  	    return Emitter;
  	
  	  })();
  	
  	  Dropzone = (function(_super) {
  	    var extend, resolveOption;
  	
  	    __extends(Dropzone, _super);
  	
  	    Dropzone.prototype.Emitter = Emitter;
  	
  	
  	    /*
  	    This is a list of all available events you can register on a dropzone object.
  	
  	    You can register an event handler like this:
  	
  	        dropzone.on("dragEnter", function() { });
  	     */
  	
  	    Dropzone.prototype.events = ["drop", "dragstart", "dragend", "dragenter", "dragover", "dragleave", "addedfile", "addedfiles", "removedfile", "thumbnail", "error", "errormultiple", "processing", "processingmultiple", "uploadprogress", "totaluploadprogress", "sending", "sendingmultiple", "success", "successmultiple", "canceled", "canceledmultiple", "complete", "completemultiple", "reset", "maxfilesexceeded", "maxfilesreached", "queuecomplete"];
  	
  	    Dropzone.prototype.defaultOptions = {
  	      url: null,
  	      method: "post",
  	      withCredentials: false,
  	      parallelUploads: 2,
  	      uploadMultiple: false,
  	      maxFilesize: 256,
  	      paramName: "file",
  	      createImageThumbnails: true,
  	      maxThumbnailFilesize: 10,
  	      thumbnailWidth: 120,
  	      thumbnailHeight: 120,
  	      filesizeBase: 1000,
  	      maxFiles: null,
  	      params: {},
  	      clickable: true,
  	      ignoreHiddenFiles: true,
  	      acceptedFiles: null,
  	      acceptedMimeTypes: null,
  	      autoProcessQueue: true,
  	      autoQueue: true,
  	      addRemoveLinks: false,
  	      previewsContainer: null,
  	      hiddenInputContainer: "body",
  	      capture: null,
  	      renameFilename: null,
  	      dictDefaultMessage: "Drop files here to upload",
  	      dictFallbackMessage: "Your browser does not support drag'n'drop file uploads.",
  	      dictFallbackText: "Please use the fallback form below to upload your files like in the olden days.",
  	      dictFileTooBig: "File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.",
  	      dictInvalidFileType: "You can't upload files of this type.",
  	      dictResponseError: "Server responded with {{statusCode}} code.",
  	      dictCancelUpload: "Cancel upload",
  	      dictCancelUploadConfirmation: "Are you sure you want to cancel this upload?",
  	      dictRemoveFile: "Remove file",
  	      dictRemoveFileConfirmation: null,
  	      dictMaxFilesExceeded: "You can not upload any more files.",
  	      accept: function(file, done) {
  	        return done();
  	      },
  	      init: function() {
  	        return noop;
  	      },
  	      forceFallback: false,
  	      fallback: function() {
  	        var child, messageElement, span, _i, _len, _ref;
  	        this.element.className = "" + this.element.className + " dz-browser-not-supported";
  	        _ref = this.element.getElementsByTagName("div");
  	        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  	          child = _ref[_i];
  	          if (/(^| )dz-message($| )/.test(child.className)) {
  	            messageElement = child;
  	            child.className = "dz-message";
  	            continue;
  	          }
  	        }
  	        if (!messageElement) {
  	          messageElement = Dropzone.createElement("<div class=\"dz-message\"><span></span></div>");
  	          this.element.appendChild(messageElement);
  	        }
  	        span = messageElement.getElementsByTagName("span")[0];
  	        if (span) {
  	          if (span.textContent != null) {
  	            span.textContent = this.options.dictFallbackMessage;
  	          } else if (span.innerText != null) {
  	            span.innerText = this.options.dictFallbackMessage;
  	          }
  	        }
  	        return this.element.appendChild(this.getFallbackForm());
  	      },
  	      resize: function(file) {
  	        var info, srcRatio, trgRatio;
  	        info = {
  	          srcX: 0,
  	          srcY: 0,
  	          srcWidth: file.width,
  	          srcHeight: file.height
  	        };
  	        srcRatio = file.width / file.height;
  	        info.optWidth = this.options.thumbnailWidth;
  	        info.optHeight = this.options.thumbnailHeight;
  	        if ((info.optWidth == null) && (info.optHeight == null)) {
  	          info.optWidth = info.srcWidth;
  	          info.optHeight = info.srcHeight;
  	        } else if (info.optWidth == null) {
  	          info.optWidth = srcRatio * info.optHeight;
  	        } else if (info.optHeight == null) {
  	          info.optHeight = (1 / srcRatio) * info.optWidth;
  	        }
  	        trgRatio = info.optWidth / info.optHeight;
  	        if (file.height < info.optHeight || file.width < info.optWidth) {
  	          info.trgHeight = info.srcHeight;
  	          info.trgWidth = info.srcWidth;
  	        } else {
  	          if (srcRatio > trgRatio) {
  	            info.srcHeight = file.height;
  	            info.srcWidth = info.srcHeight * trgRatio;
  	          } else {
  	            info.srcWidth = file.width;
  	            info.srcHeight = info.srcWidth / trgRatio;
  	          }
  	        }
  	        info.srcX = (file.width - info.srcWidth) / 2;
  	        info.srcY = (file.height - info.srcHeight) / 2;
  	        return info;
  	      },
  	
  	      /*
  	      Those functions register themselves to the events on init and handle all
  	      the user interface specific stuff. Overwriting them won't break the upload
  	      but can break the way it's displayed.
  	      You can overwrite them if you don't like the default behavior. If you just
  	      want to add an additional event handler, register it on the dropzone object
  	      and don't overwrite those options.
  	       */
  	      drop: function(e) {
  	        return this.element.classList.remove("dz-drag-hover");
  	      },
  	      dragstart: noop,
  	      dragend: function(e) {
  	        return this.element.classList.remove("dz-drag-hover");
  	      },
  	      dragenter: function(e) {
  	        return this.element.classList.add("dz-drag-hover");
  	      },
  	      dragover: function(e) {
  	        return this.element.classList.add("dz-drag-hover");
  	      },
  	      dragleave: function(e) {
  	        return this.element.classList.remove("dz-drag-hover");
  	      },
  	      paste: noop,
  	      reset: function() {
  	        return this.element.classList.remove("dz-started");
  	      },
  	      addedfile: function(file) {
  	        var node, removeFileEvent, removeLink, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _results;
  	        if (this.element === this.previewsContainer) {
  	          this.element.classList.add("dz-started");
  	        }
  	        if (this.previewsContainer) {
  	          file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim());
  	          file.previewTemplate = file.previewElement;
  	          this.previewsContainer.appendChild(file.previewElement);
  	          _ref = file.previewElement.querySelectorAll("[data-dz-name]");
  	          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  	            node = _ref[_i];
  	            node.textContent = this._renameFilename(file.name);
  	          }
  	          _ref1 = file.previewElement.querySelectorAll("[data-dz-size]");
  	          for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
  	            node = _ref1[_j];
  	            node.innerHTML = this.filesize(file.size);
  	          }
  	          if (this.options.addRemoveLinks) {
  	            file._removeLink = Dropzone.createElement("<a class=\"dz-remove\" href=\"javascript:undefined;\" data-dz-remove>" + this.options.dictRemoveFile + "</a>");
  	            file.previewElement.appendChild(file._removeLink);
  	          }
  	          removeFileEvent = (function(_this) {
  	            return function(e) {
  	              e.preventDefault();
  	              e.stopPropagation();
  	              if (file.status === Dropzone.UPLOADING) {
  	                return Dropzone.confirm(_this.options.dictCancelUploadConfirmation, function() {
  	                  return _this.removeFile(file);
  	                });
  	              } else {
  	                if (_this.options.dictRemoveFileConfirmation) {
  	                  return Dropzone.confirm(_this.options.dictRemoveFileConfirmation, function() {
  	                    return _this.removeFile(file);
  	                  });
  	                } else {
  	                  return _this.removeFile(file);
  	                }
  	              }
  	            };
  	          })(this);
  	          _ref2 = file.previewElement.querySelectorAll("[data-dz-remove]");
  	          _results = [];
  	          for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
  	            removeLink = _ref2[_k];
  	            _results.push(removeLink.addEventListener("click", removeFileEvent));
  	          }
  	          return _results;
  	        }
  	      },
  	      removedfile: function(file) {
  	        var _ref;
  	        if (file.previewElement) {
  	          if ((_ref = file.previewElement) != null) {
  	            _ref.parentNode.removeChild(file.previewElement);
  	          }
  	        }
  	        return this._updateMaxFilesReachedClass();
  	      },
  	      thumbnail: function(file, dataUrl) {
  	        var thumbnailElement, _i, _len, _ref;
  	        if (file.previewElement) {
  	          file.previewElement.classList.remove("dz-file-preview");
  	          _ref = file.previewElement.querySelectorAll("[data-dz-thumbnail]");
  	          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  	            thumbnailElement = _ref[_i];
  	            thumbnailElement.alt = file.name;
  	            thumbnailElement.src = dataUrl;
  	          }
  	          return setTimeout(((function(_this) {
  	            return function() {
  	              return file.previewElement.classList.add("dz-image-preview");
  	            };
  	          })(this)), 1);
  	        }
  	      },
  	      error: function(file, message) {
  	        var node, _i, _len, _ref, _results;
  	        if (file.previewElement) {
  	          file.previewElement.classList.add("dz-error");
  	          if (typeof message !== "String" && message.error) {
  	            message = message.error;
  	          }
  	          _ref = file.previewElement.querySelectorAll("[data-dz-errormessage]");
  	          _results = [];
  	          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  	            node = _ref[_i];
  	            _results.push(node.textContent = message);
  	          }
  	          return _results;
  	        }
  	      },
  	      errormultiple: noop,
  	      processing: function(file) {
  	        if (file.previewElement) {
  	          file.previewElement.classList.add("dz-processing");
  	          if (file._removeLink) {
  	            return file._removeLink.textContent = this.options.dictCancelUpload;
  	          }
  	        }
  	      },
  	      processingmultiple: noop,
  	      uploadprogress: function(file, progress, bytesSent) {
  	        var node, _i, _len, _ref, _results;
  	        if (file.previewElement) {
  	          _ref = file.previewElement.querySelectorAll("[data-dz-uploadprogress]");
  	          _results = [];
  	          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  	            node = _ref[_i];
  	            if (node.nodeName === 'PROGRESS') {
  	              _results.push(node.value = progress);
  	            } else {
  	              _results.push(node.style.width = "" + progress + "%");
  	            }
  	          }
  	          return _results;
  	        }
  	      },
  	      totaluploadprogress: noop,
  	      sending: noop,
  	      sendingmultiple: noop,
  	      success: function(file) {
  	        if (file.previewElement) {
  	          return file.previewElement.classList.add("dz-success");
  	        }
  	      },
  	      successmultiple: noop,
  	      canceled: function(file) {
  	        return this.emit("error", file, "Upload canceled.");
  	      },
  	      canceledmultiple: noop,
  	      complete: function(file) {
  	        if (file._removeLink) {
  	          file._removeLink.textContent = this.options.dictRemoveFile;
  	        }
  	        if (file.previewElement) {
  	          return file.previewElement.classList.add("dz-complete");
  	        }
  	      },
  	      completemultiple: noop,
  	      maxfilesexceeded: noop,
  	      maxfilesreached: noop,
  	      queuecomplete: noop,
  	      addedfiles: noop,
  	      previewTemplate: ""
  	    };
  	
  	    extend = function() {
  	      var key, object, objects, target, val, _i, _len;
  	      target = arguments[0], objects = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
  	      for (_i = 0, _len = objects.length; _i < _len; _i++) {
  	        object = objects[_i];
  	        for (key in object) {
  	          val = object[key];
  	          target[key] = val;
  	        }
  	      }
  	      return target;
  	    };
  	
  	    function Dropzone(element, options) {
  	      var elementOptions, fallback, _ref;
  	      this.element = element;
  	      this.version = Dropzone.version;
  	      this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\n*/g, "");
  	      this.clickableElements = [];
  	      this.listeners = [];
  	      this.files = [];
  	      if (typeof this.element === "string") {
  	        this.element = document.querySelector(this.element);
  	      }
  	      if (!(this.element && (this.element.nodeType != null))) {
  	        throw new Error("Invalid dropzone element.");
  	      }
  	      if (this.element.dropzone) {
  	        throw new Error("Dropzone already attached.");
  	      }
  	      Dropzone.instances.push(this);
  	      this.element.dropzone = this;
  	      elementOptions = (_ref = Dropzone.optionsForElement(this.element)) != null ? _ref : {};
  	      this.options = extend({}, this.defaultOptions, elementOptions, options != null ? options : {});
  	      if (this.options.forceFallback || !Dropzone.isBrowserSupported()) {
  	        return this.options.fallback.call(this);
  	      }
  	      if (this.options.url == null) {
  	        this.options.url = this.element.getAttribute("action");
  	      }
  	      if (!this.options.url) {
  	        throw new Error("No URL provided.");
  	      }
  	      if (this.options.acceptedFiles && this.options.acceptedMimeTypes) {
  	        throw new Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.");
  	      }
  	      if (this.options.acceptedMimeTypes) {
  	        this.options.acceptedFiles = this.options.acceptedMimeTypes;
  	        delete this.options.acceptedMimeTypes;
  	      }
  	      this.options.method = this.options.method.toUpperCase();
  	      if ((fallback = this.getExistingFallback()) && fallback.parentNode) {
  	        fallback.parentNode.removeChild(fallback);
  	      }
  	      if (this.options.previewsContainer !== false) {
  	        if (this.options.previewsContainer) {
  	          this.previewsContainer = Dropzone.getElement(this.options.previewsContainer, "previewsContainer");
  	        } else {
  	          this.previewsContainer = this.element;
  	        }
  	      }
  	      if (this.options.clickable) {
  	        if (this.options.clickable === true) {
  	          this.clickableElements = [this.element];
  	        } else {
  	          this.clickableElements = Dropzone.getElements(this.options.clickable, "clickable");
  	        }
  	      }
  	      this.init();
  	    }
  	
  	    Dropzone.prototype.getAcceptedFiles = function() {
  	      var file, _i, _len, _ref, _results;
  	      _ref = this.files;
  	      _results = [];
  	      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  	        file = _ref[_i];
  	        if (file.accepted) {
  	          _results.push(file);
  	        }
  	      }
  	      return _results;
  	    };
  	
  	    Dropzone.prototype.getRejectedFiles = function() {
  	      var file, _i, _len, _ref, _results;
  	      _ref = this.files;
  	      _results = [];
  	      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  	        file = _ref[_i];
  	        if (!file.accepted) {
  	          _results.push(file);
  	        }
  	      }
  	      return _results;
  	    };
  	
  	    Dropzone.prototype.getFilesWithStatus = function(status) {
  	      var file, _i, _len, _ref, _results;
  	      _ref = this.files;
  	      _results = [];
  	      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  	        file = _ref[_i];
  	        if (file.status === status) {
  	          _results.push(file);
  	        }
  	      }
  	      return _results;
  	    };
  	
  	    Dropzone.prototype.getQueuedFiles = function() {
  	      return this.getFilesWithStatus(Dropzone.QUEUED);
  	    };
  	
  	    Dropzone.prototype.getUploadingFiles = function() {
  	      return this.getFilesWithStatus(Dropzone.UPLOADING);
  	    };
  	
  	    Dropzone.prototype.getAddedFiles = function() {
  	      return this.getFilesWithStatus(Dropzone.ADDED);
  	    };
  	
  	    Dropzone.prototype.getActiveFiles = function() {
  	      var file, _i, _len, _ref, _results;
  	      _ref = this.files;
  	      _results = [];
  	      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  	        file = _ref[_i];
  	        if (file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED) {
  	          _results.push(file);
  	        }
  	      }
  	      return _results;
  	    };
  	
  	    Dropzone.prototype.init = function() {
  	      var eventName, noPropagation, setupHiddenFileInput, _i, _len, _ref, _ref1;
  	      if (this.element.tagName === "form") {
  	        this.element.setAttribute("enctype", "multipart/form-data");
  	      }
  	      if (this.element.classList.contains("dropzone") && !this.element.querySelector(".dz-message")) {
  	        this.element.appendChild(Dropzone.createElement("<div class=\"dz-default dz-message\"><span>" + this.options.dictDefaultMessage + "</span></div>"));
  	      }
  	      if (this.clickableElements.length) {
  	        setupHiddenFileInput = (function(_this) {
  	          return function() {
  	            if (_this.hiddenFileInput) {
  	              _this.hiddenFileInput.parentNode.removeChild(_this.hiddenFileInput);
  	            }
  	            _this.hiddenFileInput = document.createElement("input");
  	            _this.hiddenFileInput.setAttribute("type", "file");
  	            if ((_this.options.maxFiles == null) || _this.options.maxFiles > 1) {
  	              _this.hiddenFileInput.setAttribute("multiple", "multiple");
  	            }
  	            _this.hiddenFileInput.className = "dz-hidden-input";
  	            if (_this.options.acceptedFiles != null) {
  	              _this.hiddenFileInput.setAttribute("accept", _this.options.acceptedFiles);
  	            }
  	            if (_this.options.capture != null) {
  	              _this.hiddenFileInput.setAttribute("capture", _this.options.capture);
  	            }
  	            _this.hiddenFileInput.style.visibility = "hidden";
  	            _this.hiddenFileInput.style.position = "absolute";
  	            _this.hiddenFileInput.style.top = "0";
  	            _this.hiddenFileInput.style.left = "0";
  	            _this.hiddenFileInput.style.height = "0";
  	            _this.hiddenFileInput.style.width = "0";
  	            document.querySelector(_this.options.hiddenInputContainer).appendChild(_this.hiddenFileInput);
  	            return _this.hiddenFileInput.addEventListener("change", function() {
  	              var file, files, _i, _len;
  	              files = _this.hiddenFileInput.files;
  	              if (files.length) {
  	                for (_i = 0, _len = files.length; _i < _len; _i++) {
  	                  file = files[_i];
  	                  _this.addFile(file);
  	                }
  	              }
  	              _this.emit("addedfiles", files);
  	              return setupHiddenFileInput();
  	            });
  	          };
  	        })(this);
  	        setupHiddenFileInput();
  	      }
  	      this.URL = (_ref = window.URL) != null ? _ref : window.webkitURL;
  	      _ref1 = this.events;
  	      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
  	        eventName = _ref1[_i];
  	        this.on(eventName, this.options[eventName]);
  	      }
  	      this.on("uploadprogress", (function(_this) {
  	        return function() {
  	          return _this.updateTotalUploadProgress();
  	        };
  	      })(this));
  	      this.on("removedfile", (function(_this) {
  	        return function() {
  	          return _this.updateTotalUploadProgress();
  	        };
  	      })(this));
  	      this.on("canceled", (function(_this) {
  	        return function(file) {
  	          return _this.emit("complete", file);
  	        };
  	      })(this));
  	      this.on("complete", (function(_this) {
  	        return function(file) {
  	          if (_this.getAddedFiles().length === 0 && _this.getUploadingFiles().length === 0 && _this.getQueuedFiles().length === 0) {
  	            return setTimeout((function() {
  	              return _this.emit("queuecomplete");
  	            }), 0);
  	          }
  	        };
  	      })(this));
  	      noPropagation = function(e) {
  	        e.stopPropagation();
  	        if (e.preventDefault) {
  	          return e.preventDefault();
  	        } else {
  	          return e.returnValue = false;
  	        }
  	      };
  	      this.listeners = [
  	        {
  	          element: this.element,
  	          events: {
  	            "dragstart": (function(_this) {
  	              return function(e) {
  	                return _this.emit("dragstart", e);
  	              };
  	            })(this),
  	            "dragenter": (function(_this) {
  	              return function(e) {
  	                noPropagation(e);
  	                return _this.emit("dragenter", e);
  	              };
  	            })(this),
  	            "dragover": (function(_this) {
  	              return function(e) {
  	                var efct;
  	                try {
  	                  efct = e.dataTransfer.effectAllowed;
  	                } catch (_error) {}
  	                e.dataTransfer.dropEffect = 'move' === efct || 'linkMove' === efct ? 'move' : 'copy';
  	                noPropagation(e);
  	                return _this.emit("dragover", e);
  	              };
  	            })(this),
  	            "dragleave": (function(_this) {
  	              return function(e) {
  	                return _this.emit("dragleave", e);
  	              };
  	            })(this),
  	            "drop": (function(_this) {
  	              return function(e) {
  	                noPropagation(e);
  	                return _this.drop(e);
  	              };
  	            })(this),
  	            "dragend": (function(_this) {
  	              return function(e) {
  	                return _this.emit("dragend", e);
  	              };
  	            })(this)
  	          }
  	        }
  	      ];
  	      this.clickableElements.forEach((function(_this) {
  	        return function(clickableElement) {
  	          return _this.listeners.push({
  	            element: clickableElement,
  	            events: {
  	              "click": function(evt) {
  	                if ((clickableElement !== _this.element) || (evt.target === _this.element || Dropzone.elementInside(evt.target, _this.element.querySelector(".dz-message")))) {
  	                  _this.hiddenFileInput.click();
  	                }
  	                return true;
  	              }
  	            }
  	          });
  	        };
  	      })(this));
  	      this.enable();
  	      return this.options.init.call(this);
  	    };
  	
  	    Dropzone.prototype.destroy = function() {
  	      var _ref;
  	      this.disable();
  	      this.removeAllFiles(true);
  	      if ((_ref = this.hiddenFileInput) != null ? _ref.parentNode : void 0) {
  	        this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);
  	        this.hiddenFileInput = null;
  	      }
  	      delete this.element.dropzone;
  	      return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);
  	    };
  	
  	    Dropzone.prototype.updateTotalUploadProgress = function() {
  	      var activeFiles, file, totalBytes, totalBytesSent, totalUploadProgress, _i, _len, _ref;
  	      totalBytesSent = 0;
  	      totalBytes = 0;
  	      activeFiles = this.getActiveFiles();
  	      if (activeFiles.length) {
  	        _ref = this.getActiveFiles();
  	        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  	          file = _ref[_i];
  	          totalBytesSent += file.upload.bytesSent;
  	          totalBytes += file.upload.total;
  	        }
  	        totalUploadProgress = 100 * totalBytesSent / totalBytes;
  	      } else {
  	        totalUploadProgress = 100;
  	      }
  	      return this.emit("totaluploadprogress", totalUploadProgress, totalBytes, totalBytesSent);
  	    };
  	
  	    Dropzone.prototype._getParamName = function(n) {
  	      if (typeof this.options.paramName === "function") {
  	        return this.options.paramName(n);
  	      } else {
  	        return "" + this.options.paramName + (this.options.uploadMultiple ? "[" + n + "]" : "");
  	      }
  	    };
  	
  	    Dropzone.prototype._renameFilename = function(name) {
  	      if (typeof this.options.renameFilename !== "function") {
  	        return name;
  	      }
  	      return this.options.renameFilename(name);
  	    };
  	
  	    Dropzone.prototype.getFallbackForm = function() {
  	      var existingFallback, fields, fieldsString, form;
  	      if (existingFallback = this.getExistingFallback()) {
  	        return existingFallback;
  	      }
  	      fieldsString = "<div class=\"dz-fallback\">";
  	      if (this.options.dictFallbackText) {
  	        fieldsString += "<p>" + this.options.dictFallbackText + "</p>";
  	      }
  	      fieldsString += "<input type=\"file\" name=\"" + (this._getParamName(0)) + "\" " + (this.options.uploadMultiple ? 'multiple="multiple"' : void 0) + " /><input type=\"submit\" value=\"Upload!\"></div>";
  	      fields = Dropzone.createElement(fieldsString);
  	      if (this.element.tagName !== "FORM") {
  	        form = Dropzone.createElement("<form action=\"" + this.options.url + "\" enctype=\"multipart/form-data\" method=\"" + this.options.method + "\"></form>");
  	        form.appendChild(fields);
  	      } else {
  	        this.element.setAttribute("enctype", "multipart/form-data");
  	        this.element.setAttribute("method", this.options.method);
  	      }
  	      return form != null ? form : fields;
  	    };
  	
  	    Dropzone.prototype.getExistingFallback = function() {
  	      var fallback, getFallback, tagName, _i, _len, _ref;
  	      getFallback = function(elements) {
  	        var el, _i, _len;
  	        for (_i = 0, _len = elements.length; _i < _len; _i++) {
  	          el = elements[_i];
  	          if (/(^| )fallback($| )/.test(el.className)) {
  	            return el;
  	          }
  	        }
  	      };
  	      _ref = ["div", "form"];
  	      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  	        tagName = _ref[_i];
  	        if (fallback = getFallback(this.element.getElementsByTagName(tagName))) {
  	          return fallback;
  	        }
  	      }
  	    };
  	
  	    Dropzone.prototype.setupEventListeners = function() {
  	      var elementListeners, event, listener, _i, _len, _ref, _results;
  	      _ref = this.listeners;
  	      _results = [];
  	      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  	        elementListeners = _ref[_i];
  	        _results.push((function() {
  	          var _ref1, _results1;
  	          _ref1 = elementListeners.events;
  	          _results1 = [];
  	          for (event in _ref1) {
  	            listener = _ref1[event];
  	            _results1.push(elementListeners.element.addEventListener(event, listener, false));
  	          }
  	          return _results1;
  	        })());
  	      }
  	      return _results;
  	    };
  	
  	    Dropzone.prototype.removeEventListeners = function() {
  	      var elementListeners, event, listener, _i, _len, _ref, _results;
  	      _ref = this.listeners;
  	      _results = [];
  	      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  	        elementListeners = _ref[_i];
  	        _results.push((function() {
  	          var _ref1, _results1;
  	          _ref1 = elementListeners.events;
  	          _results1 = [];
  	          for (event in _ref1) {
  	            listener = _ref1[event];
  	            _results1.push(elementListeners.element.removeEventListener(event, listener, false));
  	          }
  	          return _results1;
  	        })());
  	      }
  	      return _results;
  	    };
  	
  	    Dropzone.prototype.disable = function() {
  	      var file, _i, _len, _ref, _results;
  	      this.clickableElements.forEach(function(element) {
  	        return element.classList.remove("dz-clickable");
  	      });
  	      this.removeEventListeners();
  	      _ref = this.files;
  	      _results = [];
  	      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  	        file = _ref[_i];
  	        _results.push(this.cancelUpload(file));
  	      }
  	      return _results;
  	    };
  	
  	    Dropzone.prototype.enable = function() {
  	      this.clickableElements.forEach(function(element) {
  	        return element.classList.add("dz-clickable");
  	      });
  	      return this.setupEventListeners();
  	    };
  	
  	    Dropzone.prototype.filesize = function(size) {
  	      var cutoff, i, selectedSize, selectedUnit, unit, units, _i, _len;
  	      selectedSize = 0;
  	      selectedUnit = "b";
  	      if (size > 0) {
  	        units = ['TB', 'GB', 'MB', 'KB', 'b'];
  	        for (i = _i = 0, _len = units.length; _i < _len; i = ++_i) {
  	          unit = units[i];
  	          cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;
  	          if (size >= cutoff) {
  	            selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);
  	            selectedUnit = unit;
  	            break;
  	          }
  	        }
  	        selectedSize = Math.round(10 * selectedSize) / 10;
  	      }
  	      return "<strong>" + selectedSize + "</strong> " + selectedUnit;
  	    };
  	
  	    Dropzone.prototype._updateMaxFilesReachedClass = function() {
  	      if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) {
  	        if (this.getAcceptedFiles().length === this.options.maxFiles) {
  	          this.emit('maxfilesreached', this.files);
  	        }
  	        return this.element.classList.add("dz-max-files-reached");
  	      } else {
  	        return this.element.classList.remove("dz-max-files-reached");
  	      }
  	    };
  	
  	    Dropzone.prototype.drop = function(e) {
  	      var files, items;
  	      if (!e.dataTransfer) {
  	        return;
  	      }
  	      this.emit("drop", e);
  	      files = e.dataTransfer.files;
  	      this.emit("addedfiles", files);
  	      if (files.length) {
  	        items = e.dataTransfer.items;
  	        if (items && items.length && (items[0].webkitGetAsEntry != null)) {
  	          this._addFilesFromItems(items);
  	        } else {
  	          this.handleFiles(files);
  	        }
  	      }
  	    };
  	
  	    Dropzone.prototype.paste = function(e) {
  	      var items, _ref;
  	      if ((e != null ? (_ref = e.clipboardData) != null ? _ref.items : void 0 : void 0) == null) {
  	        return;
  	      }
  	      this.emit("paste", e);
  	      items = e.clipboardData.items;
  	      if (items.length) {
  	        return this._addFilesFromItems(items);
  	      }
  	    };
  	
  	    Dropzone.prototype.handleFiles = function(files) {
  	      var file, _i, _len, _results;
  	      _results = [];
  	      for (_i = 0, _len = files.length; _i < _len; _i++) {
  	        file = files[_i];
  	        _results.push(this.addFile(file));
  	      }
  	      return _results;
  	    };
  	
  	    Dropzone.prototype._addFilesFromItems = function(items) {
  	      var entry, item, _i, _len, _results;
  	      _results = [];
  	      for (_i = 0, _len = items.length; _i < _len; _i++) {
  	        item = items[_i];
  	        if ((item.webkitGetAsEntry != null) && (entry = item.webkitGetAsEntry())) {
  	          if (entry.isFile) {
  	            _results.push(this.addFile(item.getAsFile()));
  	          } else if (entry.isDirectory) {
  	            _results.push(this._addFilesFromDirectory(entry, entry.name));
  	          } else {
  	            _results.push(void 0);
  	          }
  	        } else if (item.getAsFile != null) {
  	          if ((item.kind == null) || item.kind === "file") {
  	            _results.push(this.addFile(item.getAsFile()));
  	          } else {
  	            _results.push(void 0);
  	          }
  	        } else {
  	          _results.push(void 0);
  	        }
  	      }
  	      return _results;
  	    };
  	
  	    Dropzone.prototype._addFilesFromDirectory = function(directory, path) {
  	      var dirReader, errorHandler, readEntries;
  	      dirReader = directory.createReader();
  	      errorHandler = function(error) {
  	        return typeof console !== "undefined" && console !== null ? typeof console.log === "function" ? console.log(error) : void 0 : void 0;
  	      };
  	      readEntries = (function(_this) {
  	        return function() {
  	          return dirReader.readEntries(function(entries) {
  	            var entry, _i, _len;
  	            if (entries.length > 0) {
  	              for (_i = 0, _len = entries.length; _i < _len; _i++) {
  	                entry = entries[_i];
  	                if (entry.isFile) {
  	                  entry.file(function(file) {
  	                    if (_this.options.ignoreHiddenFiles && file.name.substring(0, 1) === '.') {
  	                      return;
  	                    }
  	                    file.fullPath = "" + path + "/" + file.name;
  	                    return _this.addFile(file);
  	                  });
  	                } else if (entry.isDirectory) {
  	                  _this._addFilesFromDirectory(entry, "" + path + "/" + entry.name);
  	                }
  	              }
  	              readEntries();
  	            }
  	            return null;
  	          }, errorHandler);
  	        };
  	      })(this);
  	      return readEntries();
  	    };
  	
  	    Dropzone.prototype.accept = function(file, done) {
  	      if (file.size > this.options.maxFilesize * 1024 * 1024) {
  	        return done(this.options.dictFileTooBig.replace("{{filesize}}", Math.round(file.size / 1024 / 10.24) / 100).replace("{{maxFilesize}}", this.options.maxFilesize));
  	      } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {
  	        return done(this.options.dictInvalidFileType);
  	      } else if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) {
  	        done(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}", this.options.maxFiles));
  	        return this.emit("maxfilesexceeded", file);
  	      } else {
  	        return this.options.accept.call(this, file, done);
  	      }
  	    };
  	
  	    Dropzone.prototype.addFile = function(file) {
  	      file.upload = {
  	        progress: 0,
  	        total: file.size,
  	        bytesSent: 0
  	      };
  	      this.files.push(file);
  	      file.status = Dropzone.ADDED;
  	      this.emit("addedfile", file);
  	      this._enqueueThumbnail(file);
  	      return this.accept(file, (function(_this) {
  	        return function(error) {
  	          if (error) {
  	            file.accepted = false;
  	            _this._errorProcessing([file], error);
  	          } else {
  	            file.accepted = true;
  	            if (_this.options.autoQueue) {
  	              _this.enqueueFile(file);
  	            }
  	          }
  	          return _this._updateMaxFilesReachedClass();
  	        };
  	      })(this));
  	    };
  	
  	    Dropzone.prototype.enqueueFiles = function(files) {
  	      var file, _i, _len;
  	      for (_i = 0, _len = files.length; _i < _len; _i++) {
  	        file = files[_i];
  	        this.enqueueFile(file);
  	      }
  	      return null;
  	    };
  	
  	    Dropzone.prototype.enqueueFile = function(file) {
  	      if (file.status === Dropzone.ADDED && file.accepted === true) {
  	        file.status = Dropzone.QUEUED;
  	        if (this.options.autoProcessQueue) {
  	          return setTimeout(((function(_this) {
  	            return function() {
  	              return _this.processQueue();
  	            };
  	          })(this)), 0);
  	        }
  	      } else {
  	        throw new Error("This file can't be queued because it has already been processed or was rejected.");
  	      }
  	    };
  	
  	    Dropzone.prototype._thumbnailQueue = [];
  	
  	    Dropzone.prototype._processingThumbnail = false;
  	
  	    Dropzone.prototype._enqueueThumbnail = function(file) {
  	      if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {
  	        this._thumbnailQueue.push(file);
  	        return setTimeout(((function(_this) {
  	          return function() {
  	            return _this._processThumbnailQueue();
  	          };
  	        })(this)), 0);
  	      }
  	    };
  	
  	    Dropzone.prototype._processThumbnailQueue = function() {
  	      if (this._processingThumbnail || this._thumbnailQueue.length === 0) {
  	        return;
  	      }
  	      this._processingThumbnail = true;
  	      return this.createThumbnail(this._thumbnailQueue.shift(), (function(_this) {
  	        return function() {
  	          _this._processingThumbnail = false;
  	          return _this._processThumbnailQueue();
  	        };
  	      })(this));
  	    };
  	
  	    Dropzone.prototype.removeFile = function(file) {
  	      if (file.status === Dropzone.UPLOADING) {
  	        this.cancelUpload(file);
  	      }
  	      this.files = without(this.files, file);
  	      this.emit("removedfile", file);
  	      if (this.files.length === 0) {
  	        return this.emit("reset");
  	      }
  	    };
  	
  	    Dropzone.prototype.removeAllFiles = function(cancelIfNecessary) {
  	      var file, _i, _len, _ref;
  	      if (cancelIfNecessary == null) {
  	        cancelIfNecessary = false;
  	      }
  	      _ref = this.files.slice();
  	      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  	        file = _ref[_i];
  	        if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {
  	          this.removeFile(file);
  	        }
  	      }
  	      return null;
  	    };
  	
  	    Dropzone.prototype.createThumbnail = function(file, callback) {
  	      var fileReader;
  	      fileReader = new FileReader;
  	      fileReader.onload = (function(_this) {
  	        return function() {
  	          if (file.type === "image/svg+xml") {
  	            _this.emit("thumbnail", file, fileReader.result);
  	            if (callback != null) {
  	              callback();
  	            }
  	            return;
  	          }
  	          return _this.createThumbnailFromUrl(file, fileReader.result, callback);
  	        };
  	      })(this);
  	      return fileReader.readAsDataURL(file);
  	    };
  	
  	    Dropzone.prototype.createThumbnailFromUrl = function(file, imageUrl, callback, crossOrigin) {
  	      var img;
  	      img = document.createElement("img");
  	      if (crossOrigin) {
  	        img.crossOrigin = crossOrigin;
  	      }
  	      img.onload = (function(_this) {
  	        return function() {
  	          var canvas, ctx, resizeInfo, thumbnail, _ref, _ref1, _ref2, _ref3;
  	          file.width = img.width;
  	          file.height = img.height;
  	          resizeInfo = _this.options.resize.call(_this, file);
  	          if (resizeInfo.trgWidth == null) {
  	            resizeInfo.trgWidth = resizeInfo.optWidth;
  	          }
  	          if (resizeInfo.trgHeight == null) {
  	            resizeInfo.trgHeight = resizeInfo.optHeight;
  	          }
  	          canvas = document.createElement("canvas");
  	          ctx = canvas.getContext("2d");
  	          canvas.width = resizeInfo.trgWidth;
  	          canvas.height = resizeInfo.trgHeight;
  	          drawImageIOSFix(ctx, img, (_ref = resizeInfo.srcX) != null ? _ref : 0, (_ref1 = resizeInfo.srcY) != null ? _ref1 : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, (_ref2 = resizeInfo.trgX) != null ? _ref2 : 0, (_ref3 = resizeInfo.trgY) != null ? _ref3 : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);
  	          thumbnail = canvas.toDataURL("image/png");
  	          _this.emit("thumbnail", file, thumbnail);
  	          if (callback != null) {
  	            return callback();
  	          }
  	        };
  	      })(this);
  	      if (callback != null) {
  	        img.onerror = callback;
  	      }
  	      return img.src = imageUrl;
  	    };
  	
  	    Dropzone.prototype.processQueue = function() {
  	      var i, parallelUploads, processingLength, queuedFiles;
  	      parallelUploads = this.options.parallelUploads;
  	      processingLength = this.getUploadingFiles().length;
  	      i = processingLength;
  	      if (processingLength >= parallelUploads) {
  	        return;
  	      }
  	      queuedFiles = this.getQueuedFiles();
  	      if (!(queuedFiles.length > 0)) {
  	        return;
  	      }
  	      if (this.options.uploadMultiple) {
  	        return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));
  	      } else {
  	        while (i < parallelUploads) {
  	          if (!queuedFiles.length) {
  	            return;
  	          }
  	          this.processFile(queuedFiles.shift());
  	          i++;
  	        }
  	      }
  	    };
  	
  	    Dropzone.prototype.processFile = function(file) {
  	      return this.processFiles([file]);
  	    };
  	
  	    Dropzone.prototype.processFiles = function(files) {
  	      var file, _i, _len;
  	      for (_i = 0, _len = files.length; _i < _len; _i++) {
  	        file = files[_i];
  	        file.processing = true;
  	        file.status = Dropzone.UPLOADING;
  	        this.emit("processing", file);
  	      }
  	      if (this.options.uploadMultiple) {
  	        this.emit("processingmultiple", files);
  	      }
  	      return this.uploadFiles(files);
  	    };
  	
  	    Dropzone.prototype._getFilesWithXhr = function(xhr) {
  	      var file, files;
  	      return files = (function() {
  	        var _i, _len, _ref, _results;
  	        _ref = this.files;
  	        _results = [];
  	        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  	          file = _ref[_i];
  	          if (file.xhr === xhr) {
  	            _results.push(file);
  	          }
  	        }
  	        return _results;
  	      }).call(this);
  	    };
  	
  	    Dropzone.prototype.cancelUpload = function(file) {
  	      var groupedFile, groupedFiles, _i, _j, _len, _len1, _ref;
  	      if (file.status === Dropzone.UPLOADING) {
  	        groupedFiles = this._getFilesWithXhr(file.xhr);
  	        for (_i = 0, _len = groupedFiles.length; _i < _len; _i++) {
  	          groupedFile = groupedFiles[_i];
  	          groupedFile.status = Dropzone.CANCELED;
  	        }
  	        file.xhr.abort();
  	        for (_j = 0, _len1 = groupedFiles.length; _j < _len1; _j++) {
  	          groupedFile = groupedFiles[_j];
  	          this.emit("canceled", groupedFile);
  	        }
  	        if (this.options.uploadMultiple) {
  	          this.emit("canceledmultiple", groupedFiles);
  	        }
  	      } else if ((_ref = file.status) === Dropzone.ADDED || _ref === Dropzone.QUEUED) {
  	        file.status = Dropzone.CANCELED;
  	        this.emit("canceled", file);
  	        if (this.options.uploadMultiple) {
  	          this.emit("canceledmultiple", [file]);
  	        }
  	      }
  	      if (this.options.autoProcessQueue) {
  	        return this.processQueue();
  	      }
  	    };
  	
  	    resolveOption = function() {
  	      var args, option;
  	      option = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
  	      if (typeof option === 'function') {
  	        return option.apply(this, args);
  	      }
  	      return option;
  	    };
  	
  	    Dropzone.prototype.uploadFile = function(file) {
  	      return this.uploadFiles([file]);
  	    };
  	
  	    Dropzone.prototype.uploadFiles = function(files) {
  	      var file, formData, handleError, headerName, headerValue, headers, i, input, inputName, inputType, key, method, option, progressObj, response, updateProgress, url, value, xhr, _i, _j, _k, _l, _len, _len1, _len2, _len3, _m, _ref, _ref1, _ref2, _ref3, _ref4, _ref5;
  	      xhr = new XMLHttpRequest();
  	      for (_i = 0, _len = files.length; _i < _len; _i++) {
  	        file = files[_i];
  	        file.xhr = xhr;
  	      }
  	      method = resolveOption(this.options.method, files);
  	      url = resolveOption(this.options.url, files);
  	      xhr.open(method, url, true);
  	      xhr.withCredentials = !!this.options.withCredentials;
  	      response = null;
  	      handleError = (function(_this) {
  	        return function() {
  	          var _j, _len1, _results;
  	          _results = [];
  	          for (_j = 0, _len1 = files.length; _j < _len1; _j++) {
  	            file = files[_j];
  	            _results.push(_this._errorProcessing(files, response || _this.options.dictResponseError.replace("{{statusCode}}", xhr.status), xhr));
  	          }
  	          return _results;
  	        };
  	      })(this);
  	      updateProgress = (function(_this) {
  	        return function(e) {
  	          var allFilesFinished, progress, _j, _k, _l, _len1, _len2, _len3, _results;
  	          if (e != null) {
  	            progress = 100 * e.loaded / e.total;
  	            for (_j = 0, _len1 = files.length; _j < _len1; _j++) {
  	              file = files[_j];
  	              file.upload = {
  	                progress: progress,
  	                total: e.total,
  	                bytesSent: e.loaded
  	              };
  	            }
  	          } else {
  	            allFilesFinished = true;
  	            progress = 100;
  	            for (_k = 0, _len2 = files.length; _k < _len2; _k++) {
  	              file = files[_k];
  	              if (!(file.upload.progress === 100 && file.upload.bytesSent === file.upload.total)) {
  	                allFilesFinished = false;
  	              }
  	              file.upload.progress = progress;
  	              file.upload.bytesSent = file.upload.total;
  	            }
  	            if (allFilesFinished) {
  	              return;
  	            }
  	          }
  	          _results = [];
  	          for (_l = 0, _len3 = files.length; _l < _len3; _l++) {
  	            file = files[_l];
  	            _results.push(_this.emit("uploadprogress", file, progress, file.upload.bytesSent));
  	          }
  	          return _results;
  	        };
  	      })(this);
  	      xhr.onload = (function(_this) {
  	        return function(e) {
  	          var _ref;
  	          if (files[0].status === Dropzone.CANCELED) {
  	            return;
  	          }
  	          if (xhr.readyState !== 4) {
  	            return;
  	          }
  	          response = xhr.responseText;
  	          if (xhr.getResponseHeader("content-type") && ~xhr.getResponseHeader("content-type").indexOf("application/json")) {
  	            try {
  	              response = JSON.parse(response);
  	            } catch (_error) {
  	              e = _error;
  	              response = "Invalid JSON response from server.";
  	            }
  	          }
  	          updateProgress();
  	          if (!((200 <= (_ref = xhr.status) && _ref < 300))) {
  	            return handleError();
  	          } else {
  	            return _this._finished(files, response, e);
  	          }
  	        };
  	      })(this);
  	      xhr.onerror = (function(_this) {
  	        return function() {
  	          if (files[0].status === Dropzone.CANCELED) {
  	            return;
  	          }
  	          return handleError();
  	        };
  	      })(this);
  	      progressObj = (_ref = xhr.upload) != null ? _ref : xhr;
  	      progressObj.onprogress = updateProgress;
  	      headers = {
  	        "Accept": "application/json",
  	        "Cache-Control": "no-cache",
  	        "X-Requested-With": "XMLHttpRequest"
  	      };
  	      if (this.options.headers) {
  	        extend(headers, this.options.headers);
  	      }
  	      for (headerName in headers) {
  	        headerValue = headers[headerName];
  	        if (headerValue) {
  	          xhr.setRequestHeader(headerName, headerValue);
  	        }
  	      }
  	      formData = new FormData();
  	      if (this.options.params) {
  	        _ref1 = this.options.params;
  	        for (key in _ref1) {
  	          value = _ref1[key];
  	          formData.append(key, value);
  	        }
  	      }
  	      for (_j = 0, _len1 = files.length; _j < _len1; _j++) {
  	        file = files[_j];
  	        this.emit("sending", file, xhr, formData);
  	      }
  	      if (this.options.uploadMultiple) {
  	        this.emit("sendingmultiple", files, xhr, formData);
  	      }
  	      if (this.element.tagName === "FORM") {
  	        _ref2 = this.element.querySelectorAll("input, textarea, select, button");
  	        for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
  	          input = _ref2[_k];
  	          inputName = input.getAttribute("name");
  	          inputType = input.getAttribute("type");
  	          if (input.tagName === "SELECT" && input.hasAttribute("multiple")) {
  	            _ref3 = input.options;
  	            for (_l = 0, _len3 = _ref3.length; _l < _len3; _l++) {
  	              option = _ref3[_l];
  	              if (option.selected) {
  	                formData.append(inputName, option.value);
  	              }
  	            }
  	          } else if (!inputType || ((_ref4 = inputType.toLowerCase()) !== "checkbox" && _ref4 !== "radio") || input.checked) {
  	            formData.append(inputName, input.value);
  	          }
  	        }
  	      }
  	      for (i = _m = 0, _ref5 = files.length - 1; 0 <= _ref5 ? _m <= _ref5 : _m >= _ref5; i = 0 <= _ref5 ? ++_m : --_m) {
  	        formData.append(this._getParamName(i), files[i], this._renameFilename(files[i].name));
  	      }
  	      return this.submitRequest(xhr, formData, files);
  	    };
  	
  	    Dropzone.prototype.submitRequest = function(xhr, formData, files) {
  	      return xhr.send(formData);
  	    };
  	
  	    Dropzone.prototype._finished = function(files, responseText, e) {
  	      var file, _i, _len;
  	      for (_i = 0, _len = files.length; _i < _len; _i++) {
  	        file = files[_i];
  	        file.status = Dropzone.SUCCESS;
  	        this.emit("success", file, responseText, e);
  	        this.emit("complete", file);
  	      }
  	      if (this.options.uploadMultiple) {
  	        this.emit("successmultiple", files, responseText, e);
  	        this.emit("completemultiple", files);
  	      }
  	      if (this.options.autoProcessQueue) {
  	        return this.processQueue();
  	      }
  	    };
  	
  	    Dropzone.prototype._errorProcessing = function(files, message, xhr) {
  	      var file, _i, _len;
  	      for (_i = 0, _len = files.length; _i < _len; _i++) {
  	        file = files[_i];
  	        file.status = Dropzone.ERROR;
  	        this.emit("error", file, message, xhr);
  	        this.emit("complete", file);
  	      }
  	      if (this.options.uploadMultiple) {
  	        this.emit("errormultiple", files, message, xhr);
  	        this.emit("completemultiple", files);
  	      }
  	      if (this.options.autoProcessQueue) {
  	        return this.processQueue();
  	      }
  	    };
  	
  	    return Dropzone;
  	
  	  })(Emitter);
  	
  	  Dropzone.version = "4.3.0";
  	
  	  Dropzone.options = {};
  	
  	  Dropzone.optionsForElement = function(element) {
  	    if (element.getAttribute("id")) {
  	      return Dropzone.options[camelize(element.getAttribute("id"))];
  	    } else {
  	      return void 0;
  	    }
  	  };
  	
  	  Dropzone.instances = [];
  	
  	  Dropzone.forElement = function(element) {
  	    if (typeof element === "string") {
  	      element = document.querySelector(element);
  	    }
  	    if ((element != null ? element.dropzone : void 0) == null) {
  	      throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.");
  	    }
  	    return element.dropzone;
  	  };
  	
  	  Dropzone.autoDiscover = true;
  	
  	  Dropzone.discover = function() {
  	    var checkElements, dropzone, dropzones, _i, _len, _results;
  	    if (document.querySelectorAll) {
  	      dropzones = document.querySelectorAll(".dropzone");
  	    } else {
  	      dropzones = [];
  	      checkElements = function(elements) {
  	        var el, _i, _len, _results;
  	        _results = [];
  	        for (_i = 0, _len = elements.length; _i < _len; _i++) {
  	          el = elements[_i];
  	          if (/(^| )dropzone($| )/.test(el.className)) {
  	            _results.push(dropzones.push(el));
  	          } else {
  	            _results.push(void 0);
  	          }
  	        }
  	        return _results;
  	      };
  	      checkElements(document.getElementsByTagName("div"));
  	      checkElements(document.getElementsByTagName("form"));
  	    }
  	    _results = [];
  	    for (_i = 0, _len = dropzones.length; _i < _len; _i++) {
  	      dropzone = dropzones[_i];
  	      if (Dropzone.optionsForElement(dropzone) !== false) {
  	        _results.push(new Dropzone(dropzone));
  	      } else {
  	        _results.push(void 0);
  	      }
  	    }
  	    return _results;
  	  };
  	
  	  Dropzone.blacklistedBrowsers = [/opera.*Macintosh.*version\/12/i];
  	
  	  Dropzone.isBrowserSupported = function() {
  	    var capableBrowser, regex, _i, _len, _ref;
  	    capableBrowser = true;
  	    if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {
  	      if (!("classList" in document.createElement("a"))) {
  	        capableBrowser = false;
  	      } else {
  	        _ref = Dropzone.blacklistedBrowsers;
  	        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  	          regex = _ref[_i];
  	          if (regex.test(navigator.userAgent)) {
  	            capableBrowser = false;
  	            continue;
  	          }
  	        }
  	      }
  	    } else {
  	      capableBrowser = false;
  	    }
  	    return capableBrowser;
  	  };
  	
  	  without = function(list, rejectedItem) {
  	    var item, _i, _len, _results;
  	    _results = [];
  	    for (_i = 0, _len = list.length; _i < _len; _i++) {
  	      item = list[_i];
  	      if (item !== rejectedItem) {
  	        _results.push(item);
  	      }
  	    }
  	    return _results;
  	  };
  	
  	  camelize = function(str) {
  	    return str.replace(/[\-_](\w)/g, function(match) {
  	      return match.charAt(1).toUpperCase();
  	    });
  	  };
  	
  	  Dropzone.createElement = function(string) {
  	    var div;
  	    div = document.createElement("div");
  	    div.innerHTML = string;
  	    return div.childNodes[0];
  	  };
  	
  	  Dropzone.elementInside = function(element, container) {
  	    if (element === container) {
  	      return true;
  	    }
  	    while (element = element.parentNode) {
  	      if (element === container) {
  	        return true;
  	      }
  	    }
  	    return false;
  	  };
  	
  	  Dropzone.getElement = function(el, name) {
  	    var element;
  	    if (typeof el === "string") {
  	      element = document.querySelector(el);
  	    } else if (el.nodeType != null) {
  	      element = el;
  	    }
  	    if (element == null) {
  	      throw new Error("Invalid `" + name + "` option provided. Please provide a CSS selector or a plain HTML element.");
  	    }
  	    return element;
  	  };
  	
  	  Dropzone.getElements = function(els, name) {
  	    var e, el, elements, _i, _j, _len, _len1, _ref;
  	    if (els instanceof Array) {
  	      elements = [];
  	      try {
  	        for (_i = 0, _len = els.length; _i < _len; _i++) {
  	          el = els[_i];
  	          elements.push(this.getElement(el, name));
  	        }
  	      } catch (_error) {
  	        e = _error;
  	        elements = null;
  	      }
  	    } else if (typeof els === "string") {
  	      elements = [];
  	      _ref = document.querySelectorAll(els);
  	      for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {
  	        el = _ref[_j];
  	        elements.push(el);
  	      }
  	    } else if (els.nodeType != null) {
  	      elements = [els];
  	    }
  	    if (!((elements != null) && elements.length)) {
  	      throw new Error("Invalid `" + name + "` option provided. Please provide a CSS selector, a plain HTML element or a list of those.");
  	    }
  	    return elements;
  	  };
  	
  	  Dropzone.confirm = function(question, accepted, rejected) {
  	    if (window.confirm(question)) {
  	      return accepted();
  	    } else if (rejected != null) {
  	      return rejected();
  	    }
  	  };
  	
  	  Dropzone.isValidFile = function(file, acceptedFiles) {
  	    var baseMimeType, mimeType, validType, _i, _len;
  	    if (!acceptedFiles) {
  	      return true;
  	    }
  	    acceptedFiles = acceptedFiles.split(",");
  	    mimeType = file.type;
  	    baseMimeType = mimeType.replace(/\/.*$/, "");
  	    for (_i = 0, _len = acceptedFiles.length; _i < _len; _i++) {
  	      validType = acceptedFiles[_i];
  	      validType = validType.trim();
  	      if (validType.charAt(0) === ".") {
  	        if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {
  	          return true;
  	        }
  	      } else if (/\/\*$/.test(validType)) {
  	        if (baseMimeType === validType.replace(/\/.*$/, "")) {
  	          return true;
  	        }
  	      } else {
  	        if (mimeType === validType) {
  	          return true;
  	        }
  	      }
  	    }
  	    return false;
  	  };
  	
  	  if (typeof jQuery !== "undefined" && jQuery !== null) {
  	    jQuery.fn.dropzone = function(options) {
  	      return this.each(function() {
  	        return new Dropzone(this, options);
  	      });
  	    };
  	  }
  	
  	  if (typeof module !== "undefined" && module !== null) {
  	    module.exports = Dropzone;
  	  } else {
  	    window.Dropzone = Dropzone;
  	  }
  	
  	  Dropzone.ADDED = "added";
  	
  	  Dropzone.QUEUED = "queued";
  	
  	  Dropzone.ACCEPTED = Dropzone.QUEUED;
  	
  	  Dropzone.UPLOADING = "uploading";
  	
  	  Dropzone.PROCESSING = Dropzone.UPLOADING;
  	
  	  Dropzone.CANCELED = "canceled";
  	
  	  Dropzone.ERROR = "error";
  	
  	  Dropzone.SUCCESS = "success";
  	
  	
  	  /*
  	
  	  Bugfix for iOS 6 and 7
  	  Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios
  	  based on the work of https://github.com/stomita/ios-imagefile-megapixel
  	   */
  	
  	  detectVerticalSquash = function(img) {
  	    var alpha, canvas, ctx, data, ey, ih, iw, py, ratio, sy;
  	    iw = img.naturalWidth;
  	    ih = img.naturalHeight;
  	    canvas = document.createElement("canvas");
  	    canvas.width = 1;
  	    canvas.height = ih;
  	    ctx = canvas.getContext("2d");
  	    ctx.drawImage(img, 0, 0);
  	    data = ctx.getImageData(0, 0, 1, ih).data;
  	    sy = 0;
  	    ey = ih;
  	    py = ih;
  	    while (py > sy) {
  	      alpha = data[(py - 1) * 4 + 3];
  	      if (alpha === 0) {
  	        ey = py;
  	      } else {
  	        sy = py;
  	      }
  	      py = (ey + sy) >> 1;
  	    }
  	    ratio = py / ih;
  	    if (ratio === 0) {
  	      return 1;
  	    } else {
  	      return ratio;
  	    }
  	  };
  	
  	  drawImageIOSFix = function(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {
  	    var vertSquashRatio;
  	    vertSquashRatio = detectVerticalSquash(img);
  	    return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);
  	  };
  	
  	
  	  /*
  	   * contentloaded.js
  	   *
  	   * Author: Diego Perini (diego.perini at gmail.com)
  	   * Summary: cross-browser wrapper for DOMContentLoaded
  	   * Updated: 20101020
  	   * License: MIT
  	   * Version: 1.2
  	   *
  	   * URL:
  	   * http://javascript.nwbox.com/ContentLoaded/
  	   * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE
  	   */
  	
  	  contentLoaded = function(win, fn) {
  	    var add, doc, done, init, poll, pre, rem, root, top;
  	    done = false;
  	    top = true;
  	    doc = win.document;
  	    root = doc.documentElement;
  	    add = (doc.addEventListener ? "addEventListener" : "attachEvent");
  	    rem = (doc.addEventListener ? "removeEventListener" : "detachEvent");
  	    pre = (doc.addEventListener ? "" : "on");
  	    init = function(e) {
  	      if (e.type === "readystatechange" && doc.readyState !== "complete") {
  	        return;
  	      }
  	      (e.type === "load" ? win : doc)[rem](pre + e.type, init, false);
  	      if (!done && (done = true)) {
  	        return fn.call(win, e.type || e);
  	      }
  	    };
  	    poll = function() {
  	      var e;
  	      try {
  	        root.doScroll("left");
  	      } catch (_error) {
  	        e = _error;
  	        setTimeout(poll, 50);
  	        return;
  	      }
  	      return init("poll");
  	    };
  	    if (doc.readyState !== "complete") {
  	      if (doc.createEventObject && root.doScroll) {
  	        try {
  	          top = !win.frameElement;
  	        } catch (_error) {}
  	        if (top) {
  	          poll();
  	        }
  	      }
  	      doc[add](pre + "DOMContentLoaded", init, false);
  	      doc[add](pre + "readystatechange", init, false);
  	      return win[add](pre + "load", init, false);
  	    }
  	  };
  	
  	  Dropzone._autoDiscoverFunction = function() {
  	    if (Dropzone.autoDiscover) {
  	      return Dropzone.discover();
  	    }
  	  };
  	
  	  contentLoaded(window, Dropzone._autoDiscoverFunction);
  	
  	}).call(this);
  	
  	/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(30)(module)))
  
  /***/ },
  /* 60 */
  /***/ function(module, exports, __webpack_require__) {
  
  	/* WEBPACK VAR INJECTION */(function(global, module) {/**
  	 * lodash (Custom Build) <https://lodash.com/>
  	 * Build: `lodash modularize exports="npm" -o ./`
  	 * Copyright jQuery Foundation and other contributors <https://jquery.org/>
  	 * Released under MIT license <https://lodash.com/license>
  	 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
  	 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
  	 */
  	
  	/** Used as the size to enable large array optimizations. */
  	var LARGE_ARRAY_SIZE = 200;
  	
  	/** Used to stand-in for `undefined` hash values. */
  	var HASH_UNDEFINED = '__lodash_hash_undefined__';
  	
  	/** Used as references for various `Number` constants. */
  	var MAX_SAFE_INTEGER = 9007199254740991;
  	
  	/** `Object#toString` result references. */
  	var argsTag = '[object Arguments]',
  	    arrayTag = '[object Array]',
  	    boolTag = '[object Boolean]',
  	    dateTag = '[object Date]',
  	    errorTag = '[object Error]',
  	    funcTag = '[object Function]',
  	    genTag = '[object GeneratorFunction]',
  	    mapTag = '[object Map]',
  	    numberTag = '[object Number]',
  	    objectTag = '[object Object]',
  	    promiseTag = '[object Promise]',
  	    regexpTag = '[object RegExp]',
  	    setTag = '[object Set]',
  	    stringTag = '[object String]',
  	    symbolTag = '[object Symbol]',
  	    weakMapTag = '[object WeakMap]';
  	
  	var arrayBufferTag = '[object ArrayBuffer]',
  	    dataViewTag = '[object DataView]',
  	    float32Tag = '[object Float32Array]',
  	    float64Tag = '[object Float64Array]',
  	    int8Tag = '[object Int8Array]',
  	    int16Tag = '[object Int16Array]',
  	    int32Tag = '[object Int32Array]',
  	    uint8Tag = '[object Uint8Array]',
  	    uint8ClampedTag = '[object Uint8ClampedArray]',
  	    uint16Tag = '[object Uint16Array]',
  	    uint32Tag = '[object Uint32Array]';
  	
  	/**
  	 * Used to match `RegExp`
  	 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
  	 */
  	var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
  	
  	/** Used to match `RegExp` flags from their coerced string values. */
  	var reFlags = /\w*$/;
  	
  	/** Used to detect host constructors (Safari). */
  	var reIsHostCtor = /^\[object .+?Constructor\]$/;
  	
  	/** Used to detect unsigned integer values. */
  	var reIsUint = /^(?:0|[1-9]\d*)$/;
  	
  	/** Used to identify `toStringTag` values supported by `_.clone`. */
  	var cloneableTags = {};
  	cloneableTags[argsTag] = cloneableTags[arrayTag] =
  	cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
  	cloneableTags[boolTag] = cloneableTags[dateTag] =
  	cloneableTags[float32Tag] = cloneableTags[float64Tag] =
  	cloneableTags[int8Tag] = cloneableTags[int16Tag] =
  	cloneableTags[int32Tag] = cloneableTags[mapTag] =
  	cloneableTags[numberTag] = cloneableTags[objectTag] =
  	cloneableTags[regexpTag] = cloneableTags[setTag] =
  	cloneableTags[stringTag] = cloneableTags[symbolTag] =
  	cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
  	cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
  	cloneableTags[errorTag] = cloneableTags[funcTag] =
  	cloneableTags[weakMapTag] = false;
  	
  	/** Detect free variable `global` from Node.js. */
  	var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
  	
  	/** Detect free variable `self`. */
  	var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
  	
  	/** Used as a reference to the global object. */
  	var root = freeGlobal || freeSelf || Function('return this')();
  	
  	/** Detect free variable `exports`. */
  	var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
  	
  	/** Detect free variable `module`. */
  	var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
  	
  	/** Detect the popular CommonJS extension `module.exports`. */
  	var moduleExports = freeModule && freeModule.exports === freeExports;
  	
  	/**
  	 * Adds the key-value `pair` to `map`.
  	 *
  	 * @private
  	 * @param {Object} map The map to modify.
  	 * @param {Array} pair The key-value pair to add.
  	 * @returns {Object} Returns `map`.
  	 */
  	function addMapEntry(map, pair) {
  	  // Don't return `map.set` because it's not chainable in IE 11.
  	  map.set(pair[0], pair[1]);
  	  return map;
  	}
  	
  	/**
  	 * Adds `value` to `set`.
  	 *
  	 * @private
  	 * @param {Object} set The set to modify.
  	 * @param {*} value The value to add.
  	 * @returns {Object} Returns `set`.
  	 */
  	function addSetEntry(set, value) {
  	  // Don't return `set.add` because it's not chainable in IE 11.
  	  set.add(value);
  	  return set;
  	}
  	
  	/**
  	 * A specialized version of `_.forEach` for arrays without support for
  	 * iteratee shorthands.
  	 *
  	 * @private
  	 * @param {Array} [array] The array to iterate over.
  	 * @param {Function} iteratee The function invoked per iteration.
  	 * @returns {Array} Returns `array`.
  	 */
  	function arrayEach(array, iteratee) {
  	  var index = -1,
  	      length = array ? array.length : 0;
  	
  	  while (++index < length) {
  	    if (iteratee(array[index], index, array) === false) {
  	      break;
  	    }
  	  }
  	  return array;
  	}
  	
  	/**
  	 * Appends the elements of `values` to `array`.
  	 *
  	 * @private
  	 * @param {Array} array The array to modify.
  	 * @param {Array} values The values to append.
  	 * @returns {Array} Returns `array`.
  	 */
  	function arrayPush(array, values) {
  	  var index = -1,
  	      length = values.length,
  	      offset = array.length;
  	
  	  while (++index < length) {
  	    array[offset + index] = values[index];
  	  }
  	  return array;
  	}
  	
  	/**
  	 * A specialized version of `_.reduce` for arrays without support for
  	 * iteratee shorthands.
  	 *
  	 * @private
  	 * @param {Array} [array] The array to iterate over.
  	 * @param {Function} iteratee The function invoked per iteration.
  	 * @param {*} [accumulator] The initial value.
  	 * @param {boolean} [initAccum] Specify using the first element of `array` as
  	 *  the initial value.
  	 * @returns {*} Returns the accumulated value.
  	 */
  	function arrayReduce(array, iteratee, accumulator, initAccum) {
  	  var index = -1,
  	      length = array ? array.length : 0;
  	
  	  if (initAccum && length) {
  	    accumulator = array[++index];
  	  }
  	  while (++index < length) {
  	    accumulator = iteratee(accumulator, array[index], index, array);
  	  }
  	  return accumulator;
  	}
  	
  	/**
  	 * The base implementation of `_.times` without support for iteratee shorthands
  	 * or max array length checks.
  	 *
  	 * @private
  	 * @param {number} n The number of times to invoke `iteratee`.
  	 * @param {Function} iteratee The function invoked per iteration.
  	 * @returns {Array} Returns the array of results.
  	 */
  	function baseTimes(n, iteratee) {
  	  var index = -1,
  	      result = Array(n);
  	
  	  while (++index < n) {
  	    result[index] = iteratee(index);
  	  }
  	  return result;
  	}
  	
  	/**
  	 * Gets the value at `key` of `object`.
  	 *
  	 * @private
  	 * @param {Object} [object] The object to query.
  	 * @param {string} key The key of the property to get.
  	 * @returns {*} Returns the property value.
  	 */
  	function getValue(object, key) {
  	  return object == null ? undefined : object[key];
  	}
  	
  	/**
  	 * Checks if `value` is a host object in IE < 9.
  	 *
  	 * @private
  	 * @param {*} value The value to check.
  	 * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
  	 */
  	function isHostObject(value) {
  	  // Many host objects are `Object` objects that can coerce to strings
  	  // despite having improperly defined `toString` methods.
  	  var result = false;
  	  if (value != null && typeof value.toString != 'function') {
  	    try {
  	      result = !!(value + '');
  	    } catch (e) {}
  	  }
  	  return result;
  	}
  	
  	/**
  	 * Converts `map` to its key-value pairs.
  	 *
  	 * @private
  	 * @param {Object} map The map to convert.
  	 * @returns {Array} Returns the key-value pairs.
  	 */
  	function mapToArray(map) {
  	  var index = -1,
  	      result = Array(map.size);
  	
  	  map.forEach(function(value, key) {
  	    result[++index] = [key, value];
  	  });
  	  return result;
  	}
  	
  	/**
  	 * Creates a unary function that invokes `func` with its argument transformed.
  	 *
  	 * @private
  	 * @param {Function} func The function to wrap.
  	 * @param {Function} transform The argument transform.
  	 * @returns {Function} Returns the new function.
  	 */
  	function overArg(func, transform) {
  	  return function(arg) {
  	    return func(transform(arg));
  	  };
  	}
  	
  	/**
  	 * Converts `set` to an array of its values.
  	 *
  	 * @private
  	 * @param {Object} set The set to convert.
  	 * @returns {Array} Returns the values.
  	 */
  	function setToArray(set) {
  	  var index = -1,
  	      result = Array(set.size);
  	
  	  set.forEach(function(value) {
  	    result[++index] = value;
  	  });
  	  return result;
  	}
  	
  	/** Used for built-in method references. */
  	var arrayProto = Array.prototype,
  	    funcProto = Function.prototype,
  	    objectProto = Object.prototype;
  	
  	/** Used to detect overreaching core-js shims. */
  	var coreJsData = root['__core-js_shared__'];
  	
  	/** Used to detect methods masquerading as native. */
  	var maskSrcKey = (function() {
  	  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
  	  return uid ? ('Symbol(src)_1.' + uid) : '';
  	}());
  	
  	/** Used to resolve the decompiled source of functions. */
  	var funcToString = funcProto.toString;
  	
  	/** Used to check objects for own properties. */
  	var hasOwnProperty = objectProto.hasOwnProperty;
  	
  	/**
  	 * Used to resolve the
  	 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
  	 * of values.
  	 */
  	var objectToString = objectProto.toString;
  	
  	/** Used to detect if a method is native. */
  	var reIsNative = RegExp('^' +
  	  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
  	  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
  	);
  	
  	/** Built-in value references. */
  	var Buffer = moduleExports ? root.Buffer : undefined,
  	    Symbol = root.Symbol,
  	    Uint8Array = root.Uint8Array,
  	    getPrototype = overArg(Object.getPrototypeOf, Object),
  	    objectCreate = Object.create,
  	    propertyIsEnumerable = objectProto.propertyIsEnumerable,
  	    splice = arrayProto.splice;
  	
  	/* Built-in method references for those with the same name as other `lodash` methods. */
  	var nativeGetSymbols = Object.getOwnPropertySymbols,
  	    nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
  	    nativeKeys = overArg(Object.keys, Object);
  	
  	/* Built-in method references that are verified to be native. */
  	var DataView = getNative(root, 'DataView'),
  	    Map = getNative(root, 'Map'),
  	    Promise = getNative(root, 'Promise'),
  	    Set = getNative(root, 'Set'),
  	    WeakMap = getNative(root, 'WeakMap'),
  	    nativeCreate = getNative(Object, 'create');
  	
  	/** Used to detect maps, sets, and weakmaps. */
  	var dataViewCtorString = toSource(DataView),
  	    mapCtorString = toSource(Map),
  	    promiseCtorString = toSource(Promise),
  	    setCtorString = toSource(Set),
  	    weakMapCtorString = toSource(WeakMap);
  	
  	/** Used to convert symbols to primitives and strings. */
  	var symbolProto = Symbol ? Symbol.prototype : undefined,
  	    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
  	
  	/**
  	 * Creates a hash object.
  	 *
  	 * @private
  	 * @constructor
  	 * @param {Array} [entries] The key-value pairs to cache.
  	 */
  	function Hash(entries) {
  	  var index = -1,
  	      length = entries ? entries.length : 0;
  	
  	  this.clear();
  	  while (++index < length) {
  	    var entry = entries[index];
  	    this.set(entry[0], entry[1]);
  	  }
  	}
  	
  	/**
  	 * Removes all key-value entries from the hash.
  	 *
  	 * @private
  	 * @name clear
  	 * @memberOf Hash
  	 */
  	function hashClear() {
  	  this.__data__ = nativeCreate ? nativeCreate(null) : {};
  	}
  	
  	/**
  	 * Removes `key` and its value from the hash.
  	 *
  	 * @private
  	 * @name delete
  	 * @memberOf Hash
  	 * @param {Object} hash The hash to modify.
  	 * @param {string} key The key of the value to remove.
  	 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  	 */
  	function hashDelete(key) {
  	  return this.has(key) && delete this.__data__[key];
  	}
  	
  	/**
  	 * Gets the hash value for `key`.
  	 *
  	 * @private
  	 * @name get
  	 * @memberOf Hash
  	 * @param {string} key The key of the value to get.
  	 * @returns {*} Returns the entry value.
  	 */
  	function hashGet(key) {
  	  var data = this.__data__;
  	  if (nativeCreate) {
  	    var result = data[key];
  	    return result === HASH_UNDEFINED ? undefined : result;
  	  }
  	  return hasOwnProperty.call(data, key) ? data[key] : undefined;
  	}
  	
  	/**
  	 * Checks if a hash value for `key` exists.
  	 *
  	 * @private
  	 * @name has
  	 * @memberOf Hash
  	 * @param {string} key The key of the entry to check.
  	 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  	 */
  	function hashHas(key) {
  	  var data = this.__data__;
  	  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
  	}
  	
  	/**
  	 * Sets the hash `key` to `value`.
  	 *
  	 * @private
  	 * @name set
  	 * @memberOf Hash
  	 * @param {string} key The key of the value to set.
  	 * @param {*} value The value to set.
  	 * @returns {Object} Returns the hash instance.
  	 */
  	function hashSet(key, value) {
  	  var data = this.__data__;
  	  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
  	  return this;
  	}
  	
  	// Add methods to `Hash`.
  	Hash.prototype.clear = hashClear;
  	Hash.prototype['delete'] = hashDelete;
  	Hash.prototype.get = hashGet;
  	Hash.prototype.has = hashHas;
  	Hash.prototype.set = hashSet;
  	
  	/**
  	 * Creates an list cache object.
  	 *
  	 * @private
  	 * @constructor
  	 * @param {Array} [entries] The key-value pairs to cache.
  	 */
  	function ListCache(entries) {
  	  var index = -1,
  	      length = entries ? entries.length : 0;
  	
  	  this.clear();
  	  while (++index < length) {
  	    var entry = entries[index];
  	    this.set(entry[0], entry[1]);
  	  }
  	}
  	
  	/**
  	 * Removes all key-value entries from the list cache.
  	 *
  	 * @private
  	 * @name clear
  	 * @memberOf ListCache
  	 */
  	function listCacheClear() {
  	  this.__data__ = [];
  	}
  	
  	/**
  	 * Removes `key` and its value from the list cache.
  	 *
  	 * @private
  	 * @name delete
  	 * @memberOf ListCache
  	 * @param {string} key The key of the value to remove.
  	 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  	 */
  	function listCacheDelete(key) {
  	  var data = this.__data__,
  	      index = assocIndexOf(data, key);
  	
  	  if (index < 0) {
  	    return false;
  	  }
  	  var lastIndex = data.length - 1;
  	  if (index == lastIndex) {
  	    data.pop();
  	  } else {
  	    splice.call(data, index, 1);
  	  }
  	  return true;
  	}
  	
  	/**
  	 * Gets the list cache value for `key`.
  	 *
  	 * @private
  	 * @name get
  	 * @memberOf ListCache
  	 * @param {string} key The key of the value to get.
  	 * @returns {*} Returns the entry value.
  	 */
  	function listCacheGet(key) {
  	  var data = this.__data__,
  	      index = assocIndexOf(data, key);
  	
  	  return index < 0 ? undefined : data[index][1];
  	}
  	
  	/**
  	 * Checks if a list cache value for `key` exists.
  	 *
  	 * @private
  	 * @name has
  	 * @memberOf ListCache
  	 * @param {string} key The key of the entry to check.
  	 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  	 */
  	function listCacheHas(key) {
  	  return assocIndexOf(this.__data__, key) > -1;
  	}
  	
  	/**
  	 * Sets the list cache `key` to `value`.
  	 *
  	 * @private
  	 * @name set
  	 * @memberOf ListCache
  	 * @param {string} key The key of the value to set.
  	 * @param {*} value The value to set.
  	 * @returns {Object} Returns the list cache instance.
  	 */
  	function listCacheSet(key, value) {
  	  var data = this.__data__,
  	      index = assocIndexOf(data, key);
  	
  	  if (index < 0) {
  	    data.push([key, value]);
  	  } else {
  	    data[index][1] = value;
  	  }
  	  return this;
  	}
  	
  	// Add methods to `ListCache`.
  	ListCache.prototype.clear = listCacheClear;
  	ListCache.prototype['delete'] = listCacheDelete;
  	ListCache.prototype.get = listCacheGet;
  	ListCache.prototype.has = listCacheHas;
  	ListCache.prototype.set = listCacheSet;
  	
  	/**
  	 * Creates a map cache object to store key-value pairs.
  	 *
  	 * @private
  	 * @constructor
  	 * @param {Array} [entries] The key-value pairs to cache.
  	 */
  	function MapCache(entries) {
  	  var index = -1,
  	      length = entries ? entries.length : 0;
  	
  	  this.clear();
  	  while (++index < length) {
  	    var entry = entries[index];
  	    this.set(entry[0], entry[1]);
  	  }
  	}
  	
  	/**
  	 * Removes all key-value entries from the map.
  	 *
  	 * @private
  	 * @name clear
  	 * @memberOf MapCache
  	 */
  	function mapCacheClear() {
  	  this.__data__ = {
  	    'hash': new Hash,
  	    'map': new (Map || ListCache),
  	    'string': new Hash
  	  };
  	}
  	
  	/**
  	 * Removes `key` and its value from the map.
  	 *
  	 * @private
  	 * @name delete
  	 * @memberOf MapCache
  	 * @param {string} key The key of the value to remove.
  	 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  	 */
  	function mapCacheDelete(key) {
  	  return getMapData(this, key)['delete'](key);
  	}
  	
  	/**
  	 * Gets the map value for `key`.
  	 *
  	 * @private
  	 * @name get
  	 * @memberOf MapCache
  	 * @param {string} key The key of the value to get.
  	 * @returns {*} Returns the entry value.
  	 */
  	function mapCacheGet(key) {
  	  return getMapData(this, key).get(key);
  	}
  	
  	/**
  	 * Checks if a map value for `key` exists.
  	 *
  	 * @private
  	 * @name has
  	 * @memberOf MapCache
  	 * @param {string} key The key of the entry to check.
  	 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  	 */
  	function mapCacheHas(key) {
  	  return getMapData(this, key).has(key);
  	}
  	
  	/**
  	 * Sets the map `key` to `value`.
  	 *
  	 * @private
  	 * @name set
  	 * @memberOf MapCache
  	 * @param {string} key The key of the value to set.
  	 * @param {*} value The value to set.
  	 * @returns {Object} Returns the map cache instance.
  	 */
  	function mapCacheSet(key, value) {
  	  getMapData(this, key).set(key, value);
  	  return this;
  	}
  	
  	// Add methods to `MapCache`.
  	MapCache.prototype.clear = mapCacheClear;
  	MapCache.prototype['delete'] = mapCacheDelete;
  	MapCache.prototype.get = mapCacheGet;
  	MapCache.prototype.has = mapCacheHas;
  	MapCache.prototype.set = mapCacheSet;
  	
  	/**
  	 * Creates a stack cache object to store key-value pairs.
  	 *
  	 * @private
  	 * @constructor
  	 * @param {Array} [entries] The key-value pairs to cache.
  	 */
  	function Stack(entries) {
  	  this.__data__ = new ListCache(entries);
  	}
  	
  	/**
  	 * Removes all key-value entries from the stack.
  	 *
  	 * @private
  	 * @name clear
  	 * @memberOf Stack
  	 */
  	function stackClear() {
  	  this.__data__ = new ListCache;
  	}
  	
  	/**
  	 * Removes `key` and its value from the stack.
  	 *
  	 * @private
  	 * @name delete
  	 * @memberOf Stack
  	 * @param {string} key The key of the value to remove.
  	 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
  	 */
  	function stackDelete(key) {
  	  return this.__data__['delete'](key);
  	}
  	
  	/**
  	 * Gets the stack value for `key`.
  	 *
  	 * @private
  	 * @name get
  	 * @memberOf Stack
  	 * @param {string} key The key of the value to get.
  	 * @returns {*} Returns the entry value.
  	 */
  	function stackGet(key) {
  	  return this.__data__.get(key);
  	}
  	
  	/**
  	 * Checks if a stack value for `key` exists.
  	 *
  	 * @private
  	 * @name has
  	 * @memberOf Stack
  	 * @param {string} key The key of the entry to check.
  	 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
  	 */
  	function stackHas(key) {
  	  return this.__data__.has(key);
  	}
  	
  	/**
  	 * Sets the stack `key` to `value`.
  	 *
  	 * @private
  	 * @name set
  	 * @memberOf Stack
  	 * @param {string} key The key of the value to set.
  	 * @param {*} value The value to set.
  	 * @returns {Object} Returns the stack cache instance.
  	 */
  	function stackSet(key, value) {
  	  var cache = this.__data__;
  	  if (cache instanceof ListCache) {
  	    var pairs = cache.__data__;
  	    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
  	      pairs.push([key, value]);
  	      return this;
  	    }
  	    cache = this.__data__ = new MapCache(pairs);
  	  }
  	  cache.set(key, value);
  	  return this;
  	}
  	
  	// Add methods to `Stack`.
  	Stack.prototype.clear = stackClear;
  	Stack.prototype['delete'] = stackDelete;
  	Stack.prototype.get = stackGet;
  	Stack.prototype.has = stackHas;
  	Stack.prototype.set = stackSet;
  	
  	/**
  	 * Creates an array of the enumerable property names of the array-like `value`.
  	 *
  	 * @private
  	 * @param {*} value The value to query.
  	 * @param {boolean} inherited Specify returning inherited property names.
  	 * @returns {Array} Returns the array of property names.
  	 */
  	function arrayLikeKeys(value, inherited) {
  	  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
  	  // Safari 9 makes `arguments.length` enumerable in strict mode.
  	  var result = (isArray(value) || isArguments(value))
  	    ? baseTimes(value.length, String)
  	    : [];
  	
  	  var length = result.length,
  	      skipIndexes = !!length;
  	
  	  for (var key in value) {
  	    if ((inherited || hasOwnProperty.call(value, key)) &&
  	        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {
  	      result.push(key);
  	    }
  	  }
  	  return result;
  	}
  	
  	/**
  	 * Assigns `value` to `key` of `object` if the existing value is not equivalent
  	 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
  	 * for equality comparisons.
  	 *
  	 * @private
  	 * @param {Object} object The object to modify.
  	 * @param {string} key The key of the property to assign.
  	 * @param {*} value The value to assign.
  	 */
  	function assignValue(object, key, value) {
  	  var objValue = object[key];
  	  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
  	      (value === undefined && !(key in object))) {
  	    object[key] = value;
  	  }
  	}
  	
  	/**
  	 * Gets the index at which the `key` is found in `array` of key-value pairs.
  	 *
  	 * @private
  	 * @param {Array} array The array to inspect.
  	 * @param {*} key The key to search for.
  	 * @returns {number} Returns the index of the matched value, else `-1`.
  	 */
  	function assocIndexOf(array, key) {
  	  var length = array.length;
  	  while (length--) {
  	    if (eq(array[length][0], key)) {
  	      return length;
  	    }
  	  }
  	  return -1;
  	}
  	
  	/**
  	 * The base implementation of `_.assign` without support for multiple sources
  	 * or `customizer` functions.
  	 *
  	 * @private
  	 * @param {Object} object The destination object.
  	 * @param {Object} source The source object.
  	 * @returns {Object} Returns `object`.
  	 */
  	function baseAssign(object, source) {
  	  return object && copyObject(source, keys(source), object);
  	}
  	
  	/**
  	 * The base implementation of `_.clone` and `_.cloneDeep` which tracks
  	 * traversed objects.
  	 *
  	 * @private
  	 * @param {*} value The value to clone.
  	 * @param {boolean} [isDeep] Specify a deep clone.
  	 * @param {boolean} [isFull] Specify a clone including symbols.
  	 * @param {Function} [customizer] The function to customize cloning.
  	 * @param {string} [key] The key of `value`.
  	 * @param {Object} [object] The parent object of `value`.
  	 * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
  	 * @returns {*} Returns the cloned value.
  	 */
  	function baseClone(value, isDeep, isFull, customizer, key, object, stack) {
  	  var result;
  	  if (customizer) {
  	    result = object ? customizer(value, key, object, stack) : customizer(value);
  	  }
  	  if (result !== undefined) {
  	    return result;
  	  }
  	  if (!isObject(value)) {
  	    return value;
  	  }
  	  var isArr = isArray(value);
  	  if (isArr) {
  	    result = initCloneArray(value);
  	    if (!isDeep) {
  	      return copyArray(value, result);
  	    }
  	  } else {
  	    var tag = getTag(value),
  	        isFunc = tag == funcTag || tag == genTag;
  	
  	    if (isBuffer(value)) {
  	      return cloneBuffer(value, isDeep);
  	    }
  	    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
  	      if (isHostObject(value)) {
  	        return object ? value : {};
  	      }
  	      result = initCloneObject(isFunc ? {} : value);
  	      if (!isDeep) {
  	        return copySymbols(value, baseAssign(result, value));
  	      }
  	    } else {
  	      if (!cloneableTags[tag]) {
  	        return object ? value : {};
  	      }
  	      result = initCloneByTag(value, tag, baseClone, isDeep);
  	    }
  	  }
  	  // Check for circular references and return its corresponding clone.
  	  stack || (stack = new Stack);
  	  var stacked = stack.get(value);
  	  if (stacked) {
  	    return stacked;
  	  }
  	  stack.set(value, result);
  	
  	  if (!isArr) {
  	    var props = isFull ? getAllKeys(value) : keys(value);
  	  }
  	  arrayEach(props || value, function(subValue, key) {
  	    if (props) {
  	      key = subValue;
  	      subValue = value[key];
  	    }
  	    // Recursively populate clone (susceptible to call stack limits).
  	    assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));
  	  });
  	  return result;
  	}
  	
  	/**
  	 * The base implementation of `_.create` without support for assigning
  	 * properties to the created object.
  	 *
  	 * @private
  	 * @param {Object} prototype The object to inherit from.
  	 * @returns {Object} Returns the new object.
  	 */
  	function baseCreate(proto) {
  	  return isObject(proto) ? objectCreate(proto) : {};
  	}
  	
  	/**
  	 * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
  	 * `keysFunc` and `symbolsFunc` to get the enumerable property names and
  	 * symbols of `object`.
  	 *
  	 * @private
  	 * @param {Object} object The object to query.
  	 * @param {Function} keysFunc The function to get the keys of `object`.
  	 * @param {Function} symbolsFunc The function to get the symbols of `object`.
  	 * @returns {Array} Returns the array of property names and symbols.
  	 */
  	function baseGetAllKeys(object, keysFunc, symbolsFunc) {
  	  var result = keysFunc(object);
  	  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
  	}
  	
  	/**
  	 * The base implementation of `getTag`.
  	 *
  	 * @private
  	 * @param {*} value The value to query.
  	 * @returns {string} Returns the `toStringTag`.
  	 */
  	function baseGetTag(value) {
  	  return objectToString.call(value);
  	}
  	
  	/**
  	 * The base implementation of `_.isNative` without bad shim checks.
  	 *
  	 * @private
  	 * @param {*} value The value to check.
  	 * @returns {boolean} Returns `true` if `value` is a native function,
  	 *  else `false`.
  	 */
  	function baseIsNative(value) {
  	  if (!isObject(value) || isMasked(value)) {
  	    return false;
  	  }
  	  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
  	  return pattern.test(toSource(value));
  	}
  	
  	/**
  	 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
  	 *
  	 * @private
  	 * @param {Object} object The object to query.
  	 * @returns {Array} Returns the array of property names.
  	 */
  	function baseKeys(object) {
  	  if (!isPrototype(object)) {
  	    return nativeKeys(object);
  	  }
  	  var result = [];
  	  for (var key in Object(object)) {
  	    if (hasOwnProperty.call(object, key) && key != 'constructor') {
  	      result.push(key);
  	    }
  	  }
  	  return result;
  	}
  	
  	/**
  	 * Creates a clone of  `buffer`.
  	 *
  	 * @private
  	 * @param {Buffer} buffer The buffer to clone.
  	 * @param {boolean} [isDeep] Specify a deep clone.
  	 * @returns {Buffer} Returns the cloned buffer.
  	 */
  	function cloneBuffer(buffer, isDeep) {
  	  if (isDeep) {
  	    return buffer.slice();
  	  }
  	  var result = new buffer.constructor(buffer.length);
  	  buffer.copy(result);
  	  return result;
  	}
  	
  	/**
  	 * Creates a clone of `arrayBuffer`.
  	 *
  	 * @private
  	 * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
  	 * @returns {ArrayBuffer} Returns the cloned array buffer.
  	 */
  	function cloneArrayBuffer(arrayBuffer) {
  	  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
  	  new Uint8Array(result).set(new Uint8Array(arrayBuffer));
  	  return result;
  	}
  	
  	/**
  	 * Creates a clone of `dataView`.
  	 *
  	 * @private
  	 * @param {Object} dataView The data view to clone.
  	 * @param {boolean} [isDeep] Specify a deep clone.
  	 * @returns {Object} Returns the cloned data view.
  	 */
  	function cloneDataView(dataView, isDeep) {
  	  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
  	  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
  	}
  	
  	/**
  	 * Creates a clone of `map`.
  	 *
  	 * @private
  	 * @param {Object} map The map to clone.
  	 * @param {Function} cloneFunc The function to clone values.
  	 * @param {boolean} [isDeep] Specify a deep clone.
  	 * @returns {Object} Returns the cloned map.
  	 */
  	function cloneMap(map, isDeep, cloneFunc) {
  	  var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);
  	  return arrayReduce(array, addMapEntry, new map.constructor);
  	}
  	
  	/**
  	 * Creates a clone of `regexp`.
  	 *
  	 * @private
  	 * @param {Object} regexp The regexp to clone.
  	 * @returns {Object} Returns the cloned regexp.
  	 */
  	function cloneRegExp(regexp) {
  	  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
  	  result.lastIndex = regexp.lastIndex;
  	  return result;
  	}
  	
  	/**
  	 * Creates a clone of `set`.
  	 *
  	 * @private
  	 * @param {Object} set The set to clone.
  	 * @param {Function} cloneFunc The function to clone values.
  	 * @param {boolean} [isDeep] Specify a deep clone.
  	 * @returns {Object} Returns the cloned set.
  	 */
  	function cloneSet(set, isDeep, cloneFunc) {
  	  var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);
  	  return arrayReduce(array, addSetEntry, new set.constructor);
  	}
  	
  	/**
  	 * Creates a clone of the `symbol` object.
  	 *
  	 * @private
  	 * @param {Object} symbol The symbol object to clone.
  	 * @returns {Object} Returns the cloned symbol object.
  	 */
  	function cloneSymbol(symbol) {
  	  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
  	}
  	
  	/**
  	 * Creates a clone of `typedArray`.
  	 *
  	 * @private
  	 * @param {Object} typedArray The typed array to clone.
  	 * @param {boolean} [isDeep] Specify a deep clone.
  	 * @returns {Object} Returns the cloned typed array.
  	 */
  	function cloneTypedArray(typedArray, isDeep) {
  	  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
  	  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
  	}
  	
  	/**
  	 * Copies the values of `source` to `array`.
  	 *
  	 * @private
  	 * @param {Array} source The array to copy values from.
  	 * @param {Array} [array=[]] The array to copy values to.
  	 * @returns {Array} Returns `array`.
  	 */
  	function copyArray(source, array) {
  	  var index = -1,
  	      length = source.length;
  	
  	  array || (array = Array(length));
  	  while (++index < length) {
  	    array[index] = source[index];
  	  }
  	  return array;
  	}
  	
  	/**
  	 * Copies properties of `source` to `object`.
  	 *
  	 * @private
  	 * @param {Object} source The object to copy properties from.
  	 * @param {Array} props The property identifiers to copy.
  	 * @param {Object} [object={}] The object to copy properties to.
  	 * @param {Function} [customizer] The function to customize copied values.
  	 * @returns {Object} Returns `object`.
  	 */
  	function copyObject(source, props, object, customizer) {
  	  object || (object = {});
  	
  	  var index = -1,
  	      length = props.length;
  	
  	  while (++index < length) {
  	    var key = props[index];
  	
  	    var newValue = customizer
  	      ? customizer(object[key], source[key], key, object, source)
  	      : undefined;
  	
  	    assignValue(object, key, newValue === undefined ? source[key] : newValue);
  	  }
  	  return object;
  	}
  	
  	/**
  	 * Copies own symbol properties of `source` to `object`.
  	 *
  	 * @private
  	 * @param {Object} source The object to copy symbols from.
  	 * @param {Object} [object={}] The object to copy symbols to.
  	 * @returns {Object} Returns `object`.
  	 */
  	function copySymbols(source, object) {
  	  return copyObject(source, getSymbols(source), object);
  	}
  	
  	/**
  	 * Creates an array of own enumerable property names and symbols of `object`.
  	 *
  	 * @private
  	 * @param {Object} object The object to query.
  	 * @returns {Array} Returns the array of property names and symbols.
  	 */
  	function getAllKeys(object) {
  	  return baseGetAllKeys(object, keys, getSymbols);
  	}
  	
  	/**
  	 * Gets the data for `map`.
  	 *
  	 * @private
  	 * @param {Object} map The map to query.
  	 * @param {string} key The reference key.
  	 * @returns {*} Returns the map data.
  	 */
  	function getMapData(map, key) {
  	  var data = map.__data__;
  	  return isKeyable(key)
  	    ? data[typeof key == 'string' ? 'string' : 'hash']
  	    : data.map;
  	}
  	
  	/**
  	 * Gets the native function at `key` of `object`.
  	 *
  	 * @private
  	 * @param {Object} object The object to query.
  	 * @param {string} key The key of the method to get.
  	 * @returns {*} Returns the function if it's native, else `undefined`.
  	 */
  	function getNative(object, key) {
  	  var value = getValue(object, key);
  	  return baseIsNative(value) ? value : undefined;
  	}
  	
  	/**
  	 * Creates an array of the own enumerable symbol properties of `object`.
  	 *
  	 * @private
  	 * @param {Object} object The object to query.
  	 * @returns {Array} Returns the array of symbols.
  	 */
  	var getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;
  	
  	/**
  	 * Gets the `toStringTag` of `value`.
  	 *
  	 * @private
  	 * @param {*} value The value to query.
  	 * @returns {string} Returns the `toStringTag`.
  	 */
  	var getTag = baseGetTag;
  	
  	// Fallback for data views, maps, sets, and weak maps in IE 11,
  	// for data views in Edge < 14, and promises in Node.js.
  	if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
  	    (Map && getTag(new Map) != mapTag) ||
  	    (Promise && getTag(Promise.resolve()) != promiseTag) ||
  	    (Set && getTag(new Set) != setTag) ||
  	    (WeakMap && getTag(new WeakMap) != weakMapTag)) {
  	  getTag = function(value) {
  	    var result = objectToString.call(value),
  	        Ctor = result == objectTag ? value.constructor : undefined,
  	        ctorString = Ctor ? toSource(Ctor) : undefined;
  	
  	    if (ctorString) {
  	      switch (ctorString) {
  	        case dataViewCtorString: return dataViewTag;
  	        case mapCtorString: return mapTag;
  	        case promiseCtorString: return promiseTag;
  	        case setCtorString: return setTag;
  	        case weakMapCtorString: return weakMapTag;
  	      }
  	    }
  	    return result;
  	  };
  	}
  	
  	/**
  	 * Initializes an array clone.
  	 *
  	 * @private
  	 * @param {Array} array The array to clone.
  	 * @returns {Array} Returns the initialized clone.
  	 */
  	function initCloneArray(array) {
  	  var length = array.length,
  	      result = array.constructor(length);
  	
  	  // Add properties assigned by `RegExp#exec`.
  	  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
  	    result.index = array.index;
  	    result.input = array.input;
  	  }
  	  return result;
  	}
  	
  	/**
  	 * Initializes an object clone.
  	 *
  	 * @private
  	 * @param {Object} object The object to clone.
  	 * @returns {Object} Returns the initialized clone.
  	 */
  	function initCloneObject(object) {
  	  return (typeof object.constructor == 'function' && !isPrototype(object))
  	    ? baseCreate(getPrototype(object))
  	    : {};
  	}
  	
  	/**
  	 * Initializes an object clone based on its `toStringTag`.
  	 *
  	 * **Note:** This function only supports cloning values with tags of
  	 * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
  	 *
  	 * @private
  	 * @param {Object} object The object to clone.
  	 * @param {string} tag The `toStringTag` of the object to clone.
  	 * @param {Function} cloneFunc The function to clone values.
  	 * @param {boolean} [isDeep] Specify a deep clone.
  	 * @returns {Object} Returns the initialized clone.
  	 */
  	function initCloneByTag(object, tag, cloneFunc, isDeep) {
  	  var Ctor = object.constructor;
  	  switch (tag) {
  	    case arrayBufferTag:
  	      return cloneArrayBuffer(object);
  	
  	    case boolTag:
  	    case dateTag:
  	      return new Ctor(+object);
  	
  	    case dataViewTag:
  	      return cloneDataView(object, isDeep);
  	
  	    case float32Tag: case float64Tag:
  	    case int8Tag: case int16Tag: case int32Tag:
  	    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
  	      return cloneTypedArray(object, isDeep);
  	
  	    case mapTag:
  	      return cloneMap(object, isDeep, cloneFunc);
  	
  	    case numberTag:
  	    case stringTag:
  	      return new Ctor(object);
  	
  	    case regexpTag:
  	      return cloneRegExp(object);
  	
  	    case setTag:
  	      return cloneSet(object, isDeep, cloneFunc);
  	
  	    case symbolTag:
  	      return cloneSymbol(object);
  	  }
  	}
  	
  	/**
  	 * Checks if `value` is a valid array-like index.
  	 *
  	 * @private
  	 * @param {*} value The value to check.
  	 * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
  	 * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
  	 */
  	function isIndex(value, length) {
  	  length = length == null ? MAX_SAFE_INTEGER : length;
  	  return !!length &&
  	    (typeof value == 'number' || reIsUint.test(value)) &&
  	    (value > -1 && value % 1 == 0 && value < length);
  	}
  	
  	/**
  	 * Checks if `value` is suitable for use as unique object key.
  	 *
  	 * @private
  	 * @param {*} value The value to check.
  	 * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
  	 */
  	function isKeyable(value) {
  	  var type = typeof value;
  	  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
  	    ? (value !== '__proto__')
  	    : (value === null);
  	}
  	
  	/**
  	 * Checks if `func` has its source masked.
  	 *
  	 * @private
  	 * @param {Function} func The function to check.
  	 * @returns {boolean} Returns `true` if `func` is masked, else `false`.
  	 */
  	function isMasked(func) {
  	  return !!maskSrcKey && (maskSrcKey in func);
  	}
  	
  	/**
  	 * Checks if `value` is likely a prototype object.
  	 *
  	 * @private
  	 * @param {*} value The value to check.
  	 * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
  	 */
  	function isPrototype(value) {
  	  var Ctor = value && value.constructor,
  	      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
  	
  	  return value === proto;
  	}
  	
  	/**
  	 * Converts `func` to its source code.
  	 *
  	 * @private
  	 * @param {Function} func The function to process.
  	 * @returns {string} Returns the source code.
  	 */
  	function toSource(func) {
  	  if (func != null) {
  	    try {
  	      return funcToString.call(func);
  	    } catch (e) {}
  	    try {
  	      return (func + '');
  	    } catch (e) {}
  	  }
  	  return '';
  	}
  	
  	/**
  	 * Creates a shallow clone of `value`.
  	 *
  	 * **Note:** This method is loosely based on the
  	 * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
  	 * and supports cloning arrays, array buffers, booleans, date objects, maps,
  	 * numbers, `Object` objects, regexes, sets, strings, symbols, and typed
  	 * arrays. The own enumerable properties of `arguments` objects are cloned
  	 * as plain objects. An empty object is returned for uncloneable values such
  	 * as error objects, functions, DOM nodes, and WeakMaps.
  	 *
  	 * @static
  	 * @memberOf _
  	 * @since 0.1.0
  	 * @category Lang
  	 * @param {*} value The value to clone.
  	 * @returns {*} Returns the cloned value.
  	 * @see _.cloneDeep
  	 * @example
  	 *
  	 * var objects = [{ 'a': 1 }, { 'b': 2 }];
  	 *
  	 * var shallow = _.clone(objects);
  	 * console.log(shallow[0] === objects[0]);
  	 * // => true
  	 */
  	function clone(value) {
  	  return baseClone(value, false, true);
  	}
  	
  	/**
  	 * Performs a
  	 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
  	 * comparison between two values to determine if they are equivalent.
  	 *
  	 * @static
  	 * @memberOf _
  	 * @since 4.0.0
  	 * @category Lang
  	 * @param {*} value The value to compare.
  	 * @param {*} other The other value to compare.
  	 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
  	 * @example
  	 *
  	 * var object = { 'a': 1 };
  	 * var other = { 'a': 1 };
  	 *
  	 * _.eq(object, object);
  	 * // => true
  	 *
  	 * _.eq(object, other);
  	 * // => false
  	 *
  	 * _.eq('a', 'a');
  	 * // => true
  	 *
  	 * _.eq('a', Object('a'));
  	 * // => false
  	 *
  	 * _.eq(NaN, NaN);
  	 * // => true
  	 */
  	function eq(value, other) {
  	  return value === other || (value !== value && other !== other);
  	}
  	
  	/**
  	 * Checks if `value` is likely an `arguments` object.
  	 *
  	 * @static
  	 * @memberOf _
  	 * @since 0.1.0
  	 * @category Lang
  	 * @param {*} value The value to check.
  	 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
  	 *  else `false`.
  	 * @example
  	 *
  	 * _.isArguments(function() { return arguments; }());
  	 * // => true
  	 *
  	 * _.isArguments([1, 2, 3]);
  	 * // => false
  	 */
  	function isArguments(value) {
  	  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
  	  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&
  	    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);
  	}
  	
  	/**
  	 * Checks if `value` is classified as an `Array` object.
  	 *
  	 * @static
  	 * @memberOf _
  	 * @since 0.1.0
  	 * @category Lang
  	 * @param {*} value The value to check.
  	 * @returns {boolean} Returns `true` if `value` is an array, else `false`.
  	 * @example
  	 *
  	 * _.isArray([1, 2, 3]);
  	 * // => true
  	 *
  	 * _.isArray(document.body.children);
  	 * // => false
  	 *
  	 * _.isArray('abc');
  	 * // => false
  	 *
  	 * _.isArray(_.noop);
  	 * // => false
  	 */
  	var isArray = Array.isArray;
  	
  	/**
  	 * Checks if `value` is array-like. A value is considered array-like if it's
  	 * not a function and has a `value.length` that's an integer greater than or
  	 * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
  	 *
  	 * @static
  	 * @memberOf _
  	 * @since 4.0.0
  	 * @category Lang
  	 * @param {*} value The value to check.
  	 * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
  	 * @example
  	 *
  	 * _.isArrayLike([1, 2, 3]);
  	 * // => true
  	 *
  	 * _.isArrayLike(document.body.children);
  	 * // => true
  	 *
  	 * _.isArrayLike('abc');
  	 * // => true
  	 *
  	 * _.isArrayLike(_.noop);
  	 * // => false
  	 */
  	function isArrayLike(value) {
  	  return value != null && isLength(value.length) && !isFunction(value);
  	}
  	
  	/**
  	 * This method is like `_.isArrayLike` except that it also checks if `value`
  	 * is an object.
  	 *
  	 * @static
  	 * @memberOf _
  	 * @since 4.0.0
  	 * @category Lang
  	 * @param {*} value The value to check.
  	 * @returns {boolean} Returns `true` if `value` is an array-like object,
  	 *  else `false`.
  	 * @example
  	 *
  	 * _.isArrayLikeObject([1, 2, 3]);
  	 * // => true
  	 *
  	 * _.isArrayLikeObject(document.body.children);
  	 * // => true
  	 *
  	 * _.isArrayLikeObject('abc');
  	 * // => false
  	 *
  	 * _.isArrayLikeObject(_.noop);
  	 * // => false
  	 */
  	function isArrayLikeObject(value) {
  	  return isObjectLike(value) && isArrayLike(value);
  	}
  	
  	/**
  	 * Checks if `value` is a buffer.
  	 *
  	 * @static
  	 * @memberOf _
  	 * @since 4.3.0
  	 * @category Lang
  	 * @param {*} value The value to check.
  	 * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
  	 * @example
  	 *
  	 * _.isBuffer(new Buffer(2));
  	 * // => true
  	 *
  	 * _.isBuffer(new Uint8Array(2));
  	 * // => false
  	 */
  	var isBuffer = nativeIsBuffer || stubFalse;
  	
  	/**
  	 * Checks if `value` is classified as a `Function` object.
  	 *
  	 * @static
  	 * @memberOf _
  	 * @since 0.1.0
  	 * @category Lang
  	 * @param {*} value The value to check.
  	 * @returns {boolean} Returns `true` if `value` is a function, else `false`.
  	 * @example
  	 *
  	 * _.isFunction(_);
  	 * // => true
  	 *
  	 * _.isFunction(/abc/);
  	 * // => false
  	 */
  	function isFunction(value) {
  	  // The use of `Object#toString` avoids issues with the `typeof` operator
  	  // in Safari 8-9 which returns 'object' for typed array and other constructors.
  	  var tag = isObject(value) ? objectToString.call(value) : '';
  	  return tag == funcTag || tag == genTag;
  	}
  	
  	/**
  	 * Checks if `value` is a valid array-like length.
  	 *
  	 * **Note:** This method is loosely based on
  	 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
  	 *
  	 * @static
  	 * @memberOf _
  	 * @since 4.0.0
  	 * @category Lang
  	 * @param {*} value The value to check.
  	 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
  	 * @example
  	 *
  	 * _.isLength(3);
  	 * // => true
  	 *
  	 * _.isLength(Number.MIN_VALUE);
  	 * // => false
  	 *
  	 * _.isLength(Infinity);
  	 * // => false
  	 *
  	 * _.isLength('3');
  	 * // => false
  	 */
  	function isLength(value) {
  	  return typeof value == 'number' &&
  	    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
  	}
  	
  	/**
  	 * Checks if `value` is the
  	 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
  	 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
  	 *
  	 * @static
  	 * @memberOf _
  	 * @since 0.1.0
  	 * @category Lang
  	 * @param {*} value The value to check.
  	 * @returns {boolean} Returns `true` if `value` is an object, else `false`.
  	 * @example
  	 *
  	 * _.isObject({});
  	 * // => true
  	 *
  	 * _.isObject([1, 2, 3]);
  	 * // => true
  	 *
  	 * _.isObject(_.noop);
  	 * // => true
  	 *
  	 * _.isObject(null);
  	 * // => false
  	 */
  	function isObject(value) {
  	  var type = typeof value;
  	  return !!value && (type == 'object' || type == 'function');
  	}
  	
  	/**
  	 * Checks if `value` is object-like. A value is object-like if it's not `null`
  	 * and has a `typeof` result of "object".
  	 *
  	 * @static
  	 * @memberOf _
  	 * @since 4.0.0
  	 * @category Lang
  	 * @param {*} value The value to check.
  	 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
  	 * @example
  	 *
  	 * _.isObjectLike({});
  	 * // => true
  	 *
  	 * _.isObjectLike([1, 2, 3]);
  	 * // => true
  	 *
  	 * _.isObjectLike(_.noop);
  	 * // => false
  	 *
  	 * _.isObjectLike(null);
  	 * // => false
  	 */
  	function isObjectLike(value) {
  	  return !!value && typeof value == 'object';
  	}
  	
  	/**
  	 * Creates an array of the own enumerable property names of `object`.
  	 *
  	 * **Note:** Non-object values are coerced to objects. See the
  	 * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
  	 * for more details.
  	 *
  	 * @static
  	 * @since 0.1.0
  	 * @memberOf _
  	 * @category Object
  	 * @param {Object} object The object to query.
  	 * @returns {Array} Returns the array of property names.
  	 * @example
  	 *
  	 * function Foo() {
  	 *   this.a = 1;
  	 *   this.b = 2;
  	 * }
  	 *
  	 * Foo.prototype.c = 3;
  	 *
  	 * _.keys(new Foo);
  	 * // => ['a', 'b'] (iteration order is not guaranteed)
  	 *
  	 * _.keys('hi');
  	 * // => ['0', '1']
  	 */
  	function keys(object) {
  	  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
  	}
  	
  	/**
  	 * This method returns a new empty array.
  	 *
  	 * @static
  	 * @memberOf _
  	 * @since 4.13.0
  	 * @category Util
  	 * @returns {Array} Returns the new empty array.
  	 * @example
  	 *
  	 * var arrays = _.times(2, _.stubArray);
  	 *
  	 * console.log(arrays);
  	 * // => [[], []]
  	 *
  	 * console.log(arrays[0] === arrays[1]);
  	 * // => false
  	 */
  	function stubArray() {
  	  return [];
  	}
  	
  	/**
  	 * This method returns `false`.
  	 *
  	 * @static
  	 * @memberOf _
  	 * @since 4.13.0
  	 * @category Util
  	 * @returns {boolean} Returns `false`.
  	 * @example
  	 *
  	 * _.times(2, _.stubFalse);
  	 * // => [false, false]
  	 */
  	function stubFalse() {
  	  return false;
  	}
  	
  	module.exports = clone;
  	
  	/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(30)(module)))
  
  /***/ }
  /******/ ])
  });
  ;
  
  /***/ }),
  
  /***/ "./node_modules/vue-loader/lib/component-normalizer.js":
  /***/ (function(module, exports) {
  
  /* globals __VUE_SSR_CONTEXT__ */
  
  // this module is a runtime utility for cleaner component module output and will
  // be included in the final webpack user bundle
  
  module.exports = function normalizeComponent (
    rawScriptExports,
    compiledTemplate,
    injectStyles,
    scopeId,
    moduleIdentifier /* server only */
  ) {
    var esModule
    var scriptExports = rawScriptExports = rawScriptExports || {}
  
    // ES6 modules interop
    var type = typeof rawScriptExports.default
    if (type === 'object' || type === 'function') {
      esModule = rawScriptExports
      scriptExports = rawScriptExports.default
    }
  
    // Vue.extend constructor export interop
    var options = typeof scriptExports === 'function'
      ? scriptExports.options
      : scriptExports
  
    // render functions
    if (compiledTemplate) {
      options.render = compiledTemplate.render
      options.staticRenderFns = compiledTemplate.staticRenderFns
    }
  
    // scopedId
    if (scopeId) {
      options._scopeId = scopeId
    }
  
    var hook
    if (moduleIdentifier) { // server build
      hook = function (context) {
        // 2.3 injection
        context =
          context || // cached call
          (this.$vnode && this.$vnode.ssrContext) || // stateful
          (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
        // 2.2 with runInNewContext: true
        if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
          context = __VUE_SSR_CONTEXT__
        }
        // inject component styles
        if (injectStyles) {
          injectStyles.call(this, context)
        }
        // register component module identifier for async chunk inferrence
        if (context && context._registeredComponents) {
          context._registeredComponents.add(moduleIdentifier)
        }
      }
      // used by ssr in case component is cached and beforeCreate
      // never gets called
      options._ssrRegister = hook
    } else if (injectStyles) {
      hook = injectStyles
    }
  
    if (hook) {
      var functional = options.functional
      var existing = functional
        ? options.render
        : options.beforeCreate
      if (!functional) {
        // inject component registration as beforeCreate hook
        options.beforeCreate = existing
          ? [].concat(existing, hook)
          : [hook]
      } else {
        // register for functioal component in vue file
        options.render = function renderWithStyleInjection (h, context) {
          hook.call(context)
          return existing(h, context)
        }
      }
    }
  
    return {
      esModule: esModule,
      exports: scriptExports,
      options: options
    }
  }
  
  
  /***/ }),
  
  /***/ "./node_modules/vue-loader/lib/template-compiler/index.js?{\"id\":\"data-v-2bfd347c\",\"hasScoped\":false}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./resources/assets/js/components/backend/ImageUpload.vue":
  /***/ (function(module, exports, __webpack_require__) {
  
  module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
    return _c('input', {
      attrs: {
        "type": "file",
        "accept": "image/*"
      },
      on: {
        "change": _vm.onChange
      }
    })
  },staticRenderFns: []}
  module.exports.render._withStripped = true
  if (false) {
    module.hot.accept()
    if (module.hot.data) {
       require("vue-hot-reload-api").rerender("data-v-2bfd347c", module.exports)
    }
  }
  
  /***/ }),
  
  /***/ "./node_modules/vue-loader/lib/template-compiler/index.js?{\"id\":\"data-v-3aa7f1d6\",\"hasScoped\":true}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./resources/assets/js/components/backend/AlbumUpload.vue":
  /***/ (function(module, exports, __webpack_require__) {
  
  module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
    return _c('div', {
      staticClass: "panel panel-default"
    }, [_vm._m(0), _vm._v(" "), _c('div', {
      staticClass: "panel-body"
    }, [_c('vue-clip', {
      attrs: {
        "options": _vm.options,
        "on-added-file": _vm.fileAdded,
        "on-sending": _vm.sending,
        "on-queue-complete": _vm.queueComplete
      }
    }, [_c('template', {
      slot: "clip-uploader-action"
    }, [_c('div', [_c('div', {
      staticClass: "dz-message"
    }, [_c('div', {
      staticClass: "upload-drop-zone",
      attrs: {
        "id": "drop-zone"
      }
    }, [_vm._v(" Drag and drop audio files here ")])])])]), _vm._v(" "), _c('br')], 2), _vm._v(" "), _c('div', {
      staticClass: "list-group"
    }, [(_vm.files.length) ? _c('h4', {
      staticClass: "list-group-item active"
    }, [_vm._v("Upload Status")]) : _vm._e(), _vm._v(" "), _c('br'), _vm._v(" "), _vm._l((_vm.files), function(file) {
      return _c('div', [_c('div', {
        staticClass: "js-upload-finished",
        attrs: {
          "id": file.name
        }
      }, [_c('li', {
        staticClass: "list-group-item"
      }, [_c('h4', {
        staticClass: "list-group-item-heading"
      }, [_c('strong', [_vm._v("File Name: ")]), _vm._v(" " + _vm._s(file.name) + "\r\n\t\t\t\t            "), (file.status == 'success') ? _c('div', {
        staticClass: "box-tools pull-right"
      }, [_vm._m(1, true)]) : (file.status == 'error') ? _c('div', {
        staticClass: "box-tools pull-right"
      }, [_vm._m(2, true)]) : (file.status == 'added' && file.progress) ? _c('div', {
        staticClass: "box-tools pull-right"
      }, [_vm._m(3, true)]) : _c('div', {
        staticClass: "box-tools pull-right"
      }, [_vm._m(4, true)])])]), _vm._v(" "), _c('li', {
        staticClass: "list-group-item"
      }, [_c('p', {
        staticClass: "list-group-item-text"
      }), (file.status == 'added') ? _c('div', {
        staticClass: "progress"
      }, [_c('div', {
        staticClass: "progress-bar progress-bar-striped",
        class: _vm.progressClassObject(file.progress),
        style: ({
          width: file.progress + '%'
        }),
        attrs: {
          "role": "progressbar",
          "aria-valuenow": file.progress,
          "aria-valuemin": "0",
          "aria-valuemax": "100"
        }
      }, [_c('span', {
        staticClass: "sr-only"
      }, [_vm._v(_vm._s(file.progress + '% Complete'))])])]) : (file.xhrResponse.statusCode == 201) ? _c('div', {
        staticClass: "alert alert-success"
      }, [_c('p', [_c('strong', [_vm._v(_vm._s(file.xhrResponse.responseText))])])]) : (file.xhrResponse.statusCode == 508) ? _c('div', {
        staticClass: "alert alert-danger"
      }, [_c('p', {
        staticClass: "strong"
      }, [_vm._v(_vm._s(file.xhrResponse.responseText))])]) : (file.xhrResponse.statusCode == 500 || file.status == 'error') ? _c('div', {
        staticClass: "alert alert-danger"
      }, [_c('p', {
        staticClass: "strong"
      }, [_vm._v("Something wrong happened!")])]) : _c('div', {
        staticClass: "alert alert-warning"
      }, [_c('p', {
        staticClass: "strong"
      }, [_vm._v("File Uploaded, some undetected error might have occured")])]), _vm._v(" "), _c('p'), _vm._v(" "), _c('h4', {
        staticClass: "list-group-item-heading"
      }, [_c('strong', [_vm._v("Progress: ")]), _vm._v(" " + _vm._s(parseInt(file.progress) + " % Complete") + "\r\n\t\t\t\t\t\t")]), _vm._v(" "), _c('h4', {
        staticClass: "list-group-item-heading"
      }, [_c('strong', [_vm._v("Size: ")]), _vm._v(" " + _vm._s(file.size + " MB") + "\r\n\t\t\t\t\t\t")]), _vm._v(" "), _c('h4', {
        staticClass: "list-group-item-heading"
      }, [_c('strong', [_vm._v("Status: ")]), _vm._v(" "), _c('span', {
        staticClass: "label",
        class: _vm.statusClassObject(file.status)
      }, [_vm._v(_vm._s(file.status))])])]), _c('br')])])
    }), _vm._v(" "), (_vm.reload) ? _c('div', {
      staticClass: "btn btn-success btn-lg",
      on: {
        "click": _vm.reloadPage
      }
    }, [_c('strong', [_vm._v("Reload")])]) : _vm._e()], 2)], 1)])
  },staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
    return _c('div', {
      staticClass: "panel-heading"
    }, [_c('strong', [_vm._v("Upload Tracks")])])
  },function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
    return _c('p', {
      staticClass: "text-success"
    }, [_c('span', {
      staticClass: "fa fa-check-square-o"
    }, [_vm._v(" Successfully Uploaded!")])])
  },function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
    return _c('p', {
      staticClass: "text-danger"
    }, [_c('span', {
      staticClass: "fa fa-exclamation-triangle"
    }, [_vm._v(" Something went wrong!")])])
  },function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
    return _c('p', {
      staticClass: "text-warning"
    }, [_c('span', {
      staticClass: "fa fa-hourglass-half"
    }, [_vm._v(" Processing...")])])
  },function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
    return _c('p', {
      staticClass: "text-info"
    }, [_c('span', {
      staticClass: "fa fa-hourglass-o"
    }, [_vm._v(" Waiting...")])])
  }]}
  module.exports.render._withStripped = true
  if (false) {
    module.hot.accept()
    if (module.hot.data) {
       require("vue-hot-reload-api").rerender("data-v-3aa7f1d6", module.exports)
    }
  }
  
  /***/ }),
  
  /***/ "./node_modules/vue-multiselect/dist/vue-multiselect.min.js":
  /***/ (function(module, exports, __webpack_require__) {
  
  !function(t,e){ true?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.VueMultiselect=e():t.VueMultiselect=e()}(this,function(){return function(t){function e(n){if(i[n])return i[n].exports;var s=i[n]={i:n,l:!1,exports:{}};return t[n].call(s.exports,s,s.exports,e),s.l=!0,s.exports}var i={};return e.m=t,e.c=i,e.i=function(t){return t},e.d=function(t,i,n){e.o(t,i)||Object.defineProperty(t,i,{configurable:!1,enumerable:!0,get:n})},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,"a",i),i},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/",e(e.s=4)}([function(t,e,i){"use strict";function n(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function s(t){return 0!==t&&(!(!Array.isArray(t)||0!==t.length)||!t)}function l(t,e){return void 0===t&&(t="undefined"),null===t&&(t="null"),!1===t&&(t="false"),-1!==t.toString().toLowerCase().indexOf(e.trim())}function o(t,e,i,n){return t.filter(function(t){return l(n(t,i),e)})}function r(t){return t.filter(function(t){return!t.$isLabel})}function a(t,e){return function(i){return i.reduce(function(i,n){return n[t]&&n[t].length?(i.push({$groupLabel:n[e],$isLabel:!0}),i.concat(n[t])):i},[])}}function u(t,e,i,s,l){return function(r){return r.map(function(r){var a;if(!r[i])return console.warn("Options passed to vue-multiselect do not contain groups, despite the config."),[];var u=o(r[i],t,e,l);return u.length?(a={},n(a,s,r[s]),n(a,i,u),a):[]})}}Object.defineProperty(e,"__esModule",{value:!0});var c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},h=i(2),p=function(t){return t&&t.__esModule?t:{default:t}}(h),d=function(){for(var t=arguments.length,e=Array(t),i=0;i<t;i++)e[i]=arguments[i];return function(t){return e.reduce(function(t,e){return e(t)},t)}};e.default={data:function(){return{search:"",isOpen:!1,prefferedOpenDirection:"below",optimizedHeight:this.maxHeight,internalValue:this.value||0===this.value?(0,p.default)(Array.isArray(this.value)?this.value:[this.value]):[]}},props:{internalSearch:{type:Boolean,default:!0},options:{type:Array,required:!0},multiple:{type:Boolean,default:!1},value:{type:null,default:function(){return[]}},trackBy:{type:String},label:{type:String},searchable:{type:Boolean,default:!0},clearOnSelect:{type:Boolean,default:!0},hideSelected:{type:Boolean,default:!1},placeholder:{type:String,default:"Select option"},allowEmpty:{type:Boolean,default:!0},resetAfter:{type:Boolean,default:!1},closeOnSelect:{type:Boolean,default:!0},customLabel:{type:Function,default:function(t,e){return s(t)?"":e?t[e]:t}},taggable:{type:Boolean,default:!1},tagPlaceholder:{type:String,default:"Press enter to create a tag"},max:{type:Number},id:{default:null},optionsLimit:{type:Number,default:1e3},groupValues:{type:String},groupLabel:{type:String},blockKeys:{type:Array,default:function(){return[]}},preserveSearch:{type:Boolean,default:!1}},mounted:function(){this.multiple||this.clearOnSelect||console.warn("[Vue-Multiselect warn]: ClearOnSelect and Multiple props can’t be both set to false.")},computed:{filteredOptions:function(){var t=this.search||"",e=t.toLowerCase(),i=this.options.concat();return this.internalSearch?(i=this.groupValues?this.filterAndFlat(i,e,this.label):o(i,e,this.label,this.customLabel),i=this.hideSelected?i.filter(this.isNotSelected):i):i=this.groupValues?a(this.groupValues,this.groupLabel)(i):i,this.taggable&&e.length&&!this.isExistingOption(e)&&i.unshift({isTag:!0,label:t}),i.slice(0,this.optionsLimit)},valueKeys:function(){var t=this;return this.trackBy?this.internalValue.map(function(e){return e[t.trackBy]}):this.internalValue},optionKeys:function(){var t=this;return(this.groupValues?this.flatAndStrip(this.options):this.options).map(function(e){return t.customLabel(e,t.label).toString().toLowerCase()})},currentOptionLabel:function(){return this.multiple?this.searchable?"":this.placeholder:this.internalValue[0]?this.getOptionLabel(this.internalValue[0]):this.searchable?"":this.placeholder}},watch:{internalValue:function(t,e){this.resetAfter&&this.internalValue.length&&(this.search="",this.internalValue=[])},search:function(){this.$emit("search-change",this.search,this.id)},value:function(t){this.internalValue=this.getInternalValue(t)}},methods:{getValue:function(){return this.multiple?(0,p.default)(this.internalValue):0===this.internalValue.length?null:(0,p.default)(this.internalValue[0])},getInternalValue:function(t){return null===t||void 0===t?[]:this.multiple?(0,p.default)(t):(0,p.default)([t])},filterAndFlat:function(t,e,i){return d(u(e,i,this.groupValues,this.groupLabel,this.customLabel),a(this.groupValues,this.groupLabel))(t)},flatAndStrip:function(t){return d(a(this.groupValues,this.groupLabel),r)(t)},updateSearch:function(t){this.search=t},isExistingOption:function(t){return!!this.options&&this.optionKeys.indexOf(t)>-1},isSelected:function(t){var e=this.trackBy?t[this.trackBy]:t;return this.valueKeys.indexOf(e)>-1},isNotSelected:function(t){return!this.isSelected(t)},getOptionLabel:function(t){return s(t)?"":t.isTag?t.label:t.$isLabel?t.$groupLabel:this.customLabel(t,this.label)||""},select:function(t,e){if(!(-1!==this.blockKeys.indexOf(e)||this.disabled||t.$isLabel||t.$isDisabled||this.max&&this.multiple&&this.internalValue.length===this.max)){if(t.isTag)this.$emit("tag",t.label,this.id),this.search="",this.closeOnSelect&&!this.multiple&&this.deactivate();else{if(this.isSelected(t))return void("Tab"!==e&&this.removeElement(t));this.multiple?this.internalValue.push(t):this.internalValue=[t],this.$emit("select",(0,p.default)(t),this.id),this.$emit("input",this.getValue(),this.id),this.clearOnSelect&&(this.search="")}this.closeOnSelect&&this.deactivate()}},removeElement:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!this.disabled){if(!this.allowEmpty&&this.internalValue.length<=1)return void this.deactivate();var i="object"===(void 0===t?"undefined":c(t))?this.valueKeys.indexOf(t[this.trackBy]):this.valueKeys.indexOf(t);this.internalValue.splice(i,1),this.$emit("remove",(0,p.default)(t),this.id),this.$emit("input",this.getValue(),this.id),this.closeOnSelect&&e&&this.deactivate()}},removeLastElement:function(){-1===this.blockKeys.indexOf("Delete")&&0===this.search.length&&Array.isArray(this.internalValue)&&this.removeElement(this.internalValue[this.internalValue.length-1],!1)},activate:function(){var t=this;this.isOpen||this.disabled||(this.adjustPosition(),this.groupValues&&0===this.pointer&&this.filteredOptions.length&&(this.pointer=1),this.isOpen=!0,this.searchable?(this.preserveSearch||(this.search=""),this.$nextTick(function(){return t.$refs.search.focus()})):this.$el.focus(),this.$emit("open",this.id))},deactivate:function(){this.isOpen&&(this.isOpen=!1,this.searchable?this.$refs.search.blur():this.$el.blur(),this.preserveSearch||(this.search=""),this.$emit("close",this.getValue(),this.id))},toggle:function(){this.isOpen?this.deactivate():this.activate()},adjustPosition:function(){if("undefined"!=typeof window){var t=this.$el.getBoundingClientRect().top,e=window.innerHeight-this.$el.getBoundingClientRect().bottom;e>this.maxHeight||e>t||"below"===this.openDirection||"bottom"===this.openDirection?(this.prefferedOpenDirection="below",this.optimizedHeight=Math.min(e,this.maxHeight)-40):(this.prefferedOpenDirection="above",this.optimizedHeight=Math.min(t,this.maxHeight)-40)}}}}},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={data:function(){return{pointer:0,visibleElements:this.maxHeight/this.optionHeight}},props:{showPointer:{type:Boolean,default:!0},optionHeight:{type:Number,default:40}},computed:{pointerPosition:function(){return this.pointer*this.optionHeight}},watch:{filteredOptions:function(){this.pointerAdjust()}},methods:{optionHighlight:function(t,e){return{"multiselect__option--highlight":t===this.pointer&&this.showPointer,"multiselect__option--selected":this.isSelected(e)}},addPointerElement:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Enter",e=t.key;this.filteredOptions.length>0&&this.select(this.filteredOptions[this.pointer],e),this.pointerReset()},pointerForward:function(){this.pointer<this.filteredOptions.length-1&&(this.pointer++,this.$refs.list.scrollTop<=this.pointerPosition-this.visibleElements*this.optionHeight&&(this.$refs.list.scrollTop=this.pointerPosition-(this.visibleElements-1)*this.optionHeight),this.filteredOptions[this.pointer].$isLabel&&this.pointerForward())},pointerBackward:function(){this.pointer>0?(this.pointer--,this.$refs.list.scrollTop>=this.pointerPosition&&(this.$refs.list.scrollTop=this.pointerPosition),this.filteredOptions[this.pointer].$isLabel&&this.pointerBackward()):this.filteredOptions[0].$isLabel&&this.pointerForward()},pointerReset:function(){this.closeOnSelect&&(this.pointer=0,this.$refs.list&&(this.$refs.list.scrollTop=0))},pointerAdjust:function(){this.pointer>=this.filteredOptions.length-1&&(this.pointer=this.filteredOptions.length?this.filteredOptions.length-1:0)},pointerSet:function(t){this.pointer=t}}}},function(t,e,i){"use strict";function n(t){if(Array.isArray(t))return t.map(n);if(t&&"object"===(void 0===t?"undefined":s(t))){for(var e={},i=Object.keys(t),l=0,o=i.length;l<o;l++){var r=i[l];e[r]=n(t[r])}return e}return t}Object.defineProperty(e,"__esModule",{value:!0});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};e.default=n},function(t,e,i){i(6);var n=i(7)(i(5),i(8),null,null);t.exports=n.exports},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0}),e.deepClone=e.pointerMixin=e.multiselectMixin=e.Multiselect=void 0;var s=i(3),l=n(s),o=i(0),r=n(o),a=i(1),u=n(a),c=i(2),h=n(c);e.default=l.default,e.Multiselect=l.default,e.multiselectMixin=r.default,e.pointerMixin=u.default,e.deepClone=h.default},function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var s=i(0),l=n(s),o=i(1),r=n(o);e.default={name:"vue-multiselect",mixins:[l.default,r.default],props:{name:{type:String,default:""},selectLabel:{type:String,default:"Press enter to select"},selectedLabel:{type:String,default:"Selected"},deselectLabel:{type:String,default:"Press enter to remove"},showLabels:{type:Boolean,default:!0},limit:{type:Number,default:99999},maxHeight:{type:Number,default:300},limitText:{type:Function,default:function(t){return"and "+t+" more"}},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},openDirection:{type:String,default:""},showNoResults:{type:Boolean,default:!0},tabindex:{type:Number,default:0}},computed:{visibleValue:function(){return this.multiple?this.internalValue.slice(0,this.limit):[]},deselectLabelText:function(){return this.showLabels?this.deselectLabel:""},selectLabelText:function(){return this.showLabels?this.selectLabel:""},selectedLabelText:function(){return this.showLabels?this.selectedLabel:""},inputStyle:function(){if(this.multiple&&this.value&&this.value.length)return this.isOpen?{width:"auto"}:{display:"none"}},contentStyle:function(){return this.options.length?{display:"inline-block"}:{display:"block"}},isAbove:function(){return"above"===this.openDirection||"top"===this.openDirection||"below"!==this.openDirection&&"bottom"!==this.openDirection&&"above"===this.prefferedOpenDirection}}}},function(t,e){},function(t,e){t.exports=function(t,e,i,n){var s,l=t=t||{},o=typeof t.default;"object"!==o&&"function"!==o||(s=t,l=t.default);var r="function"==typeof l?l.options:l;if(e&&(r.render=e.render,r.staticRenderFns=e.staticRenderFns),i&&(r._scopeId=i),n){var a=Object.create(r.computed||null);Object.keys(n).forEach(function(t){var e=n[t];a[t]=function(){return e}}),r.computed=a}return{esModule:s,exports:l,options:r}}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"multiselect",class:{"multiselect--active":t.isOpen,"multiselect--disabled":t.disabled,"multiselect--above":t.isAbove},attrs:{tabindex:t.tabindex},on:{focus:function(e){t.activate()},blur:function(e){!t.searchable&&t.deactivate()},keydown:[function(e){return"button"in e||!t._k(e.keyCode,"down",40)?e.target!==e.currentTarget?null:(e.preventDefault(),void t.pointerForward()):null},function(e){return"button"in e||!t._k(e.keyCode,"up",38)?e.target!==e.currentTarget?null:(e.preventDefault(),void t.pointerBackward()):null},function(e){return"button"in e||!t._k(e.keyCode,"enter",13)||!t._k(e.keyCode,"tab",9)?(e.stopPropagation(),e.target!==e.currentTarget?null:void t.addPointerElement(e)):null}],keyup:function(e){if(!("button"in e)&&t._k(e.keyCode,"esc",27))return null;t.deactivate()}}},[t._t("carret",[i("div",{staticClass:"multiselect__select",on:{mousedown:function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}}})]),t._v(" "),t._t("clear",null,{search:t.search}),t._v(" "),i("div",{ref:"tags",staticClass:"multiselect__tags"},[i("div",{directives:[{name:"show",rawName:"v-show",value:t.visibleValue.length>0,expression:"visibleValue.length > 0"}],staticClass:"multiselect__tags-wrap"},[t._l(t.visibleValue,function(e){return[t._t("tag",[i("span",{staticClass:"multiselect__tag"},[i("span",{domProps:{textContent:t._s(t.getOptionLabel(e))}}),t._v(" "),i("i",{staticClass:"multiselect__tag-icon",attrs:{"aria-hidden":"true",tabindex:"1"},on:{keydown:function(i){if(!("button"in i)&&t._k(i.keyCode,"enter",13))return null;i.preventDefault(),t.removeElement(e)},mousedown:function(i){i.preventDefault(),t.removeElement(e)}}})])],{option:e,search:t.search,remove:t.removeElement})]})],2),t._v(" "),t.internalValue&&t.internalValue.length>t.limit?[i("strong",{staticClass:"multiselect__strong",domProps:{textContent:t._s(t.limitText(t.internalValue.length-t.limit))}})]:t._e(),t._v(" "),i("transition",{attrs:{name:"multiselect__loading"}},[t._t("loading",[i("div",{directives:[{name:"show",rawName:"v-show",value:t.loading,expression:"loading"}],staticClass:"multiselect__spinner"})])],2),t._v(" "),t.searchable?i("input",{ref:"search",staticClass:"multiselect__input",style:t.inputStyle,attrs:{name:t.name,id:t.id,type:"text",autocomplete:"off",placeholder:t.placeholder,disabled:t.disabled},domProps:{value:t.isOpen?t.search:t.currentOptionLabel},on:{input:function(e){t.updateSearch(e.target.value)},focus:function(e){e.preventDefault(),t.activate()},blur:function(e){e.preventDefault(),t.deactivate()},keyup:function(e){if(!("button"in e)&&t._k(e.keyCode,"esc",27))return null;t.deactivate()},keydown:[function(e){if(!("button"in e)&&t._k(e.keyCode,"down",40))return null;e.preventDefault(),t.pointerForward()},function(e){if(!("button"in e)&&t._k(e.keyCode,"up",38))return null;e.preventDefault(),t.pointerBackward()},function(e){return"button"in e||!t._k(e.keyCode,"enter",13)?(e.preventDefault(),e.stopPropagation(),e.target!==e.currentTarget?null:void t.addPointerElement(e)):null},function(e){if(!("button"in e)&&t._k(e.keyCode,"delete",[8,46]))return null;e.stopPropagation(),t.removeLastElement()}]}}):t._e(),t._v(" "),t.searchable?t._e():i("span",{staticClass:"multiselect__single",domProps:{textContent:t._s(t.currentOptionLabel)}})],2),t._v(" "),i("transition",{attrs:{name:"multiselect"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:t.isOpen,expression:"isOpen"}],ref:"list",staticClass:"multiselect__content-wrapper",style:{maxHeight:t.optimizedHeight+"px"},on:{mousedown:function(t){t.preventDefault()}}},[i("ul",{staticClass:"multiselect__content",style:t.contentStyle},[t._t("beforeList"),t._v(" "),t.multiple&&t.max===t.internalValue.length?i("li",[i("span",{staticClass:"multiselect__option"},[t._t("maxElements",[t._v("Maximum of "+t._s(t.max)+" options selected. First remove a selected option to select another.")])],2)]):t._e(),t._v(" "),!t.max||t.internalValue.length<t.max?t._l(t.filteredOptions,function(e,n){return i("li",{key:n,staticClass:"multiselect__element"},[e&&(e.$isLabel||e.$isDisabled)?t._e():i("span",{staticClass:"multiselect__option",class:t.optionHighlight(n,e),attrs:{"data-select":e&&e.isTag?t.tagPlaceholder:t.selectLabelText,"data-selected":t.selectedLabelText,"data-deselect":t.deselectLabelText},on:{click:function(i){i.stopPropagation(),t.select(e)},mouseenter:function(e){if(e.target!==e.currentTarget)return null;t.pointerSet(n)}}},[t._t("option",[i("span",[t._v(t._s(t.getOptionLabel(e)))])],{option:e,search:t.search})],2),t._v(" "),e&&(e.$isLabel||e.$isDisabled)?i("span",{staticClass:"multiselect__option multiselect__option--disabled",class:t.optionHighlight(n,e)},[t._t("option",[i("span",[t._v(t._s(t.getOptionLabel(e)))])],{option:e,search:t.search})],2):t._e()])}):t._e(),t._v(" "),i("li",{directives:[{name:"show",rawName:"v-show",value:t.showNoResults&&0===t.filteredOptions.length&&t.search&&!t.loading,expression:"showNoResults && (filteredOptions.length === 0 && search && !loading)"}]},[i("span",{staticClass:"multiselect__option"},[t._t("noResult",[t._v("No elements found. Consider changing the search query.")])],2)]),t._v(" "),t._t("afterList")],2)])])],2)},staticRenderFns:[]}}])});
  
  /***/ }),
  
  /***/ "./node_modules/vue-style-loader/index.js!./node_modules/css-loader/index.js!./node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-3aa7f1d6\",\"scoped\":true,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./resources/assets/js/components/backend/AlbumUpload.vue":
  /***/ (function(module, exports, __webpack_require__) {
  
  // style-loader: Adds some css to the DOM by adding a <style> tag
  
  // load the styles
  var content = __webpack_require__("./node_modules/css-loader/index.js!./node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-3aa7f1d6\",\"scoped\":true,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./resources/assets/js/components/backend/AlbumUpload.vue");
  if(typeof content === 'string') content = [[module.i, content, '']];
  if(content.locals) module.exports = content.locals;
  // add the styles to the DOM
  var update = __webpack_require__("./node_modules/vue-style-loader/lib/addStylesClient.js")("0cc7f35f", content, false);
  // Hot Module Replacement
  if(false) {
   // When the styles change, update the <style> tags
   if(!content.locals) {
     module.hot.accept("!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-3aa7f1d6\",\"scoped\":true,\"hasInlineConfig\":true}!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./AlbumUpload.vue", function() {
       var newContent = require("!!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-3aa7f1d6\",\"scoped\":true,\"hasInlineConfig\":true}!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./AlbumUpload.vue");
       if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
       update(newContent);
     });
   }
   // When the module is disposed, remove the <style> tags
   module.hot.dispose(function() { update(); });
  }
  
  /***/ }),
  
  /***/ "./node_modules/vue-style-loader/lib/addStylesClient.js":
  /***/ (function(module, exports, __webpack_require__) {
  
  /*
    MIT License http://www.opensource.org/licenses/mit-license.php
    Author Tobias Koppers @sokra
    Modified by Evan You @yyx990803
  */
  
  var hasDocument = typeof document !== 'undefined'
  
  if (typeof DEBUG !== 'undefined' && DEBUG) {
    if (!hasDocument) {
      throw new Error(
      'vue-style-loader cannot be used in a non-browser environment. ' +
      "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
    ) }
  }
  
  var listToStyles = __webpack_require__("./node_modules/vue-style-loader/lib/listToStyles.js")
  
  /*
  type StyleObject = {
    id: number;
    parts: Array<StyleObjectPart>
  }
  
  type StyleObjectPart = {
    css: string;
    media: string;
    sourceMap: ?string
  }
  */
  
  var stylesInDom = {/*
    [id: number]: {
      id: number,
      refs: number,
      parts: Array<(obj?: StyleObjectPart) => void>
    }
  */}
  
  var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
  var singletonElement = null
  var singletonCounter = 0
  var isProduction = false
  var noop = function () {}
  
  // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
  // tags it will allow on a page
  var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
  
  module.exports = function (parentId, list, _isProduction) {
    isProduction = _isProduction
  
    var styles = listToStyles(parentId, list)
    addStylesToDom(styles)
  
    return function update (newList) {
      var mayRemove = []
      for (var i = 0; i < styles.length; i++) {
        var item = styles[i]
        var domStyle = stylesInDom[item.id]
        domStyle.refs--
        mayRemove.push(domStyle)
      }
      if (newList) {
        styles = listToStyles(parentId, newList)
        addStylesToDom(styles)
      } else {
        styles = []
      }
      for (var i = 0; i < mayRemove.length; i++) {
        var domStyle = mayRemove[i]
        if (domStyle.refs === 0) {
          for (var j = 0; j < domStyle.parts.length; j++) {
            domStyle.parts[j]()
          }
          delete stylesInDom[domStyle.id]
        }
      }
    }
  }
  
  function addStylesToDom (styles /* Array<StyleObject> */) {
    for (var i = 0; i < styles.length; i++) {
      var item = styles[i]
      var domStyle = stylesInDom[item.id]
      if (domStyle) {
        domStyle.refs++
        for (var j = 0; j < domStyle.parts.length; j++) {
          domStyle.parts[j](item.parts[j])
        }
        for (; j < item.parts.length; j++) {
          domStyle.parts.push(addStyle(item.parts[j]))
        }
        if (domStyle.parts.length > item.parts.length) {
          domStyle.parts.length = item.parts.length
        }
      } else {
        var parts = []
        for (var j = 0; j < item.parts.length; j++) {
          parts.push(addStyle(item.parts[j]))
        }
        stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
      }
    }
  }
  
  function createStyleElement () {
    var styleElement = document.createElement('style')
    styleElement.type = 'text/css'
    head.appendChild(styleElement)
    return styleElement
  }
  
  function addStyle (obj /* StyleObjectPart */) {
    var update, remove
    var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
  
    if (styleElement) {
      if (isProduction) {
        // has SSR styles and in production mode.
        // simply do nothing.
        return noop
      } else {
        // has SSR styles but in dev mode.
        // for some reason Chrome can't handle source map in server-rendered
        // style tags - source maps in <style> only works if the style tag is
        // created and inserted dynamically. So we remove the server rendered
        // styles and inject new ones.
        styleElement.parentNode.removeChild(styleElement)
      }
    }
  
    if (isOldIE) {
      // use singleton mode for IE9.
      var styleIndex = singletonCounter++
      styleElement = singletonElement || (singletonElement = createStyleElement())
      update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
      remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
    } else {
      // use multi-style-tag mode in all other cases
      styleElement = createStyleElement()
      update = applyToTag.bind(null, styleElement)
      remove = function () {
        styleElement.parentNode.removeChild(styleElement)
      }
    }
  
    update(obj)
  
    return function updateStyle (newObj /* StyleObjectPart */) {
      if (newObj) {
        if (newObj.css === obj.css &&
            newObj.media === obj.media &&
            newObj.sourceMap === obj.sourceMap) {
          return
        }
        update(obj = newObj)
      } else {
        remove()
      }
    }
  }
  
  var replaceText = (function () {
    var textStore = []
  
    return function (index, replacement) {
      textStore[index] = replacement
      return textStore.filter(Boolean).join('\n')
    }
  })()
  
  function applyToSingletonTag (styleElement, index, remove, obj) {
    var css = remove ? '' : obj.css
  
    if (styleElement.styleSheet) {
      styleElement.styleSheet.cssText = replaceText(index, css)
    } else {
      var cssNode = document.createTextNode(css)
      var childNodes = styleElement.childNodes
      if (childNodes[index]) styleElement.removeChild(childNodes[index])
      if (childNodes.length) {
        styleElement.insertBefore(cssNode, childNodes[index])
      } else {
        styleElement.appendChild(cssNode)
      }
    }
  }
  
  function applyToTag (styleElement, obj) {
    var css = obj.css
    var media = obj.media
    var sourceMap = obj.sourceMap
  
    if (media) {
      styleElement.setAttribute('media', media)
    }
  
    if (sourceMap) {
      // https://developer.chrome.com/devtools/docs/javascript-debugging
      // this makes source maps inside style tags work properly in Chrome
      css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
      // http://stackoverflow.com/a/26603875
      css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
    }
  
    if (styleElement.styleSheet) {
      styleElement.styleSheet.cssText = css
    } else {
      while (styleElement.firstChild) {
        styleElement.removeChild(styleElement.firstChild)
      }
      styleElement.appendChild(document.createTextNode(css))
    }
  }
  
  
  /***/ }),
  
  /***/ "./node_modules/vue-style-loader/lib/listToStyles.js":
  /***/ (function(module, exports) {
  
  /**
   * Translates the list format produced by css-loader into something
   * easier to manipulate.
   */
  module.exports = function listToStyles (parentId, list) {
    var styles = []
    var newStyles = {}
    for (var i = 0; i < list.length; i++) {
      var item = list[i]
      var id = item[0]
      var css = item[1]
      var media = item[2]
      var sourceMap = item[3]
      var part = {
        id: parentId + ':' + i,
        css: css,
        media: media,
        sourceMap: sourceMap
      }
      if (!newStyles[id]) {
        styles.push(newStyles[id] = { id: id, parts: [part] })
      } else {
        newStyles[id].parts.push(part)
      }
    }
    return styles
  }
  
  
  /***/ }),
  
  /***/ "./resources/assets/js/backend/album.js":
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_multiselect__ = __webpack_require__("./node_modules/vue-multiselect/dist/vue-multiselect.min.js");
  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_multiselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue_multiselect__);
  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components_backend_AlbumUpload__ = __webpack_require__("./resources/assets/js/components/backend/AlbumUpload.vue");
  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components_backend_AlbumUpload___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__components_backend_AlbumUpload__);
  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__components_backend_ImageUpload__ = __webpack_require__("./resources/assets/js/components/backend/ImageUpload.vue");
  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__components_backend_ImageUpload___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__components_backend_ImageUpload__);
  
  
  
  
  var app = new Vue({
    el: '#app',
    data: {
      album: {
        artists: []
      },
      artists: [],
  
      tabs: {
        tracksList: true,
        info: false,
        upload: false,
        edit: false
      }
    },
  
    methods: {
      addArtist: function addArtist(newArtist) {
        this.album.artists.push(newArtist);
        this.artists.push(newArtist);
      },
      toggleTabs: function toggleTabs(tab) {
        this.tabs.tracksList = tab == "tracksList" ? true : false;
        this.tabs.info = tab == "info" ? true : false;
        this.tabs.upload = tab == "upload" ? true : false;
        this.tabs.edit = tab == "edit" ? true : false;
      },
      onLoad: function onLoad(cover) {
        this.cover = cover.src;
  
        this.persist(cover.file);
      },
      persist: function persist(cover) {
        var data = new FormData();
  
        data.append('albumId', albumId);
        data.append('cover', cover);
  
        axios.post(storeCoverUrl, data).then(function () {
          return location.reload();
        });
      }
    },
    mounted: function mounted() {
      var _this = this;
  
      if (typeof artists != 'undefined') {
        _.filter(artists, function (artist) {
          _this.album.artists.push(artist.name);
        });
      }
    },
  
    computed: {
      isFormDirty: function isFormDirty() {
        var _this2 = this;
  
        return Object.keys(this.fields).some(function (key) {
          return _this2.fields[key].dirty;
        });
      },
      isFormInvalid: function isFormInvalid() {
        var _this3 = this;
  
        return Object.keys(this.fields).some(function (key) {
          return _this3.fields[key].invalid;
        });
      }
    },
    created: function created() {
      var _this4 = this;
  
      axios.get('/admin/music/artists').then(function (response) {
        _this4.artists = _.keysIn(response.data);
      });
    },
  
    components: {
      Multiselect: __WEBPACK_IMPORTED_MODULE_0_vue_multiselect___default.a, AlbumUpload: __WEBPACK_IMPORTED_MODULE_1__components_backend_AlbumUpload___default.a, ImageUpload: __WEBPACK_IMPORTED_MODULE_2__components_backend_ImageUpload___default.a
    }
  });
  
  /***/ }),
  
  /***/ "./resources/assets/js/components/backend/AlbumUpload.vue":
  /***/ (function(module, exports, __webpack_require__) {
  
  var disposed = false
  function injectStyle (ssrContext) {
    if (disposed) return
    __webpack_require__("./node_modules/vue-style-loader/index.js!./node_modules/css-loader/index.js!./node_modules/vue-loader/lib/style-compiler/index.js?{\"vue\":true,\"id\":\"data-v-3aa7f1d6\",\"scoped\":true,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./resources/assets/js/components/backend/AlbumUpload.vue")
  }
  var Component = __webpack_require__("./node_modules/vue-loader/lib/component-normalizer.js")(
    /* script */
    __webpack_require__("./node_modules/babel-loader/lib/index.js?{\"cacheDirectory\":true,\"presets\":[[\"env\",{\"modules\":false,\"targets\":{\"browsers\":[\"> 2%\"],\"uglify\":true}}]]}!./node_modules/vue-loader/lib/selector.js?type=script&index=0!./resources/assets/js/components/backend/AlbumUpload.vue"),
    /* template */
    __webpack_require__("./node_modules/vue-loader/lib/template-compiler/index.js?{\"id\":\"data-v-3aa7f1d6\",\"hasScoped\":true}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./resources/assets/js/components/backend/AlbumUpload.vue"),
    /* styles */
    injectStyle,
    /* scopeId */
    "data-v-3aa7f1d6",
    /* moduleIdentifier (server only) */
    null
  )
  Component.options.__file = "C:\\laragon\\www\\lulamusic\\resources\\assets\\js\\components\\backend\\AlbumUpload.vue"
  if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")}
  if (Component.options.functional) {console.error("[vue-loader] AlbumUpload.vue: functional components are not supported with templates, they should use render functions.")}
  
  /* hot reload */
  if (false) {(function () {
    var hotAPI = require("vue-hot-reload-api")
    hotAPI.install(require("vue"), false)
    if (!hotAPI.compatible) return
    module.hot.accept()
    if (!module.hot.data) {
      hotAPI.createRecord("data-v-3aa7f1d6", Component.options)
    } else {
      hotAPI.reload("data-v-3aa7f1d6", Component.options)
    }
    module.hot.dispose(function (data) {
      disposed = true
    })
  })()}
  
  module.exports = Component.exports
  
  
  /***/ }),
  
  /***/ "./resources/assets/js/components/backend/ImageUpload.vue":
  /***/ (function(module, exports, __webpack_require__) {
  
  var disposed = false
  var Component = __webpack_require__("./node_modules/vue-loader/lib/component-normalizer.js")(
    /* script */
    __webpack_require__("./node_modules/babel-loader/lib/index.js?{\"cacheDirectory\":true,\"presets\":[[\"env\",{\"modules\":false,\"targets\":{\"browsers\":[\"> 2%\"],\"uglify\":true}}]]}!./node_modules/vue-loader/lib/selector.js?type=script&index=0!./resources/assets/js/components/backend/ImageUpload.vue"),
    /* template */
    __webpack_require__("./node_modules/vue-loader/lib/template-compiler/index.js?{\"id\":\"data-v-2bfd347c\",\"hasScoped\":false}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./resources/assets/js/components/backend/ImageUpload.vue"),
    /* styles */
    null,
    /* scopeId */
    null,
    /* moduleIdentifier (server only) */
    null
  )
  Component.options.__file = "C:\\laragon\\www\\lulamusic\\resources\\assets\\js\\components\\backend\\ImageUpload.vue"
  if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key.substr(0, 2) !== "__"})) {console.error("named exports are not supported in *.vue files.")}
  if (Component.options.functional) {console.error("[vue-loader] ImageUpload.vue: functional components are not supported with templates, they should use render functions.")}
  
  /* hot reload */
  if (false) {(function () {
    var hotAPI = require("vue-hot-reload-api")
    hotAPI.install(require("vue"), false)
    if (!hotAPI.compatible) return
    module.hot.accept()
    if (!module.hot.data) {
      hotAPI.createRecord("data-v-2bfd347c", Component.options)
    } else {
      hotAPI.reload("data-v-2bfd347c", Component.options)
    }
    module.hot.dispose(function (data) {
      disposed = true
    })
  })()}
  
  module.exports = Component.exports
  
  
  /***/ }),
  
  /***/ 2:
  /***/ (function(module, exports, __webpack_require__) {
  
  module.exports = __webpack_require__("./resources/assets/js/backend/album.js");
  
  
  /***/ })
  
  /******/ });