usergrid-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From snoopd...@apache.org
Subject [45/53] [partial] adding bower
Date Mon, 31 Mar 2014 17:21:57 GMT
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angular/bower.json
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angular/bower.json b/portal/dist/appsvc-ui/2.0.2/bower_components/angular/bower.json
new file mode 100644
index 0000000..0e6af4c
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angular/bower.json
@@ -0,0 +1,7 @@
+{
+  "name": "angular",
+  "version": "1.3.0-build.2494+sha.b472d02",
+  "main": "./angular.js",
+  "dependencies": {
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/Gruntfile.js
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/Gruntfile.js b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/Gruntfile.js
new file mode 100644
index 0000000..1337d97
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/Gruntfile.js
@@ -0,0 +1,62 @@
+module.exports = function(grunt) {
+   'use strict';
+
+   grunt.initConfig({
+      pkg: grunt.file.readJSON('package.json'),
+
+      karma: {
+         unit: {
+            configFile: 'karma.conf.js',
+            singleRun: true
+         }
+      },
+
+      jshint: {
+         all: ['Gruntfile.js', 'src/*.js', 'test/**/*.js']
+      },
+
+      concat: {
+         options: {
+            stripBanners: false
+         },
+         dist: {
+            src: ['dist/angulartics-scroll.min.js', 'components/jquery-waypoints/waypoints.min.js'],
+            dest: 'dist/angulartics-scroll.min.js'
+         }
+      },
+
+      uglify: {
+         options: {
+            preserveComments: 'some',
+            report: 'min'
+         },
+         predist: {
+            files: {
+               'dist/angulartics-scroll.min.js': ['src/angulartics-scroll.js']
+            }
+         },
+         dist: {
+            files: {
+               'dist/angulartics.min.js': ['src/angulartics.js'],
+               'dist/angulartics-chartbeat.min.js': ['src/angulartics-chartbeat.js'],
+               'dist/angulartics-ga.min.js': ['src/angulartics-ga.js'],
+               'dist/angulartics-ga-cordova.min.js': ['src/angulartics-ga-cordova.js'],
+               'dist/angulartics-kissmetrics.min.js': ['src/angulartics-kissmetrics.js'],
+               'dist/angulartics-mixpanel.min.js': ['src/angulartics-mixpanel.js'],
+               'dist/angulartics-segmentio.min.js': ['src/angulartics-segmentio.js']
+            }
+         }
+      },
+
+      clean: ['dist']
+   });
+
+   grunt.loadNpmTasks('grunt-contrib-jshint');
+   grunt.loadNpmTasks('grunt-karma');
+   grunt.loadNpmTasks('grunt-contrib-concat');
+   grunt.loadNpmTasks('grunt-contrib-uglify');
+   grunt.loadNpmTasks('grunt-contrib-clean');
+
+   grunt.registerTask('test', ['jshint', 'karma']);
+   grunt.registerTask('default', ['jshint', 'karma', 'uglify:predist', 'concat:dist', 'uglify:dist']);
+};

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/LICENSE
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/LICENSE b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/LICENSE
new file mode 100644
index 0000000..84a7dd5
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/LICENSE
@@ -0,0 +1,22 @@
+Copyright (c) 2013 Luis Farzati
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/README.md
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/README.md b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/README.md
new file mode 100644
index 0000000..bd775b2
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/README.md
@@ -0,0 +1,115 @@
+angulartics
+===========
+
+Vendor-agnostic analytics for AngularJS applications. [luisfarzati.github.io/angulartics](http://luisfarzati.github.io/angulartics "Go to the website")
+
+# Minimal setup
+
+## for Google Analytics ##
+
+    angular.module('myApp', ['angulartics', 'angulartics.google.analytics'])
+
+Delete the automatic pageview tracking line in the snippet code provided by Google Analytics:
+
+      ...
+      ga('create', '{YOUR GA CODE}', '{YOUR DOMAIN}');
+      ga('send', 'pageview'); // <-- DELETE THIS LINE!
+    </script>
+    
+Done. Open your app, browse across the different routes and check [the realtime GA dashboard](http://google.com/analytics/web) to see the hits. 
+
+## for other providers
+
+[Browse the website for detailed instructions.](http://luisfarzati.github.io/angulartics)
+
+## Supported providers
+
+* Google Analytics
+* Kissmetrics
+* Mixpanel
+* Chartbeat
+* Segment.io
+
+If there's no Angulartics plugin for your analytics vendor of choice, please feel free to write yours and PR' it! Here's how to do it.
+
+## Creating your own vendor plugin ##
+
+It's very easy to write your own plugin. First, create your module and inject `$analyticsProvider`:
+
+	angular.module('angulartics.myplugin', ['angulartics'])
+	  .config(['$analyticsProvider', function ($analyticsProvider) {
+
+The module name can be anything of course, but it would be convenient to follow the style `angulartics.{vendorname}`.
+
+Next, you register either the page track function, event track function, or both. You do it by calling the `registerPageTrack` and `registerEventTrack` methods. Let's take a look at page tracking first:
+
+    $analyticsProvider.registerPageTrack(function (path) {
+		// your implementation here
+	}
+
+By calling `registerPageTrack`, you tell Angulartics to invoke your function on `$routeChangeSuccess`. Angulartics will send the new path as an argument.
+
+    $analyticsProvider.registerEventTrack(function (action, properties) {
+		// your implementation here
+
+This is very similar to page tracking. Angulartics will invoke your function every time the event (`analytics-on` attribute) is fired, passing the action (`analytics-event` attribute) and an object composed of any `analytics-*` attributes you put in the element.
+
+Check out the bundled plugins as reference. If you still have any questions, feel free to email me or post an issue at GitHub!
+
+# Playing around
+
+## Disabling virtual pageview tracking
+
+If you want to keep pageview tracking for its traditional meaning (whole page visits only), set virtualPageviews to false:
+
+	module.config(function ($analyticsProvider) {
+		$analyticsProvider.virtualPageviews(false);     
+
+## Programmatic tracking
+
+Use the `$analytics` service to emit pageview and event tracking:
+
+	module.controller('SampleCtrl', function($analytics) {
+		// emit pageview beacon with path /my/url
+	    $analytics.pageTrack('/my/url');
+
+		// emit event track (without properties)
+	    $analytics.eventTrack('eventName');
+
+		// emit event track (with category and label properties for GA)
+	    $analytics.eventTrack('eventName', { 
+	      category: 'category', label: 'label'
+        }); 
+
+## Declarative tracking
+
+Use `analytics-on` and `analytics-event` attributes for enabling event tracking on a specific HTML element:
+
+	<a href="file.pdf" 
+		analytics-on="click" 
+		analytics-event="Download">Download</a>
+
+`analytics-on` lets you specify the DOM event that triggers the event tracking; `analytics-event` is the event name to be sent. 
+
+Additional properties (for example, category as required by GA) may be specified by adding `analytics-*` attributes:
+
+	<a href="file.pdf" 
+		analytics-on="click" 
+		analytics-event="Download"
+		analytics-category="Content Actions">Download</a>
+
+# What else?
+
+See full docs and more samples at [http://luisfarzati.github.io/angulartics](http://luisfarzati.github.io/angulartics "http://luisfarzati.github.io/angulartics").
+
+# License
+
+Angulartics is freely distributable under the terms of the MIT license.
+
+Copyright (c) 2013 Luis Farzati
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/bower.json
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/bower.json b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/bower.json
new file mode 100644
index 0000000..5dad647
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/bower.json
@@ -0,0 +1,12 @@
+{
+  "name": "angulartics",
+  "version": "0.8.7",
+  "main": "./src/angulartics.js",
+  "dependencies": {
+    "angular": ">= 1.0.7",
+    "jquery-waypoints": "~v2.0.3"
+  },
+  "devDependencies": {
+    "angular-mocks": ">= 1.0.7"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-chartbeat.min.js
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-chartbeat.min.js b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-chartbeat.min.js
new file mode 100644
index 0000000..b5c35a5
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-chartbeat.min.js
@@ -0,0 +1,7 @@
+/**
+ * @license Angulartics v0.8.5
+ * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
+ * Contributed by http://github.com/chechoacosta
+ * License: MIT
+ */
+!function(a){"use strict";a.module("angulartics.chartbeat",["angulartics"]).config(["$analyticsProvider",function(a){angulartics.waitForVendorApi("pSUPERFLY",500,function(b){a.registerPageTrack(function(a){b.virtualPage(a)})}),a.registerEventTrack(function(){console.warn("Chartbeat doesn't support event tracking -- silently ignored.")})}])}(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-ga-cordova.min.js
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-ga-cordova.min.js b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-ga-cordova.min.js
new file mode 100644
index 0000000..7892f86
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-ga-cordova.min.js
@@ -0,0 +1,6 @@
+/**
+ * @license Angulartics v0.8.5
+ * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
+ * License: MIT
+ */
+!function(a){"use strict";a.module("angulartics.google.analytics.cordova",["angulartics"]).provider("googleAnalyticsCordova",function(){var b=["$q","$log","ready","debug","trackingId","period",function(a,b,c,d,e,f){function g(){d&&b.info(arguments)}function h(a){d&&b.error(a)}var i=a.defer(),j=!1;window.addEventListener("deviceReady",function(){j=!0,i.resolve()}),setTimeout(function(){j||i.resolve()},3e3),this.init=function(){return i.promise.then(function(){var a=window.plugins&&window.plugins.gaPlugin;a?a.init(function(){c(a,g,h)},h,e,f||10):d&&b.error("Google Analytics for Cordova is not available")})}}];return{$get:["$injector",function(c){return c.instantiate(b,{ready:this._ready||a.noop,debug:this.debug,trackingId:this.trackingId,period:this.period})}],ready:function(a){this._ready=a}}}).config(["$analyticsProvider","googleAnalyticsCordovaProvider",function(a,b){b.ready(function(b,c,d){a.registerPageTrack(function(a){b.trackPage(c,d,a)}),a.registerEventTrack(function(a,e){b.tr
 ackEvent(c,d,e.category,a,e.label,e.value)})})}]).run(["googleAnalyticsCordova",function(a){a.init()}])}(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-ga.min.js
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-ga.min.js b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-ga.min.js
new file mode 100644
index 0000000..4fae153
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-ga.min.js
@@ -0,0 +1,7 @@
+/**
+ * @license Angulartics v0.8.5
+ * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
+ * Universal Analytics update contributed by http://github.com/willmcclellan
+ * License: MIT
+ */
+!function(a){"use strict";a.module("angulartics.google.analytics",["angulartics"]).config(["$analyticsProvider",function(a){a.registerPageTrack(function(a){window._gaq&&_gaq.push(["_trackPageview",a]),window.ga&&ga("send","pageview",a)}),a.registerEventTrack(function(a,b){window._gaq&&_gaq.push(["_trackEvent",b.category,a,b.label,b.value]),window.ga&&ga("send","event",b.category,a,b.label,b.value)})}])}(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-google-analytics.min.js
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-google-analytics.min.js b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-google-analytics.min.js
new file mode 100644
index 0000000..4fae153
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-google-analytics.min.js
@@ -0,0 +1,7 @@
+/**
+ * @license Angulartics v0.8.5
+ * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
+ * Universal Analytics update contributed by http://github.com/willmcclellan
+ * License: MIT
+ */
+!function(a){"use strict";a.module("angulartics.google.analytics",["angulartics"]).config(["$analyticsProvider",function(a){a.registerPageTrack(function(a){window._gaq&&_gaq.push(["_trackPageview",a]),window.ga&&ga("send","pageview",a)}),a.registerEventTrack(function(a,b){window._gaq&&_gaq.push(["_trackEvent",b.category,a,b.label,b.value]),window.ga&&ga("send","event",b.category,a,b.label,b.value)})}])}(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-kissmetrics.min.js
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-kissmetrics.min.js b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-kissmetrics.min.js
new file mode 100644
index 0000000..2973de3
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-kissmetrics.min.js
@@ -0,0 +1,6 @@
+/**
+ * @license Angulartics v0.8.5
+ * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
+ * License: MIT
+ */
+!function(a){"use strict";a.module("angulartics.kissmetrics",["angulartics"]).config(["$analyticsProvider",function(a){a.registerPageTrack(function(a){_kmq.push(["record","Pageview",{Page:a}])}),a.registerEventTrack(function(a,b){_kmq.push(["record",a,b])})}])}(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-mixpanel.min.js
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-mixpanel.min.js b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-mixpanel.min.js
new file mode 100644
index 0000000..e2b3d97
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-mixpanel.min.js
@@ -0,0 +1,7 @@
+/**
+ * @license Angulartics v0.8.5
+ * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
+ * Contributed by http://github.com/L42y
+ * License: MIT
+ */
+!function(a){"use strict";a.module("angulartics.mixpanel",["angulartics"]).config(["$analyticsProvider",function(a){a.registerPageTrack(function(a){mixpanel.track_pageview(a)}),a.registerEventTrack(function(a,b){mixpanel.track(a,b)})}])}(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-scroll.min.js
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-scroll.min.js b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-scroll.min.js
new file mode 100644
index 0000000..0df3655
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-scroll.min.js
@@ -0,0 +1,14 @@
+/**
+ * @license Angulartics v0.8.5
+ * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
+ * License: MIT
+ */
+!function(a){"use strict";a.module("angulartics.scroll",["angulartics"]).directive("analyticsOn",["$analytics",function(){function b(a){return"scrollby"===a.substr(0,8)}function c(a){return["","true","false"].indexOf(a)>-1?"true"===a.replace("","true"):a}return{restrict:"A",priority:5,scope:!1,link:function(d,e,f){if("scrollby"===f.analyticsOn){var g={continuous:!1,triggerOnce:!0};a.forEach(f.$attr,function(a,d){b(a)&&(g[d.slice(8,9).toLowerCase()+d.slice(9)]=c(f[d]))}),$(e[0]).waypoint(function(){this.dispatchEvent(new Event("scrollby"))},g)}}}}])}(angular);
+// Generated by CoffeeScript 1.6.2
+/*
+jQuery Waypoints - v2.0.3
+Copyright (c) 2011-2013 Caleb Troughton
+Dual licensed under the MIT license and GPL license.
+https://github.com/imakewebthings/jquery-waypoints/blob/master/licenses.txt
+*/
+(function(){var t=[].indexOf||function(t){for(var e=0,n=this.length;e<n;e++){if(e in this&&this[e]===t)return e}return-1},e=[].slice;(function(t,e){if(typeof define==="function"&&define.amd){return define("waypoints",["jquery"],function(n){return e(n,t)})}else{return e(t.jQuery,t)}})(this,function(n,r){var i,o,l,s,f,u,a,c,h,d,p,y,v,w,g,m;i=n(r);c=t.call(r,"ontouchstart")>=0;s={horizontal:{},vertical:{}};f=1;a={};u="waypoints-context-id";p="resize.waypoints";y="scroll.waypoints";v=1;w="waypoints-waypoint-ids";g="waypoint";m="waypoints";o=function(){function t(t){var e=this;this.$element=t;this.element=t[0];this.didResize=false;this.didScroll=false;this.id="context"+f++;this.oldScroll={x:t.scrollLeft(),y:t.scrollTop()};this.waypoints={horizontal:{},vertical:{}};t.data(u,this.id);a[this.id]=this;t.bind(y,function(){var t;if(!(e.didScroll||c)){e.didScroll=true;t=function(){e.doScroll();return e.didScroll=false};return r.setTimeout(t,n[m].settings.scrollThrottle)}});t.bind(p,function(){v
 ar t;if(!e.didResize){e.didResize=true;t=function(){n[m]("refresh");return e.didResize=false};return r.setTimeout(t,n[m].settings.resizeThrottle)}})}t.prototype.doScroll=function(){var t,e=this;t={horizontal:{newScroll:this.$element.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.$element.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};if(c&&(!t.vertical.oldScroll||!t.vertical.newScroll)){n[m]("refresh")}n.each(t,function(t,r){var i,o,l;l=[];o=r.newScroll>r.oldScroll;i=o?r.forward:r.backward;n.each(e.waypoints[t],function(t,e){var n,i;if(r.oldScroll<(n=e.offset)&&n<=r.newScroll){return l.push(e)}else if(r.newScroll<(i=e.offset)&&i<=r.oldScroll){return l.push(e)}});l.sort(function(t,e){return t.offset-e.offset});if(!o){l.reverse()}return n.each(l,function(t,e){if(e.options.continuous||t===l.length-1){return e.trigger([i])}})});return this.oldScroll={x:t.horizontal.newScroll,y:t.vertical.newScroll}};t.prototype.re
 fresh=function(){var t,e,r,i=this;r=n.isWindow(this.element);e=this.$element.offset();this.doScroll();t={horizontal:{contextOffset:r?0:e.left,contextScroll:r?0:this.oldScroll.x,contextDimension:this.$element.width(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:r?0:e.top,contextScroll:r?0:this.oldScroll.y,contextDimension:r?n[m]("viewportHeight"):this.$element.height(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};return n.each(t,function(t,e){return n.each(i.waypoints[t],function(t,r){var i,o,l,s,f;i=r.options.offset;l=r.offset;o=n.isWindow(r.element)?0:r.$element.offset()[e.offsetProp];if(n.isFunction(i)){i=i.apply(r.element)}else if(typeof i==="string"){i=parseFloat(i);if(r.options.offset.indexOf("%")>-1){i=Math.ceil(e.contextDimension*i/100)}}r.offset=o-e.contextOffset+e.contextScroll-i;if(r.options.onlyOnScroll&&l!=null||!r.enabled){return}if(l!==null&&l<(s=e.oldScroll)&&s<=r.offset){return r.t
 rigger([e.backward])}else if(l!==null&&l>(f=e.oldScroll)&&f>=r.offset){return r.trigger([e.forward])}else if(l===null&&e.oldScroll>=r.offset){return r.trigger([e.forward])}})})};t.prototype.checkEmpty=function(){if(n.isEmptyObject(this.waypoints.horizontal)&&n.isEmptyObject(this.waypoints.vertical)){this.$element.unbind([p,y].join(" "));return delete a[this.id]}};return t}();l=function(){function t(t,e,r){var i,o;r=n.extend({},n.fn[g].defaults,r);if(r.offset==="bottom-in-view"){r.offset=function(){var t;t=n[m]("viewportHeight");if(!n.isWindow(e.element)){t=e.$element.height()}return t-n(this).outerHeight()}}this.$element=t;this.element=t[0];this.axis=r.horizontal?"horizontal":"vertical";this.callback=r.handler;this.context=e;this.enabled=r.enabled;this.id="waypoints"+v++;this.offset=null;this.options=r;e.waypoints[this.axis][this.id]=this;s[this.axis][this.id]=this;i=(o=t.data(w))!=null?o:[];i.push(this.id);t.data(w,i)}t.prototype.trigger=function(t){if(!this.enabled){return}if(this
 .callback!=null){this.callback.apply(this.element,t)}if(this.options.triggerOnce){return this.destroy()}};t.prototype.disable=function(){return this.enabled=false};t.prototype.enable=function(){this.context.refresh();return this.enabled=true};t.prototype.destroy=function(){delete s[this.axis][this.id];delete this.context.waypoints[this.axis][this.id];return this.context.checkEmpty()};t.getWaypointsByElement=function(t){var e,r;r=n(t).data(w);if(!r){return[]}e=n.extend({},s.horizontal,s.vertical);return n.map(r,function(t){return e[t]})};return t}();d={init:function(t,e){var r;if(e==null){e={}}if((r=e.handler)==null){e.handler=t}this.each(function(){var t,r,i,s;t=n(this);i=(s=e.context)!=null?s:n.fn[g].defaults.context;if(!n.isWindow(i)){i=t.closest(i)}i=n(i);r=a[i.data(u)];if(!r){r=new o(i)}return new l(t,r,e)});n[m]("refresh");return this},disable:function(){return d._invoke(this,"disable")},enable:function(){return d._invoke(this,"enable")},destroy:function(){return d._invoke(this
 ,"destroy")},prev:function(t,e){return d._traverse.call(this,t,e,function(t,e,n){if(e>0){return t.push(n[e-1])}})},next:function(t,e){return d._traverse.call(this,t,e,function(t,e,n){if(e<n.length-1){return t.push(n[e+1])}})},_traverse:function(t,e,i){var o,l;if(t==null){t="vertical"}if(e==null){e=r}l=h.aggregate(e);o=[];this.each(function(){var e;e=n.inArray(this,l[t]);return i(o,e,l[t])});return this.pushStack(o)},_invoke:function(t,e){t.each(function(){var t;t=l.getWaypointsByElement(this);return n.each(t,function(t,n){n[e]();return true})});return this}};n.fn[g]=function(){var t,r;r=arguments[0],t=2<=arguments.length?e.call(arguments,1):[];if(d[r]){return d[r].apply(this,t)}else if(n.isFunction(r)){return d.init.apply(this,arguments)}else if(n.isPlainObject(r)){return d.init.apply(this,[null,r])}else if(!r){return n.error("jQuery Waypoints needs a callback function or handler option.")}else{return n.error("The "+r+" method does not exist in jQuery Waypoints.")}};n.fn[g].defaults
 ={context:r,continuous:true,enabled:true,horizontal:false,offset:0,triggerOnce:false};h={refresh:function(){return n.each(a,function(t,e){return e.refresh()})},viewportHeight:function(){var t;return(t=r.innerHeight)!=null?t:i.height()},aggregate:function(t){var e,r,i;e=s;if(t){e=(i=a[n(t).data(u)])!=null?i.waypoints:void 0}if(!e){return[]}r={horizontal:[],vertical:[]};n.each(r,function(t,i){n.each(e[t],function(t,e){return i.push(e)});i.sort(function(t,e){return t.offset-e.offset});r[t]=n.map(i,function(t){return t.element});return r[t]=n.unique(r[t])});return r},above:function(t){if(t==null){t=r}return h._filter(t,"vertical",function(t,e){return e.offset<=t.oldScroll.y})},below:function(t){if(t==null){t=r}return h._filter(t,"vertical",function(t,e){return e.offset>t.oldScroll.y})},left:function(t){if(t==null){t=r}return h._filter(t,"horizontal",function(t,e){return e.offset<=t.oldScroll.x})},right:function(t){if(t==null){t=r}return h._filter(t,"horizontal",function(t,e){return e.of
 fset>t.oldScroll.x})},enable:function(){return h._invoke("enable")},disable:function(){return h._invoke("disable")},destroy:function(){return h._invoke("destroy")},extendFn:function(t,e){return d[t]=e},_invoke:function(t){var e;e=n.extend({},s.vertical,s.horizontal);return n.each(e,function(e,n){n[t]();return true})},_filter:function(t,e,r){var i,o;i=a[n(t).data(u)];if(!i){return[]}o=[];n.each(i.waypoints[e],function(t,e){if(r(i,e)){return o.push(e)}});o.sort(function(t,e){return t.offset-e.offset});return n.map(o,function(t){return t.element})}};n[m]=function(){var t,n;n=arguments[0],t=2<=arguments.length?e.call(arguments,1):[];if(h[n]){return h[n].apply(null,t)}else{return h.aggregate.call(null,n)}};n[m].settings={resizeThrottle:100,scrollThrottle:30};return i.load(function(){return n[m]("refresh")})})}).call(this);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-segmentio.min.js
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-segmentio.min.js b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-segmentio.min.js
new file mode 100644
index 0000000..7ef6699
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics-segmentio.min.js
@@ -0,0 +1,6 @@
+/**
+ * @license Angulartics v0.8.5
+ * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
+ * License: MIT
+ */
+!function(a){"use strict";a.module("angulartics.segment.io",["angulartics"]).config(["$analyticsProvider",function(a){a.registerPageTrack(function(a){analytics.pageview(a)}),a.registerEventTrack(function(a,b){analytics.track(a,b)})}])}(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics.min.js
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics.min.js b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics.min.js
new file mode 100644
index 0000000..93eaa0e
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/dist/angulartics.min.js
@@ -0,0 +1,6 @@
+/**
+ * @license Angulartics v0.8.5
+ * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
+ * License: MIT
+ */
+!function(a){"use strict";var b=window.angulartics||(window.angulartics={});b.waitForVendorApi=function(a,c,d){window.hasOwnProperty(a)?d(window[a]):setTimeout(function(){b.waitForVendorApi(a,c,d)},c)},a.module("angulartics",[]).provider("$analytics",function(){var b={pageTracking:{autoTrackFirstPage:!0,autoTrackVirtualPages:!0,basePath:"",bufferFlushDelay:1e3},eventTracking:{bufferFlushDelay:1e3}},c={pageviews:[],events:[]},d=function(a){c.pageviews.push(a)},e=function(a,b){c.events.push({name:a,properties:b})},f={settings:b,pageTrack:d,eventTrack:e},g=function(d){f.pageTrack=d,a.forEach(c.pageviews,function(a,c){setTimeout(function(){f.pageTrack(a)},c*b.pageTracking.bufferFlushDelay)})},h=function(d){f.eventTrack=d,a.forEach(c.events,function(a,c){setTimeout(function(){f.eventTrack(a.name,a.properties)},c*b.eventTracking.bufferFlushDelay)})};return{$get:function(){return f},settings:b,virtualPageviews:function(a){this.settings.pageTracking.autoTrackVirtualPages=a},firstPageview:fu
 nction(a){this.settings.pageTracking.autoTrackFirstPage=a},withBase:function(b){this.settings.pageTracking.basePath=b?a.element("base").attr("href"):""},registerPageTrack:g,registerEventTrack:h}}).run(["$rootScope","$location","$analytics",function(a,b,c){c.settings.pageTracking.autoTrackFirstPage&&c.pageTrack(b.absUrl()),c.settings.pageTracking.autoTrackVirtualPages&&a.$on("$routeChangeSuccess",function(a,d){if(!d||!(d.$$route||d).redirectTo){var e=c.settings.pageTracking.basePath+b.url();c.pageTrack(e)}})}]).directive("analyticsOn",["$analytics",function(b){function c(a){return["a:","button:","button:button","button:submit","input:button","input:submit"].indexOf(a.tagName.toLowerCase()+":"+(a.type||""))>=0}function d(a){return c(a)?"click":"click"}function e(a){return c(a)?a.innerText||a.value:a.id||a.name||a.tagName}function f(a){return"analytics"===a.substr(0,9)&&-1===["on","event"].indexOf(a.substr(10))}return{restrict:"A",scope:!1,link:function(c,g,h){var i=h.analyticsOn||d(g[
 0]),j=h.analyticsEvent||e(g[0]),k={};a.forEach(h.$attr,function(a,b){f(a)&&(k[b.slice(9).toLowerCase()]=h[b])}),a.element(g[0]).bind(i,function(){b.eventTrack(j,k)})}}}])}(angular);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/karma.conf.js
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/karma.conf.js b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/karma.conf.js
new file mode 100644
index 0000000..7523b29
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/karma.conf.js
@@ -0,0 +1,22 @@
+module.exports = function(config) {
+  'use strict';
+  
+  config.set({
+
+    basePath: './',
+
+    frameworks: ["jasmine"],
+
+    files: [
+      'components/angular/angular.js',
+      'components/angular-mocks/angular-mocks.js',
+      'src/**/*.js',
+      'test/**/*.js'
+    ],
+
+    autoWatch: true,
+
+    browsers: ['PhantomJS']
+
+  });
+};

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/package.json
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/package.json b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/package.json
new file mode 100644
index 0000000..ce3ef9a
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/package.json
@@ -0,0 +1,43 @@
+{
+  "name": "angulartics",
+  "description": "Vendor-agnostic web analytics for AngularJS applications",
+  "version": "0.8.7",
+  "filename": "./src/angulartics.min.js",
+  "homepage": "http://luisfarzati.github.io/angulartics",
+  "author": {
+    "name": "Luis Farzati",
+    "email": "lfarzati@gmail.com",
+    "url": "http://github.com/luisfarzati"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/luisfarzati/angulartics.git"
+  },
+  "keywords": [
+    "angular",
+    "analytics",
+    "tracking",
+    "google analytics",
+    "mixpanel",
+    "kissmetrics",
+    "chartbeat",
+    "segment.io",
+    "page tracking",
+    "event tracking",
+    "scroll tracking"
+  ],
+  "bugs": {
+    "url": "http://github.com/luisfarzati/angulartics/issues"
+  },
+  "dependencies": {
+  },
+  "devDependencies": {
+    "grunt": "latest",
+    "grunt-karma": "latest",
+    "grunt-contrib-jshint": "latest",
+    "grunt-contrib-concat": "latest",
+    "grunt-contrib-uglify": "latest",
+    "grunt-contrib-clean": "latest",
+    "phantomjs": "latest"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/chartbeat.html
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/chartbeat.html b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/chartbeat.html
new file mode 100644
index 0000000..445a65e
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/chartbeat.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf8">
+	<title>Chartbeat sample | Angulartics</title>
+	<link rel="stylesheet" href="//bootswatch.com/cosmo/bootstrap.min.css">
+	<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
+	<script src="../src/angulartics.js"></script>
+	<script src="../src/angulartics-chartbeat.js"></script>
+	<script type="text/javascript">var _sf_startpt=(new Date()).getTime()</script>
+</head>
+<body ng-app="sample">
+
+<div class="navbar navbar-default">
+	<div class="navbar-header">
+		<a class="navbar-brand" href="#/">My App</a>
+	</div>
+	<div>
+		<ul class="nav navbar-nav">
+			<li><a href="#/a">Page A</a></li>
+			<li><a href="#/b">Page B</a></li>
+			<li><a href="#/c">Page C</a></li>
+		</ul>
+	</div>
+</div>
+
+<div class="container">
+	<div ng-view></div>
+	<hr>
+
+	<button disabled analytics-on="click" analytics-event="Button 1" analytics-category="Commands" class="btn btn-default">Button 1</button>
+
+	<!-- same as analytics-on="click", because 'click' is the default -->
+	<button disabled analytics-on analytics-event="Button 2" analytics-category="Commands" class="btn btn-primary">Button 2</button>
+
+	<!-- same as analytics-event="Button 3", because is inferred from innerText -->
+	<button disabled analytics-on analytics-category="Commands" class="btn btn-success">Button 3</button>
+
+	<button disabled analytics-on analytics-label="Button4 label" analytics-value="1" class="btn btn-info">Button 4</button>
+
+	<span>(Chartbeat doesn't support Event Tracking)</span>
+	<hr>
+
+	<p class="alert alert-success">
+		Open the network inspector in your browser, click any of the nav options or buttons above and you'll see the analytics
+		request being executed. Then check <a class="alert-link" href="http://chartbeat.com/dashboard">your Chartbeat dashboard</a>.
+	</p>
+</div>
+
+<script>
+	angular.module('sample', ['angulartics', 'angulartics.chartbeat'])
+	.config(function ($routeProvider, $analyticsProvider) {
+		$routeProvider
+			.when('/', { templateUrl: '/samples/partials/root.tpl.html', controller: 'SampleCtrl' })
+	  	.when('/a', { templateUrl: '/samples/partials/a.tpl.html', controller: 'SampleCtrl' })
+		  .when('/b', { templateUrl: '/samples/partials/b.tpl.html', controller: 'SampleCtrl' })
+		  .when('/c', { templateUrl: '/samples/partials/c.tpl.html', controller: 'SampleCtrl' })
+		  .otherwise({ redirectTo: '/' });
+	})
+	.controller('SampleCtrl', function () {});
+</script>
+<script type="text/javascript">
+  var _sf_async_config = { uid: 48378, domain: 'angulartics.herokuapp.com', useCanonical: true };
+  (function() {
+    function loadChartbeat() {
+      window._sf_endpt = (new Date()).getTime();
+      var e = document.createElement('script');
+      e.setAttribute('language', 'javascript');
+      e.setAttribute('type', 'text/javascript');
+      e.setAttribute('src','//static.chartbeat.com/js/chartbeat.js');
+      document.body.appendChild(e);
+    };
+    var oldonload = window.onload;
+    window.onload = (typeof window.onload != 'function') ?
+      loadChartbeat : function() { oldonload(); loadChartbeat(); };
+  })();
+</script>
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/google-analytics.html
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/google-analytics.html b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/google-analytics.html
new file mode 100644
index 0000000..470b100
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/google-analytics.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf8">
+	<title>Google Analytics sample | Angulartics</title>
+	<link rel="stylesheet" href="//bootswatch.com/cosmo/bootstrap.min.css">
+	<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
+	<script src="../src/angulartics.js"></script>
+	<script src="../src/angulartics-ga.js"></script>
+	<script>
+	  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+	  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+	  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+	  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+  	ga('create', 'UA-10255892-9', { 'cookieDomain': 'none' });
+	</script>
+
+</head>
+<body ng-app="sample">
+
+<div class="navbar navbar-default">
+	<div class="navbar-header">
+		<a class="navbar-brand" href="#/">My App</a>
+	</div>
+	<div>
+		<ul class="nav navbar-nav">
+			<li><a href="#/a">Page A</a></li>
+			<li><a href="#/b">Page B</a></li>
+			<li><a href="#/c">Page C</a></li>
+		</ul>
+	</div>
+</div>
+
+<div class="container">
+	<div ng-view></div>
+	<hr>
+
+	<button analytics-on="click" analytics-event="Button 1" analytics-category="Commands" class="btn btn-default">Button 1</button>
+
+	<!-- same as analytics-on="click", because 'click' is the default -->
+	<button analytics-on analytics-event="Button 2" analytics-category="Commands" class="btn btn-primary">Button 2</button>
+
+	<!-- same as analytics-event="Button 3", because is inferred from innerText -->
+	<button analytics-on analytics-category="Commands" class="btn btn-success">Button 3</button>
+
+	<button analytics-on analytics-label="Button4 label" analytics-value="1" class="btn btn-info">Button 4</button>
+	<hr>
+
+	<p class="alert alert-success">
+		Open the network inspector in your browser, click any of the nav options or buttons above and you'll see the analytics
+		request being executed. Then check <a class="alert-link" href="http://www.google.com/analytics/web/">your Google Analytics dashboard</a>.
+	</p>
+</div>
+
+<script>
+	angular.module('sample', ['angulartics', 'angulartics.google.analytics'])
+	.config(function ($routeProvider, $analyticsProvider) {
+		$routeProvider
+			.when('/', { templateUrl: '/samples/partials/root.tpl.html', controller: 'SampleCtrl' })
+	  	.when('/a', { templateUrl: '/samples/partials/a.tpl.html', controller: 'SampleCtrl' })
+		  .when('/b', { templateUrl: '/samples/partials/b.tpl.html', controller: 'SampleCtrl' })
+		  .when('/c', { templateUrl: '/samples/partials/c.tpl.html', controller: 'SampleCtrl' })
+		  .otherwise({ redirectTo: '/' });
+	})
+	.controller('SampleCtrl', function () {});
+</script>
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/kissmetrics.html
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/kissmetrics.html b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/kissmetrics.html
new file mode 100644
index 0000000..2365d5d
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/kissmetrics.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf8">
+	<title>Kissmetrics sample | Angulartics</title>
+	<link rel="stylesheet" href="//bootswatch.com/cosmo/bootstrap.min.css">
+
+	<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
+	<script src="../src/angulartics.js"></script>
+	<script src="../src/angulartics-kissmetrics.js"></script>
+	<script type="text/javascript">
+		var _kmq = _kmq || [];
+		var _kmk = _kmk || 'a41242214c6f8c693b4c8a59fa8f981e13549deb';
+		function _kms(u){
+		setTimeout(function(){
+		  var d = document, f = d.getElementsByTagName('script')[0],
+		  s = d.createElement('script');
+		  s.type = 'text/javascript'; s.async = true; s.src = u;
+		  f.parentNode.insertBefore(s, f);
+		}, 1);
+		}
+		_kms('//i.kissmetrics.com/i.js');
+		_kms('//doug1izaerwt3.cloudfront.net/' + _kmk + '.1.js');		
+	</script>
+</head>
+<body ng-app="sample">
+
+<div class="navbar navbar-default">
+	<div class="navbar-header">
+		<a class="navbar-brand" href="#/">My App</a>
+	</div>
+	<div>
+		<ul class="nav navbar-nav">
+			<li><a href="#/a">Page A</a></li>
+			<li><a href="#/b">Page B</a></li>
+			<li><a href="#/c">Page C</a></li>
+		</ul>
+	</div>
+</div>
+
+<div class="container">
+	<div ng-view></div>
+	<hr>
+
+	<button analytics-on="click" analytics-event="Button 1" analytics-category="Commands" class="btn btn-default">Button 1</button>
+
+	<!-- same as analytics-on="click", because 'click' is the default -->
+	<button analytics-on analytics-event="Button 2" analytics-category="Commands" class="btn btn-primary">Button 2</button>
+
+	<!-- same as analytics-event="Button 3", because is inferred from innerText -->
+	<button analytics-on analytics-category="Commands" class="btn btn-success">Button 3</button>
+
+	<button analytics-on analytics-label="Button4 label" analytics-value="1" class="btn btn-info">Button 4</button>
+	<hr>
+
+	<p class="alert alert-success">
+		Open the network inspector in your browser, click any of the nav options or buttons above and you'll see the analytics
+		request being executed. Then check <a class="alert-link" href="http://kissmetrics.com">your Kissmetrics dashboard</a>.
+	</p>
+</div>
+
+<script>
+	angular.module('sample', ['angulartics', 'angulartics.kissmetrics'])
+	.config(function ($routeProvider, $analyticsProvider) {
+		$routeProvider
+			.when('/', { templateUrl: '/samples/partials/root.tpl.html', controller: 'SampleCtrl' })
+	  	.when('/a', { templateUrl: '/samples/partials/a.tpl.html', controller: 'SampleCtrl' })
+		  .when('/b', { templateUrl: '/samples/partials/b.tpl.html', controller: 'SampleCtrl' })
+		  .when('/c', { templateUrl: '/samples/partials/c.tpl.html', controller: 'SampleCtrl' })
+		  .otherwise({ redirectTo: '/' });
+	})
+	.controller('SampleCtrl', function () {});
+</script>
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/mixpanel.html
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/mixpanel.html b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/mixpanel.html
new file mode 100644
index 0000000..b22c94d
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/mixpanel.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf8">
+	<title>Mixpanel sample | Angulartics</title>
+	<link rel="stylesheet" href="//bootswatch.com/cosmo/bootstrap.min.css">
+
+	<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
+	<script src="../src/angulartics.js"></script>
+	<script src="../src/angulartics-mixpanel.js"></script>
+<!-- start Mixpanel --><script type="text/javascript">(function(e,b){if(!b.__SV){var a,f,i,g;window.mixpanel=b;a=e.createElement("script");a.type="text/javascript";a.async=!0;a.src=("https:"===e.location.protocol?"https:":"http:")+'//cdn.mxpnl.com/libs/mixpanel-2.2.min.js';f=e.getElementsByTagName("script")[0];f.parentNode.insertBefore(a,f);b._i=[];b.init=function(a,e,d){function f(b,h){var a=h.split(".");2==a.length&&(b=b[a[0]],h=a[1]);b[h]=function(){b.push([h].concat(Array.prototype.slice.call(arguments,0)))}}var c=b;"undefined"!==
+typeof d?c=b[d]=[]:d="mixpanel";c.people=c.people||[];c.toString=function(b){var a="mixpanel";"mixpanel"!==d&&(a+="."+d);b||(a+=" (stub)");return a};c.people.toString=function(){return c.toString(1)+".people (stub)"};i="disable track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config people.set people.set_once people.increment people.append people.track_charge people.clear_charges people.delete_user".split(" ");for(g=0;g<i.length;g++)f(c,i[g]);
+b._i.push([a,e,d])};b.__SV=1.2}})(document,window.mixpanel||[]);
+mixpanel.init("82846d4a839f20a2a616b30ca30b6298", { track_pageview: false });</script><!-- end Mixpanel -->
+</head>
+<body ng-app="sample">
+
+<div class="navbar navbar-default">
+	<div class="navbar-header">
+		<a class="navbar-brand" href="#/">My App</a>
+	</div>
+	<div>
+		<ul class="nav navbar-nav">
+			<li><a href="#/a">Page A</a></li>
+			<li><a href="#/b">Page B</a></li>
+			<li><a href="#/c">Page C</a></li>
+		</ul>
+	</div>
+</div>
+
+<div class="container">
+	<div ng-view></div>
+	<hr>
+
+	<button analytics-on="click" analytics-event="Button 1" analytics-category="Commands" class="btn btn-default">Button 1</button>
+
+	<!-- same as analytics-on="click", because 'click' is the default -->
+	<button analytics-on analytics-event="Button 2" analytics-category="Commands" class="btn btn-primary">Button 2</button>
+
+	<!-- same as analytics-event="Button 3", because is inferred from innerText -->
+	<button analytics-on analytics-category="Commands" class="btn btn-success">Button 3</button>
+
+	<button analytics-on analytics-label="Button4 label" analytics-value="1" class="btn btn-info">Button 4</button>
+	<hr>
+
+	<p class="alert alert-success">
+		Open the network inspector in your browser, click any of the nav options or buttons above and you'll see the analytics
+		request being executed. Then check <a class="alert-link" href="http://mixpanel.com/report">your Mixpanel dashboard</a>.
+	</p>
+</div>
+
+<script>
+	angular.module('sample', ['angulartics', 'angulartics.mixpanel'])
+	.config(function ($routeProvider, $analyticsProvider) {
+		$routeProvider
+			.when('/', { templateUrl: '/samples/partials/root.tpl.html', controller: 'SampleCtrl' })
+	  	.when('/a', { templateUrl: '/samples/partials/a.tpl.html', controller: 'SampleCtrl' })
+		  .when('/b', { templateUrl: '/samples/partials/b.tpl.html', controller: 'SampleCtrl' })
+		  .when('/c', { templateUrl: '/samples/partials/c.tpl.html', controller: 'SampleCtrl' })
+		  .otherwise({ redirectTo: '/' });
+	})
+	.controller('SampleCtrl', function () {});
+</script>
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/partials/a.tpl.html
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/partials/a.tpl.html b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/partials/a.tpl.html
new file mode 100644
index 0000000..252886f
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/partials/a.tpl.html
@@ -0,0 +1 @@
+<h3>Sample page "A"</h3>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/partials/b.tpl.html
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/partials/b.tpl.html b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/partials/b.tpl.html
new file mode 100644
index 0000000..b2dd91c
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/partials/b.tpl.html
@@ -0,0 +1 @@
+<h3>Sample page "B"</h3>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/partials/c.tpl.html
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/partials/c.tpl.html b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/partials/c.tpl.html
new file mode 100644
index 0000000..b91053c
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/partials/c.tpl.html
@@ -0,0 +1 @@
+<h3>Sample page "C"</h3>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/partials/root.tpl.html
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/partials/root.tpl.html b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/partials/root.tpl.html
new file mode 100644
index 0000000..a5c91e8
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/partials/root.tpl.html
@@ -0,0 +1 @@
+<h3>Sample root page</h3>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/scroll.html
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/scroll.html b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/scroll.html
new file mode 100644
index 0000000..f2b47e8
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/scroll.html
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf8">
+	<title>Scrolling sample | Angulartics</title>
+	<link rel="stylesheet" href="//bootswatch.com/cosmo/bootstrap.min.css">
+	<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
+	<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
+	<script src="../src/angulartics.js"></script>
+	<script src="../src/angulartics-scroll.js"></script>
+</head>
+<body ng-app="sample" style="padding-top:100px">
+
+<div class="navbar navbar-default navbar-fixed-top">
+	<div class="navbar-header">
+		<a class="navbar-brand" href="#/">My App</a>
+	</div>
+	<div>
+		<ul class="nav navbar-nav">
+			<li><a href="#first">First</a></li>
+			<li><a href="#second">Second</a></li>
+			<li><a href="#third">Third</a></li>
+			<li><a href="#tenth">Tenth</a></li>
+		</ul>
+		<ul class="nav navbar-nav navbar-right">
+			<li><p id="notifier" class="navbar-text" style="display:none;background-color:darkorange;padding:6px;margin:8px"></p></li>
+		</ul>
+	</div>
+</div>
+
+<div class="container">
+<section id="first" analytics-on="scrollby" scrollby-offset="15%" scrollby-trigger-once scrollby-continuous>
+<h2>First</h2><p><blockquote>Cras eget nisl sed velit eleifend ultrices at vitae dolor. Ut at elementum libero, viverra lacinia nisl. Sed aliquam nulla ac suscipit faucibus. Fusce et purus nisl. Vivamus molestie nisi eu nulla fermentum luctus. Quisque cursus, nibh nec vestibulum condimentum, turpis orci tincidunt ante, eu faucibus lorem urna id arcu. Mauris volutpat velit nec eros facilisis, eu porttitor erat scelerisque. Praesent accumsan velit vitae tellus venenatis dapibus. Nulla vitae consequat tellus, eu scelerisque dui. Proin turpis justo, gravida quis elit a, ultricies gravida dui. Nulla facilisi. Sed nec pellentesque ligula.</blockquote></p>
+</section>
+
+<section id="second" analytics-on="scrollby" scrollby-offset="15%" scrollby-trigger-once="false">
+<h2>Second <small>(triggers multiple times)</small></h2><p><blockquote>Sed porta, odio sit amet sagittis varius, tellus mauris faucibus velit, sed posuere leo nunc ac lorem. Duis risus purus, consequat vitae pharetra et, auctor faucibus neque. Ut ac faucibus erat. Proin consectetur tempor quam non gravida. Suspendisse cursus mollis dolor, a elementum tellus eleifend at. Nunc ac felis sit amet nibh ultricies feugiat at ac felis. Fusce dignissim purus ornare tristique mollis. Phasellus elementum at libero in molestie. Sed eget luctus purus. Ut vulputate massa eget dictum accumsan. Maecenas semper augue a felis fringilla vehicula. Cras fringilla felis mauris, ac vehicula erat congue a. Mauris eget urna libero. Maecenas ac risus at elit sodales tempus. Nam varius consequat hendrerit.</blockquote></p>
+</section>
+
+<section id="third" analytics-on="scrollby" scrollby-offset="15%">
+<h2>Third</h2><p><blockquote>Integer vel nisi id nulla rutrum hendrerit et vitae risus. Nam sit amet ipsum orci. Ut nec leo eu sapien posuere pharetra et ut nibh. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque accumsan eros ligula, in eleifend nisl ornare nec. Vestibulum massa lacus, gravida at facilisis vel, consequat vel orci. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sed condimentum mi. Curabitur in neque semper, volutpat turpis non, iaculis quam. Maecenas id lectus non nulla euismod tempor. Nulla eu magna ut justo congue rutrum. Nunc vel felis eleifend, feugiat enim quis, tempus augue. Quisque in varius erat, eget feugiat augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris feugiat justo at nulla commodo vestibulum.</blockquote></p>
+</section>
+
+<section id="fourth" analytics-on="scrollby" scrollby-offset="15%">
+<h2>Fourth</h2><p><blockquote>Aenean ac pharetra ligula, id viverra purus. In malesuada odio ac lacinia consequat. Ut lobortis, nisl id fermentum vehicula, lorem diam ultricies velit, sed suscipit nisl risus et magna. Cras porttitor nisl eget nulla venenatis ultrices. Praesent sed pellentesque neque. Duis rhoncus purus sit amet elit bibendum, tincidunt facilisis mauris sagittis. Aenean quis tristique lectus, sed scelerisque diam. Nam tempus elementum orci, quis pulvinar nisl rutrum eget. Curabitur ornare tristique justo, in faucibus massa venenatis eu. Vestibulum eget lacus vitae lectus tincidunt sollicitudin. Suspendisse pellentesque tincidunt leo quis egestas. Aenean tellus lacus, aliquam vitae arcu eu, scelerisque tristique eros.</blockquote></p>
+</section>
+
+<section id="fifth" analytics-on="scrollby" scrollby-offset="15%">
+<h2>Fifth</h2><p><blockquote>Phasellus nec leo risus. Proin feugiat massa sit amet aliquam scelerisque. Aenean porta nec ante in auctor. Pellentesque eget egestas leo. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Morbi dignissim lobortis urna, non molestie magna lacinia ac. In id tellus ultrices, tempor libero at, porttitor neque. Donec et lobortis lacus, at ornare eros. Curabitur ac vulputate augue. Mauris vitae mi justo. Sed velit erat, volutpat a libero ut, luctus molestie metus. Duis elementum tellus sed rhoncus lacinia. Nam pharetra lacus placerat mollis accumsan. Duis consectetur orci eu arcu ultricies luctus. Morbi ipsum augue, hendrerit id viverra vitae, sagittis quis dolor.</blockquote></p>
+</section>
+
+<section id="sixth" analytics-on="scrollby" scrollby-offset="15%">
+<h2>Sixth</h2><p><blockquote>Nam neque sem, tempor non elementum non, suscipit vitae magna. Nulla congue euismod facilisis. Curabitur at tortor augue. Praesent nec interdum mauris. Vivamus tristique placerat tellus, sed venenatis felis placerat ac. Mauris ultrices dolor quis massa pulvinar rhoncus. Pellentesque condimentum augue risus, sed lacinia dolor dictum ut.</blockquote></p>
+</section>
+
+<section id="seventh" analytics-on="scrollby" scrollby-offset="15%">
+<h2>Seventh</h2><p><blockquote>Pellentesque metus nisl, eleifend a est in, ullamcorper suscipit enim. Vestibulum consequat sapien eu quam consectetur interdum. Vestibulum ut convallis ligula. Ut suscipit metus sed diam blandit, et gravida velit posuere. Curabitur posuere arcu nibh, ac rutrum mauris ornare ac. Donec orci nisl, tempor ac ligula et, accumsan pretium purus. Nam aliquam magna nec diam sodales placerat. Nunc odio nunc, pretium lacinia neque eget, lacinia porttitor risus. In ut felis ac erat elementum consequat at ut dolor.</blockquote></p>
+</section>
+
+<section id="eighth" analytics-on="scrollby" scrollby-offset="15%">
+<h2>Eighth</h2><p><blockquote>Curabitur eget tincidunt ipsum. Nam cursus leo sed commodo pretium. Morbi commodo lectus gravida erat feugiat venenatis. Vivamus pulvinar nulla sit amet diam luctus tristique. Donec eget elit non dui aliquam euismod. Vivamus id scelerisque urna, et feugiat elit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nunc ultricies nisl felis, eget laoreet justo ultrices at. Donec interdum neque at urna posuere fermentum ac in metus. Pellentesque eu tellus tortor. Donec consectetur metus purus, vitae scelerisque velit dapibus imperdiet. Quisque at consectetur odio, eu venenatis lectus. Aenean suscipit felis vitae cursus vestibulum. Curabitur odio ligula, dapibus a diam dignissim, pellentesque gravida dui. Nunc vehicula orci quam, ac viverra velit tempor id.</blockquote></p>
+</section>
+
+<section id="ninth" analytics-on="scrollby" scrollby-offset="15%">
+<h2>Ninth</h2><p><blockquote>Cras mollis leo ut diam commodo, eu venenatis lectus scelerisque. In at nisi vitae lorem tristique iaculis id nec libero. Pellentesque dictum lobortis blandit. Maecenas malesuada leo bibendum ante pharetra tristique. Nullam urna arcu, gravida sed turpis consequat, vestibulum vehicula enim. Mauris at facilisis leo. Donec placerat nisl tortor, non mattis elit facilisis sit amet. Sed dolor lectus, tincidunt at tortor ut, hendrerit pharetra felis. Suspendisse potenti. Proin in viverra nibh, ut congue odio. Praesent accumsan, eros sit amet varius tincidunt, velit leo tempus nisl, sit amet hendrerit nisi orci sed massa. Sed nec cursus justo. Maecenas malesuada, enim sit amet dapibus viverra, nisi lectus consequat tellus, pellentesque mollis augue augue sit amet dolor. Suspendisse dignissim rhoncus lectus nec laoreet. Ut laoreet turpis lobortis mauris facilisis, sed vestibulum erat accumsan. Nulla facilisi.</blockquote></p>
+</section>
+
+<section id="tenth" analytics-on="scrollby" scrollby-offset="15%">
+<h2>Tenth</h2><p><blockquote>Vestibulum porttitor dolor in ligula sollicitudin, a hendrerit lorem tincidunt. Donec erat lectus, malesuada ac justo non, sollicitudin rutrum justo. Maecenas euismod at nisi quis semper. Quisque sed odio dictum, rutrum leo et, pellentesque nulla. Nam semper velit enim, vitae bibendum ipsum viverra in. In et dapibus massa. Integer rutrum nibh urna, ultricies varius mauris ultricies nec. In eget ultricies metus. Curabitur eu cursus nunc. Etiam vitae eleifend lorem. Duis eleifend orci massa, interdum dapibus nunc adipiscing vitae.</blockquote></p>
+</section>
+
+<script>
+	angular.module('sample', ['angulartics', 'angulartics.scroll'])
+	.config(function ($routeProvider, $analyticsProvider) {
+	  $analyticsProvider.registerEventTrack(function (eventName, properties) {
+	  	$('#notifier').text('hit: '+eventName).show().delay(1000).fadeOut(1000);
+	  });
+	})
+	.controller('SampleCtrl', function () {});
+</script>
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/segmentio.html
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/segmentio.html b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/segmentio.html
new file mode 100644
index 0000000..68ade1c
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/samples/segmentio.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf8">
+	<title>Segment.io sample | Angulartics</title>
+	<link rel="stylesheet" href="//bootswatch.com/cosmo/bootstrap.min.css">
+
+	<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
+	<script src="../src/angulartics.js"></script>
+	<script src="../src/angulartics-segmentio.js"></script>
+	<script type="text/javascript">
+		var analytics=analytics||[];(function(){var e=["identify","track","trackLink","trackForm","trackClick","trackSubmit","page","pageview","ab","alias","ready","group"],t=function(e){return function(){analytics.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var n=0;n<e.length;n++)analytics[e[n]]=t(e[n])})(),analytics.load=function(e){var t=document.createElement("script");t.type="text/javascript",t.async=!0,t.src=("https:"===document.location.protocol?"https://":"http://")+"d2dq2ahtl5zl1z.cloudfront.net/analytics.js/v1/"+e+"/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n)};
+		analytics.load("pfhpxyjs1z");
+  </script>
+</head>
+<body ng-app="sample">
+
+<div class="navbar navbar-default">
+	<div class="navbar-header">
+		<a class="navbar-brand" href="#/">My App</a>
+	</div>
+	<div>
+		<ul class="nav navbar-nav">
+			<li><a href="#/a">Page A</a></li>
+			<li><a href="#/b">Page B</a></li>
+			<li><a href="#/c">Page C</a></li>
+		</ul>
+	</div>
+</div>
+
+<div class="container">
+	<div ng-view></div>
+	<hr>
+
+	<button analytics-on="click" analytics-event="Button 1" analytics-category="Commands" class="btn btn-default">Button 1</button>
+
+	<!-- same as analytics-on="click", because 'click' is the default -->
+	<button analytics-on analytics-event="Button 2" analytics-category="Commands" class="btn btn-primary">Button 2</button>
+
+	<!-- same as analytics-event="Button 3", because is inferred from innerText -->
+	<button analytics-on analytics-category="Commands" class="btn btn-success">Button 3</button>
+
+	<button analytics-on analytics-label="Button4 label" analytics-value="1" class="btn btn-info">Button 4</button>
+	<hr>
+
+	<p class="alert alert-success">
+		Open the network inspector in your browser, click any of the nav options or buttons above and you'll see the analytics
+		request being executed. Then check <a class="alert-link" href="http://segment.io">your Segment.io dashboard</a>.
+	</p>
+</div>
+
+<script>
+	angular.module('sample', ['angulartics', 'angulartics.segment.io'])
+	.config(function ($routeProvider, $analyticsProvider) {
+		$routeProvider
+			.when('/', { templateUrl: '/samples/partials/root.tpl.html', controller: 'SampleCtrl' })
+	  	.when('/a', { templateUrl: '/samples/partials/a.tpl.html', controller: 'SampleCtrl' })
+		  .when('/b', { templateUrl: '/samples/partials/b.tpl.html', controller: 'SampleCtrl' })
+		  .when('/c', { templateUrl: '/samples/partials/c.tpl.html', controller: 'SampleCtrl' })
+		  .otherwise({ redirectTo: '/' });
+	})
+	.controller('SampleCtrl', function () {});
+</script>
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-chartbeat.js
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-chartbeat.js b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-chartbeat.js
new file mode 100644
index 0000000..312f67b
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-chartbeat.js
@@ -0,0 +1,29 @@
+/**
+ * @license Angulartics v0.8.5
+ * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
+ * Contributed by http://github.com/chechoacosta
+ * License: MIT
+ */
+(function(angular) {
+'use strict';
+
+/**
+ * @ngdoc overview
+ * @name angulartics.chartbeat
+ * Enables analytics support for Chartbeat (http://chartbeat.com)
+ */
+angular.module('angulartics.chartbeat', ['angulartics'])
+.config(['$analyticsProvider', function ($analyticsProvider) {
+
+  angulartics.waitForVendorApi('pSUPERFLY', 500, function (pSUPERFLY) {
+    $analyticsProvider.registerPageTrack(function (path) {
+      pSUPERFLY.virtualPage(path);
+    });
+  });
+
+  $analyticsProvider.registerEventTrack(function () {
+    console.warn('Chartbeat doesn\'t support event tracking -- silently ignored.');
+  });
+  
+}]);
+})(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-ga-cordova.js
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-ga-cordova.js b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-ga-cordova.js
new file mode 100644
index 0000000..c7f610e
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-ga-cordova.js
@@ -0,0 +1,91 @@
+/**
+ * @license Angulartics v0.8.5
+ * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
+ * License: MIT
+ */
+(function(angular) {
+'use strict';
+
+/**
+ * @ngdoc overview
+ * @name angulartics.google.analytics
+ * Enables analytics support for Google Analytics (http://google.com/analytics)
+ */
+angular.module('angulartics.google.analytics.cordova', ['angulartics'])
+
+.provider('googleAnalyticsCordova', function () {
+  var GoogleAnalyticsCordova = [
+  '$q', '$log', 'ready', 'debug', 'trackingId', 'period',
+  function ($q, $log, ready, debug, trackingId, period) {
+    var deferred = $q.defer();
+    var deviceReady = false;
+
+    window.addEventListener('deviceReady', function () {
+      deviceReady = true;
+      deferred.resolve();
+    });
+
+    setTimeout(function () {
+      if (!deviceReady) {
+        deferred.resolve();
+      }
+    }, 3000);
+
+    function success() {
+      if (debug) {
+        $log.info(arguments);
+      }
+    }
+
+    function failure(err) {
+      if (debug) {
+        $log.error(err);
+      }
+    }
+
+    this.init = function () {
+      return deferred.promise.then(function () {
+        var analytics = window.plugins && window.plugins.gaPlugin;
+        if (analytics) {
+          analytics.init(function onInit() {
+            ready(analytics, success, failure);
+          }, failure, trackingId, period || 10);
+        } else if (debug) {
+          $log.error('Google Analytics for Cordova is not available');
+        }
+      });
+    };
+  }];
+
+  return {
+    $get: ['$injector', function ($injector) {
+      return $injector.instantiate(GoogleAnalyticsCordova, {
+        ready: this._ready || angular.noop,
+        debug: this.debug,
+        trackingId: this.trackingId,
+        period: this.period
+      });
+    }],
+    ready: function (fn) {
+      this._ready = fn;
+    }
+  };
+})
+
+.config(['$analyticsProvider', 'googleAnalyticsCordovaProvider', function ($analyticsProvider, googleAnalyticsCordovaProvider) {
+  googleAnalyticsCordovaProvider.ready(function (analytics, success, failure) {
+    $analyticsProvider.registerPageTrack(function (path) {
+      analytics.trackPage(success, failure, path);
+    });
+
+    $analyticsProvider.registerEventTrack(function (action, properties) {
+      analytics.trackEvent(success, failure, properties.category, action, properties.label, properties.value);
+    });
+  });
+}])
+
+.run(['googleAnalyticsCordova', function (googleAnalyticsCordova) {
+  googleAnalyticsCordova.init();
+}]);
+
+})(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-ga.js
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-ga.js b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-ga.js
new file mode 100644
index 0000000..bea8f5b
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-ga.js
@@ -0,0 +1,32 @@
+/**
+ * @license Angulartics v0.8.5
+ * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
+ * Universal Analytics update contributed by http://github.com/willmcclellan
+ * License: MIT
+ */
+(function(angular) {
+'use strict';
+
+/**
+ * @ngdoc overview
+ * @name angulartics.google.analytics
+ * Enables analytics support for Google Analytics (http://google.com/analytics)
+ */
+angular.module('angulartics.google.analytics', ['angulartics'])
+.config(['$analyticsProvider', function ($analyticsProvider) {
+
+  // GA already supports buffered invocations so we don't need
+  // to wrap these inside angulartics.waitForVendorApi
+
+  $analyticsProvider.registerPageTrack(function (path) {
+    if (window._gaq) _gaq.push(['_trackPageview', path]);
+    if (window.ga) ga('send', 'pageview', path);
+  });
+
+  $analyticsProvider.registerEventTrack(function (action, properties) {
+    if (window._gaq) _gaq.push(['_trackEvent', properties.category, action, properties.label, properties.value]);
+    if (window.ga) ga('send', 'event', properties.category, action, properties.label, properties.value);
+  });
+  
+}]);
+})(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-kissmetrics.js
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-kissmetrics.js b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-kissmetrics.js
new file mode 100644
index 0000000..46c86ff
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-kissmetrics.js
@@ -0,0 +1,29 @@
+/**
+ * @license Angulartics v0.8.5
+ * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
+ * License: MIT
+ */
+(function(angular) {
+'use strict';
+
+/**
+ * @ngdoc overview
+ * @name angulartics.kissmetrics
+ * Enables analytics support for KISSmetrics (http://kissmetrics.com)
+ */
+angular.module('angulartics.kissmetrics', ['angulartics'])
+.config(['$analyticsProvider', function ($analyticsProvider) {
+
+  // KM already supports buffered invocations so we don't need
+  // to wrap these inside angulartics.waitForVendorApi
+
+  $analyticsProvider.registerPageTrack(function (path) {
+    _kmq.push(['record', 'Pageview', { 'Page': path }]);
+  });
+
+  $analyticsProvider.registerEventTrack(function (action, properties) {
+    _kmq.push(['record', action, properties]);
+  });
+  
+}]);
+})(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-mixpanel.js
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-mixpanel.js b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-mixpanel.js
new file mode 100644
index 0000000..18dba0c
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-mixpanel.js
@@ -0,0 +1,29 @@
+/**
+ * @license Angulartics v0.8.5
+ * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
+ * Contributed by http://github.com/L42y
+ * License: MIT
+ */
+(function(angular) {
+'use strict';
+
+/**
+ * @ngdoc overview
+ * @name angulartics.mixpanel
+ * Enables analytics support for Mixpanel (http://mixpanel.com)
+ */
+angular.module('angulartics.mixpanel', ['angulartics'])
+.config(['$analyticsProvider', function ($analyticsProvider) {
+  angulartics.waitForVendorApi('mixpanel', 500, function (mixpanel) {
+    $analyticsProvider.registerPageTrack(function (path) {
+      mixpanel.track_pageview(path);
+    });
+  });
+
+  angulartics.waitForVendorApi('mixpanel', 500, function (mixpanel) {
+    $analyticsProvider.registerEventTrack(function (action, properties) {
+      mixpanel.track(action, properties);
+    });
+  });
+}]);
+})(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-scroll.js
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-scroll.js b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-scroll.js
new file mode 100644
index 0000000..e5a3271
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-scroll.js
@@ -0,0 +1,47 @@
+/**
+ * @license Angulartics v0.8.5
+ * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
+ * License: MIT
+ */
+(function (angular) {
+'use strict';
+
+/**
+ * @ngdoc overview
+ * @name angulartics.scroll
+ * Provides an implementation of jQuery Waypoints (http://imakewebthings.com/jquery-waypoints/)
+ * for use as a valid DOM event in analytics-on.
+ */
+angular.module('angulartics.scroll', ['angulartics'])
+.directive('analyticsOn', ['$analytics', function ($analytics) {
+  function isProperty(name) {
+    return name.substr(0, 8) === 'scrollby';
+  }
+  function cast(value) {
+    if (['', 'true', 'false'].indexOf(value) > -1) {
+      return value.replace('', 'true') === 'true';
+    }
+    return value;
+  }
+
+  return {
+    restrict: 'A',
+    priority: 5,
+    scope: false,
+    link: function ($scope, $element, $attrs) {
+      if ($attrs.analyticsOn !== 'scrollby') return;
+
+      var properties = { continuous: false, triggerOnce: true };
+      angular.forEach($attrs.$attr, function(attr, name) {
+        if (isProperty(attr)) {
+          properties[name.slice(8,9).toLowerCase()+name.slice(9)] = cast($attrs[name]);
+        }
+      });
+
+      $($element[0]).waypoint(function () {
+        this.dispatchEvent(new Event('scrollby'));
+      }, properties);
+    }
+  };
+}]);
+})(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-segmentio.js
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-segmentio.js b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-segmentio.js
new file mode 100644
index 0000000..1aae091
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics-segmentio.js
@@ -0,0 +1,24 @@
+/**
+ * @license Angulartics v0.8.5
+ * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
+ * License: MIT
+ */
+(function(angular) {
+'use strict';
+
+/**
+ * @ngdoc overview
+ * @name angulartics.segment.io
+ * Enables analytics support for Segment.io (http://segment.io)
+ */
+angular.module('angulartics.segment.io', ['angulartics'])
+.config(['$analyticsProvider', function ($analyticsProvider) {
+  $analyticsProvider.registerPageTrack(function (path) {
+    analytics.pageview(path);
+  });
+
+  $analyticsProvider.registerEventTrack(function (action, properties) {
+    analytics.track(action, properties);
+  });
+}]);
+})(angular);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics.js
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics.js b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics.js
new file mode 100644
index 0000000..6376960
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/src/angulartics.js
@@ -0,0 +1,132 @@
+/**
+ * @license Angulartics v0.8.5
+ * (c) 2013 Luis Farzati http://luisfarzati.github.io/angulartics
+ * License: MIT
+ */
+(function(angular, analytics) {
+'use strict';
+
+var angulartics = window.angulartics || (window.angulartics = {});
+angulartics.waitForVendorApi = function (objectName, delay, registerFn) {
+  if (!Object.prototype.hasOwnProperty.call(window, objectName)) {
+    setTimeout(function () { angulartics.waitForVendorApi(objectName, delay, registerFn); }, delay);
+  }
+  else {
+    registerFn(window[objectName]);
+  }
+};
+
+/**
+ * @ngdoc overview
+ * @name angulartics
+ */
+angular.module('angulartics', [])
+.provider('$analytics', function () {
+  var settings = { 
+    pageTracking: { 
+      autoTrackFirstPage: true,
+      autoTrackVirtualPages: true,
+      basePath: '',
+      bufferFlushDelay: 1000 
+    },
+    eventTracking: {
+      bufferFlushDelay: 1000
+    } 
+  };
+
+  var cache = {
+    pageviews: [],
+    events: []
+  };
+
+  var bufferedPageTrack = function (path) {
+    cache.pageviews.push(path);
+  };
+  var bufferedEventTrack = function (event, properties) {
+    cache.events.push({name: event, properties: properties});
+  };
+
+  var api = {
+    settings: settings,
+    pageTrack: bufferedPageTrack,
+    eventTrack: bufferedEventTrack
+  };
+
+  var registerPageTrack = function (fn) {
+    api.pageTrack = fn;
+    angular.forEach(cache.pageviews, function (path, index) {
+      setTimeout(function () { api.pageTrack(path); }, index * settings.pageTracking.bufferFlushDelay);
+    });
+  };
+  var registerEventTrack = function (fn) {
+    api.eventTrack = fn;
+    angular.forEach(cache.events, function (event, index) {
+      setTimeout(function () { api.eventTrack(event.name, event.properties); }, index * settings.eventTracking.bufferFlushDelay);
+    });
+  };
+
+  return {
+    $get: function() { return api; },
+    settings: settings,
+    virtualPageviews: function (value) { this.settings.pageTracking.autoTrackVirtualPages = value; },
+    firstPageview: function (value) { this.settings.pageTracking.autoTrackFirstPage = value; },
+    withBase: function (value) { this.settings.pageTracking.basePath = (value) ? angular.element('base').attr('href').slice(0, -1) : ''; },
+    registerPageTrack: registerPageTrack,
+    registerEventTrack: registerEventTrack
+  };
+})
+
+.run(['$rootScope', '$location', '$analytics', function ($rootScope, $location, $analytics) {
+  if ($analytics.settings.pageTracking.autoTrackFirstPage) {
+    $analytics.pageTrack($location.absUrl());
+  }
+  if ($analytics.settings.pageTracking.autoTrackVirtualPages) {
+    $rootScope.$on('$routeChangeSuccess', function (event, current) {
+      if (current && (current.$$route||current).redirectTo) return;
+      var url = $analytics.settings.pageTracking.basePath + $location.url();
+      $analytics.pageTrack(url);
+    });
+  }
+}])
+
+.directive('analyticsOn', ['$analytics', function ($analytics) {
+  function isCommand(element) {
+    return ['a:','button:','button:button','button:submit','input:button','input:submit'].indexOf(
+      element.tagName.toLowerCase()+':'+(element.type||'')) >= 0;
+  }
+
+  function inferEventType(element) {
+    if (isCommand(element)) return 'click';
+    return 'click';
+  }
+
+  function inferEventName(element) {
+    if (isCommand(element)) return element.innerText || element.value;
+    return element.id || element.name || element.tagName;
+  }
+
+  function isProperty(name) {
+    return name.substr(0, 9) === 'analytics' && ['on', 'event'].indexOf(name.substr(10)) === -1;
+  }
+
+  return {
+    restrict: 'A',
+    scope: false,
+    link: function ($scope, $element, $attrs) {
+      var eventType = $attrs.analyticsOn || inferEventType($element[0]),
+          eventName = $attrs.analyticsEvent || inferEventName($element[0]);
+
+      var properties = {};
+      angular.forEach($attrs.$attr, function(attr, name) {
+        if (isProperty(attr)) {
+          properties[name.slice(9).toLowerCase()] = $attrs[name];
+        }
+      });
+
+      angular.element($element[0]).bind(eventType, function () {
+        $analytics.eventTrack(eventName, properties);
+      });
+    }
+  };
+}]);
+})(angular);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a704d594/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/test/angularticsSpec.js
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/test/angularticsSpec.js b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/test/angularticsSpec.js
new file mode 100644
index 0000000..04bab44
--- /dev/null
+++ b/portal/dist/appsvc-ui/2.0.2/bower_components/angularitics/test/angularticsSpec.js
@@ -0,0 +1,38 @@
+describe('Module: angulartics', function() {
+  beforeEach(module('angulartics'));
+
+  it('should be configurable', function() {
+    module(function(_$analyticsProvider_) {
+      _$analyticsProvider_.virtualPageviews(false);
+    });
+    inject(function(_$analytics_) {
+      expect(_$analytics_.settings.pageTracking.autoTrackVirtualPages).toBe(false);
+    });
+  });
+
+  describe('Provider: analytics', function() {
+    var analytics,
+      rootScope,
+      location;
+    beforeEach(inject(function(_$analytics_, _$rootScope_, _$location_) {
+      analytics = _$analytics_;
+      location = _$location_;
+      rootScope = _$rootScope_;
+
+      spyOn(analytics, 'pageTrack');
+    }));
+
+    describe('initialize', function() {
+      it('should tracking pages by default', function() {
+        expect(analytics.settings.pageTracking.autoTrackVirtualPages).toBe(true);
+      });
+    });
+
+    it('should tracking pages on route change', function() {
+      location.path('/abc');
+      rootScope.$emit('$routeChangeSuccess');
+      expect(analytics.pageTrack).toHaveBeenCalledWith('/abc');
+    });
+    
+  });
+});
\ No newline at end of file


Mime
View raw message