diff --git a/web/gui/src/main/webapp/app/directives.js b/web/gui/src/main/webapp/app/directives.js
index 8135a96..1cb188f 100644
--- a/web/gui/src/main/webapp/app/directives.js
+++ b/web/gui/src/main/webapp/app/directives.js
@@ -30,14 +30,14 @@
                 scope: {
                     offsetHeight: '@',
                     offsetWidth: '@',
-                    notifier: '&'
+                    notifier: '&',
                 },
                 link: function (scope, element) {
                     var elem = d3.select(element[0]);
                     scope.$watchCollection(function () {
                         return {
                             h: $window.innerHeight,
-                            w: $window.innerWidth
+                            w: $window.innerWidth,
                         };
                     }, function () {
                         var offH = scope.offsetHeight || 0,
@@ -46,7 +46,7 @@
 
                         elem.style({
                             height: wsz.height + 'px',
-                            width: wsz.width + 'px'
+                            width: wsz.width + 'px',
                         });
 
                         if (fs.isF(scope.notifier)) {
@@ -57,7 +57,7 @@
                     angular.element($window).bind('resize', function () {
                         scope.$apply();
                     });
-                }
+                },
             };
         }])
 
diff --git a/web/gui/src/main/webapp/app/fw/layer/dialog.js b/web/gui/src/main/webapp/app/fw/layer/dialog.js
index 6b6f5df..0b165a8 100644
--- a/web/gui/src/main/webapp/app/fw/layer/dialog.js
+++ b/web/gui/src/main/webapp/app/fw/layer/dialog.js
@@ -23,12 +23,12 @@
     'use strict';
 
     // injected refs
-    var $log, $window, fs, ps, bns, ks;
+    var $log, fs, ps, ks;
 
     // configuration
     var defaultSettings = {
             width: 300,
-            edge: 'left'
+            edge: 'left',
         };
 
     // internal state
@@ -92,7 +92,7 @@
             appendHeader: hAppend,
             appendBody: bAppend,
             appendFooter: fAppend,
-            destroy: destroy
+            destroy: destroy,
         };
     }
 
@@ -141,7 +141,7 @@
     function _addOk(cb, text, chained) {
         return addButton(cb, text || 'OK', 'enter', chained);
     }
-    
+
     function addOk(cb, text) {
         return _addOk(cb, text, false);
     }
@@ -178,7 +178,7 @@
             addCancel: addCancel,
             bindKeys: function () {
                 ks.dialogKeys(keyBindings);
-            }
+            },
         };
         return dApi;
     }
@@ -207,25 +207,21 @@
 
     angular.module('onosLayer')
     .factory('DialogService',
-        ['$log', '$window', 'FnService', 'PanelService', 'ButtonService',
-            'KeyService',
+        ['$log', 'FnService', 'PanelService', 'KeyService',
 
-        // TODO: for now, $window is not used, but we should provide an option
-            // to center the dialog on the window.
+        // TODO: use $window to provide an option to center the
+        // dialog on the window.
 
-        function (_$log_, _$window_, _fs_, _ps_, _bns_, _ks_) {
+        function (_$log_, _fs_, _ps_, _ks_) {
             $log = _$log_;
-            $window = _$window_;
             fs = _fs_;
             ps = _ps_;
-            bns = _bns_;
             ks = _ks_;
 
             return {
                 openDialog: openDialog,
                 closeDialog: closeDialog,
-                createDiv: createDiv
+                createDiv: createDiv,
             };
         }]);
-
 }());
diff --git a/web/gui/src/main/webapp/app/fw/layer/flash.js b/web/gui/src/main/webapp/app/fw/layer/flash.js
index 375c3ba..641da31 100644
--- a/web/gui/src/main/webapp/app/fw/layer/flash.js
+++ b/web/gui/src/main/webapp/app/fw/layer/flash.js
@@ -24,12 +24,12 @@
     'use strict';
 
     // injected references
-    var $log, $timeout;
+    var $timeout;
 
     // configuration
     var defaultSettings = {
             fade: 200,
-            showFor: 1200
+            showFor: 1200,
         },
         w = '100%',
         h = 200,
@@ -70,7 +70,7 @@
             svg = flashDiv.append('svg').attr({
                 width: w,
                 height: h,
-                viewBox: vbox
+                viewBox: vbox,
             });
         }
 
@@ -93,7 +93,7 @@
             .append('g')
             .attr({
                 class: 'flashItem',
-                opacity: 0
+                opacity: 0,
             })
             .transition()
             .duration(settings.fade)
@@ -151,9 +151,8 @@
     }
 
     angular.module('onosLayer')
-        .factory('FlashService', ['$log', '$timeout',
-        function (_$log_, _$timeout_) {
-            $log = _$log_;
+        .factory('FlashService', ['$timeout',
+        function (_$timeout_) {
             $timeout = _$timeout_;
 
             function initFlash(opts) {
@@ -166,7 +165,7 @@
                 initFlash: initFlash,
                 flash: flash,
                 enable: enable,
-                tempDiv: tempDiv
+                tempDiv: tempDiv,
             };
         }]);
 
diff --git a/web/gui/src/main/webapp/app/fw/layer/loading.js b/web/gui/src/main/webapp/app/fw/layer/loading.js
index b8bfc2e..9f02e84 100644
--- a/web/gui/src/main/webapp/app/fw/layer/loading.js
+++ b/web/gui/src/main/webapp/app/fw/layer/loading.js
@@ -23,7 +23,7 @@
     'use strict';
 
     // injected references
-    var $log, $timeout, ts, fs;
+    var $timeout, ts, fs;
 
     // constants
     var id = 'loading-anim',
@@ -122,10 +122,9 @@
 
     angular.module('onosLayer')
         .factory('LoadingService',
-        ['$log', '$timeout', 'ThemeService', 'FnService', 'WebSocketService',
+        ['$timeout', 'ThemeService', 'FnService', 'WebSocketService',
 
-            function (_$log_, _$timeout_, _ts_, _fs_, wss) {
-            $log = _$log_;
+            function (_$timeout_, _ts_, _fs_, wss) {
             $timeout = _$timeout_;
             ts = _ts_;
             fs = _fs_;
@@ -135,10 +134,10 @@
             var self = {
                 start: start,
                 stop: stop,
-                waiting: waiting
+                waiting: waiting,
             };
             wss._setLoadingDelegate(self);
             return self;
         }]);
 
-}());
\ No newline at end of file
+}());
diff --git a/web/gui/src/main/webapp/app/fw/layer/panel.js b/web/gui/src/main/webapp/app/fw/layer/panel.js
index 2005cfd..91682aa 100644
--- a/web/gui/src/main/webapp/app/fw/layer/panel.js
+++ b/web/gui/src/main/webapp/app/fw/layer/panel.js
@@ -28,7 +28,7 @@
         margin: 20,
         hideMargin: 20,
         xtnTime: 750,
-        fade: true
+        fade: true,
     };
 
     var panels,
@@ -71,7 +71,7 @@
                 id: id,
                 settings: settings,
                 on: false,
-                el: null
+                el: null,
             },
             api = {
                 show: showPanel,
@@ -84,7 +84,7 @@
                 bbox: panelBBox,
                 isVisible: panelIsVisible,
                 classed: classed,
-                el: panelEl
+                el: panelEl,
             };
 
         p.el = panelLayer.append('div')
@@ -215,7 +215,7 @@
             return {
                 init: init,
                 createPanel: createPanel,
-                destroyPanel: destroyPanel
+                destroyPanel: destroyPanel,
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/fw/layer/quickhelp.js b/web/gui/src/main/webapp/app/fw/layer/quickhelp.js
index 8d47dde..46a5c79 100644
--- a/web/gui/src/main/webapp/app/fw/layer/quickhelp.js
+++ b/web/gui/src/main/webapp/app/fw/layer/quickhelp.js
@@ -27,7 +27,7 @@
 
     // configuration
     var defaultSettings = {
-            fade: 500
+            fade: 500,
         },
         w = '100%',
         h = '80%',
@@ -56,12 +56,12 @@
         leftArrow: 'L-arrow',
         upArrow: 'U-arrow',
         rightArrow: 'R-arrow',
-        downArrow: 'D-arrow'
+        downArrow: 'D-arrow',
     };
 
     // list of needed bindings to use in aggregateData
     var neededBindings = [
-        'globalKeys', 'globalFormat', 'viewKeys', 'viewGestures'
+        'globalKeys', 'globalFormat', 'viewKeys', 'viewGestures',
     ];
 
     // ===========================================
@@ -88,7 +88,7 @@
                 aggKey = el.append('g').attr('visibility', 'hidden'),
                 gcol = el.append('g').attr({
                     'class': cls,
-                    transform: sus.translate(xCount, 0)
+                    transform: sus.translate(xCount, 0),
                 });
 
             c.forEach(function (j) {
@@ -101,12 +101,12 @@
                     gcol.append('text').text(k)
                         .attr({
                             'class': 'key',
-                            y: oy
+                            y: oy,
                         });
                     gcol.append('text').text(v)
                         .attr({
                             'class': 'desc',
-                            y: oy
+                            y: oy,
                         });
                 }
 
@@ -140,7 +140,7 @@
         var entering = rows.enter()
             .append('g')
             .attr({
-                'class': 'qhrow'
+                'class': 'qhrow',
             });
 
         entering.each(function (r, i) {
@@ -169,7 +169,7 @@
         rect.attr({
             width: paneW,
             height: paneH,
-            transform: sus.translate(-paneW/2-pad, 0)
+            transform: sus.translate(-paneW/2-pad, 0),
         });
 
     }
@@ -279,7 +279,7 @@
         pane = svg.append('g')
             .attr({
                 class: 'help',
-                opacity: 0
+                opacity: 0,
             });
 
         rect = pane.append('rect')
@@ -290,7 +290,7 @@
             .attr({
                 class: 'title',
                 dy: '1.2em',
-                transform: sus.translate(-pad,0)
+                transform: sus.translate(-pad, 0),
             });
 
         items = pane.append('g');
@@ -316,7 +316,7 @@
             .attr({
                 width: w,
                 height: h,
-                viewBox: vbox
+                viewBox: vbox,
             });
     }
 
@@ -338,7 +338,7 @@
                 'needed bindings for help panel not provided:',
                 neededBindings
             );
-            return false
+            return false;
         }
         return true;
     }
@@ -387,7 +387,7 @@
             return {
                 initQuickHelp: initQuickHelp,
                 showQuickHelp: showQuickHelp,
-                hideQuickHelp: hideQuickHelp
+                hideQuickHelp: hideQuickHelp,
             };
         }]);
 
diff --git a/web/gui/src/main/webapp/app/fw/layer/veil.js b/web/gui/src/main/webapp/app/fw/layer/veil.js
index b38c333..677ffc4 100644
--- a/web/gui/src/main/webapp/app/fw/layer/veil.js
+++ b/web/gui/src/main/webapp/app/fw/layer/veil.js
@@ -41,7 +41,7 @@
 
         svg = veil.select('svg').attr({
             width: ww,
-            height: wh
+            height: wh,
         }).style('opacity', 0.2);
 
         gs.addGlyph(svg, 'bird', birdDim, false, [birdCenter, shrink/2]);
@@ -71,7 +71,7 @@
     function lostServer(ctrlName, msg) {
         if ($route.current.$$route.controller === ctrlName) {
             $log.debug('VEIL-service: ', ctrlName);
-            show(msg)
+            show(msg);
         } else {
             $log.debug('VEIL-service: IGNORING ', ctrlName);
         }
@@ -92,7 +92,7 @@
                 init: init,
                 show: show,
                 hide: hide,
-                lostServer: lostServer
+                lostServer: lostServer,
             };
             wss._setVeilDelegate(self);
             return self;
diff --git a/web/gui/src/main/webapp/app/fw/mast/mast.js b/web/gui/src/main/webapp/app/fw/mast/mast.js
index 7686540..e305a02 100644
--- a/web/gui/src/main/webapp/app/fw/mast/mast.js
+++ b/web/gui/src/main/webapp/app/fw/mast/mast.js
@@ -24,7 +24,7 @@
     var mastHeight = 48,
         padMobile = 16,
         dialogOpts = {
-            edge: 'left'
+            edge: 'left',
         };
 
     var ls;
@@ -83,8 +83,8 @@
             }
 
             wss.bindHandlers({
-                'guiAdded': function () { triggerRefresh('add') },
-                'guiRemoved': function () { triggerRefresh('rem') }
+                'guiAdded': function () { triggerRefresh('add'); },
+                'guiRemoved': function () { triggerRefresh('rem'); },
             });
 
             // delegate to NavService
@@ -120,8 +120,8 @@
             return {
                 mastHeight: function () {
                     return fs.isMobile() ? mastHeight + padMobile : mastHeight;
-                }
-            }
+                },
+            };
         }]);
 
 }());
diff --git a/web/gui/src/main/webapp/app/fw/nav/nav.js b/web/gui/src/main/webapp/app/fw/nav/nav.js
index c707b71..671fa91 100644
--- a/web/gui/src/main/webapp/app/fw/nav/nav.js
+++ b/web/gui/src/main/webapp/app/fw/nav/nav.js
@@ -79,7 +79,7 @@
 
                 self.hideNav = hideNav;
                 $log.log('NavCtrl has been created');
-            }
+            },
         ])
         .factory('NavService',
             ['$log', '$location', '$window', 'FnService',
@@ -95,7 +95,7 @@
                     hideNav: hideNav,
                     toggleNav: toggleNav,
                     hideIfShown: hideIfShown,
-                    navTo: navTo
+                    navTo: navTo,
                 };
         }]);
 
diff --git a/web/gui/src/main/webapp/app/fw/remote/rest.js b/web/gui/src/main/webapp/app/fw/remote/rest.js
index 3114faf..8c281d4 100644
--- a/web/gui/src/main/webapp/app/fw/remote/rest.js
+++ b/web/gui/src/main/webapp/app/fw/remote/rest.js
@@ -66,7 +66,7 @@
 
             return {
                 get: get,
-                post: post
+                post: post,
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/fw/remote/urlfn.js b/web/gui/src/main/webapp/app/fw/remote/urlfn.js
index d6b6cfb..be2fc1f 100644
--- a/web/gui/src/main/webapp/app/fw/remote/urlfn.js
+++ b/web/gui/src/main/webapp/app/fw/remote/urlfn.js
@@ -68,7 +68,7 @@
 
             return {
                 rsUrl: rsUrl,
-                wsUrl: wsUrl
+                wsUrl: wsUrl,
             };
         }]);
 
diff --git a/web/gui/src/main/webapp/app/fw/remote/websocket.js b/web/gui/src/main/webapp/app/fw/remote/websocket.js
index 18f4ea1..ff6c063 100644
--- a/web/gui/src/main/webapp/app/fw/remote/websocket.js
+++ b/web/gui/src/main/webapp/app/fw/remote/websocket.js
@@ -24,19 +24,19 @@
     var $log, $loc, fs, ufs, wsock, vs, ls;
 
     // internal state
-    var webSockOpts,            // web socket options
-        ws = null,              // web socket reference
-        wsUp = false,           // web socket is good to go
-        handlers = {},          // event handler bindings
-        pendingEvents = [],     // events TX'd while socket not up
-        host,                   // web socket host
-        url,                    // web socket URL
-        clusterNodes = [],      // ONOS instances data for failover
-        clusterIndex = -1,      // the instance to which we are connected
-        connectRetries = 0,     // limit our attempts at reconnecting
-        openListeners = {},     // registered listeners for websocket open()
-        nextListenerId = 1,     // internal ID for open listeners
-        loggedInUser = null;    // name of logged-in user
+    var webSockOpts, // web socket options
+        ws = null, // web socket reference
+        wsUp = false, // web socket is good to go
+        handlers = {}, // event handler bindings
+        pendingEvents = [], // events TX'd while socket not up
+        host, // web socket host
+        url, // web socket URL
+        clusterNodes = [], // ONOS instances data for failover
+        clusterIndex = -1, // the instance to which we are connected
+        connectRetries = 0, // limit our attempts at reconnecting
+        openListeners = {}, // registered listeners for websocket open()
+        nextListenerId = 1, // internal ID for open listeners
+        loggedInUser = null; // name of logged-in user
 
     // built-in handlers
     var builtinHandlers = {
@@ -62,9 +62,9 @@
             vs && vs.show([
                 'Oops!',
                 'Server reports error...',
-                m
+                m,
             ]);
-        }
+        },
     };
 
 
@@ -129,7 +129,7 @@
             vs && vs.show([
                 'Oops!',
                 'Web-socket connection to server closed...',
-                'Try refreshing the page.'
+                'Try refreshing the page.',
             ]);
         }
     }
@@ -210,7 +210,7 @@
             ws.onmessage = handleMessage;
             ws.onclose = handleClose;
 
-            sendEvent('authentication', {token: onosAuth});
+            sendEvent('authentication', { token: onosAuth });
         }
         // Note: Wsock logs an error if the new WebSocket call fails
         return url;
@@ -299,7 +299,7 @@
     function sendEvent(evType, payload) {
         var ev = {
                 event: evType,
-                payload: payload || {}
+                payload: payload || {},
             };
 
         if (wsUp) {
@@ -347,9 +347,9 @@
                 loggedInUser: function () { return loggedInUser || '(no-one)'; },
 
                 _setVeilDelegate: setVeilDelegate,
-                _setLoadingDelegate: setLoadingDelegate
+                _setLoadingDelegate: setLoadingDelegate,
             };
-        }
+        },
     ]);
 
 }());
diff --git a/web/gui/src/main/webapp/app/fw/remote/wsock.js b/web/gui/src/main/webapp/app/fw/remote/wsock.js
index b0168c8..fe76be4 100644
--- a/web/gui/src/main/webapp/app/fw/remote/wsock.js
+++ b/web/gui/src/main/webapp/app/fw/remote/wsock.js
@@ -36,7 +36,7 @@
             }
 
             return {
-                newWebSocket: newWebSocket
+                newWebSocket: newWebSocket,
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/fw/svg/geodata.js b/web/gui/src/main/webapp/app/fw/svg/geodata.js
index 31bef50..5270e00 100644
--- a/web/gui/src/main/webapp/app/fw/svg/geodata.js
+++ b/web/gui/src/main/webapp/app/fw/svg/geodata.js
@@ -93,7 +93,7 @@
             promise.meta = {
                 id: id,
                 url: url,
-                wasCached: false
+                wasCached: false,
             };
 
             promise.then(function (response) {
@@ -118,7 +118,7 @@
         objectTag: 'states',
         projection: d3.geo.mercator(),
         logicalSize: 1000,
-        mapFillScale: .95
+        mapFillScale: .95,
     };
 
     // converts given TopoJSON-format data into corresponding GeoJSON
@@ -138,7 +138,7 @@
         return {
             geodata: geoData,
             pathgen: path,
-            settings: settings
+            settings: settings,
         };
     }
 
@@ -181,7 +181,7 @@
                 clearCache: clearCache,
                 fetchTopoData: fetchTopoData,
                 createPathGenerator: createPathGenerator,
-                rescaleProjection: rescaleProjection
+                rescaleProjection: rescaleProjection,
             };
         }]);
-}());
\ No newline at end of file
+}());
diff --git a/web/gui/src/main/webapp/app/fw/svg/glyph.js b/web/gui/src/main/webapp/app/fw/svg/glyph.js
index e029f12..a333929 100644
--- a/web/gui/src/main/webapp/app/fw/svg/glyph.js
+++ b/web/gui/src/main/webapp/app/fw/svg/glyph.js
@@ -29,8 +29,8 @@
 
     // constants
     var msgGS = 'GlyphService.',
-        rg = "registerGlyphs(): ",
-        rgs = "registerGlyphSet(): ";
+        rg = 'registerGlyphs(): ',
+        rgs = 'registerGlyphSet(): ';
 
     // ----------------------------------------------------------------------
 
@@ -42,7 +42,7 @@
         if (!overwrite && glyphs.get(key)) {
             dups.push(key);
         } else {
-            glyphs.set(key, {id: key, vb: vbox, d: value});
+            glyphs.set(key, { id: key, vb: vbox, d: value });
         }
     }
 
@@ -166,7 +166,7 @@
                 width: sz,
                 height: sz,
                 'class': 'glyph',
-                'xlink:href': '#' + glyphId
+                'xlink:href': '#' + glyphId,
             };
 
         if (xns) {
@@ -196,7 +196,7 @@
                 glyph: glyph,
                 glyphDefined: glyphDefined,
                 loadDefs: loadDefs,
-                addGlyph: addGlyph
+                addGlyph: addGlyph,
             };
             return api;
         }]
diff --git a/web/gui/src/main/webapp/app/fw/svg/glyphData.js b/web/gui/src/main/webapp/app/fw/svg/glyphData.js
index 3c80974..4d2cfbc 100644
--- a/web/gui/src/main/webapp/app/fw/svg/glyphData.js
+++ b/web/gui/src/main/webapp/app/fw/svg/glyphData.js
@@ -60,7 +60,7 @@
             'm-0.6,7.4a21.3,21.3,0,0,0,5.9,11.7l5.7,5.7' +
             'c3,3,9,4.1,11.9,1.3-3.3.9-5.9-1.2-7.9-3.2L34.3,88.1Z' +
             'm3.5-12.4a16.6,16.6,0,0,0-2.3,3.6L57,100.8' +
-            'c3,3,9,4.1,11.9,1.3-3.3.9-5.9-1.2-7.9-3.2Z'
+            'c3,3,9,4.1,11.9,1.3-3.3.9-5.9-1.2-7.9-3.2Z',
         },
 
 
@@ -521,7 +521,7 @@
             'L22,23.7z M97.9,46.5H77.2L88,23.7L97.9,46.5z',
 
             xClose: 'M20,8l35,35,35-35,12,12-35,35,35,35-12,12-35-35-35,35' +
-            '-12-12,35-35-35-35,12-12Z'
+            '-12-12,35-35-35-35,12-12Z',
         },
 
         badgeDataSet = {
@@ -545,7 +545,7 @@
 
             play: 'M3,1.5l3.5,3.5l-3.5,3.5z',
 
-            stop: 'M2.5,2.5h5v5h-5z'
+            stop: 'M2.5,2.5h5v5h-5z',
         },
 
         spriteData = {
@@ -560,7 +560,7 @@
             'M93.6,74.7c10.2-2,10.7-14,5.8-18.3' +
             'M71.1,79.3c11.2,7.6,24.6,6.4,22.1-11.7' +
             'M36.4,76.8c3.4,13.3,35.4,11.6,36.1-1.4' +
-            'M70.4,31c11.8-10.4,26.2-5.2,24.7,10.1'
+            'M70.4,31c11.8-10.4,26.2-5.2,24.7,10.1',
         },
 
 
@@ -1282,7 +1282,7 @@
             'M81.7,80.8H17.9a1.8,1.8,0,0,1-1.6-2.7l9.2-16.8' +
             'a1.8,1.8,0,0,1,1.6-1h9.5a1.8,1.8,0,1,1,0,3.7H28.2L21,77.1H78.6' +
             'L71.4,64H61.9a1.8,1.8,0,1,1,0-3.7H72.5a1.8,1.8,0,0,1,1.6,1' +
-            'l9.2,16.8A1.8,1.8,0,0,1,81.7,80.8Z'
+            'l9.2,16.8A1.8,1.8,0,0,1,81.7,80.8Z',
         },
 
         extraGlyphs = {
@@ -1295,7 +1295,7 @@
             'a175.5,175.5,0,0,0,58.6-10l3.9-1.4,3.9-1.5,3.9-1.7h0' +
             'l3.9-1.7,2.8-1.3,2.7-1.4a175.6,175.6,0,0,0,95.9-155.1' +
             'C372.4,226.7,358,290.1,286.5,289.9ZM110.1,237.7' +
-            'A33.6,33.6,0,1,1,143.7,204,33.6,33.6,0,0,1,110.1,237.7Z'
+            'A33.6,33.6,0,1,1,143.7,204,33.6,33.6,0,0,1,110.1,237.7Z',
         };
 
 
@@ -1317,7 +1317,7 @@
     .factory('GlyphDataService',
         [function () {
             return {
-                registerCoreGlyphs: registerCoreGlyphs
+                registerCoreGlyphs: registerCoreGlyphs,
             };
         }]
     );
diff --git a/web/gui/src/main/webapp/app/fw/svg/icon.js b/web/gui/src/main/webapp/app/fw/svg/icon.js
index 67a557b..aabbc17 100644
--- a/web/gui/src/main/webapp/app/fw/svg/icon.js
+++ b/web/gui/src/main/webapp/app/fw/svg/icon.js
@@ -20,7 +20,7 @@
 (function () {
     'use strict';
 
-    var $log, fs, gs, sus;
+    var $log, gs, sus;
 
     var vboxSize = 50,
         cornerSize = vboxSize / 10,
@@ -39,7 +39,6 @@
 
         delta: 'delta',
         nonzero: 'nonzero',
-
         close: 'xClose',
 
         topo: 'topo',
@@ -79,8 +78,8 @@
         nav_links: 'ports',
         nav_hosts: 'endstation',
         nav_intents: 'relatedIntents',
-        nav_tunnels: 'ports',  // TODO: use tunnel glyph, when available
-        nav_yang: 'yang'
+        nav_tunnels: 'ports', // TODO: use tunnel glyph, when available
+        nav_yang: 'yang',
     };
 
     function ensureIconLibDefs() {
@@ -115,24 +114,24 @@
             'class': svgCls,
             width: dim,
             height: dim,
-            viewBox: viewBox
+            viewBox: viewBox,
         });
 
         g = svg.append('g').attr({
-            'class': 'icon'
+            'class': 'icon',
         });
 
         g.append('rect').attr({
             width: vboxSize,
             height: vboxSize,
-            rx: cornerSize
+            rx: cornerSize,
         });
 
         g.append('use').attr({
             width: vboxSize,
             height: vboxSize,
             'class': 'glyph',
-            'xlink:href': '#' + gid
+            'xlink:href': '#' + gid,
         });
     }
 
@@ -159,7 +158,7 @@
         return elem.append('use').attr({
             'xlink:href': '#' + gid,
             width: iconDim,
-            height: iconDim
+            height: iconDim,
         });
     }
 
@@ -175,7 +174,7 @@
             'xlink:href': '#' + glyphId,
             width: dim,
             height: dim,
-            transform: sus.translate(xlate,xlate)
+            transform: sus.translate(xlate, xlate),
         });
         return g;
     }
@@ -190,7 +189,7 @@
         return {
             asc: function (div) { _s(div, 'upArrow'); },
             desc: function (div) { _s(div, 'downArrow'); },
-            none: function (div) { div.remove(); }
+            none: function (div) { div.remove(); },
         };
     }
 
@@ -218,16 +217,15 @@
                         div.selectAll('*').remove();
                         is.loadEmbeddedIcon(div, attrs.iconId, attrs.iconSize);
                     });
-                }
+                },
             };
         }])
 
-        .factory('IconService', ['$log', 'FnService', 'GlyphService',
+        .factory('IconService', ['$log', 'GlyphService',
             'SvgUtilService',
 
-        function (_$log_, _fs_, _gs_, _sus_) {
+        function (_$log_, _gs_, _sus_) {
             $log = _$log_;
-            fs = _fs_;
             gs = _gs_;
             sus = _sus_;
 
@@ -238,7 +236,7 @@
                 addDeviceIcon: addDeviceIcon,
                 addHostIcon: addHostIcon,
                 sortIcons: sortIcons,
-                registerIconMapping: registerIconMapping
+                registerIconMapping: registerIconMapping,
             };
         }]);
 
diff --git a/web/gui/src/main/webapp/app/fw/svg/map.js b/web/gui/src/main/webapp/app/fw/svg/map.js
index ea67428..3d79d64 100644
--- a/web/gui/src/main/webapp/app/fw/svg/map.js
+++ b/web/gui/src/main/webapp/app/fw/svg/map.js
@@ -35,7 +35,7 @@
     'use strict';
 
     // injected references
-    var $log, $q, fs, gds;
+    var $log, $q, gds;
 
     // NOTE: This method assumes the datafile has exactly the map data
     //       that you want to load; for example id="*continental_us"
@@ -87,7 +87,7 @@
     //     });
 
     function loadMapRegionInto(mapLayer, opts) {
-        var promise = gds.fetchTopoData("*countries"),
+        var promise = gds.fetchTopoData('*countries'),
             deferredProjection = $q.defer();
 
         if (!promise) {
@@ -105,7 +105,7 @@
                 country = features.filter(opts.countryFilter),
                 countryFeature = {
                     type: 'FeatureCollection',
-                    features: country
+                    features: country,
                 },
                 path = d3.geo.path().projection(proj);
 
@@ -137,7 +137,7 @@
             svg.style('background-color', bg);
             paths.attr({
                 stroke: stroke,
-                fill: fill
+                fill: fill,
             });
         } else {
             svg.style('background-color', null);
@@ -145,17 +145,16 @@
     }
 
     angular.module('onosSvg')
-        .factory('MapService', ['$log', '$q', 'FnService', 'GeoDataService',
-        function (_$log_, _$q_, _fs_, _gds_) {
+        .factory('MapService', ['$log', '$q', 'GeoDataService',
+        function (_$log_, _$q_, _gds_) {
             $log = _$log_;
             $q = _$q_;
-            fs = _fs_;
             gds = _gds_;
 
             return {
                 loadMapRegionInto: loadMapRegionInto,
                 loadMapInto: loadMapInto,
-                reshade: reshade
+                reshade: reshade,
             };
         }]);
 
diff --git a/web/gui/src/main/webapp/app/fw/svg/sprite.js b/web/gui/src/main/webapp/app/fw/svg/sprite.js
index 3d088e1..edf1839 100644
--- a/web/gui/src/main/webapp/app/fw/svg/sprite.js
+++ b/web/gui/src/main/webapp/app/fw/svg/sprite.js
@@ -32,30 +32,30 @@
             },
             addRect: {
                 fill: 'gray1',
-                stroke: 'none'
+                stroke: 'none',
             },
             addPath: {
                 fill: 'none',
-                stroke: 'gray1'
-            }
+                stroke: 'gray1',
+            },
         },
         layout: {
             builder: {
-                grid: 10            // grid square size (in layout coord-space)
+                grid: 10, // grid square size (in layout coord-space)
             },
             addSprite: {
-                anchor: 'topleft'       // topleft, center
+                anchor: 'topleft', // topleft, center
             },
             addLabel: {
-                anchor: 'center',       // center, left, right
-                fontStyle: 'normal'     // normal, italic, bold
-            }
-        }
+                anchor: 'center', // center, left, right
+                fontStyle: 'normal', // normal, italic, bold
+            },
+        },
     };
 
     // internal state
-    var sprites,    // sprite cache
-        layouts,    // layout cache
+    var sprites, // sprite cache
+        layouts, // layout cache
         api;
 
     // ----------------------------------------------------------------------
@@ -81,7 +81,7 @@
             var o = angular.extend({}, optDefaults.sprite.addRect, opts);
 
             rects.push({
-                x: x, y: y, w: w, h: h, o: o
+                x: x, y: y, w: w, h: h, o: o,
             });
             return builder;
         }
@@ -90,9 +90,9 @@
             var o = angular.extend({}, optDefaults.sprite.addPath, opts);
 
             if (fs.isS(d)) {
-                paths.push({d: d, o: o});
+                paths.push({ d: d, o: o });
             } else if (fs.isA(d)) {
-                paths.push({d: d.join(''), o: o});
+                paths.push({ d: d.join(''), o: o });
             } else {
                 $log.warn('addPath: path not a string or array', d);
             }
@@ -110,7 +110,7 @@
                 id: id,
                 w: w,
                 h: h,
-                opts: o
+                opts: o,
             },
             paths: paths,
             rects: rects,
@@ -118,7 +118,7 @@
             // builder API
             addRect: addRect,
             addPath: addPath,
-            register: register
+            register: register,
         };
 
         return builder;
@@ -153,7 +153,7 @@
             }
 
             sprs.push({
-                sprite: s, x: x, y: y, w: w, anchor: o.anchor
+                sprite: s, x: x, y: y, w: w, anchor: o.anchor,
             });
             return builder;
         }
@@ -162,7 +162,7 @@
             var o = angular.extend({}, optDefaults.layout.addLabel, opts);
 
             labs.push({
-                text: text, x: x, y: y, anchor: o.anchor, style: o.fontStyle
+                text: text, x: x, y: y, anchor: o.anchor, style: o.fontStyle,
             });
             return builder;
         }
@@ -178,7 +178,7 @@
                 id: id,
                 w: w,
                 h: h,
-                opts: o
+                opts: o,
             },
             sprites: sprs,
             labels: labs,
@@ -186,7 +186,7 @@
             // builder API
             addSprite: addSprite,
             addLabel: addLabel,
-            register: register
+            register: register,
         };
 
         return builder;
@@ -246,7 +246,7 @@
     function count() {
         return {
             sprites: sprites.size(),
-            layouts: layouts.size()
+            layouts: layouts.size(),
         };
     }
 
@@ -278,7 +278,7 @@
                 sprite: sprite,
                 layout: layout,
                 count: count,
-                dump: dump
+                dump: dump,
             };
             return api;
         }]
diff --git a/web/gui/src/main/webapp/app/fw/svg/spriteData.js b/web/gui/src/main/webapp/app/fw/svg/spriteData.js
index 367baa7..30221c8 100644
--- a/web/gui/src/main/webapp/app/fw/svg/spriteData.js
+++ b/web/gui/src/main/webapp/app/fw/svg/spriteData.js
@@ -28,18 +28,18 @@
         // TODO: define cloud sprite...
         vbox: '0 0 305 186',
         d: [
-            "M91.2,48.4C121.2,6.3,187.9-13.4,219,45.6",
-            "M43.1,139.6C21.8,142.9-15.6,108.4,26.1,79",
-            "M103.7,150C89,205.2-11.2,167.4,30.5,138",
-            "M192.3,147.3c-33.5,48-82.1,32.3-94.5-8.2",
-            "M267.1,115c27.9,67.8-77.6,74.3-83.1,41",
-            "M34.3,89.9C10.8,79,59.5,10.7,97.2,39.6",
-            "M211.9,34.2c51.9-38.8,118,57.4,59,94.5"
+            'M91.2,48.4C121.2,6.3,187.9-13.4,219,45.6',
+            'M43.1,139.6C21.8,142.9-15.6,108.4,26.1,79',
+            'M103.7,150C89,205.2-11.2,167.4,30.5,138',
+            'M192.3,147.3c-33.5,48-82.1,32.3-94.5-8.2',
+            'M267.1,115c27.9,67.8-77.6,74.3-83.1,41',
+            'M34.3,89.9C10.8,79,59.5,10.7,97.2,39.6',
+            'M211.9,34.2c51.9-38.8,118,57.4,59,94.5',
         ],
         style: {
             fill: 'none',
-            'stroke-miterlimit': 10
-        }
+            'stroke-miterlimit': 10,
+        },
     };
 
     // TODO: define other core sprites here...
@@ -55,12 +55,12 @@
         // ----------------------------------------------------------$$$
         // This following code is for initial development of Topo2 sprite layer
         ssApi.createSprite('rack', 40, 50)
-            .addRect(0, 0, 40, 50, {fill: 'gold1'})
+            .addRect(0, 0, 40, 50, { fill: 'gold1' })
             .addPath([
                 'M5,20h30v5h-30z',
                 'M5,30h30v5h-30z',
-                'M5,40h30v5h-30z'
-            ], {stroke: 'gray1'})
+                'M5,40h30v5h-30z',
+            ], { stroke: 'gray1' })
             .register();
 
         ssApi.createLayout('segmentRouting', 130, 75)
@@ -68,13 +68,13 @@
             .addSprite('rack', 40, 40, 20)
             .addSprite('rack', 70, 40, 20)
             .addSprite('rack', 100, 40, 20)
-            .addLabel('Segment Routing', 120, 10, {anchor: 'right'})
+            .addLabel('Segment Routing', 120, 10, { anchor: 'right' })
             .register();
 
         ssApi.createLayout('segmentRoutingTwo', 70, 75)
             .addSprite('rack', 10, 40, 20)
             .addSprite('rack', 40, 40, 20)
-            .addLabel('Segment Routing 2', 120, 10, {anchor: 'right'})
+            .addLabel('Segment Routing 2', 120, 10, { anchor: 'right' })
             .register();
 
         ssApi.createLayout('plain', 80, 60)
@@ -90,9 +90,9 @@
         .factory('SpriteDataService', [
             function () {
                 return {
-                    registerCoreSprites: registerCoreSprites
+                    registerCoreSprites: registerCoreSprites,
                 };
-            }
+            },
         ]);
 
 }());
diff --git a/web/gui/src/main/webapp/app/fw/svg/svgUtil.js b/web/gui/src/main/webapp/app/fw/svg/svgUtil.js
index 84b6408..1bdb96b 100644
--- a/web/gui/src/main/webapp/app/fw/svg/svgUtil.js
+++ b/web/gui/src/main/webapp/app/fw/svg/svgUtil.js
@@ -82,8 +82,8 @@
         }
 
         drag = d3.behavior.drag()
-            .origin(function(d) { return d; })
-            .on('dragstart', function(d) {
+            .origin(function (d) { return d; })
+            .on('dragstart', function (d) {
                 if (clickEnabled() || dragEnabled()) {
                     d.oldX = d.x;
                     d.oldY = d.y;
@@ -92,7 +92,7 @@
                     d.dragStarted = true;
                 }
             })
-            .on('drag', function(d) {
+            .on('drag', function (d) {
                 if (dragEnabled()) {
                     d.px = d3.event.x;
                     d.py = d3.event.y;
@@ -103,7 +103,7 @@
                     }
                 }
             })
-            .on('dragend', function(d) {
+            .on('dragend', function (d) {
                 d3.event.sourceEvent.stopPropagation();
 
                 if (d.dragStarted) {
@@ -170,22 +170,22 @@
 
     // Colors per Mojo-Design's color palette.. (version two)
     //               blue       lt blue    red        green      brown      teal       lime
-    var lightNorm = ['#5b99d2', '#66cef6', '#d05a55', '#0f9d58', '#ba7941', '#3dc0bf', '#56af00' ],
-        lightMute = ['#9ebedf', '#abdef5', '#d79a96', '#7cbe99', '#cdab8d', '#96d5d5', '#a0c96d' ],
+    var lightNorm = ['#5b99d2', '#66cef6', '#d05a55', '#0f9d58', '#ba7941', '#3dc0bf', '#56af00'],
+        lightMute = ['#9ebedf', '#abdef5', '#d79a96', '#7cbe99', '#cdab8d', '#96d5d5', '#a0c96d'],
 
-        darkNorm  = ['#5b99d2', '#66cef6', '#d05a55', '#0f9d58', '#ba7941', '#3dc0bf', '#56af00' ],
-        darkMute  = ['#9ebedf', '#abdef5', '#d79a96', '#7cbe99', '#cdab8d', '#96d5d5', '#a0c96d' ];
+        darkNorm = ['#5b99d2', '#66cef6', '#d05a55', '#0f9d58', '#ba7941', '#3dc0bf', '#56af00'],
+        darkMute = ['#9ebedf', '#abdef5', '#d79a96', '#7cbe99', '#cdab8d', '#96d5d5', '#a0c96d'];
 
 
     var colors= {
         light: {
             norm: d3.scale.ordinal().range(lightNorm),
-            mute: d3.scale.ordinal().range(lightMute)
+            mute: d3.scale.ordinal().range(lightMute),
         },
         dark: {
             norm: d3.scale.ordinal().range(darkNorm),
-            mute: d3.scale.ordinal().range(darkMute)
-        }
+            mute: d3.scale.ordinal().range(darkMute),
+        },
     };
 
     function cat7() {
@@ -231,7 +231,7 @@
                             cx: x,
                             cy: y,
                             r: 5,
-                            fill: f
+                            fill: f,
                         });
                     });
                     g.append('rect').attr({
@@ -240,13 +240,13 @@
                         width: 32,
                         height: 10,
                         rx: 2,
-                        fill: '#888'
+                        fill: '#888',
                     });
                     g.append('text').text(theme + what)
                         .attr({
                             x: 142,
                             y: k * 20 + 2,
-                            fill: 'white'
+                            fill: 'white',
                         })
                         .style('font-size', '4pt');
                 }
@@ -255,7 +255,7 @@
 
         return {
             testCard: testCard,
-            getColor: getColor
+            getColor: getColor,
         };
     }
 
@@ -279,7 +279,7 @@
     }
 
     function stripPx(s) {
-        return s.replace(/px$/,'');
+        return s.replace(/px$/, '');
     }
 
     function safeId(s) {
@@ -318,7 +318,7 @@
                 rotate: rotate,
                 stripPx: stripPx,
                 safeId: safeId,
-                visible: visible
+                visible: visible,
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/fw/svg/zoom.js b/web/gui/src/main/webapp/app/fw/svg/zoom.js
index 00487ec..587cf6a 100644
--- a/web/gui/src/main/webapp/app/fw/svg/zoom.js
+++ b/web/gui/src/main/webapp/app/fw/svg/zoom.js
@@ -25,7 +25,7 @@
         zoomMin: 0.05,
         zoomMax: 50,
         zoomEnabled: function (ev) { return true; },
-        zoomCallback: function () {}
+        zoomCallback: function () {},
     };
 
     // injected references to services
@@ -95,7 +95,7 @@
 
                     settings.zoomLayer.transition()
                         .duration(transition || 0)
-                        .attr("transform",
+                        .attr('transform',
                             'translate(' + translate + ')scale(' + scale + ')');
 
                     settings.zoomCallback(translate, scale);
@@ -109,7 +109,7 @@
                     },
 
                     reset: function () {
-                        zoomer.panZoom([0,0], 1);
+                        zoomer.panZoom([0, 0], 1);
                     },
 
                     translate: function () {
@@ -122,7 +122,7 @@
 
                     scaleExtent: function () {
                         return zoom.scaleExtent();
-                    }
+                    },
                 };
 
                 // apply the zoom behavior to the SVG element
@@ -130,12 +130,12 @@
 
                 // Remove zoom on double click (prevents a
                 // false zoom navigating regions)
-                settings.svg.on("dblclick.zoom", null);
+                settings.svg.on('dblclick.zoom', null);
                 return zoomer;
             }
 
             return {
-                createZoomer: createZoomer
+                createZoomer: createZoomer,
             };
         }]);
 
diff --git a/web/gui/src/main/webapp/app/fw/util/ee.js b/web/gui/src/main/webapp/app/fw/util/ee.js
index ef89f9d..6b0f7ce 100644
--- a/web/gui/src/main/webapp/app/fw/util/ee.js
+++ b/web/gui/src/main/webapp/app/fw/util/ee.js
@@ -39,7 +39,7 @@
         'fmfv',
         'hwdoc',
         'acxefcsdgt',
-        'pmmn'
+        'pmmn',
         // Add more beans...
     ];
 
@@ -56,7 +56,7 @@
             i;
 
         for (i = 0; i<n; i+=2)
-            w.push(fcc(Number(d.slice(i, i+2))));
+            { w.push(fcc(Number(d.slice(i, i+2)))); }
 
         return fs.eecode(h, w.join(''));
     }
@@ -98,7 +98,7 @@
 
             return {
                 genMap: genMap,
-                cluck: cluck
-            }
+                cluck: cluck,
+            };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/fw/util/fn.js b/web/gui/src/main/webapp/app/fw/util/fn.js
index e204afc..2a9129a 100644
--- a/web/gui/src/main/webapp/app/fw/util/fn.js
+++ b/web/gui/src/main/webapp/app/fw/util/fn.js
@@ -31,7 +31,7 @@
         cca = String.prototype.charCodeAt;
 
     function _parseDebugFlags(dbgstr) {
-        var bits = dbgstr ? dbgstr.split(",") : [];
+        var bits = dbgstr ? dbgstr.split(',') : [];
         bits.forEach(function (key) {
             debugFlags[key] = true;
         });
@@ -114,7 +114,7 @@
             ow = offW || 0;
         return {
             height: $window.innerHeight - oh,
-            width: $window.innerWidth - ow
+            width: $window.innerWidth - ow,
         };
     }
 
@@ -129,10 +129,10 @@
     function isChrome() {
         var isChromium = $window.chrome,
             vendorName = $window.navigator.vendor,
-            isOpera = $window.navigator.userAgent.indexOf("OPR") > -1;
+            isOpera = $window.navigator.userAgent.indexOf('OPR') > -1;
         return (isChromium !== null &&
         isChromium !== undefined &&
-        vendorName === "Google Inc." &&
+        vendorName === 'Google Inc.' &&
         isOpera == false);
     }
 
@@ -247,7 +247,7 @@
         return {
             o: w,
             d: o.join(''),
-            e: fcc.apply(o, o)
+            e: fcc.apply(o, o),
         };
     }
 
@@ -301,7 +301,7 @@
                 np = c.p[q];
                 x = 1;
             }
-            return { p: np, s: c.s }
+            return { p: np, s: c.s };
         }
 
         function probe(c) {
@@ -309,12 +309,12 @@
                 k = Object.keys(c.p).length,
                 np = c.p[q];
 
-            t.push({ q:q, k:k, p:c.p });
+            t.push({ q: q, k: k, p: c.p });
             if (!np) {
                 t = [];
                 return { s: [] };
             }
-            return { p: np, s: c.s }
+            return { p: np, s: c.s };
         }
 
         function insert() {
@@ -382,7 +382,7 @@
 
     var hasOwn = {}.hasOwnProperty;
 
-    function classNames () {
+    function classNames() {
         var classes = [];
 
         for (var i = 0; i < arguments.length; i++) {
@@ -453,7 +453,7 @@
         while ((match = matcher.exec(html)) !== null) {
             matches.push({
                 full: match[0],
-                name: match[1]
+                name: match[1],
                 // NOTE: ignoring attributes {match[2].split(' ')} for now
             });
         }
@@ -527,7 +527,7 @@
                 trieLookup: trieLookup,
                 classNames: classNames,
                 extend: extend,
-                sanitize: sanitize
+                sanitize: sanitize,
             };
     }]);
 
diff --git a/web/gui/src/main/webapp/app/fw/util/keys.js b/web/gui/src/main/webapp/app/fw/util/keys.js
index 3c9e660..45ba410 100644
--- a/web/gui/src/main/webapp/app/fw/util/keys.js
+++ b/web/gui/src/main/webapp/app/fw/util/keys.js
@@ -21,7 +21,7 @@
     'use strict';
 
     // references to injected services
-    var $log, $timeout, fs, ts, ns, ee, qhs, ls;
+    var $log, fs, ts, ns, ee, qhs, ls;
 
     // internal state
     var enabled = true,
@@ -32,7 +32,7 @@
             dialogKeys: {},
             viewKeys: {},
             viewFn: null,
-            viewGestures: []
+            viewGestures: [],
         },
         seq = {},
         matching = false,
@@ -96,7 +96,7 @@
 
     var textFieldDoesNotBlock = {
         enter: 1,
-        esc: 1
+        esc: 1,
     };
 
     function textFieldInput() {
@@ -134,7 +134,7 @@
             vk = kh.viewKeys[key],
             kl = fs.isF(kh.viewKeys._keyListener),
             vcb = fs.isF(vk) || (fs.isA(vk) && fs.isF(vk[0])) || fs.isF(kh.viewFn),
-            token = 'keyev';    // indicate this was a key-pressed event
+            token = 'keyev'; // indicate this was a key-pressed event
 
         event.stopPropagation();
 
@@ -185,7 +185,7 @@
                 backSlash: [quickHelp, qhlion_show_hide],
                 slash: [quickHelp, qhlion_show_hide],
                 esc: [escapeKey, qhlion_hint_esc],
-                T: [toggleTheme, qhlion_hint_t]
+                T: [toggleTheme, qhlion_hint_t],
             },
             globalFormat: ['backSlash', 'slash', 'esc', 'T'],
 
@@ -194,8 +194,8 @@
             maskedKeys: {
                 slash: 1,
                 backSlash: 1,
-                T: 1
-            }
+                T: 1,
+            },
         });
     }
 
@@ -244,7 +244,7 @@
     }
 
     function unexParam(fname, x) {
-        $log.warn(fname, ": unexpected parameter-- ", x);
+        $log.warn(fname, ': unexpected parameter-- ', x);
     }
 
     function setKeyBindings(keyArg) {
@@ -273,7 +273,7 @@
             globalKeys: gkeys,
             maskedKeys: masked,
             viewKeys: vkeys,
-            viewFunction: vfn
+            viewFunction: vfn,
         };
     }
 
@@ -318,12 +318,11 @@
 
     angular.module('onosUtil')
     .factory('KeyService',
-        ['$log', '$timeout', 'FnService', 'ThemeService', 'NavService',
+        ['$log', 'FnService', 'ThemeService', 'NavService',
             'EeService', 'LionService',
 
-        function (_$log_, _$timeout_, _fs_, _ts_, _ns_, _ee_, _ls_) {
+        function (_$log_, _fs_, _ts_, _ns_, _ee_, _ls_) {
             $log = _$log_;
-            $timeout = _$timeout_;
             fs = _fs_;
             ts = _ts_;
             ns = _ns_;
@@ -372,7 +371,7 @@
                 enableGlobalKeys: function (b) {
                     globalEnabled = b;
                 },
-                checkNotGlobal: checkNotGlobal
+                checkNotGlobal: checkNotGlobal,
             };
     }]);
 
diff --git a/web/gui/src/main/webapp/app/fw/util/lion.js b/web/gui/src/main/webapp/app/fw/util/lion.js
index a8bb7c8..387c95b 100644
--- a/web/gui/src/main/webapp/app/fw/util/lion.js
+++ b/web/gui/src/main/webapp/app/fw/util/lion.js
@@ -22,11 +22,11 @@
     'use strict';
 
     // injected services
-    var $log, fs, wss;
+    var $log, wss;
 
     // private state
     var handlers = {
-            uberlion: uberlion
+            uberlion: uberlion,
         },
         ubercache = {};
 
@@ -65,16 +65,15 @@
     }
 
     angular.module('onosUtil')
-        .factory('LionService', ['$log', 'FnService', 'WebSocketService',
+        .factory('LionService', ['$log', 'WebSocketService',
 
-        function (_$log_, _fs_, _wss_) {
+        function (_$log_, _wss_) {
             $log = _$log_;
-            fs = _fs_;
             wss = _wss_;
 
             return {
                 init: init,
-                bundle: bundle
+                bundle: bundle,
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/fw/util/prefs.js b/web/gui/src/main/webapp/app/fw/util/prefs.js
index 08bc6f6..fe4201d 100644
--- a/web/gui/src/main/webapp/app/fw/util/prefs.js
+++ b/web/gui/src/main/webapp/app/fw/util/prefs.js
@@ -21,10 +21,10 @@
     'use strict';
 
     // injected refs
-    var $log, fs, wss;
+    var fs, wss;
 
     // internal state
-    var cache = {}, 
+    var cache = {},
         listeners = [];
 
     // returns the preference settings for the specified key
@@ -98,26 +98,25 @@
     }
 
     function removeListener(listener) {
-        listeners = listeners.filter(function(obj) { return obj === listener; });
+        listeners = listeners.filter(function (obj) { return obj === listener; });
     }
 
     angular.module('onosUtil')
-    .factory('PrefsService', ['$log', 'FnService', 'WebSocketService',
-        function (_$log_, _fs_, _wss_) {
-            $log = _$log_;
+    .factory('PrefsService', ['FnService', 'WebSocketService',
+        function (_fs_, _wss_) {
             fs = _fs_;
             wss = _wss_;
 
             try {
                 cache = angular.isDefined(userPrefs) ? userPrefs : {};
             }
-            catch(e){
+            catch (e) {
                 // browser throws error for non-existing globals
-                cache = {}
+                cache = {};
             }
 
             wss.bindHandlers({
-                updatePrefs: updatePrefs
+                updatePrefs: updatePrefs,
             });
 
             return {
@@ -126,7 +125,7 @@
                 setPrefs: setPrefs,
                 mergePrefs: mergePrefs,
                 addListener: addListener,
-                removeListener: removeListener
+                removeListener: removeListener,
             };
         }]);
 
diff --git a/web/gui/src/main/webapp/app/fw/util/random.js b/web/gui/src/main/webapp/app/fw/util/random.js
index 4c773dc..04063d0 100644
--- a/web/gui/src/main/webapp/app/fw/util/random.js
+++ b/web/gui/src/main/webapp/app/fw/util/random.js
@@ -20,8 +20,6 @@
 (function () {
     'use strict';
 
-    var $log, fs;
-
     var halfRoot2 = 0.7071;
 
     // given some value, s, returns an integer between -s/2 and s/2
@@ -39,13 +37,10 @@
     angular.module('onosUtil')
         .factory('RandomService', ['$log', 'FnService',
 
-        function (_$log_, _fs_) {
-            $log = _$log_;
-            fs = _fs_;
-
+        function () {
             return {
                 spread: spread,
-                randDim: randDim
+                randDim: randDim,
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/fw/util/theme.js b/web/gui/src/main/webapp/app/fw/util/theme.js
index 66e1c41..db03701 100644
--- a/web/gui/src/main/webapp/app/fw/util/theme.js
+++ b/web/gui/src/main/webapp/app/fw/util/theme.js
@@ -21,7 +21,7 @@
     'use strict';
 
     // injected refs
-    var $log, fs, ps;
+    var $log, ps;
 
     // configuration
     var themes = ['light', 'dark'],
@@ -36,33 +36,33 @@
         gray1: {
             fill: {
                 light: '#eeeeee',
-                dark: '#222222'
+                dark: '#222222',
             },
             stroke: {
                 light: '#cccccc',
-                dark: '#333333'
-            }
+                dark: '#333333',
+            },
         },
         gold1: {
             fill: {
                 light: '#eeddaa',
-                dark: '#544714'
+                dark: '#544714',
             },
             stroke: {
                 light: '#ffddaa',
-                dark: '#645724'
-            }
+                dark: '#645724',
+            },
         },
         blue1: {
             fill: {
                 light: '#a2b9ee',
-                dark: '#273059'
+                dark: '#273059',
             },
             stroke: {
                 light: '#92a9de',
-                dark: '#273a63'
-            }
-        }
+                dark: '#273a63',
+            },
+        },
     };
 
     function init() {
@@ -109,8 +109,8 @@
             m = 'Theme-Change-(' + w + '): ' + t;
         $log.debug(m);
 
-        listeners.forEach(function (lsnr) { 
-            lsnr({event: 'themeChange', value: t}); 
+        listeners.forEach(function (lsnr) {
+            lsnr({ event: 'themeChange', value: t });
         });
     }
 
@@ -119,7 +119,7 @@
     }
 
     function removeListener(lsnr) {
-        listeners = listeners.filter(function(obj) { return obj !== lsnr; });
+        listeners = listeners.filter(function (obj) { return obj !== lsnr; });
     }
 
     // color = logical color name
@@ -133,10 +133,9 @@
     }
 
     angular.module('onosUtil')
-        .factory('ThemeService', ['$log', 'FnService', 'PrefsService',
-        function (_$log_, _fs_, _ps_) {
+        .factory('ThemeService', ['$log', 'PrefsService',
+        function (_$log_, _ps_) {
             $log = _$log_;
-            fs = _fs_;
             ps = _ps_;
 
             ps.addListener(applyTheme);
@@ -153,7 +152,7 @@
                 toggleTheme: toggleTheme,
                 addListener: addListener,
                 removeListener: removeListener,
-                spriteColor: spriteColor
+                spriteColor: spriteColor,
             };
     }]);
 
diff --git a/web/gui/src/main/webapp/app/fw/widget/button.js b/web/gui/src/main/webapp/app/fw/widget/button.js
index 85202c6..a72732f 100644
--- a/web/gui/src/main/webapp/app/fw/widget/button.js
+++ b/web/gui/src/main/webapp/app/fw/widget/button.js
@@ -69,8 +69,8 @@
 
         return {
             id: id,
-            width: buttonWidth
-        }
+            width: buttonWidth,
+        };
     }
 
 
@@ -111,8 +111,8 @@
             width: buttonWidth,
             selected: function () { return sel; },
             toggle: _toggle,
-            toggleNoCb: toggleNoCb
-        }
+            toggleNoCb: toggleNoCb,
+        };
     }
 
 
@@ -186,7 +186,7 @@
                 el: rbdiv,
                 id: rid,
                 cb: fs.isF(btn.cb) || noop,
-                index: index
+                index: index,
             });
 
             if (btn.key) {
@@ -241,8 +241,8 @@
             width: rsetWidth,
             selected: selected,
             selectedIndex: selectedIndex,
-            size: function () { return rads.length; }
-        }
+            size: function () { return rads.length; },
+        };
     }
 
 
@@ -259,7 +259,7 @@
             return {
                 button: button,
                 toggle: toggle,
-                radioSet: radioSet
+                radioSet: radioSet,
             };
         }]);
 
diff --git a/web/gui/src/main/webapp/app/fw/widget/chartBuilder.js b/web/gui/src/main/webapp/app/fw/widget/chartBuilder.js
index af5a028..dc8e2ba 100644
--- a/web/gui/src/main/webapp/app/fw/widget/chartBuilder.js
+++ b/web/gui/src/main/webapp/app/fw/widget/chartBuilder.js
@@ -24,7 +24,7 @@
     // fs -> FnService
     // wss -> WebSocketService
     // ls -> LoadingService
-    var $log, $interval, $timeout, fs, wss, ls;
+    var $log, $interval, fs, wss, ls;
 
     // constants
     var refreshInterval = 2000;
@@ -129,19 +129,18 @@
 
     angular.module('onosWidget')
         .factory('ChartBuilderService',
-        ['$log', '$interval', '$timeout', 'FnService', 'WebSocketService',
+        ['$log', '$interval', 'FnService', 'WebSocketService',
             'LoadingService',
 
-            function (_$log_, _$interval_, _$timeout_, _fs_, _wss_, _ls_) {
+            function (_$log_, _$interval_, _fs_, _wss_, _ls_) {
                 $log = _$log_;
                 $interval = _$interval_;
-                $timeout = _$timeout_;
                 fs = _fs_;
                 wss = _wss_;
                 ls = _ls_;
 
                 return {
-                    buildChart: buildChart
+                    buildChart: buildChart,
                 };
             }]);
 }());
diff --git a/web/gui/src/main/webapp/app/fw/widget/listBuilder.js b/web/gui/src/main/webapp/app/fw/widget/listBuilder.js
index 8c1c17e..8dc5053 100644
--- a/web/gui/src/main/webapp/app/fw/widget/listBuilder.js
+++ b/web/gui/src/main/webapp/app/fw/widget/listBuilder.js
@@ -56,7 +56,7 @@
     .factory('ListService', [
         function () {
             return {
-                listProps: listProps
+                listProps: listProps,
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/fw/widget/table.js b/web/gui/src/main/webapp/app/fw/widget/table.js
index 91dbe89..1e52017 100644
--- a/web/gui/src/main/webapp/app/fw/widget/table.js
+++ b/web/gui/src/main/webapp/app/fw/widget/table.js
@@ -94,7 +94,7 @@
         s: {
             first: null,
             second: null,
-            touched: null
+            touched: null,
         },
 
         reset: function () {
@@ -132,7 +132,7 @@
                 s2 = s.second;
             api[s1.dir](s1.adiv);
             s2 && api.none(s2.adiv);
-        }
+        },
     };
 
     // Functions for sorting table rows by header
@@ -157,12 +157,12 @@
             firstCol: s1.id,
             firstDir: s1.dir,
             secondCol: id2,
-            secondDir: dir2
+            secondDir: dir2,
         };
     }
 
     angular.module('onosWidget')
-    .directive('onosTableResize', ['$log','$window', 'FnService', 'MastService',
+    .directive('onosTableResize', ['$log', '$window', 'FnService', 'MastService',
 
         function (_$log_, _$window_, _fs_, _mast_) {
         return function (scope, element) {
@@ -175,7 +175,7 @@
                 tableElems = {
                     table: table,
                     thead: table.select('.table-header').select('table'),
-                    tbody: table.select('.table-body').select('table')
+                    tbody: table.select('.table-body').select('table'),
                 },
                 wsz;
 
@@ -185,7 +185,7 @@
             scope.$watchCollection(function () {
                 return {
                     h: $window.innerHeight,
-                    w: $window.innerWidth
+                    w: $window.innerWidth,
                 };
             }, function () {
                 wsz = fs.windowSize(0, 30);
diff --git a/web/gui/src/main/webapp/app/fw/widget/tableBuilder.js b/web/gui/src/main/webapp/app/fw/widget/tableBuilder.js
index fa4300a..62faa89 100644
--- a/web/gui/src/main/webapp/app/fw/widget/tableBuilder.js
+++ b/web/gui/src/main/webapp/app/fw/widget/tableBuilder.js
@@ -21,7 +21,7 @@
     'use strict';
 
     // injected refs
-    var $log, $interval, $timeout, fs, wss, ls;
+    var $log, $interval, fs, wss, ls;
 
     // constants
     var refreshInterval = 2000;
@@ -154,25 +154,24 @@
         startRefresh();
 
         return {
-            forceRefesh : requestTableData
+            forceRefesh: requestTableData,
         };
     }
 
     angular.module('onosWidget')
         .factory('TableBuilderService',
-        ['$log', '$interval', '$timeout', 'FnService', 'WebSocketService',
+        ['$log', '$interval', 'FnService', 'WebSocketService',
             'LoadingService',
 
-            function (_$log_, _$interval_, _$timeout_, _fs_, _wss_, _ls_) {
+            function (_$log_, _$interval_, _fs_, _wss_, _ls_) {
                 $log = _$log_;
                 $interval = _$interval_;
-                $timeout = _$timeout_;
                 fs = _fs_;
                 wss = _wss_;
                 ls = _ls_;
 
                 return {
-                    buildTable: buildTable
+                    buildTable: buildTable,
                 };
             }]);
 
diff --git a/web/gui/src/main/webapp/app/fw/widget/tableDetail.js b/web/gui/src/main/webapp/app/fw/widget/tableDetail.js
index dad053b..466b08c 100644
--- a/web/gui/src/main/webapp/app/fw/widget/tableDetail.js
+++ b/web/gui/src/main/webapp/app/fw/widget/tableDetail.js
@@ -21,7 +21,7 @@
     'use strict';
 
     // injected refs
-    var $log, $interval, $timeout, fs, wss;
+    var $log, fs;
 
     // constants
     // var refreshInterval = 2000;
@@ -50,17 +50,14 @@
     // TODO: add ref to PanelService
     angular.module('onosWidget')
     .factory('TableDetailService',
-    ['$log', '$interval', '$timeout', 'FnService', 'WebSocketService',
+    ['$log', 'FnService',
 
-    function (_$log_, _$interval_, _$timeout_, _fs_, _wss_) {
+    function (_$log_, _fs_) {
         $log = _$log_;
-        $interval = _$interval_;
-        $timeout = _$timeout_;
         fs = _fs_;
-        wss = _wss_;
 
         return {
-            buildBasePanel: buildBasePanel
+            buildBasePanel: buildBasePanel,
         };
     }]);
 }());
diff --git a/web/gui/src/main/webapp/app/fw/widget/toolbar.js b/web/gui/src/main/webapp/app/fw/widget/toolbar.js
index 42d865d..d199797 100644
--- a/web/gui/src/main/webapp/app/fw/widget/toolbar.js
+++ b/web/gui/src/main/webapp/app/fw/widget/toolbar.js
@@ -38,7 +38,7 @@
             top: 'auto',
             bottom: '10px',
             fade: false,
-            shown: false
+            shown: false,
         };
 
     // internal state
@@ -81,8 +81,8 @@
             panel = ps.createPanel(tbid, settings),
             arrowDiv = createArrow(panel),
             currentRow = panel.append('div').classed('tbar-row', true),
-            rowButtonIds = [],          // for removable buttons
-            tbWidth = arrowSize + 2,    // empty toolbar width
+            rowButtonIds = [], // for removable buttons
+            tbWidth = arrowSize + 2, // empty toolbar width
             maxWidth = panel.width();
 
         arrowDiv.on('click', toggle);
@@ -92,7 +92,7 @@
             settings: settings,
             items: items,
             panel: panel,
-            panelId: tbid
+            panelId: tbid,
         };
 
         panel.classed('toolbar', true)
@@ -171,7 +171,7 @@
                     clear: rowClear,
                     setText: rowSetText,
                     addButton: rowAddButton,
-                    classed: rowClassed
+                    classed: rowClassed,
                 };
             }
         }
@@ -234,7 +234,7 @@
             show: show,
             hide: hide,
             toggle: toggle,
-            isVisible: isVisible
+            isVisible: isVisible,
         };
     }
 
@@ -268,7 +268,7 @@
             return {
                 init: init,
                 createToolbar: createToolbar,
-                destroyToolbar: destroyToolbar
+                destroyToolbar: destroyToolbar,
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/fw/widget/tooltip.js b/web/gui/src/main/webapp/app/fw/widget/tooltip.js
index b337476..54e40c7 100644
--- a/web/gui/src/main/webapp/app/fw/widget/tooltip.js
+++ b/web/gui/src/main/webapp/app/fw/widget/tooltip.js
@@ -22,7 +22,7 @@
     'use strict';
 
     // injected references
-    var $log, $rootScope, fs;
+    var $rootScope, fs;
 
     // constants
     var hoverHeight = 35,
@@ -45,7 +45,7 @@
             style = {
                 display: 'inline-block',
                 left: 'auto',
-                right: 'auto'
+                right: 'auto',
             };
 
         if (mouseX <= (winWidth / 2)) {
@@ -108,7 +108,7 @@
             tooltip.transition()
                 .delay(exitDelay)
                 .style({
-                    display: 'none'
+                    display: 'none',
                 })
                 .text('');
         }
@@ -127,13 +127,12 @@
                     restrict: 'A',
                     link: function (scope, elem, attrs) {
                         addTooltip(d3.select(elem[0]), scope[attrs.ttMsg]);
-                    }
+                    },
                 };
         }])
 
-        .factory('TooltipService', ['$log', '$rootScope', 'FnService',
-            function (_$log_, _$rootScope_, _fs_) {
-                $log = _$log_;
+        .factory('TooltipService', ['$rootScope', 'FnService',
+            function (_$rootScope_, _fs_) {
                 $rootScope = _$rootScope_;
                 fs = _fs_;
 
@@ -142,7 +141,7 @@
                 return {
                     addTooltip: addTooltip,
                     showTooltip: showTooltip,
-                    cancelTooltip: cancelTooltip
+                    cancelTooltip: cancelTooltip,
                 };
             }]);
 }());
diff --git a/web/gui/src/main/webapp/app/view/app/app.js b/web/gui/src/main/webapp/app/view/app/app.js
index f4e44ed..67b6040 100644
--- a/web/gui/src/main/webapp/app/view/app/app.js
+++ b/web/gui/src/main/webapp/app/view/app/app.js
@@ -50,10 +50,10 @@
         dialogId = 'app-dialog',
         dialogOpts = {
             edge: 'right',
-            width: 400
+            width: 400,
         },
         strongWarning = {
-            'org.onosproject.drivers': true
+            'org.onosproject.drivers': true,
         },
         propOrder = ['id', 'state', 'category', 'version', 'origin', 'role'];
         // note: url is handled separately
@@ -72,7 +72,7 @@
 
         friendlyProps = [
             lion('app_id'), lion('state'), lion('category'), lion('version'),
-            lion('origin'), lion('role')
+            lion('origin'), lion('role'),
         ];
     }
 
@@ -80,11 +80,11 @@
         detailsPanel = ps.createPanel(pName, {
             width: wSize.width,
             margin: 0,
-            hideMargin: 0
+            hideMargin: 0,
         });
         detailsPanel.el().style({
             position: 'absolute',
-            top: pStartY + 'px'
+            top: pStartY + 'px',
         });
         $scope.hidePanel = function () { detailsPanel.hide(); };
         detailsPanel.hide();
@@ -119,7 +119,7 @@
         div = top.append('div').classed('top-content', true);
 
         function ndiv(cls, tcls) {
-            var  d = div.append('div').classed(cls, true);
+            var d = div.append('div').classed(cls, true);
             if (tcls) {
                 d.append('table').classed(tcls, true);
             }
@@ -262,7 +262,7 @@
             // $scope.selId is set by code in tableBuilder
             $scope.ctrlBtnState.selection = !!$scope.selId;
             refreshCtrls();
-            ds.closeDialog();  // don't want dialog from previous selection
+            ds.closeDialog(); // don't want dialog from previous selection
 
             if ($scope.selId) {
                 wss.sendEvent(detailsReq, { id: row.id });
@@ -295,18 +295,18 @@
                 firstCol: 'state',
                 firstDir: 'desc',
                 secondCol: 'title',
-                secondDir: 'asc'
+                secondDir: 'asc',
             },
-            lion_toggle_auto_refresh: lion('tt_ctl_auto_refresh')
+            lion_toggle_auto_refresh: lion('tt_ctl_auto_refresh'),
         });
 
         ks.keyBindings({
             esc: [$scope.selectCallback, lion('qh_hint_esc')],
-            _helpFormat: ['esc']
+            _helpFormat: ['esc'],
         });
         ks.gestureNotes([
             [lion('click_row'), lion('qh_hint_click_row')],
-            [lion('scroll_down'), lion('qh_hint_scroll_down')]
+            [lion('scroll_down'), lion('qh_hint_scroll_down')],
         ]);
 
         function createConfirmationText(action, itemId) {
@@ -332,12 +332,12 @@
                     action: action,
                     name: itemId,
                     sortCol: spar.sortCol,
-                    sortDir: spar.sortDir
+                    sortDir: spar.sortDir,
                 });
                 if (action === 'uninstall') {
                     detailsPanel.hide();
                 } else {
-                    wss.sendEvent(detailsReq, {id: itemId});
+                    wss.sendEvent(detailsReq, { id: itemId });
                 }
             }
 
@@ -370,8 +370,8 @@
                 $http.post(ufs.rsUrl(url), formData, {
                     transformRequest: angular.identity,
                     headers: {
-                        'Content-Type': undefined
-                    }
+                        'Content-Type': undefined,
+                    },
                 })
                 .finally(function () {
                     activateImmediately = '';
@@ -382,7 +382,7 @@
             }
         });
 
-        $scope.appDropped = function() {
+        $scope.appDropped = function () {
             activateImmediately = activateOption;
             $scope.$emit('FileChanged');
             $scope.appFile = null;
@@ -406,7 +406,7 @@
                     document.getElementById('uploadFile')
                         .dispatchEvent(new MouseEvent('click'));
                 });
-            }
+            },
         };
     })
 
@@ -426,13 +426,13 @@
                         });
                         scope.$emit('FileChanged');
                     });
-                }
+                },
             };
         }])
 
-    .directive("filedrop", ['$parse', '$document', function ($parse, $document) {
+    .directive('filedrop', ['$parse', '$document', function ($parse, $document) {
         return {
-            restrict: "A",
+            restrict: 'A',
             link: function (scope, element, attrs) {
                 var onAppDrop = $parse(attrs.onFileDrop);
 
@@ -455,16 +455,16 @@
                 };
 
                 // Dragging begins on the document
-                $document.bind("dragover", onDragOver);
+                $document.bind('dragover', onDragOver);
 
                 // Dragging ends on the overlay, which takes the whole window
-                element.bind("dragleave", onDragEnd)
-                    .bind("drop", function (e) {
+                element.bind('dragleave', onDragEnd)
+                    .bind('drop', function (e) {
                         $log.info('Drag leave', e);
                         loadFile(e.dataTransfer.files[0]);
                         onDragEnd(e);
                     });
-            }
+            },
         };
     }])
 
@@ -497,13 +497,13 @@
                 // create key bindings to handle panel
                 ks.keyBindings({
                     esc: [closePanel, lion('qh_hint_close_detail')],
-                    _helpFormat: ['esc']
+                    _helpFormat: ['esc'],
                 });
 
                 // TODO: Review - why are we doing this in the detail panel...?
                 ks.gestureNotes([
                     [lion('click_row'), lion('qh_hint_click_row')],
-                    [lion('scroll_down'), lion('qh_hint_scroll_down')]
+                    [lion('scroll_down'), lion('qh_hint_scroll_down')],
                 ]);
 
                 // if the panelData changes
@@ -519,7 +519,7 @@
                     function () {
                         return {
                             h: $window.innerHeight,
-                            w: $window.innerWidth
+                            w: $window.innerWidth,
                         };
                     }, function () {
                         if (!fs.isEmptyObject(scope.panelData)) {
diff --git a/web/gui/src/main/webapp/app/view/cluster/cluster.js b/web/gui/src/main/webapp/app/view/cluster/cluster.js
index a0eb9f8..abed580 100644
--- a/web/gui/src/main/webapp/app/view/cluster/cluster.js
+++ b/web/gui/src/main/webapp/app/view/cluster/cluster.js
@@ -22,7 +22,7 @@
     'use strict';
 
     // injected references
-    var $log, $scope, fs, ns, mast, ps, is, wss;
+    var $log, $scope, fs, mast, ps, is, wss;
 
     // internal state
     var detailsPanel,
@@ -44,11 +44,11 @@
         detailsReq = 'clusterDetailsRequest',
         detailsResp = 'clusterDetailsResponse',
         propOrder = [
-            'id', 'ip'
+            'id', 'ip',
         ],
         deviceCols = [
             'id', 'type', 'chassisid', 'mfr',
-            'hw', 'sw', 'protocol', 'serial'
+            'hw', 'sw', 'protocol', 'serial',
         ];
 
     // deferred fetching of user-visible strings, so that lion context is set
@@ -56,7 +56,7 @@
         var l = $scope.lion;
         return [
             l('node_id'),
-            l('ip_address')
+            l('ip_address'),
         ];
     }
 
@@ -70,7 +70,7 @@
             l('hw_version'),
             l('sw_version'),
             l('protocol'),
-            l('serial_number')
+            l('serial_number'),
         ];
     }
 
@@ -110,7 +110,7 @@
         bottom = container.append('div').classed('bottom', true);
         bottom.append('h2').classed('devices-title', true).text('Devices');
         bottom.append('table');
-        //TODO: add more details
+        // TODO: add more details
     }
 
     function addProp(tbody, label, value) {
@@ -169,7 +169,7 @@
             height: tbHeight + 'px',
             width: tbWidth + 'px',
             overflow: 'auto',
-            display: 'block'
+            display: 'block',
         });
 
         detailsPanel.width(tbWidth + ctnrPdg);
@@ -179,11 +179,11 @@
         detailsPanel = ps.createPanel(pName, {
             width: wSize.width,
             margin: 0,
-            hideMargin: 0
+            hideMargin: 0,
         });
         detailsPanel.el().style({
             position: 'absolute',
-            top: pStartY + 'px'
+            top: pStartY + 'px',
         });
         $scope.hidePanel = function () { detailsPanel.hide(); };
         detailsPanel.hide();
@@ -205,17 +205,16 @@
 
     angular.module('ovCluster', [])
         .controller('OvClusterCtrl',
-        ['$log', '$scope', 'FnService', 'NavService', 'MastService',
-        'PanelService', 'IconService','WebSocketService',
+        ['$log', '$scope', 'FnService', 'MastService',
+        'PanelService', 'IconService', 'WebSocketService',
         'LionService', 'TableBuilderService',
 
-    function (_$log_, _$scope_, _fs_, _ns_, _mast_, _ps_, _is_, _wss_, lion, tbs) {
+    function (_$log_, _$scope_, _fs_, _mast_, _ps_, _is_, _wss_, lion, tbs) {
             var handlers = {};
 
             $log = _$log_;
             $scope = _$scope_;
             fs = _fs_;
-            ns = _ns_;
             mast = _mast_;
             ps = _ps_;
             is = _is_;
@@ -227,7 +226,7 @@
             tbs.buildTable({
                 scope: $scope,
                 selCb: selCb,
-                tag: 'cluster'
+                tag: 'cluster',
             });
 
         // details panel handlers
@@ -236,7 +235,7 @@
 
         function selCb($event, row) {
             if ($scope.selId) {
-                wss.sendEvent(detailsReq, {id: row.id});
+                wss.sendEvent(detailsReq, { id: row.id });
             } else {
                 $scope.hidePanel();
             }
@@ -279,11 +278,11 @@
             // create key bindings to handle panel
             ks.keyBindings({
                 esc: [handleEscape, lion('qh_hint_close_detail')],
-                _helpFormat: ['esc']
+                _helpFormat: ['esc'],
             });
             ks.gestureNotes([
                 [lion('click'), lion('qh_hint_click')],
-                [lion('scroll_down'), lion('qh_hint_scroll_down')]
+                [lion('scroll_down'), lion('qh_hint_scroll_down')],
             ]);
             // if the panelData changes
             scope.$watch('panelData', function () {
@@ -298,7 +297,7 @@
                 function () {
                     return {
                         h: $window.innerHeight,
-                        w: $window.innerWidth
+                        w: $window.innerWidth,
                     };
                 }, function () {
                     if (!fs.isEmptyObject(scope.panelData)) {
diff --git a/web/gui/src/main/webapp/app/view/device/device.js b/web/gui/src/main/webapp/app/view/device/device.js
index 9bc6082..75bcee3 100644
--- a/web/gui/src/main/webapp/app/view/device/device.js
+++ b/web/gui/src/main/webapp/app/view/device/device.js
@@ -46,21 +46,15 @@
         detailsResp = 'deviceDetailsResponse',
         nameChangeReq = 'deviceNameChangeRequest',
         nameChangeResp = 'deviceNameChangeResponse',
-
-        propSplit = 4,
-        propOrder = [
-            'id', 'type', 'masterid', 'chassisid',
-            'mfr', 'hw', 'sw', 'protocol', 'serial'
-        ],
         friendlyProps = [
             'URI', 'Type', 'Master ID', 'Chassis ID',
-            'Vendor', 'H/W Version', 'S/W Version', 'Protocol', 'Serial #'
+            'Vendor', 'H/W Version', 'S/W Version', 'Protocol', 'Serial #',
         ],
         portCols = [
-            'enabled', 'id', 'speed', 'type', 'elinks_dest', 'name'
+            'enabled', 'id', 'speed', 'type', 'elinks_dest', 'name',
         ],
         friendlyPortCols = [
-            'Enabled', 'ID', 'Speed', 'Type', 'Egress Links', 'Name'
+            'Enabled', 'ID', 'Speed', 'Type', 'Egress Links', 'Name',
         ];
 
     function closePanel() {
@@ -175,20 +169,15 @@
         top.select('h2').text(details.name);
 
         // === demonstrate use of JsonCodec object see ONOS-5976
-        addProp(leftTbl,  0, device.id);
-        addProp(leftTbl,  1, device.type);
-        addProp(leftTbl,  2, details['masterid']);
-        addProp(leftTbl,  3, details['chassid']);
+        addProp(leftTbl, 0, device.id);
+        addProp(leftTbl, 1, device.type);
+        addProp(leftTbl, 2, details['masterid']);
+        addProp(leftTbl, 3, details['chassid']);
         addProp(rightTbl, 4, device.mfr);
         addProp(rightTbl, 5, device.hw);
         addProp(rightTbl, 6, device.sw);
         addProp(rightTbl, 7, details['protocol']);
         addProp(rightTbl, 8, device.serial);
-
-        // propOrder.forEach(function (prop, i) {
-        //     // properties are split into two tables
-        //     addProp(i < propSplit ? leftTbl : rightTbl, i, details[prop]);
-        // });
     }
 
     function addPortRow(tbody, port) {
@@ -223,7 +212,7 @@
             height: tbHeight + 'px',
             width: tbWidth + 'px',
             overflow: 'auto',
-            display: 'block'
+            display: 'block',
         });
 
         detailsPanel.width(tbWidth + ctnrPdg);
@@ -261,11 +250,11 @@
         detailsPanel = ps.createPanel(pName, {
             width: wSize.width,
             margin: 0,
-            hideMargin: 0
+            hideMargin: 0,
         });
         detailsPanel.el().style({
             position: 'absolute',
-            top: pStartY + 'px'
+            top: pStartY + 'px',
         });
         $scope.hidePanel = function () { detailsPanel.hide(); };
         detailsPanel.hide();
@@ -339,7 +328,7 @@
             tbs.buildTable({
                 scope: $scope,
                 tag: 'device',
-                selCb: selCb
+                selCb: selCb,
             });
 
 
@@ -347,7 +336,7 @@
             // TODO: more than just an example
             tds.buildBasePanel({
                 popTop: popTop,
-                popMid: popMid
+                popMid: popMid,
             });
             // ==================== for testing for now ===============
 
@@ -394,11 +383,11 @@
             ks.keyBindings({
                 enter: editNameSave,
                 esc: [handleEscape, 'Close the details panel'],
-                _helpFormat: ['esc']
+                _helpFormat: ['esc'],
             });
             ks.gestureNotes([
                 ['click', 'Select a row to show device details'],
-                ['scroll down', 'See more devices']
+                ['scroll down', 'See more devices'],
             ]);
 
             // if the panelData changes
@@ -414,7 +403,7 @@
                 function () {
                     return {
                         h: $window.innerHeight,
-                        w: $window.innerWidth
+                        w: $window.innerWidth,
                     };
                 }, function () {
                     if (!fs.isEmptyObject(scope.panelData)) {
diff --git a/web/gui/src/main/webapp/app/view/flow/flow.js b/web/gui/src/main/webapp/app/view/flow/flow.js
index 7b2391b..cca29db 100644
--- a/web/gui/src/main/webapp/app/view/flow/flow.js
+++ b/web/gui/src/main/webapp/app/view/flow/flow.js
@@ -67,7 +67,7 @@
 
             'groupId',
             'timeout',
-            'permanent'
+            'permanent',
         ],
         friendlyProps = [
             'Flow ID',
@@ -84,7 +84,7 @@
 
             'Group ID',
             'Timeout',
-            'Permanent'
+            'Permanent',
         ];
 
     function closePanel() {
@@ -202,11 +202,11 @@
         detailsPanel = ps.createPanel(pName, {
             width: wSize.width,
             margin: 0,
-            hideMargin: 0
+            hideMargin: 0,
         });
         detailsPanel.el().style({
             position: 'absolute',
-            top: pStartY + 'px'
+            top: pStartY + 'px',
         });
         $scope.hidePanel = function () { detailsPanel.hide(); };
         detailsPanel.hide();
@@ -216,157 +216,157 @@
         setUpPanel();
         populateTop(details);
 
-        //ToDo add more details
+        // ToDo add more details
         detailsPanel.height(pHeight);
         detailsPanel.width(wtPdg);
     }
 
     function respDetailsCb(data) {
-        $log.debug("Got response from server :", data);
+        $log.debug('Got response from server :', data);
         $scope.panelData = data.details;
         $scope.$apply();
     }
 
     angular.module('ovFlow', [])
-    .controller('OvFlowCtrl',
-        ['$log', '$scope', '$location',
-            'FnService', 'TableBuilderService', 'NavService',
-            'MastService', 'PanelService', 'KeyService', 'IconService',
-            'WebSocketService',
+        .controller('OvFlowCtrl',
+            ['$log', '$scope', '$location',
+                'FnService', 'TableBuilderService', 'NavService',
+                'MastService', 'PanelService', 'KeyService', 'IconService',
+                'WebSocketService',
 
-        function (_$log_, _$scope_, _$location_, _fs_, _tbs_, _ns_,
-                    _mast_, _ps_, _ks_, _is_, _wss_) {
-            var params,
-                handlers = {};
+                function (_$log_, _$scope_, _$location_, _fs_, _tbs_, _ns_,
+                          _mast_, _ps_, _ks_, _is_, _wss_) {
+                    var params,
+                        handlers = {};
 
-            $log = _$log_;
-            $scope = _$scope_;
-            $location = _$location_;
-            fs = _fs_;
-            tbs = _tbs_;
-            ns = _ns_;
-            is = _is_;
-            wss = _wss_;
-            mast = _mast_;
-            ps = _ps_;
-            $scope.deviceTip = 'Show device table';
-            $scope.portTip = 'Show port view for this device';
-            $scope.groupTip = 'Show group view for this device';
-            $scope.meterTip = 'Show meter view for selected device';
-            $scope.briefTip = 'Switch to brief view';
-            $scope.detailTip = 'Switch to detailed view';
-            $scope.brief = true;
-            params = $location.search();
-            if (params.hasOwnProperty('devId')) {
-                $scope.devId = params['devId'];
-            }
-
-            tbs.buildTable({
-                scope: $scope,
-                tag: 'flow',
-                selCb: selCb,
-                query: params
-            });
-
-            $scope.nav = function (path) {
-                if ($scope.devId) {
-                    ns.navTo(path, { devId: $scope.devId });
-                }
-            };
-
-            // details panel handlers
-            handlers[detailsResp] = respDetailsCb;
-            wss.bindHandlers(handlers);
-
-            function selCb($event, row) {
-                if ($scope.selId) {
-                    wss.sendEvent(detailsReq, {flowId: row.id, appId: row.appId});
-                } else {
-                    $scope.hidePanel();
-                }
-                $log.debug('Got a click on:', row);
-            }
-
-             $scope.$on('$destroy', function () {
-                 wss.unbindHandlers(handlers);
-             });
-
-            $scope.briefToggle = function () {
-                $scope.brief = !$scope.brief;
-            };
-
-            Object.defineProperty($scope, "queryFilter", {
-               get: function() {
-                   var out = {};
-                   out[$scope.queryBy || "$"] = $scope.queryTxt;
-                   return out;
-               }
-            });
-
-            $log.log('OvFlowCtrl has been created');
-        }])
-
-    .directive('flowDetailsPanel',
-    ['$rootScope', '$window', '$timeout', 'KeyService',
-    function ($rootScope, $window, $timeout, ks) {
-        return function (scope) {
-            var unbindWatch;
-
-            function heightCalc() {
-                pStartY = fs.noPxStyle(d3.select('.tabular-header'), 'height')
-                                        + mast.mastHeight() + topPdg;
-                wSize = fs.windowSize(pStartY);
-                pHeight = wSize.height;
-            }
-
-            function initPanel() {
-                heightCalc();
-                createDetailsPane();
-            }
-
-            // Safari has a bug where it renders the fixed-layout table wrong
-            // if you ask for the window's size too early
-            if (scope.onos.browser === 'safari') {
-                $timeout(initPanel);
-            } else {
-                initPanel();
-            }
-            // create key bindings to handle panel
-            ks.keyBindings({
-                esc: [handleEscape, 'Close the details panel'],
-                _helpFormat: ['esc']
-            });
-            ks.gestureNotes([
-                ['click', 'Select a row to show cluster node details'],
-                ['scroll down', 'See available cluster nodes']
-            ]);
-            // if the panelData changes
-            scope.$watch('panelData', function () {
-                if (!fs.isEmptyObject(scope.panelData)) {
-                    populateDetails(scope.panelData);
-                    detailsPanel.show();
-                }
-            });
-            // if the window size changes
-            unbindWatch = $rootScope.$watchCollection(
-                function () {
-                    return {
-                        h: $window.innerHeight,
-                        w: $window.innerWidth
-                    };
-                }, function () {
-                    if (!fs.isEmptyObject(scope.panelData)) {
-                        heightCalc();
-                        populateDetails(scope.panelData);
+                    $log = _$log_;
+                    $scope = _$scope_;
+                    $location = _$location_;
+                    fs = _fs_;
+                    tbs = _tbs_;
+                    ns = _ns_;
+                    is = _is_;
+                    wss = _wss_;
+                    mast = _mast_;
+                    ps = _ps_;
+                    $scope.deviceTip = 'Show device table';
+                    $scope.portTip = 'Show port view for this device';
+                    $scope.groupTip = 'Show group view for this device';
+                    $scope.meterTip = 'Show meter view for selected device';
+                    $scope.briefTip = 'Switch to brief view';
+                    $scope.detailTip = 'Switch to detailed view';
+                    $scope.brief = true;
+                    params = $location.search();
+                    if (params.hasOwnProperty('devId')) {
+                        $scope.devId = params['devId'];
                     }
-                }
-            );
 
-            scope.$on('$destroy', function () {
-                unbindWatch();
-                ps.destroyPanel(pName);
-            });
-        };
-    }]);
+                    tbs.buildTable({
+                        scope: $scope,
+                        tag: 'flow',
+                        selCb: selCb,
+                        query: params,
+                    });
+
+                    $scope.nav = function (path) {
+                        if ($scope.devId) {
+                            ns.navTo(path, { devId: $scope.devId });
+                        }
+                    };
+
+                    // details panel handlers
+                    handlers[detailsResp] = respDetailsCb;
+                    wss.bindHandlers(handlers);
+
+                    function selCb($event, row) {
+                        if ($scope.selId) {
+                            wss.sendEvent(detailsReq, { flowId: row.id, appId: row.appId });
+                        } else {
+                            $scope.hidePanel();
+                        }
+                        $log.debug('Got a click on:', row);
+                    }
+
+                    $scope.$on('$destroy', function () {
+                        wss.unbindHandlers(handlers);
+                    });
+
+                    $scope.briefToggle = function () {
+                        $scope.brief = !$scope.brief;
+                    };
+
+                    Object.defineProperty($scope, 'queryFilter', {
+                        get: function () {
+                            var out = {};
+                            out[$scope.queryBy || '$'] = $scope.queryTxt;
+                            return out;
+                        },
+                    });
+
+                    $log.log('OvFlowCtrl has been created');
+                }])
+
+        .directive('flowDetailsPanel',
+            ['$rootScope', '$window', '$timeout', 'KeyService',
+                function ($rootScope, $window, $timeout, ks) {
+                    return function (scope) {
+                        var unbindWatch;
+
+                        function heightCalc() {
+                            pStartY = fs.noPxStyle(d3.select('.tabular-header'), 'height')
+                                + mast.mastHeight() + topPdg;
+                            wSize = fs.windowSize(pStartY);
+                            pHeight = wSize.height;
+                        }
+
+                        function initPanel() {
+                            heightCalc();
+                            createDetailsPane();
+                        }
+
+                        // Safari has a bug where it renders the fixed-layout table wrong
+                        // if you ask for the window's size too early
+                        if (scope.onos.browser === 'safari') {
+                            $timeout(initPanel);
+                        } else {
+                            initPanel();
+                        }
+                        // create key bindings to handle panel
+                        ks.keyBindings({
+                            esc: [handleEscape, 'Close the details panel'],
+                            _helpFormat: ['esc'],
+                        });
+                        ks.gestureNotes([
+                            ['click', 'Select a row to show cluster node details'],
+                            ['scroll down', 'See available cluster nodes'],
+                        ]);
+                        // if the panelData changes
+                        scope.$watch('panelData', function () {
+                            if (!fs.isEmptyObject(scope.panelData)) {
+                                populateDetails(scope.panelData);
+                                detailsPanel.show();
+                            }
+                        });
+                        // if the window size changes
+                        unbindWatch = $rootScope.$watchCollection(
+                            function () {
+                                return {
+                                    h: $window.innerHeight,
+                                    w: $window.innerWidth,
+                                };
+                            }, function () {
+                                if (!fs.isEmptyObject(scope.panelData)) {
+                                    heightCalc();
+                                    populateDetails(scope.panelData);
+                                }
+                            }
+                        );
+
+                        scope.$on('$destroy', function () {
+                            unbindWatch();
+                            ps.destroyPanel(pName);
+                        });
+                    };
+                }]);
 
 }());
diff --git a/web/gui/src/main/webapp/app/view/group/group.js b/web/gui/src/main/webapp/app/view/group/group.js
index 25438ee..063daef 100644
--- a/web/gui/src/main/webapp/app/view/group/group.js
+++ b/web/gui/src/main/webapp/app/view/group/group.js
@@ -52,7 +52,7 @@
             tbs.buildTable({
                 scope: $scope,
                 tag: 'group',
-                query: params
+                query: params,
             });
 
             $scope.$watch('tableData', function () {
@@ -72,12 +72,12 @@
                 $scope.brief = !$scope.brief;
             };
 
-            Object.defineProperty($scope, "queryFilter", {
-                get: function() {
+            Object.defineProperty($scope, 'queryFilter', {
+                get: function () {
                     var out = {};
-                    out[$scope.queryBy || "$"] = $scope.query;
+                    out[$scope.queryBy || '$'] = $scope.query;
                     return out;
-                }
+                },
             });
 
 
diff --git a/web/gui/src/main/webapp/app/view/host/host.js b/web/gui/src/main/webapp/app/view/host/host.js
index 55b29d1..9cb674c 100644
--- a/web/gui/src/main/webapp/app/view/host/host.js
+++ b/web/gui/src/main/webapp/app/view/host/host.js
@@ -31,8 +31,7 @@
         top,
         iconDiv,
         wSize,
-        editingName = false,
-        host;
+        editingName = false;
 
     // constants
     var topPdg = 28,
@@ -43,11 +42,11 @@
         nameChangeResp = 'hostNameChangeResponse';
 
     var propOrder = [
-            'id', 'ip', 'mac', 'vlan', 'configured', 'location'
+            'id', 'ip', 'mac', 'vlan', 'configured', 'location',
         ],
         friendlyProps = [
             'Host ID', 'IP Address', 'MAC Address', 'VLAN',
-            'Configured', 'Location'
+            'Configured', 'Location',
         ];
 
     function closePanel() {
@@ -165,7 +164,6 @@
 
     function respDetailsCb(data) {
         $scope.panelData = data.details;
-        host = data.host;
         $scope.$apply();
     }
 
@@ -180,11 +178,11 @@
         detailsPanel = ps.createPanel(pName, {
             width: wSize.width,
             margin: 0,
-            hideMargin: 0
+            hideMargin: 0,
         });
         detailsPanel.el().style({
             position: 'absolute',
-            top: pStartY + 'px'
+            top: pStartY + 'px',
         });
         $scope.hidePanel = function () { detailsPanel.hide(); };
         detailsPanel.hide();
@@ -246,7 +244,7 @@
             tbs.buildTable({
                 scope: $scope,
                 tag: 'host',
-                selCb: selCb
+                selCb: selCb,
             });
 
             $scope.nav = function (path) {
@@ -291,11 +289,11 @@
             ks.keyBindings({
                 enter: editNameSave,
                 esc: [handleEscape, 'Close the details panel'],
-                _helpFormat: ['esc']
+                _helpFormat: ['esc'],
             });
             ks.gestureNotes([
                 ['click', 'Select a row to show device details'],
-                ['scroll down', 'See more devices']
+                ['scroll down', 'See more devices'],
             ]);
 
             // if the panelData changes
@@ -311,7 +309,7 @@
                 function () {
                     return {
                         h: $window.innerHeight,
-                        w: $window.innerWidth
+                        w: $window.innerWidth,
                     };
                 }, function () {
                     if (!fs.isEmptyObject(scope.panelData)) {
diff --git a/web/gui/src/main/webapp/app/view/intent/intent.js b/web/gui/src/main/webapp/app/view/intent/intent.js
index 716a591..4d168ea 100644
--- a/web/gui/src/main/webapp/app/view/intent/intent.js
+++ b/web/gui/src/main/webapp/app/view/intent/intent.js
@@ -24,7 +24,7 @@
     // constants and configuration
     var dialogId = 'remove-intent-dialog',
         dialogOpts = {
-            edge: 'right'
+            edge: 'right',
         };
 
     // DOM elements
@@ -61,7 +61,7 @@
                 appId: id,
                 appName: name,
                 key: row.key,
-                intentType: row.type
+                intentType: row.type,
             } : null;
 
         $scope.intentState = row.state;
@@ -84,7 +84,7 @@
         dropdown.style('display', b ? 'block' : 'none');
     }
 
-    function showIntent () {
+    function showIntent() {
         var d = $scope.intentData,
             handlers,
             nh;
@@ -163,7 +163,7 @@
             // set up scope function references...
             $scope.showIntent = showIntent;
 
-            $scope.canShowIntent = function() {
+            $scope.canShowIntent = function () {
                 var d = $scope.intentData;
                 return d && tov.overlaysAcceptingIntents(d.intentType).length > 0;
             };
@@ -174,7 +174,7 @@
                 tag: 'intent',
                 selCb: selCb,
                 respCb: respCb,
-                idKey: 'key'
+                idKey: 'key',
             });
 
 
@@ -200,7 +200,6 @@
 
             function executeAction(action) {
                 var content = ds.createDiv(),
-                    txt,
                     bPurge = action === 'purge';
 
                 $scope.intentData.intentPurge = bPurge;
@@ -231,10 +230,10 @@
             }
 
             function executeActions(action) {
-                 var content = ds.createDiv(),
-                     txt='purgeIntents';
-                     content.append('p').
-                     text('Are you sure you want to purge all the withdrawn intents?');
+                 var content = ds.createDiv();
+
+                 content.append('p')
+                    .text('Are you sure you want to purge all the withdrawn intents?');
 
                  function dOk() {
                      tts.removeIntents();
@@ -255,15 +254,15 @@
             }
 
             $scope.deactivateIntent = function () {
-                executeAction("withdraw");
+                executeAction('withdraw');
             };
 
             $scope.resubmitIntent = function () {
-                executeAction("resubmit");
+                executeAction('resubmit');
             };
 
             $scope.purgeIntent = function () {
-                executeAction("purge");
+                executeAction('purge');
             };
 
             $scope.briefToggle = function () {
@@ -276,8 +275,9 @@
             });
 
             $scope.purgeIntents = function () {
-                executeActions("purgeIntents");
+                executeActions('purgeIntents');
             };
+
             $log.debug('OvIntentCtrl has been created');
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/view/link/link.js b/web/gui/src/main/webapp/app/view/link/link.js
index b3bfcf9..1f777fe 100644
--- a/web/gui/src/main/webapp/app/view/link/link.js
+++ b/web/gui/src/main/webapp/app/view/link/link.js
@@ -28,7 +28,7 @@
         function ($log, $scope, $sce, fs, tbs) {
             tbs.buildTable({
                 scope: $scope,
-                tag: 'link'
+                tag: 'link',
             });
 
             $scope.$watch('tableData', function () {
diff --git a/web/gui/src/main/webapp/app/view/meter/meter.js b/web/gui/src/main/webapp/app/view/meter/meter.js
index 980213e..bec7d2e 100644
--- a/web/gui/src/main/webapp/app/view/meter/meter.js
+++ b/web/gui/src/main/webapp/app/view/meter/meter.js
@@ -49,7 +49,7 @@
             tbs.buildTable({
                 scope: $scope,
                 tag: 'meter',
-                query: params
+                query: params,
             });
 
             $scope.$watch('tableData', function () {
@@ -66,12 +66,12 @@
                 }
             };
 
-            Object.defineProperty($scope, "queryFilter", {
-                get: function() {
+            Object.defineProperty($scope, 'queryFilter', {
+                get: function () {
                     var out = {};
-                    out[$scope.queryBy || "$"] = $scope.query;
+                    out[$scope.queryBy || '$'] = $scope.query;
                     return out;
-                }
+                },
             });
 
 
diff --git a/web/gui/src/main/webapp/app/view/partition/partition.js b/web/gui/src/main/webapp/app/view/partition/partition.js
index 7865010..d4d230c 100644
--- a/web/gui/src/main/webapp/app/view/partition/partition.js
+++ b/web/gui/src/main/webapp/app/view/partition/partition.js
@@ -28,7 +28,7 @@
                 function ($log, $scope, $sce, fs, tbs) {
                     tbs.buildTable({
                         scope: $scope,
-                        tag: 'partition'
+                        tag: 'partition',
                     });
 
                     $log.log('OvPartitionCtrl has been created');
diff --git a/web/gui/src/main/webapp/app/view/port/port.js b/web/gui/src/main/webapp/app/view/port/port.js
index 13155a7..7aad374 100644
--- a/web/gui/src/main/webapp/app/view/port/port.js
+++ b/web/gui/src/main/webapp/app/view/port/port.js
@@ -22,7 +22,7 @@
     'use strict';
 
     // injected references
-    var $log, $scope, $location, fs, tbs, wss, ns, ps;
+    var $log, $scope, $location, tbs, ns, ps;
 
     var nz = 'nzFilter',
         del = 'showDelta';
@@ -32,8 +32,8 @@
         showDelta = false;
 
     var defaultPortPrefsState = {
-        nzFilter :  1,
-        showDelta : 0,
+        nzFilter: 1,
+        showDelta: 0,
     };
 
     var prefsState = {};
@@ -72,88 +72,85 @@
     }
 
     angular.module('ovPort', [])
-    .controller('OvPortCtrl',
-        ['$log', '$scope', '$location',
-            'FnService', 'TableBuilderService', 'WebSocketService', 'NavService',
-            'PrefsService',
+        .controller('OvPortCtrl', [
+            '$log', '$scope', '$location',
+            'TableBuilderService', 'NavService', 'PrefsService',
 
-        function (_$log_, _$scope_, _$location_, _fs_, _tbs_, _wss_, _ns_, _ps_) {
-            var params;
-            var tableApi;
-            $log = _$log_;
-            $scope = _$scope_;
-            $location = _$location_;
-            fs = _fs_;
-            tbs = _tbs_;
-            wss = _wss_;
-            ns = _ns_;
-            ps = _ps_;
+            function (_$log_, _$scope_, _$location_, _tbs_, _ns_, _ps_) {
+                var params;
+                var tableApi;
+                $log = _$log_;
+                $scope = _$scope_;
+                $location = _$location_;
+                tbs = _tbs_;
+                ns = _ns_;
+                ps = _ps_;
 
-            $scope.deviceTip = 'Show device table';
-            $scope.flowTip = 'Show flow view for this device';
-            $scope.groupTip = 'Show group view for this device';
-            $scope.meterTip = 'Show meter view for selected device';
-            $scope.toggleDeltaTip = 'Toggle port delta statistics';
-            $scope.toggleNZTip = 'Toggle non zero port statistics';
+                $scope.deviceTip = 'Show device table';
+                $scope.flowTip = 'Show flow view for this device';
+                $scope.groupTip = 'Show group view for this device';
+                $scope.meterTip = 'Show meter view for selected device';
+                $scope.toggleDeltaTip = 'Toggle port delta statistics';
+                $scope.toggleNZTip = 'Toggle non zero port statistics';
 
-            params = $location.search();
-            if (params.hasOwnProperty('devId')) {
-                $scope.devId = params['devId'];
-            }
-
-            $scope.payloadParams = {
-                nzFilter: nzFilter,
-                showDelta: showDelta
-            };
-
-            tableApi = tbs.buildTable({
-                scope: $scope,
-                tag: 'port',
-                query: params
-            });
-
-            function filterToggleState() {
-                return {
-                    nzFilter: nzFilter,
-                    showDelta: showDelta
-                };
-            }
-
-            $scope.nav = function (path) {
-                if ($scope.devId) {
-                    ns.navTo(path, { devId: $scope.devId });
+                params = $location.search();
+                if (params.hasOwnProperty('devId')) {
+                    $scope.devId = params['devId'];
                 }
-            };
 
-            $scope.toggleNZ = function () {
-                toggleNZState();
-                $scope.payloadParams = filterToggleState();
-                tableApi.forceRefesh();
-            };
+                $scope.payloadParams = {
+                    nzFilter: nzFilter,
+                    showDelta: showDelta,
+                };
 
-            $scope.toggleDelta = function () {
-                toggleDeltaState();
-                $scope.payloadParams = filterToggleState();
-                tableApi.forceRefesh();
-            };
+                tableApi = tbs.buildTable({
+                    scope: $scope,
+                    tag: 'port',
+                    query: params,
+                });
 
-            $scope.isDelta = function() {
-                return showDelta;
-            };
+                function filterToggleState() {
+                    return {
+                        nzFilter: nzFilter,
+                        showDelta: showDelta,
+                    };
+                }
 
-            $scope.isNZ = function() {
-                return nzFilter;
-            };
+                $scope.nav = function (path) {
+                    if ($scope.devId) {
+                        ns.navTo(path, { devId: $scope.devId });
+                    }
+                };
 
-             Object.defineProperty($scope, "queryFilter", {
-                 get: function() {
-                     var out = {};
-                     out[$scope.queryBy || "$"] = $scope.query;
-                     return out;
-                 }
-             });
+                $scope.toggleNZ = function () {
+                    toggleNZState();
+                    $scope.payloadParams = filterToggleState();
+                    tableApi.forceRefesh();
+                };
 
-            restoreConfigFromPrefs();
-            $log.log('OvPortCtrl has been created');
-        }]);
+                $scope.toggleDelta = function () {
+                    toggleDeltaState();
+                    $scope.payloadParams = filterToggleState();
+                    tableApi.forceRefesh();
+                };
+
+                $scope.isDelta = function () {
+                    return showDelta;
+                };
+
+                $scope.isNZ = function () {
+                    return nzFilter;
+                };
+
+                Object.defineProperty($scope, 'queryFilter', {
+                    get: function () {
+                        var out = {};
+                        out[$scope.queryBy || '$'] = $scope.query;
+                        return out;
+                    },
+                });
+
+                restoreConfigFromPrefs();
+                $log.log('OvPortCtrl has been created');
+            }]);
 }());
diff --git a/web/gui/src/main/webapp/app/view/processor/processor.js b/web/gui/src/main/webapp/app/view/processor/processor.js
index 2fb47f3..66188a1 100644
--- a/web/gui/src/main/webapp/app/view/processor/processor.js
+++ b/web/gui/src/main/webapp/app/view/processor/processor.js
@@ -22,19 +22,17 @@
     'use strict';
 
     // injected references
-    var $log, $scope, $location, fs, tbs, ns;
+    var $log, $scope, $location, tbs, ns;
 
     angular.module('ovProcessor', [])
     .controller('OvProcessorCtrl',
-        ['$log', '$scope', '$location',
-            'FnService', 'TableBuilderService', 'NavService',
+        ['$log', '$scope', '$location', 'TableBuilderService', 'NavService',
 
-        function (_$log_, _$scope_, _$location_, _fs_, _tbs_, _ns_) {
+        function (_$log_, _$scope_, _$location_, _tbs_, _ns_) {
             var params;
             $log = _$log_;
             $scope = _$scope_;
             $location = _$location_;
-            fs = _fs_;
             tbs = _tbs_;
             ns = _ns_;
             $scope.requestTip = 'Show packet requests';
@@ -44,7 +42,7 @@
             tbs.buildTable({
                 scope: $scope,
                 tag: 'processor',
-                query: params
+                query: params,
             });
 
             $scope.nav = function (path) {
diff --git a/web/gui/src/main/webapp/app/view/settings/settings.js b/web/gui/src/main/webapp/app/view/settings/settings.js
index fe19a4f..78ae829 100644
--- a/web/gui/src/main/webapp/app/view/settings/settings.js
+++ b/web/gui/src/main/webapp/app/view/settings/settings.js
@@ -22,7 +22,7 @@
     'use strict';
 
     // injected refs
-    var $log, $scope, wss, fs, ks, ps, is;
+    var $log, $scope, fs, ks, ps, is;
 
     // internal state
     var detailsPanel,
@@ -39,19 +39,19 @@
         propOrder = ['fqComponent', 'prop', 'type', 'value', 'defValue', 'desc'],
         friendlyProps = [
             'Component', 'Property', 'Type', 'Value', 'Default Value',
-            'Description'
+            'Description',
         ];
 
     function createDetailsPanel() {
         detailsPanel = ps.createPanel(pName, {
             width: wSize.width,
             margin: 0,
-            hideMargin: 0
+            hideMargin: 0,
         });
 
         detailsPanel.el().style({
             position: 'absolute',
-            top: pStartY + 'px'
+            top: pStartY + 'px',
         });
 
         detailsPanel.hide();
@@ -87,7 +87,7 @@
         div = top.append('div').classed('top-content', true);
 
         function ndiv(cls, addTable) {
-            var  d = div.append('div').classed(cls, true);
+            var d = div.append('div').classed(cls, true);
             if (addTable) {
                 d.append('table');
             }
@@ -129,13 +129,12 @@
     angular.module('ovSettings', [])
         .controller('OvSettingsCtrl',
             ['$log', '$scope',
-            'WebSocketService', 'FnService', 'KeyService', 'PanelService',
+            'FnService', 'KeyService', 'PanelService',
             'IconService', 'TableBuilderService',
 
-        function (_$log_, _$scope_, _wss_, _fs_, _ks_, _ps_, _is_, tbs) {
+        function (_$log_, _$scope_, _fs_, _ks_, _ps_, _is_, tbs) {
             $log = _$log_;
             $scope = _$scope_;
-            wss = _wss_;
             fs = _fs_;
             ks = _ks_;
             ps = _ps_;
@@ -156,16 +155,16 @@
             tbs.buildTable({
                 scope: $scope,
                 tag: 'setting',
-                selCb: selCb
+                selCb: selCb,
             });
 
             ks.keyBindings({
                 esc: [$scope.selectCallback, 'Deselect property'],
-                _helpFormat: ['esc']
+                _helpFormat: ['esc'],
             });
             ks.gestureNotes([
                 ['click row', 'Select / deselect settings property'],
-                ['scroll down', 'See more settings']
+                ['scroll down', 'See more settings'],
             ]);
 
             $scope.$on('$destroy', function () {
@@ -204,11 +203,11 @@
                     // create key bindings to handle panel
                     ks.keyBindings({
                         esc: [closePanel, 'Close the details panel'],
-                        _helpFormat: ['esc']
+                        _helpFormat: ['esc'],
                     });
                     ks.gestureNotes([
                         ['click', 'Select a row to show property details'],
-                        ['scroll down', 'See more properties']
+                        ['scroll down', 'See more properties'],
                     ]);
 
                     // if the window size changes
@@ -216,7 +215,7 @@
                         function () {
                             return {
                                 h: $window.innerHeight,
-                                w: $window.innerWidth
+                                w: $window.innerWidth,
                             };
                         }, function () {
                             if (panelData) {
diff --git a/web/gui/src/main/webapp/app/view/topo/topo.js b/web/gui/src/main/webapp/app/view/topo/topo.js
index e397852..6c5c8aa 100644
--- a/web/gui/src/main/webapp/app/view/topo/topo.js
+++ b/web/gui/src/main/webapp/app/view/topo/topo.js
@@ -25,13 +25,13 @@
         'ngCookies',
         'onosUtil',
         'onosSvg',
-        'onosRemote'
+        'onosRemote',
     ];
 
     // references to injected services
-    var $scope, $log, $loc, $timeout, $cookies,
+    var $scope, $log, $loc, $timeout,
         fs, ks, zs, gs, ms, sus, flash, wss, ps, th, tds, t3s, tes, tfs, tps,
-        tis, tms, tss, tls, tts, tos, fltr, ttbs, tspr, ttip, tov;
+        tis, tms, tss, tls, tos, fltr, ttbs, tspr, tov;
 
     // DOM elements
     var ovtopo, svg, defs, zoomLayer, mapG, spriteG, forceG, noDevsLayer;
@@ -39,7 +39,7 @@
     // Internal state
     var zoomer,
         actionMap,
-        topoLion = function (x) { return '#' + x + '#'}; // func replaced later
+        topoLion = function (x) { return '#' + x + '#'; }; // func replaced later
 
     // --- Short Cut Keys ------------------------------------------------
 
@@ -48,41 +48,41 @@
         // thus, deferred to here...
 
         // we need functions that can be invoked after LION bundle loaded
-        function togInst() {return topoLion('tbtt_tog_instances')}
-        function togSumm() {return topoLion('tbtt_tog_summary')}
-        function togUseDet() {return topoLion('tbtt_tog_use_detail')}
+        function togInst() { return topoLion('tbtt_tog_instances'); }
+        function togSumm() { return topoLion('tbtt_tog_summary'); }
+        function togUseDet() { return topoLion('tbtt_tog_use_detail'); }
 
-        function togHost() {return topoLion('tbtt_tog_host')}
-        function togOff() {return topoLion('tbtt_tog_offline')}
-        function togPortHi() {return topoLion('tbtt_tog_porthi')}
+        function togHost() { return topoLion('tbtt_tog_host'); }
+        function togOff() { return topoLion('tbtt_tog_offline'); }
+        function togPortHi() { return topoLion('tbtt_tog_porthi'); }
 
-        function showBad() {return topoLion('tbtt_bad_links')}
-        function togMap() {return topoLion('tbtt_tog_map')}
-        function selMap() {return topoLion('tbtt_sel_map')}
-        function togSpr() {return topoLion('tbtt_tog_sprite')}
+        function showBad() { return topoLion('tbtt_bad_links'); }
+        function togMap() { return topoLion('tbtt_tog_map'); }
+        function selMap() { return topoLion('tbtt_sel_map'); }
+        function togSpr() { return topoLion('tbtt_tog_sprite'); }
 
-        function rstLoc() {return topoLion('tbtt_reset_loc')}
-        function togOb() {return topoLion('tbtt_tog_oblique')}
-        function cycLayer() {return topoLion('tbtt_cyc_layers')}
-        function cycDev() {return topoLion('tbtt_cyc_dev_labs')}
-        function cycHost() {return topoLion('tbtt_cyc_host_labs')}
+        function rstLoc() { return topoLion('tbtt_reset_loc'); }
+        function togOb() { return topoLion('tbtt_tog_oblique'); }
+        function cycLayer() { return topoLion('tbtt_cyc_layers'); }
+        function cycDev() { return topoLion('tbtt_cyc_dev_labs'); }
+        function cycHost() { return topoLion('tbtt_cyc_host_labs'); }
 
-        function unpin() {return topoLion('tbtt_unpin_node')}
-        function rzoom() {return topoLion('tbtt_reset_zoom')}
-        function togtb() {return topoLion('tbtt_tog_toolbar')}
-        function eqmaster() {return topoLion('tbtt_eq_master')}
+        function unpin() { return topoLion('tbtt_unpin_node'); }
+        function rzoom() { return topoLion('tbtt_reset_zoom'); }
+        function togtb() { return topoLion('tbtt_tog_toolbar'); }
+        function eqmaster() { return topoLion('tbtt_eq_master'); }
 
-        function uiClick() {return topoLion('click')}
-        function uiShClick() {return topoLion('shift_click')}
-        function uiDrag() {return topoLion('drag')}
-        function uiCmdScr() {return topoLion('cmd_scroll')}
-        function uiCmdDrag() {return topoLion('cmd_drag')}
+        function uiClick() { return topoLion('click'); }
+        function uiShClick() { return topoLion('shift_click'); }
+        function uiDrag() { return topoLion('drag'); }
+        function uiCmdScr() { return topoLion('cmd_scroll'); }
+        function uiCmdDrag() { return topoLion('cmd_drag'); }
 
-        function uiClickTxt() {return topoLion('qh_gest_click')}
-        function uiShClickTxt() {return topoLion('qh_gest_shift_click')}
-        function uiDragTxt() {return topoLion('qh_gest_drag')}
-        function uiCmdScrTxt() {return topoLion('qh_gest_cmd_scroll')}
-        function uiCmdDragTxt() {return topoLion('qh_gest_cmd_drag')}
+        function uiClickTxt() { return topoLion('qh_gest_click'); }
+        function uiShClickTxt() { return topoLion('qh_gest_shift_click'); }
+        function uiDragTxt() { return topoLion('qh_gest_drag'); }
+        function uiCmdScrTxt() { return topoLion('qh_gest_cmd_scroll'); }
+        function uiCmdDragTxt() { return topoLion('qh_gest_cmd_drag'); }
 
         actionMap = {
             I: [toggleInstances, togInst],
@@ -109,7 +109,7 @@
             dot: [ttbs.toggleToolbar, togtb],
             E: [equalizeMasters, eqmaster],
 
-            //-- instance color palette debug
+            // -- instance color palette debug
             // 9: function () { sus.cat7().testCard(svg); },
 
             // topology overlay selections
@@ -124,10 +124,10 @@
             _keyListener: ttbs.keyListener,
 
             _helpFormat: [
-                ['I', 'O', 'D', 'H', 'M', 'P', 'dash', 'B', 'G', 'S' ],
+                ['I', 'O', 'D', 'H', 'M', 'P', 'dash', 'B', 'G', 'S'],
                 ['X', 'Z', 'N', 'L', 'shift-L', 'U', 'R', '-', 'E', '-', 'dot'],
-                []   // this column reserved for overlay actions
-            ]
+                [], // this column reserved for overlay actions
+            ],
         };
 
         if (fs.isO(overlayKeys)) {
@@ -141,7 +141,7 @@
             [uiShClick, uiShClickTxt],
             [uiDrag, uiDragTxt],
             [uiCmdScr, uiCmdScrTxt],
-            [uiCmdDrag, uiCmdDragTxt]
+            [uiCmdDrag, uiCmdDragTxt],
         ]);
     }
 
@@ -224,7 +224,7 @@
     function handleEscape() {
         if (tis.showMaster()) {
             // if an instance is selected, cancel the affinity mapping
-            tis.cancelAffinity()
+            tis.cancelAffinity();
 
         } else if (tov.hooks.escape()) {
             // else if the overlay consumed the ESC event...
@@ -275,7 +275,7 @@
     function setUpToolbar() {
         ttbs.init({
             getActionEntry: getActionEntry,
-            setUpKeys: setUpKeys
+            setUpKeys: setUpKeys,
         });
         ttbs.createToolbar();
     }
@@ -300,7 +300,7 @@
         var sc = zoomer.scale(),
             tr = zoomer.translate();
 
-        ps.setPrefs('topo_zoom', {tx:tr[0], ty:tr[1], sc:sc});
+        ps.setPrefs('topo_zoom', { tx: tr[0], ty: tr[1], sc: sc });
 
         // keep the map lines constant width while zooming
         mapG.style('stroke-width', (2.0 / sc) + 'px');
@@ -314,7 +314,7 @@
             svg: svg,
             zoomLayer: zoomLayer,
             zoomEnabled: zoomEnabled,
-            zoomCallback: zoomCallback
+            zoomCallback: zoomCallback,
         });
     }
 
@@ -330,7 +330,7 @@
         var g, box;
         noDevsLayer = svg.append('g').attr({
             id: 'topo-noDevsLayer',
-            transform: sus.translate(500,500)
+            transform: sus.translate(500, 500),
         });
         // Note, SVG viewbox is '0 0 1000 1000', defined in topo.html.
         // We are translating this layer to have its origin at the center
@@ -338,7 +338,7 @@
         g = noDevsLayer.append('g');
         gs.addGlyph(g, 'bird', 100).attr('class', 'noDevsBird');
         g.append('text').text('No devices are connected')
-            .attr({ x: 120, y: 80});
+            .attr({ x: 120, y: 80 });
 
         box = g.node().getBBox();
         box.x -= box.width/2;
@@ -389,7 +389,7 @@
 
         australia: function (c) {
             return c.properties.adm0_a3 === 'AUS';
-        }
+        },
     };
 
     var tintOn = 0,
@@ -398,19 +398,19 @@
         light: {
             sea: 'aliceblue',
             land: 'white',
-            outline: '#ddd'
+            outline: '#ddd',
         },
         dark: {
             sea: '#001830',
             land: '#232331',
-            outline: '#3a3a3a'
-        }
+            outline: '#3a3a3a',
+        },
     };
 
     function shading() {
         return tintOn ? {
             palette: shadePalette[th.theme()],
-            flip: shadeFlip
+            flip: shadeFlip,
         } : '';
     }
 
@@ -427,7 +427,7 @@
                 mapid: 'usa',
                 mapscale: 1,
                 mapfilepath: '*continental_us',
-                tint: 'off'
+                tint: 'off',
             },
             $loc.search()
         );
@@ -451,7 +451,7 @@
         if (mapG.empty()) {
             mapG = zoomLayer.append('g').attr('id', 'topo-map');
         } else {
-            mapG.each(function(d,i) {
+            mapG.each(function (d, i) {
                 d3.selectAll(this.childNodes).remove();
             });
         }
@@ -463,13 +463,13 @@
             promise = ms.loadMapRegionInto(mapG, {
                 countryFilter: cfilter,
                 adjustScale: mapScale,
-                shading: shading()
+                shading: shading(),
             });
         } else {
 
             promise = ms.loadMapInto(mapG, mapFilePath, mapId, {
                 adjustScale: mapScale,
-                shading: shading()
+                shading: shading(),
             });
         }
 
@@ -478,7 +478,7 @@
     }
 
     function mapReshader() {
-        $log.debug('... Re-shading map ...')
+        $log.debug('... Re-shading map ...');
         ms.reshade(shading());
     }
 
@@ -501,7 +501,7 @@
         var prefs = ps.getPrefs('topo_sprites', { sprites: '' }, $loc.search()),
             sprId = prefs.sprites;
 
-        spriteG = zoomLayer.append ('g').attr('id', 'topo-sprites');
+        spriteG = zoomLayer.append('g').attr('id', 'topo-sprites');
         if (sprId) {
             ps.setPrefs('topo_sprites', prefs);
             tspr.loadSprites(spriteG, defs, sprId);
@@ -610,14 +610,13 @@
                     zoomLayer: function () { return zoomLayer; },
                     zoomer: function () { return zoomer; },
                     opacifyMap: opacifyMap,
-                    topoStartDone: topoStartDone
+                    topoStartDone: topoStartDone,
                 };
 
             $scope = _$scope_;
             $log = _$log_;
             $loc = _$loc_;
             $timeout = _$timeout_;
-            $cookies = _$cookies_;
             fs = _fs_;
             ks = _ks_;
             zs = _zs_;
@@ -638,20 +637,18 @@
             tps = _tps_;
             tis = _tis_;
             tms = _tms_;
-            tss = _tss_;
             tls = _tls_;
-            tts = _tts_;
             tos = _tos_;
             fltr = _fltr_;
             ttbs = _ttbs_;
             tspr = _tspr_;
-            ttip = _ttip_;
             tov = _tov_;
+            tss = _tss_;
 
             tms.start({
                 toggleMap: toggleMap,
                 currentMap: currentMap,
-                setMap: setMap
+                setMap: setMap,
             });
 
             // pull intent data from the query string...
@@ -660,7 +657,7 @@
                     key: params.key,
                     appId: params.appId,
                     appName: params.appName,
-                    intentType: params.intentType
+                    intentType: params.intentType,
                 };
             }
 
@@ -696,7 +693,7 @@
             setUpNoDevs();
             setUpMap().then(
                 function (proj) {
-                    var z = ps.getPrefs('topo_zoom', { tx:0, ty:0, sc:1 });
+                    var z = ps.getPrefs('topo_zoom', { tx: 0, ty: 0, sc: 1 });
                     zoomer.panZoom([z.tx, z.ty], z.sc);
                     $log.debug('** Zoom restored:', z);
 
diff --git a/web/gui/src/main/webapp/app/view/topo/topoD3.js b/web/gui/src/main/webapp/app/view/topo/topoD3.js
index 5496abc..6146082 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoD3.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoD3.js
@@ -23,7 +23,7 @@
     'use strict';
 
     // injected refs
-    var $log, fs, sus, is, ts, ps, ttbs;
+    var sus, is, ts, ps, ttbs;
 
     // api to topoForce
     var zoomer, api;
@@ -46,7 +46,7 @@
         badgeConfig = {
             radius: 12,
             yoff: 5,
-            gdelta: 10
+            gdelta: 10,
         },
         halfDevIcon = devIconDim / 2,
         devBadgeOff = { dx: -halfDevIcon, dy: -halfDevIcon },
@@ -55,7 +55,7 @@
         status = {
             i: 'badgeInfo',
             w: 'badgeWarn',
-            e: 'badgeError'
+            e: 'badgeError',
         };
 
     // NOTE: this type of hack should go away once we have implemented
@@ -77,7 +77,7 @@
     var remappedHostTypes = {
         router: 'm_router',
         endstation: 'm_endstation',
-        bgpSpeaker: 'm_bgpSpeaker'
+        bgpSpeaker: 'm_bgpSpeaker',
     };
 
     function mapDeviceTypeToGlyph(type) {
@@ -100,13 +100,13 @@
     var dColTheme = {
         light: {
             online: '#444444',
-            offline: '#cccccc'
+            offline: '#cccccc',
         },
         dark: {
             // TODO: theme
             online: '#444444',
-            offline: '#cccccc'
-        }
+            offline: '#cccccc',
+        },
     };
 
     function devGlyphColor(d) {
@@ -119,13 +119,13 @@
 
     function setDeviceColor(d) {
         // want to color the square rectangle (no longer the 'use' glyph)
-        d.el.selectAll('rect').filter(function (d, i) {return i === 1;})
+        d.el.selectAll('rect').filter(function (d, i) { return i === 1; })
             .style('fill', devGlyphColor(d));
     }
 
     function incDevLabIndex() {
         setDevLabIndex(deviceLabelIndex+1);
-        switch(deviceLabelIndex) {
+        switch (deviceLabelIndex) {
             case 0: return 'Hide device labels';
             case 1: return 'Show friendly device labels';
             case 2: return 'Show device ID labels';
@@ -141,7 +141,7 @@
 
     function incHostLabIndex() {
         setHostLabIndex(hostLabelIndex+1);
-        switch(hostLabelIndex) {
+        switch (hostLabelIndex) {
             case 0: return 'Show friendly host labels';
             case 1: return 'Show host IP Addresses';
             case 2: return 'Show host MAC Addresses';
@@ -180,8 +180,8 @@
             x: -dim/2,
             y: -dim/2,
             width: dim + labelWidth,
-            height: dim
-        }
+            height: dim,
+        };
     }
 
     function updateDeviceRendering(d) {
@@ -239,7 +239,7 @@
                     width: bcgd * 2,
                     height: bcgd * 2,
                     transform: sus.translate(-bcgd, -bcgd),
-                    'xlink:href': '#' + bdg.gid
+                    'xlink:href': '#' + bdg.gid,
                 });
         }
     }
@@ -279,14 +279,14 @@
         var node = d3.select(this),
             glyphId = mapDeviceTypeToGlyph(d.type),
             label = trimLabel(deviceLabel(d)),
-            rect, crect, text, glyph, labelWidth;
+            rect, crect, glyph, labelWidth;
 
         d.el = node;
 
         rect = node.append('rect');
         crect = node.append('rect');
 
-        text = node.append('text').text(label)
+        node.append('text').text(label)
             .attr('text-anchor', 'left')
             .attr('y', '0.3em')
             .attr('x', halfDevIcon + labelPad);
@@ -462,13 +462,13 @@
             });
 
             if (idx === -1) {
-                labels.push({id: newId, x: newX, y: newY});
+                labels.push({ id: newId, x: newX, y: newY });
             } else {
-                labels[idx] = {id: newId, x: newX, y: newY};
+                labels[idx] = { id: newId, x: newX, y: newY };
             }
 
-            return {x: newX, y: newY};
-        }
+            return { x: newX, y: newY };
+        };
     }
 
     var getLabelPos = generateLabelFunction();
@@ -518,7 +518,7 @@
 
         return {
             x: movedX,
-            y: movedY
+            y: movedY,
         };
     }
 
@@ -545,7 +545,7 @@
             x2: mid.x + moveAmtX,
             y2: mid.y + moveAmtY,
             stroke: api.linkConfig()[ts.theme()].baseColor,
-            transform: 'rotate(' + angle + ',' + mid.x + ',' + mid.y + ')'
+            transform: 'rotate(' + angle + ',' + mid.x + ',' + mid.y + ')',
         };
     }
 
@@ -554,7 +554,7 @@
             dist = 20;
         return {
             x: point.x + dist,
-            y: point.y + dist
+            y: point.y + dist,
         };
     }
 
@@ -568,7 +568,7 @@
             var el = d3.select(this);
 
             el.attr({
-                transform: function (d) { return calcGroupPos(d.linkCoords); }
+                transform: function (d) { return calcGroupPos(d.linkCoords); },
             });
             el.select('line')
                 .attr(hashAttrs(d.linkCoords));
@@ -583,7 +583,7 @@
             .append('g')
             .attr({
                 transform: function (d) { return calcGroupPos(d.linkCoords); },
-                id: function (d) { return 'pair-' + d.id; }
+                id: function (d) { return 'pair-' + d.id; },
             })
             .classed('numLinkLabel', true);
 
@@ -608,12 +608,10 @@
 
     angular.module('ovTopo')
     .factory('TopoD3Service',
-        ['$log', 'FnService', 'SvgUtilService', 'IconService', 'ThemeService',
+        ['SvgUtilService', 'IconService', 'ThemeService',
             'PrefsService', 'TopoToolbarService',
 
-        function (_$log_, _fs_, _sus_, _is_, _ts_, _ps_, _ttbs_) {
-            $log = _$log_;
-            fs = _fs_;
+        function (_sus_, _is_, _ts_, _ps_, _ttbs_) {
             sus = _sus_;
             is = _is_;
             ts = _ts_;
@@ -654,7 +652,7 @@
                 applyLinkLabels: applyLinkLabels,
                 transformLabel: transformLabel,
                 applyPortLabels: applyPortLabels,
-                applyNumLinkLabels: applyNumLinkLabels
+                applyNumLinkLabels: applyNumLinkLabels,
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoDialog.js b/web/gui/src/main/webapp/app/view/topo/topoDialog.js
index 44cb156..24a1e83 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoDialog.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoDialog.js
@@ -25,7 +25,7 @@
     // constants
     var idDialog = 'topo-p-dialog',
         opts = {
-            cssCls: 'topo-p'
+            cssCls: 'topo-p',
         };
 
     // ==========================
@@ -38,7 +38,7 @@
             return {
                 openDialog: function () { return ds.openDialog(idDialog, opts); },
                 closeDialog: ds.closeDialog,
-                createDiv: ds.createDiv
+                createDiv: ds.createDiv,
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoEvent.js b/web/gui/src/main/webapp/app/view/topo/topoEvent.js
index bedb356..79fc760 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoEvent.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoEvent.js
@@ -27,7 +27,7 @@
     'use strict';
 
     // injected refs
-    var $log, $interval, wss, tps, tis, tfs, tss, tov, tspr;
+    var $log, wss, tps, tis, tfs, tss, tov, tspr;
 
     // internal state
     var handlerMap,
@@ -61,7 +61,7 @@
             topoStartDone: tfs,
 
             spriteListResponse: tspr,
-            spriteDataResponse: tspr
+            spriteDataResponse: tspr,
         };
     }
 
@@ -74,14 +74,13 @@
 
     angular.module('ovTopo')
     .factory('TopoEventService',
-        ['$log', '$interval', 'WebSocketService',
+        ['$log', 'WebSocketService',
             'TopoPanelService', 'TopoInstService', 'TopoForceService',
             'TopoSelectService', 'TopoOverlayService', 'TopoSpriteService',
 
-        function (_$log_,  _$interval_, _wss_,
+        function (_$log_, _wss_,
                   _tps_, _tis_, _tfs_, _tss_, _tov_, _tspr_) {
             $log = _$log_;
-            $interval = _$interval_;
             wss = _wss_;
             tps = _tps_;
             tis = _tis_;
@@ -115,7 +114,7 @@
             return {
                 bindHandlers: bindHandlers,
                 start: start,
-                stop: stop
+                stop: stop,
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoFilter.js b/web/gui/src/main/webapp/app/view/topo/topoFilter.js
index b9f864c..b24bf53 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoFilter.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoFilter.js
@@ -24,7 +24,7 @@
     'use strict';
 
     // injected refs
-    var $log, fs, flash, tps, tts;
+    var flash;
 
     // api to topoForce
     var api;
@@ -39,40 +39,40 @@
     var layerLookup = {
             host: {
                 endstation: 'pkt', // default, if host event does not define type
-                router:     'pkt',
-                bgpSpeaker: 'pkt'
+                router: 'pkt',
+                bgpSpeaker: 'pkt',
             },
             device: {
                 switch: 'pkt',
                 router: 'pkt',
                 roadm: 'opt',
-                otn: 'opt'
+                otn: 'opt',
             },
             link: {
                 hostLink: 'pkt',
                 direct: 'pkt',
                 indirect: '',
                 tunnel: '',
-                optical: 'opt'
-            }
+                optical: 'opt',
+            },
         },
         // order of layer cycling in button
         dispatch = [
             {
                 type: 'all',
                 action: function () { suppressLayers(false); },
-                msg: 'All Layers Shown'
+                msg: 'All Layers Shown',
             },
             {
                 type: 'pkt',
                 action: function () { showLayer('pkt'); },
-                msg: 'Packet Layer Shown'
+                msg: 'Packet Layer Shown',
             },
             {
                 type: 'opt',
                 action: function () { showLayer('opt'); },
-                msg: 'Optical Layer Shown'
-            }
+                msg: 'Optical Layer Shown',
+            },
         ],
         layer = 0;
 
@@ -123,18 +123,9 @@
     // === MODULE DEFINITION ===
 
     angular.module('ovTopo')
-        .factory('TopoFilterService',
-        ['$log', 'FnService',
-            'FlashService',
-            'TopoPanelService',
-            'TopoTrafficService',
-
-            function (_$log_, _fs_, _flash_, _tps_, _tts_) {
-                $log = _$log_;
-                fs = _fs_;
+        .factory('TopoFilterService', ['FlashService',
+            function (_flash_) {
                 flash = _flash_;
-                tps = _tps_;
-                tts = _tts_;
 
                 function initFilter(_api_) {
                     api = _api_;
@@ -145,7 +136,8 @@
 
                     clickAction: clickAction,
                     selected: selected,
-                    inLayer: inLayer
+                    inLayer: inLayer,
                 };
-            }]);
+            },
+        ]);
 }());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoForce.js b/web/gui/src/main/webapp/app/view/topo/topoForce.js
index 85aeee5..c7d1dca 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoForce.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoForce.js
@@ -31,42 +31,42 @@
         light: {
             baseColor: '#939598',
             inColor: '#66f',
-            outColor: '#f00'
+            outColor: '#f00',
         },
         dark: {
             // TODO : theme
             baseColor: '#939598',
             inColor: '#66f',
-            outColor: '#f00'
+            outColor: '#f00',
         },
         inWidth: 12,
-        outWidth: 10
+        outWidth: 10,
     };
 
     // internal state
-    var settings,   // merged default settings and options
-        force,      // force layout object
-        drag,       // drag behavior handler
+    var settings, // merged default settings and options
+        force, // force layout object
+        drag, // drag behavior handler
         network = {
             nodes: [],
             links: [],
             linksByDevice: {},
             lookup: {},
-            revLinkToKey: {}
+            revLinkToKey: {},
         },
-        lu,                     // shorthand for lookup
-        rlk,                    // shorthand for revLinktoKey
-        showHosts = false,      // whether hosts are displayed
-        showOffline = true,     // whether offline devices are displayed
-        nodeLock = false,       // whether nodes can be dragged or not (locked)
-        fTimer,                 // timer for delayed force layout
-        fNodesTimer,            // timer for delayed nodes update
-        fLinksTimer,            // timer for delayed links update
-        dim,                    // the dimensions of the force layout [w,h]
-        linkNums = [],          // array of link number labels
-        devIconDim = 36,        // node target dimension
-        devIconDimMin = 20,     // node minimum dimension when zoomed out
-        devIconDimMax = 40,     // node maximum dimension when zoomed in
+        lu, // shorthand for lookup
+        rlk, // shorthand for revLinktoKey
+        showHosts = false, // whether hosts are displayed
+        showOffline = true, // whether offline devices are displayed
+        nodeLock = false, // whether nodes can be dragged or not (locked)
+        fTimer, // timer for delayed force layout
+        fNodesTimer, // timer for delayed nodes update
+        fLinksTimer, // timer for delayed links update
+        dim, // the dimensions of the force layout [w,h]
+        linkNums = [], // array of link number labels
+        devIconDim = 36, // node target dimension
+        devIconDimMin = 20, // node minimum dimension when zoomed out
+        devIconDimMax = 40, // node maximum dimension when zoomed in
         portLabelDim = 30;
 
     // SVG elements;
@@ -83,23 +83,23 @@
             // note: key is node.class
             device: -8000,
             host: -5000,
-            _def_: -12000
+            _def_: -12000,
         },
         linkDistance: {
             // note: key is link.type
             direct: 100,
             optical: 120,
             hostLink: 3,
-            _def_: 50
+            _def_: 50,
         },
         linkStrength: {
             // note: key is link.type
             // range: {0.0 ... 1.0}
-            //direct: 1.0,
-            //optical: 1.0,
-            //hostLink: 1.0,
-            _def_: 1.0
-        }
+            // direct: 1.0,
+            // optical: 1.0,
+            // hostLink: 1.0,
+            _def_: 1.0,
+        },
     };
 
 
@@ -171,7 +171,7 @@
 
         lnk = tms.createHostLink(data);
         if (lnk) {
-            d.linkData = lnk;    // cache ref on its host
+            d.linkData = lnk; // cache ref on its host
             network.links.push(lnk);
             lu[d.ingress] = lnk;
             lu[d.egress] = lnk;
@@ -308,7 +308,7 @@
             network.linksByDevice[found].push(ldata);
             ldata.devicePair = found;
         } else {
-            network.linksByDevice[key] = [ ldata ];
+            network.linksByDevice[key] = [ldata];
             ldata.devicePair = key;
         }
     }
@@ -318,7 +318,7 @@
         ldata.fromTarget = link;
         rlk[link.id] = ldata.key;
         // possible solution to el being undefined in restyleLinkElement:
-        //_updateLinks();
+        // _updateLinks();
         restyleLinkElement(ldata);
     }
 
@@ -468,15 +468,15 @@
                 y: d.y,
                 equivLoc: {
                     lng: ll[0],
-                    lat: ll[1]
-                }
+                    lat: ll[1],
+                },
             };
         }
         d.metaUi = metaUi;
         wss.sendEvent('updateMeta', {
             id: d.id,
             class: d.class,
-            memento: metaUi
+            memento: metaUi,
         });
     }
 
@@ -557,7 +557,7 @@
     }
 
     function supAmt(less) {
-        return less ? "suppressed" : "suppressedmax";
+        return less ? 'suppressed' : 'suppressedmax';
     }
 
     function suppressLayers(b, less) {
@@ -665,8 +665,6 @@
     // IMPLEMENTATION NOTE: _updateNodes() should NOT stop, start, or resume
     //  the force layout; that needs to be determined and implemented elsewhere
     function _updateNodes() {
-
-        var scale = uplink.zoomer().scale();
         // select all the nodes in the layout:
         node = nodeG.selectAll('.node')
             .data(network.nodes, function (d) { return d.id; });
@@ -685,7 +683,7 @@
                     // Need to guard against NaN here ??
                     return sus.translate(d.x, d.y);
                 },
-                opacity: 0
+                opacity: 0,
             })
             .call(drag)
             .on('mouseover', tss.nodeMouseOver)
@@ -721,7 +719,7 @@
             x1: link.source.x,
             y1: link.source.y,
             x2: link.target.x,
-            y2: link.target.y
+            y2: link.target.y,
         };
     }
 
@@ -742,7 +740,7 @@
             x1: pos.x1 + (mult * dy / length),
             y1: pos.y1 + (mult * -dx / length),
             x2: pos.x2 + (mult * dy / length),
-            y2: pos.y2 + (mult * -dx / length)
+            y2: pos.y2 + (mult * -dx / length),
         };
     }
 
@@ -785,7 +783,7 @@
                 linkNums.push({
                     id: key,
                     num: numLinks,
-                    linkCoords: linkArr[0].position
+                    linkCoords: linkArr[0].position,
                 });
             } else {
                 linkSrcId = null;
@@ -834,14 +832,14 @@
                 x2: function (d) { return d.position.x2; },
                 y2: function (d) { return d.position.y2; },
                 stroke: linkConfig[th].inColor,
-                'stroke-width': linkConfig.inWidth
+                'stroke-width': linkConfig.inWidth,
             });
 
         // augment links
         entering.each(td3.linkEntering);
 
         // operate on both existing and new links:
-        //link.each(...)
+        // link.each(...)
 
         // add labels for how many links are in a thick line
         td3.applyNumLinkLabels(linkNums, numLinkLblsG);
@@ -858,7 +856,7 @@
             .duration(1500)
             .attr({
                 'stroke-dasharray': '3 12',
-                'stroke-width': linkConfig.outWidth
+                'stroke-width': linkConfig.outWidth,
             })
             .style('opacity', 0.0)
             .remove();
@@ -880,7 +878,7 @@
                 $timeout.cancel(fTimer);
             }
             fTimer = $timeout(function () {
-                $log.debug("Starting force-layout");
+                $log.debug('Starting force-layout');
                 force.start();
             }, 200);
         }
@@ -892,13 +890,13 @@
                 var dx = isNaN(d.x) ? 0 : d.x,
                     dy = isNaN(d.y) ? 0 : d.y;
                 return sus.translate(dx, dy);
-            }
+            },
         },
         linkAttr: {
             x1: function (d) { return d.position.x1; },
             y1: function (d) { return d.position.y1; },
             x2: function (d) { return d.position.x2; },
-            y2: function (d) { return d.position.y2; }
+            y2: function (d) { return d.position.y2; },
         },
         linkLabelAttr: {
             transform: function (d) {
@@ -906,8 +904,8 @@
                 if (lnk) {
                     return td3.transformLabel(lnk.position, d.key);
                 }
-            }
-        }
+            },
+        },
     };
 
     function tick() {
@@ -991,7 +989,7 @@
                     id: 'lab-' + d.key,
                     key: d.key,
                     label: d.label,
-                    ldata: d
+                    ldata: d,
                 });
             }
         });
@@ -1008,7 +1006,7 @@
             projection: uplink.projection,
             network: network,
             restyleLinkElement: restyleLinkElement,
-            removeLinkElement: removeLinkElement
+            removeLinkElement: removeLinkElement,
         };
     }
 
@@ -1024,7 +1022,7 @@
             updateLinkLabelModel: updateLinkLabelModel,
             linkConfig: function () { return linkConfig; },
             deviceScale: deviceScale,
-            linkWidthScale: linkWidthScale
+            linkWidthScale: linkWidthScale,
         };
     }
 
@@ -1033,7 +1031,7 @@
             node: function () { return node; },
             zoomingOrPanning: zoomingOrPanning,
             updateDeviceColors: td3.updateDeviceColors,
-            deselectAllLinks: tls.deselectAllLinks
+            deselectAllLinks: tls.deselectAllLinks,
         };
     }
 
@@ -1041,7 +1039,7 @@
         return {
             hovered: tss.hovered,
             somethingSelected: tss.somethingSelected,
-            selectOrder: tss.selectOrder
+            selectOrder: tss.selectOrder,
         };
     }
 
@@ -1057,15 +1055,15 @@
             updateNodes: updateNodes,
             supLayers: suppressLayers,
             unsupNode: unsuppressNode,
-            unsupLink: unsuppressLink
+            unsupLink: unsuppressLink,
         };
     }
 
     function mkObliqueApi(uplink, fltr) {
         return {
-            force: function() { return force; },
+            force: function () { return force; },
             zoomLayer: uplink.zoomLayer,
-            nodeGBBox: function() { return nodeG.node().getBBox(); },
+            nodeGBBox: function () { return nodeG.node().getBBox(); },
             node: function () { return node; },
             link: function () { return link; },
             linkLabel: function () { return linkLabel; },
@@ -1081,14 +1079,14 @@
             calcLinkPos: calcPosition,
             applyNumLinkLabels: function () {
                 td3.applyNumLinkLabels(linkNums, numLinkLblsG);
-            }
+            },
         };
     }
 
     function mkFilterApi() {
         return {
             node: function () { return node; },
-            link: function () { return link; }
+            link: function () { return link; },
         };
     }
 
@@ -1098,7 +1096,7 @@
             zoomer: uplink.zoomer(),
             network: network,
             portLabelG: function () { return portLabelG; },
-            showHosts: function () { return showHosts; }
+            showHosts: function () { return showHosts; },
         };
     }
 
@@ -1264,7 +1262,7 @@
                 addLink: addLink,
                 updateLink: updateLink,
                 removeLink: removeLink,
-                topoStartDone: topoStartDone
+                topoStartDone: topoStartDone,
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoInst.js b/web/gui/src/main/webapp/app/view/topo/topoInst.js
index 0ae50a2..9544d4e 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoInst.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoInst.js
@@ -36,7 +36,7 @@
         idIns = 'topo-p-instance',
         instOpts = {
             edge: 'left',
-            width: 20
+            width: 20,
         };
 
     // internal state
@@ -141,24 +141,24 @@
             instSvg = {
                 width: 170,
                 height: 85,
-                viewBox: '0 0 170 85'
+                viewBox: '0 0 170 85',
             },
             headRect = {
                 x: rox,
                 y: roy,
                 width: rw,
-                height: rhh
+                height: rhh,
             },
             bodyRect = {
                 x: rox,
                 y: roy + rhh,
                 width: rw,
-                height: rbh
+                height: rbh,
             },
             titleAttr = {
                 class: 'instTitle',
                 x: tx,
-                y: 27
+                y: 27,
             };
 
         var onoses = oiBox.el().selectAll('.onosInst')
@@ -225,7 +225,7 @@
                 svg.append('text').attr({
                     class: 'instLabel ' + id,
                     x: tx,
-                    y: ty
+                    y: ty,
                 }).text(label);
                 ty += 18;
             }
@@ -342,7 +342,7 @@
                 show: showInsts,
                 hide: hideInsts,
                 toggle: toggleInsts,
-                showMaster: function () { return oiShowMaster; }
+                showMaster: function () { return oiShowMaster; },
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoLink.js b/web/gui/src/main/webapp/app/view/topo/topoLink.js
index 45f3f05..c0faa8c 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoLink.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoLink.js
@@ -23,15 +23,15 @@
     'use strict';
 
     // injected refs
-    var $log, fs, sus, ts, flash, tss, tps, tov;
+    var $log, fs, flash, tss, tps, tov;
 
     // internal state
     var api,
         td3,
         network,
-        showPorts = true,       // enable port highlighting by default
-        enhancedLink = null,    // the link over which the mouse is hovering
-        selectedLinks = {};     // the links which are already selected
+        showPorts = true, // enable port highlighting by default
+        enhancedLink = null, // the link over which the mouse is hovering
+        selectedLinks = {}; // the links which are already selected
 
     // SVG elements;
     var svg;
@@ -45,7 +45,7 @@
             tr = api.zoomer.translate(),
             mx = (m[0] - tr[0]) / sc,
             my = (m[1] - tr[1]) / sc;
-        return {x: mx, y: my};
+        return { x: mx, y: my };
     }
 
 
@@ -74,7 +74,7 @@
                     return; // skip hidden hosts
                 }
 
-                dist = mdist({x: d.x, y: d.y}, mouse);
+                dist = mdist({ x: d.x, y: d.y }, mouse);
                 if (dist < minDist && dist < proximity) {
                     minDist = dist;
                     nearest = d;
@@ -101,7 +101,7 @@
                     (sq(y2-y1) + sq(x2-x1)),
                 x4 = x3 - k * (y2-y1),
                 y4 = y3 + k * (x2-x1);
-            return {x:x4, y:y4};
+            return { x: x4, y: y4 };
         }
 
         function lineHit(line, p, m) {
@@ -179,7 +179,7 @@
         point = locatePortLabel(d);
         angular.extend(point, {
             id: 'topo-port-tgt',
-            num: d.tgtPort
+            num: d.tgtPort,
         });
         data.push(point);
 
@@ -187,7 +187,7 @@
             point = locatePortLabel(d, 1);
             angular.extend(point, {
                 id: 'topo-port-src',
-                num: d.srcPort
+                num: d.srcPort,
             });
             data.push(point);
         }
@@ -209,7 +209,7 @@
             dy = farY - nearY,
             k = offset / dist(dx, dy);
 
-        return {x: k * dx + nearX, y: k * dy + nearY};
+        return { x: k * dx + nearX, y: k * dy + nearY };
     }
 
     function selectLink(ldata) {
@@ -248,7 +248,7 @@
         if (!d.el) return;
 
         d.el.classed('selected', true);
-        selectedLinks[d.key] = {key : d};
+        selectedLinks[d.key] = { key: d };
 
         tps.displayLink(d, tov.hooks.modifyLinkData);
         tps.displaySomething();
@@ -317,14 +317,12 @@
 
     angular.module('ovTopo')
         .factory('TopoLinkService',
-        ['$log', 'FnService', 'SvgUtilService', 'ThemeService', 'FlashService',
-            'TopoSelectService', 'TopoPanelService', 'TopoOverlayService',
+        ['$log', 'FnService', 'FlashService', 'TopoSelectService',
+        'TopoPanelService', 'TopoOverlayService',
 
-        function (_$log_, _fs_, _sus_, _ts_, _flash_, _tss_, _tps_, _tov_) {
+        function (_$log_, _fs_, _flash_, _tss_, _tps_, _tov_) {
             $log = _$log_;
             fs = _fs_;
-            sus = _sus_;
-            ts = _ts_;
             flash = _flash_;
             tss = _tss_;
             tps = _tps_;
@@ -351,7 +349,7 @@
                 initLink: initLink,
                 destroyLink: destroyLink,
                 togglePorts: togglePorts,
-                deselectAllLinks: deselectAllLinks
+                deselectAllLinks: deselectAllLinks,
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoMap.js b/web/gui/src/main/webapp/app/view/topo/topoMap.js
index a983f88..e44cf35 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoMap.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoMap.js
@@ -23,13 +23,13 @@
     'use strict';
 
     // injected refs
-    var $log, $loc, fs, flash, wss, tds, delegate;
+    var $log, wss, tds, delegate;
 
     // constants
     var mapRequest = 'mapSelectorRequest';
 
     // internal state
-    var order, maps, map, mapItems, tintCheck, msgHandlers;
+    var order, maps, map, mapItems, msgHandlers;
 
     // === ---------------------------
     // === Helper functions
@@ -60,7 +60,7 @@
             mapid: map.id,
             mapscale: map.scale,
             mapfilepath: map.filePath,
-            tint: 'off'
+            tint: 'off',
             // tint: tintCheck.property('checked') ? 'on' : 'off'
         };
         setMap(p);
@@ -98,7 +98,7 @@
         }
         p.append('span').text('Enable map tint');
 */
-        
+
         return content;
     }
 
@@ -131,19 +131,15 @@
 
     angular.module('ovTopo')
     .factory('TopoMapService',
-        ['$log', '$location', 'FnService', 'FlashService', 'WebSocketService',
-            'TopoDialogService',
+        ['$log', 'WebSocketService', 'TopoDialogService',
 
-        function (_$log_, _$loc_, _fs_, _flash_, _wss_, _tds_) {
+        function (_$log_, _wss_, _tds_) {
             $log = _$log_;
-            $loc = _$loc_;
-            fs = _fs_;
-            flash = _flash_;
             wss = _wss_;
             tds = _tds_;
 
             msgHandlers = {
-                mapSelectorResponse: handleMapResponse
+                mapSelectorResponse: handleMapResponse,
             };
 
             return {
@@ -154,7 +150,7 @@
                 openMapSelection: openMapSelection,
                 closeMapSelection: closeMapSelection,
                 start: start,
-                stop: stop
+                stop: stop,
             };
         }]);
 
diff --git a/web/gui/src/main/webapp/app/view/topo/topoModel.js b/web/gui/src/main/webapp/app/view/topo/topoModel.js
index d224e4f..caaf38b 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoModel.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoModel.js
@@ -38,7 +38,7 @@
     // shorthand
     var lu, rlk, nodes, links, linksByDevice;
 
-    var dim;    // dimensions of layout [w,h]
+    var dim; // dimensions of layout [w,h]
 
     // configuration 'constants'
     var defaultLinkType = 'direct',
@@ -90,14 +90,14 @@
         function rand() {
             return {
                 x: rnd.randDim(dim[0]),
-                y: rnd.randDim(dim[1])
+                y: rnd.randDim(dim[1]),
             };
         }
 
         function near(node) {
             return {
                 x: node.x + nearDist + rnd.spread(nearDist),
-                y: node.y + nearDist + rnd.spread(nearDist)
+                y: node.y + nearDist + rnd.spread(nearDist),
             };
         }
 
@@ -181,7 +181,7 @@
                 // hostlink target is edge switch
                 return lnk.target.online;
             },
-            linkWidth: function () { return 1; }
+            linkWidth: function () { return 1; },
         });
         return lnk;
     }
@@ -203,7 +203,7 @@
                 x1: 0,
                 y1: 0,
                 x2: 0,
-                y2: 0
+                y2: 0,
             },
 
             // functions to aggregate dual link state
@@ -230,7 +230,7 @@
                     wt = (t && t.linkWidth) || 0;
                 return lnk.position.multiLink ? 5 : Math.max(ws, wt);
             },
-            extra: link.extra
+            extra: link.extra,
         });
         return lnk;
     }
@@ -244,13 +244,13 @@
 
         if (sMiss || dMiss) {
             $log.error('Node(s) not on map for link:' + sMiss + dMiss);
-            //logicError('Node(s) not on map for link:\n' + sMiss + dMiss);
+            // logicError('Node(s) not on map for link:\n' + sMiss + dMiss);
             return null;
         }
 
         return {
             source: srcNode,
-            target: dstNode
+            target: dstNode,
         };
     }
 
@@ -306,7 +306,7 @@
                 result.updateWith = function (data) {
                     angular.extend(rawLink, data);
                     api.restyleLinkElement(ldata);
-                }
+                };
             }
         } else if (op === 'remove') {
             if (!ldata) {
@@ -349,7 +349,7 @@
                         } else {
                             api.removeLinkElement(ldata);
                         }
-                    }
+                    };
                 }
             }
         }
@@ -466,7 +466,7 @@
                 findHosts: findHosts,
                 findAttachedHosts: findAttachedHosts,
                 findAttachedLinks: findAttachedLinks,
-                findBadLinks: findBadLinks
-            }
+                findBadLinks: findBadLinks,
+            };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoOblique.js b/web/gui/src/main/webapp/app/view/topo/topoOblique.js
index 45ad2f0..6390758 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoOblique.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoOblique.js
@@ -24,7 +24,7 @@
     'use strict';
 
     // injected refs
-    var $log, fs, sus, flash;
+    var sus, flash;
 
     // api to topoForce
     var api;
@@ -43,14 +43,14 @@
      */
 
     // configuration
-    var xsky = -.7,     // x skew y factor
-        xsk = -35,      // x skew angle
-        ysc = .5,       // y scale
+    var xsky = -.7, // x skew y factor
+        xsk = -35, // x skew angle
+        ysc = .5, // y scale
         pad = 50,
         time = 1500,
         fill = {
-            pkt: 'rgba(130,130,170,0.3)',   // blue-ish
-            opt: 'rgba(170,130,170,0.3)'    // magenta-ish
+            pkt: 'rgba(130,130,170,0.3)', // blue-ish
+            opt: 'rgba(170,130,170,0.3)', // magenta-ish
         };
 
     // internal state
@@ -74,7 +74,7 @@
     }
 
     function noXform() {
-        return sus.skewX(0) + sus.translate(0,0) + sus.scale(1,1);
+        return sus.skewX(0) + sus.translate(0, 0) + sus.scale(1, 1);
     }
 
     function padBox(box, p) {
@@ -105,7 +105,7 @@
                 ay = xy.y - oy,
                 x = ax + ay * xsky,
                 y = (ay + yt) * ysc;
-            return {x: ox + x, y: oy + y};
+            return { x: ox + x, y: oy + y };
         };
 
         showPlane('pkt', box, -1);
@@ -136,7 +136,7 @@
 
         if (xffn) {
             api.nodes().forEach(function (d) {
-                var oldxy = {x: d.x, y: d.y},
+                var oldxy = { x: d.x, y: d.y },
                     coords = xffn(oldxy, dir(d));
                 d.oldxy = oldxy;
                 d.px = d.x = coords.x;
@@ -144,7 +144,7 @@
             });
         } else {
             api.nodes().forEach(function (d) {
-                var old = d.oldxy || {x: d.x, y: d.y};
+                var old = d.oldxy || { x: d.x, y: d.y };
                 d.px = d.x = old.x;
                 d.py = d.y = old.y;
                 delete d.oldxy;
@@ -191,7 +191,7 @@
             var id = planeId(tag),
                 g = api.zoomLayer().insert('g', '#topo-G')
                     .attr('id', id)
-                    .attr('transform', sus.translate(ox,oy));
+                    .attr('transform', sus.translate(ox, oy));
             g.append('rect')
                 .attr('fill', fill[tag])
                 .attr('opacity', 0);
@@ -220,11 +220,9 @@
 
 angular.module('ovTopo')
     .factory('TopoObliqueService',
-    ['$log', 'FnService', 'SvgUtilService', 'FlashService',
+    ['SvgUtilService', 'FlashService',
 
-    function (_$log_, _fs_, _sus_, _flash_) {
-        $log = _$log_;
-        fs = _fs_;
+    function (_sus_, _flash_) {
         sus = _sus_;
         flash = _flash_;
 
@@ -251,7 +249,7 @@
             destroyOblique: destroyOblique,
 
             isOblique: function () { return oblique; },
-            toggleOblique: toggleOblique
+            toggleOblique: toggleOblique,
         };
     }]);
 }());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoOverlay.js b/web/gui/src/main/webapp/app/view/topo/topoOverlay.js
index 00780d7..a2b52aa 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoOverlay.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoOverlay.js
@@ -126,7 +126,7 @@
             if (sicb && aicb && aicb(intentType)) {
                 result.push({
                     id: ovid,
-                    tt: ov.tooltip || '%' + ovid + '%'
+                    tt: ov.tooltip || '%' + ovid + '%',
                 });
             }
         });
@@ -145,7 +145,7 @@
                 tooltip: (ov.tooltip || '(no tooltip)'),
                 cb: function () {
                     tbSelection(ov.overlayId, switchFn);
-                }
+                },
             });
             map[ov.overlayId] = idx++;
         });
@@ -185,28 +185,28 @@
         showDeviceView: {
             gid: 'switch',
             tt: 'Show Device View',
-            path: 'device'
+            path: 'device',
         },
         showFlowView: {
             gid: 'flowTable',
             tt: 'Show Flow View for this Device',
-            path: 'flow'
+            path: 'flow',
         },
         showPortView: {
             gid: 'portTable',
             tt: 'Show Port View for this Device',
-            path: 'port'
+            path: 'port',
         },
         showGroupView: {
             gid: 'groupTable',
             tt: 'Show Group View for this Device',
-            path: 'group'
+            path: 'group',
         },
         showMeterView: {
             gid: 'meterTable',
             tt: 'Show Meter View for this Device',
-            path: 'meter'
-        }
+            path: 'meter',
+        },
     };
 
     // retrieves a button definition from the current overlay and generates
@@ -221,7 +221,7 @@
             id: current.mkId(id),
             gid: current.mkGid(b.gid),
             tt: b.tt,
-            cb: f
+            cb: f,
         } : null;
     }
 
@@ -238,7 +238,7 @@
                     id: 'core-' + id,
                     gid: gid,
                     tt: tt,
-                    cb: function () { ns.navTo(path, {devId: devId }); }
+                    cb: function () { ns.navTo(path, { devId: devId }); },
                 });
             } else if (btn = _getButtonDef(id, data)) {
                 tps.addAction(btn);
@@ -253,7 +253,7 @@
                 id: current.mkId(id),
                 gid: current.mkGid(b.gid),
                 cb: b.cb,
-                tt: b.tt
+                tt: b.tt,
             });
         }
     }
@@ -318,7 +318,7 @@
         tss = _tss_;
     }
 
-    //process highlight event with optional delay
+    // process highlight event with optional delay
     function showHighlights(data) {
         function doHighlight() {
             _showHighlights(data);
@@ -446,11 +446,11 @@
                     mouseOver: mouseOverHook,
                     mouseOut: mouseOutHook,
                     modifyLinkData: modifyLinkDataHook,
-                    showIntent: showIntentHook
+                    showIntent: showIntentHook,
                 },
 
-                showHighlights: showHighlights
-            }
+                showHighlights: showHighlights,
+            };
         }]);
 
-}());
\ No newline at end of file
+}());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoPanel.js b/web/gui/src/main/webapp/app/view/topo/topoPanel.js
index 2c358f3..b25f02e 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoPanel.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoPanel.js
@@ -30,17 +30,17 @@
         idSum = 'topo-p-summary',
         idDet = 'topo-p-detail',
         panelOpts = {
-            width: 260          // summary and detail panel width
+            width: 260, // summary and detail panel width
         },
-        sumMax = 226,           // summary panel max height
-        padTop = 16,            // summary panel padding below masthead
-        padding = 16,           // panel internal padding
+        sumMax = 226, // summary panel max height
+        padTop = 16, // summary panel padding below masthead
+        padding = 16, // panel internal padding
         padFudge = padTop + 2 * padding;
 
     // internal state
-    var useDetails = true,      // should we show details if we have 'em?
-        haveDetails = false,    // do we have details that we could show?
-        sumFromTop,             // summary panel distance from top of screen
+    var useDetails = true, // should we show details if we have 'em?
+        haveDetails = false, // do we have details that we could show?
+        sumFromTop, // summary panel distance from top of screen
         unbindWatch;
 
     // panels
@@ -140,7 +140,7 @@
             appendHeader: hAppend,
             appendBody: bAppend,
             appendFooter: fAppend,
-            adjustHeight: adjustHeight
+            adjustHeight: adjustHeight,
         };
     }
 
@@ -195,7 +195,7 @@
             function () {
                 return {
                     h: $window.innerHeight,
-                    w: $window.innerWidth
+                    w: $window.innerWidth,
                 };
             }, function () {
                 var h = summary.adjustHeight(sumFromTop, sumMax),
@@ -220,7 +220,7 @@
             table = summary.appendBody('table'),
             tbody = table.append('tbody');
 
-        gs.addGlyph(svg, 'bird', 24, 0, [1,1]);
+        gs.addGlyph(svg, 'bird', 24, 0, [1, 1]);
 
         title.text(data.title);
         listProps(tbody, data);
@@ -231,7 +231,7 @@
 
     var navPathIdKey = {
         device: 'devId',
-        host: 'hostId'
+        host: 'hostId',
     };
 
     function displaySingle(data) {
@@ -291,7 +291,7 @@
 
     var friendlyIndex = {
         device: 1,
-        host: 0
+        host: 0,
     };
 
     function friendly(d) {
@@ -306,7 +306,7 @@
 
     // provided to change presentation of internal type name
     var linkTypePres = {
-        hostLink: 'edge link'
+        hostLink: 'edge link',
     };
 
     function linkType(d) {
@@ -320,12 +320,12 @@
     var coreOrder = [
             'Type', 'Expected', '-',
             'A_type', 'A_id', 'A_label', 'A_port', '-',
-            'B_type', 'B_id', 'B_label', 'B_port'
+            'B_type', 'B_id', 'B_label', 'B_port',
         ],
         edgeOrder = [
             'Type', '-',
             'A_type', 'A_id', 'A_label', '-',
-            'B_type', 'B_id', 'B_label', 'B_port'
+            'B_type', 'B_id', 'B_label', 'B_port',
         ];
 
     function displayLink(data, modifyCb) {
@@ -344,7 +344,7 @@
         title.text('Link');
 
         var linkData = {
-            propOrder: order.slice(0),      // makes a copy of the array
+            propOrder: order.slice(0), // makes a copy of the array
             props: {
                 Type: linkType(data),
                 Expected: linkExpected(data),
@@ -357,8 +357,8 @@
                 B_type: data.target.class,
                 B_id: data.target.id,
                 B_label: friendly(data.target),
-                B_port: data.tgtPort
-            }
+                B_port: data.tgtPort,
+            },
         };
         listProps(tbody, modifyCb(linkData, data.extra));
 
@@ -422,7 +422,7 @@
 
     function hideSummaryPanel() {
         // instruct server to stop sending summary data
-        wss.sendEvent("cancelSummary");
+        wss.sendEvent('cancelSummary');
         summary.panel().hide(detail.up);
     }
 
@@ -443,7 +443,7 @@
     function augmentDetailPanel() {
         var d = detail,
             downPos = sumFromTop + sumMax + padFudge;
-        d.ypos = { up: sumFromTop, down: downPos, current: downPos};
+        d.ypos = { up: sumFromTop, down: downPos, current: downPos };
 
         d._move = function (y, cb) {
             var yp = d.ypos,
@@ -453,11 +453,11 @@
                 endCb = function () {
                     cb();
                     d.adjustHeight(d.ypos.current);
-                }
+                };
             } else {
                 endCb = function () {
                     d.adjustHeight(d.ypos.current);
-                }
+                };
             }
             if (yp.current !== y) {
                 yp.current = y;
@@ -552,7 +552,7 @@
                 addAction: addAction,
 
                 detailVisible: function () { return detail.panel().isVisible(); },
-                summaryVisible: function () { return summary.panel().isVisible(); }
+                summaryVisible: function () { return summary.panel().isVisible(); },
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoProtectedIntent.js b/web/gui/src/main/webapp/app/view/topo/topoProtectedIntent.js
index 5ecded5..085ff4b 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoProtectedIntent.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoProtectedIntent.js
@@ -23,7 +23,7 @@
     'use strict';
 
     // injected refs
-    var $log, fs, flash, wss, api;
+    var flash, wss;
 
     // internal state
     var showingProtectedIntent = null;
@@ -54,21 +54,20 @@
 
     angular.module('ovTopo')
     .factory('TopoProtectedIntentsService',
-        ['$log', 'FnService', 'FlashService', 'WebSocketService',
+        ['FlashService', 'WebSocketService',
 
-        function (_$log_, _fs_, _flash_, _wss_) {
-            $log = _$log_;
-            fs = _fs_;
+        function (_flash_, _wss_) {
             flash = _flash_;
             wss = _wss_;
 
             return {
-                initProtectedIntents: function (_api_) { api = _api_; },
+                // TODO: Remove references
+                initProtectedIntents: function (_api_) {},
                 destroyProtectedIntents: function () { },
 
                 // invoked from toolbar overlay buttons or keystrokes
                 cancelHighlights: cancelHighlights,
-                showProtectedIntent: showProtectedIntent
+                showProtectedIntent: showProtectedIntent,
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoProtectedIntentOverlay.js b/web/gui/src/main/webapp/app/view/topo/topoProtectedIntentOverlay.js
index 144e0b4..3cfea34 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoProtectedIntentOverlay.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoProtectedIntentOverlay.js
@@ -38,12 +38,12 @@
         tooltip: 'Protected Intents Overlay',
 
         activate: function () {
-            $log.debug("Protected Intent overlay ACTIVATED");
+            $log.debug('Protected Intent overlay ACTIVATED');
         },
 
         deactivate: function () {
             tpis.cancelHighlights();
-            $log.debug("Protected Intent DEACTIVATED");
+            $log.debug('Protected Intent DEACTIVATED');
         },
 
         hooks: {
@@ -60,8 +60,8 @@
             showIntent: function (info) {
                 $log.debug('^^ topoProtectedIntentsOverlay.showintent() ^^', info);
                 tpis.showProtectedIntent(info);
-            }
-        }
+            },
+        },
     };
 
     // invoke code to register with the overlay service
diff --git a/web/gui/src/main/webapp/app/view/topo/topoSelect.js b/web/gui/src/main/webapp/app/view/topo/topoSelect.js
index 5fbb700..1309a66 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoSelect.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoSelect.js
@@ -23,7 +23,7 @@
     'use strict';
 
     // injected refs
-    var $log, fs, wss, tov, tps, tts, ns, sus, tpis;
+    var fs, wss, tov, tps, tts, sus;
 
     // api to topoForce
     var api;
@@ -37,11 +37,11 @@
     // internal state
     var hovered, selections, selectOrder, consumeClick;
 
-    function setInitialState () {
-        hovered = null;         // the node over which the mouse is hovering
-        selections = {};        // currently selected nodes (by id)
-        selectOrder = [];       // the order in which we made selections
-        consumeClick = false;   // used to coordinate with SVG click handler
+    function setInitialState() {
+        hovered = null; // the node over which the mouse is hovering
+        selections = {}; // currently selected nodes (by id)
+        selectOrder = []; // the order in which we made selections
+        consumeClick = false; // used to coordinate with SVG click handler
     }
 
     // ==========================
@@ -70,7 +70,7 @@
                 tov.hooks.mouseOver({
                     id: m.id,
                     class: m.class,
-                    type: m.type
+                    type: m.type,
                 });
             }
         }
@@ -185,7 +185,7 @@
     function requestDetails(data) {
         wss.sendEvent('requestDetails', {
             id: data.id,
-            class: data.class
+            class: data.class,
         });
     }
 
@@ -210,7 +210,7 @@
     function singleSelect() {
         var data = getSel(0).obj;
 
-        //the link details are already taken care of in topoLink.js
+        // the link details are already taken care of in topoLink.js
         if (data.class === 'link') {
             return;
         }
@@ -235,14 +235,14 @@
                     id: 'host-flow-btn',
                     gid: 'endstation',
                     cb: tts.addHostIntent,
-                    tt: 'Create Host-to-Host Flow'
+                    tt: 'Create Host-to-Host Flow',
                 });
             } else if (nSel() >= 2) {
                 tps.addAction({
                     id: 'mult-src-flow-btn',
                     gid: 'flows',
                     cb: tts.addMultiSourceIntent,
-                    tt: 'Create Multi-Source Flow'
+                    tt: 'Create Multi-Source Flow',
                 });
             }
         }
@@ -295,7 +295,7 @@
         return {
             devices: devices,
             hosts: hosts,
-            types: types
+            types: types,
         };
     }
 
@@ -304,20 +304,16 @@
 
     angular.module('ovTopo')
     .factory('TopoSelectService',
-        ['$log', 'FnService', 'WebSocketService', 'TopoOverlayService',
-            'TopoPanelService', 'TopoTrafficService', 'NavService',
-            'SvgUtilService', 'TopoProtectedIntentsService',
+        ['FnService', 'WebSocketService', 'TopoOverlayService',
+        'TopoPanelService', 'TopoTrafficService', 'SvgUtilService',
 
-        function (_$log_, _fs_, _wss_, _tov_, _tps_, _tts_, _ns_, _sus_, _tpis_) {
-            $log = _$log_;
+        function (_fs_, _wss_, _tov_, _tps_, _tts_, _sus_) {
             fs = _fs_;
             wss = _wss_;
             tov = _tov_;
             tps = _tps_;
             tts = _tts_;
-            ns = _ns_;
             sus = _sus_;
-            tpis= _tpis_;
 
             function initSelect(_api_) {
                 api = _api_;
@@ -347,7 +343,7 @@
 
                 clickConsumed: clickConsumed,
                 selectionContext: selectionContext,
-                reselect: reselect
+                reselect: reselect,
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoSprite.js b/web/gui/src/main/webapp/app/view/topo/topoSprite.js
index e17e74c..756aed5 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoSprite.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoSprite.js
@@ -23,11 +23,11 @@
     'use strict';
 
     // injected refs
-    var $log, $http, fs, gs, sus, wss;
+    var $log, fs, gs, sus, wss;
 
     // constants
     var tssid = 'TopoSpriteService: ',
-        fontsize = 20;  // default font size 20pt.
+        fontsize = 20; // default font size 20pt.
 
     // internal state
     var spriteLayer, defsElement;
@@ -76,9 +76,9 @@
     function doSprite(spr, def, pathmeta) {
         var pmeta = pathmeta[def.path],
             c = spr.class || 'gray1',
-            p = spr.pos || [0,0],
+            p = spr.pos || [0, 0],
             lab = spr.label,
-            dim = def.dim || [40,40],
+            dim = def.dim || [40, 40],
             w = dim[0],
             h = dim[1],
             dy = def.labelyoff || 1,
@@ -97,7 +97,7 @@
         attr = {
             width: w,
             height: h,
-            'xlink:href': '#' + pmeta.u
+            'xlink:href': '#' + pmeta.u,
         };
 
         use = g.append('use').attr(attr);
@@ -113,7 +113,7 @@
                     width: w,
                     height: h,
                     'xlink:href': '#' + pmeta.u,
-                    transform: sus.translate(v.pos)
+                    transform: sus.translate(v.pos),
                 };
                 use = g.append('use').attr(attr);
                 applyStrokeStyle(pmeta.s, use);
@@ -130,9 +130,10 @@
 
     function doLabel(label) {
         var c = label.class || 'gray1',
-            p = label.pos || [0,0],
-            sz = label.size || 1.0,
-            g = spriteLayer.append('g')
+            p = label.pos || [0, 0],
+            sz = label.size || 1.0;
+
+            spriteLayer.append('g')
                 .classed(c, true)
                 .attr('transform', sus.translate(p))
                 .append('text')
@@ -174,7 +175,7 @@
         load = data.load;
         pfx = tssid + '[' + name + ']: ';
 
-        $log.debug("Loading sprites...[" + name + "]", desc);
+        $log.debug('Loading sprites...[' + name + ']', desc);
 
         function no(what) {
             warn.push(pfx + 'No ' + what + ' property defined');
@@ -195,7 +196,7 @@
         paths.forEach(function (p) {
             pathmeta[p.tag] = {
                 s: p.stroke,
-                u: p.glyph || 'spr_' + p.tag
+                u: p.glyph || 'spr_' + p.tag,
             };
         });
 
@@ -233,7 +234,7 @@
         $log.info(tssid + 'Requesting sprite definition ['+name+']...');
 
         wss.sendEvent('spriteListRequest');
-        wss.sendEvent('spriteDataRequest', {name: name});
+        wss.sendEvent('spriteDataRequest', { name: name });
     }
 
     // === -----------------------------------------------------
@@ -241,12 +242,11 @@
 
     angular.module('ovTopo')
     .factory('TopoSpriteService',
-        ['$log', '$http', 'FnService', 'GlyphService',
+        ['$log', 'FnService', 'GlyphService',
             'SvgUtilService', 'WebSocketService',
 
-        function (_$log_, _$http_, _fs_, _gs_, _sus_, _wss_) {
+        function (_$log_, _fs_, _gs_, _sus_, _wss_) {
             $log = _$log_;
-            $http = _$http_;
             fs = _fs_;
             gs = _gs_;
             sus = _sus_;
@@ -255,7 +255,7 @@
             return {
                 loadSprites: loadSprites,
                 spriteListResponse: inList,
-                spriteDataResponse: inData
+                spriteDataResponse: inData,
             };
         }]);
 
diff --git a/web/gui/src/main/webapp/app/view/topo/topoToolbar.js b/web/gui/src/main/webapp/app/view/topo/topoToolbar.js
index 76af3d7..e9d9752 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoToolbar.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoToolbar.js
@@ -42,7 +42,7 @@
 
     // key to button mapping data
     var k2b = {
-        O: { id: 'summary-tog', gid: 'm_summary', isel: true},
+        O: { id: 'summary-tog', gid: 'm_summary', isel: true },
         I: { id: 'instance-tog', gid: 'm_uiAttached', isel: true },
         D: { id: 'details-tog', gid: 'm_details', isel: true },
         H: { id: 'hosts-tog', gid: 'm_endstation', isel: false },
@@ -57,12 +57,12 @@
         L: { id: 'cycleLabels-btn', gid: 'm_cycleLabels' },
         R: { id: 'resetZoom-btn', gid: 'm_resetZoom' },
 
-        E: { id: 'eqMaster-btn', gid: 'm_eqMaster' }
+        E: { id: 'eqMaster-btn', gid: 'm_eqMaster' },
     };
 
     var prohibited = [
         'T', 'backSlash', 'slash',
-        'X' // needed until we re-instate X above.
+        'X', // needed until we re-instate X above.
     ];
     prohibited = prohibited.concat(d3.map(k2b).keys());
 
@@ -79,8 +79,8 @@
             porthl: 1,
             bg: 0,
             spr: 0,
-            ovid: 'traffic',   // default to traffic overlay
-            toolbar: 0
+            ovid: 'traffic', // default to traffic overlay
+            toolbar: 0,
         },
         prefsMap = {
             summary: 'O',
@@ -90,7 +90,7 @@
             offdev: 'M',
             porthl: 'P',
             bg: 'B',
-            spr: 'S'
+            spr: 'S',
             // NOTE: toolbar state is handled separately
         };
 
@@ -125,12 +125,11 @@
     function initKeyData() {
         // TODO: use angular forEach instead of d3.map
         keyData = d3.map(k2b);
-        keyData.forEach(function(key, value) {
+        keyData.forEach(function (key, value) {
             var data = api.getActionEntry(key);
-
             value.key = key;
-            value.cb = data[0];     // on-click callback
-            value.tt = data[1];     // tooltip (may be a function)
+            value.cb = data[0]; // on-click callback
+            value.tt = data[1] + ' (' + key + ')'; // tooltip
         });
     }
 
@@ -172,7 +171,7 @@
     }
 
     function addSecondRow() {
-        //addToggle('X');
+        // addToggle('X');
         addToggle('Z');
         addButton('N');
         addButton('L');
@@ -190,7 +189,7 @@
                 tooltip: 'No Overlay',
                 cb: function () {
                     tov.tbSelection(null, switchOverlayActions);
-                }
+                },
             }];
         ovIndex = tov.augmentRbset(rset, switchOverlayActions);
         ovRset = toolbar.addRadioSet('topo-overlays', rset);
@@ -331,7 +330,7 @@
                 toggleToolbar: toggleToolbar,
                 selectOverlay: selectOverlay,
                 defaultPrefs: defaultPrefsState,
-                fnkey: fnkey
+                fnkey: fnkey,
             };
         }]);
-}());
\ No newline at end of file
+}());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoTraffic.js b/web/gui/src/main/webapp/app/view/topo/topoTraffic.js
index b4aa06a..e6b66fc 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoTraffic.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoTraffic.js
@@ -23,7 +23,7 @@
     'use strict';
 
     // injected refs
-    var $log, fs, flash, wss, api;
+    var $log, flash, wss, api;
 
     /*
        API to topoForce
@@ -35,12 +35,12 @@
     var allTrafficTypes = [
             'flowStatsBytes',
             'portStatsBitSec',
-            'portStatsPktSec'
+            'portStatsPktSec',
         ],
         allTrafficMsgs = [
             'Flow Stats (bytes)',
             'Port Stats (bits / second)',
-            'Port Stats (packets / second)'
+            'Port Stats (packets / second)',
         ];
 
     // internal state
@@ -49,7 +49,6 @@
         allTrafficIndex = 0;
 
 
-
     // === -----------------------------------------------------
     //  Helper functions
 
@@ -78,7 +77,7 @@
         if (api.somethingSelected()) {
             wss.sendEvent('requestDeviceLinkFlows', {
                 ids: api.selectOrder(),
-                hover: hoverValid() ? hov.id : ''
+                hover: hoverValid() ? hov.id : '',
             });
         }
     }
@@ -97,7 +96,7 @@
         if (api.somethingSelected()) {
             wss.sendEvent('requestRelatedIntents', {
                 ids: api.selectOrder(),
-                hover: hoverValid() ? hov.id : ''
+                hover: hoverValid() ? hov.id : '',
             });
         }
     }
@@ -121,19 +120,19 @@
         trafficMode = 'allFlowPort';
         hoverMode = null;
         wss.sendEvent('requestAllTraffic', {
-            trafficType: allTrafficTypes[allTrafficIndex]
+            trafficType: allTrafficTypes[allTrafficIndex],
         });
         flash.flash(allTrafficMsgs[allTrafficIndex]);
         allTrafficIndex = (allTrafficIndex + 1) % 3;
     }
 
-    function showDeviceLinkFlows () {
+    function showDeviceLinkFlows() {
         trafficMode = hoverMode = 'flows';
         requestDeviceLinkFlows();
         flash.flash('Device Flows');
     }
 
-    function showRelatedIntents () {
+    function showRelatedIntents() {
         trafficMode = hoverMode = 'intents';
         requestRelatedIntents();
         flash.flash('Related Paths');
@@ -175,25 +174,25 @@
     // === ------------------------------------------------------
     // action buttons on detail panel (multiple selection)
 
-    function addHostIntent () {
+    function addHostIntent() {
         var so = api.selectOrder();
         wss.sendEvent('addHostIntent', {
             one: so[0],
             two: so[1],
-            ids: so
+            ids: so,
         });
         trafficMode = 'intents';
         hoverMode = null;
         flash.flash('Host-to-Host flow added');
     }
 
-    function removeIntent (d) {
+    function removeIntent(d) {
         $log.debug('Entering removeIntent');
         wss.sendEvent('removeIntent', {
             appId: d.appId,
             appName: d.appName,
             key: d.key,
-            purge: d.intentPurge
+            purge: d.intentPurge,
         });
         trafficMode = 'intents';
         hoverMode = null;
@@ -201,32 +200,32 @@
         flash.flash('Intent ' + txt);
     }
 
-    function resubmitIntent (d) {
+    function resubmitIntent(d) {
         $log.debug('Entering resubmitIntent');
         wss.sendEvent('resubmitIntent', {
             appId: d.appId,
             appName: d.appName,
             key: d.key,
-            purge: d.intentPurge
+            purge: d.intentPurge,
         });
         trafficMode = 'intents';
         hoverMode = null;
         flash.flash('Intent resubmitted');
     }
 
-    function addMultiSourceIntent () {
+    function addMultiSourceIntent() {
         var so = api.selectOrder();
         wss.sendEvent('addMultiSourceIntent', {
             src: so.slice(0, so.length - 1),
             dst: so[so.length - 1],
-            ids: so
+            ids: so,
         });
         trafficMode = 'intents';
         hoverMode = null;
         flash.flash('Multi-Source flow added');
     }
 
-    function removeIntents () {
+    function removeIntents() {
         $log.debug('Entering removeIntents');
         wss.sendEvent('removeIntents', {});
         trafficMode = 'intents';
@@ -240,11 +239,10 @@
 
     angular.module('ovTopo')
     .factory('TopoTrafficService',
-        ['$log', 'FnService', 'FlashService', 'WebSocketService',
+        ['$log', 'FnService', 'WebSocketService',
 
-        function (_$log_, _fs_, _flash_, _wss_) {
+        function (_$log_, _flash_, _wss_) {
             $log = _$log_;
-            fs = _fs_;
             flash = _flash_;
             wss = _wss_;
 
@@ -271,7 +269,7 @@
                 addMultiSourceIntent: addMultiSourceIntent,
                 removeIntent: removeIntent,
                 resubmitIntent: resubmitIntent,
-                removeIntents: removeIntents
+                removeIntents: removeIntents,
             };
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/view/topo/topoTrafficNew.js b/web/gui/src/main/webapp/app/view/topo/topoTrafficNew.js
index 9ae9b0f..687fdab 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoTrafficNew.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoTrafficNew.js
@@ -41,12 +41,12 @@
         // NOTE: Traffic glyphs already installed as part of the base ONOS set.
 
         activate: function () {
-            $log.debug("Traffic overlay ACTIVATED");
+            $log.debug('Traffic overlay ACTIVATED');
         },
 
         deactivate: function () {
             tts.cancelTraffic(true);
-            $log.debug("Traffic overlay DEACTIVATED");
+            $log.debug('Traffic overlay DEACTIVATED');
         },
 
         // detail panel button definitions
@@ -55,14 +55,14 @@
             showDeviceFlows: {
                 gid: 'm_flows',
                 tt: 'Show Device Flows',
-                cb: function (data) { tts.showDeviceLinkFlows(); }
+                cb: function (data) { tts.showDeviceLinkFlows(); },
             },
 
             showRelatedTraffic: {
                 gid: 'm_relatedIntents',
                 tt: 'Show Related Traffic',
-                cb: function (data) { tts.showRelatedIntents(); }
-            }
+                cb: function (data) { tts.showRelatedIntents(); },
+            },
         },
 
         // key bindings for traffic overlay toolbar buttons
@@ -71,43 +71,43 @@
             0: {
                 cb: function () { tts.cancelTraffic(true); },
                 tt: 'Cancel traffic monitoring',
-                gid: 'm_xMark'
+                gid: 'm_xMark',
             },
 
             A: {
                 cb: function () { tts.showAllTraffic(); },
                 tt: 'Monitor all traffic',
-                gid: 'm_allTraffic'
+                gid: 'm_allTraffic',
             },
             F: {
                 cb: function () { tts.showDeviceLinkFlows(); },
                 tt: 'Show device link flows',
-                gid: 'm_flows'
+                gid: 'm_flows',
             },
             V: {
                 cb: function () { tts.showRelatedIntents(); },
                 tt: 'Show all related intents',
-                gid: 'm_relatedIntents'
+                gid: 'm_relatedIntents',
             },
             leftArrow: {
                 cb: function () { tts.showPrevIntent(); },
                 tt: 'Show previous related intent',
-                gid: 'm_prev'
+                gid: 'm_prev',
             },
             rightArrow: {
                 cb: function () { tts.showNextIntent(); },
                 tt: 'Show next related intent',
-                gid: 'm_next'
+                gid: 'm_next',
             },
             W: {
                 cb: function () { tts.showSelectedIntentTraffic(); },
                 tt: 'Monitor traffic of selected intent',
-                gid: 'm_intentTraffic'
+                gid: 'm_intentTraffic',
             },
 
             _keyOrder: [
-                '0', 'A', 'F', 'V', 'leftArrow', 'rightArrow', 'W'
-            ]
+                '0', 'A', 'F', 'V', 'leftArrow', 'rightArrow', 'W',
+            ],
         },
 
         hooks: {
@@ -146,8 +146,8 @@
             showIntent: function (info) {
                 $log.debug('^^ trafficOverlay.showintent() ^^', info);
                 tts.selectIntent(info);
-            }
-        }
+            },
+        },
     };
 
     // invoke code to register with the overlay service
diff --git a/web/gui/src/main/webapp/app/view/topo2/.eslintrc.js b/web/gui/src/main/webapp/app/view/topo2/.eslintrc.js
deleted file mode 100644
index 8432f7a..0000000
--- a/web/gui/src/main/webapp/app/view/topo2/.eslintrc.js
+++ /dev/null
@@ -1,21 +0,0 @@
-module.exports = {
-    "extends": "google",
-    "installedESLint": true,
-    "globals": {
-        "angular": true,
-        "d3": true,
-        "_": true
-    },
-    "rules": {
-        "brace-style": 0,
-        "no-void": 0,
-        "require-jsdoc": 0,
-        "padded-blocks": 0,
-        "quote-props": 0,
-        "no-warning-comments": 0,
-        "object-curly-spacing": ["error", "always"],
-        "indent": ["error", 4],
-        "one-var": 0,
-        "space-before-function-paren": ["error", { "anonymous": "always", "named": "never" }]
-    }
-};
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2.js b/web/gui/src/main/webapp/app/view/topo2/topo2.js
index 4b92d61..8559811 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2.js
@@ -22,10 +22,10 @@
 
 (function () {
     'use strict';
-    
+
     // references to injected services
     var $scope, $log, fs, mast, ks, wss,
-        gs, sus, ps, t2es, t2fs, t2is, t2bcs, t2kcs, t2ms, t2mcs, t2zs;
+        gs, sus, t2es, t2fs, t2is, t2bcs, t2kcs, t2ms, t2zs;
 
     // DOM elements
     var ovtopo2, svg, defs, zoomLayer, forceG;
@@ -59,11 +59,11 @@
         var sc = zoomer.scale(),
             tr = zoomer.translate(),
             metaUi = isNaN(sc) ? {
-                useCfg: 1
+                useCfg: 1,
             } : {
                 scale: sc,
                 offsetX: tr[0],
-                offsetY: tr[1]
+                offsetY: tr[1],
             };
 
         // Allow map service to react to change in zoom parameters
@@ -74,7 +74,7 @@
 
         wss.sendEvent('updateMeta2', {
             id: 'layoutZoom',
-            memento: metaUi
+            memento: metaUi,
         });
     }
 
@@ -85,7 +85,7 @@
             svg: svg,
             zoomLayer: zoomLayer,
             zoomEnabled: zoomEnabled,
-            zoomCallback: zoomCallback
+            zoomCallback: zoomCallback,
         });
     }
 
@@ -95,22 +95,20 @@
     .controller('OvTopo2Ctrl', [
         '$scope', '$log', '$location',
         'FnService', 'MastService', 'KeyService', 'GlyphService', 'MapService',
-        'SvgUtilService', 'FlashService', 'WebSocketService',
-        'PrefsService', 'ThemeService',
+        'SvgUtilService', 'FlashService', 'WebSocketService', 'ThemeService',
         'Topo2EventService', 'Topo2ForceService', 'Topo2InstanceService',
         'Topo2BreadcrumbService', 'Topo2KeyCommandService', 'Topo2MapService',
-        'Topo2MapConfigService', 'Topo2ZoomService', 'Topo2SpriteLayerService',
+        'Topo2ZoomService', 'Topo2SpriteLayerService',
         'Topo2SummaryPanelService', 'Topo2DeviceDetailsPanel', 'Topo2ToolbarService',
         'Topo2NoDevicesConnectedService', 'Topo2OverlayService',
 
         function (
             _$scope_, _$log_, _$loc_,
             _fs_, _mast_, _ks_, _gs_, _ms_,
-            _sus_, _flash_, _wss_,
-            _ps_, _th_,
+            _sus_, _flash_, _wss_, _th_,
             _t2es_, _t2fs_, _t2is_,
             _t2bcs_, _t2kcs_, _t2ms_,
-            _t2mcs_, _t2zs_, t2sls,
+            _t2zs_, t2sls,
             summaryPanel, detailsPanel, t2tbs, t2ndcs, t2os
         ) {
             var params = _$loc_.search(),
@@ -118,7 +116,7 @@
                 wh,
                 uplink = {
                     zoomLayer: function () { return zoomLayer; },
-                    zoomer: function () { return zoomer; }
+                    zoomer: function () { return zoomer; },
                 };
 
             $scope = _$scope_;
@@ -130,7 +128,6 @@
             wss = _wss_;
             gs = _gs_;
             sus = _sus_;
-            ps = _ps_;
 
             t2es = _t2es_;
             t2fs = _t2fs_;
@@ -138,7 +135,6 @@
             t2bcs = _t2bcs_;
             t2kcs = _t2kcs_;
             t2ms = _t2ms_;
-            t2mcs = _t2mcs_;
             t2zs = _t2zs_;
 
             // capture selected intent parameters (if they are set in the
@@ -152,7 +148,7 @@
                     key: params.intentKey,
                     appId: params.intentAppId,
                     appName: params.intentAppName,
-                    intentType: params.intentType
+                    intentType: params.intentType,
                 };
             }
 
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Background.js b/web/gui/src/main/webapp/app/view/topo2/topo2Background.js
index 8d63bb0..89b91cf 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Background.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Background.js
@@ -116,10 +116,10 @@
                     resetZoom: function () {
                         var pan = zoomPan(this.zoomData, true);
                         t2zs.panAndZoom(pan, zoomScale(this.zoomData, true), 1000);
-                    }
+                    },
                 });
 
                 return instance || new BackgroundView();
-            }
+            },
         ]);
-})();
\ No newline at end of file
+})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Badge.js b/web/gui/src/main/webapp/app/view/topo2/topo2Badge.js
index 7e45557..57cd72d 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Badge.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Badge.js
@@ -20,4 +20,4 @@
  usage: new NodeBadge({text, icon}, DOM Element, Node);
  */
 
-// TODO: Create a badge class
\ No newline at end of file
+// TODO: Create a badge class
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Breadcrumb.js b/web/gui/src/main/webapp/app/view/topo2/topo2Breadcrumb.js
index 16f53fd..6b39f3e 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Breadcrumb.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Breadcrumb.js
@@ -23,12 +23,11 @@
 
     'use strict';
 
-    var $log, $loc, wss, t2rns;
+    var t2rns;
 
     // Internal
     var breadcrumbContainer,
-        breadcrumbs,
-        layout;
+        breadcrumbs;
 
     function init() {
         breadcrumbs = [];
@@ -96,27 +95,21 @@
             });
     }
 
-    function addLayout(_layout_) {
-        layout = _layout_;
-    }
+    // TODO: Remove references
+    function addLayout(_layout_) {}
 
     angular.module('ovTopo2')
     .factory('Topo2BreadcrumbService', [
-        '$log', '$location', 'WebSocketService',
         'Topo2RegionNavigationService',
-        function (_$log_, _$loc_, _wss_, _t2rns_) {
-
-            $log = _$log_;
-            $loc = _$loc_;
-            wss = _wss_;
+        function (_t2rns_) {
             t2rns = _t2rns_;
 
             return {
                 init: init,
                 addBreadcrumb: addBreadcrumb,
                 addLayout: addLayout,
-                hide: hide
+                hide: hide,
             };
-        }
+        },
     ]);
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Collection.js b/web/gui/src/main/webapp/app/view/topo2/topo2Collection.js
index 89d92d3..12d8e60 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Collection.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Collection.js
@@ -116,7 +116,7 @@
             return this.models.map(function (model) {
                 return model.toJSON(options);
             });
-        }
+        },
     };
 
     angular.module('ovTopo2')
@@ -126,7 +126,7 @@
                 Collection.extend = fn.extend;
                 Model = _Model_;
                 return Collection;
-            }
+            },
         ]);
 
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2DetailsPanel.js b/web/gui/src/main/webapp/app/view/topo2/topo2DetailsPanel.js
index f77dbbf..921ebef 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2DetailsPanel.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2DetailsPanel.js
@@ -43,7 +43,7 @@
         panelPadding = 64,
         panelSpacing = 20,
         panelOpts = {
-            width: 260          // summary and detail panel width
+            width: 260, // summary and detail panel width
         };
 
     function getInstance(_summaryPanel_) {
@@ -54,7 +54,7 @@
         summaryPanel = _summaryPanel_;
 
         var options = angular.extend({}, panelOpts, {
-            class: className
+            class: className,
         });
 
         Panel = Panel.extend({
@@ -84,7 +84,7 @@
                 detailsPanel.el.el()
                     .style('top', panelPadding + position + 'px');
                 detailsPanel.el.show();
-            }
+            },
         });
 
         detailsPanel = new Panel(id, options);
@@ -94,7 +94,6 @@
     }
 
 
-
     angular.module('ovTopo2')
     .factory('Topo2DetailsPanelService', [
         'Topo2PanelService',
@@ -102,6 +101,6 @@
             Panel = _ps_;
 
             return getInstance;
-        }
+        },
     ]);
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Device.js b/web/gui/src/main/webapp/app/view/topo2/topo2Device.js
index 0e78d3c..ebed084 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Device.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Device.js
@@ -26,13 +26,13 @@
 
     var remappedDeviceTypes = {
         switch: 'm_switch',
-        virtual: 'cord'
+        virtual: 'cord',
     };
 
     function createDeviceCollection(data) {
 
         var DeviceCollection = Collection.extend({
-            model: Model
+            model: Model,
         });
 
         var devices = [];
@@ -58,7 +58,7 @@
                     nodeType: 'device',
                     multiSelectEnabled: true,
                     events: {
-                        'click': 'onClick'
+                        'click': 'onClick',
                     },
 
                     initialize: function () {
@@ -88,7 +88,7 @@
                         var id = this.mastershipService.mastership(),
                             suppress = id ? this.get('master') !== id : false;
 
-                        this.set({mastership: suppress});
+                        this.set({ mastership: suppress });
                     },
                     setOfflineVisibility: function () {
                         var showOffline = ps.getPrefs('topo2_prefs')['offline_devices'],
@@ -107,13 +107,13 @@
                             .style('stroke-fill', '#555')
                             .style('fill', '#888')
                             .style('opacity', 0.5);
-                    }
+                    },
                 });
 
                 return {
-                    createDeviceCollection: createDeviceCollection
+                    createDeviceCollection: createDeviceCollection,
                 };
-            }
+            },
         ]);
 
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2DeviceDetailsPanel.js b/web/gui/src/main/webapp/app/view/topo2/topo2DeviceDetailsPanel.js
index 962bd8c..bcf0469 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2DeviceDetailsPanel.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2DeviceDetailsPanel.js
@@ -32,35 +32,35 @@
     var id = 'topo2-p-detail',
         devicePath = 'device',
         handlerMap = {
-            'showDetails': showDetails
+            'showDetails': showDetails,
         };
 
     var coreButtons = {
         showDeviceView: {
             gid: 'switch',
             tt: 'Show Device View',
-            path: 'device'
+            path: 'device',
         },
         showFlowView: {
             gid: 'flowTable',
             tt: 'Show Flow View for this Device',
-            path: 'flow'
+            path: 'flow',
         },
         showPortView: {
             gid: 'portTable',
             tt: 'Show Port View for this Device',
-            path: 'port'
+            path: 'port',
         },
         showGroupView: {
             gid: 'groupTable',
             tt: 'Show Group View for this Device',
-            path: 'group'
+            path: 'group',
         },
         showMeterView: {
             gid: 'meterTable',
             tt: 'Show Meter View for this Device',
-            path: 'meter'
-        }
+            path: 'meter',
+        },
     };
 
     function init(summaryPanel) {
@@ -94,7 +94,7 @@
                     id: 'core-' + id,
                     gid: gid,
                     tt: tt,
-                    cb: function () { ns.navTo(path, { devId: devId }); }
+                    cb: function () { ns.navTo(path, { devId: devId }); },
                 });
             }
         });
@@ -168,7 +168,7 @@
     function updateDetails(id, nodeType) {
         wss.sendEvent('requestDetails', {
             id: id,
-            class: nodeType
+            class: nodeType,
         });
     }
 
@@ -223,8 +223,8 @@
                 hide: hide,
                 destroy: destroy,
                 isVisible: function () { return detailsPanel.isVisible(); },
-                getInstance: function () { return detailsPanel; }
+                getInstance: function () { return detailsPanel; },
             };
-        }
+        },
     ]);
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Event.js b/web/gui/src/main/webapp/app/view/topo2/topo2Event.js
index c1651d0..e7f86e8 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Event.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Event.js
@@ -98,7 +98,7 @@
             return {
                 bindHandlers: bindHandlers,
                 start: start,
-                stop: stop
+                stop: stop,
             };
         }]);
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Force.js b/web/gui/src/main/webapp/app/view/topo2/topo2Force.js
index cbe7511..b67df6f 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Force.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Force.js
@@ -26,10 +26,7 @@
     var $log, $loc, wss;
 
     var t2is, t2rs, t2ls, t2vs, t2bcs, t2ss, t2bgs, t2tbs, t2mss;
-    var svg, forceG, uplink, dim, opts, zoomer;
-
-    // D3 Selections
-    var node;
+    var svg, uplink, dim, opts, zoomer;
 
     // ========================== Helper Functions
 
@@ -63,7 +60,7 @@
         $log.debug('navToBookmarkedRegion:', regionId);
         if (regionId) {
             wss.sendEvent('topo2navRegion', {
-                rid: regionId
+                rid: regionId,
             });
 
             t2ls.createForceElements();
@@ -223,7 +220,7 @@
                 updateNodes: updateNodes,
                 updateLinks: updateLinks,
                 resetNodeLocation: resetNodeLocation,
-                unpin: unpin
+                unpin: unpin,
             };
         }]);
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Host.js b/web/gui/src/main/webapp/app/view/topo2/topo2Host.js
index df40e8b..a2f2124 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Host.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Host.js
@@ -32,7 +32,7 @@
     function createHostCollection(data, region) {
 
         var HostCollection = Collection.extend({
-            model: Model
+            model: Model,
         });
 
         var hosts = [];
@@ -57,7 +57,7 @@
 
                 nodeType: 'host',
                 events: {
-                    'click': 'onClick'
+                    'click': 'onClick',
                 },
                 initialize: function () {
                     this.super = this.constructor.__super__;
@@ -69,7 +69,7 @@
                         this.el.attr('class', this.svgClassName());
                     }
                 },
-                showDetails: function() {
+                showDetails: function () {
                     t2hds.displayPanel(this);
                 },
                 icon: function () {
@@ -118,7 +118,7 @@
                         width: glyphSize,
                         height: glyphSize,
                         x: -glyphSize / 2,
-                        y: -glyphSize / 2
+                        y: -glyphSize / 2,
                     });
 
                     var labelText = this.label();
@@ -132,13 +132,13 @@
                     this.setScale();
                     this.setUpEvents();
                     this.setVisibility();
-                }
+                },
             });
 
             return {
-                createHostCollection: createHostCollection
+                createHostCollection: createHostCollection,
             };
-        }
+        },
     ]);
 
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2HostsPanel.js b/web/gui/src/main/webapp/app/view/topo2/topo2HostsPanel.js
index 285221f..4ba1f60 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2HostsPanel.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2HostsPanel.js
@@ -41,8 +41,8 @@
                 '-': '',
                 'MAC': data.get('id'),
                 'IP': data.get('ips')[0],
-                'VLAN': 'None' // TODO: VLAN is not currently in the data received from backend
-            }
+                'VLAN': 'None', // TODO: VLAN is not currently in the data received from backend
+            },
         };
 
         if (data.get('location')) {
@@ -120,9 +120,9 @@
                 hide: hide,
                 toggle: toggle,
                 destroy: destroy,
-                isVisible: function () { return hostPanel.isVisible(); }
+                isVisible: function () { return hostPanel.isVisible(); },
             };
-        }
+        },
     ]);
 
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Instance.js b/web/gui/src/main/webapp/app/view/topo2/topo2Instance.js
index 044e3d6..de7c09e 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Instance.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Instance.js
@@ -4,15 +4,12 @@
     // injected refs
     var $log, ps, sus, gs, flash, ts, t2mss;
 
-    // api from topo
-    var api;
-
     // configuration
     var showLogicErrors = true,
         idIns = 'topo2-p-instance',
         instOpts = {
             edge: 'left',
-            width: 20
+            width: 20,
         };
 
     // internal state
@@ -97,24 +94,24 @@
             instSvg = {
                 width: 170,
                 height: 85,
-                viewBox: '0 0 170 85'
+                viewBox: '0 0 170 85',
             },
             headRect = {
                 x: rox,
                 y: roy,
                 width: rw,
-                height: rhh
+                height: rhh,
             },
             bodyRect = {
                 x: rox,
                 y: roy + rhh,
                 width: rw,
-                height: rbh
+                height: rbh,
             },
             titleAttr = {
                 class: 'instTitle',
                 x: tx,
-                y: 27
+                y: 27,
             };
 
         var onoses = oiBox.el().selectAll('.onosInst')
@@ -180,7 +177,7 @@
                 svg.append('text').attr({
                     class: 'instLabel ' + id,
                     x: tx,
-                    y: ty
+                    y: ty,
                 }).text(label);
                 ty += 18;
             }
@@ -215,8 +212,7 @@
         }
     }
 
-    function initInst(_api_) {
-        api = _api_;
+    function initInst() {
         oiBox = ps.createPanel(idIns, instOpts);
         oiBox.show();
 
@@ -286,9 +282,9 @@
                     allInstances: allInstances,
                     destroy: destroy,
                     toggle: toggle,
-                    isVisible: function () { return oiBox.isVisible(); }
+                    isVisible: function () { return oiBox.isVisible(); },
                 };
-            }
+            },
         ]);
 
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2KeyCommands.js b/web/gui/src/main/webapp/app/view/topo2/topo2KeyCommands.js
index 4f31f63..bce5efb 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2KeyCommands.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2KeyCommands.js
@@ -18,7 +18,7 @@
 
     // Injected Services
     var $log, fs, ks, flash, wss, t2ps, t2bgs, ps, t2is, t2sp, t2vs, t2rs,
-        t2fs, t2sls, t2tbs;
+        t2fs, t2tbs;
 
     // Commmands
     function actionMap() {
@@ -38,8 +38,8 @@
 
             esc: handleEscape,
 
-            _keyListener: t2tbs.keyListener.bind(t2tbs)
-        }
+            _keyListener: t2tbs.keyListener.bind(t2tbs),
+        };
     }
 
     function init(_t2fs_, _t2tbs_) {
@@ -74,7 +74,7 @@
             ['shift-click', 'Toggle selection state'],
             ['drag', 'Reposition (and pin) device / host'],
             ['cmd-scroll', 'Zoom in / out'],
-            ['cmd-drag', 'Pan']
+            ['cmd-drag', 'Pan'],
         ]);
     }
 
@@ -170,12 +170,12 @@
 
     function toggleHosts() {
         var on = t2rs.toggleHosts();
-        actionedFlashed(on ? 'Show': 'Hide', 'Hosts')
+        actionedFlashed(on ? 'Show': 'Hide', 'Hosts');
     }
 
     function toggleOfflineDevices() {
         var on = t2rs.toggleOfflineDevices();
-        actionedFlashed(on ? 'Show': 'Hide', 'offline devices')
+        actionedFlashed(on ? 'Show': 'Hide', 'offline devices');
     }
 
     function notValid(what) {
@@ -204,10 +204,10 @@
         '$log', 'FnService', 'KeyService', 'FlashService', 'WebSocketService',
         'Topo2PrefsService', 'Topo2BackgroundService', 'PrefsService',
         'Topo2InstanceService', 'Topo2SummaryPanelService', 'Topo2ViewService',
-        'Topo2RegionService', 'Topo2SpriteLayerService',
+        'Topo2RegionService',
 
         function (_$log_, _fs_, _ks_, _flash_, _wss_, _t2ps_, _t2bgs_, _ps_,
-                  _t2is_, _t2sp_, _t2vs_, _t2rs_, _t2sls_) {
+                  _t2is_, _t2sp_, _t2vs_, _t2rs_) {
 
             $log = _$log_;
             fs = _fs_;
@@ -221,13 +221,12 @@
             t2sp = _t2sp_;
             t2vs = _t2vs_;
             t2rs = _t2rs_;
-            t2sls = _t2sls_;
 
             return {
                 init: init,
                 bindCommands: bindCommands,
-                getActionEntry: getActionEntry
+                getActionEntry: getActionEntry,
             };
-        }
+        },
     ]);
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Label.js b/web/gui/src/main/webapp/app/view/topo2/topo2Label.js
index 9c98ac5..69a0440 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Label.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Label.js
@@ -25,20 +25,20 @@
     var defaultStyles = {
         label: {
             text: {
-                fill: '#000000'
+                fill: '#000000',
             },
             rect: {
-                fill: '#ffffff'
-            }
+                fill: '#ffffff',
+            },
         },
         icon: {
             glyph: {
-                fill: '#000000'
+                fill: '#000000',
             },
             rect: {
-                fill: '#ffffff'
-            }
-        }
+                fill: '#ffffff',
+            },
+        },
     };
 
     angular.module('ovTopo2')
@@ -69,9 +69,9 @@
                             this._labelG.text.text(this.get('label'));
                             this._labelG.rect.attr({
                                 width: width,
-                                height: height
+                                height: height,
                             }).style({
-                                transform: sus.translate(-(width/2) + 'px', -(height/2) + 'px')
+                                transform: sus.translate(-(width/2) + 'px', -(height/2) + 'px'),
                             });
                         }
                     },
@@ -108,9 +108,9 @@
 
                         this._labelG.rect.attr({
                             width: this._labelG.text.node().getBBox().width + 20,
-                            height: this._labelG.text.node().getBBox().height + 10
+                            height: this._labelG.text.node().getBBox().height + 10,
                         }).style({
-                            transform: sus.translate('-50%', '-50%')
+                            transform: sus.translate('-50%', '-50%'),
                         });
                     },
                     renderIcon: function () {
@@ -123,7 +123,7 @@
                         this._iconG.rect = this._iconG.el.append('rect')
                             .attr({
                                 width: this.iconSize,
-                                height: this.iconSize
+                                height: this.iconSize,
                             });
 
                         this._iconG.glyph = is.addDeviceIcon(this._iconG.el,
@@ -131,9 +131,9 @@
 
 
                         var iconX = (-bbox.width / 2) - this.iconSize + 'px',
-                            iconY = -this.iconSize /2  + 'px';
+                            iconY = -this.iconSize /2 + 'px';
                         this._iconG.el.style({
-                            transform: sus.translate(iconX, iconY)
+                            transform: sus.translate(iconX, iconY),
                         });
                     },
                     beforeRender: function () {},
@@ -141,7 +141,7 @@
                         this.el = this.parent.append('g')
                             .attr('class', 'topo2-label')
                             .style({
-                                transform: 'translate(300px, 300px)'
+                                transform: 'translate(300px, 300px)',
                             });
 
                         this.content = this.el.append('g')
@@ -160,8 +160,8 @@
                     afterRender: function () {},
                     remove: function () {
                         this.el.remove();
-                    }
+                    },
                 });
-            }
+            },
         ]);
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2LabelCollection.js b/web/gui/src/main/webapp/app/view/topo2/topo2LabelCollection.js
index 53a3047..cb9fa93 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2LabelCollection.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2LabelCollection.js
@@ -36,13 +36,13 @@
                         if (this._byId[label.id]) {
                             this.get(label.id).set(label);
                         } else {
-                            var lab = new Model(label, targetNode, options)
+                            var lab = new Model(label, targetNode, options);
                             this.add(lab);
                         }
-                    }
+                    },
                 });
 
                 return instance || new LabelCollection();
-            }
+            },
         ]);
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Layout.js b/web/gui/src/main/webapp/app/view/topo2/topo2Layout.js
index ba194d3..503cf40 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Layout.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Layout.js
@@ -34,20 +34,20 @@
             device: -8000,
             host: -20000,
             region: -8000,
-            _def_: -12000
+            _def_: -12000,
         },
         linkDistance: {
             // note: key is link.type
             direct: 100,
             optical: 120,
             UiEdgeLink: 100,
-            _def_: 50
+            _def_: 50,
         },
         linkStrength: {
             // note: key is link.type
             // range: {0.0 ... 1.0}
-            _def_: 1.0
-        }
+            _def_: 1.0,
+        },
     };
 
     // configuration
@@ -55,20 +55,20 @@
         light: {
             baseColor: '#939598',
             inColor: '#66f',
-            outColor: '#f00'
+            outColor: '#f00',
         },
         dark: {
             // TODO : theme
             baseColor: '#939598',
             inColor: '#66f',
-            outColor: '#f00'
+            outColor: '#f00',
         },
         inWidth: 12,
-        outWidth: 10
+        outWidth: 10,
     };
 
     // internal state
-    var nodeLock = false;       // whether nodes can be dragged or not (locked)
+    var nodeLock = false; // whether nodes can be dragged or not (locked)
 
     // predicate that indicates when clicking is active
     function clickEnabled() {
@@ -117,7 +117,7 @@
                             linkLabelG: this.addElement(this.forceG, 'topo2-linkLabels'),
                             numLinksLabels: this.addElement(this.forceG, 'topo2-numLinkLabels'),
                             nodeG: this.addElement(this.forceG, 'topo2-nodes'),
-                            portLabels: this.addElement(this.forceG, 'topo2-portLabels')
+                            portLabels: this.addElement(this.forceG, 'topo2-portLabels'),
                         };
                     },
                     addElement: function (parent, className) {
@@ -138,7 +138,7 @@
                             .linkStrength(this.settingOrDefault.bind(this, 'linkStrength'))
                             .nodes([])
                             .links([])
-                            .on("tick", this.tick.bind(this))
+                            .on('tick', this.tick.bind(this))
                             .start();
 
                         this.drag = sus.createDragBehavior(this.force,
@@ -173,15 +173,15 @@
                                     var dx = isNaN(d.x) ? 0 : d.x,
                                         dy = isNaN(d.y) ? 0 : d.y;
                                     return sus.translate(dx, dy);
-                                }
+                                },
                             });
 
                         this.link
                             .each(this.setLinkPosition)
-                            .attr("x1", function (d) { return d.get('position').x1; })
-                            .attr("y1", function (d) { return d.get('position').y1; })
-                            .attr("x2", function (d) { return d.get('position').x2; })
-                            .attr("y2", function (d) { return d.get('position').y2; });
+                            .attr('x1', function (d) { return d.get('position').x1; })
+                            .attr('y1', function (d) { return d.get('position').y1; })
+                            .attr('x2', function (d) { return d.get('position').x2; })
+                            .attr('y2', function (d) { return d.get('position').y2; });
                     },
 
                     start: function () {
@@ -215,13 +215,13 @@
                                     // Need to guard against NaN here ??
                                     return sus.translate(d.node.x, d.node.y);
                                 },
-                                opacity: 0
+                                opacity: 0,
                             })
                             .call(this.drag)
                             .transition()
                             .attr('opacity', 1);
 
-                        entering.each(function (d) { d.onEnter(this, d) });
+                        entering.each(function (d) { d.onEnter(this, d); });
 
                         this.force.nodes(regionNodes);
                     },
@@ -242,10 +242,10 @@
                                 x2: function (d) { return d.get('position').x2; },
                                 y2: function (d) { return d.get('position').y2; },
                                 stroke: linkConfig.light.inColor,
-                                'stroke-width': linkConfig.inWidth
+                                'stroke-width': linkConfig.inWidth,
                             });
 
-                        entering.each(function (d) { d.onEnter(this, d) });
+                        entering.each(function (d) { d.onEnter(this, d); });
 
                         // operate on exiting links:
                         this.link.exit()
@@ -280,15 +280,15 @@
                                 y: d.y,
                                 equivLoc: {
                                     lng: ll[0],
-                                    lat: ll[1]
-                                }
+                                    lat: ll[1],
+                                },
                             };
                         }
                         d.metaUi = metaUi;
                         wss.sendEvent('updateMeta2', {
                             id: d.get('id'),
                             class: d.get('class'),
-                            memento: metaUi
+                            memento: metaUi,
                         });
                     },
                     setDimensions: function () {
@@ -341,12 +341,12 @@
                             .style('opacity', 1)
                             .each('end', function () {
                                 t2rns.navigateToRegionComplete();
-                            });;
+                            }); ;
                     },
                     navigateToRegionHandler: function () {
                         this.createForceElements();
                         this.transitionDownRegion();
-                    }
+                    },
                 });
 
                 function getInstance(svg, forceG, uplink, dim, zoomer, opts) {
@@ -354,7 +354,7 @@
                 }
 
                 return getInstance();
-            }
+            },
         ]
     );
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Link.js b/web/gui/src/main/webapp/app/view/topo2/topo2Link.js
index e4b0f4a..3af8c0c 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Link.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Link.js
@@ -39,16 +39,16 @@
         light: {
             baseColor: '#939598',
             inColor: '#66f',
-            outColor: '#f00'
+            outColor: '#f00',
         },
         dark: {
             // TODO : theme
             baseColor: '#939598',
             inColor: '#66f',
-            outColor: '#f00'
+            outColor: '#f00',
         },
         inWidth: 12,
-        outWidth: 10
+        outWidth: 10,
     };
 
     function createLink() {
@@ -62,8 +62,8 @@
                 x1: 0,
                 y1: 0,
                 x2: 0,
-                y2: 0
-            }
+                y2: 0,
+            },
             // functions to aggregate dual link state
             // extra: link.extra
         });
@@ -109,7 +109,7 @@
 
         return {
             source: sourceNode,
-            target: targetNode
+            target: targetNode,
         };
     }
 
@@ -134,7 +134,7 @@
                     {
                         enhanced: this.get('enhanced'),
                         selected: this.get('selected'),
-                        suppressedmax: this.get('mastership')
+                        suppressedmax: this.get('mastership'),
                     },
                     (this.linkLabel) ? this.linkLabel.linkLabelCSSClass() : null
                 );
@@ -168,7 +168,7 @@
                     point = this.locatePortLabel();
                     angular.extend(point, {
                         id: 'topo2-port-tgt',
-                        num: this.get('portB')
+                        num: this.get('portB'),
                     });
                     data.push(point);
 
@@ -176,7 +176,7 @@
                         point = this.locatePortLabel(1);
                         angular.extend(point, {
                             id: 'topo2-port-src',
-                            num: this.get('portA')
+                            num: this.get('portA'),
                         });
                         data.push(point);
                     }
@@ -224,8 +224,8 @@
                     x1: this.get('source').x,
                     y1: this.get('source').y,
                     x2: this.get('target').x,
-                    y2: this.get('target').y
-                }
+                    y2: this.get('target').y,
+                };
             },
             calcMovement: function (amt, flipped) {
                 var pos = this.defaultPosition(),
@@ -238,7 +238,7 @@
                     x1: pos.x1 + (mult * dy / length),
                     y1: pos.y1 + (mult * -dx / length),
                     x2: pos.x2 + (mult * dy / length),
-                    y2: pos.y2 + (mult * -dx / length)
+                    y2: pos.y2 + (mult * -dx / length),
                 };
             },
             setPosition: function () {
@@ -282,7 +282,7 @@
             deselect: function () {
                 this.set({
                     'selected': false,
-                    'enhanced': false
+                    'enhanced': false,
                 });
             },
             showDetails: function () {
@@ -394,7 +394,7 @@
                 this.el.style('visibility', visible ? 'visible' : 'hidden');
             },
             displayMastership: function () {
-                this.set({ mastership: t2mss.mastership() !== null});
+                this.set({ mastership: t2mss.mastership() !== null });
             },
             remove: function () {
 
@@ -407,11 +407,11 @@
                     .transition()
                     .delay(1000)
                     .style('opacity', 0);
-            }
+            },
         });
 
         var LinkCollection = Collection.extend({
-            model: LinkModel
+            model: LinkModel,
         });
 
         return new LinkCollection(data);
@@ -444,8 +444,8 @@
             t2ts = _t2ts_;
 
             return {
-                createLinkCollection: createLinkCollection
+                createLinkCollection: createLinkCollection,
             };
-        }
+        },
     ]);
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2LinkLabel.js b/web/gui/src/main/webapp/app/view/topo2/topo2LinkLabel.js
index e0f5658..344fc68 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2LinkLabel.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2LinkLabel.js
@@ -47,7 +47,7 @@
                         var link = this.link;
                         this.set({
                             x: (link.source.x + link.target.x) / 2,
-                            y: (link.source.y + link.target.y) / 2
+                            y: (link.source.y + link.target.y) / 2,
                         });
                     },
                     setScale: function () {
@@ -61,8 +61,8 @@
                         this.link.linkLabel = null;
                         this.link.onChange();
                         this.constructor.__super__.remove.apply(this, arguments);
-                    }
+                    },
                 });
-            }
+            },
         ]);
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2LinkPanel.js b/web/gui/src/main/webapp/app/view/topo2/topo2LinkPanel.js
index 3b822aa..f7dc66c 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2LinkPanel.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2LinkPanel.js
@@ -42,7 +42,7 @@
             propOrder: [
                 'Type', '-',
                 'A Type', 'A Id', 'A Label', 'A Port', '-',
-                'B Type', 'B Id', 'B Label', 'B Port'
+                'B Type', 'B Id', 'B Label', 'B Port',
             ],
             props: {
                 '-': '',
@@ -54,8 +54,8 @@
                 'B Type': target.get('nodeType'),
                 'B Id': target.get('id'),
                 'B Label': target.get('props').name,
-                'B Port': data.get('portB') || 'N/A'
-            }
+                'B Port': data.get('portB') || 'N/A',
+            },
         };
     }
 
@@ -117,9 +117,9 @@
                 hide: hide,
                 toggle: toggle,
                 destroy: destroy,
-                isVisible: function () { return linkPanel.isVisible(); }
+                isVisible: function () { return linkPanel.isVisible(); },
             };
-        }
+        },
     ]);
 
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Map.js b/web/gui/src/main/webapp/app/view/topo2/topo2Map.js
index 804cc02..be6bffe 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Map.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Map.js
@@ -23,14 +23,13 @@
     'use strict';
 
     // Injected Services
-    var $log, $loc, ps, ms, flash, sus, t2zs, countryFilters;
+    var t2zs, countryFilters, ms;
 
     // internal state
-    var instance, mapG, zoomLayer, zoomer, currentMap;
+    var instance, zoomer, currentMap;
 
     function init() {
         this.appendElement('#topo2-background', 'g');
-        zoomLayer = d3.select('#topo2-zoomlayer');
         zoomer = t2zs.getZoomer();
         currentMap = null;
     }
@@ -38,7 +37,7 @@
     function setUpMap(mapId, mapFilePath, mapScale) {
 
         if (currentMap === mapId) {
-            return new Promise(function(resolve) {
+            return new Promise(function (resolve) {
                 resolve();
             });
         }
@@ -48,7 +47,7 @@
         var loadMap = ms.loadMapInto,
             promise, cfilter;
 
-        this.node().selectAll("*").remove();
+        this.node().selectAll('*').remove();
 
         if (mapFilePath === '*countries') {
             cfilter = countryFilters[mapId] || countryFilters.uk;
@@ -58,7 +57,7 @@
         promise = loadMap(this.node(), mapFilePath, mapId, {
             countryFilters: cfilter,
             adjustScale: mapScale || 1,
-            shading: ''
+            shading: '',
         });
 
         return promise;
@@ -80,19 +79,11 @@
 
     angular.module('ovTopo2')
     .factory('Topo2MapService', [
-        '$log', '$location', 'Topo2ViewController', 'PrefsService',
-        'MapService', 'FlashService', 'SvgUtilService', 'Topo2ZoomService',
+        'Topo2ZoomService', 'MapService', 'Topo2ViewController',
 
-        function (_$log_, _$loc_, ViewController, _ps_,
-                  _ms_, _flash_, _sus_, _t2zs_) {
-
-            $log = _$log_;
-            $loc = _$loc_;
-            ps = _ps_;
-            ms = _ms_;
-            flash = _flash_;
-            sus = _sus_;
+        function (_t2zs_, _ms_, ViewController) {
             t2zs = _t2zs_;
+            ms = _ms_;
 
             var MapLayer = ViewController.extend({
 
@@ -103,10 +94,10 @@
                 setUpMap: setUpMap,
                 resetZoom: resetZoom,
                 zoomCallback: zoomCallback,
-                getCurrentMap: getCurrentMap
+                getCurrentMap: getCurrentMap,
             });
 
             return instance || new MapLayer();
-        }
+        },
     ]);
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2MapConfig.js b/web/gui/src/main/webapp/app/view/topo2/topo2MapConfig.js
index e883d9a..41ceec4 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2MapConfig.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2MapConfig.js
@@ -31,7 +31,7 @@
     function projection(x) {
         if (x) {
             proj = x;
-            $log.debug("Set the projection");
+            $log.debug('Set the projection');
         }
         return proj;
     }
@@ -44,9 +44,9 @@
                 $log = _$log_;
 
                 return {
-                    projection: projection
+                    projection: projection,
                 };
-            }
+            },
         ]
     );
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Mastership.js b/web/gui/src/main/webapp/app/view/topo2/topo2Mastership.js
index c6272b4..6e6aad1 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Mastership.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Mastership.js
@@ -49,10 +49,10 @@
                     setMastership: function (id) {
                         this.currentMastership = id;
                         this.displayMastership();
-                    }
-                }
+                    },
+                };
 
                 return instance || new MastershipController();
-            }
+            },
         ]);
-})();
\ No newline at end of file
+})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Model.js b/web/gui/src/main/webapp/app/view/topo2/topo2Model.js
index 0cf7ad3..dbb5d67 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Model.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Model.js
@@ -117,7 +117,7 @@
             if (this.collection) {
                 this.collection.remove(this);
             }
-        }
+        },
     };
 
     angular.module('ovTopo2')
@@ -127,6 +127,6 @@
             Model.extend = fn.extend;
 
             return Model;
-        }
+        },
     ]);
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2NoDevicesConnected.js b/web/gui/src/main/webapp/app/view/topo2/topo2NoDevicesConnected.js
index b14ed7c..c3b0732 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2NoDevicesConnected.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2NoDevicesConnected.js
@@ -36,7 +36,7 @@
                         instance = this;
                         this.appendElement('#topo2', 'g')
                             .attr({
-                                transform: sus.translate(500, 500)
+                                transform: sus.translate(500, 500),
                             });
 
                         this.render();
@@ -49,16 +49,16 @@
                         g = this.node().append('g');
                         gs.addGlyph(g, 'bird', 100).attr('class', 'noDevsBird');
                         g.append('text').text('No devices are connected')
-                            .attr({ x: 120, y: 80});
+                            .attr({ x: 120, y: 80 });
 
                         box = g.node().getBBox();
                         box.x -= box.width/2;
                         box.y -= box.height/2;
                         g.attr('transform', sus.translate(box.x, box.y));
-                    }
+                    },
                 });
 
                 return instance || new NoDevicesConnected();
-            }
+            },
         ]);
-})();
\ No newline at end of file
+})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2NodeModel.js b/web/gui/src/main/webapp/app/view/topo2/topo2NodeModel.js
index 3824005..c66f60e 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2NodeModel.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2NodeModel.js
@@ -35,18 +35,18 @@
     var dColTheme = {
             light: {
                 online: '#444444',
-                offline: '#cccccc'
+                offline: '#cccccc',
             },
             dark: {
                 // TODO: theme
                 online: '#444444',
-                offline: '#cccccc'
-            }
+                offline: '#cccccc',
+            },
         },
         // and here are the stroke colors of the glyph, per theme
         dUseTheme = {
             light: 'white',
-            dark: 'black'
+            dark: 'black',
         };
 
     angular.module('ovTopo2')
@@ -72,7 +72,7 @@
                     this.mastershipService = t2mss;
                     this._events = {
                         'mouseover': 'mouseoverHandler',
-                        'mouseout': 'mouseoutHandler'
+                        'mouseout': 'mouseoutHandler',
                     };
                 },
                 select: function () {
@@ -162,7 +162,7 @@
                         x: -dim / 2 - labelPad,
                         y: -dim / 2 - labelPad,
                         width: dim + labelWidth + (labelPad * 2) + _textPad,
-                        height: dim + (labelPad * 2)
+                        height: dim + (labelPad * 2),
                     };
                 },
                 iconBox: function (dim, labelWidth) {
@@ -170,7 +170,7 @@
                         x: -dim / 2,
                         y: -dim / 2,
                         width: dim + labelWidth,
-                        height: dim
+                        height: dim,
                     };
                 },
                 svgClassName: function () {
@@ -182,7 +182,7 @@
                             selected: this.get('selected'),
                             hovered: this.get('hovered'),
                             fixed: this.get('fixed'),
-                            suppressedmax: this.get('mastership')
+                            suppressedmax: this.get('mastership'),
                         }
                     );
                 },
@@ -194,7 +194,7 @@
                     t2nps.setLongLat(this);
                 },
                 displayMastership: function () {
-                    this.set({ mastership: t2mss.mastership() !== null});
+                    this.set({ mastership: t2mss.mastership() !== null });
                 },
                 update: function () {
                     this.updateLabel();
@@ -247,7 +247,7 @@
 
                     return {
                         rect: rect,
-                        text: text
+                        text: text,
                     };
                 },
                 addIconElements: function (el) {
@@ -256,7 +256,7 @@
                         glyph;
 
                     var iconG = el.append('g')
-                        .attr('class', 'icon')
+                        .attr('class', 'icon');
 
                     iconG.append('rect')
                         .attr('class', 'icon-rect')
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2NodePosition.js b/web/gui/src/main/webapp/app/view/topo2/topo2NodePosition.js
index e5535b0..501bdcb 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2NodePosition.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2NodePosition.js
@@ -72,7 +72,7 @@
             if (!loc.latOrY && !loc.longOrX) {
                 loc = {
                     longOrX: -20,
-                    latOrY: 10 * node.index()
+                    latOrY: 10 * node.index(),
                 };
             }
 
@@ -101,14 +101,14 @@
         function rand() {
             return {
                 x: rs.randDim(dim[0]),
-                y: rs.randDim(dim[1])
+                y: rs.randDim(dim[1]),
             };
         }
 
         function near(node) {
             return {
                 x: node.x + nearDist + rs.spread(nearDist),
-                y: node.y + nearDist + rs.spread(nearDist)
+                y: node.y + nearDist + rs.spread(nearDist),
             };
         }
 
@@ -176,8 +176,8 @@
 
                 return {
                     positionNode: positionNode,
-                    setLongLat: setLongLat
+                    setLongLat: setLongLat,
                 };
-            }
+            },
         ]);
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Overlay.js b/web/gui/src/main/webapp/app/view/topo2/topo2Overlay.js
index 8dd041f..49f76ea 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Overlay.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Overlay.js
@@ -22,12 +22,11 @@
     var t2os = 'Topo2OverlayService: ';
 
     // injected refs
-    var $log, $timeout, fs, gs, wss, t2kcs, t2rs, t2lc, api, LinkLabel;
+    var $log, fs, t2kcs, t2rs, t2lc, LinkLabel;
 
     // internal state
     var overlays = {},
-        current = null,
-        reset = true;
+        current = null;
 
     function error(fn, msg) {
         $log.error(t2os + fn + '(): ' + msg);
@@ -119,10 +118,6 @@
     // === -----------------------------------------------------
     //  Event Handlers (events from server)
 
-    function setApi(_api_) {
-        api = _api_;
-    }
-
     function setOverlay(ovid) {
         var ov = overlays[ovid];
         if (!ov) {
@@ -143,7 +138,7 @@
                 nodeLink = t2rs.getLink(id);
                 if (nodeLink) {
                     t2lc.addLabel(LinkLabel, link, linkLabelsDOM, {
-                        link: nodeLink
+                        link: nodeLink,
                     });
                 }
         });
@@ -153,17 +148,13 @@
 
     angular.module('ovTopo2')
     .factory('Topo2OverlayService', [
-        '$log', '$timeout', 'FnService', 'GlyphService', 'WebSocketService',
-        'Topo2KeyCommandService', 'Topo2RegionService', 'Topo2LabelCollection',
-        'Topo2LinkLabel',
+        '$log', 'FnService', 'Topo2KeyCommandService',
+        'Topo2RegionService', 'Topo2LabelCollection', 'Topo2LinkLabel',
 
-        function (_$log_, _$timeout_, _fs_, _gs_, _wss_, _t2kcs_, _t2rs_,
+        function (_$log_, _fs_, _t2kcs_, _t2rs_,
             _t2lc_, _t2ll_) {
             $log = _$log_;
-            $timeout = _$timeout_;
             fs = _fs_;
-            gs = _gs_;
-            wss = _wss_;
             t2kcs = _t2kcs_;
             t2rs = _t2rs_;
             t2lc = _t2lc_;
@@ -171,7 +162,6 @@
 
             return {
                 register: register,
-                setApi: setApi,
                 setOverlay: setOverlay,
 
                 hooks: {
@@ -180,11 +170,10 @@
                     singleSelect: singleSelectHook,
                     multiSelect: multiSelectHook,
                     mouseOver: mouseOverHook,
-                    mouseOut: mouseOutHook
+                    mouseOut: mouseOutHook,
                 },
-                showHighlights: showHighlights
-            }
-        }
+                showHighlights: showHighlights,
+            };
+        },
     ]);
-
-}());
\ No newline at end of file
+}());
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Panel.js b/web/gui/src/main/webapp/app/view/topo2/topo2Panel.js
index c592382..47ecb28 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Panel.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Panel.js
@@ -51,16 +51,16 @@
             return this.footer.append(x);
         },
         emptyRegions: function () {
-            this.header.selectAll("*").remove();
-            this.body.selectAll("*").remove();
-            this.footer.selectAll("*").remove();
+            this.header.selectAll('*').remove();
+            this.body.selectAll('*').remove();
+            this.footer.selectAll('*').remove();
         },
         destroy: function () {
             ps.destroyPanel(this.id);
         },
         isVisible: function () {
             return this.el.isVisible();
-        }
+        },
     };
 
     angular.module('ovTopo2')
@@ -71,7 +71,7 @@
             ps = _ps_;
 
             return View.extend(panel);
-        }
+        },
     ]);
 
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2PeerRegion.js b/web/gui/src/main/webapp/app/view/topo2/topo2PeerRegion.js
index bbfcf37..68e4266 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2PeerRegion.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2PeerRegion.js
@@ -25,14 +25,14 @@
     var Collection, Model;
 
     var remappedDeviceTypes = {
-        virtual: 'cord'
+        virtual: 'cord',
     };
 
     function createCollection(data, region) {
 
         var PeerRegionCollection = Collection.extend({
             model: Model,
-            region: region
+            region: region,
         });
 
         return new PeerRegionCollection(data);
@@ -52,7 +52,7 @@
                     nodeType: 'peer-region',
                     events: {
                         'dblclick': 'navigateToRegion',
-                        'click': 'onClick'
+                        'click': 'onClick',
                     },
 
                     initialize: function () {
@@ -76,13 +76,13 @@
                         if (d3.event.defaultPrevented) return;
                         t2rns.navigateToRegion(this.get('id'));
                         t2srp.hide();
-                    }
+                    },
                 });
 
                 return {
-                    createCollection: createCollection
+                    createCollection: createCollection,
                 };
-            }
+            },
         ]);
 
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Prefs.js b/web/gui/src/main/webapp/app/view/topo2/topo2Prefs.js
index 9587aef..7c376a8 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Prefs.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Prefs.js
@@ -30,8 +30,8 @@
         porthl: 1,
         bg: 0,
         spr: 0,
-        ovid: 'traffic',   // default to traffic overlay
-        toolbar: 0
+        ovid: 'traffic', // default to traffic overlay
+        toolbar: 0,
     };
 
     function topo2Prefs() {
@@ -59,8 +59,8 @@
 
             return {
                 get: get,
-                set: set
+                set: set,
             };
-        }
+        },
     ]);
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Region.js b/web/gui/src/main/webapp/app/view/topo2/topo2Region.js
index 0da72e1..d5225d2 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Region.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Region.js
@@ -53,7 +53,7 @@
 
                     var RegionModel = Model.extend({
                         findNodeById: this.findNodeById,
-                        nodes: this.regionNodes.bind(this)
+                        nodes: this.regionNodes.bind(this),
                     });
 
                     this.model = new RegionModel();
@@ -67,7 +67,7 @@
                     this.model.set({ peerRegions: t2pr.createCollection([], this) });
                     this.model.set({ links: t2ls.createLinkCollection([], this) });
                 },
-                isLoadComplete: function() {
+                isLoadComplete: function () {
                     return this.bgRendered && this.regionData && this.peers;
                 },
                 loaded: function (key, value) {
@@ -80,7 +80,7 @@
 
                     this.model.set({
                         id: this.regionData.id,
-                        layerOrder: this.regionData.layerOrder
+                        layerOrder: this.regionData.layerOrder,
                     });
 
                     this.sortMultiLinks();
@@ -117,7 +117,7 @@
                             if (peer.id === id) {
                                 peer.location = location;
                             }
-                        })
+                        });
                     });
                 },
                 sortMultiLinks: function () {
@@ -147,12 +147,11 @@
                             _.each(collection, function (link, index) {
                                 link.multiline = {
                                     deviceLinks: collection.length,
-                                    index: index
-                                }
+                                    index: index,
+                                };
                             });
                         }
-                    })
-
+                    });
                 },
                 isRootRegion: function () {
                     return this.model.get('id') === ROOT;
@@ -248,17 +247,17 @@
                 },
                 update: function (event) {
 
-                    if (!this.isLoadComplete()){
+                    if (!this.isLoadComplete()) {
                         this.layout.createForceLayout();
                     }
 
                     if (this[event.type]) {
                         this[event.type](event);
                     } else {
-                        $log.error("Unhanded topology update", event);
+                        $log.error('Unhanded topology update', event);
                     }
 
-                    this.layout.update()
+                    this.layout.update();
                     this.displayNoDevs();
                 },
                 displayNoDevs: function () {
@@ -272,11 +271,10 @@
                 // Topology update event handlers
                 LINK_ADDED_OR_UPDATED: function (event) {
 
-                    var regionLinks = this.model.get('links'),
-                        device;
+                    var regionLinks = this.model.get('links');
 
                     if (!regionLinks) {
-                        this.model.set({ links: t2ls.createLinkCollection([], this) })
+                        this.model.set({ links: t2ls.createLinkCollection([], this) });
                     }
 
                     if (event.memo === 'added') {
@@ -296,7 +294,7 @@
                         device;
 
                     if (!regionDevices) {
-                        this.model.set({ devices: t2ds.createDeviceCollection([], this) })
+                        this.model.set({ devices: t2ds.createDeviceCollection([], this) });
                     }
 
                     if (event.memo === 'added') {
@@ -315,7 +313,7 @@
                         host;
 
                     if (!regionHosts) {
-                        this.model.set({ hosts: t2hs.createHostCollection([], this) })
+                        this.model.set({ hosts: t2hs.createHostCollection([], this) });
                     }
 
                     if (event.memo === 'added') {
@@ -328,14 +326,14 @@
                         region;
 
                     if (!regionSubRegions) {
-                        this.model.set({ subregions: t2sr.createSubRegionCollection([], this) })
+                        this.model.set({ subregions: t2sr.createSubRegionCollection([], this) });
                     }
 
                     if (event.memo === 'added') {
                         region = this.model.get('subregions').add(event.data);
                         $log.debug('Added region', region);
                     }
-                }
+                },
             });
 
             function getInstance() {
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2RegionNavigation.js b/web/gui/src/main/webapp/app/view/topo2/topo2RegionNavigation.js
index 84b195e..93e23db 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2RegionNavigation.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2RegionNavigation.js
@@ -50,7 +50,7 @@
         navigateToRegion: function (id) {
             $loc.search('regionId', id);
             wss.sendEvent('topo2navRegion', {
-                rid: id
+                rid: id,
             });
             this.notifyListeners('region:navigation-start', id);
         },
@@ -60,7 +60,7 @@
 
         destory: function () {
             this.listeners = {};
-        }
+        },
     };
 
     angular.module('ovTopo2')
@@ -72,6 +72,6 @@
                 wss = _wss_;
 
                 return instance || new RegionNavigationService();
-            }
+            },
         ]);
-})();
\ No newline at end of file
+})();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Select.js b/web/gui/src/main/webapp/app/view/topo2/topo2Select.js
index 0c90ee6..ed1667f 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Select.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Select.js
@@ -27,7 +27,7 @@
     var instance,
         consumeClick,
         zoomer,
-        previousNearestLink;    // previous link to mouse position
+        previousNearestLink; // previous link to mouse position
 
     function mouseClickHandler() {
         if (d3.event.defaultPrevented) return;
@@ -162,11 +162,11 @@
         },
         updateDetails: function () {
 
-            var nodeCount =  this.selectedNodes.length;
+            var nodeCount = this.selectedNodes.length;
 
             if (nodeCount === 1) {
                 this.selectedNodes[0].showDetails();
-            } else if (nodeCount > 1)  {
+            } else if (nodeCount > 1) {
                 t2ddp.showMulti(this.selectedNodes);
             } else {
                 t2ddp.hide();
@@ -211,7 +211,7 @@
             var cc = consumeClick;
             consumeClick = Boolean(x);
             return cc;
-        }
+        },
     };
 
     angular.module('ovTopo2')
@@ -221,7 +221,7 @@
             t2zs = _t2zs_;
             t2ddp = _t2ddp_;
             return instance || new SelectionService();
-        }
+        },
     ]);
 
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2SpriteLayer.js b/web/gui/src/main/webapp/app/view/topo2/topo2SpriteLayer.js
index 74e5ad0..539f80c 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2SpriteLayer.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2SpriteLayer.js
@@ -19,11 +19,10 @@
  Defines behavior for loading sprites into the sprite layer.
  */
 
- (function() {
+ (function () {
     'use strict';
 
-    var instance,
-        renderer;
+    var instance;
 
     function vbox(w, h) {
       return '0 0 ' + w + ' ' + h;
@@ -41,14 +40,14 @@
                     id: 'topo2-sprites',
                     displayName: 'Sprite Layer',
 
-                    init: function() {
+                    init: function () {
                         this.svg = d3.select('#topo2');
                         this.createSpriteDefs();
                         this.container = this.appendElement('#topo2-background', 'g');
                     },
                     loadLayout: function (id) {
                         var _this = this;
-                        this.container.selectAll("*").remove();
+                        this.container.selectAll('*').remove();
                         this.layout = ss.layout(id);
 
                         if (this.layout) {
@@ -65,7 +64,7 @@
                         }
 
                         // Returns a promise for consistency with Topo2MapService
-                        return new Promise(function(resolve) {
+                        return new Promise(function (resolve) {
                             resolve(_this);
                         });
                     },
@@ -132,7 +131,7 @@
 
                             layout
                                 .append('g')
-                                .append("use")
+                                .append('use')
                                 .attr('xlink:href', '#rack')
                                 .attr('width', 20)
                                 .attr('height', 25)
@@ -164,7 +163,7 @@
                                 .attr('y', i * gridSpacing)
                                 .attr('x', 0);
                         }
-                    }
+                    },
                 });
 
                 function getInstance() {
@@ -172,6 +171,6 @@
                 }
 
                 return getInstance();
-            }
-        ])
- })();
\ No newline at end of file
+            },
+        ]);
+ })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2SubRegion.js b/web/gui/src/main/webapp/app/view/topo2/topo2SubRegion.js
index b65c175..12b7868 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2SubRegion.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2SubRegion.js
@@ -25,14 +25,14 @@
     var Collection, Model;
 
     var remappedDeviceTypes = {
-        virtual: 'cord'
+        virtual: 'cord',
     };
 
     function createSubRegionCollection(data, region) {
 
         var SubRegionCollection = Collection.extend({
             model: Model,
-            region: region
+            region: region,
         });
 
         return new SubRegionCollection(data);
@@ -52,7 +52,7 @@
                 nodeType: 'sub-region',
                 events: {
                     'dblclick': 'navigateToRegion',
-                    'click': 'onClick'
+                    'click': 'onClick',
                 },
 
                 initialize: function () {
@@ -76,13 +76,13 @@
                     if (d3.event.defaultPrevented) return;
                     t2rns.navigateToRegion(this.get('id'));
                     t2srp.hide();
-                }
+                },
             });
 
             return {
-                createSubRegionCollection: createSubRegionCollection
+                createSubRegionCollection: createSubRegionCollection,
             };
-        }
+        },
     ]);
 
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2SubRegionPanel.js b/web/gui/src/main/webapp/app/view/topo2/topo2SubRegionPanel.js
index 1ac9f5a..070c6f2 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2SubRegionPanel.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2SubRegionPanel.js
@@ -41,8 +41,8 @@
                 'Id': data.get('id'),
                 'Type': data.get('nodeType'),
                 'Number of Devices': data.get('nDevs'),
-                'Number of Hosts': data.get('nHosts')
-            }
+                'Number of Hosts': data.get('nHosts'),
+            },
         };
     }
 
@@ -103,9 +103,9 @@
                 hide: hide,
                 toggle: toggle,
                 destroy: destroy,
-                isVisible: function () { return subRegionPanel.isVisible(); }
+                isVisible: function () { return subRegionPanel.isVisible(); },
             };
-        }
+        },
     ]);
 
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2SummaryPanel.js b/web/gui/src/main/webapp/app/view/topo2/topo2SummaryPanel.js
index 4c4ecc8..24785f7 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2SummaryPanel.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2SummaryPanel.js
@@ -33,10 +33,10 @@
         className = 'topo2-p',
         panelOpts = {
             show: true,
-            width: 260 // summary and detail panel width
+            width: 260, // summary and detail panel width
         },
         handlerMap = {
-            showSummary: handleSummaryData
+            showSummary: handleSummaryData,
         };
 
     function init(_detailsPanel_) {
@@ -47,7 +47,7 @@
         wss.sendEvent('requestSummary');
 
         var options = angular.extend({}, panelOpts, {
-            class: className
+            class: className,
         });
 
         summaryPanel = new Panel(id, options);
@@ -128,9 +128,9 @@
                 toggle: toggle,
                 destroy: destroy,
                 isVisible: function () { return summaryPanel.isVisible(); },
-                getInstance: function () { return summaryPanel; }
+                getInstance: function () { return summaryPanel; },
             };
-        }
+        },
     ]);
 
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Toolbar.js b/web/gui/src/main/webapp/app/view/topo2/topo2Toolbar.js
index 470d642..ae1cc90 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Toolbar.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Toolbar.js
@@ -24,7 +24,7 @@
 
     // key to button mapping data
     var k2b = {
-        O: { id: 'topo2-summary-tog', gid: 'm_summary', isel: true},
+        O: { id: 'topo2-summary-tog', gid: 'm_summary', isel: true },
         I: { id: 'topo2-instance-tog', gid: 'm_uiAttached', isel: true },
         // D: { id: 'details-tog', gid: 'm_details', isel: true },
         // H: { id: 'hosts-tog', gid: 'm_endstation', isel: false },
@@ -37,7 +37,7 @@
         L: { id: 'topo2-cycleLabels-btn', gid: 'm_cycleLabels' },
         R: { id: 'topo2-resetZoom-btn', gid: 'm_resetZoom' },
 
-        E: { id: 'topo2-eqMaster-btn', gid: 'm_eqMaster' }
+        E: { id: 'topo2-eqMaster-btn', gid: 'm_eqMaster' },
     };
 
     angular.module('ovTopo2')
@@ -63,11 +63,13 @@
                         this.el.hide();
                     },
                     initKeyData: function () {
-                        _.each(k2b, function(value, key) {
+                        _.each(k2b, function (value, key) {
                             var data = t2kcs.getActionEntry(key);
                             if (data) {
-                                value.cb = data[0];                     // on-click callback
-                                value.tt = data[1] + ' (' + key + ')';  // tooltip
+                                // on-click callback
+                                value.cb = data[0];
+                                // tooltip
+                                value.tt = data[1] + ' (' + key + ')';
                             }
                         });
                     },
@@ -82,11 +84,11 @@
                         }
                     },
                     addButton: function (key) {
-                        var v =  this.getKey(key);
+                        var v = this.getKey(key);
                         v.btn = this.el.addButton(v.id, v.gid, v.cb, v.tt);
                     },
                     addToggle: function (key, suppressIfMobile) {
-                        var v =  this.getKey(key);
+                        var v = this.getKey(key);
                         if (suppressIfMobile && fs.isMobile()) { return; }
                         v.tog = this.el.addToggle(v.id, v.gid, v.isel, v.cb, v.tt);
                     },
@@ -107,7 +109,7 @@
                         this.addToggle('B');
                     },
                     addSecondRow: function () {
-                        //addToggle('X');
+                        // addToggle('X');
                         // this.addToggle('Z');
                         // this.addButton('N');
                         this.addButton('L');
@@ -120,10 +122,10 @@
                         // TODO: Should the tbs remove button id's in the destroyToolbar method?
                         // If you go topo2 -> topo -> topo2 there's a button id conflict
                         tbs.destroyToolbar(this.className);
-                    }
+                    },
                 };
 
                 return instance || new Toolbar();
-            }
+            },
         ]);
-}());
\ No newline at end of file
+}());
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Traffic.js b/web/gui/src/main/webapp/app/view/topo2/topo2Traffic.js
index 8eded4f..92509bd 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Traffic.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Traffic.js
@@ -19,18 +19,18 @@
     'use strict';
 
     // injected refs
-    var $log, fs, flash, wss, api;
+    var $log, flash, wss;
 
     // configuration
     var allTrafficTypes = [
             'flowStatsBytes',
             'portStatsBitSec',
-            'portStatsPktSec'
+            'portStatsPktSec',
         ],
         allTrafficMsgs = [
             'Flow Stats (bytes)',
             'Port Stats (bits / second)',
-            'Port Stats (packets / second)'
+            'Port Stats (packets / second)',
         ];
 
     // internal state
@@ -57,7 +57,7 @@
 
         mode = 'allFlowPort';
         wss.sendEvent('topo2RequestAllTraffic', {
-            trafficType: allTrafficTypes[allIndex]
+            trafficType: allTrafficTypes[allIndex],
         });
         flash.flash(allTrafficMsgs[allIndex]);
         currentIndex = allIndex;
@@ -72,23 +72,23 @@
 
     angular.module('ovTopo2')
         .factory('Topo2TrafficService', [
-            '$log', 'FnService', 'FlashService', 'WebSocketService',
+            '$log', 'FlashService', 'WebSocketService',
 
-            function (_$log_, _fs_, _flash_, _wss_) {
+            function (_$log_, _flash_, _wss_) {
                 $log = _$log_;
-                fs = _fs_;
                 flash = _flash_;
                 wss = _wss_;
 
                 return {
-                    initTraffic: function (_api_) { api = _api_; },
+                    // TODO: Remove References
+                    initTraffic: function (_api_) {},
                     destroyTraffic: function () {},
 
                     // invoked from toolbar overlay buttons or keystrokes
                     cancelTraffic: cancelTraffic,
                     showAllTraffic: showAllTraffic,
-                    selectedTrafficOverlay: selectedTrafficOverlay
-                }
-            }
+                    selectedTrafficOverlay: selectedTrafficOverlay,
+                };
+            },
         ]);
-}());
\ No newline at end of file
+}());
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2TrafficOverlay.js b/web/gui/src/main/webapp/app/view/topo2/topo2TrafficOverlay.js
index aeb2325..98d3926 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2TrafficOverlay.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2TrafficOverlay.js
@@ -30,12 +30,12 @@
         tooltip: 'Traffic Overlay',
 
         activate: function () {
-            $log.debug("Traffic-2 overlay ACTIVATED");
+            $log.debug('Traffic-2 overlay ACTIVATED');
         },
 
         deactivate: function () {
             t2ts.cancelTraffic(true);
-            $log.debug("Traffic-2 overlay DEACTIVATED");
+            $log.debug('Traffic-2 overlay DEACTIVATED');
         },
 
         // key bindings for toolbar buttons
@@ -44,18 +44,18 @@
             0: {
                 cb: function () { t2ts.cancelTraffic(true); },
                 tt: 'Cancel traffic monitoring',
-                gid: 'm_xMark'
+                gid: 'm_xMark',
             },
 
             A: {
                 cb: function () { t2ts.showAllTraffic(); },
                 tt: 'Monitor all traffic',
-                gid: 'm_allTraffic'
+                gid: 'm_allTraffic',
             },
 
             _keyOrder: [
-                '0', 'A'
-            ]
+                '0', 'A',
+            ],
         },
 
         hooks: {
@@ -63,10 +63,10 @@
             escape: function () {
                 // Must return true to consume ESC, false otherwise.
                 return t2ts.cancelTraffic(true);
-            }
+            },
             // TODO : add node selection events etc.
             // NOTE : see topoTrafficNew.js
-        }
+        },
     };
 
     // invoke code to register with the overlay service
@@ -80,4 +80,4 @@
             t2ov.register(overlay);
         }]);
 
-}());
\ No newline at end of file
+}());
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2View.js b/web/gui/src/main/webapp/app/view/topo2/topo2View.js
index b572d64..0c6df03 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2View.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2View.js
@@ -28,7 +28,7 @@
     // Internal State
     var dimensions,
         viewOptions = {
-            linkPortHighlighting: true
+            linkPortHighlighting: true,
         };
 
     function newDim(_dimensions) {
@@ -65,9 +65,9 @@
                     getDimensions: getDimensions,
 
                     togglePortHighlights: togglePortHighlights,
-                    getPortHighlighting: getPortHighlighting
+                    getPortHighlighting: getPortHighlighting,
                 };
-            }
+            },
         ]
     );
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2ViewController.js b/web/gui/src/main/webapp/app/view/topo2/topo2ViewController.js
index 31ecf0f..a60153f 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2ViewController.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2ViewController.js
@@ -34,10 +34,10 @@
         displayName: 'View',
 
         initialize: function () {
-            this.name = this.displayName.toLowerCase().replace(/ /g,"_");
+            this.name = this.displayName.toLowerCase().replace(/ /g, '_');
             this.prefs = {
-                visible: this.name + '_visible'
-            }
+                visible: this.name + '_visible',
+            };
         },
         appendElement: function (parent, node) {
             var el = d3.select('#' + this.id);
@@ -46,7 +46,7 @@
             }
             return el;
         },
-        node: function() {
+        node: function () {
             return d3.select('#' + this.id);
         },
         enabled: function () {
@@ -64,7 +64,7 @@
                     .duration(400)
                     .style('opacity', 0)
                     .each('end', function () {
-                        node.style('visibility', 'hidden')
+                        node.style('visibility', 'hidden');
                     });
             }
         },
@@ -76,7 +76,7 @@
                     .style('visibility', 'visible')
                     .transition()
                     .duration(400)
-                    .style('opacity', 1)
+                    .style('opacity', 1);
             }
         },
         toggle: function () {
@@ -95,7 +95,7 @@
             var state = ps.getPrefs('topo2_prefs');
             state[key] = value ? 1 : 0;
             ps.setPrefs('topo2_prefs', state);
-        }
+        },
     };
 
     angular.module('ovTopo2')
@@ -108,6 +108,6 @@
 
                 ViewController.extend = fn.extend;
                 return ViewController;
-            }
+            },
         ]);
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Zoom.js b/web/gui/src/main/webapp/app/view/topo2/topo2Zoom.js
index 8d24aa3..616f8e6 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Zoom.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Zoom.js
@@ -23,7 +23,7 @@
     'use strict';
 
     // injected references
-    var fs, zs, ps;
+    var fs, zs;
 
     // internal state
     var zoomer,
@@ -91,12 +91,11 @@
 
     angular.module('ovTopo2')
     .factory('Topo2ZoomService', [
-        'FnService', 'ZoomService', 'PrefsService',
-        function (_fs_, _zs_, _ps_) {
+        'FnService', 'ZoomService',
+        function (_fs_, _zs_) {
 
             fs = _fs_;
             zs = _zs_;
-            ps = _ps_;
 
             return {
                 getZoomer: getZoomer,
@@ -106,7 +105,7 @@
 
                 scale: scale,
                 adjustmentScale: adjustmentScale,
-                panAndZoom: panAndZoom
+                panAndZoom: panAndZoom,
             };
         }]);
 })();
diff --git a/web/gui/src/main/webapp/app/view/topo2/uiView.js b/web/gui/src/main/webapp/app/view/topo2/uiView.js
index 9cbb1fb..c506f85 100644
--- a/web/gui/src/main/webapp/app/view/topo2/uiView.js
+++ b/web/gui/src/main/webapp/app/view/topo2/uiView.js
@@ -47,12 +47,12 @@
                     // TODO: Unbind Events
                     this.empty();
                     return this;
-                }
+                },
             });
 
             View.extend = fn.extend;
             return View;
-        }
+        },
     ]);
 
 })();
diff --git a/web/gui/src/main/webapp/app/view/tunnel/tunnel.js b/web/gui/src/main/webapp/app/view/tunnel/tunnel.js
index 9150bfd..6f8924a 100644
--- a/web/gui/src/main/webapp/app/view/tunnel/tunnel.js
+++ b/web/gui/src/main/webapp/app/view/tunnel/tunnel.js
@@ -28,13 +28,13 @@
         function ($log, $scope, $sce, fs, tbs) {
             tbs.buildTable({
                 scope: $scope,
-                tag: 'tunnel'
+                tag: 'tunnel',
             });
 
             $scope.$watch('tableData', function () {
                 if (!fs.isEmptyObject($scope.tableData)) {
                     $scope.tableData.forEach(function (tunnel) {
-                        //tunnel.direction = $sce.trustAsHtml(tunnel.direction);
+                        // tunnel.direction = $sce.trustAsHtml(tunnel.direction);
                     });
                 }
             });
diff --git a/web/gui/src/main/webapp/tests/package-lock.json b/web/gui/src/main/webapp/tests/package-lock.json
new file mode 100644
index 0000000..5303aaa
--- /dev/null
+++ b/web/gui/src/main/webapp/tests/package-lock.json
@@ -0,0 +1,4260 @@
+{
+  "name": "Onos-GUI-tests",
+  "version": "1.0.0",
+  "lockfileVersion": 1,
+  "dependencies": {
+    "jasmine-core": {
+      "version": "2.6.4",
+      "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.6.4.tgz",
+      "integrity": "sha1-3skmzQqfoof7bbXHVfpIfnTOysU=",
+      "dev": true
+    },
+    "karma": {
+      "version": "0.13.22",
+      "resolved": "https://registry.npmjs.org/karma/-/karma-0.13.22.tgz",
+      "integrity": "sha1-B3ULG9Bj1+fnuRvNLmNU2PKqh0Q=",
+      "dev": true,
+      "dependencies": {
+        "batch": {
+          "version": "0.5.3",
+          "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz",
+          "integrity": "sha1-PzQU84AyF0O/wQQvmoP/HVgk1GQ=",
+          "dev": true
+        },
+        "bluebird": {
+          "version": "2.11.0",
+          "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz",
+          "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=",
+          "dev": true
+        },
+        "body-parser": {
+          "version": "1.17.2",
+          "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz",
+          "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=",
+          "dev": true,
+          "dependencies": {
+            "bytes": {
+              "version": "2.4.0",
+              "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz",
+              "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=",
+              "dev": true
+            },
+            "content-type": {
+              "version": "1.0.2",
+              "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz",
+              "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=",
+              "dev": true
+            },
+            "debug": {
+              "version": "2.6.7",
+              "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz",
+              "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=",
+              "dev": true,
+              "dependencies": {
+                "ms": {
+                  "version": "2.0.0",
+                  "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+                  "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+                  "dev": true
+                }
+              }
+            },
+            "depd": {
+              "version": "1.1.0",
+              "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz",
+              "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=",
+              "dev": true
+            },
+            "http-errors": {
+              "version": "1.6.1",
+              "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz",
+              "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=",
+              "dev": true,
+              "dependencies": {
+                "inherits": {
+                  "version": "2.0.3",
+                  "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+                  "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+                  "dev": true
+                },
+                "setprototypeof": {
+                  "version": "1.0.3",
+                  "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
+                  "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
+                  "dev": true
+                },
+                "statuses": {
+                  "version": "1.3.1",
+                  "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
+                  "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
+                  "dev": true
+                }
+              }
+            },
+            "iconv-lite": {
+              "version": "0.4.15",
+              "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz",
+              "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=",
+              "dev": true
+            },
+            "on-finished": {
+              "version": "2.3.0",
+              "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+              "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+              "dev": true,
+              "dependencies": {
+                "ee-first": {
+                  "version": "1.1.1",
+                  "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+                  "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+                  "dev": true
+                }
+              }
+            },
+            "qs": {
+              "version": "6.4.0",
+              "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
+              "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=",
+              "dev": true
+            },
+            "raw-body": {
+              "version": "2.2.0",
+              "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz",
+              "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=",
+              "dev": true,
+              "dependencies": {
+                "unpipe": {
+                  "version": "1.0.0",
+                  "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+                  "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+                  "dev": true
+                }
+              }
+            },
+            "type-is": {
+              "version": "1.6.15",
+              "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
+              "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=",
+              "dev": true,
+              "dependencies": {
+                "media-typer": {
+                  "version": "0.3.0",
+                  "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+                  "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+                  "dev": true
+                },
+                "mime-types": {
+                  "version": "2.1.15",
+                  "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
+                  "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=",
+                  "dev": true,
+                  "dependencies": {
+                    "mime-db": {
+                      "version": "1.27.0",
+                      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz",
+                      "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=",
+                      "dev": true
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "chokidar": {
+          "version": "1.7.0",
+          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
+          "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
+          "dev": true,
+          "dependencies": {
+            "anymatch": {
+              "version": "1.3.0",
+              "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz",
+              "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=",
+              "dev": true,
+              "dependencies": {
+                "arrify": {
+                  "version": "1.0.1",
+                  "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+                  "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+                  "dev": true
+                },
+                "micromatch": {
+                  "version": "2.3.11",
+                  "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+                  "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+                  "dev": true,
+                  "dependencies": {
+                    "arr-diff": {
+                      "version": "2.0.0",
+                      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+                      "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+                      "dev": true,
+                      "dependencies": {
+                        "arr-flatten": {
+                          "version": "1.1.0",
+                          "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+                          "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=",
+                          "dev": true
+                        }
+                      }
+                    },
+                    "array-unique": {
+                      "version": "0.2.1",
+                      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+                      "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+                      "dev": true
+                    },
+                    "braces": {
+                      "version": "1.8.5",
+                      "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+                      "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+                      "dev": true,
+                      "dependencies": {
+                        "expand-range": {
+                          "version": "1.8.2",
+                          "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
+                          "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+                          "dev": true,
+                          "dependencies": {
+                            "fill-range": {
+                              "version": "2.2.3",
+                              "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
+                              "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
+                              "dev": true,
+                              "dependencies": {
+                                "is-number": {
+                                  "version": "2.1.0",
+                                  "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+                                  "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+                                  "dev": true
+                                },
+                                "isobject": {
+                                  "version": "2.1.0",
+                                  "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+                                  "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+                                  "dev": true,
+                                  "dependencies": {
+                                    "isarray": {
+                                      "version": "1.0.0",
+                                      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+                                      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+                                      "dev": true
+                                    }
+                                  }
+                                },
+                                "randomatic": {
+                                  "version": "1.1.7",
+                                  "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
+                                  "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=",
+                                  "dev": true,
+                                  "dependencies": {
+                                    "is-number": {
+                                      "version": "3.0.0",
+                                      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+                                      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+                                      "dev": true,
+                                      "dependencies": {
+                                        "kind-of": {
+                                          "version": "3.2.2",
+                                          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+                                          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+                                          "dev": true,
+                                          "dependencies": {
+                                            "is-buffer": {
+                                              "version": "1.1.5",
+                                              "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
+                                              "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
+                                              "dev": true
+                                            }
+                                          }
+                                        }
+                                      }
+                                    },
+                                    "kind-of": {
+                                      "version": "4.0.0",
+                                      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+                                      "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+                                      "dev": true,
+                                      "dependencies": {
+                                        "is-buffer": {
+                                          "version": "1.1.5",
+                                          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
+                                          "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
+                                          "dev": true
+                                        }
+                                      }
+                                    }
+                                  }
+                                },
+                                "repeat-string": {
+                                  "version": "1.6.1",
+                                  "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+                                  "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+                                  "dev": true
+                                }
+                              }
+                            }
+                          }
+                        },
+                        "preserve": {
+                          "version": "0.2.0",
+                          "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
+                          "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
+                          "dev": true
+                        },
+                        "repeat-element": {
+                          "version": "1.1.2",
+                          "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
+                          "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
+                          "dev": true
+                        }
+                      }
+                    },
+                    "expand-brackets": {
+                      "version": "0.1.5",
+                      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+                      "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+                      "dev": true,
+                      "dependencies": {
+                        "is-posix-bracket": {
+                          "version": "0.1.1",
+                          "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
+                          "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
+                          "dev": true
+                        }
+                      }
+                    },
+                    "extglob": {
+                      "version": "0.3.2",
+                      "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+                      "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+                      "dev": true
+                    },
+                    "filename-regex": {
+                      "version": "2.0.1",
+                      "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
+                      "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
+                      "dev": true
+                    },
+                    "is-extglob": {
+                      "version": "1.0.0",
+                      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+                      "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+                      "dev": true
+                    },
+                    "kind-of": {
+                      "version": "3.2.2",
+                      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+                      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+                      "dev": true,
+                      "dependencies": {
+                        "is-buffer": {
+                          "version": "1.1.5",
+                          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
+                          "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
+                          "dev": true
+                        }
+                      }
+                    },
+                    "normalize-path": {
+                      "version": "2.1.1",
+                      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+                      "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+                      "dev": true,
+                      "dependencies": {
+                        "remove-trailing-separator": {
+                          "version": "1.0.2",
+                          "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz",
+                          "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=",
+                          "dev": true
+                        }
+                      }
+                    },
+                    "object.omit": {
+                      "version": "2.0.1",
+                      "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+                      "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+                      "dev": true,
+                      "dependencies": {
+                        "for-own": {
+                          "version": "0.1.5",
+                          "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+                          "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+                          "dev": true,
+                          "dependencies": {
+                            "for-in": {
+                              "version": "1.0.2",
+                              "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+                              "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+                              "dev": true
+                            }
+                          }
+                        },
+                        "is-extendable": {
+                          "version": "0.1.1",
+                          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+                          "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+                          "dev": true
+                        }
+                      }
+                    },
+                    "parse-glob": {
+                      "version": "3.0.4",
+                      "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+                      "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+                      "dev": true,
+                      "dependencies": {
+                        "glob-base": {
+                          "version": "0.3.0",
+                          "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+                          "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+                          "dev": true
+                        },
+                        "is-dotfile": {
+                          "version": "1.0.3",
+                          "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+                          "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
+                          "dev": true
+                        }
+                      }
+                    },
+                    "regex-cache": {
+                      "version": "0.4.3",
+                      "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz",
+                      "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=",
+                      "dev": true,
+                      "dependencies": {
+                        "is-equal-shallow": {
+                          "version": "0.1.3",
+                          "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
+                          "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+                          "dev": true
+                        },
+                        "is-primitive": {
+                          "version": "2.0.0",
+                          "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
+                          "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
+                          "dev": true
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            },
+            "async-each": {
+              "version": "1.0.1",
+              "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
+              "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
+              "dev": true
+            },
+            "fsevents": {
+              "version": "1.1.2",
+              "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz",
+              "integrity": "sha1-MoK3E/s62A7eDp/PRhG1qm/AM/Q=",
+              "dev": true,
+              "optional": true,
+              "dependencies": {
+                "abbrev": {
+                  "version": "1.1.0",
+                  "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz",
+                  "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=",
+                  "dev": true,
+                  "optional": true
+                },
+                "ajv": {
+                  "version": "4.11.8",
+                  "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
+                  "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
+                  "dev": true,
+                  "optional": true
+                },
+                "ansi-regex": {
+                  "version": "2.1.1",
+                  "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+                  "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+                  "dev": true
+                },
+                "aproba": {
+                  "version": "1.1.1",
+                  "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz",
+                  "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=",
+                  "dev": true,
+                  "optional": true
+                },
+                "are-we-there-yet": {
+                  "version": "1.1.4",
+                  "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz",
+                  "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
+                  "dev": true,
+                  "optional": true
+                },
+                "asn1": {
+                  "version": "0.2.3",
+                  "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
+                  "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
+                  "dev": true,
+                  "optional": true
+                },
+                "assert-plus": {
+                  "version": "0.2.0",
+                  "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
+                  "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
+                  "dev": true,
+                  "optional": true
+                },
+                "asynckit": {
+                  "version": "0.4.0",
+                  "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+                  "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+                  "dev": true,
+                  "optional": true
+                },
+                "aws-sign2": {
+                  "version": "0.6.0",
+                  "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
+                  "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
+                  "dev": true,
+                  "optional": true
+                },
+                "aws4": {
+                  "version": "1.6.0",
+                  "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
+                  "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=",
+                  "dev": true,
+                  "optional": true
+                },
+                "balanced-match": {
+                  "version": "0.4.2",
+                  "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
+                  "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
+                  "dev": true
+                },
+                "bcrypt-pbkdf": {
+                  "version": "1.0.1",
+                  "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
+                  "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
+                  "dev": true,
+                  "optional": true
+                },
+                "block-stream": {
+                  "version": "0.0.9",
+                  "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
+                  "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+                  "dev": true
+                },
+                "boom": {
+                  "version": "2.10.1",
+                  "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
+                  "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+                  "dev": true
+                },
+                "brace-expansion": {
+                  "version": "1.1.7",
+                  "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz",
+                  "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=",
+                  "dev": true
+                },
+                "buffer-shims": {
+                  "version": "1.0.0",
+                  "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz",
+                  "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=",
+                  "dev": true
+                },
+                "caseless": {
+                  "version": "0.12.0",
+                  "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+                  "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+                  "dev": true,
+                  "optional": true
+                },
+                "co": {
+                  "version": "4.6.0",
+                  "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+                  "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+                  "dev": true,
+                  "optional": true
+                },
+                "code-point-at": {
+                  "version": "1.1.0",
+                  "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+                  "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+                  "dev": true
+                },
+                "combined-stream": {
+                  "version": "1.0.5",
+                  "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
+                  "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
+                  "dev": true
+                },
+                "concat-map": {
+                  "version": "0.0.1",
+                  "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+                  "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+                  "dev": true
+                },
+                "console-control-strings": {
+                  "version": "1.1.0",
+                  "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+                  "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
+                  "dev": true
+                },
+                "core-util-is": {
+                  "version": "1.0.2",
+                  "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+                  "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+                  "dev": true
+                },
+                "cryptiles": {
+                  "version": "2.0.5",
+                  "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
+                  "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
+                  "dev": true,
+                  "optional": true
+                },
+                "dashdash": {
+                  "version": "1.14.1",
+                  "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+                  "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+                  "dev": true,
+                  "optional": true,
+                  "dependencies": {
+                    "assert-plus": {
+                      "version": "1.0.0",
+                      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+                      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+                      "dev": true,
+                      "optional": true
+                    }
+                  }
+                },
+                "debug": {
+                  "version": "2.6.8",
+                  "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
+                  "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
+                  "dev": true,
+                  "optional": true
+                },
+                "deep-extend": {
+                  "version": "0.4.2",
+                  "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz",
+                  "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=",
+                  "dev": true,
+                  "optional": true
+                },
+                "delayed-stream": {
+                  "version": "1.0.0",
+                  "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+                  "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+                  "dev": true
+                },
+                "delegates": {
+                  "version": "1.0.0",
+                  "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+                  "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
+                  "dev": true,
+                  "optional": true
+                },
+                "ecc-jsbn": {
+                  "version": "0.1.1",
+                  "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
+                  "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+                  "dev": true,
+                  "optional": true
+                },
+                "extend": {
+                  "version": "3.0.1",
+                  "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+                  "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
+                  "dev": true,
+                  "optional": true
+                },
+                "extsprintf": {
+                  "version": "1.0.2",
+                  "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz",
+                  "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=",
+                  "dev": true
+                },
+                "forever-agent": {
+                  "version": "0.6.1",
+                  "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+                  "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+                  "dev": true,
+                  "optional": true
+                },
+                "form-data": {
+                  "version": "2.1.4",
+                  "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
+                  "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
+                  "dev": true,
+                  "optional": true
+                },
+                "fs.realpath": {
+                  "version": "1.0.0",
+                  "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+                  "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+                  "dev": true
+                },
+                "fstream": {
+                  "version": "1.0.11",
+                  "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
+                  "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
+                  "dev": true
+                },
+                "fstream-ignore": {
+                  "version": "1.0.5",
+                  "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz",
+                  "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=",
+                  "dev": true,
+                  "optional": true
+                },
+                "gauge": {
+                  "version": "2.7.4",
+                  "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+                  "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+                  "dev": true,
+                  "optional": true
+                },
+                "getpass": {
+                  "version": "0.1.7",
+                  "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+                  "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+                  "dev": true,
+                  "optional": true,
+                  "dependencies": {
+                    "assert-plus": {
+                      "version": "1.0.0",
+                      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+                      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+                      "dev": true,
+                      "optional": true
+                    }
+                  }
+                },
+                "glob": {
+                  "version": "7.1.2",
+                  "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+                  "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+                  "dev": true
+                },
+                "graceful-fs": {
+                  "version": "4.1.11",
+                  "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+                  "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+                  "dev": true
+                },
+                "har-schema": {
+                  "version": "1.0.5",
+                  "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
+                  "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=",
+                  "dev": true,
+                  "optional": true
+                },
+                "har-validator": {
+                  "version": "4.2.1",
+                  "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
+                  "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
+                  "dev": true,
+                  "optional": true
+                },
+                "has-unicode": {
+                  "version": "2.0.1",
+                  "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+                  "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
+                  "dev": true,
+                  "optional": true
+                },
+                "hawk": {
+                  "version": "3.1.3",
+                  "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
+                  "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
+                  "dev": true,
+                  "optional": true
+                },
+                "hoek": {
+                  "version": "2.16.3",
+                  "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
+                  "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
+                  "dev": true
+                },
+                "http-signature": {
+                  "version": "1.1.1",
+                  "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
+                  "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
+                  "dev": true,
+                  "optional": true
+                },
+                "inflight": {
+                  "version": "1.0.6",
+                  "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+                  "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+                  "dev": true
+                },
+                "inherits": {
+                  "version": "2.0.3",
+                  "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+                  "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+                  "dev": true
+                },
+                "ini": {
+                  "version": "1.3.4",
+                  "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz",
+                  "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=",
+                  "dev": true,
+                  "optional": true
+                },
+                "is-fullwidth-code-point": {
+                  "version": "1.0.0",
+                  "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+                  "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+                  "dev": true
+                },
+                "is-typedarray": {
+                  "version": "1.0.0",
+                  "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+                  "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+                  "dev": true,
+                  "optional": true
+                },
+                "isarray": {
+                  "version": "1.0.0",
+                  "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+                  "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+                  "dev": true
+                },
+                "isstream": {
+                  "version": "0.1.2",
+                  "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+                  "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+                  "dev": true,
+                  "optional": true
+                },
+                "jodid25519": {
+                  "version": "1.0.2",
+                  "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz",
+                  "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=",
+                  "dev": true,
+                  "optional": true
+                },
+                "jsbn": {
+                  "version": "0.1.1",
+                  "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+                  "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+                  "dev": true,
+                  "optional": true
+                },
+                "json-schema": {
+                  "version": "0.2.3",
+                  "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+                  "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+                  "dev": true,
+                  "optional": true
+                },
+                "json-stable-stringify": {
+                  "version": "1.0.1",
+                  "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+                  "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+                  "dev": true,
+                  "optional": true
+                },
+                "json-stringify-safe": {
+                  "version": "5.0.1",
+                  "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+                  "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+                  "dev": true,
+                  "optional": true
+                },
+                "jsonify": {
+                  "version": "0.0.0",
+                  "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+                  "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+                  "dev": true,
+                  "optional": true
+                },
+                "jsprim": {
+                  "version": "1.4.0",
+                  "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz",
+                  "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=",
+                  "dev": true,
+                  "optional": true,
+                  "dependencies": {
+                    "assert-plus": {
+                      "version": "1.0.0",
+                      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+                      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+                      "dev": true,
+                      "optional": true
+                    }
+                  }
+                },
+                "mime-db": {
+                  "version": "1.27.0",
+                  "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz",
+                  "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=",
+                  "dev": true
+                },
+                "mime-types": {
+                  "version": "2.1.15",
+                  "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
+                  "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=",
+                  "dev": true
+                },
+                "minimatch": {
+                  "version": "3.0.4",
+                  "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+                  "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+                  "dev": true
+                },
+                "minimist": {
+                  "version": "0.0.8",
+                  "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+                  "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+                  "dev": true
+                },
+                "mkdirp": {
+                  "version": "0.5.1",
+                  "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+                  "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+                  "dev": true
+                },
+                "ms": {
+                  "version": "2.0.0",
+                  "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+                  "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+                  "dev": true,
+                  "optional": true
+                },
+                "nan": {
+                  "version": "2.6.2",
+                  "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz",
+                  "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=",
+                  "dev": true,
+                  "optional": true
+                },
+                "node-pre-gyp": {
+                  "version": "0.6.36",
+                  "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz",
+                  "integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=",
+                  "dev": true,
+                  "optional": true
+                },
+                "nopt": {
+                  "version": "4.0.1",
+                  "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
+                  "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
+                  "dev": true,
+                  "optional": true
+                },
+                "npmlog": {
+                  "version": "4.1.0",
+                  "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz",
+                  "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==",
+                  "dev": true,
+                  "optional": true
+                },
+                "number-is-nan": {
+                  "version": "1.0.1",
+                  "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+                  "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+                  "dev": true
+                },
+                "oauth-sign": {
+                  "version": "0.8.2",
+                  "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
+                  "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
+                  "dev": true,
+                  "optional": true
+                },
+                "object-assign": {
+                  "version": "4.1.1",
+                  "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+                  "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+                  "dev": true,
+                  "optional": true
+                },
+                "once": {
+                  "version": "1.4.0",
+                  "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+                  "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+                  "dev": true
+                },
+                "os-homedir": {
+                  "version": "1.0.2",
+                  "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+                  "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+                  "dev": true,
+                  "optional": true
+                },
+                "os-tmpdir": {
+                  "version": "1.0.2",
+                  "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+                  "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+                  "dev": true,
+                  "optional": true
+                },
+                "osenv": {
+                  "version": "0.1.4",
+                  "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz",
+                  "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=",
+                  "dev": true,
+                  "optional": true
+                },
+                "path-is-absolute": {
+                  "version": "1.0.1",
+                  "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+                  "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+                  "dev": true
+                },
+                "performance-now": {
+                  "version": "0.2.0",
+                  "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
+                  "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=",
+                  "dev": true,
+                  "optional": true
+                },
+                "process-nextick-args": {
+                  "version": "1.0.7",
+                  "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+                  "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
+                  "dev": true
+                },
+                "punycode": {
+                  "version": "1.4.1",
+                  "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+                  "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+                  "dev": true,
+                  "optional": true
+                },
+                "qs": {
+                  "version": "6.4.0",
+                  "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
+                  "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=",
+                  "dev": true,
+                  "optional": true
+                },
+                "rc": {
+                  "version": "1.2.1",
+                  "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz",
+                  "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=",
+                  "dev": true,
+                  "optional": true,
+                  "dependencies": {
+                    "minimist": {
+                      "version": "1.2.0",
+                      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+                      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+                      "dev": true,
+                      "optional": true
+                    }
+                  }
+                },
+                "readable-stream": {
+                  "version": "2.2.9",
+                  "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz",
+                  "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=",
+                  "dev": true
+                },
+                "request": {
+                  "version": "2.81.0",
+                  "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
+                  "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
+                  "dev": true,
+                  "optional": true
+                },
+                "rimraf": {
+                  "version": "2.6.1",
+                  "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz",
+                  "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=",
+                  "dev": true
+                },
+                "safe-buffer": {
+                  "version": "5.0.1",
+                  "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz",
+                  "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=",
+                  "dev": true
+                },
+                "semver": {
+                  "version": "5.3.0",
+                  "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+                  "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+                  "dev": true,
+                  "optional": true
+                },
+                "set-blocking": {
+                  "version": "2.0.0",
+                  "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+                  "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+                  "dev": true,
+                  "optional": true
+                },
+                "signal-exit": {
+                  "version": "3.0.2",
+                  "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+                  "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+                  "dev": true,
+                  "optional": true
+                },
+                "sntp": {
+                  "version": "1.0.9",
+                  "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
+                  "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
+                  "dev": true,
+                  "optional": true
+                },
+                "sshpk": {
+                  "version": "1.13.0",
+                  "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz",
+                  "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=",
+                  "dev": true,
+                  "optional": true,
+                  "dependencies": {
+                    "assert-plus": {
+                      "version": "1.0.0",
+                      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+                      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+                      "dev": true,
+                      "optional": true
+                    }
+                  }
+                },
+                "string_decoder": {
+                  "version": "1.0.1",
+                  "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz",
+                  "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=",
+                  "dev": true
+                },
+                "string-width": {
+                  "version": "1.0.2",
+                  "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+                  "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+                  "dev": true
+                },
+                "stringstream": {
+                  "version": "0.0.5",
+                  "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
+                  "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
+                  "dev": true,
+                  "optional": true
+                },
+                "strip-ansi": {
+                  "version": "3.0.1",
+                  "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+                  "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+                  "dev": true
+                },
+                "strip-json-comments": {
+                  "version": "2.0.1",
+                  "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+                  "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+                  "dev": true,
+                  "optional": true
+                },
+                "tar": {
+                  "version": "2.2.1",
+                  "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
+                  "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
+                  "dev": true
+                },
+                "tar-pack": {
+                  "version": "3.4.0",
+                  "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz",
+                  "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=",
+                  "dev": true,
+                  "optional": true
+                },
+                "tough-cookie": {
+                  "version": "2.3.2",
+                  "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz",
+                  "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=",
+                  "dev": true,
+                  "optional": true
+                },
+                "tunnel-agent": {
+                  "version": "0.6.0",
+                  "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+                  "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+                  "dev": true,
+                  "optional": true
+                },
+                "tweetnacl": {
+                  "version": "0.14.5",
+                  "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+                  "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+                  "dev": true,
+                  "optional": true
+                },
+                "uid-number": {
+                  "version": "0.0.6",
+                  "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz",
+                  "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=",
+                  "dev": true,
+                  "optional": true
+                },
+                "util-deprecate": {
+                  "version": "1.0.2",
+                  "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+                  "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+                  "dev": true
+                },
+                "uuid": {
+                  "version": "3.0.1",
+                  "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz",
+                  "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=",
+                  "dev": true,
+                  "optional": true
+                },
+                "verror": {
+                  "version": "1.3.6",
+                  "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz",
+                  "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=",
+                  "dev": true,
+                  "optional": true
+                },
+                "wide-align": {
+                  "version": "1.1.2",
+                  "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
+                  "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
+                  "dev": true,
+                  "optional": true
+                },
+                "wrappy": {
+                  "version": "1.0.2",
+                  "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+                  "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+                  "dev": true
+                }
+              }
+            },
+            "glob-parent": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+              "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+              "dev": true
+            },
+            "inherits": {
+              "version": "2.0.3",
+              "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+              "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+              "dev": true
+            },
+            "is-binary-path": {
+              "version": "1.0.1",
+              "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+              "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+              "dev": true,
+              "dependencies": {
+                "binary-extensions": {
+                  "version": "1.8.0",
+                  "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz",
+                  "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=",
+                  "dev": true
+                }
+              }
+            },
+            "is-glob": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+              "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+              "dev": true,
+              "dependencies": {
+                "is-extglob": {
+                  "version": "1.0.0",
+                  "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+                  "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+                  "dev": true
+                }
+              }
+            },
+            "path-is-absolute": {
+              "version": "1.0.1",
+              "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+              "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+              "dev": true
+            },
+            "readdirp": {
+              "version": "2.1.0",
+              "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
+              "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
+              "dev": true,
+              "dependencies": {
+                "readable-stream": {
+                  "version": "2.3.3",
+                  "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+                  "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=",
+                  "dev": true,
+                  "dependencies": {
+                    "core-util-is": {
+                      "version": "1.0.2",
+                      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+                      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+                      "dev": true
+                    },
+                    "isarray": {
+                      "version": "1.0.0",
+                      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+                      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+                      "dev": true
+                    },
+                    "process-nextick-args": {
+                      "version": "1.0.7",
+                      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+                      "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
+                      "dev": true
+                    },
+                    "safe-buffer": {
+                      "version": "5.1.1",
+                      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+                      "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=",
+                      "dev": true
+                    },
+                    "string_decoder": {
+                      "version": "1.0.3",
+                      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
+                      "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=",
+                      "dev": true
+                    },
+                    "util-deprecate": {
+                      "version": "1.0.2",
+                      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+                      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+                      "dev": true
+                    }
+                  }
+                },
+                "set-immediate-shim": {
+                  "version": "1.0.1",
+                  "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
+                  "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
+                  "dev": true
+                }
+              }
+            }
+          }
+        },
+        "colors": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+          "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
+          "dev": true
+        },
+        "connect": {
+          "version": "3.6.2",
+          "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.2.tgz",
+          "integrity": "sha1-aU6NIGgb/kkCgsiriGvpjwn0L+c=",
+          "dev": true,
+          "dependencies": {
+            "debug": {
+              "version": "2.6.7",
+              "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz",
+              "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=",
+              "dev": true,
+              "dependencies": {
+                "ms": {
+                  "version": "2.0.0",
+                  "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+                  "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+                  "dev": true
+                }
+              }
+            },
+            "finalhandler": {
+              "version": "1.0.3",
+              "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz",
+              "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=",
+              "dev": true,
+              "dependencies": {
+                "encodeurl": {
+                  "version": "1.0.1",
+                  "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
+                  "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=",
+                  "dev": true
+                },
+                "escape-html": {
+                  "version": "1.0.3",
+                  "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+                  "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+                  "dev": true
+                },
+                "on-finished": {
+                  "version": "2.3.0",
+                  "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+                  "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+                  "dev": true,
+                  "dependencies": {
+                    "ee-first": {
+                      "version": "1.1.1",
+                      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+                      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+                      "dev": true
+                    }
+                  }
+                },
+                "statuses": {
+                  "version": "1.3.1",
+                  "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
+                  "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
+                  "dev": true
+                },
+                "unpipe": {
+                  "version": "1.0.0",
+                  "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+                  "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+                  "dev": true
+                }
+              }
+            },
+            "parseurl": {
+              "version": "1.3.1",
+              "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz",
+              "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=",
+              "dev": true
+            },
+            "utils-merge": {
+              "version": "1.0.0",
+              "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
+              "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=",
+              "dev": true
+            }
+          }
+        },
+        "core-js": {
+          "version": "2.4.1",
+          "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz",
+          "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=",
+          "dev": true
+        },
+        "di": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz",
+          "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=",
+          "dev": true
+        },
+        "dom-serialize": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz",
+          "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=",
+          "dev": true,
+          "dependencies": {
+            "custom-event": {
+              "version": "1.0.1",
+              "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
+              "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=",
+              "dev": true
+            },
+            "ent": {
+              "version": "2.2.0",
+              "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
+              "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=",
+              "dev": true
+            },
+            "extend": {
+              "version": "3.0.1",
+              "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+              "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
+              "dev": true
+            },
+            "void-elements": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
+              "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=",
+              "dev": true
+            }
+          }
+        },
+        "expand-braces": {
+          "version": "0.1.2",
+          "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz",
+          "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=",
+          "dev": true,
+          "dependencies": {
+            "array-slice": {
+              "version": "0.2.3",
+              "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
+              "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
+              "dev": true
+            },
+            "array-unique": {
+              "version": "0.2.1",
+              "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+              "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+              "dev": true
+            },
+            "braces": {
+              "version": "0.1.5",
+              "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz",
+              "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=",
+              "dev": true,
+              "dependencies": {
+                "expand-range": {
+                  "version": "0.1.1",
+                  "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz",
+                  "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=",
+                  "dev": true,
+                  "dependencies": {
+                    "is-number": {
+                      "version": "0.1.1",
+                      "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz",
+                      "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=",
+                      "dev": true
+                    },
+                    "repeat-string": {
+                      "version": "0.2.2",
+                      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz",
+                      "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=",
+                      "dev": true
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "glob": {
+          "version": "7.1.2",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+          "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=",
+          "dev": true,
+          "dependencies": {
+            "fs.realpath": {
+              "version": "1.0.0",
+              "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+              "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+              "dev": true
+            },
+            "inflight": {
+              "version": "1.0.6",
+              "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+              "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+              "dev": true,
+              "dependencies": {
+                "wrappy": {
+                  "version": "1.0.2",
+                  "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+                  "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+                  "dev": true
+                }
+              }
+            },
+            "inherits": {
+              "version": "2.0.3",
+              "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+              "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+              "dev": true
+            },
+            "once": {
+              "version": "1.4.0",
+              "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+              "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+              "dev": true,
+              "dependencies": {
+                "wrappy": {
+                  "version": "1.0.2",
+                  "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+                  "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+                  "dev": true
+                }
+              }
+            },
+            "path-is-absolute": {
+              "version": "1.0.1",
+              "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+              "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+              "dev": true
+            }
+          }
+        },
+        "graceful-fs": {
+          "version": "4.1.11",
+          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+          "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+          "dev": true
+        },
+        "http-proxy": {
+          "version": "1.16.2",
+          "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz",
+          "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=",
+          "dev": true,
+          "dependencies": {
+            "eventemitter3": {
+              "version": "1.2.0",
+              "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz",
+              "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=",
+              "dev": true
+            },
+            "requires-port": {
+              "version": "1.0.0",
+              "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+              "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+              "dev": true
+            }
+          }
+        },
+        "isbinaryfile": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz",
+          "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=",
+          "dev": true
+        },
+        "lodash": {
+          "version": "3.10.1",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+          "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
+          "dev": true
+        },
+        "log4js": {
+          "version": "0.6.38",
+          "resolved": "https://registry.npmjs.com/log4js/-/log4js-0.6.38.tgz",
+          "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=",
+          "dev": true,
+          "dependencies": {
+            "readable-stream": {
+              "version": "1.0.34",
+              "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+              "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+              "dev": true,
+              "dependencies": {
+                "core-util-is": {
+                  "version": "1.0.2",
+                  "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+                  "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+                  "dev": true
+                },
+                "inherits": {
+                  "version": "2.0.3",
+                  "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+                  "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+                  "dev": true
+                },
+                "isarray": {
+                  "version": "0.0.1",
+                  "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+                  "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+                  "dev": true
+                },
+                "string_decoder": {
+                  "version": "0.10.31",
+                  "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+                  "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+                  "dev": true
+                }
+              }
+            },
+            "semver": {
+              "version": "4.3.6",
+              "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
+              "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
+              "dev": true
+            }
+          }
+        },
+        "mime": {
+          "version": "1.3.6",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz",
+          "integrity": "sha1-WR2E02U6awtKO5343lqoEI5y5eA=",
+          "dev": true
+        },
+        "minimatch": {
+          "version": "3.0.4",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+          "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+          "dev": true,
+          "dependencies": {
+            "brace-expansion": {
+              "version": "1.1.8",
+              "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
+              "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
+              "dev": true,
+              "dependencies": {
+                "balanced-match": {
+                  "version": "1.0.0",
+                  "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+                  "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+                  "dev": true
+                },
+                "concat-map": {
+                  "version": "0.0.1",
+                  "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+                  "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+                  "dev": true
+                }
+              }
+            }
+          }
+        },
+        "optimist": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+          "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+          "dev": true,
+          "dependencies": {
+            "minimist": {
+              "version": "0.0.10",
+              "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+              "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
+              "dev": true
+            },
+            "wordwrap": {
+              "version": "0.0.3",
+              "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+              "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+              "dev": true
+            }
+          }
+        },
+        "rimraf": {
+          "version": "2.6.1",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz",
+          "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=",
+          "dev": true
+        },
+        "socket.io": {
+          "version": "1.7.4",
+          "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.4.tgz",
+          "integrity": "sha1-L37O3DORvy1cc+KR/iM+bjTU3QA=",
+          "dev": true,
+          "dependencies": {
+            "debug": {
+              "version": "2.3.3",
+              "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
+              "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
+              "dev": true,
+              "dependencies": {
+                "ms": {
+                  "version": "0.7.2",
+                  "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
+                  "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
+                  "dev": true
+                }
+              }
+            },
+            "engine.io": {
+              "version": "1.8.4",
+              "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.4.tgz",
+              "integrity": "sha1-d7zhK4Dl1gQpM3/sOw2vaR68kAM=",
+              "dev": true,
+              "dependencies": {
+                "accepts": {
+                  "version": "1.3.3",
+                  "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
+                  "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=",
+                  "dev": true,
+                  "dependencies": {
+                    "mime-types": {
+                      "version": "2.1.15",
+                      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
+                      "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=",
+                      "dev": true,
+                      "dependencies": {
+                        "mime-db": {
+                          "version": "1.27.0",
+                          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz",
+                          "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=",
+                          "dev": true
+                        }
+                      }
+                    },
+                    "negotiator": {
+                      "version": "0.6.1",
+                      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
+                      "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
+                      "dev": true
+                    }
+                  }
+                },
+                "base64id": {
+                  "version": "1.0.0",
+                  "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
+                  "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=",
+                  "dev": true
+                },
+                "cookie": {
+                  "version": "0.3.1",
+                  "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
+                  "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
+                  "dev": true
+                },
+                "engine.io-parser": {
+                  "version": "1.3.2",
+                  "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz",
+                  "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=",
+                  "dev": true,
+                  "dependencies": {
+                    "after": {
+                      "version": "0.8.2",
+                      "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
+                      "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
+                      "dev": true
+                    },
+                    "arraybuffer.slice": {
+                      "version": "0.0.6",
+                      "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz",
+                      "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=",
+                      "dev": true
+                    },
+                    "base64-arraybuffer": {
+                      "version": "0.1.5",
+                      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
+                      "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=",
+                      "dev": true
+                    },
+                    "blob": {
+                      "version": "0.0.4",
+                      "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
+                      "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=",
+                      "dev": true
+                    },
+                    "wtf-8": {
+                      "version": "1.0.0",
+                      "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz",
+                      "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=",
+                      "dev": true
+                    }
+                  }
+                },
+                "ws": {
+                  "version": "1.1.4",
+                  "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.4.tgz",
+                  "integrity": "sha1-V/QNA2gy5fUFVmKjl8Tedu1mv2E=",
+                  "dev": true,
+                  "dependencies": {
+                    "options": {
+                      "version": "0.0.6",
+                      "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
+                      "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=",
+                      "dev": true
+                    },
+                    "ultron": {
+                      "version": "1.0.2",
+                      "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
+                      "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=",
+                      "dev": true
+                    }
+                  }
+                }
+              }
+            },
+            "has-binary": {
+              "version": "0.1.7",
+              "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz",
+              "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=",
+              "dev": true,
+              "dependencies": {
+                "isarray": {
+                  "version": "0.0.1",
+                  "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+                  "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+                  "dev": true
+                }
+              }
+            },
+            "object-assign": {
+              "version": "4.1.0",
+              "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz",
+              "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=",
+              "dev": true
+            },
+            "socket.io-adapter": {
+              "version": "0.5.0",
+              "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz",
+              "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=",
+              "dev": true
+            },
+            "socket.io-client": {
+              "version": "1.7.4",
+              "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.4.tgz",
+              "integrity": "sha1-7J+CA1btme9tNX8HVtZIcXvdQoE=",
+              "dev": true,
+              "dependencies": {
+                "backo2": {
+                  "version": "1.0.2",
+                  "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
+                  "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=",
+                  "dev": true
+                },
+                "component-bind": {
+                  "version": "1.0.0",
+                  "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
+                  "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=",
+                  "dev": true
+                },
+                "component-emitter": {
+                  "version": "1.2.1",
+                  "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
+                  "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
+                  "dev": true
+                },
+                "engine.io-client": {
+                  "version": "1.8.4",
+                  "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.4.tgz",
+                  "integrity": "sha1-n+hd7iWFPKa6viW9KtaHEIY+kcI=",
+                  "dev": true,
+                  "dependencies": {
+                    "component-inherit": {
+                      "version": "0.0.3",
+                      "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
+                      "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
+                      "dev": true
+                    },
+                    "engine.io-parser": {
+                      "version": "1.3.2",
+                      "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz",
+                      "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=",
+                      "dev": true,
+                      "dependencies": {
+                        "after": {
+                          "version": "0.8.2",
+                          "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
+                          "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
+                          "dev": true
+                        },
+                        "arraybuffer.slice": {
+                          "version": "0.0.6",
+                          "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz",
+                          "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=",
+                          "dev": true
+                        },
+                        "base64-arraybuffer": {
+                          "version": "0.1.5",
+                          "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
+                          "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=",
+                          "dev": true
+                        },
+                        "blob": {
+                          "version": "0.0.4",
+                          "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
+                          "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=",
+                          "dev": true
+                        },
+                        "wtf-8": {
+                          "version": "1.0.0",
+                          "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz",
+                          "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=",
+                          "dev": true
+                        }
+                      }
+                    },
+                    "has-cors": {
+                      "version": "1.1.0",
+                      "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
+                      "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=",
+                      "dev": true
+                    },
+                    "parsejson": {
+                      "version": "0.0.3",
+                      "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz",
+                      "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=",
+                      "dev": true,
+                      "dependencies": {
+                        "better-assert": {
+                          "version": "1.0.2",
+                          "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
+                          "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
+                          "dev": true,
+                          "dependencies": {
+                            "callsite": {
+                              "version": "1.0.0",
+                              "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
+                              "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
+                              "dev": true
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "parseqs": {
+                      "version": "0.0.5",
+                      "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
+                      "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
+                      "dev": true,
+                      "dependencies": {
+                        "better-assert": {
+                          "version": "1.0.2",
+                          "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
+                          "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
+                          "dev": true,
+                          "dependencies": {
+                            "callsite": {
+                              "version": "1.0.0",
+                              "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
+                              "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
+                              "dev": true
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "ws": {
+                      "version": "1.1.2",
+                      "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz",
+                      "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=",
+                      "dev": true,
+                      "dependencies": {
+                        "options": {
+                          "version": "0.0.6",
+                          "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
+                          "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=",
+                          "dev": true
+                        },
+                        "ultron": {
+                          "version": "1.0.2",
+                          "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
+                          "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=",
+                          "dev": true
+                        }
+                      }
+                    },
+                    "xmlhttprequest-ssl": {
+                      "version": "1.5.3",
+                      "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz",
+                      "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=",
+                      "dev": true
+                    },
+                    "yeast": {
+                      "version": "0.1.2",
+                      "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
+                      "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
+                      "dev": true
+                    }
+                  }
+                },
+                "indexof": {
+                  "version": "0.0.1",
+                  "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
+                  "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
+                  "dev": true
+                },
+                "object-component": {
+                  "version": "0.0.3",
+                  "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
+                  "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=",
+                  "dev": true
+                },
+                "parseuri": {
+                  "version": "0.0.5",
+                  "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
+                  "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
+                  "dev": true,
+                  "dependencies": {
+                    "better-assert": {
+                      "version": "1.0.2",
+                      "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
+                      "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
+                      "dev": true,
+                      "dependencies": {
+                        "callsite": {
+                          "version": "1.0.0",
+                          "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
+                          "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
+                          "dev": true
+                        }
+                      }
+                    }
+                  }
+                },
+                "to-array": {
+                  "version": "0.1.4",
+                  "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
+                  "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=",
+                  "dev": true
+                }
+              }
+            },
+            "socket.io-parser": {
+              "version": "2.3.1",
+              "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz",
+              "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=",
+              "dev": true,
+              "dependencies": {
+                "component-emitter": {
+                  "version": "1.1.2",
+                  "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz",
+                  "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=",
+                  "dev": true
+                },
+                "debug": {
+                  "version": "2.2.0",
+                  "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
+                  "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
+                  "dev": true,
+                  "dependencies": {
+                    "ms": {
+                      "version": "0.7.1",
+                      "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+                      "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
+                      "dev": true
+                    }
+                  }
+                },
+                "isarray": {
+                  "version": "0.0.1",
+                  "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+                  "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+                  "dev": true
+                },
+                "json3": {
+                  "version": "3.3.2",
+                  "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
+                  "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
+                  "dev": true
+                }
+              }
+            }
+          }
+        },
+        "source-map": {
+          "version": "0.5.6",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
+          "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
+          "dev": true
+        },
+        "useragent": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz",
+          "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=",
+          "dev": true,
+          "dependencies": {
+            "lru-cache": {
+              "version": "2.2.4",
+              "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz",
+              "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=",
+              "dev": true
+            },
+            "tmp": {
+              "version": "0.0.31",
+              "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz",
+              "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=",
+              "dev": true,
+              "dependencies": {
+                "os-tmpdir": {
+                  "version": "1.0.2",
+                  "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+                  "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+                  "dev": true
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "karma-babel-preprocessor": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/karma-babel-preprocessor/-/karma-babel-preprocessor-6.0.1.tgz",
+      "integrity": "sha1-euHT5klQ2+EfQht0BAqwj7WmbCE=",
+      "dev": true,
+      "dependencies": {
+        "babel-core": {
+          "version": "6.25.0",
+          "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz",
+          "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=",
+          "dev": true,
+          "dependencies": {
+            "babel-code-frame": {
+              "version": "6.22.0",
+              "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz",
+              "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=",
+              "dev": true,
+              "dependencies": {
+                "chalk": {
+                  "version": "1.1.3",
+                  "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+                  "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+                  "dev": true,
+                  "dependencies": {
+                    "ansi-styles": {
+                      "version": "2.2.1",
+                      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+                      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+                      "dev": true
+                    },
+                    "escape-string-regexp": {
+                      "version": "1.0.5",
+                      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+                      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+                      "dev": true
+                    },
+                    "has-ansi": {
+                      "version": "2.0.0",
+                      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+                      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+                      "dev": true,
+                      "dependencies": {
+                        "ansi-regex": {
+                          "version": "2.1.1",
+                          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+                          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+                          "dev": true
+                        }
+                      }
+                    },
+                    "strip-ansi": {
+                      "version": "3.0.1",
+                      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+                      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+                      "dev": true,
+                      "dependencies": {
+                        "ansi-regex": {
+                          "version": "2.1.1",
+                          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+                          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+                          "dev": true
+                        }
+                      }
+                    },
+                    "supports-color": {
+                      "version": "2.0.0",
+                      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+                      "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+                      "dev": true
+                    }
+                  }
+                },
+                "esutils": {
+                  "version": "2.0.2",
+                  "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+                  "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+                  "dev": true
+                },
+                "js-tokens": {
+                  "version": "3.0.2",
+                  "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+                  "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+                  "dev": true
+                }
+              }
+            },
+            "babel-generator": {
+              "version": "6.25.0",
+              "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz",
+              "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=",
+              "dev": true,
+              "dependencies": {
+                "detect-indent": {
+                  "version": "4.0.0",
+                  "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
+                  "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
+                  "dev": true,
+                  "dependencies": {
+                    "repeating": {
+                      "version": "2.0.1",
+                      "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+                      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+                      "dev": true,
+                      "dependencies": {
+                        "is-finite": {
+                          "version": "1.0.2",
+                          "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+                          "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+                          "dev": true,
+                          "dependencies": {
+                            "number-is-nan": {
+                              "version": "1.0.1",
+                              "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+                              "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+                              "dev": true
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                },
+                "jsesc": {
+                  "version": "1.3.0",
+                  "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
+                  "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
+                  "dev": true
+                },
+                "trim-right": {
+                  "version": "1.0.1",
+                  "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
+                  "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+                  "dev": true
+                }
+              }
+            },
+            "babel-helpers": {
+              "version": "6.24.1",
+              "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
+              "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
+              "dev": true
+            },
+            "babel-messages": {
+              "version": "6.23.0",
+              "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
+              "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
+              "dev": true
+            },
+            "babel-register": {
+              "version": "6.24.1",
+              "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz",
+              "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=",
+              "dev": true,
+              "dependencies": {
+                "core-js": {
+                  "version": "2.4.1",
+                  "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz",
+                  "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=",
+                  "dev": true
+                },
+                "home-or-tmp": {
+                  "version": "2.0.0",
+                  "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
+                  "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
+                  "dev": true,
+                  "dependencies": {
+                    "os-homedir": {
+                      "version": "1.0.2",
+                      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+                      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+                      "dev": true
+                    },
+                    "os-tmpdir": {
+                      "version": "1.0.2",
+                      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+                      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+                      "dev": true
+                    }
+                  }
+                },
+                "mkdirp": {
+                  "version": "0.5.1",
+                  "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+                  "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+                  "dev": true,
+                  "dependencies": {
+                    "minimist": {
+                      "version": "0.0.8",
+                      "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+                      "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+                      "dev": true
+                    }
+                  }
+                },
+                "source-map-support": {
+                  "version": "0.4.15",
+                  "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz",
+                  "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=",
+                  "dev": true
+                }
+              }
+            },
+            "babel-runtime": {
+              "version": "6.23.0",
+              "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz",
+              "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=",
+              "dev": true,
+              "dependencies": {
+                "core-js": {
+                  "version": "2.4.1",
+                  "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz",
+                  "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=",
+                  "dev": true
+                },
+                "regenerator-runtime": {
+                  "version": "0.10.5",
+                  "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
+                  "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=",
+                  "dev": true
+                }
+              }
+            },
+            "babel-template": {
+              "version": "6.25.0",
+              "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz",
+              "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=",
+              "dev": true
+            },
+            "babel-traverse": {
+              "version": "6.25.0",
+              "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz",
+              "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=",
+              "dev": true,
+              "dependencies": {
+                "globals": {
+                  "version": "9.18.0",
+                  "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+                  "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=",
+                  "dev": true
+                },
+                "invariant": {
+                  "version": "2.2.2",
+                  "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz",
+                  "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=",
+                  "dev": true,
+                  "dependencies": {
+                    "loose-envify": {
+                      "version": "1.3.1",
+                      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
+                      "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
+                      "dev": true,
+                      "dependencies": {
+                        "js-tokens": {
+                          "version": "3.0.2",
+                          "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+                          "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+                          "dev": true
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            },
+            "babel-types": {
+              "version": "6.25.0",
+              "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz",
+              "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=",
+              "dev": true,
+              "dependencies": {
+                "esutils": {
+                  "version": "2.0.2",
+                  "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+                  "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+                  "dev": true
+                },
+                "to-fast-properties": {
+                  "version": "1.0.3",
+                  "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
+                  "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
+                  "dev": true
+                }
+              }
+            },
+            "babylon": {
+              "version": "6.17.4",
+              "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz",
+              "integrity": "sha1-Pot0AriNIsNCPhN6FXeIOxX/hpo=",
+              "dev": true
+            },
+            "convert-source-map": {
+              "version": "1.5.0",
+              "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz",
+              "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=",
+              "dev": true
+            },
+            "debug": {
+              "version": "2.6.8",
+              "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
+              "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
+              "dev": true,
+              "dependencies": {
+                "ms": {
+                  "version": "2.0.0",
+                  "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+                  "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+                  "dev": true
+                }
+              }
+            },
+            "json5": {
+              "version": "0.5.1",
+              "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+              "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+              "dev": true
+            },
+            "lodash": {
+              "version": "4.17.4",
+              "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
+              "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
+              "dev": true
+            },
+            "minimatch": {
+              "version": "3.0.4",
+              "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+              "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+              "dev": true,
+              "dependencies": {
+                "brace-expansion": {
+                  "version": "1.1.8",
+                  "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
+                  "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
+                  "dev": true,
+                  "dependencies": {
+                    "balanced-match": {
+                      "version": "1.0.0",
+                      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+                      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+                      "dev": true
+                    },
+                    "concat-map": {
+                      "version": "0.0.1",
+                      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+                      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+                      "dev": true
+                    }
+                  }
+                }
+              }
+            },
+            "path-is-absolute": {
+              "version": "1.0.1",
+              "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+              "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+              "dev": true
+            },
+            "private": {
+              "version": "0.1.7",
+              "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz",
+              "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=",
+              "dev": true
+            },
+            "slash": {
+              "version": "1.0.0",
+              "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+              "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+              "dev": true
+            },
+            "source-map": {
+              "version": "0.5.6",
+              "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
+              "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
+              "dev": true
+            }
+          }
+        }
+      }
+    },
+    "karma-chrome-launcher": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-0.2.3.tgz",
+      "integrity": "sha1-TG1wDRY6nTTGGO/YeRi+SeekqMk=",
+      "dev": true,
+      "dependencies": {
+        "fs-access": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz",
+          "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=",
+          "dev": true,
+          "dependencies": {
+            "null-check": {
+              "version": "1.0.0",
+              "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz",
+              "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=",
+              "dev": true
+            }
+          }
+        },
+        "which": {
+          "version": "1.2.14",
+          "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz",
+          "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=",
+          "dev": true,
+          "dependencies": {
+            "isexe": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+              "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+              "dev": true
+            }
+          }
+        }
+      }
+    },
+    "karma-coverage": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-0.5.5.tgz",
+      "integrity": "sha1-sNWLECXVnVxmICYxhvHVj11TSMU=",
+      "dev": true,
+      "dependencies": {
+        "dateformat": {
+          "version": "1.0.12",
+          "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz",
+          "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=",
+          "dev": true,
+          "dependencies": {
+            "get-stdin": {
+              "version": "4.0.1",
+              "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+              "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+              "dev": true
+            },
+            "meow": {
+              "version": "3.7.0",
+              "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+              "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+              "dev": true,
+              "dependencies": {
+                "camelcase-keys": {
+                  "version": "2.1.0",
+                  "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+                  "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+                  "dev": true,
+                  "dependencies": {
+                    "camelcase": {
+                      "version": "2.1.1",
+                      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+                      "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+                      "dev": true
+                    }
+                  }
+                },
+                "decamelize": {
+                  "version": "1.2.0",
+                  "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+                  "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+                  "dev": true
+                },
+                "loud-rejection": {
+                  "version": "1.6.0",
+                  "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+                  "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+                  "dev": true,
+                  "dependencies": {
+                    "currently-unhandled": {
+                      "version": "0.4.1",
+                      "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+                      "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+                      "dev": true,
+                      "dependencies": {
+                        "array-find-index": {
+                          "version": "1.0.2",
+                          "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+                          "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+                          "dev": true
+                        }
+                      }
+                    },
+                    "signal-exit": {
+                      "version": "3.0.2",
+                      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+                      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+                      "dev": true
+                    }
+                  }
+                },
+                "map-obj": {
+                  "version": "1.0.1",
+                  "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+                  "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+                  "dev": true
+                },
+                "minimist": {
+                  "version": "1.2.0",
+                  "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+                  "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+                  "dev": true
+                },
+                "normalize-package-data": {
+                  "version": "2.4.0",
+                  "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+                  "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=",
+                  "dev": true,
+                  "dependencies": {
+                    "hosted-git-info": {
+                      "version": "2.5.0",
+                      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
+                      "integrity": "sha1-bWDjSzq7yDEwYsO3mO+NkBoHrzw=",
+                      "dev": true
+                    },
+                    "is-builtin-module": {
+                      "version": "1.0.0",
+                      "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
+                      "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
+                      "dev": true,
+                      "dependencies": {
+                        "builtin-modules": {
+                          "version": "1.1.1",
+                          "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+                          "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+                          "dev": true
+                        }
+                      }
+                    },
+                    "semver": {
+                      "version": "5.3.0",
+                      "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+                      "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+                      "dev": true
+                    },
+                    "validate-npm-package-license": {
+                      "version": "3.0.1",
+                      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
+                      "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
+                      "dev": true,
+                      "dependencies": {
+                        "spdx-correct": {
+                          "version": "1.0.2",
+                          "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
+                          "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
+                          "dev": true,
+                          "dependencies": {
+                            "spdx-license-ids": {
+                              "version": "1.2.2",
+                              "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
+                              "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=",
+                              "dev": true
+                            }
+                          }
+                        },
+                        "spdx-expression-parse": {
+                          "version": "1.0.4",
+                          "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
+                          "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=",
+                          "dev": true
+                        }
+                      }
+                    }
+                  }
+                },
+                "object-assign": {
+                  "version": "4.1.1",
+                  "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+                  "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+                  "dev": true
+                },
+                "read-pkg-up": {
+                  "version": "1.0.1",
+                  "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+                  "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+                  "dev": true,
+                  "dependencies": {
+                    "find-up": {
+                      "version": "1.1.2",
+                      "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+                      "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+                      "dev": true,
+                      "dependencies": {
+                        "path-exists": {
+                          "version": "2.1.0",
+                          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+                          "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+                          "dev": true
+                        },
+                        "pinkie-promise": {
+                          "version": "2.0.1",
+                          "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+                          "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+                          "dev": true,
+                          "dependencies": {
+                            "pinkie": {
+                              "version": "2.0.4",
+                              "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+                              "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+                              "dev": true
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "read-pkg": {
+                      "version": "1.1.0",
+                      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+                      "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+                      "dev": true,
+                      "dependencies": {
+                        "load-json-file": {
+                          "version": "1.1.0",
+                          "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+                          "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+                          "dev": true,
+                          "dependencies": {
+                            "graceful-fs": {
+                              "version": "4.1.11",
+                              "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+                              "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+                              "dev": true
+                            },
+                            "parse-json": {
+                              "version": "2.2.0",
+                              "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+                              "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+                              "dev": true,
+                              "dependencies": {
+                                "error-ex": {
+                                  "version": "1.3.1",
+                                  "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
+                                  "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
+                                  "dev": true,
+                                  "dependencies": {
+                                    "is-arrayish": {
+                                      "version": "0.2.1",
+                                      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+                                      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+                                      "dev": true
+                                    }
+                                  }
+                                }
+                              }
+                            },
+                            "pify": {
+                              "version": "2.3.0",
+                              "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+                              "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+                              "dev": true
+                            },
+                            "pinkie-promise": {
+                              "version": "2.0.1",
+                              "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+                              "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+                              "dev": true,
+                              "dependencies": {
+                                "pinkie": {
+                                  "version": "2.0.4",
+                                  "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+                                  "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+                                  "dev": true
+                                }
+                              }
+                            },
+                            "strip-bom": {
+                              "version": "2.0.0",
+                              "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+                              "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+                              "dev": true,
+                              "dependencies": {
+                                "is-utf8": {
+                                  "version": "0.2.1",
+                                  "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+                                  "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+                                  "dev": true
+                                }
+                              }
+                            }
+                          }
+                        },
+                        "path-type": {
+                          "version": "1.1.0",
+                          "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+                          "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+                          "dev": true,
+                          "dependencies": {
+                            "graceful-fs": {
+                              "version": "4.1.11",
+                              "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+                              "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+                              "dev": true
+                            },
+                            "pify": {
+                              "version": "2.3.0",
+                              "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+                              "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+                              "dev": true
+                            },
+                            "pinkie-promise": {
+                              "version": "2.0.1",
+                              "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+                              "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+                              "dev": true,
+                              "dependencies": {
+                                "pinkie": {
+                                  "version": "2.0.4",
+                                  "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+                                  "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+                                  "dev": true
+                                }
+                              }
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                },
+                "redent": {
+                  "version": "1.0.0",
+                  "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+                  "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+                  "dev": true,
+                  "dependencies": {
+                    "indent-string": {
+                      "version": "2.1.0",
+                      "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+                      "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+                      "dev": true,
+                      "dependencies": {
+                        "repeating": {
+                          "version": "2.0.1",
+                          "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+                          "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+                          "dev": true,
+                          "dependencies": {
+                            "is-finite": {
+                              "version": "1.0.2",
+                              "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+                              "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+                              "dev": true,
+                              "dependencies": {
+                                "number-is-nan": {
+                                  "version": "1.0.1",
+                                  "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+                                  "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+                                  "dev": true
+                                }
+                              }
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "strip-indent": {
+                      "version": "1.0.1",
+                      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+                      "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+                      "dev": true
+                    }
+                  }
+                },
+                "trim-newlines": {
+                  "version": "1.0.0",
+                  "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+                  "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+                  "dev": true
+                }
+              }
+            }
+          }
+        },
+        "istanbul": {
+          "version": "0.4.5",
+          "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz",
+          "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=",
+          "dev": true,
+          "dependencies": {
+            "abbrev": {
+              "version": "1.0.9",
+              "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
+              "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=",
+              "dev": true
+            },
+            "async": {
+              "version": "1.5.2",
+              "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+              "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+              "dev": true
+            },
+            "escodegen": {
+              "version": "1.8.1",
+              "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
+              "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=",
+              "dev": true,
+              "dependencies": {
+                "estraverse": {
+                  "version": "1.9.3",
+                  "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
+                  "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=",
+                  "dev": true
+                },
+                "esutils": {
+                  "version": "2.0.2",
+                  "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+                  "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+                  "dev": true
+                },
+                "optionator": {
+                  "version": "0.8.2",
+                  "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+                  "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+                  "dev": true,
+                  "dependencies": {
+                    "deep-is": {
+                      "version": "0.1.3",
+                      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+                      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+                      "dev": true
+                    },
+                    "fast-levenshtein": {
+                      "version": "2.0.6",
+                      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+                      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+                      "dev": true
+                    },
+                    "levn": {
+                      "version": "0.3.0",
+                      "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+                      "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+                      "dev": true
+                    },
+                    "prelude-ls": {
+                      "version": "1.1.2",
+                      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+                      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+                      "dev": true
+                    },
+                    "type-check": {
+                      "version": "0.3.2",
+                      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+                      "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+                      "dev": true
+                    }
+                  }
+                },
+                "source-map": {
+                  "version": "0.2.0",
+                  "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
+                  "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
+                  "dev": true,
+                  "optional": true,
+                  "dependencies": {
+                    "amdefine": {
+                      "version": "1.0.1",
+                      "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+                      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+                      "dev": true,
+                      "optional": true
+                    }
+                  }
+                }
+              }
+            },
+            "esprima": {
+              "version": "2.7.3",
+              "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+              "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
+              "dev": true
+            },
+            "glob": {
+              "version": "5.0.15",
+              "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+              "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+              "dev": true,
+              "dependencies": {
+                "inflight": {
+                  "version": "1.0.6",
+                  "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+                  "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+                  "dev": true,
+                  "dependencies": {
+                    "wrappy": {
+                      "version": "1.0.2",
+                      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+                      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+                      "dev": true
+                    }
+                  }
+                },
+                "inherits": {
+                  "version": "2.0.3",
+                  "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+                  "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+                  "dev": true
+                },
+                "path-is-absolute": {
+                  "version": "1.0.1",
+                  "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+                  "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+                  "dev": true
+                }
+              }
+            },
+            "handlebars": {
+              "version": "4.0.10",
+              "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz",
+              "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=",
+              "dev": true,
+              "dependencies": {
+                "optimist": {
+                  "version": "0.6.1",
+                  "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+                  "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+                  "dev": true,
+                  "dependencies": {
+                    "minimist": {
+                      "version": "0.0.10",
+                      "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+                      "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
+                      "dev": true
+                    },
+                    "wordwrap": {
+                      "version": "0.0.3",
+                      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+                      "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+                      "dev": true
+                    }
+                  }
+                },
+                "source-map": {
+                  "version": "0.4.4",
+                  "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+                  "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+                  "dev": true,
+                  "dependencies": {
+                    "amdefine": {
+                      "version": "1.0.1",
+                      "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+                      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+                      "dev": true
+                    }
+                  }
+                },
+                "uglify-js": {
+                  "version": "2.8.29",
+                  "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
+                  "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+                  "dev": true,
+                  "optional": true,
+                  "dependencies": {
+                    "source-map": {
+                      "version": "0.5.6",
+                      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
+                      "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
+                      "dev": true,
+                      "optional": true
+                    },
+                    "uglify-to-browserify": {
+                      "version": "1.0.2",
+                      "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
+                      "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
+                      "dev": true,
+                      "optional": true
+                    },
+                    "yargs": {
+                      "version": "3.10.0",
+                      "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+                      "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+                      "dev": true,
+                      "optional": true,
+                      "dependencies": {
+                        "camelcase": {
+                          "version": "1.2.1",
+                          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+                          "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+                          "dev": true,
+                          "optional": true
+                        },
+                        "cliui": {
+                          "version": "2.1.0",
+                          "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
+                          "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+                          "dev": true,
+                          "optional": true,
+                          "dependencies": {
+                            "center-align": {
+                              "version": "0.1.3",
+                              "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
+                              "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+                              "dev": true,
+                              "optional": true,
+                              "dependencies": {
+                                "align-text": {
+                                  "version": "0.1.4",
+                                  "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
+                                  "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+                                  "dev": true,
+                                  "optional": true,
+                                  "dependencies": {
+                                    "kind-of": {
+                                      "version": "3.2.2",
+                                      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+                                      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+                                      "dev": true,
+                                      "optional": true,
+                                      "dependencies": {
+                                        "is-buffer": {
+                                          "version": "1.1.5",
+                                          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
+                                          "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
+                                          "dev": true,
+                                          "optional": true
+                                        }
+                                      }
+                                    },
+                                    "longest": {
+                                      "version": "1.0.1",
+                                      "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
+                                      "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
+                                      "dev": true,
+                                      "optional": true
+                                    },
+                                    "repeat-string": {
+                                      "version": "1.6.1",
+                                      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+                                      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+                                      "dev": true,
+                                      "optional": true
+                                    }
+                                  }
+                                },
+                                "lazy-cache": {
+                                  "version": "1.0.4",
+                                  "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
+                                  "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
+                                  "dev": true,
+                                  "optional": true
+                                }
+                              }
+                            },
+                            "right-align": {
+                              "version": "0.1.3",
+                              "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
+                              "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+                              "dev": true,
+                              "optional": true,
+                              "dependencies": {
+                                "align-text": {
+                                  "version": "0.1.4",
+                                  "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
+                                  "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+                                  "dev": true,
+                                  "optional": true,
+                                  "dependencies": {
+                                    "kind-of": {
+                                      "version": "3.2.2",
+                                      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+                                      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+                                      "dev": true,
+                                      "optional": true,
+                                      "dependencies": {
+                                        "is-buffer": {
+                                          "version": "1.1.5",
+                                          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
+                                          "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
+                                          "dev": true,
+                                          "optional": true
+                                        }
+                                      }
+                                    },
+                                    "longest": {
+                                      "version": "1.0.1",
+                                      "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
+                                      "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
+                                      "dev": true,
+                                      "optional": true
+                                    },
+                                    "repeat-string": {
+                                      "version": "1.6.1",
+                                      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+                                      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+                                      "dev": true,
+                                      "optional": true
+                                    }
+                                  }
+                                }
+                              }
+                            },
+                            "wordwrap": {
+                              "version": "0.0.2",
+                              "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+                              "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+                              "dev": true,
+                              "optional": true
+                            }
+                          }
+                        },
+                        "decamelize": {
+                          "version": "1.2.0",
+                          "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+                          "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+                          "dev": true,
+                          "optional": true
+                        },
+                        "window-size": {
+                          "version": "0.1.0",
+                          "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
+                          "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
+                          "dev": true,
+                          "optional": true
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            },
+            "js-yaml": {
+              "version": "3.9.0",
+              "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.0.tgz",
+              "integrity": "sha1-T/u/JcKsljuCmdx02n43QN4cGM4=",
+              "dev": true,
+              "dependencies": {
+                "argparse": {
+                  "version": "1.0.9",
+                  "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
+                  "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
+                  "dev": true,
+                  "dependencies": {
+                    "sprintf-js": {
+                      "version": "1.0.3",
+                      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+                      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+                      "dev": true
+                    }
+                  }
+                },
+                "esprima": {
+                  "version": "4.0.0",
+                  "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
+                  "integrity": "sha1-RJnt3NERDgshi6zy+n9/WfVcqAQ=",
+                  "dev": true
+                }
+              }
+            },
+            "mkdirp": {
+              "version": "0.5.1",
+              "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+              "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+              "dev": true,
+              "dependencies": {
+                "minimist": {
+                  "version": "0.0.8",
+                  "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+                  "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+                  "dev": true
+                }
+              }
+            },
+            "nopt": {
+              "version": "3.0.6",
+              "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+              "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+              "dev": true
+            },
+            "once": {
+              "version": "1.4.0",
+              "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+              "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+              "dev": true,
+              "dependencies": {
+                "wrappy": {
+                  "version": "1.0.2",
+                  "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+                  "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+                  "dev": true
+                }
+              }
+            },
+            "resolve": {
+              "version": "1.1.7",
+              "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+              "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
+              "dev": true
+            },
+            "supports-color": {
+              "version": "3.2.3",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+              "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+              "dev": true,
+              "dependencies": {
+                "has-flag": {
+                  "version": "1.0.0",
+                  "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+                  "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+                  "dev": true
+                }
+              }
+            },
+            "which": {
+              "version": "1.2.14",
+              "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz",
+              "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=",
+              "dev": true,
+              "dependencies": {
+                "isexe": {
+                  "version": "2.0.0",
+                  "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+                  "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+                  "dev": true
+                }
+              }
+            },
+            "wordwrap": {
+              "version": "1.0.0",
+              "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+              "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+              "dev": true
+            }
+          }
+        },
+        "minimatch": {
+          "version": "3.0.4",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+          "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+          "dev": true,
+          "dependencies": {
+            "brace-expansion": {
+              "version": "1.1.8",
+              "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
+              "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
+              "dev": true,
+              "dependencies": {
+                "balanced-match": {
+                  "version": "1.0.0",
+                  "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+                  "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+                  "dev": true
+                },
+                "concat-map": {
+                  "version": "0.0.1",
+                  "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+                  "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+                  "dev": true
+                }
+              }
+            }
+          }
+        },
+        "source-map": {
+          "version": "0.5.6",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
+          "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
+          "dev": true
+        }
+      }
+    },
+    "karma-jasmine": {
+      "version": "0.3.8",
+      "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-0.3.8.tgz",
+      "integrity": "sha1-W2RXeRrZuJqhc/B54+vhuMgFI2w=",
+      "dev": true
+    },
+    "karma-junit-reporter": {
+      "version": "0.4.2",
+      "resolved": "https://registry.npmjs.org/karma-junit-reporter/-/karma-junit-reporter-0.4.2.tgz",
+      "integrity": "sha1-SSojZyj+TJKqz0GfzQEQpDJ+nX8=",
+      "dev": true,
+      "dependencies": {
+        "path-is-absolute": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+          "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+          "dev": true
+        },
+        "xmlbuilder": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-3.1.0.tgz",
+          "integrity": "sha1-LIaIjy1OrehQ+jjKf3Ij9yCVFuE=",
+          "dev": true,
+          "dependencies": {
+            "lodash": {
+              "version": "3.10.1",
+              "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+              "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
+              "dev": true
+            }
+          }
+        }
+      }
+    },
+    "karma-mocha-reporter": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-1.3.0.tgz",
+      "integrity": "sha1-r2pGwIqcVcf9OUw6WqJhetoVhKU=",
+      "dev": true,
+      "dependencies": {
+        "chalk": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz",
+          "integrity": "sha1-UJr7ZwZudJn36zU1x3RFdyri0Bk=",
+          "dev": true,
+          "dependencies": {
+            "ansi-styles": {
+              "version": "2.2.1",
+              "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+              "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+              "dev": true
+            },
+            "escape-string-regexp": {
+              "version": "1.0.5",
+              "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+              "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+              "dev": true
+            },
+            "has-ansi": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+              "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+              "dev": true,
+              "dependencies": {
+                "ansi-regex": {
+                  "version": "2.1.1",
+                  "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+                  "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+                  "dev": true
+                }
+              }
+            },
+            "strip-ansi": {
+              "version": "3.0.1",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+              "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+              "dev": true,
+              "dependencies": {
+                "ansi-regex": {
+                  "version": "2.1.1",
+                  "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+                  "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+                  "dev": true
+                }
+              }
+            },
+            "supports-color": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+              "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+              "dev": true
+            }
+          }
+        }
+      }
+    },
+    "karma-ng-html2js-preprocessor": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/karma-ng-html2js-preprocessor/-/karma-ng-html2js-preprocessor-0.2.2.tgz",
+      "integrity": "sha1-vpHc6dnBhQgtDdfLKHCEYWtfLJg=",
+      "dev": true
+    },
+    "karma-phantomjs-launcher": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/karma-phantomjs-launcher/-/karma-phantomjs-launcher-0.2.3.tgz",
+      "integrity": "sha1-d/aCQ/rXhSxbMhvPnWkfEiPMCAk=",
+      "dev": true,
+      "dependencies": {
+        "lodash": {
+          "version": "3.10.1",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+          "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
+          "dev": true
+        }
+      }
+    },
+    "phantomjs": {
+      "version": "2.1.7",
+      "resolved": "https://registry.npmjs.org/phantomjs/-/phantomjs-2.1.7.tgz",
+      "integrity": "sha1-xpEPZ5NcNyhbYRQyn8LyfV8+MTQ=",
+      "dev": true,
+      "dependencies": {
+        "extract-zip": {
+          "version": "1.5.0",
+          "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz",
+          "integrity": "sha1-ksz22B73Cp+kwXRxFMzvbYaIpsQ=",
+          "dev": true,
+          "dependencies": {
+            "concat-stream": {
+              "version": "1.5.0",
+              "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz",
+              "integrity": "sha1-U/fUPFHF5D+ByP3QMyHGMb5o1hE=",
+              "dev": true,
+              "dependencies": {
+                "inherits": {
+                  "version": "2.0.3",
+                  "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+                  "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+                  "dev": true
+                },
+                "readable-stream": {
+                  "version": "2.0.6",
+                  "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
+                  "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
+                  "dev": true,
+                  "dependencies": {
+                    "core-util-is": {
+                      "version": "1.0.2",
+                      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+                      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+                      "dev": true
+                    },
+                    "isarray": {
+                      "version": "1.0.0",
+                      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+                      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+                      "dev": true
+                    },
+                    "process-nextick-args": {
+                      "version": "1.0.7",
+                      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+                      "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
+                      "dev": true
+                    },
+                    "string_decoder": {
+                      "version": "0.10.31",
+                      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+                      "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+                      "dev": true
+                    },
+                    "util-deprecate": {
+                      "version": "1.0.2",
+                      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+                      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+                      "dev": true
+                    }
+                  }
+                },
+                "typedarray": {
+                  "version": "0.0.6",
+                  "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+                  "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+                  "dev": true
+                }
+              }
+            },
+            "debug": {
+              "version": "0.7.4",
+              "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz",
+              "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=",
+              "dev": true
+            },
+            "mkdirp": {
+              "version": "0.5.0",
+              "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz",
+              "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=",
+              "dev": true,
+              "dependencies": {
+                "minimist": {
+                  "version": "0.0.8",
+                  "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+                  "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+                  "dev": true
+                }
+              }
+            },
+            "yauzl": {
+              "version": "2.4.1",
+              "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
+              "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
+              "dev": true,
+              "dependencies": {
+                "fd-slicer": {
+                  "version": "1.0.1",
+                  "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
+                  "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
+                  "dev": true,
+                  "dependencies": {
+                    "pend": {
+                      "version": "1.2.0",
+                      "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+                      "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
+                      "dev": true
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "fs-extra": {
+          "version": "0.26.7",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz",
+          "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=",
+          "dev": true,
+          "dependencies": {
+            "graceful-fs": {
+              "version": "4.1.11",
+              "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+              "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+              "dev": true
+            },
+            "jsonfile": {
+              "version": "2.4.0",
+              "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
+              "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
+              "dev": true
+            },
+            "klaw": {
+              "version": "1.3.1",
+              "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
+              "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
+              "dev": true
+            },
+            "path-is-absolute": {
+              "version": "1.0.1",
+              "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+              "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+              "dev": true
+            },
+            "rimraf": {
+              "version": "2.6.1",
+              "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz",
+              "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=",
+              "dev": true,
+              "dependencies": {
+                "glob": {
+                  "version": "7.1.2",
+                  "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+                  "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=",
+                  "dev": true,
+                  "dependencies": {
+                    "fs.realpath": {
+                      "version": "1.0.0",
+                      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+                      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+                      "dev": true
+                    },
+                    "inflight": {
+                      "version": "1.0.6",
+                      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+                      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+                      "dev": true,
+                      "dependencies": {
+                        "wrappy": {
+                          "version": "1.0.2",
+                          "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+                          "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+                          "dev": true
+                        }
+                      }
+                    },
+                    "inherits": {
+                      "version": "2.0.3",
+                      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+                      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+                      "dev": true
+                    },
+                    "minimatch": {
+                      "version": "3.0.4",
+                      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+                      "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+                      "dev": true,
+                      "dependencies": {
+                        "brace-expansion": {
+                          "version": "1.1.8",
+                          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
+                          "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
+                          "dev": true,
+                          "dependencies": {
+                            "balanced-match": {
+                              "version": "1.0.0",
+                              "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+                              "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+                              "dev": true
+                            },
+                            "concat-map": {
+                              "version": "0.0.1",
+                              "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+                              "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+                              "dev": true
+                            }
+                          }
+                        }
+                      }
+                    },
+                    "once": {
+                      "version": "1.4.0",
+                      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+                      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+                      "dev": true,
+                      "dependencies": {
+                        "wrappy": {
+                          "version": "1.0.2",
+                          "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+                          "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+                          "dev": true
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "hasha": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz",
+          "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=",
+          "dev": true,
+          "dependencies": {
+            "is-stream": {
+              "version": "1.1.0",
+              "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+              "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+              "dev": true
+            },
+            "pinkie-promise": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+              "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+              "dev": true,
+              "dependencies": {
+                "pinkie": {
+                  "version": "2.0.4",
+                  "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+                  "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+                  "dev": true
+                }
+              }
+            }
+          }
+        },
+        "kew": {
+          "version": "0.7.0",
+          "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz",
+          "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=",
+          "dev": true
+        },
+        "progress": {
+          "version": "1.1.8",
+          "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
+          "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
+          "dev": true
+        },
+        "request": {
+          "version": "2.67.0",
+          "resolved": "https://registry.npmjs.org/request/-/request-2.67.0.tgz",
+          "integrity": "sha1-ivdHgOK/EeoK6aqWXBHxGv0nJ0I=",
+          "dev": true,
+          "dependencies": {
+            "aws-sign2": {
+              "version": "0.6.0",
+              "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
+              "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
+              "dev": true
+            },
+            "bl": {
+              "version": "1.0.3",
+              "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz",
+              "integrity": "sha1-/FQhoo/UImA2w7OJGmaiW8ZNIm4=",
+              "dev": true,
+              "dependencies": {
+                "readable-stream": {
+                  "version": "2.0.6",
+                  "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
+                  "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
+                  "dev": true,
+                  "dependencies": {
+                    "core-util-is": {
+                      "version": "1.0.2",
+                      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+                      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+                      "dev": true
+                    },
+                    "inherits": {
+                      "version": "2.0.3",
+                      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+                      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+                      "dev": true
+                    },
+                    "isarray": {
+                      "version": "1.0.0",
+                      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+                      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+                      "dev": true
+                    },
+                    "process-nextick-args": {
+                      "version": "1.0.7",
+                      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+                      "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
+                      "dev": true
+                    },
+                    "string_decoder": {
+                      "version": "0.10.31",
+                      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+                      "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+                      "dev": true
+                    },
+                    "util-deprecate": {
+                      "version": "1.0.2",
+                      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+                      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+                      "dev": true
+                    }
+                  }
+                }
+              }
+            },
+            "caseless": {
+              "version": "0.11.0",
+              "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
+              "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=",
+              "dev": true
+            },
+            "combined-stream": {
+              "version": "1.0.5",
+              "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
+              "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
+              "dev": true,
+              "dependencies": {
+                "delayed-stream": {
+                  "version": "1.0.0",
+                  "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+                  "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+                  "dev": true
+                }
+              }
+            },
+            "extend": {
+              "version": "3.0.1",
+              "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+              "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
+              "dev": true
+            },
+            "forever-agent": {
+              "version": "0.6.1",
+              "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+              "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+              "dev": true
+            },
+            "form-data": {
+              "version": "1.0.1",
+              "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz",
+              "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=",
+              "dev": true,
+              "dependencies": {
+                "async": {
+                  "version": "2.5.0",
+                  "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz",
+                  "integrity": "sha1-hDGQ/WtzV6C54clW7d3V7IRitU0=",
+                  "dev": true,
+                  "dependencies": {
+                    "lodash": {
+                      "version": "4.17.4",
+                      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
+                      "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
+                      "dev": true
+                    }
+                  }
+                }
+              }
+            },
+            "har-validator": {
+              "version": "2.0.6",
+              "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
+              "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
+              "dev": true,
+              "dependencies": {
+                "chalk": {
+                  "version": "1.1.3",
+                  "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+                  "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+                  "dev": true,
+                  "dependencies": {
+                    "ansi-styles": {
+                      "version": "2.2.1",
+                      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+                      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+                      "dev": true
+                    },
+                    "escape-string-regexp": {
+                      "version": "1.0.5",
+                      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+                      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+                      "dev": true
+                    },
+                    "has-ansi": {
+                      "version": "2.0.0",
+                      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+                      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+                      "dev": true,
+                      "dependencies": {
+                        "ansi-regex": {
+                          "version": "2.1.1",
+                          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+                          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+                          "dev": true
+                        }
+                      }
+                    },
+                    "strip-ansi": {
+                      "version": "3.0.1",
+                      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+                      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+                      "dev": true,
+                      "dependencies": {
+                        "ansi-regex": {
+                          "version": "2.1.1",
+                          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+                          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+                          "dev": true
+                        }
+                      }
+                    },
+                    "supports-color": {
+                      "version": "2.0.0",
+                      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+                      "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+                      "dev": true
+                    }
+                  }
+                },
+                "commander": {
+                  "version": "2.11.0",
+                  "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
+                  "integrity": "sha1-FXFS/R56bI2YpbcVzzdt+SgARWM=",
+                  "dev": true
+                },
+                "is-my-json-valid": {
+                  "version": "2.16.0",
+                  "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz",
+                  "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=",
+                  "dev": true,
+                  "dependencies": {
+                    "generate-function": {
+                      "version": "2.0.0",
+                      "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
+                      "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=",
+                      "dev": true
+                    },
+                    "generate-object-property": {
+                      "version": "1.2.0",
+                      "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
+                      "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
+                      "dev": true,
+                      "dependencies": {
+                        "is-property": {
+                          "version": "1.0.2",
+                          "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
+                          "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
+                          "dev": true
+                        }
+                      }
+                    },
+                    "jsonpointer": {
+                      "version": "4.0.1",
+                      "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
+                      "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
+                      "dev": true
+                    },
+                    "xtend": {
+                      "version": "4.0.1",
+                      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+                      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+                      "dev": true
+                    }
+                  }
+                },
+                "pinkie-promise": {
+                  "version": "2.0.1",
+                  "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+                  "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+                  "dev": true,
+                  "dependencies": {
+                    "pinkie": {
+                      "version": "2.0.4",
+                      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+                      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+                      "dev": true
+                    }
+                  }
+                }
+              }
+            },
+            "hawk": {
+              "version": "3.1.3",
+              "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
+              "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
+              "dev": true,
+              "dependencies": {
+                "boom": {
+                  "version": "2.10.1",
+                  "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
+                  "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+                  "dev": true
+                },
+                "cryptiles": {
+                  "version": "2.0.5",
+                  "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
+                  "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
+                  "dev": true
+                },
+                "hoek": {
+                  "version": "2.16.3",
+                  "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
+                  "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
+                  "dev": true
+                },
+                "sntp": {
+                  "version": "1.0.9",
+                  "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
+                  "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
+                  "dev": true
+                }
+              }
+            },
+            "http-signature": {
+              "version": "1.1.1",
+              "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
+              "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
+              "dev": true,
+              "dependencies": {
+                "assert-plus": {
+                  "version": "0.2.0",
+                  "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
+                  "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
+                  "dev": true
+                },
+                "jsprim": {
+                  "version": "1.4.0",
+                  "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz",
+                  "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=",
+                  "dev": true,
+                  "dependencies": {
+                    "assert-plus": {
+                      "version": "1.0.0",
+                      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+                      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+                      "dev": true
+                    },
+                    "extsprintf": {
+                      "version": "1.0.2",
+                      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz",
+                      "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=",
+                      "dev": true
+                    },
+                    "json-schema": {
+                      "version": "0.2.3",
+                      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+                      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+                      "dev": true
+                    },
+                    "verror": {
+                      "version": "1.3.6",
+                      "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz",
+                      "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=",
+                      "dev": true
+                    }
+                  }
+                },
+                "sshpk": {
+                  "version": "1.13.1",
+                  "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
+                  "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
+                  "dev": true,
+                  "dependencies": {
+                    "asn1": {
+                      "version": "0.2.3",
+                      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
+                      "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
+                      "dev": true
+                    },
+                    "assert-plus": {
+                      "version": "1.0.0",
+                      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+                      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+                      "dev": true
+                    },
+                    "bcrypt-pbkdf": {
+                      "version": "1.0.1",
+                      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
+                      "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
+                      "dev": true,
+                      "optional": true
+                    },
+                    "dashdash": {
+                      "version": "1.14.1",
+                      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+                      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+                      "dev": true
+                    },
+                    "ecc-jsbn": {
+                      "version": "0.1.1",
+                      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
+                      "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+                      "dev": true,
+                      "optional": true
+                    },
+                    "getpass": {
+                      "version": "0.1.7",
+                      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+                      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+                      "dev": true
+                    },
+                    "jsbn": {
+                      "version": "0.1.1",
+                      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+                      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+                      "dev": true,
+                      "optional": true
+                    },
+                    "tweetnacl": {
+                      "version": "0.14.5",
+                      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+                      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+                      "dev": true,
+                      "optional": true
+                    }
+                  }
+                }
+              }
+            },
+            "is-typedarray": {
+              "version": "1.0.0",
+              "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+              "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+              "dev": true
+            },
+            "isstream": {
+              "version": "0.1.2",
+              "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+              "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+              "dev": true
+            },
+            "json-stringify-safe": {
+              "version": "5.0.1",
+              "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+              "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+              "dev": true
+            },
+            "mime-types": {
+              "version": "2.1.15",
+              "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
+              "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=",
+              "dev": true,
+              "dependencies": {
+                "mime-db": {
+                  "version": "1.27.0",
+                  "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz",
+                  "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=",
+                  "dev": true
+                }
+              }
+            },
+            "node-uuid": {
+              "version": "1.4.8",
+              "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz",
+              "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=",
+              "dev": true
+            },
+            "oauth-sign": {
+              "version": "0.8.2",
+              "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
+              "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
+              "dev": true
+            },
+            "qs": {
+              "version": "5.2.1",
+              "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.1.tgz",
+              "integrity": "sha1-gB/uAw4LlFDWOFrcSKTMVbRK7fw=",
+              "dev": true
+            },
+            "stringstream": {
+              "version": "0.0.5",
+              "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
+              "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
+              "dev": true
+            },
+            "tough-cookie": {
+              "version": "2.2.2",
+              "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz",
+              "integrity": "sha1-yDoYMPTl7wuT7yo0iOck+N4Basc=",
+              "dev": true
+            },
+            "tunnel-agent": {
+              "version": "0.4.3",
+              "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
+              "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
+              "dev": true
+            }
+          }
+        },
+        "request-progress": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz",
+          "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=",
+          "dev": true,
+          "dependencies": {
+            "throttleit": {
+              "version": "1.0.0",
+              "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
+              "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=",
+              "dev": true
+            }
+          }
+        },
+        "which": {
+          "version": "1.2.14",
+          "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz",
+          "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=",
+          "dev": true,
+          "dependencies": {
+            "isexe": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+              "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+              "dev": true
+            }
+          }
+        }
+      }
+    }
+  }
+}
