Skip to content

Instantly share code, notes, and snippets.

@jkingyens
Created October 14, 2014 04:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jkingyens/541dce433100e8414553 to your computer and use it in GitHub Desktop.
Save jkingyens/541dce433100e8414553 to your computer and use it in GitHub Desktop.
requirebin sketch
var angular = require('angular');
require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({angular:[function(require,module,exports){(function(window,document,undefined){"use strict";function minErr(module,ErrorConstructor){ErrorConstructor=ErrorConstructor||Error;return function(){var code=arguments[0],prefix="["+(module?module+":":"")+code+"] ",template=arguments[1],templateArgs=arguments,stringify=function(obj){if(typeof obj==="function"){return obj.toString().replace(/ \{[\s\S]*$/,"")}else if(typeof obj==="undefined"){return"undefined"}else if(typeof obj!=="string"){return JSON.stringify(obj)}return obj},message,i;message=prefix+template.replace(/\{\d+\}/g,function(match){var index=+match.slice(1,-1),arg;if(index+2<templateArgs.length){arg=templateArgs[index+2];if(typeof arg==="function"){return arg.toString().replace(/ ?\{[\s\S]*$/,"")}else if(typeof arg==="undefined"){return"undefined"}else if(typeof arg!=="string"){return toJson(arg)}return arg}return match});message=message+"\nhttp://errors.angularjs.org/1.3.0/"+(module?module+"/":"")+code;for(i=2;i<arguments.length;i++){message=message+(i==2?"?":"&")+"p"+(i-2)+"="+encodeURIComponent(stringify(arguments[i]))}return new ErrorConstructor(message)}}var REGEX_STRING_REGEXP=/^\/(.+)\/([a-z]*)$/;var VALIDITY_STATE_PROPERTY="validity";var lowercase=function(string){return isString(string)?string.toLowerCase():string};var hasOwnProperty=Object.prototype.hasOwnProperty;var uppercase=function(string){return isString(string)?string.toUpperCase():string};var manualLowercase=function(s){return isString(s)?s.replace(/[A-Z]/g,function(ch){return String.fromCharCode(ch.charCodeAt(0)|32)}):s};var manualUppercase=function(s){return isString(s)?s.replace(/[a-z]/g,function(ch){return String.fromCharCode(ch.charCodeAt(0)&~32)}):s};if("i"!=="I".toLowerCase()){lowercase=manualLowercase;uppercase=manualUppercase}var msie,jqLite,jQuery,slice=[].slice,splice=[].splice,push=[].push,toString=Object.prototype.toString,ngMinErr=minErr("ng"),angular=window.angular||(window.angular={}),angularModule,uid=0;msie=document.documentMode;function isArrayLike(obj){if(obj==null||isWindow(obj)){return false}var length=obj.length;if(obj.nodeType===NODE_TYPE_ELEMENT&&length){return true}return isString(obj)||isArray(obj)||length===0||typeof length==="number"&&length>0&&length-1 in obj}function forEach(obj,iterator,context){var key,length;if(obj){if(isFunction(obj)){for(key in obj){if(key!="prototype"&&key!="length"&&key!="name"&&(!obj.hasOwnProperty||obj.hasOwnProperty(key))){iterator.call(context,obj[key],key,obj)}}}else if(isArray(obj)||isArrayLike(obj)){var isPrimitive=typeof obj!=="object";for(key=0,length=obj.length;key<length;key++){if(isPrimitive||key in obj){iterator.call(context,obj[key],key,obj)}}}else if(obj.forEach&&obj.forEach!==forEach){obj.forEach(iterator,context,obj)}else{for(key in obj){if(obj.hasOwnProperty(key)){iterator.call(context,obj[key],key,obj)}}}}return obj}function sortedKeys(obj){var keys=[];for(var key in obj){if(obj.hasOwnProperty(key)){keys.push(key)}}return keys.sort()}function forEachSorted(obj,iterator,context){var keys=sortedKeys(obj);for(var i=0;i<keys.length;i++){iterator.call(context,obj[keys[i]],keys[i])}return keys}function reverseParams(iteratorFn){return function(value,key){iteratorFn(key,value)}}function nextUid(){return++uid}function setHashKey(obj,h){if(h){obj.$$hashKey=h}else{delete obj.$$hashKey}}function extend(dst){var h=dst.$$hashKey;for(var i=1,ii=arguments.length;i<ii;i++){var obj=arguments[i];if(obj){var keys=Object.keys(obj);for(var j=0,jj=keys.length;j<jj;j++){var key=keys[j];dst[key]=obj[key]}}}setHashKey(dst,h);return dst}function int(str){return parseInt(str,10)}function inherit(parent,extra){return extend(new(extend(function(){},{prototype:parent})),extra)}function noop(){}noop.$inject=[];function identity($){return $}identity.$inject=[];function valueFn(value){return function(){return value}}function isUndefined(value){return typeof value==="undefined"}function isDefined(value){return typeof value!=="undefined"}function isObject(value){return value!==null&&typeof value==="object"}function isString(value){return typeof value==="string"}function isNumber(value){return typeof value==="number"}function isDate(value){return toString.call(value)==="[object Date]"}var isArray=Array.isArray;function isFunction(value){return typeof value==="function"}function isRegExp(value){return toString.call(value)==="[object RegExp]"}function isWindow(obj){return obj&&obj.window===obj}function isScope(obj){return obj&&obj.$evalAsync&&obj.$watch}function isFile(obj){return toString.call(obj)==="[object File]"}function isBlob(obj){return toString.call(obj)==="[object Blob]"}function isBoolean(value){return typeof value==="boolean"}function isPromiseLike(obj){return obj&&isFunction(obj.then)}var trim=function(value){return isString(value)?value.trim():value};function isElement(node){return!!(node&&(node.nodeName||node.prop&&node.attr&&node.find))}function makeMap(str){var obj={},items=str.split(","),i;for(i=0;i<items.length;i++)obj[items[i]]=true;return obj}function nodeName_(element){return lowercase(element.nodeName||element[0].nodeName)}function size(obj,ownPropsOnly){var count=0,key;if(isArray(obj)||isString(obj)){return obj.length}else if(isObject(obj)){for(key in obj)if(!ownPropsOnly||obj.hasOwnProperty(key))count++}return count}function includes(array,obj){return Array.prototype.indexOf.call(array,obj)!=-1}function arrayRemove(array,value){var index=array.indexOf(value);if(index>=0)array.splice(index,1);return value}function isLeafNode(node){if(node){switch(nodeName_(node)){case"option":case"pre":case"title":return true}}return false}function copy(source,destination,stackSource,stackDest){if(isWindow(source)||isScope(source)){throw ngMinErr("cpws","Can't copy! Making copies of Window or Scope instances is not supported.")}if(!destination){destination=source;if(source){if(isArray(source)){destination=copy(source,[],stackSource,stackDest)}else if(isDate(source)){destination=new Date(source.getTime())}else if(isRegExp(source)){destination=new RegExp(source.source,source.toString().match(/[^\/]*$/)[0]);destination.lastIndex=source.lastIndex}else if(isObject(source)){var emptyObject=Object.create(Object.getPrototypeOf(source));destination=copy(source,emptyObject,stackSource,stackDest)}}}else{if(source===destination)throw ngMinErr("cpi","Can't copy! Source and destination are identical.");stackSource=stackSource||[];stackDest=stackDest||[];if(isObject(source)){var index=stackSource.indexOf(source);if(index!==-1)return stackDest[index];stackSource.push(source);stackDest.push(destination)}var result;if(isArray(source)){destination.length=0;for(var i=0;i<source.length;i++){result=copy(source[i],null,stackSource,stackDest);if(isObject(source[i])){stackSource.push(source[i]);stackDest.push(result)}destination.push(result)}}else{var h=destination.$$hashKey;if(isArray(destination)){destination.length=0}else{forEach(destination,function(value,key){delete destination[key]})}for(var key in source){if(source.hasOwnProperty(key)){result=copy(source[key],null,stackSource,stackDest);if(isObject(source[key])){stackSource.push(source[key]);stackDest.push(result)}destination[key]=result}}setHashKey(destination,h)}}return destination}function shallowCopy(src,dst){if(isArray(src)){dst=dst||[];for(var i=0,ii=src.length;i<ii;i++){dst[i]=src[i]}}else if(isObject(src)){dst=dst||{};for(var key in src){if(!(key.charAt(0)==="$"&&key.charAt(1)==="$")){dst[key]=src[key]}}}return dst||src}function equals(o1,o2){if(o1===o2)return true;if(o1===null||o2===null)return false;if(o1!==o1&&o2!==o2)return true;var t1=typeof o1,t2=typeof o2,length,key,keySet;if(t1==t2){if(t1=="object"){if(isArray(o1)){if(!isArray(o2))return false;if((length=o1.length)==o2.length){for(key=0;key<length;key++){if(!equals(o1[key],o2[key]))return false}return true}}else if(isDate(o1)){if(!isDate(o2))return false;return equals(o1.getTime(),o2.getTime())}else if(isRegExp(o1)&&isRegExp(o2)){return o1.toString()==o2.toString()}else{if(isScope(o1)||isScope(o2)||isWindow(o1)||isWindow(o2)||isArray(o2))return false;keySet={};for(key in o1){if(key.charAt(0)==="$"||isFunction(o1[key]))continue;if(!equals(o1[key],o2[key]))return false;keySet[key]=true}for(key in o2){if(!keySet.hasOwnProperty(key)&&key.charAt(0)!=="$"&&o2[key]!==undefined&&!isFunction(o2[key]))return false}return true}}}return false}var csp=function(){if(isDefined(csp.isActive_))return csp.isActive_;var active=!!(document.querySelector("[ng-csp]")||document.querySelector("[data-ng-csp]"));if(!active){try{new Function("")}catch(e){active=true}}return csp.isActive_=active};function concat(array1,array2,index){return array1.concat(slice.call(array2,index))}function sliceArgs(args,startIndex){return slice.call(args,startIndex||0)}function bind(self,fn){var curryArgs=arguments.length>2?sliceArgs(arguments,2):[];if(isFunction(fn)&&!(fn instanceof RegExp)){return curryArgs.length?function(){return arguments.length?fn.apply(self,curryArgs.concat(slice.call(arguments,0))):fn.apply(self,curryArgs)}:function(){return arguments.length?fn.apply(self,arguments):fn.call(self)}}else{return fn}}function toJsonReplacer(key,value){var val=value;if(typeof key==="string"&&key.charAt(0)==="$"&&key.charAt(1)==="$"){val=undefined}else if(isWindow(value)){val="$WINDOW"}else if(value&&document===value){val="$DOCUMENT"}else if(isScope(value)){val="$SCOPE"}return val}function toJson(obj,pretty){if(typeof obj==="undefined")return undefined;return JSON.stringify(obj,toJsonReplacer,pretty?" ":null)}function fromJson(json){return isString(json)?JSON.parse(json):json}function startingTag(element){element=jqLite(element).clone();try{element.empty()}catch(e){}var elemHtml=jqLite("<div>").append(element).html();try{return element[0].nodeType===NODE_TYPE_TEXT?lowercase(elemHtml):elemHtml.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(match,nodeName){return"<"+lowercase(nodeName)})}catch(e){return lowercase(elemHtml)}}function tryDecodeURIComponent(value){try{return decodeURIComponent(value)}catch(e){}}function parseKeyValue(keyValue){var obj={},key_value,key;forEach((keyValue||"").split("&"),function(keyValue){if(keyValue){key_value=keyValue.replace(/\+/g,"%20").split("=");key=tryDecodeURIComponent(key_value[0]);if(isDefined(key)){var val=isDefined(key_value[1])?tryDecodeURIComponent(key_value[1]):true;if(!hasOwnProperty.call(obj,key)){obj[key]=val}else if(isArray(obj[key])){obj[key].push(val)}else{obj[key]=[obj[key],val]}}}});return obj}function toKeyValue(obj){var parts=[];forEach(obj,function(value,key){if(isArray(value)){forEach(value,function(arrayValue){parts.push(encodeUriQuery(key,true)+(arrayValue===true?"":"="+encodeUriQuery(arrayValue,true)))})}else{parts.push(encodeUriQuery(key,true)+(value===true?"":"="+encodeUriQuery(value,true)))}});return parts.length?parts.join("&"):""}function encodeUriSegment(val){return encodeUriQuery(val,true).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function encodeUriQuery(val,pctEncodeSpaces){return encodeURIComponent(val).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,pctEncodeSpaces?"%20":"+")}var ngAttrPrefixes=["ng-","data-ng-","ng:","x-ng-"];function getNgAttribute(element,ngAttr){var attr,i,ii=ngAttrPrefixes.length;element=jqLite(element);for(i=0;i<ii;++i){attr=ngAttrPrefixes[i]+ngAttr;if(isString(attr=element.attr(attr))){return attr}}return null}function angularInit(element,bootstrap){var appElement,module,config={};forEach(ngAttrPrefixes,function(prefix){var name=prefix+"app";if(!appElement&&element.hasAttribute&&element.hasAttribute(name)){appElement=element;module=element.getAttribute(name)}});forEach(ngAttrPrefixes,function(prefix){var name=prefix+"app";var candidate;if(!appElement&&(candidate=element.querySelector("["+name.replace(":","\\:")+"]"))){appElement=candidate;module=candidate.getAttribute(name)}});if(appElement){config.strictDi=getNgAttribute(appElement,"strict-di")!==null;bootstrap(appElement,module?[module]:[],config)}}function bootstrap(element,modules,config){if(!isObject(config))config={};var defaultConfig={strictDi:false};config=extend(defaultConfig,config);var doBootstrap=function(){element=jqLite(element);if(element.injector()){var tag=element[0]===document?"document":startingTag(element);throw ngMinErr("btstrpd","App Already Bootstrapped with this Element '{0}'",tag.replace(/</,"&lt;").replace(/>/,"&gt;"))}modules=modules||[];modules.unshift(["$provide",function($provide){$provide.value("$rootElement",element)}]);if(config.debugInfoEnabled){modules.push(["$compileProvider",function($compileProvider){$compileProvider.debugInfoEnabled(true)}])}modules.unshift("ng");var injector=createInjector(modules,config.strictDi);injector.invoke(["$rootScope","$rootElement","$compile","$injector",function bootstrapApply(scope,element,compile,injector){scope.$apply(function(){element.data("$injector",injector);compile(element)(scope)})}]);return injector};var NG_ENABLE_DEBUG_INFO=/^NG_ENABLE_DEBUG_INFO!/;var NG_DEFER_BOOTSTRAP=/^NG_DEFER_BOOTSTRAP!/;if(window&&NG_ENABLE_DEBUG_INFO.test(window.name)){config.debugInfoEnabled=true;window.name=window.name.replace(NG_ENABLE_DEBUG_INFO,"")}if(window&&!NG_DEFER_BOOTSTRAP.test(window.name)){return doBootstrap()}window.name=window.name.replace(NG_DEFER_BOOTSTRAP,"");angular.resumeBootstrap=function(extraModules){forEach(extraModules,function(module){modules.push(module)});doBootstrap()}}function reloadWithDebugInfo(){window.name="NG_ENABLE_DEBUG_INFO!"+window.name;window.location.reload()}function getTestability(rootElement){return angular.element(rootElement).injector().get("$$testability")}var SNAKE_CASE_REGEXP=/[A-Z]/g;function snake_case(name,separator){separator=separator||"_";return name.replace(SNAKE_CASE_REGEXP,function(letter,pos){return(pos?separator:"")+letter.toLowerCase()})}var bindJQueryFired=false;var skipDestroyOnNextJQueryCleanData;function bindJQuery(){var originalCleanData;if(bindJQueryFired){return}jQuery=window.jQuery;if(jQuery&&jQuery.fn.on){jqLite=jQuery;extend(jQuery.fn,{scope:JQLitePrototype.scope,isolateScope:JQLitePrototype.isolateScope,controller:JQLitePrototype.controller,injector:JQLitePrototype.injector,inheritedData:JQLitePrototype.inheritedData});originalCleanData=jQuery.cleanData;jQuery.cleanData=function(elems){var events;if(!skipDestroyOnNextJQueryCleanData){for(var i=0,elem;(elem=elems[i])!=null;i++){events=jQuery._data(elem,"events");if(events&&events.$destroy){jQuery(elem).triggerHandler("$destroy")}}}else{skipDestroyOnNextJQueryCleanData=false}originalCleanData(elems)}}else{jqLite=JQLite}angular.element=jqLite;bindJQueryFired=true}function assertArg(arg,name,reason){if(!arg){throw ngMinErr("areq","Argument '{0}' is {1}",name||"?",reason||"required")}return arg}function assertArgFn(arg,name,acceptArrayAnnotation){if(acceptArrayAnnotation&&isArray(arg)){arg=arg[arg.length-1]}assertArg(isFunction(arg),name,"not a function, got "+(arg&&typeof arg==="object"?arg.constructor.name||"Object":typeof arg));return arg}function assertNotHasOwnProperty(name,context){if(name==="hasOwnProperty"){throw ngMinErr("badname","hasOwnProperty is not a valid {0} name",context)}}function getter(obj,path,bindFnToScope){if(!path)return obj;var keys=path.split(".");var key;var lastInstance=obj;var len=keys.length;for(var i=0;i<len;i++){key=keys[i];if(obj){obj=(lastInstance=obj)[key]}}if(!bindFnToScope&&isFunction(obj)){return bind(lastInstance,obj)}return obj}function getBlockNodes(nodes){var node=nodes[0];var endNode=nodes[nodes.length-1];var blockNodes=[node];do{node=node.nextSibling;if(!node)break;blockNodes.push(node)}while(node!==endNode);return jqLite(blockNodes)}function createMap(){return Object.create(null)}var NODE_TYPE_ELEMENT=1;var NODE_TYPE_TEXT=3;var NODE_TYPE_COMMENT=8;var NODE_TYPE_DOCUMENT=9;var NODE_TYPE_DOCUMENT_FRAGMENT=11;function setupModuleLoader(window){var $injectorMinErr=minErr("$injector");var ngMinErr=minErr("ng");function ensure(obj,name,factory){return obj[name]||(obj[name]=factory())}var angular=ensure(window,"angular",Object);angular.$$minErr=angular.$$minErr||minErr;return ensure(angular,"module",function(){var modules={};return function module(name,requires,configFn){var assertNotHasOwnProperty=function(name,context){if(name==="hasOwnProperty"){throw ngMinErr("badname","hasOwnProperty is not a valid {0} name",context)}};assertNotHasOwnProperty(name,"module");if(requires&&modules.hasOwnProperty(name)){modules[name]=null}return ensure(modules,name,function(){if(!requires){throw $injectorMinErr("nomod","Module '{0}' is not available! You either misspelled "+"the module name or forgot to load it. If registering a module ensure that you "+"specify the dependencies as the second argument.",name)}var invokeQueue=[];var configBlocks=[];var runBlocks=[];var config=invokeLater("$injector","invoke","push",configBlocks);var moduleInstance={_invokeQueue:invokeQueue,_configBlocks:configBlocks,_runBlocks:runBlocks,requires:requires,name:name,provider:invokeLater("$provide","provider"),factory:invokeLater("$provide","factory"),service:invokeLater("$provide","service"),value:invokeLater("$provide","value"),constant:invokeLater("$provide","constant","unshift"),animation:invokeLater("$animateProvider","register"),filter:invokeLater("$filterProvider","register"),controller:invokeLater("$controllerProvider","register"),directive:invokeLater("$compileProvider","directive"),config:config,run:function(block){runBlocks.push(block);return this}};if(configFn){config(configFn)}return moduleInstance;function invokeLater(provider,method,insertMethod,queue){if(!queue)queue=invokeQueue;return function(){queue[insertMethod||"push"]([provider,method,arguments]);return moduleInstance}}})}})}var version={full:"1.3.0",major:1,minor:3,dot:0,codeName:"superluminal-nudge"};function publishExternalAPI(angular){extend(angular,{bootstrap:bootstrap,copy:copy,extend:extend,equals:equals,element:jqLite,forEach:forEach,injector:createInjector,noop:noop,bind:bind,toJson:toJson,fromJson:fromJson,identity:identity,isUndefined:isUndefined,isDefined:isDefined,isString:isString,isFunction:isFunction,isObject:isObject,isNumber:isNumber,isElement:isElement,isArray:isArray,version:version,isDate:isDate,lowercase:lowercase,uppercase:uppercase,callbacks:{counter:0},getTestability:getTestability,$$minErr:minErr,$$csp:csp,reloadWithDebugInfo:reloadWithDebugInfo});angularModule=setupModuleLoader(window);try{angularModule("ngLocale")}catch(e){angularModule("ngLocale",[]).provider("$locale",$LocaleProvider)}angularModule("ng",["ngLocale"],["$provide",function ngModule($provide){$provide.provider({$$sanitizeUri:$$SanitizeUriProvider});$provide.provider("$compile",$CompileProvider).directive({a:htmlAnchorDirective,input:inputDirective,textarea:inputDirective,form:formDirective,script:scriptDirective,select:selectDirective,style:styleDirective,option:optionDirective,ngBind:ngBindDirective,ngBindHtml:ngBindHtmlDirective,ngBindTemplate:ngBindTemplateDirective,ngClass:ngClassDirective,ngClassEven:ngClassEvenDirective,ngClassOdd:ngClassOddDirective,ngCloak:ngCloakDirective,ngController:ngControllerDirective,ngForm:ngFormDirective,ngHide:ngHideDirective,ngIf:ngIfDirective,ngInclude:ngIncludeDirective,ngInit:ngInitDirective,ngNonBindable:ngNonBindableDirective,ngPluralize:ngPluralizeDirective,ngRepeat:ngRepeatDirective,ngShow:ngShowDirective,ngStyle:ngStyleDirective,ngSwitch:ngSwitchDirective,ngSwitchWhen:ngSwitchWhenDirective,ngSwitchDefault:ngSwitchDefaultDirective,ngOptions:ngOptionsDirective,ngTransclude:ngTranscludeDirective,ngModel:ngModelDirective,ngList:ngListDirective,ngChange:ngChangeDirective,pattern:patternDirective,ngPattern:patternDirective,required:requiredDirective,ngRequired:requiredDirective,minlength:minlengthDirective,ngMinlength:minlengthDirective,maxlength:maxlengthDirective,ngMaxlength:maxlengthDirective,ngValue:ngValueDirective,ngModelOptions:ngModelOptionsDirective}).directive({ngInclude:ngIncludeFillContentDirective}).directive(ngAttributeAliasDirectives).directive(ngEventDirectives);$provide.provider({$anchorScroll:$AnchorScrollProvider,$animate:$AnimateProvider,$browser:$BrowserProvider,$cacheFactory:$CacheFactoryProvider,$controller:$ControllerProvider,$document:$DocumentProvider,$exceptionHandler:$ExceptionHandlerProvider,$filter:$FilterProvider,$interpolate:$InterpolateProvider,$interval:$IntervalProvider,$http:$HttpProvider,$httpBackend:$HttpBackendProvider,$location:$LocationProvider,$log:$LogProvider,$parse:$ParseProvider,$rootScope:$RootScopeProvider,$q:$QProvider,$$q:$$QProvider,$sce:$SceProvider,$sceDelegate:$SceDelegateProvider,$sniffer:$SnifferProvider,$templateCache:$TemplateCacheProvider,$templateRequest:$TemplateRequestProvider,$$testability:$$TestabilityProvider,$timeout:$TimeoutProvider,$window:$WindowProvider,$$rAF:$$RAFProvider,$$asyncCallback:$$AsyncCallbackProvider})}])}JQLite.expando="ng339";var jqCache=JQLite.cache={},jqId=1,addEventListenerFn=function(element,type,fn){element.addEventListener(type,fn,false)},removeEventListenerFn=function(element,type,fn){element.removeEventListener(type,fn,false)};JQLite._data=function(node){return this.cache[node[this.expando]]||{}};function jqNextId(){return++jqId}var SPECIAL_CHARS_REGEXP=/([\:\-\_]+(.))/g;var MOZ_HACK_REGEXP=/^moz([A-Z])/;var MOUSE_EVENT_MAP={mouseleave:"mouseout",mouseenter:"mouseover"};var jqLiteMinErr=minErr("jqLite");function camelCase(name){return name.replace(SPECIAL_CHARS_REGEXP,function(_,separator,letter,offset){return offset?letter.toUpperCase():letter}).replace(MOZ_HACK_REGEXP,"Moz$1")}var SINGLE_TAG_REGEXP=/^<(\w+)\s*\/?>(?:<\/\1>|)$/;var HTML_REGEXP=/<|&#?\w+;/;var TAG_NAME_REGEXP=/<([\w:]+)/;var XHTML_TAG_REGEXP=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi;var wrapMap={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};wrapMap.optgroup=wrapMap.option;wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead;wrapMap.th=wrapMap.td;function jqLiteIsTextNode(html){return!HTML_REGEXP.test(html)}function jqLiteAcceptsData(node){var nodeType=node.nodeType;return nodeType===NODE_TYPE_ELEMENT||!nodeType||nodeType===NODE_TYPE_DOCUMENT}function jqLiteBuildFragment(html,context){var tmp,tag,wrap,fragment=context.createDocumentFragment(),nodes=[],i;if(jqLiteIsTextNode(html)){nodes.push(context.createTextNode(html))}else{tmp=tmp||fragment.appendChild(context.createElement("div"));tag=(TAG_NAME_REGEXP.exec(html)||["",""])[1].toLowerCase();wrap=wrapMap[tag]||wrapMap._default;tmp.innerHTML=wrap[1]+html.replace(XHTML_TAG_REGEXP,"<$1></$2>")+wrap[2];i=wrap[0];while(i--){tmp=tmp.lastChild}nodes=concat(nodes,tmp.childNodes);tmp=fragment.firstChild;tmp.textContent=""}fragment.textContent="";fragment.innerHTML="";forEach(nodes,function(node){fragment.appendChild(node)});return fragment}function jqLiteParseHTML(html,context){context=context||document;var parsed;if(parsed=SINGLE_TAG_REGEXP.exec(html)){return[context.createElement(parsed[1])]}if(parsed=jqLiteBuildFragment(html,context)){return parsed.childNodes}return[]}function JQLite(element){if(element instanceof JQLite){return element}var argIsString;if(isString(element)){element=trim(element);argIsString=true}if(!(this instanceof JQLite)){if(argIsString&&element.charAt(0)!="<"){throw jqLiteMinErr("nosel","Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element")}return new JQLite(element)}if(argIsString){jqLiteAddNodes(this,jqLiteParseHTML(element))}else{jqLiteAddNodes(this,element)}}function jqLiteClone(element){return element.cloneNode(true)}function jqLiteDealoc(element,onlyDescendants){if(!onlyDescendants)jqLiteRemoveData(element);if(element.querySelectorAll){var descendants=element.querySelectorAll("*");for(var i=0,l=descendants.length;i<l;i++){jqLiteRemoveData(descendants[i])}}}function jqLiteOff(element,type,fn,unsupported){if(isDefined(unsupported))throw jqLiteMinErr("offargs","jqLite#off() does not support the `selector` argument");var expandoStore=jqLiteExpandoStore(element);var events=expandoStore&&expandoStore.events;var handle=expandoStore&&expandoStore.handle;if(!handle)return;if(!type){for(type in events){if(type!=="$destroy"){removeEventListenerFn(element,type,handle)}delete events[type]}}else{forEach(type.split(" "),function(type){if(isDefined(fn)){var listenerFns=events[type];arrayRemove(listenerFns||[],fn);if(listenerFns&&listenerFns.length>0){return}}removeEventListenerFn(element,type,handle);delete events[type]})}}function jqLiteRemoveData(element,name){var expandoId=element.ng339;var expandoStore=expandoId&&jqCache[expandoId];if(expandoStore){if(name){delete expandoStore.data[name];return}if(expandoStore.handle){if(expandoStore.events.$destroy){expandoStore.handle({},"$destroy")}jqLiteOff(element)}delete jqCache[expandoId];element.ng339=undefined}}function jqLiteExpandoStore(element,createIfNecessary){var expandoId=element.ng339,expandoStore=expandoId&&jqCache[expandoId];if(createIfNecessary&&!expandoStore){element.ng339=expandoId=jqNextId();expandoStore=jqCache[expandoId]={events:{},data:{},handle:undefined}}return expandoStore}function jqLiteData(element,key,value){if(jqLiteAcceptsData(element)){var isSimpleSetter=isDefined(value);var isSimpleGetter=!isSimpleSetter&&key&&!isObject(key);var massGetter=!key;var expandoStore=jqLiteExpandoStore(element,!isSimpleGetter);var data=expandoStore&&expandoStore.data;if(isSimpleSetter){data[key]=value}else{if(massGetter){return data}else{if(isSimpleGetter){return data&&data[key]}else{extend(data,key)}}}}}function jqLiteHasClass(element,selector){if(!element.getAttribute)return false;return(" "+(element.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+selector+" ")>-1}function jqLiteRemoveClass(element,cssClasses){if(cssClasses&&element.setAttribute){forEach(cssClasses.split(" "),function(cssClass){element.setAttribute("class",trim((" "+(element.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+trim(cssClass)+" "," ")))})}}function jqLiteAddClass(element,cssClasses){if(cssClasses&&element.setAttribute){var existingClasses=(" "+(element.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");forEach(cssClasses.split(" "),function(cssClass){cssClass=trim(cssClass);if(existingClasses.indexOf(" "+cssClass+" ")===-1){existingClasses+=cssClass+" "}});element.setAttribute("class",trim(existingClasses))}}function jqLiteAddNodes(root,elements){if(elements){if(elements.nodeType){root[root.length++]=elements}else{var length=elements.length;if(typeof length==="number"&&elements.window!==elements){if(length){for(var i=0;i<length;i++){root[root.length++]=elements[i]}}}else{root[root.length++]=elements}}}}function jqLiteController(element,name){return jqLiteInheritedData(element,"$"+(name||"ngController")+"Controller")}function jqLiteInheritedData(element,name,value){if(element.nodeType==NODE_TYPE_DOCUMENT){element=element.documentElement}var names=isArray(name)?name:[name];while(element){for(var i=0,ii=names.length;i<ii;i++){if((value=jqLite.data(element,names[i]))!==undefined)return value}element=element.parentNode||element.nodeType===NODE_TYPE_DOCUMENT_FRAGMENT&&element.host}}function jqLiteEmpty(element){jqLiteDealoc(element,true);while(element.firstChild){element.removeChild(element.firstChild)}}function jqLiteRemove(element,keepData){if(!keepData)jqLiteDealoc(element);var parent=element.parentNode;if(parent)parent.removeChild(element)}function jqLiteDocumentLoaded(action,win){win=win||window;if(win.document.readyState==="complete"){win.setTimeout(action)}else{jqLite(win).on("load",action)}}var JQLitePrototype=JQLite.prototype={ready:function(fn){var fired=false;function trigger(){if(fired)return;fired=true;fn()}if(document.readyState==="complete"){setTimeout(trigger)}else{this.on("DOMContentLoaded",trigger);JQLite(window).on("load",trigger);this.on("DOMContentLoaded",trigger)}},toString:function(){var value=[];forEach(this,function(e){value.push(""+e)});return"["+value.join(", ")+"]"},eq:function(index){return index>=0?jqLite(this[index]):jqLite(this[this.length+index])},length:0,push:push,sort:[].sort,splice:[].splice};var BOOLEAN_ATTR={};forEach("multiple,selected,checked,disabled,readOnly,required,open".split(","),function(value){BOOLEAN_ATTR[lowercase(value)]=value});var BOOLEAN_ELEMENTS={};forEach("input,select,option,textarea,button,form,details".split(","),function(value){BOOLEAN_ELEMENTS[value]=true});var ALIASED_ATTR={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};function getBooleanAttrName(element,name){var booleanAttr=BOOLEAN_ATTR[name.toLowerCase()];return booleanAttr&&BOOLEAN_ELEMENTS[nodeName_(element)]&&booleanAttr}function getAliasedAttrName(element,name){var nodeName=element.nodeName;return(nodeName==="INPUT"||nodeName==="TEXTAREA")&&ALIASED_ATTR[name]}forEach({data:jqLiteData,removeData:jqLiteRemoveData},function(fn,name){JQLite[name]=fn});forEach({data:jqLiteData,inheritedData:jqLiteInheritedData,scope:function(element){return jqLite.data(element,"$scope")||jqLiteInheritedData(element.parentNode||element,["$isolateScope","$scope"])},isolateScope:function(element){return jqLite.data(element,"$isolateScope")||jqLite.data(element,"$isolateScopeNoTemplate")},controller:jqLiteController,injector:function(element){return jqLiteInheritedData(element,"$injector")},removeAttr:function(element,name){element.removeAttribute(name)},hasClass:jqLiteHasClass,css:function(element,name,value){name=camelCase(name);if(isDefined(value)){element.style[name]=value}else{return element.style[name]}},attr:function(element,name,value){var lowercasedName=lowercase(name);if(BOOLEAN_ATTR[lowercasedName]){if(isDefined(value)){if(!!value){element[name]=true;element.setAttribute(name,lowercasedName)}else{element[name]=false;element.removeAttribute(lowercasedName)}}else{return element[name]||(element.attributes.getNamedItem(name)||noop).specified?lowercasedName:undefined}}else if(isDefined(value)){element.setAttribute(name,value)}else if(element.getAttribute){var ret=element.getAttribute(name,2);return ret===null?undefined:ret}},prop:function(element,name,value){if(isDefined(value)){element[name]=value}else{return element[name]}},text:function(){getText.$dv="";return getText;function getText(element,value){if(isUndefined(value)){var nodeType=element.nodeType;return nodeType===NODE_TYPE_ELEMENT||nodeType===NODE_TYPE_TEXT?element.textContent:""}element.textContent=value}}(),val:function(element,value){if(isUndefined(value)){if(element.multiple&&nodeName_(element)==="select"){var result=[];forEach(element.options,function(option){if(option.selected){result.push(option.value||option.text)}});return result.length===0?null:result}return element.value}element.value=value},html:function(element,value){if(isUndefined(value)){return element.innerHTML}jqLiteDealoc(element,true);element.innerHTML=value},empty:jqLiteEmpty},function(fn,name){JQLite.prototype[name]=function(arg1,arg2){var i,key;var nodeCount=this.length;if(fn!==jqLiteEmpty&&(fn.length==2&&(fn!==jqLiteHasClass&&fn!==jqLiteController)?arg1:arg2)===undefined){if(isObject(arg1)){for(i=0;i<nodeCount;i++){if(fn===jqLiteData){fn(this[i],arg1)}else{for(key in arg1){fn(this[i],key,arg1[key])}}}return this}else{var value=fn.$dv;var jj=value===undefined?Math.min(nodeCount,1):nodeCount;
for(var j=0;j<jj;j++){var nodeValue=fn(this[j],arg1,arg2);value=value?value+nodeValue:nodeValue}return value}}else{for(i=0;i<nodeCount;i++){fn(this[i],arg1,arg2)}return this}}});function createEventHandler(element,events){var eventHandler=function(event,type){event.isDefaultPrevented=function(){return event.defaultPrevented};var eventFns=events[type||event.type];var eventFnsLength=eventFns?eventFns.length:0;if(!eventFnsLength)return;if(isUndefined(event.immediatePropagationStopped)){var originalStopImmediatePropagation=event.stopImmediatePropagation;event.stopImmediatePropagation=function(){event.immediatePropagationStopped=true;if(event.stopPropagation){event.stopPropagation()}if(originalStopImmediatePropagation){originalStopImmediatePropagation.call(event)}}}event.isImmediatePropagationStopped=function(){return event.immediatePropagationStopped===true};if(eventFnsLength>1){eventFns=shallowCopy(eventFns)}for(var i=0;i<eventFnsLength;i++){if(!event.isImmediatePropagationStopped()){eventFns[i].call(element,event)}}};eventHandler.elem=element;return eventHandler}forEach({removeData:jqLiteRemoveData,on:function jqLiteOn(element,type,fn,unsupported){if(isDefined(unsupported))throw jqLiteMinErr("onargs","jqLite#on() does not support the `selector` or `eventData` parameters");if(!jqLiteAcceptsData(element)){return}var expandoStore=jqLiteExpandoStore(element,true);var events=expandoStore.events;var handle=expandoStore.handle;if(!handle){handle=expandoStore.handle=createEventHandler(element,events)}var types=type.indexOf(" ")>=0?type.split(" "):[type];var i=types.length;while(i--){type=types[i];var eventFns=events[type];if(!eventFns){events[type]=[];if(type==="mouseenter"||type==="mouseleave"){jqLiteOn(element,MOUSE_EVENT_MAP[type],function(event){var target=this,related=event.relatedTarget;if(!related||related!==target&&!target.contains(related)){handle(event,type)}})}else{if(type!=="$destroy"){addEventListenerFn(element,type,handle)}}eventFns=events[type]}eventFns.push(fn)}},off:jqLiteOff,one:function(element,type,fn){element=jqLite(element);element.on(type,function onFn(){element.off(type,fn);element.off(type,onFn)});element.on(type,fn)},replaceWith:function(element,replaceNode){var index,parent=element.parentNode;jqLiteDealoc(element);forEach(new JQLite(replaceNode),function(node){if(index){parent.insertBefore(node,index.nextSibling)}else{parent.replaceChild(node,element)}index=node})},children:function(element){var children=[];forEach(element.childNodes,function(element){if(element.nodeType===NODE_TYPE_ELEMENT)children.push(element)});return children},contents:function(element){return element.contentDocument||element.childNodes||[]},append:function(element,node){var nodeType=element.nodeType;if(nodeType!==NODE_TYPE_ELEMENT&&nodeType!==NODE_TYPE_DOCUMENT_FRAGMENT)return;node=new JQLite(node);for(var i=0,ii=node.length;i<ii;i++){var child=node[i];element.appendChild(child)}},prepend:function(element,node){if(element.nodeType===NODE_TYPE_ELEMENT){var index=element.firstChild;forEach(new JQLite(node),function(child){element.insertBefore(child,index)})}},wrap:function(element,wrapNode){wrapNode=jqLite(wrapNode).eq(0).clone()[0];var parent=element.parentNode;if(parent){parent.replaceChild(wrapNode,element)}wrapNode.appendChild(element)},remove:jqLiteRemove,detach:function(element){jqLiteRemove(element,true)},after:function(element,newElement){var index=element,parent=element.parentNode;newElement=new JQLite(newElement);for(var i=0,ii=newElement.length;i<ii;i++){var node=newElement[i];parent.insertBefore(node,index.nextSibling);index=node}},addClass:jqLiteAddClass,removeClass:jqLiteRemoveClass,toggleClass:function(element,selector,condition){if(selector){forEach(selector.split(" "),function(className){var classCondition=condition;if(isUndefined(classCondition)){classCondition=!jqLiteHasClass(element,className)}(classCondition?jqLiteAddClass:jqLiteRemoveClass)(element,className)})}},parent:function(element){var parent=element.parentNode;return parent&&parent.nodeType!==NODE_TYPE_DOCUMENT_FRAGMENT?parent:null},next:function(element){return element.nextElementSibling},find:function(element,selector){if(element.getElementsByTagName){return element.getElementsByTagName(selector)}else{return[]}},clone:jqLiteClone,triggerHandler:function(element,event,extraParameters){var dummyEvent,eventFnsCopy,handlerArgs;var eventName=event.type||event;var expandoStore=jqLiteExpandoStore(element);var events=expandoStore&&expandoStore.events;var eventFns=events&&events[eventName];if(eventFns){dummyEvent={preventDefault:function(){this.defaultPrevented=true},isDefaultPrevented:function(){return this.defaultPrevented===true},stopImmediatePropagation:function(){this.immediatePropagationStopped=true},isImmediatePropagationStopped:function(){return this.immediatePropagationStopped===true},stopPropagation:noop,type:eventName,target:element};if(event.type){dummyEvent=extend(dummyEvent,event)}eventFnsCopy=shallowCopy(eventFns);handlerArgs=extraParameters?[dummyEvent].concat(extraParameters):[dummyEvent];forEach(eventFnsCopy,function(fn){if(!dummyEvent.isImmediatePropagationStopped()){fn.apply(element,handlerArgs)}})}}},function(fn,name){JQLite.prototype[name]=function(arg1,arg2,arg3){var value;for(var i=0,ii=this.length;i<ii;i++){if(isUndefined(value)){value=fn(this[i],arg1,arg2,arg3);if(isDefined(value)){value=jqLite(value)}}else{jqLiteAddNodes(value,fn(this[i],arg1,arg2,arg3))}}return isDefined(value)?value:this};JQLite.prototype.bind=JQLite.prototype.on;JQLite.prototype.unbind=JQLite.prototype.off});function hashKey(obj,nextUidFn){var key=obj&&obj.$$hashKey;if(key){if(typeof key==="function"){key=obj.$$hashKey()}return key}var objType=typeof obj;if(objType=="function"||objType=="object"&&obj!==null){key=obj.$$hashKey=objType+":"+(nextUidFn||nextUid)()}else{key=objType+":"+obj}return key}function HashMap(array,isolatedUid){if(isolatedUid){var uid=0;this.nextUid=function(){return++uid}}forEach(array,this.put,this)}HashMap.prototype={put:function(key,value){this[hashKey(key,this.nextUid)]=value},get:function(key){return this[hashKey(key,this.nextUid)]},remove:function(key){var value=this[key=hashKey(key,this.nextUid)];delete this[key];return value}};var FN_ARGS=/^function\s*[^\(]*\(\s*([^\)]*)\)/m;var FN_ARG_SPLIT=/,/;var FN_ARG=/^\s*(_?)(\S+?)\1\s*$/;var STRIP_COMMENTS=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm;var $injectorMinErr=minErr("$injector");function anonFn(fn){var fnText=fn.toString().replace(STRIP_COMMENTS,""),args=fnText.match(FN_ARGS);if(args){return"function("+(args[1]||"").replace(/[\s\r\n]+/," ")+")"}return"fn"}function annotate(fn,strictDi,name){var $inject,fnText,argDecl,last;if(typeof fn==="function"){if(!($inject=fn.$inject)){$inject=[];if(fn.length){if(strictDi){if(!isString(name)||!name){name=fn.name||anonFn(fn)}throw $injectorMinErr("strictdi","{0} is not using explicit annotation and cannot be invoked in strict mode",name)}fnText=fn.toString().replace(STRIP_COMMENTS,"");argDecl=fnText.match(FN_ARGS);forEach(argDecl[1].split(FN_ARG_SPLIT),function(arg){arg.replace(FN_ARG,function(all,underscore,name){$inject.push(name)})})}fn.$inject=$inject}}else if(isArray(fn)){last=fn.length-1;assertArgFn(fn[last],"fn");$inject=fn.slice(0,last)}else{assertArgFn(fn,"fn",true)}return $inject}function createInjector(modulesToLoad,strictDi){strictDi=strictDi===true;var INSTANTIATING={},providerSuffix="Provider",path=[],loadedModules=new HashMap([],true),providerCache={$provide:{provider:supportObject(provider),factory:supportObject(factory),service:supportObject(service),value:supportObject(value),constant:supportObject(constant),decorator:decorator}},providerInjector=providerCache.$injector=createInternalInjector(providerCache,function(){throw $injectorMinErr("unpr","Unknown provider: {0}",path.join(" <- "))}),instanceCache={},instanceInjector=instanceCache.$injector=createInternalInjector(instanceCache,function(servicename){var provider=providerInjector.get(servicename+providerSuffix);return instanceInjector.invoke(provider.$get,provider,undefined,servicename)});forEach(loadModules(modulesToLoad),function(fn){instanceInjector.invoke(fn||noop)});return instanceInjector;function supportObject(delegate){return function(key,value){if(isObject(key)){forEach(key,reverseParams(delegate))}else{return delegate(key,value)}}}function provider(name,provider_){assertNotHasOwnProperty(name,"service");if(isFunction(provider_)||isArray(provider_)){provider_=providerInjector.instantiate(provider_)}if(!provider_.$get){throw $injectorMinErr("pget","Provider '{0}' must define $get factory method.",name)}return providerCache[name+providerSuffix]=provider_}function enforceReturnValue(name,factory){return function enforcedReturnValue(){var result=instanceInjector.invoke(factory,this,undefined,name);if(isUndefined(result)){throw $injectorMinErr("undef","Provider '{0}' must return a value from $get factory method.",name)}return result}}function factory(name,factoryFn,enforce){return provider(name,{$get:enforce!==false?enforceReturnValue(name,factoryFn):factoryFn})}function service(name,constructor){return factory(name,["$injector",function($injector){return $injector.instantiate(constructor)}])}function value(name,val){return factory(name,valueFn(val),false)}function constant(name,value){assertNotHasOwnProperty(name,"constant");providerCache[name]=value;instanceCache[name]=value}function decorator(serviceName,decorFn){var origProvider=providerInjector.get(serviceName+providerSuffix),orig$get=origProvider.$get;origProvider.$get=function(){var origInstance=instanceInjector.invoke(orig$get,origProvider);return instanceInjector.invoke(decorFn,null,{$delegate:origInstance})}}function loadModules(modulesToLoad){var runBlocks=[],moduleFn;forEach(modulesToLoad,function(module){if(loadedModules.get(module))return;loadedModules.put(module,true);function runInvokeQueue(queue){var i,ii;for(i=0,ii=queue.length;i<ii;i++){var invokeArgs=queue[i],provider=providerInjector.get(invokeArgs[0]);provider[invokeArgs[1]].apply(provider,invokeArgs[2])}}try{if(isString(module)){moduleFn=angularModule(module);runBlocks=runBlocks.concat(loadModules(moduleFn.requires)).concat(moduleFn._runBlocks);runInvokeQueue(moduleFn._invokeQueue);runInvokeQueue(moduleFn._configBlocks)}else if(isFunction(module)){runBlocks.push(providerInjector.invoke(module))}else if(isArray(module)){runBlocks.push(providerInjector.invoke(module))}else{assertArgFn(module,"module")}}catch(e){if(isArray(module)){module=module[module.length-1]}if(e.message&&e.stack&&e.stack.indexOf(e.message)==-1){e=e.message+"\n"+e.stack}throw $injectorMinErr("modulerr","Failed to instantiate module {0} due to:\n{1}",module,e.stack||e.message||e)}});return runBlocks}function createInternalInjector(cache,factory){function getService(serviceName){if(cache.hasOwnProperty(serviceName)){if(cache[serviceName]===INSTANTIATING){throw $injectorMinErr("cdep","Circular dependency found: {0}",serviceName+" <- "+path.join(" <- "))}return cache[serviceName]}else{try{path.unshift(serviceName);cache[serviceName]=INSTANTIATING;return cache[serviceName]=factory(serviceName)}catch(err){if(cache[serviceName]===INSTANTIATING){delete cache[serviceName]}throw err}finally{path.shift()}}}function invoke(fn,self,locals,serviceName){if(typeof locals==="string"){serviceName=locals;locals=null}var args=[],$inject=annotate(fn,strictDi,serviceName),length,i,key;for(i=0,length=$inject.length;i<length;i++){key=$inject[i];if(typeof key!=="string"){throw $injectorMinErr("itkn","Incorrect injection token! Expected service name as string, got {0}",key)}args.push(locals&&locals.hasOwnProperty(key)?locals[key]:getService(key))}if(isArray(fn)){fn=fn[length]}return fn.apply(self,args)}function instantiate(Type,locals,serviceName){var Constructor=function(){},instance,returnedValue;Constructor.prototype=(isArray(Type)?Type[Type.length-1]:Type).prototype;instance=new Constructor;returnedValue=invoke(Type,instance,locals,serviceName);return isObject(returnedValue)||isFunction(returnedValue)?returnedValue:instance}return{invoke:invoke,instantiate:instantiate,get:getService,annotate:annotate,has:function(name){return providerCache.hasOwnProperty(name+providerSuffix)||cache.hasOwnProperty(name)}}}}createInjector.$$annotate=annotate;function $AnchorScrollProvider(){var autoScrollingEnabled=true;this.disableAutoScrolling=function(){autoScrollingEnabled=false};this.$get=["$window","$location","$rootScope",function($window,$location,$rootScope){var document=$window.document;var scrollScheduled=false;function getFirstAnchor(list){var result=null;Array.prototype.some.call(list,function(element){if(nodeName_(element)==="a"){result=element;return true}});return result}function getYOffset(){var offset=scroll.yOffset;if(isFunction(offset)){offset=offset()}else if(isElement(offset)){var elem=offset[0];var style=$window.getComputedStyle(elem);if(style.position!=="fixed"){offset=0}else{offset=elem.getBoundingClientRect().bottom}}else if(!isNumber(offset)){offset=0}return offset}function scrollTo(elem){if(elem){elem.scrollIntoView();var offset=getYOffset();if(offset){var elemTop=elem.getBoundingClientRect().top;$window.scrollBy(0,elemTop-offset)}}else{$window.scrollTo(0,0)}}function scroll(){var hash=$location.hash(),elm;if(!hash)scrollTo(null);else if(elm=document.getElementById(hash))scrollTo(elm);else if(elm=getFirstAnchor(document.getElementsByName(hash)))scrollTo(elm);else if(hash==="top")scrollTo(null)}if(autoScrollingEnabled){$rootScope.$watch(function autoScrollWatch(){return $location.hash()},function autoScrollWatchAction(newVal,oldVal){if(newVal===oldVal&&newVal==="")return;jqLiteDocumentLoaded(function(){$rootScope.$evalAsync(scroll)})})}return scroll}]}var $animateMinErr=minErr("$animate");var $AnimateProvider=["$provide",function($provide){this.$$selectors={};this.register=function(name,factory){var key=name+"-animation";if(name&&name.charAt(0)!=".")throw $animateMinErr("notcsel","Expecting class selector starting with '.' got '{0}'.",name);this.$$selectors[name.substr(1)]=key;$provide.factory(key,factory)};this.classNameFilter=function(expression){if(arguments.length===1){this.$$classNameFilter=expression instanceof RegExp?expression:null}return this.$$classNameFilter};this.$get=["$$q","$$asyncCallback","$rootScope",function($$q,$$asyncCallback,$rootScope){var currentDefer;function runAnimationPostDigest(fn){var cancelFn,defer=$$q.defer();defer.promise.$$cancelFn=function ngAnimateMaybeCancel(){cancelFn&&cancelFn()};$rootScope.$$postDigest(function ngAnimatePostDigest(){cancelFn=fn(function ngAnimateNotifyComplete(){defer.resolve()})});return defer.promise}function resolveElementClasses(element,classes){var toAdd=[],toRemove=[];var hasClasses=createMap();forEach((element.attr("class")||"").split(/\s+/),function(className){hasClasses[className]=true});forEach(classes,function(status,className){var hasClass=hasClasses[className];if(status===false&&hasClass){toRemove.push(className)}else if(status===true&&!hasClass){toAdd.push(className)}});return toAdd.length+toRemove.length>0&&[toAdd.length?toAdd:null,toRemove.length?toRemove:null]}function cachedClassManipulation(cache,classes,op){for(var i=0,ii=classes.length;i<ii;++i){var className=classes[i];cache[className]=op}}function asyncPromise(){if(!currentDefer){currentDefer=$$q.defer();$$asyncCallback(function(){currentDefer.resolve();currentDefer=null})}return currentDefer.promise}function applyStyles(element,options){if(angular.isObject(options)){var styles=extend(options.from||{},options.to||{});element.css(styles)}}return{animate:function(element,from,to){applyStyles(element,{from:from,to:to});return asyncPromise()},enter:function(element,parent,after,options){applyStyles(element,options);after?after.after(element):parent.prepend(element);return asyncPromise()},leave:function(element,options){element.remove();return asyncPromise()},move:function(element,parent,after,options){return this.enter(element,parent,after,options)},addClass:function(element,className,options){return this.setClass(element,className,[],options)},$$addClassImmediately:function(element,className,options){element=jqLite(element);className=!isString(className)?isArray(className)?className.join(" "):"":className;forEach(element,function(element){jqLiteAddClass(element,className)});applyStyles(element,options);return asyncPromise()},removeClass:function(element,className,options){return this.setClass(element,[],className,options)},$$removeClassImmediately:function(element,className,options){element=jqLite(element);className=!isString(className)?isArray(className)?className.join(" "):"":className;forEach(element,function(element){jqLiteRemoveClass(element,className)});applyStyles(element,options);return asyncPromise()},setClass:function(element,add,remove,options){var self=this;var STORAGE_KEY="$$animateClasses";var createdCache=false;element=jqLite(element);var cache=element.data(STORAGE_KEY);if(!cache){cache={classes:{},options:options};createdCache=true}else if(options&&cache.options){cache.options=angular.extend(cache.options||{},options)}var classes=cache.classes;add=isArray(add)?add:add.split(" ");remove=isArray(remove)?remove:remove.split(" ");cachedClassManipulation(classes,add,true);cachedClassManipulation(classes,remove,false);if(createdCache){cache.promise=runAnimationPostDigest(function(done){var cache=element.data(STORAGE_KEY);element.removeData(STORAGE_KEY);if(cache){var classes=resolveElementClasses(element,cache.classes);if(classes){self.$$setClassImmediately(element,classes[0],classes[1],cache.options)}}done()});element.data(STORAGE_KEY,cache)}return cache.promise},$$setClassImmediately:function(element,add,remove,options){add&&this.$$addClassImmediately(element,add);remove&&this.$$removeClassImmediately(element,remove);applyStyles(element,options);return asyncPromise()},enabled:noop,cancel:noop}}]}];function $$AsyncCallbackProvider(){this.$get=["$$rAF","$timeout",function($$rAF,$timeout){return $$rAF.supported?function(fn){return $$rAF(fn)}:function(fn){return $timeout(fn,0,false)}}]}function Browser(window,document,$log,$sniffer){var self=this,rawDocument=document[0],location=window.location,history=window.history,setTimeout=window.setTimeout,clearTimeout=window.clearTimeout,pendingDeferIds={};self.isMock=false;var outstandingRequestCount=0;var outstandingRequestCallbacks=[];self.$$completeOutstandingRequest=completeOutstandingRequest;self.$$incOutstandingRequestCount=function(){outstandingRequestCount++};function completeOutstandingRequest(fn){try{fn.apply(null,sliceArgs(arguments,1))}finally{outstandingRequestCount--;if(outstandingRequestCount===0){while(outstandingRequestCallbacks.length){try{outstandingRequestCallbacks.pop()()}catch(e){$log.error(e)}}}}}self.notifyWhenNoOutstandingRequests=function(callback){forEach(pollFns,function(pollFn){pollFn()});if(outstandingRequestCount===0){callback()}else{outstandingRequestCallbacks.push(callback)}};var pollFns=[],pollTimeout;self.addPollFn=function(fn){if(isUndefined(pollTimeout))startPoller(100,setTimeout);pollFns.push(fn);return fn};function startPoller(interval,setTimeout){(function check(){forEach(pollFns,function(pollFn){pollFn()});pollTimeout=setTimeout(check,interval)})()}var cachedState,lastHistoryState,lastBrowserUrl=location.href,baseElement=document.find("base"),reloadLocation=null;cacheState();lastHistoryState=cachedState;self.url=function(url,replace,state){if(isUndefined(state)){state=null}if(location!==window.location)location=window.location;if(history!==window.history)history=window.history;if(url){var sameState=lastHistoryState===state;if(lastBrowserUrl===url&&(!$sniffer.history||sameState)){return}var sameBase=lastBrowserUrl&&stripHash(lastBrowserUrl)===stripHash(url);lastBrowserUrl=url;lastHistoryState=state;if($sniffer.history&&(!sameBase||!sameState)){history[replace?"replaceState":"pushState"](state,"",url);cacheState();lastHistoryState=cachedState}else{if(!sameBase){reloadLocation=url}if(replace){location.replace(url)}else{location.href=url}}return self}else{return reloadLocation||location.href.replace(/%27/g,"'")}};self.state=function(){return cachedState};var urlChangeListeners=[],urlChangeInit=false;function cacheStateAndFireUrlChange(){cacheState();fireUrlChange()}var lastCachedState=null;function cacheState(){cachedState=window.history.state;cachedState=isUndefined(cachedState)?null:cachedState;if(equals(cachedState,lastCachedState)){cachedState=lastCachedState}lastCachedState=cachedState}function fireUrlChange(){if(lastBrowserUrl===self.url()&&lastHistoryState===cachedState){return}lastBrowserUrl=self.url();lastHistoryState=cachedState;forEach(urlChangeListeners,function(listener){listener(self.url(),cachedState)})}self.onUrlChange=function(callback){if(!urlChangeInit){if($sniffer.history)jqLite(window).on("popstate",cacheStateAndFireUrlChange);jqLite(window).on("hashchange",cacheStateAndFireUrlChange);urlChangeInit=true}urlChangeListeners.push(callback);return callback};self.$$checkUrlChange=fireUrlChange;self.baseHref=function(){var href=baseElement.attr("href");return href?href.replace(/^(https?\:)?\/\/[^\/]*/,""):""};var lastCookies={};var lastCookieString="";var cookiePath=self.baseHref();function safeDecodeURIComponent(str){try{return decodeURIComponent(str)}catch(e){return str}}self.cookies=function(name,value){var cookieLength,cookieArray,cookie,i,index;if(name){if(value===undefined){rawDocument.cookie=encodeURIComponent(name)+"=;path="+cookiePath+";expires=Thu, 01 Jan 1970 00:00:00 GMT"}else{if(isString(value)){cookieLength=(rawDocument.cookie=encodeURIComponent(name)+"="+encodeURIComponent(value)+";path="+cookiePath).length+1;if(cookieLength>4096){$log.warn("Cookie '"+name+"' possibly not set or overflowed because it was too large ("+cookieLength+" > 4096 bytes)!")}}}}else{if(rawDocument.cookie!==lastCookieString){lastCookieString=rawDocument.cookie;cookieArray=lastCookieString.split("; ");lastCookies={};for(i=0;i<cookieArray.length;i++){cookie=cookieArray[i];index=cookie.indexOf("=");if(index>0){name=safeDecodeURIComponent(cookie.substring(0,index));if(lastCookies[name]===undefined){lastCookies[name]=safeDecodeURIComponent(cookie.substring(index+1))}}}}return lastCookies}};self.defer=function(fn,delay){var timeoutId;outstandingRequestCount++;timeoutId=setTimeout(function(){delete pendingDeferIds[timeoutId];completeOutstandingRequest(fn)},delay||0);pendingDeferIds[timeoutId]=true;return timeoutId};self.defer.cancel=function(deferId){if(pendingDeferIds[deferId]){delete pendingDeferIds[deferId];clearTimeout(deferId);completeOutstandingRequest(noop);return true}return false}}function $BrowserProvider(){this.$get=["$window","$log","$sniffer","$document",function($window,$log,$sniffer,$document){return new Browser($window,$document,$log,$sniffer)}]}function $CacheFactoryProvider(){this.$get=function(){var caches={};function cacheFactory(cacheId,options){if(cacheId in caches){throw minErr("$cacheFactory")("iid","CacheId '{0}' is already taken!",cacheId)}var size=0,stats=extend({},options,{id:cacheId}),data={},capacity=options&&options.capacity||Number.MAX_VALUE,lruHash={},freshEnd=null,staleEnd=null;return caches[cacheId]={put:function(key,value){if(capacity<Number.MAX_VALUE){var lruEntry=lruHash[key]||(lruHash[key]={key:key});refresh(lruEntry)}if(isUndefined(value))return;if(!(key in data))size++;data[key]=value;if(size>capacity){this.remove(staleEnd.key)}return value},get:function(key){if(capacity<Number.MAX_VALUE){var lruEntry=lruHash[key];if(!lruEntry)return;refresh(lruEntry)}return data[key]},remove:function(key){if(capacity<Number.MAX_VALUE){var lruEntry=lruHash[key];if(!lruEntry)return;if(lruEntry==freshEnd)freshEnd=lruEntry.p;if(lruEntry==staleEnd)staleEnd=lruEntry.n;link(lruEntry.n,lruEntry.p);delete lruHash[key]}delete data[key];size--},removeAll:function(){data={};size=0;lruHash={};freshEnd=staleEnd=null},destroy:function(){data=null;stats=null;lruHash=null;delete caches[cacheId]},info:function(){return extend({},stats,{size:size})}};function refresh(entry){if(entry!=freshEnd){if(!staleEnd){staleEnd=entry}else if(staleEnd==entry){staleEnd=entry.n}link(entry.n,entry.p);link(entry,freshEnd);freshEnd=entry;freshEnd.n=null}}function link(nextEntry,prevEntry){if(nextEntry!=prevEntry){if(nextEntry)nextEntry.p=prevEntry;if(prevEntry)prevEntry.n=nextEntry}}}cacheFactory.info=function(){var info={};forEach(caches,function(cache,cacheId){info[cacheId]=cache.info()});return info};cacheFactory.get=function(cacheId){return caches[cacheId]};return cacheFactory}}function $TemplateCacheProvider(){this.$get=["$cacheFactory",function($cacheFactory){return $cacheFactory("templates")}]}var $compileMinErr=minErr("$compile");$CompileProvider.$inject=["$provide","$$sanitizeUriProvider"];function $CompileProvider($provide,$$sanitizeUriProvider){var hasDirectives={},Suffix="Directive",COMMENT_DIRECTIVE_REGEXP=/^\s*directive\:\s*([\d\w_\-]+)\s+(.*)$/,CLASS_DIRECTIVE_REGEXP=/(([\d\w_\-]+)(?:\:([^;]+))?;?)/,ALL_OR_NOTHING_ATTRS=makeMap("ngSrc,ngSrcset,src,srcset"),REQUIRE_PREFIX_REGEXP=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/;var EVENT_HANDLER_ATTR_REGEXP=/^(on[a-z]+|formaction)$/;function parseIsolateBindings(scope,directiveName){var LOCAL_REGEXP=/^\s*([@=&])(\??)\s*(\w*)\s*$/;var bindings={};forEach(scope,function(definition,scopeName){var match=definition.match(LOCAL_REGEXP);if(!match){throw $compileMinErr("iscp","Invalid isolate scope definition for directive '{0}'."+" Definition: {... {1}: '{2}' ...}",directiveName,scopeName,definition)}bindings[scopeName]={attrName:match[3]||scopeName,mode:match[1],optional:match[2]==="?"}});return bindings}this.directive=function registerDirective(name,directiveFactory){assertNotHasOwnProperty(name,"directive");if(isString(name)){assertArg(directiveFactory,"directiveFactory");if(!hasDirectives.hasOwnProperty(name)){hasDirectives[name]=[];$provide.factory(name+Suffix,["$injector","$exceptionHandler",function($injector,$exceptionHandler){var directives=[];forEach(hasDirectives[name],function(directiveFactory,index){try{var directive=$injector.invoke(directiveFactory);if(isFunction(directive)){directive={compile:valueFn(directive)}}else if(!directive.compile&&directive.link){directive.compile=valueFn(directive.link)}directive.priority=directive.priority||0;directive.index=index;directive.name=directive.name||name;directive.require=directive.require||directive.controller&&directive.name;directive.restrict=directive.restrict||"EA";if(isObject(directive.scope)){directive.$$isolateBindings=parseIsolateBindings(directive.scope,directive.name)}directives.push(directive)}catch(e){$exceptionHandler(e)}});return directives}])}hasDirectives[name].push(directiveFactory)}else{forEach(name,reverseParams(registerDirective))}return this};this.aHrefSanitizationWhitelist=function(regexp){if(isDefined(regexp)){$$sanitizeUriProvider.aHrefSanitizationWhitelist(regexp);return this}else{return $$sanitizeUriProvider.aHrefSanitizationWhitelist()}};this.imgSrcSanitizationWhitelist=function(regexp){if(isDefined(regexp)){$$sanitizeUriProvider.imgSrcSanitizationWhitelist(regexp);return this}else{return $$sanitizeUriProvider.imgSrcSanitizationWhitelist()}};var debugInfoEnabled=true;this.debugInfoEnabled=function(enabled){if(isDefined(enabled)){debugInfoEnabled=enabled;return this}return debugInfoEnabled};this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function($injector,$interpolate,$exceptionHandler,$templateRequest,$parse,$controller,$rootScope,$document,$sce,$animate,$$sanitizeUri){var Attributes=function(element,attributesToCopy){if(attributesToCopy){var keys=Object.keys(attributesToCopy);var i,l,key;for(i=0,l=keys.length;i<l;i++){key=keys[i];this[key]=attributesToCopy[key]}}else{this.$attr={}}this.$$element=element};Attributes.prototype={$normalize:directiveNormalize,$addClass:function(classVal){if(classVal&&classVal.length>0){$animate.addClass(this.$$element,classVal)}},$removeClass:function(classVal){if(classVal&&classVal.length>0){$animate.removeClass(this.$$element,classVal)}},$updateClass:function(newClasses,oldClasses){var toAdd=tokenDifference(newClasses,oldClasses);if(toAdd&&toAdd.length){$animate.addClass(this.$$element,toAdd)}var toRemove=tokenDifference(oldClasses,newClasses);if(toRemove&&toRemove.length){$animate.removeClass(this.$$element,toRemove)}},$set:function(key,value,writeAttr,attrName){var node=this.$$element[0],booleanKey=getBooleanAttrName(node,key),aliasedKey=getAliasedAttrName(node,key),observer=key,normalizedVal,nodeName;if(booleanKey){this.$$element.prop(key,value);attrName=booleanKey}else if(aliasedKey){this[aliasedKey]=value;observer=aliasedKey}this[key]=value;if(attrName){this.$attr[key]=attrName}else{attrName=this.$attr[key];if(!attrName){this.$attr[key]=attrName=snake_case(key,"-")}}nodeName=nodeName_(this.$$element);if(nodeName==="a"&&key==="href"||nodeName==="img"&&key==="src"){this[key]=value=$$sanitizeUri(value,key==="src")}else if(nodeName==="img"&&key==="srcset"){var result="";var trimmedSrcset=trim(value);var srcPattern=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/;var pattern=/\s/.test(trimmedSrcset)?srcPattern:/(,)/;var rawUris=trimmedSrcset.split(pattern);var nbrUrisWith2parts=Math.floor(rawUris.length/2);for(var i=0;i<nbrUrisWith2parts;i++){var innerIdx=i*2;result+=$$sanitizeUri(trim(rawUris[innerIdx]),true);result+=" "+trim(rawUris[innerIdx+1])}var lastTuple=trim(rawUris[i*2]).split(/\s/);result+=$$sanitizeUri(trim(lastTuple[0]),true);if(lastTuple.length===2){result+=" "+trim(lastTuple[1])}this[key]=value=result}if(writeAttr!==false){if(value===null||value===undefined){this.$$element.removeAttr(attrName)}else{this.$$element.attr(attrName,value)}}var $$observers=this.$$observers;$$observers&&forEach($$observers[observer],function(fn){try{fn(value)}catch(e){$exceptionHandler(e)}})},$observe:function(key,fn){var attrs=this,$$observers=attrs.$$observers||(attrs.$$observers=createMap()),listeners=$$observers[key]||($$observers[key]=[]);listeners.push(fn);$rootScope.$evalAsync(function(){if(!listeners.$$inter){fn(attrs[key])}});return function(){arrayRemove(listeners,fn)}}};function safeAddClass($element,className){try{$element.addClass(className)}catch(e){}}var startSymbol=$interpolate.startSymbol(),endSymbol=$interpolate.endSymbol(),denormalizeTemplate=startSymbol=="{{"||endSymbol=="}}"?identity:function denormalizeTemplate(template){return template.replace(/\{\{/g,startSymbol).replace(/}}/g,endSymbol)},NG_ATTR_BINDING=/^ngAttr[A-Z]/;compile.$$addBindingInfo=debugInfoEnabled?function $$addBindingInfo($element,binding){var bindings=$element.data("$binding")||[];if(isArray(binding)){bindings=bindings.concat(binding)}else{bindings.push(binding)}$element.data("$binding",bindings)}:noop;compile.$$addBindingClass=debugInfoEnabled?function $$addBindingClass($element){safeAddClass($element,"ng-binding")}:noop;compile.$$addScopeInfo=debugInfoEnabled?function $$addScopeInfo($element,scope,isolated,noTemplate){var dataName=isolated?noTemplate?"$isolateScopeNoTemplate":"$isolateScope":"$scope";$element.data(dataName,scope)}:noop;compile.$$addScopeClass=debugInfoEnabled?function $$addScopeClass($element,isolated){safeAddClass($element,isolated?"ng-isolate-scope":"ng-scope")}:noop;return compile;function compile($compileNodes,transcludeFn,maxPriority,ignoreDirective,previousCompileContext){if(!($compileNodes instanceof jqLite)){$compileNodes=jqLite($compileNodes)}forEach($compileNodes,function(node,index){if(node.nodeType==NODE_TYPE_TEXT&&node.nodeValue.match(/\S+/)){$compileNodes[index]=jqLite(node).wrap("<span></span>").parent()[0]}});var compositeLinkFn=compileNodes($compileNodes,transcludeFn,$compileNodes,maxPriority,ignoreDirective,previousCompileContext);compile.$$addScopeClass($compileNodes);var namespace=null;return function publicLinkFn(scope,cloneConnectFn,transcludeControllers,parentBoundTranscludeFn,futureParentElement){assertArg(scope,"scope");
if(!namespace){namespace=detectNamespaceForChildElements(futureParentElement)}var $linkNode;if(namespace!=="html"){$linkNode=jqLite(wrapTemplate(namespace,jqLite("<div>").append($compileNodes).html()))}else if(cloneConnectFn){$linkNode=JQLitePrototype.clone.call($compileNodes)}else{$linkNode=$compileNodes}if(transcludeControllers){for(var controllerName in transcludeControllers){$linkNode.data("$"+controllerName+"Controller",transcludeControllers[controllerName].instance)}}compile.$$addScopeInfo($linkNode,scope);if(cloneConnectFn)cloneConnectFn($linkNode,scope);if(compositeLinkFn)compositeLinkFn(scope,$linkNode,$linkNode,parentBoundTranscludeFn);return $linkNode}}function detectNamespaceForChildElements(parentElement){var node=parentElement&&parentElement[0];if(!node){return"html"}else{return nodeName_(node)!=="foreignobject"&&node.toString().match(/SVG/)?"svg":"html"}}function compileNodes(nodeList,transcludeFn,$rootElement,maxPriority,ignoreDirective,previousCompileContext){var linkFns=[],attrs,directives,nodeLinkFn,childNodes,childLinkFn,linkFnFound,nodeLinkFnFound;for(var i=0;i<nodeList.length;i++){attrs=new Attributes;directives=collectDirectives(nodeList[i],[],attrs,i===0?maxPriority:undefined,ignoreDirective);nodeLinkFn=directives.length?applyDirectivesToNode(directives,nodeList[i],attrs,transcludeFn,$rootElement,null,[],[],previousCompileContext):null;if(nodeLinkFn&&nodeLinkFn.scope){compile.$$addScopeClass(attrs.$$element)}childLinkFn=nodeLinkFn&&nodeLinkFn.terminal||!(childNodes=nodeList[i].childNodes)||!childNodes.length?null:compileNodes(childNodes,nodeLinkFn?(nodeLinkFn.transcludeOnThisElement||!nodeLinkFn.templateOnThisElement)&&nodeLinkFn.transclude:transcludeFn);if(nodeLinkFn||childLinkFn){linkFns.push(i,nodeLinkFn,childLinkFn);linkFnFound=true;nodeLinkFnFound=nodeLinkFnFound||nodeLinkFn}previousCompileContext=null}return linkFnFound?compositeLinkFn:null;function compositeLinkFn(scope,nodeList,$rootElement,parentBoundTranscludeFn){var nodeLinkFn,childLinkFn,node,childScope,i,ii,idx,childBoundTranscludeFn;var stableNodeList;if(nodeLinkFnFound){var nodeListLength=nodeList.length;stableNodeList=new Array(nodeListLength);for(i=0;i<linkFns.length;i+=3){idx=linkFns[i];stableNodeList[idx]=nodeList[idx]}}else{stableNodeList=nodeList}for(i=0,ii=linkFns.length;i<ii;){node=stableNodeList[linkFns[i++]];nodeLinkFn=linkFns[i++];childLinkFn=linkFns[i++];if(nodeLinkFn){if(nodeLinkFn.scope){childScope=scope.$new();compile.$$addScopeInfo(jqLite(node),childScope)}else{childScope=scope}if(nodeLinkFn.transcludeOnThisElement){childBoundTranscludeFn=createBoundTranscludeFn(scope,nodeLinkFn.transclude,parentBoundTranscludeFn,nodeLinkFn.elementTranscludeOnThisElement)}else if(!nodeLinkFn.templateOnThisElement&&parentBoundTranscludeFn){childBoundTranscludeFn=parentBoundTranscludeFn}else if(!parentBoundTranscludeFn&&transcludeFn){childBoundTranscludeFn=createBoundTranscludeFn(scope,transcludeFn)}else{childBoundTranscludeFn=null}nodeLinkFn(childLinkFn,childScope,node,$rootElement,childBoundTranscludeFn)}else if(childLinkFn){childLinkFn(scope,node.childNodes,undefined,parentBoundTranscludeFn)}}}}function createBoundTranscludeFn(scope,transcludeFn,previousBoundTranscludeFn,elementTransclusion){var boundTranscludeFn=function(transcludedScope,cloneFn,controllers,futureParentElement,containingScope){if(!transcludedScope){transcludedScope=scope.$new(false,containingScope);transcludedScope.$$transcluded=true}return transcludeFn(transcludedScope,cloneFn,controllers,previousBoundTranscludeFn,futureParentElement)};return boundTranscludeFn}function collectDirectives(node,directives,attrs,maxPriority,ignoreDirective){var nodeType=node.nodeType,attrsMap=attrs.$attr,match,className;switch(nodeType){case NODE_TYPE_ELEMENT:addDirective(directives,directiveNormalize(nodeName_(node)),"E",maxPriority,ignoreDirective);for(var attr,name,nName,ngAttrName,value,isNgAttr,nAttrs=node.attributes,j=0,jj=nAttrs&&nAttrs.length;j<jj;j++){var attrStartName=false;var attrEndName=false;attr=nAttrs[j];name=attr.name;value=trim(attr.value);ngAttrName=directiveNormalize(name);if(isNgAttr=NG_ATTR_BINDING.test(ngAttrName)){name=snake_case(ngAttrName.substr(6),"-")}var directiveNName=ngAttrName.replace(/(Start|End)$/,"");if(directiveIsMultiElement(directiveNName)){if(ngAttrName===directiveNName+"Start"){attrStartName=name;attrEndName=name.substr(0,name.length-5)+"end";name=name.substr(0,name.length-6)}}nName=directiveNormalize(name.toLowerCase());attrsMap[nName]=name;if(isNgAttr||!attrs.hasOwnProperty(nName)){attrs[nName]=value;if(getBooleanAttrName(node,nName)){attrs[nName]=true}}addAttrInterpolateDirective(node,directives,value,nName,isNgAttr);addDirective(directives,nName,"A",maxPriority,ignoreDirective,attrStartName,attrEndName)}className=node.className;if(isString(className)&&className!==""){while(match=CLASS_DIRECTIVE_REGEXP.exec(className)){nName=directiveNormalize(match[2]);if(addDirective(directives,nName,"C",maxPriority,ignoreDirective)){attrs[nName]=trim(match[3])}className=className.substr(match.index+match[0].length)}}break;case NODE_TYPE_TEXT:addTextInterpolateDirective(directives,node.nodeValue);break;case NODE_TYPE_COMMENT:try{match=COMMENT_DIRECTIVE_REGEXP.exec(node.nodeValue);if(match){nName=directiveNormalize(match[1]);if(addDirective(directives,nName,"M",maxPriority,ignoreDirective)){attrs[nName]=trim(match[2])}}}catch(e){}break}directives.sort(byPriority);return directives}function groupScan(node,attrStart,attrEnd){var nodes=[];var depth=0;if(attrStart&&node.hasAttribute&&node.hasAttribute(attrStart)){var startNode=node;do{if(!node){throw $compileMinErr("uterdir","Unterminated attribute, found '{0}' but no matching '{1}' found.",attrStart,attrEnd)}if(node.nodeType==NODE_TYPE_ELEMENT){if(node.hasAttribute(attrStart))depth++;if(node.hasAttribute(attrEnd))depth--}nodes.push(node);node=node.nextSibling}while(depth>0)}else{nodes.push(node)}return jqLite(nodes)}function groupElementsLinkFnWrapper(linkFn,attrStart,attrEnd){return function(scope,element,attrs,controllers,transcludeFn){element=groupScan(element[0],attrStart,attrEnd);return linkFn(scope,element,attrs,controllers,transcludeFn)}}function applyDirectivesToNode(directives,compileNode,templateAttrs,transcludeFn,jqCollection,originalReplaceDirective,preLinkFns,postLinkFns,previousCompileContext){previousCompileContext=previousCompileContext||{};var terminalPriority=-Number.MAX_VALUE,newScopeDirective,controllerDirectives=previousCompileContext.controllerDirectives,controllers,newIsolateScopeDirective=previousCompileContext.newIsolateScopeDirective,templateDirective=previousCompileContext.templateDirective,nonTlbTranscludeDirective=previousCompileContext.nonTlbTranscludeDirective,hasTranscludeDirective=false,hasTemplate=false,hasElementTranscludeDirective=previousCompileContext.hasElementTranscludeDirective,$compileNode=templateAttrs.$$element=jqLite(compileNode),directive,directiveName,$template,replaceDirective=originalReplaceDirective,childTranscludeFn=transcludeFn,linkFn,directiveValue;for(var i=0,ii=directives.length;i<ii;i++){directive=directives[i];var attrStart=directive.$$start;var attrEnd=directive.$$end;if(attrStart){$compileNode=groupScan(compileNode,attrStart,attrEnd)}$template=undefined;if(terminalPriority>directive.priority){break}if(directiveValue=directive.scope){if(!directive.templateUrl){if(isObject(directiveValue)){assertNoDuplicate("new/isolated scope",newIsolateScopeDirective||newScopeDirective,directive,$compileNode);newIsolateScopeDirective=directive}else{assertNoDuplicate("new/isolated scope",newIsolateScopeDirective,directive,$compileNode)}}newScopeDirective=newScopeDirective||directive}directiveName=directive.name;if(!directive.templateUrl&&directive.controller){directiveValue=directive.controller;controllerDirectives=controllerDirectives||{};assertNoDuplicate("'"+directiveName+"' controller",controllerDirectives[directiveName],directive,$compileNode);controllerDirectives[directiveName]=directive}if(directiveValue=directive.transclude){hasTranscludeDirective=true;if(!directive.$$tlb){assertNoDuplicate("transclusion",nonTlbTranscludeDirective,directive,$compileNode);nonTlbTranscludeDirective=directive}if(directiveValue=="element"){hasElementTranscludeDirective=true;terminalPriority=directive.priority;$template=$compileNode;$compileNode=templateAttrs.$$element=jqLite(document.createComment(" "+directiveName+": "+templateAttrs[directiveName]+" "));compileNode=$compileNode[0];replaceWith(jqCollection,sliceArgs($template),compileNode);childTranscludeFn=compile($template,transcludeFn,terminalPriority,replaceDirective&&replaceDirective.name,{nonTlbTranscludeDirective:nonTlbTranscludeDirective})}else{$template=jqLite(jqLiteClone(compileNode)).contents();$compileNode.empty();childTranscludeFn=compile($template,transcludeFn)}}if(directive.template){hasTemplate=true;assertNoDuplicate("template",templateDirective,directive,$compileNode);templateDirective=directive;directiveValue=isFunction(directive.template)?directive.template($compileNode,templateAttrs):directive.template;directiveValue=denormalizeTemplate(directiveValue);if(directive.replace){replaceDirective=directive;if(jqLiteIsTextNode(directiveValue)){$template=[]}else{$template=removeComments(wrapTemplate(directive.templateNamespace,trim(directiveValue)))}compileNode=$template[0];if($template.length!=1||compileNode.nodeType!==NODE_TYPE_ELEMENT){throw $compileMinErr("tplrt","Template for directive '{0}' must have exactly one root element. {1}",directiveName,"")}replaceWith(jqCollection,$compileNode,compileNode);var newTemplateAttrs={$attr:{}};var templateDirectives=collectDirectives(compileNode,[],newTemplateAttrs);var unprocessedDirectives=directives.splice(i+1,directives.length-(i+1));if(newIsolateScopeDirective){markDirectivesAsIsolate(templateDirectives)}directives=directives.concat(templateDirectives).concat(unprocessedDirectives);mergeTemplateAttributes(templateAttrs,newTemplateAttrs);ii=directives.length}else{$compileNode.html(directiveValue)}}if(directive.templateUrl){hasTemplate=true;assertNoDuplicate("template",templateDirective,directive,$compileNode);templateDirective=directive;if(directive.replace){replaceDirective=directive}nodeLinkFn=compileTemplateUrl(directives.splice(i,directives.length-i),$compileNode,templateAttrs,jqCollection,hasTranscludeDirective&&childTranscludeFn,preLinkFns,postLinkFns,{controllerDirectives:controllerDirectives,newIsolateScopeDirective:newIsolateScopeDirective,templateDirective:templateDirective,nonTlbTranscludeDirective:nonTlbTranscludeDirective});ii=directives.length}else if(directive.compile){try{linkFn=directive.compile($compileNode,templateAttrs,childTranscludeFn);if(isFunction(linkFn)){addLinkFns(null,linkFn,attrStart,attrEnd)}else if(linkFn){addLinkFns(linkFn.pre,linkFn.post,attrStart,attrEnd)}}catch(e){$exceptionHandler(e,startingTag($compileNode))}}if(directive.terminal){nodeLinkFn.terminal=true;terminalPriority=Math.max(terminalPriority,directive.priority)}}nodeLinkFn.scope=newScopeDirective&&newScopeDirective.scope===true;nodeLinkFn.transcludeOnThisElement=hasTranscludeDirective;nodeLinkFn.elementTranscludeOnThisElement=hasElementTranscludeDirective;nodeLinkFn.templateOnThisElement=hasTemplate;nodeLinkFn.transclude=childTranscludeFn;previousCompileContext.hasElementTranscludeDirective=hasElementTranscludeDirective;return nodeLinkFn;function addLinkFns(pre,post,attrStart,attrEnd){if(pre){if(attrStart)pre=groupElementsLinkFnWrapper(pre,attrStart,attrEnd);pre.require=directive.require;pre.directiveName=directiveName;if(newIsolateScopeDirective===directive||directive.$$isolateScope){pre=cloneAndAnnotateFn(pre,{isolateScope:true})}preLinkFns.push(pre)}if(post){if(attrStart)post=groupElementsLinkFnWrapper(post,attrStart,attrEnd);post.require=directive.require;post.directiveName=directiveName;if(newIsolateScopeDirective===directive||directive.$$isolateScope){post=cloneAndAnnotateFn(post,{isolateScope:true})}postLinkFns.push(post)}}function getControllers(directiveName,require,$element,elementControllers){var value,retrievalMethod="data",optional=false;var $searchElement=$element;var match;if(isString(require)){match=require.match(REQUIRE_PREFIX_REGEXP);require=require.substring(match[0].length);if(match[3]){if(match[1])match[3]=null;else match[1]=match[3]}if(match[1]==="^"){retrievalMethod="inheritedData"}else if(match[1]==="^^"){retrievalMethod="inheritedData";$searchElement=$element.parent()}if(match[2]==="?"){optional=true}value=null;if(elementControllers&&retrievalMethod==="data"){if(value=elementControllers[require]){value=value.instance}}value=value||$searchElement[retrievalMethod]("$"+require+"Controller");if(!value&&!optional){throw $compileMinErr("ctreq","Controller '{0}', required by directive '{1}', can't be found!",require,directiveName)}return value}else if(isArray(require)){value=[];forEach(require,function(require){value.push(getControllers(directiveName,require,$element,elementControllers))})}return value}function nodeLinkFn(childLinkFn,scope,linkNode,$rootElement,boundTranscludeFn){var i,ii,linkFn,controller,isolateScope,elementControllers,transcludeFn,$element,attrs;if(compileNode===linkNode){attrs=templateAttrs;$element=templateAttrs.$$element}else{$element=jqLite(linkNode);attrs=new Attributes($element,templateAttrs)}if(newIsolateScopeDirective){isolateScope=scope.$new(true)}transcludeFn=boundTranscludeFn&&controllersBoundTransclude;if(controllerDirectives){controllers={};elementControllers={};forEach(controllerDirectives,function(directive){var locals={$scope:directive===newIsolateScopeDirective||directive.$$isolateScope?isolateScope:scope,$element:$element,$attrs:attrs,$transclude:transcludeFn},controllerInstance;controller=directive.controller;if(controller=="@"){controller=attrs[directive.name]}controllerInstance=$controller(controller,locals,true,directive.controllerAs);elementControllers[directive.name]=controllerInstance;if(!hasElementTranscludeDirective){$element.data("$"+directive.name+"Controller",controllerInstance.instance)}controllers[directive.name]=controllerInstance})}if(newIsolateScopeDirective){var LOCAL_REGEXP=/^\s*([@=&])(\??)\s*(\w*)\s*$/;compile.$$addScopeInfo($element,isolateScope,true,!(templateDirective&&(templateDirective===newIsolateScopeDirective||templateDirective===newIsolateScopeDirective.$$originalDirective)));compile.$$addScopeClass($element,true);var isolateScopeController=controllers&&controllers[newIsolateScopeDirective.name];var isolateBindingContext=isolateScope;if(isolateScopeController&&isolateScopeController.identifier&&newIsolateScopeDirective.bindToController===true){isolateBindingContext=isolateScopeController.instance}forEach(isolateScope.$$isolateBindings=newIsolateScopeDirective.$$isolateBindings,function(definition,scopeName){var attrName=definition.attrName,optional=definition.optional,mode=definition.mode,lastValue,parentGet,parentSet,compare;switch(mode){case"@":attrs.$observe(attrName,function(value){isolateBindingContext[scopeName]=value});attrs.$$observers[attrName].$$scope=scope;if(attrs[attrName]){isolateBindingContext[scopeName]=$interpolate(attrs[attrName])(scope)}break;case"=":if(optional&&!attrs[attrName]){return}parentGet=$parse(attrs[attrName]);if(parentGet.literal){compare=equals}else{compare=function(a,b){return a===b||a!==a&&b!==b}}parentSet=parentGet.assign||function(){lastValue=isolateBindingContext[scopeName]=parentGet(scope);throw $compileMinErr("nonassign","Expression '{0}' used with directive '{1}' is non-assignable!",attrs[attrName],newIsolateScopeDirective.name)};lastValue=isolateBindingContext[scopeName]=parentGet(scope);var parentValueWatch=function parentValueWatch(parentValue){if(!compare(parentValue,isolateBindingContext[scopeName])){if(!compare(parentValue,lastValue)){isolateBindingContext[scopeName]=parentValue}else{parentSet(scope,parentValue=isolateBindingContext[scopeName])}}return lastValue=parentValue};parentValueWatch.$stateful=true;var unwatch=scope.$watch($parse(attrs[attrName],parentValueWatch),null,parentGet.literal);isolateScope.$on("$destroy",unwatch);break;case"&":parentGet=$parse(attrs[attrName]);isolateBindingContext[scopeName]=function(locals){return parentGet(scope,locals)};break}})}if(controllers){forEach(controllers,function(controller){controller()});controllers=null}for(i=0,ii=preLinkFns.length;i<ii;i++){linkFn=preLinkFns[i];invokeLinkFn(linkFn,linkFn.isolateScope?isolateScope:scope,$element,attrs,linkFn.require&&getControllers(linkFn.directiveName,linkFn.require,$element,elementControllers),transcludeFn)}var scopeToChild=scope;if(newIsolateScopeDirective&&(newIsolateScopeDirective.template||newIsolateScopeDirective.templateUrl===null)){scopeToChild=isolateScope}childLinkFn&&childLinkFn(scopeToChild,linkNode.childNodes,undefined,boundTranscludeFn);for(i=postLinkFns.length-1;i>=0;i--){linkFn=postLinkFns[i];invokeLinkFn(linkFn,linkFn.isolateScope?isolateScope:scope,$element,attrs,linkFn.require&&getControllers(linkFn.directiveName,linkFn.require,$element,elementControllers),transcludeFn)}function controllersBoundTransclude(scope,cloneAttachFn,futureParentElement){var transcludeControllers;if(!isScope(scope)){futureParentElement=cloneAttachFn;cloneAttachFn=scope;scope=undefined}if(hasElementTranscludeDirective){transcludeControllers=elementControllers}if(!futureParentElement){futureParentElement=hasElementTranscludeDirective?$element.parent():$element}return boundTranscludeFn(scope,cloneAttachFn,transcludeControllers,futureParentElement,scopeToChild)}}}function markDirectivesAsIsolate(directives){for(var j=0,jj=directives.length;j<jj;j++){directives[j]=inherit(directives[j],{$$isolateScope:true})}}function addDirective(tDirectives,name,location,maxPriority,ignoreDirective,startAttrName,endAttrName){if(name===ignoreDirective)return null;var match=null;if(hasDirectives.hasOwnProperty(name)){for(var directive,directives=$injector.get(name+Suffix),i=0,ii=directives.length;i<ii;i++){try{directive=directives[i];if((maxPriority===undefined||maxPriority>directive.priority)&&directive.restrict.indexOf(location)!=-1){if(startAttrName){directive=inherit(directive,{$$start:startAttrName,$$end:endAttrName})}tDirectives.push(directive);match=directive}}catch(e){$exceptionHandler(e)}}}return match}function directiveIsMultiElement(name){if(hasDirectives.hasOwnProperty(name)){for(var directive,directives=$injector.get(name+Suffix),i=0,ii=directives.length;i<ii;i++){directive=directives[i];if(directive.multiElement){return true}}}return false}function mergeTemplateAttributes(dst,src){var srcAttr=src.$attr,dstAttr=dst.$attr,$element=dst.$$element;forEach(dst,function(value,key){if(key.charAt(0)!="$"){if(src[key]&&src[key]!==value){value+=(key==="style"?";":" ")+src[key]}dst.$set(key,value,true,srcAttr[key])}});forEach(src,function(value,key){if(key=="class"){safeAddClass($element,value);dst["class"]=(dst["class"]?dst["class"]+" ":"")+value}else if(key=="style"){$element.attr("style",$element.attr("style")+";"+value);dst["style"]=(dst["style"]?dst["style"]+";":"")+value}else if(key.charAt(0)!="$"&&!dst.hasOwnProperty(key)){dst[key]=value;dstAttr[key]=srcAttr[key]}})}function compileTemplateUrl(directives,$compileNode,tAttrs,$rootElement,childTranscludeFn,preLinkFns,postLinkFns,previousCompileContext){var linkQueue=[],afterTemplateNodeLinkFn,afterTemplateChildLinkFn,beforeTemplateCompileNode=$compileNode[0],origAsyncDirective=directives.shift(),derivedSyncDirective=extend({},origAsyncDirective,{templateUrl:null,transclude:null,replace:null,$$originalDirective:origAsyncDirective}),templateUrl=isFunction(origAsyncDirective.templateUrl)?origAsyncDirective.templateUrl($compileNode,tAttrs):origAsyncDirective.templateUrl,templateNamespace=origAsyncDirective.templateNamespace;$compileNode.empty();$templateRequest($sce.getTrustedResourceUrl(templateUrl)).then(function(content){var compileNode,tempTemplateAttrs,$template,childBoundTranscludeFn;content=denormalizeTemplate(content);if(origAsyncDirective.replace){if(jqLiteIsTextNode(content)){$template=[]}else{$template=removeComments(wrapTemplate(templateNamespace,trim(content)))}compileNode=$template[0];if($template.length!=1||compileNode.nodeType!==NODE_TYPE_ELEMENT){throw $compileMinErr("tplrt","Template for directive '{0}' must have exactly one root element. {1}",origAsyncDirective.name,templateUrl)}tempTemplateAttrs={$attr:{}};replaceWith($rootElement,$compileNode,compileNode);var templateDirectives=collectDirectives(compileNode,[],tempTemplateAttrs);if(isObject(origAsyncDirective.scope)){markDirectivesAsIsolate(templateDirectives)}directives=templateDirectives.concat(directives);mergeTemplateAttributes(tAttrs,tempTemplateAttrs)}else{compileNode=beforeTemplateCompileNode;$compileNode.html(content)}directives.unshift(derivedSyncDirective);afterTemplateNodeLinkFn=applyDirectivesToNode(directives,compileNode,tAttrs,childTranscludeFn,$compileNode,origAsyncDirective,preLinkFns,postLinkFns,previousCompileContext);forEach($rootElement,function(node,i){if(node==compileNode){$rootElement[i]=$compileNode[0]}});afterTemplateChildLinkFn=compileNodes($compileNode[0].childNodes,childTranscludeFn);while(linkQueue.length){var scope=linkQueue.shift(),beforeTemplateLinkNode=linkQueue.shift(),linkRootElement=linkQueue.shift(),boundTranscludeFn=linkQueue.shift(),linkNode=$compileNode[0];if(scope.$$destroyed)continue;if(beforeTemplateLinkNode!==beforeTemplateCompileNode){var oldClasses=beforeTemplateLinkNode.className;if(!(previousCompileContext.hasElementTranscludeDirective&&origAsyncDirective.replace)){linkNode=jqLiteClone(compileNode)}replaceWith(linkRootElement,jqLite(beforeTemplateLinkNode),linkNode);safeAddClass(jqLite(linkNode),oldClasses)}if(afterTemplateNodeLinkFn.transcludeOnThisElement){childBoundTranscludeFn=createBoundTranscludeFn(scope,afterTemplateNodeLinkFn.transclude,boundTranscludeFn)}else{childBoundTranscludeFn=boundTranscludeFn}afterTemplateNodeLinkFn(afterTemplateChildLinkFn,scope,linkNode,$rootElement,childBoundTranscludeFn)}linkQueue=null});return function delayedNodeLinkFn(ignoreChildLinkFn,scope,node,rootElement,boundTranscludeFn){var childBoundTranscludeFn=boundTranscludeFn;if(scope.$$destroyed)return;if(linkQueue){linkQueue.push(scope);linkQueue.push(node);linkQueue.push(rootElement);linkQueue.push(childBoundTranscludeFn)}else{if(afterTemplateNodeLinkFn.transcludeOnThisElement){childBoundTranscludeFn=createBoundTranscludeFn(scope,afterTemplateNodeLinkFn.transclude,boundTranscludeFn)}afterTemplateNodeLinkFn(afterTemplateChildLinkFn,scope,node,rootElement,childBoundTranscludeFn)}}}function byPriority(a,b){var diff=b.priority-a.priority;if(diff!==0)return diff;if(a.name!==b.name)return a.name<b.name?-1:1;return a.index-b.index}function assertNoDuplicate(what,previousDirective,directive,element){if(previousDirective){throw $compileMinErr("multidir","Multiple directives [{0}, {1}] asking for {2} on: {3}",previousDirective.name,directive.name,what,startingTag(element))}}function addTextInterpolateDirective(directives,text){var interpolateFn=$interpolate(text,true);if(interpolateFn){directives.push({priority:0,compile:function textInterpolateCompileFn(templateNode){var templateNodeParent=templateNode.parent(),hasCompileParent=!!templateNodeParent.length;if(hasCompileParent)compile.$$addBindingClass(templateNodeParent);return function textInterpolateLinkFn(scope,node){var parent=node.parent();if(!hasCompileParent)compile.$$addBindingClass(parent);compile.$$addBindingInfo(parent,interpolateFn.expressions);scope.$watch(interpolateFn,function interpolateFnWatchAction(value){node[0].nodeValue=value})}}})}}function wrapTemplate(type,template){type=lowercase(type||"html");switch(type){case"svg":case"math":var wrapper=document.createElement("div");wrapper.innerHTML="<"+type+">"+template+"</"+type+">";return wrapper.childNodes[0].childNodes;default:return template}}function getTrustedContext(node,attrNormalizedName){if(attrNormalizedName=="srcdoc"){return $sce.HTML}var tag=nodeName_(node);if(attrNormalizedName=="xlinkHref"||tag=="form"&&attrNormalizedName=="action"||tag!="img"&&(attrNormalizedName=="src"||attrNormalizedName=="ngSrc")){return $sce.RESOURCE_URL}}function addAttrInterpolateDirective(node,directives,value,name,allOrNothing){var interpolateFn=$interpolate(value,true);if(!interpolateFn)return;if(name==="multiple"&&nodeName_(node)==="select"){throw $compileMinErr("selmulti","Binding to the 'multiple' attribute is not supported. Element: {0}",startingTag(node))}directives.push({priority:100,compile:function(){return{pre:function attrInterpolatePreLinkFn(scope,element,attr){var $$observers=attr.$$observers||(attr.$$observers={});if(EVENT_HANDLER_ATTR_REGEXP.test(name)){throw $compileMinErr("nodomevents","Interpolations for HTML DOM event attributes are disallowed. Please use the "+"ng- versions (such as ng-click instead of onclick) instead.")}if(!attr[name]){return}interpolateFn=$interpolate(attr[name],true,getTrustedContext(node,name),ALL_OR_NOTHING_ATTRS[name]||allOrNothing);if(!interpolateFn)return;attr[name]=interpolateFn(scope);($$observers[name]||($$observers[name]=[])).$$inter=true;(attr.$$observers&&attr.$$observers[name].$$scope||scope).$watch(interpolateFn,function interpolateFnWatchAction(newValue,oldValue){if(name==="class"&&newValue!=oldValue){attr.$updateClass(newValue,oldValue)}else{attr.$set(name,newValue)}})}}}})}function replaceWith($rootElement,elementsToRemove,newNode){var firstElementToRemove=elementsToRemove[0],removeCount=elementsToRemove.length,parent=firstElementToRemove.parentNode,i,ii;if($rootElement){for(i=0,ii=$rootElement.length;i<ii;i++){if($rootElement[i]==firstElementToRemove){$rootElement[i++]=newNode;for(var j=i,j2=j+removeCount-1,jj=$rootElement.length;j<jj;j++,j2++){if(j2<jj){$rootElement[j]=$rootElement[j2]}else{delete $rootElement[j]}}$rootElement.length-=removeCount-1;if($rootElement.context===firstElementToRemove){$rootElement.context=newNode}break}}}if(parent){parent.replaceChild(newNode,firstElementToRemove)}var fragment=document.createDocumentFragment();fragment.appendChild(firstElementToRemove);jqLite(newNode).data(jqLite(firstElementToRemove).data());if(!jQuery){delete jqLite.cache[firstElementToRemove[jqLite.expando]]}else{skipDestroyOnNextJQueryCleanData=true;jQuery.cleanData([firstElementToRemove])}for(var k=1,kk=elementsToRemove.length;k<kk;k++){var element=elementsToRemove[k];jqLite(element).remove();fragment.appendChild(element);delete elementsToRemove[k]}elementsToRemove[0]=newNode;elementsToRemove.length=1}function cloneAndAnnotateFn(fn,annotation){return extend(function(){return fn.apply(null,arguments)},fn,annotation)}function invokeLinkFn(linkFn,scope,$element,attrs,controllers,transcludeFn){try{linkFn(scope,$element,attrs,controllers,transcludeFn)}catch(e){$exceptionHandler(e,startingTag($element))}}}]}var PREFIX_REGEXP=/^(x[\:\-_]|data[\:\-_])/i;function directiveNormalize(name){return camelCase(name.replace(PREFIX_REGEXP,""))}function nodesetLinkingFn(scope,nodeList,rootElement,boundTranscludeFn){}function directiveLinkingFn(nodesetLinkingFn,scope,node,rootElement,boundTranscludeFn){}function tokenDifference(str1,str2){var values="",tokens1=str1.split(/\s+/),tokens2=str2.split(/\s+/);outer:for(var i=0;i<tokens1.length;i++){var token=tokens1[i];for(var j=0;j<tokens2.length;j++){if(token==tokens2[j])continue outer}values+=(values.length>0?" ":"")+token}return values}function removeComments(jqNodes){jqNodes=jqLite(jqNodes);var i=jqNodes.length;if(i<=1){return jqNodes}while(i--){var node=jqNodes[i];if(node.nodeType===NODE_TYPE_COMMENT){splice.call(jqNodes,i,1)}}return jqNodes}function $ControllerProvider(){var controllers={},globals=false,CNTRL_REG=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(name,constructor){assertNotHasOwnProperty(name,"controller");if(isObject(name)){extend(controllers,name)}else{controllers[name]=constructor}};this.allowGlobals=function(){globals=true};this.$get=["$injector","$window",function($injector,$window){return function(expression,locals,later,ident){var instance,match,constructor,identifier;later=later===true;if(ident&&isString(ident)){identifier=ident}if(isString(expression)){match=expression.match(CNTRL_REG),constructor=match[1],identifier=identifier||match[3];expression=controllers.hasOwnProperty(constructor)?controllers[constructor]:getter(locals.$scope,constructor,true)||(globals?getter($window,constructor,true):undefined);assertArgFn(expression,constructor,true)}if(later){var Constructor=function(){};Constructor.prototype=(isArray(expression)?expression[expression.length-1]:expression).prototype;instance=new Constructor;if(identifier){addIdentifier(locals,identifier,instance,constructor||expression.name)}return extend(function(){$injector.invoke(expression,instance,locals,constructor);return instance},{instance:instance,identifier:identifier})}instance=$injector.instantiate(expression,locals,constructor);if(identifier){addIdentifier(locals,identifier,instance,constructor||expression.name)}return instance};function addIdentifier(locals,identifier,instance,name){if(!(locals&&isObject(locals.$scope))){throw minErr("$controller")("noscp","Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",name,identifier)}locals.$scope[identifier]=instance}}]}function $DocumentProvider(){this.$get=["$window",function(window){return jqLite(window.document)}]}function $ExceptionHandlerProvider(){this.$get=["$log",function($log){return function(exception,cause){$log.error.apply($log,arguments)}}]}function parseHeaders(headers){var parsed={},key,val,i;if(!headers)return parsed;forEach(headers.split("\n"),function(line){i=line.indexOf(":");key=lowercase(trim(line.substr(0,i)));val=trim(line.substr(i+1));if(key){parsed[key]=parsed[key]?parsed[key]+", "+val:val}});return parsed}function headersGetter(headers){var headersObj=isObject(headers)?headers:undefined;return function(name){if(!headersObj)headersObj=parseHeaders(headers);if(name){return headersObj[lowercase(name)]||null}return headersObj}}function transformData(data,headers,fns){if(isFunction(fns))return fns(data,headers);forEach(fns,function(fn){data=fn(data,headers)});return data}function isSuccess(status){return 200<=status&&status<300}function $HttpProvider(){var JSON_START=/^\s*(\[|\{[^\{])/,JSON_END=/[\}\]]\s*$/,PROTECTION_PREFIX=/^\)\]\}',?\n/,APPLICATION_JSON="application/json",CONTENT_TYPE_APPLICATION_JSON={"Content-Type":APPLICATION_JSON+";charset=utf-8"};var defaults=this.defaults={transformResponse:[function defaultHttpResponseTransform(data,headers){if(isString(data)){data=data.replace(PROTECTION_PREFIX,"");var contentType=headers("Content-Type");if(contentType&&contentType.indexOf(APPLICATION_JSON)===0||JSON_START.test(data)&&JSON_END.test(data)){data=fromJson(data)}}return data}],transformRequest:[function(d){return isObject(d)&&!isFile(d)&&!isBlob(d)?toJson(d):d}],headers:{common:{Accept:"application/json, text/plain, */*"},post:shallowCopy(CONTENT_TYPE_APPLICATION_JSON),put:shallowCopy(CONTENT_TYPE_APPLICATION_JSON),patch:shallowCopy(CONTENT_TYPE_APPLICATION_JSON)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"};var useApplyAsync=false;this.useApplyAsync=function(value){if(isDefined(value)){useApplyAsync=!!value;return this}return useApplyAsync};var interceptorFactories=this.interceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function($httpBackend,$browser,$cacheFactory,$rootScope,$q,$injector){var defaultCache=$cacheFactory("$http");var reversedInterceptors=[];forEach(interceptorFactories,function(interceptorFactory){reversedInterceptors.unshift(isString(interceptorFactory)?$injector.get(interceptorFactory):$injector.invoke(interceptorFactory))});function $http(requestConfig){var config={method:"get",transformRequest:defaults.transformRequest,transformResponse:defaults.transformResponse};var headers=mergeHeaders(requestConfig);extend(config,requestConfig);config.headers=headers;
config.method=uppercase(config.method);var serverRequest=function(config){headers=config.headers;var reqData=transformData(config.data,headersGetter(headers),config.transformRequest);if(isUndefined(reqData)){forEach(headers,function(value,header){if(lowercase(header)==="content-type"){delete headers[header]}})}if(isUndefined(config.withCredentials)&&!isUndefined(defaults.withCredentials)){config.withCredentials=defaults.withCredentials}return sendReq(config,reqData,headers).then(transformResponse,transformResponse)};var chain=[serverRequest,undefined];var promise=$q.when(config);forEach(reversedInterceptors,function(interceptor){if(interceptor.request||interceptor.requestError){chain.unshift(interceptor.request,interceptor.requestError)}if(interceptor.response||interceptor.responseError){chain.push(interceptor.response,interceptor.responseError)}});while(chain.length){var thenFn=chain.shift();var rejectFn=chain.shift();promise=promise.then(thenFn,rejectFn)}promise.success=function(fn){promise.then(function(response){fn(response.data,response.status,response.headers,config)});return promise};promise.error=function(fn){promise.then(null,function(response){fn(response.data,response.status,response.headers,config)});return promise};return promise;function transformResponse(response){var resp=extend({},response);if(!response.data){resp.data=response.data}else{resp.data=transformData(response.data,response.headers,config.transformResponse)}return isSuccess(response.status)?resp:$q.reject(resp)}function mergeHeaders(config){var defHeaders=defaults.headers,reqHeaders=extend({},config.headers),defHeaderName,lowercaseDefHeaderName,reqHeaderName;defHeaders=extend({},defHeaders.common,defHeaders[lowercase(config.method)]);defaultHeadersIteration:for(defHeaderName in defHeaders){lowercaseDefHeaderName=lowercase(defHeaderName);for(reqHeaderName in reqHeaders){if(lowercase(reqHeaderName)===lowercaseDefHeaderName){continue defaultHeadersIteration}}reqHeaders[defHeaderName]=defHeaders[defHeaderName]}execHeaders(reqHeaders);return reqHeaders;function execHeaders(headers){var headerContent;forEach(headers,function(headerFn,header){if(isFunction(headerFn)){headerContent=headerFn();if(headerContent!=null){headers[header]=headerContent}else{delete headers[header]}}})}}}$http.pendingRequests=[];createShortMethods("get","delete","head","jsonp");createShortMethodsWithData("post","put","patch");$http.defaults=defaults;return $http;function createShortMethods(names){forEach(arguments,function(name){$http[name]=function(url,config){return $http(extend(config||{},{method:name,url:url}))}})}function createShortMethodsWithData(name){forEach(arguments,function(name){$http[name]=function(url,data,config){return $http(extend(config||{},{method:name,url:url,data:data}))}})}function sendReq(config,reqData,reqHeaders){var deferred=$q.defer(),promise=deferred.promise,cache,cachedResp,url=buildUrl(config.url,config.params);$http.pendingRequests.push(config);promise.then(removePendingReq,removePendingReq);if((config.cache||defaults.cache)&&config.cache!==false&&(config.method==="GET"||config.method==="JSONP")){cache=isObject(config.cache)?config.cache:isObject(defaults.cache)?defaults.cache:defaultCache}if(cache){cachedResp=cache.get(url);if(isDefined(cachedResp)){if(isPromiseLike(cachedResp)){cachedResp.then(removePendingReq,removePendingReq);return cachedResp}else{if(isArray(cachedResp)){resolvePromise(cachedResp[1],cachedResp[0],shallowCopy(cachedResp[2]),cachedResp[3])}else{resolvePromise(cachedResp,200,{},"OK")}}}else{cache.put(url,promise)}}if(isUndefined(cachedResp)){var xsrfValue=urlIsSameOrigin(config.url)?$browser.cookies()[config.xsrfCookieName||defaults.xsrfCookieName]:undefined;if(xsrfValue){reqHeaders[config.xsrfHeaderName||defaults.xsrfHeaderName]=xsrfValue}$httpBackend(config.method,url,reqData,done,reqHeaders,config.timeout,config.withCredentials,config.responseType)}return promise;function done(status,response,headersString,statusText){if(cache){if(isSuccess(status)){cache.put(url,[status,response,parseHeaders(headersString),statusText])}else{cache.remove(url)}}function resolveHttpPromise(){resolvePromise(response,status,headersString,statusText)}if(useApplyAsync){$rootScope.$applyAsync(resolveHttpPromise)}else{resolveHttpPromise();if(!$rootScope.$$phase)$rootScope.$apply()}}function resolvePromise(response,status,headers,statusText){status=Math.max(status,0);(isSuccess(status)?deferred.resolve:deferred.reject)({data:response,status:status,headers:headersGetter(headers),config:config,statusText:statusText})}function removePendingReq(){var idx=$http.pendingRequests.indexOf(config);if(idx!==-1)$http.pendingRequests.splice(idx,1)}}function buildUrl(url,params){if(!params)return url;var parts=[];forEachSorted(params,function(value,key){if(value===null||isUndefined(value))return;if(!isArray(value))value=[value];forEach(value,function(v){if(isObject(v)){if(isDate(v)){v=v.toISOString()}else{v=toJson(v)}}parts.push(encodeUriQuery(key)+"="+encodeUriQuery(v))})});if(parts.length>0){url+=(url.indexOf("?")==-1?"?":"&")+parts.join("&")}return url}}]}function createXhr(){return new window.XMLHttpRequest}function $HttpBackendProvider(){this.$get=["$browser","$window","$document",function($browser,$window,$document){return createHttpBackend($browser,createXhr,$browser.defer,$window.angular.callbacks,$document[0])}]}function createHttpBackend($browser,createXhr,$browserDefer,callbacks,rawDocument){return function(method,url,post,callback,headers,timeout,withCredentials,responseType){$browser.$$incOutstandingRequestCount();url=url||$browser.url();if(lowercase(method)=="jsonp"){var callbackId="_"+(callbacks.counter++).toString(36);callbacks[callbackId]=function(data){callbacks[callbackId].data=data;callbacks[callbackId].called=true};var jsonpDone=jsonpReq(url.replace("JSON_CALLBACK","angular.callbacks."+callbackId),callbackId,function(status,text){completeRequest(callback,status,callbacks[callbackId].data,"",text);callbacks[callbackId]=noop})}else{var xhr=createXhr();xhr.open(method,url,true);forEach(headers,function(value,key){if(isDefined(value)){xhr.setRequestHeader(key,value)}});xhr.onload=function requestLoaded(){var statusText=xhr.statusText||"";var response="response"in xhr?xhr.response:xhr.responseText;var status=xhr.status===1223?204:xhr.status;if(status===0){status=response?200:urlResolve(url).protocol=="file"?404:0}completeRequest(callback,status,response,xhr.getAllResponseHeaders(),statusText)};var requestError=function(){completeRequest(callback,-1,null,null,"")};xhr.onerror=requestError;xhr.onabort=requestError;if(withCredentials){xhr.withCredentials=true}if(responseType){try{xhr.responseType=responseType}catch(e){if(responseType!=="json"){throw e}}}xhr.send(post||null)}if(timeout>0){var timeoutId=$browserDefer(timeoutRequest,timeout)}else if(isPromiseLike(timeout)){timeout.then(timeoutRequest)}function timeoutRequest(){jsonpDone&&jsonpDone();xhr&&xhr.abort()}function completeRequest(callback,status,response,headersString,statusText){timeoutId&&$browserDefer.cancel(timeoutId);jsonpDone=xhr=null;callback(status,response,headersString,statusText);$browser.$$completeOutstandingRequest(noop)}};function jsonpReq(url,callbackId,done){var script=rawDocument.createElement("script"),callback=null;script.type="text/javascript";script.src=url;script.async=true;callback=function(event){removeEventListenerFn(script,"load",callback);removeEventListenerFn(script,"error",callback);rawDocument.body.removeChild(script);script=null;var status=-1;var text="unknown";if(event){if(event.type==="load"&&!callbacks[callbackId].called){event={type:"error"}}text=event.type;status=event.type==="error"?404:200}if(done){done(status,text)}};addEventListenerFn(script,"load",callback);addEventListenerFn(script,"error",callback);rawDocument.body.appendChild(script);return callback}}var $interpolateMinErr=minErr("$interpolate");function $InterpolateProvider(){var startSymbol="{{";var endSymbol="}}";this.startSymbol=function(value){if(value){startSymbol=value;return this}else{return startSymbol}};this.endSymbol=function(value){if(value){endSymbol=value;return this}else{return endSymbol}};this.$get=["$parse","$exceptionHandler","$sce",function($parse,$exceptionHandler,$sce){var startSymbolLength=startSymbol.length,endSymbolLength=endSymbol.length,escapedStartRegexp=new RegExp(startSymbol.replace(/./g,escape),"g"),escapedEndRegexp=new RegExp(endSymbol.replace(/./g,escape),"g");function escape(ch){return"\\\\\\"+ch}function $interpolate(text,mustHaveExpression,trustedContext,allOrNothing){allOrNothing=!!allOrNothing;var startIndex,endIndex,index=0,expressions=[],parseFns=[],textLength=text.length,exp,concat=[],expressionPositions=[];while(index<textLength){if((startIndex=text.indexOf(startSymbol,index))!=-1&&(endIndex=text.indexOf(endSymbol,startIndex+startSymbolLength))!=-1){if(index!==startIndex){concat.push(unescapeText(text.substring(index,startIndex)))}exp=text.substring(startIndex+startSymbolLength,endIndex);expressions.push(exp);parseFns.push($parse(exp,parseStringifyInterceptor));index=endIndex+endSymbolLength;expressionPositions.push(concat.length);concat.push("")}else{if(index!==textLength){concat.push(unescapeText(text.substring(index)))}break}}if(trustedContext&&concat.length>1){throw $interpolateMinErr("noconcat","Error while interpolating: {0}\nStrict Contextual Escaping disallows "+"interpolations that concatenate multiple expressions when a trusted value is "+"required. See http://docs.angularjs.org/api/ng.$sce",text)}if(!mustHaveExpression||expressions.length){var compute=function(values){for(var i=0,ii=expressions.length;i<ii;i++){if(allOrNothing&&isUndefined(values[i]))return;concat[expressionPositions[i]]=values[i]}return concat.join("")};var getValue=function(value){return trustedContext?$sce.getTrusted(trustedContext,value):$sce.valueOf(value)};var stringify=function(value){if(value==null){return""}switch(typeof value){case"string":break;case"number":value=""+value;break;default:value=toJson(value)}return value};return extend(function interpolationFn(context){var i=0;var ii=expressions.length;var values=new Array(ii);try{for(;i<ii;i++){values[i]=parseFns[i](context)}return compute(values)}catch(err){var newErr=$interpolateMinErr("interr","Can't interpolate: {0}\n{1}",text,err.toString());$exceptionHandler(newErr)}},{exp:text,expressions:expressions,$$watchDelegate:function(scope,listener,objectEquality){var lastValue;return scope.$watchGroup(parseFns,function interpolateFnWatcher(values,oldValues){var currValue=compute(values);if(isFunction(listener)){listener.call(this,currValue,values!==oldValues?lastValue:currValue,scope)}lastValue=currValue},objectEquality)}})}function unescapeText(text){return text.replace(escapedStartRegexp,startSymbol).replace(escapedEndRegexp,endSymbol)}function parseStringifyInterceptor(value){try{return stringify(getValue(value))}catch(err){var newErr=$interpolateMinErr("interr","Can't interpolate: {0}\n{1}",text,err.toString());$exceptionHandler(newErr)}}}$interpolate.startSymbol=function(){return startSymbol};$interpolate.endSymbol=function(){return endSymbol};return $interpolate}]}function $IntervalProvider(){this.$get=["$rootScope","$window","$q","$$q",function($rootScope,$window,$q,$$q){var intervals={};function interval(fn,delay,count,invokeApply){var setInterval=$window.setInterval,clearInterval=$window.clearInterval,iteration=0,skipApply=isDefined(invokeApply)&&!invokeApply,deferred=(skipApply?$$q:$q).defer(),promise=deferred.promise;count=isDefined(count)?count:0;promise.then(null,null,fn);promise.$$intervalId=setInterval(function tick(){deferred.notify(iteration++);if(count>0&&iteration>=count){deferred.resolve(iteration);clearInterval(promise.$$intervalId);delete intervals[promise.$$intervalId]}if(!skipApply)$rootScope.$apply()},delay);intervals[promise.$$intervalId]=deferred;return promise}interval.cancel=function(promise){if(promise&&promise.$$intervalId in intervals){intervals[promise.$$intervalId].reject("canceled");$window.clearInterval(promise.$$intervalId);delete intervals[promise.$$intervalId];return true}return false};return interval}]}function $LocaleProvider(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"¤",posSuf:"",negPre:"(¤",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),SHORTMONTH:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),DAY:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),SHORTDAY:"Sun,Mon,Tue,Wed,Thu,Fri,Sat".split(","),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(num){if(num===1){return"one"}return"other"}}}}var PATH_MATCH=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,DEFAULT_PORTS={http:80,https:443,ftp:21};var $locationMinErr=minErr("$location");function encodePath(path){var segments=path.split("/"),i=segments.length;while(i--){segments[i]=encodeUriSegment(segments[i])}return segments.join("/")}function parseAbsoluteUrl(absoluteUrl,locationObj,appBase){var parsedUrl=urlResolve(absoluteUrl,appBase);locationObj.$$protocol=parsedUrl.protocol;locationObj.$$host=parsedUrl.hostname;locationObj.$$port=int(parsedUrl.port)||DEFAULT_PORTS[parsedUrl.protocol]||null}function parseAppUrl(relativeUrl,locationObj,appBase){var prefixed=relativeUrl.charAt(0)!=="/";if(prefixed){relativeUrl="/"+relativeUrl}var match=urlResolve(relativeUrl,appBase);locationObj.$$path=decodeURIComponent(prefixed&&match.pathname.charAt(0)==="/"?match.pathname.substring(1):match.pathname);locationObj.$$search=parseKeyValue(match.search);locationObj.$$hash=decodeURIComponent(match.hash);if(locationObj.$$path&&locationObj.$$path.charAt(0)!="/"){locationObj.$$path="/"+locationObj.$$path}}function beginsWith(begin,whole){if(whole.indexOf(begin)===0){return whole.substr(begin.length)}}function stripHash(url){var index=url.indexOf("#");return index==-1?url:url.substr(0,index)}function stripFile(url){return url.substr(0,stripHash(url).lastIndexOf("/")+1)}function serverBase(url){return url.substring(0,url.indexOf("/",url.indexOf("//")+2))}function LocationHtml5Url(appBase,basePrefix){this.$$html5=true;basePrefix=basePrefix||"";var appBaseNoFile=stripFile(appBase);parseAbsoluteUrl(appBase,this,appBase);this.$$parse=function(url){var pathUrl=beginsWith(appBaseNoFile,url);if(!isString(pathUrl)){throw $locationMinErr("ipthprfx",'Invalid url "{0}", missing path prefix "{1}".',url,appBaseNoFile)}parseAppUrl(pathUrl,this,appBase);if(!this.$$path){this.$$path="/"}this.$$compose()};this.$$compose=function(){var search=toKeyValue(this.$$search),hash=this.$$hash?"#"+encodeUriSegment(this.$$hash):"";this.$$url=encodePath(this.$$path)+(search?"?"+search:"")+hash;this.$$absUrl=appBaseNoFile+this.$$url.substr(1)};this.$$parseLinkUrl=function(url,relHref){if(relHref&&relHref[0]==="#"){this.hash(relHref.slice(1));return true}var appUrl,prevAppUrl;var rewrittenUrl;if((appUrl=beginsWith(appBase,url))!==undefined){prevAppUrl=appUrl;if((appUrl=beginsWith(basePrefix,appUrl))!==undefined){rewrittenUrl=appBaseNoFile+(beginsWith("/",appUrl)||appUrl)}else{rewrittenUrl=appBase+prevAppUrl}}else if((appUrl=beginsWith(appBaseNoFile,url))!==undefined){rewrittenUrl=appBaseNoFile+appUrl}else if(appBaseNoFile==url+"/"){rewrittenUrl=appBaseNoFile}if(rewrittenUrl){this.$$parse(rewrittenUrl)}return!!rewrittenUrl}}function LocationHashbangUrl(appBase,hashPrefix){var appBaseNoFile=stripFile(appBase);parseAbsoluteUrl(appBase,this,appBase);this.$$parse=function(url){var withoutBaseUrl=beginsWith(appBase,url)||beginsWith(appBaseNoFile,url);var withoutHashUrl=withoutBaseUrl.charAt(0)=="#"?beginsWith(hashPrefix,withoutBaseUrl):this.$$html5?withoutBaseUrl:"";if(!isString(withoutHashUrl)){throw $locationMinErr("ihshprfx",'Invalid url "{0}", missing hash prefix "{1}".',url,hashPrefix)}parseAppUrl(withoutHashUrl,this,appBase);this.$$path=removeWindowsDriveName(this.$$path,withoutHashUrl,appBase);this.$$compose();function removeWindowsDriveName(path,url,base){var windowsFilePathExp=/^\/[A-Z]:(\/.*)/;var firstPathSegmentMatch;if(url.indexOf(base)===0){url=url.replace(base,"")}if(windowsFilePathExp.exec(url)){return path}firstPathSegmentMatch=windowsFilePathExp.exec(path);return firstPathSegmentMatch?firstPathSegmentMatch[1]:path}};this.$$compose=function(){var search=toKeyValue(this.$$search),hash=this.$$hash?"#"+encodeUriSegment(this.$$hash):"";this.$$url=encodePath(this.$$path)+(search?"?"+search:"")+hash;this.$$absUrl=appBase+(this.$$url?hashPrefix+this.$$url:"")};this.$$parseLinkUrl=function(url,relHref){if(stripHash(appBase)==stripHash(url)){this.$$parse(url);return true}return false}}function LocationHashbangInHtml5Url(appBase,hashPrefix){this.$$html5=true;LocationHashbangUrl.apply(this,arguments);var appBaseNoFile=stripFile(appBase);this.$$parseLinkUrl=function(url,relHref){if(relHref&&relHref[0]==="#"){this.hash(relHref.slice(1));return true}var rewrittenUrl;var appUrl;if(appBase==stripHash(url)){rewrittenUrl=url}else if(appUrl=beginsWith(appBaseNoFile,url)){rewrittenUrl=appBase+hashPrefix+appUrl}else if(appBaseNoFile===url+"/"){rewrittenUrl=appBaseNoFile}if(rewrittenUrl){this.$$parse(rewrittenUrl)}return!!rewrittenUrl};this.$$compose=function(){var search=toKeyValue(this.$$search),hash=this.$$hash?"#"+encodeUriSegment(this.$$hash):"";this.$$url=encodePath(this.$$path)+(search?"?"+search:"")+hash;this.$$absUrl=appBase+hashPrefix+this.$$url}}var locationPrototype={$$html5:false,$$replace:false,absUrl:locationGetter("$$absUrl"),url:function(url){if(isUndefined(url))return this.$$url;var match=PATH_MATCH.exec(url);if(match[1])this.path(decodeURIComponent(match[1]));if(match[2]||match[1])this.search(match[3]||"");this.hash(match[5]||"");return this},protocol:locationGetter("$$protocol"),host:locationGetter("$$host"),port:locationGetter("$$port"),path:locationGetterSetter("$$path",function(path){path=path!==null?path.toString():"";return path.charAt(0)=="/"?path:"/"+path}),search:function(search,paramValue){switch(arguments.length){case 0:return this.$$search;case 1:if(isString(search)||isNumber(search)){search=search.toString();this.$$search=parseKeyValue(search)}else if(isObject(search)){search=copy(search,{});forEach(search,function(value,key){if(value==null)delete search[key]});this.$$search=search}else{throw $locationMinErr("isrcharg","The first argument of the `$location#search()` call must be a string or an object.")}break;default:if(isUndefined(paramValue)||paramValue===null){delete this.$$search[search]}else{this.$$search[search]=paramValue}}this.$$compose();return this},hash:locationGetterSetter("$$hash",function(hash){return hash!==null?hash.toString():""}),replace:function(){this.$$replace=true;return this}};forEach([LocationHashbangInHtml5Url,LocationHashbangUrl,LocationHtml5Url],function(Location){Location.prototype=Object.create(locationPrototype);Location.prototype.state=function(state){if(!arguments.length)return this.$$state;if(Location!==LocationHtml5Url||!this.$$html5){throw $locationMinErr("nostate","History API state support is available only "+"in HTML5 mode and only in browsers supporting HTML5 History API")}this.$$state=isUndefined(state)?null:state;return this}});function locationGetter(property){return function(){return this[property]}}function locationGetterSetter(property,preprocess){return function(value){if(isUndefined(value))return this[property];this[property]=preprocess(value);this.$$compose();return this}}function $LocationProvider(){var hashPrefix="",html5Mode={enabled:false,requireBase:true,rewriteLinks:true};this.hashPrefix=function(prefix){if(isDefined(prefix)){hashPrefix=prefix;return this}else{return hashPrefix}};this.html5Mode=function(mode){if(isBoolean(mode)){html5Mode.enabled=mode;return this}else if(isObject(mode)){if(isBoolean(mode.enabled)){html5Mode.enabled=mode.enabled}if(isBoolean(mode.requireBase)){html5Mode.requireBase=mode.requireBase}if(isBoolean(mode.rewriteLinks)){html5Mode.rewriteLinks=mode.rewriteLinks}return this}else{return html5Mode}};this.$get=["$rootScope","$browser","$sniffer","$rootElement",function($rootScope,$browser,$sniffer,$rootElement){var $location,LocationMode,baseHref=$browser.baseHref(),initialUrl=$browser.url(),appBase;if(html5Mode.enabled){if(!baseHref&&html5Mode.requireBase){throw $locationMinErr("nobase","$location in HTML5 mode requires a <base> tag to be present!")}appBase=serverBase(initialUrl)+(baseHref||"/");LocationMode=$sniffer.history?LocationHtml5Url:LocationHashbangInHtml5Url}else{appBase=stripHash(initialUrl);LocationMode=LocationHashbangUrl}$location=new LocationMode(appBase,"#"+hashPrefix);$location.$$parseLinkUrl(initialUrl,initialUrl);$location.$$state=$browser.state();var IGNORE_URI_REGEXP=/^\s*(javascript|mailto):/i;function setBrowserUrlWithFallback(url,replace,state){var oldUrl=$location.url();var oldState=$location.$$state;try{$browser.url(url,replace,state);$location.$$state=$browser.state()}catch(e){$location.url(oldUrl);$location.$$state=oldState;throw e}}$rootElement.on("click",function(event){if(!html5Mode.rewriteLinks||event.ctrlKey||event.metaKey||event.which==2)return;var elm=jqLite(event.target);while(nodeName_(elm[0])!=="a"){if(elm[0]===$rootElement[0]||!(elm=elm.parent())[0])return}var absHref=elm.prop("href");var relHref=elm.attr("href")||elm.attr("xlink:href");if(isObject(absHref)&&absHref.toString()==="[object SVGAnimatedString]"){absHref=urlResolve(absHref.animVal).href}if(IGNORE_URI_REGEXP.test(absHref))return;if(absHref&&!elm.attr("target")&&!event.isDefaultPrevented()){if($location.$$parseLinkUrl(absHref,relHref)){event.preventDefault();if($location.absUrl()!=$browser.url()){$rootScope.$apply();window.angular["ff-684208-preventDefault"]=true}}}});if($location.absUrl()!=initialUrl){$browser.url($location.absUrl(),true)}var initializing=true;$browser.onUrlChange(function(newUrl,newState){$rootScope.$evalAsync(function(){var oldUrl=$location.absUrl();var oldState=$location.$$state;$location.$$parse(newUrl);$location.$$state=newState;if($rootScope.$broadcast("$locationChangeStart",newUrl,oldUrl,newState,oldState).defaultPrevented){$location.$$parse(oldUrl);$location.$$state=oldState;setBrowserUrlWithFallback(oldUrl,false,oldState)}else{initializing=false;afterLocationChange(oldUrl,oldState)}});if(!$rootScope.$$phase)$rootScope.$digest()});$rootScope.$watch(function $locationWatch(){var oldUrl=$browser.url();var oldState=$browser.state();var currentReplace=$location.$$replace;var urlOrStateChanged=oldUrl!==$location.absUrl()||$location.$$html5&&$sniffer.history&&oldState!==$location.$$state;if(initializing||urlOrStateChanged){initializing=false;$rootScope.$evalAsync(function(){if($rootScope.$broadcast("$locationChangeStart",$location.absUrl(),oldUrl,$location.$$state,oldState).defaultPrevented){$location.$$parse(oldUrl);$location.$$state=oldState}else{if(urlOrStateChanged){setBrowserUrlWithFallback($location.absUrl(),currentReplace,oldState===$location.$$state?null:$location.$$state)}afterLocationChange(oldUrl,oldState)}})}$location.$$replace=false});return $location;function afterLocationChange(oldUrl,oldState){$rootScope.$broadcast("$locationChangeSuccess",$location.absUrl(),oldUrl,$location.$$state,oldState)}}]}function $LogProvider(){var debug=true,self=this;this.debugEnabled=function(flag){if(isDefined(flag)){debug=flag;return this}else{return debug}};this.$get=["$window",function($window){return{log:consoleLog("log"),info:consoleLog("info"),warn:consoleLog("warn"),error:consoleLog("error"),debug:function(){var fn=consoleLog("debug");return function(){if(debug){fn.apply(self,arguments)}}}()};function formatError(arg){if(arg instanceof Error){if(arg.stack){arg=arg.message&&arg.stack.indexOf(arg.message)===-1?"Error: "+arg.message+"\n"+arg.stack:arg.stack}else if(arg.sourceURL){arg=arg.message+"\n"+arg.sourceURL+":"+arg.line}}return arg}function consoleLog(type){var console=$window.console||{},logFn=console[type]||console.log||noop,hasApply=false;try{hasApply=!!logFn.apply}catch(e){}if(hasApply){return function(){var args=[];forEach(arguments,function(arg){args.push(formatError(arg))});return logFn.apply(console,args)}}return function(arg1,arg2){logFn(arg1,arg2==null?"":arg2)}}}]}var $parseMinErr=minErr("$parse");function ensureSafeMemberName(name,fullExpression){if(name==="__defineGetter__"||name==="__defineSetter__"||name==="__lookupGetter__"||name==="__lookupSetter__"||name==="__proto__"){throw $parseMinErr("isecfld","Attempting to access a disallowed field in Angular expressions! "+"Expression: {0}",fullExpression)}return name}function ensureSafeObject(obj,fullExpression){if(obj){if(obj.constructor===obj){throw $parseMinErr("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",fullExpression)}else if(obj.window===obj){throw $parseMinErr("isecwindow","Referencing the Window in Angular expressions is disallowed! Expression: {0}",fullExpression)}else if(obj.children&&(obj.nodeName||obj.prop&&obj.attr&&obj.find)){throw $parseMinErr("isecdom","Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}",fullExpression)}else if(obj===Object){throw $parseMinErr("isecobj","Referencing Object in Angular expressions is disallowed! Expression: {0}",fullExpression)}}return obj}var CALL=Function.prototype.call;var APPLY=Function.prototype.apply;var BIND=Function.prototype.bind;function ensureSafeFunction(obj,fullExpression){if(obj){if(obj.constructor===obj){throw $parseMinErr("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",fullExpression)}else if(obj===CALL||obj===APPLY||obj===BIND){throw $parseMinErr("isecff","Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}",fullExpression)}}}var CONSTANTS=createMap();forEach({"null":function(){return null},"true":function(){return true},"false":function(){return false},undefined:function(){}},function(constantGetter,name){constantGetter.constant=constantGetter.literal=constantGetter.sharedGetter=true;CONSTANTS[name]=constantGetter});CONSTANTS["this"]=function(self){return self};CONSTANTS["this"].sharedGetter=true;var OPERATORS=extend(createMap(),{"+":function(self,locals,a,b){a=a(self,locals);b=b(self,locals);if(isDefined(a)){if(isDefined(b)){return a+b}return a}return isDefined(b)?b:undefined},"-":function(self,locals,a,b){a=a(self,locals);b=b(self,locals);return(isDefined(a)?a:0)-(isDefined(b)?b:0)},"*":function(self,locals,a,b){return a(self,locals)*b(self,locals)},"/":function(self,locals,a,b){return a(self,locals)/b(self,locals)},"%":function(self,locals,a,b){return a(self,locals)%b(self,locals)},"===":function(self,locals,a,b){return a(self,locals)===b(self,locals)},"!==":function(self,locals,a,b){return a(self,locals)!==b(self,locals)},"==":function(self,locals,a,b){return a(self,locals)==b(self,locals)},"!=":function(self,locals,a,b){return a(self,locals)!=b(self,locals)},"<":function(self,locals,a,b){return a(self,locals)<b(self,locals)},">":function(self,locals,a,b){return a(self,locals)>b(self,locals)},"<=":function(self,locals,a,b){return a(self,locals)<=b(self,locals)},">=":function(self,locals,a,b){return a(self,locals)>=b(self,locals)},"&&":function(self,locals,a,b){return a(self,locals)&&b(self,locals)},"||":function(self,locals,a,b){return a(self,locals)||b(self,locals)},"!":function(self,locals,a){return!a(self,locals)},"=":true,"|":true});var ESCAPE={n:"\n",f:"\f",r:"\r",t:" ",v:" ","'":"'",'"':'"'};var Lexer=function(options){this.options=options};Lexer.prototype={constructor:Lexer,lex:function(text){this.text=text;this.index=0;this.ch=undefined;this.tokens=[];while(this.index<this.text.length){this.ch=this.text.charAt(this.index);if(this.is("\"'")){this.readString(this.ch)}else if(this.isNumber(this.ch)||this.is(".")&&this.isNumber(this.peek())){this.readNumber()}else if(this.isIdent(this.ch)){this.readIdent()}else if(this.is("(){}[].,;:?")){this.tokens.push({index:this.index,text:this.ch});this.index++}else if(this.isWhitespace(this.ch)){this.index++}else{var ch2=this.ch+this.peek();var ch3=ch2+this.peek(2);var fn=OPERATORS[this.ch];var fn2=OPERATORS[ch2];var fn3=OPERATORS[ch3];if(fn3){this.tokens.push({index:this.index,text:ch3,fn:fn3});this.index+=3}else if(fn2){this.tokens.push({index:this.index,text:ch2,fn:fn2});this.index+=2}else if(fn){this.tokens.push({index:this.index,text:this.ch,fn:fn});this.index+=1}else{this.throwError("Unexpected next character ",this.index,this.index+1)}}}return this.tokens},is:function(chars){return chars.indexOf(this.ch)!==-1},peek:function(i){var num=i||1;return this.index+num<this.text.length?this.text.charAt(this.index+num):false},isNumber:function(ch){return"0"<=ch&&ch<="9"},isWhitespace:function(ch){return ch===" "||ch==="\r"||ch===" "||ch==="\n"||ch===" "||ch===" "},isIdent:function(ch){return"a"<=ch&&ch<="z"||"A"<=ch&&ch<="Z"||"_"===ch||ch==="$"},isExpOperator:function(ch){return ch==="-"||ch==="+"||this.isNumber(ch)},throwError:function(error,start,end){end=end||this.index;var colStr=isDefined(start)?"s "+start+"-"+this.index+" ["+this.text.substring(start,end)+"]":" "+end;throw $parseMinErr("lexerr","Lexer Error: {0} at column{1} in expression [{2}].",error,colStr,this.text)},readNumber:function(){var number="";var start=this.index;while(this.index<this.text.length){var ch=lowercase(this.text.charAt(this.index));if(ch=="."||this.isNumber(ch)){number+=ch}else{var peekCh=this.peek();if(ch=="e"&&this.isExpOperator(peekCh)){number+=ch}else if(this.isExpOperator(ch)&&peekCh&&this.isNumber(peekCh)&&number.charAt(number.length-1)=="e"){number+=ch}else if(this.isExpOperator(ch)&&(!peekCh||!this.isNumber(peekCh))&&number.charAt(number.length-1)=="e"){this.throwError("Invalid exponent")}else{break}}this.index++}number=1*number;this.tokens.push({index:start,text:number,constant:true,fn:function(){return number}})},readIdent:function(){var expression=this.text;var ident="";var start=this.index;var lastDot,peekIndex,methodName,ch;while(this.index<this.text.length){ch=this.text.charAt(this.index);if(ch==="."||this.isIdent(ch)||this.isNumber(ch)){if(ch===".")lastDot=this.index;ident+=ch}else{break}this.index++}if(lastDot&&ident[ident.length-1]==="."){this.index--;ident=ident.slice(0,-1);lastDot=ident.lastIndexOf(".");if(lastDot===-1){lastDot=undefined}}if(lastDot){peekIndex=this.index;while(peekIndex<this.text.length){ch=this.text.charAt(peekIndex);if(ch==="("){methodName=ident.substr(lastDot-start+1);ident=ident.substr(0,lastDot-start);this.index=peekIndex;break}if(this.isWhitespace(ch)){peekIndex++}else{break}}}this.tokens.push({index:start,text:ident,fn:CONSTANTS[ident]||getterFn(ident,this.options,expression)});if(methodName){this.tokens.push({index:lastDot,text:"."});this.tokens.push({index:lastDot+1,text:methodName})}},readString:function(quote){var start=this.index;this.index++;var string="";var rawString=quote;var escape=false;while(this.index<this.text.length){var ch=this.text.charAt(this.index);rawString+=ch;if(escape){if(ch==="u"){var hex=this.text.substring(this.index+1,this.index+5);if(!hex.match(/[\da-f]{4}/i))this.throwError("Invalid unicode escape [\\u"+hex+"]");this.index+=4;string+=String.fromCharCode(parseInt(hex,16))}else{var rep=ESCAPE[ch];string=string+(rep||ch)}escape=false}else if(ch==="\\"){escape=true}else if(ch===quote){this.index++;this.tokens.push({index:start,text:rawString,string:string,constant:true,fn:function(){return string}});return}else{string+=ch}this.index++}this.throwError("Unterminated quote",start)}};function isConstant(exp){return exp.constant}var Parser=function(lexer,$filter,options){this.lexer=lexer;this.$filter=$filter;
this.options=options};Parser.ZERO=extend(function(){return 0},{sharedGetter:true,constant:true});Parser.prototype={constructor:Parser,parse:function(text){this.text=text;this.tokens=this.lexer.lex(text);var value=this.statements();if(this.tokens.length!==0){this.throwError("is an unexpected token",this.tokens[0])}value.literal=!!value.literal;value.constant=!!value.constant;return value},primary:function(){var primary;if(this.expect("(")){primary=this.filterChain();this.consume(")")}else if(this.expect("[")){primary=this.arrayDeclaration()}else if(this.expect("{")){primary=this.object()}else{var token=this.expect();primary=token.fn;if(!primary){this.throwError("not a primary expression",token)}if(token.constant){primary.constant=true;primary.literal=true}}var next,context;while(next=this.expect("(","[",".")){if(next.text==="("){primary=this.functionCall(primary,context);context=null}else if(next.text==="["){context=primary;primary=this.objectIndex(primary)}else if(next.text==="."){context=primary;primary=this.fieldAccess(primary)}else{this.throwError("IMPOSSIBLE")}}return primary},throwError:function(msg,token){throw $parseMinErr("syntax","Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].",token.text,msg,token.index+1,this.text,this.text.substring(token.index))},peekToken:function(){if(this.tokens.length===0)throw $parseMinErr("ueoe","Unexpected end of expression: {0}",this.text);return this.tokens[0]},peek:function(e1,e2,e3,e4){if(this.tokens.length>0){var token=this.tokens[0];var t=token.text;if(t===e1||t===e2||t===e3||t===e4||!e1&&!e2&&!e3&&!e4){return token}}return false},expect:function(e1,e2,e3,e4){var token=this.peek(e1,e2,e3,e4);if(token){this.tokens.shift();return token}return false},consume:function(e1){if(!this.expect(e1)){this.throwError("is unexpected, expecting ["+e1+"]",this.peek())}},unaryFn:function(fn,right){return extend(function $parseUnaryFn(self,locals){return fn(self,locals,right)},{constant:right.constant,inputs:[right]})},binaryFn:function(left,fn,right,isBranching){return extend(function $parseBinaryFn(self,locals){return fn(self,locals,left,right)},{constant:left.constant&&right.constant,inputs:!isBranching&&[left,right]})},statements:function(){var statements=[];while(true){if(this.tokens.length>0&&!this.peek("}",")",";","]"))statements.push(this.filterChain());if(!this.expect(";")){return statements.length===1?statements[0]:function $parseStatements(self,locals){var value;for(var i=0,ii=statements.length;i<ii;i++){value=statements[i](self,locals)}return value}}}},filterChain:function(){var left=this.expression();var token;while(token=this.expect("|")){left=this.filter(left)}return left},filter:function(inputFn){var token=this.expect();var fn=this.$filter(token.text);var argsFn;var args;if(this.peek(":")){argsFn=[];args=[];while(this.expect(":")){argsFn.push(this.expression())}}var inputs=[inputFn].concat(argsFn||[]);return extend(function $parseFilter(self,locals){var input=inputFn(self,locals);if(args){args[0]=input;var i=argsFn.length;while(i--){args[i+1]=argsFn[i](self,locals)}return fn.apply(undefined,args)}return fn(input)},{constant:!fn.$stateful&&inputs.every(isConstant),inputs:!fn.$stateful&&inputs})},expression:function(){return this.assignment()},assignment:function(){var left=this.ternary();var right;var token;if(token=this.expect("=")){if(!left.assign){this.throwError("implies assignment but ["+this.text.substring(0,token.index)+"] can not be assigned to",token)}right=this.ternary();return extend(function $parseAssignment(scope,locals){return left.assign(scope,right(scope,locals),locals)},{inputs:[left,right]})}return left},ternary:function(){var left=this.logicalOR();var middle;var token;if(token=this.expect("?")){middle=this.assignment();if(token=this.expect(":")){var right=this.assignment();return extend(function $parseTernary(self,locals){return left(self,locals)?middle(self,locals):right(self,locals)},{constant:left.constant&&middle.constant&&right.constant})}else{this.throwError("expected :",token)}}return left},logicalOR:function(){var left=this.logicalAND();var token;while(token=this.expect("||")){left=this.binaryFn(left,token.fn,this.logicalAND(),true)}return left},logicalAND:function(){var left=this.equality();var token;if(token=this.expect("&&")){left=this.binaryFn(left,token.fn,this.logicalAND(),true)}return left},equality:function(){var left=this.relational();var token;if(token=this.expect("==","!=","===","!==")){left=this.binaryFn(left,token.fn,this.equality())}return left},relational:function(){var left=this.additive();var token;if(token=this.expect("<",">","<=",">=")){left=this.binaryFn(left,token.fn,this.relational())}return left},additive:function(){var left=this.multiplicative();var token;while(token=this.expect("+","-")){left=this.binaryFn(left,token.fn,this.multiplicative())}return left},multiplicative:function(){var left=this.unary();var token;while(token=this.expect("*","/","%")){left=this.binaryFn(left,token.fn,this.unary())}return left},unary:function(){var token;if(this.expect("+")){return this.primary()}else if(token=this.expect("-")){return this.binaryFn(Parser.ZERO,token.fn,this.unary())}else if(token=this.expect("!")){return this.unaryFn(token.fn,this.unary())}else{return this.primary()}},fieldAccess:function(object){var expression=this.text;var field=this.expect().text;var getter=getterFn(field,this.options,expression);return extend(function $parseFieldAccess(scope,locals,self){return getter(self||object(scope,locals))},{assign:function(scope,value,locals){var o=object(scope,locals);if(!o)object.assign(scope,o={});return setter(o,field,value,expression)}})},objectIndex:function(obj){var expression=this.text;var indexFn=this.expression();this.consume("]");return extend(function $parseObjectIndex(self,locals){var o=obj(self,locals),i=indexFn(self,locals),v;ensureSafeMemberName(i,expression);if(!o)return undefined;v=ensureSafeObject(o[i],expression);return v},{assign:function(self,value,locals){var key=ensureSafeMemberName(indexFn(self,locals),expression);var o=ensureSafeObject(obj(self,locals),expression);if(!o)obj.assign(self,o={});return o[key]=value}})},functionCall:function(fnGetter,contextGetter){var argsFn=[];if(this.peekToken().text!==")"){do{argsFn.push(this.expression())}while(this.expect(","))}this.consume(")");var expressionText=this.text;var args=argsFn.length?[]:null;return function $parseFunctionCall(scope,locals){var context=contextGetter?contextGetter(scope,locals):scope;var fn=fnGetter(scope,locals,context)||noop;if(args){var i=argsFn.length;while(i--){args[i]=ensureSafeObject(argsFn[i](scope,locals),expressionText)}}ensureSafeObject(context,expressionText);ensureSafeFunction(fn,expressionText);var v=fn.apply?fn.apply(context,args):fn(args[0],args[1],args[2],args[3],args[4]);return ensureSafeObject(v,expressionText)}},arrayDeclaration:function(){var elementFns=[];if(this.peekToken().text!=="]"){do{if(this.peek("]")){break}var elementFn=this.expression();elementFns.push(elementFn)}while(this.expect(","))}this.consume("]");return extend(function $parseArrayLiteral(self,locals){var array=[];for(var i=0,ii=elementFns.length;i<ii;i++){array.push(elementFns[i](self,locals))}return array},{literal:true,constant:elementFns.every(isConstant),inputs:elementFns})},object:function(){var keys=[],valueFns=[];if(this.peekToken().text!=="}"){do{if(this.peek("}")){break}var token=this.expect();keys.push(token.string||token.text);this.consume(":");var value=this.expression();valueFns.push(value)}while(this.expect(","))}this.consume("}");return extend(function $parseObjectLiteral(self,locals){var object={};for(var i=0,ii=valueFns.length;i<ii;i++){object[keys[i]]=valueFns[i](self,locals)}return object},{literal:true,constant:valueFns.every(isConstant),inputs:valueFns})}};function setter(obj,path,setValue,fullExp){ensureSafeObject(obj,fullExp);var element=path.split("."),key;for(var i=0;element.length>1;i++){key=ensureSafeMemberName(element.shift(),fullExp);var propertyObj=ensureSafeObject(obj[key],fullExp);if(!propertyObj){propertyObj={};obj[key]=propertyObj}obj=propertyObj}key=ensureSafeMemberName(element.shift(),fullExp);ensureSafeObject(obj[key],fullExp);obj[key]=setValue;return setValue}var getterFnCache=createMap();function cspSafeGetterFn(key0,key1,key2,key3,key4,fullExp){ensureSafeMemberName(key0,fullExp);ensureSafeMemberName(key1,fullExp);ensureSafeMemberName(key2,fullExp);ensureSafeMemberName(key3,fullExp);ensureSafeMemberName(key4,fullExp);return function cspSafeGetter(scope,locals){var pathVal=locals&&locals.hasOwnProperty(key0)?locals:scope;if(pathVal==null)return pathVal;pathVal=pathVal[key0];if(!key1)return pathVal;if(pathVal==null)return undefined;pathVal=pathVal[key1];if(!key2)return pathVal;if(pathVal==null)return undefined;pathVal=pathVal[key2];if(!key3)return pathVal;if(pathVal==null)return undefined;pathVal=pathVal[key3];if(!key4)return pathVal;if(pathVal==null)return undefined;pathVal=pathVal[key4];return pathVal}}function getterFn(path,options,fullExp){var fn=getterFnCache[path];if(fn)return fn;var pathKeys=path.split("."),pathKeysLength=pathKeys.length;if(options.csp){if(pathKeysLength<6){fn=cspSafeGetterFn(pathKeys[0],pathKeys[1],pathKeys[2],pathKeys[3],pathKeys[4],fullExp)}else{fn=function cspSafeGetter(scope,locals){var i=0,val;do{val=cspSafeGetterFn(pathKeys[i++],pathKeys[i++],pathKeys[i++],pathKeys[i++],pathKeys[i++],fullExp)(scope,locals);locals=undefined;scope=val}while(i<pathKeysLength);return val}}}else{var code="";forEach(pathKeys,function(key,index){ensureSafeMemberName(key,fullExp);code+="if(s == null) return undefined;\n"+"s="+(index?"s":'((l&&l.hasOwnProperty("'+key+'"))?l:s)')+"."+key+";\n"});code+="return s;";var evaledFnGetter=new Function("s","l",code);evaledFnGetter.toString=valueFn(code);fn=evaledFnGetter}fn.sharedGetter=true;fn.assign=function(self,value){return setter(self,path,value,path)};getterFnCache[path]=fn;return fn}function $ParseProvider(){var cache=createMap();var $parseOptions={csp:false};this.$get=["$filter","$sniffer",function($filter,$sniffer){$parseOptions.csp=$sniffer.csp;function wrapSharedExpression(exp){var wrapped=exp;if(exp.sharedGetter){wrapped=function $parseWrapper(self,locals){return exp(self,locals)};wrapped.literal=exp.literal;wrapped.constant=exp.constant;wrapped.assign=exp.assign}return wrapped}return function $parse(exp,interceptorFn){var parsedExpression,oneTime,cacheKey;switch(typeof exp){case"string":cacheKey=exp=exp.trim();parsedExpression=cache[cacheKey];if(!parsedExpression){if(exp.charAt(0)===":"&&exp.charAt(1)===":"){oneTime=true;exp=exp.substring(2)}var lexer=new Lexer($parseOptions);var parser=new Parser(lexer,$filter,$parseOptions);parsedExpression=parser.parse(exp);if(parsedExpression.constant){parsedExpression.$$watchDelegate=constantWatchDelegate}else if(oneTime){parsedExpression=wrapSharedExpression(parsedExpression);parsedExpression.$$watchDelegate=parsedExpression.literal?oneTimeLiteralWatchDelegate:oneTimeWatchDelegate}else if(parsedExpression.inputs){parsedExpression.$$watchDelegate=inputsWatchDelegate}cache[cacheKey]=parsedExpression}return addInterceptor(parsedExpression,interceptorFn);case"function":return addInterceptor(exp,interceptorFn);default:return addInterceptor(noop,interceptorFn)}};function collectExpressionInputs(inputs,list){for(var i=0,ii=inputs.length;i<ii;i++){var input=inputs[i];if(!input.constant){if(input.inputs){collectExpressionInputs(input.inputs,list)}else if(list.indexOf(input)===-1){list.push(input)}}}return list}function expressionInputDirtyCheck(newValue,oldValueOfValue){if(newValue==null||oldValueOfValue==null){return newValue===oldValueOfValue}if(typeof newValue==="object"){newValue=newValue.valueOf();if(typeof newValue==="object"){return false}}return newValue===oldValueOfValue||newValue!==newValue&&oldValueOfValue!==oldValueOfValue}function inputsWatchDelegate(scope,listener,objectEquality,parsedExpression){var inputExpressions=parsedExpression.$$inputs||(parsedExpression.$$inputs=collectExpressionInputs(parsedExpression.inputs,[]));var lastResult;if(inputExpressions.length===1){var oldInputValue=expressionInputDirtyCheck;inputExpressions=inputExpressions[0];return scope.$watch(function expressionInputWatch(scope){var newInputValue=inputExpressions(scope);if(!expressionInputDirtyCheck(newInputValue,oldInputValue)){lastResult=parsedExpression(scope);oldInputValue=newInputValue&&newInputValue.valueOf()}return lastResult},listener,objectEquality)}var oldInputValueOfValues=[];for(var i=0,ii=inputExpressions.length;i<ii;i++){oldInputValueOfValues[i]=expressionInputDirtyCheck}return scope.$watch(function expressionInputsWatch(scope){var changed=false;for(var i=0,ii=inputExpressions.length;i<ii;i++){var newInputValue=inputExpressions[i](scope);if(changed||(changed=!expressionInputDirtyCheck(newInputValue,oldInputValueOfValues[i]))){oldInputValueOfValues[i]=newInputValue&&newInputValue.valueOf()}}if(changed){lastResult=parsedExpression(scope)}return lastResult},listener,objectEquality)}function oneTimeWatchDelegate(scope,listener,objectEquality,parsedExpression){var unwatch,lastValue;return unwatch=scope.$watch(function oneTimeWatch(scope){return parsedExpression(scope)},function oneTimeListener(value,old,scope){lastValue=value;if(isFunction(listener)){listener.apply(this,arguments)}if(isDefined(value)){scope.$$postDigest(function(){if(isDefined(lastValue)){unwatch()}})}},objectEquality)}function oneTimeLiteralWatchDelegate(scope,listener,objectEquality,parsedExpression){var unwatch,lastValue;return unwatch=scope.$watch(function oneTimeWatch(scope){return parsedExpression(scope)},function oneTimeListener(value,old,scope){lastValue=value;if(isFunction(listener)){listener.call(this,value,old,scope)}if(isAllDefined(value)){scope.$$postDigest(function(){if(isAllDefined(lastValue))unwatch()})}},objectEquality);function isAllDefined(value){var allDefined=true;forEach(value,function(val){if(!isDefined(val))allDefined=false});return allDefined}}function constantWatchDelegate(scope,listener,objectEquality,parsedExpression){var unwatch;return unwatch=scope.$watch(function constantWatch(scope){return parsedExpression(scope)},function constantListener(value,old,scope){if(isFunction(listener)){listener.apply(this,arguments)}unwatch()},objectEquality)}function addInterceptor(parsedExpression,interceptorFn){if(!interceptorFn)return parsedExpression;var fn=function interceptedExpression(scope,locals){var value=parsedExpression(scope,locals);var result=interceptorFn(value,scope,locals);return isDefined(value)?result:value};if(parsedExpression.$$watchDelegate&&parsedExpression.$$watchDelegate!==inputsWatchDelegate){fn.$$watchDelegate=parsedExpression.$$watchDelegate}else if(!interceptorFn.$stateful){fn.$$watchDelegate=inputsWatchDelegate;fn.inputs=[parsedExpression]}return fn}}]}function $QProvider(){this.$get=["$rootScope","$exceptionHandler",function($rootScope,$exceptionHandler){return qFactory(function(callback){$rootScope.$evalAsync(callback)},$exceptionHandler)}]}function $$QProvider(){this.$get=["$browser","$exceptionHandler",function($browser,$exceptionHandler){return qFactory(function(callback){$browser.defer(callback)},$exceptionHandler)}]}function qFactory(nextTick,exceptionHandler){var $qMinErr=minErr("$q",TypeError);function callOnce(self,resolveFn,rejectFn){var called=false;function wrap(fn){return function(value){if(called)return;called=true;fn.call(self,value)}}return[wrap(resolveFn),wrap(rejectFn)]}var defer=function(){return new Deferred};function Promise(){this.$$state={status:0}}Promise.prototype={then:function(onFulfilled,onRejected,progressBack){var result=new Deferred;this.$$state.pending=this.$$state.pending||[];this.$$state.pending.push([result,onFulfilled,onRejected,progressBack]);if(this.$$state.status>0)scheduleProcessQueue(this.$$state);return result.promise},"catch":function(callback){return this.then(null,callback)},"finally":function(callback,progressBack){return this.then(function(value){return handleCallback(value,true,callback)},function(error){return handleCallback(error,false,callback)},progressBack)}};function simpleBind(context,fn){return function(value){fn.call(context,value)}}function processQueue(state){var fn,promise,pending;pending=state.pending;state.processScheduled=false;state.pending=undefined;for(var i=0,ii=pending.length;i<ii;++i){promise=pending[i][0];fn=pending[i][state.status];try{if(isFunction(fn)){promise.resolve(fn(state.value))}else if(state.status===1){promise.resolve(state.value)}else{promise.reject(state.value)}}catch(e){promise.reject(e);exceptionHandler(e)}}}function scheduleProcessQueue(state){if(state.processScheduled||!state.pending)return;state.processScheduled=true;nextTick(function(){processQueue(state)})}function Deferred(){this.promise=new Promise;this.resolve=simpleBind(this,this.resolve);this.reject=simpleBind(this,this.reject);this.notify=simpleBind(this,this.notify)}Deferred.prototype={resolve:function(val){if(this.promise.$$state.status)return;if(val===this.promise){this.$$reject($qMinErr("qcycle","Expected promise to be resolved with value other than itself '{0}'",val))}else{this.$$resolve(val)}},$$resolve:function(val){var then,fns;fns=callOnce(this,this.$$resolve,this.$$reject);try{if(isObject(val)||isFunction(val))then=val&&val.then;if(isFunction(then)){this.promise.$$state.status=-1;then.call(val,fns[0],fns[1],this.notify)}else{this.promise.$$state.value=val;this.promise.$$state.status=1;scheduleProcessQueue(this.promise.$$state)}}catch(e){fns[1](e);exceptionHandler(e)}},reject:function(reason){if(this.promise.$$state.status)return;this.$$reject(reason)},$$reject:function(reason){this.promise.$$state.value=reason;this.promise.$$state.status=2;scheduleProcessQueue(this.promise.$$state)},notify:function(progress){var callbacks=this.promise.$$state.pending;if(this.promise.$$state.status<=0&&callbacks&&callbacks.length){nextTick(function(){var callback,result;for(var i=0,ii=callbacks.length;i<ii;i++){result=callbacks[i][0];callback=callbacks[i][3];try{result.notify(isFunction(callback)?callback(progress):progress)}catch(e){exceptionHandler(e)}}})}}};var reject=function(reason){var result=new Deferred;result.reject(reason);return result.promise};var makePromise=function makePromise(value,resolved){var result=new Deferred;if(resolved){result.resolve(value)}else{result.reject(value)}return result.promise};var handleCallback=function handleCallback(value,isResolved,callback){var callbackOutput=null;try{if(isFunction(callback))callbackOutput=callback()}catch(e){return makePromise(e,false)}if(isPromiseLike(callbackOutput)){return callbackOutput.then(function(){return makePromise(value,isResolved)},function(error){return makePromise(error,false)})}else{return makePromise(value,isResolved)}};var when=function(value,callback,errback,progressBack){var result=new Deferred;result.resolve(value);return result.promise.then(callback,errback,progressBack)};function all(promises){var deferred=new Deferred,counter=0,results=isArray(promises)?[]:{};forEach(promises,function(promise,key){counter++;when(promise).then(function(value){if(results.hasOwnProperty(key))return;results[key]=value;if(!--counter)deferred.resolve(results)},function(reason){if(results.hasOwnProperty(key))return;deferred.reject(reason)})});if(counter===0){deferred.resolve(results)}return deferred.promise}var $Q=function Q(resolver){if(!isFunction(resolver)){throw $qMinErr("norslvr","Expected resolverFn, got '{0}'",resolver)}if(!(this instanceof Q)){return new Q(resolver)}var deferred=new Deferred;function resolveFn(value){deferred.resolve(value)}function rejectFn(reason){deferred.reject(reason)}resolver(resolveFn,rejectFn);return deferred.promise};$Q.defer=defer;$Q.reject=reject;$Q.when=when;$Q.all=all;return $Q}function $$RAFProvider(){this.$get=["$window","$timeout",function($window,$timeout){var requestAnimationFrame=$window.requestAnimationFrame||$window.webkitRequestAnimationFrame||$window.mozRequestAnimationFrame;var cancelAnimationFrame=$window.cancelAnimationFrame||$window.webkitCancelAnimationFrame||$window.mozCancelAnimationFrame||$window.webkitCancelRequestAnimationFrame;var rafSupported=!!requestAnimationFrame;var raf=rafSupported?function(fn){var id=requestAnimationFrame(fn);return function(){cancelAnimationFrame(id)}}:function(fn){var timer=$timeout(fn,16.66,false);return function(){$timeout.cancel(timer)}};raf.supported=rafSupported;return raf}]}function $RootScopeProvider(){var TTL=10;var $rootScopeMinErr=minErr("$rootScope");var lastDirtyWatch=null;var applyAsyncId=null;this.digestTtl=function(value){if(arguments.length){TTL=value}return TTL};this.$get=["$injector","$exceptionHandler","$parse","$browser",function($injector,$exceptionHandler,$parse,$browser){function Scope(){this.$id=nextUid();this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null;this.$root=this;this.$$destroyed=false;this.$$listeners={};this.$$listenerCount={};this.$$isolateBindings=null}Scope.prototype={constructor:Scope,$new:function(isolate,parent){var child;parent=parent||this;if(isolate){child=new Scope;child.$root=this.$root}else{if(!this.$$ChildScope){this.$$ChildScope=function ChildScope(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null;this.$$listeners={};this.$$listenerCount={};this.$id=nextUid();this.$$ChildScope=null};this.$$ChildScope.prototype=this}child=new this.$$ChildScope}child.$parent=parent;child.$$prevSibling=parent.$$childTail;if(parent.$$childHead){parent.$$childTail.$$nextSibling=child;parent.$$childTail=child}else{parent.$$childHead=parent.$$childTail=child}if(isolate||parent!=this)child.$on("$destroy",destroyChild);return child;function destroyChild(){child.$$destroyed=true}},$watch:function(watchExp,listener,objectEquality){var get=$parse(watchExp);if(get.$$watchDelegate){return get.$$watchDelegate(this,listener,objectEquality,get)}var scope=this,array=scope.$$watchers,watcher={fn:listener,last:initWatchVal,get:get,exp:watchExp,eq:!!objectEquality};lastDirtyWatch=null;if(!isFunction(listener)){watcher.fn=noop}if(!array){array=scope.$$watchers=[]}array.unshift(watcher);return function deregisterWatch(){arrayRemove(array,watcher);lastDirtyWatch=null}},$watchGroup:function(watchExpressions,listener){var oldValues=new Array(watchExpressions.length);var newValues=new Array(watchExpressions.length);var deregisterFns=[];var self=this;var changeReactionScheduled=false;var firstRun=true;if(!watchExpressions.length){var shouldCall=true;self.$evalAsync(function(){if(shouldCall)listener(newValues,newValues,self)});return function deregisterWatchGroup(){shouldCall=false}}if(watchExpressions.length===1){return this.$watch(watchExpressions[0],function watchGroupAction(value,oldValue,scope){newValues[0]=value;oldValues[0]=oldValue;listener(newValues,value===oldValue?newValues:oldValues,scope)})}forEach(watchExpressions,function(expr,i){var unwatchFn=self.$watch(expr,function watchGroupSubAction(value,oldValue){newValues[i]=value;oldValues[i]=oldValue;if(!changeReactionScheduled){changeReactionScheduled=true;self.$evalAsync(watchGroupAction)}});deregisterFns.push(unwatchFn)});function watchGroupAction(){changeReactionScheduled=false;if(firstRun){firstRun=false;listener(newValues,newValues,self)}else{listener(newValues,oldValues,self)}}return function deregisterWatchGroup(){while(deregisterFns.length){deregisterFns.shift()()}}},$watchCollection:function(obj,listener){$watchCollectionInterceptor.$stateful=true;var self=this;var newValue;var oldValue;var veryOldValue;var trackVeryOldValue=listener.length>1;var changeDetected=0;var changeDetector=$parse(obj,$watchCollectionInterceptor);var internalArray=[];var internalObject={};var initRun=true;var oldLength=0;function $watchCollectionInterceptor(_value){newValue=_value;var newLength,key,bothNaN,newItem,oldItem;if(!isObject(newValue)){if(oldValue!==newValue){oldValue=newValue;changeDetected++}}else if(isArrayLike(newValue)){if(oldValue!==internalArray){oldValue=internalArray;oldLength=oldValue.length=0;changeDetected++}newLength=newValue.length;if(oldLength!==newLength){changeDetected++;oldValue.length=oldLength=newLength}for(var i=0;i<newLength;i++){oldItem=oldValue[i];newItem=newValue[i];bothNaN=oldItem!==oldItem&&newItem!==newItem;if(!bothNaN&&oldItem!==newItem){changeDetected++;oldValue[i]=newItem}}}else{if(oldValue!==internalObject){oldValue=internalObject={};oldLength=0;changeDetected++}newLength=0;for(key in newValue){if(newValue.hasOwnProperty(key)){newLength++;newItem=newValue[key];oldItem=oldValue[key];if(key in oldValue){bothNaN=oldItem!==oldItem&&newItem!==newItem;if(!bothNaN&&oldItem!==newItem){changeDetected++;oldValue[key]=newItem}}else{oldLength++;oldValue[key]=newItem;changeDetected++}}}if(oldLength>newLength){changeDetected++;for(key in oldValue){if(!newValue.hasOwnProperty(key)){oldLength--;delete oldValue[key]}}}}return changeDetected}function $watchCollectionAction(){if(initRun){initRun=false;listener(newValue,newValue,self)}else{listener(newValue,veryOldValue,self)}if(trackVeryOldValue){if(!isObject(newValue)){veryOldValue=newValue}else if(isArrayLike(newValue)){veryOldValue=new Array(newValue.length);for(var i=0;i<newValue.length;i++){veryOldValue[i]=newValue[i]}}else{veryOldValue={};for(var key in newValue){if(hasOwnProperty.call(newValue,key)){veryOldValue[key]=newValue[key]}}}}}return this.$watch(changeDetector,$watchCollectionAction)},$digest:function(){var watch,value,last,watchers,length,dirty,ttl=TTL,next,current,target=this,watchLog=[],logIdx,logMsg,asyncTask;beginPhase("$digest");$browser.$$checkUrlChange();if(this===$rootScope&&applyAsyncId!==null){$browser.defer.cancel(applyAsyncId);flushApplyAsync()}lastDirtyWatch=null;do{dirty=false;current=target;while(asyncQueue.length){try{asyncTask=asyncQueue.shift();asyncTask.scope.$eval(asyncTask.expression)}catch(e){$exceptionHandler(e)}lastDirtyWatch=null}traverseScopesLoop:do{if(watchers=current.$$watchers){length=watchers.length;while(length--){try{watch=watchers[length];if(watch){if((value=watch.get(current))!==(last=watch.last)&&!(watch.eq?equals(value,last):typeof value==="number"&&typeof last==="number"&&isNaN(value)&&isNaN(last))){dirty=true;lastDirtyWatch=watch;watch.last=watch.eq?copy(value,null):value;watch.fn(value,last===initWatchVal?value:last,current);if(ttl<5){logIdx=4-ttl;if(!watchLog[logIdx])watchLog[logIdx]=[];logMsg=isFunction(watch.exp)?"fn: "+(watch.exp.name||watch.exp.toString()):watch.exp;logMsg+="; newVal: "+toJson(value)+"; oldVal: "+toJson(last);watchLog[logIdx].push(logMsg)}}else if(watch===lastDirtyWatch){dirty=false;break traverseScopesLoop}}}catch(e){$exceptionHandler(e)}}}if(!(next=current.$$childHead||current!==target&&current.$$nextSibling)){while(current!==target&&!(next=current.$$nextSibling)){current=current.$parent}}}while(current=next);if((dirty||asyncQueue.length)&&!ttl--){clearPhase();throw $rootScopeMinErr("infdig","{0} $digest() iterations reached. Aborting!\n"+"Watchers fired in the last 5 iterations: {1}",TTL,toJson(watchLog))}}while(dirty||asyncQueue.length);clearPhase();while(postDigestQueue.length){try{postDigestQueue.shift()()}catch(e){$exceptionHandler(e)}}},$destroy:function(){if(this.$$destroyed)return;var parent=this.$parent;this.$broadcast("$destroy");this.$$destroyed=true;if(this===$rootScope)return;for(var eventName in this.$$listenerCount){decrementListenerCount(this,this.$$listenerCount[eventName],eventName)}if(parent.$$childHead==this)parent.$$childHead=this.$$nextSibling;if(parent.$$childTail==this)parent.$$childTail=this.$$prevSibling;if(this.$$prevSibling)this.$$prevSibling.$$nextSibling=this.$$nextSibling;if(this.$$nextSibling)this.$$nextSibling.$$prevSibling=this.$$prevSibling;this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=noop;this.$on=this.$watch=this.$watchGroup=function(){return noop};this.$$listeners={};this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=this.$$watchers=null},$eval:function(expr,locals){return $parse(expr)(this,locals)},$evalAsync:function(expr){if(!$rootScope.$$phase&&!asyncQueue.length){$browser.defer(function(){if(asyncQueue.length){$rootScope.$digest()}})}asyncQueue.push({scope:this,expression:expr})},$$postDigest:function(fn){postDigestQueue.push(fn)},$apply:function(expr){try{beginPhase("$apply");return this.$eval(expr)}catch(e){$exceptionHandler(e)}finally{clearPhase();try{$rootScope.$digest()}catch(e){$exceptionHandler(e);throw e}}},$applyAsync:function(expr){var scope=this;expr&&applyAsyncQueue.push($applyAsyncExpression);scheduleApplyAsync();function $applyAsyncExpression(){scope.$eval(expr)}},$on:function(name,listener){var namedListeners=this.$$listeners[name];if(!namedListeners){this.$$listeners[name]=namedListeners=[]}namedListeners.push(listener);var current=this;do{if(!current.$$listenerCount[name]){current.$$listenerCount[name]=0}current.$$listenerCount[name]++}while(current=current.$parent);var self=this;return function(){namedListeners[namedListeners.indexOf(listener)]=null;decrementListenerCount(self,1,name)}},$emit:function(name,args){var empty=[],namedListeners,scope=this,stopPropagation=false,event={name:name,targetScope:scope,stopPropagation:function(){stopPropagation=true},preventDefault:function(){event.defaultPrevented=true},defaultPrevented:false},listenerArgs=concat([event],arguments,1),i,length;do{namedListeners=scope.$$listeners[name]||empty;event.currentScope=scope;for(i=0,length=namedListeners.length;i<length;i++){if(!namedListeners[i]){namedListeners.splice(i,1);i--;length--;continue}try{namedListeners[i].apply(null,listenerArgs)}catch(e){$exceptionHandler(e)}}if(stopPropagation){event.currentScope=null;return event}scope=scope.$parent}while(scope);event.currentScope=null;return event},$broadcast:function(name,args){var target=this,current=target,next=target,event={name:name,targetScope:target,preventDefault:function(){event.defaultPrevented=true},defaultPrevented:false};if(!target.$$listenerCount[name])return event;var listenerArgs=concat([event],arguments,1),listeners,i,length;while(current=next){event.currentScope=current;listeners=current.$$listeners[name]||[];for(i=0,length=listeners.length;i<length;i++){if(!listeners[i]){listeners.splice(i,1);i--;length--;continue}try{listeners[i].apply(null,listenerArgs)}catch(e){$exceptionHandler(e)}}if(!(next=current.$$listenerCount[name]&&current.$$childHead||current!==target&&current.$$nextSibling)){while(current!==target&&!(next=current.$$nextSibling)){current=current.$parent}}}event.currentScope=null;return event}};var $rootScope=new Scope;var asyncQueue=$rootScope.$$asyncQueue=[];var postDigestQueue=$rootScope.$$postDigestQueue=[];var applyAsyncQueue=$rootScope.$$applyAsyncQueue=[];return $rootScope;function beginPhase(phase){if($rootScope.$$phase){throw $rootScopeMinErr("inprog","{0} already in progress",$rootScope.$$phase)}$rootScope.$$phase=phase}function clearPhase(){$rootScope.$$phase=null}function decrementListenerCount(current,count,name){do{current.$$listenerCount[name]-=count;if(current.$$listenerCount[name]===0){delete current.$$listenerCount[name]}}while(current=current.$parent)}function initWatchVal(){}function flushApplyAsync(){while(applyAsyncQueue.length){try{applyAsyncQueue.shift()()}catch(e){$exceptionHandler(e)}}applyAsyncId=null}function scheduleApplyAsync(){if(applyAsyncId===null){applyAsyncId=$browser.defer(function(){$rootScope.$apply(flushApplyAsync)})}}}]}function $$SanitizeUriProvider(){var aHrefSanitizationWhitelist=/^\s*(https?|ftp|mailto|tel|file):/,imgSrcSanitizationWhitelist=/^\s*((https?|ftp|file|blob):|data:image\/)/;this.aHrefSanitizationWhitelist=function(regexp){if(isDefined(regexp)){aHrefSanitizationWhitelist=regexp;return this}return aHrefSanitizationWhitelist};this.imgSrcSanitizationWhitelist=function(regexp){if(isDefined(regexp)){imgSrcSanitizationWhitelist=regexp;return this}return imgSrcSanitizationWhitelist
};this.$get=function(){return function sanitizeUri(uri,isImage){var regex=isImage?imgSrcSanitizationWhitelist:aHrefSanitizationWhitelist;var normalizedVal;normalizedVal=urlResolve(uri).href;if(normalizedVal!==""&&!normalizedVal.match(regex)){return"unsafe:"+normalizedVal}return uri}}}var $sceMinErr=minErr("$sce");var SCE_CONTEXTS={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"};function escapeForRegexp(s){return s.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")}function adjustMatcher(matcher){if(matcher==="self"){return matcher}else if(isString(matcher)){if(matcher.indexOf("***")>-1){throw $sceMinErr("iwcard","Illegal sequence *** in string matcher. String: {0}",matcher)}matcher=escapeForRegexp(matcher).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*");return new RegExp("^"+matcher+"$")}else if(isRegExp(matcher)){return new RegExp("^"+matcher.source+"$")}else{throw $sceMinErr("imatcher",'Matchers may only be "self", string patterns or RegExp objects')}}function adjustMatchers(matchers){var adjustedMatchers=[];if(isDefined(matchers)){forEach(matchers,function(matcher){adjustedMatchers.push(adjustMatcher(matcher))})}return adjustedMatchers}function $SceDelegateProvider(){this.SCE_CONTEXTS=SCE_CONTEXTS;var resourceUrlWhitelist=["self"],resourceUrlBlacklist=[];this.resourceUrlWhitelist=function(value){if(arguments.length){resourceUrlWhitelist=adjustMatchers(value)}return resourceUrlWhitelist};this.resourceUrlBlacklist=function(value){if(arguments.length){resourceUrlBlacklist=adjustMatchers(value)}return resourceUrlBlacklist};this.$get=["$injector",function($injector){var htmlSanitizer=function htmlSanitizer(html){throw $sceMinErr("unsafe","Attempting to use an unsafe value in a safe context.")};if($injector.has("$sanitize")){htmlSanitizer=$injector.get("$sanitize")}function matchUrl(matcher,parsedUrl){if(matcher==="self"){return urlIsSameOrigin(parsedUrl)}else{return!!matcher.exec(parsedUrl.href)}}function isResourceUrlAllowedByPolicy(url){var parsedUrl=urlResolve(url.toString());var i,n,allowed=false;for(i=0,n=resourceUrlWhitelist.length;i<n;i++){if(matchUrl(resourceUrlWhitelist[i],parsedUrl)){allowed=true;break}}if(allowed){for(i=0,n=resourceUrlBlacklist.length;i<n;i++){if(matchUrl(resourceUrlBlacklist[i],parsedUrl)){allowed=false;break}}}return allowed}function generateHolderType(Base){var holderType=function TrustedValueHolderType(trustedValue){this.$$unwrapTrustedValue=function(){return trustedValue}};if(Base){holderType.prototype=new Base}holderType.prototype.valueOf=function sceValueOf(){return this.$$unwrapTrustedValue()};holderType.prototype.toString=function sceToString(){return this.$$unwrapTrustedValue().toString()};return holderType}var trustedValueHolderBase=generateHolderType(),byType={};byType[SCE_CONTEXTS.HTML]=generateHolderType(trustedValueHolderBase);byType[SCE_CONTEXTS.CSS]=generateHolderType(trustedValueHolderBase);byType[SCE_CONTEXTS.URL]=generateHolderType(trustedValueHolderBase);byType[SCE_CONTEXTS.JS]=generateHolderType(trustedValueHolderBase);byType[SCE_CONTEXTS.RESOURCE_URL]=generateHolderType(byType[SCE_CONTEXTS.URL]);function trustAs(type,trustedValue){var Constructor=byType.hasOwnProperty(type)?byType[type]:null;if(!Constructor){throw $sceMinErr("icontext","Attempted to trust a value in invalid context. Context: {0}; Value: {1}",type,trustedValue)}if(trustedValue===null||trustedValue===undefined||trustedValue===""){return trustedValue}if(typeof trustedValue!=="string"){throw $sceMinErr("itype","Attempted to trust a non-string value in a content requiring a string: Context: {0}",type)}return new Constructor(trustedValue)}function valueOf(maybeTrusted){if(maybeTrusted instanceof trustedValueHolderBase){return maybeTrusted.$$unwrapTrustedValue()}else{return maybeTrusted}}function getTrusted(type,maybeTrusted){if(maybeTrusted===null||maybeTrusted===undefined||maybeTrusted===""){return maybeTrusted}var constructor=byType.hasOwnProperty(type)?byType[type]:null;if(constructor&&maybeTrusted instanceof constructor){return maybeTrusted.$$unwrapTrustedValue()}if(type===SCE_CONTEXTS.RESOURCE_URL){if(isResourceUrlAllowedByPolicy(maybeTrusted)){return maybeTrusted}else{throw $sceMinErr("insecurl","Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}",maybeTrusted.toString())}}else if(type===SCE_CONTEXTS.HTML){return htmlSanitizer(maybeTrusted)}throw $sceMinErr("unsafe","Attempting to use an unsafe value in a safe context.")}return{trustAs:trustAs,getTrusted:getTrusted,valueOf:valueOf}}]}function $SceProvider(){var enabled=true;this.enabled=function(value){if(arguments.length){enabled=!!value}return enabled};this.$get=["$document","$parse","$sceDelegate",function($document,$parse,$sceDelegate){if(enabled&&$document[0].documentMode<8){throw $sceMinErr("iequirks","Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks "+"mode. You can fix this by adding the text <!doctype html> to the top of your HTML "+"document. See http://docs.angularjs.org/api/ng.$sce for more information.")}var sce=shallowCopy(SCE_CONTEXTS);sce.isEnabled=function(){return enabled};sce.trustAs=$sceDelegate.trustAs;sce.getTrusted=$sceDelegate.getTrusted;sce.valueOf=$sceDelegate.valueOf;if(!enabled){sce.trustAs=sce.getTrusted=function(type,value){return value};sce.valueOf=identity}sce.parseAs=function sceParseAs(type,expr){var parsed=$parse(expr);if(parsed.literal&&parsed.constant){return parsed}else{return $parse(expr,function(value){return sce.getTrusted(type,value)})}};var parse=sce.parseAs,getTrusted=sce.getTrusted,trustAs=sce.trustAs;forEach(SCE_CONTEXTS,function(enumValue,name){var lName=lowercase(name);sce[camelCase("parse_as_"+lName)]=function(expr){return parse(enumValue,expr)};sce[camelCase("get_trusted_"+lName)]=function(value){return getTrusted(enumValue,value)};sce[camelCase("trust_as_"+lName)]=function(value){return trustAs(enumValue,value)}});return sce}]}function $SnifferProvider(){this.$get=["$window","$document",function($window,$document){var eventSupport={},android=int((/android (\d+)/.exec(lowercase(($window.navigator||{}).userAgent))||[])[1]),boxee=/Boxee/i.test(($window.navigator||{}).userAgent),document=$document[0]||{},vendorPrefix,vendorRegex=/^(Moz|webkit|O|ms)(?=[A-Z])/,bodyStyle=document.body&&document.body.style,transitions=false,animations=false,match;if(bodyStyle){for(var prop in bodyStyle){if(match=vendorRegex.exec(prop)){vendorPrefix=match[0];vendorPrefix=vendorPrefix.substr(0,1).toUpperCase()+vendorPrefix.substr(1);break}}if(!vendorPrefix){vendorPrefix="WebkitOpacity"in bodyStyle&&"webkit"}transitions=!!("transition"in bodyStyle||vendorPrefix+"Transition"in bodyStyle);animations=!!("animation"in bodyStyle||vendorPrefix+"Animation"in bodyStyle);if(android&&(!transitions||!animations)){transitions=isString(document.body.style.webkitTransition);animations=isString(document.body.style.webkitAnimation)}}return{history:!!($window.history&&$window.history.pushState&&!(android<4)&&!boxee),hasEvent:function(event){if(event=="input"&&msie==9)return false;if(isUndefined(eventSupport[event])){var divElm=document.createElement("div");eventSupport[event]="on"+event in divElm}return eventSupport[event]},csp:csp(),vendorPrefix:vendorPrefix,transitions:transitions,animations:animations,android:android}}]}var $compileMinErr=minErr("$compile");function $TemplateRequestProvider(){this.$get=["$templateCache","$http","$q",function($templateCache,$http,$q){function handleRequestFn(tpl,ignoreRequestError){var self=handleRequestFn;self.totalPendingRequests++;return $http.get(tpl,{cache:$templateCache}).then(function(response){var html=response.data;if(!html||html.length===0){return handleError()}self.totalPendingRequests--;$templateCache.put(tpl,html);return html},handleError);function handleError(){self.totalPendingRequests--;if(!ignoreRequestError){throw $compileMinErr("tpload","Failed to load template: {0}",tpl)}return $q.reject()}}handleRequestFn.totalPendingRequests=0;return handleRequestFn}]}function $$TestabilityProvider(){this.$get=["$rootScope","$browser","$location",function($rootScope,$browser,$location){var testability={};testability.findBindings=function(element,expression,opt_exactMatch){var bindings=element.getElementsByClassName("ng-binding");var matches=[];forEach(bindings,function(binding){var dataBinding=angular.element(binding).data("$binding");if(dataBinding){forEach(dataBinding,function(bindingName){if(opt_exactMatch){var matcher=new RegExp("(^|\\s)"+expression+"(\\s|\\||$)");if(matcher.test(bindingName)){matches.push(binding)}}else{if(bindingName.indexOf(expression)!=-1){matches.push(binding)}}})}});return matches};testability.findModels=function(element,expression,opt_exactMatch){var prefixes=["ng-","data-ng-","ng\\:"];for(var p=0;p<prefixes.length;++p){var attributeEquals=opt_exactMatch?"=":"*=";var selector="["+prefixes[p]+"model"+attributeEquals+'"'+expression+'"]';var elements=element.querySelectorAll(selector);if(elements.length){return elements}}};testability.getLocation=function(){return $location.url()};testability.setLocation=function(url){if(url!==$location.url()){$location.url(url);$rootScope.$digest()}};testability.whenStable=function(callback){$browser.notifyWhenNoOutstandingRequests(callback)};return testability}]}function $TimeoutProvider(){this.$get=["$rootScope","$browser","$q","$$q","$exceptionHandler",function($rootScope,$browser,$q,$$q,$exceptionHandler){var deferreds={};function timeout(fn,delay,invokeApply){var skipApply=isDefined(invokeApply)&&!invokeApply,deferred=(skipApply?$$q:$q).defer(),promise=deferred.promise,timeoutId;timeoutId=$browser.defer(function(){try{deferred.resolve(fn())}catch(e){deferred.reject(e);$exceptionHandler(e)}finally{delete deferreds[promise.$$timeoutId]}if(!skipApply)$rootScope.$apply()},delay);promise.$$timeoutId=timeoutId;deferreds[timeoutId]=deferred;return promise}timeout.cancel=function(promise){if(promise&&promise.$$timeoutId in deferreds){deferreds[promise.$$timeoutId].reject("canceled");delete deferreds[promise.$$timeoutId];return $browser.defer.cancel(promise.$$timeoutId)}return false};return timeout}]}var urlParsingNode=document.createElement("a");var originUrl=urlResolve(window.location.href,true);function urlResolve(url,base){var href=url;if(msie){urlParsingNode.setAttribute("href",href);href=urlParsingNode.href}urlParsingNode.setAttribute("href",href);return{href:urlParsingNode.href,protocol:urlParsingNode.protocol?urlParsingNode.protocol.replace(/:$/,""):"",host:urlParsingNode.host,search:urlParsingNode.search?urlParsingNode.search.replace(/^\?/,""):"",hash:urlParsingNode.hash?urlParsingNode.hash.replace(/^#/,""):"",hostname:urlParsingNode.hostname,port:urlParsingNode.port,pathname:urlParsingNode.pathname.charAt(0)==="/"?urlParsingNode.pathname:"/"+urlParsingNode.pathname}}function urlIsSameOrigin(requestUrl){var parsed=isString(requestUrl)?urlResolve(requestUrl):requestUrl;return parsed.protocol===originUrl.protocol&&parsed.host===originUrl.host}function $WindowProvider(){this.$get=valueFn(window)}$FilterProvider.$inject=["$provide"];function $FilterProvider($provide){var suffix="Filter";function register(name,factory){if(isObject(name)){var filters={};forEach(name,function(filter,key){filters[key]=register(key,filter)});return filters}else{return $provide.factory(name+suffix,factory)}}this.register=register;this.$get=["$injector",function($injector){return function(name){return $injector.get(name+suffix)}}];register("currency",currencyFilter);register("date",dateFilter);register("filter",filterFilter);register("json",jsonFilter);register("limitTo",limitToFilter);register("lowercase",lowercaseFilter);register("number",numberFilter);register("orderBy",orderByFilter);register("uppercase",uppercaseFilter)}function filterFilter(){return function(array,expression,comparator){if(!isArray(array))return array;var comparatorType=typeof comparator,predicates=[];predicates.check=function(value,index){for(var j=0;j<predicates.length;j++){if(!predicates[j](value,index)){return false}}return true};if(comparatorType!=="function"){if(comparatorType==="boolean"&&comparator){comparator=function(obj,text){return angular.equals(obj,text)}}else{comparator=function(obj,text){if(obj&&text&&typeof obj==="object"&&typeof text==="object"){for(var objKey in obj){if(objKey.charAt(0)!=="$"&&hasOwnProperty.call(obj,objKey)&&comparator(obj[objKey],text[objKey])){return true}}return false}text=(""+text).toLowerCase();return(""+obj).toLowerCase().indexOf(text)>-1}}}var search=function(obj,text){if(typeof text==="string"&&text.charAt(0)==="!"){return!search(obj,text.substr(1))}switch(typeof obj){case"boolean":case"number":case"string":return comparator(obj,text);case"object":switch(typeof text){case"object":return comparator(obj,text);default:for(var objKey in obj){if(objKey.charAt(0)!=="$"&&search(obj[objKey],text)){return true}}break}return false;case"array":for(var i=0;i<obj.length;i++){if(search(obj[i],text)){return true}}return false;default:return false}};switch(typeof expression){case"boolean":case"number":case"string":expression={$:expression};case"object":for(var key in expression){(function(path){if(typeof expression[path]==="undefined")return;predicates.push(function(value){return search(path=="$"?value:value&&value[path],expression[path])})})(key)}break;case"function":predicates.push(expression);break;default:return array}var filtered=[];for(var j=0;j<array.length;j++){var value=array[j];if(predicates.check(value,j)){filtered.push(value)}}return filtered}}currencyFilter.$inject=["$locale"];function currencyFilter($locale){var formats=$locale.NUMBER_FORMATS;return function(amount,currencySymbol,fractionSize){if(isUndefined(currencySymbol)){currencySymbol=formats.CURRENCY_SYM}if(isUndefined(fractionSize)){fractionSize=2}return amount==null?amount:formatNumber(amount,formats.PATTERNS[1],formats.GROUP_SEP,formats.DECIMAL_SEP,fractionSize).replace(/\u00A4/g,currencySymbol)}}numberFilter.$inject=["$locale"];function numberFilter($locale){var formats=$locale.NUMBER_FORMATS;return function(number,fractionSize){return number==null?number:formatNumber(number,formats.PATTERNS[0],formats.GROUP_SEP,formats.DECIMAL_SEP,fractionSize)}}var DECIMAL_SEP=".";function formatNumber(number,pattern,groupSep,decimalSep,fractionSize){if(!isFinite(number)||isObject(number))return"";var isNegative=number<0;number=Math.abs(number);var numStr=number+"",formatedText="",parts=[];var hasExponent=false;if(numStr.indexOf("e")!==-1){var match=numStr.match(/([\d\.]+)e(-?)(\d+)/);if(match&&match[2]=="-"&&match[3]>fractionSize+1){numStr="0";number=0}else{formatedText=numStr;hasExponent=true}}if(!hasExponent){var fractionLen=(numStr.split(DECIMAL_SEP)[1]||"").length;if(isUndefined(fractionSize)){fractionSize=Math.min(Math.max(pattern.minFrac,fractionLen),pattern.maxFrac)}number=+(Math.round(+(number.toString()+"e"+fractionSize)).toString()+"e"+-fractionSize);if(number===0){isNegative=false}var fraction=(""+number).split(DECIMAL_SEP);var whole=fraction[0];fraction=fraction[1]||"";var i,pos=0,lgroup=pattern.lgSize,group=pattern.gSize;if(whole.length>=lgroup+group){pos=whole.length-lgroup;for(i=0;i<pos;i++){if((pos-i)%group===0&&i!==0){formatedText+=groupSep}formatedText+=whole.charAt(i)}}for(i=pos;i<whole.length;i++){if((whole.length-i)%lgroup===0&&i!==0){formatedText+=groupSep}formatedText+=whole.charAt(i)}while(fraction.length<fractionSize){fraction+="0"}if(fractionSize&&fractionSize!=="0")formatedText+=decimalSep+fraction.substr(0,fractionSize)}else{if(fractionSize>0&&number>-1&&number<1){formatedText=number.toFixed(fractionSize)}}parts.push(isNegative?pattern.negPre:pattern.posPre);parts.push(formatedText);parts.push(isNegative?pattern.negSuf:pattern.posSuf);return parts.join("")}function padNumber(num,digits,trim){var neg="";if(num<0){neg="-";num=-num}num=""+num;while(num.length<digits)num="0"+num;if(trim)num=num.substr(num.length-digits);return neg+num}function dateGetter(name,size,offset,trim){offset=offset||0;return function(date){var value=date["get"+name]();if(offset>0||value>-offset)value+=offset;if(value===0&&offset==-12)value=12;return padNumber(value,size,trim)}}function dateStrGetter(name,shortForm){return function(date,formats){var value=date["get"+name]();var get=uppercase(shortForm?"SHORT"+name:name);return formats[get][value]}}function timeZoneGetter(date){var zone=-1*date.getTimezoneOffset();var paddedZone=zone>=0?"+":"";paddedZone+=padNumber(Math[zone>0?"floor":"ceil"](zone/60),2)+padNumber(Math.abs(zone%60),2);return paddedZone}function getFirstThursdayOfYear(year){var dayOfWeekOnFirst=new Date(year,0,1).getDay();return new Date(year,0,(dayOfWeekOnFirst<=4?5:12)-dayOfWeekOnFirst)}function getThursdayThisWeek(datetime){return new Date(datetime.getFullYear(),datetime.getMonth(),datetime.getDate()+(4-datetime.getDay()))}function weekGetter(size){return function(date){var firstThurs=getFirstThursdayOfYear(date.getFullYear()),thisThurs=getThursdayThisWeek(date);var diff=+thisThurs-+firstThurs,result=1+Math.round(diff/6048e5);return padNumber(result,size)}}function ampmGetter(date,formats){return date.getHours()<12?formats.AMPMS[0]:formats.AMPMS[1]}var DATE_FORMATS={yyyy:dateGetter("FullYear",4),yy:dateGetter("FullYear",2,0,true),y:dateGetter("FullYear",1),MMMM:dateStrGetter("Month"),MMM:dateStrGetter("Month",true),MM:dateGetter("Month",2,1),M:dateGetter("Month",1,1),dd:dateGetter("Date",2),d:dateGetter("Date",1),HH:dateGetter("Hours",2),H:dateGetter("Hours",1),hh:dateGetter("Hours",2,-12),h:dateGetter("Hours",1,-12),mm:dateGetter("Minutes",2),m:dateGetter("Minutes",1),ss:dateGetter("Seconds",2),s:dateGetter("Seconds",1),sss:dateGetter("Milliseconds",3),EEEE:dateStrGetter("Day"),EEE:dateStrGetter("Day",true),a:ampmGetter,Z:timeZoneGetter,ww:weekGetter(2),w:weekGetter(1)};var DATE_FORMATS_SPLIT=/((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|w+))(.*)/,NUMBER_STRING=/^\-?\d+$/;dateFilter.$inject=["$locale"];function dateFilter($locale){var R_ISO8601_STR=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;function jsonStringToDate(string){var match;if(match=string.match(R_ISO8601_STR)){var date=new Date(0),tzHour=0,tzMin=0,dateSetter=match[8]?date.setUTCFullYear:date.setFullYear,timeSetter=match[8]?date.setUTCHours:date.setHours;if(match[9]){tzHour=int(match[9]+match[10]);tzMin=int(match[9]+match[11])}dateSetter.call(date,int(match[1]),int(match[2])-1,int(match[3]));var h=int(match[4]||0)-tzHour;var m=int(match[5]||0)-tzMin;var s=int(match[6]||0);var ms=Math.round(parseFloat("0."+(match[7]||0))*1e3);timeSetter.call(date,h,m,s,ms);return date}return string}return function(date,format,timezone){var text="",parts=[],fn,match;format=format||"mediumDate";format=$locale.DATETIME_FORMATS[format]||format;if(isString(date)){date=NUMBER_STRING.test(date)?int(date):jsonStringToDate(date)}if(isNumber(date)){date=new Date(date)}if(!isDate(date)){return date}while(format){match=DATE_FORMATS_SPLIT.exec(format);if(match){parts=concat(parts,match,1);format=parts.pop()}else{parts.push(format);format=null}}if(timezone&&timezone==="UTC"){date=new Date(date.getTime());date.setMinutes(date.getMinutes()+date.getTimezoneOffset())}forEach(parts,function(value){fn=DATE_FORMATS[value];text+=fn?fn(date,$locale.DATETIME_FORMATS):value.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return text}}function jsonFilter(){return function(object){return toJson(object,true)}}var lowercaseFilter=valueFn(lowercase);var uppercaseFilter=valueFn(uppercase);function limitToFilter(){return function(input,limit){if(isNumber(input))input=input.toString();if(!isArray(input)&&!isString(input))return input;if(Math.abs(Number(limit))===Infinity){limit=Number(limit)}else{limit=int(limit)}if(isString(input)){if(limit){return limit>=0?input.slice(0,limit):input.slice(limit,input.length)}else{return""}}var out=[],i,n;if(limit>input.length)limit=input.length;else if(limit<-input.length)limit=-input.length;if(limit>0){i=0;n=limit}else{i=input.length+limit;n=input.length}for(;i<n;i++){out.push(input[i])}return out}}orderByFilter.$inject=["$parse"];function orderByFilter($parse){return function(array,sortPredicate,reverseOrder){if(!isArrayLike(array))return array;sortPredicate=isArray(sortPredicate)?sortPredicate:[sortPredicate];if(sortPredicate.length===0){sortPredicate=["+"]}sortPredicate=sortPredicate.map(function(predicate){var descending=false,get=predicate||identity;if(isString(predicate)){if(predicate.charAt(0)=="+"||predicate.charAt(0)=="-"){descending=predicate.charAt(0)=="-";predicate=predicate.substring(1)}if(predicate===""){return reverseComparator(function(a,b){return compare(a,b)},descending)}get=$parse(predicate);if(get.constant){var key=get();return reverseComparator(function(a,b){return compare(a[key],b[key])},descending)}}return reverseComparator(function(a,b){return compare(get(a),get(b))},descending)});var arrayCopy=[];for(var i=0;i<array.length;i++){arrayCopy.push(array[i])}return arrayCopy.sort(reverseComparator(comparator,reverseOrder));function comparator(o1,o2){for(var i=0;i<sortPredicate.length;i++){var comp=sortPredicate[i](o1,o2);if(comp!==0)return comp}return 0}function reverseComparator(comp,descending){return descending?function(a,b){return comp(b,a)}:comp}function compare(v1,v2){var t1=typeof v1;var t2=typeof v2;if(t1==t2){if(isDate(v1)&&isDate(v2)){v1=v1.valueOf();v2=v2.valueOf()}if(t1=="string"){v1=v1.toLowerCase();v2=v2.toLowerCase()}if(v1===v2)return 0;return v1<v2?-1:1}else{return t1<t2?-1:1}}}}function ngDirective(directive){if(isFunction(directive)){directive={link:directive}}directive.restrict=directive.restrict||"AC";return valueFn(directive)}var htmlAnchorDirective=valueFn({restrict:"E",compile:function(element,attr){if(!attr.href&&!attr.xlinkHref&&!attr.name){return function(scope,element){var href=toString.call(element.prop("href"))==="[object SVGAnimatedString]"?"xlink:href":"href";element.on("click",function(event){if(!element.attr(href)){event.preventDefault()}})}}}});var ngAttributeAliasDirectives={};forEach(BOOLEAN_ATTR,function(propName,attrName){if(propName=="multiple")return;var normalized=directiveNormalize("ng-"+attrName);ngAttributeAliasDirectives[normalized]=function(){return{restrict:"A",priority:100,link:function(scope,element,attr){scope.$watch(attr[normalized],function ngBooleanAttrWatchAction(value){attr.$set(attrName,!!value)})}}}});forEach(ALIASED_ATTR,function(htmlAttr,ngAttr){ngAttributeAliasDirectives[ngAttr]=function(){return{priority:100,link:function(scope,element,attr){if(ngAttr==="ngPattern"&&attr.ngPattern.charAt(0)=="/"){var match=attr.ngPattern.match(REGEX_STRING_REGEXP);if(match){attr.$set("ngPattern",new RegExp(match[1],match[2]));return}}scope.$watch(attr[ngAttr],function ngAttrAliasWatchAction(value){attr.$set(ngAttr,value)})}}}});forEach(["src","srcset","href"],function(attrName){var normalized=directiveNormalize("ng-"+attrName);ngAttributeAliasDirectives[normalized]=function(){return{priority:99,link:function(scope,element,attr){var propName=attrName,name=attrName;if(attrName==="href"&&toString.call(element.prop("href"))==="[object SVGAnimatedString]"){name="xlinkHref";attr.$attr[name]="xlink:href";propName=null}attr.$observe(normalized,function(value){if(!value){if(attrName==="href"){attr.$set(name,null)}return}attr.$set(name,value);if(msie&&propName)element.prop(propName,attr[name])})}}}});var nullFormCtrl={$addControl:noop,$$renameControl:nullFormRenameControl,$removeControl:noop,$setValidity:noop,$setDirty:noop,$setPristine:noop,$setSubmitted:noop},SUBMITTED_CLASS="ng-submitted";function nullFormRenameControl(control,name){control.$name=name}FormController.$inject=["$element","$attrs","$scope","$animate","$interpolate"];function FormController(element,attrs,$scope,$animate,$interpolate){var form=this,controls=[];var parentForm=form.$$parentForm=element.parent().controller("form")||nullFormCtrl;form.$error={};form.$$success={};form.$pending=undefined;form.$name=$interpolate(attrs.name||attrs.ngForm||"")($scope);form.$dirty=false;form.$pristine=true;form.$valid=true;form.$invalid=false;form.$submitted=false;parentForm.$addControl(form);form.$rollbackViewValue=function(){forEach(controls,function(control){control.$rollbackViewValue()})};form.$commitViewValue=function(){forEach(controls,function(control){control.$commitViewValue()})};form.$addControl=function(control){assertNotHasOwnProperty(control.$name,"input");controls.push(control);if(control.$name){form[control.$name]=control}};form.$$renameControl=function(control,newName){var oldName=control.$name;if(form[oldName]===control){delete form[oldName]}form[newName]=control;control.$name=newName};form.$removeControl=function(control){if(control.$name&&form[control.$name]===control){delete form[control.$name]}forEach(form.$pending,function(value,name){form.$setValidity(name,null,control)});forEach(form.$error,function(value,name){form.$setValidity(name,null,control)});arrayRemove(controls,control)};addSetValidityMethod({ctrl:this,$element:element,set:function(object,property,control){var list=object[property];if(!list){object[property]=[control]}else{var index=list.indexOf(control);if(index===-1){list.push(control)}}},unset:function(object,property,control){var list=object[property];if(!list){return}arrayRemove(list,control);if(list.length===0){delete object[property]}},parentForm:parentForm,$animate:$animate});form.$setDirty=function(){$animate.removeClass(element,PRISTINE_CLASS);$animate.addClass(element,DIRTY_CLASS);form.$dirty=true;form.$pristine=false;parentForm.$setDirty()};form.$setPristine=function(){$animate.setClass(element,PRISTINE_CLASS,DIRTY_CLASS+" "+SUBMITTED_CLASS);form.$dirty=false;form.$pristine=true;form.$submitted=false;forEach(controls,function(control){control.$setPristine()})};form.$setUntouched=function(){forEach(controls,function(control){control.$setUntouched()})};form.$setSubmitted=function(){$animate.addClass(element,SUBMITTED_CLASS);form.$submitted=true;parentForm.$setSubmitted()}}var formDirectiveFactory=function(isNgForm){return["$timeout",function($timeout){var formDirective={name:"form",restrict:isNgForm?"EAC":"E",controller:FormController,compile:function ngFormCompile(formElement){formElement.addClass(PRISTINE_CLASS).addClass(VALID_CLASS);return{pre:function ngFormPreLink(scope,formElement,attr,controller){if(!("action"in attr)){var handleFormSubmission=function(event){scope.$apply(function(){controller.$commitViewValue();controller.$setSubmitted()});event.preventDefault?event.preventDefault():event.returnValue=false};addEventListenerFn(formElement[0],"submit",handleFormSubmission);formElement.on("$destroy",function(){$timeout(function(){removeEventListenerFn(formElement[0],"submit",handleFormSubmission)},0,false)})}var parentFormCtrl=controller.$$parentForm,alias=controller.$name;if(alias){setter(scope,alias,controller,alias);attr.$observe(attr.name?"name":"ngForm",function(newValue){if(alias===newValue)return;setter(scope,alias,undefined,alias);alias=newValue;setter(scope,alias,controller,alias);parentFormCtrl.$$renameControl(controller,alias)})}formElement.on("$destroy",function(){parentFormCtrl.$removeControl(controller);if(alias){setter(scope,alias,undefined,alias)}extend(controller,nullFormCtrl)})}}}};return formDirective}]};var formDirective=formDirectiveFactory();var ngFormDirective=formDirectiveFactory(true);var ISO_DATE_REGEXP=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/;var URL_REGEXP=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/;var EMAIL_REGEXP=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i;var NUMBER_REGEXP=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/;var DATE_REGEXP=/^(\d{4})-(\d{2})-(\d{2})$/;var DATETIMELOCAL_REGEXP=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/;var WEEK_REGEXP=/^(\d{4})-W(\d\d)$/;var MONTH_REGEXP=/^(\d{4})-(\d\d)$/;var TIME_REGEXP=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/;var DEFAULT_REGEXP=/(\s+|^)default(\s+|$)/;var $ngModelMinErr=new minErr("ngModel");var inputType={text:textInputType,date:createDateInputType("date",DATE_REGEXP,createDateParser(DATE_REGEXP,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":createDateInputType("datetimelocal",DATETIMELOCAL_REGEXP,createDateParser(DATETIMELOCAL_REGEXP,["yyyy","MM","dd","HH","mm","ss","sss"]),"yyyy-MM-ddTHH:mm:ss.sss"),time:createDateInputType("time",TIME_REGEXP,createDateParser(TIME_REGEXP,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:createDateInputType("week",WEEK_REGEXP,weekParser,"yyyy-Www"),month:createDateInputType("month",MONTH_REGEXP,createDateParser(MONTH_REGEXP,["yyyy","MM"]),"yyyy-MM"),number:numberInputType,url:urlInputType,email:emailInputType,radio:radioInputType,checkbox:checkboxInputType,hidden:noop,button:noop,submit:noop,reset:noop,file:noop};function testFlags(validity,flags){var i,flag;if(flags){for(i=0;i<flags.length;++i){flag=flags[i];if(validity[flag]){return true}}}return false}function stringBasedInputType(ctrl){ctrl.$formatters.push(function(value){return ctrl.$isEmpty(value)?value:value.toString()})}function textInputType(scope,element,attr,ctrl,$sniffer,$browser){baseInputType(scope,element,attr,ctrl,$sniffer,$browser);stringBasedInputType(ctrl)}function baseInputType(scope,element,attr,ctrl,$sniffer,$browser){var validity=element.prop(VALIDITY_STATE_PROPERTY);var placeholder=element[0].placeholder,noevent={};var type=lowercase(element[0].type);if(!$sniffer.android){var composing=false;element.on("compositionstart",function(data){composing=true});element.on("compositionend",function(){composing=false;listener()})}var listener=function(ev){if(composing)return;var value=element.val(),event=ev&&ev.type;if(msie&&(ev||noevent).type==="input"&&element[0].placeholder!==placeholder){placeholder=element[0].placeholder;return}if(type!=="password"&&(!attr.ngTrim||attr.ngTrim!=="false")){value=trim(value)}if(ctrl.$viewValue!==value||value===""&&ctrl.$$hasNativeValidators){ctrl.$setViewValue(value,event)}};if($sniffer.hasEvent("input")){element.on("input",listener)}else{var timeout;var deferListener=function(ev){if(!timeout){timeout=$browser.defer(function(){listener(ev);timeout=null})}};element.on("keydown",function(event){var key=event.keyCode;if(key===91||15<key&&key<19||37<=key&&key<=40)return;deferListener(event)});if($sniffer.hasEvent("paste")){element.on("paste cut",deferListener)}}element.on("change",listener);ctrl.$render=function(){element.val(ctrl.$isEmpty(ctrl.$modelValue)?"":ctrl.$viewValue)}}function weekParser(isoWeek,existingDate){if(isDate(isoWeek)){return isoWeek}if(isString(isoWeek)){WEEK_REGEXP.lastIndex=0;var parts=WEEK_REGEXP.exec(isoWeek);if(parts){var year=+parts[1],week=+parts[2],hours=0,minutes=0,seconds=0,milliseconds=0,firstThurs=getFirstThursdayOfYear(year),addDays=(week-1)*7;if(existingDate){hours=existingDate.getHours();minutes=existingDate.getMinutes();seconds=existingDate.getSeconds();milliseconds=existingDate.getMilliseconds()}return new Date(year,0,firstThurs.getDate()+addDays,hours,minutes,seconds,milliseconds)}}return NaN}function createDateParser(regexp,mapping){return function(iso,date){var parts,map;if(isDate(iso)){return iso}if(isString(iso)){if(iso.charAt(0)=='"'&&iso.charAt(iso.length-1)=='"'){iso=iso.substring(1,iso.length-1)}if(ISO_DATE_REGEXP.test(iso)){return new Date(iso)}regexp.lastIndex=0;parts=regexp.exec(iso);if(parts){parts.shift();if(date){map={yyyy:date.getFullYear(),MM:date.getMonth()+1,dd:date.getDate(),HH:date.getHours(),mm:date.getMinutes(),ss:date.getSeconds(),sss:date.getMilliseconds()/1e3}}else{map={yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0}}forEach(parts,function(part,index){if(index<mapping.length){map[mapping[index]]=+part}});return new Date(map.yyyy,map.MM-1,map.dd,map.HH,map.mm,map.ss||0,map.sss*1e3||0)}}return NaN}}function createDateInputType(type,regexp,parseDate,format){return function dynamicDateInputType(scope,element,attr,ctrl,$sniffer,$browser,$filter){badInputChecker(scope,element,attr,ctrl);
baseInputType(scope,element,attr,ctrl,$sniffer,$browser);var timezone=ctrl&&ctrl.$options&&ctrl.$options.timezone;var previousDate;ctrl.$$parserName=type;ctrl.$parsers.push(function(value){if(ctrl.$isEmpty(value))return null;if(regexp.test(value)){var parsedDate=parseDate(value,previousDate);if(timezone==="UTC"){parsedDate.setMinutes(parsedDate.getMinutes()-parsedDate.getTimezoneOffset())}return parsedDate}return undefined});ctrl.$formatters.push(function(value){if(!ctrl.$isEmpty(value)){if(!isDate(value)){throw $ngModelMinErr("datefmt","Expected `{0}` to be a date",value)}previousDate=value;if(previousDate&&timezone==="UTC"){var timezoneOffset=6e4*previousDate.getTimezoneOffset();previousDate=new Date(previousDate.getTime()+timezoneOffset)}return $filter("date")(value,format,timezone)}else{previousDate=null}return""});if(isDefined(attr.min)||attr.ngMin){var minVal;ctrl.$validators.min=function(value){return ctrl.$isEmpty(value)||isUndefined(minVal)||parseDate(value)>=minVal};attr.$observe("min",function(val){minVal=parseObservedDateValue(val);ctrl.$validate()})}if(isDefined(attr.max)||attr.ngMax){var maxVal;ctrl.$validators.max=function(value){return ctrl.$isEmpty(value)||isUndefined(maxVal)||parseDate(value)<=maxVal};attr.$observe("max",function(val){maxVal=parseObservedDateValue(val);ctrl.$validate()})}ctrl.$isEmpty=function(value){return!value||value.getTime&&value.getTime()!==value.getTime()};function parseObservedDateValue(val){return isDefined(val)?isDate(val)?val:parseDate(val):undefined}}}function badInputChecker(scope,element,attr,ctrl){var node=element[0];var nativeValidation=ctrl.$$hasNativeValidators=isObject(node.validity);if(nativeValidation){ctrl.$parsers.push(function(value){var validity=element.prop(VALIDITY_STATE_PROPERTY)||{};return validity.badInput&&!validity.typeMismatch?undefined:value})}}function numberInputType(scope,element,attr,ctrl,$sniffer,$browser){badInputChecker(scope,element,attr,ctrl);baseInputType(scope,element,attr,ctrl,$sniffer,$browser);ctrl.$$parserName="number";ctrl.$parsers.push(function(value){if(ctrl.$isEmpty(value))return null;if(NUMBER_REGEXP.test(value))return parseFloat(value);return undefined});ctrl.$formatters.push(function(value){if(!ctrl.$isEmpty(value)){if(!isNumber(value)){throw $ngModelMinErr("numfmt","Expected `{0}` to be a number",value)}value=value.toString()}return value});if(attr.min||attr.ngMin){var minVal;ctrl.$validators.min=function(value){return ctrl.$isEmpty(value)||isUndefined(minVal)||value>=minVal};attr.$observe("min",function(val){if(isDefined(val)&&!isNumber(val)){val=parseFloat(val,10)}minVal=isNumber(val)&&!isNaN(val)?val:undefined;ctrl.$validate()})}if(attr.max||attr.ngMax){var maxVal;ctrl.$validators.max=function(value){return ctrl.$isEmpty(value)||isUndefined(maxVal)||value<=maxVal};attr.$observe("max",function(val){if(isDefined(val)&&!isNumber(val)){val=parseFloat(val,10)}maxVal=isNumber(val)&&!isNaN(val)?val:undefined;ctrl.$validate()})}}function urlInputType(scope,element,attr,ctrl,$sniffer,$browser){baseInputType(scope,element,attr,ctrl,$sniffer,$browser);stringBasedInputType(ctrl);ctrl.$$parserName="url";ctrl.$validators.url=function(value){return ctrl.$isEmpty(value)||URL_REGEXP.test(value)}}function emailInputType(scope,element,attr,ctrl,$sniffer,$browser){baseInputType(scope,element,attr,ctrl,$sniffer,$browser);stringBasedInputType(ctrl);ctrl.$$parserName="email";ctrl.$validators.email=function(value){return ctrl.$isEmpty(value)||EMAIL_REGEXP.test(value)}}function radioInputType(scope,element,attr,ctrl){if(isUndefined(attr.name)){element.attr("name",nextUid())}var listener=function(ev){if(element[0].checked){ctrl.$setViewValue(attr.value,ev&&ev.type)}};element.on("click",listener);ctrl.$render=function(){var value=attr.value;element[0].checked=value==ctrl.$viewValue};attr.$observe("value",ctrl.$render)}function parseConstantExpr($parse,context,name,expression,fallback){var parseFn;if(isDefined(expression)){parseFn=$parse(expression);if(!parseFn.constant){throw minErr("ngModel")("constexpr","Expected constant expression for `{0}`, but saw "+"`{1}`.",name,expression)}return parseFn(context)}return fallback}function checkboxInputType(scope,element,attr,ctrl,$sniffer,$browser,$filter,$parse){var trueValue=parseConstantExpr($parse,scope,"ngTrueValue",attr.ngTrueValue,true);var falseValue=parseConstantExpr($parse,scope,"ngFalseValue",attr.ngFalseValue,false);var listener=function(ev){ctrl.$setViewValue(element[0].checked,ev&&ev.type)};element.on("click",listener);ctrl.$render=function(){element[0].checked=ctrl.$viewValue};ctrl.$isEmpty=function(value){return value!==trueValue};ctrl.$formatters.push(function(value){return equals(value,trueValue)});ctrl.$parsers.push(function(value){return value?trueValue:falseValue})}var inputDirective=["$browser","$sniffer","$filter","$parse",function($browser,$sniffer,$filter,$parse){return{restrict:"E",require:["?ngModel"],link:{pre:function(scope,element,attr,ctrls){if(ctrls[0]){(inputType[lowercase(attr.type)]||inputType.text)(scope,element,attr,ctrls[0],$sniffer,$browser,$filter,$parse)}}}}}];var VALID_CLASS="ng-valid",INVALID_CLASS="ng-invalid",PRISTINE_CLASS="ng-pristine",DIRTY_CLASS="ng-dirty",UNTOUCHED_CLASS="ng-untouched",TOUCHED_CLASS="ng-touched",PENDING_CLASS="ng-pending";var NgModelController=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function($scope,$exceptionHandler,$attr,$element,$parse,$animate,$timeout,$rootScope,$q,$interpolate){this.$viewValue=Number.NaN;this.$modelValue=Number.NaN;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=true;this.$touched=false;this.$pristine=true;this.$dirty=false;this.$valid=true;this.$invalid=false;this.$error={};this.$$success={};this.$pending=undefined;this.$name=$interpolate($attr.name||"",false)($scope);var parsedNgModel=$parse($attr.ngModel),pendingDebounce=null,ctrl=this;var ngModelGet=function ngModelGet(){var modelValue=parsedNgModel($scope);if(ctrl.$options&&ctrl.$options.getterSetter&&isFunction(modelValue)){modelValue=modelValue()}return modelValue};var ngModelSet=function ngModelSet(newValue){var getterSetter;if(ctrl.$options&&ctrl.$options.getterSetter&&isFunction(getterSetter=parsedNgModel($scope))){getterSetter(ctrl.$modelValue)}else{parsedNgModel.assign($scope,ctrl.$modelValue)}};this.$$setOptions=function(options){ctrl.$options=options;if(!parsedNgModel.assign&&(!options||!options.getterSetter)){throw $ngModelMinErr("nonassign","Expression '{0}' is non-assignable. Element: {1}",$attr.ngModel,startingTag($element))}};this.$render=noop;this.$isEmpty=function(value){return isUndefined(value)||value===""||value===null||value!==value};var parentForm=$element.inheritedData("$formController")||nullFormCtrl,currentValidationRunId=0;addSetValidityMethod({ctrl:this,$element:$element,set:function(object,property){object[property]=true},unset:function(object,property){delete object[property]},parentForm:parentForm,$animate:$animate});this.$setPristine=function(){ctrl.$dirty=false;ctrl.$pristine=true;$animate.removeClass($element,DIRTY_CLASS);$animate.addClass($element,PRISTINE_CLASS)};this.$setUntouched=function(){ctrl.$touched=false;ctrl.$untouched=true;$animate.setClass($element,UNTOUCHED_CLASS,TOUCHED_CLASS)};this.$setTouched=function(){ctrl.$touched=true;ctrl.$untouched=false;$animate.setClass($element,TOUCHED_CLASS,UNTOUCHED_CLASS)};this.$rollbackViewValue=function(){$timeout.cancel(pendingDebounce);ctrl.$viewValue=ctrl.$$lastCommittedViewValue;ctrl.$render()};this.$validate=function(){if(isNumber(ctrl.$modelValue)&&isNaN(ctrl.$modelValue)){return}this.$$parseAndValidate()};this.$$runValidators=function(parseValid,modelValue,viewValue,doneCallback){currentValidationRunId++;var localValidationRunId=currentValidationRunId;if(!processParseErrors(parseValid)){validationDone(false);return}if(!processSyncValidators()){validationDone(false);return}processAsyncValidators();function processParseErrors(parseValid){var errorKey=ctrl.$$parserName||"parse";if(parseValid===undefined){setValidity(errorKey,null)}else{setValidity(errorKey,parseValid);if(!parseValid){forEach(ctrl.$validators,function(v,name){setValidity(name,null)});forEach(ctrl.$asyncValidators,function(v,name){setValidity(name,null)});return false}}return true}function processSyncValidators(){var syncValidatorsValid=true;forEach(ctrl.$validators,function(validator,name){var result=validator(modelValue,viewValue);syncValidatorsValid=syncValidatorsValid&&result;setValidity(name,result)});if(!syncValidatorsValid){forEach(ctrl.$asyncValidators,function(v,name){setValidity(name,null)});return false}return true}function processAsyncValidators(){var validatorPromises=[];var allValid=true;forEach(ctrl.$asyncValidators,function(validator,name){var promise=validator(modelValue,viewValue);if(!isPromiseLike(promise)){throw $ngModelMinErr("$asyncValidators","Expected asynchronous validator to return a promise but got '{0}' instead.",promise)}setValidity(name,undefined);validatorPromises.push(promise.then(function(){setValidity(name,true)},function(error){allValid=false;setValidity(name,false)}))});if(!validatorPromises.length){validationDone(true)}else{$q.all(validatorPromises).then(function(){validationDone(allValid)},noop)}}function setValidity(name,isValid){if(localValidationRunId===currentValidationRunId){ctrl.$setValidity(name,isValid)}}function validationDone(allValid){if(localValidationRunId===currentValidationRunId){doneCallback(allValid)}}};this.$commitViewValue=function(){var viewValue=ctrl.$viewValue;$timeout.cancel(pendingDebounce);if(ctrl.$$lastCommittedViewValue===viewValue&&(viewValue!==""||!ctrl.$$hasNativeValidators)){return}ctrl.$$lastCommittedViewValue=viewValue;if(ctrl.$pristine){ctrl.$dirty=true;ctrl.$pristine=false;$animate.removeClass($element,PRISTINE_CLASS);$animate.addClass($element,DIRTY_CLASS);parentForm.$setDirty()}this.$$parseAndValidate()};this.$$parseAndValidate=function(){var viewValue=ctrl.$$lastCommittedViewValue;var modelValue=viewValue;var parserValid=isUndefined(modelValue)?undefined:true;if(parserValid){for(var i=0;i<ctrl.$parsers.length;i++){modelValue=ctrl.$parsers[i](modelValue);if(isUndefined(modelValue)){parserValid=false;break}}}if(isNumber(ctrl.$modelValue)&&isNaN(ctrl.$modelValue)){ctrl.$modelValue=ngModelGet()}var prevModelValue=ctrl.$modelValue;var allowInvalid=ctrl.$options&&ctrl.$options.allowInvalid;if(allowInvalid){ctrl.$modelValue=modelValue;writeToModelIfNeeded()}ctrl.$$runValidators(parserValid,modelValue,viewValue,function(allValid){if(!allowInvalid){ctrl.$modelValue=allValid?modelValue:undefined;writeToModelIfNeeded()}});function writeToModelIfNeeded(){if(ctrl.$modelValue!==prevModelValue){ctrl.$$writeModelToScope()}}};this.$$writeModelToScope=function(){ngModelSet(ctrl.$modelValue);forEach(ctrl.$viewChangeListeners,function(listener){try{listener()}catch(e){$exceptionHandler(e)}})};this.$setViewValue=function(value,trigger){ctrl.$viewValue=value;if(!ctrl.$options||ctrl.$options.updateOnDefault){ctrl.$$debounceViewValueCommit(trigger)}};this.$$debounceViewValueCommit=function(trigger){var debounceDelay=0,options=ctrl.$options,debounce;if(options&&isDefined(options.debounce)){debounce=options.debounce;if(isNumber(debounce)){debounceDelay=debounce}else if(isNumber(debounce[trigger])){debounceDelay=debounce[trigger]}else if(isNumber(debounce["default"])){debounceDelay=debounce["default"]}}$timeout.cancel(pendingDebounce);if(debounceDelay){pendingDebounce=$timeout(function(){ctrl.$commitViewValue()},debounceDelay)}else if($rootScope.$$phase){ctrl.$commitViewValue()}else{$scope.$apply(function(){ctrl.$commitViewValue()})}};$scope.$watch(function ngModelWatch(){var modelValue=ngModelGet();if(modelValue!==ctrl.$modelValue){ctrl.$modelValue=modelValue;var formatters=ctrl.$formatters,idx=formatters.length;var viewValue=modelValue;while(idx--){viewValue=formatters[idx](viewValue)}if(ctrl.$viewValue!==viewValue){ctrl.$viewValue=ctrl.$$lastCommittedViewValue=viewValue;ctrl.$render();ctrl.$$runValidators(undefined,modelValue,viewValue,noop)}}return modelValue})}];var ngModelDirective=function(){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:NgModelController,priority:1,compile:function ngModelCompile(element){element.addClass(PRISTINE_CLASS).addClass(UNTOUCHED_CLASS).addClass(VALID_CLASS);return{pre:function ngModelPreLink(scope,element,attr,ctrls){var modelCtrl=ctrls[0],formCtrl=ctrls[1]||nullFormCtrl;modelCtrl.$$setOptions(ctrls[2]&&ctrls[2].$options);formCtrl.$addControl(modelCtrl);attr.$observe("name",function(newValue){if(modelCtrl.$name!==newValue){formCtrl.$$renameControl(modelCtrl,newValue)}});scope.$on("$destroy",function(){formCtrl.$removeControl(modelCtrl)})},post:function ngModelPostLink(scope,element,attr,ctrls){var modelCtrl=ctrls[0];if(modelCtrl.$options&&modelCtrl.$options.updateOn){element.on(modelCtrl.$options.updateOn,function(ev){modelCtrl.$$debounceViewValueCommit(ev&&ev.type)})}element.on("blur",function(ev){if(modelCtrl.$touched)return;scope.$apply(function(){modelCtrl.$setTouched()})})}}}}};var ngChangeDirective=valueFn({restrict:"A",require:"ngModel",link:function(scope,element,attr,ctrl){ctrl.$viewChangeListeners.push(function(){scope.$eval(attr.ngChange)})}});var requiredDirective=function(){return{restrict:"A",require:"?ngModel",link:function(scope,elm,attr,ctrl){if(!ctrl)return;attr.required=true;ctrl.$validators.required=function(value){return!attr.required||!ctrl.$isEmpty(value)};attr.$observe("required",function(){ctrl.$validate()})}}};var patternDirective=function(){return{restrict:"A",require:"?ngModel",link:function(scope,elm,attr,ctrl){if(!ctrl)return;var regexp,patternExp=attr.ngPattern||attr.pattern;attr.$observe("pattern",function(regex){if(isString(regex)&&regex.length>0){regex=new RegExp(regex)}if(regex&&!regex.test){throw minErr("ngPattern")("noregexp","Expected {0} to be a RegExp but was {1}. Element: {2}",patternExp,regex,startingTag(elm))}regexp=regex||undefined;ctrl.$validate()});ctrl.$validators.pattern=function(value){return ctrl.$isEmpty(value)||isUndefined(regexp)||regexp.test(value)}}}};var maxlengthDirective=function(){return{restrict:"A",require:"?ngModel",link:function(scope,elm,attr,ctrl){if(!ctrl)return;var maxlength=0;attr.$observe("maxlength",function(value){maxlength=int(value)||0;ctrl.$validate()});ctrl.$validators.maxlength=function(modelValue,viewValue){return ctrl.$isEmpty(modelValue)||viewValue.length<=maxlength}}}};var minlengthDirective=function(){return{restrict:"A",require:"?ngModel",link:function(scope,elm,attr,ctrl){if(!ctrl)return;var minlength=0;attr.$observe("minlength",function(value){minlength=int(value)||0;ctrl.$validate()});ctrl.$validators.minlength=function(modelValue,viewValue){return ctrl.$isEmpty(modelValue)||viewValue.length>=minlength}}}};var ngListDirective=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(scope,element,attr,ctrl){var ngList=element.attr(attr.$attr.ngList)||", ";var trimValues=attr.ngTrim!=="false";var separator=trimValues?trim(ngList):ngList;var parse=function(viewValue){if(isUndefined(viewValue))return;var list=[];if(viewValue){forEach(viewValue.split(separator),function(value){if(value)list.push(trimValues?trim(value):value)})}return list};ctrl.$parsers.push(parse);ctrl.$formatters.push(function(value){if(isArray(value)){return value.join(ngList)}return undefined});ctrl.$isEmpty=function(value){return!value||!value.length}}}};var CONSTANT_VALUE_REGEXP=/^(true|false|\d+)$/;var ngValueDirective=function(){return{restrict:"A",priority:100,compile:function(tpl,tplAttr){if(CONSTANT_VALUE_REGEXP.test(tplAttr.ngValue)){return function ngValueConstantLink(scope,elm,attr){attr.$set("value",scope.$eval(attr.ngValue))}}else{return function ngValueLink(scope,elm,attr){scope.$watch(attr.ngValue,function valueWatchAction(value){attr.$set("value",value)})}}}}};var ngModelOptionsDirective=function(){return{restrict:"A",controller:["$scope","$attrs",function($scope,$attrs){var that=this;this.$options=$scope.$eval($attrs.ngModelOptions);if(this.$options.updateOn!==undefined){this.$options.updateOnDefault=false;this.$options.updateOn=trim(this.$options.updateOn.replace(DEFAULT_REGEXP,function(){that.$options.updateOnDefault=true;return" "}))}else{this.$options.updateOnDefault=true}}]}};function addSetValidityMethod(context){var ctrl=context.ctrl,$element=context.$element,classCache={},set=context.set,unset=context.unset,parentForm=context.parentForm,$animate=context.$animate;classCache[INVALID_CLASS]=!(classCache[VALID_CLASS]=$element.hasClass(VALID_CLASS));ctrl.$setValidity=setValidity;function setValidity(validationErrorKey,state,options){if(state===undefined){createAndSet("$pending",validationErrorKey,options)}else{unsetAndCleanup("$pending",validationErrorKey,options)}if(!isBoolean(state)){unset(ctrl.$error,validationErrorKey,options);unset(ctrl.$$success,validationErrorKey,options)}else{if(state){unset(ctrl.$error,validationErrorKey,options);set(ctrl.$$success,validationErrorKey,options)}else{set(ctrl.$error,validationErrorKey,options);unset(ctrl.$$success,validationErrorKey,options)}}if(ctrl.$pending){cachedToggleClass(PENDING_CLASS,true);ctrl.$valid=ctrl.$invalid=undefined;toggleValidationCss("",null)}else{cachedToggleClass(PENDING_CLASS,false);ctrl.$valid=isObjectEmpty(ctrl.$error);ctrl.$invalid=!ctrl.$valid;toggleValidationCss("",ctrl.$valid)}var combinedState;if(ctrl.$pending&&ctrl.$pending[validationErrorKey]){combinedState=undefined}else if(ctrl.$error[validationErrorKey]){combinedState=false}else if(ctrl.$$success[validationErrorKey]){combinedState=true}else{combinedState=null}toggleValidationCss(validationErrorKey,combinedState);parentForm.$setValidity(validationErrorKey,combinedState,ctrl)}function createAndSet(name,value,options){if(!ctrl[name]){ctrl[name]={}}set(ctrl[name],value,options)}function unsetAndCleanup(name,value,options){if(ctrl[name]){unset(ctrl[name],value,options)}if(isObjectEmpty(ctrl[name])){ctrl[name]=undefined}}function cachedToggleClass(className,switchValue){if(switchValue&&!classCache[className]){$animate.addClass($element,className);classCache[className]=true}else if(!switchValue&&classCache[className]){$animate.removeClass($element,className);classCache[className]=false}}function toggleValidationCss(validationErrorKey,isValid){validationErrorKey=validationErrorKey?"-"+snake_case(validationErrorKey,"-"):"";cachedToggleClass(VALID_CLASS+validationErrorKey,isValid===true);cachedToggleClass(INVALID_CLASS+validationErrorKey,isValid===false)}}function isObjectEmpty(obj){if(obj){for(var prop in obj){return false}}return true}var ngBindDirective=["$compile",function($compile){return{restrict:"AC",compile:function ngBindCompile(templateElement){$compile.$$addBindingClass(templateElement);return function ngBindLink(scope,element,attr){$compile.$$addBindingInfo(element,attr.ngBind);element=element[0];scope.$watch(attr.ngBind,function ngBindWatchAction(value){element.textContent=value===undefined?"":value})}}}}];var ngBindTemplateDirective=["$interpolate","$compile",function($interpolate,$compile){return{compile:function ngBindTemplateCompile(templateElement){$compile.$$addBindingClass(templateElement);return function ngBindTemplateLink(scope,element,attr){var interpolateFn=$interpolate(element.attr(attr.$attr.ngBindTemplate));$compile.$$addBindingInfo(element,interpolateFn.expressions);element=element[0];attr.$observe("ngBindTemplate",function(value){element.textContent=value===undefined?"":value})}}}}];var ngBindHtmlDirective=["$sce","$parse","$compile",function($sce,$parse,$compile){return{restrict:"A",compile:function ngBindHtmlCompile(tElement,tAttrs){var ngBindHtmlGetter=$parse(tAttrs.ngBindHtml);var ngBindHtmlWatch=$parse(tAttrs.ngBindHtml,function getStringValue(value){return(value||"").toString()});$compile.$$addBindingClass(tElement);return function ngBindHtmlLink(scope,element,attr){$compile.$$addBindingInfo(element,attr.ngBindHtml);scope.$watch(ngBindHtmlWatch,function ngBindHtmlWatchAction(){element.html($sce.getTrustedHtml(ngBindHtmlGetter(scope))||"")})}}}}];function classDirective(name,selector){name="ngClass"+name;return["$animate",function($animate){return{restrict:"AC",link:function(scope,element,attr){var oldVal;scope.$watch(attr[name],ngClassWatchAction,true);attr.$observe("class",function(value){ngClassWatchAction(scope.$eval(attr[name]))});if(name!=="ngClass"){scope.$watch("$index",function($index,old$index){var mod=$index&1;if(mod!==(old$index&1)){var classes=arrayClasses(scope.$eval(attr[name]));mod===selector?addClasses(classes):removeClasses(classes)}})}function addClasses(classes){var newClasses=digestClassCounts(classes,1);attr.$addClass(newClasses)}function removeClasses(classes){var newClasses=digestClassCounts(classes,-1);attr.$removeClass(newClasses)}function digestClassCounts(classes,count){var classCounts=element.data("$classCounts")||{};var classesToUpdate=[];forEach(classes,function(className){if(count>0||classCounts[className]){classCounts[className]=(classCounts[className]||0)+count;if(classCounts[className]===+(count>0)){classesToUpdate.push(className)}}});element.data("$classCounts",classCounts);return classesToUpdate.join(" ")}function updateClasses(oldClasses,newClasses){var toAdd=arrayDifference(newClasses,oldClasses);var toRemove=arrayDifference(oldClasses,newClasses);toAdd=digestClassCounts(toAdd,1);toRemove=digestClassCounts(toRemove,-1);if(toAdd&&toAdd.length){$animate.addClass(element,toAdd)}if(toRemove&&toRemove.length){$animate.removeClass(element,toRemove)}}function ngClassWatchAction(newVal){if(selector===true||scope.$index%2===selector){var newClasses=arrayClasses(newVal||[]);if(!oldVal){addClasses(newClasses)}else if(!equals(newVal,oldVal)){var oldClasses=arrayClasses(oldVal);updateClasses(oldClasses,newClasses)}}oldVal=shallowCopy(newVal)}}};function arrayDifference(tokens1,tokens2){var values=[];outer:for(var i=0;i<tokens1.length;i++){var token=tokens1[i];for(var j=0;j<tokens2.length;j++){if(token==tokens2[j])continue outer}values.push(token)}return values}function arrayClasses(classVal){if(isArray(classVal)){return classVal}else if(isString(classVal)){return classVal.split(" ")}else if(isObject(classVal)){var classes=[],i=0;forEach(classVal,function(v,k){if(v){classes=classes.concat(k.split(" "))}});return classes}return classVal}}]}var ngClassDirective=classDirective("",true);var ngClassOddDirective=classDirective("Odd",0);var ngClassEvenDirective=classDirective("Even",1);var ngCloakDirective=ngDirective({compile:function(element,attr){attr.$set("ngCloak",undefined);element.removeClass("ng-cloak")}});var ngControllerDirective=[function(){return{restrict:"A",scope:true,controller:"@",priority:500}}];var ngEventDirectives={};var forceAsyncEvents={blur:true,focus:true};forEach("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(eventName){var directiveName=directiveNormalize("ng-"+eventName);ngEventDirectives[directiveName]=["$parse","$rootScope",function($parse,$rootScope){return{restrict:"A",compile:function($element,attr){var fn=$parse(attr[directiveName]);return function ngEventHandler(scope,element){element.on(eventName,function(event){var callback=function(){fn(scope,{$event:event})};if(forceAsyncEvents[eventName]&&$rootScope.$$phase){scope.$evalAsync(callback)}else{scope.$apply(callback)}})}}}}]});var ngIfDirective=["$animate",function($animate){return{multiElement:true,transclude:"element",priority:600,terminal:true,restrict:"A",$$tlb:true,link:function($scope,$element,$attr,ctrl,$transclude){var block,childScope,previousElements;$scope.$watch($attr.ngIf,function ngIfWatchAction(value){if(value){if(!childScope){$transclude(function(clone,newScope){childScope=newScope;clone[clone.length++]=document.createComment(" end ngIf: "+$attr.ngIf+" ");block={clone:clone};$animate.enter(clone,$element.parent(),$element)})}}else{if(previousElements){previousElements.remove();previousElements=null}if(childScope){childScope.$destroy();childScope=null}if(block){previousElements=getBlockNodes(block.clone);$animate.leave(previousElements).then(function(){previousElements=null});block=null}}})}}}];var ngIncludeDirective=["$templateRequest","$anchorScroll","$animate","$sce",function($templateRequest,$anchorScroll,$animate,$sce){return{restrict:"ECA",priority:400,terminal:true,transclude:"element",controller:angular.noop,compile:function(element,attr){var srcExp=attr.ngInclude||attr.src,onloadExp=attr.onload||"",autoScrollExp=attr.autoscroll;return function(scope,$element,$attr,ctrl,$transclude){var changeCounter=0,currentScope,previousElement,currentElement;var cleanupLastIncludeContent=function(){if(previousElement){previousElement.remove();previousElement=null}if(currentScope){currentScope.$destroy();currentScope=null}if(currentElement){$animate.leave(currentElement).then(function(){previousElement=null});previousElement=currentElement;currentElement=null}};scope.$watch($sce.parseAsResourceUrl(srcExp),function ngIncludeWatchAction(src){var afterAnimation=function(){if(isDefined(autoScrollExp)&&(!autoScrollExp||scope.$eval(autoScrollExp))){$anchorScroll()}};var thisChangeId=++changeCounter;if(src){$templateRequest(src,true).then(function(response){if(thisChangeId!==changeCounter)return;var newScope=scope.$new();ctrl.template=response;var clone=$transclude(newScope,function(clone){cleanupLastIncludeContent();$animate.enter(clone,null,$element).then(afterAnimation)});currentScope=newScope;currentElement=clone;currentScope.$emit("$includeContentLoaded",src);scope.$eval(onloadExp)},function(){if(thisChangeId===changeCounter){cleanupLastIncludeContent();scope.$emit("$includeContentError",src)}});scope.$emit("$includeContentRequested",src)}else{cleanupLastIncludeContent();ctrl.template=null}})}}}}];var ngIncludeFillContentDirective=["$compile",function($compile){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(scope,$element,$attr,ctrl){if(/SVG/.test($element[0].toString())){$element.empty();$compile(jqLiteBuildFragment(ctrl.template,document).childNodes)(scope,function namespaceAdaptedClone(clone){$element.append(clone)},undefined,undefined,$element);return}$element.html(ctrl.template);$compile($element.contents())(scope)}}}];var ngInitDirective=ngDirective({priority:450,compile:function(){return{pre:function(scope,element,attrs){scope.$eval(attrs.ngInit)}}}});var ngNonBindableDirective=ngDirective({terminal:true,priority:1e3});var ngPluralizeDirective=["$locale","$interpolate",function($locale,$interpolate){var BRACE=/{}/g;return{restrict:"EA",link:function(scope,element,attr){var numberExp=attr.count,whenExp=attr.$attr.when&&element.attr(attr.$attr.when),offset=attr.offset||0,whens=scope.$eval(whenExp)||{},whensExpFns={},startSymbol=$interpolate.startSymbol(),endSymbol=$interpolate.endSymbol(),isWhen=/^when(Minus)?(.+)$/;forEach(attr,function(expression,attributeName){if(isWhen.test(attributeName)){whens[lowercase(attributeName.replace("when","").replace("Minus","-"))]=element.attr(attr.$attr[attributeName])}});forEach(whens,function(expression,key){whensExpFns[key]=$interpolate(expression.replace(BRACE,startSymbol+numberExp+"-"+offset+endSymbol))});scope.$watch(function ngPluralizeWatch(){var value=parseFloat(scope.$eval(numberExp));if(!isNaN(value)){if(!(value in whens))value=$locale.pluralCat(value-offset);return whensExpFns[value](scope)}else{return""}},function ngPluralizeWatchAction(newVal){element.text(newVal)})}}}];var ngRepeatDirective=["$parse","$animate",function($parse,$animate){var NG_REMOVED="$$NG_REMOVED";var ngRepeatMinErr=minErr("ngRepeat");var updateScope=function(scope,index,valueIdentifier,value,keyIdentifier,key,arrayLength){scope[valueIdentifier]=value;if(keyIdentifier)scope[keyIdentifier]=key;scope.$index=index;scope.$first=index===0;scope.$last=index===arrayLength-1;scope.$middle=!(scope.$first||scope.$last);scope.$odd=!(scope.$even=(index&1)===0)};var getBlockStart=function(block){return block.clone[0]};var getBlockEnd=function(block){return block.clone[block.clone.length-1]};return{restrict:"A",multiElement:true,transclude:"element",priority:1e3,terminal:true,$$tlb:true,compile:function ngRepeatCompile($element,$attr){var expression=$attr.ngRepeat;var ngRepeatEndComment=document.createComment(" end ngRepeat: "+expression+" ");var match=expression.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!match){throw ngRepeatMinErr("iexp","Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",expression)}var lhs=match[1];var rhs=match[2];var aliasAs=match[3];var trackByExp=match[4];match=lhs.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/);if(!match){throw ngRepeatMinErr("iidexp","'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",lhs)}var valueIdentifier=match[3]||match[1];var keyIdentifier=match[2];if(aliasAs&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(aliasAs)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent)$/.test(aliasAs))){throw ngRepeatMinErr("badident","alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",aliasAs)}var trackByExpGetter,trackByIdExpFn,trackByIdArrayFn,trackByIdObjFn;var hashFnLocals={$id:hashKey};if(trackByExp){trackByExpGetter=$parse(trackByExp)}else{trackByIdArrayFn=function(key,value){return hashKey(value)};trackByIdObjFn=function(key){return key}}return function ngRepeatLink($scope,$element,$attr,ctrl,$transclude){if(trackByExpGetter){trackByIdExpFn=function(key,value,index){if(keyIdentifier)hashFnLocals[keyIdentifier]=key;hashFnLocals[valueIdentifier]=value;hashFnLocals.$index=index;return trackByExpGetter($scope,hashFnLocals)}}var lastBlockMap=createMap();$scope.$watchCollection(rhs,function ngRepeatAction(collection){var index,length,previousNode=$element[0],nextNode,nextBlockMap=createMap(),collectionLength,key,value,trackById,trackByIdFn,collectionKeys,block,nextBlockOrder,elementsToRemove;if(aliasAs){$scope[aliasAs]=collection}if(isArrayLike(collection)){collectionKeys=collection;trackByIdFn=trackByIdExpFn||trackByIdArrayFn}else{trackByIdFn=trackByIdExpFn||trackByIdObjFn;collectionKeys=[];for(var itemKey in collection){if(collection.hasOwnProperty(itemKey)&&itemKey.charAt(0)!="$"){collectionKeys.push(itemKey)}}collectionKeys.sort()}collectionLength=collectionKeys.length;nextBlockOrder=new Array(collectionLength);for(index=0;index<collectionLength;index++){key=collection===collectionKeys?index:collectionKeys[index];value=collection[key];trackById=trackByIdFn(key,value,index);if(lastBlockMap[trackById]){block=lastBlockMap[trackById];delete lastBlockMap[trackById];nextBlockMap[trackById]=block;nextBlockOrder[index]=block}else if(nextBlockMap[trackById]){forEach(nextBlockOrder,function(block){if(block&&block.scope)lastBlockMap[block.id]=block});throw ngRepeatMinErr("dupes","Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}",expression,trackById,toJson(value))}else{nextBlockOrder[index]={id:trackById,scope:undefined,clone:undefined};nextBlockMap[trackById]=true}}for(var blockKey in lastBlockMap){block=lastBlockMap[blockKey];elementsToRemove=getBlockNodes(block.clone);$animate.leave(elementsToRemove);if(elementsToRemove[0].parentNode){for(index=0,length=elementsToRemove.length;index<length;index++){elementsToRemove[index][NG_REMOVED]=true}}block.scope.$destroy()}for(index=0;index<collectionLength;index++){key=collection===collectionKeys?index:collectionKeys[index];value=collection[key];block=nextBlockOrder[index];if(block.scope){nextNode=previousNode;do{nextNode=nextNode.nextSibling}while(nextNode&&nextNode[NG_REMOVED]);
if(getBlockStart(block)!=nextNode){$animate.move(getBlockNodes(block.clone),null,jqLite(previousNode))}previousNode=getBlockEnd(block);updateScope(block.scope,index,valueIdentifier,value,keyIdentifier,key,collectionLength)}else{$transclude(function ngRepeatTransclude(clone,scope){block.scope=scope;var endNode=ngRepeatEndComment.cloneNode(false);clone[clone.length++]=endNode;$animate.enter(clone,null,jqLite(previousNode));previousNode=endNode;block.clone=clone;nextBlockMap[block.id]=block;updateScope(block.scope,index,valueIdentifier,value,keyIdentifier,key,collectionLength)})}}lastBlockMap=nextBlockMap})}}}}];var NG_HIDE_CLASS="ng-hide";var NG_HIDE_IN_PROGRESS_CLASS="ng-hide-animate";var ngShowDirective=["$animate",function($animate){return{restrict:"A",multiElement:true,link:function(scope,element,attr){scope.$watch(attr.ngShow,function ngShowWatchAction(value){$animate[value?"removeClass":"addClass"](element,NG_HIDE_CLASS,{tempClasses:NG_HIDE_IN_PROGRESS_CLASS})})}}}];var ngHideDirective=["$animate",function($animate){return{restrict:"A",multiElement:true,link:function(scope,element,attr){scope.$watch(attr.ngHide,function ngHideWatchAction(value){$animate[value?"addClass":"removeClass"](element,NG_HIDE_CLASS,{tempClasses:NG_HIDE_IN_PROGRESS_CLASS})})}}}];var ngStyleDirective=ngDirective(function(scope,element,attr){scope.$watch(attr.ngStyle,function ngStyleWatchAction(newStyles,oldStyles){if(oldStyles&&newStyles!==oldStyles){forEach(oldStyles,function(val,style){element.css(style,"")})}if(newStyles)element.css(newStyles)},true)});var ngSwitchDirective=["$animate",function($animate){return{restrict:"EA",require:"ngSwitch",controller:["$scope",function ngSwitchController(){this.cases={}}],link:function(scope,element,attr,ngSwitchController){var watchExpr=attr.ngSwitch||attr.on,selectedTranscludes=[],selectedElements=[],previousLeaveAnimations=[],selectedScopes=[];var spliceFactory=function(array,index){return function(){array.splice(index,1)}};scope.$watch(watchExpr,function ngSwitchWatchAction(value){var i,ii;for(i=0,ii=previousLeaveAnimations.length;i<ii;++i){$animate.cancel(previousLeaveAnimations[i])}previousLeaveAnimations.length=0;for(i=0,ii=selectedScopes.length;i<ii;++i){var selected=getBlockNodes(selectedElements[i].clone);selectedScopes[i].$destroy();var promise=previousLeaveAnimations[i]=$animate.leave(selected);promise.then(spliceFactory(previousLeaveAnimations,i))}selectedElements.length=0;selectedScopes.length=0;if(selectedTranscludes=ngSwitchController.cases["!"+value]||ngSwitchController.cases["?"]){forEach(selectedTranscludes,function(selectedTransclude){selectedTransclude.transclude(function(caseElement,selectedScope){selectedScopes.push(selectedScope);var anchor=selectedTransclude.element;caseElement[caseElement.length++]=document.createComment(" end ngSwitchWhen: ");var block={clone:caseElement};selectedElements.push(block);$animate.enter(caseElement,anchor.parent(),anchor)})})}})}}}];var ngSwitchWhenDirective=ngDirective({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:true,link:function(scope,element,attrs,ctrl,$transclude){ctrl.cases["!"+attrs.ngSwitchWhen]=ctrl.cases["!"+attrs.ngSwitchWhen]||[];ctrl.cases["!"+attrs.ngSwitchWhen].push({transclude:$transclude,element:element})}});var ngSwitchDefaultDirective=ngDirective({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:true,link:function(scope,element,attr,ctrl,$transclude){ctrl.cases["?"]=ctrl.cases["?"]||[];ctrl.cases["?"].push({transclude:$transclude,element:element})}});var ngTranscludeDirective=ngDirective({restrict:"EAC",link:function($scope,$element,$attrs,controller,$transclude){if(!$transclude){throw minErr("ngTransclude")("orphan","Illegal use of ngTransclude directive in the template! "+"No parent directive that requires a transclusion found. "+"Element: {0}",startingTag($element))}$transclude(function(clone){$element.empty();$element.append(clone)})}});var scriptDirective=["$templateCache",function($templateCache){return{restrict:"E",terminal:true,compile:function(element,attr){if(attr.type=="text/ng-template"){var templateUrl=attr.id,text=element[0].text;$templateCache.put(templateUrl,text)}}}}];var ngOptionsMinErr=minErr("ngOptions");var ngOptionsDirective=valueFn({restrict:"A",terminal:true});var selectDirective=["$compile","$parse",function($compile,$parse){var NG_OPTIONS_REGEXP=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,nullModelCtrl={$setViewValue:noop};return{restrict:"E",require:["select","?ngModel"],controller:["$element","$scope","$attrs",function($element,$scope,$attrs){var self=this,optionsMap={},ngModelCtrl=nullModelCtrl,nullOption,unknownOption;self.databound=$attrs.ngModel;self.init=function(ngModelCtrl_,nullOption_,unknownOption_){ngModelCtrl=ngModelCtrl_;nullOption=nullOption_;unknownOption=unknownOption_};self.addOption=function(value,element){assertNotHasOwnProperty(value,'"option value"');optionsMap[value]=true;if(ngModelCtrl.$viewValue==value){$element.val(value);if(unknownOption.parent())unknownOption.remove()}if(element&&element[0].hasAttribute("selected")){element[0].selected=true}};self.removeOption=function(value){if(this.hasOption(value)){delete optionsMap[value];if(ngModelCtrl.$viewValue==value){this.renderUnknownOption(value)}}};self.renderUnknownOption=function(val){var unknownVal="? "+hashKey(val)+" ?";unknownOption.val(unknownVal);$element.prepend(unknownOption);$element.val(unknownVal);unknownOption.prop("selected",true)};self.hasOption=function(value){return optionsMap.hasOwnProperty(value)};$scope.$on("$destroy",function(){self.renderUnknownOption=noop})}],link:function(scope,element,attr,ctrls){if(!ctrls[1])return;var selectCtrl=ctrls[0],ngModelCtrl=ctrls[1],multiple=attr.multiple,optionsExp=attr.ngOptions,nullOption=false,emptyOption,renderScheduled=false,optionTemplate=jqLite(document.createElement("option")),optGroupTemplate=jqLite(document.createElement("optgroup")),unknownOption=optionTemplate.clone();for(var i=0,children=element.children(),ii=children.length;i<ii;i++){if(children[i].value===""){emptyOption=nullOption=children.eq(i);break}}selectCtrl.init(ngModelCtrl,nullOption,unknownOption);if(multiple){ngModelCtrl.$isEmpty=function(value){return!value||value.length===0}}if(optionsExp)setupAsOptions(scope,element,ngModelCtrl);else if(multiple)setupAsMultiple(scope,element,ngModelCtrl);else setupAsSingle(scope,element,ngModelCtrl,selectCtrl);function setupAsSingle(scope,selectElement,ngModelCtrl,selectCtrl){ngModelCtrl.$render=function(){var viewValue=ngModelCtrl.$viewValue;if(selectCtrl.hasOption(viewValue)){if(unknownOption.parent())unknownOption.remove();selectElement.val(viewValue);if(viewValue==="")emptyOption.prop("selected",true)}else{if(isUndefined(viewValue)&&emptyOption){selectElement.val("")}else{selectCtrl.renderUnknownOption(viewValue)}}};selectElement.on("change",function(){scope.$apply(function(){if(unknownOption.parent())unknownOption.remove();ngModelCtrl.$setViewValue(selectElement.val())})})}function setupAsMultiple(scope,selectElement,ctrl){var lastView;ctrl.$render=function(){var items=new HashMap(ctrl.$viewValue);forEach(selectElement.find("option"),function(option){option.selected=isDefined(items.get(option.value))})};scope.$watch(function selectMultipleWatch(){if(!equals(lastView,ctrl.$viewValue)){lastView=shallowCopy(ctrl.$viewValue);ctrl.$render()}});selectElement.on("change",function(){scope.$apply(function(){var array=[];forEach(selectElement.find("option"),function(option){if(option.selected){array.push(option.value)}});ctrl.$setViewValue(array)})})}function setupAsOptions(scope,selectElement,ctrl){var match;if(!(match=optionsExp.match(NG_OPTIONS_REGEXP))){throw ngOptionsMinErr("iexp","Expected expression in form of "+"'_select_ (as _label_)? for (_key_,)?_value_ in _collection_'"+" but got '{0}'. Element: {1}",optionsExp,startingTag(selectElement))}var displayFn=$parse(match[2]||match[1]),valueName=match[4]||match[6],selectAs=/ as /.test(match[0])&&match[1],selectAsFn=selectAs?$parse(selectAs):null,keyName=match[5],groupByFn=$parse(match[3]||""),valueFn=$parse(match[2]?match[1]:valueName),valuesFn=$parse(match[7]),track=match[8],trackFn=track?$parse(match[8]):null,optionGroupsCache=[[{element:selectElement,label:""}]],locals={};if(nullOption){$compile(nullOption)(scope);nullOption.removeClass("ng-scope");nullOption.remove()}selectElement.empty();selectElement.on("change",selectionChanged);ctrl.$render=render;scope.$watchCollection(valuesFn,scheduleRendering);scope.$watchCollection(getLabels,scheduleRendering);if(multiple){scope.$watchCollection(function(){return ctrl.$modelValue},scheduleRendering)}function callExpression(exprFn,key,value){locals[valueName]=value;if(keyName)locals[keyName]=key;return exprFn(scope,locals)}function selectionChanged(){scope.$apply(function(){var optionGroup,collection=valuesFn(scope)||[],key,value,optionElement,index,groupIndex,length,groupLength,trackIndex;var viewValue;if(multiple){viewValue=[];forEach(selectElement.val(),function(selectedKey){viewValue.push(getViewValue(selectedKey,collection[selectedKey]))})}else{var selectedKey=selectElement.val();viewValue=getViewValue(selectedKey,collection[selectedKey])}ctrl.$setViewValue(viewValue);render()})}function getViewValue(key,value){if(key==="?"){return undefined}else if(key===""){return null}else{var viewValueFn=selectAsFn?selectAsFn:valueFn;return callExpression(viewValueFn,key,value)}}function getLabels(){var values=valuesFn(scope);var toDisplay;if(values&&isArray(values)){toDisplay=new Array(values.length);for(var i=0,ii=values.length;i<ii;i++){toDisplay[i]=callExpression(displayFn,i,values[i])}return toDisplay}else if(values){toDisplay={};for(var prop in values){if(values.hasOwnProperty(prop)){toDisplay[prop]=callExpression(displayFn,prop,values[prop])}}}return toDisplay}function createIsSelectedFn(viewValue){var selectedSet;if(multiple){if(trackFn&&isArray(viewValue)){selectedSet=new HashMap([]);for(var trackIndex=0;trackIndex<viewValue.length;trackIndex++){selectedSet.put(callExpression(trackFn,null,viewValue[trackIndex]),true)}}else{selectedSet=new HashMap(viewValue)}}else if(trackFn){viewValue=callExpression(trackFn,null,viewValue)}return function isSelected(key,value){var compareValueFn;if(trackFn){compareValueFn=trackFn}else if(selectAsFn){compareValueFn=selectAsFn}else{compareValueFn=valueFn}if(multiple){return isDefined(selectedSet.remove(callExpression(compareValueFn,key,value)))}else{return viewValue==callExpression(compareValueFn,key,value)}}}function scheduleRendering(){if(!renderScheduled){scope.$$postDigest(render);renderScheduled=true}}function updateLabelMap(labelMap,label,added){labelMap[label]=labelMap[label]||0;labelMap[label]+=added?1:-1}function render(){renderScheduled=false;var optionGroups={"":[]},optionGroupNames=[""],optionGroupName,optionGroup,option,existingParent,existingOptions,existingOption,viewValue=ctrl.$viewValue,values=valuesFn(scope)||[],keys=keyName?sortedKeys(values):values,key,value,groupLength,length,groupIndex,index,labelMap={},selected,isSelected=createIsSelectedFn(viewValue),anySelected=false,lastElement,element,label;for(index=0;length=keys.length,index<length;index++){key=index;if(keyName){key=keys[index];if(key.charAt(0)==="$")continue}value=values[key];optionGroupName=callExpression(groupByFn,key,value)||"";if(!(optionGroup=optionGroups[optionGroupName])){optionGroup=optionGroups[optionGroupName]=[];optionGroupNames.push(optionGroupName)}selected=isSelected(key,value);anySelected=anySelected||selected;label=callExpression(displayFn,key,value);label=isDefined(label)?label:"";optionGroup.push({id:keyName?keys[index]:index,label:label,selected:selected})}if(!multiple){if(nullOption||viewValue===null){optionGroups[""].unshift({id:"",label:"",selected:!anySelected})}else if(!anySelected){optionGroups[""].unshift({id:"?",label:"",selected:true})}}for(groupIndex=0,groupLength=optionGroupNames.length;groupIndex<groupLength;groupIndex++){optionGroupName=optionGroupNames[groupIndex];optionGroup=optionGroups[optionGroupName];if(optionGroupsCache.length<=groupIndex){existingParent={element:optGroupTemplate.clone().attr("label",optionGroupName),label:optionGroup.label};existingOptions=[existingParent];optionGroupsCache.push(existingOptions);selectElement.append(existingParent.element)}else{existingOptions=optionGroupsCache[groupIndex];existingParent=existingOptions[0];if(existingParent.label!=optionGroupName){existingParent.element.attr("label",existingParent.label=optionGroupName)}}lastElement=null;for(index=0,length=optionGroup.length;index<length;index++){option=optionGroup[index];if(existingOption=existingOptions[index+1]){lastElement=existingOption.element;if(existingOption.label!==option.label){updateLabelMap(labelMap,existingOption.label,false);updateLabelMap(labelMap,option.label,true);lastElement.text(existingOption.label=option.label)}if(existingOption.id!==option.id){lastElement.val(existingOption.id=option.id)}if(lastElement[0].selected!==option.selected){lastElement.prop("selected",existingOption.selected=option.selected);if(msie){lastElement.prop("selected",existingOption.selected)}}}else{if(option.id===""&&nullOption){element=nullOption}else{(element=optionTemplate.clone()).val(option.id).prop("selected",option.selected).attr("selected",option.selected).text(option.label)}existingOptions.push(existingOption={element:element,label:option.label,id:option.id,selected:option.selected});updateLabelMap(labelMap,option.label,true);if(lastElement){lastElement.after(element)}else{existingParent.element.append(element)}lastElement=element}}index++;while(existingOptions.length>index){option=existingOptions.pop();updateLabelMap(labelMap,option.label,false);option.element.remove()}forEach(labelMap,function(count,label){if(count>0){selectCtrl.addOption(label)}else if(count<0){selectCtrl.removeOption(label)}})}while(optionGroupsCache.length>groupIndex){optionGroupsCache.pop()[0].element.remove()}}}}}}];var optionDirective=["$interpolate",function($interpolate){var nullSelectCtrl={addOption:noop,removeOption:noop};return{restrict:"E",priority:100,compile:function(element,attr){if(isUndefined(attr.value)){var interpolateFn=$interpolate(element.text(),true);if(!interpolateFn){attr.$set("value",element.text())}}return function(scope,element,attr){var selectCtrlName="$selectController",parent=element.parent(),selectCtrl=parent.data(selectCtrlName)||parent.parent().data(selectCtrlName);if(!selectCtrl||!selectCtrl.databound){selectCtrl=nullSelectCtrl}if(interpolateFn){scope.$watch(interpolateFn,function interpolateWatchAction(newVal,oldVal){attr.$set("value",newVal);if(oldVal!==newVal){selectCtrl.removeOption(oldVal)}selectCtrl.addOption(newVal,element)})}else{selectCtrl.addOption(attr.value,element)}element.on("$destroy",function(){selectCtrl.removeOption(attr.value)})}}}}];var styleDirective=valueFn({restrict:"E",terminal:false});if(window.angular.bootstrap){console.log("WARNING: Tried to load angular more than once.");return}bindJQuery();publishExternalAPI(angular);jqLite(document).ready(function(){angularInit(document,bootstrap)})})(window,document);!window.angular.$$csp()&&window.angular.element(document).find("head").prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}</style>')},{}]},{},[]);var angular=require("angular");
{
"name": "requirebin-sketch",
"version": "1.0.0",
"dependencies": {
"angular": "1.3.0"
}
}
<style type='text/css'>html, body { margin: 0; padding: 0; border: 0; }
body, html { height: 100%; width: 100%; }</style>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment