From c067da502766f5f48f6727d5e4a6c5c6b1c8ce2d Mon Sep 17 00:00:00 2001
From: Alexander Elert <a.elert@inray.de>
Date: Mon, 10 Feb 2020 10:37:31 +0100
Subject: [PATCH 1/2] Fixed TypeScript definition for updateNode

---
 dist/sl-vue-tree.d.ts   |    2 +-
 dist/sl-vue-tree.js     |    2 +-
 dist/sl-vue-tree.js.map |    2 +-
 package-lock.json       | 2267 ++++++++++++++++++++-------------------
 src/sl-vue-tree.d.ts    |    2 +-
 5 files changed, 1140 insertions(+), 1135 deletions(-)

diff --git a/dist/sl-vue-tree.d.ts b/dist/sl-vue-tree.d.ts
index 7704f57..47be4a8 100644
--- a/dist/sl-vue-tree.d.ts
+++ b/dist/sl-vue-tree.d.ts
@@ -45,7 +45,7 @@ export default class SlVueTree<TDataType> extends Vue {
     getLastNode(): ISlTreeNode<TDataType>;
     getNextNode(path: number[], filter?: (node: ISlTreeNode<TDataType>) => boolean): ISlTreeNode<TDataType>;
     getPrevNode(path: number[], filter?: (node: ISlTreeNode<TDataType>) => boolean): ISlTreeNode<TDataType>;
-    updateNode(nodeToUpdate: ISlTreeNode<TDataType>, patch: Partial<ISlTreeNodeModel<TDataType>>): void;
+    updateNode(path: number[], patch: Partial<ISlTreeNodeModel<TDataType>>): void;
     getSelected(): ISlTreeNode<TDataType>[];
     traverse(cb: (node: ISlTreeNode<TDataType>, nodeModel: ISlTreeNodeModel<TDataType>, siblings: ISlTreeNodeModel<TDataType>[]) => boolean | void, nodeModels?: ISlTreeNodeModel<TDataType>[], parentPath?: number[]): ISlTreeNode<TDataType>[] | boolean;
     getNodeEl(path: number[]): HTMLElement;
diff --git a/dist/sl-vue-tree.js b/dist/sl-vue-tree.js
index 80f72e8..fd9ea1e 100644
--- a/dist/sl-vue-tree.js
+++ b/dist/sl-vue-tree.js
@@ -1,2 +1,2 @@
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SlVueTree=t():e.SlVueTree=t()}(window,function(){return function(e){var t={};function s(o){if(t[o])return t[o].exports;var i=t[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,s),i.l=!0,i.exports}return s.m=e,s.c=t,s.d=function(e,t,o){s.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:o})},s.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,"a",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p="",s(s.s=0)}([function(e,t,s){"use strict";s.r(t);var o={name:"sl-vue-tree",props:{value:{type:Array,default:()=>[]},edgeSize:{type:Number,default:3},showBranches:{type:Boolean,default:!1},level:{type:Number,default:0},parentInd:{type:Number},allowMultiselect:{type:Boolean,default:!0},allowToggleBranch:{type:Boolean,default:!0},multiselectKey:{type:[String,Array],default:function(){return["ctrlKey","metaKey"]},validator:function(e){let t=["ctrlKey","metaKey","altKey"],s=Array.isArray(e)?e:[e];return!!(s=s.filter(e=>-1!==t.indexOf(e))).length}},scrollAreaHeight:{type:Number,default:70},maxScrollSpeed:{type:Number,default:20}},data(){return{rootCursorPosition:null,scrollIntervalId:0,scrollSpeed:0,lastSelectedNode:null,mouseIsDown:!1,isDragging:!1,lastMousePos:{x:0,y:0},preventDrag:!1,currentValue:this.value}},mounted(){this.isRoot&&document.addEventListener("mouseup",this.onDocumentMouseupHandler)},beforeDestroy(){document.removeEventListener("mouseup",this.onDocumentMouseupHandler)},watch:{value:function(e){this.currentValue=e}},computed:{cursorPosition(){return this.isRoot?this.rootCursorPosition:this.getParent().cursorPosition},nodes(){if(this.isRoot){const e=this.copy(this.currentValue);return this.getNodes(e)}return this.getParent().nodes[this.parentInd].children},gaps(){const e=[];let t=this.level-1;for(this.showBranches||t++;t-- >0;)e.push(t);return e},isRoot(){return!this.level},selectionSize(){return this.getSelected().length},dragSize(){return this.getDraggable().length}},methods:{setCursorPosition(e){this.isRoot?this.rootCursorPosition=e:this.getParent().setCursorPosition(e)},getNodes(e,t=[],s=!0){return e.map((o,i)=>{const r=t.concat(i);return this.getNode(r,o,e,s)})},getNode(e,t=null,s=null,o=null){const i=e.slice(-1)[0];if(s=s||this.getNodeSiblings(this.currentValue,e),t=t||s&&s[i]||null,null==o&&(o=this.isVisible(e)),!t)return null;const r=void 0==t.isExpanded||!!t.isExpanded,n=void 0==t.isDraggable||!!t.isDraggable,l=void 0==t.isSelectable||!!t.isSelectable;return{title:t.title,isLeaf:!!t.isLeaf,children:t.children?this.getNodes(t.children,e,r):[],isSelected:!!t.isSelected,isExpanded:r,isVisible:o,isDraggable:n,isSelectable:l,data:void 0!==t.data?t.data:{},path:e,pathStr:JSON.stringify(e),level:e.length,ind:i,isFirstChild:0==i,isLastChild:i===s.length-1}},isVisible(e){if(e.length<2)return!0;let t=this.currentValue;for(let s=0;s<e.length-1;s++){let o=t[e[s]];if(!(void 0==o.isExpanded||!!o.isExpanded))return!1;t=o.children}return!0},emitInput(e){this.currentValue=e,this.getRoot().$emit("input",e)},emitSelect(e,t){this.getRoot().$emit("select",e,t)},emitBeforeDrop(e,t,s){this.getRoot().$emit("beforedrop",e,t,s)},emitDrop(e,t,s){this.getRoot().$emit("drop",e,t,s)},emitToggle(e,t){this.getRoot().$emit("toggle",e,t)},emitNodeClick(e,t){this.getRoot().$emit("nodeclick",e,t)},emitNodeDblclick(e,t){this.getRoot().$emit("nodedblclick",e,t)},emitNodeContextmenu(e,t){this.getRoot().$emit("nodecontextmenu",e,t)},onExternalDragoverHandler(e,t){t.preventDefault();const s=this.getRoot(),o=s.getCursorPositionFromCoords(t.clientX,t.clientY);s.setCursorPosition(o),s.$emit("externaldragover",o,t)},onExternalDropHandler(e,t){const s=this.getRoot(),o=s.getCursorPositionFromCoords(t.clientX,t.clientY);s.$emit("externaldrop",o,t),this.setCursorPosition(null)},select(e,t=!1,s=null){const o=Array.isArray(this.multiselectKey)?this.multiselectKey:[this.multiselectKey],i=s&&!!o.find(e=>s[e]);t=(i||t)&&this.allowMultiselect;const r=this.getNode(e);if(!r)return null;const n=this.copy(this.currentValue),l=this.allowMultiselect&&s&&s.shiftKey&&this.lastSelectedNode,a=[];let u=!1;return this.traverse((e,s)=>{l?(e.pathStr!==r.pathStr&&e.pathStr!==this.lastSelectedNode.pathStr||(s.isSelected=e.isSelectable,u=!u),u&&(s.isSelected=e.isSelectable)):e.pathStr===r.pathStr?s.isSelected=e.isSelectable:t||s.isSelected&&(s.isSelected=!1),s.isSelected&&a.push(e)},n),this.lastSelectedNode=r,this.emitInput(n),this.emitSelect(a,s),r},onMousemoveHandler(e){if(!this.isRoot)return void this.getRoot().onMousemoveHandler(e);if(this.preventDrag)return;const t=this.isDragging,s=this.isDragging||this.mouseIsDown&&(this.lastMousePos.x!==e.clientX||this.lastMousePos.y!==e.clientY),o=!1===t&&!0===s;if(this.lastMousePos={x:e.clientX,y:e.clientY},!s)return;const i=this.getRoot().$el,r=i.getBoundingClientRect(),n=this.$refs.dragInfo,l=e.clientY-r.top+i.scrollTop-(0|n.style.marginBottom),a=e.clientX-r.left;n.style.top=l+"px",n.style.left=a+"px";const u=this.getCursorPositionFromCoords(e.clientX,e.clientY),d=u.node,c=u.placement;if(o&&!d.isSelected&&this.select(d.path,!1,e),!this.getDraggable().length)return void(this.preventDrag=!0);this.isDragging=s,this.setCursorPosition({node:d,placement:c});const h=r.bottom-this.scrollAreaHeight,g=(e.clientY-h)/(r.bottom-h),p=r.top+this.scrollAreaHeight,f=(p-e.clientY)/(p-r.top);g>0?this.startScroll(g):f>0?this.startScroll(-f):this.stopScroll()},getCursorPositionFromCoords(e,t){const s=document.elementFromPoint(e,t),o=s.getAttribute("path")?s:this.getClosetElementWithPath(s);let i,r;if(o){if(!o)return;i=this.getNode(JSON.parse(o.getAttribute("path")));const e=o.offsetHeight,s=this.edgeSize,n=t-o.getBoundingClientRect().top;r=i.isLeaf?n>=e/2?"after":"before":n<=s?"before":n>=e-s?"after":"inside"}else{const e=this.getRoot().$el.getBoundingClientRect();t>e.top+e.height/2?(r="after",i=this.getLastNode()):(r="before",i=this.getFirstNode())}return{node:i,placement:r}},getClosetElementWithPath(e){return e?e.getAttribute("path")?e:this.getClosetElementWithPath(e.parentElement):null},onMouseleaveHandler(e){if(!this.isRoot||!this.isDragging)return;const t=this.getRoot().$el.getBoundingClientRect();e.clientY>=t.bottom?this.setCursorPosition({node:this.nodes.slice(-1)[0],placement:"after"}):e.clientY<t.top&&this.setCursorPosition({node:this.getFirstNode(),placement:"before"})},getNodeEl(e){this.getRoot().$el.querySelector(`[path="${JSON.stringify(e)}"]`)},getLastNode(){let e=null;return this.traverse(t=>{e=t}),e},getFirstNode(){return this.getNode([0])},getNextNode(e,t=null){let s=null;return this.traverse(o=>{if(!(this.comparePaths(o.path,e)<1))return!t||t(o)?(s=o,!1):void 0}),s},getPrevNode(e,t){let s=[];this.traverse(t=>{if(this.comparePaths(t.path,e)>=0)return!1;s.push(t)});let o=s.length;for(;o--;){const e=s[o];if(!t||t(e))return e}return null},comparePaths(e,t){for(let s=0;s<e.length;s++){if(void 0==t[s])return 1;if(e[s]>t[s])return 1;if(e[s]<t[s])return-1}return void 0==t[e.length]?0:-1},onNodeMousedownHandler(e,t){0===e.button&&(this.isRoot?this.mouseIsDown=!0:this.getRoot().onNodeMousedownHandler(e,t))},startScroll(e){const t=this.getRoot().$el;this.scrollSpeed!==e&&(this.scrollIntervalId&&this.stopScroll(),this.scrollSpeed=e,this.scrollIntervalId=setInterval(()=>{t.scrollTop+=this.maxScrollSpeed*e},20))},stopScroll(){clearInterval(this.scrollIntervalId),this.scrollIntervalId=0,this.scrollSpeed=0},onDocumentMouseupHandler(e){this.isDragging&&this.onNodeMouseupHandler(e)},onNodeMouseupHandler(e,t=null){if(0!==e.button)return;if(!this.isRoot)return void this.getRoot().onNodeMouseupHandler(e,t);if(this.mouseIsDown=!1,this.isDragging||!t||this.preventDrag||this.select(t.path,!1,e),this.preventDrag=!1,!this.cursorPosition)return void this.stopDrag();const s=this.getDraggable();for(let e of s){if(e.pathStr==this.cursorPosition.node.pathStr)return void this.stopDrag();if(this.checkNodeIsParent(e,this.cursorPosition.node))return void this.stopDrag()}const o=this.copy(this.currentValue),i=[];for(let e of s){const t=this.getNodeSiblings(o,e.path)[e.ind];i.push(t)}let r=!1;if(this.emitBeforeDrop(s,this.cursorPosition,()=>r=!0),r)return void this.stopDrag();const n=[];for(let e of i)n.push(this.copy(e)),e._markToDelete=!0;this.insertModels(this.cursorPosition,n,o),this.traverseModels((e,t,s)=>{e._markToDelete&&t.splice(s,1)},o),this.lastSelectedNode=null,this.emitInput(o),this.emitDrop(s,this.cursorPosition,e),this.stopDrag()},onToggleHandler(e,t){this.allowToggleBranch&&(this.updateNode(t.path,{isExpanded:!t.isExpanded}),this.emitToggle(t,e),e.stopPropagation())},stopDrag(){this.isDragging=!1,this.mouseIsDown=!1,this.setCursorPosition(null),this.stopScroll()},getParent(){return this.$parent},getRoot(){return this.isRoot?this:this.getParent().getRoot()},getNodeSiblings(e,t){return 1===t.length?e:this.getNodeSiblings(e[t[0]].children,t.slice(1))},updateNode(e,t){if(!this.isRoot)return void this.getParent().updateNode(e,t);const s=JSON.stringify(e),o=this.copy(this.currentValue);this.traverse((e,o)=>{e.pathStr===s&&Object.assign(o,t)},o),this.emitInput(o)},getSelected(){const e=[];return this.traverse(t=>{t.isSelected&&e.push(t)}),e},getDraggable(){const e=[];return this.traverse(t=>{t.isSelected&&t.isDraggable&&e.push(t)}),e},traverse(e,t=null,s=[]){t||(t=this.currentValue);let o=!1;const i=[];for(let r=0;r<t.length;r++){const n=t[r],l=s.concat(r),a=this.getNode(l,n,t);if(o=!1===e(a,n,t),i.push(a),o)break;if(n.children&&(o=!1===this.traverse(e,n.children,l)))break}return!o&&i},traverseModels(e,t){let s=t.length;for(;s--;){const o=t[s];o.children&&this.traverseModels(e,o.children),e(o,t,s)}return t},remove(e){const t=e.map(e=>JSON.stringify(e)),s=this.copy(this.currentValue);this.traverse((e,s,o)=>{for(const o of t)e.pathStr===o&&(s._markToDelete=!0)},s),this.traverseModels((e,t,s)=>{e._markToDelete&&t.splice(s,1)},s),this.emitInput(s)},insertModels(e,t,s){const o=e.node,i=this.getNodeSiblings(s,o.path),r=i[o.ind];if("inside"===e.placement)r.children=r.children||[],r.children.unshift(...t);else{const s="before"===e.placement?o.ind:o.ind+1;i.splice(s,0,...t)}},insert(e,t){const s=Array.isArray(t)?t:[t],o=this.copy(this.currentValue);this.insertModels(e,s,o),this.emitInput(o)},checkNodeIsParent(e,t){const s=t.path;return JSON.stringify(s.slice(0,e.path.length))==e.pathStr},copy:e=>JSON.parse(JSON.stringify(e))}},i=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"sl-vue-tree",class:{"sl-vue-tree-root":e.isRoot},on:{mousemove:e.onMousemoveHandler,mouseleave:e.onMouseleaveHandler,dragend:function(t){e.onDragendHandler(null,t)}}},[s("div",{ref:"nodes",staticClass:"sl-vue-tree-nodes-list"},[e._l(e.nodes,function(t,o){return s("div",{staticClass:"sl-vue-tree-node",class:{"sl-vue-tree-selected":t.isSelected}},[s("div",{staticClass:"sl-vue-tree-cursor sl-vue-tree-cursor_before",style:{visibility:e.cursorPosition&&e.cursorPosition.node.pathStr===t.pathStr&&"before"===e.cursorPosition.placement?"visible":"hidden"},on:{dragover:function(e){e.preventDefault()}}}),e._v(" "),s("div",{staticClass:"sl-vue-tree-node-item",class:{"sl-vue-tree-cursor-hover":e.cursorPosition&&e.cursorPosition.node.pathStr===t.pathStr,"sl-vue-tree-cursor-inside":e.cursorPosition&&"inside"===e.cursorPosition.placement&&e.cursorPosition.node.pathStr===t.pathStr,"sl-vue-tree-node-is-leaf":t.isLeaf,"sl-vue-tree-node-is-folder":!t.isLeaf},attrs:{path:t.pathStr},on:{mousedown:function(s){e.onNodeMousedownHandler(s,t)},mouseup:function(s){e.onNodeMouseupHandler(s,t)},contextmenu:function(s){e.emitNodeContextmenu(t,s)},dblclick:function(s){e.emitNodeDblclick(t,s)},click:function(s){e.emitNodeClick(t,s)},dragover:function(s){e.onExternalDragoverHandler(t,s)},drop:function(s){e.onExternalDropHandler(t,s)}}},[e._l(e.gaps,function(e){return s("div",{staticClass:"sl-vue-tree-gap"})}),e._v(" "),e.level&&e.showBranches?s("div",{staticClass:"sl-vue-tree-branch"},[e._t("branch",[t.isLastChild?e._e():s("span",[e._v("\n            "+e._s(String.fromCharCode(9500))+e._s(String.fromCharCode(9472))+" \n          ")]),e._v(" "),t.isLastChild?s("span",[e._v("\n            "+e._s(String.fromCharCode(9492))+e._s(String.fromCharCode(9472))+" \n          ")]):e._e()],{node:t})],2):e._e(),e._v(" "),s("div",{staticClass:"sl-vue-tree-title"},[t.isLeaf?e._e():s("span",{staticClass:"sl-vue-tree-toggle",on:{click:function(s){e.onToggleHandler(s,t)}}},[e._t("toggle",[s("span",[e._v("\n             "+e._s(t.isLeaf?"":t.isExpanded?"-":"+")+"\n            ")])],{node:t})],2),e._v(" "),e._t("title",[e._v(e._s(t.title))],{node:t}),e._v(" "),!t.isLeaf&&0==t.children.length&&t.isExpanded?e._t("empty-node",null,{node:t}):e._e()],2),e._v(" "),s("div",{staticClass:"sl-vue-tree-sidebar"},[e._t("sidebar",null,{node:t})],2)],2),e._v(" "),t.children&&t.children.length&&t.isExpanded?s("sl-vue-tree",{attrs:{value:t.children,level:t.level,parentInd:o,allowMultiselect:e.allowMultiselect,allowToggleBranch:e.allowToggleBranch,edgeSize:e.edgeSize,showBranches:e.showBranches},on:{dragover:function(e){e.preventDefault()}},scopedSlots:e._u([{key:"title",fn:function(t){var s=t.node;return[e._t("title",[e._v(e._s(s.title))],{node:s})]}},{key:"toggle",fn:function(t){var o=t.node;return[e._t("toggle",[s("span",[e._v("\n             "+e._s(o.isLeaf?"":o.isExpanded?"-":"+")+"\n          ")])],{node:o})]}},{key:"sidebar",fn:function(t){var s=t.node;return[e._t("sidebar",null,{node:s})]}},{key:"empty-node",fn:function(t){var s=t.node;return[!s.isLeaf&&0==s.children.length&&s.isExpanded?e._t("empty-node",null,{node:s}):e._e()]}}])}):e._e(),e._v(" "),s("div",{staticClass:"sl-vue-tree-cursor sl-vue-tree-cursor_after",style:{visibility:e.cursorPosition&&e.cursorPosition.node.pathStr===t.pathStr&&"after"===e.cursorPosition.placement?"visible":"hidden"},on:{dragover:function(e){e.preventDefault()}}})],1)}),e._v(" "),e.isRoot?s("div",{directives:[{name:"show",rawName:"v-show",value:e.isDragging,expression:"isDragging"}],ref:"dragInfo",staticClass:"sl-vue-tree-drag-info"},[e._t("draginfo",[e._v("\n        Items: "+e._s(e.selectionSize)+"\n      ")])],2):e._e()],2)])};i._withStripped=!0;var r=function(e,t,s,o,i,r,n,l){var a=typeof(e=e||{}).default;"object"!==a&&"function"!==a||(e=e.default);var u,d="function"==typeof e?e.options:e;if(t&&(d.render=t,d.staticRenderFns=s,d._compiled=!0),o&&(d.functional=!0),r&&(d._scopeId=r),n?(u=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(n)},d._ssrRegister=u):i&&(u=l?function(){i.call(this,this.$root.$options.shadowRoot)}:i),u)if(d.functional){d._injectStyles=u;var c=d.render;d.render=function(e,t){return u.call(t),c(e,t)}}else{var h=d.beforeCreate;d.beforeCreate=h?[].concat(h,u):[u]}return{exports:e,options:d}}(o,i,[],!1,null,null,null);r.options.__file="src\\sl-vue-tree.vue";t.default=r.exports}]).default});
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SlVueTree=t():e.SlVueTree=t()}(window,function(){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:i})},n.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";function i(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t<e.length;t++)n[t]=e[t];return n}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}n.r(t);var r={name:"sl-vue-tree",props:{value:{type:Array,default:function(){return[]}},edgeSize:{type:Number,default:3},showBranches:{type:Boolean,default:!1},level:{type:Number,default:0},parentInd:{type:Number},allowMultiselect:{type:Boolean,default:!0},allowToggleBranch:{type:Boolean,default:!0},multiselectKey:{type:[String,Array],default:function(){return["ctrlKey","metaKey"]},validator:function(e){var t=["ctrlKey","metaKey","altKey"],n=Array.isArray(e)?e:[e];return!!(n=n.filter(function(e){return-1!==t.indexOf(e)})).length}},scrollAreaHeight:{type:Number,default:70},maxScrollSpeed:{type:Number,default:20}},data:function(){return{rootCursorPosition:null,scrollIntervalId:0,scrollSpeed:0,lastSelectedNode:null,mouseIsDown:!1,isDragging:!1,lastMousePos:{x:0,y:0},preventDrag:!1,currentValue:this.value}},mounted:function(){this.isRoot&&document.addEventListener("mouseup",this.onDocumentMouseupHandler)},beforeDestroy:function(){document.removeEventListener("mouseup",this.onDocumentMouseupHandler)},watch:{value:function(e){this.currentValue=e}},computed:{cursorPosition:function(){return this.isRoot?this.rootCursorPosition:this.getParent().cursorPosition},nodes:function(){if(this.isRoot){var e=this.copy(this.currentValue);return this.getNodes(e)}return this.getParent().nodes[this.parentInd].children},gaps:function(){var e=[],t=this.level-1;for(this.showBranches||t++;t-- >0;)e.push(t);return e},isRoot:function(){return!this.level},selectionSize:function(){return this.getSelected().length},dragSize:function(){return this.getDraggable().length}},methods:{setCursorPosition:function(e){this.isRoot?this.rootCursorPosition=e:this.getParent().setCursorPosition(e)},getNodes:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return e.map(function(r,o){var s=n.concat(o);return t.getNode(s,r,e,i)})},getNode:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=e.slice(-1)[0];if(n=n||this.getNodeSiblings(this.currentValue,e),t=t||n&&n[r]||null,null==i&&(i=this.isVisible(e)),!t)return null;var o=void 0==t.isExpanded||!!t.isExpanded,s=void 0==t.isDraggable||!!t.isDraggable,l=void 0==t.isSelectable||!!t.isSelectable;return{title:t.title,isLeaf:!!t.isLeaf,children:t.children?this.getNodes(t.children,e,o):[],isSelected:!!t.isSelected,isExpanded:o,isVisible:i,isDraggable:s,isSelectable:l,data:void 0!==t.data?t.data:{},path:e,pathStr:JSON.stringify(e),level:e.length,ind:r,isFirstChild:0==r,isLastChild:r===n.length-1}},isVisible:function(e){if(e.length<2)return!0;for(var t=this.currentValue,n=0;n<e.length-1;n++){var i=t[e[n]];if(!(void 0==i.isExpanded||!!i.isExpanded))return!1;t=i.children}return!0},emitInput:function(e){this.currentValue=e,this.getRoot().$emit("input",e)},emitSelect:function(e,t){this.getRoot().$emit("select",e,t)},emitBeforeDrop:function(e,t,n){this.getRoot().$emit("beforedrop",e,t,n)},emitDrop:function(e,t,n){this.getRoot().$emit("drop",e,t,n)},emitToggle:function(e,t){this.getRoot().$emit("toggle",e,t)},emitNodeClick:function(e,t){this.getRoot().$emit("nodeclick",e,t)},emitNodeDblclick:function(e,t){this.getRoot().$emit("nodedblclick",e,t)},emitNodeContextmenu:function(e,t){this.getRoot().$emit("nodecontextmenu",e,t)},onExternalDragoverHandler:function(e,t){t.preventDefault();var n=this.getRoot(),i=n.getCursorPositionFromCoords(t.clientX,t.clientY);n.setCursorPosition(i),n.$emit("externaldragover",i,t)},onExternalDropHandler:function(e,t){var n=this.getRoot(),i=n.getCursorPositionFromCoords(t.clientX,t.clientY);n.$emit("externaldrop",i,t),this.setCursorPosition(null)},select:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=Array.isArray(this.multiselectKey)?this.multiselectKey:[this.multiselectKey],o=i&&!!r.find(function(e){return i[e]});n=(o||n)&&this.allowMultiselect;var s=this.getNode(e);if(!s)return null;var l=this.copy(this.currentValue),a=this.allowMultiselect&&i&&i.shiftKey&&this.lastSelectedNode,u=[],c=!1;return this.traverse(function(e,i){a?(e.pathStr!==s.pathStr&&e.pathStr!==t.lastSelectedNode.pathStr||(i.isSelected=e.isSelectable,c=!c),c&&(i.isSelected=e.isSelectable)):e.pathStr===s.pathStr?i.isSelected=e.isSelectable:n||i.isSelected&&(i.isSelected=!1),i.isSelected&&u.push(e)},l),this.lastSelectedNode=s,this.emitInput(l),this.emitSelect(u,i),s},onMousemoveHandler:function(e){if(this.isRoot){if(!this.preventDrag){var t=this.isDragging,n=this.isDragging||this.mouseIsDown&&(this.lastMousePos.x!==e.clientX||this.lastMousePos.y!==e.clientY),i=!1===t&&!0===n;if(this.lastMousePos={x:e.clientX,y:e.clientY},n){var r=this.getRoot().$el,o=r.getBoundingClientRect(),s=this.$refs.dragInfo,l=e.clientY-o.top+r.scrollTop-(0|s.style.marginBottom),a=e.clientX-o.left;s.style.top=l+"px",s.style.left=a+"px";var u=this.getCursorPositionFromCoords(e.clientX,e.clientY),c=u.node,d=u.placement;if(i&&!c.isSelected&&this.select(c.path,!1,e),this.getDraggable().length){this.isDragging=n,this.setCursorPosition({node:c,placement:d});var h=o.bottom-this.scrollAreaHeight,f=(e.clientY-h)/(o.bottom-h),g=o.top+this.scrollAreaHeight,p=(g-e.clientY)/(g-o.top);f>0?this.startScroll(f):p>0?this.startScroll(-p):this.stopScroll()}else this.preventDrag=!0}}}else this.getRoot().onMousemoveHandler(e)},getCursorPositionFromCoords:function(e,t){var n,i,r=document.elementFromPoint(e,t),o=r.getAttribute("path")?r:this.getClosetElementWithPath(r);if(o){if(!o)return;n=this.getNode(JSON.parse(o.getAttribute("path")));var s=o.offsetHeight,l=this.edgeSize,a=t-o.getBoundingClientRect().top;i=n.isLeaf?a>=s/2?"after":"before":a<=l?"before":a>=s-l?"after":"inside"}else{var u=this.getRoot().$el.getBoundingClientRect();t>u.top+u.height/2?(i="after",n=this.getLastNode()):(i="before",n=this.getFirstNode())}return{node:n,placement:i}},getClosetElementWithPath:function(e){return e?e.getAttribute("path")?e:this.getClosetElementWithPath(e.parentElement):null},onMouseleaveHandler:function(e){if(this.isRoot&&this.isDragging){var t=this.getRoot().$el.getBoundingClientRect();e.clientY>=t.bottom?this.setCursorPosition({node:this.nodes.slice(-1)[0],placement:"after"}):e.clientY<t.top&&this.setCursorPosition({node:this.getFirstNode(),placement:"before"})}},getNodeEl:function(e){this.getRoot().$el.querySelector('[path="'.concat(JSON.stringify(e),'"]'))},getLastNode:function(){var e=null;return this.traverse(function(t){e=t}),e},getFirstNode:function(){return this.getNode([0])},getNextNode:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=null;return this.traverse(function(r){if(!(t.comparePaths(r.path,e)<1))return!n||n(r)?(i=r,!1):void 0}),i},getPrevNode:function(e,t){var n=this,i=[];this.traverse(function(t){if(n.comparePaths(t.path,e)>=0)return!1;i.push(t)});for(var r=i.length;r--;){var o=i[r];if(!t||t(o))return o}return null},comparePaths:function(e,t){for(var n=0;n<e.length;n++){if(void 0==t[n])return 1;if(e[n]>t[n])return 1;if(e[n]<t[n])return-1}return void 0==t[e.length]?0:-1},onNodeMousedownHandler:function(e,t){0===e.button&&(this.isRoot?this.mouseIsDown=!0:this.getRoot().onNodeMousedownHandler(e,t))},startScroll:function(e){var t=this,n=this.getRoot().$el;this.scrollSpeed!==e&&(this.scrollIntervalId&&this.stopScroll(),this.scrollSpeed=e,this.scrollIntervalId=setInterval(function(){n.scrollTop+=t.maxScrollSpeed*e},20))},stopScroll:function(){clearInterval(this.scrollIntervalId),this.scrollIntervalId=0,this.scrollSpeed=0},onDocumentMouseupHandler:function(e){this.isDragging&&this.onNodeMouseupHandler(e)},onNodeMouseupHandler:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(0===e.button)if(this.isRoot)if(this.mouseIsDown=!1,this.isDragging||!t||this.preventDrag||this.select(t.path,!1,e),this.preventDrag=!1,this.cursorPosition){var n=this.getDraggable(),i=!0,r=!1,o=void 0;try{for(var s,l=n[Symbol.iterator]();!(i=(s=l.next()).done);i=!0){var a=s.value;if(a.pathStr==this.cursorPosition.node.pathStr)return void this.stopDrag();if(this.checkNodeIsParent(a,this.cursorPosition.node))return void this.stopDrag()}}catch(e){r=!0,o=e}finally{try{i||null==l.return||l.return()}finally{if(r)throw o}}var u=this.copy(this.currentValue),c=[],d=!0,h=!1,f=void 0;try{for(var g,p=n[Symbol.iterator]();!(d=(g=p.next()).done);d=!0){var v=g.value,m=this.getNodeSiblings(u,v.path)[v.ind];c.push(m)}}catch(e){h=!0,f=e}finally{try{d||null==p.return||p.return()}finally{if(h)throw f}}var S=!1;if(this.emitBeforeDrop(n,this.cursorPosition,function(){return S=!0}),S)this.stopDrag();else{for(var y=[],b=0;b<c.length;b++){var _=c[b];y.push(this.copy(_)),_._markToDelete=!0}this.insertModels(this.cursorPosition,y,u),this.traverseModels(function(e,t,n){e._markToDelete&&t.splice(n,1)},u),this.lastSelectedNode=null,this.emitInput(u),this.emitDrop(n,this.cursorPosition,e),this.stopDrag()}}else this.stopDrag();else this.getRoot().onNodeMouseupHandler(e,t)},onToggleHandler:function(e,t){this.allowToggleBranch&&(this.updateNode(t.path,{isExpanded:!t.isExpanded}),this.emitToggle(t,e),e.stopPropagation())},stopDrag:function(){this.isDragging=!1,this.mouseIsDown=!1,this.setCursorPosition(null),this.stopScroll()},getParent:function(){return this.$parent},getRoot:function(){return this.isRoot?this:this.getParent().getRoot()},getNodeSiblings:function(e,t){return 1===t.length?e:this.getNodeSiblings(e[t[0]].children,t.slice(1))},updateNode:function(e,t){if(this.isRoot){var n=JSON.stringify(e),i=this.copy(this.currentValue);this.traverse(function(e,i){e.pathStr===n&&Object.assign(i,t)},i),this.emitInput(i)}else this.getParent().updateNode(e,t)},getSelected:function(){var e=[];return this.traverse(function(t){t.isSelected&&e.push(t)}),e},getDraggable:function(){var e=[];return this.traverse(function(t){t.isSelected&&t.isDraggable&&e.push(t)}),e},traverse:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];t||(t=this.currentValue);for(var i=!1,r=[],o=0;o<t.length;o++){var s=t[o],l=n.concat(o),a=this.getNode(l,s,t);if(i=!1===e(a,s,t),r.push(a),i)break;if(s.children&&(i=!1===this.traverse(e,s.children,l)))break}return!i&&r},traverseModels:function(e,t){for(var n=t.length;n--;){var i=t[n];i.children&&this.traverseModels(e,i.children),e(i,t,n)}return t},remove:function(e){var t=e.map(function(e){return JSON.stringify(e)}),n=this.copy(this.currentValue);this.traverse(function(e,n,i){var r=!0,o=!1,s=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done);r=!0){var u=l.value;e.pathStr===u&&(n._markToDelete=!0)}}catch(e){o=!0,s=e}finally{try{r||null==a.return||a.return()}finally{if(o)throw s}}},n),this.traverseModels(function(e,t,n){e._markToDelete&&t.splice(n,1)},n),this.emitInput(n)},insertModels:function(e,t,n){var r=e.node,o=this.getNodeSiblings(n,r.path),s=o[r.ind];if("inside"===e.placement){var l;s.children=s.children||[],(l=s.children).unshift.apply(l,i(t))}else{var a="before"===e.placement?r.ind:r.ind+1;o.splice.apply(o,[a,0].concat(i(t)))}},insert:function(e,t){var n=Array.isArray(t)?t:[t],i=this.copy(this.currentValue);this.insertModels(e,n,i),this.emitInput(i)},checkNodeIsParent:function(e,t){var n=t.path;return JSON.stringify(n.slice(0,e.path.length))==e.pathStr},copy:function(e){return JSON.parse(JSON.stringify(e))}}},o=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"sl-vue-tree",class:{"sl-vue-tree-root":e.isRoot},on:{mousemove:e.onMousemoveHandler,mouseleave:e.onMouseleaveHandler,dragend:function(t){e.onDragendHandler(null,t)}}},[n("div",{ref:"nodes",staticClass:"sl-vue-tree-nodes-list"},[e._l(e.nodes,function(t,i){return n("div",{staticClass:"sl-vue-tree-node",class:{"sl-vue-tree-selected":t.isSelected}},[n("div",{staticClass:"sl-vue-tree-cursor sl-vue-tree-cursor_before",style:{visibility:e.cursorPosition&&e.cursorPosition.node.pathStr===t.pathStr&&"before"===e.cursorPosition.placement?"visible":"hidden"},on:{dragover:function(e){e.preventDefault()}}}),e._v(" "),n("div",{staticClass:"sl-vue-tree-node-item",class:{"sl-vue-tree-cursor-hover":e.cursorPosition&&e.cursorPosition.node.pathStr===t.pathStr,"sl-vue-tree-cursor-inside":e.cursorPosition&&"inside"===e.cursorPosition.placement&&e.cursorPosition.node.pathStr===t.pathStr,"sl-vue-tree-node-is-leaf":t.isLeaf,"sl-vue-tree-node-is-folder":!t.isLeaf},attrs:{path:t.pathStr},on:{mousedown:function(n){e.onNodeMousedownHandler(n,t)},mouseup:function(n){e.onNodeMouseupHandler(n,t)},contextmenu:function(n){e.emitNodeContextmenu(t,n)},dblclick:function(n){e.emitNodeDblclick(t,n)},click:function(n){e.emitNodeClick(t,n)},dragover:function(n){e.onExternalDragoverHandler(t,n)},drop:function(n){e.onExternalDropHandler(t,n)}}},[e._l(e.gaps,function(e){return n("div",{staticClass:"sl-vue-tree-gap"})}),e._v(" "),e.level&&e.showBranches?n("div",{staticClass:"sl-vue-tree-branch"},[e._t("branch",[t.isLastChild?e._e():n("span",[e._v("\n            "+e._s(String.fromCharCode(9500))+e._s(String.fromCharCode(9472))+" \n          ")]),e._v(" "),t.isLastChild?n("span",[e._v("\n            "+e._s(String.fromCharCode(9492))+e._s(String.fromCharCode(9472))+" \n          ")]):e._e()],{node:t})],2):e._e(),e._v(" "),n("div",{staticClass:"sl-vue-tree-title"},[t.isLeaf?e._e():n("span",{staticClass:"sl-vue-tree-toggle",on:{click:function(n){e.onToggleHandler(n,t)}}},[e._t("toggle",[n("span",[e._v("\n             "+e._s(t.isLeaf?"":t.isExpanded?"-":"+")+"\n            ")])],{node:t})],2),e._v(" "),e._t("title",[e._v(e._s(t.title))],{node:t}),e._v(" "),!t.isLeaf&&0==t.children.length&&t.isExpanded?e._t("empty-node",null,{node:t}):e._e()],2),e._v(" "),n("div",{staticClass:"sl-vue-tree-sidebar"},[e._t("sidebar",null,{node:t})],2)],2),e._v(" "),t.children&&t.children.length&&t.isExpanded?n("sl-vue-tree",{attrs:{value:t.children,level:t.level,parentInd:i,allowMultiselect:e.allowMultiselect,allowToggleBranch:e.allowToggleBranch,edgeSize:e.edgeSize,showBranches:e.showBranches},on:{dragover:function(e){e.preventDefault()}},scopedSlots:e._u([{key:"title",fn:function(t){var n=t.node;return[e._t("title",[e._v(e._s(n.title))],{node:n})]}},{key:"toggle",fn:function(t){var i=t.node;return[e._t("toggle",[n("span",[e._v("\n             "+e._s(i.isLeaf?"":i.isExpanded?"-":"+")+"\n          ")])],{node:i})]}},{key:"sidebar",fn:function(t){var n=t.node;return[e._t("sidebar",null,{node:n})]}},{key:"empty-node",fn:function(t){var n=t.node;return[!n.isLeaf&&0==n.children.length&&n.isExpanded?e._t("empty-node",null,{node:n}):e._e()]}}])}):e._e(),e._v(" "),n("div",{staticClass:"sl-vue-tree-cursor sl-vue-tree-cursor_after",style:{visibility:e.cursorPosition&&e.cursorPosition.node.pathStr===t.pathStr&&"after"===e.cursorPosition.placement?"visible":"hidden"},on:{dragover:function(e){e.preventDefault()}}})],1)}),e._v(" "),e.isRoot?n("div",{directives:[{name:"show",rawName:"v-show",value:e.isDragging,expression:"isDragging"}],ref:"dragInfo",staticClass:"sl-vue-tree-drag-info"},[e._t("draginfo",[e._v("\n        Items: "+e._s(e.selectionSize)+"\n      ")])],2):e._e()],2)])};o._withStripped=!0;var s=function(e,t,n,i,r,o,s,l){var a=typeof(e=e||{}).default;"object"!==a&&"function"!==a||(e=e.default);var u,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=n,c._compiled=!0),i&&(c.functional=!0),o&&(c._scopeId=o),s?(u=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},c._ssrRegister=u):r&&(u=l?function(){r.call(this,this.$root.$options.shadowRoot)}:r),u)if(c.functional){c._injectStyles=u;var d=c.render;c.render=function(e,t){return u.call(t),d(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,u):[u]}return{exports:e,options:c}}(r,o,[],!1,null,null,null);s.options.__file="src\\sl-vue-tree.vue";t.default=s.exports}]).default});
 //# sourceMappingURL=sl-vue-tree.js.map
\ No newline at end of file
diff --git a/dist/sl-vue-tree.js.map b/dist/sl-vue-tree.js.map
index bf5442f..bf73430 100644
--- a/dist/sl-vue-tree.js.map
+++ b/dist/sl-vue-tree.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack://SlVueTree/webpack/universalModuleDefinition","webpack://SlVueTree/webpack/bootstrap","webpack://SlVueTree/./src/sl-vue-tree.js","webpack://SlVueTree/./src/sl-vue-tree.vue?75ef","webpack://SlVueTree/./src/sl-vue-tree.vue","webpack://SlVueTree/./node_modules/vue-loader/lib/runtime/component-normalizer.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","r","value","n","__esModule","object","property","prototype","hasOwnProperty","p","s","sl_vue_tree","props","type","Array","default","edgeSize","Number","showBranches","Boolean","level","parentInd","allowMultiselect","allowToggleBranch","multiselectKey","String","validator","allowedKeys","multiselectKeys","isArray","filter","keyName","indexOf","length","scrollAreaHeight","maxScrollSpeed","[object Object]","rootCursorPosition","scrollIntervalId","scrollSpeed","lastSelectedNode","mouseIsDown","isDragging","lastMousePos","x","y","preventDrag","currentValue","this","isRoot","document","addEventListener","onDocumentMouseupHandler","removeEventListener","watch","newValue","computed","getParent","cursorPosition","nodeModels","copy","getNodes","nodes","children","gaps","push","getSelected","getDraggable","methods","pos","setCursorPosition","parentPath","isVisible","map","nodeModel","ind","nodePath","concat","getNode","path","siblings","slice","getNodeSiblings","isExpanded","isDraggable","isSelectable","title","isLeaf","isSelected","data","pathStr","JSON","stringify","isFirstChild","isLastChild","getRoot","$emit","selectedNodes","event","draggingNodes","position","cancel","toggledNode","node","preventDefault","getCursorPositionFromCoords","clientX","clientY","addToSelection","multiselectKeyIsPressed","find","key","selectedNode","newNodes","shiftSelectionMode","shiftKey","shiftSelectionStarted","traverse","emitInput","emitSelect","onMousemoveHandler","initialDraggingState","isDragStarted","$root","$el","rootRect","getBoundingClientRect","$dragInfo","$refs","dragInfo","dragInfoTop","top","scrollTop","style","marginBottom","dragInfoLeft","left","destNode","placement","select","scrollBottomLine","bottom","scrollDownSpeed","scrollTopLine","scrollTopSpeed","startScroll","stopScroll","$target","elementFromPoint","$nodeItem","getAttribute","getClosetElementWithPath","parse","nodeHeight","offsetHeight","offsetY","height","getLastNode","getFirstNode","parentElement","querySelector","lastNode","resultNode","comparePaths","prevNodes","path1","path2","button","onNodeMousedownHandler","speed","setInterval","clearInterval","onNodeMouseupHandler","targetNode","stopDrag","draggingNode","checkNodeIsParent","nodeModelsSubjectToInsert","draggingNodeModel","cancelled","emitBeforeDrop","nodeModelsToInsert","insertModels","traverseModels","_markToDelete","splice","emitDrop","updateNode","emitToggle","stopPropagation","$parent","patch","assign","cb","shouldStop","nodeInd","itemPath","paths","pathsStr","destSiblings","destNodeModel","unshift","insertInd","sourceNode","destPath","entity","render","_vm","_h","$createElement","_c","_self","staticClass","class","sl-vue-tree-root","on","mousemove","mouseleave","onMouseleaveHandler","dragend","$event","onDragendHandler","ref","_l","sl-vue-tree-selected","visibility","dragover","_v","sl-vue-tree-cursor-hover","sl-vue-tree-cursor-inside","sl-vue-tree-node-is-leaf","sl-vue-tree-node-is-folder","attrs","mousedown","mouseup","contextmenu","emitNodeContextmenu","dblclick","emitNodeDblclick","click","emitNodeClick","onExternalDragoverHandler","drop","onExternalDropHandler","gapInd","_t","_e","_s","fromCharCode","onToggleHandler","scopedSlots","_u","fn","directives","rawName","expression","selectionSize","_withStripped","Component","scriptExports","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","options","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","normalizeComponent","__file","__webpack_exports__"],"mappings":"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","file":"sl-vue-tree.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SlVueTree\"] = factory();\n\telse\n\t\troot[\"SlVueTree\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","\nexport default {\n  name: 'sl-vue-tree',\n  props: {\n    value: {\n      type: Array,\n      default: () => []\n    },\n    edgeSize: {\n      type: Number,\n      default: 3\n    },\n    showBranches: {\n      type: Boolean,\n      default: false\n    },\n    level: {\n      type: Number,\n      default: 0\n    },\n    parentInd: {\n      type: Number\n    },\n    allowMultiselect: {\n      type: Boolean,\n      default: true\n    },\n    allowToggleBranch: {\n      type: Boolean,\n      default: true\n    },\n    multiselectKey: {\n      type: [String, Array],\n      default: function () {\n        return ['ctrlKey', 'metaKey']\n      },\n      validator: function (value) {\n        let allowedKeys = ['ctrlKey', 'metaKey', 'altKey'];\n        let multiselectKeys = Array.isArray(value) ? value : [value];\n        multiselectKeys = multiselectKeys.filter(keyName => allowedKeys.indexOf(keyName ) !== -1);\n        return !!multiselectKeys.length;\n      }\n    },\n    scrollAreaHeight: {\n      type: Number,\n      default: 70\n    },\n    maxScrollSpeed: {\n      type: Number,\n      default: 20\n    }\n  },\n\n  data() {\n    return {\n      rootCursorPosition: null,\n      scrollIntervalId: 0,\n      scrollSpeed: 0,\n      lastSelectedNode: null,\n      mouseIsDown: false,\n      isDragging: false,\n      lastMousePos: {x: 0, y: 0},\n      preventDrag: false,\n      currentValue: this.value\n    };\n  },\n\n  mounted() {\n    if (this.isRoot) {\n      document.addEventListener('mouseup', this.onDocumentMouseupHandler);\n    }\n  },\n\n  beforeDestroy() {\n    document.removeEventListener('mouseup', this.onDocumentMouseupHandler);\n  },\n\n  watch: {\n    value: function (newValue) {\n      this.currentValue = newValue;\n    }\n  },\n\n  computed: {\n    cursorPosition() {\n      if (this.isRoot) return this.rootCursorPosition;\n      return this.getParent().cursorPosition;\n    },\n\n    nodes() {\n      if (this.isRoot) {\n        const nodeModels = this.copy(this.currentValue);\n        return this.getNodes(nodeModels);\n      }\n\n      return this.getParent().nodes[this.parentInd].children;\n    },\n    /**\n   * gaps is using for nodes indentation\n   * @returns {number[]}\n   */\n    gaps() {\n      const gaps = [];\n      let i = this.level - 1;\n      if (!this.showBranches) i++;\n      while (i-- > 0) gaps.push(i);\n      return gaps;\n    },\n\n    isRoot() {\n      return !this.level\n    },\n\n    selectionSize() {\n      return this.getSelected().length;\n    },\n\n    dragSize() {\n      return this.getDraggable().length;\n    }\n  },\n  methods: {\n\n    setCursorPosition(pos) {\n      if (this.isRoot) {\n        this.rootCursorPosition = pos;\n        return;\n      }\n      this.getParent().setCursorPosition(pos);\n    },\n\n    getNodes(nodeModels, parentPath = [], isVisible = true) {\n\n      return nodeModels.map((nodeModel, ind) => {\n        const nodePath = parentPath.concat(ind);\n        return this.getNode(nodePath, nodeModel, nodeModels, isVisible);\n      })\n    },\n\n    getNode(\n      path,\n      nodeModel = null,\n      siblings = null,\n      isVisible = null\n    ) {\n      const ind = path.slice(-1)[0];\n\n      // calculate nodeModel, siblings, isVisible fields if it is not passed as arguments\n      siblings = siblings || this.getNodeSiblings(this.currentValue, path);\n      nodeModel = nodeModel || (siblings && siblings[ind]) || null;\n\n      if (isVisible == null) {\n        isVisible = this.isVisible(path);\n      }\n\n      if (!nodeModel) return null;\n\n      const isExpanded = nodeModel.isExpanded == void 0 ? true : !!nodeModel.isExpanded;\n      const isDraggable = nodeModel.isDraggable == void 0 ? true : !!nodeModel.isDraggable;\n      const isSelectable = nodeModel.isSelectable == void 0 ? true : !!nodeModel.isSelectable;\n\n      const node = {\n\n        // define the all ISlTreeNodeModel props\n        title: nodeModel.title,\n        isLeaf: !!nodeModel.isLeaf,\n        children: nodeModel.children ? this.getNodes(nodeModel.children, path, isExpanded) : [],\n        isSelected: !!nodeModel.isSelected,\n        isExpanded,\n        isVisible,\n        isDraggable,\n        isSelectable,\n        data: nodeModel.data !== void 0 ? nodeModel.data : {},\n\n        // define the all ISlTreeNode computed props\n        path: path,\n        pathStr: JSON.stringify(path),\n        level: path.length,\n        ind,\n        isFirstChild: ind == 0,\n        isLastChild: ind === siblings.length - 1\n      };\n      return node;\n    },\n\n    isVisible(path) {\n      if (path.length < 2) return true;\n      let nodeModels = this.currentValue;\n\n      for (let i = 0; i < path.length - 1; i++) {\n        let ind = path[i];\n        let nodeModel = nodeModels[ind];\n        let isExpanded = nodeModel.isExpanded == void 0 ? true : !!nodeModel.isExpanded;\n        if (!isExpanded) return false;\n        nodeModels = nodeModel.children;\n      }\n\n      return true;\n    },\n\n    emitInput(newValue) {\n      this.currentValue = newValue;\n      this.getRoot().$emit('input', newValue);\n    },\n\n    emitSelect(selectedNodes, event) {\n      this.getRoot().$emit('select', selectedNodes, event);\n    },\n\n    emitBeforeDrop(draggingNodes, position, cancel) {\n      this.getRoot().$emit('beforedrop', draggingNodes, position, cancel);\n    },\n\n    emitDrop(draggingNodes, position, event) {\n      this.getRoot().$emit('drop', draggingNodes, position, event);\n    },\n\n    emitToggle(toggledNode, event) {\n      this.getRoot().$emit('toggle', toggledNode, event);\n    },\n\n    emitNodeClick(node, event) {\n      this.getRoot().$emit('nodeclick', node, event);\n    },\n\n    emitNodeDblclick(node, event) {\n      this.getRoot().$emit('nodedblclick', node, event);\n    },\n\n    emitNodeContextmenu(node, event) {\n      this.getRoot().$emit('nodecontextmenu', node, event);\n    },\n\n    onExternalDragoverHandler(node, event) {\n      event.preventDefault();\n      const root = this.getRoot();\n      const cursorPosition = root.getCursorPositionFromCoords(event.clientX, event.clientY);\n      root.setCursorPosition(cursorPosition);\n      root.$emit('externaldragover', cursorPosition, event);\n    },\n\n    onExternalDropHandler(node, event) {\n      const root = this.getRoot();\n      const cursorPosition = root.getCursorPositionFromCoords(event.clientX, event.clientY);\n      root.$emit('externaldrop', cursorPosition, event);\n      this.setCursorPosition(null);\n    },\n\n    select(path, addToSelection = false, event = null) {\n      const multiselectKeys = Array.isArray(this.multiselectKey) ?\n        this.multiselectKey:\n        [this.multiselectKey];\n      const multiselectKeyIsPressed = event && !!multiselectKeys.find(key => event[key]);\n      addToSelection = (multiselectKeyIsPressed || addToSelection) && this.allowMultiselect ;\n\n      const selectedNode = this.getNode(path);\n      if (!selectedNode) return null;\n      const newNodes = this.copy(this.currentValue);\n      const shiftSelectionMode = this.allowMultiselect && event && event.shiftKey && this.lastSelectedNode;\n      const selectedNodes = [];\n      let shiftSelectionStarted = false;\n\n      this.traverse((node, nodeModel) => {\n\n\n        if (shiftSelectionMode) {\n          if (node.pathStr === selectedNode.pathStr || node.pathStr === this.lastSelectedNode.pathStr) {\n            nodeModel.isSelected = node.isSelectable;\n            shiftSelectionStarted = !shiftSelectionStarted;\n          }\n          if (shiftSelectionStarted) nodeModel.isSelected = node.isSelectable;\n        } else if (node.pathStr === selectedNode.pathStr) {\n          nodeModel.isSelected = node.isSelectable;\n        } else if (!addToSelection) {\n          if (nodeModel.isSelected) nodeModel.isSelected = false;\n        }\n\n        if (nodeModel.isSelected) selectedNodes.push(node);\n\n      }, newNodes);\n\n\n      this.lastSelectedNode = selectedNode;\n      this.emitInput(newNodes);\n      this.emitSelect(selectedNodes, event);\n      return selectedNode;\n    },\n\n    onMousemoveHandler(event) {\n      if (!this.isRoot) {\n        this.getRoot().onMousemoveHandler(event);\n        return;\n      }\n\n      if (this.preventDrag) return;\n\n      const initialDraggingState = this.isDragging;\n      const isDragging =\n        this.isDragging || (\n        this.mouseIsDown &&\n        (this.lastMousePos.x !== event.clientX || this.lastMousePos.y !== event.clientY)\n      );\n\n      const isDragStarted = initialDraggingState === false && isDragging === true;\n\n      this.lastMousePos = {\n        x: event.clientX,\n        y: event.clientY\n      };\n\n      if (!isDragging) return;\n\n      const $root = this.getRoot().$el;\n      const rootRect = $root.getBoundingClientRect();\n      const $dragInfo = this.$refs.dragInfo;\n      const dragInfoTop = (event.clientY - rootRect.top + $root.scrollTop - ($dragInfo.style.marginBottom | 0) );\n      const dragInfoLeft = (event.clientX - rootRect.left);\n\n      $dragInfo.style.top = dragInfoTop + 'px';\n      $dragInfo.style.left = dragInfoLeft + 'px';\n\n      const cursorPosition = this.getCursorPositionFromCoords(event.clientX, event.clientY);\n      const destNode = cursorPosition.node;\n      const placement = cursorPosition.placement;\n\n      if (isDragStarted && !destNode.isSelected) {\n        this.select(destNode.path, false, event);\n      }\n\n      const draggableNodes = this.getDraggable();\n      if (!draggableNodes.length) {\n        this.preventDrag = true;\n        return;\n      }\n\n      this.isDragging = isDragging;\n\n      this.setCursorPosition({ node: destNode, placement });\n\n      const scrollBottomLine = rootRect.bottom - this.scrollAreaHeight;\n      const scrollDownSpeed = (event.clientY - scrollBottomLine) / (rootRect.bottom - scrollBottomLine);\n      const scrollTopLine = rootRect.top + this.scrollAreaHeight;\n      const scrollTopSpeed = (scrollTopLine - event.clientY) / (scrollTopLine - rootRect.top);\n\n      if (scrollDownSpeed > 0) {\n        this.startScroll(scrollDownSpeed);\n      } else if (scrollTopSpeed > 0) {\n        this.startScroll(-scrollTopSpeed)\n      } else {\n        this.stopScroll();\n      }\n    },\n\n    getCursorPositionFromCoords(x, y) {\n      const $target = document.elementFromPoint(x, y);\n      const $nodeItem = $target.getAttribute('path') ? $target : this.getClosetElementWithPath($target);\n      let destNode;\n      let placement;\n\n      if ($nodeItem) {\n\n        if (!$nodeItem) return;\n\n        destNode = this.getNode(JSON.parse($nodeItem.getAttribute('path')));\n\n        const nodeHeight = $nodeItem.offsetHeight;\n        const edgeSize = this.edgeSize;\n        const offsetY = y - $nodeItem.getBoundingClientRect().top;\n\n\n        if (destNode.isLeaf) {\n          placement = offsetY >= nodeHeight / 2 ? 'after' : 'before';\n        } else {\n          if (offsetY <= edgeSize) {\n            placement = 'before';\n          } else if (offsetY >= nodeHeight - edgeSize) {\n            placement = 'after';\n          } else {\n            placement = 'inside';\n          }\n        }\n      } else {\n        const $root = this.getRoot().$el;\n        const rootRect = $root.getBoundingClientRect();\n        if (y > rootRect.top + (rootRect.height / 2)) {\n          placement = 'after';\n          destNode = this.getLastNode();\n        } else {\n          placement = 'before';\n          destNode = this.getFirstNode();\n        }\n      }\n\n      return { node: destNode, placement };\n    },\n\n    getClosetElementWithPath($el) {\n      if (!$el) return null;\n      if ($el.getAttribute('path')) return $el;\n      return this.getClosetElementWithPath($el.parentElement);\n    },\n\n    onMouseleaveHandler(event) {\n      if (!this.isRoot || !this.isDragging) return;\n      const $root = this.getRoot().$el;\n      const rootRect = $root.getBoundingClientRect();\n      if (event.clientY >= rootRect.bottom) {\n        this.setCursorPosition({ node: this.nodes.slice(-1)[0], placement: 'after' });\n      } else if (event.clientY < rootRect.top) {\n        this.setCursorPosition({ node: this.getFirstNode(), placement: 'before'});\n      }\n    },\n\n    getNodeEl(path) {\n      this.getRoot().$el.querySelector(`[path=\"${JSON.stringify(path)}\"]`);\n    },\n\n    getLastNode() {\n      let lastNode  = null;\n      this.traverse((node) => {\n        lastNode = node;\n      });\n      return lastNode;\n    },\n\n    getFirstNode() {\n      return this.getNode([0]);\n    },\n\n    getNextNode(path, filter = null) {\n\n      let resultNode = null;\n\n      this.traverse((node) => {\n        if (this.comparePaths(node.path, path) < 1) return;\n\n        if (!filter || filter(node)) {\n          resultNode = node;\n          return false; // stop traverse\n        }\n\n      });\n\n      return resultNode;\n    },\n\n    getPrevNode(path, filter) {\n      let prevNodes = [];\n\n      this.traverse((node) => {\n        if (this.comparePaths(node.path, path) >= 0) {\n          return false;\n        }\n        prevNodes.push(node);\n      });\n\n      let i = prevNodes.length;\n      while (i--) {\n        const node = prevNodes[i];\n        if (!filter || filter(node)) return node;\n      }\n\n      return null;\n    },\n\n    /**\n     * returns 1 if path1 > path2\n     * returns -1 if path1 < path2\n     * returns 0 if path1 == path2\n     *\n     * examples\n     *\n     * [1, 2, 3] < [1, 2, 4]\n     * [1, 1, 3] < [1, 2, 3]\n     * [1, 2, 3] > [1, 2, 0]\n     * [1, 2, 3] > [1, 1, 3]\n     * [1, 2] < [1, 2, 0]\n     *\n     */\n    comparePaths(path1, path2) {\n      for (let i = 0; i < path1.length; i++) {\n        if (path2[i] == void 0) return 1;\n        if (path1[i] > path2[i]) return 1;\n        if (path1[i] < path2[i]) return -1;\n      }\n      return path2[path1.length] == void 0 ? 0 : -1;\n    },\n\n    onNodeMousedownHandler(event, node) {\n      // handle only left mouse button\n      if (event.button !== 0) return;\n\n      if (!this.isRoot) {\n        this.getRoot().onNodeMousedownHandler(event, node);\n        return;\n      }\n      this.mouseIsDown = true;\n    },\n\n\n    startScroll(speed) {\n      const $root = this.getRoot().$el;\n      if (this.scrollSpeed === speed) {\n        return;\n      } else if (this.scrollIntervalId) {\n        this.stopScroll();\n      }\n\n      this.scrollSpeed = speed;\n      this.scrollIntervalId = setInterval(() => {\n        $root.scrollTop += this.maxScrollSpeed * speed;\n      }, 20);\n    },\n\n    stopScroll() {\n      clearInterval(this.scrollIntervalId);\n      this.scrollIntervalId = 0;\n      this.scrollSpeed = 0;\n    },\n\n    onDocumentMouseupHandler(event) {\n      if (this.isDragging) this.onNodeMouseupHandler(event);\n    },\n\n    onNodeMouseupHandler(event, targetNode = null) {\n\n      // handle only left mouse button\n      if (event.button !== 0) return;\n\n      if (!this.isRoot) {\n        this.getRoot().onNodeMouseupHandler(event, targetNode);\n        return;\n      }\n\n      this.mouseIsDown = false;\n\n      if (!this.isDragging && targetNode && !this.preventDrag) {\n        this.select(targetNode.path, false, event);\n      }\n\n      this.preventDrag = false;\n\n      if (!this.cursorPosition) {\n        this.stopDrag();\n        return;\n      };\n\n\n      const draggingNodes = this.getDraggable();\n\n      // check that nodes is possible to insert\n      for (let draggingNode of draggingNodes) {\n        if (draggingNode.pathStr == this.cursorPosition.node.pathStr) {\n          this.stopDrag();\n          return;\n        }\n\n        if (this.checkNodeIsParent(draggingNode, this.cursorPosition.node)) {\n          this.stopDrag();\n          return;\n        }\n      }\n\n      const newNodes = this.copy(this.currentValue);\n      const nodeModelsSubjectToInsert = [];\n\n      // find dragging model to delete\n      for (let draggingNode of draggingNodes) {\n        const sourceSiblings = this.getNodeSiblings(newNodes, draggingNode.path);\n        const draggingNodeModel = sourceSiblings[draggingNode.ind];\n        nodeModelsSubjectToInsert.push(draggingNodeModel);\n      }\n\n      // allow the drop to be cancelled\n      let cancelled = false;\n      this.emitBeforeDrop(draggingNodes, this.cursorPosition, () => cancelled = true);\n\n      if (cancelled) {\n          this.stopDrag();\n          return;\n      }\n\n      const nodeModelsToInsert = [];\n\n      // mark dragging model to delete\n      for (let draggingNodeModel of nodeModelsSubjectToInsert) {\n          nodeModelsToInsert.push(this.copy(draggingNodeModel));\n          draggingNodeModel['_markToDelete'] = true;\n      }\n\n      // insert dragging nodes to the new place\n      this.insertModels(this.cursorPosition, nodeModelsToInsert, newNodes);\n\n\n      // delete dragging node from the old place\n      this.traverseModels((nodeModel, siblings, ind) => {\n        if (!nodeModel._markToDelete) return;\n        siblings.splice(ind, 1);\n      }, newNodes);\n\n\n      this.lastSelectedNode = null;\n      this.emitInput(newNodes);\n      this.emitDrop(draggingNodes, this.cursorPosition, event);\n      this.stopDrag();\n    },\n\n\n    onToggleHandler(event, node) {\n      if (!this.allowToggleBranch) return;\n\n      this.updateNode(node.path, { isExpanded: !node.isExpanded });\n      this.emitToggle(node, event);\n      event.stopPropagation();\n    },\n\n    stopDrag() {\n      this.isDragging = false;\n      this.mouseIsDown = false;\n      this.setCursorPosition(null);\n      this.stopScroll();\n    },\n\n\n    getParent() {\n      return this.$parent;\n    },\n\n    getRoot() {\n      if (this.isRoot) return this;\n      return this.getParent().getRoot();\n    },\n\n    getNodeSiblings(nodes, path) {\n      if (path.length === 1) return nodes;\n      return this.getNodeSiblings(nodes[path[0]].children, path.slice(1));\n    },\n\n\n    updateNode(path, patch) {\n      if (!this.isRoot) {\n        this.getParent().updateNode(path, patch);\n        return;\n      }\n\n      const pathStr = JSON.stringify(path);\n      const newNodes = this.copy(this.currentValue);\n      this.traverse((node, nodeModel) => {\n        if (node.pathStr !== pathStr) return;\n        Object.assign(nodeModel, patch);\n      }, newNodes);\n\n      this.emitInput(newNodes);\n    },\n\n    getSelected() {\n      const selectedNodes = [];\n      this.traverse((node) => {\n        if (node.isSelected) selectedNodes.push(node);\n      });\n      return selectedNodes;\n    },\n\n    getDraggable() {\n      const selectedNodes = [];\n      this.traverse((node) => {\n        if (node.isSelected && node.isDraggable) selectedNodes.push(node);\n      });\n      return selectedNodes;\n    },\n\n\n    traverse(\n      cb,\n      nodeModels = null,\n      parentPath = []\n    ) {\n      if (!nodeModels) nodeModels = this.currentValue;\n\n      let shouldStop = false;\n\n      const nodes = [];\n\n      for (let nodeInd = 0; nodeInd < nodeModels.length; nodeInd++) {\n        const nodeModel = nodeModels[nodeInd];\n        const itemPath = parentPath.concat(nodeInd);\n        const node = this.getNode(itemPath, nodeModel, nodeModels);\n        shouldStop = cb(node, nodeModel, nodeModels) === false;\n        nodes.push(node);\n\n        if (shouldStop) break;\n\n        if (nodeModel.children) {\n          shouldStop = this.traverse(cb, nodeModel.children, itemPath) === false;\n          if (shouldStop) break;\n        }\n      }\n\n      return !shouldStop ? nodes : false;\n    },\n\n    traverseModels(cb, nodeModels) {\n      let i = nodeModels.length;\n      while (i--) {\n        const nodeModel = nodeModels[i];\n        if (nodeModel.children) this.traverseModels(cb, nodeModel.children);\n        cb(nodeModel, nodeModels, i);\n      }\n      return nodeModels;\n    },\n\n    remove(paths) {\n      const pathsStr = paths.map(path => JSON.stringify(path));\n      const newNodes = this.copy(this.currentValue);\n      this.traverse( (node, nodeModel, siblings) => {\n        for (const pathStr of pathsStr) {\n          if (node.pathStr === pathStr) nodeModel._markToDelete = true;\n        }\n      }, newNodes);\n\n      this.traverseModels((nodeModel, siblings, ind) => {\n        if (!nodeModel._markToDelete) return;\n        siblings.splice(ind, 1);\n      }, newNodes);\n\n      this.emitInput(newNodes);\n    },\n\n    insertModels(cursorPosition, nodeModels, newNodes) {\n      const destNode = cursorPosition.node;\n      const destSiblings = this.getNodeSiblings(newNodes, destNode.path);\n      const destNodeModel = destSiblings[destNode.ind];\n\n      if (cursorPosition.placement === 'inside') {\n        destNodeModel.children = destNodeModel.children || [];\n        destNodeModel.children.unshift(...nodeModels);\n      } else {\n        const insertInd = cursorPosition.placement === 'before' ?\n          destNode.ind :\n          destNode.ind + 1;\n\n        destSiblings.splice(insertInd, 0, ...nodeModels);\n      }\n    },\n\n    insert(cursorPosition, nodeModel) {\n      const nodeModels = Array.isArray(nodeModel) ? nodeModel : [nodeModel];\n      const newNodes = this.copy(this.currentValue);\n\n      this.insertModels(cursorPosition, nodeModels, newNodes);\n\n      this.emitInput(newNodes);\n    },\n\n    checkNodeIsParent(sourceNode, destNode) {\n      const destPath = destNode.path;\n      return JSON.stringify(destPath.slice(0, sourceNode.path.length)) == sourceNode.pathStr;\n    },\n\n    copy(entity) {\n      return JSON.parse(JSON.stringify(entity));\n    }\n\n  }\n};\n","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    {\n      staticClass: \"sl-vue-tree\",\n      class: { \"sl-vue-tree-root\": _vm.isRoot },\n      on: {\n        mousemove: _vm.onMousemoveHandler,\n        mouseleave: _vm.onMouseleaveHandler,\n        dragend: function($event) {\n          _vm.onDragendHandler(null, $event)\n        }\n      }\n    },\n    [\n      _c(\n        \"div\",\n        { ref: \"nodes\", staticClass: \"sl-vue-tree-nodes-list\" },\n        [\n          _vm._l(_vm.nodes, function(node, nodeInd) {\n            return _c(\n              \"div\",\n              {\n                staticClass: \"sl-vue-tree-node\",\n                class: { \"sl-vue-tree-selected\": node.isSelected }\n              },\n              [\n                _c(\"div\", {\n                  staticClass: \"sl-vue-tree-cursor sl-vue-tree-cursor_before\",\n                  style: {\n                    visibility:\n                      _vm.cursorPosition &&\n                      _vm.cursorPosition.node.pathStr === node.pathStr &&\n                      _vm.cursorPosition.placement === \"before\"\n                        ? \"visible\"\n                        : \"hidden\"\n                  },\n                  on: {\n                    dragover: function($event) {\n                      $event.preventDefault()\n                    }\n                  }\n                }),\n                _vm._v(\" \"),\n                _c(\n                  \"div\",\n                  {\n                    staticClass: \"sl-vue-tree-node-item\",\n                    class: {\n                      \"sl-vue-tree-cursor-hover\":\n                        _vm.cursorPosition &&\n                        _vm.cursorPosition.node.pathStr === node.pathStr,\n\n                      \"sl-vue-tree-cursor-inside\":\n                        _vm.cursorPosition &&\n                        _vm.cursorPosition.placement === \"inside\" &&\n                        _vm.cursorPosition.node.pathStr === node.pathStr,\n                      \"sl-vue-tree-node-is-leaf\": node.isLeaf,\n                      \"sl-vue-tree-node-is-folder\": !node.isLeaf\n                    },\n                    attrs: { path: node.pathStr },\n                    on: {\n                      mousedown: function($event) {\n                        _vm.onNodeMousedownHandler($event, node)\n                      },\n                      mouseup: function($event) {\n                        _vm.onNodeMouseupHandler($event, node)\n                      },\n                      contextmenu: function($event) {\n                        _vm.emitNodeContextmenu(node, $event)\n                      },\n                      dblclick: function($event) {\n                        _vm.emitNodeDblclick(node, $event)\n                      },\n                      click: function($event) {\n                        _vm.emitNodeClick(node, $event)\n                      },\n                      dragover: function($event) {\n                        _vm.onExternalDragoverHandler(node, $event)\n                      },\n                      drop: function($event) {\n                        _vm.onExternalDropHandler(node, $event)\n                      }\n                    }\n                  },\n                  [\n                    _vm._l(_vm.gaps, function(gapInd) {\n                      return _c(\"div\", { staticClass: \"sl-vue-tree-gap\" })\n                    }),\n                    _vm._v(\" \"),\n                    _vm.level && _vm.showBranches\n                      ? _c(\n                          \"div\",\n                          { staticClass: \"sl-vue-tree-branch\" },\n                          [\n                            _vm._t(\n                              \"branch\",\n                              [\n                                !node.isLastChild\n                                  ? _c(\"span\", [\n                                      _vm._v(\n                                        \"\\n            \" +\n                                          _vm._s(String.fromCharCode(0x251c)) +\n                                          _vm._s(String.fromCharCode(0x2500)) +\n                                          \" \\n          \"\n                                      )\n                                    ])\n                                  : _vm._e(),\n                                _vm._v(\" \"),\n                                node.isLastChild\n                                  ? _c(\"span\", [\n                                      _vm._v(\n                                        \"\\n            \" +\n                                          _vm._s(String.fromCharCode(0x2514)) +\n                                          _vm._s(String.fromCharCode(0x2500)) +\n                                          \" \\n          \"\n                                      )\n                                    ])\n                                  : _vm._e()\n                              ],\n                              { node: node }\n                            )\n                          ],\n                          2\n                        )\n                      : _vm._e(),\n                    _vm._v(\" \"),\n                    _c(\n                      \"div\",\n                      { staticClass: \"sl-vue-tree-title\" },\n                      [\n                        !node.isLeaf\n                          ? _c(\n                              \"span\",\n                              {\n                                staticClass: \"sl-vue-tree-toggle\",\n                                on: {\n                                  click: function($event) {\n                                    _vm.onToggleHandler($event, node)\n                                  }\n                                }\n                              },\n                              [\n                                _vm._t(\n                                  \"toggle\",\n                                  [\n                                    _c(\"span\", [\n                                      _vm._v(\n                                        \"\\n             \" +\n                                          _vm._s(\n                                            !node.isLeaf\n                                              ? node.isExpanded\n                                                ? \"-\"\n                                                : \"+\"\n                                              : \"\"\n                                          ) +\n                                          \"\\n            \"\n                                      )\n                                    ])\n                                  ],\n                                  { node: node }\n                                )\n                              ],\n                              2\n                            )\n                          : _vm._e(),\n                        _vm._v(\" \"),\n                        _vm._t(\"title\", [_vm._v(_vm._s(node.title))], {\n                          node: node\n                        }),\n                        _vm._v(\" \"),\n                        !node.isLeaf &&\n                        node.children.length == 0 &&\n                        node.isExpanded\n                          ? _vm._t(\"empty-node\", null, { node: node })\n                          : _vm._e()\n                      ],\n                      2\n                    ),\n                    _vm._v(\" \"),\n                    _c(\n                      \"div\",\n                      { staticClass: \"sl-vue-tree-sidebar\" },\n                      [_vm._t(\"sidebar\", null, { node: node })],\n                      2\n                    )\n                  ],\n                  2\n                ),\n                _vm._v(\" \"),\n                node.children && node.children.length && node.isExpanded\n                  ? _c(\"sl-vue-tree\", {\n                      attrs: {\n                        value: node.children,\n                        level: node.level,\n                        parentInd: nodeInd,\n                        allowMultiselect: _vm.allowMultiselect,\n                        allowToggleBranch: _vm.allowToggleBranch,\n                        edgeSize: _vm.edgeSize,\n                        showBranches: _vm.showBranches\n                      },\n                      on: {\n                        dragover: function($event) {\n                          $event.preventDefault()\n                        }\n                      },\n                      scopedSlots: _vm._u([\n                        {\n                          key: \"title\",\n                          fn: function(ref) {\n                            var node = ref.node\n                            return [\n                              _vm._t(\"title\", [_vm._v(_vm._s(node.title))], {\n                                node: node\n                              })\n                            ]\n                          }\n                        },\n                        {\n                          key: \"toggle\",\n                          fn: function(ref) {\n                            var node = ref.node\n                            return [\n                              _vm._t(\n                                \"toggle\",\n                                [\n                                  _c(\"span\", [\n                                    _vm._v(\n                                      \"\\n             \" +\n                                        _vm._s(\n                                          !node.isLeaf\n                                            ? node.isExpanded\n                                              ? \"-\"\n                                              : \"+\"\n                                            : \"\"\n                                        ) +\n                                        \"\\n          \"\n                                    )\n                                  ])\n                                ],\n                                { node: node }\n                              )\n                            ]\n                          }\n                        },\n                        {\n                          key: \"sidebar\",\n                          fn: function(ref) {\n                            var node = ref.node\n                            return [_vm._t(\"sidebar\", null, { node: node })]\n                          }\n                        },\n                        {\n                          key: \"empty-node\",\n                          fn: function(ref) {\n                            var node = ref.node\n                            return [\n                              !node.isLeaf &&\n                              node.children.length == 0 &&\n                              node.isExpanded\n                                ? _vm._t(\"empty-node\", null, { node: node })\n                                : _vm._e()\n                            ]\n                          }\n                        }\n                      ])\n                    })\n                  : _vm._e(),\n                _vm._v(\" \"),\n                _c(\"div\", {\n                  staticClass: \"sl-vue-tree-cursor sl-vue-tree-cursor_after\",\n                  style: {\n                    visibility:\n                      _vm.cursorPosition &&\n                      _vm.cursorPosition.node.pathStr === node.pathStr &&\n                      _vm.cursorPosition.placement === \"after\"\n                        ? \"visible\"\n                        : \"hidden\"\n                  },\n                  on: {\n                    dragover: function($event) {\n                      $event.preventDefault()\n                    }\n                  }\n                })\n              ],\n              1\n            )\n          }),\n          _vm._v(\" \"),\n          _vm.isRoot\n            ? _c(\n                \"div\",\n                {\n                  directives: [\n                    {\n                      name: \"show\",\n                      rawName: \"v-show\",\n                      value: _vm.isDragging,\n                      expression: \"isDragging\"\n                    }\n                  ],\n                  ref: \"dragInfo\",\n                  staticClass: \"sl-vue-tree-drag-info\"\n                },\n                [\n                  _vm._t(\"draginfo\", [\n                    _vm._v(\n                      \"\\n        Items: \" +\n                        _vm._s(_vm.selectionSize) +\n                        \"\\n      \"\n                    )\n                  ])\n                ],\n                2\n              )\n            : _vm._e()\n        ],\n        2\n      )\n    ]\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nexport { render, staticRenderFns }\nif (module.hot) {\n  module.hot.accept()\n  if (module.hot.data) {\n    require(\"vue-hot-reload-api\")      .rerender(\"data-v-0b7c263a\", { render: render, staticRenderFns: staticRenderFns })\n  }\n}","var disposed = false\n/* script */\nexport * from \"!!!./sl-vue-tree.js\"\nimport __vue_script__ from \"!!!./sl-vue-tree.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0b7c263a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./sl-vue-tree.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\nComponent.options.__file = \"src\\\\sl-vue-tree.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n  var hotAPI = require(\"vue-hot-reload-api\")\n  hotAPI.install(require(\"vue\"), false)\n  if (!hotAPI.compatible) return\n  module.hot.accept()\n  if (!module.hot.data) {\n    hotAPI.createRecord(\"data-v-0b7c263a\", Component.options)\n  } else {\n    hotAPI.reload(\"data-v-0b7c263a\", Component.options)\n  }\n  module.hot.dispose(function (data) {\n    disposed = true\n  })\n})()}\n\nexport default Component.exports\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n  scriptExports,\n  render,\n  staticRenderFns,\n  functionalTemplate,\n  injectStyles,\n  scopeId,\n  moduleIdentifier, /* server only */\n  shadowMode /* vue-cli only */\n) {\n  scriptExports = scriptExports || {}\n\n  // ES6 modules interop\n  var type = typeof scriptExports.default\n  if (type === 'object' || type === 'function') {\n    scriptExports = scriptExports.default\n  }\n\n  // Vue.extend constructor export interop\n  var options = typeof scriptExports === 'function'\n    ? scriptExports.options\n    : scriptExports\n\n  // render functions\n  if (render) {\n    options.render = render\n    options.staticRenderFns = staticRenderFns\n    options._compiled = true\n  }\n\n  // functional template\n  if (functionalTemplate) {\n    options.functional = true\n  }\n\n  // scopedId\n  if (scopeId) {\n    options._scopeId = scopeId\n  }\n\n  var hook\n  if (moduleIdentifier) { // server build\n    hook = function (context) {\n      // 2.3 injection\n      context =\n        context || // cached call\n        (this.$vnode && this.$vnode.ssrContext) || // stateful\n        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n      // 2.2 with runInNewContext: true\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__\n      }\n      // inject component styles\n      if (injectStyles) {\n        injectStyles.call(this, context)\n      }\n      // register component module identifier for async chunk inferrence\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier)\n      }\n    }\n    // used by ssr in case component is cached and beforeCreate\n    // never gets called\n    options._ssrRegister = hook\n  } else if (injectStyles) {\n    hook = shadowMode\n      ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n      : injectStyles\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // for template-only hot-reload because in that case the render fn doesn't\n      // go through the normalizer\n      options._injectStyles = hook\n      // register for functioal component in vue file\n      var originalRender = options.render\n      options.render = function renderWithStyleInjection (h, context) {\n        hook.call(context)\n        return originalRender(h, context)\n      }\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate\n      options.beforeCreate = existing\n        ? [].concat(existing, hook)\n        : [hook]\n    }\n  }\n\n  return {\n    exports: scriptExports,\n    options: options\n  }\n}\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack://SlVueTree/webpack/universalModuleDefinition","webpack://SlVueTree/webpack/bootstrap","webpack://SlVueTree/./src/sl-vue-tree.js","webpack://SlVueTree/./src/sl-vue-tree.vue?75ef","webpack://SlVueTree/./src/sl-vue-tree.vue","webpack://SlVueTree/./node_modules/vue-loader/lib/runtime/component-normalizer.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","r","value","n","__esModule","object","property","prototype","hasOwnProperty","p","s","sl_vue_tree","props","type","Array","default","edgeSize","Number","showBranches","Boolean","level","parentInd","allowMultiselect","allowToggleBranch","multiselectKey","String","validator","allowedKeys","multiselectKeys","isArray","filter","keyName","indexOf","length","scrollAreaHeight","maxScrollSpeed","data","rootCursorPosition","scrollIntervalId","scrollSpeed","lastSelectedNode","mouseIsDown","isDragging","lastMousePos","x","y","preventDrag","currentValue","this","mounted","isRoot","document","addEventListener","onDocumentMouseupHandler","beforeDestroy","removeEventListener","watch","newValue","computed","cursorPosition","getParent","nodes","nodeModels","copy","getNodes","children","gaps","push","selectionSize","getSelected","dragSize","getDraggable","methods","setCursorPosition","pos","_this","parentPath","arguments","undefined","isVisible","map","nodeModel","ind","nodePath","concat","getNode","path","siblings","slice","getNodeSiblings","isExpanded","isDraggable","isSelectable","title","isLeaf","isSelected","pathStr","JSON","stringify","isFirstChild","isLastChild","emitInput","getRoot","$emit","emitSelect","selectedNodes","event","emitBeforeDrop","draggingNodes","position","cancel","emitDrop","emitToggle","toggledNode","emitNodeClick","node","emitNodeDblclick","emitNodeContextmenu","onExternalDragoverHandler","preventDefault","getCursorPositionFromCoords","clientX","clientY","onExternalDropHandler","select","_this2","addToSelection","multiselectKeyIsPressed","find","key","selectedNode","newNodes","shiftSelectionMode","shiftKey","shiftSelectionStarted","traverse","onMousemoveHandler","initialDraggingState","isDragStarted","$root","$el","rootRect","getBoundingClientRect","$dragInfo","$refs","dragInfo","dragInfoTop","top","scrollTop","style","marginBottom","dragInfoLeft","left","destNode","placement","scrollBottomLine","bottom","scrollDownSpeed","scrollTopLine","scrollTopSpeed","startScroll","stopScroll","$target","elementFromPoint","$nodeItem","getAttribute","getClosetElementWithPath","parse","nodeHeight","offsetHeight","offsetY","height","getLastNode","getFirstNode","parentElement","onMouseleaveHandler","getNodeEl","querySelector","lastNode","getNextNode","_this3","resultNode","comparePaths","getPrevNode","_this4","prevNodes","path1","path2","onNodeMousedownHandler","button","speed","_this5","setInterval","clearInterval","onNodeMouseupHandler","targetNode","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","Symbol","iterator","next","done","draggingNode","stopDrag","checkNodeIsParent","err","return","nodeModelsSubjectToInsert","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","draggingNodeModel","cancelled","nodeModelsToInsert","_i","insertModels","traverseModels","_markToDelete","splice","onToggleHandler","updateNode","stopPropagation","$parent","patch","assign","cb","shouldStop","nodeInd","itemPath","remove","paths","pathsStr","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","destSiblings","destNodeModel","_destNodeModel$childr","unshift","apply","_toConsumableArray","insertInd","insert","sourceNode","destPath","entity","render","_vm","_h","$createElement","_c","_self","staticClass","class","sl-vue-tree-root","on","mousemove","mouseleave","dragend","$event","onDragendHandler","ref","_l","sl-vue-tree-selected","visibility","dragover","_v","sl-vue-tree-cursor-hover","sl-vue-tree-cursor-inside","sl-vue-tree-node-is-leaf","sl-vue-tree-node-is-folder","attrs","mousedown","mouseup","contextmenu","dblclick","click","drop","gapInd","_t","_e","_s","fromCharCode","scopedSlots","_u","fn","directives","rawName","expression","_withStripped","Component","scriptExports","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","options","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","normalizeComponent","__file","__webpack_exports__"],"mappings":"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","file":"sl-vue-tree.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SlVueTree\"] = factory();\n\telse\n\t\troot[\"SlVueTree\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","\r\nexport default {\r\n  name: 'sl-vue-tree',\r\n  props: {\r\n    value: {\r\n      type: Array,\r\n      default: () => []\r\n    },\r\n    edgeSize: {\r\n      type: Number,\r\n      default: 3\r\n    },\r\n    showBranches: {\r\n      type: Boolean,\r\n      default: false\r\n    },\r\n    level: {\r\n      type: Number,\r\n      default: 0\r\n    },\r\n    parentInd: {\r\n      type: Number\r\n    },\r\n    allowMultiselect: {\r\n      type: Boolean,\r\n      default: true\r\n    },\r\n    allowToggleBranch: {\r\n      type: Boolean,\r\n      default: true\r\n    },\r\n    multiselectKey: {\r\n      type: [String, Array],\r\n      default: function () {\r\n        return ['ctrlKey', 'metaKey']\r\n      },\r\n      validator: function (value) {\r\n        let allowedKeys = ['ctrlKey', 'metaKey', 'altKey'];\r\n        let multiselectKeys = Array.isArray(value) ? value : [value];\r\n        multiselectKeys = multiselectKeys.filter(keyName => allowedKeys.indexOf(keyName ) !== -1);\r\n        return !!multiselectKeys.length;\r\n      }\r\n    },\r\n    scrollAreaHeight: {\r\n      type: Number,\r\n      default: 70\r\n    },\r\n    maxScrollSpeed: {\r\n      type: Number,\r\n      default: 20\r\n    }\r\n  },\r\n\r\n  data() {\r\n    return {\r\n      rootCursorPosition: null,\r\n      scrollIntervalId: 0,\r\n      scrollSpeed: 0,\r\n      lastSelectedNode: null,\r\n      mouseIsDown: false,\r\n      isDragging: false,\r\n      lastMousePos: {x: 0, y: 0},\r\n      preventDrag: false,\r\n      currentValue: this.value\r\n    };\r\n  },\r\n\r\n  mounted() {\r\n    if (this.isRoot) {\r\n      document.addEventListener('mouseup', this.onDocumentMouseupHandler);\r\n    }\r\n  },\r\n\r\n  beforeDestroy() {\r\n    document.removeEventListener('mouseup', this.onDocumentMouseupHandler);\r\n  },\r\n\r\n  watch: {\r\n    value: function (newValue) {\r\n      this.currentValue = newValue;\r\n    }\r\n  },\r\n\r\n  computed: {\r\n    cursorPosition() {\r\n      if (this.isRoot) return this.rootCursorPosition;\r\n      return this.getParent().cursorPosition;\r\n    },\r\n\r\n    nodes() {\r\n      if (this.isRoot) {\r\n        const nodeModels = this.copy(this.currentValue);\r\n        return this.getNodes(nodeModels);\r\n      }\r\n\r\n      return this.getParent().nodes[this.parentInd].children;\r\n    },\r\n    /**\r\n   * gaps is using for nodes indentation\r\n   * @returns {number[]}\r\n   */\r\n    gaps() {\r\n      const gaps = [];\r\n      let i = this.level - 1;\r\n      if (!this.showBranches) i++;\r\n      while (i-- > 0) gaps.push(i);\r\n      return gaps;\r\n    },\r\n\r\n    isRoot() {\r\n      return !this.level\r\n    },\r\n\r\n    selectionSize() {\r\n      return this.getSelected().length;\r\n    },\r\n\r\n    dragSize() {\r\n      return this.getDraggable().length;\r\n    }\r\n  },\r\n  methods: {\r\n\r\n    setCursorPosition(pos) {\r\n      if (this.isRoot) {\r\n        this.rootCursorPosition = pos;\r\n        return;\r\n      }\r\n      this.getParent().setCursorPosition(pos);\r\n    },\r\n\r\n    getNodes(nodeModels, parentPath = [], isVisible = true) {\r\n\r\n      return nodeModels.map((nodeModel, ind) => {\r\n        const nodePath = parentPath.concat(ind);\r\n        return this.getNode(nodePath, nodeModel, nodeModels, isVisible);\r\n      })\r\n    },\r\n\r\n    getNode(\r\n      path,\r\n      nodeModel = null,\r\n      siblings = null,\r\n      isVisible = null\r\n    ) {\r\n      const ind = path.slice(-1)[0];\r\n\r\n      // calculate nodeModel, siblings, isVisible fields if it is not passed as arguments\r\n      siblings = siblings || this.getNodeSiblings(this.currentValue, path);\r\n      nodeModel = nodeModel || (siblings && siblings[ind]) || null;\r\n\r\n      if (isVisible == null) {\r\n        isVisible = this.isVisible(path);\r\n      }\r\n\r\n      if (!nodeModel) return null;\r\n\r\n      const isExpanded = nodeModel.isExpanded == void 0 ? true : !!nodeModel.isExpanded;\r\n      const isDraggable = nodeModel.isDraggable == void 0 ? true : !!nodeModel.isDraggable;\r\n      const isSelectable = nodeModel.isSelectable == void 0 ? true : !!nodeModel.isSelectable;\r\n\r\n      const node = {\r\n\r\n        // define the all ISlTreeNodeModel props\r\n        title: nodeModel.title,\r\n        isLeaf: !!nodeModel.isLeaf,\r\n        children: nodeModel.children ? this.getNodes(nodeModel.children, path, isExpanded) : [],\r\n        isSelected: !!nodeModel.isSelected,\r\n        isExpanded,\r\n        isVisible,\r\n        isDraggable,\r\n        isSelectable,\r\n        data: nodeModel.data !== void 0 ? nodeModel.data : {},\r\n\r\n        // define the all ISlTreeNode computed props\r\n        path: path,\r\n        pathStr: JSON.stringify(path),\r\n        level: path.length,\r\n        ind,\r\n        isFirstChild: ind == 0,\r\n        isLastChild: ind === siblings.length - 1\r\n      };\r\n      return node;\r\n    },\r\n\r\n    isVisible(path) {\r\n      if (path.length < 2) return true;\r\n      let nodeModels = this.currentValue;\r\n\r\n      for (let i = 0; i < path.length - 1; i++) {\r\n        let ind = path[i];\r\n        let nodeModel = nodeModels[ind];\r\n        let isExpanded = nodeModel.isExpanded == void 0 ? true : !!nodeModel.isExpanded;\r\n        if (!isExpanded) return false;\r\n        nodeModels = nodeModel.children;\r\n      }\r\n\r\n      return true;\r\n    },\r\n\r\n    emitInput(newValue) {\r\n      this.currentValue = newValue;\r\n      this.getRoot().$emit('input', newValue);\r\n    },\r\n\r\n    emitSelect(selectedNodes, event) {\r\n      this.getRoot().$emit('select', selectedNodes, event);\r\n    },\r\n\r\n    emitBeforeDrop(draggingNodes, position, cancel) {\r\n      this.getRoot().$emit('beforedrop', draggingNodes, position, cancel);\r\n    },\r\n\r\n    emitDrop(draggingNodes, position, event) {\r\n      this.getRoot().$emit('drop', draggingNodes, position, event);\r\n    },\r\n\r\n    emitToggle(toggledNode, event) {\r\n      this.getRoot().$emit('toggle', toggledNode, event);\r\n    },\r\n\r\n    emitNodeClick(node, event) {\r\n      this.getRoot().$emit('nodeclick', node, event);\r\n    },\r\n\r\n    emitNodeDblclick(node, event) {\r\n      this.getRoot().$emit('nodedblclick', node, event);\r\n    },\r\n\r\n    emitNodeContextmenu(node, event) {\r\n      this.getRoot().$emit('nodecontextmenu', node, event);\r\n    },\r\n\r\n    onExternalDragoverHandler(node, event) {\r\n      event.preventDefault();\r\n      const root = this.getRoot();\r\n      const cursorPosition = root.getCursorPositionFromCoords(event.clientX, event.clientY);\r\n      root.setCursorPosition(cursorPosition);\r\n      root.$emit('externaldragover', cursorPosition, event);\r\n    },\r\n\r\n    onExternalDropHandler(node, event) {\r\n      const root = this.getRoot();\r\n      const cursorPosition = root.getCursorPositionFromCoords(event.clientX, event.clientY);\r\n      root.$emit('externaldrop', cursorPosition, event);\r\n      this.setCursorPosition(null);\r\n    },\r\n\r\n    select(path, addToSelection = false, event = null) {\r\n      const multiselectKeys = Array.isArray(this.multiselectKey) ?\r\n        this.multiselectKey:\r\n        [this.multiselectKey];\r\n      const multiselectKeyIsPressed = event && !!multiselectKeys.find(key => event[key]);\r\n      addToSelection = (multiselectKeyIsPressed || addToSelection) && this.allowMultiselect ;\r\n\r\n      const selectedNode = this.getNode(path);\r\n      if (!selectedNode) return null;\r\n      const newNodes = this.copy(this.currentValue);\r\n      const shiftSelectionMode = this.allowMultiselect && event && event.shiftKey && this.lastSelectedNode;\r\n      const selectedNodes = [];\r\n      let shiftSelectionStarted = false;\r\n\r\n      this.traverse((node, nodeModel) => {\r\n\r\n\r\n        if (shiftSelectionMode) {\r\n          if (node.pathStr === selectedNode.pathStr || node.pathStr === this.lastSelectedNode.pathStr) {\r\n            nodeModel.isSelected = node.isSelectable;\r\n            shiftSelectionStarted = !shiftSelectionStarted;\r\n          }\r\n          if (shiftSelectionStarted) nodeModel.isSelected = node.isSelectable;\r\n        } else if (node.pathStr === selectedNode.pathStr) {\r\n          nodeModel.isSelected = node.isSelectable;\r\n        } else if (!addToSelection) {\r\n          if (nodeModel.isSelected) nodeModel.isSelected = false;\r\n        }\r\n\r\n        if (nodeModel.isSelected) selectedNodes.push(node);\r\n\r\n      }, newNodes);\r\n\r\n\r\n      this.lastSelectedNode = selectedNode;\r\n      this.emitInput(newNodes);\r\n      this.emitSelect(selectedNodes, event);\r\n      return selectedNode;\r\n    },\r\n\r\n    onMousemoveHandler(event) {\r\n      if (!this.isRoot) {\r\n        this.getRoot().onMousemoveHandler(event);\r\n        return;\r\n      }\r\n\r\n      if (this.preventDrag) return;\r\n\r\n      const initialDraggingState = this.isDragging;\r\n      const isDragging =\r\n        this.isDragging || (\r\n        this.mouseIsDown &&\r\n        (this.lastMousePos.x !== event.clientX || this.lastMousePos.y !== event.clientY)\r\n      );\r\n\r\n      const isDragStarted = initialDraggingState === false && isDragging === true;\r\n\r\n      this.lastMousePos = {\r\n        x: event.clientX,\r\n        y: event.clientY\r\n      };\r\n\r\n      if (!isDragging) return;\r\n\r\n      const $root = this.getRoot().$el;\r\n      const rootRect = $root.getBoundingClientRect();\r\n      const $dragInfo = this.$refs.dragInfo;\r\n      const dragInfoTop = (event.clientY - rootRect.top + $root.scrollTop - ($dragInfo.style.marginBottom | 0) );\r\n      const dragInfoLeft = (event.clientX - rootRect.left);\r\n\r\n      $dragInfo.style.top = dragInfoTop + 'px';\r\n      $dragInfo.style.left = dragInfoLeft + 'px';\r\n\r\n      const cursorPosition = this.getCursorPositionFromCoords(event.clientX, event.clientY);\r\n      const destNode = cursorPosition.node;\r\n      const placement = cursorPosition.placement;\r\n\r\n      if (isDragStarted && !destNode.isSelected) {\r\n        this.select(destNode.path, false, event);\r\n      }\r\n\r\n      const draggableNodes = this.getDraggable();\r\n      if (!draggableNodes.length) {\r\n        this.preventDrag = true;\r\n        return;\r\n      }\r\n\r\n      this.isDragging = isDragging;\r\n\r\n      this.setCursorPosition({ node: destNode, placement });\r\n\r\n      const scrollBottomLine = rootRect.bottom - this.scrollAreaHeight;\r\n      const scrollDownSpeed = (event.clientY - scrollBottomLine) / (rootRect.bottom - scrollBottomLine);\r\n      const scrollTopLine = rootRect.top + this.scrollAreaHeight;\r\n      const scrollTopSpeed = (scrollTopLine - event.clientY) / (scrollTopLine - rootRect.top);\r\n\r\n      if (scrollDownSpeed > 0) {\r\n        this.startScroll(scrollDownSpeed);\r\n      } else if (scrollTopSpeed > 0) {\r\n        this.startScroll(-scrollTopSpeed)\r\n      } else {\r\n        this.stopScroll();\r\n      }\r\n    },\r\n\r\n    getCursorPositionFromCoords(x, y) {\r\n      const $target = document.elementFromPoint(x, y);\r\n      const $nodeItem = $target.getAttribute('path') ? $target : this.getClosetElementWithPath($target);\r\n      let destNode;\r\n      let placement;\r\n\r\n      if ($nodeItem) {\r\n\r\n        if (!$nodeItem) return;\r\n\r\n        destNode = this.getNode(JSON.parse($nodeItem.getAttribute('path')));\r\n\r\n        const nodeHeight = $nodeItem.offsetHeight;\r\n        const edgeSize = this.edgeSize;\r\n        const offsetY = y - $nodeItem.getBoundingClientRect().top;\r\n\r\n\r\n        if (destNode.isLeaf) {\r\n          placement = offsetY >= nodeHeight / 2 ? 'after' : 'before';\r\n        } else {\r\n          if (offsetY <= edgeSize) {\r\n            placement = 'before';\r\n          } else if (offsetY >= nodeHeight - edgeSize) {\r\n            placement = 'after';\r\n          } else {\r\n            placement = 'inside';\r\n          }\r\n        }\r\n      } else {\r\n        const $root = this.getRoot().$el;\r\n        const rootRect = $root.getBoundingClientRect();\r\n        if (y > rootRect.top + (rootRect.height / 2)) {\r\n          placement = 'after';\r\n          destNode = this.getLastNode();\r\n        } else {\r\n          placement = 'before';\r\n          destNode = this.getFirstNode();\r\n        }\r\n      }\r\n\r\n      return { node: destNode, placement };\r\n    },\r\n\r\n    getClosetElementWithPath($el) {\r\n      if (!$el) return null;\r\n      if ($el.getAttribute('path')) return $el;\r\n      return this.getClosetElementWithPath($el.parentElement);\r\n    },\r\n\r\n    onMouseleaveHandler(event) {\r\n      if (!this.isRoot || !this.isDragging) return;\r\n      const $root = this.getRoot().$el;\r\n      const rootRect = $root.getBoundingClientRect();\r\n      if (event.clientY >= rootRect.bottom) {\r\n        this.setCursorPosition({ node: this.nodes.slice(-1)[0], placement: 'after' });\r\n      } else if (event.clientY < rootRect.top) {\r\n        this.setCursorPosition({ node: this.getFirstNode(), placement: 'before'});\r\n      }\r\n    },\r\n\r\n    getNodeEl(path) {\r\n      this.getRoot().$el.querySelector(`[path=\"${JSON.stringify(path)}\"]`);\r\n    },\r\n\r\n    getLastNode() {\r\n      let lastNode  = null;\r\n      this.traverse((node) => {\r\n        lastNode = node;\r\n      });\r\n      return lastNode;\r\n    },\r\n\r\n    getFirstNode() {\r\n      return this.getNode([0]);\r\n    },\r\n\r\n    getNextNode(path, filter = null) {\r\n\r\n      let resultNode = null;\r\n\r\n      this.traverse((node) => {\r\n        if (this.comparePaths(node.path, path) < 1) return;\r\n\r\n        if (!filter || filter(node)) {\r\n          resultNode = node;\r\n          return false; // stop traverse\r\n        }\r\n\r\n      });\r\n\r\n      return resultNode;\r\n    },\r\n\r\n    getPrevNode(path, filter) {\r\n      let prevNodes = [];\r\n\r\n      this.traverse((node) => {\r\n        if (this.comparePaths(node.path, path) >= 0) {\r\n          return false;\r\n        }\r\n        prevNodes.push(node);\r\n      });\r\n\r\n      let i = prevNodes.length;\r\n      while (i--) {\r\n        const node = prevNodes[i];\r\n        if (!filter || filter(node)) return node;\r\n      }\r\n\r\n      return null;\r\n    },\r\n\r\n    /**\r\n     * returns 1 if path1 > path2\r\n     * returns -1 if path1 < path2\r\n     * returns 0 if path1 == path2\r\n     *\r\n     * examples\r\n     *\r\n     * [1, 2, 3] < [1, 2, 4]\r\n     * [1, 1, 3] < [1, 2, 3]\r\n     * [1, 2, 3] > [1, 2, 0]\r\n     * [1, 2, 3] > [1, 1, 3]\r\n     * [1, 2] < [1, 2, 0]\r\n     *\r\n     */\r\n    comparePaths(path1, path2) {\r\n      for (let i = 0; i < path1.length; i++) {\r\n        if (path2[i] == void 0) return 1;\r\n        if (path1[i] > path2[i]) return 1;\r\n        if (path1[i] < path2[i]) return -1;\r\n      }\r\n      return path2[path1.length] == void 0 ? 0 : -1;\r\n    },\r\n\r\n    onNodeMousedownHandler(event, node) {\r\n      // handle only left mouse button\r\n      if (event.button !== 0) return;\r\n\r\n      if (!this.isRoot) {\r\n        this.getRoot().onNodeMousedownHandler(event, node);\r\n        return;\r\n      }\r\n      this.mouseIsDown = true;\r\n    },\r\n\r\n\r\n    startScroll(speed) {\r\n      const $root = this.getRoot().$el;\r\n      if (this.scrollSpeed === speed) {\r\n        return;\r\n      } else if (this.scrollIntervalId) {\r\n        this.stopScroll();\r\n      }\r\n\r\n      this.scrollSpeed = speed;\r\n      this.scrollIntervalId = setInterval(() => {\r\n        $root.scrollTop += this.maxScrollSpeed * speed;\r\n      }, 20);\r\n    },\r\n\r\n    stopScroll() {\r\n      clearInterval(this.scrollIntervalId);\r\n      this.scrollIntervalId = 0;\r\n      this.scrollSpeed = 0;\r\n    },\r\n\r\n    onDocumentMouseupHandler(event) {\r\n      if (this.isDragging) this.onNodeMouseupHandler(event);\r\n    },\r\n\r\n    onNodeMouseupHandler(event, targetNode = null) {\r\n\r\n      // handle only left mouse button\r\n      if (event.button !== 0) return;\r\n\r\n      if (!this.isRoot) {\r\n        this.getRoot().onNodeMouseupHandler(event, targetNode);\r\n        return;\r\n      }\r\n\r\n      this.mouseIsDown = false;\r\n\r\n      if (!this.isDragging && targetNode && !this.preventDrag) {\r\n        this.select(targetNode.path, false, event);\r\n      }\r\n\r\n      this.preventDrag = false;\r\n\r\n      if (!this.cursorPosition) {\r\n        this.stopDrag();\r\n        return;\r\n      };\r\n\r\n\r\n      const draggingNodes = this.getDraggable();\r\n\r\n      // check that nodes is possible to insert\r\n      for (let draggingNode of draggingNodes) {\r\n        if (draggingNode.pathStr == this.cursorPosition.node.pathStr) {\r\n          this.stopDrag();\r\n          return;\r\n        }\r\n\r\n        if (this.checkNodeIsParent(draggingNode, this.cursorPosition.node)) {\r\n          this.stopDrag();\r\n          return;\r\n        }\r\n      }\r\n\r\n      const newNodes = this.copy(this.currentValue);\r\n      const nodeModelsSubjectToInsert = [];\r\n\r\n      // find dragging model to delete\r\n      for (let draggingNode of draggingNodes) {\r\n        const sourceSiblings = this.getNodeSiblings(newNodes, draggingNode.path);\r\n        const draggingNodeModel = sourceSiblings[draggingNode.ind];\r\n        nodeModelsSubjectToInsert.push(draggingNodeModel);\r\n      }\r\n\r\n      // allow the drop to be cancelled\r\n      let cancelled = false;\r\n      this.emitBeforeDrop(draggingNodes, this.cursorPosition, () => cancelled = true);\r\n\r\n      if (cancelled) {\r\n          this.stopDrag();\r\n          return;\r\n      }\r\n\r\n      const nodeModelsToInsert = [];\r\n\r\n      // mark dragging model to delete\r\n      for (let draggingNodeModel of nodeModelsSubjectToInsert) {\r\n          nodeModelsToInsert.push(this.copy(draggingNodeModel));\r\n          draggingNodeModel['_markToDelete'] = true;\r\n      }\r\n\r\n      // insert dragging nodes to the new place\r\n      this.insertModels(this.cursorPosition, nodeModelsToInsert, newNodes);\r\n\r\n\r\n      // delete dragging node from the old place\r\n      this.traverseModels((nodeModel, siblings, ind) => {\r\n        if (!nodeModel._markToDelete) return;\r\n        siblings.splice(ind, 1);\r\n      }, newNodes);\r\n\r\n\r\n      this.lastSelectedNode = null;\r\n      this.emitInput(newNodes);\r\n      this.emitDrop(draggingNodes, this.cursorPosition, event);\r\n      this.stopDrag();\r\n    },\r\n\r\n\r\n    onToggleHandler(event, node) {\r\n      if (!this.allowToggleBranch) return;\r\n\r\n      this.updateNode(node.path, { isExpanded: !node.isExpanded });\r\n      this.emitToggle(node, event);\r\n      event.stopPropagation();\r\n    },\r\n\r\n    stopDrag() {\r\n      this.isDragging = false;\r\n      this.mouseIsDown = false;\r\n      this.setCursorPosition(null);\r\n      this.stopScroll();\r\n    },\r\n\r\n\r\n    getParent() {\r\n      return this.$parent;\r\n    },\r\n\r\n    getRoot() {\r\n      if (this.isRoot) return this;\r\n      return this.getParent().getRoot();\r\n    },\r\n\r\n    getNodeSiblings(nodes, path) {\r\n      if (path.length === 1) return nodes;\r\n      return this.getNodeSiblings(nodes[path[0]].children, path.slice(1));\r\n    },\r\n\r\n\r\n    updateNode(path, patch) {\r\n      if (!this.isRoot) {\r\n        this.getParent().updateNode(path, patch);\r\n        return;\r\n      }\r\n\r\n      const pathStr = JSON.stringify(path);\r\n      const newNodes = this.copy(this.currentValue);\r\n      this.traverse((node, nodeModel) => {\r\n        if (node.pathStr !== pathStr) return;\r\n        Object.assign(nodeModel, patch);\r\n      }, newNodes);\r\n\r\n      this.emitInput(newNodes);\r\n    },\r\n\r\n    getSelected() {\r\n      const selectedNodes = [];\r\n      this.traverse((node) => {\r\n        if (node.isSelected) selectedNodes.push(node);\r\n      });\r\n      return selectedNodes;\r\n    },\r\n\r\n    getDraggable() {\r\n      const selectedNodes = [];\r\n      this.traverse((node) => {\r\n        if (node.isSelected && node.isDraggable) selectedNodes.push(node);\r\n      });\r\n      return selectedNodes;\r\n    },\r\n\r\n\r\n    traverse(\r\n      cb,\r\n      nodeModels = null,\r\n      parentPath = []\r\n    ) {\r\n      if (!nodeModels) nodeModels = this.currentValue;\r\n\r\n      let shouldStop = false;\r\n\r\n      const nodes = [];\r\n\r\n      for (let nodeInd = 0; nodeInd < nodeModels.length; nodeInd++) {\r\n        const nodeModel = nodeModels[nodeInd];\r\n        const itemPath = parentPath.concat(nodeInd);\r\n        const node = this.getNode(itemPath, nodeModel, nodeModels);\r\n        shouldStop = cb(node, nodeModel, nodeModels) === false;\r\n        nodes.push(node);\r\n\r\n        if (shouldStop) break;\r\n\r\n        if (nodeModel.children) {\r\n          shouldStop = this.traverse(cb, nodeModel.children, itemPath) === false;\r\n          if (shouldStop) break;\r\n        }\r\n      }\r\n\r\n      return !shouldStop ? nodes : false;\r\n    },\r\n\r\n    traverseModels(cb, nodeModels) {\r\n      let i = nodeModels.length;\r\n      while (i--) {\r\n        const nodeModel = nodeModels[i];\r\n        if (nodeModel.children) this.traverseModels(cb, nodeModel.children);\r\n        cb(nodeModel, nodeModels, i);\r\n      }\r\n      return nodeModels;\r\n    },\r\n\r\n    remove(paths) {\r\n      const pathsStr = paths.map(path => JSON.stringify(path));\r\n      const newNodes = this.copy(this.currentValue);\r\n      this.traverse( (node, nodeModel, siblings) => {\r\n        for (const pathStr of pathsStr) {\r\n          if (node.pathStr === pathStr) nodeModel._markToDelete = true;\r\n        }\r\n      }, newNodes);\r\n\r\n      this.traverseModels((nodeModel, siblings, ind) => {\r\n        if (!nodeModel._markToDelete) return;\r\n        siblings.splice(ind, 1);\r\n      }, newNodes);\r\n\r\n      this.emitInput(newNodes);\r\n    },\r\n\r\n    insertModels(cursorPosition, nodeModels, newNodes) {\r\n      const destNode = cursorPosition.node;\r\n      const destSiblings = this.getNodeSiblings(newNodes, destNode.path);\r\n      const destNodeModel = destSiblings[destNode.ind];\r\n\r\n      if (cursorPosition.placement === 'inside') {\r\n        destNodeModel.children = destNodeModel.children || [];\r\n        destNodeModel.children.unshift(...nodeModels);\r\n      } else {\r\n        const insertInd = cursorPosition.placement === 'before' ?\r\n          destNode.ind :\r\n          destNode.ind + 1;\r\n\r\n        destSiblings.splice(insertInd, 0, ...nodeModels);\r\n      }\r\n    },\r\n\r\n    insert(cursorPosition, nodeModel) {\r\n      const nodeModels = Array.isArray(nodeModel) ? nodeModel : [nodeModel];\r\n      const newNodes = this.copy(this.currentValue);\r\n\r\n      this.insertModels(cursorPosition, nodeModels, newNodes);\r\n\r\n      this.emitInput(newNodes);\r\n    },\r\n\r\n    checkNodeIsParent(sourceNode, destNode) {\r\n      const destPath = destNode.path;\r\n      return JSON.stringify(destPath.slice(0, sourceNode.path.length)) == sourceNode.pathStr;\r\n    },\r\n\r\n    copy(entity) {\r\n      return JSON.parse(JSON.stringify(entity));\r\n    }\r\n\r\n  }\r\n};\r\n","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    {\n      staticClass: \"sl-vue-tree\",\n      class: { \"sl-vue-tree-root\": _vm.isRoot },\n      on: {\n        mousemove: _vm.onMousemoveHandler,\n        mouseleave: _vm.onMouseleaveHandler,\n        dragend: function($event) {\n          _vm.onDragendHandler(null, $event)\n        }\n      }\n    },\n    [\n      _c(\n        \"div\",\n        { ref: \"nodes\", staticClass: \"sl-vue-tree-nodes-list\" },\n        [\n          _vm._l(_vm.nodes, function(node, nodeInd) {\n            return _c(\n              \"div\",\n              {\n                staticClass: \"sl-vue-tree-node\",\n                class: { \"sl-vue-tree-selected\": node.isSelected }\n              },\n              [\n                _c(\"div\", {\n                  staticClass: \"sl-vue-tree-cursor sl-vue-tree-cursor_before\",\n                  style: {\n                    visibility:\n                      _vm.cursorPosition &&\n                      _vm.cursorPosition.node.pathStr === node.pathStr &&\n                      _vm.cursorPosition.placement === \"before\"\n                        ? \"visible\"\n                        : \"hidden\"\n                  },\n                  on: {\n                    dragover: function($event) {\n                      $event.preventDefault()\n                    }\n                  }\n                }),\n                _vm._v(\" \"),\n                _c(\n                  \"div\",\n                  {\n                    staticClass: \"sl-vue-tree-node-item\",\n                    class: {\n                      \"sl-vue-tree-cursor-hover\":\n                        _vm.cursorPosition &&\n                        _vm.cursorPosition.node.pathStr === node.pathStr,\n\n                      \"sl-vue-tree-cursor-inside\":\n                        _vm.cursorPosition &&\n                        _vm.cursorPosition.placement === \"inside\" &&\n                        _vm.cursorPosition.node.pathStr === node.pathStr,\n                      \"sl-vue-tree-node-is-leaf\": node.isLeaf,\n                      \"sl-vue-tree-node-is-folder\": !node.isLeaf\n                    },\n                    attrs: { path: node.pathStr },\n                    on: {\n                      mousedown: function($event) {\n                        _vm.onNodeMousedownHandler($event, node)\n                      },\n                      mouseup: function($event) {\n                        _vm.onNodeMouseupHandler($event, node)\n                      },\n                      contextmenu: function($event) {\n                        _vm.emitNodeContextmenu(node, $event)\n                      },\n                      dblclick: function($event) {\n                        _vm.emitNodeDblclick(node, $event)\n                      },\n                      click: function($event) {\n                        _vm.emitNodeClick(node, $event)\n                      },\n                      dragover: function($event) {\n                        _vm.onExternalDragoverHandler(node, $event)\n                      },\n                      drop: function($event) {\n                        _vm.onExternalDropHandler(node, $event)\n                      }\n                    }\n                  },\n                  [\n                    _vm._l(_vm.gaps, function(gapInd) {\n                      return _c(\"div\", { staticClass: \"sl-vue-tree-gap\" })\n                    }),\n                    _vm._v(\" \"),\n                    _vm.level && _vm.showBranches\n                      ? _c(\n                          \"div\",\n                          { staticClass: \"sl-vue-tree-branch\" },\n                          [\n                            _vm._t(\n                              \"branch\",\n                              [\n                                !node.isLastChild\n                                  ? _c(\"span\", [\n                                      _vm._v(\n                                        \"\\n            \" +\n                                          _vm._s(String.fromCharCode(0x251c)) +\n                                          _vm._s(String.fromCharCode(0x2500)) +\n                                          \" \\n          \"\n                                      )\n                                    ])\n                                  : _vm._e(),\n                                _vm._v(\" \"),\n                                node.isLastChild\n                                  ? _c(\"span\", [\n                                      _vm._v(\n                                        \"\\n            \" +\n                                          _vm._s(String.fromCharCode(0x2514)) +\n                                          _vm._s(String.fromCharCode(0x2500)) +\n                                          \" \\n          \"\n                                      )\n                                    ])\n                                  : _vm._e()\n                              ],\n                              { node: node }\n                            )\n                          ],\n                          2\n                        )\n                      : _vm._e(),\n                    _vm._v(\" \"),\n                    _c(\n                      \"div\",\n                      { staticClass: \"sl-vue-tree-title\" },\n                      [\n                        !node.isLeaf\n                          ? _c(\n                              \"span\",\n                              {\n                                staticClass: \"sl-vue-tree-toggle\",\n                                on: {\n                                  click: function($event) {\n                                    _vm.onToggleHandler($event, node)\n                                  }\n                                }\n                              },\n                              [\n                                _vm._t(\n                                  \"toggle\",\n                                  [\n                                    _c(\"span\", [\n                                      _vm._v(\n                                        \"\\n             \" +\n                                          _vm._s(\n                                            !node.isLeaf\n                                              ? node.isExpanded\n                                                ? \"-\"\n                                                : \"+\"\n                                              : \"\"\n                                          ) +\n                                          \"\\n            \"\n                                      )\n                                    ])\n                                  ],\n                                  { node: node }\n                                )\n                              ],\n                              2\n                            )\n                          : _vm._e(),\n                        _vm._v(\" \"),\n                        _vm._t(\"title\", [_vm._v(_vm._s(node.title))], {\n                          node: node\n                        }),\n                        _vm._v(\" \"),\n                        !node.isLeaf &&\n                        node.children.length == 0 &&\n                        node.isExpanded\n                          ? _vm._t(\"empty-node\", null, { node: node })\n                          : _vm._e()\n                      ],\n                      2\n                    ),\n                    _vm._v(\" \"),\n                    _c(\n                      \"div\",\n                      { staticClass: \"sl-vue-tree-sidebar\" },\n                      [_vm._t(\"sidebar\", null, { node: node })],\n                      2\n                    )\n                  ],\n                  2\n                ),\n                _vm._v(\" \"),\n                node.children && node.children.length && node.isExpanded\n                  ? _c(\"sl-vue-tree\", {\n                      attrs: {\n                        value: node.children,\n                        level: node.level,\n                        parentInd: nodeInd,\n                        allowMultiselect: _vm.allowMultiselect,\n                        allowToggleBranch: _vm.allowToggleBranch,\n                        edgeSize: _vm.edgeSize,\n                        showBranches: _vm.showBranches\n                      },\n                      on: {\n                        dragover: function($event) {\n                          $event.preventDefault()\n                        }\n                      },\n                      scopedSlots: _vm._u([\n                        {\n                          key: \"title\",\n                          fn: function(ref) {\n                            var node = ref.node\n                            return [\n                              _vm._t(\"title\", [_vm._v(_vm._s(node.title))], {\n                                node: node\n                              })\n                            ]\n                          }\n                        },\n                        {\n                          key: \"toggle\",\n                          fn: function(ref) {\n                            var node = ref.node\n                            return [\n                              _vm._t(\n                                \"toggle\",\n                                [\n                                  _c(\"span\", [\n                                    _vm._v(\n                                      \"\\n             \" +\n                                        _vm._s(\n                                          !node.isLeaf\n                                            ? node.isExpanded\n                                              ? \"-\"\n                                              : \"+\"\n                                            : \"\"\n                                        ) +\n                                        \"\\n          \"\n                                    )\n                                  ])\n                                ],\n                                { node: node }\n                              )\n                            ]\n                          }\n                        },\n                        {\n                          key: \"sidebar\",\n                          fn: function(ref) {\n                            var node = ref.node\n                            return [_vm._t(\"sidebar\", null, { node: node })]\n                          }\n                        },\n                        {\n                          key: \"empty-node\",\n                          fn: function(ref) {\n                            var node = ref.node\n                            return [\n                              !node.isLeaf &&\n                              node.children.length == 0 &&\n                              node.isExpanded\n                                ? _vm._t(\"empty-node\", null, { node: node })\n                                : _vm._e()\n                            ]\n                          }\n                        }\n                      ])\n                    })\n                  : _vm._e(),\n                _vm._v(\" \"),\n                _c(\"div\", {\n                  staticClass: \"sl-vue-tree-cursor sl-vue-tree-cursor_after\",\n                  style: {\n                    visibility:\n                      _vm.cursorPosition &&\n                      _vm.cursorPosition.node.pathStr === node.pathStr &&\n                      _vm.cursorPosition.placement === \"after\"\n                        ? \"visible\"\n                        : \"hidden\"\n                  },\n                  on: {\n                    dragover: function($event) {\n                      $event.preventDefault()\n                    }\n                  }\n                })\n              ],\n              1\n            )\n          }),\n          _vm._v(\" \"),\n          _vm.isRoot\n            ? _c(\n                \"div\",\n                {\n                  directives: [\n                    {\n                      name: \"show\",\n                      rawName: \"v-show\",\n                      value: _vm.isDragging,\n                      expression: \"isDragging\"\n                    }\n                  ],\n                  ref: \"dragInfo\",\n                  staticClass: \"sl-vue-tree-drag-info\"\n                },\n                [\n                  _vm._t(\"draginfo\", [\n                    _vm._v(\n                      \"\\n        Items: \" +\n                        _vm._s(_vm.selectionSize) +\n                        \"\\n      \"\n                    )\n                  ])\n                ],\n                2\n              )\n            : _vm._e()\n        ],\n        2\n      )\n    ]\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nexport { render, staticRenderFns }\nif (module.hot) {\n  module.hot.accept()\n  if (module.hot.data) {\n    require(\"vue-hot-reload-api\")      .rerender(\"data-v-0b7c263a\", { render: render, staticRenderFns: staticRenderFns })\n  }\n}","var disposed = false\n/* script */\nexport * from \"!!babel-loader!./sl-vue-tree.js\"\nimport __vue_script__ from \"!!babel-loader!./sl-vue-tree.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0b7c263a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./sl-vue-tree.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\nComponent.options.__file = \"src\\\\sl-vue-tree.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n  var hotAPI = require(\"vue-hot-reload-api\")\n  hotAPI.install(require(\"vue\"), false)\n  if (!hotAPI.compatible) return\n  module.hot.accept()\n  if (!module.hot.data) {\n    hotAPI.createRecord(\"data-v-0b7c263a\", Component.options)\n  } else {\n    hotAPI.reload(\"data-v-0b7c263a\", Component.options)\n  }\n  module.hot.dispose(function (data) {\n    disposed = true\n  })\n})()}\n\nexport default Component.exports\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n  scriptExports,\n  render,\n  staticRenderFns,\n  functionalTemplate,\n  injectStyles,\n  scopeId,\n  moduleIdentifier, /* server only */\n  shadowMode /* vue-cli only */\n) {\n  scriptExports = scriptExports || {}\n\n  // ES6 modules interop\n  var type = typeof scriptExports.default\n  if (type === 'object' || type === 'function') {\n    scriptExports = scriptExports.default\n  }\n\n  // Vue.extend constructor export interop\n  var options = typeof scriptExports === 'function'\n    ? scriptExports.options\n    : scriptExports\n\n  // render functions\n  if (render) {\n    options.render = render\n    options.staticRenderFns = staticRenderFns\n    options._compiled = true\n  }\n\n  // functional template\n  if (functionalTemplate) {\n    options.functional = true\n  }\n\n  // scopedId\n  if (scopeId) {\n    options._scopeId = scopeId\n  }\n\n  var hook\n  if (moduleIdentifier) { // server build\n    hook = function (context) {\n      // 2.3 injection\n      context =\n        context || // cached call\n        (this.$vnode && this.$vnode.ssrContext) || // stateful\n        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n      // 2.2 with runInNewContext: true\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__\n      }\n      // inject component styles\n      if (injectStyles) {\n        injectStyles.call(this, context)\n      }\n      // register component module identifier for async chunk inferrence\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier)\n      }\n    }\n    // used by ssr in case component is cached and beforeCreate\n    // never gets called\n    options._ssrRegister = hook\n  } else if (injectStyles) {\n    hook = shadowMode\n      ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n      : injectStyles\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // for template-only hot-reload because in that case the render fn doesn't\n      // go through the normalizer\n      options._injectStyles = hook\n      // register for functioal component in vue file\n      var originalRender = options.render\n      options.render = function renderWithStyleInjection (h, context) {\n        hook.call(context)\n        return originalRender(h, context)\n      }\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate\n      options.beforeCreate = existing\n        ? [].concat(existing, hook)\n        : [hook]\n    }\n  }\n\n  return {\n    exports: scriptExports,\n    options: options\n  }\n}\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 25d02c8..b0bca12 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
 {
   "name": "sl-vue-tree",
-  "version": "1.8.2",
+  "version": "1.8.4",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
@@ -10,7 +10,7 @@
       "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
       "dev": true,
       "requires": {
-        "@babel/highlight": "7.0.0"
+        "@babel/highlight": "^7.0.0"
       }
     },
     "@babel/core": {
@@ -19,20 +19,20 @@
       "integrity": "sha512-IFeSSnjXdhDaoysIlev//UzHZbdEmm7D0EIH2qtse9xK7mXEZQpYjs2P00XlP1qYsYvid79p+Zgg6tz1mp6iVw==",
       "dev": true,
       "requires": {
-        "@babel/code-frame": "7.0.0",
-        "@babel/generator": "7.1.3",
-        "@babel/helpers": "7.1.2",
-        "@babel/parser": "7.1.3",
-        "@babel/template": "7.1.2",
-        "@babel/traverse": "7.1.4",
-        "@babel/types": "7.1.3",
-        "convert-source-map": "1.6.0",
-        "debug": "3.2.6",
-        "json5": "0.5.1",
-        "lodash": "4.17.11",
-        "resolve": "1.7.1",
-        "semver": "5.6.0",
-        "source-map": "0.5.7"
+        "@babel/code-frame": "^7.0.0",
+        "@babel/generator": "^7.1.2",
+        "@babel/helpers": "^7.1.2",
+        "@babel/parser": "^7.1.2",
+        "@babel/template": "^7.1.2",
+        "@babel/traverse": "^7.1.0",
+        "@babel/types": "^7.1.2",
+        "convert-source-map": "^1.1.0",
+        "debug": "^3.1.0",
+        "json5": "^0.5.0",
+        "lodash": "^4.17.10",
+        "resolve": "^1.3.2",
+        "semver": "^5.4.1",
+        "source-map": "^0.5.0"
       },
       "dependencies": {
         "debug": {
@@ -41,7 +41,7 @@
           "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
           "dev": true,
           "requires": {
-            "ms": "2.1.1"
+            "ms": "^2.1.1"
           }
         },
         "ms": {
@@ -58,11 +58,11 @@
       "integrity": "sha512-ZoCZGcfIJFJuZBqxcY9OjC1KW2lWK64qrX1o4UYL3yshVhwKFYgzpWZ0vvtGMNJdTlvkw0W+HR1VnYN8q3QPFQ==",
       "dev": true,
       "requires": {
-        "@babel/types": "7.1.3",
-        "jsesc": "2.5.1",
-        "lodash": "4.17.11",
-        "source-map": "0.5.7",
-        "trim-right": "1.0.1"
+        "@babel/types": "^7.1.3",
+        "jsesc": "^2.5.1",
+        "lodash": "^4.17.10",
+        "source-map": "^0.5.0",
+        "trim-right": "^1.0.1"
       },
       "dependencies": {
         "jsesc": {
@@ -79,7 +79,7 @@
       "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==",
       "dev": true,
       "requires": {
-        "@babel/types": "7.1.3"
+        "@babel/types": "^7.0.0"
       }
     },
     "@babel/helper-builder-binary-assignment-operator-visitor": {
@@ -88,8 +88,8 @@
       "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==",
       "dev": true,
       "requires": {
-        "@babel/helper-explode-assignable-expression": "7.1.0",
-        "@babel/types": "7.1.3"
+        "@babel/helper-explode-assignable-expression": "^7.1.0",
+        "@babel/types": "^7.0.0"
       }
     },
     "@babel/helper-call-delegate": {
@@ -98,9 +98,9 @@
       "integrity": "sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-hoist-variables": "7.0.0",
-        "@babel/traverse": "7.1.4",
-        "@babel/types": "7.1.3"
+        "@babel/helper-hoist-variables": "^7.0.0",
+        "@babel/traverse": "^7.1.0",
+        "@babel/types": "^7.0.0"
       }
     },
     "@babel/helper-define-map": {
@@ -109,9 +109,9 @@
       "integrity": "sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==",
       "dev": true,
       "requires": {
-        "@babel/helper-function-name": "7.1.0",
-        "@babel/types": "7.1.3",
-        "lodash": "4.17.11"
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/types": "^7.0.0",
+        "lodash": "^4.17.10"
       }
     },
     "@babel/helper-explode-assignable-expression": {
@@ -120,8 +120,8 @@
       "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==",
       "dev": true,
       "requires": {
-        "@babel/traverse": "7.1.4",
-        "@babel/types": "7.1.3"
+        "@babel/traverse": "^7.1.0",
+        "@babel/types": "^7.0.0"
       }
     },
     "@babel/helper-function-name": {
@@ -130,9 +130,9 @@
       "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==",
       "dev": true,
       "requires": {
-        "@babel/helper-get-function-arity": "7.0.0",
-        "@babel/template": "7.1.2",
-        "@babel/types": "7.1.3"
+        "@babel/helper-get-function-arity": "^7.0.0",
+        "@babel/template": "^7.1.0",
+        "@babel/types": "^7.0.0"
       }
     },
     "@babel/helper-get-function-arity": {
@@ -141,7 +141,7 @@
       "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==",
       "dev": true,
       "requires": {
-        "@babel/types": "7.1.3"
+        "@babel/types": "^7.0.0"
       }
     },
     "@babel/helper-hoist-variables": {
@@ -150,7 +150,7 @@
       "integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==",
       "dev": true,
       "requires": {
-        "@babel/types": "7.1.3"
+        "@babel/types": "^7.0.0"
       }
     },
     "@babel/helper-member-expression-to-functions": {
@@ -159,7 +159,7 @@
       "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==",
       "dev": true,
       "requires": {
-        "@babel/types": "7.1.3"
+        "@babel/types": "^7.0.0"
       }
     },
     "@babel/helper-module-imports": {
@@ -168,7 +168,7 @@
       "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==",
       "dev": true,
       "requires": {
-        "@babel/types": "7.1.3"
+        "@babel/types": "^7.0.0"
       }
     },
     "@babel/helper-module-transforms": {
@@ -177,12 +177,12 @@
       "integrity": "sha512-0JZRd2yhawo79Rcm4w0LwSMILFmFXjugG3yqf+P/UsKsRS1mJCmMwwlHDlMg7Avr9LrvSpp4ZSULO9r8jpCzcw==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-imports": "7.0.0",
-        "@babel/helper-simple-access": "7.1.0",
-        "@babel/helper-split-export-declaration": "7.0.0",
-        "@babel/template": "7.1.2",
-        "@babel/types": "7.1.3",
-        "lodash": "4.17.11"
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/helper-simple-access": "^7.1.0",
+        "@babel/helper-split-export-declaration": "^7.0.0",
+        "@babel/template": "^7.1.0",
+        "@babel/types": "^7.0.0",
+        "lodash": "^4.17.10"
       }
     },
     "@babel/helper-optimise-call-expression": {
@@ -191,7 +191,7 @@
       "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==",
       "dev": true,
       "requires": {
-        "@babel/types": "7.1.3"
+        "@babel/types": "^7.0.0"
       }
     },
     "@babel/helper-plugin-utils": {
@@ -206,7 +206,7 @@
       "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==",
       "dev": true,
       "requires": {
-        "lodash": "4.17.11"
+        "lodash": "^4.17.10"
       }
     },
     "@babel/helper-remap-async-to-generator": {
@@ -215,11 +215,11 @@
       "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==",
       "dev": true,
       "requires": {
-        "@babel/helper-annotate-as-pure": "7.0.0",
-        "@babel/helper-wrap-function": "7.1.0",
-        "@babel/template": "7.1.2",
-        "@babel/traverse": "7.1.4",
-        "@babel/types": "7.1.3"
+        "@babel/helper-annotate-as-pure": "^7.0.0",
+        "@babel/helper-wrap-function": "^7.1.0",
+        "@babel/template": "^7.1.0",
+        "@babel/traverse": "^7.1.0",
+        "@babel/types": "^7.0.0"
       }
     },
     "@babel/helper-replace-supers": {
@@ -228,10 +228,10 @@
       "integrity": "sha512-BvcDWYZRWVuDeXTYZWxekQNO5D4kO55aArwZOTFXw6rlLQA8ZaDicJR1sO47h+HrnCiDFiww0fSPV0d713KBGQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-member-expression-to-functions": "7.0.0",
-        "@babel/helper-optimise-call-expression": "7.0.0",
-        "@babel/traverse": "7.1.4",
-        "@babel/types": "7.1.3"
+        "@babel/helper-member-expression-to-functions": "^7.0.0",
+        "@babel/helper-optimise-call-expression": "^7.0.0",
+        "@babel/traverse": "^7.1.0",
+        "@babel/types": "^7.0.0"
       }
     },
     "@babel/helper-simple-access": {
@@ -240,8 +240,8 @@
       "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==",
       "dev": true,
       "requires": {
-        "@babel/template": "7.1.2",
-        "@babel/types": "7.1.3"
+        "@babel/template": "^7.1.0",
+        "@babel/types": "^7.0.0"
       }
     },
     "@babel/helper-split-export-declaration": {
@@ -250,7 +250,7 @@
       "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==",
       "dev": true,
       "requires": {
-        "@babel/types": "7.1.3"
+        "@babel/types": "^7.0.0"
       }
     },
     "@babel/helper-wrap-function": {
@@ -259,10 +259,10 @@
       "integrity": "sha512-R6HU3dete+rwsdAfrOzTlE9Mcpk4RjU3aX3gi9grtmugQY0u79X7eogUvfXA5sI81Mfq1cn6AgxihfN33STjJA==",
       "dev": true,
       "requires": {
-        "@babel/helper-function-name": "7.1.0",
-        "@babel/template": "7.1.2",
-        "@babel/traverse": "7.1.4",
-        "@babel/types": "7.1.3"
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/template": "^7.1.0",
+        "@babel/traverse": "^7.1.0",
+        "@babel/types": "^7.0.0"
       }
     },
     "@babel/helpers": {
@@ -271,9 +271,9 @@
       "integrity": "sha512-Myc3pUE8eswD73aWcartxB16K6CGmHDv9KxOmD2CeOs/FaEAQodr3VYGmlvOmog60vNQ2w8QbatuahepZwrHiA==",
       "dev": true,
       "requires": {
-        "@babel/template": "7.1.2",
-        "@babel/traverse": "7.1.4",
-        "@babel/types": "7.1.3"
+        "@babel/template": "^7.1.2",
+        "@babel/traverse": "^7.1.0",
+        "@babel/types": "^7.1.2"
       }
     },
     "@babel/highlight": {
@@ -282,9 +282,9 @@
       "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
       "dev": true,
       "requires": {
-        "chalk": "2.4.1",
-        "esutils": "2.0.2",
-        "js-tokens": "4.0.0"
+        "chalk": "^2.0.0",
+        "esutils": "^2.0.2",
+        "js-tokens": "^4.0.0"
       },
       "dependencies": {
         "ansi-styles": {
@@ -293,7 +293,7 @@
           "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
           "dev": true,
           "requires": {
-            "color-convert": "1.9.1"
+            "color-convert": "^1.9.0"
           }
         },
         "chalk": {
@@ -302,9 +302,9 @@
           "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
           "dev": true,
           "requires": {
-            "ansi-styles": "3.2.1",
-            "escape-string-regexp": "1.0.5",
-            "supports-color": "5.5.0"
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
           }
         },
         "has-flag": {
@@ -325,7 +325,7 @@
           "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
           "dev": true,
           "requires": {
-            "has-flag": "3.0.0"
+            "has-flag": "^3.0.0"
           }
         }
       }
@@ -342,9 +342,9 @@
       "integrity": "sha512-Fq803F3Jcxo20MXUSDdmZZXrPe6BWyGcWBPPNB/M7WaUYESKDeKMOGIxEzQOjGSmW/NWb6UaPZrtTB2ekhB/ew==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0",
-        "@babel/helper-remap-async-to-generator": "7.1.0",
-        "@babel/plugin-syntax-async-generators": "7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-remap-async-to-generator": "^7.1.0",
+        "@babel/plugin-syntax-async-generators": "^7.0.0"
       }
     },
     "@babel/plugin-proposal-json-strings": {
@@ -353,8 +353,8 @@
       "integrity": "sha512-kfVdUkIAGJIVmHmtS/40i/fg/AGnw/rsZBCaapY5yjeO5RA9m165Xbw9KMOu2nqXP5dTFjEjHdfNdoVcHv133Q==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0",
-        "@babel/plugin-syntax-json-strings": "7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-syntax-json-strings": "^7.0.0"
       }
     },
     "@babel/plugin-proposal-object-rest-spread": {
@@ -363,8 +363,8 @@
       "integrity": "sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0",
-        "@babel/plugin-syntax-object-rest-spread": "7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-syntax-object-rest-spread": "^7.0.0"
       }
     },
     "@babel/plugin-proposal-optional-catch-binding": {
@@ -373,8 +373,8 @@
       "integrity": "sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0",
-        "@babel/plugin-syntax-optional-catch-binding": "7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.0.0"
       }
     },
     "@babel/plugin-proposal-unicode-property-regex": {
@@ -383,9 +383,9 @@
       "integrity": "sha512-tM3icA6GhC3ch2SkmSxv7J/hCWKISzwycub6eGsDrFDgukD4dZ/I+x81XgW0YslS6mzNuQ1Cbzh5osjIMgepPQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0",
-        "@babel/helper-regex": "7.0.0",
-        "regexpu-core": "4.2.0"
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-regex": "^7.0.0",
+        "regexpu-core": "^4.2.0"
       },
       "dependencies": {
         "regenerate": {
@@ -400,12 +400,12 @@
           "integrity": "sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==",
           "dev": true,
           "requires": {
-            "regenerate": "1.4.0",
-            "regenerate-unicode-properties": "7.0.0",
-            "regjsgen": "0.4.0",
-            "regjsparser": "0.3.0",
-            "unicode-match-property-ecmascript": "1.0.4",
-            "unicode-match-property-value-ecmascript": "1.0.2"
+            "regenerate": "^1.4.0",
+            "regenerate-unicode-properties": "^7.0.0",
+            "regjsgen": "^0.4.0",
+            "regjsparser": "^0.3.0",
+            "unicode-match-property-ecmascript": "^1.0.4",
+            "unicode-match-property-value-ecmascript": "^1.0.2"
           }
         },
         "regjsgen": {
@@ -420,7 +420,7 @@
           "integrity": "sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA==",
           "dev": true,
           "requires": {
-            "jsesc": "0.5.0"
+            "jsesc": "~0.5.0"
           }
         }
       }
@@ -431,7 +431,7 @@
       "integrity": "sha512-im7ged00ddGKAjcZgewXmp1vxSZQQywuQXe2B1A7kajjZmDeY/ekMPmWr9zJgveSaQH0k7BcGrojQhcK06l0zA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-syntax-json-strings": {
@@ -440,7 +440,7 @@
       "integrity": "sha512-UlSfNydC+XLj4bw7ijpldc1uZ/HB84vw+U6BTuqMdIEmz/LDe63w/GHtpQMdXWdqQZFeAI9PjnHe/vDhwirhKA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-syntax-object-rest-spread": {
@@ -449,7 +449,7 @@
       "integrity": "sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-syntax-optional-catch-binding": {
@@ -458,7 +458,7 @@
       "integrity": "sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-transform-arrow-functions": {
@@ -467,7 +467,7 @@
       "integrity": "sha512-2EZDBl1WIO/q4DIkIp4s86sdp4ZifL51MoIviLY/gG/mLSuOIEg7J8o6mhbxOTvUJkaN50n+8u41FVsr5KLy/w==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-transform-async-to-generator": {
@@ -476,9 +476,9 @@
       "integrity": "sha512-rNmcmoQ78IrvNCIt/R9U+cixUHeYAzgusTFgIAv+wQb9HJU4szhpDD6e5GCACmj/JP5KxuCwM96bX3L9v4ZN/g==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-imports": "7.0.0",
-        "@babel/helper-plugin-utils": "7.0.0",
-        "@babel/helper-remap-async-to-generator": "7.1.0"
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-remap-async-to-generator": "^7.1.0"
       }
     },
     "@babel/plugin-transform-block-scoped-functions": {
@@ -487,7 +487,7 @@
       "integrity": "sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-transform-block-scoping": {
@@ -496,8 +496,8 @@
       "integrity": "sha512-GWEMCrmHQcYWISilUrk9GDqH4enf3UmhOEbNbNrlNAX1ssH3MsS1xLOS6rdjRVPgA7XXVPn87tRkdTEoA/dxEg==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0",
-        "lodash": "4.17.11"
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "lodash": "^4.17.10"
       }
     },
     "@babel/plugin-transform-classes": {
@@ -506,14 +506,14 @@
       "integrity": "sha512-rNaqoD+4OCBZjM7VaskladgqnZ1LO6o2UxuWSDzljzW21pN1KXkB7BstAVweZdxQkHAujps5QMNOTWesBciKFg==",
       "dev": true,
       "requires": {
-        "@babel/helper-annotate-as-pure": "7.0.0",
-        "@babel/helper-define-map": "7.1.0",
-        "@babel/helper-function-name": "7.1.0",
-        "@babel/helper-optimise-call-expression": "7.0.0",
-        "@babel/helper-plugin-utils": "7.0.0",
-        "@babel/helper-replace-supers": "7.1.0",
-        "@babel/helper-split-export-declaration": "7.0.0",
-        "globals": "11.8.0"
+        "@babel/helper-annotate-as-pure": "^7.0.0",
+        "@babel/helper-define-map": "^7.1.0",
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/helper-optimise-call-expression": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-replace-supers": "^7.1.0",
+        "@babel/helper-split-export-declaration": "^7.0.0",
+        "globals": "^11.1.0"
       }
     },
     "@babel/plugin-transform-computed-properties": {
@@ -522,7 +522,7 @@
       "integrity": "sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-transform-destructuring": {
@@ -531,7 +531,7 @@
       "integrity": "sha512-Mb9M4DGIOspH1ExHOUnn2UUXFOyVTiX84fXCd+6B5iWrQg/QMeeRmSwpZ9lnjYLSXtZwiw80ytVMr3zue0ucYw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-transform-dotall-regex": {
@@ -540,9 +540,9 @@
       "integrity": "sha512-00THs8eJxOJUFVx1w8i1MBF4XH4PsAjKjQ1eqN/uCH3YKwP21GCKfrn6YZFZswbOk9+0cw1zGQPHVc1KBlSxig==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0",
-        "@babel/helper-regex": "7.0.0",
-        "regexpu-core": "4.2.0"
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-regex": "^7.0.0",
+        "regexpu-core": "^4.1.3"
       },
       "dependencies": {
         "regenerate": {
@@ -557,12 +557,12 @@
           "integrity": "sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==",
           "dev": true,
           "requires": {
-            "regenerate": "1.4.0",
-            "regenerate-unicode-properties": "7.0.0",
-            "regjsgen": "0.4.0",
-            "regjsparser": "0.3.0",
-            "unicode-match-property-ecmascript": "1.0.4",
-            "unicode-match-property-value-ecmascript": "1.0.2"
+            "regenerate": "^1.4.0",
+            "regenerate-unicode-properties": "^7.0.0",
+            "regjsgen": "^0.4.0",
+            "regjsparser": "^0.3.0",
+            "unicode-match-property-ecmascript": "^1.0.4",
+            "unicode-match-property-value-ecmascript": "^1.0.2"
           }
         },
         "regjsgen": {
@@ -577,7 +577,7 @@
           "integrity": "sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA==",
           "dev": true,
           "requires": {
-            "jsesc": "0.5.0"
+            "jsesc": "~0.5.0"
           }
         }
       }
@@ -588,7 +588,7 @@
       "integrity": "sha512-w2vfPkMqRkdxx+C71ATLJG30PpwtTpW7DDdLqYt2acXU7YjztzeWW2Jk1T6hKqCLYCcEA5UQM/+xTAm+QCSnuQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-transform-exponentiation-operator": {
@@ -597,8 +597,8 @@
       "integrity": "sha512-uZt9kD1Pp/JubkukOGQml9tqAeI8NkE98oZnHZ2qHRElmeKCodbTZgOEUtujSCSLhHSBWbzNiFSDIMC4/RBTLQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-builder-binary-assignment-operator-visitor": "7.1.0",
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-transform-for-of": {
@@ -607,7 +607,7 @@
       "integrity": "sha512-TlxKecN20X2tt2UEr2LNE6aqA0oPeMT1Y3cgz8k4Dn1j5ObT8M3nl9aA37LLklx0PBZKETC9ZAf9n/6SujTuXA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-transform-function-name": {
@@ -616,8 +616,8 @@
       "integrity": "sha512-VxOa1TMlFMtqPW2IDYZQaHsFrq/dDoIjgN098NowhexhZcz3UGlvPgZXuE1jEvNygyWyxRacqDpCZt+par1FNg==",
       "dev": true,
       "requires": {
-        "@babel/helper-function-name": "7.1.0",
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-transform-literals": {
@@ -626,7 +626,7 @@
       "integrity": "sha512-1NTDBWkeNXgpUcyoVFxbr9hS57EpZYXpje92zv0SUzjdu3enaRwF/l3cmyRnXLtIdyJASyiS6PtybK+CgKf7jA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-transform-modules-amd": {
@@ -635,8 +635,8 @@
       "integrity": "sha512-wt8P+xQ85rrnGNr2x1iV3DW32W8zrB6ctuBkYBbf5/ZzJY99Ob4MFgsZDFgczNU76iy9PWsy4EuxOliDjdKw6A==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-transforms": "7.1.0",
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-module-transforms": "^7.1.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-transform-modules-commonjs": {
@@ -645,9 +645,9 @@
       "integrity": "sha512-wtNwtMjn1XGwM0AXPspQgvmE6msSJP15CX2RVfpTSTNPLhKhaOjaIfBaVfj4iUZ/VrFSodcFedwtPg/NxwQlPA==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-transforms": "7.1.0",
-        "@babel/helper-plugin-utils": "7.0.0",
-        "@babel/helper-simple-access": "7.1.0"
+        "@babel/helper-module-transforms": "^7.1.0",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-simple-access": "^7.1.0"
       }
     },
     "@babel/plugin-transform-modules-systemjs": {
@@ -656,8 +656,8 @@
       "integrity": "sha512-PvTxgjxQAq4pvVUZF3mD5gEtVDuId8NtWkJsZLEJZMZAW3TvgQl1pmydLLN1bM8huHFVVU43lf0uvjQj9FRkKw==",
       "dev": true,
       "requires": {
-        "@babel/helper-hoist-variables": "7.0.0",
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-hoist-variables": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-transform-modules-umd": {
@@ -666,8 +666,8 @@
       "integrity": "sha512-enrRtn5TfRhMmbRwm7F8qOj0qEYByqUvTttPEGimcBH4CJHphjyK1Vg7sdU7JjeEmgSpM890IT/efS2nMHwYig==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-transforms": "7.1.0",
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-module-transforms": "^7.1.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-transform-new-target": {
@@ -676,7 +676,7 @@
       "integrity": "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-transform-object-super": {
@@ -685,8 +685,8 @@
       "integrity": "sha512-/O02Je1CRTSk2SSJaq0xjwQ8hG4zhZGNjE8psTsSNPXyLRCODv7/PBozqT5AmQMzp7MI3ndvMhGdqp9c96tTEw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0",
-        "@babel/helper-replace-supers": "7.1.0"
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-replace-supers": "^7.1.0"
       }
     },
     "@babel/plugin-transform-parameters": {
@@ -695,9 +695,9 @@
       "integrity": "sha512-vHV7oxkEJ8IHxTfRr3hNGzV446GAb+0hgbA7o/0Jd76s+YzccdWuTU296FOCOl/xweU4t/Ya4g41yWz80RFCRw==",
       "dev": true,
       "requires": {
-        "@babel/helper-call-delegate": "7.1.0",
-        "@babel/helper-get-function-arity": "7.0.0",
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-call-delegate": "^7.1.0",
+        "@babel/helper-get-function-arity": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-transform-regenerator": {
@@ -706,7 +706,7 @@
       "integrity": "sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==",
       "dev": true,
       "requires": {
-        "regenerator-transform": "0.13.3"
+        "regenerator-transform": "^0.13.3"
       }
     },
     "@babel/plugin-transform-shorthand-properties": {
@@ -715,7 +715,7 @@
       "integrity": "sha512-g/99LI4vm5iOf5r1Gdxq5Xmu91zvjhEG5+yZDJW268AZELAu4J1EiFLnkSG3yuUsZyOipVOVUKoGPYwfsTymhw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-transform-spread": {
@@ -724,7 +724,7 @@
       "integrity": "sha512-L702YFy2EvirrR4shTj0g2xQp7aNwZoWNCkNu2mcoU0uyzMl0XRwDSwzB/xp6DSUFiBmEXuyAyEN16LsgVqGGQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-transform-sticky-regex": {
@@ -733,8 +733,8 @@
       "integrity": "sha512-LFUToxiyS/WD+XEWpkx/XJBrUXKewSZpzX68s+yEOtIbdnsRjpryDw9U06gYc6klYEij/+KQVRnD3nz3AoKmjw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0",
-        "@babel/helper-regex": "7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-regex": "^7.0.0"
       }
     },
     "@babel/plugin-transform-template-literals": {
@@ -743,8 +743,8 @@
       "integrity": "sha512-vA6rkTCabRZu7Nbl9DfLZE1imj4tzdWcg5vtdQGvj+OH9itNNB6hxuRMHuIY8SGnEt1T9g5foqs9LnrHzsqEFg==",
       "dev": true,
       "requires": {
-        "@babel/helper-annotate-as-pure": "7.0.0",
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-annotate-as-pure": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-transform-typeof-symbol": {
@@ -753,7 +753,7 @@
       "integrity": "sha512-1r1X5DO78WnaAIvs5uC48t41LLckxsYklJrZjNKcevyz83sF2l4RHbw29qrCPr/6ksFsdfRpT/ZgxNWHXRnffg==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0"
+        "@babel/helper-plugin-utils": "^7.0.0"
       }
     },
     "@babel/plugin-transform-unicode-regex": {
@@ -762,9 +762,9 @@
       "integrity": "sha512-uJBrJhBOEa3D033P95nPHu3nbFwFE9ZgXsfEitzoIXIwqAZWk7uXcg06yFKXz9FSxBH5ucgU/cYdX0IV8ldHKw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "7.0.0",
-        "@babel/helper-regex": "7.0.0",
-        "regexpu-core": "4.2.0"
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-regex": "^7.0.0",
+        "regexpu-core": "^4.1.3"
       },
       "dependencies": {
         "regenerate": {
@@ -779,12 +779,12 @@
           "integrity": "sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==",
           "dev": true,
           "requires": {
-            "regenerate": "1.4.0",
-            "regenerate-unicode-properties": "7.0.0",
-            "regjsgen": "0.4.0",
-            "regjsparser": "0.3.0",
-            "unicode-match-property-ecmascript": "1.0.4",
-            "unicode-match-property-value-ecmascript": "1.0.2"
+            "regenerate": "^1.4.0",
+            "regenerate-unicode-properties": "^7.0.0",
+            "regjsgen": "^0.4.0",
+            "regjsparser": "^0.3.0",
+            "unicode-match-property-ecmascript": "^1.0.4",
+            "unicode-match-property-value-ecmascript": "^1.0.2"
           }
         },
         "regjsgen": {
@@ -799,7 +799,7 @@
           "integrity": "sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA==",
           "dev": true,
           "requires": {
-            "jsesc": "0.5.0"
+            "jsesc": "~0.5.0"
           }
         }
       }
@@ -810,47 +810,47 @@
       "integrity": "sha512-ZLVSynfAoDHB/34A17/JCZbyrzbQj59QC1Anyueb4Bwjh373nVPq5/HMph0z+tCmcDjXDe+DlKQq9ywQuvWrQg==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-imports": "7.0.0",
-        "@babel/helper-plugin-utils": "7.0.0",
-        "@babel/plugin-proposal-async-generator-functions": "7.1.0",
-        "@babel/plugin-proposal-json-strings": "7.0.0",
-        "@babel/plugin-proposal-object-rest-spread": "7.0.0",
-        "@babel/plugin-proposal-optional-catch-binding": "7.0.0",
-        "@babel/plugin-proposal-unicode-property-regex": "7.0.0",
-        "@babel/plugin-syntax-async-generators": "7.0.0",
-        "@babel/plugin-syntax-object-rest-spread": "7.0.0",
-        "@babel/plugin-syntax-optional-catch-binding": "7.0.0",
-        "@babel/plugin-transform-arrow-functions": "7.0.0",
-        "@babel/plugin-transform-async-to-generator": "7.1.0",
-        "@babel/plugin-transform-block-scoped-functions": "7.0.0",
-        "@babel/plugin-transform-block-scoping": "7.0.0",
-        "@babel/plugin-transform-classes": "7.1.0",
-        "@babel/plugin-transform-computed-properties": "7.0.0",
-        "@babel/plugin-transform-destructuring": "7.1.3",
-        "@babel/plugin-transform-dotall-regex": "7.0.0",
-        "@babel/plugin-transform-duplicate-keys": "7.0.0",
-        "@babel/plugin-transform-exponentiation-operator": "7.1.0",
-        "@babel/plugin-transform-for-of": "7.0.0",
-        "@babel/plugin-transform-function-name": "7.1.0",
-        "@babel/plugin-transform-literals": "7.0.0",
-        "@babel/plugin-transform-modules-amd": "7.1.0",
-        "@babel/plugin-transform-modules-commonjs": "7.1.0",
-        "@babel/plugin-transform-modules-systemjs": "7.1.3",
-        "@babel/plugin-transform-modules-umd": "7.1.0",
-        "@babel/plugin-transform-new-target": "7.0.0",
-        "@babel/plugin-transform-object-super": "7.1.0",
-        "@babel/plugin-transform-parameters": "7.1.0",
-        "@babel/plugin-transform-regenerator": "7.0.0",
-        "@babel/plugin-transform-shorthand-properties": "7.0.0",
-        "@babel/plugin-transform-spread": "7.0.0",
-        "@babel/plugin-transform-sticky-regex": "7.0.0",
-        "@babel/plugin-transform-template-literals": "7.0.0",
-        "@babel/plugin-transform-typeof-symbol": "7.0.0",
-        "@babel/plugin-transform-unicode-regex": "7.0.0",
-        "browserslist": "4.3.3",
-        "invariant": "2.2.4",
-        "js-levenshtein": "1.1.4",
-        "semver": "5.6.0"
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-proposal-async-generator-functions": "^7.1.0",
+        "@babel/plugin-proposal-json-strings": "^7.0.0",
+        "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+        "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.0.0",
+        "@babel/plugin-syntax-async-generators": "^7.0.0",
+        "@babel/plugin-syntax-object-rest-spread": "^7.0.0",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.0.0",
+        "@babel/plugin-transform-arrow-functions": "^7.0.0",
+        "@babel/plugin-transform-async-to-generator": "^7.1.0",
+        "@babel/plugin-transform-block-scoped-functions": "^7.0.0",
+        "@babel/plugin-transform-block-scoping": "^7.0.0",
+        "@babel/plugin-transform-classes": "^7.1.0",
+        "@babel/plugin-transform-computed-properties": "^7.0.0",
+        "@babel/plugin-transform-destructuring": "^7.0.0",
+        "@babel/plugin-transform-dotall-regex": "^7.0.0",
+        "@babel/plugin-transform-duplicate-keys": "^7.0.0",
+        "@babel/plugin-transform-exponentiation-operator": "^7.1.0",
+        "@babel/plugin-transform-for-of": "^7.0.0",
+        "@babel/plugin-transform-function-name": "^7.1.0",
+        "@babel/plugin-transform-literals": "^7.0.0",
+        "@babel/plugin-transform-modules-amd": "^7.1.0",
+        "@babel/plugin-transform-modules-commonjs": "^7.1.0",
+        "@babel/plugin-transform-modules-systemjs": "^7.0.0",
+        "@babel/plugin-transform-modules-umd": "^7.1.0",
+        "@babel/plugin-transform-new-target": "^7.0.0",
+        "@babel/plugin-transform-object-super": "^7.1.0",
+        "@babel/plugin-transform-parameters": "^7.1.0",
+        "@babel/plugin-transform-regenerator": "^7.0.0",
+        "@babel/plugin-transform-shorthand-properties": "^7.0.0",
+        "@babel/plugin-transform-spread": "^7.0.0",
+        "@babel/plugin-transform-sticky-regex": "^7.0.0",
+        "@babel/plugin-transform-template-literals": "^7.0.0",
+        "@babel/plugin-transform-typeof-symbol": "^7.0.0",
+        "@babel/plugin-transform-unicode-regex": "^7.0.0",
+        "browserslist": "^4.1.0",
+        "invariant": "^2.2.2",
+        "js-levenshtein": "^1.1.3",
+        "semver": "^5.3.0"
       },
       "dependencies": {
         "browserslist": {
@@ -859,9 +859,9 @@
           "integrity": "sha512-6h84UD1mmHeuQ9IucX6yzBc+KBYcBBTLYt2CXtY7GYCra6iE5kOm7oM+zuGw/0tjGtbJxjm58OvxSBmogEMCRQ==",
           "dev": true,
           "requires": {
-            "caniuse-lite": "1.0.30000899",
-            "electron-to-chromium": "1.3.82",
-            "node-releases": "1.0.0-alpha.15"
+            "caniuse-lite": "^1.0.30000898",
+            "electron-to-chromium": "^1.3.81",
+            "node-releases": "^1.0.0-alpha.15"
           }
         },
         "electron-to-chromium": {
@@ -878,9 +878,9 @@
       "integrity": "sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag==",
       "dev": true,
       "requires": {
-        "@babel/code-frame": "7.0.0",
-        "@babel/parser": "7.1.3",
-        "@babel/types": "7.1.3"
+        "@babel/code-frame": "^7.0.0",
+        "@babel/parser": "^7.1.2",
+        "@babel/types": "^7.1.2"
       }
     },
     "@babel/traverse": {
@@ -889,15 +889,15 @@
       "integrity": "sha512-my9mdrAIGdDiSVBuMjpn/oXYpva0/EZwWL3sm3Wcy/AVWO2eXnsoZruOT9jOGNRXU8KbCIu5zsKnXcAJ6PcV6Q==",
       "dev": true,
       "requires": {
-        "@babel/code-frame": "7.0.0",
-        "@babel/generator": "7.1.3",
-        "@babel/helper-function-name": "7.1.0",
-        "@babel/helper-split-export-declaration": "7.0.0",
-        "@babel/parser": "7.1.3",
-        "@babel/types": "7.1.3",
-        "debug": "3.2.6",
-        "globals": "11.8.0",
-        "lodash": "4.17.11"
+        "@babel/code-frame": "^7.0.0",
+        "@babel/generator": "^7.1.3",
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/helper-split-export-declaration": "^7.0.0",
+        "@babel/parser": "^7.1.3",
+        "@babel/types": "^7.1.3",
+        "debug": "^3.1.0",
+        "globals": "^11.1.0",
+        "lodash": "^4.17.10"
       },
       "dependencies": {
         "debug": {
@@ -906,7 +906,7 @@
           "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
           "dev": true,
           "requires": {
-            "ms": "2.1.1"
+            "ms": "^2.1.1"
           }
         },
         "ms": {
@@ -923,9 +923,9 @@
       "integrity": "sha512-RpPOVfK+yatXyn8n4PB1NW6k9qjinrXrRR8ugBN8fD6hCy5RXI6PSbVqpOJBO9oSaY7Nom4ohj35feb0UR9hSA==",
       "dev": true,
       "requires": {
-        "esutils": "2.0.2",
-        "lodash": "4.17.11",
-        "to-fast-properties": "2.0.0"
+        "esutils": "^2.0.2",
+        "lodash": "^4.17.10",
+        "to-fast-properties": "^2.0.0"
       }
     },
     "acorn": {
@@ -940,7 +940,7 @@
       "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==",
       "dev": true,
       "requires": {
-        "acorn": "5.5.3"
+        "acorn": "^5.0.0"
       }
     },
     "ajv": {
@@ -949,10 +949,10 @@
       "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=",
       "dev": true,
       "requires": {
-        "fast-deep-equal": "1.1.0",
-        "fast-json-stable-stringify": "2.0.0",
-        "json-schema-traverse": "0.3.1",
-        "uri-js": "3.0.2"
+        "fast-deep-equal": "^1.0.0",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.3.0",
+        "uri-js": "^3.0.2"
       }
     },
     "ajv-keywords": {
@@ -985,8 +985,8 @@
       "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
       "dev": true,
       "requires": {
-        "micromatch": "3.1.10",
-        "normalize-path": "2.1.1"
+        "micromatch": "^3.1.4",
+        "normalize-path": "^2.1.1"
       }
     },
     "aproba": {
@@ -1001,7 +1001,7 @@
       "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
       "dev": true,
       "requires": {
-        "sprintf-js": "1.0.3"
+        "sprintf-js": "~1.0.2"
       }
     },
     "arr-diff": {
@@ -1028,7 +1028,7 @@
       "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
       "dev": true,
       "requires": {
-        "array-uniq": "1.0.3"
+        "array-uniq": "^1.0.1"
       }
     },
     "array-uniq": {
@@ -1055,9 +1055,9 @@
       "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
       "dev": true,
       "requires": {
-        "bn.js": "4.11.8",
-        "inherits": "2.0.3",
-        "minimalistic-assert": "1.0.1"
+        "bn.js": "^4.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
       }
     },
     "assert": {
@@ -1093,12 +1093,12 @@
       "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=",
       "dev": true,
       "requires": {
-        "browserslist": "1.7.7",
-        "caniuse-db": "1.0.30000830",
-        "normalize-range": "0.1.2",
-        "num2fraction": "1.2.2",
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0"
+        "browserslist": "^1.7.6",
+        "caniuse-db": "^1.0.30000634",
+        "normalize-range": "^0.1.2",
+        "num2fraction": "^1.2.2",
+        "postcss": "^5.2.16",
+        "postcss-value-parser": "^3.2.3"
       }
     },
     "babel-code-frame": {
@@ -1107,9 +1107,9 @@
       "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
       "dev": true,
       "requires": {
-        "chalk": "1.1.3",
-        "esutils": "2.0.2",
-        "js-tokens": "3.0.2"
+        "chalk": "^1.1.3",
+        "esutils": "^2.0.2",
+        "js-tokens": "^3.0.2"
       }
     },
     "babel-loader": {
@@ -1118,10 +1118,10 @@
       "integrity": "sha512-fhBhNkUToJcW9nV46v8w87AJOwAJDz84c1CL57n3Stj73FANM/b9TbCUK4YhdOwEyZ+OxhYpdeZDNzSI29Firw==",
       "dev": true,
       "requires": {
-        "find-cache-dir": "1.0.0",
-        "loader-utils": "1.1.0",
-        "mkdirp": "0.5.1",
-        "util.promisify": "1.0.0"
+        "find-cache-dir": "^1.0.0",
+        "loader-utils": "^1.0.2",
+        "mkdirp": "^0.5.1",
+        "util.promisify": "^1.0.0"
       }
     },
     "balanced-match": {
@@ -1136,13 +1136,13 @@
       "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
       "dev": true,
       "requires": {
-        "cache-base": "1.0.1",
-        "class-utils": "0.3.6",
-        "component-emitter": "1.2.1",
-        "define-property": "1.0.0",
-        "isobject": "3.0.1",
-        "mixin-deep": "1.3.1",
-        "pascalcase": "0.1.1"
+        "cache-base": "^1.0.1",
+        "class-utils": "^0.3.5",
+        "component-emitter": "^1.2.1",
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.1",
+        "mixin-deep": "^1.2.0",
+        "pascalcase": "^0.1.1"
       },
       "dependencies": {
         "define-property": {
@@ -1151,7 +1151,7 @@
           "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
           "dev": true,
           "requires": {
-            "is-descriptor": "1.0.2"
+            "is-descriptor": "^1.0.0"
           }
         },
         "is-accessor-descriptor": {
@@ -1160,7 +1160,7 @@
           "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
           "dev": true,
           "requires": {
-            "kind-of": "6.0.2"
+            "kind-of": "^6.0.0"
           }
         },
         "is-data-descriptor": {
@@ -1169,7 +1169,7 @@
           "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
           "dev": true,
           "requires": {
-            "kind-of": "6.0.2"
+            "kind-of": "^6.0.0"
           }
         },
         "is-descriptor": {
@@ -1178,9 +1178,9 @@
           "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
           "dev": true,
           "requires": {
-            "is-accessor-descriptor": "1.0.0",
-            "is-data-descriptor": "1.0.0",
-            "kind-of": "6.0.2"
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
           }
         }
       }
@@ -1221,7 +1221,7 @@
       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
       "dev": true,
       "requires": {
-        "balanced-match": "1.0.0",
+        "balanced-match": "^1.0.0",
         "concat-map": "0.0.1"
       }
     },
@@ -1231,16 +1231,16 @@
       "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
       "dev": true,
       "requires": {
-        "arr-flatten": "1.1.0",
-        "array-unique": "0.3.2",
-        "extend-shallow": "2.0.1",
-        "fill-range": "4.0.0",
-        "isobject": "3.0.1",
-        "repeat-element": "1.1.2",
-        "snapdragon": "0.8.2",
-        "snapdragon-node": "2.1.1",
-        "split-string": "3.1.0",
-        "to-regex": "3.0.2"
+        "arr-flatten": "^1.1.0",
+        "array-unique": "^0.3.2",
+        "extend-shallow": "^2.0.1",
+        "fill-range": "^4.0.0",
+        "isobject": "^3.0.1",
+        "repeat-element": "^1.1.2",
+        "snapdragon": "^0.8.1",
+        "snapdragon-node": "^2.0.1",
+        "split-string": "^3.0.2",
+        "to-regex": "^3.0.1"
       },
       "dependencies": {
         "extend-shallow": {
@@ -1249,7 +1249,7 @@
           "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
           "dev": true,
           "requires": {
-            "is-extendable": "0.1.1"
+            "is-extendable": "^0.1.0"
           }
         }
       }
@@ -1266,12 +1266,12 @@
       "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
       "dev": true,
       "requires": {
-        "buffer-xor": "1.0.3",
-        "cipher-base": "1.0.4",
-        "create-hash": "1.2.0",
-        "evp_bytestokey": "1.0.3",
-        "inherits": "2.0.3",
-        "safe-buffer": "5.1.1"
+        "buffer-xor": "^1.0.3",
+        "cipher-base": "^1.0.0",
+        "create-hash": "^1.1.0",
+        "evp_bytestokey": "^1.0.3",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
       }
     },
     "browserify-cipher": {
@@ -1280,9 +1280,9 @@
       "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
       "dev": true,
       "requires": {
-        "browserify-aes": "1.2.0",
-        "browserify-des": "1.0.1",
-        "evp_bytestokey": "1.0.3"
+        "browserify-aes": "^1.0.4",
+        "browserify-des": "^1.0.0",
+        "evp_bytestokey": "^1.0.0"
       }
     },
     "browserify-des": {
@@ -1291,9 +1291,9 @@
       "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==",
       "dev": true,
       "requires": {
-        "cipher-base": "1.0.4",
-        "des.js": "1.0.0",
-        "inherits": "2.0.3"
+        "cipher-base": "^1.0.1",
+        "des.js": "^1.0.0",
+        "inherits": "^2.0.1"
       }
     },
     "browserify-rsa": {
@@ -1302,8 +1302,8 @@
       "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
       "dev": true,
       "requires": {
-        "bn.js": "4.11.8",
-        "randombytes": "2.0.6"
+        "bn.js": "^4.1.0",
+        "randombytes": "^2.0.1"
       }
     },
     "browserify-sign": {
@@ -1312,13 +1312,13 @@
       "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
       "dev": true,
       "requires": {
-        "bn.js": "4.11.8",
-        "browserify-rsa": "4.0.1",
-        "create-hash": "1.2.0",
-        "create-hmac": "1.1.7",
-        "elliptic": "6.4.0",
-        "inherits": "2.0.3",
-        "parse-asn1": "5.1.1"
+        "bn.js": "^4.1.1",
+        "browserify-rsa": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "create-hmac": "^1.1.2",
+        "elliptic": "^6.0.0",
+        "inherits": "^2.0.1",
+        "parse-asn1": "^5.0.0"
       }
     },
     "browserify-zlib": {
@@ -1327,7 +1327,7 @@
       "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
       "dev": true,
       "requires": {
-        "pako": "1.0.6"
+        "pako": "~1.0.5"
       }
     },
     "browserslist": {
@@ -1336,8 +1336,8 @@
       "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
       "dev": true,
       "requires": {
-        "caniuse-db": "1.0.30000830",
-        "electron-to-chromium": "1.3.42"
+        "caniuse-db": "^1.0.30000639",
+        "electron-to-chromium": "^1.2.7"
       }
     },
     "buffer": {
@@ -1346,9 +1346,9 @@
       "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
       "dev": true,
       "requires": {
-        "base64-js": "1.3.0",
-        "ieee754": "1.1.11",
-        "isarray": "1.0.0"
+        "base64-js": "^1.0.2",
+        "ieee754": "^1.1.4",
+        "isarray": "^1.0.0"
       }
     },
     "buffer-xor": {
@@ -1369,19 +1369,19 @@
       "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==",
       "dev": true,
       "requires": {
-        "bluebird": "3.5.1",
-        "chownr": "1.0.1",
-        "glob": "7.1.2",
-        "graceful-fs": "4.1.11",
-        "lru-cache": "4.1.1",
-        "mississippi": "2.0.0",
-        "mkdirp": "0.5.1",
-        "move-concurrently": "1.0.1",
-        "promise-inflight": "1.0.1",
-        "rimraf": "2.6.2",
-        "ssri": "5.2.4",
-        "unique-filename": "1.1.0",
-        "y18n": "4.0.0"
+        "bluebird": "^3.5.1",
+        "chownr": "^1.0.1",
+        "glob": "^7.1.2",
+        "graceful-fs": "^4.1.11",
+        "lru-cache": "^4.1.1",
+        "mississippi": "^2.0.0",
+        "mkdirp": "^0.5.1",
+        "move-concurrently": "^1.0.1",
+        "promise-inflight": "^1.0.1",
+        "rimraf": "^2.6.2",
+        "ssri": "^5.2.4",
+        "unique-filename": "^1.1.0",
+        "y18n": "^4.0.0"
       }
     },
     "cache-base": {
@@ -1390,15 +1390,15 @@
       "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
       "dev": true,
       "requires": {
-        "collection-visit": "1.0.0",
-        "component-emitter": "1.2.1",
-        "get-value": "2.0.6",
-        "has-value": "1.0.0",
-        "isobject": "3.0.1",
-        "set-value": "2.0.0",
-        "to-object-path": "0.3.0",
-        "union-value": "1.0.0",
-        "unset-value": "1.0.0"
+        "collection-visit": "^1.0.0",
+        "component-emitter": "^1.2.1",
+        "get-value": "^2.0.6",
+        "has-value": "^1.0.0",
+        "isobject": "^3.0.1",
+        "set-value": "^2.0.0",
+        "to-object-path": "^0.3.0",
+        "union-value": "^1.0.0",
+        "unset-value": "^1.0.0"
       }
     },
     "camelcase": {
@@ -1413,10 +1413,10 @@
       "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=",
       "dev": true,
       "requires": {
-        "browserslist": "1.7.7",
-        "caniuse-db": "1.0.30000830",
-        "lodash.memoize": "4.1.2",
-        "lodash.uniq": "4.5.0"
+        "browserslist": "^1.3.6",
+        "caniuse-db": "^1.0.30000529",
+        "lodash.memoize": "^4.1.2",
+        "lodash.uniq": "^4.5.0"
       }
     },
     "caniuse-db": {
@@ -1437,11 +1437,11 @@
       "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
       "dev": true,
       "requires": {
-        "ansi-styles": "2.2.1",
-        "escape-string-regexp": "1.0.5",
-        "has-ansi": "2.0.0",
-        "strip-ansi": "3.0.1",
-        "supports-color": "2.0.0"
+        "ansi-styles": "^2.2.1",
+        "escape-string-regexp": "^1.0.2",
+        "has-ansi": "^2.0.0",
+        "strip-ansi": "^3.0.0",
+        "supports-color": "^2.0.0"
       }
     },
     "chokidar": {
@@ -1450,18 +1450,18 @@
       "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==",
       "dev": true,
       "requires": {
-        "anymatch": "2.0.0",
-        "async-each": "1.0.1",
-        "braces": "2.3.2",
-        "fsevents": "1.2.4",
-        "glob-parent": "3.1.0",
-        "inherits": "2.0.3",
-        "is-binary-path": "1.0.1",
-        "is-glob": "4.0.0",
-        "normalize-path": "2.1.1",
-        "path-is-absolute": "1.0.1",
-        "readdirp": "2.1.0",
-        "upath": "1.0.4"
+        "anymatch": "^2.0.0",
+        "async-each": "^1.0.0",
+        "braces": "^2.3.0",
+        "fsevents": "^1.1.2",
+        "glob-parent": "^3.1.0",
+        "inherits": "^2.0.1",
+        "is-binary-path": "^1.0.0",
+        "is-glob": "^4.0.0",
+        "normalize-path": "^2.1.1",
+        "path-is-absolute": "^1.0.0",
+        "readdirp": "^2.0.0",
+        "upath": "^1.0.0"
       }
     },
     "chownr": {
@@ -1482,8 +1482,8 @@
       "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
       "dev": true,
       "requires": {
-        "inherits": "2.0.3",
-        "safe-buffer": "5.1.1"
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
       }
     },
     "clap": {
@@ -1492,7 +1492,7 @@
       "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==",
       "dev": true,
       "requires": {
-        "chalk": "1.1.3"
+        "chalk": "^1.1.3"
       }
     },
     "class-utils": {
@@ -1501,10 +1501,10 @@
       "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
       "dev": true,
       "requires": {
-        "arr-union": "3.1.0",
-        "define-property": "0.2.5",
-        "isobject": "3.0.1",
-        "static-extend": "0.1.2"
+        "arr-union": "^3.1.0",
+        "define-property": "^0.2.5",
+        "isobject": "^3.0.0",
+        "static-extend": "^0.1.1"
       },
       "dependencies": {
         "define-property": {
@@ -1513,7 +1513,7 @@
           "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
           "dev": true,
           "requires": {
-            "is-descriptor": "0.1.6"
+            "is-descriptor": "^0.1.0"
           }
         }
       }
@@ -1524,9 +1524,9 @@
       "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
       "dev": true,
       "requires": {
-        "string-width": "2.1.1",
-        "strip-ansi": "4.0.0",
-        "wrap-ansi": "2.1.0"
+        "string-width": "^2.1.1",
+        "strip-ansi": "^4.0.0",
+        "wrap-ansi": "^2.0.0"
       },
       "dependencies": {
         "ansi-regex": {
@@ -1541,7 +1541,7 @@
           "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
           "dev": true,
           "requires": {
-            "ansi-regex": "3.0.0"
+            "ansi-regex": "^3.0.0"
           }
         }
       }
@@ -1558,7 +1558,7 @@
       "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=",
       "dev": true,
       "requires": {
-        "q": "1.5.1"
+        "q": "^1.1.2"
       }
     },
     "code-point-at": {
@@ -1573,8 +1573,8 @@
       "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
       "dev": true,
       "requires": {
-        "map-visit": "1.0.0",
-        "object-visit": "1.0.1"
+        "map-visit": "^1.0.0",
+        "object-visit": "^1.0.0"
       }
     },
     "color": {
@@ -1583,9 +1583,9 @@
       "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=",
       "dev": true,
       "requires": {
-        "clone": "1.0.4",
-        "color-convert": "1.9.1",
-        "color-string": "0.3.0"
+        "clone": "^1.0.2",
+        "color-convert": "^1.3.0",
+        "color-string": "^0.3.0"
       }
     },
     "color-convert": {
@@ -1594,7 +1594,7 @@
       "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
       "dev": true,
       "requires": {
-        "color-name": "1.1.3"
+        "color-name": "^1.1.1"
       }
     },
     "color-name": {
@@ -1609,7 +1609,7 @@
       "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=",
       "dev": true,
       "requires": {
-        "color-name": "1.1.3"
+        "color-name": "^1.0.0"
       }
     },
     "colormin": {
@@ -1618,9 +1618,9 @@
       "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=",
       "dev": true,
       "requires": {
-        "color": "0.11.4",
+        "color": "^0.11.0",
         "css-color-names": "0.0.4",
-        "has": "1.0.1"
+        "has": "^1.0.1"
       }
     },
     "colors": {
@@ -1659,9 +1659,9 @@
       "integrity": "sha512-gslSSJx03QKa59cIKqeJO9HQ/WZMotvYJCuaUULrLpjj8oG40kV2Z+gz82pVxlTkOADi4PJxQPPfhl1ELYrrXw==",
       "dev": true,
       "requires": {
-        "inherits": "2.0.3",
-        "readable-stream": "2.3.5",
-        "typedarray": "0.0.6"
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
       }
     },
     "console-browserify": {
@@ -1670,7 +1670,7 @@
       "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
       "dev": true,
       "requires": {
-        "date-now": "0.1.4"
+        "date-now": "^0.1.4"
       }
     },
     "consolidate": {
@@ -1679,7 +1679,7 @@
       "integrity": "sha1-WiUEe8dvcwcmZ8jLUsmJiI9JTGM=",
       "dev": true,
       "requires": {
-        "bluebird": "3.5.1"
+        "bluebird": "^3.1.1"
       }
     },
     "constants-browserify": {
@@ -1694,7 +1694,7 @@
       "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
       "dev": true,
       "requires": {
-        "safe-buffer": "5.1.1"
+        "safe-buffer": "~5.1.1"
       }
     },
     "copy-concurrently": {
@@ -1703,12 +1703,12 @@
       "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
       "dev": true,
       "requires": {
-        "aproba": "1.2.0",
-        "fs-write-stream-atomic": "1.0.10",
-        "iferr": "0.1.5",
-        "mkdirp": "0.5.1",
-        "rimraf": "2.6.2",
-        "run-queue": "1.0.3"
+        "aproba": "^1.1.1",
+        "fs-write-stream-atomic": "^1.0.8",
+        "iferr": "^0.1.5",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.4",
+        "run-queue": "^1.0.0"
       }
     },
     "copy-descriptor": {
@@ -1723,14 +1723,14 @@
       "integrity": "sha512-OlTo6DYg0XfTKOF8eLf79wcHm4Ut10xU2cRBRPMW/NA5F9VMjZGTfRHWDIYC3s+1kObGYrBLshXWU1K0hILkNQ==",
       "dev": true,
       "requires": {
-        "cacache": "10.0.4",
-        "find-cache-dir": "1.0.0",
-        "globby": "7.1.1",
-        "is-glob": "4.0.0",
-        "loader-utils": "1.1.0",
-        "minimatch": "3.0.4",
-        "p-limit": "1.2.0",
-        "serialize-javascript": "1.4.0"
+        "cacache": "^10.0.4",
+        "find-cache-dir": "^1.0.0",
+        "globby": "^7.1.1",
+        "is-glob": "^4.0.0",
+        "loader-utils": "^1.1.0",
+        "minimatch": "^3.0.4",
+        "p-limit": "^1.0.0",
+        "serialize-javascript": "^1.4.0"
       },
       "dependencies": {
         "globby": {
@@ -1739,12 +1739,12 @@
           "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
           "dev": true,
           "requires": {
-            "array-union": "1.0.2",
-            "dir-glob": "2.0.0",
-            "glob": "7.1.2",
-            "ignore": "3.3.7",
-            "pify": "3.0.0",
-            "slash": "1.0.0"
+            "array-union": "^1.0.1",
+            "dir-glob": "^2.0.0",
+            "glob": "^7.1.2",
+            "ignore": "^3.3.5",
+            "pify": "^3.0.0",
+            "slash": "^1.0.0"
           }
         },
         "is-extglob": {
@@ -1759,7 +1759,7 @@
           "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
           "dev": true,
           "requires": {
-            "is-extglob": "2.1.1"
+            "is-extglob": "^2.1.1"
           }
         }
       }
@@ -1776,13 +1776,13 @@
       "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==",
       "dev": true,
       "requires": {
-        "is-directory": "0.3.1",
-        "js-yaml": "3.7.0",
-        "minimist": "1.2.0",
-        "object-assign": "4.1.1",
-        "os-homedir": "1.0.2",
-        "parse-json": "2.2.0",
-        "require-from-string": "1.2.1"
+        "is-directory": "^0.3.1",
+        "js-yaml": "^3.4.3",
+        "minimist": "^1.2.0",
+        "object-assign": "^4.1.0",
+        "os-homedir": "^1.0.1",
+        "parse-json": "^2.2.0",
+        "require-from-string": "^1.1.0"
       }
     },
     "create-ecdh": {
@@ -1791,8 +1791,8 @@
       "integrity": "sha512-iZvCCg8XqHQZ1ioNBTzXS/cQSkqkqcPs8xSX4upNB+DAk9Ht3uzQf2J32uAHNCne8LDmKr29AgZrEs4oIrwLuQ==",
       "dev": true,
       "requires": {
-        "bn.js": "4.11.8",
-        "elliptic": "6.4.0"
+        "bn.js": "^4.1.0",
+        "elliptic": "^6.0.0"
       }
     },
     "create-hash": {
@@ -1801,11 +1801,11 @@
       "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
       "dev": true,
       "requires": {
-        "cipher-base": "1.0.4",
-        "inherits": "2.0.3",
-        "md5.js": "1.3.4",
-        "ripemd160": "2.0.2",
-        "sha.js": "2.4.11"
+        "cipher-base": "^1.0.1",
+        "inherits": "^2.0.1",
+        "md5.js": "^1.3.4",
+        "ripemd160": "^2.0.1",
+        "sha.js": "^2.4.0"
       }
     },
     "create-hmac": {
@@ -1814,12 +1814,12 @@
       "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
       "dev": true,
       "requires": {
-        "cipher-base": "1.0.4",
-        "create-hash": "1.2.0",
-        "inherits": "2.0.3",
-        "ripemd160": "2.0.2",
-        "safe-buffer": "5.1.1",
-        "sha.js": "2.4.11"
+        "cipher-base": "^1.0.3",
+        "create-hash": "^1.1.0",
+        "inherits": "^2.0.1",
+        "ripemd160": "^2.0.0",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
       }
     },
     "cross-spawn": {
@@ -1828,11 +1828,11 @@
       "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
       "dev": true,
       "requires": {
-        "nice-try": "1.0.5",
-        "path-key": "2.0.1",
-        "semver": "5.6.0",
-        "shebang-command": "1.2.0",
-        "which": "1.3.1"
+        "nice-try": "^1.0.4",
+        "path-key": "^2.0.1",
+        "semver": "^5.5.0",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
       }
     },
     "crypto-browserify": {
@@ -1841,17 +1841,17 @@
       "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
       "dev": true,
       "requires": {
-        "browserify-cipher": "1.0.1",
-        "browserify-sign": "4.0.4",
-        "create-ecdh": "4.0.1",
-        "create-hash": "1.2.0",
-        "create-hmac": "1.1.7",
-        "diffie-hellman": "5.0.3",
-        "inherits": "2.0.3",
-        "pbkdf2": "3.0.16",
-        "public-encrypt": "4.0.2",
-        "randombytes": "2.0.6",
-        "randomfill": "1.0.4"
+        "browserify-cipher": "^1.0.0",
+        "browserify-sign": "^4.0.0",
+        "create-ecdh": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "create-hmac": "^1.1.0",
+        "diffie-hellman": "^5.0.0",
+        "inherits": "^2.0.1",
+        "pbkdf2": "^3.0.3",
+        "public-encrypt": "^4.0.0",
+        "randombytes": "^2.0.0",
+        "randomfill": "^1.0.3"
       }
     },
     "css-color-names": {
@@ -1866,20 +1866,20 @@
       "integrity": "sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg==",
       "dev": true,
       "requires": {
-        "babel-code-frame": "6.26.0",
-        "css-selector-tokenizer": "0.7.0",
-        "cssnano": "3.10.0",
-        "icss-utils": "2.1.0",
-        "loader-utils": "1.1.0",
-        "lodash.camelcase": "4.3.0",
-        "object-assign": "4.1.1",
-        "postcss": "5.2.18",
-        "postcss-modules-extract-imports": "1.2.0",
-        "postcss-modules-local-by-default": "1.2.0",
-        "postcss-modules-scope": "1.1.0",
-        "postcss-modules-values": "1.3.0",
-        "postcss-value-parser": "3.3.0",
-        "source-list-map": "2.0.0"
+        "babel-code-frame": "^6.26.0",
+        "css-selector-tokenizer": "^0.7.0",
+        "cssnano": "^3.10.0",
+        "icss-utils": "^2.1.0",
+        "loader-utils": "^1.0.2",
+        "lodash.camelcase": "^4.3.0",
+        "object-assign": "^4.1.1",
+        "postcss": "^5.0.6",
+        "postcss-modules-extract-imports": "^1.2.0",
+        "postcss-modules-local-by-default": "^1.2.0",
+        "postcss-modules-scope": "^1.1.0",
+        "postcss-modules-values": "^1.3.0",
+        "postcss-value-parser": "^3.3.0",
+        "source-list-map": "^2.0.0"
       }
     },
     "css-selector-tokenizer": {
@@ -1888,9 +1888,9 @@
       "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=",
       "dev": true,
       "requires": {
-        "cssesc": "0.1.0",
-        "fastparse": "1.1.1",
-        "regexpu-core": "1.0.0"
+        "cssesc": "^0.1.0",
+        "fastparse": "^1.1.1",
+        "regexpu-core": "^1.0.0"
       }
     },
     "cssesc": {
@@ -1905,38 +1905,38 @@
       "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=",
       "dev": true,
       "requires": {
-        "autoprefixer": "6.7.7",
-        "decamelize": "1.2.0",
-        "defined": "1.0.0",
-        "has": "1.0.1",
-        "object-assign": "4.1.1",
-        "postcss": "5.2.18",
-        "postcss-calc": "5.3.1",
-        "postcss-colormin": "2.2.2",
-        "postcss-convert-values": "2.6.1",
-        "postcss-discard-comments": "2.0.4",
-        "postcss-discard-duplicates": "2.1.0",
-        "postcss-discard-empty": "2.1.0",
-        "postcss-discard-overridden": "0.1.1",
-        "postcss-discard-unused": "2.2.3",
-        "postcss-filter-plugins": "2.0.2",
-        "postcss-merge-idents": "2.1.7",
-        "postcss-merge-longhand": "2.0.2",
-        "postcss-merge-rules": "2.1.2",
-        "postcss-minify-font-values": "1.0.5",
-        "postcss-minify-gradients": "1.0.5",
-        "postcss-minify-params": "1.2.2",
-        "postcss-minify-selectors": "2.1.1",
-        "postcss-normalize-charset": "1.1.1",
-        "postcss-normalize-url": "3.0.8",
-        "postcss-ordered-values": "2.2.3",
-        "postcss-reduce-idents": "2.4.0",
-        "postcss-reduce-initial": "1.0.1",
-        "postcss-reduce-transforms": "1.0.4",
-        "postcss-svgo": "2.1.6",
-        "postcss-unique-selectors": "2.0.2",
-        "postcss-value-parser": "3.3.0",
-        "postcss-zindex": "2.2.0"
+        "autoprefixer": "^6.3.1",
+        "decamelize": "^1.1.2",
+        "defined": "^1.0.0",
+        "has": "^1.0.1",
+        "object-assign": "^4.0.1",
+        "postcss": "^5.0.14",
+        "postcss-calc": "^5.2.0",
+        "postcss-colormin": "^2.1.8",
+        "postcss-convert-values": "^2.3.4",
+        "postcss-discard-comments": "^2.0.4",
+        "postcss-discard-duplicates": "^2.0.1",
+        "postcss-discard-empty": "^2.0.1",
+        "postcss-discard-overridden": "^0.1.1",
+        "postcss-discard-unused": "^2.2.1",
+        "postcss-filter-plugins": "^2.0.0",
+        "postcss-merge-idents": "^2.1.5",
+        "postcss-merge-longhand": "^2.0.1",
+        "postcss-merge-rules": "^2.0.3",
+        "postcss-minify-font-values": "^1.0.2",
+        "postcss-minify-gradients": "^1.0.1",
+        "postcss-minify-params": "^1.0.4",
+        "postcss-minify-selectors": "^2.0.4",
+        "postcss-normalize-charset": "^1.1.0",
+        "postcss-normalize-url": "^3.0.7",
+        "postcss-ordered-values": "^2.1.0",
+        "postcss-reduce-idents": "^2.2.2",
+        "postcss-reduce-initial": "^1.0.0",
+        "postcss-reduce-transforms": "^1.0.3",
+        "postcss-svgo": "^2.1.1",
+        "postcss-unique-selectors": "^2.0.2",
+        "postcss-value-parser": "^3.2.3",
+        "postcss-zindex": "^2.0.1"
       }
     },
     "csso": {
@@ -1945,8 +1945,8 @@
       "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=",
       "dev": true,
       "requires": {
-        "clap": "1.2.3",
-        "source-map": "0.5.7"
+        "clap": "^1.0.9",
+        "source-map": "^0.5.3"
       }
     },
     "cyclist": {
@@ -1994,7 +1994,7 @@
       "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
       "dev": true,
       "requires": {
-        "object-keys": "1.0.12"
+        "object-keys": "^1.0.12"
       }
     },
     "define-property": {
@@ -2003,8 +2003,8 @@
       "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
       "dev": true,
       "requires": {
-        "is-descriptor": "1.0.2",
-        "isobject": "3.0.1"
+        "is-descriptor": "^1.0.2",
+        "isobject": "^3.0.1"
       },
       "dependencies": {
         "is-accessor-descriptor": {
@@ -2013,7 +2013,7 @@
           "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
           "dev": true,
           "requires": {
-            "kind-of": "6.0.2"
+            "kind-of": "^6.0.0"
           }
         },
         "is-data-descriptor": {
@@ -2022,7 +2022,7 @@
           "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
           "dev": true,
           "requires": {
-            "kind-of": "6.0.2"
+            "kind-of": "^6.0.0"
           }
         },
         "is-descriptor": {
@@ -2031,9 +2031,9 @@
           "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
           "dev": true,
           "requires": {
-            "is-accessor-descriptor": "1.0.0",
-            "is-data-descriptor": "1.0.0",
-            "kind-of": "6.0.2"
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
           }
         }
       }
@@ -2050,8 +2050,8 @@
       "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
       "dev": true,
       "requires": {
-        "inherits": "2.0.3",
-        "minimalistic-assert": "1.0.1"
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
       }
     },
     "diffie-hellman": {
@@ -2060,9 +2060,9 @@
       "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
       "dev": true,
       "requires": {
-        "bn.js": "4.11.8",
-        "miller-rabin": "4.0.1",
-        "randombytes": "2.0.6"
+        "bn.js": "^4.1.0",
+        "miller-rabin": "^4.0.0",
+        "randombytes": "^2.0.0"
       }
     },
     "dir-glob": {
@@ -2071,8 +2071,8 @@
       "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==",
       "dev": true,
       "requires": {
-        "arrify": "1.0.1",
-        "path-type": "3.0.0"
+        "arrify": "^1.0.1",
+        "path-type": "^3.0.0"
       },
       "dependencies": {
         "path-type": {
@@ -2081,7 +2081,7 @@
           "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
           "dev": true,
           "requires": {
-            "pify": "3.0.0"
+            "pify": "^3.0.0"
           }
         }
       }
@@ -2098,10 +2098,10 @@
       "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==",
       "dev": true,
       "requires": {
-        "end-of-stream": "1.4.1",
-        "inherits": "2.0.3",
-        "readable-stream": "2.3.5",
-        "stream-shift": "1.0.0"
+        "end-of-stream": "^1.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0",
+        "stream-shift": "^1.0.0"
       }
     },
     "electron-to-chromium": {
@@ -2116,13 +2116,13 @@
       "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
       "dev": true,
       "requires": {
-        "bn.js": "4.11.8",
-        "brorand": "1.1.0",
-        "hash.js": "1.1.3",
-        "hmac-drbg": "1.0.1",
-        "inherits": "2.0.3",
-        "minimalistic-assert": "1.0.1",
-        "minimalistic-crypto-utils": "1.0.1"
+        "bn.js": "^4.4.0",
+        "brorand": "^1.0.1",
+        "hash.js": "^1.0.0",
+        "hmac-drbg": "^1.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.0"
       }
     },
     "emojis-list": {
@@ -2137,7 +2137,7 @@
       "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
       "dev": true,
       "requires": {
-        "once": "1.4.0"
+        "once": "^1.4.0"
       }
     },
     "enhanced-resolve": {
@@ -2146,9 +2146,9 @@
       "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==",
       "dev": true,
       "requires": {
-        "graceful-fs": "4.1.11",
-        "memory-fs": "0.4.1",
-        "tapable": "1.0.0"
+        "graceful-fs": "^4.1.2",
+        "memory-fs": "^0.4.0",
+        "tapable": "^1.0.0"
       }
     },
     "errno": {
@@ -2157,7 +2157,7 @@
       "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
       "dev": true,
       "requires": {
-        "prr": "1.0.1"
+        "prr": "~1.0.1"
       }
     },
     "error-ex": {
@@ -2166,7 +2166,7 @@
       "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
       "dev": true,
       "requires": {
-        "is-arrayish": "0.2.1"
+        "is-arrayish": "^0.2.1"
       }
     },
     "es-abstract": {
@@ -2175,11 +2175,11 @@
       "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==",
       "dev": true,
       "requires": {
-        "es-to-primitive": "1.2.0",
-        "function-bind": "1.1.1",
-        "has": "1.0.1",
-        "is-callable": "1.1.4",
-        "is-regex": "1.0.4"
+        "es-to-primitive": "^1.1.1",
+        "function-bind": "^1.1.1",
+        "has": "^1.0.1",
+        "is-callable": "^1.1.3",
+        "is-regex": "^1.0.4"
       }
     },
     "es-to-primitive": {
@@ -2188,9 +2188,9 @@
       "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
       "dev": true,
       "requires": {
-        "is-callable": "1.1.4",
-        "is-date-object": "1.0.1",
-        "is-symbol": "1.0.2"
+        "is-callable": "^1.1.4",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.2"
       }
     },
     "escape-string-regexp": {
@@ -2205,8 +2205,8 @@
       "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
       "dev": true,
       "requires": {
-        "esrecurse": "4.2.1",
-        "estraverse": "4.2.0"
+        "esrecurse": "^4.1.0",
+        "estraverse": "^4.1.1"
       }
     },
     "esprima": {
@@ -2221,7 +2221,7 @@
       "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
       "dev": true,
       "requires": {
-        "estraverse": "4.2.0"
+        "estraverse": "^4.1.0"
       }
     },
     "estraverse": {
@@ -2248,8 +2248,8 @@
       "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
       "dev": true,
       "requires": {
-        "md5.js": "1.3.4",
-        "safe-buffer": "5.1.1"
+        "md5.js": "^1.3.4",
+        "safe-buffer": "^5.1.1"
       }
     },
     "execa": {
@@ -2258,13 +2258,13 @@
       "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
       "dev": true,
       "requires": {
-        "cross-spawn": "6.0.5",
-        "get-stream": "3.0.0",
-        "is-stream": "1.1.0",
-        "npm-run-path": "2.0.2",
-        "p-finally": "1.0.0",
-        "signal-exit": "3.0.2",
-        "strip-eof": "1.0.0"
+        "cross-spawn": "^6.0.0",
+        "get-stream": "^3.0.0",
+        "is-stream": "^1.1.0",
+        "npm-run-path": "^2.0.0",
+        "p-finally": "^1.0.0",
+        "signal-exit": "^3.0.0",
+        "strip-eof": "^1.0.0"
       }
     },
     "expand-brackets": {
@@ -2273,13 +2273,13 @@
       "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
       "dev": true,
       "requires": {
-        "debug": "2.6.9",
-        "define-property": "0.2.5",
-        "extend-shallow": "2.0.1",
-        "posix-character-classes": "0.1.1",
-        "regex-not": "1.0.2",
-        "snapdragon": "0.8.2",
-        "to-regex": "3.0.2"
+        "debug": "^2.3.3",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "posix-character-classes": "^0.1.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
       },
       "dependencies": {
         "define-property": {
@@ -2288,7 +2288,7 @@
           "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
           "dev": true,
           "requires": {
-            "is-descriptor": "0.1.6"
+            "is-descriptor": "^0.1.0"
           }
         },
         "extend-shallow": {
@@ -2297,7 +2297,7 @@
           "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
           "dev": true,
           "requires": {
-            "is-extendable": "0.1.1"
+            "is-extendable": "^0.1.0"
           }
         }
       }
@@ -2308,8 +2308,8 @@
       "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
       "dev": true,
       "requires": {
-        "assign-symbols": "1.0.0",
-        "is-extendable": "1.0.1"
+        "assign-symbols": "^1.0.0",
+        "is-extendable": "^1.0.1"
       },
       "dependencies": {
         "is-extendable": {
@@ -2318,7 +2318,7 @@
           "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
           "dev": true,
           "requires": {
-            "is-plain-object": "2.0.4"
+            "is-plain-object": "^2.0.4"
           }
         }
       }
@@ -2329,14 +2329,14 @@
       "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
       "dev": true,
       "requires": {
-        "array-unique": "0.3.2",
-        "define-property": "1.0.0",
-        "expand-brackets": "2.1.4",
-        "extend-shallow": "2.0.1",
-        "fragment-cache": "0.2.1",
-        "regex-not": "1.0.2",
-        "snapdragon": "0.8.2",
-        "to-regex": "3.0.2"
+        "array-unique": "^0.3.2",
+        "define-property": "^1.0.0",
+        "expand-brackets": "^2.1.4",
+        "extend-shallow": "^2.0.1",
+        "fragment-cache": "^0.2.1",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
       },
       "dependencies": {
         "define-property": {
@@ -2345,7 +2345,7 @@
           "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
           "dev": true,
           "requires": {
-            "is-descriptor": "1.0.2"
+            "is-descriptor": "^1.0.0"
           }
         },
         "extend-shallow": {
@@ -2354,7 +2354,7 @@
           "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
           "dev": true,
           "requires": {
-            "is-extendable": "0.1.1"
+            "is-extendable": "^0.1.0"
           }
         },
         "is-accessor-descriptor": {
@@ -2363,7 +2363,7 @@
           "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
           "dev": true,
           "requires": {
-            "kind-of": "6.0.2"
+            "kind-of": "^6.0.0"
           }
         },
         "is-data-descriptor": {
@@ -2372,7 +2372,7 @@
           "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
           "dev": true,
           "requires": {
-            "kind-of": "6.0.2"
+            "kind-of": "^6.0.0"
           }
         },
         "is-descriptor": {
@@ -2381,9 +2381,9 @@
           "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
           "dev": true,
           "requires": {
-            "is-accessor-descriptor": "1.0.0",
-            "is-data-descriptor": "1.0.0",
-            "kind-of": "6.0.2"
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
           }
         }
       }
@@ -2412,10 +2412,10 @@
       "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
       "dev": true,
       "requires": {
-        "extend-shallow": "2.0.1",
-        "is-number": "3.0.0",
-        "repeat-string": "1.6.1",
-        "to-regex-range": "2.1.1"
+        "extend-shallow": "^2.0.1",
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1",
+        "to-regex-range": "^2.1.0"
       },
       "dependencies": {
         "extend-shallow": {
@@ -2424,7 +2424,7 @@
           "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
           "dev": true,
           "requires": {
-            "is-extendable": "0.1.1"
+            "is-extendable": "^0.1.0"
           }
         }
       }
@@ -2435,9 +2435,9 @@
       "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
       "dev": true,
       "requires": {
-        "commondir": "1.0.1",
-        "make-dir": "1.2.0",
-        "pkg-dir": "2.0.0"
+        "commondir": "^1.0.1",
+        "make-dir": "^1.0.0",
+        "pkg-dir": "^2.0.0"
       }
     },
     "find-up": {
@@ -2446,7 +2446,7 @@
       "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
       "dev": true,
       "requires": {
-        "locate-path": "2.0.0"
+        "locate-path": "^2.0.0"
       }
     },
     "flatten": {
@@ -2461,8 +2461,8 @@
       "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=",
       "dev": true,
       "requires": {
-        "inherits": "2.0.3",
-        "readable-stream": "2.3.5"
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.4"
       }
     },
     "for-in": {
@@ -2477,7 +2477,7 @@
       "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
       "dev": true,
       "requires": {
-        "map-cache": "0.2.2"
+        "map-cache": "^0.2.2"
       }
     },
     "from2": {
@@ -2486,8 +2486,8 @@
       "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
       "dev": true,
       "requires": {
-        "inherits": "2.0.3",
-        "readable-stream": "2.3.5"
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0"
       }
     },
     "fs-write-stream-atomic": {
@@ -2496,10 +2496,10 @@
       "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
       "dev": true,
       "requires": {
-        "graceful-fs": "4.1.11",
-        "iferr": "0.1.5",
-        "imurmurhash": "0.1.4",
-        "readable-stream": "2.3.5"
+        "graceful-fs": "^4.1.2",
+        "iferr": "^0.1.5",
+        "imurmurhash": "^0.1.4",
+        "readable-stream": "1 || 2"
       }
     },
     "fs.realpath": {
@@ -2515,8 +2515,8 @@
       "dev": true,
       "optional": true,
       "requires": {
-        "nan": "2.11.1",
-        "node-pre-gyp": "0.10.0"
+        "nan": "^2.9.2",
+        "node-pre-gyp": "^0.10.0"
       },
       "dependencies": {
         "abbrev": {
@@ -2528,7 +2528,8 @@
         "ansi-regex": {
           "version": "2.1.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "aproba": {
           "version": "1.2.0",
@@ -2943,7 +2944,8 @@
         "safe-buffer": {
           "version": "5.1.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "safer-buffer": {
           "version": "2.1.2",
@@ -2999,6 +3001,7 @@
           "version": "3.0.1",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "ansi-regex": "^2.0.0"
           }
@@ -3042,12 +3045,14 @@
         "wrappy": {
           "version": "1.0.2",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "yallist": {
           "version": "3.0.2",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         }
       }
     },
@@ -3081,12 +3086,12 @@
       "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
       "dev": true,
       "requires": {
-        "fs.realpath": "1.0.0",
-        "inflight": "1.0.6",
-        "inherits": "2.0.3",
-        "minimatch": "3.0.4",
-        "once": "1.4.0",
-        "path-is-absolute": "1.0.1"
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
       }
     },
     "glob-parent": {
@@ -3095,8 +3100,8 @@
       "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
       "dev": true,
       "requires": {
-        "is-glob": "3.1.0",
-        "path-dirname": "1.0.2"
+        "is-glob": "^3.1.0",
+        "path-dirname": "^1.0.0"
       },
       "dependencies": {
         "is-glob": {
@@ -3105,7 +3110,7 @@
           "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
           "dev": true,
           "requires": {
-            "is-extglob": "2.1.1"
+            "is-extglob": "^2.1.0"
           }
         }
       }
@@ -3134,7 +3139,7 @@
       "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
       "dev": true,
       "requires": {
-        "function-bind": "1.1.1"
+        "function-bind": "^1.0.2"
       }
     },
     "has-ansi": {
@@ -3143,7 +3148,7 @@
       "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
       "dev": true,
       "requires": {
-        "ansi-regex": "2.1.1"
+        "ansi-regex": "^2.0.0"
       }
     },
     "has-flag": {
@@ -3164,9 +3169,9 @@
       "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
       "dev": true,
       "requires": {
-        "get-value": "2.0.6",
-        "has-values": "1.0.0",
-        "isobject": "3.0.1"
+        "get-value": "^2.0.6",
+        "has-values": "^1.0.0",
+        "isobject": "^3.0.0"
       }
     },
     "has-values": {
@@ -3175,8 +3180,8 @@
       "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
       "dev": true,
       "requires": {
-        "is-number": "3.0.0",
-        "kind-of": "4.0.0"
+        "is-number": "^3.0.0",
+        "kind-of": "^4.0.0"
       },
       "dependencies": {
         "kind-of": {
@@ -3185,7 +3190,7 @@
           "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
           "dev": true,
           "requires": {
-            "is-buffer": "1.1.6"
+            "is-buffer": "^1.1.5"
           }
         }
       }
@@ -3196,8 +3201,8 @@
       "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
       "dev": true,
       "requires": {
-        "inherits": "2.0.3",
-        "safe-buffer": "5.1.1"
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
       }
     },
     "hash-sum": {
@@ -3212,8 +3217,8 @@
       "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==",
       "dev": true,
       "requires": {
-        "inherits": "2.0.3",
-        "minimalistic-assert": "1.0.1"
+        "inherits": "^2.0.3",
+        "minimalistic-assert": "^1.0.0"
       }
     },
     "he": {
@@ -3228,9 +3233,9 @@
       "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
       "dev": true,
       "requires": {
-        "hash.js": "1.1.3",
-        "minimalistic-assert": "1.0.1",
-        "minimalistic-crypto-utils": "1.0.1"
+        "hash.js": "^1.0.3",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.1"
       }
     },
     "html-comment-regex": {
@@ -3257,7 +3262,7 @@
       "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=",
       "dev": true,
       "requires": {
-        "postcss": "6.0.21"
+        "postcss": "^6.0.1"
       },
       "dependencies": {
         "ansi-styles": {
@@ -3266,7 +3271,7 @@
           "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
           "dev": true,
           "requires": {
-            "color-convert": "1.9.1"
+            "color-convert": "^1.9.0"
           }
         },
         "chalk": {
@@ -3275,9 +3280,9 @@
           "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
           "dev": true,
           "requires": {
-            "ansi-styles": "3.2.1",
-            "escape-string-regexp": "1.0.5",
-            "supports-color": "5.4.0"
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
           }
         },
         "has-flag": {
@@ -3292,9 +3297,9 @@
           "integrity": "sha512-y/bKfbQz2Nn/QBC08bwvYUxEFOVGfPIUOTsJ2CK5inzlXW9SdYR1x4pEsG9blRAF/PX+wRNdOah+gx/hv4q7dw==",
           "dev": true,
           "requires": {
-            "chalk": "2.4.1",
-            "source-map": "0.6.1",
-            "supports-color": "5.4.0"
+            "chalk": "^2.3.2",
+            "source-map": "^0.6.1",
+            "supports-color": "^5.3.0"
           }
         },
         "source-map": {
@@ -3309,7 +3314,7 @@
           "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
           "dev": true,
           "requires": {
-            "has-flag": "3.0.0"
+            "has-flag": "^3.0.0"
           }
         }
       }
@@ -3338,8 +3343,8 @@
       "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
       "dev": true,
       "requires": {
-        "pkg-dir": "3.0.0",
-        "resolve-cwd": "2.0.0"
+        "pkg-dir": "^3.0.0",
+        "resolve-cwd": "^2.0.0"
       },
       "dependencies": {
         "find-up": {
@@ -3348,7 +3353,7 @@
           "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
           "dev": true,
           "requires": {
-            "locate-path": "3.0.0"
+            "locate-path": "^3.0.0"
           }
         },
         "locate-path": {
@@ -3357,8 +3362,8 @@
           "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
           "dev": true,
           "requires": {
-            "p-locate": "3.0.0",
-            "path-exists": "3.0.0"
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
           }
         },
         "p-limit": {
@@ -3367,7 +3372,7 @@
           "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
           "dev": true,
           "requires": {
-            "p-try": "2.0.0"
+            "p-try": "^2.0.0"
           }
         },
         "p-locate": {
@@ -3376,7 +3381,7 @@
           "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
           "dev": true,
           "requires": {
-            "p-limit": "2.0.0"
+            "p-limit": "^2.0.0"
           }
         },
         "p-try": {
@@ -3391,7 +3396,7 @@
           "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
           "dev": true,
           "requires": {
-            "find-up": "3.0.0"
+            "find-up": "^3.0.0"
           }
         }
       }
@@ -3420,8 +3425,8 @@
       "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
       "dev": true,
       "requires": {
-        "once": "1.4.0",
-        "wrappy": "1.0.2"
+        "once": "^1.3.0",
+        "wrappy": "1"
       }
     },
     "inherits": {
@@ -3442,7 +3447,7 @@
       "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
       "dev": true,
       "requires": {
-        "loose-envify": "1.4.0"
+        "loose-envify": "^1.0.0"
       }
     },
     "invert-kv": {
@@ -3463,7 +3468,7 @@
       "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
       "dev": true,
       "requires": {
-        "kind-of": "3.2.2"
+        "kind-of": "^3.0.2"
       },
       "dependencies": {
         "kind-of": {
@@ -3472,7 +3477,7 @@
           "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
           "dev": true,
           "requires": {
-            "is-buffer": "1.1.6"
+            "is-buffer": "^1.1.5"
           }
         }
       }
@@ -3489,7 +3494,7 @@
       "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
       "dev": true,
       "requires": {
-        "binary-extensions": "1.11.0"
+        "binary-extensions": "^1.0.0"
       }
     },
     "is-buffer": {
@@ -3510,7 +3515,7 @@
       "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
       "dev": true,
       "requires": {
-        "kind-of": "3.2.2"
+        "kind-of": "^3.0.2"
       },
       "dependencies": {
         "kind-of": {
@@ -3519,7 +3524,7 @@
           "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
           "dev": true,
           "requires": {
-            "is-buffer": "1.1.6"
+            "is-buffer": "^1.1.5"
           }
         }
       }
@@ -3536,9 +3541,9 @@
       "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
       "dev": true,
       "requires": {
-        "is-accessor-descriptor": "0.1.6",
-        "is-data-descriptor": "0.1.4",
-        "kind-of": "5.1.0"
+        "is-accessor-descriptor": "^0.1.6",
+        "is-data-descriptor": "^0.1.4",
+        "kind-of": "^5.0.0"
       },
       "dependencies": {
         "kind-of": {
@@ -3579,7 +3584,7 @@
       "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
       "dev": true,
       "requires": {
-        "is-extglob": "2.1.1"
+        "is-extglob": "^2.1.1"
       }
     },
     "is-number": {
@@ -3588,7 +3593,7 @@
       "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
       "dev": true,
       "requires": {
-        "kind-of": "3.2.2"
+        "kind-of": "^3.0.2"
       },
       "dependencies": {
         "kind-of": {
@@ -3597,7 +3602,7 @@
           "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
           "dev": true,
           "requires": {
-            "is-buffer": "1.1.6"
+            "is-buffer": "^1.1.5"
           }
         }
       }
@@ -3608,7 +3613,7 @@
       "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==",
       "dev": true,
       "requires": {
-        "is-number": "4.0.0"
+        "is-number": "^4.0.0"
       },
       "dependencies": {
         "is-number": {
@@ -3631,7 +3636,7 @@
       "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
       "dev": true,
       "requires": {
-        "isobject": "3.0.1"
+        "isobject": "^3.0.1"
       }
     },
     "is-regex": {
@@ -3640,7 +3645,7 @@
       "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
       "dev": true,
       "requires": {
-        "has": "1.0.1"
+        "has": "^1.0.1"
       }
     },
     "is-stream": {
@@ -3655,7 +3660,7 @@
       "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=",
       "dev": true,
       "requires": {
-        "html-comment-regex": "1.1.1"
+        "html-comment-regex": "^1.1.0"
       }
     },
     "is-symbol": {
@@ -3664,7 +3669,7 @@
       "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
       "dev": true,
       "requires": {
-        "has-symbols": "1.0.0"
+        "has-symbols": "^1.0.0"
       }
     },
     "is-windows": {
@@ -3715,8 +3720,8 @@
       "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=",
       "dev": true,
       "requires": {
-        "argparse": "1.0.10",
-        "esprima": "2.7.3"
+        "argparse": "^1.0.7",
+        "esprima": "^2.6.0"
       }
     },
     "jsesc": {
@@ -3749,7 +3754,7 @@
       "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
       "dev": true,
       "requires": {
-        "invert-kv": "2.0.0"
+        "invert-kv": "^2.0.0"
       }
     },
     "loader-runner": {
@@ -3764,9 +3769,9 @@
       "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
       "dev": true,
       "requires": {
-        "big.js": "3.2.0",
-        "emojis-list": "2.1.0",
-        "json5": "0.5.1"
+        "big.js": "^3.1.3",
+        "emojis-list": "^2.0.0",
+        "json5": "^0.5.0"
       }
     },
     "locate-path": {
@@ -3775,8 +3780,8 @@
       "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
       "dev": true,
       "requires": {
-        "p-locate": "2.0.0",
-        "path-exists": "3.0.0"
+        "p-locate": "^2.0.0",
+        "path-exists": "^3.0.0"
       }
     },
     "lodash": {
@@ -3809,7 +3814,7 @@
       "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
       "dev": true,
       "requires": {
-        "js-tokens": "3.0.2"
+        "js-tokens": "^3.0.0 || ^4.0.0"
       }
     },
     "lru-cache": {
@@ -3818,8 +3823,8 @@
       "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==",
       "dev": true,
       "requires": {
-        "pseudomap": "1.0.2",
-        "yallist": "2.1.2"
+        "pseudomap": "^1.0.2",
+        "yallist": "^2.1.2"
       }
     },
     "macaddress": {
@@ -3834,7 +3839,7 @@
       "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==",
       "dev": true,
       "requires": {
-        "pify": "3.0.0"
+        "pify": "^3.0.0"
       }
     },
     "map-age-cleaner": {
@@ -3843,7 +3848,7 @@
       "integrity": "sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==",
       "dev": true,
       "requires": {
-        "p-defer": "1.0.0"
+        "p-defer": "^1.0.0"
       }
     },
     "map-cache": {
@@ -3858,7 +3863,7 @@
       "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
       "dev": true,
       "requires": {
-        "object-visit": "1.0.1"
+        "object-visit": "^1.0.0"
       }
     },
     "math-expression-evaluator": {
@@ -3873,8 +3878,8 @@
       "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=",
       "dev": true,
       "requires": {
-        "hash-base": "3.0.4",
-        "inherits": "2.0.3"
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1"
       }
     },
     "mem": {
@@ -3883,9 +3888,9 @@
       "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==",
       "dev": true,
       "requires": {
-        "map-age-cleaner": "0.1.2",
-        "mimic-fn": "1.2.0",
-        "p-is-promise": "1.1.0"
+        "map-age-cleaner": "^0.1.1",
+        "mimic-fn": "^1.0.0",
+        "p-is-promise": "^1.1.0"
       }
     },
     "memory-fs": {
@@ -3894,8 +3899,8 @@
       "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
       "dev": true,
       "requires": {
-        "errno": "0.1.7",
-        "readable-stream": "2.3.5"
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
       }
     },
     "micromatch": {
@@ -3904,19 +3909,19 @@
       "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
       "dev": true,
       "requires": {
-        "arr-diff": "4.0.0",
-        "array-unique": "0.3.2",
-        "braces": "2.3.2",
-        "define-property": "2.0.2",
-        "extend-shallow": "3.0.2",
-        "extglob": "2.0.4",
-        "fragment-cache": "0.2.1",
-        "kind-of": "6.0.2",
-        "nanomatch": "1.2.9",
-        "object.pick": "1.3.0",
-        "regex-not": "1.0.2",
-        "snapdragon": "0.8.2",
-        "to-regex": "3.0.2"
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "braces": "^2.3.1",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "extglob": "^2.0.4",
+        "fragment-cache": "^0.2.1",
+        "kind-of": "^6.0.2",
+        "nanomatch": "^1.2.9",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.2"
       }
     },
     "miller-rabin": {
@@ -3925,8 +3930,8 @@
       "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
       "dev": true,
       "requires": {
-        "bn.js": "4.11.8",
-        "brorand": "1.1.0"
+        "bn.js": "^4.0.0",
+        "brorand": "^1.0.1"
       }
     },
     "mimic-fn": {
@@ -3953,7 +3958,7 @@
       "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
       "dev": true,
       "requires": {
-        "brace-expansion": "1.1.11"
+        "brace-expansion": "^1.1.7"
       }
     },
     "minimist": {
@@ -3968,16 +3973,16 @@
       "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==",
       "dev": true,
       "requires": {
-        "concat-stream": "1.6.1",
-        "duplexify": "3.5.4",
-        "end-of-stream": "1.4.1",
-        "flush-write-stream": "1.0.2",
-        "from2": "2.3.0",
-        "parallel-transform": "1.1.0",
-        "pump": "2.0.1",
-        "pumpify": "1.4.0",
-        "stream-each": "1.2.2",
-        "through2": "2.0.3"
+        "concat-stream": "^1.5.0",
+        "duplexify": "^3.4.2",
+        "end-of-stream": "^1.1.0",
+        "flush-write-stream": "^1.0.0",
+        "from2": "^2.1.0",
+        "parallel-transform": "^1.1.0",
+        "pump": "^2.0.1",
+        "pumpify": "^1.3.3",
+        "stream-each": "^1.1.0",
+        "through2": "^2.0.0"
       }
     },
     "mixin-deep": {
@@ -3986,8 +3991,8 @@
       "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
       "dev": true,
       "requires": {
-        "for-in": "1.0.2",
-        "is-extendable": "1.0.1"
+        "for-in": "^1.0.2",
+        "is-extendable": "^1.0.1"
       },
       "dependencies": {
         "is-extendable": {
@@ -3996,7 +4001,7 @@
           "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
           "dev": true,
           "requires": {
-            "is-plain-object": "2.0.4"
+            "is-plain-object": "^2.0.4"
           }
         }
       }
@@ -4024,12 +4029,12 @@
       "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
       "dev": true,
       "requires": {
-        "aproba": "1.2.0",
-        "copy-concurrently": "1.0.5",
-        "fs-write-stream-atomic": "1.0.10",
-        "mkdirp": "0.5.1",
-        "rimraf": "2.6.2",
-        "run-queue": "1.0.3"
+        "aproba": "^1.1.1",
+        "copy-concurrently": "^1.0.0",
+        "fs-write-stream-atomic": "^1.0.8",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.4",
+        "run-queue": "^1.0.3"
       }
     },
     "ms": {
@@ -4051,18 +4056,18 @@
       "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==",
       "dev": true,
       "requires": {
-        "arr-diff": "4.0.0",
-        "array-unique": "0.3.2",
-        "define-property": "2.0.2",
-        "extend-shallow": "3.0.2",
-        "fragment-cache": "0.2.1",
-        "is-odd": "2.0.0",
-        "is-windows": "1.0.2",
-        "kind-of": "6.0.2",
-        "object.pick": "1.3.0",
-        "regex-not": "1.0.2",
-        "snapdragon": "0.8.2",
-        "to-regex": "3.0.2"
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "fragment-cache": "^0.2.1",
+        "is-odd": "^2.0.0",
+        "is-windows": "^1.0.2",
+        "kind-of": "^6.0.2",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
       }
     },
     "neo-async": {
@@ -4083,28 +4088,28 @@
       "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==",
       "dev": true,
       "requires": {
-        "assert": "1.4.1",
-        "browserify-zlib": "0.2.0",
-        "buffer": "4.9.1",
-        "console-browserify": "1.1.0",
-        "constants-browserify": "1.0.0",
-        "crypto-browserify": "3.12.0",
-        "domain-browser": "1.2.0",
-        "events": "1.1.1",
-        "https-browserify": "1.0.0",
-        "os-browserify": "0.3.0",
+        "assert": "^1.1.1",
+        "browserify-zlib": "^0.2.0",
+        "buffer": "^4.3.0",
+        "console-browserify": "^1.1.0",
+        "constants-browserify": "^1.0.0",
+        "crypto-browserify": "^3.11.0",
+        "domain-browser": "^1.1.1",
+        "events": "^1.0.0",
+        "https-browserify": "^1.0.0",
+        "os-browserify": "^0.3.0",
         "path-browserify": "0.0.0",
-        "process": "0.11.10",
-        "punycode": "1.4.1",
-        "querystring-es3": "0.2.1",
-        "readable-stream": "2.3.5",
-        "stream-browserify": "2.0.1",
-        "stream-http": "2.8.1",
-        "string_decoder": "1.0.3",
-        "timers-browserify": "2.0.10",
+        "process": "^0.11.10",
+        "punycode": "^1.2.4",
+        "querystring-es3": "^0.2.0",
+        "readable-stream": "^2.3.3",
+        "stream-browserify": "^2.0.1",
+        "stream-http": "^2.7.2",
+        "string_decoder": "^1.0.0",
+        "timers-browserify": "^2.0.4",
         "tty-browserify": "0.0.0",
-        "url": "0.11.0",
-        "util": "0.10.3",
+        "url": "^0.11.0",
+        "util": "^0.10.3",
         "vm-browserify": "0.0.4"
       },
       "dependencies": {
@@ -4122,7 +4127,7 @@
       "integrity": "sha512-hKG6hd/g6a9OV/ARt2qrxbRhe/4WEMFohTLOB9PNyTYvvI59gICZFzt9/mMgpYUTts06qXlN8H6UjfbIRdnW8A==",
       "dev": true,
       "requires": {
-        "semver": "5.6.0"
+        "semver": "^5.3.0"
       }
     },
     "normalize-path": {
@@ -4131,7 +4136,7 @@
       "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
       "dev": true,
       "requires": {
-        "remove-trailing-separator": "1.1.0"
+        "remove-trailing-separator": "^1.0.1"
       }
     },
     "normalize-range": {
@@ -4146,10 +4151,10 @@
       "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
       "dev": true,
       "requires": {
-        "object-assign": "4.1.1",
-        "prepend-http": "1.0.4",
-        "query-string": "4.3.4",
-        "sort-keys": "1.1.2"
+        "object-assign": "^4.0.1",
+        "prepend-http": "^1.0.0",
+        "query-string": "^4.1.0",
+        "sort-keys": "^1.0.0"
       }
     },
     "npm-run-path": {
@@ -4158,7 +4163,7 @@
       "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
       "dev": true,
       "requires": {
-        "path-key": "2.0.1"
+        "path-key": "^2.0.0"
       }
     },
     "num2fraction": {
@@ -4185,9 +4190,9 @@
       "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
       "dev": true,
       "requires": {
-        "copy-descriptor": "0.1.1",
-        "define-property": "0.2.5",
-        "kind-of": "3.2.2"
+        "copy-descriptor": "^0.1.0",
+        "define-property": "^0.2.5",
+        "kind-of": "^3.0.3"
       },
       "dependencies": {
         "define-property": {
@@ -4196,7 +4201,7 @@
           "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
           "dev": true,
           "requires": {
-            "is-descriptor": "0.1.6"
+            "is-descriptor": "^0.1.0"
           }
         },
         "kind-of": {
@@ -4205,7 +4210,7 @@
           "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
           "dev": true,
           "requires": {
-            "is-buffer": "1.1.6"
+            "is-buffer": "^1.1.5"
           }
         }
       }
@@ -4222,7 +4227,7 @@
       "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
       "dev": true,
       "requires": {
-        "isobject": "3.0.1"
+        "isobject": "^3.0.0"
       }
     },
     "object.getownpropertydescriptors": {
@@ -4231,8 +4236,8 @@
       "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
       "dev": true,
       "requires": {
-        "define-properties": "1.1.3",
-        "es-abstract": "1.12.0"
+        "define-properties": "^1.1.2",
+        "es-abstract": "^1.5.1"
       }
     },
     "object.pick": {
@@ -4241,7 +4246,7 @@
       "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
       "dev": true,
       "requires": {
-        "isobject": "3.0.1"
+        "isobject": "^3.0.1"
       }
     },
     "once": {
@@ -4250,7 +4255,7 @@
       "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
       "dev": true,
       "requires": {
-        "wrappy": "1.0.2"
+        "wrappy": "1"
       }
     },
     "os-browserify": {
@@ -4271,9 +4276,9 @@
       "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==",
       "dev": true,
       "requires": {
-        "execa": "0.10.0",
-        "lcid": "2.0.0",
-        "mem": "4.0.0"
+        "execa": "^0.10.0",
+        "lcid": "^2.0.0",
+        "mem": "^4.0.0"
       }
     },
     "p-defer": {
@@ -4300,7 +4305,7 @@
       "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==",
       "dev": true,
       "requires": {
-        "p-try": "1.0.0"
+        "p-try": "^1.0.0"
       }
     },
     "p-locate": {
@@ -4309,7 +4314,7 @@
       "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
       "dev": true,
       "requires": {
-        "p-limit": "1.2.0"
+        "p-limit": "^1.1.0"
       }
     },
     "p-try": {
@@ -4330,9 +4335,9 @@
       "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
       "dev": true,
       "requires": {
-        "cyclist": "0.2.2",
-        "inherits": "2.0.3",
-        "readable-stream": "2.3.5"
+        "cyclist": "~0.2.2",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.1.5"
       }
     },
     "parse-asn1": {
@@ -4341,11 +4346,11 @@
       "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
       "dev": true,
       "requires": {
-        "asn1.js": "4.10.1",
-        "browserify-aes": "1.2.0",
-        "create-hash": "1.2.0",
-        "evp_bytestokey": "1.0.3",
-        "pbkdf2": "3.0.16"
+        "asn1.js": "^4.0.0",
+        "browserify-aes": "^1.0.0",
+        "create-hash": "^1.1.0",
+        "evp_bytestokey": "^1.0.0",
+        "pbkdf2": "^3.0.3"
       }
     },
     "parse-json": {
@@ -4354,7 +4359,7 @@
       "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
       "dev": true,
       "requires": {
-        "error-ex": "1.3.1"
+        "error-ex": "^1.2.0"
       }
     },
     "pascalcase": {
@@ -4405,11 +4410,11 @@
       "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==",
       "dev": true,
       "requires": {
-        "create-hash": "1.2.0",
-        "create-hmac": "1.1.7",
-        "ripemd160": "2.0.2",
-        "safe-buffer": "5.1.1",
-        "sha.js": "2.4.11"
+        "create-hash": "^1.1.2",
+        "create-hmac": "^1.1.4",
+        "ripemd160": "^2.0.1",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
       }
     },
     "pify": {
@@ -4424,7 +4429,7 @@
       "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
       "dev": true,
       "requires": {
-        "find-up": "2.1.0"
+        "find-up": "^2.1.0"
       }
     },
     "posix-character-classes": {
@@ -4439,10 +4444,10 @@
       "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
       "dev": true,
       "requires": {
-        "chalk": "1.1.3",
-        "js-base64": "2.4.3",
-        "source-map": "0.5.7",
-        "supports-color": "3.2.3"
+        "chalk": "^1.1.3",
+        "js-base64": "^2.1.9",
+        "source-map": "^0.5.6",
+        "supports-color": "^3.2.3"
       },
       "dependencies": {
         "supports-color": {
@@ -4451,7 +4456,7 @@
           "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
           "dev": true,
           "requires": {
-            "has-flag": "1.0.0"
+            "has-flag": "^1.0.0"
           }
         }
       }
@@ -4462,9 +4467,9 @@
       "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=",
       "dev": true,
       "requires": {
-        "postcss": "5.2.18",
-        "postcss-message-helpers": "2.0.0",
-        "reduce-css-calc": "1.3.0"
+        "postcss": "^5.0.2",
+        "postcss-message-helpers": "^2.0.0",
+        "reduce-css-calc": "^1.2.6"
       }
     },
     "postcss-colormin": {
@@ -4473,9 +4478,9 @@
       "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=",
       "dev": true,
       "requires": {
-        "colormin": "1.1.2",
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0"
+        "colormin": "^1.0.5",
+        "postcss": "^5.0.13",
+        "postcss-value-parser": "^3.2.3"
       }
     },
     "postcss-convert-values": {
@@ -4484,8 +4489,8 @@
       "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=",
       "dev": true,
       "requires": {
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0"
+        "postcss": "^5.0.11",
+        "postcss-value-parser": "^3.1.2"
       }
     },
     "postcss-discard-comments": {
@@ -4494,7 +4499,7 @@
       "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=",
       "dev": true,
       "requires": {
-        "postcss": "5.2.18"
+        "postcss": "^5.0.14"
       }
     },
     "postcss-discard-duplicates": {
@@ -4503,7 +4508,7 @@
       "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=",
       "dev": true,
       "requires": {
-        "postcss": "5.2.18"
+        "postcss": "^5.0.4"
       }
     },
     "postcss-discard-empty": {
@@ -4512,7 +4517,7 @@
       "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=",
       "dev": true,
       "requires": {
-        "postcss": "5.2.18"
+        "postcss": "^5.0.14"
       }
     },
     "postcss-discard-overridden": {
@@ -4521,7 +4526,7 @@
       "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=",
       "dev": true,
       "requires": {
-        "postcss": "5.2.18"
+        "postcss": "^5.0.16"
       }
     },
     "postcss-discard-unused": {
@@ -4530,8 +4535,8 @@
       "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=",
       "dev": true,
       "requires": {
-        "postcss": "5.2.18",
-        "uniqs": "2.0.0"
+        "postcss": "^5.0.14",
+        "uniqs": "^2.0.0"
       }
     },
     "postcss-filter-plugins": {
@@ -4540,8 +4545,8 @@
       "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=",
       "dev": true,
       "requires": {
-        "postcss": "5.2.18",
-        "uniqid": "4.1.1"
+        "postcss": "^5.0.4",
+        "uniqid": "^4.0.0"
       }
     },
     "postcss-load-config": {
@@ -4550,10 +4555,10 @@
       "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=",
       "dev": true,
       "requires": {
-        "cosmiconfig": "2.2.2",
-        "object-assign": "4.1.1",
-        "postcss-load-options": "1.2.0",
-        "postcss-load-plugins": "2.3.0"
+        "cosmiconfig": "^2.1.0",
+        "object-assign": "^4.1.0",
+        "postcss-load-options": "^1.2.0",
+        "postcss-load-plugins": "^2.3.0"
       }
     },
     "postcss-load-options": {
@@ -4562,8 +4567,8 @@
       "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=",
       "dev": true,
       "requires": {
-        "cosmiconfig": "2.2.2",
-        "object-assign": "4.1.1"
+        "cosmiconfig": "^2.1.0",
+        "object-assign": "^4.1.0"
       }
     },
     "postcss-load-plugins": {
@@ -4572,8 +4577,8 @@
       "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=",
       "dev": true,
       "requires": {
-        "cosmiconfig": "2.2.2",
-        "object-assign": "4.1.1"
+        "cosmiconfig": "^2.1.1",
+        "object-assign": "^4.1.0"
       }
     },
     "postcss-merge-idents": {
@@ -4582,9 +4587,9 @@
       "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=",
       "dev": true,
       "requires": {
-        "has": "1.0.1",
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0"
+        "has": "^1.0.1",
+        "postcss": "^5.0.10",
+        "postcss-value-parser": "^3.1.1"
       }
     },
     "postcss-merge-longhand": {
@@ -4593,7 +4598,7 @@
       "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=",
       "dev": true,
       "requires": {
-        "postcss": "5.2.18"
+        "postcss": "^5.0.4"
       }
     },
     "postcss-merge-rules": {
@@ -4602,11 +4607,11 @@
       "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=",
       "dev": true,
       "requires": {
-        "browserslist": "1.7.7",
-        "caniuse-api": "1.6.1",
-        "postcss": "5.2.18",
-        "postcss-selector-parser": "2.2.3",
-        "vendors": "1.0.2"
+        "browserslist": "^1.5.2",
+        "caniuse-api": "^1.5.2",
+        "postcss": "^5.0.4",
+        "postcss-selector-parser": "^2.2.2",
+        "vendors": "^1.0.0"
       }
     },
     "postcss-message-helpers": {
@@ -4621,9 +4626,9 @@
       "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=",
       "dev": true,
       "requires": {
-        "object-assign": "4.1.1",
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0"
+        "object-assign": "^4.0.1",
+        "postcss": "^5.0.4",
+        "postcss-value-parser": "^3.0.2"
       }
     },
     "postcss-minify-gradients": {
@@ -4632,8 +4637,8 @@
       "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=",
       "dev": true,
       "requires": {
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0"
+        "postcss": "^5.0.12",
+        "postcss-value-parser": "^3.3.0"
       }
     },
     "postcss-minify-params": {
@@ -4642,10 +4647,10 @@
       "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=",
       "dev": true,
       "requires": {
-        "alphanum-sort": "1.0.2",
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0",
-        "uniqs": "2.0.0"
+        "alphanum-sort": "^1.0.1",
+        "postcss": "^5.0.2",
+        "postcss-value-parser": "^3.0.2",
+        "uniqs": "^2.0.0"
       }
     },
     "postcss-minify-selectors": {
@@ -4654,10 +4659,10 @@
       "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=",
       "dev": true,
       "requires": {
-        "alphanum-sort": "1.0.2",
-        "has": "1.0.1",
-        "postcss": "5.2.18",
-        "postcss-selector-parser": "2.2.3"
+        "alphanum-sort": "^1.0.2",
+        "has": "^1.0.1",
+        "postcss": "^5.0.14",
+        "postcss-selector-parser": "^2.0.0"
       }
     },
     "postcss-modules-extract-imports": {
@@ -4666,7 +4671,7 @@
       "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=",
       "dev": true,
       "requires": {
-        "postcss": "6.0.21"
+        "postcss": "^6.0.1"
       },
       "dependencies": {
         "ansi-styles": {
@@ -4675,7 +4680,7 @@
           "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
           "dev": true,
           "requires": {
-            "color-convert": "1.9.1"
+            "color-convert": "^1.9.0"
           }
         },
         "chalk": {
@@ -4684,9 +4689,9 @@
           "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
           "dev": true,
           "requires": {
-            "ansi-styles": "3.2.1",
-            "escape-string-regexp": "1.0.5",
-            "supports-color": "5.4.0"
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
           }
         },
         "has-flag": {
@@ -4701,9 +4706,9 @@
           "integrity": "sha512-y/bKfbQz2Nn/QBC08bwvYUxEFOVGfPIUOTsJ2CK5inzlXW9SdYR1x4pEsG9blRAF/PX+wRNdOah+gx/hv4q7dw==",
           "dev": true,
           "requires": {
-            "chalk": "2.4.1",
-            "source-map": "0.6.1",
-            "supports-color": "5.4.0"
+            "chalk": "^2.3.2",
+            "source-map": "^0.6.1",
+            "supports-color": "^5.3.0"
           }
         },
         "source-map": {
@@ -4718,7 +4723,7 @@
           "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
           "dev": true,
           "requires": {
-            "has-flag": "3.0.0"
+            "has-flag": "^3.0.0"
           }
         }
       }
@@ -4729,8 +4734,8 @@
       "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
       "dev": true,
       "requires": {
-        "css-selector-tokenizer": "0.7.0",
-        "postcss": "6.0.21"
+        "css-selector-tokenizer": "^0.7.0",
+        "postcss": "^6.0.1"
       },
       "dependencies": {
         "ansi-styles": {
@@ -4739,7 +4744,7 @@
           "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
           "dev": true,
           "requires": {
-            "color-convert": "1.9.1"
+            "color-convert": "^1.9.0"
           }
         },
         "chalk": {
@@ -4748,9 +4753,9 @@
           "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
           "dev": true,
           "requires": {
-            "ansi-styles": "3.2.1",
-            "escape-string-regexp": "1.0.5",
-            "supports-color": "5.4.0"
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
           }
         },
         "has-flag": {
@@ -4765,9 +4770,9 @@
           "integrity": "sha512-y/bKfbQz2Nn/QBC08bwvYUxEFOVGfPIUOTsJ2CK5inzlXW9SdYR1x4pEsG9blRAF/PX+wRNdOah+gx/hv4q7dw==",
           "dev": true,
           "requires": {
-            "chalk": "2.4.1",
-            "source-map": "0.6.1",
-            "supports-color": "5.4.0"
+            "chalk": "^2.3.2",
+            "source-map": "^0.6.1",
+            "supports-color": "^5.3.0"
           }
         },
         "source-map": {
@@ -4782,7 +4787,7 @@
           "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
           "dev": true,
           "requires": {
-            "has-flag": "3.0.0"
+            "has-flag": "^3.0.0"
           }
         }
       }
@@ -4793,8 +4798,8 @@
       "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
       "dev": true,
       "requires": {
-        "css-selector-tokenizer": "0.7.0",
-        "postcss": "6.0.21"
+        "css-selector-tokenizer": "^0.7.0",
+        "postcss": "^6.0.1"
       },
       "dependencies": {
         "ansi-styles": {
@@ -4803,7 +4808,7 @@
           "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
           "dev": true,
           "requires": {
-            "color-convert": "1.9.1"
+            "color-convert": "^1.9.0"
           }
         },
         "chalk": {
@@ -4812,9 +4817,9 @@
           "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
           "dev": true,
           "requires": {
-            "ansi-styles": "3.2.1",
-            "escape-string-regexp": "1.0.5",
-            "supports-color": "5.4.0"
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
           }
         },
         "has-flag": {
@@ -4829,9 +4834,9 @@
           "integrity": "sha512-y/bKfbQz2Nn/QBC08bwvYUxEFOVGfPIUOTsJ2CK5inzlXW9SdYR1x4pEsG9blRAF/PX+wRNdOah+gx/hv4q7dw==",
           "dev": true,
           "requires": {
-            "chalk": "2.4.1",
-            "source-map": "0.6.1",
-            "supports-color": "5.4.0"
+            "chalk": "^2.3.2",
+            "source-map": "^0.6.1",
+            "supports-color": "^5.3.0"
           }
         },
         "source-map": {
@@ -4846,7 +4851,7 @@
           "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
           "dev": true,
           "requires": {
-            "has-flag": "3.0.0"
+            "has-flag": "^3.0.0"
           }
         }
       }
@@ -4857,8 +4862,8 @@
       "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=",
       "dev": true,
       "requires": {
-        "icss-replace-symbols": "1.1.0",
-        "postcss": "6.0.21"
+        "icss-replace-symbols": "^1.1.0",
+        "postcss": "^6.0.1"
       },
       "dependencies": {
         "ansi-styles": {
@@ -4867,7 +4872,7 @@
           "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
           "dev": true,
           "requires": {
-            "color-convert": "1.9.1"
+            "color-convert": "^1.9.0"
           }
         },
         "chalk": {
@@ -4876,9 +4881,9 @@
           "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
           "dev": true,
           "requires": {
-            "ansi-styles": "3.2.1",
-            "escape-string-regexp": "1.0.5",
-            "supports-color": "5.4.0"
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
           }
         },
         "has-flag": {
@@ -4893,9 +4898,9 @@
           "integrity": "sha512-y/bKfbQz2Nn/QBC08bwvYUxEFOVGfPIUOTsJ2CK5inzlXW9SdYR1x4pEsG9blRAF/PX+wRNdOah+gx/hv4q7dw==",
           "dev": true,
           "requires": {
-            "chalk": "2.4.1",
-            "source-map": "0.6.1",
-            "supports-color": "5.4.0"
+            "chalk": "^2.3.2",
+            "source-map": "^0.6.1",
+            "supports-color": "^5.3.0"
           }
         },
         "source-map": {
@@ -4910,7 +4915,7 @@
           "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
           "dev": true,
           "requires": {
-            "has-flag": "3.0.0"
+            "has-flag": "^3.0.0"
           }
         }
       }
@@ -4921,7 +4926,7 @@
       "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=",
       "dev": true,
       "requires": {
-        "postcss": "5.2.18"
+        "postcss": "^5.0.5"
       }
     },
     "postcss-normalize-url": {
@@ -4930,10 +4935,10 @@
       "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=",
       "dev": true,
       "requires": {
-        "is-absolute-url": "2.1.0",
-        "normalize-url": "1.9.1",
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0"
+        "is-absolute-url": "^2.0.0",
+        "normalize-url": "^1.4.0",
+        "postcss": "^5.0.14",
+        "postcss-value-parser": "^3.2.3"
       }
     },
     "postcss-ordered-values": {
@@ -4942,8 +4947,8 @@
       "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=",
       "dev": true,
       "requires": {
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0"
+        "postcss": "^5.0.4",
+        "postcss-value-parser": "^3.0.1"
       }
     },
     "postcss-reduce-idents": {
@@ -4952,8 +4957,8 @@
       "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=",
       "dev": true,
       "requires": {
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0"
+        "postcss": "^5.0.4",
+        "postcss-value-parser": "^3.0.2"
       }
     },
     "postcss-reduce-initial": {
@@ -4962,7 +4967,7 @@
       "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=",
       "dev": true,
       "requires": {
-        "postcss": "5.2.18"
+        "postcss": "^5.0.4"
       }
     },
     "postcss-reduce-transforms": {
@@ -4971,9 +4976,9 @@
       "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=",
       "dev": true,
       "requires": {
-        "has": "1.0.1",
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0"
+        "has": "^1.0.1",
+        "postcss": "^5.0.8",
+        "postcss-value-parser": "^3.0.1"
       }
     },
     "postcss-selector-parser": {
@@ -4982,9 +4987,9 @@
       "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=",
       "dev": true,
       "requires": {
-        "flatten": "1.0.2",
-        "indexes-of": "1.0.1",
-        "uniq": "1.0.1"
+        "flatten": "^1.0.2",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1"
       }
     },
     "postcss-svgo": {
@@ -4993,10 +4998,10 @@
       "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=",
       "dev": true,
       "requires": {
-        "is-svg": "2.1.0",
-        "postcss": "5.2.18",
-        "postcss-value-parser": "3.3.0",
-        "svgo": "0.7.2"
+        "is-svg": "^2.0.0",
+        "postcss": "^5.0.14",
+        "postcss-value-parser": "^3.2.3",
+        "svgo": "^0.7.0"
       }
     },
     "postcss-unique-selectors": {
@@ -5005,9 +5010,9 @@
       "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=",
       "dev": true,
       "requires": {
-        "alphanum-sort": "1.0.2",
-        "postcss": "5.2.18",
-        "uniqs": "2.0.0"
+        "alphanum-sort": "^1.0.1",
+        "postcss": "^5.0.4",
+        "uniqs": "^2.0.0"
       }
     },
     "postcss-value-parser": {
@@ -5022,9 +5027,9 @@
       "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=",
       "dev": true,
       "requires": {
-        "has": "1.0.1",
-        "postcss": "5.2.18",
-        "uniqs": "2.0.0"
+        "has": "^1.0.1",
+        "postcss": "^5.0.4",
+        "uniqs": "^2.0.0"
       }
     },
     "prepend-http": {
@@ -5081,11 +5086,11 @@
       "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==",
       "dev": true,
       "requires": {
-        "bn.js": "4.11.8",
-        "browserify-rsa": "4.0.1",
-        "create-hash": "1.2.0",
-        "parse-asn1": "5.1.1",
-        "randombytes": "2.0.6"
+        "bn.js": "^4.1.0",
+        "browserify-rsa": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "parse-asn1": "^5.0.0",
+        "randombytes": "^2.0.1"
       }
     },
     "pump": {
@@ -5094,8 +5099,8 @@
       "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
       "dev": true,
       "requires": {
-        "end-of-stream": "1.4.1",
-        "once": "1.4.0"
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
       }
     },
     "pumpify": {
@@ -5104,9 +5109,9 @@
       "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==",
       "dev": true,
       "requires": {
-        "duplexify": "3.5.4",
-        "inherits": "2.0.3",
-        "pump": "2.0.1"
+        "duplexify": "^3.5.3",
+        "inherits": "^2.0.3",
+        "pump": "^2.0.0"
       }
     },
     "punycode": {
@@ -5127,8 +5132,8 @@
       "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
       "dev": true,
       "requires": {
-        "object-assign": "4.1.1",
-        "strict-uri-encode": "1.1.0"
+        "object-assign": "^4.1.0",
+        "strict-uri-encode": "^1.0.0"
       }
     },
     "querystring": {
@@ -5149,7 +5154,7 @@
       "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
       "dev": true,
       "requires": {
-        "safe-buffer": "5.1.1"
+        "safe-buffer": "^5.1.0"
       }
     },
     "randomfill": {
@@ -5158,8 +5163,8 @@
       "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
       "dev": true,
       "requires": {
-        "randombytes": "2.0.6",
-        "safe-buffer": "5.1.1"
+        "randombytes": "^2.0.5",
+        "safe-buffer": "^5.1.0"
       }
     },
     "readable-stream": {
@@ -5168,13 +5173,13 @@
       "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==",
       "dev": true,
       "requires": {
-        "core-util-is": "1.0.2",
-        "inherits": "2.0.3",
-        "isarray": "1.0.0",
-        "process-nextick-args": "2.0.0",
-        "safe-buffer": "5.1.1",
-        "string_decoder": "1.0.3",
-        "util-deprecate": "1.0.2"
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.0.3",
+        "util-deprecate": "~1.0.1"
       }
     },
     "readdirp": {
@@ -5183,10 +5188,10 @@
       "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
       "dev": true,
       "requires": {
-        "graceful-fs": "4.1.11",
-        "minimatch": "3.0.4",
-        "readable-stream": "2.3.5",
-        "set-immediate-shim": "1.0.1"
+        "graceful-fs": "^4.1.2",
+        "minimatch": "^3.0.2",
+        "readable-stream": "^2.0.2",
+        "set-immediate-shim": "^1.0.1"
       }
     },
     "reduce-css-calc": {
@@ -5195,9 +5200,9 @@
       "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=",
       "dev": true,
       "requires": {
-        "balanced-match": "0.4.2",
-        "math-expression-evaluator": "1.2.17",
-        "reduce-function-call": "1.0.2"
+        "balanced-match": "^0.4.2",
+        "math-expression-evaluator": "^1.2.14",
+        "reduce-function-call": "^1.0.1"
       },
       "dependencies": {
         "balanced-match": {
@@ -5214,7 +5219,7 @@
       "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=",
       "dev": true,
       "requires": {
-        "balanced-match": "0.4.2"
+        "balanced-match": "^0.4.2"
       },
       "dependencies": {
         "balanced-match": {
@@ -5237,7 +5242,7 @@
       "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==",
       "dev": true,
       "requires": {
-        "regenerate": "1.4.0"
+        "regenerate": "^1.4.0"
       },
       "dependencies": {
         "regenerate": {
@@ -5254,7 +5259,7 @@
       "integrity": "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==",
       "dev": true,
       "requires": {
-        "private": "0.1.8"
+        "private": "^0.1.6"
       }
     },
     "regex-not": {
@@ -5263,8 +5268,8 @@
       "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
       "dev": true,
       "requires": {
-        "extend-shallow": "3.0.2",
-        "safe-regex": "1.1.0"
+        "extend-shallow": "^3.0.2",
+        "safe-regex": "^1.1.0"
       }
     },
     "regexpu-core": {
@@ -5273,9 +5278,9 @@
       "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
       "dev": true,
       "requires": {
-        "regenerate": "1.3.3",
-        "regjsgen": "0.2.0",
-        "regjsparser": "0.1.5"
+        "regenerate": "^1.2.1",
+        "regjsgen": "^0.2.0",
+        "regjsparser": "^0.1.4"
       }
     },
     "regjsgen": {
@@ -5290,7 +5295,7 @@
       "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
       "dev": true,
       "requires": {
-        "jsesc": "0.5.0"
+        "jsesc": "~0.5.0"
       }
     },
     "remove-trailing-separator": {
@@ -5335,7 +5340,7 @@
       "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
       "dev": true,
       "requires": {
-        "path-parse": "1.0.5"
+        "path-parse": "^1.0.5"
       }
     },
     "resolve-cwd": {
@@ -5344,7 +5349,7 @@
       "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
       "dev": true,
       "requires": {
-        "resolve-from": "3.0.0"
+        "resolve-from": "^3.0.0"
       }
     },
     "resolve-from": {
@@ -5371,7 +5376,7 @@
       "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
       "dev": true,
       "requires": {
-        "glob": "7.1.2"
+        "glob": "^7.0.5"
       }
     },
     "ripemd160": {
@@ -5380,8 +5385,8 @@
       "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
       "dev": true,
       "requires": {
-        "hash-base": "3.0.4",
-        "inherits": "2.0.3"
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1"
       }
     },
     "run-queue": {
@@ -5390,7 +5395,7 @@
       "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
       "dev": true,
       "requires": {
-        "aproba": "1.2.0"
+        "aproba": "^1.1.1"
       }
     },
     "safe-buffer": {
@@ -5405,7 +5410,7 @@
       "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
       "dev": true,
       "requires": {
-        "ret": "0.1.15"
+        "ret": "~0.1.10"
       }
     },
     "sax": {
@@ -5420,8 +5425,8 @@
       "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==",
       "dev": true,
       "requires": {
-        "ajv": "6.4.0",
-        "ajv-keywords": "3.1.0"
+        "ajv": "^6.1.0",
+        "ajv-keywords": "^3.1.0"
       }
     },
     "semver": {
@@ -5454,10 +5459,10 @@
       "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
       "dev": true,
       "requires": {
-        "extend-shallow": "2.0.1",
-        "is-extendable": "0.1.1",
-        "is-plain-object": "2.0.4",
-        "split-string": "3.1.0"
+        "extend-shallow": "^2.0.1",
+        "is-extendable": "^0.1.1",
+        "is-plain-object": "^2.0.3",
+        "split-string": "^3.0.1"
       },
       "dependencies": {
         "extend-shallow": {
@@ -5466,7 +5471,7 @@
           "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
           "dev": true,
           "requires": {
-            "is-extendable": "0.1.1"
+            "is-extendable": "^0.1.0"
           }
         }
       }
@@ -5483,8 +5488,8 @@
       "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
       "dev": true,
       "requires": {
-        "inherits": "2.0.3",
-        "safe-buffer": "5.1.1"
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
       }
     },
     "shebang-command": {
@@ -5493,7 +5498,7 @@
       "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
       "dev": true,
       "requires": {
-        "shebang-regex": "1.0.0"
+        "shebang-regex": "^1.0.0"
       }
     },
     "shebang-regex": {
@@ -5520,14 +5525,14 @@
       "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
       "dev": true,
       "requires": {
-        "base": "0.11.2",
-        "debug": "2.6.9",
-        "define-property": "0.2.5",
-        "extend-shallow": "2.0.1",
-        "map-cache": "0.2.2",
-        "source-map": "0.5.7",
-        "source-map-resolve": "0.5.1",
-        "use": "3.1.0"
+        "base": "^0.11.1",
+        "debug": "^2.2.0",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "map-cache": "^0.2.2",
+        "source-map": "^0.5.6",
+        "source-map-resolve": "^0.5.0",
+        "use": "^3.1.0"
       },
       "dependencies": {
         "define-property": {
@@ -5536,7 +5541,7 @@
           "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
           "dev": true,
           "requires": {
-            "is-descriptor": "0.1.6"
+            "is-descriptor": "^0.1.0"
           }
         },
         "extend-shallow": {
@@ -5545,7 +5550,7 @@
           "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
           "dev": true,
           "requires": {
-            "is-extendable": "0.1.1"
+            "is-extendable": "^0.1.0"
           }
         }
       }
@@ -5556,9 +5561,9 @@
       "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
       "dev": true,
       "requires": {
-        "define-property": "1.0.0",
-        "isobject": "3.0.1",
-        "snapdragon-util": "3.0.1"
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.0",
+        "snapdragon-util": "^3.0.1"
       },
       "dependencies": {
         "define-property": {
@@ -5567,7 +5572,7 @@
           "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
           "dev": true,
           "requires": {
-            "is-descriptor": "1.0.2"
+            "is-descriptor": "^1.0.0"
           }
         },
         "is-accessor-descriptor": {
@@ -5576,7 +5581,7 @@
           "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
           "dev": true,
           "requires": {
-            "kind-of": "6.0.2"
+            "kind-of": "^6.0.0"
           }
         },
         "is-data-descriptor": {
@@ -5585,7 +5590,7 @@
           "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
           "dev": true,
           "requires": {
-            "kind-of": "6.0.2"
+            "kind-of": "^6.0.0"
           }
         },
         "is-descriptor": {
@@ -5594,9 +5599,9 @@
           "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
           "dev": true,
           "requires": {
-            "is-accessor-descriptor": "1.0.0",
-            "is-data-descriptor": "1.0.0",
-            "kind-of": "6.0.2"
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
           }
         }
       }
@@ -5607,7 +5612,7 @@
       "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
       "dev": true,
       "requires": {
-        "kind-of": "3.2.2"
+        "kind-of": "^3.2.0"
       },
       "dependencies": {
         "kind-of": {
@@ -5616,7 +5621,7 @@
           "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
           "dev": true,
           "requires": {
-            "is-buffer": "1.1.6"
+            "is-buffer": "^1.1.5"
           }
         }
       }
@@ -5627,7 +5632,7 @@
       "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
       "dev": true,
       "requires": {
-        "is-plain-obj": "1.1.0"
+        "is-plain-obj": "^1.0.0"
       }
     },
     "source-list-map": {
@@ -5648,11 +5653,11 @@
       "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==",
       "dev": true,
       "requires": {
-        "atob": "2.1.0",
-        "decode-uri-component": "0.2.0",
-        "resolve-url": "0.2.1",
-        "source-map-url": "0.4.0",
-        "urix": "0.1.0"
+        "atob": "^2.0.0",
+        "decode-uri-component": "^0.2.0",
+        "resolve-url": "^0.2.1",
+        "source-map-url": "^0.4.0",
+        "urix": "^0.1.0"
       }
     },
     "source-map-url": {
@@ -5667,7 +5672,7 @@
       "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
       "dev": true,
       "requires": {
-        "extend-shallow": "3.0.2"
+        "extend-shallow": "^3.0.0"
       }
     },
     "sprintf-js": {
@@ -5682,7 +5687,7 @@
       "integrity": "sha512-UnEAgMZa15973iH7cUi0AHjJn1ACDIkaMyZILoqwN6yzt+4P81I8tBc5Hl+qwi5auMplZtPQsHrPBR5vJLcQtQ==",
       "dev": true,
       "requires": {
-        "safe-buffer": "5.1.1"
+        "safe-buffer": "^5.1.1"
       }
     },
     "static-extend": {
@@ -5691,8 +5696,8 @@
       "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
       "dev": true,
       "requires": {
-        "define-property": "0.2.5",
-        "object-copy": "0.1.0"
+        "define-property": "^0.2.5",
+        "object-copy": "^0.1.0"
       },
       "dependencies": {
         "define-property": {
@@ -5701,7 +5706,7 @@
           "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
           "dev": true,
           "requires": {
-            "is-descriptor": "0.1.6"
+            "is-descriptor": "^0.1.0"
           }
         }
       }
@@ -5712,8 +5717,8 @@
       "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
       "dev": true,
       "requires": {
-        "inherits": "2.0.3",
-        "readable-stream": "2.3.5"
+        "inherits": "~2.0.1",
+        "readable-stream": "^2.0.2"
       }
     },
     "stream-each": {
@@ -5722,8 +5727,8 @@
       "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==",
       "dev": true,
       "requires": {
-        "end-of-stream": "1.4.1",
-        "stream-shift": "1.0.0"
+        "end-of-stream": "^1.1.0",
+        "stream-shift": "^1.0.0"
       }
     },
     "stream-http": {
@@ -5732,11 +5737,11 @@
       "integrity": "sha512-cQ0jo17BLca2r0GfRdZKYAGLU6JRoIWxqSOakUMuKOT6MOK7AAlE856L33QuDmAy/eeOrhLee3dZKX0Uadu93A==",
       "dev": true,
       "requires": {
-        "builtin-status-codes": "3.0.0",
-        "inherits": "2.0.3",
-        "readable-stream": "2.3.5",
-        "to-arraybuffer": "1.0.1",
-        "xtend": "4.0.1"
+        "builtin-status-codes": "^3.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.3.3",
+        "to-arraybuffer": "^1.0.0",
+        "xtend": "^4.0.0"
       }
     },
     "stream-shift": {
@@ -5757,8 +5762,8 @@
       "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
       "dev": true,
       "requires": {
-        "is-fullwidth-code-point": "2.0.0",
-        "strip-ansi": "4.0.0"
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^4.0.0"
       },
       "dependencies": {
         "ansi-regex": {
@@ -5773,7 +5778,7 @@
           "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
           "dev": true,
           "requires": {
-            "ansi-regex": "3.0.0"
+            "ansi-regex": "^3.0.0"
           }
         }
       }
@@ -5784,7 +5789,7 @@
       "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
       "dev": true,
       "requires": {
-        "safe-buffer": "5.1.1"
+        "safe-buffer": "~5.1.0"
       }
     },
     "strip-ansi": {
@@ -5793,7 +5798,7 @@
       "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
       "dev": true,
       "requires": {
-        "ansi-regex": "2.1.1"
+        "ansi-regex": "^2.0.0"
       }
     },
     "strip-eof": {
@@ -5814,13 +5819,13 @@
       "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=",
       "dev": true,
       "requires": {
-        "coa": "1.0.4",
-        "colors": "1.1.2",
-        "csso": "2.3.2",
-        "js-yaml": "3.7.0",
-        "mkdirp": "0.5.1",
-        "sax": "1.2.4",
-        "whet.extend": "0.9.9"
+        "coa": "~1.0.1",
+        "colors": "~1.1.2",
+        "csso": "~2.3.1",
+        "js-yaml": "~3.7.0",
+        "mkdirp": "~0.5.1",
+        "sax": "~1.2.1",
+        "whet.extend": "~0.9.9"
       }
     },
     "tapable": {
@@ -5835,8 +5840,8 @@
       "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
       "dev": true,
       "requires": {
-        "readable-stream": "2.3.5",
-        "xtend": "4.0.1"
+        "readable-stream": "^2.1.5",
+        "xtend": "~4.0.1"
       }
     },
     "timers-browserify": {
@@ -5845,7 +5850,7 @@
       "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==",
       "dev": true,
       "requires": {
-        "setimmediate": "1.0.5"
+        "setimmediate": "^1.0.4"
       }
     },
     "to-arraybuffer": {
@@ -5866,7 +5871,7 @@
       "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
       "dev": true,
       "requires": {
-        "kind-of": "3.2.2"
+        "kind-of": "^3.0.2"
       },
       "dependencies": {
         "kind-of": {
@@ -5875,7 +5880,7 @@
           "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
           "dev": true,
           "requires": {
-            "is-buffer": "1.1.6"
+            "is-buffer": "^1.1.5"
           }
         }
       }
@@ -5886,10 +5891,10 @@
       "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
       "dev": true,
       "requires": {
-        "define-property": "2.0.2",
-        "extend-shallow": "3.0.2",
-        "regex-not": "1.0.2",
-        "safe-regex": "1.1.0"
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "regex-not": "^1.0.2",
+        "safe-regex": "^1.1.0"
       }
     },
     "to-regex-range": {
@@ -5898,8 +5903,8 @@
       "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
       "dev": true,
       "requires": {
-        "is-number": "3.0.0",
-        "repeat-string": "1.6.1"
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1"
       }
     },
     "trim-right": {
@@ -5926,8 +5931,8 @@
       "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
       "dev": true,
       "requires": {
-        "commander": "2.13.0",
-        "source-map": "0.6.1"
+        "commander": "~2.13.0",
+        "source-map": "~0.6.1"
       },
       "dependencies": {
         "source-map": {
@@ -5944,14 +5949,14 @@
       "integrity": "sha512-hIQJ1yxAPhEA2yW/i7Fr+SXZVMp+VEI3d42RTHBgQd2yhp/1UdBcR3QEWPV5ahBxlqQDMEMTuTEvDHSFINfwSw==",
       "dev": true,
       "requires": {
-        "cacache": "10.0.4",
-        "find-cache-dir": "1.0.0",
-        "schema-utils": "0.4.5",
-        "serialize-javascript": "1.4.0",
-        "source-map": "0.6.1",
-        "uglify-es": "3.3.9",
-        "webpack-sources": "1.1.0",
-        "worker-farm": "1.6.0"
+        "cacache": "^10.0.4",
+        "find-cache-dir": "^1.0.0",
+        "schema-utils": "^0.4.5",
+        "serialize-javascript": "^1.4.0",
+        "source-map": "^0.6.1",
+        "uglify-es": "^3.3.4",
+        "webpack-sources": "^1.1.0",
+        "worker-farm": "^1.5.2"
       },
       "dependencies": {
         "source-map": {
@@ -5974,8 +5979,8 @@
       "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
       "dev": true,
       "requires": {
-        "unicode-canonical-property-names-ecmascript": "1.0.4",
-        "unicode-property-aliases-ecmascript": "1.0.4"
+        "unicode-canonical-property-names-ecmascript": "^1.0.4",
+        "unicode-property-aliases-ecmascript": "^1.0.4"
       }
     },
     "unicode-match-property-value-ecmascript": {
@@ -5996,10 +6001,10 @@
       "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
       "dev": true,
       "requires": {
-        "arr-union": "3.1.0",
-        "get-value": "2.0.6",
-        "is-extendable": "0.1.1",
-        "set-value": "0.4.3"
+        "arr-union": "^3.1.0",
+        "get-value": "^2.0.6",
+        "is-extendable": "^0.1.1",
+        "set-value": "^0.4.3"
       },
       "dependencies": {
         "extend-shallow": {
@@ -6008,7 +6013,7 @@
           "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
           "dev": true,
           "requires": {
-            "is-extendable": "0.1.1"
+            "is-extendable": "^0.1.0"
           }
         },
         "set-value": {
@@ -6017,10 +6022,10 @@
           "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
           "dev": true,
           "requires": {
-            "extend-shallow": "2.0.1",
-            "is-extendable": "0.1.1",
-            "is-plain-object": "2.0.4",
-            "to-object-path": "0.3.0"
+            "extend-shallow": "^2.0.1",
+            "is-extendable": "^0.1.1",
+            "is-plain-object": "^2.0.1",
+            "to-object-path": "^0.3.0"
           }
         }
       }
@@ -6037,7 +6042,7 @@
       "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=",
       "dev": true,
       "requires": {
-        "macaddress": "0.2.9"
+        "macaddress": "^0.2.8"
       }
     },
     "uniqs": {
@@ -6052,7 +6057,7 @@
       "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=",
       "dev": true,
       "requires": {
-        "unique-slug": "2.0.0"
+        "unique-slug": "^2.0.0"
       }
     },
     "unique-slug": {
@@ -6061,7 +6066,7 @@
       "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=",
       "dev": true,
       "requires": {
-        "imurmurhash": "0.1.4"
+        "imurmurhash": "^0.1.4"
       }
     },
     "unset-value": {
@@ -6070,8 +6075,8 @@
       "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
       "dev": true,
       "requires": {
-        "has-value": "0.3.1",
-        "isobject": "3.0.1"
+        "has-value": "^0.3.1",
+        "isobject": "^3.0.0"
       },
       "dependencies": {
         "has-value": {
@@ -6080,9 +6085,9 @@
           "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
           "dev": true,
           "requires": {
-            "get-value": "2.0.6",
-            "has-values": "0.1.4",
-            "isobject": "2.1.0"
+            "get-value": "^2.0.3",
+            "has-values": "^0.1.4",
+            "isobject": "^2.0.0"
           },
           "dependencies": {
             "isobject": {
@@ -6116,7 +6121,7 @@
       "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=",
       "dev": true,
       "requires": {
-        "punycode": "2.1.0"
+        "punycode": "^2.1.0"
       }
     },
     "urix": {
@@ -6149,7 +6154,7 @@
       "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==",
       "dev": true,
       "requires": {
-        "kind-of": "6.0.2"
+        "kind-of": "^6.0.2"
       }
     },
     "util": {
@@ -6181,8 +6186,8 @@
       "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
       "dev": true,
       "requires": {
-        "define-properties": "1.1.3",
-        "object.getownpropertydescriptors": "2.0.3"
+        "define-properties": "^1.1.2",
+        "object.getownpropertydescriptors": "^2.0.3"
       }
     },
     "v8-compile-cache": {
@@ -6224,19 +6229,19 @@
       "integrity": "sha512-SehrPGsxSssZXQoR7DTAm2oMBiJxV+xTIX5BUxc+qFsNo0iIj01tzAMXWt0PD5hjoNCXdS5Bq1KLRy7WaMdkKg==",
       "dev": true,
       "requires": {
-        "consolidate": "0.14.5",
-        "hash-sum": "1.0.2",
-        "loader-utils": "1.1.0",
-        "lru-cache": "4.1.1",
-        "postcss": "6.0.21",
-        "postcss-load-config": "1.2.0",
-        "postcss-selector-parser": "2.2.3",
-        "prettier": "1.12.1",
-        "resolve": "1.7.1",
-        "source-map": "0.6.1",
-        "vue-hot-reload-api": "2.3.0",
-        "vue-style-loader": "4.1.0",
-        "vue-template-es2015-compiler": "1.6.0"
+        "consolidate": "^0.14.0",
+        "hash-sum": "^1.0.2",
+        "loader-utils": "^1.1.0",
+        "lru-cache": "^4.1.1",
+        "postcss": "^6.0.8",
+        "postcss-load-config": "^1.1.0",
+        "postcss-selector-parser": "^2.0.0",
+        "prettier": "^1.7.0",
+        "resolve": "^1.4.0",
+        "source-map": "^0.6.1",
+        "vue-hot-reload-api": "^2.2.0",
+        "vue-style-loader": "^4.0.1",
+        "vue-template-es2015-compiler": "^1.6.0"
       },
       "dependencies": {
         "ansi-styles": {
@@ -6245,7 +6250,7 @@
           "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
           "dev": true,
           "requires": {
-            "color-convert": "1.9.1"
+            "color-convert": "^1.9.0"
           }
         },
         "chalk": {
@@ -6254,9 +6259,9 @@
           "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
           "dev": true,
           "requires": {
-            "ansi-styles": "3.2.1",
-            "escape-string-regexp": "1.0.5",
-            "supports-color": "5.4.0"
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
           }
         },
         "has-flag": {
@@ -6271,9 +6276,9 @@
           "integrity": "sha512-y/bKfbQz2Nn/QBC08bwvYUxEFOVGfPIUOTsJ2CK5inzlXW9SdYR1x4pEsG9blRAF/PX+wRNdOah+gx/hv4q7dw==",
           "dev": true,
           "requires": {
-            "chalk": "2.4.1",
-            "source-map": "0.6.1",
-            "supports-color": "5.4.0"
+            "chalk": "^2.3.2",
+            "source-map": "^0.6.1",
+            "supports-color": "^5.3.0"
           }
         },
         "source-map": {
@@ -6288,7 +6293,7 @@
           "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
           "dev": true,
           "requires": {
-            "has-flag": "3.0.0"
+            "has-flag": "^3.0.0"
           }
         }
       }
@@ -6299,8 +6304,8 @@
       "integrity": "sha512-IsSiXDrLW2QIjyBsCqa35e45l5AceMbJ2jO8DxoEQv75xu/UmtXkSC0ybESq/LpbmmIW47MAWDQvErUw+Hrz/A==",
       "dev": true,
       "requires": {
-        "hash-sum": "1.0.2",
-        "loader-utils": "1.1.0"
+        "hash-sum": "^1.0.2",
+        "loader-utils": "^1.0.2"
       }
     },
     "vue-template-compiler": {
@@ -6309,8 +6314,8 @@
       "integrity": "sha512-ZbuhCcF/hTYmldoUOVcu2fcbeSAZnfzwDskGduOrnjBiIWHgELAd+R8nAtX80aZkceWDKGQ6N9/0/EUpt+l22A==",
       "dev": true,
       "requires": {
-        "de-indent": "1.0.2",
-        "he": "1.1.1"
+        "de-indent": "^1.0.2",
+        "he": "^1.1.0"
       }
     },
     "vue-template-es2015-compiler": {
@@ -6325,9 +6330,9 @@
       "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
       "dev": true,
       "requires": {
-        "chokidar": "2.0.3",
-        "graceful-fs": "4.1.11",
-        "neo-async": "2.5.1"
+        "chokidar": "^2.0.2",
+        "graceful-fs": "^4.1.2",
+        "neo-async": "^2.5.0"
       }
     },
     "webpack": {
@@ -6336,25 +6341,25 @@
       "integrity": "sha512-Fu/k/3fZeGtIhuFkiYpIy1UDHhMiGKjG4FFPVuvG+5Os2lWA1ttWpmi9Qnn6AgfZqj9MvhZW/rmj/ip+nHr06g==",
       "dev": true,
       "requires": {
-        "acorn": "5.5.3",
-        "acorn-dynamic-import": "3.0.0",
-        "ajv": "6.4.0",
-        "ajv-keywords": "3.1.0",
-        "chrome-trace-event": "0.1.3",
-        "enhanced-resolve": "4.0.0",
-        "eslint-scope": "3.7.1",
-        "loader-runner": "2.3.0",
-        "loader-utils": "1.1.0",
-        "memory-fs": "0.4.1",
-        "micromatch": "3.1.10",
-        "mkdirp": "0.5.1",
-        "neo-async": "2.5.1",
-        "node-libs-browser": "2.1.0",
-        "schema-utils": "0.4.5",
-        "tapable": "1.0.0",
-        "uglifyjs-webpack-plugin": "1.2.5",
-        "watchpack": "1.6.0",
-        "webpack-sources": "1.1.0"
+        "acorn": "^5.0.0",
+        "acorn-dynamic-import": "^3.0.0",
+        "ajv": "^6.1.0",
+        "ajv-keywords": "^3.1.0",
+        "chrome-trace-event": "^0.1.1",
+        "enhanced-resolve": "^4.0.0",
+        "eslint-scope": "^3.7.1",
+        "loader-runner": "^2.3.0",
+        "loader-utils": "^1.1.0",
+        "memory-fs": "~0.4.1",
+        "micromatch": "^3.1.8",
+        "mkdirp": "~0.5.0",
+        "neo-async": "^2.5.0",
+        "node-libs-browser": "^2.0.0",
+        "schema-utils": "^0.4.4",
+        "tapable": "^1.0.0",
+        "uglifyjs-webpack-plugin": "^1.2.4",
+        "watchpack": "^1.5.0",
+        "webpack-sources": "^1.0.1"
       }
     },
     "webpack-cli": {
@@ -6363,16 +6368,16 @@
       "integrity": "sha512-Cnqo7CeqeSvC6PTdts+dywNi5CRlIPbLx1AoUPK2T6vC1YAugMG3IOoO9DmEscd+Dghw7uRlnzV1KwOe5IrtgQ==",
       "dev": true,
       "requires": {
-        "chalk": "2.4.1",
-        "cross-spawn": "6.0.5",
-        "enhanced-resolve": "4.1.0",
-        "global-modules-path": "2.3.0",
-        "import-local": "2.0.0",
-        "interpret": "1.1.0",
-        "loader-utils": "1.1.0",
-        "supports-color": "5.5.0",
-        "v8-compile-cache": "2.0.2",
-        "yargs": "12.0.2"
+        "chalk": "^2.4.1",
+        "cross-spawn": "^6.0.5",
+        "enhanced-resolve": "^4.1.0",
+        "global-modules-path": "^2.3.0",
+        "import-local": "^2.0.0",
+        "interpret": "^1.1.0",
+        "loader-utils": "^1.1.0",
+        "supports-color": "^5.5.0",
+        "v8-compile-cache": "^2.0.2",
+        "yargs": "^12.0.2"
       },
       "dependencies": {
         "ansi-styles": {
@@ -6381,7 +6386,7 @@
           "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
           "dev": true,
           "requires": {
-            "color-convert": "1.9.1"
+            "color-convert": "^1.9.0"
           }
         },
         "chalk": {
@@ -6390,9 +6395,9 @@
           "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
           "dev": true,
           "requires": {
-            "ansi-styles": "3.2.1",
-            "escape-string-regexp": "1.0.5",
-            "supports-color": "5.5.0"
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
           }
         },
         "enhanced-resolve": {
@@ -6401,9 +6406,9 @@
           "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
           "dev": true,
           "requires": {
-            "graceful-fs": "4.1.11",
-            "memory-fs": "0.4.1",
-            "tapable": "1.0.0"
+            "graceful-fs": "^4.1.2",
+            "memory-fs": "^0.4.0",
+            "tapable": "^1.0.0"
           }
         },
         "has-flag": {
@@ -6418,7 +6423,7 @@
           "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
           "dev": true,
           "requires": {
-            "has-flag": "3.0.0"
+            "has-flag": "^3.0.0"
           }
         }
       }
@@ -6429,8 +6434,8 @@
       "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==",
       "dev": true,
       "requires": {
-        "source-list-map": "2.0.0",
-        "source-map": "0.6.1"
+        "source-list-map": "^2.0.0",
+        "source-map": "~0.6.1"
       },
       "dependencies": {
         "source-map": {
@@ -6453,7 +6458,7 @@
       "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
       "dev": true,
       "requires": {
-        "isexe": "2.0.0"
+        "isexe": "^2.0.0"
       }
     },
     "which-module": {
@@ -6468,7 +6473,7 @@
       "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==",
       "dev": true,
       "requires": {
-        "errno": "0.1.7"
+        "errno": "~0.1.7"
       }
     },
     "wrap-ansi": {
@@ -6477,8 +6482,8 @@
       "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
       "dev": true,
       "requires": {
-        "string-width": "1.0.2",
-        "strip-ansi": "3.0.1"
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1"
       },
       "dependencies": {
         "is-fullwidth-code-point": {
@@ -6487,7 +6492,7 @@
           "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
           "dev": true,
           "requires": {
-            "number-is-nan": "1.0.1"
+            "number-is-nan": "^1.0.0"
           }
         },
         "string-width": {
@@ -6496,9 +6501,9 @@
           "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
           "dev": true,
           "requires": {
-            "code-point-at": "1.1.0",
-            "is-fullwidth-code-point": "1.0.0",
-            "strip-ansi": "3.0.1"
+            "code-point-at": "^1.0.0",
+            "is-fullwidth-code-point": "^1.0.0",
+            "strip-ansi": "^3.0.0"
           }
         }
       }
@@ -6539,18 +6544,18 @@
       "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==",
       "dev": true,
       "requires": {
-        "cliui": "4.1.0",
-        "decamelize": "2.0.0",
-        "find-up": "3.0.0",
-        "get-caller-file": "1.0.3",
-        "os-locale": "3.0.1",
-        "require-directory": "2.1.1",
-        "require-main-filename": "1.0.1",
-        "set-blocking": "2.0.0",
-        "string-width": "2.1.1",
-        "which-module": "2.0.0",
-        "y18n": "4.0.0",
-        "yargs-parser": "10.1.0"
+        "cliui": "^4.0.0",
+        "decamelize": "^2.0.0",
+        "find-up": "^3.0.0",
+        "get-caller-file": "^1.0.1",
+        "os-locale": "^3.0.0",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^1.0.1",
+        "set-blocking": "^2.0.0",
+        "string-width": "^2.0.0",
+        "which-module": "^2.0.0",
+        "y18n": "^3.2.1 || ^4.0.0",
+        "yargs-parser": "^10.1.0"
       },
       "dependencies": {
         "decamelize": {
@@ -6568,7 +6573,7 @@
           "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
           "dev": true,
           "requires": {
-            "locate-path": "3.0.0"
+            "locate-path": "^3.0.0"
           }
         },
         "locate-path": {
@@ -6577,8 +6582,8 @@
           "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
           "dev": true,
           "requires": {
-            "p-locate": "3.0.0",
-            "path-exists": "3.0.0"
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
           }
         },
         "p-limit": {
@@ -6587,7 +6592,7 @@
           "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
           "dev": true,
           "requires": {
-            "p-try": "2.0.0"
+            "p-try": "^2.0.0"
           }
         },
         "p-locate": {
@@ -6596,7 +6601,7 @@
           "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
           "dev": true,
           "requires": {
-            "p-limit": "2.0.0"
+            "p-limit": "^2.0.0"
           }
         },
         "p-try": {
@@ -6613,7 +6618,7 @@
       "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
       "dev": true,
       "requires": {
-        "camelcase": "4.1.0"
+        "camelcase": "^4.1.0"
       }
     }
   }
diff --git a/src/sl-vue-tree.d.ts b/src/sl-vue-tree.d.ts
index 7704f57..47be4a8 100644
--- a/src/sl-vue-tree.d.ts
+++ b/src/sl-vue-tree.d.ts
@@ -45,7 +45,7 @@ export default class SlVueTree<TDataType> extends Vue {
     getLastNode(): ISlTreeNode<TDataType>;
     getNextNode(path: number[], filter?: (node: ISlTreeNode<TDataType>) => boolean): ISlTreeNode<TDataType>;
     getPrevNode(path: number[], filter?: (node: ISlTreeNode<TDataType>) => boolean): ISlTreeNode<TDataType>;
-    updateNode(nodeToUpdate: ISlTreeNode<TDataType>, patch: Partial<ISlTreeNodeModel<TDataType>>): void;
+    updateNode(path: number[], patch: Partial<ISlTreeNodeModel<TDataType>>): void;
     getSelected(): ISlTreeNode<TDataType>[];
     traverse(cb: (node: ISlTreeNode<TDataType>, nodeModel: ISlTreeNodeModel<TDataType>, siblings: ISlTreeNodeModel<TDataType>[]) => boolean | void, nodeModels?: ISlTreeNodeModel<TDataType>[], parentPath?: number[]): ISlTreeNode<TDataType>[] | boolean;
     getNodeEl(path: number[]): HTMLElement;

From b82be88b5c8209850b3e52717a3c322884b0ad3c Mon Sep 17 00:00:00 2001
From: Alexander Elert <a.elert@inray.de>
Date: Tue, 10 Mar 2020 15:27:49 +0100
Subject: [PATCH 2/2] Added insert and remove to TypeScript definition

---
 dist/sl-vue-tree.d.ts | 2 ++
 src/sl-vue-tree.d.ts  | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/dist/sl-vue-tree.d.ts b/dist/sl-vue-tree.d.ts
index 47be4a8..de26904 100644
--- a/dist/sl-vue-tree.d.ts
+++ b/dist/sl-vue-tree.d.ts
@@ -50,4 +50,6 @@ export default class SlVueTree<TDataType> extends Vue {
     traverse(cb: (node: ISlTreeNode<TDataType>, nodeModel: ISlTreeNodeModel<TDataType>, siblings: ISlTreeNodeModel<TDataType>[]) => boolean | void, nodeModels?: ISlTreeNodeModel<TDataType>[], parentPath?: number[]): ISlTreeNode<TDataType>[] | boolean;
     getNodeEl(path: number[]): HTMLElement;
     select(path: number[], addToSelection?: boolean): ISlTreeNode<TDataType>;
+    insert(cursorPosition: ICursorPosition<TDataType>, nodeModel:  ISlTreeNodeModel<TDataType>);
+    remove(paths: number[][]);
 }
diff --git a/src/sl-vue-tree.d.ts b/src/sl-vue-tree.d.ts
index 47be4a8..de26904 100644
--- a/src/sl-vue-tree.d.ts
+++ b/src/sl-vue-tree.d.ts
@@ -50,4 +50,6 @@ export default class SlVueTree<TDataType> extends Vue {
     traverse(cb: (node: ISlTreeNode<TDataType>, nodeModel: ISlTreeNodeModel<TDataType>, siblings: ISlTreeNodeModel<TDataType>[]) => boolean | void, nodeModels?: ISlTreeNodeModel<TDataType>[], parentPath?: number[]): ISlTreeNode<TDataType>[] | boolean;
     getNodeEl(path: number[]): HTMLElement;
     select(path: number[], addToSelection?: boolean): ISlTreeNode<TDataType>;
+    insert(cursorPosition: ICursorPosition<TDataType>, nodeModel:  ISlTreeNodeModel<TDataType>);
+    remove(paths: number[][]);
 }