From 509b37eb91e440abad89f5a002b50a30c3926bc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Wed, 10 Feb 2016 10:15:11 +0100 Subject: [PATCH] dependency(): upgraded angularjs to 1.5.1 --- bower.json | 8 +- public/vendor/angular-mocks/.bower.json | 13 +- public/vendor/angular-mocks/angular-mocks.js | 144 +- public/vendor/angular-mocks/bower.json | 5 +- public/vendor/angular-mocks/package.json | 2 +- public/vendor/angular-route/.bower.json | 13 +- public/vendor/angular-route/angular-route.js | 52 +- .../vendor/angular-route/angular-route.min.js | 18 +- .../angular-route/angular-route.min.js.map | 4 +- public/vendor/angular-route/bower.json | 5 +- public/vendor/angular-route/package.json | 2 +- public/vendor/angular-sanitize/.bower.json | 13 +- .../angular-sanitize/angular-sanitize.js | 13 +- .../angular-sanitize/angular-sanitize.min.js | 22 +- .../angular-sanitize.min.js.map | 4 +- public/vendor/angular-sanitize/bower.json | 5 +- public/vendor/angular-sanitize/package.json | 2 +- public/vendor/angular/.bower.json | 11 +- public/vendor/angular/angular.js | 1586 +++++++++---- public/vendor/angular/angular.min.js | 603 ++--- public/vendor/angular/angular.min.js.gzip | Bin 53949 -> 54457 bytes public/vendor/angular/angular.min.js.map | 6 +- public/vendor/angular/bower.json | 3 +- public/vendor/angular/package.json | 2 +- public/vendor/requirejs-text/.bower.json | 16 - public/vendor/requirejs-text/LICENSE | 58 - public/vendor/requirejs-text/README.md | 198 -- public/vendor/requirejs-text/bower.json | 5 - public/vendor/requirejs-text/package.json | 30 - public/vendor/requirejs-text/text.js | 391 --- public/vendor/requirejs/.bower.json | 27 - public/vendor/requirejs/README.md | 4 - public/vendor/requirejs/bower.json | 18 - public/vendor/requirejs/require.js | 2103 ----------------- 34 files changed, 1650 insertions(+), 3736 deletions(-) delete mode 100644 public/vendor/requirejs-text/.bower.json delete mode 100644 public/vendor/requirejs-text/LICENSE delete mode 100644 public/vendor/requirejs-text/README.md delete mode 100644 public/vendor/requirejs-text/bower.json delete mode 100644 public/vendor/requirejs-text/package.json delete mode 100644 public/vendor/requirejs-text/text.js delete mode 100644 public/vendor/requirejs/.bower.json delete mode 100644 public/vendor/requirejs/README.md delete mode 100644 public/vendor/requirejs/bower.json delete mode 100644 public/vendor/requirejs/require.js diff --git a/bower.json b/bower.json index 2e45c456274..9e0b307c80c 100644 --- a/bower.json +++ b/bower.json @@ -14,10 +14,10 @@ ], "dependencies": { "jquery": "~2.1.4", - "angular": "~1.5.0", - "angular-route": "~1.5.0", - "angular-mocks": "~1.5.0", - "angular-sanitize": "~1.5.0", + "angular": "~1.5.1", + "angular-route": "~1.5.1", + "angular-mocks": "~1.5.1", + "angular-sanitize": "~1.5.1", "angular-bindonce": "~0.3.3" } } diff --git a/public/vendor/angular-mocks/.bower.json b/public/vendor/angular-mocks/.bower.json index d7796dd7ec5..9831478983e 100644 --- a/public/vendor/angular-mocks/.bower.json +++ b/public/vendor/angular-mocks/.bower.json @@ -1,19 +1,20 @@ { "name": "angular-mocks", - "version": "1.5.0-rc.0", + "version": "1.5.1-build.4601+sha.c966876", + "license": "MIT", "main": "./angular-mocks.js", "ignore": [], "dependencies": { - "angular": "1.5.0-rc.0" + "angular": "1.5.1-build.4601+sha.c966876" }, "homepage": "https://github.com/angular/bower-angular-mocks", - "_release": "1.5.0-rc.0", + "_release": "1.5.1-build.4601+sha.c966876", "_resolution": { "type": "version", - "tag": "v1.5.0-rc.0", - "commit": "aaa4993ea1fa4aac97953d65bcaeb5f6eda6f113" + "tag": "v1.5.1-build.4601+sha.c966876", + "commit": "ff7c5c2ac686293829786d26d844391e45c37c11" }, "_source": "git://github.com/angular/bower-angular-mocks.git", - "_target": "~1.5.0", + "_target": "~1.5.1", "_originalSource": "angular-mocks" } \ No newline at end of file diff --git a/public/vendor/angular-mocks/angular-mocks.js b/public/vendor/angular-mocks/angular-mocks.js index 481fb2050c1..ff28e1a7892 100644 --- a/public/vendor/angular-mocks/angular-mocks.js +++ b/public/vendor/angular-mocks/angular-mocks.js @@ -1,6 +1,6 @@ /** - * @license AngularJS v1.5.0-rc.0 - * (c) 2010-2015 Google, Inc. http://angularjs.org + * @license AngularJS v1.5.1-build.4601+sha.c966876 + * (c) 2010-2016 Google, Inc. http://angularjs.org * License: MIT */ (function(window, angular, undefined) { @@ -758,6 +758,15 @@ angular.mock.TzDate = function(offset, timestamp) { angular.mock.TzDate.prototype = Date.prototype; /* jshint +W101 */ + +/** + * @ngdoc service + * @name $animate + * + * @description + * Mock implementation of the {@link ng.$animate `$animate`} service. Exposes two additional methods + * for testing animations. + */ angular.mock.animate = angular.module('ngAnimateMock', ['ng']) .config(['$provide', function($provide) { @@ -790,9 +799,50 @@ angular.mock.animate = angular.module('ngAnimateMock', ['ng']) return queueFn; }); - $provide.decorator('$animate', ['$delegate', '$timeout', '$browser', '$$rAF', + $provide.decorator('$$animateJs', ['$delegate', function($delegate) { + var runners = []; + + var animateJsConstructor = function() { + var animator = $delegate.apply($delegate, arguments); + // If no javascript animation is found, animator is undefined + if (animator) { + runners.push(animator); + } + return animator; + }; + + animateJsConstructor.$closeAndFlush = function() { + runners.forEach(function(runner) { + runner.end(); + }); + runners = []; + }; + + return animateJsConstructor; + }]); + + $provide.decorator('$animateCss', ['$delegate', function($delegate) { + var runners = []; + + var animateCssConstructor = function(element, options) { + var animator = $delegate(element, options); + runners.push(animator); + return animator; + }; + + animateCssConstructor.$closeAndFlush = function() { + runners.forEach(function(runner) { + runner.end(); + }); + runners = []; + }; + + return animateCssConstructor; + }]); + + $provide.decorator('$animate', ['$delegate', '$timeout', '$browser', '$$rAF', '$animateCss', '$$animateJs', '$$forceReflow', '$$animateAsyncRun', '$rootScope', - function($delegate, $timeout, $browser, $$rAF, + function($delegate, $timeout, $browser, $$rAF, $animateCss, $$animateJs, $$forceReflow, $$animateAsyncRun, $rootScope) { var animate = { queue: [], @@ -804,7 +854,35 @@ angular.mock.animate = angular.module('ngAnimateMock', ['ng']) return $$forceReflow.totalReflows; }, enabled: $delegate.enabled, - flush: function() { + /** + * @ngdoc method + * @name $animate#closeAndFlush + * @description + * + * This method will close all pending animations (both {@link ngAnimate#javascript-based-animations Javascript} + * and {@link ngAnimate.$animateCss CSS}) and it will also flush any remaining animation frames and/or callbacks. + */ + closeAndFlush: function() { + // we allow the flush command to swallow the errors + // because depending on whether CSS or JS animations are + // used, there may not be a RAF flush. The primary flush + // at the end of this function must throw an exception + // because it will track if there were pending animations + this.flush(true); + $animateCss.$closeAndFlush(); + $$animateJs.$closeAndFlush(); + this.flush(); + }, + /** + * @ngdoc method + * @name $animate#flush + * @description + * + * This method is used to flush the pending callbacks and animation frames to either start + * an animation or conclude an animation. Note that this will not actually close an + * actively running animation (see {@link ngMock.$animate#closeAndFlush `closeAndFlush()`} for that). + */ + flush: function(hideErrors) { $rootScope.$digest(); var doNextRun, somethingFlushed = false; @@ -821,7 +899,7 @@ angular.mock.animate = angular.module('ngAnimateMock', ['ng']) } } while (doNextRun); - if (!somethingFlushed) { + if (!somethingFlushed && !hideErrors) { throw new Error('No pending animations ready to be closed or flushed'); } @@ -1030,18 +1108,18 @@ angular.mock.dump = function(object) { function MyController($scope, $http) { var authToken; - $http.get('/auth.py').success(function(data, status, headers) { - authToken = headers('A-Token'); - $scope.user = data; + $http.get('/auth.py').then(function(response) { + authToken = response.headers('A-Token'); + $scope.user = response.data; }); $scope.saveMessage = function(message) { var headers = { 'Authorization': authToken }; $scope.status = 'Saving...'; - $http.post('/add-msg.py', message, { headers: headers } ).success(function(response) { + $http.post('/add-msg.py', message, { headers: headers } ).then(function(response) { $scope.status = ''; - }).error(function() { + }).catch(function() { $scope.status = 'Failed...'; }); }; @@ -2093,6 +2171,47 @@ angular.mock.$ControllerDecorator = ['$delegate', function($delegate) { }; }]; +/** + * @ngdoc service + * @name $componentController + * @description + * A service that can be used to create instances of component controllers. + *
+ * Be aware that the controller will be instantiated and attached to the scope as specified in + * the component definition object. That means that you must always provide a `$scope` object + * in the `locals` param. + *
+ * @param {string} componentName the name of the component whose controller we want to instantiate + * @param {Object} locals Injection locals for Controller. + * @param {Object=} bindings Properties to add to the controller before invoking the constructor. This is used + * to simulate the `bindToController` feature and simplify certain kinds of tests. + * @param {string=} ident Override the property name to use when attaching the controller to the scope. + * @return {Object} Instance of requested controller. + */ +angular.mock.$ComponentControllerProvider = ['$compileProvider', function($compileProvider) { + this.$get = ['$controller','$injector', function($controller,$injector) { + return function $componentController(componentName, locals, bindings, ident) { + // get all directives associated to the component name + var directives = $injector.get(componentName + 'Directive'); + // look for those directives that are components + var candidateDirectives = directives.filter(function(directiveInfo) { + // components have controller, controllerAs and restrict:'E' + return directiveInfo.controller && directiveInfo.controllerAs && directiveInfo.restrict === 'E'; + }); + // check if valid directives found + if (candidateDirectives.length === 0) { + throw new Error('No component found'); + } + if (candidateDirectives.length > 1) { + throw new Error('Too many components found'); + } + // get the info of the component + var directiveInfo = candidateDirectives[0]; + return $controller(directiveInfo.controller, locals, bindings, ident || directiveInfo.controllerAs); + }; + }]; +}]; + /** * @ngdoc module @@ -2116,7 +2235,8 @@ angular.module('ngMock', ['ng']).provider({ $log: angular.mock.$LogProvider, $interval: angular.mock.$IntervalProvider, $httpBackend: angular.mock.$HttpBackendProvider, - $rootElement: angular.mock.$RootElementProvider + $rootElement: angular.mock.$RootElementProvider, + $componentController: angular.mock.$ComponentControllerProvider }).config(['$provide', function($provide) { $provide.decorator('$timeout', angular.mock.$TimeoutDecorator); $provide.decorator('$$rAF', angular.mock.$RAFDecorator); diff --git a/public/vendor/angular-mocks/bower.json b/public/vendor/angular-mocks/bower.json index 368fcd264ad..ac8b75413db 100644 --- a/public/vendor/angular-mocks/bower.json +++ b/public/vendor/angular-mocks/bower.json @@ -1,9 +1,10 @@ { "name": "angular-mocks", - "version": "1.5.0-rc.0", + "version": "1.5.1-build.4601+sha.c966876", + "license": "MIT", "main": "./angular-mocks.js", "ignore": [], "dependencies": { - "angular": "1.5.0-rc.0" + "angular": "1.5.1-build.4601+sha.c966876" } } diff --git a/public/vendor/angular-mocks/package.json b/public/vendor/angular-mocks/package.json index 8f9901d874f..eda7287688f 100644 --- a/public/vendor/angular-mocks/package.json +++ b/public/vendor/angular-mocks/package.json @@ -1,6 +1,6 @@ { "name": "angular-mocks", - "version": "1.5.0-rc.0", + "version": "1.5.1-build.4601+sha.c966876", "description": "AngularJS mocks for testing", "main": "angular-mocks.js", "scripts": { diff --git a/public/vendor/angular-route/.bower.json b/public/vendor/angular-route/.bower.json index e9cb3ee0535..43ecb04633b 100644 --- a/public/vendor/angular-route/.bower.json +++ b/public/vendor/angular-route/.bower.json @@ -1,19 +1,20 @@ { "name": "angular-route", - "version": "1.5.0-rc.0", + "version": "1.5.1-build.4601+sha.c966876", + "license": "MIT", "main": "./angular-route.js", "ignore": [], "dependencies": { - "angular": "1.5.0-rc.0" + "angular": "1.5.1-build.4601+sha.c966876" }, "homepage": "https://github.com/angular/bower-angular-route", - "_release": "1.5.0-rc.0", + "_release": "1.5.1-build.4601+sha.c966876", "_resolution": { "type": "version", - "tag": "v1.5.0-rc.0", - "commit": "496e2f35541957c1e4903b99622be5bcdb058a7a" + "tag": "v1.5.1-build.4601+sha.c966876", + "commit": "967fdabf084ac9f37c6b984d8893ebfebde5fc02" }, "_source": "git://github.com/angular/bower-angular-route.git", - "_target": "~1.5.0", + "_target": "~1.5.1", "_originalSource": "angular-route" } \ No newline at end of file diff --git a/public/vendor/angular-route/angular-route.js b/public/vendor/angular-route/angular-route.js index 9d8766a1745..cde0787fecf 100644 --- a/public/vendor/angular-route/angular-route.js +++ b/public/vendor/angular-route/angular-route.js @@ -1,6 +1,6 @@ /** - * @license AngularJS v1.5.0-rc.0 - * (c) 2010-2015 Google, Inc. http://angularjs.org + * @license AngularJS v1.5.1-build.4601+sha.c966876 + * (c) 2010-2016 Google, Inc. http://angularjs.org * License: MIT */ (function(window, angular, undefined) {'use strict'; @@ -105,8 +105,17 @@ function $RouteProvider() { * If all the promises are resolved successfully, the values of the resolved promises are * injected and {@link ngRoute.$route#$routeChangeSuccess $routeChangeSuccess} event is * fired. If any of the promises are rejected the - * {@link ngRoute.$route#$routeChangeError $routeChangeError} event is fired. The map object - * is: + * {@link ngRoute.$route#$routeChangeError $routeChangeError} event is fired. + * For easier access to the resolved dependencies from the template, the `resolve` map will + * be available on the scope of the route, under `$resolve` (by default) or a custom name + * specified by the `resolveAs` property (see below). This can be particularly useful, when + * working with {@link angular.Module#component components} as route templates.
+ *
+ * **Note:** If your scope already contains a property with this name, it will be hidden + * or overwritten. Make sure, you specify an appropriate name for this property, that + * does not collide with other properties on the scope. + *
+ * The map object is: * * - `key` – `{string}`: a name of a dependency to be injected into the controller. * - `factory` - `{string|function}`: If `string` then it is an alias for a service. @@ -116,7 +125,10 @@ function $RouteProvider() { * `ngRoute.$routeParams` will still refer to the previous route within these resolve * functions. Use `$route.current.params` to access the new route parameters, instead. * - * - `redirectTo` – {(string|function())=} – value to update + * - `resolveAs` - `{string=}` - The name under which the `resolve` map will be available on + * the scope of the route. If omitted, defaults to `$resolve`. + * + * - `redirectTo` – `{(string|function())=}` – value to update * {@link ng.$location $location} path with and trigger route redirection. * * If `redirectTo` is a function, it will be called with the following parameters: @@ -129,13 +141,13 @@ function $RouteProvider() { * The custom `redirectTo` function is expected to return a string which will be used * to update `$location.path()` and `$location.search()`. * - * - `[reloadOnSearch=true]` - {boolean=} - reload route when only `$location.search()` + * - `[reloadOnSearch=true]` - `{boolean=}` - reload route when only `$location.search()` * or `$location.hash()` changes. * * If the option is set to `false` and url in the browser changes, then * `$routeUpdate` event is broadcasted on the root scope. * - * - `[caseInsensitiveMatch=false]` - {boolean=} - match routes without being case sensitive + * - `[caseInsensitiveMatch=false]` - `{boolean=}` - match routes without being case sensitive * * If the option is set to `true`, then the particular route can be matched without being * case sensitive @@ -265,7 +277,7 @@ function $RouteProvider() { * @property {Object} current Reference to the current route definition. * The route definition contains: * - * - `controller`: The controller constructor as define in route definition. + * - `controller`: The controller constructor as defined in the route definition. * - `locals`: A map of locals which is used by {@link ng.$controller $controller} service for * controller instantiation. The `locals` contain * the resolved values of the `resolve` map. Additionally the `locals` also contain: @@ -273,6 +285,10 @@ function $RouteProvider() { * - `$scope` - The current route scope. * - `$template` - The current route template HTML. * + * The `locals` will be assigned to the route scope's `$resolve` property. You can override + * the property name, using `resolveAs` in the route definition. See + * {@link ngRoute.$routeProvider $routeProvider} for more info. + * * @property {Object} routes Object with all route configuration Objects as its properties. * * @description @@ -468,10 +484,18 @@ function $RouteProvider() { */ reload: function() { forceReload = true; + + var fakeLocationEvent = { + defaultPrevented: false, + preventDefault: function fakePreventDefault() { + this.defaultPrevented = true; + forceReload = false; + } + }; + $rootScope.$evalAsync(function() { - // Don't support cancellation of a reload for now... - prepareRoute(); - commitRoute(); + prepareRoute(fakeLocationEvent); + if (!fakeLocationEvent.defaultPrevented) commitRoute(); }); }, @@ -725,8 +749,10 @@ ngRouteModule.directive('ngView', ngViewFillContentFactory); * Requires the {@link ngRoute `ngRoute`} module to be installed. * * @animations - * enter - animation is used to bring new content into the browser. - * leave - animation is used to animate existing content away. + * | Animation | Occurs | + * |----------------------------------|-------------------------------------| + * | {@link ng.$animate#enter enter} | when the new element is inserted to the DOM | + * | {@link ng.$animate#leave leave} | when the old element is removed from to the DOM | * * The enter and leave animation occur concurrently. * diff --git a/public/vendor/angular-route/angular-route.min.js b/public/vendor/angular-route/angular-route.min.js index b7f1830fd42..d4888631eca 100644 --- a/public/vendor/angular-route/angular-route.min.js +++ b/public/vendor/angular-route/angular-route.min.js @@ -1,15 +1,15 @@ /* - AngularJS v1.5.0-rc.0 - (c) 2010-2015 Google, Inc. http://angularjs.org + AngularJS v1.5.1-build.4601+sha.c966876 + (c) 2010-2016 Google, Inc. http://angularjs.org License: MIT */ -(function(r,d,C){'use strict';function w(s,h,g){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,c,b,f,y){function k(){n&&(g.cancel(n),n=null);l&&(l.$destroy(),l=null);m&&(n=g.leave(m),n.then(function(){n=null}),m=null)}function z(){var b=s.current&&s.current.locals;if(d.isDefined(b&&b.$template)){var b=a.$new(),f=s.current;m=y(b,function(b){g.enter(b,null,m||c).then(function(){!d.isDefined(u)||u&&!a.$eval(u)||h()});k()});l=f.scope=b;l.$emit("$viewContentLoaded"); -l.$eval(x)}else k()}var l,m,n,u=b.autoscroll,x=b.onload||"";a.$on("$routeChangeSuccess",z);z()}}}function A(d,h,g){return{restrict:"ECA",priority:-400,link:function(a,c){var b=g.current,f=b.locals;c.html(f.$template);var y=d(c.contents());if(b.controller){f.$scope=a;var k=h(b.controller,f);b.controllerAs&&(a[b.controllerAs]=k);c.data("$ngControllerController",k);c.children().data("$ngControllerController",k)}a[b.resolveAs||"$resolve"]=f;y(a)}}}r=d.module("ngRoute",["ng"]).provider("$route",function(){function s(a, +(function(r,d,C){'use strict';function x(s,h,g){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,c,b,f,y){function k(){n&&(g.cancel(n),n=null);l&&(l.$destroy(),l=null);m&&(n=g.leave(m),n.then(function(){n=null}),m=null)}function z(){var b=s.current&&s.current.locals;if(d.isDefined(b&&b.$template)){var b=a.$new(),f=s.current;m=y(b,function(b){g.enter(b,null,m||c).then(function(){!d.isDefined(u)||u&&!a.$eval(u)||h()});k()});l=f.scope=b;l.$emit("$viewContentLoaded"); +l.$eval(v)}else k()}var l,m,n,u=b.autoscroll,v=b.onload||"";a.$on("$routeChangeSuccess",z);z()}}}function A(d,h,g){return{restrict:"ECA",priority:-400,link:function(a,c){var b=g.current,f=b.locals;c.html(f.$template);var y=d(c.contents());if(b.controller){f.$scope=a;var k=h(b.controller,f);b.controllerAs&&(a[b.controllerAs]=k);c.data("$ngControllerController",k);c.children().data("$ngControllerController",k)}a[b.resolveAs||"$resolve"]=f;y(a)}}}r=d.module("ngRoute",["ng"]).provider("$route",function(){function s(a, c){return d.extend(Object.create(a),c)}function h(a,d){var b=d.caseInsensitiveMatch,f={originalPath:a,regexp:a},g=f.keys=[];a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(a,d,b,c){a="?"===c?c:null;c="*"===c?c:null;g.push({name:b,optional:!!a});d=d||"";return""+(a?"":d)+"(?:"+(a?d:"")+(c&&"(.+?)"||"([^/]+)")+(a||"")+")"+(a||"")}).replace(/([\/$\*])/g,"\\$1");f.regexp=new RegExp("^"+a+"$",b?"i":"");return f}var g={};this.when=function(a,c){var b=d.copy(c);d.isUndefined(b.reloadOnSearch)&& (b.reloadOnSearch=!0);d.isUndefined(b.caseInsensitiveMatch)&&(b.caseInsensitiveMatch=this.caseInsensitiveMatch);g[a]=d.extend(b,a&&h(a,b));if(a){var f="/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";g[f]=d.extend({redirectTo:a},h(f,b))}return this};this.caseInsensitiveMatch=!1;this.otherwise=function(a){"string"===typeof a&&(a={redirectTo:a});this.when(null,a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$templateRequest","$sce",function(a,c,b,f,h,k,r){function l(b){var e= -t.current;(w=(p=n())&&e&&p.$$route===e.$$route&&d.equals(p.pathParams,e.pathParams)&&!p.reloadOnSearch&&!x)||!e&&!p||a.$broadcast("$routeChangeStart",p,e).defaultPrevented&&b&&b.preventDefault()}function m(){var v=t.current,e=p;if(w)v.params=e.params,d.copy(v.params,b),a.$broadcast("$routeUpdate",v);else if(e||v)x=!1,(t.current=e)&&e.redirectTo&&(d.isString(e.redirectTo)?c.path(u(e.redirectTo,e.params)).search(e.params).replace():c.url(e.redirectTo(e.pathParams,c.path(),c.search())).replace()),f.when(e).then(function(){if(e){var a= -d.extend({},e.resolve),b,c;d.forEach(a,function(b,e){a[e]=d.isString(b)?h.get(b):h.invoke(b,null,null,e)});d.isDefined(b=e.template)?d.isFunction(b)&&(b=b(e.params)):d.isDefined(c=e.templateUrl)&&(d.isFunction(c)&&(c=c(e.params)),d.isDefined(c)&&(e.loadedTemplateUrl=r.valueOf(c),b=k(c)));d.isDefined(b)&&(a.$template=b);return f.all(a)}}).then(function(c){e==t.current&&(e&&(e.locals=c,d.copy(e.params,b)),a.$broadcast("$routeChangeSuccess",e,v))},function(b){e==t.current&&a.$broadcast("$routeChangeError", -e,v,b)})}function n(){var a,b;d.forEach(g,function(f,g){var q;if(q=!b){var h=c.path();q=f.keys;var l={};if(f.regexp)if(h=f.regexp.exec(h)){for(var k=1,n=h.length;k"\u201d\u2019]/i, MAILTO_REGEXP = /^mailto:/i; + var linkyMinErr = angular.$$minErr('linky'); + var isString = angular.isString; + return function(text, target, attributes) { - if (!text) return text; + if (text == null || text === '') return text; + if (!isString(text)) throw linkyMinErr('notstring', 'Expected string but received: {0}', text); + var match; var raw = text; var html = []; diff --git a/public/vendor/angular-sanitize/angular-sanitize.min.js b/public/vendor/angular-sanitize/angular-sanitize.min.js index 806f42f1ca5..5cf63c9077e 100644 --- a/public/vendor/angular-sanitize/angular-sanitize.min.js +++ b/public/vendor/angular-sanitize/angular-sanitize.min.js @@ -1,15 +1,15 @@ /* - AngularJS v1.5.0-rc.0 - (c) 2010-2015 Google, Inc. http://angularjs.org + AngularJS v1.5.1-build.4601+sha.c966876 + (c) 2010-2016 Google, Inc. http://angularjs.org License: MIT */ -(function(y,e,z){'use strict';function A(a){var d=[];t(d,e.noop).chars(a);return d.join("")}function g(a,d){var b={},c=a.split(","),l;for(l=0;l=document.documentMode&&n(f);a=f.innerHTML;f.innerHTML=a}while(a!==f.innerHTML);for(b=f.firstChild;b;){switch(b.nodeType){case 1:d.start(b.nodeName.toLowerCase(),C(b.attributes)); -break;case 3:d.chars(b.textContent)}var c;if(!(c=b.firstChild)&&(1==b.nodeType&&d.end(b.nodeName.toLowerCase()),c=b.nextSibling,!c))for(;null==c;){b=b.parentNode;if(b===f)break;c=b.nextSibling;1==b.nodeType&&d.end(b.nodeName.toLowerCase())}b=c}for(;b=f.firstChild;)f.removeChild(b)}function C(a){for(var d={},b=0,c=a.length;b/g,">")}function t(a,d){var b=!1,c=e.bind(a,a.push);return{start:function(a,h){a=e.lowercase(a);!b&&F[a]&&(b=a);b||!0!==r[a]||(c("<"),c(a),e.forEach(h,function(b,h){var f=e.lowercase(h),g="img"===a&&"src"===f||"background"===f;!0!==G[f]||!0===w[f]&&!d(b,g)||(c(" "),c(h),c('="'),c(v(b)),c('"'))}),c(">"))},end:function(a){a=e.lowercase(a);b||!0!==r[a]||!0===x[a]||(c(""));a== -b&&(b=!1)},chars:function(a){b||c(v(a))}}}function n(a){if(a.nodeType===Node.ELEMENT_NODE)for(var d=a.attributes,b=0,c=d.length;b"\u201d\u2019]/i,b=/^mailto:/i;return function(c,f,h){function g(a){a&&p.push(A(a))}function m(a,b){var c;p.push("');g(b);p.push("")}if(!c)return c;for(var q=c,p=[],k,n;c=q.match(d);)k=c[0],c[2]||c[4]||(k=(c[3]?"http://":"mailto:")+k),n=c.index,g(q.substr(0,n)),m(k,c[0].replace(b,"")),q=q.substring(n+c[0].length);g(q);return a(p.join(""))}}])})(window,window.angular); +(function(A,e,B){'use strict';function C(a){var c=[];v(c,e.noop).chars(a);return c.join("")}function h(a,c){var b={},d=a.split(","),l;for(l=0;l=document.documentMode&&n(g);a=g.innerHTML;g.innerHTML=a}while(a!==g.innerHTML);for(b=g.firstChild;b;){switch(b.nodeType){case 1:c.start(b.nodeName.toLowerCase(),E(b.attributes)); +break;case 3:c.chars(b.textContent)}var d;if(!(d=b.firstChild)&&(1==b.nodeType&&c.end(b.nodeName.toLowerCase()),d=b.nextSibling,!d))for(;null==d;){b=b.parentNode;if(b===g)break;d=b.nextSibling;1==b.nodeType&&c.end(b.nodeName.toLowerCase())}b=d}for(;b=g.firstChild;)g.removeChild(b)}function E(a){for(var c={},b=0,d=a.length;b/g,">")}function v(a,c){var b=!1,d=e.bind(a,a.push);return{start:function(a,f){a=e.lowercase(a);!b&&H[a]&&(b=a);b||!0!==t[a]||(d("<"),d(a),e.forEach(f,function(b,f){var g=e.lowercase(f),h="img"===a&&"src"===g||"background"===g;!0!==I[g]||!0===y[g]&&!c(b,h)||(d(" "),d(f),d('="'),d(x(b)),d('"'))}),d(">"))},end:function(a){a=e.lowercase(a);b||!0!==t[a]||!0===z[a]||(d(""));a== +b&&(b=!1)},chars:function(a){b||d(x(a))}}}function n(a){if(a.nodeType===Node.ELEMENT_NODE)for(var c=a.attributes,b=0,d=c.length;b"\u201d\u2019]/i,b=/^mailto:/i,d=e.$$minErr("linky"),g=e.isString;return function(f,h,m){function k(a){a&&p.push(C(a))}function q(a,b){var c;p.push("');k(b);p.push("")}if(null==f||""===f)return f;if(!g(f))throw d("notstring",f);for(var r=f,p=[],s,n;f=r.match(c);)s=f[0],f[2]||f[4]||(s=(f[3]?"http://":"mailto:")+s),n=f.index,k(r.substr(0,n)),q(s,f[0].replace(b,"")),r=r.substring(n+f[0].length);k(r);return a(p.join(""))}}])})(window,window.angular); //# sourceMappingURL=angular-sanitize.min.js.map diff --git a/public/vendor/angular-sanitize/angular-sanitize.min.js.map b/public/vendor/angular-sanitize/angular-sanitize.min.js.map index 4db67850383..7276abd2dc0 100644 --- a/public/vendor/angular-sanitize/angular-sanitize.min.js.map +++ b/public/vendor/angular-sanitize/angular-sanitize.min.js.map @@ -2,7 +2,7 @@ "version":3, "file":"angular-sanitize.min.js", "lineCount":14, -"mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAASC,CAAT,CAAkBC,CAAlB,CAA6B,CAsMtCC,QAASA,EAAY,CAACC,CAAD,CAAQ,CAC3B,IAAIC,EAAM,EACGC,EAAAC,CAAmBF,CAAnBE,CAAwBN,CAAAO,KAAxBD,CACbH,MAAA,CAAaA,CAAb,CACA,OAAOC,EAAAI,KAAA,CAAS,EAAT,CAJoB,CAyF7BC,QAASA,EAAK,CAACC,CAAD,CAAMC,CAAN,CAAqB,CAAA,IAC7BC,EAAM,EADuB,CACnBC,EAAQH,CAAAI,MAAA,CAAU,GAAV,CADW,CACKC,CACtC,KAAKA,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBF,CAAAG,OAAhB,CAA8BD,CAAA,EAA9B,CACEH,CAAA,CAAID,CAAA,CAAgBX,CAAAiB,UAAA,CAAkBJ,CAAA,CAAME,CAAN,CAAlB,CAAhB,CAA8CF,CAAA,CAAME,CAAN,CAAlD,CAAA,CAA8D,CAAA,CAEhE,OAAOH,EAL0B,CA0CnCM,QAASA,EAAU,CAACC,CAAD,CAAOC,CAAP,CAAgB,CACpB,IAAb,GAAID,CAAJ,EAAqBA,CAArB,GAA8BlB,CAA9B,CACEkB,CADF,CACS,EADT,CAE2B,QAF3B,GAEW,MAAOA,EAFlB,GAGEA,CAHF,CAGS,EAHT,CAGcA,CAHd,CAKAE,EAAAC,UAAA,CAA6BH,CAG7B,KAAII,EAAe,CACnB,GAAG,CACD,GAAqB,CAArB,GAAIA,CAAJ,CACE,KAAMC,EAAA,CAAgB,QAAhB,CAAN,CAEFD,CAAA,EAG6B,GAA7B,EAAIE,QAAAC,aAAJ,EACEC,CAAA,CAAmBN,CAAnB,CAEFF,EAAA,CAAOE,CAAAC,UACPD,EAAAC,UAAA,CAA6BH,CAX5B,CAAH,MAYSA,CAZT,GAYkBE,CAAAC,UAZlB,CAeA,KADIM,CACJ,CADWP,CAAAQ,WACX,CAAOD,CAAP,CAAA,CAAa,CACX,OAAQA,CAAAE,SAAR,EACE,KAAK,CAAL,CACEV,CAAAW,MAAA,CAAcH,CAAAI,SAAAC,YAAA,EAAd,CAA2CC,CAAA,CAAUN,CAAAO,WAAV,CAA3C,CACA;KACF,MAAK,CAAL,CACEf,CAAAjB,MAAA,CAAcyB,CAAAQ,YAAd,CALJ,CASA,IAAIC,CACJ,IAAM,EAAAA,CAAA,CAAWT,CAAAC,WAAX,CAAN,GACuB,CAIhBQ,EAJDT,CAAAE,SAICO,EAHHjB,CAAAkB,IAAA,CAAYV,CAAAI,SAAAC,YAAA,EAAZ,CAGGI,CADLA,CACKA,CADMT,CAAAW,YACNF,CAAAA,CAAAA,CALP,EAMI,IAAA,CAAmB,IAAnB,EAAOA,CAAP,CAAA,CAAyB,CACvBT,CAAA,CAAOA,CAAAY,WACP,IAAIZ,CAAJ,GAAaP,CAAb,CAA+B,KAC/BgB,EAAA,CAAWT,CAAAW,YACU,EAArB,EAAIX,CAAAE,SAAJ,EACEV,CAAAkB,IAAA,CAAYV,CAAAI,SAAAC,YAAA,EAAZ,CALqB,CAU7BL,CAAA,CAAOS,CA3BI,CA8Bb,IAAA,CAAOT,CAAP,CAAcP,CAAAQ,WAAd,CAAA,CACER,CAAAoB,YAAA,CAA6Bb,CAA7B,CAxD+B,CA4DnCM,QAASA,EAAS,CAACQ,CAAD,CAAQ,CAExB,IADA,IAAIC,EAAM,EAAV,CACS5B,EAAI,CADb,CACgB6B,EAAKF,CAAA1B,OAArB,CAAmCD,CAAnC,CAAuC6B,CAAvC,CAA2C7B,CAAA,EAA3C,CAAgD,CAC9C,IAAI8B,EAAOH,CAAA,CAAM3B,CAAN,CACX4B,EAAA,CAAIE,CAAAC,KAAJ,CAAA,CAAiBD,CAAAE,MAF6B,CAIhD,MAAOJ,EANiB,CAiB1BK,QAASA,EAAc,CAACD,CAAD,CAAQ,CAC7B,MAAOA,EAAAE,QAAA,CACG,IADH,CACS,OADT,CAAAA,QAAA,CAEGC,CAFH,CAE0B,QAAQ,CAACH,CAAD,CAAQ,CAC7C,IAAII,EAAKJ,CAAAK,WAAA,CAAiB,CAAjB,CACLC,EAAAA,CAAMN,CAAAK,WAAA,CAAiB,CAAjB,CACV,OAAO,IAAP,EAAgC,IAAhC,EAAiBD,CAAjB,CAAsB,KAAtB;CAA0CE,CAA1C,CAAgD,KAAhD,EAA0D,KAA1D,EAAqE,GAHxB,CAF1C,CAAAJ,QAAA,CAOGK,CAPH,CAO4B,QAAQ,CAACP,CAAD,CAAQ,CAC/C,MAAO,IAAP,CAAcA,CAAAK,WAAA,CAAiB,CAAjB,CAAd,CAAoC,GADW,CAP5C,CAAAH,QAAA,CAUG,IAVH,CAUS,MAVT,CAAAA,QAAA,CAWG,IAXH,CAWS,MAXT,CADsB,CAyB/B5C,QAASA,EAAkB,CAACD,CAAD,CAAMmD,CAAN,CAAoB,CAC7C,IAAIC,EAAuB,CAAA,CAA3B,CACIC,EAAMzD,CAAA0D,KAAA,CAAatD,CAAb,CAAkBA,CAAAuD,KAAlB,CACV,OAAO,CACL5B,MAAOA,QAAQ,CAAC6B,CAAD,CAAMlB,CAAN,CAAa,CAC1BkB,CAAA,CAAM5D,CAAAiB,UAAA,CAAkB2C,CAAlB,CACDJ,EAAAA,CAAL,EAA6BK,CAAA,CAAgBD,CAAhB,CAA7B,GACEJ,CADF,CACyBI,CADzB,CAGKJ,EAAL,EAAoD,CAAA,CAApD,GAA6BM,CAAA,CAAcF,CAAd,CAA7B,GACEH,CAAA,CAAI,GAAJ,CAcA,CAbAA,CAAA,CAAIG,CAAJ,CAaA,CAZA5D,CAAA+D,QAAA,CAAgBrB,CAAhB,CAAuB,QAAQ,CAACK,CAAD,CAAQiB,CAAR,CAAa,CAC1C,IAAIC,EAAKjE,CAAAiB,UAAA,CAAkB+C,CAAlB,CAAT,CACIE,EAAmB,KAAnBA,GAAWN,CAAXM,EAAqC,KAArCA,GAA4BD,CAA5BC,EAAyD,YAAzDA,GAAgDD,CAC3B,EAAA,CAAzB,GAAIE,CAAA,CAAWF,CAAX,CAAJ,EACsB,CAAA,CADtB,GACGG,CAAA,CAASH,CAAT,CADH,EAC8B,CAAAV,CAAA,CAAaR,CAAb,CAAoBmB,CAApB,CAD9B,GAEET,CAAA,CAAI,GAAJ,CAIA,CAHAA,CAAA,CAAIO,CAAJ,CAGA,CAFAP,CAAA,CAAI,IAAJ,CAEA,CADAA,CAAA,CAAIT,CAAA,CAAeD,CAAf,CAAJ,CACA,CAAAU,CAAA,CAAI,GAAJ,CANF,CAH0C,CAA5C,CAYA,CAAAA,CAAA,CAAI,GAAJ,CAfF,CAL0B,CADvB,CAwBLnB,IAAKA,QAAQ,CAACsB,CAAD,CAAM,CACjBA,CAAA,CAAM5D,CAAAiB,UAAA,CAAkB2C,CAAlB,CACDJ,EAAL,EAAoD,CAAA,CAApD,GAA6BM,CAAA,CAAcF,CAAd,CAA7B,EAAkF,CAAA,CAAlF,GAA4DS,CAAA,CAAaT,CAAb,CAA5D,GACEH,CAAA,CAAI,IAAJ,CAEA,CADAA,CAAA,CAAIG,CAAJ,CACA,CAAAH,CAAA,CAAI,GAAJ,CAHF,CAKIG,EAAJ;AAAWJ,CAAX,GACEA,CADF,CACyB,CAAA,CADzB,CAPiB,CAxBd,CAmCLrD,MAAOA,QAAQ,CAACA,CAAD,CAAQ,CAChBqD,CAAL,EACEC,CAAA,CAAIT,CAAA,CAAe7C,CAAf,CAAJ,CAFmB,CAnClB,CAHsC,CAsD/CwB,QAASA,EAAkB,CAACC,CAAD,CAAO,CAChC,GAAIA,CAAAE,SAAJ,GAAsBwC,IAAAC,aAAtB,CAEE,IADA,IAAI7B,EAAQd,CAAAO,WAAZ,CACSpB,EAAI,CADb,CACgByD,EAAI9B,CAAA1B,OAApB,CAAkCD,CAAlC,CAAsCyD,CAAtC,CAAyCzD,CAAA,EAAzC,CAA8C,CAC5C,IAAI0D,EAAW/B,CAAA,CAAM3B,CAAN,CAAf,CACI2D,EAAWD,CAAA3B,KAAAb,YAAA,EACf,IAAiB,WAAjB,GAAIyC,CAAJ,EAA6D,CAA7D,GAAgCA,CAAAC,QAAA,CAAiB,MAAjB,CAAhC,CACE/C,CAAAgD,oBAAA,CAAyBH,CAAzB,CAEA,CADA1D,CAAA,EACA,CAAAyD,CAAA,EAN0C,CAYhD,CADInC,CACJ,CADeT,CAAAC,WACf,GACEF,CAAA,CAAmBU,CAAnB,CAIF,EADAA,CACA,CADWT,CAAAW,YACX,GACEZ,CAAA,CAAmBU,CAAnB,CArB8B,CAxdlC,IAAIb,EAAkBxB,CAAA6E,SAAA,CAAiB,WAAjB,CAAtB,CAkMI3B,EAAwB,iCAlM5B,CAoMEI,EAA0B,eApM5B,CA6MIe,EAAe5D,CAAA,CAAM,wBAAN,CA7MnB,CAiNIqE,EAA8BrE,CAAA,CAAM,gDAAN,CAjNlC,CAkNIsE,EAA+BtE,CAAA,CAAM,OAAN,CAlNnC,CAmNIuE,EAAyBhF,CAAAiF,OAAA,CAAe,EAAf,CACeF,CADf,CAEeD,CAFf,CAnN7B,CAwNII,EAAgBlF,CAAAiF,OAAA,CAAe,EAAf;AAAmBH,CAAnB,CAAgDrE,CAAA,CAAM,qKAAN,CAAhD,CAxNpB,CA6NI0E,EAAiBnF,CAAAiF,OAAA,CAAe,EAAf,CAAmBF,CAAnB,CAAiDtE,CAAA,CAAM,2JAAN,CAAjD,CA7NrB,CAqOI2E,EAAc3E,CAAA,CAAM,wNAAN,CArOlB;AA0OIoD,EAAkBpD,CAAA,CAAM,cAAN,CA1OtB,CA4OIqD,EAAgB9D,CAAAiF,OAAA,CAAe,EAAf,CACeZ,CADf,CAEea,CAFf,CAGeC,CAHf,CAIeH,CAJf,CA5OpB,CAmPIZ,EAAW3D,CAAA,CAAM,qDAAN,CAnPf,CAqPI4E,EAAY5E,CAAA,CAAM,kTAAN,CArPhB,CA6PI6E,EAAW7E,CAAA,CAAM,guCAAN;AAcoE,CAAA,CAdpE,CA7Pf,CA6QI0D,EAAanE,CAAAiF,OAAA,CAAe,EAAf,CACeb,CADf,CAEekB,CAFf,CAGeD,CAHf,CA7QjB,CA0RIhE,CACH,UAAQ,CAACtB,CAAD,CAAS,CAEhB,GAAIA,CAAA0B,SAAJ,EAAuB1B,CAAA0B,SAAA8D,eAAvB,CACEC,CAAA,CAAMzF,CAAA0B,SAAA8D,eAAAE,mBAAA,CAAkD,OAAlD,CADR,KAGE,MAAMjE,EAAA,CAAgB,SAAhB,CAAN,CAGF,IAAIkE,EAAeC,CADFH,CAAAI,gBACED,EADqBH,CAAAK,mBAAA,EACrBF,sBAAA,CAAgC,MAAhC,CAGS,EAA5B,GAAID,CAAA1E,OAAJ,CACEK,CADF,CACqBqE,CAAA,CAAa,CAAb,CADrB,EAGMvE,CAGJ,CAHWqE,CAAAM,cAAA,CAAkB,MAAlB,CAGX,CAFAzE,CAEA,CAFmBmE,CAAAM,cAAA,CAAkB,MAAlB,CAEnB,CADA3E,CAAA4E,YAAA,CAAiB1E,CAAjB,CACA,CAAAmE,CAAAO,YAAA,CAAgB5E,CAAhB,CANF,CAXgB,CAAjB,CAAD,CAmBGpB,CAnBH,CAyNAC,EAAAgG,OAAA,CAAe,YAAf,CAA6B,EAA7B,CAAAC,SAAA,CAA0C,WAA1C,CApXAC,QAA0B,EAAG,CAC3B,IAAIC,EAAa,CAAA,CAEjB,KAAAC,KAAA,CAAY,CAAC,eAAD,CAAkB,QAAQ,CAACC,CAAD,CAAgB,CAChDF,CAAJ,EACEnG,CAAAiF,OAAA,CAAenB,CAAf,CAA8BsB,CAA9B,CAEF,OAAO,SAAQ,CAACjE,CAAD,CAAO,CACpB,IAAIf;AAAM,EACVc,EAAA,CAAWC,CAAX,CAAiBd,CAAA,CAAmBD,CAAnB,CAAwB,QAAQ,CAACkG,CAAD,CAAMpC,CAAN,CAAe,CAC9D,MAAO,CAAC,UAAAqC,KAAA,CAAgBF,CAAA,CAAcC,CAAd,CAAmBpC,CAAnB,CAAhB,CADsD,CAA/C,CAAjB,CAGA,OAAO9D,EAAAI,KAAA,CAAS,EAAT,CALa,CAJ8B,CAA1C,CA4CZ,KAAAgG,UAAA,CAAiBC,QAAQ,CAACD,CAAD,CAAY,CACnC,MAAIxG,EAAA0G,UAAA,CAAkBF,CAAlB,CAAJ,EACEL,CACO,CADMK,CACN,CAAA,IAFT,EAISL,CAL0B,CA/CV,CAoX7B,CAmIAnG,EAAAgG,OAAA,CAAe,YAAf,CAAAW,OAAA,CAAoC,OAApC,CAA6C,CAAC,WAAD,CAAc,QAAQ,CAACC,CAAD,CAAY,CAAA,IACzEC,EACE,yFAFuE,CAGzEC,EAAgB,WAEpB,OAAO,SAAQ,CAACC,CAAD,CAAOC,CAAP,CAAe7E,CAAf,CAA2B,CAsBxC8E,QAASA,EAAO,CAACF,CAAD,CAAO,CAChBA,CAAL,EAGA5F,CAAAwC,KAAA,CAAUzD,CAAA,CAAa6G,CAAb,CAAV,CAJqB,CAOvBG,QAASA,EAAO,CAACC,CAAD,CAAMJ,CAAN,CAAY,CAC1B,IAAI/C,CACJ7C,EAAAwC,KAAA,CAAU,KAAV,CACI3D,EAAAoH,WAAA,CAAmBjF,CAAnB,CAAJ,GACEA,CADF,CACeA,CAAA,CAAWgF,CAAX,CADf,CAGA,IAAInH,CAAAqH,SAAA,CAAiBlF,CAAjB,CAAJ,CACE,IAAK6B,CAAL,GAAY7B,EAAZ,CACEhB,CAAAwC,KAAA,CAAUK,CAAV,CAAgB,IAAhB,CAAuB7B,CAAA,CAAW6B,CAAX,CAAvB,CAAyC,IAAzC,CAFJ,KAKE7B,EAAA,CAAa,EAEX,EAAAnC,CAAA0G,UAAA,CAAkBM,CAAlB,CAAJ;AAAmC,QAAnC,EAA+C7E,EAA/C,EACEhB,CAAAwC,KAAA,CAAU,UAAV,CACUqD,CADV,CAEU,IAFV,CAIF7F,EAAAwC,KAAA,CAAU,QAAV,CACUwD,CAAAlE,QAAA,CAAY,IAAZ,CAAkB,QAAlB,CADV,CAEU,IAFV,CAGAgE,EAAA,CAAQF,CAAR,CACA5F,EAAAwC,KAAA,CAAU,MAAV,CAtB0B,CA5B5B,GAAKoD,CAAAA,CAAL,CAAW,MAAOA,EAMlB,KAJA,IAAIO,EAAMP,CAAV,CACI5F,EAAO,EADX,CAEIgG,CAFJ,CAGIpG,CACJ,CAAQwG,CAAR,CAAgBD,CAAAC,MAAA,CAAUV,CAAV,CAAhB,CAAA,CAEEM,CAQA,CARMI,CAAA,CAAM,CAAN,CAQN,CANKA,CAAA,CAAM,CAAN,CAML,EANkBA,CAAA,CAAM,CAAN,CAMlB,GALEJ,CAKF,EALSI,CAAA,CAAM,CAAN,CAAA,CAAW,SAAX,CAAuB,SAKhC,EAL6CJ,CAK7C,EAHApG,CAGA,CAHIwG,CAAAC,MAGJ,CAFAP,CAAA,CAAQK,CAAAG,OAAA,CAAW,CAAX,CAAc1G,CAAd,CAAR,CAEA,CADAmG,CAAA,CAAQC,CAAR,CAAaI,CAAA,CAAM,CAAN,CAAAtE,QAAA,CAAiB6D,CAAjB,CAAgC,EAAhC,CAAb,CACA,CAAAQ,CAAA,CAAMA,CAAAI,UAAA,CAAc3G,CAAd,CAAkBwG,CAAA,CAAM,CAAN,CAAAvG,OAAlB,CAERiG,EAAA,CAAQK,CAAR,CACA,OAAOV,EAAA,CAAUzF,CAAAX,KAAA,CAAU,EAAV,CAAV,CApBiC,CALmC,CAAlC,CAA7C,CApoBsC,CAArC,CAAD,CAksBGT,MAlsBH,CAksBWA,MAAAC,QAlsBX;", +"mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAASC,CAAT,CAAkBC,CAAlB,CAA6B,CAsMtCC,QAASA,EAAY,CAACC,CAAD,CAAQ,CAC3B,IAAIC,EAAM,EACGC,EAAAC,CAAmBF,CAAnBE,CAAwBN,CAAAO,KAAxBD,CACbH,MAAA,CAAaA,CAAb,CACA,OAAOC,EAAAI,KAAA,CAAS,EAAT,CAJoB,CAyF7BC,QAASA,EAAK,CAACC,CAAD,CAAMC,CAAN,CAAqB,CAAA,IAC7BC,EAAM,EADuB,CACnBC,EAAQH,CAAAI,MAAA,CAAU,GAAV,CADW,CACKC,CACtC,KAAKA,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBF,CAAAG,OAAhB,CAA8BD,CAAA,EAA9B,CACEH,CAAA,CAAID,CAAA,CAAgBX,CAAAiB,UAAA,CAAkBJ,CAAA,CAAME,CAAN,CAAlB,CAAhB,CAA8CF,CAAA,CAAME,CAAN,CAAlD,CAAA,CAA8D,CAAA,CAEhE,OAAOH,EAL0B,CA0CnCM,QAASA,EAAU,CAACC,CAAD,CAAOC,CAAP,CAAgB,CACpB,IAAb,GAAID,CAAJ,EAAqBA,CAArB,GAA8BlB,CAA9B,CACEkB,CADF,CACS,EADT,CAE2B,QAF3B,GAEW,MAAOA,EAFlB,GAGEA,CAHF,CAGS,EAHT,CAGcA,CAHd,CAKAE,EAAAC,UAAA,CAA6BH,CAG7B,KAAII,EAAe,CACnB,GAAG,CACD,GAAqB,CAArB,GAAIA,CAAJ,CACE,KAAMC,EAAA,CAAgB,QAAhB,CAAN,CAEFD,CAAA,EAG6B,GAA7B,EAAIE,QAAAC,aAAJ,EACEC,CAAA,CAAmBN,CAAnB,CAEFF,EAAA,CAAOE,CAAAC,UACPD,EAAAC,UAAA,CAA6BH,CAX5B,CAAH,MAYSA,CAZT,GAYkBE,CAAAC,UAZlB,CAeA,KADIM,CACJ,CADWP,CAAAQ,WACX,CAAOD,CAAP,CAAA,CAAa,CACX,OAAQA,CAAAE,SAAR,EACE,KAAK,CAAL,CACEV,CAAAW,MAAA,CAAcH,CAAAI,SAAAC,YAAA,EAAd,CAA2CC,CAAA,CAAUN,CAAAO,WAAV,CAA3C,CACA;KACF,MAAK,CAAL,CACEf,CAAAjB,MAAA,CAAcyB,CAAAQ,YAAd,CALJ,CASA,IAAIC,CACJ,IAAM,EAAAA,CAAA,CAAWT,CAAAC,WAAX,CAAN,GACuB,CAIhBQ,EAJDT,CAAAE,SAICO,EAHHjB,CAAAkB,IAAA,CAAYV,CAAAI,SAAAC,YAAA,EAAZ,CAGGI,CADLA,CACKA,CADMT,CAAAW,YACNF,CAAAA,CAAAA,CALP,EAMI,IAAA,CAAmB,IAAnB,EAAOA,CAAP,CAAA,CAAyB,CACvBT,CAAA,CAAOA,CAAAY,WACP,IAAIZ,CAAJ,GAAaP,CAAb,CAA+B,KAC/BgB,EAAA,CAAWT,CAAAW,YACU,EAArB,EAAIX,CAAAE,SAAJ,EACEV,CAAAkB,IAAA,CAAYV,CAAAI,SAAAC,YAAA,EAAZ,CALqB,CAU7BL,CAAA,CAAOS,CA3BI,CA8Bb,IAAA,CAAOT,CAAP,CAAcP,CAAAQ,WAAd,CAAA,CACER,CAAAoB,YAAA,CAA6Bb,CAA7B,CAxD+B,CA4DnCM,QAASA,EAAS,CAACQ,CAAD,CAAQ,CAExB,IADA,IAAIC,EAAM,EAAV,CACS5B,EAAI,CADb,CACgB6B,EAAKF,CAAA1B,OAArB,CAAmCD,CAAnC,CAAuC6B,CAAvC,CAA2C7B,CAAA,EAA3C,CAAgD,CAC9C,IAAI8B,EAAOH,CAAA,CAAM3B,CAAN,CACX4B,EAAA,CAAIE,CAAAC,KAAJ,CAAA,CAAiBD,CAAAE,MAF6B,CAIhD,MAAOJ,EANiB,CAiB1BK,QAASA,EAAc,CAACD,CAAD,CAAQ,CAC7B,MAAOA,EAAAE,QAAA,CACG,IADH,CACS,OADT,CAAAA,QAAA,CAEGC,CAFH,CAE0B,QAAQ,CAACH,CAAD,CAAQ,CAC7C,IAAII,EAAKJ,CAAAK,WAAA,CAAiB,CAAjB,CACLC,EAAAA,CAAMN,CAAAK,WAAA,CAAiB,CAAjB,CACV,OAAO,IAAP,EAAgC,IAAhC,EAAiBD,CAAjB,CAAsB,KAAtB;CAA0CE,CAA1C,CAAgD,KAAhD,EAA0D,KAA1D,EAAqE,GAHxB,CAF1C,CAAAJ,QAAA,CAOGK,CAPH,CAO4B,QAAQ,CAACP,CAAD,CAAQ,CAC/C,MAAO,IAAP,CAAcA,CAAAK,WAAA,CAAiB,CAAjB,CAAd,CAAoC,GADW,CAP5C,CAAAH,QAAA,CAUG,IAVH,CAUS,MAVT,CAAAA,QAAA,CAWG,IAXH,CAWS,MAXT,CADsB,CAyB/B5C,QAASA,EAAkB,CAACD,CAAD,CAAMmD,CAAN,CAAoB,CAC7C,IAAIC,EAAuB,CAAA,CAA3B,CACIC,EAAMzD,CAAA0D,KAAA,CAAatD,CAAb,CAAkBA,CAAAuD,KAAlB,CACV,OAAO,CACL5B,MAAOA,QAAQ,CAAC6B,CAAD,CAAMlB,CAAN,CAAa,CAC1BkB,CAAA,CAAM5D,CAAAiB,UAAA,CAAkB2C,CAAlB,CACDJ,EAAAA,CAAL,EAA6BK,CAAA,CAAgBD,CAAhB,CAA7B,GACEJ,CADF,CACyBI,CADzB,CAGKJ,EAAL,EAAoD,CAAA,CAApD,GAA6BM,CAAA,CAAcF,CAAd,CAA7B,GACEH,CAAA,CAAI,GAAJ,CAcA,CAbAA,CAAA,CAAIG,CAAJ,CAaA,CAZA5D,CAAA+D,QAAA,CAAgBrB,CAAhB,CAAuB,QAAQ,CAACK,CAAD,CAAQiB,CAAR,CAAa,CAC1C,IAAIC,EAAKjE,CAAAiB,UAAA,CAAkB+C,CAAlB,CAAT,CACIE,EAAmB,KAAnBA,GAAWN,CAAXM,EAAqC,KAArCA,GAA4BD,CAA5BC,EAAyD,YAAzDA,GAAgDD,CAC3B,EAAA,CAAzB,GAAIE,CAAA,CAAWF,CAAX,CAAJ,EACsB,CAAA,CADtB,GACGG,CAAA,CAASH,CAAT,CADH,EAC8B,CAAAV,CAAA,CAAaR,CAAb,CAAoBmB,CAApB,CAD9B,GAEET,CAAA,CAAI,GAAJ,CAIA,CAHAA,CAAA,CAAIO,CAAJ,CAGA,CAFAP,CAAA,CAAI,IAAJ,CAEA,CADAA,CAAA,CAAIT,CAAA,CAAeD,CAAf,CAAJ,CACA,CAAAU,CAAA,CAAI,GAAJ,CANF,CAH0C,CAA5C,CAYA,CAAAA,CAAA,CAAI,GAAJ,CAfF,CAL0B,CADvB,CAwBLnB,IAAKA,QAAQ,CAACsB,CAAD,CAAM,CACjBA,CAAA,CAAM5D,CAAAiB,UAAA,CAAkB2C,CAAlB,CACDJ,EAAL,EAAoD,CAAA,CAApD,GAA6BM,CAAA,CAAcF,CAAd,CAA7B,EAAkF,CAAA,CAAlF,GAA4DS,CAAA,CAAaT,CAAb,CAA5D,GACEH,CAAA,CAAI,IAAJ,CAEA,CADAA,CAAA,CAAIG,CAAJ,CACA,CAAAH,CAAA,CAAI,GAAJ,CAHF,CAKIG,EAAJ;AAAWJ,CAAX,GACEA,CADF,CACyB,CAAA,CADzB,CAPiB,CAxBd,CAmCLrD,MAAOA,QAAQ,CAACA,CAAD,CAAQ,CAChBqD,CAAL,EACEC,CAAA,CAAIT,CAAA,CAAe7C,CAAf,CAAJ,CAFmB,CAnClB,CAHsC,CAsD/CwB,QAASA,EAAkB,CAACC,CAAD,CAAO,CAChC,GAAIA,CAAAE,SAAJ,GAAsBwC,IAAAC,aAAtB,CAEE,IADA,IAAI7B,EAAQd,CAAAO,WAAZ,CACSpB,EAAI,CADb,CACgByD,EAAI9B,CAAA1B,OAApB,CAAkCD,CAAlC,CAAsCyD,CAAtC,CAAyCzD,CAAA,EAAzC,CAA8C,CAC5C,IAAI0D,EAAW/B,CAAA,CAAM3B,CAAN,CAAf,CACI2D,EAAWD,CAAA3B,KAAAb,YAAA,EACf,IAAiB,WAAjB,GAAIyC,CAAJ,EAA6D,CAA7D,GAAgCA,CAAAC,QAAA,CAAiB,MAAjB,CAAhC,CACE/C,CAAAgD,oBAAA,CAAyBH,CAAzB,CAEA,CADA1D,CAAA,EACA,CAAAyD,CAAA,EAN0C,CAYhD,CADInC,CACJ,CADeT,CAAAC,WACf,GACEF,CAAA,CAAmBU,CAAnB,CAIF,EADAA,CACA,CADWT,CAAAW,YACX,GACEZ,CAAA,CAAmBU,CAAnB,CArB8B,CAxdlC,IAAIb,EAAkBxB,CAAA6E,SAAA,CAAiB,WAAjB,CAAtB,CAkMI3B,EAAwB,iCAlM5B,CAoMEI,EAA0B,eApM5B,CA6MIe,EAAe5D,CAAA,CAAM,wBAAN,CA7MnB,CAiNIqE,EAA8BrE,CAAA,CAAM,gDAAN,CAjNlC,CAkNIsE,EAA+BtE,CAAA,CAAM,OAAN,CAlNnC,CAmNIuE,EAAyBhF,CAAAiF,OAAA,CAAe,EAAf,CACeF,CADf,CAEeD,CAFf,CAnN7B,CAwNII,EAAgBlF,CAAAiF,OAAA,CAAe,EAAf;AAAmBH,CAAnB,CAAgDrE,CAAA,CAAM,qKAAN,CAAhD,CAxNpB,CA6NI0E,EAAiBnF,CAAAiF,OAAA,CAAe,EAAf,CAAmBF,CAAnB,CAAiDtE,CAAA,CAAM,2JAAN,CAAjD,CA7NrB,CAqOI2E,EAAc3E,CAAA,CAAM,wNAAN,CArOlB;AA0OIoD,EAAkBpD,CAAA,CAAM,cAAN,CA1OtB,CA4OIqD,EAAgB9D,CAAAiF,OAAA,CAAe,EAAf,CACeZ,CADf,CAEea,CAFf,CAGeC,CAHf,CAIeH,CAJf,CA5OpB,CAmPIZ,EAAW3D,CAAA,CAAM,8CAAN,CAnPf,CAqPI4E,EAAY5E,CAAA,CAAM,kTAAN,CArPhB,CA6PI6E,EAAW7E,CAAA,CAAM,guCAAN;AAcoE,CAAA,CAdpE,CA7Pf,CA6QI0D,EAAanE,CAAAiF,OAAA,CAAe,EAAf,CACeb,CADf,CAEekB,CAFf,CAGeD,CAHf,CA7QjB,CA0RIhE,CACH,UAAQ,CAACtB,CAAD,CAAS,CAEhB,GAAIA,CAAA0B,SAAJ,EAAuB1B,CAAA0B,SAAA8D,eAAvB,CACEC,CAAA,CAAMzF,CAAA0B,SAAA8D,eAAAE,mBAAA,CAAkD,OAAlD,CADR,KAGE,MAAMjE,EAAA,CAAgB,SAAhB,CAAN,CAGF,IAAIkE,EAAeC,CADFH,CAAAI,gBACED,EADqBH,CAAAK,mBAAA,EACrBF,sBAAA,CAAgC,MAAhC,CAGS,EAA5B,GAAID,CAAA1E,OAAJ,CACEK,CADF,CACqBqE,CAAA,CAAa,CAAb,CADrB,EAGMvE,CAGJ,CAHWqE,CAAAM,cAAA,CAAkB,MAAlB,CAGX,CAFAzE,CAEA,CAFmBmE,CAAAM,cAAA,CAAkB,MAAlB,CAEnB,CADA3E,CAAA4E,YAAA,CAAiB1E,CAAjB,CACA,CAAAmE,CAAAO,YAAA,CAAgB5E,CAAhB,CANF,CAXgB,CAAjB,CAAD,CAmBGpB,CAnBH,CAyNAC,EAAAgG,OAAA,CAAe,YAAf,CAA6B,EAA7B,CAAAC,SAAA,CAA0C,WAA1C,CApXAC,QAA0B,EAAG,CAC3B,IAAIC,EAAa,CAAA,CAEjB,KAAAC,KAAA,CAAY,CAAC,eAAD,CAAkB,QAAQ,CAACC,CAAD,CAAgB,CAChDF,CAAJ,EACEnG,CAAAiF,OAAA,CAAenB,CAAf,CAA8BsB,CAA9B,CAEF,OAAO,SAAQ,CAACjE,CAAD,CAAO,CACpB,IAAIf;AAAM,EACVc,EAAA,CAAWC,CAAX,CAAiBd,CAAA,CAAmBD,CAAnB,CAAwB,QAAQ,CAACkG,CAAD,CAAMpC,CAAN,CAAe,CAC9D,MAAO,CAAC,UAAAqC,KAAA,CAAgBF,CAAA,CAAcC,CAAd,CAAmBpC,CAAnB,CAAhB,CADsD,CAA/C,CAAjB,CAGA,OAAO9D,EAAAI,KAAA,CAAS,EAAT,CALa,CAJ8B,CAA1C,CA4CZ,KAAAgG,UAAA,CAAiBC,QAAQ,CAACD,CAAD,CAAY,CACnC,MAAIxG,EAAA0G,UAAA,CAAkBF,CAAlB,CAAJ,EACEL,CACO,CADMK,CACN,CAAA,IAFT,EAISL,CAL0B,CA/CV,CAoX7B,CAmIAnG,EAAAgG,OAAA,CAAe,YAAf,CAAAW,OAAA,CAAoC,OAApC,CAA6C,CAAC,WAAD,CAAc,QAAQ,CAACC,CAAD,CAAY,CAAA,IACzEC,EACE,yFAFuE,CAGzEC,EAAgB,WAHyD,CAKzEC,EAAc/G,CAAA6E,SAAA,CAAiB,OAAjB,CAL2D,CAMzEmC,EAAWhH,CAAAgH,SAEf,OAAO,SAAQ,CAACC,CAAD,CAAOC,CAAP,CAAe/E,CAAf,CAA2B,CAwBxCgF,QAASA,EAAO,CAACF,CAAD,CAAO,CAChBA,CAAL,EAGA9F,CAAAwC,KAAA,CAAUzD,CAAA,CAAa+G,CAAb,CAAV,CAJqB,CAOvBG,QAASA,EAAO,CAACC,CAAD,CAAMJ,CAAN,CAAY,CAC1B,IAAIjD,CACJ7C,EAAAwC,KAAA,CAAU,KAAV,CACI3D,EAAAsH,WAAA,CAAmBnF,CAAnB,CAAJ,GACEA,CADF,CACeA,CAAA,CAAWkF,CAAX,CADf,CAGA,IAAIrH,CAAAuH,SAAA,CAAiBpF,CAAjB,CAAJ,CACE,IAAK6B,CAAL,GAAY7B,EAAZ,CACEhB,CAAAwC,KAAA,CAAUK,CAAV;AAAgB,IAAhB,CAAuB7B,CAAA,CAAW6B,CAAX,CAAvB,CAAyC,IAAzC,CAFJ,KAKE7B,EAAA,CAAa,EAEX,EAAAnC,CAAA0G,UAAA,CAAkBQ,CAAlB,CAAJ,EAAmC,QAAnC,EAA+C/E,EAA/C,EACEhB,CAAAwC,KAAA,CAAU,UAAV,CACUuD,CADV,CAEU,IAFV,CAIF/F,EAAAwC,KAAA,CAAU,QAAV,CACU0D,CAAApE,QAAA,CAAY,IAAZ,CAAkB,QAAlB,CADV,CAEU,IAFV,CAGAkE,EAAA,CAAQF,CAAR,CACA9F,EAAAwC,KAAA,CAAU,MAAV,CAtB0B,CA9B5B,GAAY,IAAZ,EAAIsD,CAAJ,EAA6B,EAA7B,GAAoBA,CAApB,CAAiC,MAAOA,EACxC,IAAK,CAAAD,CAAA,CAASC,CAAT,CAAL,CAAqB,KAAMF,EAAA,CAAY,WAAZ,CAA8DE,CAA9D,CAAN,CAOrB,IAJA,IAAIO,EAAMP,CAAV,CACI9F,EAAO,EADX,CAEIkG,CAFJ,CAGItG,CACJ,CAAQ0G,CAAR,CAAgBD,CAAAC,MAAA,CAAUZ,CAAV,CAAhB,CAAA,CAEEQ,CAQA,CARMI,CAAA,CAAM,CAAN,CAQN,CANKA,CAAA,CAAM,CAAN,CAML,EANkBA,CAAA,CAAM,CAAN,CAMlB,GALEJ,CAKF,EALSI,CAAA,CAAM,CAAN,CAAA,CAAW,SAAX,CAAuB,SAKhC,EAL6CJ,CAK7C,EAHAtG,CAGA,CAHI0G,CAAAC,MAGJ,CAFAP,CAAA,CAAQK,CAAAG,OAAA,CAAW,CAAX,CAAc5G,CAAd,CAAR,CAEA,CADAqG,CAAA,CAAQC,CAAR,CAAaI,CAAA,CAAM,CAAN,CAAAxE,QAAA,CAAiB6D,CAAjB,CAAgC,EAAhC,CAAb,CACA,CAAAU,CAAA,CAAMA,CAAAI,UAAA,CAAc7G,CAAd,CAAkB0G,CAAA,CAAM,CAAN,CAAAzG,OAAlB,CAERmG,EAAA,CAAQK,CAAR,CACA,OAAOZ,EAAA,CAAUzF,CAAAX,KAAA,CAAU,EAAV,CAAV,CAtBiC,CARmC,CAAlC,CAA7C,CApoBsC,CAArC,CAAD,CAusBGT,MAvsBH,CAusBWA,MAAAC,QAvsBX;", "sources":["angular-sanitize.js"], -"names":["window","angular","undefined","sanitizeText","chars","buf","htmlSanitizeWriter","writer","noop","join","toMap","str","lowercaseKeys","obj","items","split","i","length","lowercase","htmlParser","html","handler","inertBodyElement","innerHTML","mXSSAttempts","$sanitizeMinErr","document","documentMode","stripCustomNsAttrs","node","firstChild","nodeType","start","nodeName","toLowerCase","attrToMap","attributes","textContent","nextNode","end","nextSibling","parentNode","removeChild","attrs","map","ii","attr","name","value","encodeEntities","replace","SURROGATE_PAIR_REGEXP","hi","charCodeAt","low","NON_ALPHANUMERIC_REGEXP","uriValidator","ignoreCurrentElement","out","bind","push","tag","blockedElements","validElements","forEach","key","lkey","isImage","validAttrs","uriAttrs","voidElements","Node","ELEMENT_NODE","l","attrNode","attrName","indexOf","removeAttributeNode","$$minErr","optionalEndTagBlockElements","optionalEndTagInlineElements","optionalEndTagElements","extend","blockElements","inlineElements","svgElements","htmlAttrs","svgAttrs","implementation","doc","createHTMLDocument","bodyElements","getElementsByTagName","documentElement","getDocumentElement","createElement","appendChild","module","provider","$SanitizeProvider","svgEnabled","$get","$$sanitizeUri","uri","test","enableSvg","this.enableSvg","isDefined","filter","$sanitize","LINKY_URL_REGEXP","MAILTO_REGEXP","text","target","addText","addLink","url","isFunction","isObject","raw","match","index","substr","substring"] +"names":["window","angular","undefined","sanitizeText","chars","buf","htmlSanitizeWriter","writer","noop","join","toMap","str","lowercaseKeys","obj","items","split","i","length","lowercase","htmlParser","html","handler","inertBodyElement","innerHTML","mXSSAttempts","$sanitizeMinErr","document","documentMode","stripCustomNsAttrs","node","firstChild","nodeType","start","nodeName","toLowerCase","attrToMap","attributes","textContent","nextNode","end","nextSibling","parentNode","removeChild","attrs","map","ii","attr","name","value","encodeEntities","replace","SURROGATE_PAIR_REGEXP","hi","charCodeAt","low","NON_ALPHANUMERIC_REGEXP","uriValidator","ignoreCurrentElement","out","bind","push","tag","blockedElements","validElements","forEach","key","lkey","isImage","validAttrs","uriAttrs","voidElements","Node","ELEMENT_NODE","l","attrNode","attrName","indexOf","removeAttributeNode","$$minErr","optionalEndTagBlockElements","optionalEndTagInlineElements","optionalEndTagElements","extend","blockElements","inlineElements","svgElements","htmlAttrs","svgAttrs","implementation","doc","createHTMLDocument","bodyElements","getElementsByTagName","documentElement","getDocumentElement","createElement","appendChild","module","provider","$SanitizeProvider","svgEnabled","$get","$$sanitizeUri","uri","test","enableSvg","this.enableSvg","isDefined","filter","$sanitize","LINKY_URL_REGEXP","MAILTO_REGEXP","linkyMinErr","isString","text","target","addText","addLink","url","isFunction","isObject","raw","match","index","substr","substring"] } diff --git a/public/vendor/angular-sanitize/bower.json b/public/vendor/angular-sanitize/bower.json index 49cdd729c75..a037b7f7703 100644 --- a/public/vendor/angular-sanitize/bower.json +++ b/public/vendor/angular-sanitize/bower.json @@ -1,9 +1,10 @@ { "name": "angular-sanitize", - "version": "1.5.0-rc.0", + "version": "1.5.1-build.4601+sha.c966876", + "license": "MIT", "main": "./angular-sanitize.js", "ignore": [], "dependencies": { - "angular": "1.5.0-rc.0" + "angular": "1.5.1-build.4601+sha.c966876" } } diff --git a/public/vendor/angular-sanitize/package.json b/public/vendor/angular-sanitize/package.json index c50d9a3b581..22f91ca1a68 100644 --- a/public/vendor/angular-sanitize/package.json +++ b/public/vendor/angular-sanitize/package.json @@ -1,6 +1,6 @@ { "name": "angular-sanitize", - "version": "1.5.0-rc.0", + "version": "1.5.1-build.4601+sha.c966876", "description": "AngularJS module for sanitizing HTML", "main": "index.js", "scripts": { diff --git a/public/vendor/angular/.bower.json b/public/vendor/angular/.bower.json index 0b1eb01a266..e79291c5559 100644 --- a/public/vendor/angular/.bower.json +++ b/public/vendor/angular/.bower.json @@ -1,17 +1,18 @@ { "name": "angular", - "version": "1.5.0-rc.0", + "version": "1.5.1-build.4601+sha.c966876", + "license": "MIT", "main": "./angular.js", "ignore": [], "dependencies": {}, "homepage": "https://github.com/angular/bower-angular", - "_release": "1.5.0-rc.0", + "_release": "1.5.1-build.4601+sha.c966876", "_resolution": { "type": "version", - "tag": "v1.5.0-rc.0", - "commit": "7ca341e6db77f5d8d93228335347b193a7af25c5" + "tag": "v1.5.1-build.4601+sha.c966876", + "commit": "90b6eb3e58a192be90411d76f62a66a51019c877" }, "_source": "git://github.com/angular/bower-angular.git", - "_target": "1.5.0-rc.0", + "_target": "~1.5.1", "_originalSource": "angular" } \ No newline at end of file diff --git a/public/vendor/angular/angular.js b/public/vendor/angular/angular.js index e3b322a4859..7a8f983b2e1 100644 --- a/public/vendor/angular/angular.js +++ b/public/vendor/angular/angular.js @@ -1,6 +1,6 @@ /** - * @license AngularJS v1.5.0-rc.0 - * (c) 2010-2015 Google, Inc. http://angularjs.org + * @license AngularJS v1.5.1-build.4601+sha.c966876 + * (c) 2010-2016 Google, Inc. http://angularjs.org * License: MIT */ (function(window, document, undefined) {'use strict'; @@ -57,7 +57,7 @@ function minErr(module, ErrorConstructor) { return match; }); - message += '\nhttp://errors.angularjs.org/1.5.0-rc.0/' + + message += '\nhttp://errors.angularjs.org/1.5.1-build.4601+sha.c966876/' + (module ? module + '/' : '') + code; for (i = SKIP_INDEXES, paramPrefix = '?'; i < templateArgs.length; i++, paramPrefix = '&') { @@ -188,29 +188,9 @@ var REGEX_STRING_REGEXP = /^\/(.+)\/([a-z]*)$/; // This is used so that it's possible for internal tests to create mock ValidityStates. var VALIDITY_STATE_PROPERTY = 'validity'; -/** - * @ngdoc function - * @name angular.lowercase - * @module ng - * @kind function - * - * @description Converts the specified string to lowercase. - * @param {string} string String to be converted to lowercase. - * @returns {string} Lowercased string. - */ -var lowercase = function(string) {return isString(string) ? string.toLowerCase() : string;}; var hasOwnProperty = Object.prototype.hasOwnProperty; -/** - * @ngdoc function - * @name angular.uppercase - * @module ng - * @kind function - * - * @description Converts the specified string to uppercase. - * @param {string} string String to be converted to uppercase. - * @returns {string} Uppercased string. - */ +var lowercase = function(string) {return isString(string) ? string.toLowerCase() : string;}; var uppercase = function(string) {return isString(string) ? string.toUpperCase() : string;}; @@ -230,7 +210,7 @@ var manualUppercase = function(s) { // String#toLowerCase and String#toUpperCase don't produce correct results in browsers with Turkish // locale, for this reason we need to detect this case and redefine lowercase/uppercase methods -// with correct but slower alternatives. +// with correct but slower alternatives. See https://github.com/angular/angular.js/issues/11387 if ('i' !== 'I'.toLowerCase()) { lowercase = manualLowercase; uppercase = manualUppercase; @@ -273,7 +253,7 @@ function isArrayLike(obj) { // arrays, strings and jQuery/jqLite objects are array like // * jqLite is either the jQuery or jqLite constructor function - // * we have to check the existance of jqLite first as this method is called + // * we have to check the existence of jqLite first as this method is called // via the forEach method when constructing the jqLite object in the first place if (isArray(obj) || isString(obj) || (jqLite && obj instanceof jqLite)) return true; @@ -284,7 +264,8 @@ function isArrayLike(obj) { // NodeList objects (with `item` method) and // other objects with suitable length characteristics are array-like return isNumber(length) && - (length >= 0 && (length - 1) in obj || typeof obj.item == 'function'); + (length >= 0 && ((length - 1) in obj || obj instanceof Array) || typeof obj.item == 'function'); + } /** @@ -381,7 +362,7 @@ function forEachSorted(obj, iterator, context) { * @returns {function(*, string)} */ function reverseParams(iteratorFn) { - return function(value, key) { iteratorFn(key, value); }; + return function(value, key) {iteratorFn(key, value);}; } /** @@ -752,6 +733,10 @@ function isTypedArray(value) { return value && isNumber(value.length) && TYPED_ARRAY_REGEXP.test(toString.call(value)); } +function isArrayBuffer(obj) { + return toString.call(obj) === '[object ArrayBuffer]'; +} + var trim = function(value) { return isString(value) ? value.trim() : value; @@ -789,7 +774,7 @@ function isElement(node) { * @returns {object} in the form of {key1:true, key2:true, ...} */ function makeMap(str) { - var obj = {}, items = str.split(","), i; + var obj = {}, items = str.split(','), i; for (i = 0; i < items.length; i++) { obj[items[i]] = true; } @@ -876,7 +861,7 @@ function copy(source, destination) { var stackDest = []; if (destination) { - if (isTypedArray(destination)) { + if (isTypedArray(destination) || isArrayBuffer(destination)) { throw ngMinErr('cpta', "Can't copy! TypedArray destination cannot be mutated."); } if (source === destination) { @@ -950,22 +935,10 @@ function copy(source, destination) { } var needsRecurse = false; - var destination; + var destination = copyType(source); - if (isArray(source)) { - destination = []; - needsRecurse = true; - } else if (isTypedArray(source)) { - destination = new source.constructor(source); - } 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 (isFunction(source.cloneNode)) { - destination = source.cloneNode(true); - } else { - destination = Object.create(getPrototypeOf(source)); + if (destination === undefined) { + destination = isArray(source) ? [] : Object.create(getPrototypeOf(source)); needsRecurse = true; } @@ -976,6 +949,45 @@ function copy(source, destination) { ? copyRecurse(source, destination) : destination; } + + function copyType(source) { + switch (toString.call(source)) { + case '[object Int8Array]': + case '[object Int16Array]': + case '[object Int32Array]': + case '[object Float32Array]': + case '[object Float64Array]': + case '[object Uint8Array]': + case '[object Uint8ClampedArray]': + case '[object Uint16Array]': + case '[object Uint32Array]': + return new source.constructor(copyElement(source.buffer)); + + case '[object ArrayBuffer]': + //Support: IE10 + if (!source.slice) { + var copied = new ArrayBuffer(source.byteLength); + new Uint8Array(copied).set(new Uint8Array(source)); + return copied; + } + return source.slice(0); + + case '[object Boolean]': + case '[object Number]': + case '[object String]': + case '[object Date]': + return new source.constructor(source.valueOf()); + + case '[object RegExp]': + var re = new RegExp(source.source, source.toString().match(/[^\/]*$/)[0]); + re.lastIndex = source.lastIndex; + return re; + } + + if (isFunction(source.cloneNode)) { + return source.cloneNode(true); + } + } } /** @@ -1038,38 +1050,37 @@ function equals(o1, o2) { if (o1 === null || o2 === null) return false; if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN 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)) { - return isRegExp(o2) ? o1.toString() == o2.toString() : false; - } else { - if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) || - isArray(o2) || isDate(o2) || isRegExp(o2)) return false; - keySet = createMap(); - for (key in o1) { - if (key.charAt(0) === '$' || isFunction(o1[key])) continue; + if (t1 == t2 && 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; - keySet[key] = true; - } - for (key in o2) { - if (!(key in keySet) && - key.charAt(0) !== '$' && - isDefined(o2[key]) && - !isFunction(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)) { + if (!isRegExp(o2)) return false; + return o1.toString() == o2.toString(); + } else { + if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) || + isArray(o2) || isDate(o2) || isRegExp(o2)) return false; + keySet = createMap(); + 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 (!(key in keySet) && + key.charAt(0) !== '$' && + isDefined(o2[key]) && + !isFunction(o2[key])) return false; + } + return true; } } return false; @@ -1246,7 +1257,7 @@ function toJsonReplacer(key, value) { * @returns {string|undefined} JSON-ified string representing `obj`. */ function toJson(obj, pretty) { - if (typeof obj === 'undefined') return undefined; + if (isUndefined(obj)) return undefined; if (!isNumber(pretty)) { pretty = pretty ? 2 : null; } @@ -1273,7 +1284,10 @@ function fromJson(json) { } +var ALL_COLONS = /:/g; function timezoneToOffset(timezone, fallback) { + // IE/Edge do not "understand" colon (`:`) in timezone + timezone = timezone.replace(ALL_COLONS, ''); var requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000; return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset; } @@ -1288,8 +1302,9 @@ function addDateMinutes(date, minutes) { function convertTimezoneToLocal(date, timezone, reverse) { reverse = reverse ? -1 : 1; - var timezoneOffset = timezoneToOffset(timezone, date.getTimezoneOffset()); - return addDateMinutes(date, reverse * (timezoneOffset - date.getTimezoneOffset())); + var dateTimezoneOffset = date.getTimezoneOffset(); + var timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset); + return addDateMinutes(date, reverse * (timezoneOffset - dateTimezoneOffset)); } @@ -1308,7 +1323,7 @@ function startingTag(element) { return element[0].nodeType === NODE_TYPE_TEXT ? lowercase(elemHtml) : elemHtml. match(/^(<[^>]+>)/)[1]. - replace(/^<([\w\-]+)/, function(match, nodeName) { return '<' + lowercase(nodeName); }); + replace(/^<([\w\-]+)/, function(match, nodeName) {return '<' + lowercase(nodeName);}); } catch (e) { return lowercase(elemHtml); } @@ -1456,10 +1471,17 @@ function getNgAttribute(element, ngAttr) { * designates the **root element** of the application and is typically placed near the root element * of the page - e.g. on the `` or `` tags. * - * Only one AngularJS application can be auto-bootstrapped per HTML document. The first `ngApp` - * found in the document will be used to define the root element to auto-bootstrap as an - * application. To run multiple applications in an HTML document you must manually bootstrap them using - * {@link angular.bootstrap} instead. AngularJS applications cannot be nested within each other. + * There are a few things to keep in mind when using `ngApp`: + * - only one AngularJS application can be auto-bootstrapped per HTML document. The first `ngApp` + * found in the document will be used to define the root element to auto-bootstrap as an + * application. To run multiple applications in an HTML document you must manually bootstrap them using + * {@link angular.bootstrap} instead. + * - AngularJS applications cannot be nested within each other. + * - Do not use a directive that uses {@link ng.$compile#transclusion transclusion} on the same element as `ngApp`. + * This includes directives such as {@link ng.ngIf `ngIf`}, {@link ng.ngInclude `ngInclude`} and + * {@link ngRoute.ngView `ngView`}. + * Doing this misplaces the app {@link ng.$rootElement `$rootElement`} and the app's {@link auto.$injector injector}, + * causing animations to stop working and making the injector inaccessible from outside the app. * * You can specify an **AngularJS module** to be used as the root module for the application. This * module will be loaded into the {@link auto.$injector} when the application is bootstrapped. It @@ -1599,16 +1621,25 @@ function angularInit(element, bootstrap) { * @description * Use this function to manually start up angular application. * - * See: {@link guide/bootstrap Bootstrap} - * - * Note that Protractor based end-to-end tests cannot use this function to bootstrap manually. - * They must use {@link ng.directive:ngApp ngApp}. + * For more information, see the {@link guide/bootstrap Bootstrap guide}. * * Angular will detect if it has been loaded into the browser more than once and only allow the * first loaded script to be bootstrapped and will report a warning to the browser console for * each of the subsequent scripts. This prevents strange results in applications, where otherwise * multiple instances of Angular try to work on the DOM. * + *
+ * **Note:** Protractor based end-to-end tests cannot use this function to bootstrap manually. + * They must use {@link ng.directive:ngApp ngApp}. + *
+ * + *
+ * **Note:** Do not bootstrap the app on an element with a directive that uses {@link ng.$compile#transclusion transclusion}, + * such as {@link ng.ngIf `ngIf`}, {@link ng.ngInclude `ngInclude`} and {@link ngRoute.ngView `ngView`}. + * Doing this misplaces the app {@link ng.$rootElement `$rootElement`} and the app's {@link auto.$injector injector}, + * causing animations to stop working and making the injector inaccessible from outside the app. + *
+ * * ```html * * @@ -1982,7 +2013,7 @@ function setupModuleLoader(window) { * unspecified then the module is being retrieved for further configuration. * @param {Function=} configFn Optional configuration function for the module. Same as * {@link angular.Module#config Module#config()}. - * @returns {module} new module with the {@link angular.Module} api. + * @returns {angular.Module} new module with the {@link angular.Module} api. */ return function module(name, requires, configFn) { var assertNotHasOwnProperty = function(name, context) { @@ -2194,112 +2225,12 @@ function setupModuleLoader(window) { * @module ng * @param {string} name Name of the component in camel-case (i.e. myComp which will match as my-comp) * @param {Object} options Component definition object (a simplified - * {@link ng.$compile#directive-definition-object directive definition object}), - * has the following properties (all optional): - * - * - `controller` – `{(string|function()=}` – Controller constructor function that should be - * associated with newly created scope or the name of a {@link ng.$compile#-controller- - * registered controller} if passed as a string. Empty function by default. - * - `controllerAs` – `{string=}` – An identifier name for a reference to the controller. - * If present, the controller will be published to scope under the `controllerAs` name. - * If not present, this will default to be the same as the component name. - * - `template` – `{string=|function()=}` – html template as a string or a function that - * returns an html template as a string which should be used as the contents of this component. - * Empty string by default. - * - * If `template` is a function, then it is {@link auto.$injector#invoke injected} with - * the following locals: - * - * - `$element` - Current element - * - `$attrs` - Current attributes object for the element - * - * - `templateUrl` – `{string=|function()=}` – path or function that returns a path to an html - * template that should be used as the contents of this component. - * - * If `templateUrl` is a function, then it is {@link auto.$injector#invoke injected} with - * the following locals: - * - * - `$element` - Current element - * - `$attrs` - Current attributes object for the element - * - `bindings` – `{object=}` – Define DOM attribute binding to component properties. - * Component properties are always bound to the component controller and not to the scope. - * - `transclude` – `{boolean=}` – Whether {@link $compile#transclusion transclusion} is enabled. - * Enabled by default. - * - `isolate` – `{boolean=}` – Whether the new scope is isolated. Isolated by default. - * - `restrict` - `{string=}` - String of subset of {@link ng.$compile#-restrict- EACM} which - * restricts the component to specific directive declaration style. If omitted, this defaults to 'E'. - * - `$canActivate` – `{function()=}` – TBD. - * - `$routeConfig` – `{object=}` – TBD. + * {@link ng.$compile#directive-definition-object directive definition object}) * * @description - * Register a component definition with the compiler. This is short for registering a specific - * subset of directives which represents actual UI components in your application. Component - * definitions are very simple and do not require the complexity behind defining directives. - * Component definitions usually consist only of the template and the controller backing it. - * In order to make the definition easier, components enforce best practices like controllerAs - * and default behaviors like scope isolation, restrict to elements and allow transclusion. - * - * Here are a few examples of how you would usually define components: - * - * ```js - * var myMod = angular.module(...); - * myMod.component('myComp', { - * template: '
My name is {{myComp.name}}
', - * controller: function() { - * this.name = 'shahar'; - * } - * }); - * - * myMod.component('myComp', { - * template: '
My name is {{myComp.name}}
', - * bindings: {name: '@'} - * }); - * - * myMod.component('myComp', { - * templateUrl: 'views/my-comp.html', - * controller: 'MyCtrl as ctrl', - * bindings: {name: '@'} - * }); - * - * ``` - * - * See {@link ng.$compileProvider#directive $compileProvider.directive()}. + * See {@link ng.$compileProvider#component $compileProvider.component()}. */ - component: function(name, options) { - function factory($injector) { - function makeInjectable(fn) { - if (angular.isFunction(fn)) { - return function(tElement, tAttrs) { - return $injector.invoke(fn, this, {$element: tElement, $attrs: tAttrs}); - }; - } else { - return fn; - } - } - - var template = (!options.template && !options.templateUrl ? '' : options.template); - return { - controller: options.controller || function() {}, - controllerAs: identifierForController(options.controller) || options.controllerAs || name, - template: makeInjectable(template), - templateUrl: makeInjectable(options.templateUrl), - transclude: options.transclude === undefined ? true : options.transclude, - scope: options.isolate === false ? true : {}, - bindToController: options.bindings || {}, - restrict: options.restrict || 'E' - }; - } - - if (options.$canActivate) { - factory.$canActivate = options.$canActivate; - } - if (options.$routeConfig) { - factory.$routeConfig = options.$routeConfig; - } - factory.$inject = ['$injector']; - - return moduleInstance.directive(name, factory); - }, + component: invokeLaterAndSetModuleName('$compileProvider', 'component'), /** * @ngdoc method @@ -2452,6 +2383,7 @@ function toDebugString(obj) { $AnchorScrollProvider, $AnimateProvider, $CoreAnimateCssProvider, + $$CoreAnimateJsProvider, $$CoreAnimateQueueProvider, $$AnimateRunnerFactoryProvider, $$AnimateAsyncRunFactoryProvider, @@ -2508,11 +2440,11 @@ function toDebugString(obj) { * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat". */ var version = { - full: '1.5.0-rc.0', // all of these placeholder strings will be replaced by grunt's + full: '1.5.1-build.4601+sha.c966876', // all of these placeholder strings will be replaced by grunt's major: 1, // package task minor: 5, - dot: 0, - codeName: 'oblong-panoptikum' + dot: 1, + codeName: 'snapshot' }; @@ -2614,6 +2546,7 @@ function publishExternalAPI(angular) { $anchorScroll: $AnchorScrollProvider, $animate: $AnimateProvider, $animateCss: $CoreAnimateCssProvider, + $$animateJs: $$CoreAnimateJsProvider, $$animateQueue: $$CoreAnimateQueueProvider, $$AnimateRunner: $$AnimateRunnerFactoryProvider, $$animateAsyncRun: $$AnimateAsyncRunFactoryProvider, @@ -2908,6 +2841,16 @@ function jqLiteParseHTML(html, context) { return []; } +function jqLiteWrapNode(node, wrapper) { + var parent = node.parentNode; + + if (parent) { + parent.replaceChild(wrapper, node); + } + + wrapper.appendChild(node); +} + // IE9-11 has no method "contains" in SVG element and in Node.prototype. Bug #10259. var jqLiteContains = Node.prototype.contains || function(arg) { @@ -3158,7 +3101,7 @@ function jqLiteRemove(element, keepData) { function jqLiteDocumentLoaded(action, win) { win = win || window; if (win.document.readyState === 'complete') { - // Force the action to be run async for consistent behaviour + // Force the action to be run async for consistent behavior // from the action's point of view // i.e. it will definitely not be in a $apply win.setTimeout(action); @@ -3600,12 +3543,7 @@ forEach({ }, wrap: function(element, wrapNode) { - wrapNode = jqLite(wrapNode).eq(0).clone()[0]; - var parent = element.parentNode; - if (parent) { - parent.replaceChild(wrapNode, element); - } - wrapNode.appendChild(element); + jqLiteWrapNode(element, jqLite(wrapNode).eq(0).clone()[0]); }, remove: jqLiteRemove, @@ -4312,8 +4250,20 @@ function annotate(fn, strictDi, name) { * * Register a **service constructor**, which will be invoked with `new` to create the service * instance. - * This is short for registering a service where its provider's `$get` property is the service - * constructor function that will be used to instantiate the service instance. + * This is short for registering a service where its provider's `$get` property is a factory + * function that returns an instance instantiated by the injector from the service constructor + * function. + * + * Internally it looks a bit like this: + * + * ``` + * { + * $get: function() { + * return $injector.instantiate(constructor); + * } + * } + * ``` + * * * You should use {@link auto.$provide#service $provide.service(class)} if you define your service * as a type/class. @@ -4414,7 +4364,7 @@ function annotate(fn, strictDi, name) { * @description * * Register a **service decorator** with the {@link auto.$injector $injector}. A service decorator - * intercepts the creation of a service, allowing it to override or modify the behaviour of the + * intercepts the creation of a service, allowing it to override or modify the behavior of the * service. The object returned by the decorator may be the original service, or a new service * object which replaces or wraps and delegates to the original service. * @@ -4625,48 +4575,67 @@ function createInjector(modulesToLoad, strictDi) { } } + + function injectionArgs(fn, locals, serviceName) { + var args = [], + $inject = createInjector.$$annotate(fn, strictDi, serviceName); + + for (var i = 0, length = $inject.length; i < length; i++) { + var 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, serviceName)); + } + return args; + } + + function isClass(func) { + // IE 9-11 do not support classes and IE9 leaks with the code below. + if (msie <= 11) { + return false; + } + // Workaround for MS Edge. + // Check https://connect.microsoft.com/IE/Feedback/Details/2211653 + return typeof func === 'function' + && /^(?:class\s|constructor\()/.test(Function.prototype.toString.call(func)); + } + function invoke(fn, self, locals, serviceName) { if (typeof locals === 'string') { serviceName = locals; locals = null; } - var args = [], - $inject = createInjector.$$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, serviceName) - ); - } + var args = injectionArgs(fn, locals, serviceName); if (isArray(fn)) { - fn = fn[length]; + fn = fn[fn.length - 1]; } - // http://jsperf.com/angularjs-invoke-apply-vs-switch - // #5388 - return fn.apply(self, args); + if (!isClass(fn)) { + // http://jsperf.com/angularjs-invoke-apply-vs-switch + // #5388 + return fn.apply(self, args); + } else { + args.unshift(null); + return new (Function.prototype.bind.apply(fn, args))(); + } } + function instantiate(Type, locals, serviceName) { // Check if Type is annotated and use just the given function at n-1 as parameter // e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]); - // Object creation: http://jsperf.com/create-constructor/2 - var instance = Object.create((isArray(Type) ? Type[Type.length - 1] : Type).prototype || null); - var returnedValue = invoke(Type, instance, locals, serviceName); - - return isObject(returnedValue) || isFunction(returnedValue) ? returnedValue : instance; + var ctor = (isArray(Type) ? Type[Type.length - 1] : Type); + var args = injectionArgs(Type, locals, serviceName); + // Empty object at position 0 is ignored for invocation with `new`, but required. + args.unshift(null); + return new (Function.prototype.bind.apply(ctor, args))(); } + return { invoke: invoke, instantiate: instantiate, @@ -5005,6 +4974,10 @@ function prepareAnimateOptions(options) { : {}; } +var $$CoreAnimateJsProvider = function() { + this.$get = function() {}; +}; + // this is prefixed with Core since it conflicts with // the animateQueueProvider defined in ngAnimate/animateQueue.js var $$CoreAnimateQueueProvider = function() { @@ -5277,8 +5250,8 @@ var $AnimateProvider = ['$provide', function($provide) { * // remove all the animation event listeners listening for `enter` on the given element and its children * $animate.off('enter', container); * - * // remove the event listener function provided by `listenerFn` that is set - * // to listen for `enter` on the given `element` as well as its children + * // remove the event listener function provided by `callback` that is set + * // to listen for `enter` on the given `container` as well as its children * $animate.off('enter', container, callback); * ``` * @@ -5500,17 +5473,30 @@ var $AnimateProvider = ['$provide', function($provide) { * @kind function * * @description Performs an inline animation on the element which applies the provided to and from CSS styles to the element. - * If any detected CSS transition, keyframe or JavaScript matches the provided className value then the animation will take - * on the provided styles. For example, if a transition animation is set for the given className then the provided from and - * to styles will be applied alongside the given transition. If a JavaScript animation is detected then the provided styles - * will be given in as function paramters into the `animate` method (or as apart of the `options` parameter). + * If any detected CSS transition, keyframe or JavaScript matches the provided className value, then the animation will take + * on the provided styles. For example, if a transition animation is set for the given classNamem, then the provided `from` and + * `to` styles will be applied alongside the given transition. If the CSS style provided in `from` does not have a corresponding + * style in `to`, the style in `from` is applied immediately, and no animation is run. + * If a JavaScript animation is detected then the provided styles will be given in as function parameters into the `animate` + * method (or as part of the `options` parameter): + * + * ```js + * ngModule.animation('.my-inline-animation', function() { + * return { + * animate : function(element, from, to, done, options) { + * //animation + * done(); + * } + * } + * }); + * ``` * * @param {DOMElement} element the element which the CSS styles will be applied to * @param {object} from the from (starting) CSS styles that will be applied to the element and across the animation. * @param {object} to the to (destination) CSS styles that will be applied to the element and across the animation. * @param {string=} className an optional CSS class that will be applied to the element for the duration of the animation. If * this value is left as empty then a CSS class of `ng-inline-animate` will be applied to the element. - * (Note that if no animation is detected then this value will not be appplied to the element.) + * (Note that if no animation is detected then this value will not be applied to the element.) * @param {object=} options an optional collection of options/styles that will be applied to the element * * @return {Promise} the animation callback promise @@ -5556,8 +5542,8 @@ var $$AnimateAsyncRunFactoryProvider = function() { }; var $$AnimateRunnerFactoryProvider = function() { - this.$get = ['$q', '$sniffer', '$$animateAsyncRun', - function($q, $sniffer, $$animateAsyncRun) { + this.$get = ['$q', '$sniffer', '$$animateAsyncRun', '$document', '$timeout', + function($q, $sniffer, $$animateAsyncRun, $document, $timeout) { var INITIAL_STATE = 0; var DONE_PENDING_STATE = 1; @@ -5602,8 +5588,23 @@ var $$AnimateRunnerFactoryProvider = function() { function AnimateRunner(host) { this.setHost(host); + var rafTick = $$animateAsyncRun(); + var timeoutTick = function(fn) { + $timeout(fn, 0, false); + }; + this._doneCallbacks = []; - this._runInAnimationFrame = $$animateAsyncRun(); + this._tick = function(fn) { + var doc = $document[0]; + + // the document may not be ready or attached + // to the module for some internal tests + if (doc && doc.hidden) { + timeoutTick(fn); + } else { + rafTick(fn); + } + }; this._state = 0; } @@ -5676,7 +5677,7 @@ var $$AnimateRunnerFactoryProvider = function() { var self = this; if (self._state === INITIAL_STATE) { self._state = DONE_PENDING_STATE; - self._runInAnimationFrame(function() { + self._tick(function() { self._resolve(response); }); } @@ -5712,10 +5713,14 @@ var $CoreAnimateCssProvider = function() { this.$get = ['$$rAF', '$q', '$$AnimateRunner', function($$rAF, $q, $$AnimateRunner) { return function(element, initialOptions) { - // we always make a copy of the options since - // there should never be any side effects on - // the input data when running `$animateCss`. - var options = copy(initialOptions); + // all of the animation functions should create + // a copy of the options data, however, if a + // parent service has already created a copy then + // we should stick to using that + var options = initialOptions || {}; + if (!options.$$prepared) { + options = copy(options); + } // there is no point in applying the styles since // there is no animation that goes on at all in @@ -6655,7 +6660,7 @@ function $TemplateCacheProvider() { * When this property is set to true, the HTML compiler will collect DOM nodes between * nodes with the attributes `directive-name-start` and `directive-name-end`, and group them * together as the directive elements. It is recommended that this feature be used on directives - * which are not strictly behavioural (such as {@link ngClick}), and which + * which are not strictly behavioral (such as {@link ngClick}), and which * do not manipulate or replace child nodes (such as {@link ngInclude}). * * #### `priority` @@ -6693,35 +6698,62 @@ function $TemplateCacheProvider() { * is bound to the parent scope, via matching attributes on the directive's element: * * * `@` or `@attr` - bind a local scope property to the value of DOM attribute. The result is - * always a string since DOM attributes are strings. If no `attr` name is specified then the - * attribute name is assumed to be the same as the local name. - * Given `` and widget definition - * of `scope: { localName:'@myAttr' }`, then widget scope property `localName` will reflect - * the interpolated value of `hello {{name}}`. As the `name` attribute changes so will the - * `localName` property on the widget scope. The `name` is read from the parent scope (not - * component scope). + * always a string since DOM attributes are strings. If no `attr` name is specified then the + * attribute name is assumed to be the same as the local name. Given `` and the isolate scope definition `scope: { localName:'@myAttr' }`, + * the directive's scope property `localName` will reflect the interpolated value of `hello + * {{name}}`. As the `name` attribute changes so will the `localName` property on the directive's + * scope. The `name` is read from the parent scope (not the directive's scope). * - * * `=` or `=attr` - set up bi-directional binding between a local scope property and the - * parent scope property of name defined via the value of the `attr` attribute. If no `attr` - * name is specified then the attribute name is assumed to be the same as the local name. - * Given `` and widget definition of - * `scope: { localModel:'=myAttr' }`, then widget scope property `localModel` will reflect the + * * `=` or `=attr` - set up a bidirectional binding between a local scope property and an expression + * passed via the attribute `attr`. The expression is evaluated in the context of the parent scope. + * If no `attr` name is specified then the attribute name is assumed to be the same as the local + * name. Given `` and the isolate scope definition `scope: { + * localModel: '=myAttr' }`, the property `localModel` on the directive's scope will reflect the + * value of `parentModel` on the parent scope. Changes to `parentModel` will be reflected in + * `localModel` and vice versa. Optional attributes should be marked as such with a question mark: + * `=?` or `=?attr`. If the binding expression is non-assignable, or if the attribute isn't + * optional and doesn't exist, an exception ({@link error/$compile/nonassign `$compile:nonassign`}) + * will be thrown upon discovering changes to the local value, since it will be impossible to sync + * them back to the parent scope. By default, the {@link ng.$rootScope.Scope#$watch `$watch`} + * method is used for tracking changes, and the equality check is based on object identity. + * However, if an object literal or an array literal is passed as the binding expression, the + * equality check is done by value (using the {@link angular.equals} function). It's also possible + * to watch the evaluated value shallowly with {@link ng.$rootScope.Scope#$watchCollection + * `$watchCollection`}: use `=*` or `=*attr` (`=*?` or `=*?attr` if the attribute is optional). + * + * * `<` or `` and directive definition of + * `scope: { localModel:'` and widget definition of - * `scope: { localFn:'&myAttr' }`, then isolate scope property `localFn` will point to - * a function wrapper for the `count = count + value` expression. Often it's desirable to - * pass data from the isolated scope via an expression to the parent scope, this can be - * done by passing a map of local variable names and values into the expression wrapper fn. - * For example, if the expression is `increment(amount)` then we can specify the amount value - * by calling the `localFn` as `localFn({amount: 22})`. + * One-way binding is useful if you do not plan to propagate changes to your isolated scope bindings + * back to the parent. However, it does not make this completely impossible. + * + * * `&` or `&attr` - provides a way to execute an expression in the context of the parent scope. If + * no `attr` name is specified then the attribute name is assumed to be the same as the local name. + * Given `` and the isolate scope definition `scope: { + * localFn:'&myAttr' }`, the isolate scope property `localFn` will point to a function wrapper for + * the `count = count + value` expression. Often it's desirable to pass data from the isolated scope + * via an expression to the parent scope. This can be done by passing a map of local variable names + * and values into the expression wrapper fn. For example, if the expression is `increment(amount)` + * then we can specify the amount value by calling the `localFn` as `localFn({amount: 22})`. * * In general it's possible to apply more than one directive to one element, but there might be limitations * depending on the type of scope required by the directives. The following points will help explain these limitations. @@ -6739,9 +6771,32 @@ function $TemplateCacheProvider() { * * * #### `bindToController` - * When an isolate scope is used for a component (see above), and `controllerAs` is used, `bindToController: true` will - * allow a component to have its properties bound to the controller, rather than to scope. When the controller - * is instantiated, the initial values of the isolate scope bindings are already available. + * This property is used to bind scope properties directly to the controller. It can be either + * `true` or an object hash with the same format as the `scope` property. Additionally, a controller + * alias must be set, either by using `controllerAs: 'myAlias'` or by specifying the alias in the controller + * definition: `controller: 'myCtrl as myAlias'`. + * + * When an isolate scope is used for a directive (see above), `bindToController: true` will + * allow a component to have its properties bound to the controller, rather than to scope. + * + * After the controller is instantiated, the initial values of the isolate scope bindings will be bound to the controller + * properties. You can access these bindings once they have been initialized by providing a controller method called + * `$onInit`, which is called after all the controllers on an element have been constructed and had their bindings + * initialized. + * + *
+ * **Deprecation warning:** although bindings for non-ES6 class controllers are currently + * bound to `this` before the controller constructor is called, this use is now deprecated. Please place initialization + * code that relies upon bindings inside a `$onInit` method on the controller, instead. + *
+ * + * It is also possible to set `bindToController` to an object hash with the same format as the `scope` property. + * This will set up the scope bindings to the controller directly. Note that `scope` can still be used + * to define which kind of scope is created. By default, no scope is created. Use `scope: {}` to create an isolate + * scope (useful for component directives). + * + * If both `bindToController` and `scope` are defined and have object hashes, `bindToController` overrides `scope`. + * * * #### `controller` * Controller constructor function. The controller is instantiated before the @@ -6769,12 +6824,29 @@ function $TemplateCacheProvider() { * The `$transclude` function also has a method on it, `$transclude.isSlotFilled(slotName)`, which returns * `true` if the specified slot contains content (i.e. one or more DOM nodes). * + * The controller can provide the following methods that act as life-cycle hooks: + * * `$onInit` - Called on each controller after all the controllers on an element have been constructed and + * had their bindings initialized (and before the pre & post linking functions for the directives on + * this element). This is a good place to put initialization code for your controller. + * * #### `require` * Require another directive and inject its controller as the fourth argument to the linking function. The - * `require` takes a string name (or array of strings) of the directive(s) to pass in. If an array is used, the - * injected argument will be an array in corresponding order. If no such directive can be - * found, or if the directive does not have a controller, then an error is raised (unless no link function - * is specified, in which case error checking is skipped). The name can be prefixed with: + * `require` property can be a string, an array or an object: + * * a **string** containing the name of the directive to pass to the linking function + * * an **array** containing the names of directives to pass to the linking function. The argument passed to the + * linking function will be an array of controllers in the same order as the names in the `require` property + * * an **object** whose property values are the names of the directives to pass to the linking function. The argument + * passed to the linking function will also be an object with matching keys, whose values will hold the corresponding + * controllers. + * + * If the `require` property is an object and `bindToController` is truthy, then the required controllers are + * bound to the controller using the keys of the `require` property. This binding occurs after all the controllers + * have been constructed but before `$onInit` is called. + * See the {@link $compileProvider#component} helper for an example of how this can be used. + * + * If no such required directive(s) can be found, or if the directive does not have a controller, then an error is + * raised (unless no link function is specified and the required controllers are not being bound to the directive + * controller, in which case error checking is skipped). The name can be prefixed with: * * * (no prefix) - Locate the required controller on the current element. Throw an error if not found. * * `?` - Attempt to locate the required controller or pass `null` to the `link` fn if not found. @@ -6894,7 +6966,7 @@ function $TemplateCacheProvider() { *
* **Note:** The compile function cannot handle directives that recursively use themselves in their - * own templates or compile functions. Compiling these directives results in an infinite loop and a + * own templates or compile functions. Compiling these directives results in an infinite loop and * stack overflow errors. * * This can be avoided by manually using $compile in the postLink function to imperatively compile @@ -7044,7 +7116,7 @@ function $TemplateCacheProvider() { * content and the `scope` is the newly created transclusion scope, to which the clone is bound. * *
- * **Best Practice**: Always provide a `cloneFn` (clone attach function) when you call a translude function + * **Best Practice**: Always provide a `cloneFn` (clone attach function) when you call a transclude function * since you then get a fresh clone of the original DOM and also have access to the new transclusion scope. *
* @@ -7076,7 +7148,7 @@ function $TemplateCacheProvider() { *
* * The built-in DOM manipulation directives, such as {@link ngIf}, {@link ngSwitch} and {@link ngRepeat} - * automatically destroy their transluded clones as necessary so you do not need to worry about this if + * automatically destroy their transcluded clones as necessary so you do not need to worry about this if * you are simply using {@link ngTransclude} to inject the transclusion into your directive. * * @@ -7101,19 +7173,19 @@ function $TemplateCacheProvider() { * * The `$parent` scope hierarchy will look like this: * - * ``` - * - $rootScope - * - isolate - * - transclusion - * ``` + ``` + - $rootScope + - isolate + - transclusion + ``` * * but the scopes will inherit prototypically from different scopes to their `$parent`. * - * ``` - * - $rootScope - * - transclusion - * - isolate - * ``` + ``` + - $rootScope + - transclusion + - isolate + ``` * * * ### Attributes @@ -7121,10 +7193,9 @@ function $TemplateCacheProvider() { * The {@link ng.$compile.directive.Attributes Attributes} object - passed as a parameter in the * `link()` or `compile()` functions. It has a variety of uses. * - * accessing *Normalized attribute names:* - * Directives like 'ngBind' can be expressed in many ways: 'ng:bind', `data-ng-bind`, or 'x-ng-bind'. - * the attributes object allows for normalized access to - * the attributes. + * * *Accessing normalized attribute names:* Directives like 'ngBind' can be expressed in many ways: + * 'ng:bind', `data-ng-bind`, or 'x-ng-bind'. The attributes object allows for normalized access + * to the attributes. * * * *Directive inter-communication:* All directives share the same instance of the attributes * object which allows the directives to use the attributes object as inter directive @@ -7245,8 +7316,15 @@ function $TemplateCacheProvider() { * directives; if given, it will be passed through to the link functions of * directives found in `element` during compilation. * * `transcludeControllers` - an object hash with keys that map controller names - * to controller instances; if given, it will make the controllers - * available to directives. + * to a hash with the key `instance`, which maps to the controller instance; + * if given, it will make the controllers available to directives on the compileNode: + * ``` + * { + * parent: { + * instance: parentControllerInstance + * } + * } + * ``` * * `futureParentElement` - defines the parent to which the `cloneAttachFn` will add * the cloned elements; only needed for transcludes that are allowed to contain non html * elements (e.g. SVG elements). See also the directive.controller property. @@ -7307,7 +7385,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { var EVENT_HANDLER_ATTR_REGEXP = /^(on[a-z]+|formaction)$/; function parseIsolateBindings(scope, directiveName, isController) { - var LOCAL_REGEXP = /^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/; + var LOCAL_REGEXP = /^\s*([@&<]|=(\*?))(\??)\s*(\w*)\s*$/; var bindings = {}; @@ -7394,8 +7472,8 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { * @param {string|Object} name Name of the directive in camel-case (i.e. ngBind which * will match as ng-bind), or an object map of directives where the keys are the * names and the values are the factories. - * @param {Function|Array} directiveFactory An injectable directive factory function. See - * {@link guide/directive} for more info. + * @param {Function|Array} directiveFactory An injectable directive factory function. See the + * {@link guide/directive directive guide} and the {@link $compile compile API} for more info. * @returns {ng.$compileProvider} Self for chaining. */ this.directive = function registerDirective(name, directiveFactory) { @@ -7442,6 +7520,128 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { return this; }; + /** + * @ngdoc method + * @name $compileProvider#component + * @module ng + * @param {string} name Name of the component in camelCase (i.e. `myComp` which will match ``) + * @param {Object} options Component definition object (a simplified + * {@link ng.$compile#directive-definition-object directive definition object}), + * with the following properties (all optional): + * + * - `controller` – `{(string|function()=}` – controller constructor function that should be + * associated with newly created scope or the name of a {@link ng.$compile#-controller- + * registered controller} if passed as a string. An empty `noop` function by default. + * - `controllerAs` – `{string=}` – identifier name for to reference the controller in the component's scope. + * If present, the controller will be published to scope under the `controllerAs` name. + * If not present, this will default to be `$ctrl`. + * - `template` – `{string=|function()=}` – html template as a string or a function that + * returns an html template as a string which should be used as the contents of this component. + * Empty string by default. + * + * If `template` is a function, then it is {@link auto.$injector#invoke injected} with + * the following locals: + * + * - `$element` - Current element + * - `$attrs` - Current attributes object for the element + * + * - `templateUrl` – `{string=|function()=}` – path or function that returns a path to an html + * template that should be used as the contents of this component. + * + * If `templateUrl` is a function, then it is {@link auto.$injector#invoke injected} with + * the following locals: + * + * - `$element` - Current element + * - `$attrs` - Current attributes object for the element + * + * - `bindings` – `{object=}` – defines bindings between DOM attributes and component properties. + * Component properties are always bound to the component controller and not to the scope. + * See {@link ng.$compile#-bindtocontroller- `bindToController`}. + * - `transclude` – `{boolean=}` – whether {@link $compile#transclusion content transclusion} is enabled. + * Disabled by default. + * - `$...` – `{function()=}` – additional annotations to provide to the directive factory function. + * + * @returns {ng.$compileProvider} the compile provider itself, for chaining of function calls. + * @description + * Register a **component definition** with the compiler. This is a shorthand for registering a special + * type of directive, which represents a self-contained UI component in your application. Such components + * are always isolated (i.e. `scope: {}`) and are always restricted to elements (i.e. `restrict: 'E'`). + * + * Component definitions are very simple and do not require as much configuration as defining general + * directives. Component definitions usually consist only of a template and a controller backing it. + * + * In order to make the definition easier, components enforce best practices like use of `controllerAs`, + * `bindToController`. They always have **isolate scope** and are restricted to elements. + * + * Here are a few examples of how you would usually define components: + * + * ```js + * var myMod = angular.module(...); + * myMod.component('myComp', { + * template: '
My name is {{$ctrl.name}}
', + * controller: function() { + * this.name = 'shahar'; + * } + * }); + * + * myMod.component('myComp', { + * template: '
My name is {{$ctrl.name}}
', + * bindings: {name: '@'} + * }); + * + * myMod.component('myComp', { + * templateUrl: 'views/my-comp.html', + * controller: 'MyCtrl as ctrl', + * bindings: {name: '@'} + * }); + * + * ``` + * For more examples, and an in-depth guide, see the {@link guide/component component guide}. + * + *
+ * See also {@link ng.$compileProvider#directive $compileProvider.directive()}. + */ + this.component = function registerComponent(name, options) { + var controller = options.controller || function() {}; + + function factory($injector) { + function makeInjectable(fn) { + if (isFunction(fn) || isArray(fn)) { + return function(tElement, tAttrs) { + return $injector.invoke(fn, this, {$element: tElement, $attrs: tAttrs}); + }; + } else { + return fn; + } + } + + var template = (!options.template && !options.templateUrl ? '' : options.template); + return { + controller: controller, + controllerAs: identifierForController(options.controller) || options.controllerAs || '$ctrl', + template: makeInjectable(template), + templateUrl: makeInjectable(options.templateUrl), + transclude: options.transclude, + scope: {}, + bindToController: options.bindings || {}, + restrict: 'E', + require: options.require + }; + } + + // Copy any annotation properties (starting with $) over to the factory function + // These could be used by libraries such as the new component router + forEach(options, function(val, key) { + if (key.charAt(0) === '$') { + factory[key] = val; + } + }); + + factory.$inject = ['$injector']; + + return this.directive(name, factory); + }; + /** * @ngdoc method @@ -7535,9 +7735,9 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { this.$get = [ '$injector', '$interpolate', '$exceptionHandler', '$templateRequest', '$parse', - '$controller', '$rootScope', '$document', '$sce', '$animate', '$$sanitizeUri', + '$controller', '$rootScope', '$sce', '$animate', '$$sanitizeUri', function($injector, $interpolate, $exceptionHandler, $templateRequest, $parse, - $controller, $rootScope, $document, $sce, $animate, $$sanitizeUri) { + $controller, $rootScope, $sce, $animate, $$sanitizeUri) { var SIMPLE_ATTR_NAME = /^\w/; var specialAttrHolder = document.createElement('div'); @@ -7755,7 +7955,8 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { * @param {string} key Normalized key. (ie ngAttribute) . * @param {function(interpolatedValue)} fn Function that will be called whenever the interpolated value of the attribute changes. - * See the {@link guide/directive#text-and-attribute-bindings Directives} guide for more info. + * See the {@link guide/interpolation#how-text-and-attribute-bindings-work Interpolation + * guide} for more info. * @returns {function()} Returns a deregistration function for this observer. */ $observe: function(key, fn) { @@ -7802,7 +8003,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { var startSymbol = $interpolate.startSymbol(), endSymbol = $interpolate.endSymbol(), - denormalizeTemplate = (startSymbol == '{{' || endSymbol == '}}') + denormalizeTemplate = (startSymbol == '{{' && endSymbol == '}}') ? identity : function denormalizeTemplate(template) { return template.replace(/\{\{/g, startSymbol).replace(/}}/g, endSymbol); @@ -7846,13 +8047,19 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { // modify it. $compileNodes = jqLite($compileNodes); } + + var NOT_EMPTY = /\S+/; + // We can not compile top level text elements since text nodes can be merged and we will // not be able to attach scope data to them, so we will wrap them in - forEach($compileNodes, function(node, index) { - if (node.nodeType == NODE_TYPE_TEXT && node.nodeValue.match(/\S+/) /* non-empty */) { - $compileNodes[index] = jqLite(node).wrap('').parent()[0]; + for (var i = 0, len = $compileNodes.length; i < len; i++) { + var domNode = $compileNodes[i]; + + if (domNode.nodeType === NODE_TYPE_TEXT && domNode.nodeValue.match(NOT_EMPTY) /* non-empty */) { + jqLiteWrapNode(domNode, $compileNodes[i] = document.createElement('span')); } - }); + } + var compositeLinkFn = compileNodes($compileNodes, transcludeFn, $compileNodes, maxPriority, ignoreDirective, previousCompileContext); @@ -7923,7 +8130,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { if (!node) { return 'html'; } else { - return nodeName_(node) !== 'foreignobject' && node.toString().match(/SVG/) ? 'svg' : 'html'; + return nodeName_(node) !== 'foreignobject' && toString.call(node).match(/SVG/) ? 'svg' : 'html'; } } @@ -8632,6 +8839,11 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { for (var i = 0, ii = require.length; i < ii; i++) { value[i] = getControllers(directiveName, require[i], $element, elementControllers); } + } else if (isObject(require)) { + value = {}; + forEach(require, function(controller, property) { + value[property] = getControllers(directiveName, controller, $element, elementControllers); + }); } return value || null; @@ -8669,7 +8881,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { } function nodeLinkFn(childLinkFn, scope, linkNode, $rootElement, boundTranscludeFn) { - var linkFn, isolateScope, controllerScope, elementControllers, transcludeFn, $element, + var i, ii, linkFn, isolateScope, controllerScope, elementControllers, transcludeFn, $element, attrs, removeScopeBindingWatches, removeControllerBindingWatches; if (compileNode === linkNode) { @@ -8740,6 +8952,21 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { } } + // Bind the required controllers to the controller, if `require` is an object and `bindToController` is truthy + forEach(controllerDirectives, function(controllerDirective, name) { + var require = controllerDirective.require; + if (controllerDirective.bindToController && !isArray(require) && isObject(require)) { + extend(elementControllers[name].instance, getControllers(name, require, $element, elementControllers)); + } + }); + + // Trigger the `$onInit` method on all controllers that have one + forEach(elementControllers, function(controller) { + if (isFunction(controller.instance.$onInit)) { + controller.instance.$onInit(); + } + }); + // PRELINKING for (i = 0, ii = preLinkFns.length; i < ii; i++) { linkFn = preLinkFns[i]; @@ -9294,7 +9521,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { optional = definition.optional, mode = definition.mode, // @, =, or & lastValue, - parentGet, parentSet, compare; + parentGet, parentSet, compare, removeWatch; switch (mode) { @@ -9308,10 +9535,15 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { } }); attrs.$$observers[attrName].$$scope = scope; - if (isString(attrs[attrName])) { + lastValue = attrs[attrName]; + if (isString(lastValue)) { // If the attribute has been provided then we trigger an interpolation to ensure // the value is there for use in the link fn - destination[scopeName] = $interpolate(attrs[attrName])(scope); + destination[scopeName] = $interpolate(lastValue)(scope); + } else if (isBoolean(lastValue)) { + // If the attributes is one of the BOOLEAN_ATTR then Angular will have converted + // the value to boolean rather than a string, so we special case this situation + destination[scopeName] = lastValue; } break; @@ -9332,8 +9564,8 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { // reset the change, or we will throw this exception on every $digest lastValue = destination[scopeName] = parentGet(scope); throw $compileMinErr('nonassign', - "Expression '{0}' used with directive '{1}' is non-assignable!", - attrs[attrName], directive.name); + "Expression '{0}' in attribute '{1}' used with directive '{2}' is non-assignable!", + attrs[attrName], attrName, directive.name); }; lastValue = destination[scopeName] = parentGet(scope); var parentValueWatch = function parentValueWatch(parentValue) { @@ -9350,7 +9582,6 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { return lastValue = parentValue; }; parentValueWatch.$stateful = true; - var removeWatch; if (definition.collection) { removeWatch = scope.$watchCollection(attrs[attrName], parentValueWatch); } else { @@ -9359,6 +9590,24 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { removeWatchCollection.push(removeWatch); break; + case '<': + if (!hasOwnProperty.call(attrs, attrName)) { + if (optional) break; + attrs[attrName] = void 0; + } + if (optional && !attrs[attrName]) break; + + parentGet = $parse(attrs[attrName]); + + destination[scopeName] = parentGet(scope); + + removeWatch = scope.$watch(parentGet, function parentValueWatchAction(newParentValue) { + destination[scopeName] = newParentValue; + }, parentGet.literal); + + removeWatchCollection.push(removeWatch); + break; + case '&': // Don't assign Object.prototype method to scope parentGet = attrs.hasOwnProperty(attrName) ? $parse(attrs[attrName]) : noop; @@ -9487,7 +9736,7 @@ function removeComments(jqNodes) { var $controllerMinErr = minErr('$controller'); -var CNTRL_REG = /^(\S+)(\s+as\s+(\w+))?$/; +var CNTRL_REG = /^(\S+)(\s+as\s+([\w$]+))?$/; function identifierForController(controller, ident) { if (ident && isString(ident)) return ident; if (isString(controller)) { @@ -10506,13 +10755,13 @@ function $HttpProvider() { * * ### Cross Site Request Forgery (XSRF) Protection * - * [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery) is a technique by which - * an unauthorized site can gain your user's private data. Angular provides a mechanism - * to counter XSRF. When performing XHR requests, the $http service reads a token from a cookie - * (by default, `XSRF-TOKEN`) and sets it as an HTTP header (`X-XSRF-TOKEN`). Since only - * JavaScript that runs on your domain could read the cookie, your server can be assured that - * the XHR came from JavaScript running on your domain. The header will not be set for - * cross-domain requests. + * [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery) is an attack technique by + * which the attacker can trick an authenticated user into unknowingly executing actions on your + * website. Angular provides a mechanism to counter XSRF. When performing XHR requests, the + * $http service reads a token from a cookie (by default, `XSRF-TOKEN`) and sets it as an HTTP + * header (`X-XSRF-TOKEN`). Since only JavaScript that runs on your domain could read the + * cookie, your server can be assured that the XHR came from JavaScript running on your domain. + * The header will not be set for cross-domain requests. * * To take advantage of this, your server needs to set a token in a JavaScript readable session * cookie called `XSRF-TOKEN` on the first HTTP GET request. On subsequent XHR requests the @@ -10791,7 +11040,7 @@ function $HttpProvider() { defHeaders = extend({}, defHeaders.common, defHeaders[lowercase(config.method)]); - // using for-in instead of forEach to avoid unecessary iteration after header has been found + // using for-in instead of forEach to avoid unnecessary iteration after header has been found defaultHeadersIteration: for (defHeaderName in defHeaders) { lowercaseDefHeaderName = lowercase(defHeaderName); @@ -11299,7 +11548,7 @@ $interpolateMinErr.interr = function(text, err) { * * * @example - + -
+
//demo.label//
@@ -13061,23 +13310,22 @@ function ensureSafeMemberName(name, fullExpression) { return name; } -function getStringValue(name, fullExpression) { - // From the JavaScript docs: +function getStringValue(name) { // Property names must be strings. This means that non-string objects cannot be used // as keys in an object. Any non-string object, including a number, is typecasted // into a string via the toString method. + // -- MDN, https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Property_accessors#Property_names // - // So, to ensure that we are checking the same `name` that JavaScript would use, - // we cast it to a string, if possible. - // Doing `name + ''` can cause a repl error if the result to `toString` is not a string, - // this is, this will handle objects that misbehave. - name = name + ''; - if (!isString(name)) { - throw $parseMinErr('iseccst', - 'Cannot convert object to primitive value! ' - + 'Expression: {0}', fullExpression); - } - return name; + // So, to ensure that we are checking the same `name` that JavaScript would use, we cast it + // to a string. It's not always possible. If `name` is an object and its `toString` method is + // 'broken' (doesn't return a string, isn't a function, etc.), an error will be thrown: + // + // TypeError: Cannot convert object to primitive value + // + // For performance reasons, we don't catch this error here and allow it to propagate up the call + // stack. Note that you'll get the same error in JavaScript if you try to access a property using + // such a 'broken' object as a key. + return name + ''; } function ensureSafeObject(obj, fullExpression) { @@ -14244,7 +14492,7 @@ ASTCompiler.prototype = { }, getStringValue: function(item) { - this.assign(item, 'getStringValue(' + item + ',text)'); + this.assign(item, 'getStringValue(' + item + ')'); }, ensureSafeAssignContext: function(item) { @@ -14696,9 +14944,6 @@ Parser.prototype = { } }; -var getterFnCacheDefault = createMap(); -var getterFnCacheExpensive = createMap(); - function isPossiblyDangerousMemberName(name) { return name == 'constructor'; } @@ -14774,10 +15019,19 @@ function $ParseProvider() { csp: noUnsafeEval, expensiveChecks: true }; + var runningChecksEnabled = false; - return function $parse(exp, interceptorFn, expensiveChecks) { + $parse.$$runningExpensiveChecks = function() { + return runningChecksEnabled; + }; + + return $parse; + + function $parse(exp, interceptorFn, expensiveChecks) { var parsedExpression, oneTime, cacheKey; + expensiveChecks = expensiveChecks || runningChecksEnabled; + switch (typeof exp) { case 'string': exp = exp.trim(); @@ -14803,6 +15057,9 @@ function $ParseProvider() { } else if (parsedExpression.inputs) { parsedExpression.$$watchDelegate = inputsWatchDelegate; } + if (expensiveChecks) { + parsedExpression = expensiveChecksInterceptor(parsedExpression); + } cache[cacheKey] = parsedExpression; } return addInterceptor(parsedExpression, interceptorFn); @@ -14813,7 +15070,31 @@ function $ParseProvider() { default: return addInterceptor(noop, interceptorFn); } - }; + } + + function expensiveChecksInterceptor(fn) { + if (!fn) return fn; + expensiveCheckFn.$$watchDelegate = fn.$$watchDelegate; + expensiveCheckFn.assign = expensiveChecksInterceptor(fn.assign); + expensiveCheckFn.constant = fn.constant; + expensiveCheckFn.literal = fn.literal; + for (var i = 0; fn.inputs && i < fn.inputs.length; ++i) { + fn.inputs[i] = expensiveChecksInterceptor(fn.inputs[i]); + } + expensiveCheckFn.inputs = fn.inputs; + + return expensiveCheckFn; + + function expensiveCheckFn(scope, locals, assign, inputs) { + var expensiveCheckOldValue = runningChecksEnabled; + runningChecksEnabled = true; + try { + return fn(scope, locals, assign, inputs); + } finally { + runningChecksEnabled = expensiveCheckOldValue; + } + } + } function expressionInputDirtyCheck(newValue, oldValueOfValue) { @@ -15025,7 +15306,7 @@ function $ParseProvider() { * * Note: progress/notify callbacks are not currently supported via the ES6-style interface. * - * Note: unlike ES6 behaviour, an exception thrown in the constructor function will NOT implicitly reject the promise. + * Note: unlike ES6 behavior, an exception thrown in the constructor function will NOT implicitly reject the promise. * * However, the more traditional CommonJS-style usage is still available, and documented below. * @@ -15158,7 +15439,7 @@ function $ParseProvider() { * - Q has many more features than $q, but that comes at a cost of bytes. $q is tiny, but contains * all the important functionality needed for common async tasks. * - * # Testing + * # Testing * * ```js * it('should simulate promise', inject(function($q, $rootScope) { @@ -15538,11 +15819,6 @@ function qFactory(nextTick, exceptionHandler) { throw $qMinErr('norslvr', "Expected resolverFn, got '{0}'", resolver); } - if (!(this instanceof Q)) { - // More useful when $Q is the Promise itself. - return new Q(resolver); - } - var deferred = new Deferred(); function resolveFn(value) { @@ -15558,6 +15834,10 @@ function qFactory(nextTick, exceptionHandler) { return deferred.promise; }; + // Let's make the instanceof operator work for promises, so that + // `new $q(fn) instanceof $q` would evaluate to true. + $Q.prototype = Promise.prototype; + $Q.defer = defer; $Q.reject = reject; $Q.when = when; @@ -16341,7 +16621,7 @@ function $RootScopeProvider() { * */ $digest: function() { - var watch, value, last, + var watch, value, last, fn, get, watchers, length, dirty, ttl = TTL, @@ -16387,7 +16667,8 @@ function $RootScopeProvider() { // Most common watches are on primitives, in which case we can short // circuit it with === operator, only when === fails do we use .equals if (watch) { - if ((value = watch.get(current)) !== (last = watch.last) && + get = watch.get; + if ((value = get(current)) !== (last = watch.last) && !(watch.eq ? equals(value, last) : (typeof value === 'number' && typeof last === 'number' @@ -16395,7 +16676,8 @@ function $RootScopeProvider() { dirty = true; lastDirtyWatch = watch; watch.last = watch.eq ? copy(value, null) : value; - watch.fn(value, ((last === initWatchVal) ? value : last), current); + fn = watch.fn; + fn(value, ((last === initWatchVal) ? value : last), current); if (ttl < 5) { logIdx = 4 - ttl; if (!watchLog[logIdx]) watchLog[logIdx] = []; @@ -16595,7 +16877,7 @@ function $RootScopeProvider() { }); } - asyncQueue.push({scope: this, expression: expr, locals: locals}); + asyncQueue.push({scope: this, expression: $parse(expr), locals: locals}); }, $$postDigest: function(fn) { @@ -16687,6 +16969,7 @@ function $RootScopeProvider() { $applyAsync: function(expr) { var scope = this; expr && applyAsyncQueue.push($applyAsyncExpression); + expr = $parse(expr); scheduleApplyAsync(); function $applyAsyncExpression() { @@ -16961,6 +17244,21 @@ function $RootScopeProvider() { }]; } +/** + * @ngdoc service + * @name $rootElement + * + * @description + * The root element of Angular application. This is either the element where {@link + * ng.directive:ngApp ngApp} was declared or the element passed into + * {@link angular.bootstrap}. The element represents the root element of application. It is also the + * location where the application's {@link auto.$injector $injector} service gets + * published, and can be retrieved using `$rootElement.injector()`. + */ + + +// the implementation is in angular.bootstrap + /** * @description * Private service to sanitize uris for links and images. Used by $compile and $sanitize. @@ -17175,13 +17473,15 @@ function $SceDelegateProvider() { * @kind function * * @param {Array=} whitelist When provided, replaces the resourceUrlWhitelist with the value - * provided. This must be an array or null. A snapshot of this array is used so further - * changes to the array are ignored. + * provided. This must be an array or null. A snapshot of this array is used so further + * changes to the array are ignored. * - * Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items - * allowed in this array. + * Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items + * allowed in this array. * - * Note: **an empty whitelist array will block all URLs**! + *
+ * **Note:** an empty whitelist array will block all URLs! + *
* * @return {Array} the currently set whitelist array. * @@ -17204,17 +17504,17 @@ function $SceDelegateProvider() { * @kind function * * @param {Array=} blacklist When provided, replaces the resourceUrlBlacklist with the value - * provided. This must be an array or null. A snapshot of this array is used so further - * changes to the array are ignored. + * provided. This must be an array or null. A snapshot of this array is used so further + * changes to the array are ignored. * - * Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items - * allowed in this array. + * Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items + * allowed in this array. * - * The typical usage for the blacklist is to **block - * [open redirects](http://cwe.mitre.org/data/definitions/601.html)** served by your domain as - * these would otherwise be trusted but actually return content from the redirected domain. + * The typical usage for the blacklist is to **block + * [open redirects](http://cwe.mitre.org/data/definitions/601.html)** served by your domain as + * these would otherwise be trusted but actually return content from the redirected domain. * - * Finally, **the blacklist overrides the whitelist** and has the final say. + * Finally, **the blacklist overrides the whitelist** and has the final say. * * @return {Array} the currently set blacklist array. * @@ -19290,7 +19590,7 @@ function parse(numStr) { } // Count the number of leading zeros. - for (i = 0; numStr.charAt(i) == ZERO_CHAR; i++); + for (i = 0; numStr.charAt(i) == ZERO_CHAR; i++) {/* jshint noempty: false */} if (i == (zeros = numStr.length)) { // The digits are all zero. @@ -19722,13 +20022,13 @@ function dateFilter($locale) { var dateTimezoneOffset = date.getTimezoneOffset(); if (timezone) { - dateTimezoneOffset = timezoneToOffset(timezone, date.getTimezoneOffset()); + dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset); date = convertTimezoneToLocal(date, timezone, true); } forEach(parts, function(value) { fn = DATE_FORMATS[value]; text += fn ? fn(date, $locale.DATETIME_FORMATS, dateTimezoneOffset) - : value.replace(/(^'|'$)/g, '').replace(/''/g, "'"); + : value === "''" ? "'" : value.replace(/(^'|'$)/g, '').replace(/''/g, "'"); }); return text; @@ -20447,20 +20747,7 @@ var htmlAnchorDirective = valueFn({ * {@link guide/expression expression} inside `ngDisabled` evaluates to truthy. * * A special directive is necessary because we cannot use interpolation inside the `disabled` - * attribute. The following example would make the button enabled on Chrome/Firefox - * but not on older IEs: - * - * ```html - * - *
- * - *
- * ``` - * - * This is because the HTML specification does not require browsers to preserve the values of - * boolean attributes such as `disabled` (Their presence means true and their absence means false.) - * If we put an Angular interpolation expression into such an attribute then the - * binding information would be lost when the browser removes the attribute. + * attribute. See the {@link guide/interpolation interpolation guide} for more info. * * @example @@ -20495,15 +20782,9 @@ var htmlAnchorDirective = valueFn({ * Note that this directive should not be used together with {@link ngModel `ngModel`}, * as this can lead to unexpected behavior. * - * ### Why do we need `ngChecked`? + * A special directive is necessary because we cannot use interpolation inside the `checked` + * attribute. See the {@link guide/interpolation interpolation guide} for more info. * - * The HTML specification does not require browsers to preserve the values of boolean attributes - * such as checked. (Their presence means true and their absence means false.) - * If we put an Angular interpolation expression into such an attribute then the - * binding information would be lost when the browser removes the attribute. - * The `ngChecked` directive solves this problem for the `checked` attribute. - * This complementary directive is not removed by the browser and so provides - * a permanent reliable place to store the binding information. * @example @@ -20532,13 +20813,12 @@ var htmlAnchorDirective = valueFn({ * @priority 100 * * @description - * The HTML specification does not require browsers to preserve the values of boolean attributes - * such as readonly. (Their presence means true and their absence means false.) - * If we put an Angular interpolation expression into such an attribute then the - * binding information would be lost when the browser removes the attribute. - * The `ngReadonly` directive solves this problem for the `readonly` attribute. - * This complementary directive is not removed by the browser and so provides - * a permanent reliable place to store the binding information. + * + * Sets the `readOnly` attribute on the element, if the expression inside `ngReadonly` is truthy. + * + * A special directive is necessary because we cannot use interpolation inside the `readOnly` + * attribute. See the {@link guide/interpolation interpolation guide} for more info. + * * @example @@ -20567,13 +20847,11 @@ var htmlAnchorDirective = valueFn({ * @priority 100 * * @description - * The HTML specification does not require browsers to preserve the values of boolean attributes - * such as selected. (Their presence means true and their absence means false.) - * If we put an Angular interpolation expression into such an attribute then the - * binding information would be lost when the browser removes the attribute. - * The `ngSelected` directive solves this problem for the `selected` attribute. - * This complementary directive is not removed by the browser and so provides - * a permanent reliable place to store the binding information. + * + * Sets the `selected` attribute on the element, if the expression inside `ngSelected` is truthy. + * + * A special directive is necessary because we cannot use interpolation inside the `selected` + * attribute. See the {@link guide/interpolation interpolation guide} for more info. * * @example @@ -20605,13 +20883,12 @@ var htmlAnchorDirective = valueFn({ * @priority 100 * * @description - * The HTML specification does not require browsers to preserve the values of boolean attributes - * such as open. (Their presence means true and their absence means false.) - * If we put an Angular interpolation expression into such an attribute then the - * binding information would be lost when the browser removes the attribute. - * The `ngOpen` directive solves this problem for the `open` attribute. - * This complementary directive is not removed by the browser and so provides - * a permanent reliable place to store the binding information. + * + * Sets the `open` attribute on the element, if the expression inside `ngOpen` is truthy. + * + * A special directive is necessary because we cannot use interpolation inside the `open` + * attribute. See the {@link guide/interpolation interpolation guide} for more info. + * * @example @@ -20857,7 +21134,7 @@ function FormController(element, attrs, $scope, $animate, $interpolate) { * * However, if the method is used programmatically, for example by adding dynamically created controls, * or controls that have been previously removed without destroying their corresponding DOM element, - * it's the developers responsiblity to make sure the current state propagates to the parent form. + * it's the developers responsibility to make sure the current state propagates to the parent form. * * For example, if an input control is added that is already `$dirty` and has `$error` properties, * calling `$setDirty()` and `$validate()` afterwards will propagate the state to the parent form. @@ -21067,13 +21344,9 @@ function FormController(element, attrs, $scope, $animate, $interpolate) { * * In Angular, forms can be nested. This means that the outer form is valid when all of the child * forms are valid as well. However, browsers do not allow nesting of `
` elements, so - * Angular provides the {@link ng.directive:ngForm `ngForm`} directive which behaves identically to - * `` but can be nested. This allows you to have nested forms, which is very useful when - * using Angular validation directives in forms that are dynamically generated using the - * {@link ng.directive:ngRepeat `ngRepeat`} directive. Since you cannot dynamically generate the `name` - * attribute of input elements using interpolation, you have to wrap each set of repeated inputs in an - * `ngForm` directive and nest these in an outer `form` element. - * + * Angular provides the {@link ng.directive:ngForm `ngForm`} directive, which behaves identically to + * `form` but can be nested. Nested forms can be useful, for example, if the validity of a sub-group + * of controls needs to be determined. * * # CSS classes * - `ng-valid` is set if the form is valid. @@ -21294,7 +21567,18 @@ var ngFormDirective = formDirectiveFactory(true); // Regex code is obtained from SO: https://stackoverflow.com/questions/3143070/javascript-regex-iso-datetime#answer-3143231 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)/; // See valid URLs in RFC3987 (http://tools.ietf.org/html/rfc3987) -var URL_REGEXP = /^[A-Za-z][A-Za-z\d.+-]*:\/*(?:\w+(?::\w+)?@)?[^\s/]+(?::\d+)?(?:\/[\w#!:.?+=&%@\-/[\]$'()*,;~]*)?$/; +// Note: We are being more lenient, because browsers are too. +// 1. Scheme +// 2. Slashes +// 3. Username +// 4. Password +// 5. Hostname +// 6. Port +// 7. Path +// 8. Query +// 9. Fragment +// 1111111111111111 222 333333 44444 555555555555555555555555 666 77777777 8888888 999 +var URL_REGEXP = /^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+\])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i; 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*)))([eE][+-]?\d+)?\s*$/; var DATE_REGEXP = /^(\d{4})-(\d{2})-(\d{2})$/; @@ -23471,9 +23755,10 @@ function classDirective(name, selector) { * new classes added. * * @animations - * **add** - happens just before the class is applied to the elements - * - * **remove** - happens just before the class is removed from the element + * | Animation | Occurs | + * |----------------------------------|-------------------------------------| + * | {@link ng.$animate#addClass addClass} | just before the class is applied to the element | + * | {@link ng.$animate#removeClass removeClass} | just before the class is removed from the element | * * @element ANY * @param {expression} ngClass {@link guide/expression Expression} to eval. The result @@ -24058,7 +24343,7 @@ var ngControllerDirective = [function() { * * * no-inline-style: this stops Angular from injecting CSS styles into the DOM * - * * no-unsafe-eval: this stops Angular from optimising $parse with unsafe eval of strings + * * no-unsafe-eval: this stops Angular from optimizing $parse with unsafe eval of strings * * You can use these values in the following combinations: * @@ -24075,7 +24360,7 @@ var ngControllerDirective = [function() { * inline styles. E.g. ``. * * * Specifying only `no-inline-style` tells Angular that we must not inject styles, but that we can - * run eval - no automcatic check for unsafe eval will occur. E.g. `` + * run eval - no automatic check for unsafe eval will occur. E.g. `` * * * Specifying both `no-unsafe-eval` and `no-inline-style` tells Angular that we must not inject * styles nor use eval, which is the same as an empty: ng-csp. @@ -24732,8 +25017,10 @@ forEach( * and `leave` effects. * * @animations - * enter - happens just after the `ngIf` contents change and a new DOM element is created and injected into the `ngIf` container - * leave - happens just before the `ngIf` contents are removed from the DOM + * | Animation | Occurs | + * |----------------------------------|-------------------------------------| + * | {@link ng.$animate#enter enter} | just after the `ngIf` contents change and a new DOM element is created and injected into the `ngIf` container | + * | {@link ng.$animate#leave leave} | just before the `ngIf` contents are removed from the DOM | * * @element ANY * @scope @@ -24845,8 +25132,10 @@ var ngIfDirective = ['$animate', function($animate) { * access on some browsers. * * @animations - * enter - animation is used to bring new content into the browser. - * leave - animation is used to animate existing content away. + * | Animation | Occurs | + * |----------------------------------|-------------------------------------| + * | {@link ng.$animate#enter enter} | when the expression changes, on the new include | + * | {@link ng.$animate#leave leave} | when the expression changes, on the old include | * * The enter and leave animation occur concurrently. * @@ -25054,6 +25343,8 @@ var ngIncludeDirective = ['$templateRequest', '$anchorScroll', '$animate', //set the 2nd param to true to ignore the template request error so that the inner //contents and scope can be cleaned up. $templateRequest(src, true).then(function(response) { + if (scope.$$destroyed) return; + if (thisChangeId !== changeCounter) return; var newScope = scope.$new(); ctrl.template = response; @@ -25075,6 +25366,8 @@ var ngIncludeDirective = ['$templateRequest', '$anchorScroll', '$animate', currentScope.$emit('$includeContentLoaded', src); scope.$eval(onloadExp); }, function() { + if (scope.$$destroyed) return; + if (thisChangeId === changeCounter) { cleanupLastIncludeContent(); scope.$emit('$includeContentError', src); @@ -25103,7 +25396,7 @@ var ngIncludeFillContentDirective = ['$compile', priority: -400, require: 'ngInclude', link: function(scope, $element, $attr, ctrl) { - if (/SVG/.test($element[0].toString())) { + if (toString.call($element[0]).match(/SVG/)) { // WebKit: https://bugs.webkit.org/show_bug.cgi?id=135698 --- SVG elements do not // support innerHTML, so detect this here and try to generate the contents // specially. @@ -25956,7 +26249,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$ forEach(ctrl.$asyncValidators, function(validator, name) { var promise = validator(modelValue, viewValue); if (!isPromiseLike(promise)) { - throw ngModelMinErr("$asyncValidators", + throw ngModelMinErr('nopromise', "Expected asynchronous validator to return a promise but got '{0}' instead.", promise); } setValidity(name, undefined); @@ -26111,7 +26404,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$ * However, custom controls might also pass objects to this method. In this case, we should make * a copy of the object before passing it to `$setViewValue`. This is because `ngModel` does not * perform a deep watch of objects, it only looks for a change of identity. If you only change - * the property of the object then ngModel will not realise that the object has changed and + * the property of the object then ngModel will not realize that the object has changed and * will not invoke the `$parsers` and `$validators` pipelines. For this reason, you should * not change properties of the copy once it has been passed to `$setViewValue`. * Otherwise you may cause the model value on the scope to change incorrectly. @@ -26255,6 +26548,22 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$ * - {@link ng.directive:select select} * - {@link ng.directive:textarea textarea} * + * # Complex Models (objects or collections) + * + * By default, `ngModel` watches the model by reference, not value. This is important to know when + * binding inputs to models that are objects (e.g. `Date`) or collections (e.g. arrays). If only properties of the + * object or collection change, `ngModel` will not be notified and so the input will not be re-rendered. + * + * The model must be assigned an entirely new object or collection before a re-rendering will occur. + * + * Some directives have options that will cause them to use a custom `$watchCollection` on the model expression + * - for example, `ngOptions` will do so when a `track by` clause is included in the comprehension expression or + * if the select is given the `multiple` attribute. + * + * The `$watchCollection()` method only does a shallow comparison, meaning that changing properties deeper than the + * first level of the object (or only changing the properties of an item in the collection if it's an array) will still + * not trigger a re-rendering of the model. + * * # CSS classes * The following CSS classes are added and removed on the associated input/select/textarea element * depending on the validity of the model. @@ -27404,7 +27713,7 @@ var ngOptionsDirective = ['$compile', '$parse', function($compile, $parse) { (current === emptyOption_ || current === unknownOption_ || current.nodeType === NODE_TYPE_COMMENT || - current.value === '')) { + (nodeName_(current) === 'option' && current.value === ''))) { current = current.nextSibling; } } @@ -27735,7 +28044,7 @@ var ngPluralizeDirective = ['$locale', '$interpolate', '$log', function($locale, } // If both `count` and `lastCount` are NaN, we don't need to re-register a watch. - // In JS `NaN !== NaN`, so we have to exlicitly check. + // In JS `NaN !== NaN`, so we have to explicitly check. if ((count !== lastCount) && !(countIsNaN && isNumber(lastCount) && isNaN(lastCount))) { watchRemover(); var whenExpFn = whensExpFns[count]; @@ -27795,17 +28104,23 @@ var ngPluralizeDirective = ['$locale', '$interpolate', '$log', function($locale, *
...
* ``` * - * You need to be aware that the JavaScript specification does not define the order of keys - * returned for an object. (To mitigate this in Angular 1.3 the `ngRepeat` directive - * used to sort the keys alphabetically.) + * However, there are a limitations compared to array iteration: * - * Version 1.4 removed the alphabetic sorting. We now rely on the order returned by the browser - * when running `for key in myObj`. It seems that browsers generally follow the strategy of providing - * keys in the order in which they were defined, although there are exceptions when keys are deleted - * and reinstated. See the [MDN page on `delete` for more info](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete#Cross-browser_notes). + * - The JavaScript specification does not define the order of keys + * returned for an object, so Angular relies on the order returned by the browser + * when running `for key in myObj`. Browsers generally follow the strategy of providing + * keys in the order in which they were defined, although there are exceptions when keys are deleted + * and reinstated. See the + * [MDN page on `delete` for more info](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete#Cross-browser_notes). * - * If this is not desired, the recommended workaround is to convert your object into an array - * that is sorted into the order that you prefer before providing it to `ngRepeat`. You could + * - `ngRepeat` will silently *ignore* object keys starting with `$`, because + * it's a prefix used by Angular for public (`$`) and private (`$$`) properties. + * + * - The built-in filters {@link ng.orderBy orderBy} and {@link ng.filter filter} do not work with + * objects, and will throw if used with one. + * + * If you are hitting any of these limitations, the recommended workaround is to convert your object into an array + * that is sorted into the order that you prefer before providing it to `ngRepeat`. You could * do this with a filter such as [toArrayFilter](http://ngmodules.org/modules/angular-toArrayFilter) * or implement a `$watch` on the object yourself. * @@ -27852,7 +28167,7 @@ var ngPluralizeDirective = ['$locale', '$interpolate', '$log', function($locale, * by the identifier instead of the whole object. Should you reload your data later, `ngRepeat` * will not have to rebuild the DOM elements for items it has already rendered, even if the * JavaScript objects in the collection have been substituted for new ones. For large collections, - * this signifincantly improves rendering performance. If you don't have a unique identifier, + * this significantly improves rendering performance. If you don't have a unique identifier, * `track by $index` can also provide a performance boost. *
* ```html @@ -27923,11 +28238,13 @@ var ngPluralizeDirective = ['$locale', '$interpolate', '$log', function($locale, * as **data-ng-repeat-start**, **x-ng-repeat-start** and **ng:repeat-start**). * * @animations - * **.enter** - when a new item is added to the list or when an item is revealed after a filter + * | Animation | Occurs | + * |----------------------------------|-------------------------------------| + * | {@link ng.$animate#enter enter} | when a new item is added to the list or when an item is revealed after a filter | + * | {@link ng.$animate#leave leave} | when an item is removed from the list or when an item is filtered out | + * | {@link ng.$animate#move move } | when an adjacent item is filtered out causing a reorder or when the item contents are reordered | * - * **.leave** - when an item is removed from the list or when an item is filtered out - * - * **.move** - when an adjacent item is filtered out causing a reorder or when the item contents are reordered + * See the example below for defining CSS animations with ngRepeat. * * @element ANY * @scope @@ -27981,22 +28298,11 @@ var ngPluralizeDirective = ['$locale', '$interpolate', '$log', function($locale, * For example: `item in items | filter : x | orderBy : order | limitTo : limit as results` . * * @example - * This example initializes the scope to a list of names and - * then uses `ngRepeat` to display every person: - + * This example uses `ngRepeat` to display a list of people. A filter is used to restrict the displayed + * results by name. New (entering) and removed (leaving) items are animated. + -
+
I have {{friends.length}} friends. They are:
    @@ -28009,6 +28315,22 @@ var ngPluralizeDirective = ['$locale', '$interpolate', '$log', function($locale,
+ + angular.module('ngRepeat', ['ngAnimate']).controller('repeatController', function($scope) { + $scope.friends = [ + {name:'John', age:25, gender:'boy'}, + {name:'Jessie', age:30, gender:'girl'}, + {name:'Johanna', age:28, gender:'girl'}, + {name:'Joy', age:15, gender:'girl'}, + {name:'Mary', age:28, gender:'girl'}, + {name:'Peter', age:95, gender:'boy'}, + {name:'Sebastian', age:50, gender:'boy'}, + {name:'Erika', age:27, gender:'girl'}, + {name:'Patrick', age:40, gender:'boy'}, + {name:'Samantha', age:60, gender:'girl'} + ]; + }); + .example-animate-container { background:white; @@ -28019,7 +28341,7 @@ var ngPluralizeDirective = ['$locale', '$interpolate', '$log', function($locale, } .animate-repeat { - line-height:40px; + line-height:30px; list-style:none; box-sizing:border-box; } @@ -28041,7 +28363,7 @@ var ngPluralizeDirective = ['$locale', '$interpolate', '$log', function($locale, .animate-repeat.ng-move.ng-move-active, .animate-repeat.ng-enter.ng-enter-active { opacity:1; - max-height:40px; + max-height:30px; } @@ -28267,7 +28589,7 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) { if (getBlockStart(block) != nextNode) { // existing item which got moved - $animate.move(getBlockNodes(block.clone), null, jqLite(previousNode)); + $animate.move(getBlockNodes(block.clone), null, previousNode); } previousNode = getBlockEnd(block); updateScope(block.scope, index, valueIdentifier, value, keyIdentifier, key, collectionLength); @@ -28279,8 +28601,7 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) { var endNode = ngRepeatEndComment.cloneNode(false); clone[clone.length++] = endNode; - // TODO(perf): support naked previousNode in `enter` to avoid creation of jqLite wrapper? - $animate.enter(clone, null, jqLite(previousNode)); + $animate.enter(clone, null, previousNode); previousNode = endNode; // Note: We only need the first/last node of the cloned nodes. // However, we need to keep the reference to the jqlite wrapper as it might be changed later @@ -28383,12 +28704,14 @@ var NG_HIDE_IN_PROGRESS_CLASS = 'ng-hide-animate'; * .my-element.ng-hide-remove.ng-hide-remove-active { ... } * ``` * - * Keep in mind that, as of AngularJS version 1.3.0-beta.11, there is no need to change the display + * Keep in mind that, as of AngularJS version 1.3, there is no need to change the display * property to block during animation states--ngAnimate will handle the style toggling automatically for you. * * @animations - * addClass: `.ng-hide` - happens after the `ngShow` expression evaluates to a truthy value and the just before contents are set to visible - * removeClass: `.ng-hide` - happens after the `ngShow` expression evaluates to a non truthy value and just before the contents are set to hidden + * | Animation | Occurs | + * |----------------------------------|-------------------------------------| + * | {@link $animate#addClass addClass} `.ng-hide` | after the `ngShow` expression evaluates to a non truthy value and just before the contents are set to hidden | + * | {@link $animate#removeClass removeClass} `.ng-hide` | after the `ngShow` expression evaluates to a truthy value and just before contents are set to visible | * * @element ANY * @param {expression} ngShow If the {@link guide/expression expression} is truthy @@ -28547,12 +28870,15 @@ var ngShowDirective = ['$animate', function($animate) { * .my-element.ng-hide-remove.ng-hide-remove-active { ... } * ``` * - * Keep in mind that, as of AngularJS version 1.3.0-beta.11, there is no need to change the display + * Keep in mind that, as of AngularJS version 1.3, there is no need to change the display * property to block during animation states--ngAnimate will handle the style toggling automatically for you. * * @animations - * removeClass: `.ng-hide` - happens after the `ngHide` expression evaluates to a truthy value and just before the contents are set to hidden - * addClass: `.ng-hide` - happens after the `ngHide` expression evaluates to a non truthy value and just before the contents are set to visible + * | Animation | Occurs | + * |----------------------------------|-------------------------------------| + * | {@link $animate#addClass addClass} `.ng-hide` | after the `ngHide` expression evaluates to a truthy value and just before the contents are set to hidden | + * | {@link $animate#removeClass removeClass} `.ng-hide` | after the `ngHide` expression evaluates to a non truthy value and just before contents are set to visible | + * * * @element ANY * @param {expression} ngHide If the {@link guide/expression expression} is truthy then @@ -28714,8 +29040,10 @@ var ngStyleDirective = ngDirective(function(scope, element, attr) { *
* @animations - * enter - happens after the ngSwitch contents change and the matched child element is placed inside the container - * leave - happens just after the ngSwitch contents change and just before the former contents are removed from the DOM + * | Animation | Occurs | + * |----------------------------------|-------------------------------------| + * | {@link ng.$animate#enter enter} | after the ngSwitch contents change and the matched child element is placed inside the container | + * | {@link ng.$animate#leave leave} | after the ngSwitch contents change and just before the former contents are removed from the DOM | * * @usage * @@ -29209,6 +29537,9 @@ var SelectController = // Tell the select control that an option, with the given value, has been added self.addOption = function(value, element) { + // Skip comment nodes, as they only pollute the `optionsMap` + if (element[0].nodeType === NODE_TYPE_COMMENT) return; + assertNotHasOwnProperty(value, '"option value"'); if (value === '') { self.emptyOption = element; @@ -29283,7 +29614,7 @@ var SelectController = * * The `select` directive is used together with {@link ngModel `ngModel`} to provide data-binding * between the scope and the `` menu is selected, the value of the selected option will be bound @@ -29293,7 +29624,7 @@ var SelectController = * *
* Note that the value of a `select` directive used without `ngOptions` is always a string. - * When the model needs to be bound to a non-string value, you must either explictly convert it + * When the model needs to be bound to a non-string value, you must either explicitly convert it * using a directive (see example below) or use `ngOptions` to specify the set of options. * This is because an option element can only be bound to string values at present. *
@@ -29485,7 +29816,8 @@ var selectDirective = function() { controller: SelectController, priority: 1, link: { - pre: selectPreLink + pre: selectPreLink, + post: selectPostLink } }; @@ -29499,13 +29831,6 @@ var selectDirective = function() { selectCtrl.ngModelCtrl = ngModelCtrl; - // We delegate rendering to the `writeValue` method, which can be changed - // if the select can have multiple selected values or if the options are being - // generated by `ngOptions` - ngModelCtrl.$render = function() { - selectCtrl.writeValue(ngModelCtrl.$viewValue); - }; - // When the selected item(s) changes we delegate getting the value of the select control // to the `readValue` method, which can be changed if the select can have multiple // selected values or if the options are being generated by `ngOptions` @@ -29559,6 +29884,23 @@ var selectDirective = function() { } } + + function selectPostLink(scope, element, attrs, ctrls) { + // if ngModel is not defined, we don't need to do anything + var ngModelCtrl = ctrls[1]; + if (!ngModelCtrl) return; + + var selectCtrl = ctrls[0]; + + // We delegate rendering to the `writeValue` method, which can be changed + // if the select can have multiple selected values or if the options are being + // generated by `ngOptions`. + // This must be done in the postLink fn to prevent $render to be called before + // all nodes have been linked correctly. + ngModelCtrl.$render = function() { + selectCtrl.writeValue(ngModelCtrl.$viewValue); + }; + } }; @@ -29570,7 +29912,6 @@ var optionDirective = ['$interpolate', function($interpolate) { restrict: 'E', priority: 100, compile: function(element, attr) { - if (isDefined(attr.value)) { // If the value attribute is defined, check if it contains an interpolation var interpolateValueFn = $interpolate(attr.value, true); @@ -29584,7 +29925,6 @@ var optionDirective = ['$interpolate', function($interpolate) { } return function(scope, element, attr) { - // This is an optimization over using ^^ since we don't want to have to search // all the way to the root of the DOM for every single option element var selectCtrlName = '$selectController', @@ -29605,6 +29945,64 @@ var styleDirective = valueFn({ terminal: false }); +/** + * @ngdoc directive + * @name ngRequired + * + * @description + * + * ngRequired adds the required {@link ngModel.NgModelController#$validators `validator`} to {@link ngModel `ngModel`}. + * It is most often used for {@link input `input`} and {@link select `select`} controls, but can also be + * applied to custom controls. + * + * The directive sets the `required` attribute on the element if the Angular expression inside + * `ngRequired` evaluates to true. A special directive for setting `required` is necessary because we + * cannot use interpolation inside `required`. See the {@link guide/interpolation interpolation guide} + * for more info. + * + * The validator will set the `required` error key to true if the `required` attribute is set and + * calling {@link ngModel.NgModelController#$isEmpty `NgModelController.$isEmpty`} with the + * {@link ngModel.NgModelController#$viewValue `ngModel.$viewValue`} returns `true`. For example, the + * `$isEmpty()` implementation for `input[text]` checks the length of the `$viewValue`. When developing + * custom controls, `$isEmpty()` can be overwritten to account for a $viewValue that is not string-based. + * + * @example + * + * + * + *
+ * + * + * + *
+ * + *
+ *
+ * required error set? = {{form.input.$error.required}}
+ * model = {{model}} + * + *
+ *
+ * + var required = element(by.binding('form.input.$error.required')); + var model = element(by.binding('model')); + var input = element(by.id('input')); + + it('should set the required error', function() { + expect(required.getText()).toContain('true'); + + input.sendKeys('123'); + expect(required.getText()).not.toContain('true'); + expect(model.getText()).toContain('123'); + }); + * + *
+ */ var requiredDirective = function() { return { restrict: 'A', @@ -29624,7 +30022,81 @@ var requiredDirective = function() { }; }; +/** + * @ngdoc directive + * @name ngPattern + * + * @description + * + * ngPattern adds the pattern {@link ngModel.NgModelController#$validators `validator`} to {@link ngModel `ngModel`}. + * It is most often used for text-based {@link input `input`} controls, but can also be applied to custom text-based controls. + * + * The validator sets the `pattern` error key if the {@link ngModel.NgModelController#$viewValue `ngModel.$viewValue`} + * does not match a RegExp which is obtained by evaluating the Angular expression given in the + * `ngPattern` attribute value: + * * If the expression evaluates to a RegExp object, then this is used directly. + * * If the expression evaluates to a string, then it will be converted to a RegExp after wrapping it + * in `^` and `$` characters. For instance, `"abc"` will be converted to `new RegExp('^abc$')`. + * + *
+ * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to + * start at the index of the last search's match, thus not taking the whole input value into + * account. + *
+ * + *
+ * **Note:** This directive is also added when the plain `pattern` attribute is used, with two + * differences: + *
    + *
  1. + * `ngPattern` does not set the `pattern` attribute and therefore HTML5 constraint validation is + * not available. + *
  2. + *
  3. + * The `ngPattern` attribute must be an expression, while the `pattern` value must be + * interpolated. + *
  4. + *
+ *
+ * + * @example + * + * + * + *
+ *
+ * + * + *
+ * + *
+ *
+ * input valid? = {{form.input.$valid}}
+ * model = {{model}} + *
+ *
+ *
+ * + var model = element(by.binding('model')); + var input = element(by.id('input')); + it('should validate the input with the default pattern', function() { + input.sendKeys('aaa'); + expect(model.getText()).not.toContain('aaa'); + + input.clear().then(function() { + input.sendKeys('123'); + expect(model.getText()).toContain('123'); + }); + }); + * + *
+ */ var patternDirective = function() { return { restrict: 'A', @@ -29656,7 +30128,72 @@ var patternDirective = function() { }; }; +/** + * @ngdoc directive + * @name ngMaxlength + * + * @description + * + * ngMaxlength adds the maxlength {@link ngModel.NgModelController#$validators `validator`} to {@link ngModel `ngModel`}. + * It is most often used for text-based {@link input `input`} controls, but can also be applied to custom text-based controls. + * + * The validator sets the `maxlength` error key if the {@link ngModel.NgModelController#$viewValue `ngModel.$viewValue`} + * is longer than the integer obtained by evaluating the Angular expression given in the + * `ngMaxlength` attribute value. + * + *
+ * **Note:** This directive is also added when the plain `maxlength` attribute is used, with two + * differences: + *
    + *
  1. + * `ngMaxlength` does not set the `maxlength` attribute and therefore HTML5 constraint + * validation is not available. + *
  2. + *
  3. + * The `ngMaxlength` attribute must be an expression, while the `maxlength` value must be + * interpolated. + *
  4. + *
+ *
+ * + * @example + * + * + * + *
+ *
+ * + * + *
+ * + *
+ *
+ * input valid? = {{form.input.$valid}}
+ * model = {{model}} + *
+ *
+ *
+ * + var model = element(by.binding('model')); + var input = element(by.id('input')); + it('should validate the input with the default maxlength', function() { + input.sendKeys('abcdef'); + expect(model.getText()).not.toContain('abcdef'); + + input.clear().then(function() { + input.sendKeys('abcde'); + expect(model.getText()).toContain('abcde'); + }); + }); + * + *
+ */ var maxlengthDirective = function() { return { restrict: 'A', @@ -29677,6 +30214,70 @@ var maxlengthDirective = function() { }; }; +/** + * @ngdoc directive + * @name ngMinlength + * + * @description + * + * ngMinlength adds the minlength {@link ngModel.NgModelController#$validators `validator`} to {@link ngModel `ngModel`}. + * It is most often used for text-based {@link input `input`} controls, but can also be applied to custom text-based controls. + * + * The validator sets the `minlength` error key if the {@link ngModel.NgModelController#$viewValue `ngModel.$viewValue`} + * is shorter than the integer obtained by evaluating the Angular expression given in the + * `ngMinlength` attribute value. + * + *
+ * **Note:** This directive is also added when the plain `minlength` attribute is used, with two + * differences: + *
    + *
  1. + * `ngMinlength` does not set the `minlength` attribute and therefore HTML5 constraint + * validation is not available. + *
  2. + *
  3. + * The `ngMinlength` value must be an expression, while the `minlength` value must be + * interpolated. + *
  4. + *
+ *
+ * + * @example + * + * + * + *
+ *
+ * + * + *
+ * + *
+ *
+ * input valid? = {{form.input.$valid}}
+ * model = {{model}} + *
+ *
+ *
+ * + var model = element(by.binding('model')); + var input = element(by.id('input')); + + it('should validate the input with the default minlength', function() { + input.sendKeys('ab'); + expect(model.getText()).not.toContain('ab'); + + input.sendKeys('abc'); + expect(model.getText()).toContain('abc'); + }); + * + *
+ */ var minlengthDirective = function() { return { restrict: 'A', @@ -29846,6 +30447,7 @@ $provide.value("$locale", { ] }, "id": "en-us", + "localeID": "en_US", "pluralCat": function(n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} }); }]); diff --git a/public/vendor/angular/angular.min.js b/public/vendor/angular/angular.min.js index f5f639c0e18..6a0b7f04daa 100644 --- a/public/vendor/angular/angular.min.js +++ b/public/vendor/angular/angular.min.js @@ -1,304 +1,307 @@ /* - AngularJS v1.5.0-rc.0 - (c) 2010-2015 Google, Inc. http://angularjs.org + AngularJS v1.5.1-build.4601+sha.c966876 + (c) 2010-2016 Google, Inc. http://angularjs.org License: MIT */ -(function(S,Z,u){'use strict';function P(a){return function(){var b=arguments[0],d;d="["+(a?a+":":"")+b+"] http://errors.angularjs.org/1.5.0-rc.0/"+(a?a+"/":"")+b;for(b=1;b").append(a).html();try{return a[0].nodeType===Qa?H(d):d.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+H(b)})}catch(c){return H(d)}}function xc(a){try{return decodeURIComponent(a)}catch(b){}}function yc(a){var b={};n((a||"").split("&"), -function(a){var c,e,f;a&&(e=a=a.replace(/\+/g,"%20"),c=a.indexOf("="),-1!==c&&(e=a.substring(0,c),f=a.substring(c+1)),e=xc(e),z(e)&&(f=z(f)?xc(f):!0,qa.call(b,e)?K(b[e])?b[e].push(f):b[e]=[b[e],f]:b[e]=f))});return b}function Sb(a){var b=[];n(a,function(a,c){K(a)?n(a,function(a){b.push(ga(c,!0)+(!0===a?"":"="+ga(a,!0)))}):b.push(ga(c,!0)+(!0===a?"":"="+ga(a,!0)))});return b.length?b.join("&"):""}function qb(a){return ga(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function ga(a, -b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,b?"%20":"+")}function ae(a,b){var d,c,e=Ra.length;for(c=0;c/,">"));}b=b||[];b.unshift(["$provide",function(b){b.value("$rootElement",a)}]);d.debugInfoEnabled&&b.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);b.unshift("ng");c=fb(b,d.strictDi);c.invoke(["$rootScope","$rootElement","$compile","$injector",function(a, -b,c,d){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;S&&e.test(S.name)&&(d.debugInfoEnabled=!0,S.name=S.name.replace(e,""));if(S&&!f.test(S.name))return c();S.name=S.name.replace(f,"");$.resumeBootstrap=function(a){n(a,function(a){b.push(a)});return c()};D($.resumeDeferredBootstrap)&&$.resumeDeferredBootstrap()}function ce(){S.name="NG_ENABLE_DEBUG_INFO!"+S.name;S.location.reload()}function de(a){a=$.element(a).injector();if(!a)throw Da("test"); -return a.get("$$testability")}function Ac(a,b){b=b||"_";return a.replace(ee,function(a,c){return(c?b:"")+a.toLowerCase()})}function fe(){var a;if(!Bc){var b=rb();(xa=x(b)?S.jQuery:b?S[b]:u)&&xa.fn.on?(A=xa,L(xa.fn,{scope:Sa.scope,isolateScope:Sa.isolateScope,controller:Sa.controller,injector:Sa.injector,inheritedData:Sa.inheritedData}),a=xa.cleanData,xa.cleanData=function(b){for(var c,e=0,f;null!=(f=b[e]);e++)(c=xa._data(f,"events"))&&c.$destroy&&xa(f).triggerHandler("$destroy");a(b)}):A=E;$.element= -A;Bc=!0}}function sb(a,b,d){if(!a)throw Da("areq",b||"?",d||"required");return a}function Ta(a,b,d){d&&K(a)&&(a=a[a.length-1]);sb(D(a),b,"not a function, got "+(a&&"object"===typeof a?a.constructor.name||"Object":typeof a));return a}function Ua(a,b){if("hasOwnProperty"===a)throw Da("badname",b);}function Cc(a,b,d){if(!b)return a;b=b.split(".");for(var c,e=a,f=b.length,g=0;g")+c[2];for(c=c[0];c--;)d=d.lastChild;f=db(f,d.childNodes);d=e.firstChild;d.textContent=""}else f.push(b.createTextNode(a));e.textContent="";e.innerHTML="";n(f,function(a){e.appendChild(a)});return e}function E(a){if(a instanceof E)return a; -var b;G(a)&&(a=Y(a),b=!0);if(!(this instanceof E)){if(b&&"<"!=a.charAt(0))throw Vb("nosel");return new E(a)}if(b){b=Z;var d;a=(d=If.exec(a))?[b.createElement(d[1])]:(d=Nc(a,b))?d.childNodes:[]}Oc(this,a)}function Wb(a){return a.cloneNode(!0)}function wb(a,b){b||hb(a);if(a.querySelectorAll)for(var d=a.querySelectorAll("*"),c=0,e=d.length;cl&&this.remove(r.key); -return b}},get:function(a){if(l";b=$.firstChild.attributes;var d=b[0];b.removeNamedItem(d.name);d.value=c;a.attributes.setNamedItem(d)}function N(a,b){try{a.addClass(b)}catch(c){}}function O(a,b,c,d,e){a instanceof A||(a=A(a));n(a,function(b,c){b.nodeType==Qa&&b.nodeValue.match(/\S+/)&&(a[c]=A(b).wrap("").parent()[0])});var f=R(a,b,a,c,d,e);O.$$addScopeClass(a); -var g=null;return function(b,c,d){sb(b,"scope");e&&e.needsNewScope&&(b=b.$parent.$new());d=d||{};var h=d.parentBoundTranscludeFn,k=d.transcludeControllers;d=d.futureParentElement;h&&h.$$boundTransclude&&(h=h.$$boundTransclude);g||(g=(d=d&&d[0])?"foreignobject"!==ta(d)&&d.toString().match(/SVG/)?"svg":"html":"html");d="html"!==g?A(U(g,A("
").append(a).html())):c?Sa.clone.call(a):a;if(k)for(var l in k)d.data("$"+l+"Controller",k[l].instance);O.$$addScopeInfo(d,b);c&&c(d,b);f&&f(b,d,d,h);return d}} -function R(a,b,c,d,e,f){function g(a,c,d,e){var f,k,l,m,r,B,v;if(p)for(v=Array(c.length),m=0;mI.priority)break;if(E=I.scope)I.templateUrl||(J(E)?(Wa("new/isolated scope",C||t,I,w),C=I):Wa("new/isolated scope",C,I,w)),t=t||I;sa=I.name;if(!pa&&(I.replace&&(I.templateUrl||I.template)||I.transclude&&!I.$$tlb)){for(E=fa+1;pa=a[E++];)if(pa.transclude&&!pa.$$tlb||pa.replace&&(pa.templateUrl||pa.template)){S=!0;break}pa= -!0}!I.templateUrl&&I.controller&&(E=I.controller,N=N||X(),Wa("'"+sa+"' controller",N[sa],I,w),N[sa]=I);if(E=I.transclude)if(W=!0,I.$$tlb||(Wa("transclusion",R,I,w),R=I),"element"==E)ya=!0,F=I.priority,oa=w,w=d.$$element=A(Z.createComment(" "+sa+": "+d[sa]+" ")),b=w[0],aa(f,wa.call(oa,0),b),H=Zb(S,oa,e,F,g&&g.name,{nonTlbTranscludeDirective:R});else{var V=X();oa=A(Wb(b)).contents();if(J(E)){oa=[];var ga=X(),ja=X();n(E,function(a,b){var c="?"===a.charAt(0);a=c?a.substring(1):a;ga[a]=b;V[b]=null;ja[b]= -c});n(w.contents(),function(a){var b=ga[va(ta(a))];b?(ja[b]=!0,V[b]=V[b]||[],V[b].push(a)):oa.push(a)});n(ja,function(a,b){if(!a)throw ia("reqslot",b);});for(var la in V)V[la]&&(V[la]=Zb(S,V[la],e))}w.empty();H=Zb(S,oa,e,u,u,{needsNewScope:I.$$isolateScope||I.$$newScope});H.$$slots=V}if(I.template)if(M=!0,Wa("template",ha,I,w),ha=I,E=D(I.template)?I.template(w,d):I.template,E=na(E),I.replace){g=I;oa=Ub.test(E)?Xc(U(I.templateNamespace,Y(E))):[];b=oa[0];if(1!=oa.length||1!==b.nodeType)throw ia("tplrt", -sa,"");aa(f,w,b);E={$attr:{}};var ma=Ha(b,[],E),qa=a.splice(fa+1,a.length-(fa+1));(C||t)&&P(ma,C,t);a=a.concat(ma).concat(qa);Yc(d,E);T=a.length}else w.html(E);if(I.templateUrl)M=!0,Wa("template",ha,I,w),ha=I,I.replace&&(g=I),v=Vf(a.splice(fa,a.length-fa),w,d,f,W&&H,h,l,{controllerDirectives:N,newScopeDirective:t!==I&&t,newIsolateScopeDirective:C,templateDirective:ha,nonTlbTranscludeDirective:R}),T=a.length;else if(I.compile)try{L=I.compile(w,d,H),D(L)?r(null,L,$,ba):L&&r(L.pre,L.post,$,ba)}catch(ra){c(ra, -ua(w))}I.terminal&&(v.terminal=!0,F=Math.max(F,I.priority))}v.scope=t&&!0===t.scope;v.transcludeOnThisElement=W;v.templateOnThisElement=M;v.transclude=H;m.hasElementTranscludeDirective=ya;return v}function P(a,b,c){for(var d=0,e=a.length;dm.priority)&&-1!=m.restrict.indexOf(f)&&(k&&(m=Qb(m, -{$$start:k,$$end:l})),b.push(m),h=m)}catch(v){c(v)}}return h}function sa(b){if(e.hasOwnProperty(b))for(var c=a.get(b+"Directive"),d=0,f=c.length;d"+b+"";return c.childNodes[0].childNodes;default:return b}}function E(a,b){if("srcdoc"==b)return M.HTML;var c=ta(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return M.RESOURCE_URL}function T(a,c,d,e,f){var g=E(a,e);f=h[e]||f;var k=b(d,!0,g,f);if(k){if("multiple"===e&&"select"===ta(a))throw ia("selmulti", -ua(a));c.push({priority:100,compile:function(){return{pre:function(a,c,h){c=h.$$observers||(h.$$observers=X());if(l.test(e))throw ia("nodomevents");var m=h[e];m!==d&&(k=m&&b(m,!0,g,f),d=m);k&&(h[e]=k(a),(c[e]||(c[e]=[])).$$inter=!0,(h.$$observers&&h.$$observers[e].$$scope||a).$watch(k,function(a,b){"class"===e&&a!=b?h.$updateClass(a,b):h.$set(e,a)}))}}}})}}function aa(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g=b)return a;for(;b--;)8===a[b].nodeType&&Wf.call(a, -b,1);return a}function Dc(a,b){if(b&&G(b))return b;if(G(a)){var d=ad.exec(a);if(d)return d[3]}}function af(){var a={},b=!1;this.register=function(b,c){Ua(b,"controller");J(b)?L(a,b):a[b]=c};this.allowGlobals=function(){b=!0};this.$get=["$injector","$window",function(d,c){function e(a,b,c,d){if(!a||!J(a.$scope))throw P("$controller")("noscp",d,b);a.$scope[b]=c}return function(f,g,h,k){var l,m,s;h=!0===h;k&&G(k)&&(s=k);if(G(f)){k=f.match(ad);if(!k)throw Xf("ctrlfmt",f);m=k[1];s=s||k[3];f=a.hasOwnProperty(m)? -a[m]:Cc(g.$scope,m,!0)||(b?Cc(c,m,!0):u);Ta(f,m,!0)}if(h)return h=(K(f)?f[f.length-1]:f).prototype,l=Object.create(h||null),s&&e(g,s,l,m||f.name),L(function(){var a=d.invoke(f,l,g,m);a!==l&&(J(a)||D(a))&&(l=a,s&&e(g,s,l,m||f.name));return l},{instance:l,identifier:s});l=d.instantiate(f,g,m);s&&e(g,s,l,m||f.name);return l}}]}function bf(){this.$get=["$window",function(a){return A(a.document)}]}function cf(){this.$get=["$log",function(a){return function(b,d){a.error.apply(a,arguments)}}]}function $b(a){return J(a)? -ba(a)?a.toISOString():eb(a):a}function hf(){this.$get=function(){return function(a){if(!a)return"";var b=[];pc(a,function(a,c){null===a||x(a)||(K(a)?n(a,function(a,d){b.push(ga(c)+"="+ga($b(a)))}):b.push(ga(c)+"="+ga($b(a))))});return b.join("&")}}}function jf(){this.$get=function(){return function(a){function b(a,e,f){null===a||x(a)||(K(a)?n(a,function(a,c){b(a,e+"["+(J(a)?c:"")+"]")}):J(a)&&!ba(a)?pc(a,function(a,c){b(a,e+(f?"":"[")+c+(f?"":"]"))}):d.push(ga(e)+"="+ga($b(a))))}if(!a)return"";var d= -[];b(a,"",!0);return d.join("&")}}}function ac(a,b){if(G(a)){var d=a.replace(Yf,"").trim();if(d){var c=b("Content-Type");(c=c&&0===c.indexOf(bd))||(c=(c=d.match(Zf))&&$f[c[0]].test(d));c&&(a=vc(d))}}return a}function cd(a){var b=X(),d;G(a)?n(a.split("\n"),function(a){d=a.indexOf(":");var e=H(Y(a.substr(0,d)));a=Y(a.substr(d+1));e&&(b[e]=b[e]?b[e]+", "+a:a)}):J(a)&&n(a,function(a,d){var f=H(d),g=Y(a);f&&(b[f]=b[f]?b[f]+", "+g:g)});return b}function dd(a){var b;return function(d){b||(b=cd(a));return d? -(d=b[H(d)],void 0===d&&(d=null),d):b}}function ed(a,b,d,c){if(D(c))return c(a,b,d);n(c,function(c){a=c(a,b,d)});return a}function gf(){var a=this.defaults={transformResponse:[ac],transformRequest:[function(a){return J(a)&&"[object File]"!==ra.call(a)&&"[object Blob]"!==ra.call(a)&&"[object FormData]"!==ra.call(a)?eb(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:V(bc),put:V(bc),patch:V(bc)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer"}, -b=!1;this.useApplyAsync=function(a){return z(a)?(b=!!a,this):b};var d=!0;this.useLegacyPromiseExtensions=function(a){return z(a)?(d=!!a,this):d};var c=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector",function(e,f,g,h,k,l){function m(b){function c(a){var b=L({},a);b.data=ed(a.data,a.headers,a.status,f.transformResponse);a=a.status;return 200<=a&&300>a?b:k.reject(b)}function e(a,b){var c,d={};n(a,function(a,e){D(a)?(c=a(b),null!=c&&(d[e]= -c)):d[e]=a});return d}if(!J(b))throw P("$http")("badreq",b);if(!G(b.url))throw P("$http")("badreq",b.url);var f=L({method:"get",transformRequest:a.transformRequest,transformResponse:a.transformResponse,paramSerializer:a.paramSerializer},b);f.headers=function(b){var c=a.headers,d=L({},b.headers),f,g,h,c=L({},c.common,c[H(b.method)]);a:for(f in c){g=H(f);for(h in d)if(H(h)===g)continue a;d[f]=c[f]}return e(d,V(b))}(b);f.method=ub(f.method);f.paramSerializer=G(f.paramSerializer)?l.get(f.paramSerializer): -f.paramSerializer;var g=[function(b){var d=b.headers,e=ed(b.data,dd(d),u,b.transformRequest);x(e)&&n(d,function(a,b){"content-type"===H(b)&&delete d[b]});x(b.withCredentials)&&!x(a.withCredentials)&&(b.withCredentials=a.withCredentials);return s(b,e).then(c,c)},u],h=k.when(f);for(n(Q,function(a){(a.request||a.requestError)&&g.unshift(a.request,a.requestError);(a.response||a.responseError)&&g.push(a.response,a.responseError)});g.length;){b=g.shift();var m=g.shift(),h=h.then(b,m)}d?(h.success=function(a){Ta(a, -"fn");h.then(function(b){a(b.data,b.status,b.headers,f)});return h},h.error=function(a){Ta(a,"fn");h.then(null,function(b){a(b.data,b.status,b.headers,f)});return h}):(h.success=fd("success"),h.error=fd("error"));return h}function s(c,d){function g(a,c,d,e){function f(){l(c,a,d,e)}n&&(200<=a&&300>a?n.put(R,[a,c,cd(d),e]):n.remove(R));b?h.$applyAsync(f):(f(),h.$$phase||h.$apply())}function l(a,b,d,e){b=-1<=b?b:0;(200<=b&&300>b?F.resolve:F.reject)({data:a,status:b,headers:dd(d),config:c,statusText:e})} -function s(a){l(a.data,a.status,V(a.headers()),a.statusText)}function Q(){var a=m.pendingRequests.indexOf(c);-1!==a&&m.pendingRequests.splice(a,1)}var F=k.defer(),C=F.promise,n,N,O=c.headers,R=r(c.url,c.paramSerializer(c.params));m.pendingRequests.push(c);C.then(Q,Q);!c.cache&&!a.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(n=J(c.cache)?c.cache:J(a.cache)?a.cache:B);n&&(N=n.get(R),z(N)?N&&D(N.then)?N.then(s,s):K(N)?l(N[1],N[0],V(N[2]),N[3]):l(N,200,{},"OK"):n.put(R,C));x(N)&&((N=gd(c.url)? -f()[c.xsrfCookieName||a.xsrfCookieName]:u)&&(O[c.xsrfHeaderName||a.xsrfHeaderName]=N),e(c.method,R,d,g,O,c.timeout,c.withCredentials,c.responseType));return C}function r(a,b){0=l&&(v.resolve(p),t(q.$$intervalId),delete g[q.$$intervalId]);y||a.$apply()},k);g[q.$$intervalId]=v;return q}var g={};f.cancel=function(a){return a&&a.$$intervalId in g?(g[a.$$intervalId].reject("canceled"),b.clearInterval(a.$$intervalId),delete g[a.$$intervalId],!0):!1};return f}]}function cc(a){a=a.split("/"); -for(var b=a.length;b--;)a[b]=qb(a[b]);return a.join("/")}function hd(a,b){var d=za(a);b.$$protocol=d.protocol;b.$$host=d.hostname;b.$$port=ea(d.port)||bg[d.protocol]||null}function id(a,b){var d="/"!==a.charAt(0);d&&(a="/"+a);var c=za(a);b.$$path=decodeURIComponent(d&&"/"===c.pathname.charAt(0)?c.pathname.substring(1):c.pathname);b.$$search=yc(c.search);b.$$hash=decodeURIComponent(c.hash);b.$$path&&"/"!=b.$$path.charAt(0)&&(b.$$path="/"+b.$$path)}function ma(a,b){if(0===b.indexOf(a))return b.substr(a.length)} -function Ja(a){var b=a.indexOf("#");return-1==b?a:a.substr(0,b)}function kb(a){return a.replace(/(#.+)|#$/,"$1")}function dc(a,b,d){this.$$html5=!0;d=d||"";hd(a,this);this.$$parse=function(a){var d=ma(b,a);if(!G(d))throw Eb("ipthprfx",a,b);id(d,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Sb(this.$$search),d=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=cc(this.$$path)+(a?"?"+a:"")+d;this.$$absUrl=b+this.$$url.substr(1)};this.$$parseLinkUrl=function(c,e){if(e&& -"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;z(f=ma(a,c))?(g=f,g=z(f=ma(d,f))?b+(ma("/",f)||f):a+g):z(f=ma(b,c))?g=b+f:b==c+"/"&&(g=b);g&&this.$$parse(g);return!!g}}function ec(a,b,d){hd(a,this);this.$$parse=function(c){var e=ma(a,c)||ma(b,c),f;x(e)||"#"!==e.charAt(0)?this.$$html5?f=e:(f="",x(e)&&(a=c,this.replace())):(f=ma(d,e),x(f)&&(f=e));id(f,this);c=this.$$path;var e=a,g=/^\/[A-Z]:(\/.*)/;0===f.indexOf(e)&&(f=f.replace(e,""));g.exec(f)||(c=(f=g.exec(c))?f[1]:c);this.$$path=c;this.$$compose()}; -this.$$compose=function(){var b=Sb(this.$$search),e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=cc(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+(this.$$url?d+this.$$url:"")};this.$$parseLinkUrl=function(b,d){return Ja(a)==Ja(b)?(this.$$parse(b),!0):!1}}function jd(a,b,d){this.$$html5=!0;ec.apply(this,arguments);this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;a==Ja(c)?f=c:(g=ma(b,c))?f=a+d+g:b===c+"/"&&(f=b);f&&this.$$parse(f);return!!f};this.$$compose=function(){var b= -Sb(this.$$search),e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=cc(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+d+this.$$url}}function Fb(a){return function(){return this[a]}}function kd(a,b){return function(d){if(x(d))return this[a];this[a]=b(d);this.$$compose();return this}}function mf(){var a="",b={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(b){return z(b)?(a=b,this):a};this.html5Mode=function(a){return bb(a)?(b.enabled=a,this):J(a)?(bb(a.enabled)&&(b.enabled=a.enabled), -bb(a.requireBase)&&(b.requireBase=a.requireBase),bb(a.rewriteLinks)&&(b.rewriteLinks=a.rewriteLinks),this):b};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(d,c,e,f,g){function h(a,b,d){var e=l.url(),f=l.$$state;try{c.url(a,b,d),l.$$state=c.state()}catch(g){throw l.url(e),l.$$state=f,g;}}function k(a,b){d.$broadcast("$locationChangeSuccess",l.absUrl(),a,l.$$state,b)}var l,m;m=c.baseHref();var s=c.url(),r;if(b.enabled){if(!m&&b.requireBase)throw Eb("nobase");r=s.substring(0, -s.indexOf("/",s.indexOf("//")+2))+(m||"/");m=e.history?dc:jd}else r=Ja(s),m=ec;var B=r.substr(0,Ja(r).lastIndexOf("/")+1);l=new m(r,B,"#"+a);l.$$parseLinkUrl(s,s);l.$$state=c.state();var n=/^\s*(javascript|mailto):/i;f.on("click",function(a){if(b.rewriteLinks&&!a.ctrlKey&&!a.metaKey&&!a.shiftKey&&2!=a.which&&2!=a.button){for(var e=A(a.target);"a"!==ta(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),k=e.attr("href")||e.attr("xlink:href");J(h)&&"[object SVGAnimatedString]"===h.toString()&& -(h=za(h.animVal).href);n.test(h)||!h||e.attr("target")||a.isDefaultPrevented()||!l.$$parseLinkUrl(h,k)||(a.preventDefault(),l.absUrl()!=c.url()&&(d.$apply(),g.angular["ff-684208-preventDefault"]=!0))}});kb(l.absUrl())!=kb(s)&&c.url(l.absUrl(),!0);var t=!0;c.onUrlChange(function(a,b){x(ma(B,a))?g.location.href=a:(d.$evalAsync(function(){var c=l.absUrl(),e=l.$$state,f;a=kb(a);l.$$parse(a);l.$$state=b;f=d.$broadcast("$locationChangeStart",a,c,b,e).defaultPrevented;l.absUrl()===a&&(f?(l.$$parse(c),l.$$state= -e,h(c,!1,e)):(t=!1,k(c,e)))}),d.$$phase||d.$digest())});d.$watch(function(){var a=kb(c.url()),b=kb(l.absUrl()),f=c.state(),g=l.$$replace,m=a!==b||l.$$html5&&e.history&&f!==l.$$state;if(t||m)t=!1,d.$evalAsync(function(){var b=l.absUrl(),c=d.$broadcast("$locationChangeStart",b,a,l.$$state,f).defaultPrevented;l.absUrl()===b&&(c?(l.$$parse(a),l.$$state=f):(m&&h(b,g,f===l.$$state?null:l.$$state),k(a,f)))});l.$$replace=!1});return l}]}function nf(){var a=!0,b=this;this.debugEnabled=function(b){return z(b)? -(a=b,this):a};this.$get=["$window",function(d){function c(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=d.console||{},e=b[a]||b.log||w;a=!1;try{a=!!e.apply}catch(k){}return a?function(){var a=[];n(arguments,function(b){a.push(c(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"), -debug:function(){var c=e("debug");return function(){a&&c.apply(b,arguments)}}()}}]}function Xa(a,b){if("__defineGetter__"===a||"__defineSetter__"===a||"__lookupGetter__"===a||"__lookupSetter__"===a||"__proto__"===a)throw ca("isecfld",b);return a}function ld(a,b){a+="";if(!G(a))throw ca("iseccst",b);return a}function Aa(a,b){if(a){if(a.constructor===a)throw ca("isecfn",b);if(a.window===a)throw ca("isecwindow",b);if(a.children&&(a.nodeName||a.prop&&a.attr&&a.find))throw ca("isecdom",b);if(a===Object)throw ca("isecobj", -b);}return a}function md(a,b){if(a){if(a.constructor===a)throw ca("isecfn",b);if(a===cg||a===dg||a===eg)throw ca("isecff",b);}}function Gb(a,b){if(a&&(a===(0).constructor||a===(!1).constructor||a==="".constructor||a==={}.constructor||a===[].constructor||a===Function.constructor))throw ca("isecaf",b);}function fg(a,b){return"undefined"!==typeof a?a:b}function nd(a,b){return"undefined"===typeof a?b:"undefined"===typeof b?a:a+b}function T(a,b){var d,c;switch(a.type){case q.Program:d=!0;n(a.body,function(a){T(a.expression, -b);d=d&&a.expression.constant});a.constant=d;break;case q.Literal:a.constant=!0;a.toWatch=[];break;case q.UnaryExpression:T(a.argument,b);a.constant=a.argument.constant;a.toWatch=a.argument.toWatch;break;case q.BinaryExpression:T(a.left,b);T(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.left.toWatch.concat(a.right.toWatch);break;case q.LogicalExpression:T(a.left,b);T(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.constant?[]:[a];break;case q.ConditionalExpression:T(a.test, -b);T(a.alternate,b);T(a.consequent,b);a.constant=a.test.constant&&a.alternate.constant&&a.consequent.constant;a.toWatch=a.constant?[]:[a];break;case q.Identifier:a.constant=!1;a.toWatch=[a];break;case q.MemberExpression:T(a.object,b);a.computed&&T(a.property,b);a.constant=a.object.constant&&(!a.computed||a.property.constant);a.toWatch=[a];break;case q.CallExpression:d=a.filter?!b(a.callee.name).$stateful:!1;c=[];n(a.arguments,function(a){T(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)}); -a.constant=d;a.toWatch=a.filter&&!b(a.callee.name).$stateful?c:[a];break;case q.AssignmentExpression:T(a.left,b);T(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=[a];break;case q.ArrayExpression:d=!0;c=[];n(a.elements,function(a){T(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});a.constant=d;a.toWatch=c;break;case q.ObjectExpression:d=!0;c=[];n(a.properties,function(a){T(a.value,b);d=d&&a.value.constant;a.value.constant||c.push.apply(c,a.value.toWatch)});a.constant= -d;a.toWatch=c;break;case q.ThisExpression:a.constant=!1;a.toWatch=[];break;case q.LocalsExpression:a.constant=!1,a.toWatch=[]}}function od(a){if(1==a.length){a=a[0].expression;var b=a.toWatch;return 1!==b.length?b:b[0]!==a?b:u}}function pd(a){return a.type===q.Identifier||a.type===q.MemberExpression}function qd(a){if(1===a.body.length&&pd(a.body[0].expression))return{type:q.AssignmentExpression,left:a.body[0].expression,right:{type:q.NGValueParameter},operator:"="}}function rd(a){return 0===a.body.length|| -1===a.body.length&&(a.body[0].expression.type===q.Literal||a.body[0].expression.type===q.ArrayExpression||a.body[0].expression.type===q.ObjectExpression)}function sd(a,b){this.astBuilder=a;this.$filter=b}function td(a,b){this.astBuilder=a;this.$filter=b}function Hb(a){return"constructor"==a}function fc(a){return D(a.valueOf)?a.valueOf():gg.call(a)}function of(){var a=X(),b=X();this.$get=["$filter",function(d){function c(a,b){return null==a||null==b?a===b:"object"===typeof a&&(a=fc(a),"object"===typeof a)? -!1:a===b||a!==a&&b!==b}function e(a,b,d,e,f){var g=e.inputs,h;if(1===g.length){var k=c,g=g[0];return a.$watch(function(a){var b=g(a);c(b,k)||(h=e(a,u,u,[b]),k=b&&fc(b));return h},b,d,f)}for(var l=[],m=[],s=0,n=g.length;s=this.promise.$$state.status&&d&&d.length&&a(function(){for(var a,e,f=0,g=d.length;f -a)for(b in l++,f)qa.call(e,b)||(n--,delete f[b])}else f!==e&&(f=e,l++);return l}}c.$stateful=!0;var d=this,e,f,h,k=1n&&(M=4-n,B[M]||(B[M]=[]),B[M].push({msg:D(a.exp)?"fn: "+(a.exp.name||a.exp.toString()):a.exp,newVal:g,oldVal:k}));else if(a===c){r=!1;break a}}catch(x){f(x)}if(!(l=p.$$watchersCount&&p.$$childHead|| -p!==this&&p.$$nextSibling))for(;p!==this&&!(l=p.$$nextSibling);)p=p.$parent}while(p=l);if((r||v.length)&&!n--)throw y.$$phase=null,d("infdig",b,B);}while(r||v.length);for(y.$$phase=null;u.length;)try{u.shift()()}catch(A){f(A)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this===y&&h.$$applicationDestroyed();r(this,-this.$$watchersCount);for(var b in this.$$listenerCount)B(this,this.$$listenerCount[b],b);a&&a.$$childHead==this&&(a.$$childHead= -this.$$nextSibling);a&&a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=w;this.$on=this.$watch=this.$watchGroup=function(){return w};this.$$listeners={};this.$$nextSibling=null;l(this)}},$eval:function(a,b){return g(a)(this,b)},$evalAsync:function(a,b){y.$$phase||v.length|| -h.defer(function(){v.length&&y.$digest()});v.push({scope:this,expression:a,locals:b})},$$postDigest:function(a){u.push(a)},$apply:function(a){try{s("$apply");try{return this.$eval(a)}finally{y.$$phase=null}}catch(b){f(b)}finally{try{y.$digest()}catch(c){throw f(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&M.push(b);p()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++; -while(d=d.$parent);var e=this;return function(){var d=c.indexOf(b);-1!==d&&(c[d]=null,B(e,1,a))}},$emit:function(a,b){var c=[],d,e=this,g=!1,h={name:a,targetScope:e,stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=db([h],arguments,1),l,m;do{d=e.$$listeners[a]||c;h.currentScope=e;l=0;for(m=d.length;lKa)throw Ba("iequirks");var c=V(ja);c.isEnabled=function(){return a};c.trustAs=d.trustAs;c.getTrusted=d.getTrusted;c.valueOf=d.valueOf;a||(c.trustAs=c.getTrusted=function(a,b){return b}, -c.valueOf=$a);c.parseAs=function(a,d){var e=b(d);return e.literal&&e.constant?e:b(d,function(b){return c.getTrusted(a,b)})};var e=c.parseAs,f=c.getTrusted,g=c.trustAs;n(ja,function(a,b){var d=H(b);c[gb("parse_as_"+d)]=function(b){return e(a,b)};c[gb("get_trusted_"+d)]=function(b){return f(a,b)};c[gb("trust_as_"+d)]=function(b){return g(a,b)}});return c}]}function uf(){this.$get=["$window","$document",function(a,b){var d={},c=ea((/android (\d+)/.exec(H((a.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((a.navigator|| -{}).userAgent),f=b[0]||{},g,h=/^(Moz|webkit|ms)(?=[A-Z])/,k=f.body&&f.body.style,l=!1,m=!1;if(k){for(var s in k)if(l=h.exec(s)){g=l[0];g=g.substr(0,1).toUpperCase()+g.substr(1);break}g||(g="WebkitOpacity"in k&&"webkit");l=!!("transition"in k||g+"Transition"in k);m=!!("animation"in k||g+"Animation"in k);!c||l&&m||(l=G(k.webkitTransition),m=G(k.webkitAnimation))}return{history:!(!a.history||!a.history.pushState||4>c||e),hasEvent:function(a){if("input"===a&&11>=Ka)return!1;if(x(d[a])){var b=f.createElement("div"); -d[a]="on"+a in b}return d[a]},csp:Ea(),vendorPrefix:g,transitions:l,animations:m,android:c}}]}function wf(){var a;this.httpOptions=function(b){return b?(a=b,this):a};this.$get=["$templateCache","$http","$q","$sce",function(b,d,c,e){function f(g,h){f.totalPendingRequests++;G(g)&&b.get(g)||(g=e.getTrustedResourceUrl(g));var k=d.defaults&&d.defaults.transformResponse;K(k)?k=k.filter(function(a){return a!==ac}):k===ac&&(k=null);return d.get(g,L({cache:b,transformResponse:k},a))["finally"](function(){f.totalPendingRequests--}).then(function(a){b.put(g, -a.data);return a.data},function(a){if(!h)throw ia("tpload",g,a.status,a.statusText);return c.reject(a)})}f.totalPendingRequests=0;return f}]}function xf(){this.$get=["$rootScope","$browser","$location",function(a,b,d){return{findBindings:function(a,b,d){a=a.getElementsByClassName("ng-binding");var g=[];n(a,function(a){var c=$.element(a).data("$binding");c&&n(c,function(c){d?(new RegExp("(^|\\s)"+vd(b)+"(\\s|\\||$)")).test(c)&&g.push(a):-1!=c.indexOf(b)&&g.push(a)})});return g},findModels:function(a, -b,d){for(var g=["ng-","data-ng-","ng\\:"],h=0;hc&&(c=e),c+=+a.slice(e+1),a=a.substring(0,e)):0>c&&(c= -a.length);for(e=0;a.charAt(e)==jc;e++);if(e==(g=a.length))d=[0],c=1;else{for(g--;a.charAt(g)==jc;)g--;c-=e;d=[];for(f=0;e<=g;e++,f++)d[f]=+a.charAt(e)}c>Fd&&(d=d.splice(0,Fd-1),b=c-1,c=1);return{d:d,e:b,i:c}}function pg(a,b,d,c){var e=a.d,f=e.length-a.i;b=x(b)?Math.min(Math.max(d,f),c):+b;d=b+a.i;c=e[d];if(0h;)k.unshift(0),h++;0b.lgSize&&h.unshift(k.splice(-b.lgSize).join(""));k.length>b.gSize;)h.unshift(k.splice(-b.gSize).join(""));k.length&&h.unshift(k.join(""));k=h.join(d);f.length&&(k+=c+f.join(""));e&&(k+="e+"+e)}return 0> -a&&!g?b.negPre+k+b.negSuf:b.posPre+k+b.posSuf}function Ib(a,b,d){var c="";0>a&&(c="-",a=-a);for(a=""+a;a.length-d)e+=d;0===e&&-12==d&&(e=12);return Ib(e,b,c)}}function Jb(a,b){return function(d,c){var e=d["get"+a](),f=ub(b?"SHORT"+a:a);return c[f][e]}}function Gd(a){var b=(new Date(a,0,1)).getDay();return new Date(a,0,(4>=b?5:12)-b)}function Hd(a){return function(b){var d=Gd(b.getFullYear()); -b=+new Date(b.getFullYear(),b.getMonth(),b.getDate()+(4-b.getDay()))-+d;b=1+Math.round(b/6048E5);return Ib(b,a)}}function kc(a,b){return 0>=a.getFullYear()?b.ERAS[0]:b.ERAS[1]}function Ad(a){function b(a){var b;if(b=a.match(d)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,k=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=ea(b[9]+b[10]),g=ea(b[9]+b[11]));h.call(a,ea(b[1]),ea(b[2])-1,ea(b[3]));f=ea(b[4]||0)-f;g=ea(b[5]||0)-g;h=ea(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));k.call(a, -f,g,h,b)}return a}var d=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,d,f){var g="",h=[],k,l;d=d||"mediumDate";d=a.DATETIME_FORMATS[d]||d;G(c)&&(c=qg.test(c)?ea(c):b(c));U(c)&&(c=new Date(c));if(!ba(c)||!isFinite(c.getTime()))return c;for(;d;)(l=rg.exec(d))?(h=db(h,l,1),d=h.pop()):(h.push(d),d=null);var m=c.getTimezoneOffset();f&&(m=wc(f,c.getTimezoneOffset()),c=Rb(c,f,!0));n(h,function(b){k=sg[b];g+=k?k(c,a.DATETIME_FORMATS, -m):b.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function jg(){return function(a,b){x(b)&&(b=2);return eb(a,b)}}function kg(){return function(a,b,d){b=Infinity===Math.abs(Number(b))?Number(b):ea(b);if(isNaN(b))return a;U(a)&&(a=a.toString());if(!K(a)&&!G(a))return a;d=!d||isNaN(d)?0:ea(d);d=0>d?Math.max(0,a.length+d):d;return 0<=b?a.slice(d,d+b):0===d?a.slice(b,a.length):a.slice(Math.max(0,d+b),d)}}function Cd(a){function b(b,d){d=d?-1:1;return b.map(function(b){var c=1,h=$a;if(D(b))h=b; -else if(G(b)){if("+"==b.charAt(0)||"-"==b.charAt(0))c="-"==b.charAt(0)?-1:1,b=b.substring(1);if(""!==b&&(h=a(b),h.constant))var k=h(),h=function(a){return a[k]}}return{get:h,descending:c*d}})}function d(a){switch(typeof a){case "number":case "boolean":case "string":return!0;default:return!1}}return function(a,e,f){if(null==a)return a;if(!Ca(a))throw P("orderBy")("notarray",a);K(e)||(e=[e]);0===e.length&&(e=["+"]);var g=b(e,f);g.push({get:function(){return{}},descending:f?-1:1});a=Array.prototype.map.call(a, -function(a,b){return{value:a,predicateValues:g.map(function(c){var e=c.get(a);c=typeof e;if(null===e)c="string",e="null";else if("string"===c)e=e.toLowerCase();else if("object"===c)a:{if("function"===typeof e.valueOf&&(e=e.valueOf(),d(e)))break a;if(rc(e)&&(e=e.toString(),d(e)))break a;e=b}return{value:e,type:c}})}});a.sort(function(a,b){for(var c=0,d=0,e=g.length;db||37<=b&&40>=b||m(a,this,this.value)});if(e.hasEvent("paste"))b.on("paste cut",m)}b.on("change",k);c.$render=function(){var a=c.$isEmpty(c.$viewValue)?"":c.$viewValue;b.val()!==a&&b.val(a)}}function Mb(a,b){return function(d,c){var e,f;if(ba(d))return d;if(G(d)){'"'==d.charAt(0)&&'"'==d.charAt(d.length-1)&&(d=d.substring(1,d.length-1));if(tg.test(d))return new Date(d); -a.lastIndex=0;if(e=a.exec(d))return e.shift(),f=c?{yyyy:c.getFullYear(),MM:c.getMonth()+1,dd:c.getDate(),HH:c.getHours(),mm:c.getMinutes(),ss:c.getSeconds(),sss:c.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},n(e,function(a,c){c=t};g.$observe("min",function(a){t=r(a);h.$validate()})}if(z(g.max)||g.ngMax){var p;h.$validators.max= -function(a){return!s(a)||x(p)||d(a)<=p};g.$observe("max",function(a){p=r(a);h.$validate()})}}}function Kd(a,b,d,c){(c.$$hasNativeValidators=J(b[0].validity))&&c.$parsers.push(function(a){var c=b.prop("validity")||{};return c.badInput||c.typeMismatch?u:a})}function Ld(a,b,d,c,e){if(z(c)){a=a(c);if(!a.constant)throw nb("constexpr",d,c);return a(b)}return e}function mc(a,b){a="ngClass"+a;return["$animate",function(d){function c(a,b){var c=[],d=0;a:for(;d(?:<\/\1>|)$/,Ub=/<|&#?\w+;/,Gf=/<([\w:-]+)/,Hf=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,na={option:[1,'"],thead:[1,"","
"],col:[2,"","
"],tr:[2,"", -"
"],td:[3,"","
"],_default:[0,"",""]};na.optgroup=na.option;na.tbody=na.tfoot=na.colgroup=na.caption=na.thead;na.th=na.td;var Of=Node.prototype.contains||function(a){return!!(this.compareDocumentPosition(a)&16)},Sa=E.prototype={ready:function(a){function b(){d||(d=!0,a())}var d=!1;"complete"===Z.readyState?setTimeout(b):(this.on("DOMContentLoaded",b),E(S).on("load",b))},toString:function(){var a=[];n(this,function(b){a.push(""+b)});return"["+a.join(", ")+ -"]"},eq:function(a){return 0<=a?A(this[a]):A(this[this.length+a])},length:0,push:vg,sort:[].sort,splice:[].splice},Db={};n("multiple selected checked disabled readOnly required open".split(" "),function(a){Db[H(a)]=a});var Tc={};n("input select option textarea button form details".split(" "),function(a){Tc[a]=!0});var $c={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};n({data:Xb,removeData:hb,hasData:function(a){for(var b in ib[a.ng339])return!0;return!1}, -cleanData:function(a){for(var b=0,d=a.length;b/,Rf=/^[^\(]*\(\s*([^\)]*)\)/m,wg=/,/,xg=/^\s*(_?)(\S+?)\1\s*$/,Pf=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Ga=P("$injector");fb.$$annotate=function(a,b,d){var c;if("function"===typeof a){if(!(c=a.$inject)){c=[];if(a.length){if(b)throw G(d)&&d||(d=a.name||Sf(a)),Ga("strictdi",d);b=Uc(a);n(b[1].split(wg),function(a){a.replace(xg,function(a,b,d){c.push(d)})})}a.$inject=c}}else K(a)? -(b=a.length-1,Ta(a[b],"fn"),c=a.slice(0,b)):Ta(a,"fn",!0);return c};var Pd=P("$animate"),We=function(){var a=new Va,b=[];this.$get=["$$AnimateRunner","$rootScope",function(d,c){function e(a,b,c){var d=!1;b&&(b=G(b)?b.split(" "):K(b)?b:[],n(b,function(b){b&&(d=!0,a[b]=c)}));return d}function f(){n(b,function(b){var c=a.get(b);if(c){var d=Tf(b.attr("class")),e="",f="";n(c,function(a,b){a!==!!d[b]&&(a?e+=(e.length?" ":"")+b:f+=(f.length?" ":"")+b)});n(b,function(a){e&&Bb(a,e);f&&Ab(a,f)});a.remove(b)}}); -b.length=0}return{enabled:w,on:w,off:w,pin:w,push:function(g,h,k,l){l&&l();k=k||{};k.from&&g.css(k.from);k.to&&g.css(k.to);if(k.addClass||k.removeClass)if(h=k.addClass,l=k.removeClass,k=a.get(g)||{},h=e(k,h,!0),l=e(k,l,!1),h||l)a.put(g,k),b.push(g),1===b.length&&c.$$postDigest(f);g=new d;g.complete();return g}}}]},Ue=["$provide",function(a){var b=this;this.$$registeredAnimations=Object.create(null);this.register=function(d,c){if(d&&"."!==d.charAt(0))throw Pd("notcsel",d);var e=d+"-animation";b.$$registeredAnimations[d.substr(1)]= -e;a.factory(e,c)};this.classNameFilter=function(a){if(1===arguments.length&&(this.$$classNameFilter=a instanceof RegExp?a:null)&&/(\s+|\/)ng-animate(\s+|\/)/.test(this.$$classNameFilter.toString()))throw Pd("nongcls","ng-animate");return this.$$classNameFilter};this.$get=["$$animateQueue",function(a){function b(a,c,d){if(d){var h;a:{for(h=0;h <= >= && || ! = |".split(" "),function(a){Nb[a]=!0});var Bg={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},gc=function(a){this.options=a};gc.prototype={constructor:gc,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index=a&&"string"===typeof a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,b,d){d=d||this.index;b=z(b)?"s "+b+"-"+this.index+" ["+this.text.substring(b, -d)+"]":" "+d;throw ca("lexerr",a,b,this.text);},readNumber:function(){for(var a="",b=this.index;this.index","<=",">=");)a={type:q.BinaryExpression,operator:b.text,left:a,right:this.additive()};return a},additive:function(){for(var a=this.multiplicative(), -b;b=this.expect("+","-");)a={type:q.BinaryExpression,operator:b.text,left:a,right:this.multiplicative()};return a},multiplicative:function(){for(var a=this.unary(),b;b=this.expect("*","/","%");)a={type:q.BinaryExpression,operator:b.text,left:a,right:this.unary()};return a},unary:function(){var a;return(a=this.expect("+","-","!"))?{type:q.UnaryExpression,operator:a.text,prefix:!0,argument:this.unary()}:this.primary()},primary:function(){var a;this.expect("(")?(a=this.filterChain(),this.consume(")")): -this.expect("[")?a=this.arrayDeclaration():this.expect("{")?a=this.object():this.constants.hasOwnProperty(this.peek().text)?a=Pa(this.constants[this.consume().text]):this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant():this.throwError("not a primary expression",this.peek());for(var b;b=this.expect("(","[",".");)"("===b.text?(a={type:q.CallExpression,callee:a,arguments:this.parseArguments()},this.consume(")")):"["===b.text?(a={type:q.MemberExpression,object:a,property:this.expression(), -computed:!0},this.consume("]")):"."===b.text?a={type:q.MemberExpression,object:a,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return a},filter:function(a){a=[a];for(var b={type:q.CallExpression,callee:this.identifier(),arguments:a,filter:!0};this.expect(":");)a.push(this.expression());return b},parseArguments:function(){var a=[];if(")"!==this.peekToken().text){do a.push(this.expression());while(this.expect(","))}return a},identifier:function(){var a=this.consume();a.identifier|| -this.throwError("is not a valid identifier",a);return{type:q.Identifier,name:a.text}},constant:function(){return{type:q.Literal,value:this.consume().value}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;a.push(this.expression())}while(this.expect(","))}this.consume("]");return{type:q.ArrayExpression,elements:a}},object:function(){var a=[],b;if("}"!==this.peekToken().text){do{if(this.peek("}"))break;b={type:q.Property,kind:"init"};this.peek().constant? -b.key=this.constant():this.peek().identifier?b.key=this.identifier():this.throwError("invalid key",this.peek());this.consume(":");b.value=this.expression();a.push(b)}while(this.expect(","))}this.consume("}");return{type:q.ObjectExpression,properties:a}},throwError:function(a,b){throw ca("syntax",b.text,a,b.index+1,this.text,this.text.substring(b.index));},consume:function(a){if(0===this.tokens.length)throw ca("ueoe",this.text);var b=this.expect(a);b||this.throwError("is unexpected, expecting ["+a+ -"]",this.peek());return b},peekToken:function(){if(0===this.tokens.length)throw ca("ueoe",this.text);return this.tokens[0]},peek:function(a,b,d,c){return this.peekAhead(0,a,b,d,c)},peekAhead:function(a,b,d,c,e){if(this.tokens.length>a){a=this.tokens[a];var f=a.text;if(f===b||f===d||f===c||f===e||!(b||d||c||e))return a}return!1},expect:function(a,b,d,c){return(a=this.peek(a,b,d,c))?(this.tokens.shift(),a):!1},constants:{"true":{type:q.Literal,value:!0},"false":{type:q.Literal,value:!1},"null":{type:q.Literal, -value:null},undefined:{type:q.Literal,value:u},"this":{type:q.ThisExpression},$locals:{type:q.LocalsExpression}}};sd.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.state={nextId:0,filters:{},expensiveChecks:b,fn:{vars:[],body:[],own:{}},assign:{vars:[],body:[],own:{}},inputs:[]};T(c,d.$filter);var e="",f;this.stage="assign";if(f=qd(c))this.state.computing="assign",e=this.nextId(),this.recurse(f,e),this.return_(e),e="fn.assign="+this.generateFunction("assign","s,v,l");f= -od(c.body);d.stage="inputs";n(f,function(a,b){var c="fn"+b;d.state[c]={vars:[],body:[],own:{}};d.state.computing=c;var e=d.nextId();d.recurse(a,e);d.return_(e);d.state.inputs.push(c);a.watchId=b});this.state.computing="fn";this.stage="main";this.recurse(c);e='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+"var fn="+this.generateFunction("fn","s,l,a,i")+e+this.watchFns()+"return fn;";e=(new Function("$filter","ensureSafeMemberName","ensureSafeObject","ensureSafeFunction","getStringValue","ensureSafeAssignContext", -"ifDefined","plus","text",e))(this.$filter,Xa,Aa,md,ld,Gb,fg,nd,a);this.state=this.stage=u;e.literal=rd(c);e.constant=c.constant;return e},USE:"use",STRICT:"strict",watchFns:function(){var a=[],b=this.state.inputs,d=this;n(b,function(b){a.push("var "+b+"="+d.generateFunction(b,"s"))});b.length&&a.push("fn.inputs=["+b.join(",")+"];");return a.join("")},generateFunction:function(a,b){return"function("+b+"){"+this.varsPrefix(a)+this.body(a)+"};"},filterPrefix:function(){var a=[],b=this;n(this.state.filters, -function(d,c){a.push(d+"=$filter("+b.escape(c)+")")});return a.length?"var "+a.join(",")+";":""},varsPrefix:function(a){return this.state[a].vars.length?"var "+this.state[a].vars.join(",")+";":""},body:function(a){return this.state[a].body.join("")},recurse:function(a,b,d,c,e,f){var g,h,k=this,l,m;c=c||w;if(!f&&z(a.watchId))b=b||this.nextId(),this.if_("i",this.lazyAssign(b,this.computedMember("i",a.watchId)),this.lazyRecurse(a,b,d,c,e,!0));else switch(a.type){case q.Program:n(a.body,function(b,c){k.recurse(b.expression, -u,u,function(a){h=a});c!==a.body.length-1?k.current().body.push(h,";"):k.return_(h)});break;case q.Literal:m=this.escape(a.value);this.assign(b,m);c(m);break;case q.UnaryExpression:this.recurse(a.argument,u,u,function(a){h=a});m=a.operator+"("+this.ifDefined(h,0)+")";this.assign(b,m);c(m);break;case q.BinaryExpression:this.recurse(a.left,u,u,function(a){g=a});this.recurse(a.right,u,u,function(a){h=a});m="+"===a.operator?this.plus(g,h):"-"===a.operator?this.ifDefined(g,0)+a.operator+this.ifDefined(h, -0):"("+g+")"+a.operator+"("+h+")";this.assign(b,m);c(m);break;case q.LogicalExpression:b=b||this.nextId();k.recurse(a.left,b);k.if_("&&"===a.operator?b:k.not(b),k.lazyRecurse(a.right,b));c(b);break;case q.ConditionalExpression:b=b||this.nextId();k.recurse(a.test,b);k.if_(b,k.lazyRecurse(a.alternate,b),k.lazyRecurse(a.consequent,b));c(b);break;case q.Identifier:b=b||this.nextId();d&&(d.context="inputs"===k.stage?"s":this.assign(this.nextId(),this.getHasOwnProperty("l",a.name)+"?l:s"),d.computed=!1, -d.name=a.name);Xa(a.name);k.if_("inputs"===k.stage||k.not(k.getHasOwnProperty("l",a.name)),function(){k.if_("inputs"===k.stage||"s",function(){e&&1!==e&&k.if_(k.not(k.nonComputedMember("s",a.name)),k.lazyAssign(k.nonComputedMember("s",a.name),"{}"));k.assign(b,k.nonComputedMember("s",a.name))})},b&&k.lazyAssign(b,k.nonComputedMember("l",a.name)));(k.state.expensiveChecks||Hb(a.name))&&k.addEnsureSafeObject(b);c(b);break;case q.MemberExpression:g=d&&(d.context=this.nextId())||this.nextId();b=b||this.nextId(); -k.recurse(a.object,g,u,function(){k.if_(k.notNull(g),function(){e&&1!==e&&k.addEnsureSafeAssignContext(g);if(a.computed)h=k.nextId(),k.recurse(a.property,h),k.getStringValue(h),k.addEnsureSafeMemberName(h),e&&1!==e&&k.if_(k.not(k.computedMember(g,h)),k.lazyAssign(k.computedMember(g,h),"{}")),m=k.ensureSafeObject(k.computedMember(g,h)),k.assign(b,m),d&&(d.computed=!0,d.name=h);else{Xa(a.property.name);e&&1!==e&&k.if_(k.not(k.nonComputedMember(g,a.property.name)),k.lazyAssign(k.nonComputedMember(g, -a.property.name),"{}"));m=k.nonComputedMember(g,a.property.name);if(k.state.expensiveChecks||Hb(a.property.name))m=k.ensureSafeObject(m);k.assign(b,m);d&&(d.computed=!1,d.name=a.property.name)}},function(){k.assign(b,"undefined")});c(b)},!!e);break;case q.CallExpression:b=b||this.nextId();a.filter?(h=k.filter(a.callee.name),l=[],n(a.arguments,function(a){var b=k.nextId();k.recurse(a,b);l.push(b)}),m=h+"("+l.join(",")+")",k.assign(b,m),c(b)):(h=k.nextId(),g={},l=[],k.recurse(a.callee,h,g,function(){k.if_(k.notNull(h), -function(){k.addEnsureSafeFunction(h);n(a.arguments,function(a){k.recurse(a,k.nextId(),u,function(a){l.push(k.ensureSafeObject(a))})});g.name?(k.state.expensiveChecks||k.addEnsureSafeObject(g.context),m=k.member(g.context,g.name,g.computed)+"("+l.join(",")+")"):m=h+"("+l.join(",")+")";m=k.ensureSafeObject(m);k.assign(b,m)},function(){k.assign(b,"undefined")});c(b)}));break;case q.AssignmentExpression:h=this.nextId();g={};if(!pd(a.left))throw ca("lval");this.recurse(a.left,u,g,function(){k.if_(k.notNull(g.context), -function(){k.recurse(a.right,h);k.addEnsureSafeObject(k.member(g.context,g.name,g.computed));k.addEnsureSafeAssignContext(g.context);m=k.member(g.context,g.name,g.computed)+a.operator+h;k.assign(b,m);c(b||m)})},1);break;case q.ArrayExpression:l=[];n(a.elements,function(a){k.recurse(a,k.nextId(),u,function(a){l.push(a)})});m="["+l.join(",")+"]";this.assign(b,m);c(m);break;case q.ObjectExpression:l=[];n(a.properties,function(a){k.recurse(a.value,k.nextId(),u,function(b){l.push(k.escape(a.key.type=== -q.Identifier?a.key.name:""+a.key.value)+":"+b)})});m="{"+l.join(",")+"}";this.assign(b,m);c(m);break;case q.ThisExpression:this.assign(b,"s");c("s");break;case q.LocalsExpression:this.assign(b,"l");c("l");break;case q.NGValueParameter:this.assign(b,"v"),c("v")}},getHasOwnProperty:function(a,b){var d=a+"."+b,c=this.current().own;c.hasOwnProperty(d)||(c[d]=this.nextId(!1,a+"&&("+this.escape(b)+" in "+a+")"));return c[d]},assign:function(a,b){if(a)return this.current().body.push(a,"=",b,";"),a},filter:function(a){this.state.filters.hasOwnProperty(a)|| -(this.state.filters[a]=this.nextId(!0));return this.state.filters[a]},ifDefined:function(a,b){return"ifDefined("+a+","+this.escape(b)+")"},plus:function(a,b){return"plus("+a+","+b+")"},return_:function(a){this.current().body.push("return ",a,";")},if_:function(a,b,d){if(!0===a)b();else{var c=this.current().body;c.push("if(",a,"){");b();c.push("}");d&&(c.push("else{"),d(),c.push("}"))}},not:function(a){return"!("+a+")"},notNull:function(a){return a+"!=null"},nonComputedMember:function(a,b){return a+ -"."+b},computedMember:function(a,b){return a+"["+b+"]"},member:function(a,b,d){return d?this.computedMember(a,b):this.nonComputedMember(a,b)},addEnsureSafeObject:function(a){this.current().body.push(this.ensureSafeObject(a),";")},addEnsureSafeMemberName:function(a){this.current().body.push(this.ensureSafeMemberName(a),";")},addEnsureSafeFunction:function(a){this.current().body.push(this.ensureSafeFunction(a),";")},addEnsureSafeAssignContext:function(a){this.current().body.push(this.ensureSafeAssignContext(a), -";")},ensureSafeObject:function(a){return"ensureSafeObject("+a+",text)"},ensureSafeMemberName:function(a){return"ensureSafeMemberName("+a+",text)"},ensureSafeFunction:function(a){return"ensureSafeFunction("+a+",text)"},getStringValue:function(a){this.assign(a,"getStringValue("+a+",text)")},ensureSafeAssignContext:function(a){return"ensureSafeAssignContext("+a+",text)"},lazyRecurse:function(a,b,d,c,e,f){var g=this;return function(){g.recurse(a,b,d,c,e,f)}},lazyAssign:function(a,b){var d=this;return function(){d.assign(a, -b)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)},escape:function(a){if(G(a))return"'"+a.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(U(a))return a.toString();if(!0===a)return"true";if(!1===a)return"false";if(null===a)return"null";if("undefined"===typeof a)return"undefined";throw ca("esc");},nextId:function(a,b){var d="v"+this.state.nextId++;a||this.current().vars.push(d+(b?"="+b:""));return d},current:function(){return this.state[this.state.computing]}}; -td.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.expression=a;this.expensiveChecks=b;T(c,d.$filter);var e,f;if(e=qd(c))f=this.recurse(e);e=od(c.body);var g;e&&(g=[],n(e,function(a,b){var c=d.recurse(a);a.input=c;g.push(c);a.watchId=b}));var h=[];n(c.body,function(a){h.push(d.recurse(a.expression))});e=0===c.body.length?function(){}:1===c.body.length?h[0]:function(a,b){var c;n(h,function(d){c=d(a,b)});return c};f&&(e.assign=function(a,b,c){return f(a,c,b)});g&&(e.inputs= -g);e.literal=rd(c);e.constant=c.constant;return e},recurse:function(a,b,d){var c,e,f=this,g;if(a.input)return this.inputs(a.input,a.watchId);switch(a.type){case q.Literal:return this.value(a.value,b);case q.UnaryExpression:return e=this.recurse(a.argument),this["unary"+a.operator](e,b);case q.BinaryExpression:return c=this.recurse(a.left),e=this.recurse(a.right),this["binary"+a.operator](c,e,b);case q.LogicalExpression:return c=this.recurse(a.left),e=this.recurse(a.right),this["binary"+a.operator](c, -e,b);case q.ConditionalExpression:return this["ternary?:"](this.recurse(a.test),this.recurse(a.alternate),this.recurse(a.consequent),b);case q.Identifier:return Xa(a.name,f.expression),f.identifier(a.name,f.expensiveChecks||Hb(a.name),b,d,f.expression);case q.MemberExpression:return c=this.recurse(a.object,!1,!!d),a.computed||(Xa(a.property.name,f.expression),e=a.property.name),a.computed&&(e=this.recurse(a.property)),a.computed?this.computedMember(c,e,b,d,f.expression):this.nonComputedMember(c,e, -f.expensiveChecks,b,d,f.expression);case q.CallExpression:return g=[],n(a.arguments,function(a){g.push(f.recurse(a))}),a.filter&&(e=this.$filter(a.callee.name)),a.filter||(e=this.recurse(a.callee,!0)),a.filter?function(a,c,d,f){for(var n=[],r=0;r":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)>b(c,e,f,g);return d?{value:c}:c}},"binary<=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)<=b(c,e,f,g);return d?{value:c}:c}},"binary>=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)>= -b(c,e,f,g);return d?{value:c}:c}},"binary&&":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)&&b(c,e,f,g);return d?{value:c}:c}},"binary||":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)||b(c,e,f,g);return d?{value:c}:c}},"ternary?:":function(a,b,d,c){return function(e,f,g,h){e=a(e,f,g,h)?b(e,f,g,h):d(e,f,g,h);return c?{value:e}:e}},value:function(a,b){return function(){return b?{context:u,name:u,value:a}:a}},identifier:function(a,b,d,c,e){return function(f,g,h,k){f=g&&a in g?g:f;c&&1!== -c&&f&&!f[a]&&(f[a]={});g=f?f[a]:u;b&&Aa(g,e);return d?{context:f,name:a,value:g}:g}},computedMember:function(a,b,d,c,e){return function(f,g,h,k){var l=a(f,g,h,k),m,n;null!=l&&(m=b(f,g,h,k),m=ld(m),Xa(m,e),c&&1!==c&&(Gb(l),l&&!l[m]&&(l[m]={})),n=l[m],Aa(n,e));return d?{context:l,name:m,value:n}:n}},nonComputedMember:function(a,b,d,c,e,f){return function(g,h,k,l){g=a(g,h,k,l);e&&1!==e&&(Gb(g),g&&!g[b]&&(g[b]={}));h=null!=g?g[b]:u;(d||Hb(b))&&Aa(h,f);return c?{context:g,name:b,value:h}:h}},inputs:function(a, -b){return function(d,c,e,f){return f?f[b]:a(d,c,e)}}};var hc=function(a,b,d){this.lexer=a;this.$filter=b;this.options=d;this.ast=new q(this.lexer);this.astCompiler=d.csp?new td(this.ast,b):new sd(this.ast,b)};hc.prototype={constructor:hc,parse:function(a){return this.astCompiler.compile(a,this.options.expensiveChecks)}};X();X();var gg=Object.prototype.valueOf,Ba=P("$sce"),ja={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},ia=P("$compile"),aa=Z.createElement("a"),xd=za(S.location.href); -yd.$inject=["$document"];Lc.$inject=["$provide"];var Fd=22,Ed=".",jc="0";zd.$inject=["$locale"];Bd.$inject=["$locale"];var sg={yyyy:da("FullYear",4),yy:da("FullYear",2,0,!0),y:da("FullYear",1),MMMM:Jb("Month"),MMM:Jb("Month",!0),MM:da("Month",2,1),M:da("Month",1,1),dd:da("Date",2),d:da("Date",1),HH:da("Hours",2),H:da("Hours",1),hh:da("Hours",2,-12),h:da("Hours",1,-12),mm:da("Minutes",2),m:da("Minutes",1),ss:da("Seconds",2),s:da("Seconds",1),sss:da("Milliseconds",3),EEEE:Jb("Day"),EEE:Jb("Day",!0), -a:function(a,b){return 12>a.getHours()?b.AMPMS[0]:b.AMPMS[1]},Z:function(a,b,d){a=-1*d;return a=(0<=a?"+":"")+(Ib(Math[0=a.getFullYear()?b.ERANAMES[0]:b.ERANAMES[1]}},rg=/((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,qg=/^\-?\d+$/;Ad.$inject=["$locale"];var lg=ka(H),mg=ka(ub);Cd.$inject=["$parse"];var ke=ka({restrict:"E",compile:function(a,b){if(!b.href&& -!b.xlinkHref)return function(a,b){if("a"===b[0].nodeName.toLowerCase()){var e="[object SVGAnimatedString]"===ra.call(b.prop("href"))?"xlink:href":"href";b.on("click",function(a){b.attr(e)||a.preventDefault()})}}}}),vb={};n(Db,function(a,b){function d(a,d,e){a.$watch(e[c],function(a){e.$set(b,!!a)})}if("multiple"!=a){var c=va("ng-"+b),e=d;"checked"===a&&(e=function(a,b,e){e.ngModel!==e[c]&&d(a,b,e)});vb[c]=function(){return{restrict:"A",priority:100,link:e}}}});n($c,function(a,b){vb[b]=function(){return{priority:100, -link:function(a,c,e){if("ngPattern"===b&&"/"==e.ngPattern.charAt(0)&&(c=e.ngPattern.match(ug))){e.$set("ngPattern",new RegExp(c[1],c[2]));return}a.$watch(e[b],function(a){e.$set(b,a)})}}}});n(["src","srcset","href"],function(a){var b=va("ng-"+a);vb[b]=function(){return{priority:99,link:function(d,c,e){var f=a,g=a;"href"===a&&"[object SVGAnimatedString]"===ra.call(c.prop("href"))&&(g="xlinkHref",e.$attr[g]="xlink:href",f=null);e.$observe(b,function(b){b?(e.$set(g,b),Ka&&f&&c.prop(f,e[g])):"href"=== -a&&e.$set(g,null)})}}}});var Kb={$addControl:w,$$renameControl:function(a,b){a.$name=b},$removeControl:w,$setValidity:w,$setDirty:w,$setPristine:w,$setSubmitted:w};Id.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var Qd=function(a){return["$timeout","$parse",function(b,d){function c(a){return""===a?d('this[""]').assign:d(a).assign||w}return{name:"form",restrict:a?"EAC":"E",require:["form","^^?form"],controller:Id,compile:function(d,f){d.addClass(Ya).addClass(ob);var g=f.name?"name": -a&&f.ngForm?"ngForm":!1;return{pre:function(a,d,e,f){var n=f[0];if(!("action"in e)){var r=function(b){a.$apply(function(){n.$commitViewValue();n.$setSubmitted()});b.preventDefault()};d[0].addEventListener("submit",r,!1);d.on("$destroy",function(){b(function(){d[0].removeEventListener("submit",r,!1)},0,!1)})}(f[1]||n.$$parentForm).$addControl(n);var q=g?c(n.$name):w;g&&(q(a,n),e.$observe(g,function(b){n.$name!==b&&(q(a,u),n.$$parentForm.$$renameControl(n,b),q=c(n.$name),q(a,n))}));d.on("$destroy", -function(){n.$$parentForm.$removeControl(n);q(a,u);L(n,Kb)})}}}}}]},le=Qd(),ye=Qd(!0),tg=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,Cg=/^[A-Za-z][A-Za-z\d.+-]*:\/*(?:\w+(?::\w+)?@)?[^\s/]+(?::\d+)?(?:\/[\w#!:.?+=&%@\-/[\]$'()*,;~]*)?$/,Dg=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,Eg=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,Rd=/^(\d{4})-(\d{2})-(\d{2})$/,Sd=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/, -nc=/^(\d{4})-W(\d\d)$/,Td=/^(\d{4})-(\d\d)$/,Ud=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Vd={text:function(a,b,d,c,e,f){lb(a,b,d,c,e,f);lc(c)},date:mb("date",Rd,Mb(Rd,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":mb("datetimelocal",Sd,Mb(Sd,"yyyy MM dd HH mm ss sss".split(" ")),"yyyy-MM-ddTHH:mm:ss.sss"),time:mb("time",Ud,Mb(Ud,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:mb("week",nc,function(a,b){if(ba(a))return a;if(G(a)){nc.lastIndex=0;var d=nc.exec(a);if(d){var c=+d[1],e=+d[2],f=d=0,g= -0,h=0,k=Gd(c),e=7*(e-1);b&&(d=b.getHours(),f=b.getMinutes(),g=b.getSeconds(),h=b.getMilliseconds());return new Date(c,0,k.getDate()+e,d,f,g,h)}}return NaN},"yyyy-Www"),month:mb("month",Td,Mb(Td,["yyyy","MM"]),"yyyy-MM"),number:function(a,b,d,c,e,f){Kd(a,b,d,c);lb(a,b,d,c,e,f);c.$$parserName="number";c.$parsers.push(function(a){return c.$isEmpty(a)?null:Eg.test(a)?parseFloat(a):u});c.$formatters.push(function(a){if(!c.$isEmpty(a)){if(!U(a))throw nb("numfmt",a);a=a.toString()}return a});if(z(d.min)|| -d.ngMin){var g;c.$validators.min=function(a){return c.$isEmpty(a)||x(g)||a>=g};d.$observe("min",function(a){z(a)&&!U(a)&&(a=parseFloat(a,10));g=U(a)&&!isNaN(a)?a:u;c.$validate()})}if(z(d.max)||d.ngMax){var h;c.$validators.max=function(a){return c.$isEmpty(a)||x(h)||a<=h};d.$observe("max",function(a){z(a)&&!U(a)&&(a=parseFloat(a,10));h=U(a)&&!isNaN(a)?a:u;c.$validate()})}},url:function(a,b,d,c,e,f){lb(a,b,d,c,e,f);lc(c);c.$$parserName="url";c.$validators.url=function(a,b){var d=a||b;return c.$isEmpty(d)|| -Cg.test(d)}},email:function(a,b,d,c,e,f){lb(a,b,d,c,e,f);lc(c);c.$$parserName="email";c.$validators.email=function(a,b){var d=a||b;return c.$isEmpty(d)||Dg.test(d)}},radio:function(a,b,d,c){x(d.name)&&b.attr("name",++pb);b.on("click",function(a){b[0].checked&&c.$setViewValue(d.value,a&&a.type)});c.$render=function(){b[0].checked=d.value==c.$viewValue};d.$observe("value",c.$render)},checkbox:function(a,b,d,c,e,f,g,h){var k=Ld(h,a,"ngTrueValue",d.ngTrueValue,!0),l=Ld(h,a,"ngFalseValue",d.ngFalseValue, -!1);b.on("click",function(a){c.$setViewValue(b[0].checked,a&&a.type)});c.$render=function(){b[0].checked=c.$viewValue};c.$isEmpty=function(a){return!1===a};c.$formatters.push(function(a){return la(a,k)});c.$parsers.push(function(a){return a?k:l})},hidden:w,button:w,submit:w,reset:w,file:w},Fc=["$browser","$sniffer","$filter","$parse",function(a,b,d,c){return{restrict:"E",require:["?ngModel"],link:{pre:function(e,f,g,h){h[0]&&(Vd[H(g.type)]||Vd.text)(e,f,g,h[0],b,a,d,c)}}}}],Fg=/^(true|false|\d+)$/, -Qe=function(){return{restrict:"A",priority:100,compile:function(a,b){return Fg.test(b.ngValue)?function(a,b,e){e.$set("value",a.$eval(e.ngValue))}:function(a,b,e){a.$watch(e.ngValue,function(a){e.$set("value",a)})}}}},qe=["$compile",function(a){return{restrict:"AC",compile:function(b){a.$$addBindingClass(b);return function(b,c,e){a.$$addBindingInfo(c,e.ngBind);c=c[0];b.$watch(e.ngBind,function(a){c.textContent=x(a)?"":a})}}}}],se=["$interpolate","$compile",function(a,b){return{compile:function(d){b.$$addBindingClass(d); -return function(c,d,f){c=a(d.attr(f.$attr.ngBindTemplate));b.$$addBindingInfo(d,c.expressions);d=d[0];f.$observe("ngBindTemplate",function(a){d.textContent=x(a)?"":a})}}}}],re=["$sce","$parse","$compile",function(a,b,d){return{restrict:"A",compile:function(c,e){var f=b(e.ngBindHtml),g=b(e.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(c);return function(b,c,e){d.$$addBindingInfo(c,e.ngBindHtml);b.$watch(g,function(){c.html(a.getTrustedHtml(f(b))||"")})}}}}],Pe=ka({restrict:"A", -require:"ngModel",link:function(a,b,d,c){c.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),te=mc("",!0),ve=mc("Odd",0),ue=mc("Even",1),we=Na({compile:function(a,b){b.$set("ngCloak",u);a.removeClass("ng-cloak")}}),xe=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Kc={},Gg={blur:!0,focus:!0};n("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var b= -va("ng-"+a);Kc[b]=["$parse","$rootScope",function(d,c){return{restrict:"A",compile:function(e,f){var g=d(f[b],null,!0);return function(b,d){d.on(a,function(d){var e=function(){g(b,{$event:d})};Gg[a]&&c.$$phase?b.$evalAsync(e):b.$apply(e)})}}}}]});var Ae=["$animate",function(a){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(b,d,c,e,f){var g,h,k;b.$watch(c.ngIf,function(b){b?h||f(function(b,e){h=e;b[b.length++]=Z.createComment(" end ngIf: "+ -c.ngIf+" ");g={clone:b};a.enter(b,d.parent(),d)}):(k&&(k.remove(),k=null),h&&(h.$destroy(),h=null),g&&(k=tb(g.clone),a.leave(k).then(function(){k=null}),g=null))})}}}],Be=["$templateRequest","$anchorScroll","$animate",function(a,b,d){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:$.noop,compile:function(c,e){var f=e.ngInclude||e.src,g=e.onload||"",h=e.autoscroll;return function(c,e,m,n,r){var q=0,u,t,p,y=function(){t&&(t.remove(),t=null);u&&(u.$destroy(),u=null);p&& -(d.leave(p).then(function(){t=null}),t=p,p=null)};c.$watch(f,function(f){var m=function(){!z(h)||h&&!c.$eval(h)||b()},t=++q;f?(a(f,!0).then(function(a){if(t===q){var b=c.$new();n.template=a;a=r(b,function(a){y();d.enter(a,null,e).then(m)});u=b;p=a;u.$emit("$includeContentLoaded",f);c.$eval(g)}},function(){t===q&&(y(),c.$emit("$includeContentError",f))}),c.$emit("$includeContentRequested",f)):(y(),n.template=null)})}}}}],Se=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude", -link:function(b,d,c,e){/SVG/.test(d[0].toString())?(d.empty(),a(Nc(e.template,Z).childNodes)(b,function(a){d.append(a)},{futureParentElement:d})):(d.html(e.template),a(d.contents())(b))}}}],Ce=Na({priority:450,compile:function(){return{pre:function(a,b,d){a.$eval(d.ngInit)}}}}),Oe=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,b,d,c){var e=b.attr(d.$attr.ngList)||", ",f="false"!==d.ngTrim,g=f?Y(e):e;c.$parsers.push(function(a){if(!x(a)){var b=[];a&&n(a.split(g),function(a){a&& -b.push(f?Y(a):a)});return b}});c.$formatters.push(function(a){return K(a)?a.join(e):u});c.$isEmpty=function(a){return!a||!a.length}}}},ob="ng-valid",Md="ng-invalid",Ya="ng-pristine",Lb="ng-dirty",Od="ng-pending",nb=P("ngModel"),Hg=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,b,d,c,e,f,g,h,k,l){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=u;this.$validators={};this.$asyncValidators={};this.$parsers= -[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success={};this.$pending=u;this.$name=l(d.name||"",!1)(a);this.$$parentForm=Kb;var m=e(d.ngModel),s=m.assign,r=m,q=s,A=null,t,p=this;this.$$setOptions=function(a){if((p.$options=a)&&a.getterSetter){var b=e(d.ngModel+"()"),f=e(d.ngModel+"($$$p)");r=function(a){var c=m(a);D(c)&&(c=b(a));return c};q=function(a,b){D(m(a))?f(a,{$$$p:p.$modelValue}): -s(a,p.$modelValue)}}else if(!m.assign)throw nb("nonassign",d.ngModel,ua(c));};this.$render=w;this.$isEmpty=function(a){return x(a)||""===a||null===a||a!==a};this.$$updateEmptyClasses=function(a){p.$isEmpty(a)?(f.removeClass(c,"ng-not-empty"),f.addClass(c,"ng-empty")):(f.removeClass(c,"ng-empty"),f.addClass(c,"ng-not-empty"))};var y=0;Jd({ctrl:this,$element:c,set:function(a,b){a[b]=!0},unset:function(a,b){delete a[b]},$animate:f});this.$setPristine=function(){p.$dirty=!1;p.$pristine=!0;f.removeClass(c, -Lb);f.addClass(c,Ya)};this.$setDirty=function(){p.$dirty=!0;p.$pristine=!1;f.removeClass(c,Ya);f.addClass(c,Lb);p.$$parentForm.$setDirty()};this.$setUntouched=function(){p.$touched=!1;p.$untouched=!0;f.setClass(c,"ng-untouched","ng-touched")};this.$setTouched=function(){p.$touched=!0;p.$untouched=!1;f.setClass(c,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){g.cancel(A);p.$viewValue=p.$$lastCommittedViewValue;p.$render()};this.$validate=function(){if(!U(p.$modelValue)||!isNaN(p.$modelValue)){var a= -p.$$rawModelValue,b=p.$valid,c=p.$modelValue,d=p.$options&&p.$options.allowInvalid;p.$$runValidators(a,p.$$lastCommittedViewValue,function(e){d||b===e||(p.$modelValue=e?a:u,p.$modelValue!==c&&p.$$writeModelToScope())})}};this.$$runValidators=function(a,b,c){function d(){var c=!0;n(p.$validators,function(d,e){var g=d(a,b);c=c&&g;f(e,g)});return c?!0:(n(p.$asyncValidators,function(a,b){f(b,null)}),!1)}function e(){var c=[],d=!0;n(p.$asyncValidators,function(e,g){var h=e(a,b);if(!h||!D(h.then))throw nb("$asyncValidators", -h);f(g,u);c.push(h.then(function(){f(g,!0)},function(a){d=!1;f(g,!1)}))});c.length?k.all(c).then(function(){g(d)},w):g(!0)}function f(a,b){h===y&&p.$setValidity(a,b)}function g(a){h===y&&c(a)}y++;var h=y;(function(){var a=p.$$parserName||"parse";if(x(t))f(a,null);else return t||(n(p.$validators,function(a,b){f(b,null)}),n(p.$asyncValidators,function(a,b){f(b,null)})),f(a,t),t;return!0})()?d()?e():g(!1):g(!1)};this.$commitViewValue=function(){var a=p.$viewValue;g.cancel(A);if(p.$$lastCommittedViewValue!== -a||""===a&&p.$$hasNativeValidators)p.$$updateEmptyClasses(a),p.$$lastCommittedViewValue=a,p.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var b=p.$$lastCommittedViewValue;if(t=x(b)?u:!0)for(var c=0;ce||c.$isEmpty(b)||b.length<=e}}}}},Ic=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){if(c){var e=0;d.$observe("minlength",function(a){e=ea(a)||0;c.$validate()});c.$validators.minlength=function(a,b){return c.$isEmpty(b)||b.length>=e}}}}};S.angular.bootstrap?console.log("WARNING: Tried to load angular more than once."):(fe(),he($),$.module("ngLocale",[],["$provide",function(a){function b(a){a+="";var b=a.indexOf(".");return-1== -b?0:a.length-b-1}a.value("$locale",{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:"January February March April May June July August September October November December".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONEMONTH:"January February March April May June July August September October November December".split(" "), -WEEKENDRANGE:[5,6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a","short":"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:"-\u00a4",negSuf:"",posPre:"\u00a4",posSuf:""}]},id:"en-us",pluralCat:function(a,c){var e= -a|0,f=c;u===f&&(f=Math.min(b(a),3));Math.pow(10,f);return 1==e&&0==f?"one":"other"}})}]),A(Z).ready(function(){be(Z,zc)}))})(window,document);!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend(''); +(function(O,W,v){'use strict';function F(a){return function(){var b=arguments[0],d;d="["+(a?a+":":"")+b+"] http://errors.angularjs.org/1.5.1-build.4601+sha.c966876/"+(a?a+"/":"")+b;for(b=1;b").append(a).html();try{return a[0].nodeType===Pa?L(d):d.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+L(b)})}catch(c){return L(d)}}function yc(a){try{return decodeURIComponent(a)}catch(b){}}function zc(a){var b= +{};n((a||"").split("&"),function(a){var c,e,f;a&&(e=a=a.replace(/\+/g,"%20"),c=a.indexOf("="),-1!==c&&(e=a.substring(0,c),f=a.substring(c+1)),e=yc(e),y(e)&&(f=y(f)?yc(f):!0,sa.call(b,e)?G(b[e])?b[e].push(f):b[e]=[b[e],f]:b[e]=f))});return b}function Ub(a){var b=[];n(a,function(a,c){G(a)?n(a,function(a){b.push(ha(c,!0)+(!0===a?"":"="+ha(a,!0)))}):b.push(ha(c,!0)+(!0===a?"":"="+ha(a,!0)))});return b.length?b.join("&"):""}function qb(a){return ha(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi, +"+")}function ha(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,b?"%20":"+")}function ee(a,b){var d,c,e=Qa.length;for(c=0;c/,">"));}b=b||[];b.unshift(["$provide",function(b){b.value("$rootElement",a)}]);d.debugInfoEnabled&&b.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);b.unshift("ng");c=fb(b,d.strictDi);c.invoke(["$rootScope","$rootElement", +"$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;O&&e.test(O.name)&&(d.debugInfoEnabled=!0,O.name=O.name.replace(e,""));if(O&&!f.test(O.name))return c();O.name=O.name.replace(f,"");ia.resumeBootstrap=function(a){n(a,function(a){b.push(a)});return c()};D(ia.resumeDeferredBootstrap)&&ia.resumeDeferredBootstrap()}function ge(){O.name="NG_ENABLE_DEBUG_INFO!"+O.name;O.location.reload()}function he(a){a= +ia.element(a).injector();if(!a)throw Da("test");return a.get("$$testability")}function Bc(a,b){b=b||"_";return a.replace(ie,function(a,c){return(c?b:"")+a.toLowerCase()})}function je(){var a;if(!Cc){var b=rb();(ua=x(b)?O.jQuery:b?O[b]:v)&&ua.fn.on?(B=ua,T(ua.fn,{scope:Ra.scope,isolateScope:Ra.isolateScope,controller:Ra.controller,injector:Ra.injector,inheritedData:Ra.inheritedData}),a=ua.cleanData,ua.cleanData=function(b){for(var c,e=0,f;null!=(f=b[e]);e++)(c=ua._data(f,"events"))&&c.$destroy&&ua(f).triggerHandler("$destroy"); +a(b)}):B=U;ia.element=B;Cc=!0}}function sb(a,b,d){if(!a)throw Da("areq",b||"?",d||"required");return a}function Sa(a,b,d){d&&G(a)&&(a=a[a.length-1]);sb(D(a),b,"not a function, got "+(a&&"object"===typeof a?a.constructor.name||"Object":typeof a));return a}function Ta(a,b){if("hasOwnProperty"===a)throw Da("badname",b);}function Dc(a,b,d){if(!b)return a;b=b.split(".");for(var c,e=a,f=b.length,g=0;g")+c[2];for(c=c[0];c--;)d=d.lastChild;f=db(f,d.childNodes);d=e.firstChild;d.textContent=""}else f.push(b.createTextNode(a));e.textContent="";e.innerHTML="";n(f,function(a){e.appendChild(a)});return e}function Oc(a, +b){var d=a.parentNode;d&&d.replaceChild(b,a);b.appendChild(a)}function U(a){if(a instanceof U)return a;var b;H(a)&&(a=X(a),b=!0);if(!(this instanceof U)){if(b&&"<"!=a.charAt(0))throw Xb("nosel");return new U(a)}if(b){b=W;var d;a=(d=Nf.exec(a))?[b.createElement(d[1])]:(d=Nc(a,b))?d.childNodes:[]}Pc(this,a)}function Yb(a){return a.cloneNode(!0)}function wb(a,b){b||hb(a);if(a.querySelectorAll)for(var d=a.querySelectorAll("*"),c=0,e=d.length;c=xa?!1:"function"===typeof a&&/^(?:class\s|constructor\()/.test(Function.prototype.toString.call(a));return d?(c.unshift(null),new (Function.prototype.bind.apply(a,c))):a.apply(b,c)},instantiate:function(a,b,c){var d=G(a)?a[a.length-1]:a;a=e(a,b,c);a.unshift(null);return new (Function.prototype.bind.apply(d,a))},get:d,annotate:fb.$$annotate,has:function(b){return r.hasOwnProperty(b+ +"Provider")||a.hasOwnProperty(b)}}}b=!0===b;var k={},l=[],m=new Ua([],!0),r={$provide:{provider:d(c),factory:d(f),service:d(function(a,b){return f(a,["$injector",function(a){return a.instantiate(b)}])}),value:d(function(a,b){return f(a,ba(b),!1)}),constant:d(function(a,b){Ta(a,"constant");r[a]=b;I[a]=b}),decorator:function(a,b){var c=s.get(a+"Provider"),d=c.$get;c.$get=function(){var a=t.invoke(d,c);return t.invoke(b,null,{$delegate:a})}}}},s=r.$injector=h(r,function(a,b){ia.isString(b)&&l.push(b); +throw Ga("unpr",l.join(" <- "));}),I={},K=h(I,function(a,b){var c=s.get(a+"Provider",b);return t.invoke(c.$get,c,v,a)}),t=K;r.$injectorProvider={$get:ba(K)};var p=g(a),t=K.get("$injector");t.strictDi=b;n(p,function(a){a&&t.invoke(a)});return t}function Xe(){var a=!0;this.disableAutoScrolling=function(){a=!1};this.$get=["$window","$location","$rootScope",function(b,d,c){function e(a){var b=null;Array.prototype.some.call(a,function(a){if("a"===ra(a))return b=a,!0});return b}function f(a){if(a){a.scrollIntoView(); +var c;c=g.yOffset;D(c)?c=c():Rb(c)?(c=c[0],c="fixed"!==b.getComputedStyle(c).position?0:c.getBoundingClientRect().bottom):N(c)||(c=0);c&&(a=a.getBoundingClientRect().top,b.scrollBy(0,a-c))}else b.scrollTo(0,0)}function g(a){a=H(a)?a:d.hash();var b;a?(b=h.getElementById(a))?f(b):(b=e(h.getElementsByName(a)))?f(b):"top"===a&&f(null):f(null)}var h=b.document;a&&c.$watch(function(){return d.hash()},function(a,b){a===b&&""===a||Pf(function(){c.$evalAsync(g)})});return g}]}function jb(a,b){if(!a&&!b)return""; +if(!a)return b;if(!b)return a;G(a)&&(a=a.join(" "));G(b)&&(b=b.join(" "));return a+" "+b}function Yf(a){H(a)&&(a=a.split(" "));var b=Z();n(a,function(a){a.length&&(b[a]=!0)});return b}function Ha(a){return E(a)?a:{}}function Zf(a,b,d,c){function e(a){try{a.apply(null,wa.call(arguments,1))}finally{if(K--,0===K)for(;t.length;)try{t.pop()()}catch(b){d.error(b)}}}function f(){z=null;g();h()}function g(){a:{try{p=m.state;break a}catch(a){}p=void 0}p=x(p)?null:p;oa(p,$)&&(p=$);$=p}function h(){if(u!==k.url()|| +w!==p)u=k.url(),w=p,n(A,function(a){a(k.url(),p)})}var k=this,l=a.location,m=a.history,r=a.setTimeout,s=a.clearTimeout,I={};k.isMock=!1;var K=0,t=[];k.$$completeOutstandingRequest=e;k.$$incOutstandingRequestCount=function(){K++};k.notifyWhenNoOutstandingRequests=function(a){0===K?a():t.push(a)};var p,w,u=l.href,la=b.find("base"),z=null;g();w=p;k.url=function(b,d,e){x(e)&&(e=null);l!==a.location&&(l=a.location);m!==a.history&&(m=a.history);if(b){var f=w===e;if(u===b&&(!c.history||f))return k;var h= +u&&Ia(u)===Ia(b);u=b;w=e;if(!c.history||h&&f){if(!h||z)z=b;d?l.replace(b):h?(d=l,e=b.indexOf("#"),e=-1===e?"":b.substr(e),d.hash=e):l.href=b;l.href!==b&&(z=b)}else m[d?"replaceState":"pushState"](e,"",b),g(),w=p;return k}return z||l.href.replace(/%27/g,"'")};k.state=function(){return p};var A=[],Q=!1,$=null;k.onUrlChange=function(b){if(!Q){if(c.history)B(a).on("popstate",f);B(a).on("hashchange",f);Q=!0}A.push(b);return b};k.$$applicationDestroyed=function(){B(a).off("hashchange popstate",f)};k.$$checkUrlChange= +h;k.baseHref=function(){var a=la.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""};k.defer=function(a,b){var c;K++;c=r(function(){delete I[c];e(a)},b||0);I[c]=!0;return c};k.defer.cancel=function(a){return I[a]?(delete I[a],s(a),e(C),!0):!1}}function df(){this.$get=["$window","$log","$sniffer","$document",function(a,b,d,c){return new Zf(a,c,b,d)}]}function ef(){this.$get=function(){function a(a,c){function e(a){a!=r&&(s?s==a&&(s=a.n):s=a,f(a.n,a.p),f(a,r),r=a,r.n=null)}function f(a, +b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(a in b)throw F("$cacheFactory")("iid",a);var g=0,h=T({},c,{id:a}),k=Z(),l=c&&c.capacity||Number.MAX_VALUE,m=Z(),r=null,s=null;return b[a]={put:function(a,b){if(!x(b)){if(ll&&this.remove(s.key);return b}},get:function(a){if(l";b=ba.firstChild.attributes;var d=b[0];b.removeNamedItem(d.name); +d.value=c;a.attributes.setNamedItem(d)}function $(a,b){try{a.addClass(b)}catch(c){}}function M(a,b,c,d,e){a instanceof B||(a=B(a));for(var f=/\S+/,g=0,h=a.length;g").append(a).html())):c?Ra.clone.call(a):a;if(g)for(var h in g)d.data("$"+h+"Controller",g[h].instance);M.$$addScopeInfo(d,b);c&&c(d,b);l&&l(b,d,d,f);return d}}function P(a,b,c,d,e,f){function g(a,c,d,e){var f,k,l,m,p,s,u;if(A)for(u=Array(c.length),m=0;mJ.priority)break;if(fa=J.scope)J.templateUrl||(E(fa)?(Wa("new/isolated scope",P||Q,J,ea),P=J):Wa("new/isolated scope",P,J,ea)),Q=Q||J;F=J.name;if(!N&&(J.replace&&(J.templateUrl||J.template)||J.transclude&&!J.$$tlb)){for(fa=R+1;N=a[fa++];)if(N.transclude&&!N.$$tlb||N.replace&& +(N.templateUrl||N.template)){Fb=!0;break}N=!0}!J.templateUrl&&J.controller&&(fa=J.controller,I=I||Z(),Wa("'"+F+"' controller",I[F],J,ea),I[F]=J);if(fa=J.transclude)if(z=!0,J.$$tlb||(Wa("transclusion",S,J,ea),S=J),"element"==fa)C=!0,t=J.priority,L=ea,ea=d.$$element=B(W.createComment(" "+F+": "+d[F]+" ")),b=ea[0],aa(f,wa.call(L,0),b),ya=ac(Fb,L,e,t,g&&g.name,{nonTlbTranscludeDirective:S});else{var V=Z();L=B(Yb(b)).contents();if(E(fa)){L=[];var ha=Z(),da=Z();n(fa,function(a,b){var c="?"===a.charAt(0); +a=c?a.substring(1):a;ha[a]=b;V[b]=null;da[b]=c});n(ea.contents(),function(a){var b=ha[va(ra(a))];b?(da[b]=!0,V[b]=V[b]||[],V[b].push(a)):L.push(a)});n(da,function(a,b){if(!a)throw ja("reqslot",b);});for(var ga in V)V[ga]&&(V[ga]=ac(Fb,V[ga],e))}ea.empty();ya=ac(Fb,L,e,v,v,{needsNewScope:J.$$isolateScope||J.$$newScope});ya.$$slots=V}if(J.template)if(la=!0,Wa("template",$,J,ea),$=J,fa=D(J.template)?J.template(ea,d):J.template,fa=qa(fa),J.replace){g=J;L=Wb.test(fa)?Zc(U(J.templateNamespace,X(fa))):[]; +b=L[0];if(1!=L.length||1!==b.nodeType)throw ja("tplrt",F,"");aa(f,ea,b);Va={$attr:{}};fa=ma(b,[],Va);var oa=a.splice(R+1,a.length-(R+1));(P||Q)&&$c(fa,P,Q);a=a.concat(fa).concat(oa);ad(d,Va);Va=a.length}else ea.html(fa);if(J.templateUrl)la=!0,Wa("template",$,J,ea),$=J,J.replace&&(g=J),u=$f(a.splice(R,a.length-R),ea,d,f,z&&ya,h,l,{controllerDirectives:I,newScopeDirective:Q!==J&&Q,newIsolateScopeDirective:P,templateDirective:$,nonTlbTranscludeDirective:S}),Va=a.length;else if(J.compile)try{O=J.compile(ea, +d,ya),D(O)?p(null,O,Y,ba):O&&p(O.pre,O.post,Y,ba)}catch(pa){c(pa,ta(ea))}J.terminal&&(u.terminal=!0,t=Math.max(t,J.priority))}u.scope=Q&&!0===Q.scope;u.transcludeOnThisElement=z;u.templateOnThisElement=la;u.transclude=ya;m.hasElementTranscludeDirective=C;return u}function $c(a,b,c){for(var d=0,e=a.length;dm.priority)&&-1!=m.restrict.indexOf(f)&&(k&&(m=Sb(m,{$$start:k,$$end:l})),b.push(m),h=m)}catch(t){c(t)}}return h}function O(b){if(e.hasOwnProperty(b))for(var c=a.get(b+"Directive"),d=0,f=c.length;d"+b+"";return c.childNodes[0].childNodes;default:return b}}function R(a,b){if("srcdoc"==b)return la.HTML;var c=ra(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return la.RESOURCE_URL}function Y(a,c,d,e, +f){var g=R(a,e);f=h[e]||f;var k=b(d,!0,g,f);if(k){if("multiple"===e&&"select"===ra(a))throw ja("selmulti",ta(a));c.push({priority:100,compile:function(){return{pre:function(a,c,h){c=h.$$observers||(h.$$observers=Z());if(l.test(e))throw ja("nodomevents");var m=h[e];m!==d&&(k=m&&b(m,!0,g,f),d=m);k&&(h[e]=k(a),(c[e]||(c[e]=[])).$$inter=!0,(h.$$observers&&h.$$observers[e].$$scope||a).$watch(k,function(a,b){"class"===e&&a!=b?h.$updateClass(a,b):h.$set(e,a)}))}}}})}}function aa(a,b,c){var d=b[0],e=b.length, +f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g=b)return a;for(;b--;)8===a[b].nodeType&&ag.call(a,b,1);return a}function Wc(a,b){if(b&&H(b))return b;if(H(a)){var d=dd.exec(a);if(d)return d[3]}}function ff(){var a={},b=!1;this.register=function(b,c){Ta(b,"controller");E(b)?T(a,b):a[b]=c};this.allowGlobals=function(){b=!0};this.$get= +["$injector","$window",function(d,c){function e(a,b,c,d){if(!a||!E(a.$scope))throw F("$controller")("noscp",d,b);a.$scope[b]=c}return function(f,g,h,k){var l,m,r;h=!0===h;k&&H(k)&&(r=k);if(H(f)){k=f.match(dd);if(!k)throw bg("ctrlfmt",f);m=k[1];r=r||k[3];f=a.hasOwnProperty(m)?a[m]:Dc(g.$scope,m,!0)||(b?Dc(c,m,!0):v);Sa(f,m,!0)}if(h)return h=(G(f)?f[f.length-1]:f).prototype,l=Object.create(h||null),r&&e(g,r,l,m||f.name),T(function(){var a=d.invoke(f,l,g,m);a!==l&&(E(a)||D(a))&&(l=a,r&&e(g,r,l,m||f.name)); +return l},{instance:l,identifier:r});l=d.instantiate(f,g,m);r&&e(g,r,l,m||f.name);return l}}]}function gf(){this.$get=["$window",function(a){return B(a.document)}]}function hf(){this.$get=["$log",function(a){return function(b,d){a.error.apply(a,arguments)}}]}function bc(a){return E(a)?V(a)?a.toISOString():eb(a):a}function nf(){this.$get=function(){return function(a){if(!a)return"";var b=[];rc(a,function(a,c){null===a||x(a)||(G(a)?n(a,function(a,d){b.push(ha(c)+"="+ha(bc(a)))}):b.push(ha(c)+"="+ha(bc(a))))}); +return b.join("&")}}}function of(){this.$get=function(){return function(a){function b(a,e,f){null===a||x(a)||(G(a)?n(a,function(a,c){b(a,e+"["+(E(a)?c:"")+"]")}):E(a)&&!V(a)?rc(a,function(a,c){b(a,e+(f?"":"[")+c+(f?"":"]"))}):d.push(ha(e)+"="+ha(bc(a))))}if(!a)return"";var d=[];b(a,"",!0);return d.join("&")}}}function cc(a,b){if(H(a)){var d=a.replace(cg,"").trim();if(d){var c=b("Content-Type");(c=c&&0===c.indexOf(ed))||(c=(c=d.match(dg))&&eg[c[0]].test(d));c&&(a=wc(d))}}return a}function fd(a){var b= +Z(),d;H(a)?n(a.split("\n"),function(a){d=a.indexOf(":");var e=L(X(a.substr(0,d)));a=X(a.substr(d+1));e&&(b[e]=b[e]?b[e]+", "+a:a)}):E(a)&&n(a,function(a,d){var f=L(d),g=X(a);f&&(b[f]=b[f]?b[f]+", "+g:g)});return b}function gd(a){var b;return function(d){b||(b=fd(a));return d?(d=b[L(d)],void 0===d&&(d=null),d):b}}function hd(a,b,d,c){if(D(c))return c(a,b,d);n(c,function(c){a=c(a,b,d)});return a}function mf(){var a=this.defaults={transformResponse:[cc],transformRequest:[function(a){return E(a)&&"[object File]"!== +ga.call(a)&&"[object Blob]"!==ga.call(a)&&"[object FormData]"!==ga.call(a)?eb(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:na(dc),put:na(dc),patch:na(dc)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer"},b=!1;this.useApplyAsync=function(a){return y(a)?(b=!!a,this):b};var d=!0;this.useLegacyPromiseExtensions=function(a){return y(a)?(d=!!a,this):d};var c=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory", +"$rootScope","$q","$injector",function(e,f,g,h,k,l){function m(b){function c(a){var b=T({},a);b.data=hd(a.data,a.headers,a.status,f.transformResponse);a=a.status;return 200<=a&&300>a?b:k.reject(b)}function e(a,b){var c,d={};n(a,function(a,e){D(a)?(c=a(b),null!=c&&(d[e]=c)):d[e]=a});return d}if(!E(b))throw F("$http")("badreq",b);if(!H(b.url))throw F("$http")("badreq",b.url);var f=T({method:"get",transformRequest:a.transformRequest,transformResponse:a.transformResponse,paramSerializer:a.paramSerializer}, +b);f.headers=function(b){var c=a.headers,d=T({},b.headers),f,g,h,c=T({},c.common,c[L(b.method)]);a:for(f in c){g=L(f);for(h in d)if(L(h)===g)continue a;d[f]=c[f]}return e(d,na(b))}(b);f.method=ub(f.method);f.paramSerializer=H(f.paramSerializer)?l.get(f.paramSerializer):f.paramSerializer;var g=[function(b){var d=b.headers,e=hd(b.data,gd(d),v,b.transformRequest);x(e)&&n(d,function(a,b){"content-type"===L(b)&&delete d[b]});x(b.withCredentials)&&!x(a.withCredentials)&&(b.withCredentials=a.withCredentials); +return r(b,e).then(c,c)},v],h=k.when(f);for(n(K,function(a){(a.request||a.requestError)&&g.unshift(a.request,a.requestError);(a.response||a.responseError)&&g.push(a.response,a.responseError)});g.length;){b=g.shift();var m=g.shift(),h=h.then(b,m)}d?(h.success=function(a){Sa(a,"fn");h.then(function(b){a(b.data,b.status,b.headers,f)});return h},h.error=function(a){Sa(a,"fn");h.then(null,function(b){a(b.data,b.status,b.headers,f)});return h}):(h.success=id("success"),h.error=id("error"));return h}function r(c, +d){function g(a,c,d,e){function f(){l(c,a,d,e)}K&&(200<=a&&300>a?K.put(S,[a,c,fd(d),e]):K.remove(S));b?h.$applyAsync(f):(f(),h.$$phase||h.$apply())}function l(a,b,d,e){b=-1<=b?b:0;(200<=b&&300>b?A.resolve:A.reject)({data:a,status:b,headers:gd(d),config:c,statusText:e})}function r(a){l(a.data,a.status,na(a.headers()),a.statusText)}function z(){var a=m.pendingRequests.indexOf(c);-1!==a&&m.pendingRequests.splice(a,1)}var A=k.defer(),Q=A.promise,K,M,P=c.headers,S=s(c.url,c.paramSerializer(c.params)); +m.pendingRequests.push(c);Q.then(z,z);!c.cache&&!a.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(K=E(c.cache)?c.cache:E(a.cache)?a.cache:I);K&&(M=K.get(S),y(M)?M&&D(M.then)?M.then(r,r):G(M)?l(M[1],M[0],na(M[2]),M[3]):l(M,200,{},"OK"):K.put(S,Q));x(M)&&((M=jd(c.url)?f()[c.xsrfCookieName||a.xsrfCookieName]:v)&&(P[c.xsrfHeaderName||a.xsrfHeaderName]=M),e(c.method,S,d,g,P,c.timeout,c.withCredentials,c.responseType));return Q}function s(a,b){0=l&&(u.resolve(p), +t(n.$$intervalId),delete g[n.$$intervalId]);w||a.$apply()},k);g[n.$$intervalId]=u;return n}var g={};f.cancel=function(a){return a&&a.$$intervalId in g?(g[a.$$intervalId].reject("canceled"),b.clearInterval(a.$$intervalId),delete g[a.$$intervalId],!0):!1};return f}]}function ec(a){a=a.split("/");for(var b=a.length;b--;)a[b]=qb(a[b]);return a.join("/")}function kd(a,b){var d=za(a);b.$$protocol=d.protocol;b.$$host=d.hostname;b.$$port=ca(d.port)||gg[d.protocol]||null}function ld(a,b){var d="/"!==a.charAt(0); +d&&(a="/"+a);var c=za(a);b.$$path=decodeURIComponent(d&&"/"===c.pathname.charAt(0)?c.pathname.substring(1):c.pathname);b.$$search=zc(c.search);b.$$hash=decodeURIComponent(c.hash);b.$$path&&"/"!=b.$$path.charAt(0)&&(b.$$path="/"+b.$$path)}function pa(a,b){if(0===b.indexOf(a))return b.substr(a.length)}function Ia(a){var b=a.indexOf("#");return-1==b?a:a.substr(0,b)}function kb(a){return a.replace(/(#.+)|#$/,"$1")}function fc(a,b,d){this.$$html5=!0;d=d||"";kd(a,this);this.$$parse=function(a){var d=pa(b, +a);if(!H(d))throw Gb("ipthprfx",a,b);ld(d,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Ub(this.$$search),d=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=ec(this.$$path)+(a?"?"+a:"")+d;this.$$absUrl=b+this.$$url.substr(1)};this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;y(f=pa(a,c))?(g=f,g=y(f=pa(d,f))?b+(pa("/",f)||f):a+g):y(f=pa(b,c))?g=b+f:b==c+"/"&&(g=b);g&&this.$$parse(g);return!!g}}function gc(a,b,d){kd(a,this); +this.$$parse=function(c){var e=pa(a,c)||pa(b,c),f;x(e)||"#"!==e.charAt(0)?this.$$html5?f=e:(f="",x(e)&&(a=c,this.replace())):(f=pa(d,e),x(f)&&(f=e));ld(f,this);c=this.$$path;var e=a,g=/^\/[A-Z]:(\/.*)/;0===f.indexOf(e)&&(f=f.replace(e,""));g.exec(f)||(c=(f=g.exec(c))?f[1]:c);this.$$path=c;this.$$compose()};this.$$compose=function(){var b=Ub(this.$$search),e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=ec(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+(this.$$url?d+this.$$url:"")};this.$$parseLinkUrl= +function(b,d){return Ia(a)==Ia(b)?(this.$$parse(b),!0):!1}}function md(a,b,d){this.$$html5=!0;gc.apply(this,arguments);this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;a==Ia(c)?f=c:(g=pa(b,c))?f=a+d+g:b===c+"/"&&(f=b);f&&this.$$parse(f);return!!f};this.$$compose=function(){var b=Ub(this.$$search),e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=ec(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+d+this.$$url}}function Hb(a){return function(){return this[a]}}function nd(a, +b){return function(d){if(x(d))return this[a];this[a]=b(d);this.$$compose();return this}}function rf(){var a="",b={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(b){return y(b)?(a=b,this):a};this.html5Mode=function(a){return Na(a)?(b.enabled=a,this):E(a)?(Na(a.enabled)&&(b.enabled=a.enabled),Na(a.requireBase)&&(b.requireBase=a.requireBase),Na(a.rewriteLinks)&&(b.rewriteLinks=a.rewriteLinks),this):b};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(d, +c,e,f,g){function h(a,b,d){var e=l.url(),f=l.$$state;try{c.url(a,b,d),l.$$state=c.state()}catch(g){throw l.url(e),l.$$state=f,g;}}function k(a,b){d.$broadcast("$locationChangeSuccess",l.absUrl(),a,l.$$state,b)}var l,m;m=c.baseHref();var r=c.url(),s;if(b.enabled){if(!m&&b.requireBase)throw Gb("nobase");s=r.substring(0,r.indexOf("/",r.indexOf("//")+2))+(m||"/");m=e.history?fc:md}else s=Ia(r),m=gc;var I=s.substr(0,Ia(s).lastIndexOf("/")+1);l=new m(s,I,"#"+a);l.$$parseLinkUrl(r,r);l.$$state=c.state(); +var n=/^\s*(javascript|mailto):/i;f.on("click",function(a){if(b.rewriteLinks&&!a.ctrlKey&&!a.metaKey&&!a.shiftKey&&2!=a.which&&2!=a.button){for(var e=B(a.target);"a"!==ra(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),k=e.attr("href")||e.attr("xlink:href");E(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=za(h.animVal).href);n.test(h)||!h||e.attr("target")||a.isDefaultPrevented()||!l.$$parseLinkUrl(h,k)||(a.preventDefault(),l.absUrl()!=c.url()&&(d.$apply(),g.angular["ff-684208-preventDefault"]= +!0))}});kb(l.absUrl())!=kb(r)&&c.url(l.absUrl(),!0);var t=!0;c.onUrlChange(function(a,b){x(pa(I,a))?g.location.href=a:(d.$evalAsync(function(){var c=l.absUrl(),e=l.$$state,f;a=kb(a);l.$$parse(a);l.$$state=b;f=d.$broadcast("$locationChangeStart",a,c,b,e).defaultPrevented;l.absUrl()===a&&(f?(l.$$parse(c),l.$$state=e,h(c,!1,e)):(t=!1,k(c,e)))}),d.$$phase||d.$digest())});d.$watch(function(){var a=kb(c.url()),b=kb(l.absUrl()),f=c.state(),g=l.$$replace,m=a!==b||l.$$html5&&e.history&&f!==l.$$state;if(t|| +m)t=!1,d.$evalAsync(function(){var b=l.absUrl(),c=d.$broadcast("$locationChangeStart",b,a,l.$$state,f).defaultPrevented;l.absUrl()===b&&(c?(l.$$parse(a),l.$$state=f):(m&&h(b,g,f===l.$$state?null:l.$$state),k(a,f)))});l.$$replace=!1});return l}]}function sf(){var a=!0,b=this;this.debugEnabled=function(b){return y(b)?(a=b,this):a};this.$get=["$window",function(d){function c(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&& +(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=d.console||{},e=b[a]||b.log||C;a=!1;try{a=!!e.apply}catch(k){}return a?function(){var a=[];n(arguments,function(b){a.push(c(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){a&&c.apply(b,arguments)}}()}}]}function Xa(a,b){if("__defineGetter__"===a||"__defineSetter__"===a||"__lookupGetter__"===a||"__lookupSetter__"=== +a||"__proto__"===a)throw ka("isecfld",b);return a}function hg(a){return a+""}function Aa(a,b){if(a){if(a.constructor===a)throw ka("isecfn",b);if(a.window===a)throw ka("isecwindow",b);if(a.children&&(a.nodeName||a.prop&&a.attr&&a.find))throw ka("isecdom",b);if(a===Object)throw ka("isecobj",b);}return a}function od(a,b){if(a){if(a.constructor===a)throw ka("isecfn",b);if(a===ig||a===jg||a===kg)throw ka("isecff",b);}}function Ib(a,b){if(a&&(a===(0).constructor||a===(!1).constructor||a==="".constructor|| +a==={}.constructor||a===[].constructor||a===Function.constructor))throw ka("isecaf",b);}function lg(a,b){return"undefined"!==typeof a?a:b}function pd(a,b){return"undefined"===typeof a?b:"undefined"===typeof b?a:a+b}function R(a,b){var d,c;switch(a.type){case q.Program:d=!0;n(a.body,function(a){R(a.expression,b);d=d&&a.expression.constant});a.constant=d;break;case q.Literal:a.constant=!0;a.toWatch=[];break;case q.UnaryExpression:R(a.argument,b);a.constant=a.argument.constant;a.toWatch=a.argument.toWatch; +break;case q.BinaryExpression:R(a.left,b);R(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.left.toWatch.concat(a.right.toWatch);break;case q.LogicalExpression:R(a.left,b);R(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.constant?[]:[a];break;case q.ConditionalExpression:R(a.test,b);R(a.alternate,b);R(a.consequent,b);a.constant=a.test.constant&&a.alternate.constant&&a.consequent.constant;a.toWatch=a.constant?[]:[a];break;case q.Identifier:a.constant=!1;a.toWatch= +[a];break;case q.MemberExpression:R(a.object,b);a.computed&&R(a.property,b);a.constant=a.object.constant&&(!a.computed||a.property.constant);a.toWatch=[a];break;case q.CallExpression:d=a.filter?!b(a.callee.name).$stateful:!1;c=[];n(a.arguments,function(a){R(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});a.constant=d;a.toWatch=a.filter&&!b(a.callee.name).$stateful?c:[a];break;case q.AssignmentExpression:R(a.left,b);R(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=[a]; +break;case q.ArrayExpression:d=!0;c=[];n(a.elements,function(a){R(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});a.constant=d;a.toWatch=c;break;case q.ObjectExpression:d=!0;c=[];n(a.properties,function(a){R(a.value,b);d=d&&a.value.constant;a.value.constant||c.push.apply(c,a.value.toWatch)});a.constant=d;a.toWatch=c;break;case q.ThisExpression:a.constant=!1;a.toWatch=[];break;case q.LocalsExpression:a.constant=!1,a.toWatch=[]}}function qd(a){if(1==a.length){a=a[0].expression;var b=a.toWatch; +return 1!==b.length?b:b[0]!==a?b:v}}function rd(a){return a.type===q.Identifier||a.type===q.MemberExpression}function sd(a){if(1===a.body.length&&rd(a.body[0].expression))return{type:q.AssignmentExpression,left:a.body[0].expression,right:{type:q.NGValueParameter},operator:"="}}function td(a){return 0===a.body.length||1===a.body.length&&(a.body[0].expression.type===q.Literal||a.body[0].expression.type===q.ArrayExpression||a.body[0].expression.type===q.ObjectExpression)}function ud(a,b){this.astBuilder= +a;this.$filter=b}function vd(a,b){this.astBuilder=a;this.$filter=b}function Jb(a){return"constructor"==a}function hc(a){return D(a.valueOf)?a.valueOf():mg.call(a)}function tf(){var a=Z(),b=Z();this.$get=["$filter",function(d){function c(c,f,r){var u,n,z;r=r||K;switch(typeof c){case "string":z=c=c.trim();var A=r?b:a;u=A[z];if(!u){":"===c.charAt(0)&&":"===c.charAt(1)&&(n=!0,c=c.substring(2));u=r?I:s;var Q=new ic(u);u=(new jc(Q,d,u)).parse(c);u.constant?u.$$watchDelegate=l:n?u.$$watchDelegate=u.literal? +k:h:u.inputs&&(u.$$watchDelegate=g);r&&(u=e(u));A[z]=u}return m(u,f);case "function":return m(c,f);default:return m(C,f)}}function e(a){function b(c,d,e,f){var g=K;K=!0;try{return a(c,d,e,f)}finally{K=g}}if(!a)return a;b.$$watchDelegate=a.$$watchDelegate;b.assign=e(a.assign);b.constant=a.constant;b.literal=a.literal;for(var c=0;a.inputs&&c=this.promise.$$state.status&&d&&d.length&&a(function(){for(var a,e,f=0,g=d.length;fa)for(b in l++,f)sa.call(e,b)||(u--,delete f[b])}else f!==e&&(f=e,l++);return l}}c.$stateful=!0;var d=this,e,f,h,k=1I&&(x=4-I,y[x]||(y[x]=[]),y[x].push({msg:D(a.exp)?"fn: "+(a.exp.name||a.exp.toString()): +a.exp,newVal:g,oldVal:k}));else if(a===c){n=!1;break a}}catch(E){f(E)}if(!(s=z.$$watchersCount&&z.$$childHead||z!==this&&z.$$nextSibling))for(;z!==this&&!(s=z.$$nextSibling);)z=z.$parent}while(z=s);if((n||u.length)&&!I--)throw w.$$phase=null,d("infdig",b,y);}while(n||u.length);for(w.$$phase=null;v.length;)try{v.shift()()}catch(F){f(F)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this===w&&h.$$applicationDestroyed();s(this,-this.$$watchersCount); +for(var b in this.$$listenerCount)I(this,this.$$listenerCount[b],b);a&&a.$$childHead==this&&(a.$$childHead=this.$$nextSibling);a&&a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=C;this.$on=this.$watch=this.$watchGroup=function(){return C};this.$$listeners={};this.$$nextSibling= +null;l(this)}},$eval:function(a,b){return g(a)(this,b)},$evalAsync:function(a,b){w.$$phase||u.length||h.defer(function(){u.length&&w.$digest()});u.push({scope:this,expression:g(a),locals:b})},$$postDigest:function(a){v.push(a)},$apply:function(a){try{r("$apply");try{return this.$eval(a)}finally{w.$$phase=null}}catch(b){f(b)}finally{try{w.$digest()}catch(c){throw f(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&z.push(b);a=g(a);p()},$on:function(a,b){var c=this.$$listeners[a]; +c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){var d=c.indexOf(b);-1!==d&&(c[d]=null,I(e,1,a))}},$emit:function(a,b){var c=[],d,e=this,g=!1,h={name:a,targetScope:e,stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=db([h],arguments,1),l,m;do{d=e.$$listeners[a]||c;h.currentScope=e;l=0;for(m=d.length;lxa)throw Ba("iequirks");var c=na(qa);c.isEnabled=function(){return a};c.trustAs=d.trustAs; +c.getTrusted=d.getTrusted;c.valueOf=d.valueOf;a||(c.trustAs=c.getTrusted=function(a,b){return b},c.valueOf=ab);c.parseAs=function(a,d){var e=b(d);return e.literal&&e.constant?e:b(d,function(b){return c.getTrusted(a,b)})};var e=c.parseAs,f=c.getTrusted,g=c.trustAs;n(qa,function(a,b){var d=L(b);c[gb("parse_as_"+d)]=function(b){return e(a,b)};c[gb("get_trusted_"+d)]=function(b){return f(a,b)};c[gb("trust_as_"+d)]=function(b){return g(a,b)}});return c}]}function zf(){this.$get=["$window","$document", +function(a,b){var d={},c=ca((/android (\d+)/.exec(L((a.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((a.navigator||{}).userAgent),f=b[0]||{},g,h=/^(Moz|webkit|ms)(?=[A-Z])/,k=f.body&&f.body.style,l=!1,m=!1;if(k){for(var r in k)if(l=h.exec(r)){g=l[0];g=g.substr(0,1).toUpperCase()+g.substr(1);break}g||(g="WebkitOpacity"in k&&"webkit");l=!!("transition"in k||g+"Transition"in k);m=!!("animation"in k||g+"Animation"in k);!c||l&&m||(l=H(k.webkitTransition),m=H(k.webkitAnimation))}return{history:!(!a.history|| +!a.history.pushState||4>c||e),hasEvent:function(a){if("input"===a&&11>=xa)return!1;if(x(d[a])){var b=f.createElement("div");d[a]="on"+a in b}return d[a]},csp:Ea(),vendorPrefix:g,transitions:l,animations:m,android:c}}]}function Bf(){var a;this.httpOptions=function(b){return b?(a=b,this):a};this.$get=["$templateCache","$http","$q","$sce",function(b,d,c,e){function f(g,h){f.totalPendingRequests++;H(g)&&b.get(g)||(g=e.getTrustedResourceUrl(g));var k=d.defaults&&d.defaults.transformResponse;G(k)?k=k.filter(function(a){return a!== +cc}):k===cc&&(k=null);return d.get(g,T({cache:b,transformResponse:k},a))["finally"](function(){f.totalPendingRequests--}).then(function(a){b.put(g,a.data);return a.data},function(a){if(!h)throw ja("tpload",g,a.status,a.statusText);return c.reject(a)})}f.totalPendingRequests=0;return f}]}function Cf(){this.$get=["$rootScope","$browser","$location",function(a,b,d){return{findBindings:function(a,b,d){a=a.getElementsByClassName("ng-binding");var g=[];n(a,function(a){var c=ia.element(a).data("$binding"); +c&&n(c,function(c){d?(new RegExp("(^|\\s)"+xd(b)+"(\\s|\\||$)")).test(c)&&g.push(a):-1!=c.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,d){for(var g=["ng-","data-ng-","ng\\:"],h=0;hc&&(c=e),c+=+a.slice(e+1),a=a.substring(0,e)):0>c&&(c=a.length);for(e=0;a.charAt(e)==lc;e++);if(e==(g=a.length))d=[0],c=1;else{for(g--;a.charAt(g)==lc;)g--;c-=e;d=[];for(f=0;e<=g;e++,f++)d[f]=+a.charAt(e)}c>Hd&&(d=d.splice(0,Hd-1),b=c-1,c=1);return{d:d,e:b,i:c}}function vg(a,b,d,c){var e=a.d,f=e.length-a.i;b=x(b)?Math.min(Math.max(d,f),c):+b;d=b+a.i;c=e[d];if(0h;)k.unshift(0),h++;0b.lgSize&&h.unshift(k.splice(-b.lgSize).join(""));k.length>b.gSize;)h.unshift(k.splice(-b.gSize).join("")); +k.length&&h.unshift(k.join(""));k=h.join(d);f.length&&(k+=c+f.join(""));e&&(k+="e+"+e)}return 0>a&&!g?b.negPre+k+b.negSuf:b.posPre+k+b.posSuf}function Kb(a,b,d){var c="";0>a&&(c="-",a=-a);for(a=""+a;a.length-d)e+=d;0===e&&-12==d&&(e=12);return Kb(e,b,c)}}function Lb(a,b){return function(d,c){var e=d["get"+a](),f=ub(b?"SHORT"+a:a);return c[f][e]}}function Id(a){var b=(new Date(a, +0,1)).getDay();return new Date(a,0,(4>=b?5:12)-b)}function Jd(a){return function(b){var d=Id(b.getFullYear());b=+new Date(b.getFullYear(),b.getMonth(),b.getDate()+(4-b.getDay()))-+d;b=1+Math.round(b/6048E5);return Kb(b,a)}}function mc(a,b){return 0>=a.getFullYear()?b.ERAS[0]:b.ERAS[1]}function Cd(a){function b(a){var b;if(b=a.match(d)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,k=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=ca(b[9]+b[10]),g=ca(b[9]+b[11]));h.call(a,ca(b[1]),ca(b[2])- +1,ca(b[3]));f=ca(b[4]||0)-f;g=ca(b[5]||0)-g;h=ca(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));k.call(a,f,g,h,b)}return a}var d=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,d,f){var g="",h=[],k,l;d=d||"mediumDate";d=a.DATETIME_FORMATS[d]||d;H(c)&&(c=wg.test(c)?ca(c):b(c));N(c)&&(c=new Date(c));if(!V(c)||!isFinite(c.getTime()))return c;for(;d;)(l=xg.exec(d))?(h=db(h,l,1),d=h.pop()):(h.push(d),d=null);var m=c.getTimezoneOffset(); +f&&(m=xc(f,m),c=Tb(c,f,!0));n(h,function(b){k=yg[b];g+=k?k(c,a.DATETIME_FORMATS,m):"''"===b?"'":b.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function pg(){return function(a,b){x(b)&&(b=2);return eb(a,b)}}function qg(){return function(a,b,d){b=Infinity===Math.abs(Number(b))?Number(b):ca(b);if(isNaN(b))return a;N(a)&&(a=a.toString());if(!G(a)&&!H(a))return a;d=!d||isNaN(d)?0:ca(d);d=0>d?Math.max(0,a.length+d):d;return 0<=b?a.slice(d,d+b):0===d?a.slice(b,a.length):a.slice(Math.max(0,d+b), +d)}}function Ed(a){function b(b,d){d=d?-1:1;return b.map(function(b){var c=1,h=ab;if(D(b))h=b;else if(H(b)){if("+"==b.charAt(0)||"-"==b.charAt(0))c="-"==b.charAt(0)?-1:1,b=b.substring(1);if(""!==b&&(h=a(b),h.constant))var k=h(),h=function(a){return a[k]}}return{get:h,descending:c*d}})}function d(a){switch(typeof a){case "number":case "boolean":case "string":return!0;default:return!1}}return function(a,e,f){if(null==a)return a;if(!Ca(a))throw F("orderBy")("notarray",a);G(e)||(e=[e]);0===e.length&& +(e=["+"]);var g=b(e,f);g.push({get:function(){return{}},descending:f?-1:1});a=Array.prototype.map.call(a,function(a,b){return{value:a,predicateValues:g.map(function(c){var e=c.get(a);c=typeof e;if(null===e)c="string",e="null";else if("string"===c)e=e.toLowerCase();else if("object"===c)a:{if("function"===typeof e.valueOf&&(e=e.valueOf(),d(e)))break a;if(tc(e)&&(e=e.toString(),d(e)))break a;e=b}return{value:e,type:c}})}});a.sort(function(a,b){for(var c=0,d=0,e=g.length;db||37<=b&&40>=b||m(a,this,this.value)});if(e.hasEvent("paste"))b.on("paste cut",m)}b.on("change",k);c.$render=function(){var a=c.$isEmpty(c.$viewValue)?"":c.$viewValue;b.val()!==a&&b.val(a)}}function Ob(a,b){return function(d,c){var e, +f;if(V(d))return d;if(H(d)){'"'==d.charAt(0)&&'"'==d.charAt(d.length-1)&&(d=d.substring(1,d.length-1));if(zg.test(d))return new Date(d);a.lastIndex=0;if(e=a.exec(d))return e.shift(),f=c?{yyyy:c.getFullYear(),MM:c.getMonth()+1,dd:c.getDate(),HH:c.getHours(),mm:c.getMinutes(),ss:c.getSeconds(),sss:c.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},n(e,function(a,c){c=t};g.$observe("min",function(a){t=s(a);h.$validate()})}if(y(g.max)||g.ngMax){var p;h.$validators.max=function(a){return!r(a)||x(p)||d(a)<=p};g.$observe("max",function(a){p=s(a);h.$validate()})}}}function Md(a,b,d,c){(c.$$hasNativeValidators=E(b[0].validity))&&c.$parsers.push(function(a){var c=b.prop("validity")||{};return c.badInput||c.typeMismatch?v:a})}function Nd(a,b,d,c,e){if(y(c)){a=a(c);if(!a.constant)throw nb("constexpr",d,c);return a(b)}return e}function oc(a,b){a="ngClass"+a; +return["$animate",function(d){function c(a,b){var c=[],d=0;a:for(;d(?:<\/\1>|)$/,Wb=/<|&#?\w+;/,Lf=/<([\w:-]+)/,Mf=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,da={option:[1,'"],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};da.optgroup=da.option;da.tbody=da.tfoot=da.colgroup=da.caption=da.thead;da.th=da.td;var Tf=Node.prototype.contains||function(a){return!!(this.compareDocumentPosition(a)&16)},Ra=U.prototype={ready:function(a){function b(){d||(d=!0,a())}var d=!1;"complete"===W.readyState?setTimeout(b):(this.on("DOMContentLoaded", +b),U(O).on("load",b))},toString:function(){var a=[];n(this,function(b){a.push(""+b)});return"["+a.join(", ")+"]"},eq:function(a){return 0<=a?B(this[a]):B(this[this.length+a])},length:0,push:Bg,sort:[].sort,splice:[].splice},Db={};n("multiple selected checked disabled readOnly required open".split(" "),function(a){Db[L(a)]=a});var Uc={};n("input select option textarea button form details".split(" "),function(a){Uc[a]=!0});var cd={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max", +ngPattern:"pattern"};n({data:Zb,removeData:hb,hasData:function(a){for(var b in ib[a.ng339])return!0;return!1},cleanData:function(a){for(var b=0,d=a.length;b/,Wf=/^[^\(]*\(\s*([^\)]*)\)/m,Cg=/,/,Dg=/^\s*(_?)(\S+?)\1\s*$/,Uf=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Ga=F("$injector");fb.$$annotate=function(a,b,d){var c;if("function"===typeof a){if(!(c=a.$inject)){c=[];if(a.length){if(b)throw H(d)&&d||(d=a.name||Xf(a)),Ga("strictdi",d);b=Vc(a);n(b[1].split(Cg),function(a){a.replace(Dg,function(a,b,d){c.push(d)})})}a.$inject=c}}else G(a)? +(b=a.length-1,Sa(a[b],"fn"),c=a.slice(0,b)):Sa(a,"fn",!0);return c};var Rd=F("$animate"),$e=function(){this.$get=function(){}},af=function(){var a=new Ua,b=[];this.$get=["$$AnimateRunner","$rootScope",function(d,c){function e(a,b,c){var d=!1;b&&(b=H(b)?b.split(" "):G(b)?b:[],n(b,function(b){b&&(d=!0,a[b]=c)}));return d}function f(){n(b,function(b){var c=a.get(b);if(c){var d=Yf(b.attr("class")),e="",f="";n(c,function(a,b){a!==!!d[b]&&(a?e+=(e.length?" ":"")+b:f+=(f.length?" ":"")+b)});n(b,function(a){e&& +Bb(a,e);f&&Ab(a,f)});a.remove(b)}});b.length=0}return{enabled:C,on:C,off:C,pin:C,push:function(g,h,k,l){l&&l();k=k||{};k.from&&g.css(k.from);k.to&&g.css(k.to);if(k.addClass||k.removeClass)if(h=k.addClass,l=k.removeClass,k=a.get(g)||{},h=e(k,h,!0),l=e(k,l,!1),h||l)a.put(g,k),b.push(g),1===b.length&&c.$$postDigest(f);g=new d;g.complete();return g}}}]},Ye=["$provide",function(a){var b=this;this.$$registeredAnimations=Object.create(null);this.register=function(d,c){if(d&&"."!==d.charAt(0))throw Rd("notcsel", +d);var e=d+"-animation";b.$$registeredAnimations[d.substr(1)]=e;a.factory(e,c)};this.classNameFilter=function(a){if(1===arguments.length&&(this.$$classNameFilter=a instanceof RegExp?a:null)&&/(\s+|\/)ng-animate(\s+|\/)/.test(this.$$classNameFilter.toString()))throw Rd("nongcls","ng-animate");return this.$$classNameFilter};this.$get=["$$animateQueue",function(a){function b(a,c,d){if(d){var h;a:{for(h=0;h <= >= && || ! = |".split(" "),function(a){Pb[a]=!0});var Hg={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},ic=function(a){this.options=a};ic.prototype={constructor:ic,lex:function(a){this.text=a;this.index=0;for(this.tokens= +[];this.index=a&&"string"===typeof a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"=== +a||"+"===a||this.isNumber(a)},throwError:function(a,b,d){d=d||this.index;b=y(b)?"s "+b+"-"+this.index+" ["+this.text.substring(b,d)+"]":" "+d;throw ka("lexerr",a,b,this.text);},readNumber:function(){for(var a="",b=this.index;this.index","<=",">=");)a={type:q.BinaryExpression, +operator:b.text,left:a,right:this.additive()};return a},additive:function(){for(var a=this.multiplicative(),b;b=this.expect("+","-");)a={type:q.BinaryExpression,operator:b.text,left:a,right:this.multiplicative()};return a},multiplicative:function(){for(var a=this.unary(),b;b=this.expect("*","/","%");)a={type:q.BinaryExpression,operator:b.text,left:a,right:this.unary()};return a},unary:function(){var a;return(a=this.expect("+","-","!"))?{type:q.UnaryExpression,operator:a.text,prefix:!0,argument:this.unary()}: +this.primary()},primary:function(){var a;this.expect("(")?(a=this.filterChain(),this.consume(")")):this.expect("[")?a=this.arrayDeclaration():this.expect("{")?a=this.object():this.constants.hasOwnProperty(this.peek().text)?a=Oa(this.constants[this.consume().text]):this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant():this.throwError("not a primary expression",this.peek());for(var b;b=this.expect("(","[",".");)"("===b.text?(a={type:q.CallExpression,callee:a,arguments:this.parseArguments()}, +this.consume(")")):"["===b.text?(a={type:q.MemberExpression,object:a,property:this.expression(),computed:!0},this.consume("]")):"."===b.text?a={type:q.MemberExpression,object:a,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return a},filter:function(a){a=[a];for(var b={type:q.CallExpression,callee:this.identifier(),arguments:a,filter:!0};this.expect(":");)a.push(this.expression());return b},parseArguments:function(){var a=[];if(")"!==this.peekToken().text){do a.push(this.expression()); +while(this.expect(","))}return a},identifier:function(){var a=this.consume();a.identifier||this.throwError("is not a valid identifier",a);return{type:q.Identifier,name:a.text}},constant:function(){return{type:q.Literal,value:this.consume().value}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;a.push(this.expression())}while(this.expect(","))}this.consume("]");return{type:q.ArrayExpression,elements:a}},object:function(){var a=[],b;if("}"!==this.peekToken().text){do{if(this.peek("}"))break; +b={type:q.Property,kind:"init"};this.peek().constant?b.key=this.constant():this.peek().identifier?b.key=this.identifier():this.throwError("invalid key",this.peek());this.consume(":");b.value=this.expression();a.push(b)}while(this.expect(","))}this.consume("}");return{type:q.ObjectExpression,properties:a}},throwError:function(a,b){throw ka("syntax",b.text,a,b.index+1,this.text,this.text.substring(b.index));},consume:function(a){if(0===this.tokens.length)throw ka("ueoe",this.text);var b=this.expect(a); +b||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return b},peekToken:function(){if(0===this.tokens.length)throw ka("ueoe",this.text);return this.tokens[0]},peek:function(a,b,d,c){return this.peekAhead(0,a,b,d,c)},peekAhead:function(a,b,d,c,e){if(this.tokens.length>a){a=this.tokens[a];var f=a.text;if(f===b||f===d||f===c||f===e||!(b||d||c||e))return a}return!1},expect:function(a,b,d,c){return(a=this.peek(a,b,d,c))?(this.tokens.shift(),a):!1},constants:{"true":{type:q.Literal,value:!0}, +"false":{type:q.Literal,value:!1},"null":{type:q.Literal,value:null},undefined:{type:q.Literal,value:v},"this":{type:q.ThisExpression},$locals:{type:q.LocalsExpression}}};ud.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.state={nextId:0,filters:{},expensiveChecks:b,fn:{vars:[],body:[],own:{}},assign:{vars:[],body:[],own:{}},inputs:[]};R(c,d.$filter);var e="",f;this.stage="assign";if(f=sd(c))this.state.computing="assign",e=this.nextId(),this.recurse(f,e),this.return_(e), +e="fn.assign="+this.generateFunction("assign","s,v,l");f=qd(c.body);d.stage="inputs";n(f,function(a,b){var c="fn"+b;d.state[c]={vars:[],body:[],own:{}};d.state.computing=c;var e=d.nextId();d.recurse(a,e);d.return_(e);d.state.inputs.push(c);a.watchId=b});this.state.computing="fn";this.stage="main";this.recurse(c);e='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+"var fn="+this.generateFunction("fn","s,l,a,i")+e+this.watchFns()+"return fn;";e=(new Function("$filter","ensureSafeMemberName","ensureSafeObject", +"ensureSafeFunction","getStringValue","ensureSafeAssignContext","ifDefined","plus","text",e))(this.$filter,Xa,Aa,od,hg,Ib,lg,pd,a);this.state=this.stage=v;e.literal=td(c);e.constant=c.constant;return e},USE:"use",STRICT:"strict",watchFns:function(){var a=[],b=this.state.inputs,d=this;n(b,function(b){a.push("var "+b+"="+d.generateFunction(b,"s"))});b.length&&a.push("fn.inputs=["+b.join(",")+"];");return a.join("")},generateFunction:function(a,b){return"function("+b+"){"+this.varsPrefix(a)+this.body(a)+ +"};"},filterPrefix:function(){var a=[],b=this;n(this.state.filters,function(d,c){a.push(d+"=$filter("+b.escape(c)+")")});return a.length?"var "+a.join(",")+";":""},varsPrefix:function(a){return this.state[a].vars.length?"var "+this.state[a].vars.join(",")+";":""},body:function(a){return this.state[a].body.join("")},recurse:function(a,b,d,c,e,f){var g,h,k=this,l,m;c=c||C;if(!f&&y(a.watchId))b=b||this.nextId(),this.if_("i",this.lazyAssign(b,this.computedMember("i",a.watchId)),this.lazyRecurse(a,b,d, +c,e,!0));else switch(a.type){case q.Program:n(a.body,function(b,c){k.recurse(b.expression,v,v,function(a){h=a});c!==a.body.length-1?k.current().body.push(h,";"):k.return_(h)});break;case q.Literal:m=this.escape(a.value);this.assign(b,m);c(m);break;case q.UnaryExpression:this.recurse(a.argument,v,v,function(a){h=a});m=a.operator+"("+this.ifDefined(h,0)+")";this.assign(b,m);c(m);break;case q.BinaryExpression:this.recurse(a.left,v,v,function(a){g=a});this.recurse(a.right,v,v,function(a){h=a});m="+"=== +a.operator?this.plus(g,h):"-"===a.operator?this.ifDefined(g,0)+a.operator+this.ifDefined(h,0):"("+g+")"+a.operator+"("+h+")";this.assign(b,m);c(m);break;case q.LogicalExpression:b=b||this.nextId();k.recurse(a.left,b);k.if_("&&"===a.operator?b:k.not(b),k.lazyRecurse(a.right,b));c(b);break;case q.ConditionalExpression:b=b||this.nextId();k.recurse(a.test,b);k.if_(b,k.lazyRecurse(a.alternate,b),k.lazyRecurse(a.consequent,b));c(b);break;case q.Identifier:b=b||this.nextId();d&&(d.context="inputs"===k.stage? +"s":this.assign(this.nextId(),this.getHasOwnProperty("l",a.name)+"?l:s"),d.computed=!1,d.name=a.name);Xa(a.name);k.if_("inputs"===k.stage||k.not(k.getHasOwnProperty("l",a.name)),function(){k.if_("inputs"===k.stage||"s",function(){e&&1!==e&&k.if_(k.not(k.nonComputedMember("s",a.name)),k.lazyAssign(k.nonComputedMember("s",a.name),"{}"));k.assign(b,k.nonComputedMember("s",a.name))})},b&&k.lazyAssign(b,k.nonComputedMember("l",a.name)));(k.state.expensiveChecks||Jb(a.name))&&k.addEnsureSafeObject(b);c(b); +break;case q.MemberExpression:g=d&&(d.context=this.nextId())||this.nextId();b=b||this.nextId();k.recurse(a.object,g,v,function(){k.if_(k.notNull(g),function(){e&&1!==e&&k.addEnsureSafeAssignContext(g);if(a.computed)h=k.nextId(),k.recurse(a.property,h),k.getStringValue(h),k.addEnsureSafeMemberName(h),e&&1!==e&&k.if_(k.not(k.computedMember(g,h)),k.lazyAssign(k.computedMember(g,h),"{}")),m=k.ensureSafeObject(k.computedMember(g,h)),k.assign(b,m),d&&(d.computed=!0,d.name=h);else{Xa(a.property.name);e&& +1!==e&&k.if_(k.not(k.nonComputedMember(g,a.property.name)),k.lazyAssign(k.nonComputedMember(g,a.property.name),"{}"));m=k.nonComputedMember(g,a.property.name);if(k.state.expensiveChecks||Jb(a.property.name))m=k.ensureSafeObject(m);k.assign(b,m);d&&(d.computed=!1,d.name=a.property.name)}},function(){k.assign(b,"undefined")});c(b)},!!e);break;case q.CallExpression:b=b||this.nextId();a.filter?(h=k.filter(a.callee.name),l=[],n(a.arguments,function(a){var b=k.nextId();k.recurse(a,b);l.push(b)}),m=h+"("+ +l.join(",")+")",k.assign(b,m),c(b)):(h=k.nextId(),g={},l=[],k.recurse(a.callee,h,g,function(){k.if_(k.notNull(h),function(){k.addEnsureSafeFunction(h);n(a.arguments,function(a){k.recurse(a,k.nextId(),v,function(a){l.push(k.ensureSafeObject(a))})});g.name?(k.state.expensiveChecks||k.addEnsureSafeObject(g.context),m=k.member(g.context,g.name,g.computed)+"("+l.join(",")+")"):m=h+"("+l.join(",")+")";m=k.ensureSafeObject(m);k.assign(b,m)},function(){k.assign(b,"undefined")});c(b)}));break;case q.AssignmentExpression:h= +this.nextId();g={};if(!rd(a.left))throw ka("lval");this.recurse(a.left,v,g,function(){k.if_(k.notNull(g.context),function(){k.recurse(a.right,h);k.addEnsureSafeObject(k.member(g.context,g.name,g.computed));k.addEnsureSafeAssignContext(g.context);m=k.member(g.context,g.name,g.computed)+a.operator+h;k.assign(b,m);c(b||m)})},1);break;case q.ArrayExpression:l=[];n(a.elements,function(a){k.recurse(a,k.nextId(),v,function(a){l.push(a)})});m="["+l.join(",")+"]";this.assign(b,m);c(m);break;case q.ObjectExpression:l= +[];n(a.properties,function(a){k.recurse(a.value,k.nextId(),v,function(b){l.push(k.escape(a.key.type===q.Identifier?a.key.name:""+a.key.value)+":"+b)})});m="{"+l.join(",")+"}";this.assign(b,m);c(m);break;case q.ThisExpression:this.assign(b,"s");c("s");break;case q.LocalsExpression:this.assign(b,"l");c("l");break;case q.NGValueParameter:this.assign(b,"v"),c("v")}},getHasOwnProperty:function(a,b){var d=a+"."+b,c=this.current().own;c.hasOwnProperty(d)||(c[d]=this.nextId(!1,a+"&&("+this.escape(b)+" in "+ +a+")"));return c[d]},assign:function(a,b){if(a)return this.current().body.push(a,"=",b,";"),a},filter:function(a){this.state.filters.hasOwnProperty(a)||(this.state.filters[a]=this.nextId(!0));return this.state.filters[a]},ifDefined:function(a,b){return"ifDefined("+a+","+this.escape(b)+")"},plus:function(a,b){return"plus("+a+","+b+")"},return_:function(a){this.current().body.push("return ",a,";")},if_:function(a,b,d){if(!0===a)b();else{var c=this.current().body;c.push("if(",a,"){");b();c.push("}"); +d&&(c.push("else{"),d(),c.push("}"))}},not:function(a){return"!("+a+")"},notNull:function(a){return a+"!=null"},nonComputedMember:function(a,b){return a+"."+b},computedMember:function(a,b){return a+"["+b+"]"},member:function(a,b,d){return d?this.computedMember(a,b):this.nonComputedMember(a,b)},addEnsureSafeObject:function(a){this.current().body.push(this.ensureSafeObject(a),";")},addEnsureSafeMemberName:function(a){this.current().body.push(this.ensureSafeMemberName(a),";")},addEnsureSafeFunction:function(a){this.current().body.push(this.ensureSafeFunction(a), +";")},addEnsureSafeAssignContext:function(a){this.current().body.push(this.ensureSafeAssignContext(a),";")},ensureSafeObject:function(a){return"ensureSafeObject("+a+",text)"},ensureSafeMemberName:function(a){return"ensureSafeMemberName("+a+",text)"},ensureSafeFunction:function(a){return"ensureSafeFunction("+a+",text)"},getStringValue:function(a){this.assign(a,"getStringValue("+a+")")},ensureSafeAssignContext:function(a){return"ensureSafeAssignContext("+a+",text)"},lazyRecurse:function(a,b,d,c,e,f){var g= +this;return function(){g.recurse(a,b,d,c,e,f)}},lazyAssign:function(a,b){var d=this;return function(){d.assign(a,b)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)},escape:function(a){if(H(a))return"'"+a.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(N(a))return a.toString();if(!0===a)return"true";if(!1===a)return"false";if(null===a)return"null";if("undefined"===typeof a)return"undefined";throw ka("esc");},nextId:function(a, +b){var d="v"+this.state.nextId++;a||this.current().vars.push(d+(b?"="+b:""));return d},current:function(){return this.state[this.state.computing]}};vd.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.expression=a;this.expensiveChecks=b;R(c,d.$filter);var e,f;if(e=sd(c))f=this.recurse(e);e=qd(c.body);var g;e&&(g=[],n(e,function(a,b){var c=d.recurse(a);a.input=c;g.push(c);a.watchId=b}));var h=[];n(c.body,function(a){h.push(d.recurse(a.expression))});e=0===c.body.length?function(){}: +1===c.body.length?h[0]:function(a,b){var c;n(h,function(d){c=d(a,b)});return c};f&&(e.assign=function(a,b,c){return f(a,c,b)});g&&(e.inputs=g);e.literal=td(c);e.constant=c.constant;return e},recurse:function(a,b,d){var c,e,f=this,g;if(a.input)return this.inputs(a.input,a.watchId);switch(a.type){case q.Literal:return this.value(a.value,b);case q.UnaryExpression:return e=this.recurse(a.argument),this["unary"+a.operator](e,b);case q.BinaryExpression:return c=this.recurse(a.left),e=this.recurse(a.right), +this["binary"+a.operator](c,e,b);case q.LogicalExpression:return c=this.recurse(a.left),e=this.recurse(a.right),this["binary"+a.operator](c,e,b);case q.ConditionalExpression:return this["ternary?:"](this.recurse(a.test),this.recurse(a.alternate),this.recurse(a.consequent),b);case q.Identifier:return Xa(a.name,f.expression),f.identifier(a.name,f.expensiveChecks||Jb(a.name),b,d,f.expression);case q.MemberExpression:return c=this.recurse(a.object,!1,!!d),a.computed||(Xa(a.property.name,f.expression), +e=a.property.name),a.computed&&(e=this.recurse(a.property)),a.computed?this.computedMember(c,e,b,d,f.expression):this.nonComputedMember(c,e,f.expensiveChecks,b,d,f.expression);case q.CallExpression:return g=[],n(a.arguments,function(a){g.push(f.recurse(a))}),a.filter&&(e=this.$filter(a.callee.name)),a.filter||(e=this.recurse(a.callee,!0)),a.filter?function(a,c,d,f){for(var r=[],n=0;n":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)>b(c,e,f,g);return d?{value:c}:c}},"binary<=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f, +g)<=b(c,e,f,g);return d?{value:c}:c}},"binary>=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)>=b(c,e,f,g);return d?{value:c}:c}},"binary&&":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)&&b(c,e,f,g);return d?{value:c}:c}},"binary||":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)||b(c,e,f,g);return d?{value:c}:c}},"ternary?:":function(a,b,d,c){return function(e,f,g,h){e=a(e,f,g,h)?b(e,f,g,h):d(e,f,g,h);return c?{value:e}:e}},value:function(a,b){return function(){return b?{context:v, +name:v,value:a}:a}},identifier:function(a,b,d,c,e){return function(f,g,h,k){f=g&&a in g?g:f;c&&1!==c&&f&&!f[a]&&(f[a]={});g=f?f[a]:v;b&&Aa(g,e);return d?{context:f,name:a,value:g}:g}},computedMember:function(a,b,d,c,e){return function(f,g,h,k){var l=a(f,g,h,k),m,n;null!=l&&(m=b(f,g,h,k),m+="",Xa(m,e),c&&1!==c&&(Ib(l),l&&!l[m]&&(l[m]={})),n=l[m],Aa(n,e));return d?{context:l,name:m,value:n}:n}},nonComputedMember:function(a,b,d,c,e,f){return function(g,h,k,l){g=a(g,h,k,l);e&&1!==e&&(Ib(g),g&&!g[b]&& +(g[b]={}));h=null!=g?g[b]:v;(d||Jb(b))&&Aa(h,f);return c?{context:g,name:b,value:h}:h}},inputs:function(a,b){return function(d,c,e,f){return f?f[b]:a(d,c,e)}}};var jc=function(a,b,d){this.lexer=a;this.$filter=b;this.options=d;this.ast=new q(this.lexer);this.astCompiler=d.csp?new vd(this.ast,b):new ud(this.ast,b)};jc.prototype={constructor:jc,parse:function(a){return this.astCompiler.compile(a,this.options.expensiveChecks)}};var mg=Object.prototype.valueOf,Ba=F("$sce"),qa={HTML:"html",CSS:"css",URL:"url", +RESOURCE_URL:"resourceUrl",JS:"js"},ja=F("$compile"),Y=W.createElement("a"),zd=za(O.location.href);Ad.$inject=["$document"];Lc.$inject=["$provide"];var Hd=22,Gd=".",lc="0";Bd.$inject=["$locale"];Dd.$inject=["$locale"];var yg={yyyy:aa("FullYear",4),yy:aa("FullYear",2,0,!0),y:aa("FullYear",1),MMMM:Lb("Month"),MMM:Lb("Month",!0),MM:aa("Month",2,1),M:aa("Month",1,1),dd:aa("Date",2),d:aa("Date",1),HH:aa("Hours",2),H:aa("Hours",1),hh:aa("Hours",2,-12),h:aa("Hours",1,-12),mm:aa("Minutes",2),m:aa("Minutes", +1),ss:aa("Seconds",2),s:aa("Seconds",1),sss:aa("Milliseconds",3),EEEE:Lb("Day"),EEE:Lb("Day",!0),a:function(a,b){return 12>a.getHours()?b.AMPMS[0]:b.AMPMS[1]},Z:function(a,b,d){a=-1*d;return a=(0<=a?"+":"")+(Kb(Math[0=a.getFullYear()?b.ERANAMES[0]:b.ERANAMES[1]}},xg=/((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,wg=/^\-?\d+$/;Cd.$inject=["$locale"]; +var rg=ba(L),sg=ba(ub);Ed.$inject=["$parse"];var oe=ba({restrict:"E",compile:function(a,b){if(!b.href&&!b.xlinkHref)return function(a,b){if("a"===b[0].nodeName.toLowerCase()){var e="[object SVGAnimatedString]"===ga.call(b.prop("href"))?"xlink:href":"href";b.on("click",function(a){b.attr(e)||a.preventDefault()})}}}}),vb={};n(Db,function(a,b){function d(a,d,e){a.$watch(e[c],function(a){e.$set(b,!!a)})}if("multiple"!=a){var c=va("ng-"+b),e=d;"checked"===a&&(e=function(a,b,e){e.ngModel!==e[c]&&d(a,b, +e)});vb[c]=function(){return{restrict:"A",priority:100,link:e}}}});n(cd,function(a,b){vb[b]=function(){return{priority:100,link:function(a,c,e){if("ngPattern"===b&&"/"==e.ngPattern.charAt(0)&&(c=e.ngPattern.match(Ag))){e.$set("ngPattern",new RegExp(c[1],c[2]));return}a.$watch(e[b],function(a){e.$set(b,a)})}}}});n(["src","srcset","href"],function(a){var b=va("ng-"+a);vb[b]=function(){return{priority:99,link:function(d,c,e){var f=a,g=a;"href"===a&&"[object SVGAnimatedString]"===ga.call(c.prop("href"))&& +(g="xlinkHref",e.$attr[g]="xlink:href",f=null);e.$observe(b,function(b){b?(e.$set(g,b),xa&&f&&c.prop(f,e[g])):"href"===a&&e.$set(g,null)})}}}});var Mb={$addControl:C,$$renameControl:function(a,b){a.$name=b},$removeControl:C,$setValidity:C,$setDirty:C,$setPristine:C,$setSubmitted:C};Kd.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var Sd=function(a){return["$timeout","$parse",function(b,d){function c(a){return""===a?d('this[""]').assign:d(a).assign||C}return{name:"form",restrict:a? +"EAC":"E",require:["form","^^?form"],controller:Kd,compile:function(d,f){d.addClass(Ya).addClass(ob);var g=f.name?"name":a&&f.ngForm?"ngForm":!1;return{pre:function(a,d,e,f){var n=f[0];if(!("action"in e)){var s=function(b){a.$apply(function(){n.$commitViewValue();n.$setSubmitted()});b.preventDefault()};d[0].addEventListener("submit",s,!1);d.on("$destroy",function(){b(function(){d[0].removeEventListener("submit",s,!1)},0,!1)})}(f[1]||n.$$parentForm).$addControl(n);var q=g?c(n.$name):C;g&&(q(a,n),e.$observe(g, +function(b){n.$name!==b&&(q(a,v),n.$$parentForm.$$renameControl(n,b),q=c(n.$name),q(a,n))}));d.on("$destroy",function(){n.$$parentForm.$removeControl(n);q(a,v);T(n,Mb)})}}}}}]},pe=Sd(),Ce=Sd(!0),zg=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,Ig=/^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+\])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i,Jg=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,Kg= +/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,Td=/^(\d{4})-(\d{2})-(\d{2})$/,Ud=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,pc=/^(\d{4})-W(\d\d)$/,Vd=/^(\d{4})-(\d\d)$/,Wd=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Xd={text:function(a,b,d,c,e,f){lb(a,b,d,c,e,f);nc(c)},date:mb("date",Td,Ob(Td,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":mb("datetimelocal",Ud,Ob(Ud,"yyyy MM dd HH mm ss sss".split(" ")),"yyyy-MM-ddTHH:mm:ss.sss"),time:mb("time",Wd,Ob(Wd,["HH","mm","ss", +"sss"]),"HH:mm:ss.sss"),week:mb("week",pc,function(a,b){if(V(a))return a;if(H(a)){pc.lastIndex=0;var d=pc.exec(a);if(d){var c=+d[1],e=+d[2],f=d=0,g=0,h=0,k=Id(c),e=7*(e-1);b&&(d=b.getHours(),f=b.getMinutes(),g=b.getSeconds(),h=b.getMilliseconds());return new Date(c,0,k.getDate()+e,d,f,g,h)}}return NaN},"yyyy-Www"),month:mb("month",Vd,Ob(Vd,["yyyy","MM"]),"yyyy-MM"),number:function(a,b,d,c,e,f){Md(a,b,d,c);lb(a,b,d,c,e,f);c.$$parserName="number";c.$parsers.push(function(a){return c.$isEmpty(a)?null: +Kg.test(a)?parseFloat(a):v});c.$formatters.push(function(a){if(!c.$isEmpty(a)){if(!N(a))throw nb("numfmt",a);a=a.toString()}return a});if(y(d.min)||d.ngMin){var g;c.$validators.min=function(a){return c.$isEmpty(a)||x(g)||a>=g};d.$observe("min",function(a){y(a)&&!N(a)&&(a=parseFloat(a,10));g=N(a)&&!isNaN(a)?a:v;c.$validate()})}if(y(d.max)||d.ngMax){var h;c.$validators.max=function(a){return c.$isEmpty(a)||x(h)||a<=h};d.$observe("max",function(a){y(a)&&!N(a)&&(a=parseFloat(a,10));h=N(a)&&!isNaN(a)? +a:v;c.$validate()})}},url:function(a,b,d,c,e,f){lb(a,b,d,c,e,f);nc(c);c.$$parserName="url";c.$validators.url=function(a,b){var d=a||b;return c.$isEmpty(d)||Ig.test(d)}},email:function(a,b,d,c,e,f){lb(a,b,d,c,e,f);nc(c);c.$$parserName="email";c.$validators.email=function(a,b){var d=a||b;return c.$isEmpty(d)||Jg.test(d)}},radio:function(a,b,d,c){x(d.name)&&b.attr("name",++pb);b.on("click",function(a){b[0].checked&&c.$setViewValue(d.value,a&&a.type)});c.$render=function(){b[0].checked=d.value==c.$viewValue}; +d.$observe("value",c.$render)},checkbox:function(a,b,d,c,e,f,g,h){var k=Nd(h,a,"ngTrueValue",d.ngTrueValue,!0),l=Nd(h,a,"ngFalseValue",d.ngFalseValue,!1);b.on("click",function(a){c.$setViewValue(b[0].checked,a&&a.type)});c.$render=function(){b[0].checked=c.$viewValue};c.$isEmpty=function(a){return!1===a};c.$formatters.push(function(a){return oa(a,k)});c.$parsers.push(function(a){return a?k:l})},hidden:C,button:C,submit:C,reset:C,file:C},Fc=["$browser","$sniffer","$filter","$parse",function(a,b,d, +c){return{restrict:"E",require:["?ngModel"],link:{pre:function(e,f,g,h){h[0]&&(Xd[L(g.type)]||Xd.text)(e,f,g,h[0],b,a,d,c)}}}}],Lg=/^(true|false|\d+)$/,Ue=function(){return{restrict:"A",priority:100,compile:function(a,b){return Lg.test(b.ngValue)?function(a,b,e){e.$set("value",a.$eval(e.ngValue))}:function(a,b,e){a.$watch(e.ngValue,function(a){e.$set("value",a)})}}}},ue=["$compile",function(a){return{restrict:"AC",compile:function(b){a.$$addBindingClass(b);return function(b,c,e){a.$$addBindingInfo(c, +e.ngBind);c=c[0];b.$watch(e.ngBind,function(a){c.textContent=x(a)?"":a})}}}}],we=["$interpolate","$compile",function(a,b){return{compile:function(d){b.$$addBindingClass(d);return function(c,d,f){c=a(d.attr(f.$attr.ngBindTemplate));b.$$addBindingInfo(d,c.expressions);d=d[0];f.$observe("ngBindTemplate",function(a){d.textContent=x(a)?"":a})}}}}],ve=["$sce","$parse","$compile",function(a,b,d){return{restrict:"A",compile:function(c,e){var f=b(e.ngBindHtml),g=b(e.ngBindHtml,function(a){return(a||"").toString()}); +d.$$addBindingClass(c);return function(b,c,e){d.$$addBindingInfo(c,e.ngBindHtml);b.$watch(g,function(){c.html(a.getTrustedHtml(f(b))||"")})}}}}],Te=ba({restrict:"A",require:"ngModel",link:function(a,b,d,c){c.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),xe=oc("",!0),ze=oc("Odd",0),ye=oc("Even",1),Ae=Ma({compile:function(a,b){b.$set("ngCloak",v);a.removeClass("ng-cloak")}}),Be=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Kc={},Mg={blur:!0,focus:!0};n("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), +function(a){var b=va("ng-"+a);Kc[b]=["$parse","$rootScope",function(d,c){return{restrict:"A",compile:function(e,f){var g=d(f[b],null,!0);return function(b,d){d.on(a,function(d){var e=function(){g(b,{$event:d})};Mg[a]&&c.$$phase?b.$evalAsync(e):b.$apply(e)})}}}}]});var Ee=["$animate",function(a){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(b,d,c,e,f){var g,h,k;b.$watch(c.ngIf,function(b){b?h||f(function(b,e){h=e;b[b.length++]=W.createComment(" end ngIf: "+ +c.ngIf+" ");g={clone:b};a.enter(b,d.parent(),d)}):(k&&(k.remove(),k=null),h&&(h.$destroy(),h=null),g&&(k=tb(g.clone),a.leave(k).then(function(){k=null}),g=null))})}}}],Fe=["$templateRequest","$anchorScroll","$animate",function(a,b,d){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:ia.noop,compile:function(c,e){var f=e.ngInclude||e.src,g=e.onload||"",h=e.autoscroll;return function(c,e,m,n,s){var q=0,v,t,p,w=function(){t&&(t.remove(),t=null);v&&(v.$destroy(),v=null);p&& +(d.leave(p).then(function(){t=null}),t=p,p=null)};c.$watch(f,function(f){var m=function(){!y(h)||h&&!c.$eval(h)||b()},z=++q;f?(a(f,!0).then(function(a){if(!c.$$destroyed&&z===q){var b=c.$new();n.template=a;a=s(b,function(a){w();d.enter(a,null,e).then(m)});v=b;p=a;v.$emit("$includeContentLoaded",f);c.$eval(g)}},function(){c.$$destroyed||z!==q||(w(),c.$emit("$includeContentError",f))}),c.$emit("$includeContentRequested",f)):(w(),n.template=null)})}}}}],We=["$compile",function(a){return{restrict:"ECA", +priority:-400,require:"ngInclude",link:function(b,d,c,e){ga.call(d[0]).match(/SVG/)?(d.empty(),a(Nc(e.template,W).childNodes)(b,function(a){d.append(a)},{futureParentElement:d})):(d.html(e.template),a(d.contents())(b))}}}],Ge=Ma({priority:450,compile:function(){return{pre:function(a,b,d){a.$eval(d.ngInit)}}}}),Se=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,b,d,c){var e=b.attr(d.$attr.ngList)||", ",f="false"!==d.ngTrim,g=f?X(e):e;c.$parsers.push(function(a){if(!x(a)){var b= +[];a&&n(a.split(g),function(a){a&&b.push(f?X(a):a)});return b}});c.$formatters.push(function(a){return G(a)?a.join(e):v});c.$isEmpty=function(a){return!a||!a.length}}}},ob="ng-valid",Od="ng-invalid",Ya="ng-pristine",Nb="ng-dirty",Qd="ng-pending",nb=F("ngModel"),Ng=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,b,d,c,e,f,g,h,k,l){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=v;this.$validators={};this.$asyncValidators= +{};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success={};this.$pending=v;this.$name=l(d.name||"",!1)(a);this.$$parentForm=Mb;var m=e(d.ngModel),r=m.assign,q=m,I=r,K=null,t,p=this;this.$$setOptions=function(a){if((p.$options=a)&&a.getterSetter){var b=e(d.ngModel+"()"),f=e(d.ngModel+"($$$p)");q=function(a){var c=m(a);D(c)&&(c=b(a));return c};I=function(a, +b){D(m(a))?f(a,{$$$p:p.$modelValue}):r(a,p.$modelValue)}}else if(!m.assign)throw nb("nonassign",d.ngModel,ta(c));};this.$render=C;this.$isEmpty=function(a){return x(a)||""===a||null===a||a!==a};this.$$updateEmptyClasses=function(a){p.$isEmpty(a)?(f.removeClass(c,"ng-not-empty"),f.addClass(c,"ng-empty")):(f.removeClass(c,"ng-empty"),f.addClass(c,"ng-not-empty"))};var w=0;Ld({ctrl:this,$element:c,set:function(a,b){a[b]=!0},unset:function(a,b){delete a[b]},$animate:f});this.$setPristine=function(){p.$dirty= +!1;p.$pristine=!0;f.removeClass(c,Nb);f.addClass(c,Ya)};this.$setDirty=function(){p.$dirty=!0;p.$pristine=!1;f.removeClass(c,Ya);f.addClass(c,Nb);p.$$parentForm.$setDirty()};this.$setUntouched=function(){p.$touched=!1;p.$untouched=!0;f.setClass(c,"ng-untouched","ng-touched")};this.$setTouched=function(){p.$touched=!0;p.$untouched=!1;f.setClass(c,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){g.cancel(K);p.$viewValue=p.$$lastCommittedViewValue;p.$render()};this.$validate=function(){if(!N(p.$modelValue)|| +!isNaN(p.$modelValue)){var a=p.$$rawModelValue,b=p.$valid,c=p.$modelValue,d=p.$options&&p.$options.allowInvalid;p.$$runValidators(a,p.$$lastCommittedViewValue,function(e){d||b===e||(p.$modelValue=e?a:v,p.$modelValue!==c&&p.$$writeModelToScope())})}};this.$$runValidators=function(a,b,c){function d(){var c=!0;n(p.$validators,function(d,e){var g=d(a,b);c=c&&g;f(e,g)});return c?!0:(n(p.$asyncValidators,function(a,b){f(b,null)}),!1)}function e(){var c=[],d=!0;n(p.$asyncValidators,function(e,g){var h=e(a, +b);if(!h||!D(h.then))throw nb("nopromise",h);f(g,v);c.push(h.then(function(){f(g,!0)},function(a){d=!1;f(g,!1)}))});c.length?k.all(c).then(function(){g(d)},C):g(!0)}function f(a,b){h===w&&p.$setValidity(a,b)}function g(a){h===w&&c(a)}w++;var h=w;(function(){var a=p.$$parserName||"parse";if(x(t))f(a,null);else return t||(n(p.$validators,function(a,b){f(b,null)}),n(p.$asyncValidators,function(a,b){f(b,null)})),f(a,t),t;return!0})()?d()?e():g(!1):g(!1)};this.$commitViewValue=function(){var a=p.$viewValue; +g.cancel(K);if(p.$$lastCommittedViewValue!==a||""===a&&p.$$hasNativeValidators)p.$$updateEmptyClasses(a),p.$$lastCommittedViewValue=a,p.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var b=p.$$lastCommittedViewValue;if(t=x(b)?v:!0)for(var c=0;ce||c.$isEmpty(b)||b.length<=e}}}}},Ic=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){if(c){var e=0;d.$observe("minlength",function(a){e=ca(a)||0;c.$validate()}); +c.$validators.minlength=function(a,b){return c.$isEmpty(b)||b.length>=e}}}}};O.angular.bootstrap?console.log("WARNING: Tried to load angular more than once."):(je(),le(ia),ia.module("ngLocale",[],["$provide",function(a){function b(a){a+="";var b=a.indexOf(".");return-1==b?0:a.length-b-1}a.value("$locale",{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:"January February March April May June July August September October November December".split(" "), +SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONEMONTH:"January February March April May June July August September October November December".split(" "),WEEKENDRANGE:[5,6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a","short":"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",", +PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:"-\u00a4",negSuf:"",posPre:"\u00a4",posSuf:""}]},id:"en-us",localeID:"en_US",pluralCat:function(a,c){var e=a|0,f=c;v===f&&(f=Math.min(b(a),3));Math.pow(10,f);return 1==e&&0==f?"one":"other"}})}]),B(W).ready(function(){fe(W,Ac)}))})(window,document);!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend(''); //# sourceMappingURL=angular.min.js.map diff --git a/public/vendor/angular/angular.min.js.gzip b/public/vendor/angular/angular.min.js.gzip index 7a5a2f8d30238f1f58a6859b79990316165b47a7..fe2bc930287fde763c204fac3dc109ef319f805f 100644 GIT binary patch literal 54457 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

Xu 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

q|@h@#FZ^wT-5_*a6_IY%8rp2 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","binary<=","binary>=","binary&&","binary||","ternary?:","astCompiler","yy","y","MMMM","MMM","M","H","hh","EEEE","EEE","ampmGetter","AMPMS","Z","timeZoneGetter","zone","paddedZone","ww","w","G","GG","GGG","GGGG","longEraGetter","ERANAMES","xlinkHref","propName","defaultLinkFn","normalized","ngBooleanAttrWatchAction","htmlAttr","ngAttrAliasWatchAction","nullFormRenameControl","formDirectiveFactory","isNgForm","getSetter","ngFormCompile","formElement","nameAttr","ngFormPreLink","ctrls","handleFormSubmission","setter","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","DATE_REGEXP","DATETIMELOCAL_REGEXP","WEEK_REGEXP","MONTH_REGEXP","TIME_REGEXP","inputType","textInputType","weekParser","isoWeek","existingDate","week","hours","seconds","milliseconds","addDays","numberInputType","urlInputType","ctrl.$validators.url","modelValue","viewValue","emailInputType","email","ctrl.$validators.email","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrl.$isEmpty","CONSTANT_VALUE_REGEXP","tplAttr","ngValueConstantLink","ngValueLink","valueWatchAction","$compile","ngBindCompile","templateElement","ngBindLink","ngBindWatchAction","ngBindTemplateCompile","ngBindTemplateLink","ngBindHtmlCompile","ngBindHtmlGetter","ngBindHtmlWatch","ngBindHtmlLink","ngBindHtmlWatchAction","getTrustedHtml","$viewChangeListeners","forceAsyncEvents","ngEventHandler","previousElements","ngIfWatchAction","srcExp","onloadExp","autoScrollExp","autoscroll","changeCounter","previousElement","currentElement","cleanupLastIncludeContent","ngIncludeWatchAction","afterAnimation","thisChangeId","namespaceAdaptedClone","trimValues","NgModelController","$modelValue","$$rawModelValue","$asyncValidators","$untouched","$touched","parsedNgModel","parsedNgModelAssign","ngModelGet","ngModelSet","pendingDebounce","parserValid","$$setOptions","this.$$setOptions","getterSetter","invokeModelGetter","invokeModelSetter","$$$p","this.$isEmpty","$$updateEmptyClasses","this.$$updateEmptyClasses","NOT_EMPTY_CLASS","EMPTY_CLASS","currentValidationRunId","this.$setPristine","this.$setDirty","this.$setUntouched","UNTOUCHED_CLASS","TOUCHED_CLASS","$setTouched","this.$setTouched","this.$rollbackViewValue","$$lastCommittedViewValue","this.$validate","prevValid","prevModelValue","allowInvalid","$$runValidators","allValid","$$writeModelToScope","this.$$runValidators","doneCallback","processSyncValidators","syncValidatorsValid","validator","processAsyncValidators","validatorPromises","validationDone","localValidationRunId","processParseErrors","errorKey","this.$commitViewValue","$$parseAndValidate","this.$$parseAndValidate","this.$$writeModelToScope","this.$setViewValue","updateOnDefault","$$debounceViewValueCommit","this.$$debounceViewValueCommit","debounceDelay","debounce","ngModelWatch","formatters","ngModelCompile","ngModelPreLink","modelCtrl","formCtrl","ngModelPostLink","updateOn","DEFAULT_REGEXP","ngOptionsMinErr","NG_OPTIONS_REGEXP","parseOptionsExpression","optionsExp","selectElement","Option","selectValue","label","group","disabled","getOptionValuesKeys","optionValues","optionValuesKeys","keyName","itemKey","valueName","selectAs","trackBy","viewValueFn","trackByFn","getTrackByValueFn","getHashOfValue","getTrackByValue","getLocals","displayFn","groupByFn","disableWhenFn","valuesFn","getWatchables","watchedArray","optionValuesLength","disableWhen","getOptions","optionItems","selectValueMap","optionItem","getOptionFromViewValue","getViewValueFromOption","optionTemplate","optGroupTemplate","ngOptionsPreLink","registerOption","ngOptionsPostLink","updateOptionElement","addOrReuseElement","removeExcessElements","skipEmptyAndUnknownOptions","emptyOption_","emptyOption","unknownOption_","unknownOption","updateOptions","previousValue","selectCtrl","readValue","groupMap","providedEmptyOption","updateOption","optionElement","groupElement","currentOptionElement","ngModelCtrl","nextValue","ngModelCtrl.$isEmpty","writeValue","selectCtrl.writeValue","selectCtrl.readValue","selectedValues","selections","selectedOption","BRACE","IS_WHEN","updateElementText","newText","numberExp","whenExp","whens","whensExpFns","braceReplacement","watchRemover","lastCount","attributeName","tmpMatch","whenKey","ngPluralizeWatchAction","countIsNaN","pluralCat","whenExpFn","ngRepeatMinErr","updateScope","valueIdentifier","keyIdentifier","arrayLength","$first","$last","$middle","$odd","$even","ngRepeatCompile","ngRepeatEndComment","aliasAs","trackByExp","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","hashFnLocals","ngRepeatLink","lastBlockMap","ngRepeatAction","previousNode","nextNode","nextBlockMap","collectionLength","trackById","collectionKeys","nextBlockOrder","trackByIdFn","blockKey","ngRepeatTransclude","ngShowWatchAction","NG_HIDE_CLASS","NG_HIDE_IN_PROGRESS_CLASS","ngHideWatchAction","ngStyleWatchAction","newStyles","oldStyles","ngSwitchController","cases","selectedTranscludes","selectedElements","previousLeaveAnimations","selectedScopes","spliceFactory","ngSwitchWatchAction","selectedTransclude","caseElement","selectedScope","anchor","ngTranscludeMinErr","ngTranscludeCloneAttachFn","ngTranscludeSlot","noopNgModelController","SelectController","optionsMap","renderUnknownOption","self.renderUnknownOption","unknownVal","removeUnknownOption","self.removeUnknownOption","self.readValue","self.writeValue","hasOption","addOption","self.addOption","removeOption","self.removeOption","self.hasOption","self.registerOption","optionScope","optionAttrs","interpolateValueFn","interpolateTextFn","valueAttributeObserveAction","interpolateWatchAction","selectPreLink","ngModelCtrl.$render","lastView","lastViewRef","selectMultipleWatch","selectCtrlName","ctrl.$validators.required","patternExp","ctrl.$validators.pattern","intVal","ctrl.$validators.maxlength","ctrl.$validators.minlength","getDecimals","opt_precision","pow","ONE","OTHER","$$csp","head"] +"names":["window","document","undefined","minErr","isArrayLike","obj","isWindow","isArray","isString","jqLite","length","Object","isNumber","Array","item","forEach","iterator","context","key","isFunction","hasOwnProperty","call","isPrimitive","isBlankObject","forEachSorted","keys","sort","i","reverseParams","iteratorFn","value","nextUid","uid","baseExtend","dst","objs","deep","h","$$hashKey","ii","isObject","j","jj","src","isDate","Date","valueOf","isRegExp","RegExp","nodeName","cloneNode","isElement","clone","extend","slice","arguments","merge","toInt","str","parseInt","inherit","parent","extra","create","noop","identity","$","valueFn","hasCustomToString","toString","isUndefined","isDefined","getPrototypeOf","isScope","$evalAsync","$watch","isBoolean","isTypedArray","TYPED_ARRAY_REGEXP","test","node","prop","attr","find","makeMap","items","split","nodeName_","element","lowercase","arrayRemove","array","index","indexOf","splice","copy","source","destination","copyRecurse","push","copyElement","stackSource","stackDest","ngMinErr","needsRecurse","copyType","constructor","buffer","copied","ArrayBuffer","byteLength","set","Uint8Array","re","match","lastIndex","shallowCopy","charAt","equals","o1","o2","t1","t2","getTime","keySet","createMap","concat","array1","array2","bind","self","fn","curryArgs","startIndex","apply","toJsonReplacer","val","toJson","pretty","JSON","stringify","fromJson","json","parse","timezoneToOffset","timezone","fallback","replace","ALL_COLONS","requestedTimezoneOffset","isNaN","convertTimezoneToLocal","date","reverse","dateTimezoneOffset","getTimezoneOffset","timezoneOffset","setMinutes","getMinutes","minutes","startingTag","empty","e","elemHtml","append","html","nodeType","NODE_TYPE_TEXT","tryDecodeURIComponent","decodeURIComponent","parseKeyValue","keyValue","splitPoint","substring","toKeyValue","parts","arrayValue","encodeUriQuery","join","encodeUriSegment","pctEncodeSpaces","encodeURIComponent","getNgAttribute","ngAttr","ngAttrPrefixes","getAttribute","angularInit","bootstrap","appElement","module","config","prefix","name","hasAttribute","candidate","querySelector","strictDi","modules","defaultConfig","doBootstrap","injector","tag","unshift","$provide","debugInfoEnabled","$compileProvider","createInjector","invoke","bootstrapApply","scope","compile","$apply","data","NG_ENABLE_DEBUG_INFO","NG_DEFER_BOOTSTRAP","angular","resumeBootstrap","angular.resumeBootstrap","extraModules","resumeDeferredBootstrap","reloadWithDebugInfo","location","reload","getTestability","rootElement","get","snake_case","separator","SNAKE_CASE_REGEXP","letter","pos","toLowerCase","bindJQuery","originalCleanData","bindJQueryFired","jqName","jq","jQuery","on","JQLitePrototype","isolateScope","controller","inheritedData","cleanData","jQuery.cleanData","elems","events","elem","_data","$destroy","triggerHandler","JQLite","assertArg","arg","reason","assertArgFn","acceptArrayAnnotation","assertNotHasOwnProperty","getter","path","bindFnToScope","lastInstance","len","getBlockNodes","nodes","endNode","blockNodes","nextSibling","setupModuleLoader","ensure","factory","$injectorMinErr","$$minErr","requires","configFn","invokeLater","provider","method","insertMethod","queue","invokeQueue","moduleInstance","invokeLaterAndSetModuleName","recipeName","factoryFunction","$$moduleName","configBlocks","runBlocks","_invokeQueue","_configBlocks","_runBlocks","service","constant","decorator","animation","filter","directive","component","run","block","publishExternalAPI","version","uppercase","counter","csp","angularModule","ngModule","$$sanitizeUri","$$SanitizeUriProvider","$CompileProvider","a","htmlAnchorDirective","input","inputDirective","textarea","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","required","requiredDirective","ngRequired","minlength","minlengthDirective","ngMinlength","maxlength","maxlengthDirective","ngMaxlength","ngValue","ngValueDirective","ngModelOptions","ngModelOptionsDirective","ngIncludeFillContentDirective","ngAttributeAliasDirectives","ngEventDirectives","$anchorScroll","$AnchorScrollProvider","$animate","$AnimateProvider","$animateCss","$CoreAnimateCssProvider","$$animateJs","$$CoreAnimateJsProvider","$$animateQueue","$$CoreAnimateQueueProvider","$$AnimateRunner","$$AnimateRunnerFactoryProvider","$$animateAsyncRun","$$AnimateAsyncRunFactoryProvider","$browser","$BrowserProvider","$cacheFactory","$CacheFactoryProvider","$controller","$ControllerProvider","$document","$DocumentProvider","$exceptionHandler","$ExceptionHandlerProvider","$filter","$FilterProvider","$$forceReflow","$$ForceReflowProvider","$interpolate","$InterpolateProvider","$interval","$IntervalProvider","$http","$HttpProvider","$httpParamSerializer","$HttpParamSerializerProvider","$httpParamSerializerJQLike","$HttpParamSerializerJQLikeProvider","$httpBackend","$HttpBackendProvider","$xhrFactory","$xhrFactoryProvider","$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","$$jqLite","$$jqLiteProvider","$$HashMap","$$HashMapProvider","$$cookieReader","$$CookieReaderProvider","camelCase","SPECIAL_CHARS_REGEXP","_","offset","toUpperCase","MOZ_HACK_REGEXP","jqLiteAcceptsData","NODE_TYPE_ELEMENT","NODE_TYPE_DOCUMENT","jqLiteBuildFragment","tmp","fragment","createDocumentFragment","HTML_REGEXP","appendChild","createElement","TAG_NAME_REGEXP","exec","wrap","wrapMap","_default","innerHTML","XHTML_TAG_REGEXP","lastChild","childNodes","firstChild","textContent","createTextNode","jqLiteWrapNode","wrapper","parentNode","replaceChild","argIsString","trim","jqLiteMinErr","parsed","SINGLE_TAG_REGEXP","jqLiteAddNodes","jqLiteClone","jqLiteDealoc","onlyDescendants","jqLiteRemoveData","querySelectorAll","descendants","l","jqLiteOff","type","unsupported","expandoStore","jqLiteExpandoStore","handle","removeHandler","listenerFns","removeEventListener","MOUSE_EVENT_MAP","expandoId","ng339","jqCache","createIfNecessary","jqId","jqLiteData","isSimpleSetter","isSimpleGetter","massGetter","jqLiteHasClass","selector","jqLiteRemoveClass","cssClasses","setAttribute","cssClass","jqLiteAddClass","existingClasses","root","elements","jqLiteController","jqLiteInheritedData","documentElement","names","NODE_TYPE_DOCUMENT_FRAGMENT","host","jqLiteEmpty","removeChild","jqLiteRemove","keepData","jqLiteDocumentLoaded","action","win","readyState","setTimeout","getBooleanAttrName","booleanAttr","BOOLEAN_ATTR","BOOLEAN_ELEMENTS","createEventHandler","eventHandler","event","isDefaultPrevented","event.isDefaultPrevented","defaultPrevented","eventFns","eventFnsLength","immediatePropagationStopped","originalStopImmediatePropagation","stopImmediatePropagation","event.stopImmediatePropagation","stopPropagation","isImmediatePropagationStopped","event.isImmediatePropagationStopped","handlerWrapper","specialHandlerWrapper","defaultHandlerWrapper","handler","specialMouseHandlerWrapper","target","related","relatedTarget","jqLiteContains","$get","this.$get","hasClass","classes","addClass","removeClass","hashKey","nextUidFn","objType","HashMap","isolatedUid","this.nextUid","put","extractArgs","fnText","STRIP_COMMENTS","ARROW_ARG","FN_ARGS","anonFn","args","modulesToLoad","supportObject","delegate","provider_","providerInjector","instantiate","providerCache","providerSuffix","enforceReturnValue","enforcedReturnValue","result","instanceInjector","factoryFn","enforce","loadModules","moduleFn","runInvokeQueue","invokeArgs","loadedModules","message","stack","createInternalInjector","cache","getService","serviceName","caller","INSTANTIATING","err","shift","injectionArgs","locals","$inject","$$annotate","msie","Function","prototype","Type","ctor","annotate","has","$injector","instanceCache","decorFn","origProvider","orig$get","origProvider.$get","origInstance","$delegate","protoInstanceInjector","autoScrollingEnabled","disableAutoScrolling","this.disableAutoScrolling","getFirstAnchor","list","some","scrollTo","scrollIntoView","scroll","yOffset","getComputedStyle","position","getBoundingClientRect","bottom","elemTop","top","scrollBy","hash","elm","getElementById","getElementsByName","autoScrollWatch","autoScrollWatchAction","newVal","oldVal","mergeClasses","b","splitClasses","klass","prepareAnimateOptions","options","Browser","completeOutstandingRequest","outstandingRequestCount","outstandingRequestCallbacks","pop","error","cacheStateAndFireUrlChange","pendingLocation","cacheState","fireUrlChange","history","state","cachedState","lastCachedState","lastBrowserUrl","url","lastHistoryState","urlChangeListeners","listener","clearTimeout","pendingDeferIds","isMock","$$completeOutstandingRequest","$$incOutstandingRequestCount","self.$$incOutstandingRequestCount","notifyWhenNoOutstandingRequests","self.notifyWhenNoOutstandingRequests","callback","href","baseElement","self.url","sameState","sameBase","stripHash","substr","self.state","urlChangeInit","onUrlChange","self.onUrlChange","$$applicationDestroyed","self.$$applicationDestroyed","off","$$checkUrlChange","baseHref","self.baseHref","defer","self.defer","delay","timeoutId","cancel","self.defer.cancel","deferId","cacheFactory","cacheId","refresh","entry","freshEnd","staleEnd","n","link","p","nextEntry","prevEntry","caches","size","stats","id","capacity","Number","MAX_VALUE","lruHash","lruEntry","remove","removeAll","destroy","info","cacheFactory.info","cacheFactory.get","$$sanitizeUriProvider","parseIsolateBindings","directiveName","isController","LOCAL_REGEXP","bindings","definition","scopeName","$compileMinErr","mode","collection","optional","attrName","assertValidDirectiveName","hasDirectives","COMMENT_DIRECTIVE_REGEXP","CLASS_DIRECTIVE_REGEXP","ALL_OR_NOTHING_ATTRS","REQUIRE_PREFIX_REGEXP","EVENT_HANDLER_ATTR_REGEXP","this.directive","registerDirective","directiveFactory","Suffix","directives","priority","require","restrict","bindToController","controllerAs","identifierForController","$$bindings","$$isolateBindings","this.component","makeInjectable","tElement","tAttrs","$element","$attrs","template","templateUrl","transclude","aHrefSanitizationWhitelist","this.aHrefSanitizationWhitelist","regexp","imgSrcSanitizationWhitelist","this.imgSrcSanitizationWhitelist","this.debugInfoEnabled","enabled","setSpecialAttr","specialAttrHolder","attributes","attribute","removeNamedItem","setNamedItem","safeAddClass","className","$compileNodes","transcludeFn","maxPriority","ignoreDirective","previousCompileContext","NOT_EMPTY","domNode","nodeValue","compositeLinkFn","compileNodes","$$addScopeClass","namespace","publicLinkFn","cloneConnectFn","needsNewScope","$parent","$new","parentBoundTranscludeFn","transcludeControllers","futureParentElement","$$boundTransclude","$linkNode","wrapTemplate","controllerName","instance","$$addScopeInfo","nodeList","$rootElement","childLinkFn","childScope","childBoundTranscludeFn","stableNodeList","nodeLinkFnFound","linkFns","idx","nodeLinkFn","transcludeOnThisElement","createBoundTranscludeFn","templateOnThisElement","attrs","linkFnFound","Attributes","collectDirectives","applyDirectivesToNode","$$element","terminal","previousBoundTranscludeFn","boundTranscludeFn","transcludedScope","cloneFn","controllers","containingScope","$$transcluded","boundSlots","$$slots","slotName","attrsMap","$attr","addDirective","directiveNormalize","isNgAttr","nAttrs","attrStartName","attrEndName","ngAttrName","NG_ATTR_BINDING","PREFIX_REGEXP","multiElementMatch","MULTI_ELEMENT_DIR_RE","directiveIsMultiElement","nName","addAttrInterpolateDirective","animVal","addTextInterpolateDirective","NODE_TYPE_COMMENT","byPriority","groupScan","attrStart","attrEnd","depth","groupElementsLinkFnWrapper","linkFn","compilationGenerator","eager","compiled","compileNode","templateAttrs","jqCollection","originalReplaceDirective","preLinkFns","postLinkFns","addLinkFns","pre","post","newIsolateScopeDirective","$$isolateScope","cloneAndAnnotateFn","getControllers","elementControllers","inheritType","dataName","property","setupControllers","controllerDirectives","controllerKey","$scope","$transclude","controllerInstance","hasElementTranscludeDirective","linkNode","controllersBoundTransclude","cloneAttachFn","slotTranscludeFn","scopeToChild","removeScopeBindingWatches","controllerScope","newScopeDirective","isSlotFilled","transcludeFn.isSlotFilled","templateDirective","$$originalDirective","initializeDirectiveBindings","$on","controllerDirective","identifier","removeControllerBindingWatches","controllerResult","$onInit","invokeLinkFn","terminalPriority","nonTlbTranscludeDirective","hasTranscludeDirective","hasTemplate","$compileNode","$template","childTranscludeFn","didScanForMultipleTransclusion","mightHaveMultipleTransclusionError","directiveValue","$$start","$$end","assertNoDuplicate","$$tlb","scanningIndex","candidateDirective","createComment","replaceWith","replaceDirective","slots","contents","slotMap","filledSlots","elementSelector","filled","$$newScope","denormalizeTemplate","removeComments","templateNamespace","newTemplateAttrs","templateDirectives","unprocessedDirectives","markDirectiveScope","mergeTemplateAttributes","compileTemplateUrl","Math","max","newScope","tDirectives","startAttrName","endAttrName","multiElement","srcAttr","dstAttr","$set","linkQueue","afterTemplateNodeLinkFn","afterTemplateChildLinkFn","beforeTemplateCompileNode","origAsyncDirective","derivedSyncDirective","then","content","tempTemplateAttrs","beforeTemplateLinkNode","linkRootElement","$$destroyed","oldClasses","delayedNodeLinkFn","ignoreChildLinkFn","diff","what","previousDirective","wrapModuleNameIfDefined","moduleName","text","interpolateFn","textInterpolateCompileFn","templateNode","templateNodeParent","hasCompileParent","$$addBindingClass","textInterpolateLinkFn","$$addBindingInfo","expressions","interpolateFnWatchAction","getTrustedContext","attrNormalizedName","HTML","RESOURCE_URL","allOrNothing","trustedContext","attrInterpolatePreLinkFn","$$observers","newValue","$$inter","$$scope","oldValue","$updateClass","elementsToRemove","newNode","firstElementToRemove","removeCount","j2","hasData","annotation","removeWatchCollection","lastValue","parentGet","parentSet","compare","$observe","literal","assign","parentValueWatch","parentValue","$stateful","removeWatch","$watchCollection","parentValueWatchAction","newParentValue","removeWatches","SIMPLE_ATTR_NAME","attributesToCopy","$normalize","$addClass","classVal","$removeClass","newClasses","toAdd","tokenDifference","toRemove","writeAttr","booleanKey","aliasedKey","ALIASED_ATTR","observer","trimmedSrcset","srcPattern","rawUris","nbrUrisWith2parts","floor","innerIdx","lastTuple","removeAttr","listeners","startSymbol","endSymbol","binding","isolated","noTemplate","str1","str2","values","tokens1","tokens2","token","jqNodes","ident","CNTRL_REG","globals","register","this.register","allowGlobals","this.allowGlobals","addIdentifier","expression","later","$controllerMinErr","controllerPrototype","exception","cause","serializeValue","v","toISOString","ngParamSerializer","params","k","jQueryLikeParamSerializer","serialize","toSerialize","topLevel","defaultHttpResponseTransform","headers","tempData","JSON_PROTECTION_PREFIX","contentType","jsonStart","JSON_START","JSON_ENDS","parseHeaders","line","headerVal","headerKey","headersGetter","headersObj","transformData","status","fns","defaults","transformResponse","transformRequest","d","common","CONTENT_TYPE_APPLICATION_JSON","patch","xsrfCookieName","xsrfHeaderName","paramSerializer","useApplyAsync","this.useApplyAsync","useLegacyPromise","useLegacyPromiseExtensions","this.useLegacyPromiseExtensions","interceptorFactories","interceptors","requestConfig","response","resp","reject","executeHeaderFns","headerContent","processedHeaders","headerFn","header","mergeHeaders","defHeaders","reqHeaders","defHeaderName","lowercaseDefHeaderName","reqHeaderName","chain","serverRequest","reqData","withCredentials","sendReq","promise","when","reversedInterceptors","interceptor","request","requestError","responseError","thenFn","rejectFn","success","promise.success","promise.error","$httpMinErrLegacyFn","done","headersString","statusText","resolveHttpPromise","resolvePromise","$applyAsync","$$phase","deferred","resolve","resolvePromiseWithResult","removePendingReq","pendingRequests","cachedResp","buildUrl","defaultCache","xsrfValue","urlIsSameOrigin","timeout","responseType","serializedParams","interceptorFactory","createShortMethods","createShortMethodsWithData","createXhr","XMLHttpRequest","createHttpBackend","callbacks","$browserDefer","rawDocument","jsonpReq","callbackId","async","body","called","addEventListener","timeoutRequest","jsonpDone","xhr","abort","completeRequest","open","setRequestHeader","onload","xhr.onload","responseText","urlResolve","protocol","getAllResponseHeaders","onerror","onabort","send","this.startSymbol","this.endSymbol","escape","ch","unescapeText","escapedStartRegexp","escapedEndRegexp","constantWatchDelegate","objectEquality","constantInterp","unwatch","constantInterpolateWatch","mustHaveExpression","parseStringifyInterceptor","getTrusted","$interpolateMinErr","interr","unescapedText","exp","$$watchDelegate","endIndex","parseFns","textLength","expressionPositions","startSymbolLength","endSymbolLength","throwNoconcat","compute","interpolationFn","$watchGroup","interpolateFnWatcher","oldValues","currValue","$interpolate.startSymbol","$interpolate.endSymbol","interval","count","invokeApply","hasParams","iteration","setInterval","clearInterval","skipApply","$$intervalId","tick","notify","intervals","interval.cancel","encodePath","segments","parseAbsoluteUrl","absoluteUrl","locationObj","parsedUrl","$$protocol","$$host","hostname","$$port","port","DEFAULT_PORTS","parseAppUrl","relativeUrl","prefixed","$$path","pathname","$$search","search","$$hash","beginsWith","begin","whole","trimEmptyHash","LocationHtml5Url","appBase","appBaseNoFile","basePrefix","$$html5","$$parse","this.$$parse","pathUrl","$locationMinErr","$$compose","this.$$compose","$$url","$$absUrl","$$parseLinkUrl","this.$$parseLinkUrl","relHref","appUrl","prevAppUrl","rewrittenUrl","LocationHashbangUrl","hashPrefix","withoutBaseUrl","withoutHashUrl","windowsFilePathExp","base","firstPathSegmentMatch","LocationHashbangInHtml5Url","locationGetter","locationGetterSetter","preprocess","html5Mode","requireBase","rewriteLinks","this.hashPrefix","this.html5Mode","setBrowserUrlWithFallback","oldUrl","oldState","$$state","afterLocationChange","$broadcast","absUrl","LocationMode","initialUrl","lastIndexOf","IGNORE_URI_REGEXP","ctrlKey","metaKey","shiftKey","which","button","absHref","preventDefault","initializing","newUrl","newState","$digest","$locationWatch","currentReplace","$$replace","urlOrStateChanged","debug","debugEnabled","this.debugEnabled","flag","formatError","Error","sourceURL","consoleLog","console","logFn","log","hasApply","arg1","arg2","warn","ensureSafeMemberName","fullExpression","$parseMinErr","getStringValue","ensureSafeObject","children","ensureSafeFunction","CALL","APPLY","BIND","ensureSafeAssignContext","ifDefined","plusFn","r","findConstantAndWatchExpressions","ast","allConstants","argsToWatch","AST","Program","expr","Literal","toWatch","UnaryExpression","argument","BinaryExpression","left","right","LogicalExpression","ConditionalExpression","alternate","consequent","Identifier","MemberExpression","object","computed","CallExpression","callee","AssignmentExpression","ArrayExpression","ObjectExpression","properties","ThisExpression","LocalsExpression","getInputs","lastExpression","isAssignable","assignableAST","NGValueParameter","operator","isLiteral","ASTCompiler","astBuilder","ASTInterpreter","isPossiblyDangerousMemberName","getValueOf","objectValueOf","cacheDefault","cacheExpensive","interceptorFn","expensiveChecks","parsedExpression","oneTime","cacheKey","runningChecksEnabled","parseOptions","$parseOptionsExpensive","$parseOptions","lexer","Lexer","parser","Parser","oneTimeLiteralWatchDelegate","oneTimeWatchDelegate","inputs","inputsWatchDelegate","expensiveChecksInterceptor","addInterceptor","expensiveCheckFn","expensiveCheckOldValue","expressionInputDirtyCheck","oldValueOfValue","prettyPrintExpression","inputExpressions","lastResult","oldInputValueOf","expressionInputWatch","newInputValue","oldInputValueOfValues","oldInputValues","expressionInputsWatch","changed","oneTimeWatch","oneTimeListener","old","$$postDigest","isAllDefined","allDefined","constantWatch","watchDelegate","useInputs","regularInterceptedExpression","oneTimeInterceptedExpression","noUnsafeEval","$$runningExpensiveChecks","$parse.$$runningExpensiveChecks","qFactory","nextTick","exceptionHandler","Promise","simpleBind","scheduleProcessQueue","processScheduled","pending","Deferred","$qMinErr","TypeError","onFulfilled","onRejected","progressBack","catch","finally","handleCallback","$$reject","$$resolve","that","rejectPromise","progress","makePromise","resolved","isResolved","callbackOutput","errback","$Q","resolver","resolveFn","all","promises","results","requestAnimationFrame","webkitRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","webkitCancelRequestAnimationFrame","rafSupported","raf","timer","supported","createChildScopeClass","ChildScope","$$watchers","$$nextSibling","$$childHead","$$childTail","$$listeners","$$listenerCount","$$watchersCount","$id","$$ChildScope","TTL","$rootScopeMinErr","lastDirtyWatch","applyAsyncId","digestTtl","this.digestTtl","destroyChildScope","$event","currentScope","cleanUpScope","$$prevSibling","$root","Scope","beginPhase","phase","incrementWatchersCount","current","decrementListenerCount","initWatchVal","flushApplyAsync","applyAsyncQueue","scheduleApplyAsync","isolate","child","watchExp","watcher","last","eq","deregisterWatch","watchExpressions","watchGroupAction","changeReactionScheduled","firstRun","newValues","deregisterFns","shouldCall","deregisterWatchGroup","unwatchFn","watchGroupSubAction","$watchCollectionInterceptor","_value","bothNaN","newItem","oldItem","internalArray","oldLength","changeDetected","newLength","internalObject","veryOldValue","trackVeryOldValue","changeDetector","initRun","$watchCollectionAction","watch","watchers","dirty","ttl","watchLog","logIdx","asyncTask","asyncQueue","$eval","msg","next","postDigestQueue","eventName","this.$watchGroup","$applyAsyncExpression","namedListeners","indexOfListener","$emit","targetScope","listenerArgs","$$asyncQueue","$$postDigestQueue","$$applyAsyncQueue","sanitizeUri","uri","isImage","regex","normalizedVal","adjustMatcher","matcher","$sceMinErr","escapeForRegexp","adjustMatchers","matchers","adjustedMatchers","SCE_CONTEXTS","resourceUrlWhitelist","resourceUrlBlacklist","this.resourceUrlWhitelist","this.resourceUrlBlacklist","matchUrl","generateHolderType","Base","holderType","trustedValue","$$unwrapTrustedValue","this.$$unwrapTrustedValue","holderType.prototype.valueOf","holderType.prototype.toString","htmlSanitizer","trustedValueHolderBase","byType","CSS","URL","JS","trustAs","Constructor","maybeTrusted","allowed","this.enabled","sce","isEnabled","sce.isEnabled","sce.getTrusted","parseAs","sce.parseAs","enumValue","lName","eventSupport","android","userAgent","navigator","boxee","vendorPrefix","vendorRegex","bodyStyle","transitions","animations","webkitTransition","webkitAnimation","pushState","hasEvent","divElm","httpOptions","this.httpOptions","handleRequestFn","tpl","ignoreRequestError","totalPendingRequests","getTrustedResourceUrl","transformer","handleError","testability","testability.findBindings","opt_exactMatch","getElementsByClassName","matches","dataBinding","bindingName","testability.findModels","prefixes","attributeEquals","testability.getLocation","testability.setLocation","testability.whenStable","deferreds","$$timeoutId","timeout.cancel","urlParsingNode","requestUrl","originUrl","$$CookieReader","safeDecodeURIComponent","lastCookies","lastCookieString","cookieArray","cookie","currentCookieString","filters","suffix","currencyFilter","dateFilter","filterFilter","jsonFilter","limitToFilter","lowercaseFilter","numberFilter","orderByFilter","uppercaseFilter","comparator","matchAgainstAnyProp","getTypeForFilter","expressionType","predicateFn","createPredicateFn","shouldMatchPrimitives","actual","expected","deepCompare","dontMatchWholeObject","actualType","expectedType","expectedVal","matchAnyProperty","actualVal","$locale","formats","NUMBER_FORMATS","amount","currencySymbol","fractionSize","CURRENCY_SYM","PATTERNS","maxFrac","formatNumber","GROUP_SEP","DECIMAL_SEP","number","numStr","exponent","digits","numberOfIntegerDigits","zeros","ZERO_CHAR","MAX_DIGITS","roundNumber","parsedNumber","minFrac","fractionLen","min","roundAt","digit","carry","reduceRight","groupSep","decimalSep","isInfinity","isFinite","isZero","abs","formattedText","integerLen","decimals","reduce","groups","lgSize","gSize","negPre","negSuf","posPre","posSuf","padNumber","num","neg","dateGetter","dateStrGetter","shortForm","getFirstThursdayOfYear","year","dayOfWeekOnFirst","getDay","weekGetter","firstThurs","getFullYear","thisThurs","getMonth","getDate","round","eraGetter","ERAS","jsonStringToDate","string","R_ISO8601_STR","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","m","s","ms","parseFloat","format","DATETIME_FORMATS","NUMBER_STRING","DATE_FORMATS_SPLIT","DATE_FORMATS","spacing","limit","Infinity","processPredicates","sortPredicate","reverseOrder","map","predicate","descending","predicates","compareValues","getComparisonObject","predicateValues","doComparison","v1","v2","ngDirective","FormController","controls","$error","$$success","$pending","$name","$dirty","$pristine","$valid","$invalid","$submitted","$$parentForm","nullFormCtrl","$rollbackViewValue","form.$rollbackViewValue","control","$commitViewValue","form.$commitViewValue","$addControl","form.$addControl","$$renameControl","form.$$renameControl","newName","oldName","$removeControl","form.$removeControl","$setValidity","addSetValidityMethod","ctrl","unset","$setDirty","form.$setDirty","PRISTINE_CLASS","DIRTY_CLASS","$setPristine","form.$setPristine","setClass","SUBMITTED_CLASS","$setUntouched","form.$setUntouched","$setSubmitted","form.$setSubmitted","stringBasedInputType","$formatters","$isEmpty","baseInputType","composing","ev","ngTrim","$viewValue","$$hasNativeValidators","$setViewValue","deferListener","origValue","keyCode","$render","ctrl.$render","createDateParser","mapping","iso","ISO_DATE_REGEXP","yyyy","MM","dd","HH","getHours","mm","ss","getSeconds","sss","getMilliseconds","part","NaN","createDateInputType","parseDate","dynamicDateInputType","isValidDate","parseObservedDateValue","badInputChecker","$options","previousDate","$$parserName","$parsers","parsedDate","ngModelMinErr","ngMin","minVal","$validators","ctrl.$validators.min","$validate","ngMax","maxVal","ctrl.$validators.max","validity","VALIDITY_STATE_PROPERTY","badInput","typeMismatch","parseConstantExpr","parseFn","classDirective","arrayDifference","arrayClasses","digestClassCounts","classCounts","classesToUpdate","ngClassWatchAction","$index","old$index","mod","cachedToggleClass","switchValue","classCache","toggleValidationCss","validationErrorKey","isValid","VALID_CLASS","INVALID_CLASS","setValidity","isObjectEmpty","PENDING_CLASS","combinedState","REGEX_STRING_REGEXP","documentMode","rules","ngCspElement","ngCspAttribute","noInlineStyle","name_","el","full","major","minor","dot","codeName","expando","JQLite._data","mouseleave","mouseenter","optgroup","tbody","tfoot","colgroup","caption","thead","th","td","Node","contains","compareDocumentPosition","ready","trigger","fired","removeData","jqLiteHasData","jqLiteCleanData","removeAttribute","css","NODE_TYPE_ATTRIBUTE","lowercasedName","specified","getNamedItem","ret","getText","$dv","multiple","selected","nodeCount","jqLiteOn","types","addHandler","noEventListener","one","onFn","replaceNode","insertBefore","contentDocument","prepend","wrapNode","detach","after","newElement","toggleClass","condition","classCondition","nextElementSibling","getElementsByTagName","extraParameters","dummyEvent","handlerArgs","eventFnsCopy","arg3","unbind","FN_ARG_SPLIT","FN_ARG","argDecl","underscore","$animateMinErr","postDigestElements","updateData","handleCSSClassChanges","existing","pin","domOperation","from","to","classesAdded","add","classesRemoved","runner","complete","$$registeredAnimations","classNameFilter","this.classNameFilter","$$classNameFilter","reservedRegex","NG_ANIMATE_CLASSNAME","domInsert","parentElement","afterElement","afterNode","ELEMENT_NODE","previousElementSibling","end","enter","move","leave","addclass","animate","tempClasses","waitForTick","waitQueue","passed","AnimateRunner","setHost","rafTick","_doneCallbacks","_tick","this._tick","doc","hidden","_state","AnimateRunner.chain","AnimateRunner.all","runners","onProgress","DONE_COMPLETE_STATE","getPromise","resolveHandler","rejectHandler","pause","resume","_resolve","INITIAL_STATE","DONE_PENDING_STATE","initialOptions","closed","$$prepared","cleanupStyles","start","offsetWidth","APPLICATION_JSON","$httpMinErr","$interpolateMinErr.throwNoconcat","$interpolateMinErr.interr","PATH_MATCH","locationPrototype","paramValue","Location","Location.prototype.state","OPERATORS","ESCAPE","lex","tokens","readString","peek","readNumber","isIdent","readIdent","is","isWhitespace","ch2","ch3","op2","op3","op1","throwError","chars","isExpOperator","colStr","peekCh","quote","rawString","hex","String","fromCharCode","rep","ExpressionStatement","Property","program","expressionStatement","expect","filterChain","assignment","ternary","logicalOR","consume","logicalAND","equality","relational","additive","multiplicative","unary","primary","arrayDeclaration","constants","parseArguments","baseExpression","peekToken","kind","e1","e2","e3","e4","peekAhead","t","nextId","vars","own","assignable","stage","computing","recurse","return_","generateFunction","fnKey","intoId","watchId","fnString","USE","STRICT","filterPrefix","watchFns","varsPrefix","section","nameId","recursionFn","skipWatchIdCheck","if_","lazyAssign","computedMember","lazyRecurse","plus","not","getHasOwnProperty","nonComputedMember","addEnsureSafeObject","notNull","addEnsureSafeAssignContext","addEnsureSafeMemberName","addEnsureSafeFunction","member","filterName","defaultValue","stringEscapeRegex","stringEscapeFn","c","charCodeAt","skip","init","fn.assign","rhs","lhs","unary+","unary-","unary!","binary+","binary-","binary*","binary/","binary%","binary===","binary!==","binary==","binary!=","binary<","binary>","binary<=","binary>=","binary&&","binary||","ternary?:","astCompiler","yy","y","MMMM","MMM","M","H","hh","EEEE","EEE","ampmGetter","AMPMS","Z","timeZoneGetter","zone","paddedZone","ww","w","G","GG","GGG","GGGG","longEraGetter","ERANAMES","xlinkHref","propName","defaultLinkFn","normalized","ngBooleanAttrWatchAction","htmlAttr","ngAttrAliasWatchAction","nullFormRenameControl","formDirectiveFactory","isNgForm","getSetter","ngFormCompile","formElement","nameAttr","ngFormPreLink","ctrls","handleFormSubmission","setter","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","DATE_REGEXP","DATETIMELOCAL_REGEXP","WEEK_REGEXP","MONTH_REGEXP","TIME_REGEXP","inputType","textInputType","weekParser","isoWeek","existingDate","week","hours","seconds","milliseconds","addDays","numberInputType","urlInputType","ctrl.$validators.url","modelValue","viewValue","emailInputType","email","ctrl.$validators.email","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrl.$isEmpty","CONSTANT_VALUE_REGEXP","tplAttr","ngValueConstantLink","ngValueLink","valueWatchAction","$compile","ngBindCompile","templateElement","ngBindLink","ngBindWatchAction","ngBindTemplateCompile","ngBindTemplateLink","ngBindHtmlCompile","ngBindHtmlGetter","ngBindHtmlWatch","ngBindHtmlLink","ngBindHtmlWatchAction","getTrustedHtml","$viewChangeListeners","forceAsyncEvents","ngEventHandler","previousElements","ngIfWatchAction","srcExp","onloadExp","autoScrollExp","autoscroll","changeCounter","previousElement","currentElement","cleanupLastIncludeContent","ngIncludeWatchAction","afterAnimation","thisChangeId","namespaceAdaptedClone","trimValues","NgModelController","$modelValue","$$rawModelValue","$asyncValidators","$untouched","$touched","parsedNgModel","parsedNgModelAssign","ngModelGet","ngModelSet","pendingDebounce","parserValid","$$setOptions","this.$$setOptions","getterSetter","invokeModelGetter","invokeModelSetter","$$$p","this.$isEmpty","$$updateEmptyClasses","this.$$updateEmptyClasses","NOT_EMPTY_CLASS","EMPTY_CLASS","currentValidationRunId","this.$setPristine","this.$setDirty","this.$setUntouched","UNTOUCHED_CLASS","TOUCHED_CLASS","$setTouched","this.$setTouched","this.$rollbackViewValue","$$lastCommittedViewValue","this.$validate","prevValid","prevModelValue","allowInvalid","$$runValidators","allValid","$$writeModelToScope","this.$$runValidators","doneCallback","processSyncValidators","syncValidatorsValid","validator","processAsyncValidators","validatorPromises","validationDone","localValidationRunId","processParseErrors","errorKey","this.$commitViewValue","$$parseAndValidate","this.$$parseAndValidate","this.$$writeModelToScope","this.$setViewValue","updateOnDefault","$$debounceViewValueCommit","this.$$debounceViewValueCommit","debounceDelay","debounce","ngModelWatch","formatters","ngModelCompile","ngModelPreLink","modelCtrl","formCtrl","ngModelPostLink","updateOn","DEFAULT_REGEXP","ngOptionsMinErr","NG_OPTIONS_REGEXP","parseOptionsExpression","optionsExp","selectElement","Option","selectValue","label","group","disabled","getOptionValuesKeys","optionValues","optionValuesKeys","keyName","itemKey","valueName","selectAs","trackBy","viewValueFn","trackByFn","getTrackByValueFn","getHashOfValue","getTrackByValue","getLocals","displayFn","groupByFn","disableWhenFn","valuesFn","getWatchables","watchedArray","optionValuesLength","disableWhen","getOptions","optionItems","selectValueMap","optionItem","getOptionFromViewValue","getViewValueFromOption","optionTemplate","optGroupTemplate","ngOptionsPreLink","registerOption","ngOptionsPostLink","updateOptionElement","addOrReuseElement","removeExcessElements","skipEmptyAndUnknownOptions","emptyOption_","emptyOption","unknownOption_","unknownOption","updateOptions","previousValue","selectCtrl","readValue","groupMap","providedEmptyOption","updateOption","optionElement","groupElement","currentOptionElement","ngModelCtrl","nextValue","ngModelCtrl.$isEmpty","writeValue","selectCtrl.writeValue","selectCtrl.readValue","selectedValues","selections","selectedOption","BRACE","IS_WHEN","updateElementText","newText","numberExp","whenExp","whens","whensExpFns","braceReplacement","watchRemover","lastCount","attributeName","tmpMatch","whenKey","ngPluralizeWatchAction","countIsNaN","pluralCat","whenExpFn","ngRepeatMinErr","updateScope","valueIdentifier","keyIdentifier","arrayLength","$first","$last","$middle","$odd","$even","ngRepeatCompile","ngRepeatEndComment","aliasAs","trackByExp","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","hashFnLocals","ngRepeatLink","lastBlockMap","ngRepeatAction","previousNode","nextNode","nextBlockMap","collectionLength","trackById","collectionKeys","nextBlockOrder","trackByIdFn","blockKey","ngRepeatTransclude","ngShowWatchAction","NG_HIDE_CLASS","NG_HIDE_IN_PROGRESS_CLASS","ngHideWatchAction","ngStyleWatchAction","newStyles","oldStyles","ngSwitchController","cases","selectedTranscludes","selectedElements","previousLeaveAnimations","selectedScopes","spliceFactory","ngSwitchWatchAction","selectedTransclude","caseElement","selectedScope","anchor","ngTranscludeMinErr","ngTranscludeCloneAttachFn","ngTranscludeSlot","noopNgModelController","SelectController","optionsMap","renderUnknownOption","self.renderUnknownOption","unknownVal","removeUnknownOption","self.removeUnknownOption","self.readValue","self.writeValue","hasOption","addOption","self.addOption","removeOption","self.removeOption","self.hasOption","self.registerOption","optionScope","optionAttrs","interpolateValueFn","interpolateTextFn","valueAttributeObserveAction","interpolateWatchAction","selectPreLink","lastView","lastViewRef","selectMultipleWatch","selectPostLink","ngModelCtrl.$render","selectCtrlName","ctrl.$validators.required","patternExp","ctrl.$validators.pattern","intVal","ctrl.$validators.maxlength","ctrl.$validators.minlength","getDecimals","opt_precision","pow","ONE","OTHER","$$csp","head"] } diff --git a/public/vendor/angular/bower.json b/public/vendor/angular/bower.json index 00cb5d62290..7a8f25d70c6 100644 --- a/public/vendor/angular/bower.json +++ b/public/vendor/angular/bower.json @@ -1,6 +1,7 @@ { "name": "angular", - "version": "1.5.0-rc.0", + "version": "1.5.1-build.4601+sha.c966876", + "license": "MIT", "main": "./angular.js", "ignore": [], "dependencies": { diff --git a/public/vendor/angular/package.json b/public/vendor/angular/package.json index 088343c4bbf..bd5e73c1878 100644 --- a/public/vendor/angular/package.json +++ b/public/vendor/angular/package.json @@ -1,6 +1,6 @@ { "name": "angular", - "version": "1.5.0-rc.0", + "version": "1.5.1-build.4601+sha.c966876", "description": "HTML enhanced for web apps", "main": "index.js", "scripts": { diff --git a/public/vendor/requirejs-text/.bower.json b/public/vendor/requirejs-text/.bower.json deleted file mode 100644 index f433899afe3..00000000000 --- a/public/vendor/requirejs-text/.bower.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "text", - "version": "2.0.14", - "main": "text.js", - "homepage": "https://github.com/requirejs/text", - "_release": "2.0.14", - "_resolution": { - "type": "version", - "tag": "2.0.14", - "commit": "195a482d24f1d515979ab26f29e968e99c4ab63c" - }, - "_source": "git://github.com/requirejs/text.git", - "_target": "~2.0.14", - "_originalSource": "requirejs-text", - "_direct": true -} \ No newline at end of file diff --git a/public/vendor/requirejs-text/LICENSE b/public/vendor/requirejs-text/LICENSE deleted file mode 100644 index d3b4181d59d..00000000000 --- a/public/vendor/requirejs-text/LICENSE +++ /dev/null @@ -1,58 +0,0 @@ -RequireJS is released under two licenses: new BSD, and MIT. You may pick the -license that best suits your development needs. The text of both licenses are -provided below. - - -The "New" BSD License: ----------------------- - -Copyright (c) 2010-2014, The Dojo Foundation -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of the Dojo Foundation nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - -MIT License ------------ - -Copyright (c) 2010-2014, The Dojo Foundation - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/public/vendor/requirejs-text/README.md b/public/vendor/requirejs-text/README.md deleted file mode 100644 index 0ee79beac23..00000000000 --- a/public/vendor/requirejs-text/README.md +++ /dev/null @@ -1,198 +0,0 @@ -# text - -A [RequireJS](http://requirejs.org)/AMD loader plugin for loading text -resources. - -Known to work in RequireJS, but should work in other AMD loaders that support -the same loader plugin API. - -## Docs - -See the [RequireJS API text section](http://requirejs.org/docs/api.html#text). - -## Latest release - -The latest release is always available from [the "latest" tag](https://raw.github.com/requirejs/text/latest/text.js). - -It can also be installed using [volo](https://github.com/volojs/volo): - - volo add requirejs/text - -## Usage - -It is nice to build HTML using regular HTML tags, instead of building up DOM -structures in script. However, there is no good way to embed HTML in a -JavaScript file. The best that can be done is using a string of HTML, but that -can be hard to manage, particularly for multi-line HTML. - -The text.js AMD loader plugin can help with this issue. It will automatically be -loaded if the text! prefix is used for a dependency. Download the plugin and put -it in the app's [baseUrl](http://requirejs.org/docs/api.html#config-baseUrl) -directory (or use the [paths config](http://requirejs.org/docs/api.html#config-paths) to place it in other areas). - -You can specify a text file resource as a dependency like so: - -```javascript -require(["some/module", "text!some/module.html", "text!some/module.css"], - function(module, html, css) { - //the html variable will be the text - //of the some/module.html file - //the css variable will be the text - //of the some/module.css file. - } -); -``` - -Notice the .html and .css suffixes to specify the extension of the file. The -"some/module" part of the path will be resolved according to normal module name -resolution: it will use the **baseUrl** and **paths** [configuration -options](http://requirejs.org/docs/api.html#config) to map that name to a path. - -For HTML/XML/SVG files, there is another option. You can pass !strip, which -strips XML declarations so that external SVG and XML documents can be added to a -document without worry. Also, if the string is an HTML document, only the part -inside the body tag is returned. Example: - -```javascript -require(["text!some/module.html!strip"], - function(html) { - //the html variable will be the text of the - //some/module.html file, but only the part - //inside the body tag. - } -); -``` - -The text files are loaded via asynchronous XMLHttpRequest (XHR) calls, so you -can only fetch files from the same domain as the web page (see **XHR -restrictions** below). - -However, [the RequireJS optimizer](http://requirejs.org/docs/optimization.html) -will inline any text! references with the actual text file contents into the -modules, so after a build, the modules that have text! dependencies can be used -from other domains. - -## Configuration - -### XHR restrictions - -The text plugin works by using XMLHttpRequest (XHR) to fetch the text for the -resources it handles. - -However, XHR calls have some restrictions, due to browser/web security policies: - -1) Many browsers do not allow file:// access to just any file. You are better -off serving the application from a local web server than using local file:// -URLs. You will likely run into trouble otherwise. - -2) There are restrictions for using XHR to access files on another web domain. -While CORS can help enable the server for cross-domain access, doing so must -be done with care (in particular if you also host an API from that domain), -and not all browsers support CORS. - -So if the text plugin determines that the request for the resource is on another -domain, it will try to access a ".js" version of the resource by using a -script tag. Script tag GET requests are allowed across domains. The .js version -of the resource should just be a script with a define() call in it that returns -a string for the module value. - -Example: if the resource is 'text!example.html' and that resolves to a path -on another web domain, the text plugin will do a script tag load for -'example.html.js'. - -The [requirejs optimizer](http://requirejs.org/docs/optimization.html) will -generate these '.js' versions of the text resources if you set this in the -build profile: - - optimizeAllPluginResources: true - -In some cases, you may want the text plugin to not try the .js resource, maybe -because you have configured CORS on the other server, and you know that only -browsers that support CORS will be used. In that case you can use the -[module config](http://requirejs.org/docs/api.html#config-moduleconfig) -(requires RequireJS 2+) to override some of the basic logic the plugin uses to -determine if the .js file should be requested: - -```javascript -requirejs.config({ - config: { - text: { - useXhr: function (url, protocol, hostname, port) { - //Override function for determining if XHR should be used. - //url: the URL being requested - //protocol: protocol of page text.js is running on - //hostname: hostname of page text.js is running on - //port: port of page text.js is running on - //Use protocol, hostname, and port to compare against the url - //being requested. - //Return true or false. true means "use xhr", false means - //"fetch the .js version of this resource". - } - } - } -}); -``` - -### Custom XHR hooks - -There may be cases where you might want to provide the XHR object to use -in the request, or you may just want to add some custom headers to the -XHR object used to make the request. You can use the following hooks: - -```javascript -requirejs.config({ - config: { - text: { - onXhr: function (xhr, url) { - //Called after the XHR has been created and after the - //xhr.open() call, but before the xhr.send() call. - //Useful time to set headers. - //xhr: the xhr object - //url: the url that is being used with the xhr object. - }, - createXhr: function () { - //Overrides the creation of the XHR object. Return an XHR - //object from this function. - //Available in text.js 2.0.1 or later. - }, - onXhrComplete: function (xhr, url) { - //Called whenever an XHR has completed its work. Useful - //if browser-specific xhr cleanup needs to be done. - } - } - } -}); -``` - -### Forcing the environment implemention - -The text plugin tries to detect what environment it is available for loading -text resources, Node, XMLHttpRequest (XHR) or Rhino, but sometimes the -Node or Rhino environment may have loaded a library that introduces an XHR -implementation. You can force the environment implementation to use by passing -an "env" module config to the plugin: - -```javascript -requirejs.config({ - config: { - text: { - //Valid values are 'node', 'xhr', or 'rhino' - env: 'rhino' - } - } -}); -``` - -## License - -Dual-licensed -- new BSD or MIT. - -## Where are the tests? - -They are in the [requirejs](https://github.com/jrburke/requirejs) and -[r.js](https://github.com/jrburke/r.js) repos. - -## History - -This plugin was in the [requirejs repo](https://github.com/jrburke/requirejs) -up until the requirejs 2.0 release. diff --git a/public/vendor/requirejs-text/bower.json b/public/vendor/requirejs-text/bower.json deleted file mode 100644 index 5c9772a5f95..00000000000 --- a/public/vendor/requirejs-text/bower.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "text", - "version": "2.0.14", - "main": "text.js" -} \ No newline at end of file diff --git a/public/vendor/requirejs-text/package.json b/public/vendor/requirejs-text/package.json deleted file mode 100644 index ad54dd3a892..00000000000 --- a/public/vendor/requirejs-text/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "text", - "version": "2.0.14", - "description": "An AMD loader plugin for loading text resources.", - "categories": [ - "Loader plugins" - ], - "main": "text.js", - "github": "https://github.com/requirejs/text", - "bugs": { - "web": "https://github.com/requirejs/text/issues" - }, - "repository": { - "type": "git", - "url": "https://github.com/requirejs/text.git" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://www.opensource.org/licenses/mit-license.php" - }, - { - "type": "BSD New", - "url": "http://opensource.org/licenses/BSD-3-Clause" - } - ], - "volo": { - "url": "https://raw.github.com/requirejs/text/{version}/text.js" - } -} diff --git a/public/vendor/requirejs-text/text.js b/public/vendor/requirejs-text/text.js deleted file mode 100644 index 4c311edcebe..00000000000 --- a/public/vendor/requirejs-text/text.js +++ /dev/null @@ -1,391 +0,0 @@ -/** - * @license RequireJS text 2.0.14 Copyright (c) 2010-2014, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/requirejs/text for details - */ -/*jslint regexp: true */ -/*global require, XMLHttpRequest, ActiveXObject, - define, window, process, Packages, - java, location, Components, FileUtils */ - -define(['module'], function (module) { - 'use strict'; - - var text, fs, Cc, Ci, xpcIsWindows, - progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'], - xmlRegExp = /^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im, - bodyRegExp = /]*>\s*([\s\S]+)\s*<\/body>/im, - hasLocation = typeof location !== 'undefined' && location.href, - defaultProtocol = hasLocation && location.protocol && location.protocol.replace(/\:/, ''), - defaultHostName = hasLocation && location.hostname, - defaultPort = hasLocation && (location.port || undefined), - buildMap = {}, - masterConfig = (module.config && module.config()) || {}; - - text = { - version: '2.0.14', - - strip: function (content) { - //Strips declarations so that external SVG and XML - //documents can be added to a document without worry. Also, if the string - //is an HTML document, only the part inside the body tag is returned. - if (content) { - content = content.replace(xmlRegExp, ""); - var matches = content.match(bodyRegExp); - if (matches) { - content = matches[1]; - } - } else { - content = ""; - } - return content; - }, - - jsEscape: function (content) { - return content.replace(/(['\\])/g, '\\$1') - .replace(/[\f]/g, "\\f") - .replace(/[\b]/g, "\\b") - .replace(/[\n]/g, "\\n") - .replace(/[\t]/g, "\\t") - .replace(/[\r]/g, "\\r") - .replace(/[\u2028]/g, "\\u2028") - .replace(/[\u2029]/g, "\\u2029"); - }, - - createXhr: masterConfig.createXhr || function () { - //Would love to dump the ActiveX crap in here. Need IE 6 to die first. - var xhr, i, progId; - if (typeof XMLHttpRequest !== "undefined") { - return new XMLHttpRequest(); - } else if (typeof ActiveXObject !== "undefined") { - for (i = 0; i < 3; i += 1) { - progId = progIds[i]; - try { - xhr = new ActiveXObject(progId); - } catch (e) {} - - if (xhr) { - progIds = [progId]; // so faster next time - break; - } - } - } - - return xhr; - }, - - /** - * Parses a resource name into its component parts. Resource names - * look like: module/name.ext!strip, where the !strip part is - * optional. - * @param {String} name the resource name - * @returns {Object} with properties "moduleName", "ext" and "strip" - * where strip is a boolean. - */ - parseName: function (name) { - var modName, ext, temp, - strip = false, - index = name.lastIndexOf("."), - isRelative = name.indexOf('./') === 0 || - name.indexOf('../') === 0; - - if (index !== -1 && (!isRelative || index > 1)) { - modName = name.substring(0, index); - ext = name.substring(index + 1); - } else { - modName = name; - } - - temp = ext || modName; - index = temp.indexOf("!"); - if (index !== -1) { - //Pull off the strip arg. - strip = temp.substring(index + 1) === "strip"; - temp = temp.substring(0, index); - if (ext) { - ext = temp; - } else { - modName = temp; - } - } - - return { - moduleName: modName, - ext: ext, - strip: strip - }; - }, - - xdRegExp: /^((\w+)\:)?\/\/([^\/\\]+)/, - - /** - * Is an URL on another domain. Only works for browser use, returns - * false in non-browser environments. Only used to know if an - * optimized .js version of a text resource should be loaded - * instead. - * @param {String} url - * @returns Boolean - */ - useXhr: function (url, protocol, hostname, port) { - var uProtocol, uHostName, uPort, - match = text.xdRegExp.exec(url); - if (!match) { - return true; - } - uProtocol = match[2]; - uHostName = match[3]; - - uHostName = uHostName.split(':'); - uPort = uHostName[1]; - uHostName = uHostName[0]; - - return (!uProtocol || uProtocol === protocol) && - (!uHostName || uHostName.toLowerCase() === hostname.toLowerCase()) && - ((!uPort && !uHostName) || uPort === port); - }, - - finishLoad: function (name, strip, content, onLoad) { - content = strip ? text.strip(content) : content; - if (masterConfig.isBuild) { - buildMap[name] = content; - } - onLoad(content); - }, - - load: function (name, req, onLoad, config) { - //Name has format: some.module.filext!strip - //The strip part is optional. - //if strip is present, then that means only get the string contents - //inside a body tag in an HTML string. For XML/SVG content it means - //removing the declarations so the content can be inserted - //into the current doc without problems. - - // Do not bother with the work if a build and text will - // not be inlined. - if (config && config.isBuild && !config.inlineText) { - onLoad(); - return; - } - - masterConfig.isBuild = config && config.isBuild; - - var parsed = text.parseName(name), - nonStripName = parsed.moduleName + - (parsed.ext ? '.' + parsed.ext : ''), - url = req.toUrl(nonStripName), - useXhr = (masterConfig.useXhr) || - text.useXhr; - - // Do not load if it is an empty: url - if (url.indexOf('empty:') === 0) { - onLoad(); - return; - } - - //Load the text. Use XHR if possible and in a browser. - if (!hasLocation || useXhr(url, defaultProtocol, defaultHostName, defaultPort)) { - text.get(url, function (content) { - text.finishLoad(name, parsed.strip, content, onLoad); - }, function (err) { - if (onLoad.error) { - onLoad.error(err); - } - }); - } else { - //Need to fetch the resource across domains. Assume - //the resource has been optimized into a JS module. Fetch - //by the module name + extension, but do not include the - //!strip part to avoid file system issues. - req([nonStripName], function (content) { - text.finishLoad(parsed.moduleName + '.' + parsed.ext, - parsed.strip, content, onLoad); - }); - } - }, - - write: function (pluginName, moduleName, write, config) { - if (buildMap.hasOwnProperty(moduleName)) { - var content = text.jsEscape(buildMap[moduleName]); - write.asModule(pluginName + "!" + moduleName, - "define(function () { return '" + - content + - "';});\n"); - } - }, - - writeFile: function (pluginName, moduleName, req, write, config) { - var parsed = text.parseName(moduleName), - extPart = parsed.ext ? '.' + parsed.ext : '', - nonStripName = parsed.moduleName + extPart, - //Use a '.js' file name so that it indicates it is a - //script that can be loaded across domains. - fileName = req.toUrl(parsed.moduleName + extPart) + '.js'; - - //Leverage own load() method to load plugin value, but only - //write out values that do not have the strip argument, - //to avoid any potential issues with ! in file names. - text.load(nonStripName, req, function (value) { - //Use own write() method to construct full module value. - //But need to create shell that translates writeFile's - //write() to the right interface. - var textWrite = function (contents) { - return write(fileName, contents); - }; - textWrite.asModule = function (moduleName, contents) { - return write.asModule(moduleName, fileName, contents); - }; - - text.write(pluginName, nonStripName, textWrite, config); - }, config); - } - }; - - if (masterConfig.env === 'node' || (!masterConfig.env && - typeof process !== "undefined" && - process.versions && - !!process.versions.node && - !process.versions['node-webkit'] && - !process.versions['atom-shell'])) { - //Using special require.nodeRequire, something added by r.js. - fs = require.nodeRequire('fs'); - - text.get = function (url, callback, errback) { - try { - var file = fs.readFileSync(url, 'utf8'); - //Remove BOM (Byte Mark Order) from utf8 files if it is there. - if (file[0] === '\uFEFF') { - file = file.substring(1); - } - callback(file); - } catch (e) { - if (errback) { - errback(e); - } - } - }; - } else if (masterConfig.env === 'xhr' || (!masterConfig.env && - text.createXhr())) { - text.get = function (url, callback, errback, headers) { - var xhr = text.createXhr(), header; - xhr.open('GET', url, true); - - //Allow plugins direct access to xhr headers - if (headers) { - for (header in headers) { - if (headers.hasOwnProperty(header)) { - xhr.setRequestHeader(header.toLowerCase(), headers[header]); - } - } - } - - //Allow overrides specified in config - if (masterConfig.onXhr) { - masterConfig.onXhr(xhr, url); - } - - xhr.onreadystatechange = function (evt) { - var status, err; - //Do not explicitly handle errors, those should be - //visible via console output in the browser. - if (xhr.readyState === 4) { - status = xhr.status || 0; - if (status > 399 && status < 600) { - //An http 4xx or 5xx error. Signal an error. - err = new Error(url + ' HTTP status: ' + status); - err.xhr = xhr; - if (errback) { - errback(err); - } - } else { - callback(xhr.responseText); - } - - if (masterConfig.onXhrComplete) { - masterConfig.onXhrComplete(xhr, url); - } - } - }; - xhr.send(null); - }; - } else if (masterConfig.env === 'rhino' || (!masterConfig.env && - typeof Packages !== 'undefined' && typeof java !== 'undefined')) { - //Why Java, why is this so awkward? - text.get = function (url, callback) { - var stringBuffer, line, - encoding = "utf-8", - file = new java.io.File(url), - lineSeparator = java.lang.System.getProperty("line.separator"), - input = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(file), encoding)), - content = ''; - try { - stringBuffer = new java.lang.StringBuffer(); - line = input.readLine(); - - // Byte Order Mark (BOM) - The Unicode Standard, version 3.0, page 324 - // http://www.unicode.org/faq/utf_bom.html - - // Note that when we use utf-8, the BOM should appear as "EF BB BF", but it doesn't due to this bug in the JDK: - // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058 - if (line && line.length() && line.charAt(0) === 0xfeff) { - // Eat the BOM, since we've already found the encoding on this file, - // and we plan to concatenating this buffer with others; the BOM should - // only appear at the top of a file. - line = line.substring(1); - } - - if (line !== null) { - stringBuffer.append(line); - } - - while ((line = input.readLine()) !== null) { - stringBuffer.append(lineSeparator); - stringBuffer.append(line); - } - //Make sure we return a JavaScript string and not a Java string. - content = String(stringBuffer.toString()); //String - } finally { - input.close(); - } - callback(content); - }; - } else if (masterConfig.env === 'xpconnect' || (!masterConfig.env && - typeof Components !== 'undefined' && Components.classes && - Components.interfaces)) { - //Avert your gaze! - Cc = Components.classes; - Ci = Components.interfaces; - Components.utils['import']('resource://gre/modules/FileUtils.jsm'); - xpcIsWindows = ('@mozilla.org/windows-registry-key;1' in Cc); - - text.get = function (url, callback) { - var inStream, convertStream, fileObj, - readData = {}; - - if (xpcIsWindows) { - url = url.replace(/\//g, '\\'); - } - - fileObj = new FileUtils.File(url); - - //XPCOM, you so crazy - try { - inStream = Cc['@mozilla.org/network/file-input-stream;1'] - .createInstance(Ci.nsIFileInputStream); - inStream.init(fileObj, 1, 0, false); - - convertStream = Cc['@mozilla.org/intl/converter-input-stream;1'] - .createInstance(Ci.nsIConverterInputStream); - convertStream.init(inStream, "utf-8", inStream.available(), - Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER); - - convertStream.readString(inStream.available(), readData); - convertStream.close(); - inStream.close(); - callback(readData.value); - } catch (e) { - throw new Error((fileObj && fileObj.path || '') + ': ' + e); - } - }; - } - return text; -}); diff --git a/public/vendor/requirejs/.bower.json b/public/vendor/requirejs/.bower.json deleted file mode 100644 index 3c93538b14f..00000000000 --- a/public/vendor/requirejs/.bower.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "requirejs", - "version": "2.1.20", - "ignore": [], - "homepage": "http://requirejs.org", - "authors": [ - "jrburke.com" - ], - "description": "A file and module loader for JavaScript", - "main": "require.js", - "keywords": [ - "AMD" - ], - "license": [ - "BSD-3-Clause", - "MIT" - ], - "_release": "2.1.20", - "_resolution": { - "type": "version", - "tag": "2.1.20", - "commit": "ad0230c737a1289c3ffe3d76ce0f86366955239a" - }, - "_source": "git://github.com/jrburke/requirejs-bower.git", - "_target": "~2.1.18", - "_originalSource": "requirejs" -} \ No newline at end of file diff --git a/public/vendor/requirejs/README.md b/public/vendor/requirejs/README.md deleted file mode 100644 index 1fe6a9c14ff..00000000000 --- a/public/vendor/requirejs/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# requirejs-bower - -Bower packaging for [RequireJS](http://requirejs.org). - diff --git a/public/vendor/requirejs/bower.json b/public/vendor/requirejs/bower.json deleted file mode 100644 index b267ad5c539..00000000000 --- a/public/vendor/requirejs/bower.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "requirejs", - "version": "2.1.20", - "ignore": [], - "homepage": "http://requirejs.org", - "authors": [ - "jrburke.com" - ], - "description": "A file and module loader for JavaScript", - "main": "require.js", - "keywords": [ - "AMD" - ], - "license": [ - "BSD-3-Clause", - "MIT" - ] -} diff --git a/public/vendor/requirejs/require.js b/public/vendor/requirejs/require.js deleted file mode 100644 index 5237640495b..00000000000 --- a/public/vendor/requirejs/require.js +++ /dev/null @@ -1,2103 +0,0 @@ -/** vim: et:ts=4:sw=4:sts=4 - * @license RequireJS 2.1.20 Copyright (c) 2010-2015, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ -//Not using strict: uneven strict support in browsers, #392, and causes -//problems with requirejs.exec()/transpiler plugins that may not be strict. -/*jslint regexp: true, nomen: true, sloppy: true */ -/*global window, navigator, document, importScripts, setTimeout, opera */ - -var requirejs, require, define; -(function (global) { - var req, s, head, baseElement, dataMain, src, - interactiveScript, currentlyAddingScript, mainScript, subPath, - version = '2.1.20', - commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg, - cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g, - jsSuffixRegExp = /\.js$/, - currDirRegExp = /^\.\//, - op = Object.prototype, - ostring = op.toString, - hasOwn = op.hasOwnProperty, - ap = Array.prototype, - isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document), - isWebWorker = !isBrowser && typeof importScripts !== 'undefined', - //PS3 indicates loaded and complete, but need to wait for complete - //specifically. Sequence is 'loading', 'loaded', execution, - // then 'complete'. The UA check is unfortunate, but not sure how - //to feature test w/o causing perf issues. - readyRegExp = isBrowser && navigator.platform === 'PLAYSTATION 3' ? - /^complete$/ : /^(complete|loaded)$/, - defContextName = '_', - //Oh the tragedy, detecting opera. See the usage of isOpera for reason. - isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]', - contexts = {}, - cfg = {}, - globalDefQueue = [], - useInteractive = false; - - function isFunction(it) { - return ostring.call(it) === '[object Function]'; - } - - function isArray(it) { - return ostring.call(it) === '[object Array]'; - } - - /** - * Helper function for iterating over an array. If the func returns - * a true value, it will break out of the loop. - */ - function each(ary, func) { - if (ary) { - var i; - for (i = 0; i < ary.length; i += 1) { - if (ary[i] && func(ary[i], i, ary)) { - break; - } - } - } - } - - /** - * Helper function for iterating over an array backwards. If the func - * returns a true value, it will break out of the loop. - */ - function eachReverse(ary, func) { - if (ary) { - var i; - for (i = ary.length - 1; i > -1; i -= 1) { - if (ary[i] && func(ary[i], i, ary)) { - break; - } - } - } - } - - function hasProp(obj, prop) { - return hasOwn.call(obj, prop); - } - - function getOwn(obj, prop) { - return hasProp(obj, prop) && obj[prop]; - } - - /** - * Cycles over properties in an object and calls a function for each - * property value. If the function returns a truthy value, then the - * iteration is stopped. - */ - function eachProp(obj, func) { - var prop; - for (prop in obj) { - if (hasProp(obj, prop)) { - if (func(obj[prop], prop)) { - break; - } - } - } - } - - /** - * Simple function to mix in properties from source into target, - * but only if target does not already have a property of the same name. - */ - function mixin(target, source, force, deepStringMixin) { - if (source) { - eachProp(source, function (value, prop) { - if (force || !hasProp(target, prop)) { - if (deepStringMixin && typeof value === 'object' && value && - !isArray(value) && !isFunction(value) && - !(value instanceof RegExp)) { - - if (!target[prop]) { - target[prop] = {}; - } - mixin(target[prop], value, force, deepStringMixin); - } else { - target[prop] = value; - } - } - }); - } - return target; - } - - //Similar to Function.prototype.bind, but the 'this' object is specified - //first, since it is easier to read/figure out what 'this' will be. - function bind(obj, fn) { - return function () { - return fn.apply(obj, arguments); - }; - } - - function scripts() { - return document.getElementsByTagName('script'); - } - - function defaultOnError(err) { - throw err; - } - - //Allow getting a global that is expressed in - //dot notation, like 'a.b.c'. - function getGlobal(value) { - if (!value) { - return value; - } - var g = global; - each(value.split('.'), function (part) { - g = g[part]; - }); - return g; - } - - /** - * Constructs an error with a pointer to an URL with more information. - * @param {String} id the error ID that maps to an ID on a web page. - * @param {String} message human readable error. - * @param {Error} [err] the original error, if there is one. - * - * @returns {Error} - */ - function makeError(id, msg, err, requireModules) { - var e = new Error(msg + '\nhttp://requirejs.org/docs/errors.html#' + id); - e.requireType = id; - e.requireModules = requireModules; - if (err) { - e.originalError = err; - } - return e; - } - - if (typeof define !== 'undefined') { - //If a define is already in play via another AMD loader, - //do not overwrite. - return; - } - - if (typeof requirejs !== 'undefined') { - if (isFunction(requirejs)) { - //Do not overwrite an existing requirejs instance. - return; - } - cfg = requirejs; - requirejs = undefined; - } - - //Allow for a require config object - if (typeof require !== 'undefined' && !isFunction(require)) { - //assume it is a config object. - cfg = require; - require = undefined; - } - - function newContext(contextName) { - var inCheckLoaded, Module, context, handlers, - checkLoadedTimeoutId, - config = { - //Defaults. Do not set a default for map - //config to speed up normalize(), which - //will run faster if there is no default. - waitSeconds: 7, - baseUrl: './', - paths: {}, - bundles: {}, - pkgs: {}, - shim: {}, - config: {} - }, - registry = {}, - //registry of just enabled modules, to speed - //cycle breaking code when lots of modules - //are registered, but not activated. - enabledRegistry = {}, - undefEvents = {}, - defQueue = [], - defined = {}, - urlFetched = {}, - bundlesMap = {}, - requireCounter = 1, - unnormalizedCounter = 1; - - /** - * Trims the . and .. from an array of path segments. - * It will keep a leading path segment if a .. will become - * the first path segment, to help with module name lookups, - * which act like paths, but can be remapped. But the end result, - * all paths that use this function should look normalized. - * NOTE: this method MODIFIES the input array. - * @param {Array} ary the array of path segments. - */ - function trimDots(ary) { - var i, part; - for (i = 0; i < ary.length; i++) { - part = ary[i]; - if (part === '.') { - ary.splice(i, 1); - i -= 1; - } else if (part === '..') { - // If at the start, or previous value is still .., - // keep them so that when converted to a path it may - // still work when converted to a path, even though - // as an ID it is less than ideal. In larger point - // releases, may be better to just kick out an error. - if (i === 0 || (i === 1 && ary[2] === '..') || ary[i - 1] === '..') { - continue; - } else if (i > 0) { - ary.splice(i - 1, 2); - i -= 2; - } - } - } - } - - /** - * Given a relative module name, like ./something, normalize it to - * a real name that can be mapped to a path. - * @param {String} name the relative name - * @param {String} baseName a real name that the name arg is relative - * to. - * @param {Boolean} applyMap apply the map config to the value. Should - * only be done if this normalization is for a dependency ID. - * @returns {String} normalized name - */ - function normalize(name, baseName, applyMap) { - var pkgMain, mapValue, nameParts, i, j, nameSegment, lastIndex, - foundMap, foundI, foundStarMap, starI, normalizedBaseParts, - baseParts = (baseName && baseName.split('/')), - map = config.map, - starMap = map && map['*']; - - //Adjust any relative paths. - if (name) { - name = name.split('/'); - lastIndex = name.length - 1; - - // If wanting node ID compatibility, strip .js from end - // of IDs. Have to do this here, and not in nameToUrl - // because node allows either .js or non .js to map - // to same file. - if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) { - name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, ''); - } - - // Starts with a '.' so need the baseName - if (name[0].charAt(0) === '.' && baseParts) { - //Convert baseName to array, and lop off the last part, - //so that . matches that 'directory' and not name of the baseName's - //module. For instance, baseName of 'one/two/three', maps to - //'one/two/three.js', but we want the directory, 'one/two' for - //this normalization. - normalizedBaseParts = baseParts.slice(0, baseParts.length - 1); - name = normalizedBaseParts.concat(name); - } - - trimDots(name); - name = name.join('/'); - } - - //Apply map config if available. - if (applyMap && map && (baseParts || starMap)) { - nameParts = name.split('/'); - - outerLoop: for (i = nameParts.length; i > 0; i -= 1) { - nameSegment = nameParts.slice(0, i).join('/'); - - if (baseParts) { - //Find the longest baseName segment match in the config. - //So, do joins on the biggest to smallest lengths of baseParts. - for (j = baseParts.length; j > 0; j -= 1) { - mapValue = getOwn(map, baseParts.slice(0, j).join('/')); - - //baseName segment has config, find if it has one for - //this name. - if (mapValue) { - mapValue = getOwn(mapValue, nameSegment); - if (mapValue) { - //Match, update name to the new value. - foundMap = mapValue; - foundI = i; - break outerLoop; - } - } - } - } - - //Check for a star map match, but just hold on to it, - //if there is a shorter segment match later in a matching - //config, then favor over this star map. - if (!foundStarMap && starMap && getOwn(starMap, nameSegment)) { - foundStarMap = getOwn(starMap, nameSegment); - starI = i; - } - } - - if (!foundMap && foundStarMap) { - foundMap = foundStarMap; - foundI = starI; - } - - if (foundMap) { - nameParts.splice(0, foundI, foundMap); - name = nameParts.join('/'); - } - } - - // If the name points to a package's name, use - // the package main instead. - pkgMain = getOwn(config.pkgs, name); - - return pkgMain ? pkgMain : name; - } - - function removeScript(name) { - if (isBrowser) { - each(scripts(), function (scriptNode) { - if (scriptNode.getAttribute('data-requiremodule') === name && - scriptNode.getAttribute('data-requirecontext') === context.contextName) { - scriptNode.parentNode.removeChild(scriptNode); - return true; - } - }); - } - } - - function hasPathFallback(id) { - var pathConfig = getOwn(config.paths, id); - if (pathConfig && isArray(pathConfig) && pathConfig.length > 1) { - //Pop off the first array value, since it failed, and - //retry - pathConfig.shift(); - context.require.undef(id); - - //Custom require that does not do map translation, since - //ID is "absolute", already mapped/resolved. - context.makeRequire(null, { - skipMap: true - })([id]); - - return true; - } - } - - //Turns a plugin!resource to [plugin, resource] - //with the plugin being undefined if the name - //did not have a plugin prefix. - function splitPrefix(name) { - var prefix, - index = name ? name.indexOf('!') : -1; - if (index > -1) { - prefix = name.substring(0, index); - name = name.substring(index + 1, name.length); - } - return [prefix, name]; - } - - /** - * Creates a module mapping that includes plugin prefix, module - * name, and path. If parentModuleMap is provided it will - * also normalize the name via require.normalize() - * - * @param {String} name the module name - * @param {String} [parentModuleMap] parent module map - * for the module name, used to resolve relative names. - * @param {Boolean} isNormalized: is the ID already normalized. - * This is true if this call is done for a define() module ID. - * @param {Boolean} applyMap: apply the map config to the ID. - * Should only be true if this map is for a dependency. - * - * @returns {Object} - */ - function makeModuleMap(name, parentModuleMap, isNormalized, applyMap) { - var url, pluginModule, suffix, nameParts, - prefix = null, - parentName = parentModuleMap ? parentModuleMap.name : null, - originalName = name, - isDefine = true, - normalizedName = ''; - - //If no name, then it means it is a require call, generate an - //internal name. - if (!name) { - isDefine = false; - name = '_@r' + (requireCounter += 1); - } - - nameParts = splitPrefix(name); - prefix = nameParts[0]; - name = nameParts[1]; - - if (prefix) { - prefix = normalize(prefix, parentName, applyMap); - pluginModule = getOwn(defined, prefix); - } - - //Account for relative paths if there is a base name. - if (name) { - if (prefix) { - if (pluginModule && pluginModule.normalize) { - //Plugin is loaded, use its normalize method. - normalizedName = pluginModule.normalize(name, function (name) { - return normalize(name, parentName, applyMap); - }); - } else { - // If nested plugin references, then do not try to - // normalize, as it will not normalize correctly. This - // places a restriction on resourceIds, and the longer - // term solution is not to normalize until plugins are - // loaded and all normalizations to allow for async - // loading of a loader plugin. But for now, fixes the - // common uses. Details in #1131 - normalizedName = name.indexOf('!') === -1 ? - normalize(name, parentName, applyMap) : - name; - } - } else { - //A regular module. - normalizedName = normalize(name, parentName, applyMap); - - //Normalized name may be a plugin ID due to map config - //application in normalize. The map config values must - //already be normalized, so do not need to redo that part. - nameParts = splitPrefix(normalizedName); - prefix = nameParts[0]; - normalizedName = nameParts[1]; - isNormalized = true; - - url = context.nameToUrl(normalizedName); - } - } - - //If the id is a plugin id that cannot be determined if it needs - //normalization, stamp it with a unique ID so two matching relative - //ids that may conflict can be separate. - suffix = prefix && !pluginModule && !isNormalized ? - '_unnormalized' + (unnormalizedCounter += 1) : - ''; - - return { - prefix: prefix, - name: normalizedName, - parentMap: parentModuleMap, - unnormalized: !!suffix, - url: url, - originalName: originalName, - isDefine: isDefine, - id: (prefix ? - prefix + '!' + normalizedName : - normalizedName) + suffix - }; - } - - function getModule(depMap) { - var id = depMap.id, - mod = getOwn(registry, id); - - if (!mod) { - mod = registry[id] = new context.Module(depMap); - } - - return mod; - } - - function on(depMap, name, fn) { - var id = depMap.id, - mod = getOwn(registry, id); - - if (hasProp(defined, id) && - (!mod || mod.defineEmitComplete)) { - if (name === 'defined') { - fn(defined[id]); - } - } else { - mod = getModule(depMap); - if (mod.error && name === 'error') { - fn(mod.error); - } else { - mod.on(name, fn); - } - } - } - - function onError(err, errback) { - var ids = err.requireModules, - notified = false; - - if (errback) { - errback(err); - } else { - each(ids, function (id) { - var mod = getOwn(registry, id); - if (mod) { - //Set error on module, so it skips timeout checks. - mod.error = err; - if (mod.events.error) { - notified = true; - mod.emit('error', err); - } - } - }); - - if (!notified) { - req.onError(err); - } - } - } - - /** - * Internal method to transfer globalQueue items to this context's - * defQueue. - */ - function takeGlobalQueue() { - //Push all the globalDefQueue items into the context's defQueue - if (globalDefQueue.length) { - each(globalDefQueue, function(queueItem) { - var id = queueItem[0]; - if (typeof id === 'string') { - context.defQueueMap[id] = true; - } - defQueue.push(queueItem); - }); - globalDefQueue = []; - } - } - - handlers = { - 'require': function (mod) { - if (mod.require) { - return mod.require; - } else { - return (mod.require = context.makeRequire(mod.map)); - } - }, - 'exports': function (mod) { - mod.usingExports = true; - if (mod.map.isDefine) { - if (mod.exports) { - return (defined[mod.map.id] = mod.exports); - } else { - return (mod.exports = defined[mod.map.id] = {}); - } - } - }, - 'module': function (mod) { - if (mod.module) { - return mod.module; - } else { - return (mod.module = { - id: mod.map.id, - uri: mod.map.url, - config: function () { - return getOwn(config.config, mod.map.id) || {}; - }, - exports: mod.exports || (mod.exports = {}) - }); - } - } - }; - - function cleanRegistry(id) { - //Clean up machinery used for waiting modules. - delete registry[id]; - delete enabledRegistry[id]; - } - - function breakCycle(mod, traced, processed) { - var id = mod.map.id; - - if (mod.error) { - mod.emit('error', mod.error); - } else { - traced[id] = true; - each(mod.depMaps, function (depMap, i) { - var depId = depMap.id, - dep = getOwn(registry, depId); - - //Only force things that have not completed - //being defined, so still in the registry, - //and only if it has not been matched up - //in the module already. - if (dep && !mod.depMatched[i] && !processed[depId]) { - if (getOwn(traced, depId)) { - mod.defineDep(i, defined[depId]); - mod.check(); //pass false? - } else { - breakCycle(dep, traced, processed); - } - } - }); - processed[id] = true; - } - } - - function checkLoaded() { - var err, usingPathFallback, - waitInterval = config.waitSeconds * 1000, - //It is possible to disable the wait interval by using waitSeconds of 0. - expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(), - noLoads = [], - reqCalls = [], - stillLoading = false, - needCycleCheck = true; - - //Do not bother if this call was a result of a cycle break. - if (inCheckLoaded) { - return; - } - - inCheckLoaded = true; - - //Figure out the state of all the modules. - eachProp(enabledRegistry, function (mod) { - var map = mod.map, - modId = map.id; - - //Skip things that are not enabled or in error state. - if (!mod.enabled) { - return; - } - - if (!map.isDefine) { - reqCalls.push(mod); - } - - if (!mod.error) { - //If the module should be executed, and it has not - //been inited and time is up, remember it. - if (!mod.inited && expired) { - if (hasPathFallback(modId)) { - usingPathFallback = true; - stillLoading = true; - } else { - noLoads.push(modId); - removeScript(modId); - } - } else if (!mod.inited && mod.fetched && map.isDefine) { - stillLoading = true; - if (!map.prefix) { - //No reason to keep looking for unfinished - //loading. If the only stillLoading is a - //plugin resource though, keep going, - //because it may be that a plugin resource - //is waiting on a non-plugin cycle. - return (needCycleCheck = false); - } - } - } - }); - - if (expired && noLoads.length) { - //If wait time expired, throw error of unloaded modules. - err = makeError('timeout', 'Load timeout for modules: ' + noLoads, null, noLoads); - err.contextName = context.contextName; - return onError(err); - } - - //Not expired, check for a cycle. - if (needCycleCheck) { - each(reqCalls, function (mod) { - breakCycle(mod, {}, {}); - }); - } - - //If still waiting on loads, and the waiting load is something - //other than a plugin resource, or there are still outstanding - //scripts, then just try back later. - if ((!expired || usingPathFallback) && stillLoading) { - //Something is still waiting to load. Wait for it, but only - //if a timeout is not already in effect. - if ((isBrowser || isWebWorker) && !checkLoadedTimeoutId) { - checkLoadedTimeoutId = setTimeout(function () { - checkLoadedTimeoutId = 0; - checkLoaded(); - }, 50); - } - } - - inCheckLoaded = false; - } - - Module = function (map) { - this.events = getOwn(undefEvents, map.id) || {}; - this.map = map; - this.shim = getOwn(config.shim, map.id); - this.depExports = []; - this.depMaps = []; - this.depMatched = []; - this.pluginMaps = {}; - this.depCount = 0; - - /* this.exports this.factory - this.depMaps = [], - this.enabled, this.fetched - */ - }; - - Module.prototype = { - init: function (depMaps, factory, errback, options) { - options = options || {}; - - //Do not do more inits if already done. Can happen if there - //are multiple define calls for the same module. That is not - //a normal, common case, but it is also not unexpected. - if (this.inited) { - return; - } - - this.factory = factory; - - if (errback) { - //Register for errors on this module. - this.on('error', errback); - } else if (this.events.error) { - //If no errback already, but there are error listeners - //on this module, set up an errback to pass to the deps. - errback = bind(this, function (err) { - this.emit('error', err); - }); - } - - //Do a copy of the dependency array, so that - //source inputs are not modified. For example - //"shim" deps are passed in here directly, and - //doing a direct modification of the depMaps array - //would affect that config. - this.depMaps = depMaps && depMaps.slice(0); - - this.errback = errback; - - //Indicate this module has be initialized - this.inited = true; - - this.ignore = options.ignore; - - //Could have option to init this module in enabled mode, - //or could have been previously marked as enabled. However, - //the dependencies are not known until init is called. So - //if enabled previously, now trigger dependencies as enabled. - if (options.enabled || this.enabled) { - //Enable this module and dependencies. - //Will call this.check() - this.enable(); - } else { - this.check(); - } - }, - - defineDep: function (i, depExports) { - //Because of cycles, defined callback for a given - //export can be called more than once. - if (!this.depMatched[i]) { - this.depMatched[i] = true; - this.depCount -= 1; - this.depExports[i] = depExports; - } - }, - - fetch: function () { - if (this.fetched) { - return; - } - this.fetched = true; - - context.startTime = (new Date()).getTime(); - - var map = this.map; - - //If the manager is for a plugin managed resource, - //ask the plugin to load it now. - if (this.shim) { - context.makeRequire(this.map, { - enableBuildCallback: true - })(this.shim.deps || [], bind(this, function () { - return map.prefix ? this.callPlugin() : this.load(); - })); - } else { - //Regular dependency. - return map.prefix ? this.callPlugin() : this.load(); - } - }, - - load: function () { - var url = this.map.url; - - //Regular dependency. - if (!urlFetched[url]) { - urlFetched[url] = true; - context.load(this.map.id, url); - } - }, - - /** - * Checks if the module is ready to define itself, and if so, - * define it. - */ - check: function () { - if (!this.enabled || this.enabling) { - return; - } - - var err, cjsModule, - id = this.map.id, - depExports = this.depExports, - exports = this.exports, - factory = this.factory; - - if (!this.inited) { - // Only fetch if not already in the defQueue. - if (!hasProp(context.defQueueMap, id)) { - this.fetch(); - } - } else if (this.error) { - this.emit('error', this.error); - } else if (!this.defining) { - //The factory could trigger another require call - //that would result in checking this module to - //define itself again. If already in the process - //of doing that, skip this work. - this.defining = true; - - if (this.depCount < 1 && !this.defined) { - if (isFunction(factory)) { - //If there is an error listener, favor passing - //to that instead of throwing an error. However, - //only do it for define()'d modules. require - //errbacks should not be called for failures in - //their callbacks (#699). However if a global - //onError is set, use that. - if ((this.events.error && this.map.isDefine) || - req.onError !== defaultOnError) { - try { - exports = context.execCb(id, factory, depExports, exports); - } catch (e) { - err = e; - } - } else { - exports = context.execCb(id, factory, depExports, exports); - } - - // Favor return value over exports. If node/cjs in play, - // then will not have a return value anyway. Favor - // module.exports assignment over exports object. - if (this.map.isDefine && exports === undefined) { - cjsModule = this.module; - if (cjsModule) { - exports = cjsModule.exports; - } else if (this.usingExports) { - //exports already set the defined value. - exports = this.exports; - } - } - - if (err) { - err.requireMap = this.map; - err.requireModules = this.map.isDefine ? [this.map.id] : null; - err.requireType = this.map.isDefine ? 'define' : 'require'; - return onError((this.error = err)); - } - - } else { - //Just a literal value - exports = factory; - } - - this.exports = exports; - - if (this.map.isDefine && !this.ignore) { - defined[id] = exports; - - if (req.onResourceLoad) { - req.onResourceLoad(context, this.map, this.depMaps); - } - } - - //Clean up - cleanRegistry(id); - - this.defined = true; - } - - //Finished the define stage. Allow calling check again - //to allow define notifications below in the case of a - //cycle. - this.defining = false; - - if (this.defined && !this.defineEmitted) { - this.defineEmitted = true; - this.emit('defined', this.exports); - this.defineEmitComplete = true; - } - - } - }, - - callPlugin: function () { - var map = this.map, - id = map.id, - //Map already normalized the prefix. - pluginMap = makeModuleMap(map.prefix); - - //Mark this as a dependency for this plugin, so it - //can be traced for cycles. - this.depMaps.push(pluginMap); - - on(pluginMap, 'defined', bind(this, function (plugin) { - var load, normalizedMap, normalizedMod, - bundleId = getOwn(bundlesMap, this.map.id), - name = this.map.name, - parentName = this.map.parentMap ? this.map.parentMap.name : null, - localRequire = context.makeRequire(map.parentMap, { - enableBuildCallback: true - }); - - //If current map is not normalized, wait for that - //normalized name to load instead of continuing. - if (this.map.unnormalized) { - //Normalize the ID if the plugin allows it. - if (plugin.normalize) { - name = plugin.normalize(name, function (name) { - return normalize(name, parentName, true); - }) || ''; - } - - //prefix and name should already be normalized, no need - //for applying map config again either. - normalizedMap = makeModuleMap(map.prefix + '!' + name, - this.map.parentMap); - on(normalizedMap, - 'defined', bind(this, function (value) { - this.init([], function () { return value; }, null, { - enabled: true, - ignore: true - }); - })); - - normalizedMod = getOwn(registry, normalizedMap.id); - if (normalizedMod) { - //Mark this as a dependency for this plugin, so it - //can be traced for cycles. - this.depMaps.push(normalizedMap); - - if (this.events.error) { - normalizedMod.on('error', bind(this, function (err) { - this.emit('error', err); - })); - } - normalizedMod.enable(); - } - - return; - } - - //If a paths config, then just load that file instead to - //resolve the plugin, as it is built into that paths layer. - if (bundleId) { - this.map.url = context.nameToUrl(bundleId); - this.load(); - return; - } - - load = bind(this, function (value) { - this.init([], function () { return value; }, null, { - enabled: true - }); - }); - - load.error = bind(this, function (err) { - this.inited = true; - this.error = err; - err.requireModules = [id]; - - //Remove temp unnormalized modules for this module, - //since they will never be resolved otherwise now. - eachProp(registry, function (mod) { - if (mod.map.id.indexOf(id + '_unnormalized') === 0) { - cleanRegistry(mod.map.id); - } - }); - - onError(err); - }); - - //Allow plugins to load other code without having to know the - //context or how to 'complete' the load. - load.fromText = bind(this, function (text, textAlt) { - /*jslint evil: true */ - var moduleName = map.name, - moduleMap = makeModuleMap(moduleName), - hasInteractive = useInteractive; - - //As of 2.1.0, support just passing the text, to reinforce - //fromText only being called once per resource. Still - //support old style of passing moduleName but discard - //that moduleName in favor of the internal ref. - if (textAlt) { - text = textAlt; - } - - //Turn off interactive script matching for IE for any define - //calls in the text, then turn it back on at the end. - if (hasInteractive) { - useInteractive = false; - } - - //Prime the system by creating a module instance for - //it. - getModule(moduleMap); - - //Transfer any config to this other module. - if (hasProp(config.config, id)) { - config.config[moduleName] = config.config[id]; - } - - try { - req.exec(text); - } catch (e) { - return onError(makeError('fromtexteval', - 'fromText eval for ' + id + - ' failed: ' + e, - e, - [id])); - } - - if (hasInteractive) { - useInteractive = true; - } - - //Mark this as a dependency for the plugin - //resource - this.depMaps.push(moduleMap); - - //Support anonymous modules. - context.completeLoad(moduleName); - - //Bind the value of that module to the value for this - //resource ID. - localRequire([moduleName], load); - }); - - //Use parentName here since the plugin's name is not reliable, - //could be some weird string with no path that actually wants to - //reference the parentName's path. - plugin.load(map.name, localRequire, load, config); - })); - - context.enable(pluginMap, this); - this.pluginMaps[pluginMap.id] = pluginMap; - }, - - enable: function () { - enabledRegistry[this.map.id] = this; - this.enabled = true; - - //Set flag mentioning that the module is enabling, - //so that immediate calls to the defined callbacks - //for dependencies do not trigger inadvertent load - //with the depCount still being zero. - this.enabling = true; - - //Enable each dependency - each(this.depMaps, bind(this, function (depMap, i) { - var id, mod, handler; - - if (typeof depMap === 'string') { - //Dependency needs to be converted to a depMap - //and wired up to this module. - depMap = makeModuleMap(depMap, - (this.map.isDefine ? this.map : this.map.parentMap), - false, - !this.skipMap); - this.depMaps[i] = depMap; - - handler = getOwn(handlers, depMap.id); - - if (handler) { - this.depExports[i] = handler(this); - return; - } - - this.depCount += 1; - - on(depMap, 'defined', bind(this, function (depExports) { - if (this.undefed) { - return; - } - this.defineDep(i, depExports); - this.check(); - })); - - if (this.errback) { - on(depMap, 'error', bind(this, this.errback)); - } else if (this.events.error) { - // No direct errback on this module, but something - // else is listening for errors, so be sure to - // propagate the error correctly. - on(depMap, 'error', bind(this, function(err) { - this.emit('error', err); - })); - } - } - - id = depMap.id; - mod = registry[id]; - - //Skip special modules like 'require', 'exports', 'module' - //Also, don't call enable if it is already enabled, - //important in circular dependency cases. - if (!hasProp(handlers, id) && mod && !mod.enabled) { - context.enable(depMap, this); - } - })); - - //Enable each plugin that is used in - //a dependency - eachProp(this.pluginMaps, bind(this, function (pluginMap) { - var mod = getOwn(registry, pluginMap.id); - if (mod && !mod.enabled) { - context.enable(pluginMap, this); - } - })); - - this.enabling = false; - - this.check(); - }, - - on: function (name, cb) { - var cbs = this.events[name]; - if (!cbs) { - cbs = this.events[name] = []; - } - cbs.push(cb); - }, - - emit: function (name, evt) { - each(this.events[name], function (cb) { - cb(evt); - }); - if (name === 'error') { - //Now that the error handler was triggered, remove - //the listeners, since this broken Module instance - //can stay around for a while in the registry. - delete this.events[name]; - } - } - }; - - function callGetModule(args) { - //Skip modules already defined. - if (!hasProp(defined, args[0])) { - getModule(makeModuleMap(args[0], null, true)).init(args[1], args[2]); - } - } - - function removeListener(node, func, name, ieName) { - //Favor detachEvent because of IE9 - //issue, see attachEvent/addEventListener comment elsewhere - //in this file. - if (node.detachEvent && !isOpera) { - //Probably IE. If not it will throw an error, which will be - //useful to know. - if (ieName) { - node.detachEvent(ieName, func); - } - } else { - node.removeEventListener(name, func, false); - } - } - - /** - * Given an event from a script node, get the requirejs info from it, - * and then removes the event listeners on the node. - * @param {Event} evt - * @returns {Object} - */ - function getScriptData(evt) { - //Using currentTarget instead of target for Firefox 2.0's sake. Not - //all old browsers will be supported, but this one was easy enough - //to support and still makes sense. - var node = evt.currentTarget || evt.srcElement; - - //Remove the listeners once here. - removeListener(node, context.onScriptLoad, 'load', 'onreadystatechange'); - removeListener(node, context.onScriptError, 'error'); - - return { - node: node, - id: node && node.getAttribute('data-requiremodule') - }; - } - - function intakeDefines() { - var args; - - //Any defined modules in the global queue, intake them now. - takeGlobalQueue(); - - //Make sure any remaining defQueue items get properly processed. - while (defQueue.length) { - args = defQueue.shift(); - if (args[0] === null) { - return onError(makeError('mismatch', 'Mismatched anonymous define() module: ' + - args[args.length - 1])); - } else { - //args are id, deps, factory. Should be normalized by the - //define() function. - callGetModule(args); - } - } - context.defQueueMap = {}; - } - - context = { - config: config, - contextName: contextName, - registry: registry, - defined: defined, - urlFetched: urlFetched, - defQueue: defQueue, - defQueueMap: {}, - Module: Module, - makeModuleMap: makeModuleMap, - nextTick: req.nextTick, - onError: onError, - - /** - * Set a configuration for the context. - * @param {Object} cfg config object to integrate. - */ - configure: function (cfg) { - //Make sure the baseUrl ends in a slash. - if (cfg.baseUrl) { - if (cfg.baseUrl.charAt(cfg.baseUrl.length - 1) !== '/') { - cfg.baseUrl += '/'; - } - } - - //Save off the paths since they require special processing, - //they are additive. - var shim = config.shim, - objs = { - paths: true, - bundles: true, - config: true, - map: true - }; - - eachProp(cfg, function (value, prop) { - if (objs[prop]) { - if (!config[prop]) { - config[prop] = {}; - } - mixin(config[prop], value, true, true); - } else { - config[prop] = value; - } - }); - - //Reverse map the bundles - if (cfg.bundles) { - eachProp(cfg.bundles, function (value, prop) { - each(value, function (v) { - if (v !== prop) { - bundlesMap[v] = prop; - } - }); - }); - } - - //Merge shim - if (cfg.shim) { - eachProp(cfg.shim, function (value, id) { - //Normalize the structure - if (isArray(value)) { - value = { - deps: value - }; - } - if ((value.exports || value.init) && !value.exportsFn) { - value.exportsFn = context.makeShimExports(value); - } - shim[id] = value; - }); - config.shim = shim; - } - - //Adjust packages if necessary. - if (cfg.packages) { - each(cfg.packages, function (pkgObj) { - var location, name; - - pkgObj = typeof pkgObj === 'string' ? {name: pkgObj} : pkgObj; - - name = pkgObj.name; - location = pkgObj.location; - if (location) { - config.paths[name] = pkgObj.location; - } - - //Save pointer to main module ID for pkg name. - //Remove leading dot in main, so main paths are normalized, - //and remove any trailing .js, since different package - //envs have different conventions: some use a module name, - //some use a file name. - config.pkgs[name] = pkgObj.name + '/' + (pkgObj.main || 'main') - .replace(currDirRegExp, '') - .replace(jsSuffixRegExp, ''); - }); - } - - //If there are any "waiting to execute" modules in the registry, - //update the maps for them, since their info, like URLs to load, - //may have changed. - eachProp(registry, function (mod, id) { - //If module already has init called, since it is too - //late to modify them, and ignore unnormalized ones - //since they are transient. - if (!mod.inited && !mod.map.unnormalized) { - mod.map = makeModuleMap(id, null, true); - } - }); - - //If a deps array or a config callback is specified, then call - //require with those args. This is useful when require is defined as a - //config object before require.js is loaded. - if (cfg.deps || cfg.callback) { - context.require(cfg.deps || [], cfg.callback); - } - }, - - makeShimExports: function (value) { - function fn() { - var ret; - if (value.init) { - ret = value.init.apply(global, arguments); - } - return ret || (value.exports && getGlobal(value.exports)); - } - return fn; - }, - - makeRequire: function (relMap, options) { - options = options || {}; - - function localRequire(deps, callback, errback) { - var id, map, requireMod; - - if (options.enableBuildCallback && callback && isFunction(callback)) { - callback.__requireJsBuild = true; - } - - if (typeof deps === 'string') { - if (isFunction(callback)) { - //Invalid call - return onError(makeError('requireargs', 'Invalid require call'), errback); - } - - //If require|exports|module are requested, get the - //value for them from the special handlers. Caveat: - //this only works while module is being defined. - if (relMap && hasProp(handlers, deps)) { - return handlers[deps](registry[relMap.id]); - } - - //Synchronous access to one module. If require.get is - //available (as in the Node adapter), prefer that. - if (req.get) { - return req.get(context, deps, relMap, localRequire); - } - - //Normalize module name, if it contains . or .. - map = makeModuleMap(deps, relMap, false, true); - id = map.id; - - if (!hasProp(defined, id)) { - return onError(makeError('notloaded', 'Module name "' + - id + - '" has not been loaded yet for context: ' + - contextName + - (relMap ? '' : '. Use require([])'))); - } - return defined[id]; - } - - //Grab defines waiting in the global queue. - intakeDefines(); - - //Mark all the dependencies as needing to be loaded. - context.nextTick(function () { - //Some defines could have been added since the - //require call, collect them. - intakeDefines(); - - requireMod = getModule(makeModuleMap(null, relMap)); - - //Store if map config should be applied to this require - //call for dependencies. - requireMod.skipMap = options.skipMap; - - requireMod.init(deps, callback, errback, { - enabled: true - }); - - checkLoaded(); - }); - - return localRequire; - } - - mixin(localRequire, { - isBrowser: isBrowser, - - /** - * Converts a module name + .extension into an URL path. - * *Requires* the use of a module name. It does not support using - * plain URLs like nameToUrl. - */ - toUrl: function (moduleNamePlusExt) { - var ext, - index = moduleNamePlusExt.lastIndexOf('.'), - segment = moduleNamePlusExt.split('/')[0], - isRelative = segment === '.' || segment === '..'; - - //Have a file extension alias, and it is not the - //dots from a relative path. - if (index !== -1 && (!isRelative || index > 1)) { - ext = moduleNamePlusExt.substring(index, moduleNamePlusExt.length); - moduleNamePlusExt = moduleNamePlusExt.substring(0, index); - } - - return context.nameToUrl(normalize(moduleNamePlusExt, - relMap && relMap.id, true), ext, true); - }, - - defined: function (id) { - return hasProp(defined, makeModuleMap(id, relMap, false, true).id); - }, - - specified: function (id) { - id = makeModuleMap(id, relMap, false, true).id; - return hasProp(defined, id) || hasProp(registry, id); - } - }); - - //Only allow undef on top level require calls - if (!relMap) { - localRequire.undef = function (id) { - //Bind any waiting define() calls to this context, - //fix for #408 - takeGlobalQueue(); - - var map = makeModuleMap(id, relMap, true), - mod = getOwn(registry, id); - - mod.undefed = true; - removeScript(id); - - delete defined[id]; - delete urlFetched[map.url]; - delete undefEvents[id]; - - //Clean queued defines too. Go backwards - //in array so that the splices do not - //mess up the iteration. - eachReverse(defQueue, function(args, i) { - if (args[0] === id) { - defQueue.splice(i, 1); - } - }); - delete context.defQueueMap[id]; - - if (mod) { - //Hold on to listeners in case the - //module will be attempted to be reloaded - //using a different config. - if (mod.events.defined) { - undefEvents[id] = mod.events; - } - - cleanRegistry(id); - } - }; - } - - return localRequire; - }, - - /** - * Called to enable a module if it is still in the registry - * awaiting enablement. A second arg, parent, the parent module, - * is passed in for context, when this method is overridden by - * the optimizer. Not shown here to keep code compact. - */ - enable: function (depMap) { - var mod = getOwn(registry, depMap.id); - if (mod) { - getModule(depMap).enable(); - } - }, - - /** - * Internal method used by environment adapters to complete a load event. - * A load event could be a script load or just a load pass from a synchronous - * load call. - * @param {String} moduleName the name of the module to potentially complete. - */ - completeLoad: function (moduleName) { - var found, args, mod, - shim = getOwn(config.shim, moduleName) || {}, - shExports = shim.exports; - - takeGlobalQueue(); - - while (defQueue.length) { - args = defQueue.shift(); - if (args[0] === null) { - args[0] = moduleName; - //If already found an anonymous module and bound it - //to this name, then this is some other anon module - //waiting for its completeLoad to fire. - if (found) { - break; - } - found = true; - } else if (args[0] === moduleName) { - //Found matching define call for this script! - found = true; - } - - callGetModule(args); - } - context.defQueueMap = {}; - - //Do this after the cycle of callGetModule in case the result - //of those calls/init calls changes the registry. - mod = getOwn(registry, moduleName); - - if (!found && !hasProp(defined, moduleName) && mod && !mod.inited) { - if (config.enforceDefine && (!shExports || !getGlobal(shExports))) { - if (hasPathFallback(moduleName)) { - return; - } else { - return onError(makeError('nodefine', - 'No define call for ' + moduleName, - null, - [moduleName])); - } - } else { - //A script that does not call define(), so just simulate - //the call for it. - callGetModule([moduleName, (shim.deps || []), shim.exportsFn]); - } - } - - checkLoaded(); - }, - - /** - * Converts a module name to a file path. Supports cases where - * moduleName may actually be just an URL. - * Note that it **does not** call normalize on the moduleName, - * it is assumed to have already been normalized. This is an - * internal API, not a public one. Use toUrl for the public API. - */ - nameToUrl: function (moduleName, ext, skipExt) { - var paths, syms, i, parentModule, url, - parentPath, bundleId, - pkgMain = getOwn(config.pkgs, moduleName); - - if (pkgMain) { - moduleName = pkgMain; - } - - bundleId = getOwn(bundlesMap, moduleName); - - if (bundleId) { - return context.nameToUrl(bundleId, ext, skipExt); - } - - //If a colon is in the URL, it indicates a protocol is used and it is just - //an URL to a file, or if it starts with a slash, contains a query arg (i.e. ?) - //or ends with .js, then assume the user meant to use an url and not a module id. - //The slash is important for protocol-less URLs as well as full paths. - if (req.jsExtRegExp.test(moduleName)) { - //Just a plain path, not module name lookup, so just return it. - //Add extension if it is included. This is a bit wonky, only non-.js things pass - //an extension, this method probably needs to be reworked. - url = moduleName + (ext || ''); - } else { - //A module that needs to be converted to a path. - paths = config.paths; - - syms = moduleName.split('/'); - //For each module name segment, see if there is a path - //registered for it. Start with most specific name - //and work up from it. - for (i = syms.length; i > 0; i -= 1) { - parentModule = syms.slice(0, i).join('/'); - - parentPath = getOwn(paths, parentModule); - if (parentPath) { - //If an array, it means there are a few choices, - //Choose the one that is desired - if (isArray(parentPath)) { - parentPath = parentPath[0]; - } - syms.splice(0, i, parentPath); - break; - } - } - - //Join the path parts together, then figure out if baseUrl is needed. - url = syms.join('/'); - url += (ext || (/^data\:|\?/.test(url) || skipExt ? '' : '.js')); - url = (url.charAt(0) === '/' || url.match(/^[\w\+\.\-]+:/) ? '' : config.baseUrl) + url; - } - - return config.urlArgs ? url + - ((url.indexOf('?') === -1 ? '?' : '&') + - config.urlArgs) : url; - }, - - //Delegates to req.load. Broken out as a separate function to - //allow overriding in the optimizer. - load: function (id, url) { - req.load(context, id, url); - }, - - /** - * Executes a module callback function. Broken out as a separate function - * solely to allow the build system to sequence the files in the built - * layer in the right sequence. - * - * @private - */ - execCb: function (name, callback, args, exports) { - return callback.apply(exports, args); - }, - - /** - * callback for script loads, used to check status of loading. - * - * @param {Event} evt the event from the browser for the script - * that was loaded. - */ - onScriptLoad: function (evt) { - //Using currentTarget instead of target for Firefox 2.0's sake. Not - //all old browsers will be supported, but this one was easy enough - //to support and still makes sense. - if (evt.type === 'load' || - (readyRegExp.test((evt.currentTarget || evt.srcElement).readyState))) { - //Reset interactive script so a script node is not held onto for - //to long. - interactiveScript = null; - - //Pull out the name of the module and the context. - var data = getScriptData(evt); - context.completeLoad(data.id); - } - }, - - /** - * Callback for script errors. - */ - onScriptError: function (evt) { - var data = getScriptData(evt); - if (!hasPathFallback(data.id)) { - return onError(makeError('scripterror', 'Script error for: ' + data.id, evt, [data.id])); - } - } - }; - - context.require = context.makeRequire(); - return context; - } - - /** - * Main entry point. - * - * If the only argument to require is a string, then the module that - * is represented by that string is fetched for the appropriate context. - * - * If the first argument is an array, then it will be treated as an array - * of dependency string names to fetch. An optional function callback can - * be specified to execute when all of those dependencies are available. - * - * Make a local req variable to help Caja compliance (it assumes things - * on a require that are not standardized), and to give a short - * name for minification/local scope use. - */ - req = requirejs = function (deps, callback, errback, optional) { - - //Find the right context, use default - var context, config, - contextName = defContextName; - - // Determine if have config object in the call. - if (!isArray(deps) && typeof deps !== 'string') { - // deps is a config object - config = deps; - if (isArray(callback)) { - // Adjust args if there are dependencies - deps = callback; - callback = errback; - errback = optional; - } else { - deps = []; - } - } - - if (config && config.context) { - contextName = config.context; - } - - context = getOwn(contexts, contextName); - if (!context) { - context = contexts[contextName] = req.s.newContext(contextName); - } - - if (config) { - context.configure(config); - } - - return context.require(deps, callback, errback); - }; - - /** - * Support require.config() to make it easier to cooperate with other - * AMD loaders on globally agreed names. - */ - req.config = function (config) { - return req(config); - }; - - /** - * Execute something after the current tick - * of the event loop. Override for other envs - * that have a better solution than setTimeout. - * @param {Function} fn function to execute later. - */ - req.nextTick = typeof setTimeout !== 'undefined' ? function (fn) { - setTimeout(fn, 4); - } : function (fn) { fn(); }; - - /** - * Export require as a global, but only if it does not already exist. - */ - if (!require) { - require = req; - } - - req.version = version; - - //Used to filter out dependencies that are already paths. - req.jsExtRegExp = /^\/|:|\?|\.js$/; - req.isBrowser = isBrowser; - s = req.s = { - contexts: contexts, - newContext: newContext - }; - - //Create default context. - req({}); - - //Exports some context-sensitive methods on global require. - each([ - 'toUrl', - 'undef', - 'defined', - 'specified' - ], function (prop) { - //Reference from contexts instead of early binding to default context, - //so that during builds, the latest instance of the default context - //with its config gets used. - req[prop] = function () { - var ctx = contexts[defContextName]; - return ctx.require[prop].apply(ctx, arguments); - }; - }); - - if (isBrowser) { - head = s.head = document.getElementsByTagName('head')[0]; - //If BASE tag is in play, using appendChild is a problem for IE6. - //When that browser dies, this can be removed. Details in this jQuery bug: - //http://dev.jquery.com/ticket/2709 - baseElement = document.getElementsByTagName('base')[0]; - if (baseElement) { - head = s.head = baseElement.parentNode; - } - } - - /** - * Any errors that require explicitly generates will be passed to this - * function. Intercept/override it if you want custom error handling. - * @param {Error} err the error object. - */ - req.onError = defaultOnError; - - /** - * Creates the node for the load command. Only used in browser envs. - */ - req.createNode = function (config, moduleName, url) { - var node = config.xhtml ? - document.createElementNS('http://www.w3.org/1999/xhtml', 'html:script') : - document.createElement('script'); - node.type = config.scriptType || 'text/javascript'; - node.charset = 'utf-8'; - node.async = true; - return node; - }; - - /** - * Does the request to load a module for the browser case. - * Make this a separate function to allow other environments - * to override it. - * - * @param {Object} context the require context to find state. - * @param {String} moduleName the name of the module. - * @param {Object} url the URL to the module. - */ - req.load = function (context, moduleName, url) { - var config = (context && context.config) || {}, - node; - if (isBrowser) { - //In the browser so use a script tag - node = req.createNode(config, moduleName, url); - if (config.onNodeCreated) { - config.onNodeCreated(node, config, moduleName, url); - } - - node.setAttribute('data-requirecontext', context.contextName); - node.setAttribute('data-requiremodule', moduleName); - - //Set up load listener. Test attachEvent first because IE9 has - //a subtle issue in its addEventListener and script onload firings - //that do not match the behavior of all other browsers with - //addEventListener support, which fire the onload event for a - //script right after the script execution. See: - //https://connect.microsoft.com/IE/feedback/details/648057/script-onload-event-is-not-fired-immediately-after-script-execution - //UNFORTUNATELY Opera implements attachEvent but does not follow the script - //script execution mode. - if (node.attachEvent && - //Check if node.attachEvent is artificially added by custom script or - //natively supported by browser - //read https://github.com/jrburke/requirejs/issues/187 - //if we can NOT find [native code] then it must NOT natively supported. - //in IE8, node.attachEvent does not have toString() - //Note the test for "[native code" with no closing brace, see: - //https://github.com/jrburke/requirejs/issues/273 - !(node.attachEvent.toString && node.attachEvent.toString().indexOf('[native code') < 0) && - !isOpera) { - //Probably IE. IE (at least 6-8) do not fire - //script onload right after executing the script, so - //we cannot tie the anonymous define call to a name. - //However, IE reports the script as being in 'interactive' - //readyState at the time of the define call. - useInteractive = true; - - node.attachEvent('onreadystatechange', context.onScriptLoad); - //It would be great to add an error handler here to catch - //404s in IE9+. However, onreadystatechange will fire before - //the error handler, so that does not help. If addEventListener - //is used, then IE will fire error before load, but we cannot - //use that pathway given the connect.microsoft.com issue - //mentioned above about not doing the 'script execute, - //then fire the script load event listener before execute - //next script' that other browsers do. - //Best hope: IE10 fixes the issues, - //and then destroys all installs of IE 6-9. - //node.attachEvent('onerror', context.onScriptError); - } else { - node.addEventListener('load', context.onScriptLoad, false); - node.addEventListener('error', context.onScriptError, false); - } - node.src = url; - - //For some cache cases in IE 6-8, the script executes before the end - //of the appendChild execution, so to tie an anonymous define - //call to the module name (which is stored on the node), hold on - //to a reference to this node, but clear after the DOM insertion. - currentlyAddingScript = node; - if (baseElement) { - head.insertBefore(node, baseElement); - } else { - head.appendChild(node); - } - currentlyAddingScript = null; - - return node; - } else if (isWebWorker) { - try { - //In a web worker, use importScripts. This is not a very - //efficient use of importScripts, importScripts will block until - //its script is downloaded and evaluated. However, if web workers - //are in play, the expectation that a build has been done so that - //only one script needs to be loaded anyway. This may need to be - //reevaluated if other use cases become common. - importScripts(url); - - //Account for anonymous modules - context.completeLoad(moduleName); - } catch (e) { - context.onError(makeError('importscripts', - 'importScripts failed for ' + - moduleName + ' at ' + url, - e, - [moduleName])); - } - } - }; - - function getInteractiveScript() { - if (interactiveScript && interactiveScript.readyState === 'interactive') { - return interactiveScript; - } - - eachReverse(scripts(), function (script) { - if (script.readyState === 'interactive') { - return (interactiveScript = script); - } - }); - return interactiveScript; - } - - //Look for a data-main script attribute, which could also adjust the baseUrl. - if (isBrowser && !cfg.skipDataMain) { - //Figure out baseUrl. Get it from the script tag with require.js in it. - eachReverse(scripts(), function (script) { - //Set the 'head' where we can append children by - //using the script's parent. - if (!head) { - head = script.parentNode; - } - - //Look for a data-main attribute to set main script for the page - //to load. If it is there, the path to data main becomes the - //baseUrl, if it is not already set. - dataMain = script.getAttribute('data-main'); - if (dataMain) { - //Preserve dataMain in case it is a path (i.e. contains '?') - mainScript = dataMain; - - //Set final baseUrl if there is not already an explicit one. - if (!cfg.baseUrl) { - //Pull off the directory of data-main for use as the - //baseUrl. - src = mainScript.split('/'); - mainScript = src.pop(); - subPath = src.length ? src.join('/') + '/' : './'; - - cfg.baseUrl = subPath; - } - - //Strip off any trailing .js since mainScript is now - //like a module name. - mainScript = mainScript.replace(jsSuffixRegExp, ''); - - //If mainScript is still a path, fall back to dataMain - if (req.jsExtRegExp.test(mainScript)) { - mainScript = dataMain; - } - - //Put the data-main script in the files to load. - cfg.deps = cfg.deps ? cfg.deps.concat(mainScript) : [mainScript]; - - return true; - } - }); - } - - /** - * The function that handles definitions of modules. Differs from - * require() in that a string for the module should be the first argument, - * and the function to execute after dependencies are loaded should - * return a value to define the module corresponding to the first argument's - * name. - */ - define = function (name, deps, callback) { - var node, context; - - //Allow for anonymous modules - if (typeof name !== 'string') { - //Adjust args appropriately - callback = deps; - deps = name; - name = null; - } - - //This module may not have dependencies - if (!isArray(deps)) { - callback = deps; - deps = null; - } - - //If no name, and callback is a function, then figure out if it a - //CommonJS thing with dependencies. - if (!deps && isFunction(callback)) { - deps = []; - //Remove comments from the callback string, - //look for require calls, and pull them into the dependencies, - //but only if there are function args. - if (callback.length) { - callback - .toString() - .replace(commentRegExp, '') - .replace(cjsRequireRegExp, function (match, dep) { - deps.push(dep); - }); - - //May be a CommonJS thing even without require calls, but still - //could use exports, and module. Avoid doing exports and module - //work though if it just needs require. - //REQUIRES the function to expect the CommonJS variables in the - //order listed below. - deps = (callback.length === 1 ? ['require'] : ['require', 'exports', 'module']).concat(deps); - } - } - - //If in IE 6-8 and hit an anonymous define() call, do the interactive - //work. - if (useInteractive) { - node = currentlyAddingScript || getInteractiveScript(); - if (node) { - if (!name) { - name = node.getAttribute('data-requiremodule'); - } - context = contexts[node.getAttribute('data-requirecontext')]; - } - } - - //Always save off evaluating the def call until the script onload handler. - //This allows multiple modules to be in a file without prematurely - //tracing dependencies, and allows for anonymous module support, - //where the module name is not known until the script onload event - //occurs. If no context, use the global queue, and get it processed - //in the onscript load callback. - if (context) { - context.defQueue.push([name, deps, callback]); - context.defQueueMap[name] = true; - } else { - globalDefQueue.push([name, deps, callback]); - } - }; - - define.amd = { - jQuery: true - }; - - /** - * Executes the text. Normally just uses eval, but can be modified - * to use a better, environment-specific call. Only used for transpiling - * loader plugins, not for plain JS modules. - * @param {String} text the text to execute/evaluate. - */ - req.exec = function (text) { - /*jslint evil: true */ - return eval(text); - }; - - //Set up with config info. - req(cfg); -}(this));