 /**
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information 
  regarding copyright ownership.  The ASF licenses this file 
 to you under the Apache License, Version 2.0 (the 
  "License"); you may not use this file except in compliance 
  with the License.  You may obtain a copy of the License at 
   
  http://www.apache.org/licenses/LICENSE-2.0 
   
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
  */

 /*! usergrid@2.0.10  */
!function(exports,global){function renderChart(chartsDefaults,chartdata){var newSettings={};$.extend(!0,newSettings,chartsDefaults,chartdata);new Highcharts.Chart(newSettings)}function menuBindClick(scope,lElement,cevent,menuContext){var currentSelection=angular.element(cevent.srcElement).parent(),previousSelection=scope[menuContext];previousSelection!==currentSelection&&(previousSelection&&angular.element(previousSelection).removeClass("active"),scope[menuContext]=currentSelection,scope.$apply(function(){currentSelection.addClass("active")}))}global["true"]=exports;var polyfills=function(window,Object){window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(callback){window.setTimeout(callback,1e3/60)}}(),Object.defineProperty(Object.prototype,"clone",{enumerable:!1,writable:!0,value:function(){var i,newObj=this instanceof Array?[]:{};for(i in this)"clone"!==i&&(newObj[i]=this[i]&&"object"==typeof this[i]?this[i].clone():this[i]);return newObj}}),Object.defineProperty(Object.prototype,"stringifyJSON",{enumerable:!1,writable:!0,value:function(){return JSON.stringify(this,null,"	")}})};polyfills(window,Object);var global=global||this,AppServices=AppServices||{};global.AppServices=global.AppServices||AppServices,AppServices.Constants=angular.module("appservices.constants",[]),AppServices.Services=angular.module("appservices.services",[]),AppServices.Controllers=angular.module("appservices.controllers",[]),AppServices.Filters=angular.module("appservices.filters",[]),AppServices.Directives=angular.module("appservices.directives",[]),AppServices.Performance=angular.module("appservices.performance",[]),AppServices.MAX=angular.module("appservices.max",[]),angular.module("appservices",["ngRoute","ngResource","ngSanitize","ui.bootstrap","angulartics","angulartics.google.analytics","appservices.filters","appservices.services","appservices.directives","appservices.constants","appservices.controllers","appservices.max","angular-intro"]).config(["$routeProvider","$locationProvider","$sceDelegateProvider","$analyticsProvider","$httpProvider",function($routeProvider,$locationProvider,$sceDelegateProvider,$analyticsProvider,$httpProvider){$routeProvider.when("/org-overview",{templateUrl:"org-overview/org-overview.html",controller:"OrgOverviewCtrl"}).when("/login",{templateUrl:"login/login.html",controller:"LoginCtrl"}).when("/login/loading",{templateUrl:"login/loading.html",controller:"LoginCtrl"}).when("/app-overview/summary",{templateUrl:"app-overview/app-overview.html",controller:"AppOverviewCtrl"}).when("/getting-started/setup",{templateUrl:"app-overview/getting-started.html",controller:"GettingStartedCtrl"}).when("/forgot-password",{templateUrl:"login/forgot-password.html",controller:"ForgotPasswordCtrl"}).when("/register",{templateUrl:"login/register.html",controller:"RegisterCtrl"}).when("/users",{templateUrl:"users/users.html",controller:"UsersCtrl"}).when("/users/profile",{templateUrl:"users/users-profile.html",controller:"UsersProfileCtrl"}).when("/users/groups",{templateUrl:"users/users-groups.html",controller:"UsersGroupsCtrl"}).when("/users/activities",{templateUrl:"users/users-activities.html",controller:"UsersActivitiesCtrl"}).when("/users/feed",{templateUrl:"users/users-feed.html",controller:"UsersFeedCtrl"}).when("/users/graph",{templateUrl:"users/users-graph.html",controller:"UsersGraphCtrl"}).when("/users/roles",{templateUrl:"users/users-roles.html",controller:"UsersRolesCtrl"}).when("/groups",{templateUrl:"groups/groups.html",controller:"GroupsCtrl"}).when("/groups/details",{templateUrl:"groups/groups-details.html",controller:"GroupsDetailsCtrl"}).when("/groups/members",{templateUrl:"groups/groups-members.html",controller:"GroupsMembersCtrl"}).when("/groups/activities",{templateUrl:"groups/groups-activities.html",controller:"GroupsActivitiesCtrl"}).when("/groups/roles",{templateUrl:"groups/groups-roles.html",controller:"GroupsRolesCtrl"}).when("/roles",{templateUrl:"roles/roles.html",controller:"RolesCtrl"}).when("/roles/settings",{templateUrl:"roles/roles-settings.html",controller:"RolesSettingsCtrl"}).when("/roles/users",{templateUrl:"roles/roles-users.html",controller:"RolesUsersCtrl"}).when("/roles/groups",{templateUrl:"roles/roles-groups.html",controller:"RolesGroupsCtrl"}).when("/data",{templateUrl:"data/data.html",controller:"DataCtrl"}).when("/data/entity",{templateUrl:"data/entity.html",controller:"EntityCtrl"}).when("/data/shell",{templateUrl:"data/shell.html",controller:"ShellCtrl"}).when("/profile/organizations",{templateUrl:"profile/organizations.html",controller:"OrgCtrl"}).when("/profile/profile",{templateUrl:"profile/profile.html",controller:"ProfileCtrl"}).when("/profile",{templateUrl:"profile/account.html",controller:"AccountCtrl"}).when("/activities",{templateUrl:"activities/activities.html",controller:"ActivitiesCtrl"}).when("/shell",{templateUrl:"shell/shell.html",controller:"ShellCtrl"}).when("/logout",{templateUrl:"login/logout.html",controller:"LogoutCtrl"}).otherwise({redirectTo:"/org-overview"}),$locationProvider.html5Mode(!1).hashPrefix("!"),$sceDelegateProvider.resourceUrlWhitelist(["self","http://apigee-internal-prod.jupiter.apigee.net/**","http://apigee-internal-prod.mars.apigee.net/**","https://appservices.apigee.com/**","https://api.usergrid.com/**"]),$analyticsProvider.virtualPageviews(!1),$analyticsProvider.firstPageview(!1),$httpProvider.defaults.useXDomain=!0}]),AppServices.Controllers.controller("ActivitiesCtrl",["ug","$scope","$rootScope","$location","$route",function(ug,$scope,$rootScope){$scope.$on("app-activities-received",function(evt,data){$scope.activities=data,$scope.$apply()}),$scope.$on("app-activities-error",function(){$rootScope.$broadcast("alert","error","Application failed to retreive activities data.")}),ug.getActivities()}]),AppServices.Controllers.controller("AppOverviewCtrl",["ug","charts","$scope","$rootScope","$log",function(ug,charts,$scope,$rootScope,$log){var createGradient=function(color1,color2){var perShapeGradient={x1:0,y1:0,x2:0,y2:1};return{linearGradient:perShapeGradient,stops:[[0,color1],[1,color2]]}};$scope.appOverview={},$scope.collections=[],$scope.graph="",$scope.$on("top-collections-received",function(event,collections){var dataDescription={bar1:{labels:["Total"],dataAttr:["title","count"],colors:[createGradient("rgba(36,151,212,0.6)","rgba(119,198,240,0.6)")],borderColor:"#1b97d1"}};$scope.collections=collections;var arr=[];for(var i in collections)collections.hasOwnProperty(i)&&arr.push(collections[i]);$scope.appOverview={},$rootScope.chartTemplate?($scope.appOverview.chart=angular.copy($rootScope.chartTemplate.pareto),$scope.appOverview.chart=charts.convertParetoChart(arr,$scope.appOverview.chart,dataDescription.bar1,"1h","NOW"),$scope.applyScope()):ug.httpGet(null,"js/charts/highcharts.json").then(function(success){$rootScope.chartTemplate=success,$scope.appOverview.chart=angular.copy($rootScope.chartTemplate.pareto),$scope.appOverview.chart=charts.convertParetoChart(arr,$scope.appOverview.chart,dataDescription.bar1,"1h","NOW"),$scope.applyScope()},function(fail){$log.error("Problem getting chart template",fail)})}),$scope.$on("app-initialized",function(){ug.getTopCollections()}),$rootScope.activeUI&&ug.getTopCollections()}]),AppServices.Controllers.controller("GettingStartedCtrl",["ug","$scope","$rootScope","$location","$timeout","$anchorScroll",function(ug,$scope,$rootScope,$location,$timeout,$anchorScroll){$scope.collections=[],$scope.graph="",$scope.clientID="",$scope.clientSecret="";$scope.regenerateCredentialsDialog=function(modalId){$scope.orgAPICredentials={client_id:"regenerating...",client_secret:"regenerating..."},ug.regenerateAppCredentials(),$scope.hideModal(modalId)},$scope.$on("app-creds-updated",function(event,credentials){credentials?($scope.clientID=credentials.client_id,$scope.clientSecret=credentials.client_secret,$scope.$$phase||$scope.$apply()):setTimeout(function(){ug.getAppCredentials()},5e3)}),ug.getAppCredentials(),$scope.contentTitle,$scope.showSDKDetail=function(name){var introContainer=document.getElementById("intro-container");if("nocontent"===name)return introContainer.style.height="0",!0;introContainer.style.opacity=.1,introContainer.style.height="0";var timeout=0;$scope.contentTitle&&(timeout=500),$timeout(function(){introContainer.style.height="1000px",introContainer.style.opacity=1},timeout),$scope.optionName=name,$scope.contentTitle=name,$scope.sdkLink="http://apigee.com/docs/content/"+name+"-sdk-redirect",$scope.docsLink="http://apigee.com/docs/app-services/content/installing-apigee-sdk-"+name,$scope.getIncludeURL=function(){return"app-overview/doc-includes/"+$scope.optionName+".html"}},$scope.scrollToElement=function(elem){return $location.hash(elem),$anchorScroll(),!1}}]),AppServices.Controllers.controller("ChartCtrl",["$scope","$location",function(){}]),AppServices.Directives.directive("chart",function(){return{restrict:"E",scope:{chartdata:"=chartdata"},template:"<div></div>",replace:!0,controller:function(){},link:function(scope,element,attrs){scope.$watch("chartdata",function(chartdata){if(chartdata){var chartsDefaults={chart:{renderTo:element[0],type:attrs.type||null,height:attrs.height||null,width:attrs.width||null,reflow:!0,animation:!1,zoomType:"x"}};if("pie"===attrs.type&&(chartsDefaults.chart.margin=[0,0,0,0],chartsDefaults.chart.spacingLeft=0,chartsDefaults.chart.spacingRight=0,chartsDefaults.chart.spacingTop=0,chartsDefaults.chart.spacingBottom=0,attrs.titleimage&&(chartdata.title.text='<img src="'+attrs.titleimage+'">'),attrs.titleicon&&(chartdata.title.text='<i class="pictogram '+attrs.titleiconclass+'">'+attrs.titleicon+"</i>"),attrs.titlecolor&&(chartdata.title.style.color=attrs.titlecolor),attrs.titleimagetop&&(chartdata.title.style.marginTop=attrs.titleimagetop),attrs.titleimageleft&&(chartdata.title.style.marginLeft=attrs.titleimageleft)),"line"===attrs.type&&(chartsDefaults.chart.marginTop=30,chartsDefaults.chart.spacingTop=50),"column"===attrs.type&&(chartsDefaults.chart.marginBottom=80),"area"===attrs.type&&(chartsDefaults.chart.spacingLeft=0,chartsDefaults.chart.spacingRight=0,chartsDefaults.chart.marginLeft=0,chartsDefaults.chart.marginRight=0),Highcharts.setOptions({global:{useUTC:!1},chart:{style:{fontFamily:"marquette-light, Helvetica, Arial, sans-serif"}}}),"line"===attrs.type){var xAxis1=chartdata.xAxis[0];xAxis1.labels.formatter||(xAxis1.labels.formatter=new Function(attrs.xaxislabel)),xAxis1.labels.step||(xAxis1.labels.step=attrs.xaxisstep)}chartdata.tooltip&&"string"==typeof chartdata.tooltip.formatter&&(chartdata.tooltip.formatter=new Function(chartdata.tooltip.formatter)),renderChart(chartsDefaults,chartdata)}},!0)}}}),AppServices.Services.factory("charts",function(){function sortJsonArrayByProperty(objArray,prop){if(arguments.length<2)throw new Error("sortJsonArrayByProp requires 2 arguments");var direct=arguments.length>2?arguments[2]:1;if(objArray&&objArray.constructor===Array){var propPath=prop.constructor===Array?prop:prop.split(".");objArray.sort(function(a,b){for(var p in propPath)a[propPath[p]]&&b[propPath[p]]&&(a=a[propPath[p]],b=b[propPath[p]]);return a=a.match(/^\d+$/)?+a:a,b=b.match(/^\d+$/)?+b:b,b>a?-1*direct:a>b?1*direct:0})}}var lineChart,areaChart,paretoChart,pieChart,xaxis,seriesIndex;return{convertLineChart:function(chartData,chartTemplate,dataDescription,settings,currentCompare){function plotData(counter,dPLength,dataPoints,dataAttrs,detailedView){for(var i=0;dPLength>i;i++)for(var dp=dataPoints[i],localCounter=counter,j=0;j<dataAttrs.length;j++)lineChart.series[localCounter].data.push("undefined"==typeof dp?[i,0]:[i,dp[dataAttrs[j]]]),detailedView||localCounter++}lineChart=chartTemplate,"undefined"==typeof chartData[0]&&(chartData[0]={},chartData[0].datapoints=[]);var label,dataPoints=chartData[0].datapoints,dPLength=dataPoints.length;"YESTERDAY"===currentCompare?(seriesIndex=dataDescription.dataAttr.length,label="Yesterday "):"LAST_WEEK"===currentCompare?(seriesIndex=dataDescription.dataAttr.length,label="Last Week "):(lineChart=chartTemplate,seriesIndex=0,lineChart.series=[],label=""),xaxis=lineChart.xAxis[0],xaxis.categories=[],settings.xaxisformat&&(xaxis.labels.formatter=new Function(settings.xaxisformat)),settings.step&&(xaxis.labels.step=settings.step);for(var i=0;dPLength>i;i++){var dp=dataPoints[i];xaxis.categories.push(dp.timestamp)}if(chartData.length>1)for(var l=0;l<chartData.length;l++)chartData[l].chartGroupName&&(dataPoints=chartData[l].datapoints,lineChart.series[l]={},lineChart.series[l].data=[],lineChart.series[l].name=chartData[l].chartGroupName,lineChart.series[l].yAxis=0,lineChart.series[l].type="line",lineChart.series[l].color=dataDescription.colors[i],lineChart.series[l].dashStyle="solid",lineChart.series[l].yAxis.title.text=dataDescription.yAxisLabels,plotData(l,dPLength,dataPoints,dataDescription.detailDataAttr,!0));else{for(var steadyCounter=0,i=seriesIndex;i<dataDescription.dataAttr.length+(seriesIndex>0?seriesIndex:0);i++){var yAxisIndex=dataDescription.multiAxis?steadyCounter:0;lineChart.series[i]={},lineChart.series[i].data=[],lineChart.series[i].name=label+dataDescription.labels[steadyCounter],lineChart.series[i].yAxis=yAxisIndex,lineChart.series[i].type="line",lineChart.series[i].color=dataDescription.colors[i],lineChart.series[i].dashStyle="solid",lineChart.yAxis[yAxisIndex].title.text=dataDescription.yAxisLabels[dataDescription.yAxisLabels>1?steadyCounter:0],steadyCounter++}plotData(seriesIndex,dPLength,dataPoints,dataDescription.dataAttr,!1)}return lineChart},convertAreaChart:function(chartData,chartTemplate,dataDescription,settings,currentCompare){function plotData(counter,dPLength,dataPoints,dataAttrs,detailedView){for(var i=0;dPLength>i;i++)for(var dp=dataPoints[i],localCounter=counter,j=0;j<dataAttrs.length;j++)areaChart.series[localCounter].data.push("undefined"==typeof dp?0:dp[dataAttrs[j]]),detailedView||localCounter++}areaChart=angular.copy(areaChart),"undefined"==typeof chartData[0]&&(chartData[0]={},chartData[0].datapoints=[]);var label,dataPoints=chartData[0].datapoints,dPLength=dataPoints.length;"YESTERDAY"===currentCompare?(seriesIndex=dataDescription.dataAttr.length,label="Yesterday "):"LAST_WEEK"===currentCompare?(seriesIndex=dataDescription.dataAttr.length,label="Last Week "):(areaChart=chartTemplate,seriesIndex=0,areaChart.series=[],label=""),xaxis=areaChart.xAxis[0],xaxis.categories=[],settings.xaxisformat&&(xaxis.labels.formatter=new Function(settings.xaxisformat)),settings.step&&(xaxis.labels.step=settings.step);for(var i=0;dPLength>i;i++){var dp=dataPoints[i];xaxis.categories.push(dp.timestamp)}if(chartData.length>1)for(var l=0;l<chartData.length;l++)chartData[l].chartGroupName&&(dataPoints=chartData[l].datapoints,areaChart.series[l]={},areaChart.series[l].data=[],areaChart.series[l].fillColor=dataDescription.areaColors[l],areaChart.series[l].name=chartData[l].chartGroupName,areaChart.series[l].yAxis=0,areaChart.series[l].type="area",areaChart.series[l].pointInterval=1,areaChart.series[l].color=dataDescription.colors[l],areaChart.series[l].dashStyle="solid",areaChart.series[l].yAxis.title.text=dataDescription.yAxisLabels,plotData(l,dPLength,dataPoints,dataDescription.detailDataAttr,!0));else{for(var steadyCounter=0,i=seriesIndex;i<dataDescription.dataAttr.length+(seriesIndex>0?seriesIndex:0);i++){var yAxisIndex=dataDescription.multiAxis?steadyCounter:0;areaChart.series[i]={},areaChart.series[i].data=[],areaChart.series[i].fillColor=dataDescription.areaColors[i],areaChart.series[i].name=label+dataDescription.labels[steadyCounter],areaChart.series[i].yAxis=yAxisIndex,areaChart.series[i].type="area",areaChart.series[i].pointInterval=1,areaChart.series[i].color=dataDescription.colors[i],areaChart.series[i].dashStyle="solid",areaChart.yAxis[yAxisIndex].title.text=dataDescription.yAxisLabels[dataDescription.yAxisLabels>1?steadyCounter:0],steadyCounter++}plotData(seriesIndex,dPLength,dataPoints,dataDescription.dataAttr,!1)}return areaChart},convertParetoChart:function(chartData,chartTemplate,dataDescription,settings,currentCompare){function getPreviousData(){for(var i=0;i<chartTemplate.series[0].data.length;i++)allParetoOptions.push(chartTemplate.xAxis.categories[i])}function createStackedBar(dataDescription,paretoChart){paretoChart.plotOptions={series:{shadow:!1,borderColor:dataDescription.borderColor,borderWidth:1},column:{stacking:"normal",dataLabels:{enabled:!0,color:Highcharts.theme&&Highcharts.theme.dataLabelsColor||"white"}}};var start=dataDescription.dataAttr[1].length,steadyCounter=0;compare&&(paretoChart.legend.enabled=!0);for(var f=seriesIndex;start+seriesIndex>f;f++)paretoChart.series[f]||(paretoChart.series[f]={data:[]}),paretoChart.series[f].data.push(bar[dataDescription.dataAttr[1][steadyCounter]]),paretoChart.series[f].name=""!==label?label+" "+dataDescription.labels[steadyCounter]:dataDescription.labels[steadyCounter],paretoChart.series[f].color=dataDescription.colors[f],paretoChart.series[f].stack=label,steadyCounter++}paretoChart=chartTemplate,"undefined"==typeof chartData&&(chartData=[]);var label,cdLength=chartData.length,compare=!1,allParetoOptions=[],stackedBar=!1;if(seriesIndex=0,"object"==typeof dataDescription.dataAttr[1]&&(stackedBar=!0),"YESTERDAY"===currentCompare?(label="Yesterday ",compare=!0,stackedBar&&(seriesIndex=dataDescription.dataAttr[1].length),getPreviousData()):"LAST_WEEK"===currentCompare?(label="Last Week ",compare=!0,stackedBar&&(seriesIndex=dataDescription.dataAttr[1].length),seriesIndex=getPreviousData()):(compare=!1,label="",paretoChart.xAxis.categories=[],paretoChart.series=[],paretoChart.series[0]={},paretoChart.series[0].data=[],paretoChart.legend.enabled=!1),paretoChart.plotOptions.series.borderColor=dataDescription.borderColor,compare&&!stackedBar){paretoChart.series[1]={},paretoChart.series[1].data=[];for(var i=0;i<allParetoOptions.length;i++)paretoChart.series[1].data.push(0);paretoChart.legend.enabled=!0}for(var i=0;cdLength>i;i++){var bar=chartData[i];if(compare){var newLabel=bar[dataDescription.dataAttr[0]],newValue=bar[dataDescription.dataAttr[1]],previousIndex=allParetoOptions.indexOf(newLabel);previousIndex>-1&&("object"==typeof dataDescription.dataAttr[1]?createStackedBar(dataDescription,paretoChart,paretoChart.series.length):(paretoChart.series[1].data[previousIndex]=newValue,paretoChart.series[1].name=""!==label?label+" "+dataDescription.labels[0]:dataDescription.labels[0],paretoChart.series[1].color=dataDescription.colors[1]))}else paretoChart.xAxis.categories.push(bar[dataDescription.dataAttr[0]]),"object"==typeof dataDescription.dataAttr[1]?createStackedBar(dataDescription,paretoChart,paretoChart.series.length):(paretoChart.series[0].data.push(bar[dataDescription.dataAttr[1]]),paretoChart.series[0].name=dataDescription.labels[0],paretoChart.series[0].color=dataDescription.colors[0])}return paretoChart},convertPieChart:function(chartData,chartTemplate,dataDescription,settings,currentCompare){var label,cdLength=chartData.length,compare=!1;pieChart=chartTemplate,"YESTERDAY"===currentCompare?(label="Yesterday ",compare=!1):"LAST_WEEK"===currentCompare?(label="Last Week ",compare=!1):(compare=!1,pieChart.series[0].data=[],pieChart.series[0].dataLabels&&"string"==typeof pieChart.series[0].dataLabels.formatter&&(pieChart.series[0].dataLabels.formatter=new Function(pieChart.series[0].dataLabels.formatter))),pieChart.plotOptions.pie.borderColor=dataDescription.borderColor,compare&&(pieChart.series[1].data=[],pieChart.series[1].dataLabels&&"string"==typeof pieChart.series[1].dataLabels.formatter&&(pieChart.series[1].dataLabels.formatter=new Function(pieChart.series[1].dataLabels.formatter)));for(var tempArray=[],i=0;cdLength>i;i++){var pie=chartData[i];tempArray.push({name:pie[dataDescription.dataAttr[0]],y:pie[dataDescription.dataAttr[1]],color:""})}sortJsonArrayByProperty(tempArray,"name");for(var i=0;i<tempArray.length;i++)tempArray[i].color=dataDescription.colors[i];return compare?pieChart.series[1].data=tempArray:pieChart.series[0].data=tempArray,pieChart}}}),$(".sessions-bar").sparkline([3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,1],{type:"bar",barColor:"#c5c5c5",width:"800px",height:100,barWidth:12,barSpacing:"1px"}),AppServices.Controllers.controller("DataCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope){var init=function(){$scope.verb="GET",$scope.display="",$scope.queryBodyDetail={},$scope.queryBodyDisplay="none",$scope.queryLimitDisplay="block",$scope.queryStringDisplay="block",$scope.entitySelected={},$scope.newCollection={},$rootScope.queryCollection={},$scope.data={},$scope.data.queryPath="",$scope.data.queryBody='{ "name":"value" }',$scope.data.searchString="",$scope.data.queryLimit=""},runQuery=function(verb){$scope.loading=!0;var queryPath=$scope.removeFirstSlash($scope.data.queryPath||""),searchString=$scope.data.searchString||"",queryLimit=$scope.data.queryLimit||"",body=JSON.parse($scope.data.queryBody||"{}");"POST"==verb&&$scope.validateJson(!0)?ug.runDataPOSTQuery(queryPath,body):"PUT"==verb&&$scope.validateJson(!0)?ug.runDataPutQuery(queryPath,searchString,queryLimit,body):"DELETE"==verb?ug.runDataDeleteQuery(queryPath,searchString,queryLimit):ug.runDataQuery(queryPath,searchString,queryLimit)};$scope.$on("top-collections-received",function(event,collectionList){$scope.loading=!1;var ignoredCollections=["events"];ignoredCollections.forEach(function(ignoredCollection){collectionList.hasOwnProperty(ignoredCollection)&&delete collectionList[ignoredCollection]}),$scope.collectionList=collectionList,$scope.queryBoxesSelected=!1,$scope.queryPath||$scope.loadCollection("/"+collectionList[Object.keys(collectionList).sort()[0]].name),$scope.applyScope()}),$scope.$on("error-running-query",function(){$scope.loading=!1,runQuery("GET"),$scope.applyScope()}),$scope.$on("entity-deleted",function(){$scope.deleteLoading=!1,$rootScope.$broadcast("alert","success","Entities deleted sucessfully"),$scope.queryBoxesSelected=!1,$scope.checkNextPrev(),$scope.applyScope()}),$scope.$on("entity-deleted-error",function(){$scope.deleteLoading=!1,runQuery("GET"),$scope.applyScope()}),$scope.$on("collection-created",function(){$scope.newCollection.name=""}),$scope.$on("query-received",function(event,collection){$scope.loading=!1,$rootScope.queryCollection=collection,ug.getIndexes($scope.data.queryPath),$scope.setDisplayType(),$scope.checkNextPrev(),$scope.applyScope(),$scope.queryBoxesSelected=!1}),$scope.$on("indexes-received",function(event,indexes){}),$scope.$on("app-changed",function(){init()}),$scope.setDisplayType=function(){$scope.display="generic"},$scope.deleteEntitiesDialog=function(modalId){$scope.deleteLoading=!1,$scope.deleteEntities($rootScope.queryCollection,"entity-deleted","error deleting entity"),$scope.hideModal(modalId)},$scope.newCollectionDialog=function(modalId){$scope.newCollection.name?(ug.createCollection($scope.newCollection.name),ug.getTopCollections(),$rootScope.$broadcast("alert","success","Collection created successfully."),$scope.hideModal(modalId)):$rootScope.$broadcast("alert","error","You must specify a collection name.")},$scope.addToPath=function(uuid){$scope.data.queryPath="/"+$rootScope.queryCollection._type+"/"+uuid},$scope.removeFromPath=function(){$scope.data.queryPath="/"+$rootScope.queryCollection._type},$scope.isDeep=function(item){return"[object Object]"===Object.prototype.toString.call(item)},$scope.loadCollection=function(type){$scope.data.queryPath="/"+type.substring(1,type.length),$scope.data.searchString="",$scope.data.queryLimit="",$scope.data.body='{ "name":"value" }',$scope.selectGET(),$scope.applyScope(),$scope.run()},$scope.selectGET=function(){$scope.queryBodyDisplay="none",$scope.queryLimitDisplay="block",$scope.queryStringDisplay="block",$scope.verb="GET"},$scope.selectPOST=function(){$scope.queryBodyDisplay="block",$scope.queryLimitDisplay="none",$scope.queryStringDisplay="none",$scope.verb="POST"},$scope.selectPUT=function(){$scope.queryBodyDisplay="block",$scope.queryLimitDisplay="block",$scope.queryStringDisplay="block",$scope.verb="PUT"},$scope.selectDELETE=function(){$scope.queryBodyDisplay="none",$scope.queryLimitDisplay="block",$scope.queryStringDisplay="block",$scope.verb="DELETE"},$scope.validateJson=function(skipMessage){var queryBody=$scope.data.queryBody;try{queryBody=JSON.parse(queryBody)}catch(e){return $rootScope.$broadcast("alert","error","JSON is not valid"),!1}return queryBody=JSON.stringify(queryBody,null,2),!skipMessage&&$rootScope.$broadcast("alert","success","JSON is valid"),$scope.data.queryBody=queryBody,!0},$scope.saveEntity=function(entity){if(!$scope.validateJson())return!1;var queryBody=entity._json;queryBody=JSON.parse(queryBody),$rootScope.selectedEntity.set(),$rootScope.selectedEntity.set(queryBody),$rootScope.selectedEntity.set("type",entity._data.type),$rootScope.selectedEntity.set("uuid",entity._data.uuid),$rootScope.selectedEntity.save(function(err,data){err?$rootScope.$broadcast("alert","error","error: "+data.error_description):$rootScope.$broadcast("alert","success","entity saved")})},$scope.run=function(){$rootScope.queryCollection="";var verb=$scope.verb;runQuery(verb)},$scope.hasProperty=function(prop){var retval=!1;return"undefined"!=typeof $rootScope.queryCollection._list&&angular.forEach($rootScope.queryCollection._list,function(value){retval||value._data[prop]&&(retval=!0)}),retval},$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$rootScope.queryCollection.hasPreviousPage()&&($scope.previous_display="default"),$rootScope.queryCollection.hasNextPage()&&($scope.next_display="default")},$scope.selectEntity=function(uuid,addToPath){$rootScope.selectedEntity=$rootScope.queryCollection.getEntityByUUID(uuid),addToPath?$scope.addToPath(uuid):$scope.removeFromPath()},$scope.getJSONView=function(entity){var tempjson=entity.get(),queryBody=JSON.stringify(tempjson,null,2);queryBody=JSON.parse(queryBody),delete queryBody.metadata,delete queryBody.uuid,delete queryBody.created,delete queryBody.modified,delete queryBody.type,$scope.queryBody=JSON.stringify(queryBody,null,2)},$scope.getPrevious=function(){$rootScope.queryCollection.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of data"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.getNext=function(){$rootScope.queryCollection.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of data"),$scope.checkNextPrev(),$scope.applyScope()})},init(),$rootScope.queryCollection=$rootScope.queryCollection||{},$rootScope.selectedEntity={},$rootScope.queryCollection&&$rootScope.queryCollection._type&&($scope.loadCollection($rootScope.queryCollection._type),$scope.setDisplayType()),ug.getTopCollections(),$scope.resetNextPrev()}]),AppServices.Controllers.controller("EntityCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){if(!$rootScope.selectedEntity)return void $location.path("/data");$scope.entityUUID=$rootScope.selectedEntity.get("uuid"),$scope.entityType=$rootScope.selectedEntity.get("type");var tempjson=$rootScope.selectedEntity.get(),queryBody=JSON.stringify(tempjson,null,2);queryBody=JSON.parse(queryBody),delete queryBody.metadata,delete queryBody.uuid,delete queryBody.created,delete queryBody.modified,delete queryBody.type,$scope.queryBody=JSON.stringify(queryBody,null,2),$scope.validateJson=function(){var queryBody=$scope.queryBody;try{queryBody=JSON.parse(queryBody)}catch(e){return $rootScope.$broadcast("alert","error","JSON is not valid"),!1}return queryBody=JSON.stringify(queryBody,null,2),$rootScope.$broadcast("alert","success","JSON is valid"),$scope.queryBody=queryBody,!0},$scope.saveEntity=function(){if(!$scope.validateJson())return!1;var queryBody=$scope.queryBody;queryBody=JSON.parse(queryBody),$rootScope.selectedEntity.set(),$rootScope.selectedEntity.set(queryBody),$rootScope.selectedEntity.set("type",$scope.entityType),$rootScope.selectedEntity.set("uuid",$scope.entityUUID),$rootScope.selectedEntity.save(function(err,data){err?$rootScope.$broadcast("alert","error","error: "+data.error_description):$rootScope.$broadcast("alert","success","entity saved")})}}]),AppServices.Directives.directive("balloon",["$window","$timeout",function($window,$timeout){return{restrict:"ECA",scope:"=",template:'<div class="baloon {{direction}}" ng-transclude></div>',replace:!0,transclude:!0,link:function(scope,lElement,attrs){scope.direction=attrs.direction;var runScroll=!0,windowEl=angular.element($window);windowEl.on("scroll",function(){runScroll&&(lElement.addClass("fade-out"),$timeout(function(){lElement.addClass("hide")},1e3),runScroll=!1)})}}}]),AppServices.Directives.directive("bsmodal",["$rootScope",function($rootScope){return{restrict:"ECA",scope:{title:"@title",buttonid:"=buttonid",footertext:"=footertext",closelabel:"=closelabel"},transclude:!0,templateUrl:"dialogs/modal.html",replace:!0,link:function(scope,lElement,attrs,parentCtrl){scope.title=attrs.title,scope.footertext=attrs.footertext,scope.closelabel=attrs.closelabel,scope.close=attrs.close,scope.extrabutton=attrs.extrabutton,scope.extrabuttonlabel=attrs.extrabuttonlabel,scope.buttonId=attrs.buttonid,scope.closeDelegate=function(attr){scope.$parent[attr](attrs.id,scope)},scope.extraDelegate=function(attr){scope.dialogForm.$valid?(console.log(parentCtrl),scope.$parent[attr](attrs.id)):$rootScope.$broadcast("alert","error","Please check your form input and resubmit.")}}}}]),AppServices.Controllers.controller("AlertCtrl",["$scope","$rootScope","$timeout",function($scope,$rootScope,$timeout){$scope.alertDisplay="none",$scope.alerts=[],$scope.$on("alert",function(event,type,message,permanent){$scope.addAlert(type,message,permanent)}),$scope.$on("clear-alerts",function(){$scope.alerts=[]}),$scope.addAlert=function(type,message,permanent){$scope.alertDisplay="block",$scope.alerts.push({type:type,msg:message}),$scope.applyScope(),permanent||$timeout(function(){$scope.alerts.shift()},5e3)},$scope.closeAlert=function(index){$scope.alerts.splice(index,1)}}]),AppServices.Directives.directive("alerti",["$rootScope","$timeout",function($rootScope,$timeout){return{restrict:"ECA",scope:{type:"=type",closeable:"@closeable",index:"&index"},template:'<div class="alert" ng-class="type && \'alert-\' + type">    <button ng-show="closeable" type="button" class="close" ng-click="closeAlert(index)">&times;</button>    <i ng-if="type === \'warning\'" class="pictogram pull-left" style="font-size:3em;line-height:0.4">&#128165;</i>    <i ng-if="type === \'info\'" class="pictogram pull-left">&#8505;</i>    <i ng-if="type === \'error\'" class="pictogram pull-left">&#9889;</i>    <i ng-if="type === \'success\'" class="pictogram pull-left">&#128077;</i><div ng-transclude></div></div>',replace:!0,transclude:!0,link:function(scope,lElement,attrs){$timeout(function(){lElement.addClass("fade-out")},4e3),lElement.click(function(){attrs.index&&scope.$parent.closeAlert(attrs.index)}),setTimeout(function(){lElement.addClass("alert-animate")},10)}}}]),AppServices.Directives.directive("appswitcher",["$rootScope",function(){return{restrict:"ECA",scope:"=",templateUrl:"global/appswitcher-template.html",replace:!0,transclude:!0,link:function(){function globalNavDetail(){$("#globalNavDetail > div").removeClass(classNameOpen),$("#globalNavDetailApiPlatform").addClass(classNameOpen)}var classNameOpen="open";$("ul.nav li.dropdownContainingSubmenu").hover(function(){$(this).addClass(classNameOpen)},function(){$(this).removeClass(classNameOpen)}),$("#globalNav > a").mouseover(globalNavDetail),$("#globalNavDetail").mouseover(globalNavDetail),$("#globalNavSubmenuContainer ul li").mouseover(function(){$("#globalNavDetail > div").removeClass(classNameOpen),$("#"+this.getAttribute("data-globalNavDetail")).addClass(classNameOpen)
})}}}]),AppServices.Services.factory("help",function($rootScope,$http,$location,$analytics){$rootScope.help={},$rootScope.help.helpButtonStatus="Enable Help",$rootScope.help.helpTooltipsEnabled=!1,$rootScope.help.clicked=!1,$rootScope.help.showHelpButtons=!1,$rootScope.help.introjs_shouldLaunch=!1,$rootScope.help.showTabsId="invisible",$rootScope.help.showJsonId="invisible";var helpStartTime,introjs_step,getHelpJson=function(path){return $http.get("https://s3.amazonaws.com/sdk.apigee.com/portal_help"+path+"/helpJson.json")},getHelpStatus=function(helpType){var status;return"tour"==helpType?(status=localStorage.getItem("ftu_tour"),localStorage.setItem("ftu_tour","false")):"tooltips"==helpType&&(status=localStorage.getItem("ftu_tooltips"),localStorage.setItem("ftu_tooltips","false")),status};$rootScope.help.sendTooltipGA=function(tooltipName){$analytics.eventTrack("tooltip - "+$rootScope.currentPath,{category:"App Services",label:tooltipName})},$rootScope.help.toggleTooltips=function(){0==$rootScope.help.helpTooltipsEnabled?($rootScope.help.helpButtonStatus="Disable Help",$rootScope.help.helpTooltipsEnabled=!0,$rootScope.$broadcast("tooltips-enabled"),showHelpModal("tooltips")):($rootScope.help.helpButtonStatus="Enable Help",$rootScope.help.helpTooltipsEnabled=!1,$rootScope.$broadcast("tooltips-disabled"))},$rootScope.$on("users-received",function(event,users){users._list.length>0?($rootScope.help.showTabsId="intro-information-tabs",$rootScope.help.showJsonId="intro-json-object"):($rootScope.help.showTabsId="invisible",$rootScope.help.showJsonId="invisible")}),$rootScope.$on("groups-received",function(event,groups){groups._list.length>0?($rootScope.help.showTabsId="intro-information-tabs",$rootScope.help.showJsonId="intro-json-object"):($rootScope.help.showTabsId="invisible",$rootScope.help.showJsonId="invisible")}),$rootScope.$on("$routeChangeSuccess",function(event,current){var path=current.$$route?current.$$route.originalPath:null;"/org-overview"===path||path&&path.indexOf("/performance")>=0||"/users"===path||"/groups"===path||"/roles"===path||"/data"===path?($rootScope.help.showHelpButtons=!0,getHelpJson(path).success(function(json){var helpJson=json;setHelpStrings(helpJson),showHelpModal("tour")})):$rootScope.help.showHelpButtons=!1});var showHelpModal=function(helpType){var shouldHelp=location.search.indexOf("noHelp")<=0;"tour"!=helpType||getHelpStatus(helpType)?"tooltips"!=helpType||getHelpStatus(helpType)||shouldHelp&&$rootScope.showModal("tooltips"):shouldHelp&&$rootScope.showModal("introjs")},setHelpStrings=function(helpJson){$rootScope.help.IntroOptions.steps=helpJson.introjs,angular.forEach(helpJson.tooltip,function(value,binding){$rootScope[binding]=value}),$rootScope.help.tooltip=helpJson.tooltip,$rootScope.$broadcast("helpJsonLoaded")};$rootScope.help.IntroOptions={steps:[],showStepNumbers:!1,exitOnOverlayClick:!0,exitOnEsc:!0,nextLabel:"Next",prevLabel:"Back",skipLabel:"Exit",doneLabel:"Done"},$rootScope.help.introjs_StartEvent=function(){helpStartTime=Date.now(),introjs_step=1},$rootScope.help.introjs_ExitEvent=function(){var introjs_time=Math.round((Date.now()-helpStartTime)/1e3);$analytics.eventTrack("introjs timing - "+$rootScope.currentPath,{category:"App Services",label:introjs_time+"s"}),$analytics.eventTrack("introjs exit - "+$rootScope.currentPath,{category:"App Services",label:"step"+introjs_step})},$rootScope.help.introjs_CompleteEvent=function(){switch($rootScope.currentPath){case"/performance/app-usage":introjs_PageTransitionEvent("/performance/errors-crashes");break;case"/performance/errors-crashes":introjs_PageTransitionEvent("/performance/api-perf");break;case"/users":introjs_PageTransitionEvent("/groups");break;case"/groups":introjs_PageTransitionEvent("/roles")}};var introjs_PageTransitionEvent=function(url){$location.url(url),$rootScope.help.introjs_shouldLaunch=!0,$rootScope.$apply()};$rootScope.help.introjs_ChangeEvent=function(){introjs_step++}}),AppServices.Directives.directive("insecureBanner",["$rootScope","ug",function($rootScope,ug){return{restrict:"E",transclude:!0,templateUrl:"global/insecure-banner.html",link:function(scope){scope.securityWarning=!1,scope.$on("roles-received",function(evt,roles){scope.securityWarning=!1,roles&&roles._list&&roles._list.forEach(function(roleHolder){var role=roleHolder._data;"GUEST"===role.name.toUpperCase()&&roleHolder.getPermissions(function(err){err||roleHolder.permissions&&roleHolder.permissions.forEach(function(permission){permission.path.indexOf("/**")>=0&&(scope.securityWarning=!0,scope.applyScope())})})})});var initialized=!1;scope.$on("app-initialized",function(){!initialized&&ug.getRoles(),initialized=!0}),scope.$on("app-changed",function(){scope.securityWarning=!1,ug.getRoles()})}}}]),AppServices.Constants.constant("configuration",{ITEMS_URL:"global/temp.json"}),AppServices.Controllers.controller("PageCtrl",["ug","help","utility","$scope","$rootScope","$location","$routeParams","$q","$route","$log","$analytics","$sce",function(ug,help,utility,$scope,$rootScope,$location,$routeParams,$q,$route,$log,$analytics,$sce){var initScopeVariables=function(){for(var menuItems=Usergrid.options.menuItems,i=0;i<menuItems.length;i++)if(menuItems[i].pic=$sce.trustAsHtml(menuItems[i].pic),menuItems[i].items)for(var j=0;j<menuItems[i].items.length;j++)menuItems[i].items[j].pic=$sce.trustAsHtml(menuItems[i].items[j].pic);$scope.menuItems=Usergrid.options.menuItems,$scope.loadingText="Loading...",$scope.use_sso=!1,$scope.newApp={name:""},$scope.getPerm="",$scope.postPerm="",$scope.putPerm="",$scope.deletePerm="",$scope.usersTypeaheadValues=[],$scope.groupsTypeaheadValues=[],$scope.rolesTypeaheadValues=[],$rootScope.sdkActive=!1,$rootScope.demoData=!1,$scope.queryStringApplied=!1,$rootScope.autoUpdateTimer=Usergrid.config?Usergrid.config.autoUpdateTimer:61,$rootScope.requiresDeveloperKey=Usergrid.config?Usergrid.config.client.requiresDeveloperKey:!1,$rootScope.loaded=$rootScope.activeUI=!1;for(var key in Usergrid.regex)$scope[key]=Usergrid.regex[key];$scope.options=Usergrid.options;var getQuery=function(){for(var m,result={},queryString=location.search.slice(1),re=/([^&=]+)=([^&]*)/g;m=re.exec(queryString);)result[decodeURIComponent(m[1])]=decodeURIComponent(m[2]);return result};$scope.queryString=getQuery()};initScopeVariables(),$rootScope.urls=function(){var urls=ug.getUrls($scope.queryString);return $scope.apiUrl=urls.apiUrl,$scope.use_sso=urls.use_sso,urls},$rootScope.gotoPage=function(path){$location.path(path)};var notRegistration=function(){return"/forgot-password"!==$location.path()&&"/register"!==$location.path()},verifyUser=function(){"/login"!==$location.path().slice(0,"/login".length)&&($rootScope.currentPath=$location.path()),$routeParams.access_token&&$routeParams.admin_email&&$routeParams.uuid&&(ug.set("token",$routeParams.access_token),ug.set("email",$routeParams.admin_email),ug.set("uuid",$routeParams.uuid),$location.search("access_token",null),$location.search("admin_email",null),$location.search("uuid",null)),ug.checkAuthentication(!0)};$scope.profile=function(){$scope.use_sso?window.location=$rootScope.urls().PROFILE_URL+"?callback="+encodeURIComponent($location.absUrl()):$location.path("/profile")},$rootScope.showModal=function(id){$("#"+id).modal("show")},$rootScope.hideModal=function(id){$("#"+id).modal("hide")},$scope.deleteEntities=function(collection,successBroadcast,errorMessage){collection.resetEntityPointer();for(var entitiesToDelete=[];collection.hasNextEntity();){var entity=collection.getNextEntity(),checked=entity.checked;checked&&entitiesToDelete.push(entity)}for(var count=0,success=!1,i=0;i<entitiesToDelete.length;i++){var entity=entitiesToDelete[i];collection.destroyEntity(entity,function(err){count++,err?($rootScope.$broadcast("alert","error",errorMessage),$rootScope.$broadcast(successBroadcast+"-error",err)):success=!0,count===entitiesToDelete.length&&(success&&$rootScope.$broadcast(successBroadcast),$scope.applyScope())})}},$scope.selectAllEntities=function(list,that,varName,setValue){varName=varName||"master";var val=that[varName];void 0==setValue&&(setValue=!0),setValue&&(that[varName]=val=!val),list.forEach(function(entitiy){entitiy.checked=val})},$scope.createPermission=function(type,entity,path,permissions){"/"!=path.charAt(0)&&(path="/"+path);var ops="",s="";permissions.getPerm&&(ops="get",s=","),permissions.postPerm&&(ops=ops+s+"post",s=","),permissions.putPerm&&(ops=ops+s+"put",s=","),permissions.deletePerm&&(ops=ops+s+"delete",s=",");var permission=ops+":"+path;return permission},$scope.formatDate=function(date){return new Date(date).toUTCString()},$scope.clearCheckbox=function(id){$("#"+id).attr("checked")&&$("#"+id).click()},$scope.removeFirstSlash=function(path){return 0===path.indexOf("/")?path.substring(1,path.length):path},$scope.applyScope=function(cb){return cb="function"==typeof cb?cb:function(){},this.$$phase?void cb():this.$apply(cb)},$scope.valueSelected=function(list){return list&&list.some(function(item){return item.checked})},$scope.sendHelp=function(modalId){ug.jsonpRaw("apigeeuihelpemail","",{useremail:$rootScope.userEmail}).then(function(){$rootScope.$broadcast("alert","success","Email sent. Our team will be in touch with you shortly.")},function(){$rootScope.$broadcast("alert","error","Problem Sending Email. Try sending an email to mobile@apigee.com.")}),$scope.hideModal(modalId)},$scope.$on("users-typeahead-received",function(event,users){$scope.usersTypeaheadValues=users,$scope.$$phase||$scope.$apply()}),$scope.$on("groups-typeahead-received",function(event,groups){$scope.groupsTypeaheadValues=groups,$scope.$$phase||$scope.$apply()}),$scope.$on("roles-typeahead-received",function(event,roles){$scope.rolesTypeaheadValues=roles,$scope.$$phase||$scope.$apply()}),$scope.$on("checkAuthentication-success",function(){sessionStorage.setItem("authenticateAttempts",0),$scope.loaded=!0,$rootScope.activeUI=!0,$scope.applyScope(),$scope.queryStringApplied||($scope.queryStringApplied=!0,setTimeout(function(){$scope.queryString.org&&$rootScope.$broadcast("change-org",$scope.queryString.org)},1e3)),$rootScope.$broadcast("app-initialized")}),$scope.$on("checkAuthentication-error",function(args,err,missingData,email){if($scope.loaded=!0,err&&!$scope.use_sso&&notRegistration())ug.logout(),$location.path("/login"),$scope.applyScope();else if(missingData&&notRegistration()){if(!email&&$scope.use_sso)return void(window.location=$rootScope.urls().LOGIN_URL+"?callback="+encodeURIComponent($location.absUrl().split("?")[0]));ug.reAuthenticate(email)}}),$scope.$on("reAuthenticate-success",function(args,err,data,user,organizations,applications){sessionStorage.setItem("authenticateAttempts",0),$rootScope.$broadcast("loginSuccesful",user,organizations,applications),$rootScope.$emit("loginSuccesful",user,organizations,applications),$rootScope.$broadcast("checkAuthentication-success"),$scope.applyScope(function(){$scope.deferredLogin.resolve(),$location.path("/org-overview")})});var authenticateAttempts=parseInt(sessionStorage.getItem("authenticateAttempts")||0);$scope.$on("reAuthenticate-error",function(){if($scope.use_sso){if(authenticateAttempts++>5)return void $rootScope.$broadcast("alert","error","There is an issue with authentication. Please contact support.");console.error("Failed to login via sso "+authenticateAttempts),sessionStorage.setItem("authenticateAttempts",authenticateAttempts),window.location=$rootScope.urls().LOGIN_URL+"?callback="+encodeURIComponent($location.absUrl().split("?")[0])}else notRegistration()&&(ug.logout(),$location.path("/login"),$scope.applyScope())}),$scope.$on("loginSuccessful",function(){$rootScope.activeUI=!0}),$scope.$on("app-changed",function(args,oldVal,newVal,preventReload){newVal===oldVal||preventReload||$route.reload()}),$scope.$on("org-changed",function(){ug.getApplications(),$route.reload()}),$scope.$on("app-settings-received",function(){}),$scope.$on("request-times-slow",function(){$rootScope.$broadcast("alert","info","We are experiencing performance issues on our server.  Please click Get Help for support if this continues.")});var lastPage="";$scope.$on("$routeChangeSuccess",function(){verifyUser(),$scope.showDemoBar="/performance"===$location.path().slice(0,"/performance".length),$scope.showDemoBar||($rootScope.demoData=!1),setTimeout(function(){lastPage=""},50);var path=window.location.pathname.replace("index-debug.html","");""===lastPage&&$analytics.pageTrack((path+$location.path()).replace("//","/")),lastPage=$location.path()}),$scope.$on("applications-received",function(event,applications){$scope.applications=applications,$scope.hasApplications=Object.keys(applications).length>0}),ug.getAppSettings(),$rootScope.startFirstTimeUser=function(){$rootScope.hideModal("introjs"),$rootScope.help.introjs_StartEvent(),$scope.startHelp()},$scope.$on("helpJsonLoaded",function(){1==$rootScope.help.introjs_shouldLaunch&&($rootScope.help.introjs_StartEvent(),$scope.startHelp(),$rootScope.help.introjs_shouldLaunch=!1)})}]),AppServices.Directives.directive("pageTitle",["$rootScope","ug",function($rootScope){return{restrict:"E",transclude:!0,templateUrl:"global/page-title.html",link:function(scope,lElement,attrs){scope.title=attrs.title,scope.icon=attrs.icon,scope.showHelp=function(){$("#need-help").modal("show")},scope.sendHelp=function(){data.jsonp_raw("apigeeuihelpemail","",{useremail:$rootScope.userEmail}).then(function(){$rootScope.$broadcast("alert","success","Email sent. Our team will be in touch with you shortly.")},function(){$rootScope.$broadcast("alert","error","Problem Sending Email. Try sending an email to mobile@apigee.com.")}),$("#need-help").modal("hide")}}}}]),AppServices.Services.factory("ug",function(configuration,$rootScope,utility,$q,$http,$resource,$log,$analytics,$location){function reportError(data,config){try{$analytics.eventTrack("error",{category:"App Services",label:data+":"+config.url+":"+(sessionStorage.apigee_uuid||"na")})}catch(e){console.log(e)}}var requestTimes=[],running=!1,currentRequests={},getAccessToken=function(){return sessionStorage.getItem("accessToken")};return{get:function(prop,isObject){return isObject?this.client().getObject(prop):this.client().get(prop)},set:function(prop,value){this.client().set(prop,value)},getUrls:function(qs){var host=$location.host(),BASE_URL="",DATA_URL="",use_sso=!1;switch(!0){case"appservices.apigee.com"===host&&location.pathname.indexOf("/dit")>=0:BASE_URL="https://accounts.jupiter.apigee.net",DATA_URL="https://apigee-internal-prod.jupiter.apigee.net",use_sso=!0;break;case"appservices.apigee.com"===host&&location.pathname.indexOf("/mars")>=0:BASE_URL="https://accounts.mars.apigee.net",DATA_URL="https://apigee-internal-prod.mars.apigee.net",use_sso=!0;break;case"appservices.apigee.com"===host:DATA_URL=Usergrid.overrideUrl;break;case"apigee.com"===host:BASE_URL="https://accounts.apigee.com",DATA_URL="https://api.usergrid.com",use_sso=!0;break;case"usergrid.dev"===host:DATA_URL="https://api.usergrid.com";break;default:DATA_URL=Usergrid.overrideUrl}return DATA_URL=qs.api_url||DATA_URL,DATA_URL=DATA_URL.lastIndexOf("/")===DATA_URL.length-1?DATA_URL.substring(0,DATA_URL.length-1):DATA_URL,{DATA_URL:DATA_URL,LOGIN_URL:BASE_URL+"/accounts/sign_in",PROFILE_URL:BASE_URL+"/accounts/my_account",LOGOUT_URL:BASE_URL+"/accounts/sign_out",apiUrl:DATA_URL,use_sso:use_sso}},orgLogin:function(username,password){var self=this;this.client().set("email",username),this.client().set("token",null),this.client().orgLogin(username,password,function(err,data,user,organizations,applications){err?$rootScope.$broadcast("loginFailed",err,data):self.initializeCurrentUser(function(){$rootScope.$broadcast("loginSuccesful",user,organizations,applications)})})},checkAuthentication:function(force){var ug=this,client=ug.client(),initialize=function(){ug.initializeCurrentUser(function(){$rootScope.userEmail=client.get("email"),$rootScope.organizations=client.getObject("organizations"),$rootScope.applications=client.getObject("applications"),$rootScope.currentOrg=client.get("orgName"),$rootScope.currentApp=client.get("appName");var key,size=0;for(key in $rootScope.applications)$rootScope.applications.hasOwnProperty(key)&&size++;$rootScope.$broadcast("checkAuthentication-success",client.getObject("organizations"),client.getObject("applications"),client.get("orgName"),client.get("appName"),client.get("email"))})},isAuthenticated=function(){var authenticated=null!==client.get("token")&&null!==client.get("organizations");return authenticated&&initialize(),authenticated};if(!isAuthenticated()||force){if(!client.get("token"))return $rootScope.$broadcast("checkAuthentication-error","no token",{},client.get("email"));this.client().reAuthenticateLite(function(err){var missingData=err||!client.get("orgName")||!client.get("appName")||!client.getObject("organizations")||!client.getObject("applications"),email=client.get("email");err||missingData?$rootScope.$broadcast("checkAuthentication-error",err,missingData,email):initialize()})}},reAuthenticate:function(email,eventOveride){var ug=this;this.client().reAuthenticate(email,function(err,data,user,organizations,applications){err||($rootScope.currentUser=user),err||($rootScope.userEmail=user.get("email"),$rootScope.organizations=organizations,$rootScope.applications=applications,$rootScope.currentOrg=ug.get("orgName"),$rootScope.currentApp=ug.get("appName"),$rootScope.currentUser=user._data,$rootScope.currentUser.profileImg=utility.get_gravatar($rootScope.currentUser.email)),$rootScope.$broadcast((eventOveride||"reAuthenticate")+"-"+(err?"error":"success"),err,data,user,organizations,applications)})},logoutCallback:function(){$rootScope.$broadcast("userNotAuthenticated")},logout:function(){$rootScope.activeUI=!1,$rootScope.userEmail="user@apigee.com",$rootScope.organizations={noOrg:{name:"No Orgs Found"}},$rootScope.applications={noApp:{name:"No Apps Found"}},$rootScope.currentOrg="No Org Found",$rootScope.currentApp="No App Found",sessionStorage.setItem("accessToken",null),sessionStorage.setItem("userUUID",null),sessionStorage.setItem("userEmail",null),this.client().logout(),this._client=null},client:function(){var options={buildCurl:!0,logging:!0};return Usergrid.options&&Usergrid.options.client&&(options.keys=Usergrid.options.client),this._client=this._client||new Usergrid.Client(options,$rootScope.urls().DATA_URL),this._client},setClientProperty:function(key,value){this.client().set(key,value)},getTopCollections:function(){var options={method:"GET",endpoint:""};this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error getting collections");else{var collections=data.entities[0].metadata.collections;$rootScope.$broadcast("top-collections-received",collections)}})},createCollection:function(collectionName){var collections={};collections[collectionName]={};var metadata={metadata:{collections:collections}},options={method:"PUT",body:metadata,endpoint:""};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error creating collection"):$rootScope.$broadcast("collection-created",collections)})},getApplications:function(){this.client().getApplications(function(err,applications){err?applications&&console.error(applications):$rootScope.$broadcast("applications-received",applications)})},getAdministrators:function(){this.client().getAdministrators(function(err,administrators){err&&$rootScope.$broadcast("alert","error","error getting administrators"),$rootScope.$broadcast("administrators-received",administrators)})},createApplication:function(appName){this.client().createApplication(appName,function(err,applications){err?$rootScope.$broadcast("alert","error","error creating application"):($rootScope.$broadcast("applications-created",applications,appName),$rootScope.$broadcast("applications-received",applications))})},createAdministrator:function(adminName){this.client().createAdministrator(adminName,function(err,administrators){err&&$rootScope.$broadcast("alert","error","error creating administrator"),$rootScope.$broadcast("administrators-received",administrators)})},getFeed:function(){var options={method:"GET",endpoint:"management/organizations/"+this.client().get("orgName")+"/feed",mQuery:!0};this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error getting feed");else{var feedData=data.entities,feed=[],i=0;for(i=0;i<feedData.length;i++){var date=new Date(feedData[i].created).toUTCString(),title=feedData[i].title,n=title.indexOf(">");title=title.substring(n+1,title.length),n=title.indexOf(">"),title=title.substring(n+1,title.length),feedData[i].actor&&(title=feedData[i].actor.displayName+" "+title),feed.push({date:date,title:title})}0===i&&feed.push({date:"",title:"No Activities found."}),$rootScope.$broadcast("feed-received",feed)}})},createGroup:function(path,title){var options={path:path,title:title},self=this;this.groupsCollection.addEntity(options,function(err){err?$rootScope.$broadcast("groups-create-error",err):($rootScope.$broadcast("groups-create-success",self.groupsCollection),$rootScope.$broadcast("groups-received",self.groupsCollection))})},createRole:function(name,title){var options={name:name,title:title},self=this;this.rolesCollection.addEntity(options,function(err){err?$rootScope.$broadcast("alert","error","error creating role"):$rootScope.$broadcast("roles-received",self.rolesCollection)})},createUser:function(username,name,email,password){var options={username:username,name:name,email:email,password:password},self=this;this.usersCollection.addEntity(options,function(err,data){err?"string"==typeof data?$rootScope.$broadcast("alert","error","error: "+data):$rootScope.$broadcast("alert","error","error creating user. the email address might already exist."):($rootScope.$broadcast("users-create-success",self.usersCollection),$rootScope.$broadcast("users-received",self.usersCollection))})},getCollection:function(type,path,orderBy,query,limit){var options={type:path,qs:{}};query&&(options.qs.ql=query),options.qs.ql=options.qs.ql?options.qs.ql+" order by "+(orderBy||"created desc"):" order by "+(orderBy||"created desc"),limit&&(options.qs.limit=limit),this.client().createCollection(options,function(err,collection,data){err?$rootScope.$broadcast("alert","error","error getting "+collection._type+": "+data.error_description):$rootScope.$broadcast(type+"-received",collection),$rootScope.$$phase||$rootScope.$apply()})},runDataQuery:function(queryPath,searchString,queryLimit){this.getCollection("query",queryPath,null,searchString,queryLimit)},runDataPOSTQuery:function(queryPath,body){var self=this,options={method:"POST",endpoint:queryPath,body:body};this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error: "+data.error_description),$rootScope.$broadcast("error-running-query",data);else{var queryPath=data.path;self.getCollection("query",queryPath,null,"order by modified DESC",null)}})},runDataPutQuery:function(queryPath,searchString,queryLimit,body){var self=this,options={method:"PUT",endpoint:queryPath,body:body};searchString&&(options.qs.ql=searchString),queryLimit&&(options.qs.queryLimit=queryLimit),this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error: "+data.error_description);else{var queryPath=data.path;self.getCollection("query",queryPath,null,"order by modified DESC",null)}})},runDataDeleteQuery:function(queryPath,searchString,queryLimit){var self=this,options={method:"DELETE",endpoint:queryPath};searchString&&(options.qs.ql=searchString),queryLimit&&(options.qs.queryLimit=queryLimit),this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error: "+data.error_description);else{var queryPath=data.path;self.getCollection("query",queryPath,null,"order by modified DESC",null)}})},getUsers:function(){this.getCollection("users","users","username");var self=this;$rootScope.$on("users-received",function(evt,users){self.usersCollection=users})},getGroups:function(){this.getCollection("groups","groups","title");var self=this;$rootScope.$on("groups-received",function(event,roles){self.groupsCollection=roles})},getRoles:function(){this.getCollection("roles","roles","name");var self=this;$rootScope.$on("roles-received",function(event,roles){self.rolesCollection=roles})},getNotifiers:function(){var query="",limit="100",self=this;this.getCollection("notifiers","notifiers","created",query,limit),$rootScope.$on("notifiers-received",function(event,notifiers){self.notifiersCollection=notifiers})},getNotificationHistory:function(type){var query=null;type&&(query="select * where state = '"+type+"'"),this.getCollection("notifications","notifications","created desc",query);var self=this;$rootScope.$on("notifications-received",function(event,notifications){self.notificationCollection=notifications})},getNotificationReceipts:function(uuid){this.getCollection("receipts","notifications/"+uuid+"/receipts");var self=this;$rootScope.$on("receipts-received",function(event,receipts){self.receiptsCollection=receipts})},getIndexes:function(path){var options={method:"GET",endpoint:path.split("/").concat("indexes").filter(function(bit){return bit&&bit.length}).join("/")};this.client().request(options,function(err,data){err?$rootScope.$broadcast("alert","error","Problem getting indexes: "+data.error):$rootScope.$broadcast("indexes-received",data.data)})},sendNotification:function(path,body){var options={method:"POST",endpoint:path,body:body};this.client().request(options,function(err,data){err?$rootScope.$broadcast("alert","error","Problem creating notification: "+data.error):$rootScope.$broadcast("send-notification-complete")})},getRolesUsers:function(username){var options={type:"roles/users/"+username,qs:{ql:"order by username"}};this.client().createCollection(options,function(err,users){err?$rootScope.$broadcast("alert","error","error getting users"):$rootScope.$broadcast("users-received",users)})},getTypeAheadData:function(type,searchString,searchBy,orderBy){var search="",qs={limit:100};searchString&&(search="select * where "+searchBy+" = '"+searchString+"'"),orderBy&&(search=search+" order by "+orderBy),search&&(qs.ql=search);var options={method:"GET",endpoint:type,qs:qs};this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error getting "+type);else{var entities=data.entities;$rootScope.$broadcast(type+"-typeahead-received",entities)}})},getUsersTypeAhead:function(searchString){this.getTypeAheadData("users",searchString,"username","username")},getGroupsTypeAhead:function(searchString){this.getTypeAheadData("groups",searchString,"path","path")},getRolesTypeAhead:function(searchString){this.getTypeAheadData("roles",searchString,"name","name")},getGroupsForUser:function(user){var options={type:"users/"+user+"/groups"};this.client().createCollection(options,function(err,groups){err?$rootScope.$broadcast("alert","error","error getting groups"):$rootScope.$broadcast("user-groups-received",groups)})},addUserToGroup:function(user,group){var options={type:"users/"+user+"/groups/"+group};this.client().createEntity(options,function(err){err?$rootScope.$broadcast("alert","error","error adding user to group"):$rootScope.$broadcast("user-added-to-group-received")})},addUserToRole:function(user,role){var options={method:"POST",endpoint:"roles/"+role+"/users/"+user};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error adding user to role"):$rootScope.$broadcast("role-update-received")})},addGroupToRole:function(group,role){var options={method:"POST",endpoint:"roles/"+role+"/groups/"+group};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error adding group to role"):$rootScope.$broadcast("role-update-received")})},followUser:function(user){var username=$rootScope.selectedUser.get("uuid"),options={method:"POST",endpoint:"users/"+username+"/following/users/"+user};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error following user"):$rootScope.$broadcast("follow-user-received")})},newPermission:function(permission,type,entity){var options={method:"POST",endpoint:type+"/"+entity+"/permissions",body:{permission:permission}};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error adding permission"):$rootScope.$broadcast("permission-update-received")})},newUserPermission:function(permission,username){this.newPermission(permission,"users",username)},newGroupPermission:function(permission,path){this.newPermission(permission,"groups",path)},newRolePermission:function(permission,name){this.newPermission(permission,"roles",name)},deletePermission:function(permission,type,entity){var options={method:"DELETE",endpoint:type+"/"+entity+"/permissions",qs:{permission:permission}};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error deleting permission"):$rootScope.$broadcast("permission-update-received")})},deleteUserPermission:function(permission,user){this.deletePermission(permission,"users",user)},deleteGroupPermission:function(permission,group){this.deletePermission(permission,"groups",group)},deleteRolePermission:function(permission,rolename){this.deletePermission(permission,"roles",rolename)},removeUserFromRole:function(user,role){var options={method:"DELETE",endpoint:"roles/"+role+"/users/"+user};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error removing user from role"):$rootScope.$broadcast("role-update-received")})},removeUserFromGroup:function(group,role){var options={method:"DELETE",endpoint:"roles/"+role+"/groups/"+group};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error removing role from the group"):$rootScope.$broadcast("role-update-received")})},createAndroidNotifier:function(name,APIkey){var options={method:"POST",endpoint:"notifiers",body:{apiKey:APIkey,name:name,provider:"google"}};this.client().request(options,function(err,data){err?(console.error(data),$rootScope.$broadcast("alert","error","error creating notifier ")):($rootScope.$broadcast("alert","success","New notifier created successfully."),$rootScope.$broadcast("notifier-update"))})},createAppleNotifier:function(file,name,environment,certificatePassword){var provider="apple",formData=new FormData;formData.append("p12Certificate",file),formData.append("name",name),formData.append("provider",provider),formData.append("environment",environment),formData.append("certificatePassword",certificatePassword||"");var options={method:"POST",endpoint:"notifiers",formData:formData};this.client().request(options,function(err,data){err?(console.error(data),$rootScope.$broadcast("alert","error",data.error_description||"error creating notifier")):($rootScope.$broadcast("alert","success","New notifier created successfully."),$rootScope.$broadcast("notifier-update"))})},deleteNotifier:function(name){var options={method:"DELETE",endpoint:"notifiers/"+name};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error deleting notifier"):$rootScope.$broadcast("notifier-update")})},initializeCurrentUser:function(callback){if(callback=callback||function(){},$rootScope.currentUser&&!$rootScope.currentUser.reset)return callback($rootScope.currentUser),$rootScope.$broadcast("current-user-initialized","");var options={method:"GET",endpoint:"management/users/"+this.client().get("email"),mQuery:!0};this.client().request(options,function(err,data){err?$rootScope.$broadcast("alert","error","Error getting user info"):($rootScope.currentUser=data.data,$rootScope.currentUser.profileImg=utility.get_gravatar($rootScope.currentUser.email),$rootScope.userEmail=$rootScope.currentUser.email,callback($rootScope.currentUser),$rootScope.$broadcast("current-user-initialized",$rootScope.currentUser))})},updateUser:function(user){var body=$rootScope.currentUser;
body.username=user.username,body.name=user.name,body.email=user.email;var options={method:"PUT",endpoint:"management/users/"+user.uuid+"/",mQuery:!0,body:body},self=this;this.client().request(options,function(err,data){return self.client().set("email",user.email),self.client().set("username",user.username),err?$rootScope.$broadcast("user-update-error",data):($rootScope.currentUser.reset=!0,void self.initializeCurrentUser(function(){$rootScope.$broadcast("user-update-success",$rootScope.currentUser)}))})},resetUserPassword:function(user){var pwdata={};pwdata.oldpassword=user.oldPassword,pwdata.newpassword=user.newPassword,pwdata.username=user.username;var options={method:"PUT",endpoint:"users/"+pwdata.uuid+"/",body:pwdata};this.client().request(options,function(err){return err?$rootScope.$broadcast("alert","error","Error resetting password"):($rootScope.currentUser.oldPassword="",$rootScope.currentUser.newPassword="",void $rootScope.$broadcast("user-reset-password-success",$rootScope.currentUser))})},getOrgCredentials:function(){var options={method:"GET",endpoint:"management/organizations/"+this.client().get("orgName")+"/credentials",mQuery:!0};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error getting credentials"):$rootScope.$broadcast("org-creds-updated",data.credentials)})},regenerateOrgCredentials:function(){var options={method:"POST",endpoint:"management/organizations/"+this.client().get("orgName")+"/credentials",mQuery:!0};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error regenerating credentials"):($rootScope.$broadcast("alert","success","Regeneration of credentials complete."),$rootScope.$broadcast("org-creds-updated",data.credentials))})},getAppCredentials:function(){var options={method:"GET",endpoint:"credentials"};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error getting credentials"):$rootScope.$broadcast("app-creds-updated",data.credentials)})},regenerateAppCredentials:function(){var options={method:"POST",endpoint:"credentials"};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error regenerating credentials"):($rootScope.$broadcast("alert","success","Regeneration of credentials complete."),$rootScope.$broadcast("app-creds-updated",data.credentials))})},signUpUser:function(orgName,userName,name,email,password){var formData={organization:orgName,username:userName,name:name,email:email,password:password},options={method:"POST",endpoint:"management/organizations",body:formData,mQuery:!0},client=this.client();client.request(options,function(err,data){err?$rootScope.$broadcast("register-error",data):$rootScope.$broadcast("register-success",data)})},resendActivationLink:function(id){var options={method:"GET",endpoint:"management/users/"+id+"/reactivate",mQuery:!0};this.client().request(options,function(err,data){err?$rootScope.$broadcast("resend-activate-error",data):$rootScope.$broadcast("resend-activate-success",data)})},getAppSettings:function(){$rootScope.$broadcast("app-settings-received",{})},getActivities:function(){this.client().request({method:"GET",endpoint:"activities",qs:{limit:200}},function(err,data){if(err)return $rootScope.$broadcast("app-activities-error",data);var entities=data.entities;entities.forEach(function(entity){entity.actor.picture?(entity.actor.picture=entity.actor.picture.replace(/^http:\/\/www.gravatar/i,"https://secure.gravatar"),entity.actor.picture=~entity.actor.picture.indexOf("http")?entity.actor.picture:"https://apigee.com/usergrid/img/user_profile.png"):entity.actor.picture=window.location.protocol+"//"+window.location.host+window.location.pathname+"img/user_profile.png"}),$rootScope.$broadcast("app-activities-received",data.entities)})},getEntityActivities:function(entity,isFeed){var route=isFeed?"feed":"activities",endpoint=entity.get("type")+"/"+entity.get("uuid")+"/"+route,options={method:"GET",endpoint:endpoint,qs:{limit:200}};this.client().request(options,function(err,data){err&&$rootScope.$broadcast(entity.get("type")+"-"+route+"-error",data),data.entities.forEach(function(entityInstance){entityInstance.createdDate=new Date(entityInstance.created).toUTCString()}),$rootScope.$broadcast(entity.get("type")+"-"+route+"-received",data.entities)})},addUserActivity:function(user,content){var options={actor:{displayName:user.get("username"),uuid:user.get("uuid"),username:user.get("username")},verb:"post",content:content};this.client().createUserActivity(user.get("username"),options,function(err,activity){err?$rootScope.$broadcast("user-activity-add-error",err):$rootScope.$broadcast("user-activity-add-success",activity)})},runShellQuery:function(method,path,payload){var path=path.replace(/^\//,""),options={method:method,endpoint:path};payload&&(options.body=payload),this.client().request(options,function(err,data){err?$rootScope.$broadcast("shell-error",data):$rootScope.$broadcast("shell-success",data)})},addOrganization:function(user,orgName){var options={method:"POST",endpoint:"management/users/"+user.uuid+"/organizations",body:{organization:orgName},mQuery:!0},client=this.client();client.request(options,function(err,data){err?$rootScope.$broadcast("user-add-org-error",data):$rootScope.$broadcast("user-add-org-success",$rootScope.organizations)})},leaveOrganization:function(user,org){var options={method:"DELETE",endpoint:"management/users/"+user.uuid+"/organizations/"+org.uuid,mQuery:!0};this.client().request(options,function(err,data){err?$rootScope.$broadcast("user-leave-org-error",data):(delete $rootScope.organizations[org.name],$rootScope.$broadcast("user-leave-org-success",$rootScope.organizations))})},httpGet:function(id,url){var deferred;return deferred=$q.defer(),$http.get(url||configuration.ITEMS_URL).success(function(data){var result;id?angular.forEach(data,function(obj){obj.id===id&&(result=obj)}):result=data,deferred.resolve(result)}).error(function(data,status,headers,config){$log.error(data,status,headers,config),reportError(data,config),deferred.reject(data)}),deferred.promise},jsonp:function(objectType,criteriaId,params,successCallback){params||(params={}),params.demoApp=$rootScope.demoData,params.access_token=getAccessToken(),params.callback="JSON_CALLBACK";var uri=$rootScope.urls().DATA_URL+"/"+$rootScope.currentOrg+"/"+$rootScope.currentApp+"/apm/"+objectType+"/"+criteriaId;return this.jsonpRaw(objectType,criteriaId,params,uri,successCallback)},jsonpSimple:function(objectType,appId,params){var uri=$rootScope.urls().DATA_URL+"/"+$rootScope.currentOrg+"/"+$rootScope.currentApp+"/apm/"+objectType+"/"+appId;return this.jsonpRaw(objectType,appId,params,uri)},calculateAverageRequestTimes:function(){if(!running){var self=this;running=!0,setTimeout(function(){running=!1;var length=requestTimes.length<10?requestTimes.length:10,sum=requestTimes.slice(0,length).reduce(function(a,b){return a+b}),avg=sum/length;self.averageRequestTimes=avg/1e3,self.averageRequestTimes>5&&$rootScope.$broadcast("request-times-slow",self.averageRequestTimes)},3e3)}},jsonpRaw:function(objectType,appId,params,uri,successCallback){"function"!=typeof successCallback&&(successCallback=null),uri=uri||$rootScope.urls().DATA_URL+"/"+$rootScope.currentOrg+"/"+$rootScope.currentApp+"/"+objectType,params||(params={});var start=(new Date).getTime(),self=this;params.access_token=getAccessToken(),params.callback="JSON_CALLBACK";var deferred=$q.defer(),diff=function(){currentRequests[uri]--,requestTimes.splice(0,0,(new Date).getTime()-start),self.calculateAverageRequestTimes()};successCallback&&$rootScope.$broadcast("ajax_loading",objectType);var reqCount=currentRequests[uri]||0;return self.averageRequestTimes>5&&reqCount>1?(setTimeout(function(){deferred.reject(new Error("query in progress"))},50),deferred):(currentRequests[uri]=(currentRequests[uri]||0)+1,$http.jsonp(uri,{params:params}).success(function(data,status,headers,config){diff(),successCallback&&(successCallback(data,status,headers,config),$rootScope.$broadcast("ajax_finished",objectType)),deferred.resolve(data)}).error(function(data,status,headers,config){diff(),$log.error("ERROR: Could not get jsonp data. "+uri),reportError(data,config),deferred.reject(data)}),deferred.promise)},resource:function(params,isArray){return $resource($rootScope.urls().DATA_URL+"/:orgname/:appname/:username/:endpoint",{},{get:{method:"JSONP",isArray:isArray,params:params},login:{method:"GET",url:$rootScope.urls().DATA_URL+"/management/token",isArray:!1,params:params},save:{url:$rootScope.urls().DATA_URL+"/"+params.orgname+"/"+params.appname,method:"PUT",isArray:!1,params:params}})},httpPost:function(url,callback,payload,headers){var accessToken=getAccessToken();payload?payload.access_token=accessToken:payload={access_token:accessToken},headers||(headers={Bearer:accessToken}),$http({method:"POST",url:url,data:payload,headers:headers}).success(function(data){callback(data)}).error(function(data,status,headers,config){reportError(data,config),callback(data)})}}}),AppServices.Directives.directive("ngFocus",["$parse",function($parse){return function(scope,element,attr){var fn=$parse(attr.ngFocus);element.bind("focus",function(event){scope.$apply(function(){fn(scope,{$event:event})})})}}]),AppServices.Directives.directive("ngBlur",["$parse",function($parse){return function(scope,element,attr){var fn=$parse(attr.ngBlur);element.bind("blur",function(event){scope.$apply(function(){fn(scope,{$event:event})})})}}]),AppServices.Services.factory("utility",function(){return{keys:function(o){var a=[];for(var propertyName in o)a.push(propertyName);return a},get_gravatar:function(email,size){try{var size=size||50;return email.length?"https://secure.gravatar.com/avatar/"+MD5(email)+"?s="+size:"https://apigee.com/usergrid/img/user_profile.png"}catch(e){return"https://apigee.com/usergrid/img/user_profile.png"}},get_qs_params:function(){var queryParams={};if(window.location.search)for(var params=window.location.search.slice(1).split("&"),i=0;i<params.length;i++){var tmp=params[i].split("=");queryParams[tmp[0]]=unescape(tmp[1])}return queryParams},safeApply:function(fn){var phase=this.$root.$$phase;"$apply"==phase||"$digest"==phase?fn&&"function"==typeof fn&&fn():this.$apply(fn)}}}),AppServices.Directives.directive("ugValidate",["$rootScope",function(){return{scope:!0,restrict:"A",require:"ng-model",replace:!0,link:function(scope,element,attrs,ctrl){var validate=function(){var id=element.attr("id"),validator=id+"-validator",title=element.attr("title");if(title=title&&title.length?title:"Please enter data",$("#"+validator).remove(),ctrl.$valid)element.removeClass("has-error"),$("#"+validator).remove();else{var validatorElem='<div id="'+validator+'"><span  class="validator-error-message">'+title+"</span></div>";$("#"+id).after(validatorElem),element.addClass("has-error")}},firing=!1;element.bind("blur",function(){validate(scope,element,attrs,ctrl)}).bind("input",function(){firing||(firing=!0,setTimeout(function(){validate(scope,element,attrs,ctrl),firing=!1},500))})}}}]),AppServices.Controllers.controller("GroupsActivitiesCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.activitiesSelected="active",$rootScope.selectedGroup?($rootScope.selectedGroup.activities=[],void $rootScope.selectedGroup.getActivities(function(err){err||$rootScope.$$phase||$rootScope.$apply()})):void $location.path("/groups")}]),AppServices.Controllers.controller("GroupsCtrl",["ug","$scope","$rootScope","$location","$route",function(ug,$scope,$rootScope,$location,$route){$scope.groupsCollection={},$rootScope.selectedGroup={},$scope.previous_display="none",$scope.next_display="none",$scope.hasGroups=!1,$scope.newGroup={path:"",title:""},ug.getGroups(),$scope.currentGroupsPage={},$scope.selectGroupPage=function(route){$scope.currentGroupsPage.template=$route.routes[route].templateUrl,$scope.currentGroupsPage.route=route},$scope.newGroupDialog=function(modalId){$scope.newGroup.path&&$scope.newGroup.title?(ug.createGroup($scope.removeFirstSlash($scope.newGroup.path),$scope.newGroup.title),$scope.hideModal(modalId),$scope.newGroup={path:"",title:""}):$rootScope.$broadcast("alert","error","Missing required information.")},$scope.deleteGroupsDialog=function(modalId){$scope.deleteEntities($scope.groupsCollection,"group-deleted","error deleting group"),$scope.hideModal(modalId),$scope.newGroup={path:"",title:""}},$scope.$on("group-deleted",function(){$rootScope.$broadcast("alert","success","Group deleted successfully.")}),$scope.$on("group-deleted-error",function(){ug.getGroups()}),$scope.$on("groups-create-success",function(){$rootScope.$broadcast("alert","success","Group created successfully.")}),$scope.$on("groups-create-error",function(){$rootScope.$broadcast("alert","error","Error creating group. Make sure you don't have spaces in the path.")}),$scope.$on("groups-received",function(event,groups){$scope.groupBoxesSelected=!1,$scope.groupsCollection=groups,$scope.newGroup.path="",$scope.newGroup.title="",!(groups._list.length>0)||$rootScope.selectedGroup._data&&groups._list.some(function(group){return $rootScope.selectedGroup._data.uuid===group._data.uuid})||$scope.selectGroup(groups._list[0]._data.uuid),$scope.hasGroups=groups._list.length>0,$scope.received=!0,$scope.checkNextPrev(),$scope.applyScope()}),$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.groupsCollection.hasPreviousPage()&&($scope.previous_display="block"),$scope.groupsCollection.hasNextPage()&&($scope.next_display="block")},$scope.selectGroup=function(uuid){$rootScope.selectedGroup=$scope.groupsCollection.getEntityByUUID(uuid),$scope.currentGroupsPage.template="groups/groups-details.html",$scope.currentGroupsPage.route="/groups/details",$rootScope.$broadcast("group-selection-changed",$rootScope.selectedGroup)},$scope.getPrevious=function(){$scope.groupsCollection.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of groups"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.getNext=function(){$scope.groupsCollection.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of groups"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.$on("group-deleted",function(){$route.reload(),$scope.master=""})}]),AppServices.Controllers.controller("GroupsDetailsCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){var selectedGroup=$rootScope.selectedGroup.clone();return $scope.detailsSelected="active",$scope.json=selectedGroup._json||selectedGroup._data.stringifyJSON(),$scope.group=selectedGroup._data,$scope.group.path=0!=$scope.group.path.indexOf("/")?"/"+$scope.group.path:$scope.group.path,$scope.group.title=$scope.group.title,$rootScope.selectedGroup?($scope.$on("group-selection-changed",function(evt,selectedGroup){$scope.group.path=0!=selectedGroup._data.path.indexOf("/")?"/"+selectedGroup._data.path:selectedGroup._data.path,$scope.group.title=selectedGroup._data.title,$scope.detailsSelected="active",$scope.json=selectedGroup._json||selectedGroup._data.stringifyJSON()}),void($rootScope.saveSelectedGroup=function(){$rootScope.selectedGroup._data.title=$scope.group.title,$rootScope.selectedGroup._data.path=$scope.removeFirstSlash($scope.group.path),$rootScope.selectedGroup.save(function(err){err?$rootScope.$broadcast("alert","error","error saving group"):$rootScope.$broadcast("alert","success","group saved")})})):void $location.path("/groups")}]),AppServices.Controllers.controller("GroupsMembersCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.membersSelected="active",$scope.previous_display="none",$scope.next_display="none",$scope.user="",$scope.master="",$scope.hasMembers=!1,ug.getUsersTypeAhead(),$scope.usersTypeaheadValues=[],$scope.$on("users-typeahead-received",function(event,users){$scope.usersTypeaheadValues=users,$scope.applyScope()}),$scope.addGroupToUserDialog=function(modalId){if($scope.user){var path=$rootScope.selectedGroup.get("path");ug.addUserToGroup($scope.user.uuid,path),$scope.user="",$scope.hideModal(modalId)}else $rootScope.$broadcast("alert","error","Please select a user.")},$scope.removeUsersFromGroupDialog=function(modalId){$scope.deleteEntities($scope.groupsCollection.users,"group-update-received","Error removing user from group"),$scope.hideModal(modalId)},$scope.get=function(){if($rootScope.selectedGroup.get){var options={type:"groups/"+$rootScope.selectedGroup.get("path")+"/users"};$scope.groupsCollection.addCollection("users",options,function(err){$scope.groupMembersSelected=!1,err?$rootScope.$broadcast("alert","error","error getting users for group"):($scope.hasMembers=$scope.groupsCollection.users._list.length>0,$scope.checkNextPrev(),$scope.applyScope())})}},$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.groupsCollection.users.hasPreviousPage()&&($scope.previous_display="block"),$scope.groupsCollection.users.hasNextPage()&&($scope.next_display="block")},$rootScope.selectedGroup?($scope.get(),$scope.getPrevious=function(){$scope.groupsCollection.users.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of users"),$scope.checkNextPrev(),$rootScope.$$phase||$rootScope.$apply()})},$scope.getNext=function(){$scope.groupsCollection.users.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of users"),$scope.checkNextPrev(),$rootScope.$$phase||$rootScope.$apply()})},$scope.$on("group-update-received",function(){$scope.get()}),void $scope.$on("user-added-to-group-received",function(){$scope.get()})):void $location.path("/groups")}]),AppServices.Controllers.controller("GroupsRolesCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.rolesSelected="active",$scope.roles_previous_display="none",$scope.roles_next_display="none",$scope.name="",$scope.master="",$scope.hasRoles=!1,$scope.hasPermissions=!1,$scope.permissions={},$scope.addGroupToRoleDialog=function(modalId){if($scope.name){var path=$rootScope.selectedGroup.get("path");ug.addGroupToRole(path,$scope.name),$scope.hideModal(modalId),$scope.name=""}else $rootScope.$broadcast("alert","error","You must specify a role name.")},$scope.leaveRoleDialog=function(modalId){for(var path=$rootScope.selectedGroup.get("path"),roles=$scope.groupsCollection.roles._list,i=0;i<roles.length;i++)roles[i].checked&&ug.removeUserFromGroup(path,roles[i]._data.name);$scope.hideModal(modalId)},$scope.addGroupPermissionDialog=function(modalId){if($scope.permissions.path){var permission=$scope.createPermission(null,null,$scope.removeFirstSlash($scope.permissions.path),$scope.permissions),path=$rootScope.selectedGroup.get("path");ug.newGroupPermission(permission,path),$scope.hideModal(modalId),$scope.permissions&&($scope.permissions={})}else $rootScope.$broadcast("alert","error","You must specify a name for the permission.")},$scope.deleteGroupPermissionDialog=function(modalId){for(var path=$rootScope.selectedGroup.get("path"),permissions=$rootScope.selectedGroup.permissions,i=0;i<permissions.length;i++)permissions[i].checked&&ug.deleteGroupPermission(permissions[i].perm,path);$scope.hideModal(modalId)},$scope.resetNextPrev=function(){$scope.roles_previous_display="none",$scope.roles_next_display="none",$scope.permissions_previous_display="none",$scope.permissions_next_display="none"},$scope.resetNextPrev(),$scope.checkNextPrevRoles=function(){$scope.resetNextPrev(),$scope.groupsCollection.roles.hasPreviousPage()&&($scope.roles_previous_display="block"),$scope.groupsCollection.roles.hasNextPage()&&($scope.roles_next_display="block")},$scope.checkNextPrevPermissions=function(){$scope.groupsCollection.permissions.hasPreviousPage()&&($scope.permissions_previous_display="block"),$scope.groupsCollection.permissions.hasNextPage()&&($scope.permissions_next_display="block")},$scope.getRoles=function(){var path=$rootScope.selectedGroup.get("path"),options={type:"groups/"+path+"/roles"};$scope.groupsCollection.addCollection("roles",options,function(err){$scope.groupRoleSelected=!1,err?$rootScope.$broadcast("alert","error","error getting roles for group"):($scope.hasRoles=$scope.groupsCollection.roles._list.length>0,$scope.checkNextPrevRoles(),$scope.applyScope())})},$scope.getPermissions=function(){$rootScope.selectedGroup.permissions=[],$rootScope.selectedGroup.getPermissions(function(err){$scope.groupPermissionsSelected=!1,$scope.hasPermissions=$scope.selectedGroup.permissions.length,err||$scope.applyScope()})},$scope.getPreviousRoles=function(){$scope.groupsCollection.roles.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of roles"),$scope.checkNextPrevRoles(),$scope.applyScope()})},$scope.getNextRoles=function(){$scope.groupsCollection.roles.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of roles"),$scope.checkNextPrevRoles(),$scope.applyScope()})},$scope.getPreviousPermissions=function(){$scope.groupsCollection.permissions.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of permissions"),$scope.checkNextPrevPermissions(),$scope.applyScope()})},$scope.getNextPermissions=function(){$scope.groupsCollection.permissions.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of permissions"),$scope.checkNextPrevPermissions(),$scope.applyScope()})},$scope.$on("role-update-received",function(){$scope.getRoles()}),$scope.$on("permission-update-received",function(){$scope.getPermissions()}),$scope.$on("groups-received",function(evt,data){$scope.groupsCollection=data,$scope.getRoles(),$scope.getPermissions()}),$rootScope.selectedGroup?(ug.getRolesTypeAhead(),void ug.getGroups()):void $location.path("/groups")}]),AppServices.Controllers.controller("ForgotPasswordCtrl",["ug","$scope","$rootScope","$location","$sce","utility",function(ug,$scope,$rootScope,$location,$sce){$rootScope.activeUI&&$location.path("/"),$scope.forgotPWiframeURL=$sce.trustAsResourceUrl($scope.apiUrl+"/management/users/resetpw")}]),AppServices.Controllers.controller("LoginCtrl",["ug","$scope","$rootScope","$routeParams","$location","utility",function(ug,$scope,$rootScope,$routeParams,$location){$scope.loading=!1,$scope.login={},$scope.activation={},$scope.requiresDeveloperKey=$scope.options.client.requiresDeveloperKey||!1,!$scope.requiresDeveloperKey&&$scope.options.client.apiKey&&ug.setClientProperty("developerkey",$scope.options.client.apiKey),$rootScope.gotoForgotPasswordPage=function(){$location.path("/forgot-password")},$rootScope.gotoSignUp=function(){$location.path("/register")},$scope.login=function(){var username=$scope.login.username,password=$scope.login.password;$scope.loginMessage="",$scope.loading=!0,$scope.requiresDeveloperKey&&ug.setClientProperty("developerkey",$scope.login.developerkey),ug.orgLogin(username,password)},$scope.$on("loginFailed",function(){$scope.loading=!1,ug.setClientProperty("developerkey",null),$scope.loginMessage="Error: the username / password combination was not valid",$scope.applyScope()}),$scope.logout=function(){ug.logout(),ug.setClientProperty("developerkey",null),$scope.use_sso?window.location=$rootScope.urls().LOGOUT_URL+"?redirect=no&callback="+encodeURIComponent($location.absUrl().split("?")[0]):($location.path("/login"),$scope.applyScope())},$rootScope.$on("userNotAuthenticated",function(){"/forgot-password"!==$location.path()&&($location.path("/login"),$scope.logout()),$scope.applyScope()}),$scope.$on("loginSuccesful",function(){$scope.loading=!1,$scope.login={},$location.path("/login"===$rootScope.currentPath||"/login/loading"===$rootScope.currentPath||"undefined"==typeof $rootScope.currentPath?"/org-overview":$rootScope.currentPath),$scope.applyScope()}),$scope.resendActivationLink=function(modalId){var id=$scope.activation.id;ug.resendActivationLink(id),$scope.activation={},$scope.hideModal(modalId)},$scope.$on("resend-activate-success",function(){$scope.activationId="",$scope.$apply(),$rootScope.$broadcast("alert","success","Activation link sent successfully.")}),$scope.$on("resend-activate-error",function(){$rootScope.$broadcast("alert","error","Activation link failed to send.")})}]),AppServices.Controllers.controller("LogoutCtrl",["ug","$scope","$rootScope","$routeParams","$location","utility",function(ug,$scope,$rootScope,$routeParams,$location){ug.logout(),$scope.use_sso?window.location=$rootScope.urls().LOGOUT_URL+"?callback="+encodeURIComponent($location.absUrl().split("?")[0]):($location.path("/login"),$scope.applyScope())}]),AppServices.Controllers.controller("RegisterCtrl",["ug","$scope","$rootScope","$routeParams","$location","utility",function(ug,$scope,$rootScope,$routeParams,$location){$rootScope.activeUI&&$location.path("/");var init=function(){$scope.registeredUser={}};init(),$scope.cancel=function(){$location.path("/")},$scope.register=function(){var user=$scope.registeredUser.clone();user.password===user.confirmPassword?ug.signUpUser(user.orgName,user.userName,user.name,user.email,user.password):$rootScope.$broadcast("alert","error","Passwords do not match."+name)},$scope.$on("register-error",function(event,data){$scope.signUpSuccess=!1,$rootScope.$broadcast("alert","error","Error registering: "+(data&&data.error_description?data.error_description:name))}),$scope.$on("register-success",function(){$scope.registeredUser={},$scope.signUpSuccess=!0,init(),$scope.$apply()})}]),AppServices.Directives.directive("menu",["$location","$rootScope","$log",function($location,$rootScope,$log){return{link:function(scope,lElement,attrs){function setActiveElement(ele,locationPath,$rootScope,isParentClick){if(ele){ele.removeClass("active");var menuItem,parentMenuItem,newActiveElement=ele.parent().find('a[href*="#!'+locationPath+'"]');if(0===newActiveElement.length)parentMenuItem=ele;else{menuItem=newActiveElement.parent(),menuItem.hasClass("option")?parentMenuItem=menuItem[0]:1===menuItem.size()?(parentMenuItem=newActiveElement.parent().parent().parent(),parentMenuItem.addClass("active")):(parentMenuItem=menuItem[0],menuItem=menuItem[1]);try{var menuItemCompare=parentMenuItem[0]||parentMenuItem;ele[0]!==menuItemCompare&&isParentClick&&ele.find("ul")[0]&&(ele.find("ul")[0].style.height=0);var subMenuSizer=angular.element(parentMenuItem).find(".nav-list")[0];if(subMenuSizer){var heightChecker,clientHeight=subMenuSizer.getAttribute("data-height"),heightCounter=1;clientHeight||heightChecker?(menuItem.addClass("active"),subMenuSizer.style.height=clientHeight+"px"):heightChecker=setInterval(function(){var tempHeight=subMenuSizer.getAttribute("data-height")||subMenuSizer.clientHeight;heightCounter=subMenuSizer.clientHeight,0===heightCounter&&(heightCounter=1),"string"==typeof tempHeight&&(tempHeight=parseInt(tempHeight,10)),tempHeight>0&&heightCounter===tempHeight&&(subMenuSizer.setAttribute("data-height",tempHeight),menuItem.addClass("active"),subMenuSizer.style.height=tempHeight+"px",clearInterval(heightChecker)),heightCounter=tempHeight},20),$rootScope.menuExecute=!0}else menuItem.addClass("active")}catch(e){$log.error("Problem calculating size of menu",e)}}return{menuitem:menuItem,parentMenuItem:parentMenuItem}}}function setupMenuState(){if(menuContext=attrs.menu,parentMenuItems=lElement.find("li.option"),0!==lElement.find("li.option.active").length&&($rootScope[menuContext+"Parent"]=lElement.find("li.option.active")),activeParentElement=$rootScope[menuContext+"Parent"]||null,activeParentElement&&(activeParentElement=angular.element(activeParentElement)),menuItems=lElement.find("li.option li"),locationPath=$location.path(),activeParentElement&&(activeMenuElement=angular.element(activeParentElement),activeMenuElement=activeMenuElement.find("li.active"),activeMenuElement.removeClass("active"),activeParentElement.find("a")[0])){subMenuContext=activeParentElement.find("a")[0].href.split("#!")[1];var tempMenuContext=subMenuContext.split("/");subMenuContext="/"+tempMenuContext[1],tempMenuContext.length>2&&(subMenuContext+="/"+tempMenuContext[2])}var activeElements;""!==locationPath&&-1===locationPath.indexOf(subMenuContext)?(activeElements=setActiveElement(activeParentElement,locationPath,scope),activeElements&&($rootScope[menuContext+"Parent"]=activeElements.parentMenuItem,$rootScope[menuContext+"Menu"]=activeElements.menuitem)):setActiveElement(activeParentElement,subMenuContext,scope)}var menuContext,parentMenuItems,activeParentElement,menuItems,activeMenuElement,locationPath,subMenuContext,bound=!1;setTimeout(setupMenuState,500),scope.$on("$routeChangeSuccess",function(){setTimeout(function(){setupMenuState(),bound||(bound=!0,parentMenuItems.bind("click",function(cevent){var previousParentSelection=angular.element($rootScope[menuContext+"Parent"]),targetPath=angular.element(cevent.currentTarget).find("> a")[0].href.split("#!")[1];previousParentSelection.find(".nav > li").removeClass("active");var activeElements=setActiveElement(previousParentSelection,targetPath,scope,!0);$rootScope[menuContext+"Parent"]=activeElements.parentMenuItem,$rootScope[menuContext+"Menu"]=activeElements.menuitem,scope.$broadcast("menu-selection")}),menuItems.bind("click",function(cevent){var previousMenuSelection=$rootScope[menuContext+"Menu"],targetElement=cevent.currentTarget;previousMenuSelection!==targetElement&&(previousMenuSelection?angular.element(previousMenuSelection).removeClass("active"):activeMenuElement.removeClass("active"),scope.$apply(function(){angular.element($rootScope[menuContext]).addClass("active")}),$rootScope[menuContext+"Menu"]=targetElement,angular.element($rootScope[menuContext+"Parent"]).find("a")[0].setAttribute("href",angular.element(cevent.currentTarget).find("a")[0].href))}))},500)})}}}]),AppServices.Directives.directive("timeFilter",["$location","$routeParams","$rootScope",function($location,$routeParams,$rootScope){return{restrict:"A",transclude:!0,template:'<li ng-repeat="time in timeFilters" class="filterItem"><a ng-click="changeTimeFilter(time)">{{time.label}}</a></li>',link:function(scope,lElement,attrs){var menuContext=attrs.filter;scope.changeTimeFilter=function(newTime){$rootScope.selectedtimefilter=newTime,$routeParams.timeFilter=newTime.value},lElement.bind("click",function(cevent){menuBindClick(scope,lElement,cevent,menuContext)})}}}]),AppServices.Directives.directive("chartFilter",["$location","$routeParams","$rootScope",function($location,$routeParams,$rootScope){return{restrict:"ACE",scope:"=",template:'<li ng-repeat="chart in chartCriteriaOptions" class="filterItem"><a ng-click="changeChart(chart)">{{chart.chartName}}</a></li>',link:function(scope,lElement,attrs){var menuContext=attrs.filter;scope.changeChart=function(newChart){$rootScope.selectedChartCriteria=newChart,$routeParams.currentCompare="NOW",$routeParams[newChart.type+"ChartFilter"]=newChart.chartCriteriaId},lElement.bind("click",function(cevent){menuBindClick(scope,lElement,cevent,menuContext)})}}}]),AppServices.Directives.directive("orgMenu",["$location","$routeParams","$rootScope","ug",function($location,$routeParams,$rootScope,ug){return{restrict:"ACE",scope:"=",replace:!0,templateUrl:"menus/orgMenu.html",link:function(scope){scope.orgChange=function(orgName){var oldOrg=ug.get("orgName");ug.set("orgName",orgName),$rootScope.currentOrg=orgName,$location.path("/org-overview"),$rootScope.$broadcast("org-changed",oldOrg,orgName)},scope.$on("change-org",function(args,org){scope.orgChange(org)})}}}]),AppServices.Directives.directive("appMenu",["$location","$routeParams","$rootScope","ug",function($location,$routeParams,$rootScope,ug){return{restrict:"ACE",scope:"=",replace:!0,templateUrl:"menus/appMenu.html",link:function(scope){scope.myApp={};
var bindApplications=function(applications){scope.applications=applications;var key,size=0;for(key in applications)applications.hasOwnProperty(key)&&size++;scope.hasApplications=Object.keys(applications).length>0,scope.myApp.currentApp||($rootScope.currentApp=scope.myApp.currentApp=ug.get("appName"));var hasApplications=Object.keys(applications).length>0;applications[scope.myApp.currentApp]||($rootScope.currentApp=scope.myApp.currentApp=hasApplications?applications[Object.keys(applications)[0]].name:""),setTimeout(function(){scope.hasApplications?scope.hideModal("newApplication"):scope.showModal("newApplication")},1e3)};scope.appChange=function(newApp){var oldApp=scope.myApp.currentApp;ug.set("appName",newApp),$rootScope.currentApp=scope.myApp.currentApp=newApp,$rootScope.$broadcast("app-changed",oldApp,newApp)},scope.$on("app-initialized",function(){bindApplications(scope.applications),scope.applyScope()}),scope.$on("applications-received",function(event,applications){bindApplications(applications),scope.applyScope()}),scope.$on("applications-created",function(evt,applications,name){$rootScope.$broadcast("alert","info",'New application "'+scope.newApp.name+'" created!'),scope.appChange(name),$location.path("/getting-started/setup"),scope.newApp.name=""}),scope.newApplicationDialog=function(modalId){var createNewApp=function(){var found=!1;if(scope.applications)for(var app in scope.applications)if(app===scope.newApp.name.toLowerCase()){found=!0;break}return scope.newApp.name&&!found?ug.createApplication(scope.newApp.name):$rootScope.$broadcast("alert","error",found?"Application already exists.":"You must specify a name."),found};scope.hasCreateApplicationError=createNewApp(),scope.hasCreateApplicationError||scope.applyScope(),scope.hideModal(modalId)},scope.applications&&bindApplications(scope.applications)}}}]),AppServices.Controllers.controller("OrgOverviewCtrl",["ug","help","$scope","$rootScope","$routeParams","$location",function(ug,help,$scope,$rootScope){var init=function(oldOrg){var orgName=$scope.currentOrg,orgUUID="";return orgName&&$scope.organizations[orgName]?(orgUUID=$scope.organizations[orgName].uuid,$scope.currentOrganization={name:orgName,uuid:orgUUID},$scope.applications=[{name:"...",uuid:"..."}],$scope.orgAdministrators=[],$scope.activities=[],$scope.orgAPICredentials={client_id:"...",client_secret:"..."},$scope.admin={},$scope.newApp={},ug.getApplications(),ug.getOrgCredentials(),ug.getAdministrators(),void ug.getFeed()):(console.error("Your current user is not authenticated for this organization."),void setTimeout(function(){$rootScope.$broadcast("change-org",oldOrg||$scope.organizations[Object.keys($scope.organizations)[0]].name)},1e3))};$scope.$on("org-changed",function(args,oldOrg){init(oldOrg)}),$scope.$on("app-initialized",function(){init()}),$scope.regenerateCredentialsDialog=function(modalId){$scope.orgAPICredentials={client_id:"regenerating...",client_secret:"regenerating..."},ug.regenerateOrgCredentials(),$scope.hideModal(modalId)},$scope.newAdministratorDialog=function(modalId){$scope.admin.email?(ug.createAdministrator($scope.admin.email),$scope.hideModal(modalId),$rootScope.$broadcast("alert","success","Administrator created successfully.")):$rootScope.$broadcast("alert","error","You must specify an email address.")},$scope.$on("applications-received",function(event,applications){$scope.applications=applications,$scope.applyScope()}),$scope.$on("administrators-received",function(event,administrators){$scope.orgAdministrators=administrators,$scope.applyScope()}),$scope.$on("org-creds-updated",function(event,credentials){$scope.orgAPICredentials=credentials,$scope.applyScope()}),$scope.$on("feed-received",function(event,feed){$scope.activities=feed,$scope.applyScope()}),$scope.activeUI&&init()}]),AppServices.Controllers.controller("AccountCtrl",["$scope","$rootScope","ug","utility","$route",function($scope,$rootScope,ug,utility,$route){$scope.currentAccountPage={};var route=$scope.use_sso?"/profile/organizations":"/profile/profile";$scope.currentAccountPage.template=$route.routes[route].templateUrl,$scope.currentAccountPage.route=route,$scope.applyScope(),$scope.selectAccountPage=function(route){$scope.currentAccountPage.template=$route.routes[route].templateUrl,$scope.currentAccountPage.route=route}}]),AppServices.Controllers.controller("OrgCtrl",["$scope","$rootScope","ug","utility",function($scope,$rootScope,ug){$scope.org={},$scope.currentOrgPage={};var createOrgsArray=function(){var orgs=[];for(var org in $scope.organizations)orgs.push($scope.organizations[org]);$scope.orgs=orgs,$scope.selectOrganization(orgs[0])};$scope.selectOrganization=function(org){org.usersArray=[];for(var user in org.users)org.usersArray.push(org.users[user]);org.applicationsArray=[];for(var app in org.applications)org.applicationsArray.push({name:app.replace(org.name+"/",""),uuid:org.applications[app]});return $scope.selectedOrg=org,$scope.applyScope(),!1},$scope.addOrganization=function(modalId){$scope.hideModal(modalId),ug.addOrganization($rootScope.currentUser,$scope.org.name)},$scope.$on("user-add-org-success",function(){$scope.org={},$scope.applyScope(),ug.reAuthenticate($rootScope.userEmail,"org-reauthenticate"),$rootScope.$broadcast("alert","success","successfully added the new organization.")}),$scope.$on("user-add-org-error",function(){$rootScope.$broadcast("alert","error","An error occurred attempting to add the organization.")}),$scope.$on("org-reauthenticate-success",function(){createOrgsArray(),$scope.applyScope()}),$scope.doesOrgHaveUsers=function(org){var test=org.usersArray.length>1;return test},$scope.leaveOrganization=function(org){ug.leaveOrganization($rootScope.currentUser,org)},$scope.$on("user-leave-org-success",function(){ug.reAuthenticate($rootScope.userEmail,"org-reauthenticate"),$rootScope.$broadcast("alert","success","User has left the selected organization(s).")}),$scope.$on("user-leave-org-error",function(){$rootScope.$broadcast("alert","error","An error occurred attempting to leave the selected organization(s).")}),createOrgsArray()}]),AppServices.Controllers.controller("ProfileCtrl",["$scope","$rootScope","ug","utility",function($scope,$rootScope,ug){$scope.loading=!1,$scope.saveUserInfo=function(){$scope.loading=!0,ug.updateUser($scope.user)},$scope.$on("user-update-error",function(){$scope.loading=!1,$rootScope.$broadcast("alert","error","Error updating user info")}),$scope.$on("user-update-success",function(){$scope.loading=!1,$rootScope.$broadcast("alert","success","Profile information updated successfully!"),$scope.user.oldPassword&&"undefined"!=$scope.user.newPassword&&ug.resetUserPassword($scope.user)}),$scope.$on("user-reset-password-success",function(){$rootScope.$broadcast("alert","success","Password updated successfully!"),$scope.user=$rootScope.currentUser.clone()}),$scope.$on("app-initialized",function(){$scope.user=$rootScope.currentUser.clone()}),$rootScope.activeUI&&($scope.user=$rootScope.currentUser.clone(),$scope.applyScope())}]),AppServices.Controllers.controller("RolesCtrl",["ug","$scope","$rootScope","$location","$route",function(ug,$scope,$rootScope,$location,$route){$scope.rolesCollection={},$rootScope.selectedRole={},$scope.previous_display="none",$scope.next_display="none",$scope.roles_check_all="",$scope.rolename="",$scope.hasRoles=!1,$scope.newrole={},$scope.currentRolesPage={},$scope.selectRolePage=function(route){$scope.currentRolesPage.template=$route.routes[route].templateUrl,$scope.currentRolesPage.route=route},ug.getRoles(),$scope.newRoleDialog=function(modalId){$scope.newRole.name?(ug.createRole($scope.newRole.name,$scope.newRole.title),$rootScope.$broadcast("alert","success","Role created successfully."),$scope.hideModal(modalId),$scope.newRole={}):$rootScope.$broadcast("alert","error","You must specify a role name.")},$scope.deleteRoleDialog=function(modalId){$scope.deleteEntities($scope.rolesCollection,"role-deleted","error deleting role"),$scope.hideModal(modalId)},$scope.$on("role-deleted",function(){$rootScope.$broadcast("alert","success","Role deleted successfully."),$scope.master="",$scope.newRole={}}),$scope.$on("role-deleted-error",function(){ug.getRoles()}),$scope.$on("roles-received",function(event,roles){$scope.rolesSelected=!1,$scope.rolesCollection=roles,$scope.newRole={},roles._list.length>0&&($scope.hasRoles=!0,$scope.selectRole(roles._list[0]._data.uuid)),$scope.checkNextPrev(),$scope.applyScope()}),$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.rolesCollection.hasPreviousPage()&&($scope.previous_display="block"),$scope.rolesCollection.hasNextPage()&&($scope.next_display="block")},$scope.selectRole=function(uuid){$rootScope.selectedRole=$scope.rolesCollection.getEntityByUUID(uuid),$scope.currentRolesPage.template="roles/roles-settings.html",$scope.currentRolesPage.route="/roles/settings",$rootScope.$broadcast("role-selection-changed",$rootScope.selectedRole)},$scope.getPrevious=function(){$scope.rolesCollection.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of roles"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.getNext=function(){$scope.rolesCollection.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of roles"),$scope.checkNextPrev(),$scope.applyScope()})}}]),AppServices.Controllers.controller("RolesGroupsCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.groupsSelected="active",$scope.previous_display="none",$scope.next_display="none",$scope.path="",$scope.hasGroups=!1,ug.getGroupsTypeAhead(),$scope.groupsTypeaheadValues=[],$scope.$on("groups-typeahead-received",function(event,groups){$scope.groupsTypeaheadValues=groups,$scope.applyScope()}),$scope.addRoleToGroupDialog=function(modalId){if($scope.path){var name=$rootScope.selectedRole._data.uuid;ug.addGroupToRole($scope.path,name),$scope.hideModal(modalId),$scope.path="",$scope.title=""}else $rootScope.$broadcast("alert","error","You must specify a group.")},$scope.setRoleModal=function(group){$scope.path=group.path,$scope.title=group.title},$scope.removeGroupFromRoleDialog=function(modalId){for(var roleName=$rootScope.selectedRole._data.uuid,groups=$scope.rolesCollection.groups._list,i=0;i<groups.length;i++)groups[i].checked&&ug.removeUserFromGroup(groups[i]._data.path,roleName);$scope.hideModal(modalId)},$scope.get=function(){var options={type:"roles/"+$rootScope.selectedRole._data.name+"/groups",qs:{ql:"order by title"}};$scope.rolesCollection.addCollection("groups",options,function(err){$scope.roleGroupsSelected=!1,err?$rootScope.$broadcast("alert","error","error getting groups for role"):($scope.hasGroups=$scope.rolesCollection.groups._list.length,$scope.checkNextPrev(),$scope.applyScope())})},$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.rolesCollection.groups.hasPreviousPage()&&($scope.previous_display="block"),$scope.rolesCollection.groups.hasNextPage()&&($scope.next_display="block")},$rootScope.selectedRole?($scope.get(),$scope.getPrevious=function(){$scope.rolesCollection.groups.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of groups"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.getNext=function(){$scope.rolesCollection.groups.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of groups"),$scope.checkNextPrev(),$scope.applyScope()})},void $scope.$on("role-update-received",function(){$scope.get()})):void $location.path("/roles")}]),AppServices.Controllers.controller("RolesSettingsCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){$scope.settingsSelected="active",$scope.hasSettings=!1;var init=function(){return $rootScope.selectedRole?($scope.permissions={},$scope.permissions.path="",$scope.permissions&&($scope.permissions.getPerm=!1,$scope.permissions.postPerm=!1,$scope.permissions.putPerm=!1,$scope.permissions.deletePerm=!1),$scope.role=$rootScope.selectedRole.clone(),$scope.getPermissions(),$scope.applyScope(),void 0):void $location.path("/roles")};$scope.$on("role-selection-changed",function(){init()}),$scope.$on("permission-update-received",function(){$scope.getPermissions()}),$scope.$on("role-selection-changed",function(){$scope.getPermissions()}),$scope.addRolePermissionDialog=function(modalId){if($scope.permissions.path){var permission=$scope.createPermission(null,null,$scope.permissions.path,$scope.permissions),name=$scope.role._data.name;ug.newRolePermission(permission,name),$scope.hideModal(modalId),init()}else $rootScope.$broadcast("alert","error","You must specify a name for the permission.")},$scope.deleteRolePermissionDialog=function(modalId){for(var name=$scope.role._data.name,permissions=$scope.role.permissions,i=0;i<permissions.length;i++)permissions[i].checked&&ug.deleteRolePermission(permissions[i].perm,name);$scope.hideModal(modalId)},$scope.getPermissions=function(){$rootScope.selectedRole.getPermissions(function(err,data){$scope.role.permissions=$rootScope.selectedRole.permissions.clone(),$scope.permissionsSelected=!1,err?$rootScope.$broadcast("alert","error","error getting permissions"):($scope.hasSettings=data.data.length,$scope.applyScope())})},$scope.updateInactivity=function(){$rootScope.selectedRole._data.inactivity=$scope.role._data.inactivity,$rootScope.selectedRole.save(function(err){err?$rootScope.$broadcast("alert","error","error saving inactivity value"):($rootScope.$broadcast("alert","success","inactivity value was updated"),init())})},init()}]),AppServices.Controllers.controller("RolesUsersCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.usersSelected="active",$scope.previous_display="none",$scope.next_display="none",$scope.user={},$scope.master="",$scope.hasUsers=!1,ug.getUsersTypeAhead(),$scope.usersTypeaheadValues=[],$scope.$on("users-typeahead-received",function(event,users){$scope.usersTypeaheadValues=users,$scope.applyScope()}),$scope.addRoleToUserDialog=function(modalId){if($scope.user.uuid){var roleName=$rootScope.selectedRole._data.uuid;ug.addUserToRole($scope.user.uuid,roleName),$scope.hideModal(modalId),$scope.user=null}else $rootScope.$broadcast("alert","error","You must specify a user.")},$scope.removeUsersFromGroupDialog=function(modalId){for(var roleName=$rootScope.selectedRole._data.uuid,users=$scope.rolesCollection.users._list,i=0;i<users.length;i++)users[i].checked&&ug.removeUserFromRole(users[i]._data.uuid,roleName);$scope.hideModal(modalId)},$scope.get=function(){var options={type:"roles/"+$rootScope.selectedRole._data.name+"/users"};$scope.rolesCollection.addCollection("users",options,function(err){$scope.roleUsersSelected=!1,err?$rootScope.$broadcast("alert","error","error getting users for role"):($scope.hasUsers=$scope.rolesCollection.users._list.length,$scope.checkNextPrev(),$scope.applyScope())})},$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.rolesCollection.users.hasPreviousPage()&&($scope.previous_display="block"),$scope.rolesCollection.users.hasNextPage()&&($scope.next_display="block")},$rootScope.selectedRole?($scope.get(),$scope.getPrevious=function(){$scope.rolesCollection.users.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of users"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.getNext=function(){$scope.rolesCollection.users.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of users"),$scope.checkNextPrev(),$scope.applyScope()})},void $scope.$on("role-update-received",function(){$scope.get()})):void $location.path("/roles")}]),AppServices.Controllers.controller("ShellCtrl",["ug","$scope","$log","$sce",function(ug,$scope,$log,$sce){function encodePathString(path,returnParams){for(var i=0,segments=new Array,payload=null;i<path.length;){var c=path.charAt(i);if("{"!=c)if("/"!=c){if(" "==c){i++;for(var payload_start=i;i<path.length;)c=path.charAt(i),i++;if(i>payload_start){var json=path.substring(payload_start,i).trim();payload=JSON.parse(json)}break}i++}else{i++;for(var segment_start=i;i<path.length&&(c=path.charAt(i)," "!=c&&"/"!=c&&"{"!=c);)i++;if(i>segment_start){var segment=path.substring(segment_start,i);segments.push(segment)}}else{var bracket_start=i;i++;for(var bracket_count=1;i<path.length&&bracket_count>0;)c=path.charAt(i),"{"==c?bracket_count++:"}"==c&&bracket_count--,i++;if(i>bracket_start){var segment=path.substring(bracket_start,i);segments.push(JSON.parse(segment))}}}var newPath="";for(i=0;i<segments.length;i++){var segment=segments[i];if("string"==typeof segment)newPath+="/"+segment;else{if(i==segments.length-1){if(returnParams)return{path:newPath,params:segment,payload:payload};newPath+="?"}else newPath+=";";newPath+=encodeParams(segment)}}return returnParams?{path:newPath,params:null,payload:payload}:newPath}function encodeParams(params){var tail=[];if(params instanceof Array)for(i in params){var item=params[i];item instanceof Array&&item.length>1&&tail.push(item[0]+"="+encodeURIComponent(item[1]))}else for(var key in params)if(params.hasOwnProperty(key)){var value=params[key];if(value instanceof Array)for(i in value){var item=value[i];tail.push(key+"="+encodeURIComponent(item))}else tail.push(key+"="+encodeURIComponent(value))}return tail.join("&")}$scope.shell={input:"",output:""},$scope.submitCommand=function(){$scope.shell.input&&$scope.shell.input.length&&handleShellCommand($scope.shell.input)};var handleShellCommand=function(s){var path="",params="",shouldScroll=!1,hasMatchLength=function(expression){var res=s.match(expression);return res&&res.length>0};try{switch(!0){case hasMatchLength(/^\s*\//):path=encodePathString(s),printLnToShell(path),ug.runShellQuery("GET",path,null);break;case hasMatchLength(/^\s*get\s*\//i):path=encodePathString(s.substring(4)),printLnToShell(path),ug.runShellQuery("GET",path,null);break;case hasMatchLength(/^\s*put\s*\//i):params=encodePathString(s.substring(4),!0),printLnToShell(params.path),ug.runShellQuery("PUT",params.path,params.payload);break;case hasMatchLength(/^\s*post\s*\//i):params=encodePathString(s.substring(5),!0),printLnToShell(params.path),ug.runShellQuery("POST",params.path,params.payload);break;case hasMatchLength(/^\s*delete\s*\//i):path=encodePathString(s.substring(7)),printLnToShell(path),ug.runShellQuery("DELETE",path,null);break;case hasMatchLength(/^\s*clear|cls\s*/i):$scope.shell.output="",shouldScroll=!0;break;case hasMatchLength(/(^\s*help\s*|\?{1,2})/i):shouldScroll=!0,printLnToShell("/&lt;path&gt; - API get request"),printLnToShell("get /&lt;path&gt; - API get request"),printLnToShell("put /&lt;path&gt; {&lt;json&gt;} - API put request"),printLnToShell("post /&lt;path&gt; {&lt;json&gt;} - API post request"),printLnToShell("delete /&lt;path&gt; - API delete request"),printLnToShell("cls, clear - clear the screen"),printLnToShell("help - show this help");break;case""===s:shouldScroll=!0,printLnToShell("ok");break;default:shouldScroll=!0,printLnToShell("<strong>syntax error!</strong>")}}catch(e){$log.error(e),printLnToShell("<strong>syntax error!</strong>")}shouldScroll&&scroll()},printLnToShell=function(s){s||(s="&nbsp;"),$scope.shell.outputhidden=s;var html='<div class="shell-output-line"><div class="shell-output-line-content">'+s+"</div></div>";html+=" ";var trustedHtml=$sce.trustAsHtml(html);$scope.shell.output+=trustedHtml.toString()};$scope.$on("shell-success",function(evt,data){printLnToShell(JSON.stringify(data,null,"  ")),scroll()}),$scope.$on("shell-error",function(evt,data){printLnToShell(JSON.stringify(data,null,"  ")),scroll()});var scroll=function(){$scope.shell.output+="<hr />",$scope.applyScope(),setTimeout(function(){var myshell=$("#shell-output");myshell.animate({scrollTop:myshell[0].scrollHeight},800)},200)}}]),angular.module("appservices").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("activities/activities.html",'<section class="row-fluid">\n  <div class="span12">\n    <div class="page-filters">\n      <h1 class="title" class="pull-left"><i class="pictogram title">&#128241;</i> Activities</h1>\n    </div>\n  </div>\n\n</section>\n<section class="row-fluid">\n  <div class="span12 tab-content">\n    <table class="table table-striped">\n      <tbody>\n      <tr class="table-header">\n        <td>Date</td>\n        <td></td>\n        <td>User</td>\n        <td>Content</td>\n        <td>Verb</td>\n        <td>UUID</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="activity in activities">\n        <td>{{formatDate(activity.created)}}</td>\n        <td class="gravatar20"> <img ng-src="{{activity.actor.picture}}"/>\n        </td>\n        <td>{{activity.actor.displayName}}</td>\n        <td>{{activity.content}}</td>\n        <td>{{activity.verb}}</td>\n        <td>{{activity.uuid}}</td>\n      </tr>\n      </tbody>\n    </table>\n  </div>\n</section>'),$templateCache.put("app-overview/app-overview.html",'<div class="app-overview-content" >\n  <section class="row-fluid">\n\n      <page-title title=" Summary" icon="&#128241;"></page-title>\n  <section class="row-fluid">\n      <h2 class="title" id="app-overview-title">{{currentApp}}</h2>\n  </section>\n  <section class="row-fluid">\n\n    <div class="span6">\n      <chart id="appOverview"\n             chartdata="appOverview.chart"\n             type="column"></chart>\n    </div>\n\n    <div class="span6">\n      <table class="table table-striped">\n        <tr class="table-header">\n          <td>Path</td>\n          <td>Title</td>\n        </tr>\n        <tr class="zebraRows" ng-repeat="(k,v) in collections">\n          <td>{{v.title}}</td>\n          <td>{{v.count}}</td>\n        </tr>\n      </table>\n    </div>\n\n  </section>\n</div>'),$templateCache.put("app-overview/doc-includes/android.html",'<h2>1. Integrate the SDK into your project</h2>\n<p>You can integrate Apigee features into your app by including the SDK in your project.&nbsp;&nbsp;You can do one of the following:</p>\n\n<ul class="nav nav-tabs" id="myTab">\n	<li class="active"><a data-toggle="tab" href="#existing_project">Existing project</a></li>\n	<li><a data-toggle="tab" href="#new_project">New project</a></li>\n</ul>\n\n<div class="tab-content">\n	<div class="tab-pane active" id="existing_project">\n		<a class="jumplink" name="add_the_sdk_to_an_existing_project"></a>\n		<p>If you\'ve already got&nbsp;an Android&nbsp;project, you can integrate the&nbsp;Apigee&nbsp;SDK into your project as you normally would:</p>\n		<div id="collapse">\n			<a href="#jar_collapse" class="btn" data-toggle="collapse"><i class="icon-white icon-chevron-down"></i> Details</a>			\n		</div>\n		<div id="jar_collapse" class="collapse">\n			<p>Add <code>apigee-android-&lt;version&gt;.jar</code> to your class path by doing the following:</p>\n	\n			<h3>Android 4.0 (or later) projects</h3>\n			<p>Copy the jar file into the <code>/libs</code> folder in your project.</p>\n			\n			<h3>Android 3.0 (or earlier) projects</h3>\n			<ol>\n				<li>In the&nbsp;Eclipse <strong>Package Explorer</strong>, select your application\'s project folder.</li>\n				<li>Click the&nbsp;<strong>File &gt; Properties</strong>&nbsp;menu.</li>\n				<li>In the <strong>Java Build Path</strong> section, click the <strong>Libraries</strong> tab, click <strong>Add External JARs</strong>.</li>\n				<li>Browse to <code>apigee-android-&lt;version&gt;.jar</code>, then click&nbsp;<strong>Open</strong>.</li>\n				<li>Order the <code>apigee-android-&lt;version&gt;.jar</code> at the top of the class path:\n					<ol>\n						<li>In the Eclipse <strong>Package Explorer</strong>, select your application\'s project folder.</li>\n						<li>Click the&nbsp;<strong>File &gt; Properties</strong> menu.</li>\n						<li>In the properties dialog, in the&nbsp;<strong>Java Build Path</strong> section,&nbsp;click&nbsp;the <strong>Order and Export</strong>&nbsp;tab.</li>\n						<li>\n							<p><strong>IMPORTANT:</strong> Select the checkbox for <code>apigee-android-&lt;version&gt;.jar</code>, then click the <strong>Top</strong>&nbsp;button.</p>\n						</li>\n					</ol>\n				</li>\n			</ol>\n			<div class="warning">\n				<h3>Applications using Ant</h3>\n				<p>If you are using Ant to build your application, you must also copy <code>apigee-android-&lt;version&gt;.jar</code> to the <code>/libs</code> folder in your application.</p>\n			</div>\n		</div>\n	</div>\n	<div class="tab-pane" id="new_project">\n		<a class="jumplink" name="create_a_new_project_based_on_the_SDK"></a>\n		<p>If you don\'t have a&nbsp;project yet, you can begin by using the project template included with the SDK. The template includes support for SDK features.</p>\n		<ul>\n			<li>Locate the project template in the expanded SDK. It should be at the following location:\n				<pre>&lt;sdk_root&gt;/new-project-template</pre>\n			</li>\n		</ul>\n	</div>\n</div>\n<h2>2. Update permissions in AndroidManifest.xml</h2>\n<p>Add the following Internet permissions to your application\'s <code>AndroidManifest.xml</code> file if they have not already been added. Note that with the exception of INTERNET, enabling all other permissions are optional.</p>\n<pre>\n&lt;uses-permission android:name="android.permission.INTERNET" /&gt;\n&lt;uses-permission android:name="android.permission.READ_PHONE_STATE" /&gt;\n&lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&gt;\n&lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&gt;\n&lt;uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /&gt;\n</pre>\n<h2>3. Initialize the SDK</h2>\n<p>To initialize the App Services SDK, you must instantiate the <code>ApigeeClient</code> class. There are multiple ways to handle this step, but we recommend that you do the following:</p>\n<ol>\n	<li>Subclass the <code>Application</code> class, and add an instance variable for the <code>ApigeeClient</code> to it, along with getter and setter methods.\n		<pre>\npublic class YourApplication extends Application\n{\n        \n        private ApigeeClient apigeeClient;\n        \n        public YourApplication()\n        {\n                this.apigeeClient = null;\n        }\n        \n        public ApigeeClient getApigeeClient()\n        {\n                return this.apigeeClient;\n        }\n        \n        public void setApigeeClient(ApigeeClient apigeeClient)\n        {\n                this.apigeeClient = apigeeClient;\n        }\n}			\n		</pre>\n	</li>\n	<li>Declare the <code>Application</code> subclass in your <code>AndroidManifest.xml</code>. For example:\n		<pre>\n&lt;application&gt;\n    android:allowBackup="true"\n    android:icon="@drawable/ic_launcher"\n    android:label="@string/app_name"\n    android:name=".YourApplication"\n	…\n&lt;/application&gt;			\n		</pre>\n	</li>\n	<li>Instantiate the <code>ApigeeClient</code> class in the <code>onCreate</code> method of your first <code>Activity</code> class:\n		<pre>\nimport com.apigee.sdk.ApigeeClient;\n\n@Override\nprotected void onCreate(Bundle savedInstanceState) {\n    super.onCreate(savedInstanceState);		\n	\n	String ORGNAME = "{{currentOrg}}";\n	String APPNAME = "{{currentApp}}";\n	\n	ApigeeClient apigeeClient = new ApigeeClient(ORGNAME,APPNAME,this.getBaseContext());\n\n	// hold onto the ApigeeClient instance in our application object.\n	YourApplication yourApp = (YourApplication) getApplication;\n	yourApp.setApigeeClient(apigeeClient);			\n}\n		</pre>\n		<p>This will make the instance of <code>ApigeeClient</code> available to your <code>Application</code> class.</p>\n	</li>\n</ol>\n<h2>4. Import additional SDK classes</h2>\n<p>The following classes will enable you to call common SDK methods:</p>\n<pre>\nimport com.apigee.sdk.data.client.DataClient; //App Services data methods\nimport com.apigee.sdk.apm.android.MonitoringClient; //App Monitoring methods\nimport com.apigee.sdk.data.client.callbacks.ApiResponseCallback; //API response handling\nimport com.apigee.sdk.data.client.response.ApiResponse; //API response object\n</pre>\n		\n<h2>5. Verify SDK installation</h2>\n\n<p>Once initialized, App Services will also automatically instantiate the <code>MonitoringClient</code> class and begin logging usage, crash and error metrics for your app.</p>\n<p><img src="img/verify.png" alt="screenshot of data in admin portal"/></p>\n<p>To verify that the SDK has been properly initialized, run your app, then go to \'Monitoring\' > \'App Usage\' in the <a href="https://www.apigee.com/usergrid">App Services admin portal</a> to verify that data is being sent.</p>\n<div class="warning">It may take up to two minutes for data to appear in the admin portal after you run your app.</div>\n\n<h2>Installation complete! Try these next steps</h2>\n<ul>\n	<li>\n		<h3><strong>Call additional SDK methods in your code</strong></h3>\n		<p>The <code>DataClient</code> and <code>MonitoringClient</code> classes are also automatically instantiated for you, and accessible with the following accessors:</p>\n		<ul>\n			<li>\n				<pre>DataClient dataClient = apigeeClient.getDataClient();</pre>\n				<p>Use this object to access the data methods of the App Services SDK, including those for push notifications, data store, and geolocation.</p>\n			</li>\n			<li>\n				<pre>MonitoringClient monitoringClient = apigeeClient.getMonitoringClient();</pre>\n				<p>Use this object to access the app configuration and monitoring methods of the App Services SDK, including advanced logging, and A/B testing.</p>\n			</li>\n		</ul>\n	</li>	\n	<li>	\n		<h3><strong>Add App Services features to your app</strong></h3>\n		<p>With App Services you can quickly add valuable features to your mobile or web app, including push notifications, a custom data store, geolocation and more. Check out these links to get started with a few of our most popular features:</p>\n		<ul>\n			<li><strong><a href="http://apigee.com/docs/node/8410">Push notifications</a></strong>: Send offers, alerts and other messages directly to user devices to dramatically increase engagement. With App Services you can send 10 million push notification per month for free!</li>\n			<li><strong>App Monitoring</strong>: When you initialize the App Services SDK, a suite of valuable, <a href="http://apigee.com/docs/node/13190">customizable</a> application monitoring features are automatically enabled that deliver the data you need to fine tune performance, analyze issues, and improve user experience.\n				<ul>\n					<li><strong><a href="http://apigee.com/docs/node/13176">App Usage Monitoring</a></strong>: Visit the <a href="https://apigee.com/usergrid">App Services admin portal</a> to view usage data for your app, including data on device models, platforms and OS versions running your app.</li>				\n					<li><strong><a href="http://apigee.com/docs/node/12861">API Performance Monitoring</a></strong>: Network performance is key to a solid user experience. In the <a href="https://apigee.com/usergrid">App Services admin portal</a> you can view key metrics, including response time, number of requests and raw API request logs.</li>	\n					<li><strong><a href="http://apigee.com/docs/node/13177">Error &amp; Crash Monitoring</a></strong>: Get alerted to any errors or crashes, then view them in the <a href="https://apigee.com/usergrid">App Services admin portal</a>, where you can also analyze raw error and crash logs.</li>\n				</ul>		\n			</li>\n			<li><strong><a href="http://apigee.com/docs/node/410">Geolocation</a></strong>: Target users or return result sets based on user location to keep your app highly-relevant.</li>\n			<li><strong><a href="http://apigee.com/docs/node/10152">Data storage</a></strong>: Store all your application data on our high-availability infrastructure, and never worry about dealing with a database ever again.</li>\n			<li><strong><a href="http://apigee.com/docs/node/376">User management and authentication</a></strong>: Every app needs users. Use App Services to easily implement user registration, as well as OAuth 2.0-compliant login and authentication.</li>\n		</ul>\n	</li>\n	<li>	\n		<h3><strong>Check out the sample apps</strong></h3>\n		<p>The SDK includes samples that illustrate Apigee&nbsp;features. You\'ll find the samples in the following location in your SDK download:</p>\n		<pre>\napigee-android-sdk-&lt;version&gt;\n	...\n	/samples\n		</pre>\n		<div id="collapse">\n			<a href="#samples_collapse" class="btn" data-toggle="collapse"><i class="icon-white icon-chevron-down"></i> Details</a>\n		</div>\n		<div id="samples_collapse" class="collapse">\n			<p>The samples include the following:</p>\n			<table class="table">\n				<thead>\n					<tr>\n						<th scope="col">Sample</th>\n						<th scope="col">Description</th>\n					</tr>\n				</thead>\n				<tbody>\n					<tr>\n						<td>books</td>\n						<td>An app for storing a list of books that shows Apigee database operations such as reading, creating, and deleting.</td>\n					</tr>\n					<tr>\n						<td>messagee</td>\n						<td>An app for sending and receiving messages that shows Apigee database operations (reading, creating).</td>\n					</tr>\n					<tr>\n						<td>push</td>\n						<td>An app that uses the push feature to send notifications to the devices of users who have subscribed for them.</td>\n					</tr>\n				</tbody>\n			</table>\n		</div>\n	</li>\n</ul>\n'),$templateCache.put("app-overview/doc-includes/ios.html",'<h2>1. Integrate ApigeeiOSSDK.framework</h2>\n<a class="jumplink" name="add_the_sdk_to_an_existing_project"></a>\n<ul class="nav nav-tabs" id="myTab">\n	<li class="active"><a data-toggle="tab" href="#existing_project">Existing project</a></li>\n	<li><a data-toggle="tab" href="#new_project">New project</a></li>\n</ul>\n<div class="tab-content">\n	<div class="tab-pane active" id="existing_project">\n		<p>If you\'ve already got&nbsp;an Xcode iOS project, add it into your project as you normally would.</p>\n		<div id="collapse"><a class="btn" data-toggle="collapse" href="#framework_collapse">Details</a></div>\n		<div class="collapse" id="framework_collapse">\n			<ol>\n				<li>\n					<p>Locate the SDK framework file so you can add it to your project. For example, you\'ll find the file at the following path:</p>\n					<pre>\n&lt;sdk_root&gt;/bin/ApigeeiOSSDK.framework</pre>\n				</li>\n				<li>In the <strong>Project Navigator</strong>, click on your project file, and then the <strong>Build Phases</strong> tab. Expand <strong>Link Binary With Libraries</strong>.</li>\n				<li>Link the Apigee iOS SDK into your project.\n					<ul>\n						<li>Drag ApigeeiOSSDK.framework into the Frameworks group created by Xcode.</li>\n					</ul>\n					<p>OR</p>\n					<ol>\n						<li>At the bottom of the <strong>Link Binary With Libraries</strong> group, click the <strong>+</strong> button. Then click&nbsp;<strong>Add Other</strong>.</li>\n						<li>Navigate to the directory that contains ApigeeiOSSDK.framework, and choose the ApigeeiOSSDK.framework folder.</li>\n					</ol>\n				</li>\n			</ol>\n		</div>\n	</div>\n	<div class="tab-pane" id="new_project"><a class="jumplink" name="create_a_new_project_based_on_the_SDK"></a>\n		<p>If you\'re starting with a clean slate (you don\'t have a&nbsp;project yet), you can begin by using the project template included with the SDK. The template includes support for SDK features.</p>\n		<ol>\n			<li>\n				<p>Locate the project template in the expanded SDK. It should be at the following location:</p>\n				<pre>\n&lt;sdk_root&gt;/new-project-template</pre>\n			</li>\n			<li>In the project template directory, open the project file:&nbsp;Apigee App Services iOS Template.xcodeproj.</li>\n			<li>Get acquainted with the template by looking at its readme file.</li>\n		</ol>\n	</div>\n</div>\n<h2>2. Add required iOS frameworks</h2>\n<p>Ensure that the following iOS frameworks are part of your project. To add them, under the <strong>Link Binary With Libraries</strong> group, click the <strong>+</strong> button, type the name of the framework you want to add, select the framework found by Xcode, then click <strong>Add</strong>.</p>\n<ul>\n	<li>QuartzCore.framework</li>\n	<li>CoreLocation.framework</li>\n	<li>CoreTelephony.framework&nbsp;</li>\n	<li>Security.framework</li>\n	<li>SystemConfiguration.framework</li>\n	<li>UIKit.framework</li>\n</ul>\n<h2>3. Update \'Other Linker Flags\'</h2>\n<p>In the <strong>Build Settings</strong> panel, add the following under <strong>Other Linker Flags</strong>:</p>\n<pre>\n-ObjC -all_load</pre>\n<p>Confirm that flags are set for both <strong>DEBUG</strong> and <strong>RELEASE</strong>.</p>\n<h2>4. Initialize the SDK</h2>\n<p>The <em>ApigeeClient</em> class initializes the App Services SDK. To do this you will need your organization name and application name, which are available in the <em>Getting Started</em> tab of the <a href="https://www.apigee.com/usergrid/">App Service admin portal</a>, under <strong>Mobile SDK Keys</strong>.</p>\n<ol>\n	<li>Import the SDK\n		<p>Add the following to your source code to import the SDK:</p>\n		<pre>\n#import &lt;ApigeeiOSSDK/Apigee.h&gt;</pre>\n	</li>\n	<li>\n		<p>Declare the following properties in <code>AppDelegate.h</code>:</p>\n		<pre>\n@property (strong, nonatomic) ApigeeClient *apigeeClient; \n@property (strong, nonatomic) ApigeeMonitoringClient *monitoringClient;\n@property (strong, nonatomic) ApigeeDataClient *dataClient;	\n		</pre>\n	</li>\n	<li>\n		<p>Instantiate the <code>ApigeeClient</code> class inside the <code>didFinishLaunching</code> method of <code>AppDelegate.m</code>:</p>\n		<pre>\n//Replace \'AppDelegate\' with the name of your app delegate class to instantiate it\nAppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];\n\n//Sepcify your App Services organization and application names\nNSString *orgName = @"{{currentOrg}}";\nNSString *appName = @"{{currentApp}}";\n\n//Instantiate ApigeeClient to initialize the SDK\nappDelegate.apigeeClient = [[ApigeeClient alloc]\n                            initWithOrganizationId:orgName\n                            applicationId:appName];\n                            \n//Retrieve instances of ApigeeClient.monitoringClient and ApigeeClient.dataClient\nself.monitoringClient = [appDelegate.apigeeClient monitoringClient]; \nself.dataClient = [appDelegate.apigeeClient dataClient]; \n		</pre>\n	</li>\n</ol>\n\n<h2>5. Verify SDK installation</h2>\n\n<p>Once initialized, App Services will also automatically instantiate the <code>ApigeeMonitoringClient</code> class and begin logging usage, crash and error metrics for your app.</p>\n\n<p>To verify that the SDK has been properly initialized, run your app, then go to <strong>\'Monitoring\' > \'App Usage\'</strong> in the <a href="https://www.apigee.com/usergrid">App Services admin portal</a> to verify that data is being sent.</p>\n<p><img src="img/verify.png" alt="screenshot of data in admin portal"/></p>\n<div class="warning">It may take up to two minutes for data to appear in the admin portal after you run your app.</div>\n\n<h2>Installation complete! Try these next steps</h2>\n<ul>	\n	<li>\n		<h3><strong>Call additional SDK methods in your code</strong></h3>\n		<p>Create an instance of the AppDelegate class, then use <code>appDelegate.dataClient</code> or <code>appDelegate.monitoringClient</code> to call SDK methods:</p>\n		<div id="collapse"><a class="btn" data-toggle="collapse" href="#client_collapse">Details</a></div>\n		<div class="collapse" id="client_collapse">\n			<ul>\n				<li><code>appDelegate.dataClient</code>: Used to access the data methods of the App Services SDK, including those for push notifications, data store, and geolocation.</li>\n				<li><code>appDelegate.monitoringClient</code>: Used to access the app configuration and monitoring methods of the App Services SDK, including advanced logging, and A/B testing.</li>\n			</ul>\n			<h3>Example</h3>\n			<p>For example, you could create a new entity with the following:</p>\n			<pre>\nAppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];\nApigeeClientResponse *response = [appDelegate.dataClient createEntity:entity];\n			</pre>\n		</div>\n\n	</li>\n	<li>\n		<h3><strong>Add App Services features to your app</strong></h3>\n		<p>With App Services you can quickly add valuable features to your mobile or web app, including push notifications, a custom data store, geolocation and more. Check out these links to get started with a few of our most popular features:</p>\n		<ul>\n			<li><strong><a href="http://apigee.com/docs/node/8410">Push notifications</a></strong>: Send offers, alerts and other messages directly to user devices to dramatically increase engagement. With App Services you can send 10 million push notification per month for free!</li>\n			<li><strong><a href="http://apigee.com/docs/node/410">Geolocation</a></strong>: Target users or return result sets based on user location to keep your app highly-relevant.</li>\n			<li><strong><a href="http://apigee.com/docs/node/10152">Data storage</a></strong>: Store all your application data on our high-availability infrastructure, and never worry about dealing with a database ever again.</li>\n			<li><strong><a href="http://apigee.com/docs/node/376">User management and authentication</a></strong>: Every app needs users. Use App Services to easily implement user registration, as well as OAuth 2.0-compliant login and authentication.</li>\n		</ul>\n	</li>\n	<li>\n		<h3><strong>Check out the sample apps</strong></h3>\n		<p>The SDK includes samples that illustrate Apigee&nbsp;features. To look at them, open the .xcodeproj file for each in Xcode. To get a sample app running, open its project file, then follow the steps described in the section, <a target="_blank" href="http://apigee.com/docs/app-services/content/installing-apigee-sdk-ios">Add the SDK to an existing project</a>.</p>\n		<p>You\'ll find the samples in the following location in your SDK download:</p>\n		<pre>\napigee-ios-sdk-&lt;version&gt;\n    ...\n    /samples\n		</pre>\n		<div id="collapse"><a class="btn" data-toggle="collapse" href="#samples_collapse">Details</a></div>\n		<div class="collapse" id="samples_collapse">\n			<p>The samples include the following:</p>\n			<table class="table">\n				<thead>\n					<tr>\n						<th scope="col">Sample</th>\n						<th scope="col">Description</th>\n					</tr>\n				</thead>\n				<tbody>\n					<tr>\n						<td>books</td>\n						<td>An app for storing a list of books that shows Apigee database operations such as reading, creating, and deleting.</td>\n					</tr>\n					<tr>\n						<td>messagee</td>\n						<td>An app for sending and receiving messages that shows Apigee database operations (reading, creating).</td>\n					</tr>\n					<tr>\n						<td>push</td>\n						<td>An app that uses the push feature to send notifications to the devices of users who have subscribed for them.</td>\n					</tr>\n				</tbody>\n			</table>\n		</div>\n		<p>&nbsp;</p>\n	</li>\n</ul>\n'),$templateCache.put("app-overview/doc-includes/javascript.html",'<h2>1. Import the SDK into your HTML</h2>\n<p>To enable support for Apigee-related functions in your HTML, you\'ll need to&nbsp;include <code>apigee.js</code> in your app. To do this, add the following to the <code>head</code> block of your HTML:</p>\n<pre>\n&lt;script type="text/javascript" src="path/to/js/sdk/apigee.js"&gt;&lt;/script&gt;\n</pre>\n<h2>2. Instantiate Apigee.Client</h2>\n<p>Apigee.Client initializes the App Services SDK, and gives you access to all of the App Services SDK methods.</p>\n<p>You will need to pass a JSON object with the UUID or name for your App Services organization and application when you instantiate it.</p>\n<pre>\n//Apigee account credentials, available in the App Services admin portal \nvar client_creds = {\n        orgName:\'{{currentOrg}}\',\n        appName:\'{{currentApp}}\'\n    }\n\n//Initializes the SDK. Also instantiates Apigee.MonitoringClient\nvar dataClient = new Apigee.Client(client_creds);  \n</pre>\n\n<h2>3. Verify SDK installation</h2>\n\n<p>Once initialized, App Services will also automatically instantiate <code>Apigee.MonitoringClient</code> and begin logging usage, crash and error metrics for your app.</p>\n\n<p>To verify that the SDK has been properly initialized, run your app, then go to <strong>\'Monitoring\' > \'App Usage\'</strong> in the <a href="https://www.apigee.com/usergrid">App Services admin portal</a> to verify that data is being sent.</p>\n<p><img src="img/verify.png" alt="screenshot of data in admin portal"/></p>\n<div class="warning">It may take up to two minutes for data to appear in the admin portal after you run your app.</div>\n\n<h2>Installation complete! Try these next steps</h2>\n<ul>\n	<li>	\n		<h3><strong>Call additional SDK methods in your code</strong></h3>\n		<p>Use <code>dataClient</code> or <code>dataClient.monitor</code> to call SDK methods:</p>\n		<div id="collapse">\n			<a href="#client_collapse" class="btn" data-toggle="collapse"><i class="icon-white icon-chevron-down"></i> Details</a>\n		</div>\n		<div id="client_collapse" class="collapse">\n			<ul>\n				<li><code>dataClient</code>: Used to access the data methods of the App Services SDK, including those for push notifications, data store, and geolocation.</li>\n				<li><code>dataClient.monitor</code>: Used to access the app configuration and monitoring methods of the App Services SDK, including advanced logging, and A/B testing.</li>\n			</ul>\n		</div>\n	</li>	\n	<li>\n		<h3><strong>Add App Services features to your app</strong></h3>\n		<p>With App Services you can quickly add valuable features to your mobile or web app, including push notifications, a custom data store, geolocation and more. Check out these links to get started with a few of our most popular features:</p>\n		<ul>\n			<li><strong><a href="http://apigee.com/docs/node/8410">Push notifications</a></strong>: Send offers, alerts and other messages directly to user devices to dramatically increase engagement. With App Services you can send 10 million push notification per month for free!</li>\n			<li><strong><a href="http://apigee.com/docs/node/410">Geolocation</a></strong>: Keep your app highly-relevant by targeting users or returning result sets based on user location.</li>\n			<li><strong><a href="http://apigee.com/docs/node/10152">Data storage</a></strong>: Store all your application data on our high-availability infrastructure, and never worry about dealing with a database ever again.</li>\n			<li><strong><a href="http://apigee.com/docs/node/376">User management and authentication</a></strong>: Every app needs users. Use App Services to easily implement registration, login and OAuth 2.0-compliant authentication.</li>\n		</ul>\n	</li>\n	<li>\n		<h3><strong>Check out the sample apps</strong></h3>\n		<p>The SDK includes samples that illustrate Apigee&nbsp;features. To look at them, open the .xcodeproj file for each in Xcode. You\'ll find the samples in the following location in your SDK download:</p>\n		<pre>\napigee-javascript-sdk-master\n    ...\n    /samples		\n		</pre>\n		<div id="collapse">\n			<a href="#samples_collapse" class="btn" data-toggle="collapse"><i class="icon-white icon-chevron-down"></i> Details</a>\n		</div>\n		<div id="samples_collapse" class="collapse">\n			<p>The samples include the following:</p>\n			<table class="table">\n				<thead>\n					<tr>\n						<th scope="col">Sample</th>\n						<th scope="col">Description</th>\n					</tr>\n				</thead>\n				<tbody>\n					<tr>\n						<td>booksSample.html</td>\n						<td>An app for storing a list of books that shows Apigee database operations such as reading, creating, and deleting.</td>\n					</tr>\n					<tr>\n						<td>messagee</td>\n						<td>An app for sending and receiving messages that shows Apigee database operations (reading, creating).</td>\n					</tr>\n					<tr>\n						<td>monitoringSample.html</td>\n						<td>Shows basic configuration and initialization of the HTML5 app monitoring functionality. Works in browser, PhoneGap, Appcelerator, and Trigger.io.</td>\n					</tr>\n					<tr>\n						<td>readmeSample.html</td>\n						<td>A simple app for reading data from an Apigee database.</td>\n					</tr>\n				</tbody>\n			</table>\n		</div>	\n	</li>				\n</ul>\n'),$templateCache.put("app-overview/doc-includes/net.html",""),$templateCache.put("app-overview/doc-includes/node.html",""),$templateCache.put("app-overview/doc-includes/ruby.html",""),$templateCache.put("app-overview/getting-started.html",'<div class="setup-sdk-content" >\n\n  <bsmodal id="regenerateCredentials"\n           title="Confirmation"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="regenerateCredentialsDialog"\n           extrabuttonlabel="Yes"\n           ng-cloak>\n    Are you sure you want to regenerate the credentials?\n  </bsmodal>\n\n    <page-title icon="&#128640;" title="Getting Started"></page-title>\n\n  <section class="row-fluid">\n\n\n\n\n    <div class="span8">\n\n      <h2 class="title">Install the SDK for app {{currentApp}}</h2>\n      <p>Click on a platform icon below to view SDK installation instructions for that platform.</p>\n      <ul class="inline unstyled">\n        <!--<li><a target="_blank" href="http://apigee.com/docs/usergrid/content/sdks-and-examples#ios"><i class="sdk-icon-large-ios"></i></a></li>-->\n        <!--<li><a target="_blank" href="http://apigee.com/docs/usergrid/content/sdks-and-examples#android"><i class="sdk-icon-large-android"></i></a></li>-->\n        <!--<li><a target="_blank" href="http://apigee.com/docs/usergrid/content/sdks-and-examples#javascript"><i class="sdk-icon-large-js"></i></a></li>-->\n\n\n        <li ng-click="showSDKDetail(\'ios\')"\n            analytics-on="click"\n            analytics-label="App Services"\n            analytics-category="Getting Started"\n            analytics-event="iOS SDK"><i class="sdk-icon-large-ios"></i></li>\n        <li ng-click="showSDKDetail(\'android\')"\n            analytics-on="click"\n            analytics-label="App Services"\n            analytics-category="Getting Started"\n            analytics-event="Android SDK"><i class="sdk-icon-large-android"></i></li>\n        <li ng-click="showSDKDetail(\'javascript\')"\n            analytics-on="click"\n            analytics-label="App Services"\n            analytics-category="Getting Started"\n            analytics-event="JS SDK"><i class="sdk-icon-large-js"></i></li>\n        <li><a target="_blank"\n               ng-click="showSDKDetail(\'nocontent\')"\n               href="http://apigee.com/docs/usergrid/content/sdks-and-examples#nodejs"\n               analytics-on="click"\n               analytics-label="App Services"\n               analytics-category="Getting Started"\n               analytics-event="Node SDK"><i class="sdk-icon-large-node"></i></a></li>\n        <li><a target="_blank"\n               ng-click="showSDKDetail(\'nocontent\')"\n               href="http://apigee.com/docs/usergrid/content/sdks-and-examples#ruby"\n               analytics-on="click"\n               analytics-label="App Services"\n               analytics-category="Getting Started"\n               analytics-event="Ruby SDK"><i class="sdk-icon-large-ruby"></i></a></li>\n        <li><a target="_blank"\n               ng-click="showSDKDetail(\'nocontent\')"\n               href="http://apigee.com/docs/usergrid/content/sdks-and-examples#c"\n               analytics-on="click"\n               analytics-label="App Services"\n               analytics-category="Getting Started"\n               analytics-event="DotNet SDK"><i class="sdk-icon-large-net"></i></a></li>\n       </ul>\n\n      <section id="intro-container" class="row-fluid intro-container">\n\n        <div class="sdk-intro">\n        </div>\n\n        <div class="sdk-intro-content">\n\n          <a class="btn normal white pull-right" ng-href="{{sdkLink}}" target="_blank">\n            Download SDK\n          </a>\n          <a class="btn normal white pull-right" ng-href="{{docsLink}}" target="_blank">\n            More Docs\n          </a>\n          <h3 class="title"><i class="pictogram">&#128213;</i>{{contentTitle}}</h3>\n\n          <div ng-include="getIncludeURL()"></div>\n        </div>\n\n      </section>\n    </div>\n\n    <div class="span4 keys-creds">\n      <h2 class="title">Mobile sdk keys</h2>\n      <p>For mobile SDK initialization.</p>\n      <dl class="app-creds">\n        <dt>Org Name</dt>\n        <dd>{{currentOrg}}</dd>\n        <dt>App Name</dt>\n        <dd>{{currentApp}}</dd>\n      </dl>\n      <h2 class="title">Server app credentials</h2>\n      <p>For authenticating from a server side app (i.e. Ruby, .NET, etc.)</p>\n      <dl class="app-creds">\n        <dt>Client ID</dt>\n        <dd>{{clientID}}</dd>\n        <dt>Client Secret</dt>\n        <dd>{{clientSecret}}</dd>\n        <dt>\n           &nbsp;\n        </dt>\n        <dd>&nbsp;</dd>\n\n        <dt>\n          <a class="btn filter-selector" ng-click="showModal(\'regenerateCredentials\')">Regenerate</a>\n        </dt>\n        <dd></dd>\n      </dl>\n\n    </div>\n\n  </section>\n</div>'),$templateCache.put("data/data.html",'<div class="content-page">\n\n  <bsmodal id="newCollection"\n           title="Create new collection"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="newCollectionDialog"\n           extrabuttonlabel="Create"\n           buttonid="collection"\n           ng-cloak>\n    <fieldset>\n      <div class="control-group">\n        <label for="new-collection-name">Collection Name:</label>\n        <div class="controls">\n          <input type="text" ug-validate required ng-pattern="collectionNameRegex" ng-attr-title="{{collectionNameRegexDescription}}" ng-model="$parent.newCollection.name" name="collection" id="new-collection-name" class="input-xlarge"/>\n          <p class="help-block hide"></p>\n        </div>\n      </div>\n    </fieldset>\n  </bsmodal>\n\n  <div id="intro-page">    \n    <page-title title=" Collections" icon="&#128254;"></page-title>\n  </div>\n\n  <section class="row-fluid">\n    <div id="intro-list" class="span3 user-col">\n      <a class="btn btn-primary" id="new-collection-link" ng-click="showModal(\'newCollection\')">New Collection</a>\n      <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'data new collection\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_new_collection}}" tooltip-placement="right">(?)</a>\n        <ul  class="user-list">\n          <li ng-class="queryCollection._type === entity.name ? \'selected\' : \'\'" ng-repeat="entity in collectionList" ng-click="loadCollection(\'/\'+entity.name);">\n            <a id="collection-{{entity.name}}-link" href="javaScript:void(0)">/{{entity.name}} </a>\n          </li>\n        </ul>\n\n  </div>\n\n    <div class="span9 tab-content">\n      <div class="content-page">\n        <form id="intro-collection-query" name="dataForm" ng-submit="run();">\n        <fieldset>\n          <div class="control-group">\n            <div class="" data-toggle="buttons-radio">\n              <!--a class="btn" id="button-query-back">&#9664; Back</a-->\n              <!--Added disabled class to change the way button looks but their functionality is as usual -->\n              <label class="control-label" style="display:none"><strong>Method</strong> <a id="query-method-help" href="#" class="help-link">get help</a></label>\n              <input type="radio" id="create-rb" name="query-action" style="margin-top: -2px;" ng-click="selectPOST();" ng-checked="verb==\'POST\'"> CREATE &nbsp; &nbsp;\n              <input type="radio" id="read-rb" name="query-action" style="margin-top: -2px;" ng-click="selectGET();" ng-checked="verb==\'GET\'"> READ &nbsp; &nbsp;\n              <input type="radio" id="update-rb" name="query-action" style="margin-top: -2px;" ng-click="selectPUT();" ng-checked="verb==\'PUT\'"> UPDATE &nbsp; &nbsp;\n                <input type="radio" id="delete-rb" name="query-action" style="margin-top: -2px;" ng-click="selectDELETE();" ng-checked="verb==\'DELETE\'"> DELETE             <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'data query verbs\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_verb_buttons}}" tooltip-placement="right">(?)</a>\n            </div>\n          </div>\n\n          <div class="control-group">\n            <strong>Path </strong>\n            <div class="controls">\n              <input ng-model="data.queryPath" type="text" ug-validate id="pathDataQuery" ng-attr-title="{{pathRegexDescription}}" ng-pattern="pathRegex" class="span6" autocomplete="off" placeholder="ex: /users" required/>\n              <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'data query path\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_path_box}}" tooltip-placement="right">(?)</a>\n            </div>\n          </div>\n          <div class="control-group">\n            <a id="back-to-collection" class="outside-link" style="display:none">Back to collection</a>\n          </div>\n          <div class="control-group">\n            <strong>Query</strong>\n            <div class="controls">\n              <input ng-model="data.searchString" type="text" class="span6" autocomplete="off" placeholder="ex: select * where name=\'fred\'"/>\n              <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'data query string\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_query_box}}" tooltip-placement="right">(?)</a>\n              <div style="display:none">\n                <a class="btn dropdown-toggle " data-toggle="dropdown">\n                  <span id="query-collections-caret" class="caret"></span>\n                </a>\n                <ul id="query-collections-indexes-list" class="dropdown-menu ">\n                </ul>\n              </div>\n            </div>\n          </div>\n\n\n          <div class="control-group" ng-show="verb==\'GET\' || verb==\'DELETE\'">\n            <label class="control-label" for="query-limit"><strong>Limit</strong>\n              <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'data limit\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_limit}}" tooltip-placement="right">(?)</a><a id="query-limit-help" href="#" ng-show="false" class="help-link">get help</a></label>\n            <div class="controls">\n              <div class="input-append">\n                <input ng-model="data.queryLimit" type="text" class="span5" id="query-limit" placeholder="ex: 10">\n              </div>\n            </div>\n          </div>\n\n          <div class="control-group" style="display:{{queryBodyDisplay}}">\n            <label class="control-label" for="query-source"><strong>JSON Body</strong>\n              <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'data json body\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_json_body}}" tooltip-placement="right">(?)</a> <a id="query-json-help" href="#" ng-show="false" class="help-link">get help</a></label>\n            <div class="controls">\n            <textarea ng-model="data.queryBody" id="query-source" class="span6 pull-left" rows="4">\n      { "name":"value" }\n            </textarea>\n              <br>\n            <a class="btn pull-left" ng-click="validateJson();">Validate JSON</a>\n                <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'data validate json\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_json_validate}}" tooltip-placement="right">(?)</a>\n            </div>\n          </div>\n          <div style="clear: both; height: 10px;"></div>\n          <div class="control-group">\n            <input type="submit" ng-disabled="!dataForm.$valid || loading" class="btn btn-primary" id="button-query"  value="{{loading ? loadingText : \'Run Query\'}}"/>\n            <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'data run query\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_run_query}}" tooltip-placement="right">(?)</a>\n          </div>\n        </fieldset>\n       </form>\n        <div id="intro-entity-list">\n'+"          <div ng-include=\"display=='generic' ? 'data/display-generic.html' : ''\"></div>\n          <div ng-include=\"display=='users' ? 'data/display-users.html' : ''\"></div>\n          <div ng-include=\"display=='groups' ? 'data/display-groups.html' : ''\"></div>\n          <div ng-include=\"display=='roles' ? 'data/display-roles.html' : ''\"></div>\n        </div>\n\n      </div>\n\n      </div>\n    </section>\n\n</div>\n\n"),$templateCache.put("data/display-generic.html",'\n\n<bsmodal id="deleteEntities"\n         title="Are you sure you want to delete the entities(s)?"\n         close="hideModal"\n         closelabel="Cancel"\n         extrabutton="deleteEntitiesDialog"\n         extrabuttonlabel="Delete"\n         buttonid="del-entity"\n         ng-cloak>\n    <fieldset>\n        <div class="control-group">\n        </div>\n    </fieldset>\n</bsmodal>\n\n<span class="button-strip">\n  <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'data entities list\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_entities_list}}" tooltip-placement="left">(?)</a>\n  <button class="btn btn-primary" ng-disabled="!valueSelected(queryCollection._list) || deleteLoading" ng-click="deleteEntitiesDialog()">{{deleteLoading ? loadingText : \'Delete Entity(s)\'}}</button>\n</span>\n<table class="table table-striped collection-list">\n  <thead>\n  <tr class="table-header">\n    <th><input type="checkbox" ng-show="queryCollection._list.length > 0" id="selectAllCheckbox" ng-model="queryBoxesSelected" ng-click="selectAllEntities(queryCollection._list,$parent,\'queryBoxesSelected\',true)"></th>\n    <th ng-if="hasProperty(\'name\')">Name</th>\n    <th>UUID</th>\n    <th></th>\n  </tr>\n  </thead>\n  <tbody ng-repeat="entity in queryCollection._list">\n  <tr class="zebraRows" >\n    <td>\n      <input\n        type="checkbox"\n        id="entity-{{entity._data.name}}-cb"\n        ng-value="entity._data.uuid"\n        ng-model="entity.checked"\n        >\n    </td>\n    <td ng-if="hasProperty(\'name\')">{{entity._data.name}}</td>\n    <td>{{entity._data.uuid}}</td>\n    <td><a href="javaScript:void(0)" ng-click="entitySelected[$index] = !entitySelected[$index]; selectEntity(entity._data.uuid, entitySelected[$index]);">{{entitySelected[$index] ? \'Hide\' : \'View\'}} Details</a></td>\n  </tr>\n  <tr ng-if="entitySelected[$index]">\n    <td colspan="5">\n\n\n      <h4 style="margin: 0 0 20px 0">Entity Detail</h4>\n\n\n      <ul class="formatted-json">\n        <li ng-repeat="(k,v) in entity._data track by $index">\n          <span class="key">{{k}} :</span>\n          <!--todo - doing manual recursion to get this out the door for launch, please fix-->\n          <span ng-switch on="isDeep(v)">\n            <ul ng-switch-when="true">\n              <li ng-repeat="(k2,v2) in v"><span class="key">{{k2}} :</span>\n\n                <span ng-switch on="isDeep(v2)">\n                  <ul ng-switch-when="true">\n                    <li ng-repeat="(k3,v3) in v2"><span class="key">{{k3}} :</span><span class="value">{{v3}}</span></li>\n                  </ul>\n                  <span ng-switch-when="false">\n                    <span class="value">{{v2}}</span>\n                  </span>\n                </span>\n              </li>\n            </ul>\n            <span ng-switch-when="false">\n              <span class="value">{{v}}</span>\n            </span>\n          </span>\n        </li>\n      </ul>\n\n    <div class="control-group">\n      <h4 style="margin: 20px 0 20px 0">Edit Entity <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'data edit entity\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_edit_entity}}" tooltip-placement="right">(?)</a></h4>\n      <div class="controls">\n        <textarea ng-model="entity._json" class="span12" rows="12"></textarea>\n        <br>\n        <a class="btn btn-primary toolbar pull-left" ng-click="validateJson();">Validate JSON</a><button type="button" class="btn btn-primary pull-right" id="button-query" ng-click="saveEntity(entity);">Save</button>\n      </div>\n    </div>\n  </td>\n  </tr>\n\n  <tr ng-show="queryCollection._list.length == 0">\n    <td colspan="4">No data found</td>\n  </tr>\n  </tbody>\n</table>\n<div style="padding: 10px 5px 10px 5px">\n  <button class="btn btn-primary toolbar" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n  <button class="btn btn-primary toolbar" ng-click="getNext()" style="display:{{next_display}}; float:right;">Next ></button>\n</div>\n\n'),$templateCache.put("data/display-groups.html",""),$templateCache.put("data/display-roles.html","roles---------------------------------"),$templateCache.put("data/display-users.html",'\n<table id="query-response-table" class="table">\n  <tbody>\n  <tr class="zebraRows users-row">\n    <td class="checkboxo">\n      <input type="checkbox" onclick="Usergrid.console.selectAllEntities(this);"></td>\n    <td class="gravatar50-td">&nbsp;</td>\n    <td class="user-details bold-header">Username</td>\n    <td class="user-details bold-header">Display Name</td>\n    <td class="user-details bold-header">UUID</td>\n    <td class="view-details">&nbsp;</td>\n  </tr>\n  <tr class="zebraRows users-row">\n    <td class="checkboxo">\n      <input class="listItem" type="checkbox" name="/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7" value="bf9a95da-d508-11e2-bf44-236d2eee13a7">\n    </td>\n    <td class="gravatar50-td">\n      <img src="http://www.gravatar.com/avatar/01b37aa66496988ca780b3f515bc768e" class="gravatar50">\n    </td>\n    <td class="details">\n      <a onclick="Usergrid.console.getCollection(\'GET\', \'/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/\'+\'bf9a95da-d508-11e2-bf44-236d2eee13a7\'); $(\'#data-explorer\').show(); return false;" class="view-details">10</a>\n    </td>\n    <td class="details">      #"&gt;&lt;img src=x onerror=prompt(1);&gt;   </td>\n    <td class="details">     bf9a95da-d508-11e2-bf44-236d2eee13a7   </td>\n    <td class="view-details">\n      <a href="" onclick="$(\'#query-row-bf9a95da-d508-11e2-bf44-236d2eee13a7\').toggle(); $(\'#data-explorer\').show(); return false;" class="view-details">Details</a>\n    </td>\n  </tr>\n  <tr id="query-row-bf9a95da-d508-11e2-bf44-236d2eee13a7" style="display:none">\n    <td colspan="5">\n      <div>\n        <div style="padding-bottom: 10px;">\n          <button type="button" class="btn btn-small query-button active" id="button-query-show-row-JSON" onclick="Usergrid.console.activateQueryRowJSONButton(); $(\'#query-row-JSON-bf9a95da-d508-11e2-bf44-236d2eee13a7\').show(); $(\'#query-row-content-bf9a95da-d508-11e2-bf44-236d2eee13a7\').hide(); return false;">JSON</button>\n          <button type="button" class="btn btn-small query-button disabled" id="button-query-show-row-content" onclick="Usergrid.console.activateQueryRowContentButton();$(\'#query-row-content-bf9a95da-d508-11e2-bf44-236d2eee13a7\').show(); $(\'#query-row-JSON-bf9a95da-d508-11e2-bf44-236d2eee13a7\').hide(); return false;">Content</button>\n        </div>\n        <div id="query-row-JSON-bf9a95da-d508-11e2-bf44-236d2eee13a7">\n              <pre>{\n  "picture": "http://www.gravatar.com/avatar/01b37aa66496988ca780b3f515bc768e",\n  "uuid": "bf9a95da-d508-11e2-bf44-236d2eee13a7",\n  "type": "user",\n  "name": "#"&gt;&lt;img src=x onerror=prompt(1);&gt;",\n  "created": 1371224432557,\n  "modified": 1371851347024,\n  "username": "10",\n  "email": "fdsafdsa@ookfd.com",\n  "activated": "true",\n  "adr": {\n    "addr1": "",\n    "addr2": "",\n    "city": "",\n    "state": "",\n    "zip": "",\n    "country": ""\n  },\n  "metadata": {\n    "path": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7",\n    "sets": {\n      "rolenames": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/rolenames",\n      "permissions": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/permissions"\n    },\n    "collections": {\n      "activities": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/activities",\n      "devices": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/devices",\n      "feed": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/feed",\n      "groups": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/groups",\n      "roles": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/roles",\n      "following": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/following",\n      "followers": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/followers"\n    }\n  },\n  "title": "#"&gt;&lt;img src=x onerror=prompt(1);&gt;"\n}</pre>\n        </div>\n        <div id="query-row-content-bf9a95da-d508-11e2-bf44-236d2eee13a7" style="display:none">\n          <table>\n            <tbody>\n            <tr>\n              <td>picture</td>\n              <td>http://www.gravatar.com/avatar/01b37aa66496988ca780b3f515bc768e</td></tr><tr><td>uuid</td><td>bf9a95da-d508-11e2-bf44-236d2eee13a7</td></tr><tr><td>type</td><td>user</td></tr><tr><td>name</td><td>#&amp;quot;&amp;gt;&amp;lt;img src=x onerror=prompt(1);&amp;gt;</td></tr><tr><td>created</td><td>1371224432557</td></tr><tr><td>modified</td><td>1371851347024</td></tr><tr><td>username</td><td>10</td></tr><tr><td>email</td><td>fdsafdsa@ookfd.com</td></tr><tr><td>activated</td><td>true</td></tr><tr><td></td><td style="padding: 0"><table><tbody><tr></tr><tr><td>addr1</td><td></td></tr><tr><td>addr2</td><td></td></tr><tr><td>city</td><td></td></tr><tr><td>state</td><td></td></tr><tr><td>zip</td><td></td></tr><tr><td>country</td><td></td></tr></tbody></table></td></tr><tr><td></td><td style="padding: 0"><table><tbody><tr></tr><tr><td>path</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7</td></tr><tr><td></td><td style="padding: 0"><table><tbody><tr></tr><tr><td>rolenames</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/rolenames</td></tr><tr><td>permissions</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/permissions</td></tr></tbody></table></td></tr><tr><td></td><td style="padding: 0"><table><tbody><tr></tr><tr><td>activities</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/activities</td></tr><tr><td>devices</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/devices</td></tr><tr><td>feed</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/feed</td></tr><tr><td>groups</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/groups</td></tr><tr><td>roles</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/roles</td></tr><tr><td>following</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/following</td></tr><tr><td>followers</td><td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/followers</td></tr></tbody></table></td></tr></tbody></table></td></tr><tr><td>title</td><td>#&amp;quot;&amp;gt;&amp;lt;img src=x onerror=prompt(1);&amp;gt;</td>\n            </tr>\n            </tbody>\n          </table>\n        </div>\n      </div>\n    </td>\n  </tr>\n  </tbody>\n</table>'),$templateCache.put("data/entity.html",'<div class="content-page">\n\n  <h4>Entity Detail</h4>\n  <div class="well">\n    <a href="#!/data" class="outside-link"><< Back to collection</a>\n  </div>\n  <fieldset>\n    <div class="control-group">\n      <strong>Path </strong>\n      <div class="controls">\n        {{entityType}}/{{entityUUID}}\n      </div>\n    </div>\n\n    <div class="control-group">\n      <label class="control-label" for="query-source"><strong>JSON Body</strong></label>\n      <div class="controls">\n        <textarea ng-model="queryBody" class="span6 pull-left" rows="12">{{queryBody}}</textarea>\n        <br>\n        <a class="btn pull-left" ng-click="validateJson();">Validate JSON</a>\n      </div>\n    </div>\n    <div style="clear: both; height: 10px;"></div>\n    <div class="control-group">\n      <button type="button" class="btn btn-primary" id="button-query" ng-click="saveEntity();">Save</button>\n      <!--button type="button" class="btn btn-primary" id="button-query" ng-click="run();">Delete</button-->\n    </div>\n  </fieldset>\n\n</div>\n\n'),$templateCache.put("dialogs/modal.html",'    <div class="modal show fade" tabindex="-1" role="dialog" aria-hidden="true">\n        <form ng-submit="extraDelegate(extrabutton)" name="dialogForm" novalidate>\n\n        <div class="modal-header">\n            <h1 class="title">{{title}}</h1>\n        </div>\n\n        <div class="modal-body" ng-transclude></div>\n        <div class="modal-footer">\n            {{footertext}}\n            <input type="submit" class="btn" id="dialogButton-{{buttonId}}" ng-if="extrabutton" ng-disabled="!dialogForm.$valid" aria-hidden="true" ng-value="extrabuttonlabel"/>\n            <button class="btn cancel pull-left" data-dismiss="modal" aria-hidden="true"\n                    ng-click="closeDelegate(close)">{{closelabel}}\n            </button>\n        </div>\n        </form>    </div>\n'),$templateCache.put("global/appswitcher-template.html",'<li id="globalNav" class="dropdown dropdownContainingSubmenu active">\n  <a class="dropdown-toggle" data-toggle="dropdown">API Platform<b class="caret"></b></a>\n  <ul class="dropdown-menu pull-right">\n    <li id="globalNavSubmenuContainer">\n      <ul>\n        <li data-globalNavDetail="globalNavDetailApigeeHome"><a target="_blank" href="http://apigee.com">Apigee Home</a></li>\n        <li data-globalNavDetail="globalNavDetailAppServices" class="active"><a target="_blank" href="https://apigee.com/usergrid/">App Services</a></li>\n        <li data-globalNavDetail="globalNavDetailApiPlatform" ><a target="_blank" href="https://enterprise.apigee.com">API Platform</a></li>\n        <li data-globalNavDetail="globalNavDetailApiConsoles"><a target="_blank" href="http://apigee.com/providers">API Consoles</a></li>\n      </ul>\n    </li>\n    <li id="globalNavDetail">\n      <div id="globalNavDetailApigeeHome">\n        <div class="globalNavDetailApigeeLogo"></div>\n        <div class="globalNavDetailDescription">You need apps and apps need APIs. Apigee is the leading API platform for enterprises and developers.</div>\n      </div>\n      <div id="globalNavDetailAppServices">\n        <div class="globalNavDetailSubtitle">For App Developers</div>\n        <div class="globalNavDetailTitle">App Services</div>\n        <div class="globalNavDetailDescription">Build engaging applications, store data, manage application users, and more.</div>\n      </div>\n      <div id="globalNavDetailApiPlatform">\n        <div class="globalNavDetailSubtitle">For API Developers</div>\n        <div class="globalNavDetailTitle">API Platform</div>\n        <div class="globalNavDetailDescription">Create, configure, manage and analyze your APIs and resources.</div>\n      </div>\n      <div id="globalNavDetailApiConsoles">\n        <div class="globalNavDetailSubtitle">For API Developers</div>\n        <div class="globalNavDetailTitle">API Consoles</div>\n        <div class="globalNavDetailDescription">Explore over 100 APIs with the Apigee API Console, or create and embed your own API Console.</div>\n      </div>\n    </li>\n  </ul>\n</li>'),$templateCache.put("global/insecure-banner.html",'<div ng-if="securityWarning" ng-cloak class="demo-holder">\n    <div class="alert alert-demo alert-animate">\n        <div class="alert-text">\n            <i class="pictogram">&#9888;</i>Warning: This application has "sandbox" permissions and is not production ready. <a target="_blank" href="http://apigee.com/docs/app-services/content/securing-your-app">Please go to our security documentation to find out more.</a></span>\n        </div>\n    </div>\n</div>'),$templateCache.put("global/page-title.html",'<section class="row-fluid">\n    <div class="span12">\n        <div class="page-filters">\n            <h1 class="title pull-left" id="pageTitle"><i class="pictogram title" style="padding-right: 5px;">{{icon}}</i>{{title}} <a class="super-help" href="http://community.apigee.com/content/apigee-customer-support" target="_blank"  >(need help?)</a></h1>\n        </div>\n    </div>\n    <bsmodal id="need-help"\n             title="Need Help?"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="sendHelp"\n             extrabuttonlabel="Get Help"\n             ng-cloak>\n        <p>Do you want to contact support? Support will get in touch with you as soon as possible.</p>\n    </bsmodal>\n</section>\n\n'),$templateCache.put("groups/groups-activities.html",'<div class="content-page" ng-controller="GroupsActivitiesCtrl">\n\n  <br>\n  <div>\n    <table class="table table-striped">\n      <tbody>\n      <tr class="table-header">\n        <td>Date</td>\n        <td>Content</td>\n        <td>Verb</td>\n        <td>UUID</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="activity in selectedGroup.activities">\n        <td>{{activity.createdDate}}</td>\n        <td>{{activity.content}}</td>\n        <td>{{activity.verb}}</td>\n        <td>{{activity.uuid}}</td>\n      </tr>\n      </tbody>\n    </table>\n  </div>\n\n\n</div>'),$templateCache.put("groups/groups-details.html",'<div class="content-page" ng-controller="GroupsDetailsCtrl">\n\n  <div>\n      <form name="updateGroupDetailForm" ng-submit="saveSelectedGroup()" novalidate>\n          <div style="float: left; padding-right: 30px;">\n              <h4 class="ui-dform-legend">Group Information</h4>\n              <label for="group-title" class="ui-dform-label">Group Title</label>\n              <input type="text" id="group-title" ng-pattern="titleRegex" ng-attr-title="{{titleRegexDescription}}" required class="ui-dform-text" ng-model="group.title" ug-validate>\n                  <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'group title box\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_details_title}}" tooltip-placement="right">(?)</a>\n              <br/>\n            <label for="group-path" class="ui-dform-label">Group Path</label>\n            <input type="text" id="group-path" required ng-attr-title="{{pathRegexDescription}}" placeholder="ex: /mydata" ng-pattern="pathRegex" class="ui-dform-text" ng-model="group.path" ug-validate>\n                <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'group path box\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_details_path}}" tooltip-placement="right">(?)</a>\n            <br/>\n          </div>\n          <br style="clear:both"/>\n\n          <div style="width:100%;float:left;padding: 20px 0">\n              <input type="submit" value="Save Group" style="margin-right: 15px;" ng-disabled="!updateGroupDetailForm.$valid" class="btn btn-primary" />\n          </div>\n\n          <div class="content-container">\n              <h4>JSON Group Object <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'group json object\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_json_object}}" tooltip-placement="right">(?)</a></h4>\n              <pre id="{{help.showJsonId}}">{{json}}</pre>\n          </div>\n      </form>\n  </div>\n\n\n</div>'),$templateCache.put("groups/groups-members.html",'<div class="content-page" ng-controller="GroupsMembersCtrl">\n\n\n  <bsmodal id="removeFromGroup"\n           title="Confirmation"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="removeUsersFromGroupDialog"\n           extrabuttonlabel="Delete"\n           ng-cloak>\n    <p>Are you sure you want to remove the users from the seleted group(s)?</p>\n  </bsmodal>\n\n  <bsmodal id="addGroupToUser"\n           title="Add user to group"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="addGroupToUserDialog"\n           extrabuttonlabel="Add"\n           ng-cloak>\n    <div class="btn-group">\n      <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n        <span class="filter-label">{{$parent.user != \'\' ? $parent.user.username : \'Select a user...\'}}</span>\n        <span class="caret"></span>\n      </a>\n      <ul class="dropdown-menu">\n        <li ng-repeat="user in $parent.usersTypeaheadValues" class="filterItem"><a ng-click="$parent.$parent.user = user">{{user.username}}</a></li>\n      </ul>\n    </div>\n  </bsmodal>\n\n\n  <div class="button-strip">\n    <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'group add user button\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_users_add_user}}" tooltip-placement="left">(?)</a>\n    <button class="btn btn-primary"  ng-click="showModal(\'addGroupToUser\')">Add User to Group</button>\n    <button class="btn btn-primary" ng-disabled="!hasMembers || !valueSelected(groupsCollection.users._list)" ng-click="showModal(\'removeFromGroup\')">Remove User(s) from Group</button>\n  </div>\n  <table class="table table-striped">\n    <tr class="table-header">\n      <td style="width: 30px;"><input type="checkbox" ng-show="hasMembers" id="selectAllCheckbox" ng-model="groupMembersSelected" ng-click="selectAllEntities(groupsCollection.users._list,this,\'groupMembersSelected\')"></td>\n      <td style="width: 50px;"></td>\n      <td>Username</td>\n      <td>Display Name</td>\n    </tr>\n    <tr class="zebraRows" ng-repeat="user in groupsCollection.users._list">\n      <td>\n        <input\n          type="checkbox"\n          ng-model="user.checked"\n          >\n      </td>\n      <td><img style="width:30px;height:30px;" ng-src="{{user._portal_image_icon}}"></td>\n      <td>{{user.get(\'username\')}}</td>\n      <td>{{user.get(\'name\')}}</td>\n    </tr>\n  </table>\n  <div style="padding: 10px 5px 10px 5px">\n    <button class="btn btn-primary" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n    <button class="btn btn-primary" ng-click="getNext()" style="display:{{next_display}}; float:right;">Next ></button>\n  </div>\n</div>'),$templateCache.put("groups/groups-roles.html",'<div class="content-page" ng-controller="GroupsRolesCtrl">\n\n  <bsmodal id="addGroupToRole"\n           title="Add group to role"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="addGroupToRoleDialog"\n           extrabuttonlabel="Add"\n           ng-cloak>\n    <div class="btn-group">\n      <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n        <span class="filter-label">{{$parent.name != \'\' ? $parent.name : \'Role name...\'}}</span>\n        <span class="caret"></span>\n      </a>\n      <ul class="dropdown-menu">\n        <li ng-repeat="role in $parent.rolesTypeaheadValues" class="filterItem"><a ng-click="$parent.$parent.name = role.name">{{role.name}}</a></li>\n      </ul>\n    </div>\n  </bsmodal>\n\n  <bsmodal id="leaveRoleFromGroup"\n           title="Confirmation"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="leaveRoleDialog"\n           extrabuttonlabel="Leave"\n           ng-cloak>\n    <p>Are you sure you want to remove the group from the role(s)?</p>\n  </bsmodal>\n\n\n  <div class="button-strip">\n    <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'groups roles add role button\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_roles_add_leave_role}}" tooltip-placement="left">(?)</a>\n    <button class="btn btn-primary" ng-click="showModal(\'addGroupToRole\')">Add Role to Group</button>\n    <button class="btn btn-primary" ng-disabled="!hasRoles || !valueSelected(groupsCollection.roles._list)" ng-click="showModal(\'leaveRoleFromGroup\')">Remove Role(s) from Group</button>\n  </div>\n  <h4>Roles <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'groups roles roles list\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_roles_roles}}" tooltip-placement="top">(?)</a></h4>\n  <table class="table table-striped">\n    <tbody>\n    <tr class="table-header">\n      <td style="width: 30px;"><input type="checkbox" ng-show="hasRoles" id="groupsSelectAllCheckBox" ng-model="groupRoleSelected" ng-click="selectAllEntities(groupsCollection.roles._list,this,\'groupRoleSelected\')" ></td>\n      <td>Role Name</td>\n      <td>Role title</td>\n    </tr>\n    <tr class="zebraRows" ng-repeat="role in groupsCollection.roles._list">\n      <td>\n        <input\n          type="checkbox"\n          ng-model="role.checked"\n          >\n      </td>\n      <td>{{role._data.name}}</td>\n      <td>{{role._data.title}}</td>\n    </tr>\n    </tbody>\n  </table>\n  <div style="padding: 10px 5px 10px 5px">\n    <button class="btn btn-primary" ng-click="getPreviousRoles()" style="display:{{roles_previous_display}}">< Previous</button>\n    <button class="btn btn-primary" ng-click="getNextRoles()" style="display:{{roles_next_display}};float:right;">Next ></button>\n  </div>\n\n\n  <bsmodal id="deletePermission"\n           title="Confirmation"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="deleteGroupPermissionDialog"\n           extrabuttonlabel="Delete"\n           ng-cloak>\n    <p>Are you sure you want to delete the permission(s)?</p>\n  </bsmodal>\n\n\n  <bsmodal id="addPermission"\n           title="New Permission"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="addGroupPermissionDialog"\n           extrabuttonlabel="Add"\n           ng-cloak>\n    <p>Path: <input ng-model="$parent.permissions.path" placeholder="ex: /mydata" id="groupsrolespermissions" type="text" ng-pattern="pathRegex" ng-attr-title="{{pathRegexDescription}}" required ug-validate  /> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles new permission path box\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_roles_new_permission_path}}" tooltip-placement="right">(?)</a></p>\n    <div class="control-group">\n      <input type="checkbox" ng-model="$parent.permissions.getPerm"> GET <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles add permission button\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_roles_new_permission_verbs}}" tooltip-placement="right">(?)</a>\n    </div>\n    <div class="control-group">\n      <input type="checkbox" ng-model="$parent.permissions.postPerm"> POST\n    </div>\n    <div class="control-group">\n      <input type="checkbox" ng-model="$parent.permissions.putPerm"> PUT\n    </div>\n    <div class="control-group">\n      <input type="checkbox" ng-model="$parent.permissions.deletePerm"> DELETE\n    </div>\n  </bsmodal>\n\n\n  <div class="button-strip">\n    <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'groups roles add permission button\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_roles_add_delete_permission}}" tooltip-placement="left">(?)</a>\n    <button class="btn btn-primary" ng-click="showModal(\'addPermission\')">Add Permission</button>\n    <button class="btn btn-primary" ng-disabled="!hasPermissions || !valueSelected(selectedGroup.permissions)" ng-click="showModal(\'deletePermission\')">Delete Permission(s)</button>\n  </div>\n  <h4>Permissions <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'groups roles permissions list\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_roles_permissions}}" tooltip-placement="top">(?)</a>\n  </h4>\n  <table class="table table-striped">\n    <tbody>\n    <tr class="table-header">\n      <td style="width: 30px;"><input ng-show="hasPermissions" type="checkbox" id="permissionsSelectAllCheckBox" ng-model="groupPermissionsSelected" ng-click="selectAllEntities(selectedGroup.permissions,this,\'groupPermissionsSelected\')"  ></td>\n      <td>Path</td>\n      <td>GET</td>\n      <td>POST</td>\n      <td>PUT</td>\n      <td>DELETE</td>\n    </tr>\n    <tr class="zebraRows" ng-repeat="permission in selectedGroup.permissions">\n      <td>\n        <input\n          type="checkbox"\n          ng-model="permission.checked"\n          >\n      </td>\n      <td>{{permission.path}}</td>\n      <td>{{permission.operations.get}}</td>\n      <td>{{permission.operations.post}}</td>\n      <td>{{permission.operations.put}}</td>\n      <td>{{permission.operations.delete}}</td>\n    </tr>\n    </tbody>\n  </table>\n\n</div>'),$templateCache.put("groups/groups-tabs.html",'<div class="content-page">\n\n  <section class="row-fluid">\n\n    <div class="span12">\n      <div class="page-filters">\n        <h1 class="title" class="pull-left"><i class="pictogram title">&#128101;</i> Groups</h1>\n      </div>\n    </div>\n\n  </section>\n\n  <div id="user-panel" class="panel-buffer">\n    <ul id="user-panel-tab-bar" class="nav nav-tabs">\n      <li><a href="javaScript:void(0);" ng-click="gotoPage(\'groups\')">Group List</a></li>\n      <li ng-class="detailsSelected"><a href="javaScript:void(0);" ng-click="gotoPage(\'groups/details\')">Details</a></li>\n      <li ng-class="membersSelected"><a href="javaScript:void(0);" ng-click="gotoPage(\'groups/members\')">Users</a></li>\n      <li ng-class="activitiesSelected"><a href="javaScript:void(0);" ng-click="gotoPage(\'groups/activities\')">Activities</a></li>\n      <li ng-class="rolesSelected"><a href="javaScript:void(0);" ng-click="gotoPage(\'groups/roles\')">Roles &amp; Permissions</a></li>\n    </ul>\n  </div>\n\n  <div style="float: left; margin-right: 10px;">\n    <div style="float: left;">\n      <div class="user-header-title"><strong>Group Path: </strong>{{selectedGroup.get(\'path\')}}</div>\n      <div class="user-header-title"><strong>Group Title: </strong>{{selectedGroup.get(\'title\')}}</div>\n    </div>\n  </div>\n</div>\n<br>\n<br>\n'),$templateCache.put("groups/groups.html",'<div class="content-page">\n\n  <div id="intro-page" >\n  <page-title title=" Groups" icon="&#128101;"></page-title>\n    \n  </div>\n  <bsmodal id="newGroup"\n           title="New Group"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="newGroupDialog"\n           extrabuttonlabel="Add"\n           ng-model="dialog"\n           ng-cloak>\n    <fieldset>\n      <div class="control-group">\n        <label for="title">Title</label>\n        <div class="controls">\n          <input type="text" id="title" ng-pattern="titleRegex" ng-attr-title="{{titleRegexDescription}}" required ng-model="newGroup.title"class="input-xlarge" ug-validate/>\n          <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'group title box\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_details_title}}" tooltip-placement="right">(?)</a>\n        </div>\n      </div>\n      <div class="control-group">\n        <label for="path">Path</label>\n        <div class="controls">\n          <input id="path" type="text" ng-attr-title="{{pathRegexDescription}}" placeholder="ex: /mydata" ng-pattern="pathRegex" required ng-model="newGroup.path" class="input-xlarge" ug-validate/>\n          <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'group path box\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_details_path}}" tooltip-placement="right">(?)</a>\n        </div>\n      </div>\n    </fieldset>\n  </bsmodal>\n\n  <bsmodal id="deleteGroup"\n           title="Delete Group"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="deleteGroupsDialog"\n           extrabuttonlabel="Delete"\n           ng-cloak>\n    <p>Are you sure you want to delete the group(s)?</p>\n  </bsmodal>\n\n\n  <section class="row-fluid">\n    <div id="intro-list" class="span3 user-col">\n      <div class="button-toolbar span12">\n        <a title="Select All" class="btn btn-primary select-all toolbar" ng-show="hasGroups" ng-click="selectAllEntities(groupsCollection._list,this,\'groupBoxesSelected\',true)"> <i class="pictogram">&#8863;</i></a>\n        <button title="Delete" class="btn btn-primary toolbar" ng-disabled="!hasGroups || !valueSelected(groupsCollection._list)" ng-click="showModal(\'deleteGroup\')"><i class="pictogram">&#9749;</i></button>\n        <button title="Add" class="btn btn-primary toolbar" ng-click="showModal(\'newGroup\')"><i class="pictogram">&#59136;</i></button>\n        <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users list\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_add_remove_buttons}}" tooltip-placement="right">(?)</a>\n      </div>\n      <ul class="user-list">\n        <li ng-class="selectedGroup._data.uuid === group._data.uuid ? \'selected\' : \'\'" ng-repeat="group in groupsCollection._list" ng-click="selectGroup(group._data.uuid)">\n          <input\n              type="checkbox"\n              ng-value="group._data.uuid"\n              ng-checked="group.checked"\n              ng-model="group.checked"\n              >\n          <a href="javaScript:void(0)" >{{group.get(\'title\')}}</a>\n          <br/>\n          <span ng-if="group.get(\'path\')" class="label">Path:</span>/{{group.get(\'path\')}}\n        </li>\n      </ul>\n\n\n      <div style="padding: 10px 5px 10px 5px">\n        <button class="btn btn-primary" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n        <button class="btn btn-primary" ng-click="getNext()" style="display:{{next_display}}; float:right;">Next ></button>\n      </div>\n    </div>\n\n    <div id="{{help.showTabsId}}" class="span9 tab-content" ng-show="selectedGroup.get" >\n      <div class="menu-toolbar">\n        <ul class="inline" >\n          <li class="tab" ng-class="currentGroupsPage.route === \'/groups/details\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectGroupPage(\'/groups/details\')"><i class="pictogram">&#59170;</i>Details</a>\n             <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'groups details tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_details_tab}}" tooltip-placement="right">(?)</a></div>\n          </li>\n          <li class="tab" ng-class="currentGroupsPage.route === \'/groups/members\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectGroupPage(\'/groups/members\')"><i class="pictogram">&#128101;</i>Users</a>\n             <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'groups users tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_users_tab}}" tooltip-placement="right">(?)</a></div>\n          </li>\n          <li class="tab" ng-class="currentGroupsPage.route === \'/groups/activities\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectGroupPage(\'/groups/activities\')"><i class="pictogram">&#59194;</i>Activities</a>\n             <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'groups activities tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_activities_tab}}" tooltip-placement="right">(?)</a></div>\n          </li>\n          <li class="tab" ng-class="currentGroupsPage.route === \'/groups/roles\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectGroupPage(\'/groups/roles\')"><i class="pictogram">&#127758;</i>Roles &amp; Permissions</a>\n             <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'groups role tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_roles_tab}}" tooltip-placement="right">(?)</a></div>\n          </li>\n        </ul>\n      </div>\n      <span ng-include="currentGroupsPage.template"></span>\n\n  </section>\n</div>\n'),$templateCache.put("login/forgot-password.html",'<div class="login-content" ng-controller="ForgotPasswordCtrl">\n	<iframe class="container" ng-src="{{forgotPWiframeURL}}" id="forgot-password-frame" border="0" style="border:0;width:600px;height:620px;">\n	<p>Email Address: <input id="resetPasswordEmail" name="resetPasswordEmail" /></p>\n	<button class="btn btn-primary" ng-click="">Reset Password</button>\n</div>\n'),$templateCache.put("login/loading.html","\n\n<h1>Loading...</h1>"),$templateCache.put("login/login.html",'<div class="login-content">\r\n  <bsmodal id="sendActivationLink"\r\n           title="Resend Activation Link"\r\n           close="hideModal"\r\n           closelabel="Cancel"\r\n           extrabutton="resendActivationLink"\r\n           extrabuttonlabel="Send Activation"\r\n           ng-cloak>\r\n    <fieldset>\r\n      <p>Email to send to: <input type="email" required ng-model="$parent.activation.id" ng-pattern="emailRegex" ng-attr-title="{{emailRegexDescription}}" name="activationId" id="user-activationId" class="input-xlarge"/></p>\r\n    </fieldset>\r\n  </bsmodal>\r\n  <div class="login-holder">\r\n  <form name="loginForm" id="login-form"  ng-submit="login()" class="form-horizontal" novalidate>\r\n    <h1 class="title">Enter your credentials</h1>\r\n    <div class="alert-error" id="loginError" ng-if="loginMessage">{{loginMessage}}</div>\r\n    <div class="control-group">\r\n      <label class="control-label" for="login-username">Email or Username:</label>\r\n      <div class="controls">\r\n        <input type="text" ng-model="login.username"  title="Please add a username or email."  class="" id="login-username" required ng-value="login.username" size="20" ug-validate>\r\n      </div>\r\n    </div>\r\n    <div class="control-group">\r\n      <label class="control-label" for="login-password">Password:</label>\r\n      <div class="controls">\r\n        <input type="password" ng-model="login.password"  required id="login-password" class="" ng-value="login.password" size="20" ug-validate>\r\n      </div>\r\n    </div>\r\n    <div class="control-group" ng-show="requiresDeveloperKey">\r\n      <label class="control-label" for="login-developerkey">Developer Key:</label>\r\n      <div class="controls">\r\n        <input type="text" ng-model="login.developerkey" id="login-developerkey" class="" ng-value="login.developerkey" size="20" ug-validate>\r\n      </div>\r\n    </div>\r\n    <div class="form-actions">\r\n      <div class="submit">\r\n        <input type="submit" name="button-login" id="button-login" ng-disabled="!loginForm.$valid || loading" value="{{loading ? loadingText : \'Log In\'}}" class="btn btn-primary pull-right">\r\n      </div>\r\n    </div>\r\n  </form>\r\n  </div>\r\n  <div class="extra-actions">\r\n    <div class="submit">\r\n      <a ng-click="gotoSignUp()"   name="button-signUp" id="button-signUp" value="Sign Up"\r\n         class="btn btn-primary pull-left">Register</a>\r\n    </div>\r\n    <div class="submit">\r\n      <a ng-click="gotoForgotPasswordPage()" name="button-forgot-password" id="button-forgot-password"\r\n         value="" class="btn btn-primary pull-left">Forgot Password?</a>\r\n    </div>\r\n    <a ng-click="showModal(\'sendActivationLink\')"  name="button-resend-activation" id="button-resend-activation"\r\n       value="" class="btn btn-primary pull-left">Resend Activation Link</a>\r\n  </div>\r\n  <div id="gtm" style="width: 450px;margin-top: 4em;" />\r\n</div>\r\n'),$templateCache.put("login/logout.html",'<div id="logut">Logging out...</div>'),$templateCache.put("login/register.html",'<div class="signUp-content">\n  <div class="signUp-holder">\n    <form name="signUpform" id="signUp-form" ng-submit="register()" class="form-horizontal" ng-show="!signUpSuccess" novalidate>\n      <h1 class="title">Register</h1>\n\n      <div class="alert" ng-if="loginMessage">{{loginMessage}}</div>\n      <div class="control-group">\n        <label class="control-label" for="register-orgName">Organization:</label>\n\n        <div class="controls">\n          <input type="text" ng-model="registeredUser.orgName" id="register-orgName" ng-pattern="appNameRegex" ng-attr-title="{{appNameRegexDescription}}" ug-validate  required class="" size="20">\n        </div>\n      </div>\n\n      <div class="control-group">\n        <label class="control-label" for="register-name">Name:</label>\n\n        <div class="controls">\n          <input type="text" ng-model="registeredUser.name" id="register-name" ng-pattern="nameRegex" ng-attr-title="{{nameRegexDescription}}" ug-validate required class="" size="20">\n        </div>\n      </div>\n\n      <div class="control-group">\n        <label class="control-label" for="register-userName">Username:</label>\n\n        <div class="controls">\n          <input type="text" ng-model="registeredUser.userName" id="register-userName" ng-pattern="usernameRegex" ng-attr-title="{{usernameRegexDescription}}" ug-validate required class="" size="20">\n        </div>\n      </div>\n\n      <div class="control-group">\n        <label class="control-label" for="register-email">Email:</label>\n\n        <div class="controls">\n          <input type="email" ng-model="registeredUser.email" id="register-email"  ng-pattern="emailRegex" ng-attr-title="{{emailRegexDescription}}"  required class="" ug-validate size="20">\n        </div>\n      </div>\n\n\n      <div class="control-group">\n        <label class="control-label" for="register-password">Password:</label>\n\n        <div class="controls">\n          <input type="password" ng-pattern="passwordRegex" ng-attr-title="{{passwordRegexDescription}}" ug-validate ng-model="registeredUser.password" id="register-password" required class=""\n                 size="20">\n        </div>\n      </div>\n      <div class="control-group">\n        <label class="control-label" for="register-confirmPassword">Re-enter Password:</label>\n\n        <div class="controls">\n          <input type="password" ng-model="registeredUser.confirmPassword" required id="register-confirmPassword" ug-validate class="" size="20">\n        </div>\n      </div>\n      <div class="form-actions">\n        <div class="submit">\n          <input type="submit" name="button-login" ng-disabled="!signUpform.$valid" id="button-login" value="Register"\n                 class="btn btn-primary pull-right">\n        </div>\n        <div class="submit">\n          <a ng-click="cancel()" type="submit" name="button-cancel" id="button-cancel"\n             class="btn btn-primary pull-right">Cancel</a>\n        </div>\n      </div>\n    </form>\n    <div class="console-section well thingy" ng-show="signUpSuccess">\n      <span class="title">We\'re holding a seat for you!</span>\n      <br><br>\n\n      <p>Thanks for signing up for a spot on our private beta. We will send you an email as soon as we\'re ready for\n        you!</p>\n\n      <p>In the mean time, you can stay up to date with App Services on our <a\n          href="https://groups.google.com/forum/?fromgroups#!forum/usergrid">GoogleGroup</a>.</p>\n\n      <p> <a href="#!/login">Back to login</a></p>\n    </div>\n  </div>\n\n</div>\n'),$templateCache.put("menu.html",'<ul class="nav nav-list" menu="sideMenu">\n    <li class="option {{item.active ? \'active\' : \'\'}}" ng-cloak="" ng-repeat="item in menuItems"><a data-ng-href="{{item.path}}"><i class="pictogram" ng-bind-html="item.pic"></i>{{item.title}}</a>\n        <ul class="nav nav-list" ng-if="item.items">\n            <li ng-repeat="subItem in item.items"><a data-ng-href="{{subItem.path}}"><i class="pictogram sub" ng-bind-html="subItem.pic"></i>{{subItem.title}}</a>\n            </li>\n        </ul>\n    </li>\n</ul>'),$templateCache.put("menus/appMenu.html",'<ul id="app-menu" class="nav top-nav span12">\n    <li class="span7">\n      <bsmodal id="newApplication"\n               title="Create New Application"\n               close="hideModal"\n               closelabel="Cancel"\n               extrabutton="newApplicationDialog"\n               extrabuttonlabel="Create"\n               buttonid="app"\n               ng-cloak>\n        <div ng-show="!hasApplications" class="modal-instructions" >You have no applications, please create one.</div>\n        <div  ng-show="hasCreateApplicationError" class="alert-error">Application already exists!</div>\n        <p>New application name: <input ng-model="$parent.newApp.name" id="app-name-input" ng-pattern="appNameRegex"  ng-attr-title="{{appNameRegexDescription}}" type="text" required ug-validate /></p>\n      </bsmodal>\n        <div class="btn-group">\n            <a class="btn dropdown-toggle top-selector app-selector" id="current-app-selector" data-toggle="dropdown">\n                <i class="pictogram">&#9881;</i> {{myApp.currentApp}}\n                <span class="caret"></span>\n            </a>\n            <ul class="dropdown-menu app-nav">\n                <li name="app-selector" ng-repeat="app in applications">\n                    <a id="app-{{app.name}}-link-id" ng-click="appChange(app.name)">{{app.name}}</a>\n                </li>\n            </ul>\n        </div>\n    </li>\n    <li class="span5">\n      <a ng-if="activeUI"\n         class="btn btn-create zero-out pull-right"\n         ng-click="showModal(\'newApplication\')"\n         analytics-on="click"\n         analytics-category="App Services"\n         analytics-label="Button"\n         analytics-event="Add New App"\n        >\n        <i class="pictogram">&#8862;</i>\n        Add New App\n      </a>\n    </li>\n</ul>'),$templateCache.put("menus/orgMenu.html",'<ul class="nav top-nav org-nav">\n  <li>\n<div class="btn-group ">\n    <a class="btn dropdown-toggle top-selector org-selector" id="current-org-selector" data-toggle="dropdown">\n        <i class="pictogram">&#128193</i> {{currentOrg}}<span class="caret"></span>\n        </a>\n    <ul class="dropdown-menu org-nav">\n          <li name="org-selector" ng-repeat="(k,v) in organizations">\n              <a id="org-{{v.name}}-selector" class="org-overview" ng-click="orgChange(v.name)"> {{v.name}}</a>\n            </li>\n         </ul>\n    </div>\n  </li></ul>'),$templateCache.put("org-overview/org-overview.html",'<div class="org-overview-content" ng-show="activeUI">\n\n  <page-title title=" Org Administration" icon="&#128362;"></page-title>\n\n  <section class="row-fluid">\n\n  <div class="span6">\n  	<bsmodal id="introjs"\n             title="Welcome to the API BaaS Admin Portal"\n             close="hideModal"\n             closelabel="Skip"\n             extrabutton="startFirstTimeUser"\n             extrabuttonlabel="Take the tour"\n             ng-cloak>\n      <p>To get started, click \'Take the tour\' for a full walkthrough of the admin portal, or click \'Skip\' to start working right away.</p>\n    </bsmodal>\n		<div id="intro-4-current-org">	\n	    <h2 class="title">Current Organization <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'current org\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_current_org}}" tooltip-placement="right">(?)</a></h2>\n	    <table class="table table-striped">\n	      <tr>\n	        <td id="org-overview-name">{{currentOrganization.name}}</td>\n	        <td style="text-align: right">{{currentOrganization.uuid}}</td>\n	      </tr>\n	    </table>\n		</div>\n\n    <bsmodal id="newApplication"\n             title="Create New Application"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="newApplicationDialog"\n             extrabuttonlabel="Create"\n             ng-cloak>\n      <p>New application name: <input ng-model="$parent.newApp.name"  ug-validate required type="text" ng-pattern="appNameRegex" ng-attr-title="{{appNameRegexDescription}}" /></p>\n    </bsmodal>\n		<div id="intro-5-applications">		\n	    <h2 class="title" > Applications <a class="help_tooltip" ng-show="help.helpTooltipsEnabled" ng-mouseover="help.sendTooltipGA(\'applications\')" href="#" ng-attr-tooltip="{{tooltip_applications}}" tooltip-placement="right">(?)</a>\n	      <div class="header-button btn-group pull-right">\n	        <a class="btn filter-selector" style="{{applicationsSize === 10 ? \'width:290px\':\'\'}}"  ng-click="showModal(\'newApplication\')">\n	          <span class="filter-label">Add New App</span>\n	        </a>\n	      </div>\n	    </h2>\n		\n	    <table class="table table-striped">\n	      <tr ng-repeat="application in applications">\n	        <td>{{application.name}}</td>\n	        <td style="text-align: right">{{application.uuid}}</td>\n	      </tr>\n	    </table>\n		</div>\n    <bsmodal id="regenerateCredentials"\n             title="Confirmation"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="regenerateCredentialsDialog"\n             extrabuttonlabel="Yes"\n             ng-cloak>\n      Are you sure you want to regenerate the credentials?\n    </bsmodal>\n		<div id="intro-6-org-api-creds">\n	    <h2 class="title" >Organization API Credentials <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'api org credentials\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_org_api_creds}}" tooltip-placement="right">(?)</a>\n	      <div class="header-button btn-group pull-right">\n	        <a class="btn filter-selector" ng-click="showModal(\'regenerateCredentials\')">\n	          <span class="filter-label">Regenerate Org Credentials</span>\n	        </a>\n	      </div>\n	    </h2>\n	\n	    <table class="table table-striped">\n	      <tr>\n	        <td >Client ID</td>\n	        <td style="text-align: right" >{{orgAPICredentials.client_id}}</td>\n	      </tr>\n	      <tr>\n	        <td>Client Secret</td>\n	        <td style="text-align: right">{{orgAPICredentials.client_secret}}</td>\n	      </tr>\n	    </table>\n		</div>\n    <bsmodal id="newAdministrator"\n             title="Create New Administrator"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="newAdministratorDialog"\n             extrabuttonlabel="Create"\n             ng-cloak>\n      <p>New administrator email: <input id="newAdminInput" ug-validate ng-model="$parent.admin.email" pattern="emailRegex" ng-attr-title="{{emailRegexDescription}}" required type="email" /></p>\n    </bsmodal>\n		<div id="intro-7-org-admins">\n	    <h2 class="title" >Organization Administrators <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'org admins\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_org_admins}}" tooltip-placement="right">(?)</a>\n	      <div class="header-button btn-group pull-right">\n	        <a class="btn filter-selector" ng-click="showModal(\'newAdministrator\')">\n	          <span class="filter-label">Add New Administrator</span>\n	        </a>\n	      </div>\n	    </h2>\n	\n	    <table class="table table-striped">\n	      <tr ng-repeat="administrator in orgAdministrators">\n	        <td><img style="width:30px;height:30px;" ng-src="{{administrator.image}}"> {{administrator.name}}</td>\n	        <td style="text-align: right">{{administrator.email}}</td>\n	      </tr>\n	    </table>\n			</div>\n  </div>\n\n  <div class="span6">\n  	<div id="intro-8-activities">\n	    <h2 class="title">Activities <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'activities\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_activities}}" tooltip-placement="right">(?)</a></h2>\n	    <table class="table table-striped">\n	      <tr ng-repeat="activity in activities">\n	        <td>{{activity.title}}</td>\n	        <td style="text-align: right">{{activity.date}}</td>\n	      </tr>\n	    </table>\n	</div>\n  </div>\n\n\n  </section>\n</div>'),$templateCache.put("profile/account.html",'<page-title title=" Account Settings" icon="&#59170"></page-title>\n\n<section class="row-fluid">\n  <div class="span12 tab-content">\n    <div class="menu-toolbar">\n      <ul class="inline">\n        <li class="tab" ng-show="!use_sso" ng-class="currentAccountPage.route === \'/profile/profile\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" id="profile-link" ng-click="selectAccountPage(\'/profile/profile\')"><i class="pictogram">&#59170;</i>Profile</a></li>\n        <li class="tab" ng-class="currentAccountPage.route === \'/profile/organizations\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" id="account-link" ng-click="selectAccountPage(\'/profile/organizations\')"><i class="pictogram">&#128101;</i>Organizations</a></li>\n      </ul>\n    </div>\n    <span ng-include="currentAccountPage.template"></span>\n  </div>\n</section>'),$templateCache.put("profile/organizations.html",'<div class="content-page"   ng-controller="OrgCtrl">\n\n\n\n  <bsmodal id="newOrganization"\n           title="Create New Organization"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="addOrganization"\n           extrabuttonlabel="Create"\n           ng-cloak>\n    <fieldset>\n\n      <div class="control-group">\n        <label for="new-user-orgname">Organization Name</label>\n\n        <div class="controls">\n          <input type="text" required title="Name" ug-validate ng-pattern="nameRegex" ng-attr-title="{{nameRegexDescription}}" ng-model="$parent.org.name" name="name" id="new-user-orgname" class="input-xlarge"/>\n\n          <p class="help-block hide"></p>\n        </div>\n      </div>\n\n    </fieldset>\n  </bsmodal>\n\n\n      <div class="row-fluid" >\n      <div class="span3 user-col ">\n\n        <div class="button-toolbar span12">\n\n          <button class="btn btn-primary toolbar" ng-click="showModal(\'newOrganization\')" ng-show="true"><i class="pictogram">&#59136;</i>\n          </button>\n        </div>\n        <ul class="user-list">\n          <li ng-class="selectedOrg.uuid === org.uuid ? \'selected\' : \'\'"\n              ng-repeat="org in orgs" ng-click=" selectOrganization(org)">\n\n            <a href="javaScript:void(0)">{{org.name}}</a>\n          </li>\n        </ul>\n      </div>\n      <div class="span9">\n        <div class="row-fluid" >\n          <h4>Organization Information</h4>\n          <div class="span11" ng-show="selectedOrg">\n            <label  class="ui-dform-label">Applications</label>\n            <table class="table table-striped">\n              <tr ng-repeat="app in selectedOrg.applicationsArray">\n                <td> {{app.name}}</td>\n                <td style="text-align: right">{{app.uuid}}</td>\n              </tr>\n            </table>\n            <br/>\n            <label  class="ui-dform-label">Users</label>\n            <table class="table table-striped">\n              <tr ng-repeat="user in selectedOrg.usersArray">\n                <td> {{user.name}}</td>\n                <td style="text-align: right">{{user.email}}</td>\n              </tr>\n            </table>\n            <form ng-submit="leaveOrganization(selectedOrg)">\n              <input type="submit" name="button-leave-org" id="button-leave-org" title="Can only leave if organization has more than 1 user." ng-disabled="!doesOrgHaveUsers(selectedOrg)" value="Leave Organization" class="btn btn-primary pull-right">\n            </form>\n          </div>\n        </div>\n\n      </div>\n        </div>\n</div>'),$templateCache.put("profile/profile.html",'<div class="content-page" ng-controller="ProfileCtrl">\n\n  <div id="account-panels">\n    <div class="panel-content">\n      <div class="console-section">\n        <div class="console-section-contents">\n          <form name="updateAccountForm" id="update-account-form" ng-submit="saveUserInfo()" class="form-horizontal">\n            <fieldset>\n              <div class="control-group">\n                <label id="update-account-id-label" class="control-label" for="update-account-id">UUID</label>\n                <div class="controls">\n                  <span id="update-account-id" class="monospace">{{user.uuid}}</span>\n                </div>\n              </div>\n              <div class="control-group">\n                <label class="control-label" for="update-account-username">Username </label>\n                <div class="controls">\n                  <input type="text" ug-validate name="update-account-username" required ng-pattern="usernameRegex" id="update-account-username" ng-attr-title="{{usernameRegexDescription}}"  class="span4" ng-model="user.username" size="20"/>\n                </div>\n              </div>\n              <div class="control-group">\n                <label class="control-label" for="update-account-name">Name </label>\n                <div class="controls">\n                  <input type="text" ug-validate name="update-account-name" id="update-account-name" ng-pattern="nameRegex" ng-attr-title="{{nameRegexDescription}}" class="span4" ng-model="user.name" size="20"/>\n                </div>\n              </div>\n              <div class="control-group">\n                <label class="control-label" for="update-account-email"> Email</label>\n                <div class="controls">\n                  <input type="email" ug-validate required name="update-account-email" ng-pattern="emailRegex" ng-attr-title="{{emailRegexDescription}}"  id="update-account-email" class="span4" ng-model="user.email" size="20"/>\n                </div>\n              </div>\n              <div class="control-group">\n                <label class="control-label" for="update-account-picture-img">Picture <br />(from <a href="http://gravatar.com">gravatar.com</a>) </label>\n                <div class="controls">\n                  <img id="update-account-picture-img" ng-src="{{user.profileImg}}" width="50" />\n                </div>\n              </div>\n              <span class="help-block">Leave blank any of the following to keep the current password unchanged</span>\n              <br />\n              <div class="control-group">\n                <label class="control-label" for="old-account-password">Old Password</label>\n                <div class="controls">\n                  <input type="password" ug-validate name="old-account-password"  id="old-account-password" class="span4" ng-model="user.oldPassword" size="20"/>\n                </div>\n              </div>\n              <div class="control-group">\n                <label class="control-label" for="update-account-password">New Password</label>\n                <div class="controls">\n                  <input type="password"  ug-validate name="update-account-password" ng-pattern="passwordRegex" ng-attr-title="{{passwordRegexDescription}}" id="update-account-password" class="span4" ng-model="user.newPassword" size="20"/>\n                </div>\n              </div>\n              <div class="control-group" style="display:none">\n                <label class="control-label" for="update-account-password-repeat">Confirm New Password</label>\n                <div class="controls">\n                  <input type="password" ug-validate name="update-account-password-repeat" ng-pattern="passwordRegex" ng-attr-title="{{passwordRegexDescription}}" id="update-account-password-repeat" class="span4" ng-model="user.newPasswordConfirm" size="20"/>\n                </div>\n              </div>\n            </fieldset>\n            <div class="form-actions">\n              <input type="submit"  class="btn btn-primary"  name="button-update-account" ng-disabled="!updateAccountForm.$valid || loading" id="button-update-account" value="{{loading ? loadingText : \'Update\'}}"  class="btn btn-usergrid"/>\n            </div>\n          </form>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),$templateCache.put("roles/roles-groups.html",'<div class="content-page" ng-controller="RolesGroupsCtrl">\n\n\n  <bsmodal id="addRoleToGroup"\n           title="Add group to role"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="addRoleToGroupDialog"\n           extrabuttonlabel="Add"\n           ng-cloak>\n    <div class="btn-group">\n      <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n        <span class="filter-label">{{$parent.path !== \'\' ? $parent.title : \'Select a group...\'}}</span>\n        <span class="caret"></span>\n      </a>\n      <ul class="dropdown-menu">\n        <li ng-repeat="group in $parent.groupsTypeaheadValues" class="filterItem"><a ng-click="setRoleModal(group)">{{group.title}}</a></li>\n      </ul>\n    </div>\n  </bsmodal>\n\n  <bsmodal id="removeGroupFromRole"\n           title="Confirmation"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="removeGroupFromRoleDialog"\n           extrabuttonlabel="Leave"\n           ng-cloak>\n    <p>Are you sure you want to remove the group from the role(s)?</p>\n  </bsmodal>\n\n\n  <div class="users-section">\n    <div class="button-strip">\n      <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'group add user button\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_groups_add_group}}" tooltip-placement="left">(?)</a>\n        <button class="btn btn-primary" ng-click="showModal(\'addRoleToGroup\')">Add Group to Role</button>\n        <button class="btn btn-primary"  ng-disabled="!hasGroups || !valueSelected(rolesCollection.groups._list)" ng-click="showModal(\'removeGroupFromRole\')">Remove Group(s) from Role</button>\n    </div>\n    <table class="table table-striped">\n      <tr class="table-header">\n        <td style="width: 30px;"><input type="checkbox" ng-show="hasGroups" id="selectAllCheckBox" ng-model="roleGroupsSelected" ng-click="selectAllEntities(rolesCollection.groups._list,this,\'roleGroupsSelected\')"></td>\n        <td>Title</td>\n        <td>Path</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="group in rolesCollection.groups._list">\n        <td>\n          <input\n            type="checkbox"\n            ng-model="group.checked"\n            >\n        </td>\n        <td>{{group._data.title}}</td>\n        <td>{{group._data.path}}</td>\n      </tr>\n    </table>\n    <div style="padding: 10px 5px 10px 5px">\n      <button class="btn btn-primary" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n      <button class="btn btn-primary" ng-click="getNext()" style="display:{{next_display}}" style="float:right;">Next ></button>\n    </div>\n  </div>\n</div>'),$templateCache.put("roles/roles-settings.html",'<div class="content-page" ng-controller="RolesSettingsCtrl">\n  <bsmodal id="deletePermission"\n           title="Confirmation"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="deleteRolePermissionDialog"\n           extrabuttonlabel="Delete"\n           ng-cloak>\n    <p>Are you sure you want to delete the permission(s)?</p>\n  </bsmodal>\n\n\n  <bsmodal id="addPermission"\n           title="New Permission"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="addRolePermissionDialog"\n           extrabuttonlabel="Add"\n           ng-cloak>\n    <p>Path: <input ng-model="$parent.permissions.path" placeholder="ex: /mydata" required ng-pattern="pathRegex" ng-attr-title="{{pathRegexDescription}}" ug-validate id="rolePermissionsPath"/> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles new permission path box\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_roles_new_permission_path}}" tooltip-placement="right">(?)</a></p>\n    <div class="control-group">\n      <input type="checkbox" ng-model="$parent.permissions.getPerm"> GET <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles add permission verbs\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_new_permission_verbs}}" tooltip-placement="right">(?)</a>\n    </div>\n    <div class="control-group">\n      <input type="checkbox" ng-model="$parent.permissions.postPerm"> POST\n    </div>\n    <div class="control-group">\n      <input type="checkbox" ng-model="$parent.permissions.putPerm"> PUT\n    </div>\n    <div class="control-group">\n      <input type="checkbox" ng-model="$parent.permissions.deletePerm"> DELETE\n    </div>\n  </bsmodal>\n\n  <div>\n    <h4>Inactivity <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles inactivity\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_inactivity}}" tooltip-placement="right">(?)</a></h4>\n    <div id="role-permissions">\n        <p>Integer only. 0 (zero) means no expiration.</p>\n\n        <form name="updateActivity" ng-submit="updateInactivity()" novalidate>\n            Seconds: <input style="margin: 0" type="number" required name="role-inactivity"\n                            id="role-inactivity-input" min="0" ng-model="role._data.inactivity" title="Please input a positive integer >= 0."  step = "any" ug-validate >\n            <input type="submit" class="btn btn-primary" ng-disabled="!updateActivity.$valid" value="Set"/>\n        </form>\n    </div>\n\n    <br/>\n    <div class="button-strip">\n      <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'roles details add permission button\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_add_delete_permission}}" tooltip-placement="left">(?)</a>\n      <button class="btn btn-primary" ng-click="showModal(\'addPermission\')">Add Permission</button>\n      <button class="btn btn-primary"  ng-disabled="!hasSettings || !valueSelected(role.permissions)" ng-click="showModal(\'deletePermission\')">Delete Permission(s)</button>\n    </div>\n\n    <h4>Permissions <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'roles settings permissions list\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_permissions}}" tooltip-placement="top">(?)</a></h4>\n    <table class="table table-striped">\n      <tbody>\n      <tr class="table-header">\n        <td style="width: 30px;"><input type="checkbox" ng-show="hasSettings" id="selectAllCheckBox" ng-model="permissionsSelected" ng-click="selectAllEntities(role.permissions,this,\'permissionsSelected\')" ></td>\n        <td>Path</td>\n        <td>GET</td>\n        <td>POST</td>\n        <td>PUT</td>\n        <td>DELETE</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="permission in role.permissions">\n        <td>\n          <input\n            type="checkbox"\n            ng-model="permission.checked"\n            >\n        </td>\n        <td>{{permission.path}}</td>\n        <td>{{permission.operations.get}}</td>\n        <td>{{permission.operations.post}}</td>\n        <td>{{permission.operations.put}}</td>\n        <td>{{permission.operations.delete}}</td>\n      </tr>\n      </tbody>\n    </table>\n  </div>\n</div>'),$templateCache.put("roles/roles-tabs.html",'<div class="content-page">\n  <section class="row-fluid">\n\n    <div class="span12">\n      <div class="page-filters">\n        <h1 class="title" class="pull-left"><i class="pictogram title">&#59170;</i> Roles </h1>\n        <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'roles page title\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_page_title}}" tooltip-placement="right">(?)</a>\n      </div>\n    </div>\n\n  </section>\n\n  <div id="user-panel" class="panel-buffer">\n    <ul id="user-panel-tab-bar" class="nav nav-tabs">\n      <li><a href="javaScript:void(0);" ng-click="gotoPage(\'roles\')">Roles List</a></li>\n      <li ng-class="settingsSelected"><a href="javaScript:void(0);" ng-click="gotoPage(\'roles/settings\')">Settings</a></li>\n      <li ng-class="usersSelected"><a href="javaScript:void(0);" ng-click="gotoPage(\'roles/users\')">Users</a></li>\n      <li ng-class="groupsSelected"><a href="javaScript:void(0);" ng-click="gotoPage(\'roles/groups\')">Groups</a></li>\n    </ul>\n  </div>\n\n  <div style="float: left; margin-right: 10px;">\n    <div style="float: left;">\n      <div class="user-header-title"><strong>Role Name: </strong>{{selectedRole.name}}</div>\n      <div class="user-header-title"><strong>Role Title: </strong>{{selectedRole.title}}</div>\n    </div>\n  </div>\n\n</div>\n<br>\n<br>'),$templateCache.put("roles/roles-users.html",'<div class="content-page" ng-controller="RolesUsersCtrl">\n  <bsmodal id="removeFromRole"\n           title="Confirmation"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="removeUsersFromGroupDialog"\n           extrabuttonlabel="Delete"\n           ng-cloak>\n    <p>Are you sure you want to remove the users from the seleted role(s)?</p>\n  </bsmodal>\n\n  <bsmodal id="addRoleToUser"\n           title="Add user to role"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="addRoleToUserDialog"\n           extrabuttonlabel="Add"\n           ng-cloak>\n    <div class="btn-group">\n      <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n        <span class="filter-label">{{$parent.user.username ? $parent.user.username : \'Select a user...\'}}</span>\n        <span class="caret"></span>\n      </a>\n      <ul class="dropdown-menu">\n        <li ng-repeat="user in $parent.usersTypeaheadValues" class="filterItem"><a ng-click="$parent.$parent.user = user">{{user.username}}</a></li>\n      </ul>\n    </div>\n  </bsmodal>\n\n  <div class="users-section">\n    <div class="button-strip">\n      <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'roles add user button\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_users_add_user}}" tooltip-placement="left">(?)</a>\n        <button class="btn btn-primary" ng-click="showModal(\'addRoleToUser\')">Add User to Role</button>\n        <button class="btn btn-primary"  ng-disabled="!hasUsers || !valueSelected(rolesCollection.users._list)" ng-click="showModal(\'removeFromRole\')">Remove User(s) from Role</button>\n    </div>\n    <table class="table table-striped">\n      <tr class="table-header">\n        <td style="width: 30px;"><input type="checkbox" ng-show="hasUsers" id="selectAllCheckBox" ng-model="roleUsersSelected" ng-click="selectAllEntities(rolesCollection.users._list,this,\'roleUsersSelected\')" ng-model="master"></td>\n        <td style="width: 50px;"></td>\n        <td>Username</td>\n        <td>Display Name</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="user in rolesCollection.users._list">\n        <td>\n          <input\n            type="checkbox"\n            ng-model="user.checked"\n            >\n        </td>\n        <td><img style="width:30px;height:30px;" ng-src="{{user._portal_image_icon}}"></td>\n        <td>{{user._data.username}}</td>\n        <td>{{user._data.name}}</td>\n      </tr>\n    </table>\n    <div style="padding: 10px 5px 10px 5px">\n      <button class="btn btn-primary" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n      <button class="btn btn-primary" ng-click="getNext()" style="display:{{next_display}}; float:right;">Next ></button>\n    </div>\n  </div>\n</div>'),$templateCache.put("roles/roles.html",'<div class="content-page">\n  <div id="intro-page" >\n    <page-title title=" Roles" icon="&#59170;"></page-title>\n  </div>\n\n  <bsmodal id="newRole"\n           title="New Role"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="newRoleDialog"\n           extrabuttonlabel="Create"\n           buttonid="roles"\n           ng-cloak>\n          <fieldset>\n            <div class="control-group">\n              <label for="new-role-roletitle">Title</label>\n              <div class="controls">\n                <input type="text" ng-pattern="titleRegex" ng-attr-title="{{titleRegexDescription}}" required ng-model="$parent.newRole.title" name="roletitle" id="new-role-roletitle" class="input-xlarge" ug-validate/>\n                <p class="help-block hide"></p>\n              </div>\n            </div>\n            <div class="control-group">\n              <label for="new-role-rolename">Role Name</label>\n              <div class="controls">\n                <input type="text" required ng-pattern="roleNameRegex" ng-attr-title="{{roleNameRegexDescription}}" ng-model="$parent.newRole.name" name="rolename" id="new-role-rolename" class="input-xlarge" ug-validate/>\n                <p class="help-block hide"></p>\n              </div>\n            </div>\n          </fieldset>\n  </bsmodal>\n\n  <bsmodal id="deleteRole"\n           title="Delete Role"\n           close="hideModal"\n           closelabel="Cancel"\n           buttonid="deleteroles"\n           extrabutton="deleteRoleDialog"\n           extrabuttonlabel="Delete"\n           ng-cloak>\n    <p>Are you sure you want to delete the role(s)?</p>\n  </bsmodal>\n\n  <section class="row-fluid">\n    <div id="intro-list" class="span3 user-col">\n\n      <div class="button-toolbar span12">\n        <a title="Select All" class="btn btn-primary select-all toolbar" ng-show="hasRoles" ng-click="selectAllEntities(rolesCollection._list,this,\'rolesSelected\',true)"> <i class="pictogram">&#8863;</i></a>\n        <button id="delete-role-btn" title="Delete" class="btn btn-primary toolbar"  ng-disabled="!hasRoles || !valueSelected(rolesCollection._list)" ng-click="showModal(\'deleteRole\')"><i class="pictogram">&#9749;</i></button>\n        <button id="add-role-btn" title="Add" class="btn btn-primary toolbar" ng-click="showModal(\'newRole\')"><i class="pictogram">&#59136;</i></button>\n        <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users add remove buttons\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_add_remove_buttons}}" tooltip-placement="right">(?)</a>      </div>\n\n      <ul class="user-list">\n        <li ng-class="selectedRole._data.uuid === role._data.uuid ? \'selected\' : \'\'" ng-repeat="role in rolesCollection._list" ng-click="selectRole(role._data.uuid)">\n          <input\n              type="checkbox"\n              ng-value="role.get(\'uuid\')"\n              ng-checked="master"\n              ng-model="role.checked"\n              id="role-{{role.get(\'title\')}}-cb"\n              >\n          <a id="role-{{role.get(\'title\')}}-link">{{role.get(\'title\')}}</a>\n          <br/>\n          <span ng-if="role.get(\'name\')" class="label">Role Name:</span>{{role.get(\'name\')}}\n        </li>\n      </ul>\n\n\n\n  <div style="padding: 10px 5px 10px 5px">\n    <button class="btn btn-primary" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n    <button class="btn btn-primary" ng-click="getNext()" style="display:{{next_display}};float:right;">Next ></button>\n  </div>\n\n    </div>\n    \n    <div id="intro-information-tabs" class="span9 tab-content" ng-show="hasRoles">\n      <div class="menu-toolbar">\n        <ul class="inline">\n          <li class="tab" ng-class="currentRolesPage.route === \'/roles/settings\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectRolePage(\'/roles/settings\')"><i class="pictogram">&#59170;</i>Settings</a> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'roles settings tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_settings_tab}}" tooltip-placement="right">(?)</a></div></li>\n          <li class="tab" ng-class="currentRolesPage.route === \'/roles/users\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectRolePage(\'/roles/users\')"><i class="pictogram">&#128101;</i>Users</a> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'roles users tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_users_tab}}" tooltip-placement="right">(?)</a></div></li>\n          <li class="tab" ng-class="currentRolesPage.route === \'/roles/groups\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectRolePage(\'/roles/groups\')"><i class="pictogram">&#59194;</i>Groups</a> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'roles groups tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_groups_tab}}" tooltip-placement="right">(?)</a></div></li>\n        </ul>\n      </div>\n      <span ng-include="currentRolesPage.template"></span>\n    </div>\n  </section>\n</div>'),$templateCache.put("shell/shell.html",'<page-title title=" Shell" icon="&#128241;"></page-title>\n\n<section class="row-fluid">\n  <div class="console-section-contents" id="shell-panel">\n    <div id="shell-input-div">\n      <p> Type "help" to view a list of the available commands.</p>\n      <hr>\n\n      <form name="shellForm" ng-submit="submitCommand()" >\n        <span>&nbsp;&gt;&gt; </span>\n        <input  type="text" id="shell-input"  ng-model="shell.input" autofocus="autofocus" required\n                  ng-form="shellForm">\n        <input style="display: none" type="submit" ng-form="shellForm" value="submit" ng-disabled="!shell.input"/>\n      </form>\n    </div>\n    <pre id="shell-output" class="prettyprint lang-js" style="overflow-x: auto; height: 400px;" ng-bind-html="shell.output">\n\n    </pre>\n    <div id="lastshelloutput" ng-bind-html="shell.outputhidden" style="visibility:hidden"></div>\n  </div>\n</section>\n'),$templateCache.put("users/users-activities.html",'<div class="content-page" ng-controller="UsersActivitiesCtrl" >\n\n  <bsmodal id="addActivityToUser"\n           title="Add activity to user"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="addActivityToUserDialog"\n           extrabuttonlabel="Add"\n           ng-cloak>\n    <p>Content: <input id="activityMessage" ng-model="$parent.newActivity.activityToAdd" required name="activityMessage" ug-validate /> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users add activity content\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_activities_add_activity_content}}" tooltip-placement="right">(?)</a></p>\n  </bsmodal>\n\n\n  <div ng:include="\'users/users-tabs.html\'"></div>\n  <br>\n    <div class="button-strip"><a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users add activity button\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_activities_add_activity}}" tooltip-placement="left">(?)</a> \n    <button class="btn btn-primary" ng-click="showModal(\'addActivityToUser\')">Add activity to user</button>\n  </div>\n  <div>\n    <table class="table table-striped">\n      <tbody>\n      <tr class="table-header">\n        <td>Date</td>\n        <td>Content</td>\n        <td>Verb</td>\n        <td>UUID</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="activity in activities">\n        <td>{{activity.createdDate}}</td>\n        <td>{{activity.content}}</td>\n        <td>{{activity.verb}}</td>\n        <td>{{activity.uuid}}</td>\n      </tr>\n      </tbody>\n    </table>\n  </div>\n\n\n</div>\n'),$templateCache.put("users/users-feed.html",'<div class="content-page" ng-controller="UsersFeedCtrl" >\n\n    <div ng:include="\'users/users-tabs.html\'"></div>\n    <br>\n    <div>\n        <table class="table table-striped">\n            <tbody>\n            <tr class="table-header">\n                <td>Date</td>\n                <td>User</td>\n                <td>Content</td>\n                <td>Verb</td>\n                <td>UUID</td>\n            </tr>\n            <tr class="zebraRows" ng-repeat="activity in activities">\n                <td>{{activity.createdDate}}</td>\n                <td>{{activity.actor.displayName}}</td>\n                <td>{{activity.content}}</td>\n                <td>{{activity.verb}}</td>\n                <td>{{activity.uuid}}</td>\n            </tr>\n            </tbody>\n        </table>\n    </div>\n\n\n</div>\n'),$templateCache.put("users/users-graph.html",'<div class="content-page" ng-controller="UsersGraphCtrl">\n\n  <div ng:include="\'users/users-tabs.html\'"></div>\n\n  <div>\n\n    <bsmodal id="followUser"\n             title="Follow User"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="followUserDialog"\n             extrabuttonlabel="Add"\n             ng-cloak>\n      <div class="btn-group">\n        <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n          <span class="filter-label">{{$parent.user != \'\' ? $parent.user.username : \'Select a user...\'}}</span>\n          <span class="caret"></span>\n        </a>\n        <ul class="dropdown-menu">\n          <li ng-repeat="user in $parent.usersTypeaheadValues" class="filterItem"><a ng-click="$parent.$parent.user = user">{{user.username}}</a></li>\n        </ul>\n      </div>\n    </bsmodal>\n\n\n    <div class="button-strip">\n      <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users follow user\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_graph_follow_user}}" tooltip-placement="left">(?)</a> \n      <button class="btn btn-primary" ng-click="showModal(\'followUser\')">Follow User</button>\n    </div>\n    <br>\n      <h4>Following <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users following list\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_graph_following}}" tooltip-placement="right">(?)</a></h4>\n    <table class="table table-striped">\n      <tbody>\n      <tr class="table-header">\n        <td>Image</td>\n        <td>Username</td>\n        <td>Email</td>\n        <td>UUID</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="user in selectedUser.following">\n        <td><img style="width:30px;height:30px;" ng-src="{{user._portal_image_icon}}"></td>\n        <td>{{user.username}}</td>\n        <td>{{user.email}}</td>\n        <td>{{user.uuid}}</td>\n      </tr>\n      </tbody>\n    </table>\n\n      <h4>Followers <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users followers list\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_graph_followers}}" tooltip-placement="right">(?)</a></h4>\n    <table class="table table-striped">\n      <tbody>\n      <tr class="table-header">\n        <td>Image</td>\n        <td>Username</td>\n        <td>Email</td>\n        <td>UUID</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="user in selectedUser.followers">\n        <td><img style="width:30px;height:30px;" ng-src="{{user._portal_image_icon}}"></td>\n        <td>{{user.username}}</td>\n        <td>{{user.email}}</td>\n        <td>{{user.uuid}}</td>\n      </tr>\n      </tbody>\n    </table>\n\n  </div>\n</div>'),$templateCache.put("users/users-groups.html",'<div class="content-page" ng-controller="UsersGroupsCtrl">\n\n  <div ng:include="\'users/users-tabs.html\'"></div>\n\n  <div>\n\n    <bsmodal id="addUserToGroup"\n             title="Add user to group"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="addUserToGroupDialog"\n             extrabuttonlabel="Add"\n             ng-cloak>\n      <div class="btn-group">\n        <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n          <span class="filter-label">{{$parent.title && $parent.title !== \'\' ? $parent.title : \'Select a group...\'}}</span>\n          <span class="caret"></span>\n        </a>\n        <ul class="dropdown-menu">\n          <li ng-repeat="group in $parent.groupsTypeaheadValues" class="filterItem"><a ng-click="selectGroup(group)">{{group.title}}</a></li>\n        </ul>\n      </div>\n    </bsmodal>\n\n    <bsmodal id="leaveGroup"\n             title="Confirmation"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="leaveGroupDialog"\n             extrabuttonlabel="Leave"\n             ng-cloak>\n      <p>Are you sure you want to remove the user from the seleted group(s)?</p>\n    </bsmodal>\n\n    <div class="button-strip">\n      <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users add leave group buttons\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_add_leave_buttons}}" tooltip-placement="left">(?)</a>\n      <button class="btn btn-primary" ng-click="showModal(\'addUserToGroup\')">Add to group</button>\n      <button class="btn btn-primary" ng-disabled="!hasGroups || !valueSelected(userGroupsCollection._list)" ng-click="showModal(\'leaveGroup\')">Leave group(s)</button>\n    </div>\n    <table class="table table-striped">\n      <tbody>\n      <tr class="table-header">\n        <td>\n          <input type="checkbox" ng-show="hasGroups" id="selectAllCheckBox" ng-model="userGroupsSelected" ng-click="selectAllEntities(userGroupsCollection._list,this,\'userGroupsSelected\')" >\n        </td>\n        <td>Group Name <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'add user group list\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_group_name}}" tooltip-placement="top">(?)</a></td>\n        <td>Path</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="group in userGroupsCollection._list">\n        <td>\n          <input\n            type="checkbox"\n            ng-value="group.get(\'uuid\')"\n            ng-model="group.checked"\n            >\n        </td>\n        <td>{{group.get(\'title\')}}</td>\n        <td>{{group.get(\'path\')}}</td>\n      </tr>\n      </tbody>\n    </table>\n  </div>\n  <div style="padding: 10px 5px 10px 5px">\n    <button class="btn btn-primary" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n    <button class="btn btn-primary" ng-click="getNext()" style="display:{{next_display}}; float:right;">Next ></button>\n  </div>\n\n</div>\n'),$templateCache.put("users/users-profile.html",'<div class="content-page" ng-controller="UsersProfileCtrl">\n\n  <div ng:include="\'users/users-tabs.html\'"></div>\n\n  <div class="row-fluid">\n\n  <form ng-submit="saveSelectedUser()" name="profileForm" novalidate>\n    <div class="span6">\n      <h4>User Information <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users profile information\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_profile_information}}" tooltip-placement="top">(?)</a></h4>\n      <label for="ui-form-username" class="ui-dform-label">Username</label>\n      <input type="text" ug-validate required  name="ui-form-username" ng-pattern="usernameRegex" ng-attr-title="{{usernameRegexDescription}}" id="ui-form-username" class="ui-dform-text" ng-model="user.username">\n      <br/>\n      <label for="ui-form-name" class="ui-dform-label">Full Name</label>\n      <input type="text" ug-validate ng-pattern="nameRegex" ng-attr-title="{{nameRegexDescription}}" required name="ui-form-name" id="ui-form-name" class="ui-dform-text" ng-model="user.name">\n      <br/>\n      <label for="ui-form-title" class="ui-dform-label">Title</label>\n      <input type="text" ug-validate name="ui-form-title" id="ui-form-title" class="ui-dform-text" ng-model="user.title">\n      <br/>\n      <label for="ui-form-url" class="ui-dform-label">Home Page</label>\n      <input type="url" ug-validate name="ui-form-url" id="ui-form-url" title="Please enter a valid url." class="ui-dform-text" ng-model="user.url">\n      <br/>\n      <label for="ui-form-email" class="ui-dform-label">Email</label>\n      <input type="email" ug-validate required name="ui-form-email" id="ui-form-email"  ng-pattern="emailRegex" ng-attr-title="{{emailRegexDescription}}" class="ui-dform-text" ng-model="user.email">\n      <br/>\n      <label for="ui-form-tel" class="ui-dform-label">Telephone</label>\n      <input type="tel" ug-validate name="ui-form-tel" id="ui-form-tel" class="ui-dform-text" ng-model="user.tel">\n      <br/>\n      <label for="ui-form-picture" class="ui-dform-label">Picture URL</label>\n      <input type="url" ug-validate name="ui-form-picture" id="ui-form-picture" title="Please enter a valid url." ng class="ui-dform-text" ng-model="user.picture">\n      <br/>\n      <label for="ui-form-bday" class="ui-dform-label">Birthday</label>\n      <input type="date" ug-validate name="ui-form-bday" id="ui-form-bday" class="ui-dform-text" ng-model="user.bday">\n      <br/>\n    </div>\n    <div class="span6">\n      <h4>Address</h4>\n      <label for="ui-form-addr1" class="ui-dform-label">Street 1</label>\n      <input type="text" ug-validate name="ui-form-addr1" id="ui-form-addr1" class="ui-dform-text" ng-model="user.adr.addr1">\n      <br/>\n      <label for="ui-form-addr2" class="ui-dform-label">Street 2</label>\n      <input type="text" ug-validate name="ui-form-addr2" id="ui-form-addr2" class="ui-dform-text" ng-model="user.adr.addr2">\n      <br/>\n      <label for="ui-form-city" class="ui-dform-label">City</label>\n      <input type="text" ug-validate name="ui-form-city" id="ui-form-city" class="ui-dform-text" ng-model="user.adr.city">\n      <br/>\n      <label for="ui-form-state" class="ui-dform-label">State</label>\n      <input type="text" ug-validate name="ui-form-state" id="ui-form-state"  ng-attr-title="{{stateRegexDescription}}" ng-pattern="stateRegex" class="ui-dform-text" ng-model="user.adr.state">\n      <br/>\n      <label for="ui-form-zip" class="ui-dform-label">Zip</label>\n      <input type="text" ug-validate name="ui-form-zip" ng-pattern="zipRegex" ng-attr-title="{{zipRegexDescription}}" id="ui-form-zip" class="ui-dform-text" ng-model="user.adr.zip">\n      <br/>\n      <label for="ui-form-country" class="ui-dform-label">Country</label>\n      <input type="text" ug-validate name="ui-form-country" ng-attr-title="{{countryRegexDescription}}" ng-pattern="countryRegex" id="ui-form-country" class="ui-dform-text" ng-model="user.adr.country">\n      <br/>\n    </div>\n\n      <div class="span6">\n        <input type="submit" class="btn btn-primary margin-35" ng-disabled="!profileForm.$valid"  value="Save User"/>\n      </div>\n\n\n    <div class="content-container">\n      <legend>JSON User Object <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users profile json\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_profile_json}}" tooltip-placement="top">(?)</a></legend>\n      <pre id="{{help.showJsonId}}">{{user.json}}</pre>\n    </div>\n    </form>\n  </div>\n\n</div>\n'),$templateCache.put("users/users-roles.html",'<div class="content-page" ng-controller="UsersRolesCtrl">\n\n  <div ng:include="\'users/users-tabs.html\'"></div>\n\n  <div>\n\n    <bsmodal id="addRole"\n             title="Add user to role"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="addUserToRoleDialog"\n             extrabuttonlabel="Add"\n             ng-cloak>\n      <div class="btn-group">\n        <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n          <span class="filter-label">{{$parent.name != \'\' ? $parent.name : \'Select a Role...\'}}</span>\n          <span class="caret"></span>\n        </a>\n        <ul class="dropdown-menu">\n          <li ng-repeat="role in $parent.rolesTypeaheadValues" class="filterItem"><a ng-click="$parent.$parent.name = role.name">{{role.name}}</a></li>\n        </ul>\n      </div>\n    </bsmodal>\n\n    <bsmodal id="leaveRole"\n             title="Confirmation"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="leaveRoleDialog"\n             extrabuttonlabel="Leave"\n             ng-cloak>\n      <p>Are you sure you want to remove the user from the role(s)?</p>\n    </bsmodal>\n\n<div ng-controller="UsersRolesCtrl">\n\n<div class="button-strip">\n  <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles add role button\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_add_leave_role}}" tooltip-placement="left">(?)</a>\n      <button class="btn btn-primary" ng-click="showModal(\'addRole\')">Add Role</button>\n      <button class="btn btn-primary" ng-disabled="!hasRoles || !valueSelected(selectedUser.roles)" ng-click="showModal(\'leaveRole\')">Leave role(s)</button>\n    </div>\n    <br>\n      <h4>Roles <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles roles list\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_roles}}" tooltip-placement="top">(?)</a></h4>\n    <table class="table table-striped">\n      <tbody>\n      <tr class="table-header">\n        <td style="width: 30px;"><input type="checkbox" ng-show="hasRoles" id="rolesSelectAllCheckBox" ng-model="usersRolesSelected" ng-click="selectAllEntities(selectedUser.roles,this,\'usersRolesSelected\',true)" ></td>\n        <td>Role Name</td>\n        <td>Role title</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="role in selectedUser.roles">\n        <td>\n          <input\n            type="checkbox"\n            ng-model="role.checked"\n            >\n        </td>\n        <td>{{role.name}}</td>\n        <td>{{role.title}}</td>\n      </tr>\n      </tbody>\n    </table>\n\n    <bsmodal id="deletePermission"\n             title="Confirmation"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="deletePermissionDialog"\n             extrabuttonlabel="Delete"\n             ng-cloak>\n      <p>Are you sure you want to delete the permission(s)?</p>\n    </bsmodal>\n\n    <bsmodal id="addPermission"\n             title="New Permission"\n             close="hideModal"\n             closelabel="Cancel"\n             extrabutton="addUserPermissionDialog"\n             extrabuttonlabel="Add"\n             ng-cloak>\n      <p>Path: <input ng-model="$parent.permissions.path" placeholder="ex: /mydata" id="usersRolePermissions" type="text" ng-pattern="pathRegex" required ug-validate ng-attr-title="{{pathRegexDescription}}" /> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles new permission path box\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_new_permission_path}}" tooltip-placement="right">(?)</a></p>\n      <div class="control-group">\n        <input type="checkbox" ng-model="$parent.permissions.getPerm"> GET <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles new permission verbs check boxes\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_new_permission_verbs}}" tooltip-placement="right">(?)</a>\n      </div>\n      <div class="control-group">\n        <input type="checkbox" ng-model="$parent.permissions.postPerm"> POST\n      </div>\n      <div class="control-group">\n        <input type="checkbox" ng-model="$parent.permissions.putPerm"> PUT\n      </div>\n      <div class="control-group">\n        <input type="checkbox" ng-model="$parent.permissions.deletePerm"> DELETE\n      </div>\n    </bsmodal>\n\n    <div class="button-strip">\n      <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles add permission button\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_add_delete_permission}}" tooltip-placement="left">(?)</a>\n      <button class="btn btn-primary" ng-click="showModal(\'addPermission\')">Add Permission</button>\n      <button class="btn btn-primary" ng-disabled="!hasPermissions || !valueSelected(selectedUser.permissions)" ng-click="showModal(\'deletePermission\')">Delete Permission(s)</button>\n    </div>\n    <br>\n      <h4>Permissions <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles permissions list\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_permissions}}" tooltip-placement="top">(?)</a></h4>\n    <table class="table table-striped">\n      <tbody>\n      <tr class="table-header">\n        <td style="width: 30px;"><input type="checkbox" ng-show="hasPermissions"  id="permissionsSelectAllCheckBox" ng-model="usersPermissionsSelected" ng-click="selectAllEntities(selectedUser.permissions,this,\'usersPermissionsSelected\',true)"  ></td>\n        <td>Path</td>\n        <td>GET</td>\n        <td>POST</td>\n        <td>PUT</td>\n        <td>DELETE</td>\n      </tr>\n      <tr class="zebraRows" ng-repeat="permission in selectedUser.permissions">\n        <td>\n          <input\n            type="checkbox"\n            ng-model="permission.checked"\n            >\n        </td>\n        <td>{{permission.path}}</td>\n        <td>{{permission.operations.get}}</td>\n        <td>{{permission.operations.post}}</td>\n        <td>{{permission.operations.put}}</td>\n        <td>{{permission.operations.delete}}</td>\n      </tr>\n      </tbody>\n    </table>\n  </div>\n </div>\n\n</div>\n'),$templateCache.put("users/users-tabs.html","\n\n\n"),$templateCache.put("users/users.html",'<div class="content-page">\n\n  <div id="intro-page">    \n    <page-title title=" Users" icon="&#128100;"></page-title>\n  </div>\n  <bsmodal id="newUser"\n           title="Create New User"\n           close="hideModal"\n           closelabel="Cancel"\n           buttonid="users"\n           extrabutton="newUserDialog"\n           extrabuttonlabel="Create"\n           ng-cloak>\n    <fieldset>\n      <div class="control-group">\n        <label for="new-user-username">Username</label>\n\n        <div class="controls">\n          <input type="text" required ng-model="$parent.newUser.newusername" ng-pattern="usernameRegex" ng-attr-title="{{usernameRegexDescription}}"  name="username" id="new-user-username" class="input-xlarge" ug-validate/>\n          <p class="help-block hide"></p>\n        </div>\n      </div>\n      <div class="control-group">\n        <label for="new-user-fullname">Full name</label>\n\n        <div class="controls">\n          <input type="text" required  ng-attr-title="{{nameRegexDescription}}" ng-pattern="nameRegex" ng-model="$parent.newUser.name" name="name" id="new-user-fullname" class="input-xlarge" ug-validate/>\n\n          <p class="help-block hide"></p>\n        </div>\n      </div>\n      <div class="control-group">\n        <label for="new-user-email">Email</label>\n\n        <div class="controls">\n          <input type="email" required  ng-model="$parent.newUser.email" pattern="emailRegex"   ng-attr-title="{{emailRegexDescription}}"  name="email" id="new-user-email" class="input-xlarge" ug-validate/>\n\n          <p class="help-block hide"></p>\n        </div>\n      </div>\n      <div class="control-group">\n        <label for="new-user-password">Password</label>\n\n        <div class="controls">\n          <input type="password" required ng-pattern="passwordRegex"  ng-attr-title="{{passwordRegexDescription}}" ng-model="$parent.newUser.newpassword" name="password" id="new-user-password" ug-validate\n                 class="input-xlarge"/>\n\n          <p class="help-block hide"></p>\n        </div>\n      </div>\n      <div class="control-group">\n        <label for="new-user-re-password">Confirm password</label>\n\n        <div class="controls">\n          <input type="password" required ng-pattern="passwordRegex"  ng-attr-title="{{passwordRegexDescription}}" ng-model="$parent.newUser.repassword" name="re-password" id="new-user-re-password" ug-validate\n                 class="input-xlarge"/>\n\n          <p class="help-block hide"></p>\n        </div>\n      </div>\n    </fieldset>\n  </bsmodal>\n\n  <bsmodal id="deleteUser"\n           title="Delete User"\n           close="hideModal"\n           closelabel="Cancel"\n           extrabutton="deleteUsersDialog"\n           extrabuttonlabel="Delete"\n           buttonid="deleteusers"\n           ng-cloak>\n    <p>Are you sure you want to delete the user(s)?</p>\n  </bsmodal>\n\n  <section class="row-fluid">\n    <div id="intro-list" class="span3 user-col">\n      \n      <div class="button-toolbar span12">\n          <a title="Select All" class="btn btn-primary toolbar select-all" ng-show="hasUsers" ng-click="selectAllEntities(usersCollection._list,this,\'usersSelected\',true)" ng-model="usersSelected"> <i class="pictogram">&#8863;</i></a>\n          <button title="Delete" class="btn btn-primary toolbar" ng-disabled="!hasUsers || !valueSelected(usersCollection._list)" ng-click="showModal(\'deleteUser\')" id="delete-user-button"><i class="pictogram">&#9749;</i></button>\n        <button title="Add" class="btn btn-primary toolbar" ng-click="showModal(\'newUser\')" id="new-user-button" ng-attr-id="new-user-button"><i class="pictogram">&#59136;</i></button>\n        <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users add remove buttons\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_users_add_remove_buttons}}" tooltip-placement="right">(?)</a>\n      </div>\n      <ul class="user-list">\n          <li ng-class="selectedUser._data.uuid === user._data.uuid ? \'selected\' : \'\'" ng-repeat="user in usersCollection._list" ng-click="selectUser(user._data.uuid)">\n            <input\n                type="checkbox"\n                id="user-{{user.get(\'username\')}}-checkbox"\n                ng-value="user.get(\'uuid\')"\n                ng-checked="master"\n                ng-model="user.checked"\n                >\n              <a href="javaScript:void(0)"  id="user-{{user.get(\'username\')}}-link" >{{user.get(\'username\')}}</a>\n              <span ng-if="user.name" class="label">Display Name:</span>{{user.name}}\n            </li>\n        </ul>\n        <div style="padding: 10px 5px 10px 5px">\n          <button class="btn btn-primary toolbar" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous\n          </button>\n          <button class="btn btn-primary toolbar" ng-click="getNext()" style="display:{{next_display}}; float:right;">Next >\n          </button>\n        </div>\n      \n    </div>\n\n    <div id="{{help.showTabsId}}" class="span9 tab-content" ng-show="hasUsers">\n      <div class="menu-toolbar">\n        <ul class="inline">\n          <li class="tab" ng-class="currentUsersPage.route === \'/users/profile\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectUserPage(\'/users/profile\')"><i class="pictogram">&#59170;</i>Profile</a> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users profile tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_profile_tab}}" tooltip-placement="right">(?)</a></div></li>\n          <li class="tab" ng-class="currentUsersPage.route === \'/users/groups\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectUserPage(\'/users/groups\')"><i class="pictogram">&#128101;</i>Groups</a> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users groups tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_groups_tab}}" tooltip-placement="right">(?)</a></div></li>\n          <li class="tab" ng-class="currentUsersPage.route === \'/users/activities\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectUserPage(\'/users/activities\')"><i class="pictogram">&#59194;</i>Activities</a> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users activities tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_activities_tab}}" tooltip-placement="right">(?)</a></div></li>\n          <li class="tab" ng-class="currentUsersPage.route === \'/users/feed\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectUserPage(\'/users/feed\')"><i class="pictogram">&#128196;</i>Feed</a> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users feed tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_feed_tab}}" tooltip-placement="right">(?)</a></div></li>\n          <li class="tab" ng-class="currentUsersPage.route === \'/users/graph\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectUserPage(\'/users/graph\')"><i class="pictogram">&#9729;</i>Graph</a> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users graph tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_graph_tab}}" tooltip-placement="top">(?)</a></div></li>\n          <li class="tab" ng-class="currentUsersPage.route === \'/users/roles\' ? \'selected\' : \'\'"><div class="btn btn-primary toolbar" ><a class="btn-content" ng-click="selectUserPage(\'/users/roles\')"><i class="pictogram">&#127758;</i>Roles &amp; Permissions</a> <a class="help_tooltip" ng-mouseover="help.sendTooltipGA(\'users roles tab\')" ng-show="help.helpTooltipsEnabled" href="#" ng-attr-tooltip="{{tooltip_roles_tab}}" tooltip-placement="top">(?)</a></div></li>\n        </ul>\n      </div>\n      <span ng-include="currentUsersPage.template"></span>\n    </div>\n  </section>\n</div>')
}]),AppServices.Controllers.controller("UsersActivitiesCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){$scope.activitiesSelected="active",$scope.activityToAdd="",$scope.activities=[],$scope.newActivity={};var getActivities=function(){ug.getEntityActivities($rootScope.selectedUser)};return $rootScope.selectedUser?(getActivities(),$scope.addActivityToUserDialog=function(modalId){ug.addUserActivity($rootScope.selectedUser,$scope.newActivity.activityToAdd),$scope.hideModal(modalId),$scope.newActivity={}},$scope.$on("user-activity-add-error",function(){$rootScope.$broadcast("alert","error","could not create activity")}),$scope.$on("user-activity-add-success",function(){$scope.newActivity.activityToAdd="",getActivities()}),$scope.$on("users-activities-error",function(){$rootScope.$broadcast("alert","error","could not create activity")}),void $scope.$on("users-activities-received",function(evt,entities){$scope.activities=entities,$scope.applyScope()})):void $location.path("/users")}]),AppServices.Controllers.controller("UsersCtrl",["ug","$scope","$rootScope","$location","$route",function(ug,$scope,$rootScope,$location,$route){$scope.newUser={},$scope.usersCollection={},$rootScope.selectedUser={},$scope.previous_display="none",$scope.next_display="none",$scope.hasUsers=!1,$scope.currentUsersPage={},$scope.selectUserPage=function(route){$scope.currentUsersPage.template=$route.routes[route].templateUrl,$scope.currentUsersPage.route=route,clearNewUserForm()},$scope.deleteUsersDialog=function(modalId){$scope.deleteEntities($scope.usersCollection,"user-deleted","error deleting user"),$scope.hideModal(modalId),clearNewUserForm()},$scope.$on("user-deleted-error",function(){ug.getUsers()});var clearNewUserForm=function(){$scope.newUser={}};$scope.newUserDialog=function(modalId){switch(!0){case $scope.newUser.newpassword!==$scope.newUser.repassword:$rootScope.$broadcast("alert","error","Passwords do not match.");break;default:ug.createUser($scope.newUser.newusername,$scope.newUser.name,$scope.newUser.email,$scope.newUser.newpassword),$scope.hideModal(modalId),clearNewUserForm()}},ug.getUsers(),$scope.$on("users-received",function(event,users){$scope.usersCollection=users,$scope.usersSelected=!1,$scope.hasUsers=users._list.length,users._list.length>0&&$scope.selectUser(users._list[0]._data.uuid),$scope.checkNextPrev(),$scope.applyScope()}),$scope.$on("users-create-success",function(){$rootScope.$broadcast("alert","success","User successfully created.")}),$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.usersCollection.hasPreviousPage()&&($scope.previous_display=""),$scope.usersCollection.hasNextPage()&&($scope.next_display="")},$scope.selectUser=function(uuid){$rootScope.selectedUser=$scope.usersCollection.getEntityByUUID(uuid),$scope.currentUsersPage.template="users/users-profile.html",$scope.currentUsersPage.route="/users/profile",$rootScope.$broadcast("user-selection-changed",$rootScope.selectedUser)},$scope.getPrevious=function(){$scope.usersCollection.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of users"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.getNext=function(){$scope.usersCollection.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of users"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.$on("user-deleted",function(){$rootScope.$broadcast("alert","success","User deleted successfully."),ug.getUsers()})}]),AppServices.Controllers.controller("UsersFeedCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){$scope.activitiesSelected="active",$scope.activityToAdd="",$scope.activities=[],$scope.newActivity={};var getFeed=function(){ug.getEntityActivities($rootScope.selectedUser,!0)};return $rootScope.selectedUser?(getFeed(),$scope.$on("users-feed-error",function(){$rootScope.$broadcast("alert","error","could not create activity")}),void $scope.$on("users-feed-received",function(evt,entities){$scope.activities=entities,$scope.applyScope()})):void $location.path("/users")}]),AppServices.Controllers.controller("UsersGraphCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.graphSelected="active",$scope.user="",ug.getUsersTypeAhead(),$scope.followUserDialog=function(modalId){$scope.user?(ug.followUser($scope.user.uuid),$scope.hideModal(modalId)):$rootScope.$broadcast("alert","error","You must specify a user to follow.")},$rootScope.selectedUser?($rootScope.selectedUser.activities=[],$rootScope.selectedUser.getFollowing(function(err){err||$rootScope.$$phase||$rootScope.$apply()}),$rootScope.selectedUser.getFollowers(function(err){err||$rootScope.$$phase||$rootScope.$apply()}),$scope.$on("follow-user-received",function(){$rootScope.selectedUser.getFollowing(function(err){err||$rootScope.$$phase||$rootScope.$apply()})}),void 0):void $location.path("/users")}]),AppServices.Controllers.controller("UsersGroupsCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){$scope.userGroupsCollection={},$scope.groups_previous_display="none",$scope.groups_next_display="none",$scope.groups_check_all="",$scope.groupsSelected="active",$scope.title="",$scope.master="",$scope.hasGroups=!1;var init=function(){return $scope.name="",$rootScope.selectedUser?(ug.getGroupsForUser($rootScope.selectedUser.get("uuid")),void ug.getGroupsTypeAhead()):void $location.path("/users")};init(),$scope.addUserToGroupDialog=function(modalId){if($scope.path){var username=$rootScope.selectedUser.get("uuid");ug.addUserToGroup(username,$scope.path),$scope.hideModal(modalId),$scope.path="",$scope.title=""}else $rootScope.$broadcast("alert","error","You must specify a group.")},$scope.selectGroup=function(group){$scope.path=group.path,$scope.title=group.title},$scope.leaveGroupDialog=function(modalId){$scope.deleteEntities($scope.userGroupsCollection,"user-left-group","error removing user from group"),$scope.hideModal(modalId)},$scope.$on("user-groups-received",function(event,groups){$scope.userGroupsCollection=groups,$scope.userGroupsSelected=!1,$scope.hasGroups=groups._list.length,$scope.checkNextPrev(),$rootScope.$$phase||$rootScope.$apply()}),$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.userGroupsCollection.hasPreviousPage()&&($scope.previous_display="block"),$scope.userGroupsCollection.hasNextPage()&&($scope.next_display="block")},$rootScope.getPrevious=function(){$scope.userGroupsCollection.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of groups"),$scope.checkNextPrev(),$rootScope.$$phase||$rootScope.$apply()})},$rootScope.getNext=function(){$scope.userGroupsCollection.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of groups"),$scope.checkNextPrev(),$rootScope.$$phase||$rootScope.$apply()})},$scope.$on("user-left-group",function(){$scope.checkNextPrev(),$scope.userGroupsSelected=!1,$rootScope.$$phase||$rootScope.$apply(),init()}),$scope.$on("user-added-to-group-received",function(){$scope.checkNextPrev(),$rootScope.$$phase||$rootScope.$apply(),init()})}]),AppServices.Controllers.controller("UsersProfileCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.user=$rootScope.selectedUser._data.clone(),$scope.user.json=$scope.user.json||$scope.user.stringifyJSON(),$scope.profileSelected="active",$rootScope.selectedUser?($scope.$on("user-selection-changed",function(evt,selectedUser){$scope.user=selectedUser._data.clone(),$scope.user.json=$scope.user.json||selectedUser._data.stringifyJSON()}),void($scope.saveSelectedUser=function(){$rootScope.selectedUser.set($scope.user.clone()),$rootScope.selectedUser.save(function(err){err?$rootScope.$broadcast("alert","error","error saving user"):$rootScope.$broadcast("alert","success","user saved")})})):void $location.path("/users")}]),AppServices.Controllers.controller("UsersRolesCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){$scope.rolesSelected="active",$scope.usersRolesSelected=!1,$scope.usersPermissionsSelected=!1,$scope.name="",$scope.master="",$scope.hasRoles=$scope.hasPermissions=!1,$scope.permissions={};var clearPermissions=function(){$scope.permissions&&($scope.permissions.path="",$scope.permissions.getPerm=!1,$scope.permissions.postPerm=!1,$scope.permissions.putPerm=!1,$scope.permissions.deletePerm=!1),$scope.applyScope()},clearRole=function(){$scope.name="",$scope.applyScope()};return ug.getRolesTypeAhead(),$scope.addUserToRoleDialog=function(modalId){if($scope.name){var username=$rootScope.selectedUser.get("uuid");ug.addUserToRole(username,$scope.name),$scope.hideModal(modalId)}else $rootScope.$broadcast("alert","error","You must specify a role.")},$scope.leaveRoleDialog=function(modalId){for(var username=$rootScope.selectedUser.get("uuid"),roles=$rootScope.selectedUser.roles,i=0;i<roles.length;i++)roles[i].checked&&ug.removeUserFromRole(username,roles[i].name);$scope.hideModal(modalId)},$scope.deletePermissionDialog=function(modalId){for(var username=$rootScope.selectedUser.get("uuid"),permissions=$rootScope.selectedUser.permissions,i=0;i<permissions.length;i++)permissions[i].checked&&ug.deleteUserPermission(permissions[i].perm,username);$scope.hideModal(modalId)},$scope.addUserPermissionDialog=function(modalId){if($scope.permissions.path){var permission=$scope.createPermission(null,null,$scope.removeFirstSlash($scope.permissions.path),$scope.permissions),username=$rootScope.selectedUser.get("uuid");ug.newUserPermission(permission,username),$scope.hideModal(modalId)}else $rootScope.$broadcast("alert","error","You must specify a name for the permission.")},$rootScope.selectedUser?($rootScope.selectedUser.permissions=[],$rootScope.selectedUser.roles=[],$rootScope.selectedUser.getPermissions(function(err,data){$scope.clearCheckbox("permissionsSelectAllCheckBox"),err||($scope.hasPermissions=data.data.length>0,$scope.applyScope())}),$rootScope.selectedUser.getRoles(function(err,data){err||($scope.hasRoles=data.entities.length>0,$scope.applyScope())}),$scope.$on("role-update-received",function(){$rootScope.selectedUser.getRoles(function(err,data){$scope.usersRolesSelected=!1,err||($scope.hasRoles=data.entities.length>0,clearRole(),$scope.applyScope())})}),$scope.$on("permission-update-received",function(){$rootScope.selectedUser.getPermissions(function(err,data){$scope.usersPermissionsSelected=!1,err||(clearPermissions(),$scope.hasPermissions=data.data.length>0,$scope.applyScope())})}),void 0):void $location.path("/users")}])}({},function(){return this}());