From 341a049c8cac2705139eac2c9e7b3cfcc792a22b Mon Sep 17 00:00:00 2001 From: Chris Houseknecht Date: Thu, 3 Apr 2014 13:18:59 -0400 Subject: [PATCH] Pulled in latest angular-scheduler changes. --- .../static/lib/angular-scheduler/.bower.json | 13 +- .../lib/angular-scheduler/app/js/sampleApp.js | 4 +- .../static/lib/angular-scheduler/bower.json | 5 +- .../lib/angular-scheduler-detail.html | 8 +- .../lib/angular-scheduler.css | 25 +- .../lib/angular-scheduler.html | 26 +- .../lib/angular-scheduler.js | 165 +++- .../lib/angular-scheduler.min.css | 2 +- .../lib/angular-scheduler.min.js | 2 +- awx/ui/static/lib/angular/.bower.json | 10 +- awx/ui/static/lib/angular/angular.js | 797 ++++-------------- awx/ui/static/lib/angular/angular.min.js | 402 +++++---- awx/ui/static/lib/angular/angular.min.js.gzip | Bin 38454 -> 38065 bytes awx/ui/static/lib/angular/angular.min.js.map | 6 +- awx/ui/static/lib/angular/bower.json | 2 +- bower.json | 2 +- 16 files changed, 550 insertions(+), 919 deletions(-) diff --git a/awx/ui/static/lib/angular-scheduler/.bower.json b/awx/ui/static/lib/angular-scheduler/.bower.json index f40feb0a95..6041f150ef 100644 --- a/awx/ui/static/lib/angular-scheduler/.bower.json +++ b/awx/ui/static/lib/angular-scheduler/.bower.json @@ -1,6 +1,6 @@ { "name": "angular-scheduler", - "version": "0.0.8", + "version": "0.0.10", "authors": [ "Chris Houseknecht " ], @@ -27,8 +27,7 @@ "bootstrap": "~3.1.1", "rrule": "*", "timezone-js": "*", - "angular-tz-extensions": "*", - "globalize": "~0.1.1" + "angular-tz-extensions": "*" }, "homepage": "https://github.com/chouseknecht/angular-scheduler", "main": "git@github.com:chouseknecht/angular-scheduler.git", @@ -37,13 +36,13 @@ "rrule", "calendar" ], - "_release": "0.0.8", + "_release": "0.0.10", "_resolution": { "type": "version", - "tag": "v0.0.8", - "commit": "df3f8e2c2c5f408fafe4ebfc1468998d51c4a66d" + "tag": "v0.0.10", + "commit": "76f0fd6bdd941b0ca7e9a26c4659a4aa4616688c" }, "_source": "git://github.com/chouseknecht/angular-scheduler.git", - "_target": "~0.0.8", + "_target": "~0.0.9", "_originalSource": "angular-scheduler" } \ No newline at end of file diff --git a/awx/ui/static/lib/angular-scheduler/app/js/sampleApp.js b/awx/ui/static/lib/angular-scheduler/app/js/sampleApp.js index 2040f3d0f7..91dde14d26 100644 --- a/awx/ui/static/lib/angular-scheduler/app/js/sampleApp.js +++ b/awx/ui/static/lib/angular-scheduler/app/js/sampleApp.js @@ -28,8 +28,8 @@ angular.module('sampleApp', ['ngRoute', 'AngularScheduler', 'Timezones']) }]) .constant('AngularScheduler.partial', '/lib/') - .constant('AngularScheduler.useTimezone', false) - .constant('AngularScheduler.showUTCField', false) + .constant('AngularScheduler.useTimezone', true) + .constant('AngularScheduler.showUTCField', true) .constant('$timezones.definitions.location', '/bower_components/angular-tz-extensions/tz/data') .controller('sampleController', ['$scope', '$filter', 'SchedulerInit', function($scope, $filter, SchedulerInit) { diff --git a/awx/ui/static/lib/angular-scheduler/bower.json b/awx/ui/static/lib/angular-scheduler/bower.json index d7d0332ec1..bf9313abeb 100644 --- a/awx/ui/static/lib/angular-scheduler/bower.json +++ b/awx/ui/static/lib/angular-scheduler/bower.json @@ -1,6 +1,6 @@ { "name": "angular-scheduler", - "version": "0.0.8", + "version": "0.0.10", "authors": [ "Chris Houseknecht " ], @@ -27,8 +27,7 @@ "bootstrap": "~3.1.1", "rrule": "*", "timezone-js": "*", - "angular-tz-extensions": "*", - "globalize": "~0.1.1" + "angular-tz-extensions": "*" }, "homepage": "https://github.com/chouseknecht/angular-scheduler", "main": "git@github.com:chouseknecht/angular-scheduler.git", diff --git a/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler-detail.html b/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler-detail.html index 267dc118a9..615008afd1 100644 --- a/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler-detail.html +++ b/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler-detail.html @@ -26,11 +26,9 @@
-
Date format
- -
UTC
- -
Local time
+ + +
  • {{ occurrence.utc }}
  • diff --git a/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler.css b/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler.css index b87a1e1550..b2c5407c78 100644 --- a/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler.css +++ b/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler.css @@ -55,10 +55,10 @@ .red-text { color: #dd1b16; } -input.ng-dirty.ng-invalid, select.ng-dirty.ng-invalid, textarea.ng-dirty.ng-invalid { +/*input.ng-dirty.ng-invalid, select.ng-dirty.ng-invalid, textarea.ng-dirty.ng-invalid { border: 1px solid red; outline: none; -} +}*/ .help-text { font-size: 12px; font-weight: normal; @@ -74,6 +74,13 @@ input.ng-dirty.ng-invalid, select.ng-dirty.ng-invalid, textarea.ng-dirty.ng-inva .no-label { padding-top: 25px; } +.radio-inline input[type="radio"]{ + margin-top: 2px; + margin-left: -15px; +} +.radio-inline { + margin-left: 15px; +} .padding-top-slim { padding-top: 5px; } @@ -115,22 +122,12 @@ select { font-size: 12px; } -#date-choice .label-inline { - display: inline-block; - vertical-align: middle; -} - #date-choice input { margin-bottom: 2px; height: 11px; width: 10px; } -#date-choice .label-inline:first-child { - padding-bottom: 2px; - margin-right: 10px; +#date-choice .radio-inline:nth-child(2) { + margin-left: 10px; } - -#date-choice .label-inline:nth-child(3) { - margin-right: 10px; -} \ No newline at end of file diff --git a/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler.html b/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler.html index 3104adc348..1de822a7cd 100644 --- a/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler.html +++ b/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler.html @@ -25,10 +25,10 @@
    - +
    + sch-date-picker placeholder="mm/dd/yyyy" required ng-change="scheduleTimeChange()" > @@ -38,13 +38,13 @@
    - +
    - : - : + ng-change="scheduleTimeChange()" > + : + :
    Time must be in HH24:MM:SS format
    @@ -60,7 +60,7 @@
    - +
    @@ -87,7 +87,7 @@
    + ng-model="schedulerInterval" min="1" max="999" ng-change="resetError('scheduler_interval_error')">
    Provide a value between 1 and 999
    @@ -103,7 +103,8 @@
    + ng-model="monthDay" min="1" max="31" ng-change="resetError('scheduler_monthDay_error')" > +
    Must be between 1 and 31
    @@ -139,7 +140,8 @@
    + ng-model="yearlyMonthDay" min="1" max="31" ng-change="resetError('scheduler_yearlyMonthDay_error')" > +
    Must be between 1 and 31
    @@ -197,7 +199,7 @@
    + ng-model="schedulerOccurrenceCount" min="1" max="999" on-change="resetError('scheduler_occurrenceCount_error')" >
    Provide a value between 1 and 999
    @@ -207,7 +209,7 @@
    + data-min-today="true" placeholder="mm/dd/yyyy" ng-change="resetError('scheduler_endDt_error')"> diff --git a/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler.js b/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler.js index f6c4fdead0..1ebb961ac8 100644 --- a/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler.js +++ b/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler.js @@ -31,8 +31,8 @@ angular.module('AngularScheduler', ['underscore']) // Initialize supporting scope variables and functions. Returns a scheduler object with getString(), // setString() and inject() methods. .factory('SchedulerInit', ['$log', '$filter', '$timezones', 'LoadLookupValues', 'SetDefaults', 'CreateObject', '_', - 'AngularScheduler.useTimezone', 'AngularScheduler.showUTCField', - function($log, $filter, $timezones, LoadLookupValues, SetDefaults, CreateObject, _, useTimezone, showUTCField) { + 'AngularScheduler.useTimezone', 'AngularScheduler.showUTCField', 'InRange', + function($log, $filter, $timezones, LoadLookupValues, SetDefaults, CreateObject, _, useTimezone, showUTCField, InRange) { return function(params) { var scope = params.scope, @@ -60,30 +60,41 @@ angular.module('AngularScheduler', ['underscore']) }; scope.scheduleTimeChange = function() { - if (scope.schedulerStartDt) { + if (scope.schedulerStartDt === "" || scope.schedulerStartDt === null || scope.schedulerStartDt === undefined) { + scope.startDateError("Provide a valid start date and time"); + scope.schedulerUTCTime = ''; + } + else if ( !(InRange(scope.schedulerStartHour, 0, 23, 2) && InRange(scope.schedulerStartMinute, 0, 59, 2) && InRange(scope.schedulerStartSecond, 0, 59, 2)) ) { + scope.scheduler_startTime_error = true; + } + else { if (useTimezone) { scope.resetStartDate(); try { - var dateStr = scope.schedulerStartDt + 'T' + - $filter('schZeroPad')(scope.schedulerStartHour, 2) + ':' + - $filter('schZeroPad')(scope.schedulerStartMinute, 2) + ':' + + var dateStr = scope.schedulerStartDt.replace(/(\d{2})\/(\d{2})\/(\d{4})/, function(match, p1, p2, p3) { + return p3 + '-' + p1 + '-' + p2; + }); + dateStr += 'T' + $filter('schZeroPad')(scope.schedulerStartHour, 2) + ':' + $filter('schZeroPad')(scope.schedulerStartMinute, 2) + ':' + $filter('schZeroPad')(scope.schedulerStartSecond, 2) + '.000Z'; - scope.schedulerUTCTime = $timezones.toUTC(dateStr, scope.schedulerTimeZone.name).toISOString(); + scope.schedulerUTCTime = $filter('schDateStrFix')($timezones.toUTC(dateStr, scope.schedulerTimeZone.name).toISOString()); + scope.scheduler_form_schedulerStartDt_error = false; + scope.scheduler_startTime_error = false; } catch(e) { scope.startDateError("Provide a valid start date and time"); } } else { - scope.schedulerUTCTime = scope.schedulerStartDt + 'T' + scope.schedulerStartHour + ':' + scope.schedulerStartMinute + - ':' + scope.schedulerStartSecond + '.000Z'; + scope.scheduler_startTime_error = false; + scope.scheduler_form_schedulerStartDt_error = false; + scope.schedulerUTCTime = $filter('schDateStrFix')(scope.schedulerStartDt + 'T' + scope.schedulerStartHour + ':' + scope.schedulerStartMinute + + ':' + scope.schedulerStartSecond + '.000Z'); } - // Push possible end date values to start date + 1 + } + }; - } - else { - scope.schedulerUTCTime = ''; - } + scope.resetError = function(variable) { + scope[variable] = false; }; scope.scheduleRepeatChange = function() { @@ -96,6 +107,7 @@ angular.module('AngularScheduler', ['underscore']) scope.schedulerShowInterval = false; scope.schedulerEnd = scope.endOptions[0]; } + scope.sheduler_frequency_error = false; }; scope.showCalendar = function(fld) { @@ -129,6 +141,7 @@ angular.module('AngularScheduler', ['underscore']) else { scope.weekDays.push(day); } + scope.scheduler_weekDays_error = false; }; scope.startDateError = function(msg) { @@ -157,7 +170,7 @@ angular.module('AngularScheduler', ['underscore']) var dt = new Date(), // date adjusted to local zone automatically month = $filter('schZeroPad')(dt.getMonth() + 1, 2), day = $filter('schZeroPad')(dt.getDate(), 2); - scope.schedulerEndDt = dt.getFullYear() + '-' + month + '-' + day; + scope.schedulerEndDt = month + '/' + day + '/' + dt.getFullYear(); scope.schedulerOccurrenceCount = 1; }; @@ -188,8 +201,8 @@ angular.module('AngularScheduler', ['underscore']) user input is valid, reset the form, etc. All the things we need to access and manipulate the scheduler widget */ - .factory('CreateObject', ['AngularScheduler.useTimezone', '$filter', 'GetRule', 'Inject', 'InjectDetail', 'SetDefaults', '$timezones', 'SetRule', - function(useTimezone, $filter, GetRule, Inject, InjectDetail, SetDefaults, $timezones, SetRule) { + .factory('CreateObject', ['AngularScheduler.useTimezone', '$filter', 'GetRule', 'Inject', 'InjectDetail', 'SetDefaults', '$timezones', 'SetRule', 'InRange', + function(useTimezone, $filter, GetRule, Inject, InjectDetail, SetDefaults, $timezones, SetRule, InRange) { return function(scope, requireFutureST) { var fn = function() { @@ -243,7 +256,9 @@ angular.module('AngularScheduler', ['underscore']) this.scope.scheduler_endDt_error = false; this.scope.scheduler_interval_error = false; this.scope.scheduler_occurrenceCount_error = false; - + this.scope.scheduler_monthDay_error = false; + this.scope.scheduler_yearlyMonthDay_error = false; + if (this.scope.scheduler_form && this.scope.scheduler_form.schedulerEndDt) { this.scope.scheduler_form.schedulerEndDt.$setValidity('custom-error', true); this.scope.scheduler_form.schedulerEndDt.$setPristine(); @@ -253,14 +268,28 @@ angular.module('AngularScheduler', ['underscore']) // Set values for detail page this.setDetails = function() { - var rrule = this.getRRule(); + var rrule = this.getRRule(), + scope = this.scope; if (rrule) { scope.rrule_nlp_description = rrule.toText(); - scope.dateChoice = 'utc'; + scope.dateChoice = 'local'; scope.occurrence_list = []; rrule.all(function(date, i){ + var local, dt; if (i < 10) { - scope.occurrence_list.push({ utc: date.toUTCString(), local: date.toString() }); + if (useTimezone) { + dt = $timezones.align(date, scope.schedulerTimeZone.name); + local = $filter('schZeroPad')(dt.getMonth(),2) + '/' + + $filter('schZeroPad')(dt.getDay(),2) + '/' + dt.getFullYear() + ' ' + + $filter('schZeroPad')(dt.getHours(),2) + ':' + + $filter('schZeroPad')(dt.getMinutes(),2) + ':' + + $filter('schZeroPad')(dt.getSeconds(),2) + ' ' + + dt.getTimezoneAbbreviation(); + } + else { + local = $filter('date')(date, 'MM/dd/yyyy HH:mm:ss Z'); + } + scope.occurrence_list.push({ utc: $filter('schDateStrFix')(date.toISOString()), local: local }); return true; } return false; @@ -275,23 +304,31 @@ angular.module('AngularScheduler', ['underscore']) var startDt, now, dateStr, adjNow, timeNow, timeFuture, validity = true; this.clearErrors(); - - if (this.scope.schedulerFrequency.value !== 'none' && (this.scope.schedulerInterval < 1 || this.scope.schedulerInterval > 999)) { + if (this.scope.schedulerFrequency.value !== 'none' && !InRange(this.scope.schedulerInterval, 1, 999, 3)) { this.scope.scheduler_interval_error = true; validity = false; } - if (this.scope.schedulerEnd.value === 'after' && (this.scope.schedulerOccurrenceCount < 0 || this.scope.schedulerOccurrenceCount > 999)) { + if (this.scope.schedulerEnd.value === 'after' && !InRange(this.scope.schedulerOccurrenceCount, 1, 999, 3)) { this.scope.scheduler_occurrenceCount_error = true; validity = false; } - if (this.scope.schedulerFrequency.value === 'weekly' && scope.weekDays.length === 0) { + if (this.scope.schedulerFrequency.value === 'weekly' && this.scope.weekDays.length === 0) { this.scope.scheduler_weekDays_error = true; validity = false; } - if (this.scope.schedulerStartHour < 0 || this.scope.schedulerStartMinute < 0 || scope.schedulerStartSecond < 0 || - this.scope.schedulerStartHour > 23 || this.scope.schedulerStartMinute > 59 || scope.schedulerStartSecond > 59) { + + if (this.scope.schedulerFrequency.value === 'monthly' && this.scope.monthlyRepeatOption === 'day' && !InRange(this.scope.monthDay, 1, 31, 99)) { + this.scope.scheduler_monthDay_error = true; + validity = false; + } + + if (this.scope.schedulerFrequency.value === 'yearly' && this.scope.yearlyRepeatOption === 'month' && !InRange(this.scope.yearlyMonthDay, 1, 31, 99)) { + this.scope.scheduler_yearlyMonthDay_error = true; + validity = false; + } + if ( !(InRange(scope.schedulerStartHour, 0, 23, 2) && InRange(scope.schedulerStartMinute, 0, 59, 2) && InRange(scope.schedulerStartSecond, 0, 59, 2)) ) { this.scope.scheduler_startTime_error = true; validity = false; } @@ -302,7 +339,7 @@ angular.module('AngularScheduler', ['underscore']) validity = false; } if (this.scope.schedulerEnd.value === 'on') { - if (!/^\d{4}-\d{2}-\d{2}$/.test(this.scope.schedulerEndDt)) { + if (!/^\d{2}\/\d{2}\/\d{4}$/.test(this.scope.schedulerEndDt)) { this.scope.scheduler_form.schedulerEndDt.$pristine = false; this.scope.scheduler_form.schedulerEndDt.$dirty = true; $('#schedulerEndDt').removeClass('ng-pristine').removeClass('ng-valid').removeClass('ng-valid-custom-error') @@ -427,6 +464,19 @@ angular.module('AngularScheduler', ['underscore']) }; }]) + .factory('InRange', [ function() { + return function(x, min, max, length) { + var rx = new RegExp("\\d{1," + length + "}"); + if (!rx.test(x)) { + return false; + } + if (x < min || x > max) { + return false; + } + return true; + }; + }]) + .factory('Inject', ['AngularScheduler.partials', '$compile', '$http', '$log', function(scheduler_partial, $compile, $http) { return function(params) { @@ -679,15 +729,18 @@ angular.module('AngularScheduler', ['underscore']) dt = new Date(value); // date adjusted to local zone automatically month = $filter('schZeroPad')(dt.getMonth() + 1, 2); day = $filter('schZeroPad')(dt.getDate(), 2); - scope.schedulerStartDt = dt.getFullYear() + '-' + month + '-' + day; + scope.schedulerStartDt = month + '/' + day + '/' + dt.getFullYear(); scope.schedulerStartHour = dt.getHours(); //$filter('schZeroPad')(dt.getHours(),2); scope.schedulerStartMinute = dt.getMinutes(); // $filter('schZeroPad')(dt.getMinutes(),2); scope.schedulerStartSecond = dt.getSeconds(); // $filter('schZeroPad')(dt.getSeconds(),2); scope.scheduleTimeChange(); // calc UTC } else { + // expects inbound dates to be in ISO format: 2014-04-02T00:00:00.000Z + scope.schedulerStartDt = value.replace(/T.*$/,'').replace(/(\d{4})-(\d{2})-(\d{2})/, function(match, p1, p2, p3) { + return p2 + '/' + p3 + '/' + p1; + }); timeString = value.replace(/^.*T/,''); - scope.schedulerStartDt = value.replace(/T.*$/,''); scope.schedulerStartHour = timeString.substr(0,2); scope.schedulerStartMinute = timeString.substr(3,2); scope.schedulerStartSecond = timeString.substr(6,2); @@ -737,10 +790,12 @@ angular.module('AngularScheduler', ['underscore']) dt = new Date(value); // date adjusted to local zone automatically month = $filter('schZeroPad')(dt.getMonth() + 1, 2); day = $filter('schZeroPad')(dt.getDate(), 2); - scope.schedulerEndDt = dt.getFullYear() + '-' + month + '-' + day; + scope.schedulerEndDt = month + '/' + day + '/' + dt.getFullYear(); } else { - scope.schedulerEndDt = value.replace(/T.*$/,''); + scope.schedulerEndDt = value.replace(/T.*$/,'').replace(/(\d{4})-(\d{2})-(\d{2})/, function(match, p1, p2, p3) { + return p2 + '/' + p3 + '/' + p1; + }); } } @@ -819,7 +874,7 @@ angular.module('AngularScheduler', ['underscore']) var defaultDate = new Date(), defaultMonth = $filter('schZeroPad')(defaultDate.getMonth() + 1, 2), defaultDay = $filter('schZeroPad')(defaultDate.getDate(), 2), - defaultDateStr = defaultDate.getFullYear() + '-' + defaultMonth + '-' + defaultDay; + defaultDateStr = defaultMonth + '/' + defaultDay + '/' + defaultDate.getFullYear(); scope.schedulerName = ''; scope.weekDays = []; scope.schedulerStartHour = '00'; @@ -916,7 +971,7 @@ angular.module('AngularScheduler', ['underscore']) }; }]) - // $filter('afZeroPad')(n, pad) -- or -- {{ n | afZeroPad:pad }} + // $filter('schZeroPad')(n, pad) -- or -- {{ n | afZeroPad:pad }} .filter('schZeroPad', [ function() { return function (n, pad) { var str = (Math.pow(10,pad) + '').replace(/^1/,'') + (n + '').trim(); @@ -924,6 +979,15 @@ angular.module('AngularScheduler', ['underscore']) }; }]) + // $filter('schdateStrFix')(s) where s is a date string in ISO format: yyyy-mm-ddTHH:MM:SS.sssZ. Returns string in format: mm/dd/yyyy HH:MM:SS UTC + .filter('schDateStrFix', [ function() { + return function(dateStr) { + return dateStr.replace(/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}).*Z/, function(match, yy, mm, dd, hh, mi, ss) { + return mm + '/' + dd + '/' + yy + ' ' + hh + ':' + mi + ':' + ss + ' UTC'; + }); + }; + }]) + .directive('schTooltip', [ function() { return { link: function(scope, element, attrs) { @@ -946,7 +1010,7 @@ angular.module('AngularScheduler', ['underscore']) var options = {}, variable = attrs.ngModel, defaultDate = new Date(); - options.dateFormat = attrs.dateFormat || 'yy-mm-dd'; + options.dateFormat = attrs.dateFormat || 'mm/dd/yy'; options.defaultDate = scope[variable]; options.minDate = (attrs.minToday) ? defaultDate : null; options.maxDate = (attrs.maxDate) ? new Date(attrs('maxDate')) : null; @@ -976,16 +1040,23 @@ angular.module('AngularScheduler', ['underscore']) min: min, max: max, change: function() { - if (zeroPad) { - scope[attr.ngModel] = $filter('schZeroPad')($(this).val(),zeroPad); - $(this).val(scope[attr.ngModel]); - } - else { - scope[attr.ngModel] = $(this).spinner('value'); - } - if (attr.ngChange) { - scope.$apply(scope[attr.ngChange]); - } + setTimeout(function() { + scope.$apply(function() { + if (zeroPad) { + scope[attr.ngModel] = $filter('schZeroPad')($(element).spinner('value'),zeroPad); + $(element).val(scope[attr.ngModel]); + if (attr.ngChange) { + scope.$eval(attr.ngChange); + } + } + else { + scope[attr.ngModel] = $(element).spinner('value'); + if (attr.ngChange) { + scope.$eval(attr.ngChange); + } + } + }); + },100); }, spin: function() { scope[form].$setDirty(); @@ -996,6 +1067,10 @@ angular.module('AngularScheduler', ['underscore']) } } }); + + $(element).on("click", function () { + $(element).select(); + }); } }; }]); diff --git a/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler.min.css b/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler.min.css index e95591b0ee..ca98a1bd34 100644 --- a/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler.min.css +++ b/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler.min.css @@ -1 +1 @@ -.ui-widget input{font-size:12px;font-weight:400;text-align:center}.ui-spinner.ui-widget-content{border-bottom-color:#ccc;border-top-color:#ccc;border-left-color:#ccc;border-right-color:#ccc}.ui-spinner-button{border-left-color:#ccc;border-left-style:solid;border-left-width:1px}.scheduler-time-spinner{width:40px;height:24px}.scheduler-spinner{width:50px;height:24px}.fmt-help{font-size:12px;font-weight:400;color:#999;padding-left:10px}.error{color:#dd1b16;font-size:12px;margin-bottom:0;margin-top:0;padding-top:3px}.error-pull-up{position:relative;top:-15px;margin-bottom:15px}.red-text{color:#dd1b16}input.ng-dirty.ng-invalid,select.ng-dirty.ng-invalid,textarea.ng-dirty.ng-invalid{border:1px solid red;outline:0}.help-text{font-size:12px;font-weight:400;color:#999;margin-top:5px}.inline-label{margin-left:10px}#scheduler-buttons{margin-top:20px}.no-label{padding-top:25px}.padding-top-slim{padding-top:5px}.option-pad-left{padding-left:15px}.option-pad-top{padding-top:15px}.option-pad-bottom{padding-bottom:15px}#monthlyOccurrence,#monthlyWeekDay{margin-top:5px}select{width:100%}#occurrence-label{display:inline-block}.occurrence-list{border:1px solid #ccc;padding:8px 10px;border-radius:4px;background-color:#eee;list-style:none;margin-bottom:5px;min-height:220px}#date-choice{display:inline-block;margin-left:15px;font-size:12px}#date-choice .label-inline{display:inline-block;vertical-align:middle}#date-choice input{margin-bottom:2px;height:11px;width:10px}#date-choice .label-inline:first-child{padding-bottom:2px;margin-right:10px}#date-choice .label-inline:nth-child(3){margin-right:10px} \ No newline at end of file +.ui-widget input{font-size:12px;font-weight:400;text-align:center}.ui-spinner.ui-widget-content{border-bottom-color:#ccc;border-top-color:#ccc;border-left-color:#ccc;border-right-color:#ccc}.ui-spinner-button{border-left-color:#ccc;border-left-style:solid;border-left-width:1px}.scheduler-time-spinner{width:40px;height:24px}.scheduler-spinner{width:50px;height:24px}.fmt-help{font-size:12px;font-weight:400;color:#999;padding-left:10px}.error{color:#dd1b16;font-size:12px;margin-bottom:0;margin-top:0;padding-top:3px}.error-pull-up{position:relative;top:-15px;margin-bottom:15px}.red-text{color:#dd1b16}.help-text{font-size:12px;font-weight:400;color:#999;margin-top:5px}.inline-label{margin-left:10px}#scheduler-buttons{margin-top:20px}.no-label{padding-top:25px}.radio-inline input[type=radio]{margin-top:2px;margin-left:-15px}.radio-inline{margin-left:15px}.padding-top-slim{padding-top:5px}.option-pad-left{padding-left:15px}.option-pad-top{padding-top:15px}.option-pad-bottom{padding-bottom:15px}#monthlyOccurrence,#monthlyWeekDay{margin-top:5px}select{width:100%}#occurrence-label{display:inline-block}.occurrence-list{border:1px solid #ccc;padding:8px 10px;border-radius:4px;background-color:#eee;list-style:none;margin-bottom:5px;min-height:220px}#date-choice{display:inline-block;margin-left:15px;font-size:12px}#date-choice input{margin-bottom:2px;height:11px;width:10px}#date-choice .radio-inline:nth-child(2){margin-left:10px} \ No newline at end of file diff --git a/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler.min.js b/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler.min.js index 7889be7123..9cd607893c 100644 --- a/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler.min.js +++ b/awx/ui/static/lib/angular-scheduler/lib/angular-scheduler.min.js @@ -1 +1 @@ -/*! angular-scheduler - v0.0.7 - 2014-04-02 */"use strict";angular.module("underscore",[]).factory("_",[function(){return window._}]),angular.module("AngularScheduler",["underscore"]).constant("AngularScheduler.partials","/lib/").constant("AngularScheduler.useTimezone",!1).constant("AngularScheduler.showUTCField",!1).factory("SchedulerInit",["$log","$filter","$timezones","LoadLookupValues","SetDefaults","CreateObject","_","AngularScheduler.useTimezone","AngularScheduler.showUTCField",function(a,b,c,d,e,f,g,h,i){return function(j){var k=j.scope,l=j.requireFutureStartTime||!1;return k.schedulerShowTimeZone=h,k.schedulerShowUTCStartTime=i,k.setDefaults=function(){h&&(k.current_timezone=c.getLocal(),($.isEmptyObject(k.current_timezone)||!k.current_timezone.name)&&(a.error("Failed to find local timezone. Defaulting to America/New_York."),k.current_timezone={name:"America/New_York"}),k.schedulerTimeZone=g.find(k.timeZones,function(a){return a.name===k.current_timezone.name})),d(k),e(k),k.scheduleTimeChange(),k.scheduleRepeatChange()},k.scheduleTimeChange=function(){if(k.schedulerStartDt)if(h){k.resetStartDate();try{var a=k.schedulerStartDt+"T"+b("schZeroPad")(k.schedulerStartHour,2)+":"+b("schZeroPad")(k.schedulerStartMinute,2)+":"+b("schZeroPad")(k.schedulerStartSecond,2)+".000Z";k.schedulerUTCTime=c.toUTC(a,k.schedulerTimeZone.name).toISOString()}catch(d){k.startDateError("Provide a valid start date and time")}}else k.schedulerUTCTime=k.schedulerStartDt+"T"+k.schedulerStartHour+":"+k.schedulerStartMinute+":"+k.schedulerStartSecond+".000Z";else k.schedulerUTCTime=""},k.scheduleRepeatChange=function(){k.schedulerFrequency&&""!==k.schedulerFrequency.value&&"none"!==k.schedulerFrequency.value?(k.schedulerInterval=1,k.schedulerShowInterval=!0,k.schedulerIntervalLabel=k.schedulerFrequency.intervalLabel):(k.schedulerShowInterval=!1,k.schedulerEnd=k.endOptions[0])},k.showCalendar=function(a){$("#"+a).focus()},k.monthlyRepeatChange=function(){$("#monthDay").spinner("day"!==k.monthlyRepeatOption?"disable":"enable")},k.yearlyRepeatChange=function(){$("#yearlyRepeatDay").spinner("month"!==k.yearlyRepeatOption?"disable":"enable")},k.setWeekday=function(a){var b=k.weekDays.indexOf(a);b>=0?k.weekDays.splice(a,1):k.weekDays.push(a)},k.startDateError=function(a){k.scheduler_form&&(k.scheduler_form.schedulerStartDt&&(k.scheduler_form_schedulerStartDt_error=a,k.scheduler_form.schedulerStartDt.$pristine=!1,k.scheduler_form.schedulerStartDt.$dirty=!0),$("#schedulerStartDt").removeClass("ng-pristine").removeClass("ng-valid").removeClass("ng-valid-custom-error").addClass("ng-dirty").addClass("ng-invalid").addClass("ng-invalid-custom-error"))},k.resetStartDate=function(){k.scheduler_form&&(k.scheduler_form_schedulerStartDt_error="",k.scheduler_form.schedulerStartDt&&(k.scheduler_form.schedulerStartDt.$setValidity("custom-error",!0),k.scheduler_form.schedulerStartDt.$setPristine()))},k.schedulerEndChange=function(){var a=new Date,c=b("schZeroPad")(a.getMonth()+1,2),d=b("schZeroPad")(a.getDate(),2);k.schedulerEndDt=a.getFullYear()+"-"+c+"-"+d,k.schedulerOccurrenceCount=1},k.removeZonesReady&&k.removeZonesReady(),k.removeZonesReady=k.$on("zonesReady",function(){k.timeZones=JSON.parse(localStorage.zones),k.setDefaults()}),h?c.getZoneList(k):k.setDefaults(),f(k,l)}}]).factory("CreateObject",["AngularScheduler.useTimezone","$filter","GetRule","Inject","InjectDetail","SetDefaults","$timezones","SetRule",function(a,b,c,d,e,f,g,h){return function(f,i){var j=function(){this.scope=f,this.useTimezone=a,this.requireFutureStartTime=i,this.getOptions=function(){var a={};return a.startDate=this.scope.schedulerUTCTime,a.frequency=this.scope.schedulerFrequency.value,a.interval=this.scope.schedulerInterval,"after"===this.scope.schedulerEnd.value&&(a.occurrenceCount=this.scope.schedulerOccurrenceCount),"on"===this.scope.schedulerEnd.value&&(a.endDate=f.schedulerEndDt+this.scope.schedulerUTCTime.replace(/^\d{4}-\d{2}-\d{2}/,"")),"weekly"===this.scope.schedulerFrequency.value?a.weekDays=this.scope.weekDays:"yearly"===this.scope.schedulerFrequency.value?"month"===this.scope.yearlyRepeatOption?(a.month=this.scope.yearlyMonth.value,a.monthDay=this.scope.yearlyMonthDay):(a.setOccurrence=this.scope.yearlyOccurrence.value,a.weekDays=this.scope.yearlyWeekDay.value,a.month=this.scope.yearlyOtherMonth.value):"monthly"===this.scope.schedulerFrequency.value&&("day"===this.scope.monthlyRepeatOption?a.monthDay=this.scope.monthDay:(a.setOccurrence=this.scope.monthlyOccurrence.value,a.weekDays=this.scope.monthlyWeekDay.value)),a},this.clearErrors=function(){this.scope.scheduler_weekDays_error=!1,this.scope.scheduler_endDt_error=!1,this.scope.resetStartDate(),this.scope.scheduler_endDt_error=!1,this.scope.scheduler_interval_error=!1,this.scope.scheduler_occurrenceCount_error=!1,this.scope.scheduler_form&&this.scope.scheduler_form.schedulerEndDt&&(this.scope.scheduler_form.schedulerEndDt.$setValidity("custom-error",!0),this.scope.scheduler_form.schedulerEndDt.$setPristine(),this.scope.scheduler_form.$setPristine())},this.setDetails=function(){var a=this.getRRule();a&&(f.rrule_nlp_description=a.toText(),f.dateChoice="utc",f.occurrence_list=[],a.all(function(a,b){return 10>b?(f.occurrence_list.push({utc:a.toUTCString(),local:a.toString()}),!0):!1}),f.rrule_nlp_description=a.toText().replace(/^RRule error.*$/,"Natural language description not available"),f.rrule=a.toString())},this.isValid=function(){var a,c,d,e,h,i,j=!0;if(this.clearErrors(),"none"!==this.scope.schedulerFrequency.value&&(this.scope.schedulerInterval<1||this.scope.schedulerInterval>999)&&(this.scope.scheduler_interval_error=!0,j=!1),"after"===this.scope.schedulerEnd.value&&(this.scope.schedulerOccurrenceCount<0||this.scope.schedulerOccurrenceCount>999)&&(this.scope.scheduler_occurrenceCount_error=!0,j=!1),"weekly"===this.scope.schedulerFrequency.value&&0===f.weekDays.length&&(this.scope.scheduler_weekDays_error=!0,j=!1),(this.scope.schedulerStartHour<0||this.scope.schedulerStartMinute<0||f.schedulerStartSecond<0||this.scope.schedulerStartHour>23||this.scope.schedulerStartMinute>59||f.schedulerStartSecond>59)&&(this.scope.scheduler_startTime_error=!0,j=!1),this.scope.scheduler_form.schedulerName.$valid||(this.scope.scheduler_form.schedulerName.$dirty=!0,$("#schedulerName").addClass("ng-dirty"),j=!1),"on"===this.scope.schedulerEnd.value&&(/^\d{4}-\d{2}-\d{2}$/.test(this.scope.schedulerEndDt)||(this.scope.scheduler_form.schedulerEndDt.$pristine=!1,this.scope.scheduler_form.schedulerEndDt.$dirty=!0,$("#schedulerEndDt").removeClass("ng-pristine").removeClass("ng-valid").removeClass("ng-valid-custom-error").addClass("ng-dirty").addClass("ng-invalid").addClass("ng-invalid-custom-error"),this.scope.scheduler_endDt_error=!0,j=!1)),this.scope.schedulerUTCTime)try{a=new Date(this.scope.schedulerUTCTime),isNaN(a)?(this.scope.startDateError("Invalid start time"),j=!1):(i=a.getTime(),c=new Date,this.useTimezone?(d=c.getFullYear()+"-"+b("schZeroPad")(c.getMonth()+1,2)+"-"+b("schZeroPad")(c.getDate(),2)+"T"+b("schZeroPad")(c.getHours(),2)+":"+b("schZeroPad")(c.getMinutes(),2)+":"+b("schZeroPad")(c.getSeconds(),2)+".000Z",e=g.toUTC(d,this.scope.schedulerTimeZone.name),h=e.getTime()):h=c.getTime(),this.requireFutureStartTime&&h>=i&&(this.scope.startDateError("Start time must be in the future"),j=!1))}catch(k){this.scope.startDateError("Invalid start time"),j=!1}else this.scope.startDateError("Provide a start time"),j=!1;return f.schedulerIsValid=j,j&&this.setDetails(),j},this.getRRule=function(){var a=this.getOptions();return c(a)},this.getValue=function(){var a=this.getRRule(),b=this.getOptions();return{name:f.schedulerName,rrule:a.toString(),options:b}},this.setRRule=function(a){return this.clear(),h(a,this.scope)},this.setName=function(a){this.scope.schedulerName=a},this.inject=function(a,b){return d({scope:this.scope,target:a,buttons:b})},this.injectDetail=function(a,b){return e({scope:this.scope,target:a,showRRule:b})},this.clear=function(){this.clearErrors(),this.scope.scheduler_form&&this.scope.scheduler_form.schedulerName&&this.scope.scheduler_form.schedulerName.$setPristine(),this.scope.setDefaults()},this.getUserTimezone=function(){return g.getLocal()},this.setRequireFutureStartTime=function(a){this.requireFutureStartTime=a},this.getRequireFutureStartTime=function(){return this.requireFutureStartTime},this.setShowRRule=function(a){f.showRRule=a}};return new j}}]).factory("Inject",["AngularScheduler.partials","$compile","$http","$log",function(a,b,c){return function(d){var e=d.scope,f=d.target,g=d.buttons;e.removeHtmlReady&&e.removeHtmlReady(),e.removeHtmlReady=e.$on("htmlReady",function(a,c){var d=angular.isObject(f)?f:angular.element(document.getElementById(f));d.html(c),b(d)(e),g&&$("#scheduler-buttons").show()}),c({method:"GET",url:a+"angular-scheduler.html"}).success(function(a){e.$emit("htmlReady",a)}).error(function(b,c){throw"Error reading "+a+"angular-scheduler.html. "+c})}}]).factory("InjectDetail",["AngularScheduler.partials","$compile","$http","$log",function(a,b,c){return function(d){var e=d.scope,f=d.target,g=d.showRRule;e.showRRule=g||!1,e.removeHtmlDetailReady&&e.removeHtmlDetailReady(),e.removeHtmlDetailReady=e.$on("htmlDetailReady",function(a,c){var d=angular.isObject(f)?f:angular.element(document.getElementById(f));d.html(c),b(d)(e)}),c({method:"GET",url:a+"angular-scheduler-detail.html"}).success(function(a){e.$emit("htmlDetailReady",a)}).error(function(b,c){throw"Error reading "+a+"angular-scheduler-detail.html. "+c})}}]).factory("GetRule",["$log",function(a){return function(b){var c,d=b.startDate,e=b.frequency,f=b.interval,g=b.occurrenceCount,h=b.endDate,i=b.month,j=b.monthDay,k=b.weekDays,l=b.setOccurrence,m={};if(angular.isDate(d))m.dtstart=d;else try{m.dtstart=new Date(d)}catch(n){a.error("Date conversion failed. Attempted to convert "+d+" to Date. "+n.message)}if(e&&"none"!==e){if(m.freq=RRule[e.toUpperCase()],m.interval=f,k&&"string"==typeof k&&(m.byweekday=RRule[k.toUpperCase()]),k&&angular.isArray(k))for(m.byweekday=[],c=0;c 0"),"BYDAY"===r)if("WEEKLY"===g(d,"FREQ"))for(i=s.split(/,/),f.weekDays=[],k=0;k0&&parseInt(s,10)<32?(f.monthDay=parseInt(s,10),f.monhthlyRepeatOption="day"):m="BYMONTHDAY must contain an integer between 1 and 31"),"DTSTART"===r&&(n=!0,/\d{8}T\d{6}.*Z/.test(s)&&(s=s.replace(/(\d{4})(\d{2})(\d{2}T)(\d{2})(\d{2})(\d{2}.*$)/,function(a,b,c,d,e,f,g){return b+"-"+c+"-"+d+e+":"+f+":"+g.substr(0,2)+"Z"})),a?(l=new Date(s),o=e("schZeroPad")(l.getMonth()+1,2),p=e("schZeroPad")(l.getDate(),2),f.schedulerStartDt=l.getFullYear()+"-"+o+"-"+p,f.schedulerStartHour=l.getHours(),f.schedulerStartMinute=l.getMinutes(),f.schedulerStartSecond=l.getSeconds(),f.scheduleTimeChange()):(q=s.replace(/^.*T/,""),f.schedulerStartDt=s.replace(/T.*$/,""),f.schedulerStartHour=q.substr(0,2),f.schedulerStartMinute=q.substr(3,2),f.schedulerStartSecond=q.substr(6,2)),f.scheduleTimeChange()),"BYSETPOS"===r&&("YEARLY"===g(d,"FREQ")?(f.yearlRepeatOption="other",f.yearlyOccurrence=b.find(f.occurrences,function(a){return a.value===parseInt(s,10)}),f.yearlyOccurrence&&f.yearlyOccurrence.name||(m="BYSETPOS was not in the set of 1,2,3,4,-1")):(f.monthlyOccurrence=b.find(f.occurrences,function(a){return a.value===parseInt(s,10)}),f.monthlyOccurrence&&f.monthlyOccurrence.name||(m="BYSETPOS was not in the set of 1,2,3,4,-1"))),"COUNT"===r&&(parseInt(s,10)?(f.schedulerEnd=f.endOptions[1],f.schedulerOccurrenceCount=parseInt(s,10)):m="COUNT must be a valid integer > 0"),"UNTIL"===r&&(/\d{8}T\d{6}.*Z/.test(s)&&(s=s.replace(/(\d{4})(\d{2})(\d{2}T)(\d{2})(\d{2})(\d{2}.*$)/,function(a,b,c,d,e,f,g){return b+"-"+c+"-"+d+e+":"+f+":"+g.substr(0,2)+"Z"})),f.schedulerEnd=f.endOptions[2],a?(l=new Date(s),o=e("schZeroPad")(l.getMonth()+1,2),p=e("schZeroPad")(l.getDate(),2),f.schedulerEndDt=l.getFullYear()+"-"+o+"-"+p):f.schedulerEndDt=s.replace(/T.*$/,"")),"BYMONTH"===r&&("YEARLY"===g(d,"FREQ")&&g(d,"BYDAY")?(f.yearlRepeatOption="other",f.yearlyOtherMonth=b.find(f.months,function(a){return a.value===parseInt(s,10)}),f.yearlyOtherMonth&&f.yearlyOtherMonth.name||(m="BYMONTH must be an integer between 1 and 12")):(f.yearlyOption="month",f.yearlyMonth=b.find(f.months,function(a){return a.value===parseInt(s,10)}),f.yearlyMonth&&f.yearlyMonth.name||(m="BYMONTH must be an integer between 1 and 12"))),"BYMONTHDAY"===r&&(parseInt(s,10)?f.yearlyMonthDay=parseInt(s,10):m="BYMONTHDAY must be an integer between 1 and 31")}function j(){"weekly"===f.schedulerFrequency.name&&0===f.weekDays.length&&(m="Frequency is weekly, but BYDAYS value is missing."),n||(m="Warning: start date was not provided")}var k,l,m="",n=!1;if(d)if(k=d.split(/;/),angular.isArray(k)){for(l=0;l=0?l.weekDays.splice(a,1):l.weekDays.push(a),l.scheduler_weekDays_error=!1},l.startDateError=function(a){l.scheduler_form&&(l.scheduler_form.schedulerStartDt&&(l.scheduler_form_schedulerStartDt_error=a,l.scheduler_form.schedulerStartDt.$pristine=!1,l.scheduler_form.schedulerStartDt.$dirty=!0),$("#schedulerStartDt").removeClass("ng-pristine").removeClass("ng-valid").removeClass("ng-valid-custom-error").addClass("ng-dirty").addClass("ng-invalid").addClass("ng-invalid-custom-error"))},l.resetStartDate=function(){l.scheduler_form&&(l.scheduler_form_schedulerStartDt_error="",l.scheduler_form.schedulerStartDt&&(l.scheduler_form.schedulerStartDt.$setValidity("custom-error",!0),l.scheduler_form.schedulerStartDt.$setPristine()))},l.schedulerEndChange=function(){var a=new Date,c=b("schZeroPad")(a.getMonth()+1,2),d=b("schZeroPad")(a.getDate(),2);l.schedulerEndDt=c+"/"+d+"/"+a.getFullYear(),l.schedulerOccurrenceCount=1},l.removeZonesReady&&l.removeZonesReady(),l.removeZonesReady=l.$on("zonesReady",function(){l.timeZones=JSON.parse(localStorage.zones),l.setDefaults()}),h?c.getZoneList(l):l.setDefaults(),f(l,m)}}]).factory("CreateObject",["AngularScheduler.useTimezone","$filter","GetRule","Inject","InjectDetail","SetDefaults","$timezones","SetRule","InRange",function(a,b,c,d,e,f,g,h,i){return function(f,j){var k=function(){this.scope=f,this.useTimezone=a,this.requireFutureStartTime=j,this.getOptions=function(){var a={};return a.startDate=this.scope.schedulerUTCTime,a.frequency=this.scope.schedulerFrequency.value,a.interval=this.scope.schedulerInterval,"after"===this.scope.schedulerEnd.value&&(a.occurrenceCount=this.scope.schedulerOccurrenceCount),"on"===this.scope.schedulerEnd.value&&(a.endDate=f.schedulerEndDt+this.scope.schedulerUTCTime.replace(/^\d{4}-\d{2}-\d{2}/,"")),"weekly"===this.scope.schedulerFrequency.value?a.weekDays=this.scope.weekDays:"yearly"===this.scope.schedulerFrequency.value?"month"===this.scope.yearlyRepeatOption?(a.month=this.scope.yearlyMonth.value,a.monthDay=this.scope.yearlyMonthDay):(a.setOccurrence=this.scope.yearlyOccurrence.value,a.weekDays=this.scope.yearlyWeekDay.value,a.month=this.scope.yearlyOtherMonth.value):"monthly"===this.scope.schedulerFrequency.value&&("day"===this.scope.monthlyRepeatOption?a.monthDay=this.scope.monthDay:(a.setOccurrence=this.scope.monthlyOccurrence.value,a.weekDays=this.scope.monthlyWeekDay.value)),a},this.clearErrors=function(){this.scope.scheduler_weekDays_error=!1,this.scope.scheduler_endDt_error=!1,this.scope.resetStartDate(),this.scope.scheduler_endDt_error=!1,this.scope.scheduler_interval_error=!1,this.scope.scheduler_occurrenceCount_error=!1,this.scope.scheduler_monthDay_error=!1,this.scope.scheduler_yearlyMonthDay_error=!1,this.scope.scheduler_form&&this.scope.scheduler_form.schedulerEndDt&&(this.scope.scheduler_form.schedulerEndDt.$setValidity("custom-error",!0),this.scope.scheduler_form.schedulerEndDt.$setPristine(),this.scope.scheduler_form.$setPristine())},this.setDetails=function(){var c=this.getRRule(),d=this.scope;c&&(d.rrule_nlp_description=c.toText(),d.dateChoice="local",d.occurrence_list=[],c.all(function(c,e){var f,h;return 10>e?(a?(h=g.align(c,d.schedulerTimeZone.name),f=b("schZeroPad")(h.getMonth(),2)+"/"+b("schZeroPad")(h.getDay(),2)+"/"+h.getFullYear()+" "+b("schZeroPad")(h.getHours(),2)+":"+b("schZeroPad")(h.getMinutes(),2)+":"+b("schZeroPad")(h.getSeconds(),2)+" "+h.getTimezoneAbbreviation()):f=b("date")(c,"MM/dd/yyyy HH:mm:ss Z"),d.occurrence_list.push({utc:b("schDateStrFix")(c.toISOString()),local:f}),!0):!1}),d.rrule_nlp_description=c.toText().replace(/^RRule error.*$/,"Natural language description not available"),d.rrule=c.toString())},this.isValid=function(){var a,c,d,e,h,j,k=!0;if(this.clearErrors(),"none"===this.scope.schedulerFrequency.value||i(this.scope.schedulerInterval,1,999,3)||(this.scope.scheduler_interval_error=!0,k=!1),"after"!==this.scope.schedulerEnd.value||i(this.scope.schedulerOccurrenceCount,1,999,3)||(this.scope.scheduler_occurrenceCount_error=!0,k=!1),"weekly"===this.scope.schedulerFrequency.value&&0===this.scope.weekDays.length&&(this.scope.scheduler_weekDays_error=!0,k=!1),"monthly"!==this.scope.schedulerFrequency.value||"day"!==this.scope.monthlyRepeatOption||i(this.scope.monthDay,1,31,99)||(this.scope.scheduler_monthDay_error=!0,k=!1),"yearly"!==this.scope.schedulerFrequency.value||"month"!==this.scope.yearlyRepeatOption||i(this.scope.yearlyMonthDay,1,31,99)||(this.scope.scheduler_yearlyMonthDay_error=!0,k=!1),i(f.schedulerStartHour,0,23,2)&&i(f.schedulerStartMinute,0,59,2)&&i(f.schedulerStartSecond,0,59,2)||(this.scope.scheduler_startTime_error=!0,k=!1),this.scope.scheduler_form.schedulerName.$valid||(this.scope.scheduler_form.schedulerName.$dirty=!0,$("#schedulerName").addClass("ng-dirty"),k=!1),"on"===this.scope.schedulerEnd.value&&(/^\d{2}\/\d{2}\/\d{4}$/.test(this.scope.schedulerEndDt)||(this.scope.scheduler_form.schedulerEndDt.$pristine=!1,this.scope.scheduler_form.schedulerEndDt.$dirty=!0,$("#schedulerEndDt").removeClass("ng-pristine").removeClass("ng-valid").removeClass("ng-valid-custom-error").addClass("ng-dirty").addClass("ng-invalid").addClass("ng-invalid-custom-error"),this.scope.scheduler_endDt_error=!0,k=!1)),this.scope.schedulerUTCTime)try{a=new Date(this.scope.schedulerUTCTime),isNaN(a)?(this.scope.startDateError("Invalid start time"),k=!1):(j=a.getTime(),c=new Date,this.useTimezone?(d=c.getFullYear()+"-"+b("schZeroPad")(c.getMonth()+1,2)+"-"+b("schZeroPad")(c.getDate(),2)+"T"+b("schZeroPad")(c.getHours(),2)+":"+b("schZeroPad")(c.getMinutes(),2)+":"+b("schZeroPad")(c.getSeconds(),2)+".000Z",e=g.toUTC(d,this.scope.schedulerTimeZone.name),h=e.getTime()):h=c.getTime(),this.requireFutureStartTime&&h>=j&&(this.scope.startDateError("Start time must be in the future"),k=!1))}catch(l){this.scope.startDateError("Invalid start time"),k=!1}else this.scope.startDateError("Provide a start time"),k=!1;return f.schedulerIsValid=k,k&&this.setDetails(),k},this.getRRule=function(){var a=this.getOptions();return c(a)},this.getValue=function(){var a=this.getRRule(),b=this.getOptions();return{name:f.schedulerName,rrule:a.toString(),options:b}},this.setRRule=function(a){return this.clear(),h(a,this.scope)},this.setName=function(a){this.scope.schedulerName=a},this.inject=function(a,b){return d({scope:this.scope,target:a,buttons:b})},this.injectDetail=function(a,b){return e({scope:this.scope,target:a,showRRule:b})},this.clear=function(){this.clearErrors(),this.scope.scheduler_form&&this.scope.scheduler_form.schedulerName&&this.scope.scheduler_form.schedulerName.$setPristine(),this.scope.setDefaults()},this.getUserTimezone=function(){return g.getLocal()},this.setRequireFutureStartTime=function(a){this.requireFutureStartTime=a},this.getRequireFutureStartTime=function(){return this.requireFutureStartTime},this.setShowRRule=function(a){f.showRRule=a}};return new k}}]).factory("InRange",[function(){return function(a,b,c,d){var e=new RegExp("\\d{1,"+d+"}");return e.test(a)?b>a||a>c?!1:!0:!1}}]).factory("Inject",["AngularScheduler.partials","$compile","$http","$log",function(a,b,c){return function(d){var e=d.scope,f=d.target,g=d.buttons;e.removeHtmlReady&&e.removeHtmlReady(),e.removeHtmlReady=e.$on("htmlReady",function(a,c){var d=angular.isObject(f)?f:angular.element(document.getElementById(f));d.html(c),b(d)(e),g&&$("#scheduler-buttons").show()}),c({method:"GET",url:a+"angular-scheduler.html"}).success(function(a){e.$emit("htmlReady",a)}).error(function(b,c){throw"Error reading "+a+"angular-scheduler.html. "+c})}}]).factory("InjectDetail",["AngularScheduler.partials","$compile","$http","$log",function(a,b,c){return function(d){var e=d.scope,f=d.target,g=d.showRRule;e.showRRule=g||!1,e.removeHtmlDetailReady&&e.removeHtmlDetailReady(),e.removeHtmlDetailReady=e.$on("htmlDetailReady",function(a,c){var d=angular.isObject(f)?f:angular.element(document.getElementById(f));d.html(c),b(d)(e)}),c({method:"GET",url:a+"angular-scheduler-detail.html"}).success(function(a){e.$emit("htmlDetailReady",a)}).error(function(b,c){throw"Error reading "+a+"angular-scheduler-detail.html. "+c})}}]).factory("GetRule",["$log",function(a){return function(b){var c,d=b.startDate,e=b.frequency,f=b.interval,g=b.occurrenceCount,h=b.endDate,i=b.month,j=b.monthDay,k=b.weekDays,l=b.setOccurrence,m={};if(angular.isDate(d))m.dtstart=d;else try{m.dtstart=new Date(d)}catch(n){a.error("Date conversion failed. Attempted to convert "+d+" to Date. "+n.message)}if(e&&"none"!==e){if(m.freq=RRule[e.toUpperCase()],m.interval=f,k&&"string"==typeof k&&(m.byweekday=RRule[k.toUpperCase()]),k&&angular.isArray(k))for(m.byweekday=[],c=0;c 0"),"BYDAY"===r)if("WEEKLY"===g(d,"FREQ"))for(i=s.split(/,/),f.weekDays=[],k=0;k0&&parseInt(s,10)<32?(f.monthDay=parseInt(s,10),f.monhthlyRepeatOption="day"):m="BYMONTHDAY must contain an integer between 1 and 31"),"DTSTART"===r&&(n=!0,/\d{8}T\d{6}.*Z/.test(s)&&(s=s.replace(/(\d{4})(\d{2})(\d{2}T)(\d{2})(\d{2})(\d{2}.*$)/,function(a,b,c,d,e,f,g){return b+"-"+c+"-"+d+e+":"+f+":"+g.substr(0,2)+"Z"})),a?(l=new Date(s),o=e("schZeroPad")(l.getMonth()+1,2),p=e("schZeroPad")(l.getDate(),2),f.schedulerStartDt=o+"/"+p+"/"+l.getFullYear(),f.schedulerStartHour=l.getHours(),f.schedulerStartMinute=l.getMinutes(),f.schedulerStartSecond=l.getSeconds(),f.scheduleTimeChange()):(f.schedulerStartDt=s.replace(/T.*$/,"").replace(/(\d{4})-(\d{2})-(\d{2})/,function(a,b,c,d){return c+"/"+d+"/"+b}),q=s.replace(/^.*T/,""),f.schedulerStartHour=q.substr(0,2),f.schedulerStartMinute=q.substr(3,2),f.schedulerStartSecond=q.substr(6,2)),f.scheduleTimeChange()),"BYSETPOS"===r&&("YEARLY"===g(d,"FREQ")?(f.yearlRepeatOption="other",f.yearlyOccurrence=b.find(f.occurrences,function(a){return a.value===parseInt(s,10)}),f.yearlyOccurrence&&f.yearlyOccurrence.name||(m="BYSETPOS was not in the set of 1,2,3,4,-1")):(f.monthlyOccurrence=b.find(f.occurrences,function(a){return a.value===parseInt(s,10)}),f.monthlyOccurrence&&f.monthlyOccurrence.name||(m="BYSETPOS was not in the set of 1,2,3,4,-1"))),"COUNT"===r&&(parseInt(s,10)?(f.schedulerEnd=f.endOptions[1],f.schedulerOccurrenceCount=parseInt(s,10)):m="COUNT must be a valid integer > 0"),"UNTIL"===r&&(/\d{8}T\d{6}.*Z/.test(s)&&(s=s.replace(/(\d{4})(\d{2})(\d{2}T)(\d{2})(\d{2})(\d{2}.*$)/,function(a,b,c,d,e,f,g){return b+"-"+c+"-"+d+e+":"+f+":"+g.substr(0,2)+"Z"})),f.schedulerEnd=f.endOptions[2],a?(l=new Date(s),o=e("schZeroPad")(l.getMonth()+1,2),p=e("schZeroPad")(l.getDate(),2),f.schedulerEndDt=o+"/"+p+"/"+l.getFullYear()):f.schedulerEndDt=s.replace(/T.*$/,"").replace(/(\d{4})-(\d{2})-(\d{2})/,function(a,b,c,d){return c+"/"+d+"/"+b})),"BYMONTH"===r&&("YEARLY"===g(d,"FREQ")&&g(d,"BYDAY")?(f.yearlRepeatOption="other",f.yearlyOtherMonth=b.find(f.months,function(a){return a.value===parseInt(s,10)}),f.yearlyOtherMonth&&f.yearlyOtherMonth.name||(m="BYMONTH must be an integer between 1 and 12")):(f.yearlyOption="month",f.yearlyMonth=b.find(f.months,function(a){return a.value===parseInt(s,10)}),f.yearlyMonth&&f.yearlyMonth.name||(m="BYMONTH must be an integer between 1 and 12"))),"BYMONTHDAY"===r&&(parseInt(s,10)?f.yearlyMonthDay=parseInt(s,10):m="BYMONTHDAY must be an integer between 1 and 31")}function j(){"weekly"===f.schedulerFrequency.name&&0===f.weekDays.length&&(m="Frequency is weekly, but BYDAYS value is missing."),n||(m="Warning: start date was not provided")}var k,l,m="",n=!1;if(d)if(k=d.split(/;/),angular.isArray(k)){for(l=0;l + * + * + *
    + * + * + * + * + * + * + * + *
    {{heading}}
    {{fill}}
    + *
    + *
    + * + * var app = angular.module('multi-bootstrap', []) + * + * .controller('BrokenTable', function($scope) { + * $scope.headings = ['One', 'Two', 'Three']; + * $scope.fillings = [[1, 2, 3], ['A', 'B', 'C'], [7, 8, 9]]; + * }); + * + * + * it('should only insert one table cell for each item in $scope.fillings', function() { + * expect(element.all(by.css('td')).count()) + * .toBe(9); + * }); + * + * + * * @param {Element} element DOM element which is the root of angular application. * @param {Array=} modules an array of modules to load into the application. * Each item in the array should be the name of a predefined module or a (DI annotated) @@ -1531,10 +1572,10 @@ function setupModuleLoader(window) { * myModule.value('appName', 'MyCoolApp'); * * // configure existing services inside initialization blocks. - * myModule.config(function($locationProvider) { + * myModule.config(['$locationProvider', function($locationProvider) { * // Configure existing providers * $locationProvider.hashPrefix('!'); - * }); + * }]); * ``` * * Then you can create an injector and load your modules like this: @@ -1878,11 +1919,11 @@ function setupModuleLoader(window) { * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat". */ var version = { - full: '1.2.15-build.2398+sha.4bab3d8', // all of these placeholder strings will be replaced by grunt's + full: '1.2.15', // all of these placeholder strings will be replaced by grunt's major: 1, // package task minor: 2, dot: 15, - codeName: 'snapshot' + codeName: 'beer-underestimating' }; @@ -2370,11 +2411,15 @@ function jqLiteInheritedData(element, name, value) { var names = isArray(name) ? name : [name]; while (element.length) { - + var node = element[0]; for (var i = 0, ii = names.length; i < ii; i++) { if ((value = element.data(names[i])) !== undefined) return value; } - element = element.parent(); + + // If dealing with a document fragment node with a host element, and no parent, use the host + // element as the parent. This enables directives within a Shadow DOM or polyfilled Shadow DOM + // to lookup parent controllers. + element = jqLite(node.parentNode || (node.nodeType === 11 && node.host)); } } @@ -4733,15 +4778,11 @@ function $CacheFactoryProvider() { * `$templateCache` service directly. * * Adding via the `script` tag: + * * ```html - * - * - * - * - * ... - * + * * ``` * * **Note:** the `script` tag containing the template does not need to be included in the `head` of @@ -6902,6 +6943,22 @@ function $ControllerProvider() { * * @description * A {@link angular.element jQuery or jqLite} wrapper for the browser's `window.document` object. + * + * @example + + +
    +

    $document title:

    +

    window.document title:

    +
    +
    + + function MainCtrl($scope, $document) { + $scope.title = $document[0].title; + $scope.windowTitle = angular.element(window.document)[0].title; + } + +
    */ function $DocumentProvider(){ this.$get = ['$window', function(window){ @@ -7052,7 +7109,7 @@ function $HttpProvider() { // transform outgoing request data transformRequest: [function(d) { - return isObject(d) && !isFile(d) ? toJson(d) : d; + return isObject(d) && !isFile(d) && !isBlob(d) ? toJson(d) : d; }], // default headers @@ -7185,9 +7242,8 @@ function $HttpProvider() { * * # Shortcut methods * - * Since all invocations of the $http service require passing in an HTTP method and URL, and - * POST/PUT requests require request data to be provided as well, shortcut methods - * were created: + * Shortcut methods are also available. All shortcut methods require passing in the URL, and + * request data must be passed in for POST/PUT requests. * * ```js * $http.get('/someUrl').success(successCallback); @@ -8128,9 +8184,11 @@ function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDoc jsonpDone = xhr = null; // fix status code when it is 0 (0 status is undocumented). - // Occurs when accessing file resources. - // On Android 4.1 stock browser it occurs while retrieving files from application cache. - status = (status === 0) ? (response ? 200 : 404) : status; + // Occurs when accessing file resources or on Android 4.1 stock browser + // while retrieving files from application cache. + if (status === 0) { + status = response ? 200 : urlResolve(url).protocol == 'file' ? 404 : 0; + } // normalize IE bug (http://bugs.jquery.com/ticket/1450) status = status == 1223 ? 204 : status; @@ -10900,7 +10958,7 @@ function $ParseProvider() { * * Because `finally` is a reserved word in JavaScript and reserved keywords are not supported as * property names by ES3, you'll need to invoke the method like `promise['finally'](callback)` to - * make your code IE8 compatible. + * make your code IE8 and Android 2.x compatible. * * # Chaining promises * @@ -11313,21 +11371,32 @@ function qFactory(nextTick, exceptionHandler) { } function $$RAFProvider(){ //rAF - this.$get = ['$window', function($window) { + this.$get = ['$window', '$timeout', function($window, $timeout) { var requestAnimationFrame = $window.requestAnimationFrame || - $window.webkitRequestAnimationFrame; + $window.webkitRequestAnimationFrame || + $window.mozRequestAnimationFrame; var cancelAnimationFrame = $window.cancelAnimationFrame || - $window.webkitCancelAnimationFrame; + $window.webkitCancelAnimationFrame || + $window.mozCancelAnimationFrame || + $window.webkitCancelRequestAnimationFrame; - var raf = function(fn) { - var id = requestAnimationFrame(fn); - return function() { - cancelAnimationFrame(id); - }; - }; + var rafSupported = !!requestAnimationFrame; + var raf = rafSupported + ? function(fn) { + var id = requestAnimationFrame(fn); + return function() { + cancelAnimationFrame(id); + }; + } + : function(fn) { + var timer = $timeout(fn, 16.66, false); // 1000 / 60 = 16.666 + return function() { + $timeout.cancel(timer); + }; + }; - raf.supported = !!requestAnimationFrame; + raf.supported = rafSupported; return raf; }]; @@ -11731,30 +11800,40 @@ function $RootScopeProvider(){ * {@link ng.$rootScope.Scope#$digest $digest} cycle. Any shallow change within the * collection will trigger a call to the `listener`. * - * @param {function(newCollection, oldCollection, scope)} listener a callback function that is - * fired with both the `newCollection` and `oldCollection` as parameters. - * The `newCollection` object is the newly modified data obtained from the `obj` expression - * and the `oldCollection` object is a copy of the former collection data. - * The `scope` refers to the current scope. + * @param {function(newCollection, oldCollection, scope)} listener a callback function called + * when a change is detected. + * - The `newCollection` object is the newly modified data obtained from the `obj` expression + * - The `oldCollection` object is a copy of the former collection data. + * Due to performance considerations, the`oldCollection` value is computed only if the + * `listener` function declares two or more arguments. + * - The `scope` argument refers to the current scope. * * @returns {function()} Returns a de-registration function for this listener. When the * de-registration function is executed, the internal watch operation is terminated. */ $watchCollection: function(obj, listener) { var self = this; - var oldValue; + // the current value, updated on each dirty-check run var newValue; + // a shallow copy of the newValue from the last dirty-check run, + // updated to match newValue during dirty-check run + var oldValue; + // a shallow copy of the newValue from when the last change happened + var veryOldValue; + // only track veryOldValue if the listener is asking for it + var trackVeryOldValue = (listener.length > 1); var changeDetected = 0; var objGetter = $parse(obj); var internalArray = []; var internalObject = {}; + var initRun = true; var oldLength = 0; function $watchCollectionWatch() { newValue = objGetter(self); var newLength, key; - if (!isObject(newValue)) { + if (!isObject(newValue)) { // if primitive if (oldValue !== newValue) { oldValue = newValue; changeDetected++; @@ -11776,7 +11855,9 @@ function $RootScopeProvider(){ } // copy the items to oldValue and look for changes. for (var i = 0; i < newLength; i++) { - if (oldValue[i] !== newValue[i]) { + var bothNaN = (oldValue[i] !== oldValue[i]) && + (newValue[i] !== newValue[i]); + if (!bothNaN && (oldValue[i] !== newValue[i])) { changeDetected++; oldValue[i] = newValue[i]; } @@ -11820,7 +11901,32 @@ function $RootScopeProvider(){ } function $watchCollectionAction() { - listener(newValue, oldValue, self); + if (initRun) { + initRun = false; + listener(newValue, newValue, self); + } else { + listener(newValue, veryOldValue, self); + } + + // make a copy for the next time a collection is changed + if (trackVeryOldValue) { + if (!isObject(newValue)) { + //primitive + veryOldValue = newValue; + } else if (isArrayLike(newValue)) { + veryOldValue = new Array(newValue.length); + for (var i = 0; i < newValue.length; i++) { + veryOldValue[i] = newValue[i]; + } + } else { // if object + veryOldValue = {}; + for (var key in newValue) { + if (hasOwnProperty.call(newValue, key)) { + veryOldValue[key] = newValue[key]; + } + } + } + } } return this.$watch($watchCollectionWatch, $watchCollectionAction); @@ -14443,32 +14549,6 @@ function timeZoneGetter(date) { return paddedZone; } -function getFirstThursdayOfYear(year) { - // 0 = index of January - var dayOfWeekOnFirst = (new Date(year, 0, 1)).getDay(); - // 4 = index of Thursday (+1 to account for 1st = 5) - // 11 = index of *next* Thursday (+1 account for 1st = 12) - return new Date(year, 0, ((dayOfWeekOnFirst <= 4) ? 5 : 12) - dayOfWeekOnFirst); -} - -function getThursdayThisWeek(datetime) { - return new Date(datetime.getFullYear(), datetime.getMonth(), - // 4 = index of Thursday - datetime.getDate() + (4 - datetime.getDay())); -} - -function weekGetter(size) { - return function(date) { - var firstThurs = getFirstThursdayOfYear(date.getFullYear()), - thisThurs = getThursdayThisWeek(date); - - var diff = +thisThurs - +firstThurs, - result = 1 + Math.round(diff / 6.048e8); // 6.048e8 ms per week - - return padNumber(result, size); - }; -} - function ampmGetter(date, formats) { return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1]; } @@ -14497,12 +14577,10 @@ var DATE_FORMATS = { EEEE: dateStrGetter('Day'), EEE: dateStrGetter('Day', true), a: ampmGetter, - Z: timeZoneGetter, - ww: weekGetter(2), - w: weekGetter(1) + Z: timeZoneGetter }; -var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|w+))(.*)/, +var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/, NUMBER_STRING = /^\-?\d+$/; /** @@ -14537,8 +14615,6 @@ var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d * * `'.sss' or ',sss'`: Millisecond in second, padded (000-999) * * `'a'`: am/pm marker * * `'Z'`: 4 digit (+sign) representation of the timezone offset (-1200-+1200) - * * `'ww'`: ISO-8601 week of year (00-53) - * * `'w'`: ISO-8601 week of year (0-53) * * `format` string can also be one of the following predefined * {@link guide/i18n localizable formats}: @@ -14903,6 +14979,12 @@ function orderByFilter($parse){ predicate = predicate.substring(1); } get = $parse(predicate); + if (get.constant) { + var key = get(); + return reverseComparator(function(a,b) { + return compare(a[key], b[key]); + }, descending); + } } return reverseComparator(function(a,b){ return compare(get(a),get(b)); @@ -15276,7 +15358,7 @@ var htmlAnchorDirective = valueFn({ * 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` atttribute. + * 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. * @@ -15755,8 +15837,6 @@ function FormController(element, attrs, $scope, $animate) { * - * @param {string=} name Name of the form. If specified, the form controller will be published into - * related scope, under this name. */ var formDirectiveFactory = function(isNgForm) { return ['$timeout', function($timeout) { @@ -15829,11 +15909,6 @@ var ngFormDirective = formDirectiveFactory(true); var URL_REGEXP = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/; var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-z0-9-]+(\.[a-z0-9-]+)*$/i; var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/; -var DATE_REGEXP = /^(\d{4})-(\d{2})-(\d{2})$/; -var DATETIMELOCAL_REGEXP = /^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)$/; -var WEEK_REGEXP = /^(\d{4})-W(\d\d)$/; -var MONTH_REGEXP = /^(\d{4})-(\d\d)$/; -var TIME_REGEXP = /^(\d\d):(\d\d)$/; var inputType = { @@ -15914,425 +15989,6 @@ var inputType = { */ 'text': textInputType, - /** - * @ngdoc input - * @name input[date] - * - * @description - * Input with date validation and transformation. In browsers that do not yet support - * the HTML5 date input, a text element will be used. In that case, text must be entered in a valid ISO-8601 - * date format (yyyy-MM-dd), for example: `2009-01-06`. The model must always be a Date object. - * - * @param {string} ngModel Assignable angular expression to data-bind to. - * @param {string=} name Property name of the form under which the control is published. - * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a - * valid ISO date string (yyyy-MM-dd). - * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be - * a valid ISO date string (yyyy-MM-dd). - * @param {string=} required Sets `required` validation error key if the value is not entered. - * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to - * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of - * `required` when you want to data-bind to the `required` attribute. - * @param {string=} ngChange Angular expression to be executed when input changes due to user - * interaction with the input element. - * - * @example - - - -
    - Pick a date between in 2013: - - - Required! - - Not a valid date! - value = {{value | date: "yyyy-MM-dd"}}
    - myForm.input.$valid = {{myForm.input.$valid}}
    - myForm.input.$error = {{myForm.input.$error}}
    - myForm.$valid = {{myForm.$valid}}
    - myForm.$error.required = {{!!myForm.$error.required}}
    -
    -
    - - var value = element(by.binding('value | date: "yyyy-MM-dd"')); - var valid = element(by.binding('myForm.input.$valid')); - var input = element(by.model('value')); - - // currently protractor/webdriver does not support - // sending keys to all known HTML5 input controls - // for various browsers (see https://github.com/angular/protractor/issues/562). - function setInput(val) { - // set the value of the element and force validation. - var scr = "var ipt = document.getElementById('exampleInput'); " + - "ipt.value = '" + val + "';" + - "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });"; - browser.executeScript(scr); - } - - it('should initialize to model', function() { - expect(value.getText()).toContain('2013-10-22'); - expect(valid.getText()).toContain('myForm.input.$valid = true'); - }); - - it('should be invalid if empty', function() { - setInput(''); - expect(value.getText()).toEqual('value ='); - expect(valid.getText()).toContain('myForm.input.$valid = false'); - }); - - it('should be invalid if over max', function() { - setInput('2015-01-01'); - expect(value.getText()).toContain(''); - expect(valid.getText()).toContain('myForm.input.$valid = false'); - }); - -
    f - */ - 'date': createDateInputType('date', DATE_REGEXP, - createDateParser(DATE_REGEXP, ['yyyy', 'MM', 'dd']), - 'yyyy-MM-dd'), - - /** - * @ngdoc input - * @name input[dateTimeLocal] - * - * @description - * Input with datetime validation and transformation. In browsers that do not yet support - * the HTML5 date input, a text element will be used. In that case, the text must be entered in a valid ISO-8601 - * local datetime format (yyyy-MM-ddTHH:mm), for example: `2010-12-28T14:57`. The model must be a Date object. - * - * @param {string} ngModel Assignable angular expression to data-bind to. - * @param {string=} name Property name of the form under which the control is published. - * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a - * valid ISO datetime format (yyyy-MM-ddTHH:mm). - * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be - * a valid ISO datetime format (yyyy-MM-ddTHH:mm). - * @param {string=} required Sets `required` validation error key if the value is not entered. - * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to - * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of - * `required` when you want to data-bind to the `required` attribute. - * @param {string=} ngChange Angular expression to be executed when input changes due to user - * interaction with the input element. - * - * @example - - - -
    - Pick a date between in 2013: - - - Required! - - Not a valid date! - value = {{value | date: "yyyy-MM-ddTHH:mm"}}
    - myForm.input.$valid = {{myForm.input.$valid}}
    - myForm.input.$error = {{myForm.input.$error}}
    - myForm.$valid = {{myForm.$valid}}
    - myForm.$error.required = {{!!myForm.$error.required}}
    -
    -
    - - var value = element(by.binding('value | date: "yyyy-MM-ddTHH:mm"')); - var valid = element(by.binding('myForm.input.$valid')); - var input = element(by.model('value')); - - // currently protractor/webdriver does not support - // sending keys to all known HTML5 input controls - // for various browsers (https://github.com/angular/protractor/issues/562). - function setInput(val) { - // set the value of the element and force validation. - var scr = "var ipt = document.getElementById('exampleInput'); " + - "ipt.value = '" + val + "';" + - "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });"; - browser.executeScript(scr); - } - - it('should initialize to model', function() { - expect(value.getText()).toContain('2010-12-28T14:57'); - expect(valid.getText()).toContain('myForm.input.$valid = true'); - }); - - it('should be invalid if empty', function() { - setInput(''); - expect(value.getText()).toEqual('value ='); - expect(valid.getText()).toContain('myForm.input.$valid = false'); - }); - - it('should be invalid if over max', function() { - setInput('2015-01-01T23:59'); - expect(value.getText()).toContain(''); - expect(valid.getText()).toContain('myForm.input.$valid = false'); - }); - -
    - */ - 'datetime-local': createDateInputType('datetimelocal', DATETIMELOCAL_REGEXP, - createDateParser(DATETIMELOCAL_REGEXP, ['yyyy', 'MM', 'dd', 'HH', 'mm']), - 'yyyy-MM-ddTHH:mm'), - - /** - * @ngdoc input - * @name input[time] - * - * @description - * Input with time validation and transformation. In browsers that do not yet support - * the HTML5 date input, a text element will be used. In that case, the text must be entered in a valid ISO-8601 - * local time format (HH:mm), for example: `14:57`. Model must be a Date object. This binding will always output a - * Date object to the model of January 1, 1900, or local date `new Date(0, 0, 1, HH, mm)`. - * - * @param {string} ngModel Assignable angular expression to data-bind to. - * @param {string=} name Property name of the form under which the control is published. - * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a - * valid ISO time format (HH:mm). - * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be a - * valid ISO time format (HH:mm). - * @param {string=} required Sets `required` validation error key if the value is not entered. - * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to - * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of - * `required` when you want to data-bind to the `required` attribute. - * @param {string=} ngChange Angular expression to be executed when input changes due to user - * interaction with the input element. - * - * @example - - - -
    - Pick a between 8am and 5pm: - - - Required! - - Not a valid date! - value = {{value | date: "HH:mm"}}
    - myForm.input.$valid = {{myForm.input.$valid}}
    - myForm.input.$error = {{myForm.input.$error}}
    - myForm.$valid = {{myForm.$valid}}
    - myForm.$error.required = {{!!myForm.$error.required}}
    -
    -
    - - var value = element(by.binding('value | date: "HH:mm"')); - var valid = element(by.binding('myForm.input.$valid')); - var input = element(by.model('value')); - - // currently protractor/webdriver does not support - // sending keys to all known HTML5 input controls - // for various browsers (https://github.com/angular/protractor/issues/562). - function setInput(val) { - // set the value of the element and force validation. - var scr = "var ipt = document.getElementById('exampleInput'); " + - "ipt.value = '" + val + "';" + - "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });"; - browser.executeScript(scr); - } - - it('should initialize to model', function() { - expect(value.getText()).toContain('14:57'); - expect(valid.getText()).toContain('myForm.input.$valid = true'); - }); - - it('should be invalid if empty', function() { - setInput(''); - expect(value.getText()).toEqual('value ='); - expect(valid.getText()).toContain('myForm.input.$valid = false'); - }); - - it('should be invalid if over max', function() { - setInput('23:59'); - expect(value.getText()).toContain(''); - expect(valid.getText()).toContain('myForm.input.$valid = false'); - }); - -
    - */ - 'time': createDateInputType('time', TIME_REGEXP, - createDateParser(TIME_REGEXP, ['HH', 'mm']), - 'HH:mm'), - - /** - * @ngdoc input - * @name input[week] - * - * @description - * Input with week-of-the-year validation and transformation to Date. In browsers that do not yet support - * the HTML5 week input, a text element will be used. In that case, the text must be entered in a valid ISO-8601 - * week format (yyyy-W##), for example: `2013-W02`. The model must always be a Date object. - * - * @param {string} ngModel Assignable angular expression to data-bind to. - * @param {string=} name Property name of the form under which the control is published. - * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a - * valid ISO week format (yyyy-W##). - * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be - * a valid ISO week format (yyyy-W##). - * @param {string=} required Sets `required` validation error key if the value is not entered. - * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to - * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of - * `required` when you want to data-bind to the `required` attribute. - * @param {string=} ngChange Angular expression to be executed when input changes due to user - * interaction with the input element. - * - * @example - - - -
    - Pick a date between in 2013: - - - Required! - - Not a valid date! - value = {{value | date: "yyyy-Www"}}
    - myForm.input.$valid = {{myForm.input.$valid}}
    - myForm.input.$error = {{myForm.input.$error}}
    - myForm.$valid = {{myForm.$valid}}
    - myForm.$error.required = {{!!myForm.$error.required}}
    -
    -
    - - var value = element(by.binding('value | date: "yyyy-Www"')); - var valid = element(by.binding('myForm.input.$valid')); - var input = element(by.model('value')); - - // currently protractor/webdriver does not support - // sending keys to all known HTML5 input controls - // for various browsers (https://github.com/angular/protractor/issues/562). - function setInput(val) { - // set the value of the element and force validation. - var scr = "var ipt = document.getElementById('exampleInput'); " + - "ipt.value = '" + val + "';" + - "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });"; - browser.executeScript(scr); - } - - it('should initialize to model', function() { - expect(value.getText()).toContain('2013-W01'); - expect(valid.getText()).toContain('myForm.input.$valid = true'); - }); - - it('should be invalid if empty', function() { - setInput(''); - expect(value.getText()).toEqual('value ='); - expect(valid.getText()).toContain('myForm.input.$valid = false'); - }); - - it('should be invalid if over max', function() { - setInput('2015-W01'); - expect(value.getText()).toContain(''); - expect(valid.getText()).toContain('myForm.input.$valid = false'); - }); - -
    - */ - 'week': createDateInputType('week', WEEK_REGEXP, weekParser, 'yyyy-Www'), - - /** - * @ngdoc input - * @name input[month] - * - * @description - * Input with month validation and transformation. In browsers that do not yet support - * the HTML5 month input, a text element will be used. In that case, the text must be entered in a valid ISO-8601 - * month format (yyyy-MM), for example: `2009-01`. The model must always be a Date object. In the event the model is - * not set to the first of the month, the first of that model's month is assumed. - * - * @param {string} ngModel Assignable angular expression to data-bind to. - * @param {string=} name Property name of the form under which the control is published. - * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be - * a valid ISO month format (yyyy-MM). - * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must - * be a valid ISO month format (yyyy-MM). - * @param {string=} required Sets `required` validation error key if the value is not entered. - * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to - * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of - * `required` when you want to data-bind to the `required` attribute. - * @param {string=} ngChange Angular expression to be executed when input changes due to user - * interaction with the input element. - * - * @example - - - -
    - Pick a month int 2013: - - - Required! - - Not a valid month! - value = {{value | date: "yyyy-MM"}}
    - myForm.input.$valid = {{myForm.input.$valid}}
    - myForm.input.$error = {{myForm.input.$error}}
    - myForm.$valid = {{myForm.$valid}}
    - myForm.$error.required = {{!!myForm.$error.required}}
    -
    -
    - - var value = element(by.binding('value | date: "yyyy-MM"')); - var valid = element(by.binding('myForm.input.$valid')); - var input = element(by.model('value')); - - // currently protractor/webdriver does not support - // sending keys to all known HTML5 input controls - // for various browsers (https://github.com/angular/protractor/issues/562). - function setInput(val) { - // set the value of the element and force validation. - var scr = "var ipt = document.getElementById('exampleInput'); " + - "ipt.value = '" + val + "';" + - "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });"; - browser.executeScript(scr); - } - - it('should initialize to model', function() { - expect(value.getText()).toContain('2013-10'); - expect(valid.getText()).toContain('myForm.input.$valid = true'); - }); - - it('should be invalid if empty', function() { - setInput(''); - expect(value.getText()).toEqual('value ='); - expect(valid.getText()).toContain('myForm.input.$valid = false'); - }); - - it('should be invalid if over max', function() { - setInput('2015-01'); - expect(value.getText()).toContain(''); - expect(valid.getText()).toContain('myForm.input.$valid = false'); - }); - -
    - */ - 'month': createDateInputType('month', MONTH_REGEXP, - createDateParser(MONTH_REGEXP, ['yyyy', 'MM']), - 'yyyy-MM'), /** * @ngdoc input @@ -16835,108 +16491,6 @@ function textInputType(scope, element, attr, ctrl, $sniffer, $browser) { } } -function weekParser(isoWeek) { - if(isDate(isoWeek)) { - return isoWeek; - } - - if(isString(isoWeek)) { - WEEK_REGEXP.lastIndex = 0; - var parts = WEEK_REGEXP.exec(isoWeek); - if(parts) { - var year = +parts[1], - week = +parts[2], - firstThurs = getFirstThursdayOfYear(year), - addDays = (week - 1) * 7; - return new Date(year, 0, firstThurs.getDate() + addDays); - } - } - - return NaN; -} - -function createDateParser(regexp, mapping) { - return function(iso) { - var parts, map; - - if(isDate(iso)) { - return iso; - } - - if(isString(iso)) { - regexp.lastIndex = 0; - parts = regexp.exec(iso); - - if(parts) { - parts.shift(); - map = { yyyy: 0, MM: 1, dd: 1, HH: 0, mm: 0 }; - - forEach(parts, function(part, index) { - if(index < mapping.length) { - map[mapping[index]] = +part; - } - }); - - return new Date(map.yyyy, map.MM - 1, map.dd, map.HH, map.mm); - } - } - - return NaN; - }; -} - -function createDateInputType(type, regexp, parseDate, format) { - return function dynamicDateInputType(scope, element, attr, ctrl, $sniffer, $browser, $filter) { - textInputType(scope, element, attr, ctrl, $sniffer, $browser); - - ctrl.$parsers.push(function(value) { - if(ctrl.$isEmpty(value)) { - ctrl.$setValidity(type, true); - return null; - } - - if(regexp.test(value)) { - ctrl.$setValidity(type, true); - return parseDate(value); - } - - ctrl.$setValidity(type, false); - return undefined; - }); - - ctrl.$formatters.push(function(value) { - if(isDate(value)) { - return $filter('date')(value, format); - } - return ''; - }); - - if(attr.min) { - var minValidator = function(value) { - var valid = ctrl.$isEmpty(value) || - (parseDate(value) >= parseDate(attr.min)); - ctrl.$setValidity('min', valid); - return valid ? value : undefined; - }; - - ctrl.$parsers.push(minValidator); - ctrl.$formatters.push(minValidator); - } - - if(attr.max) { - var maxValidator = function(value) { - var valid = ctrl.$isEmpty(value) || - (parseDate(value) <= parseDate(attr.max)); - ctrl.$setValidity('max', valid); - return valid ? value : undefined; - }; - - ctrl.$parsers.push(maxValidator); - ctrl.$formatters.push(maxValidator); - } - }; -} - function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) { textInputType(scope, element, attr, ctrl, $sniffer, $browser); @@ -17196,14 +16750,14 @@ function checkboxInputType(scope, element, attr, ctrl) { */ -var inputDirective = ['$browser', '$sniffer', '$filter', function($browser, $sniffer, $filter) { +var inputDirective = ['$browser', '$sniffer', function($browser, $sniffer) { return { restrict: 'E', require: '?ngModel', link: function(scope, element, attr, ctrl) { if (ctrl) { (inputType[lowercase(attr.type)] || inputType.text)(scope, element, attr, ctrl, $sniffer, - $browser, $filter); + $browser); } } }; @@ -17591,11 +17145,6 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$ * - {@link input[number] number} * - {@link input[email] email} * - {@link input[url] url} - * - {@link input[date] date} - * - {@link input[dateTimeLocal] dateTimeLocal} - * - {@link input[time] time} - * - {@link input[month] month} - * - {@link input[week] week} * - {@link ng.directive:select select} * - {@link ng.directive:textarea textarea} * @@ -19327,7 +18876,7 @@ var ngIfDirective = ['$animate', function($animate) { * @priority 400 * * @param {string} ngInclude|src angular expression evaluating to URL. If the source is a string constant, - * make sure you wrap it in quotes, e.g. `src="'myPartialTemplate.html'"`. + * make sure you wrap it in **single** quotes, e.g. `src="'myPartialTemplate.html'"`. * @param {string=} onload Expression to evaluate when a new partial is loaded. * * @param {string=} autoscroll Whether `ngInclude` should call {@link ng.$anchorScroll @@ -19936,9 +19485,11 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp * 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 - * 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 + * **.enter** - when a new item is added to the list or when an item is revealed after a filter + * + * **.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 * * @element ANY * @scope @@ -21349,6 +20900,12 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) { value = valueFn(scope, locals); } } + // Update the null option's selected property here so $render cleans it up correctly + if (optionGroupsCache[0].length > 1) { + if (optionGroupsCache[0][1].id !== key) { + optionGroupsCache[0][1].selected = false; + } + } } ctrl.$setViewValue(value); }); @@ -21486,7 +21043,7 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) { lastElement.val(existingOption.id = option.id); } // lastElement.prop('selected') provided by jQuery has side-effects - if (lastElement[0].selected !== option.selected) { + if (existingOption.selected !== option.selected) { lastElement.prop('selected', (existingOption.selected = option.selected)); } } else { @@ -21587,9 +21144,15 @@ var optionDirective = ['$interpolate', function($interpolate) { var styleDirective = valueFn({ restrict: 'E', - terminal: false + terminal: true }); + if (window.angular.bootstrap) { + //AngularJS is already loaded, so we can return here... + console.log('WARNING: Tried to load angular more than once.'); + return; + } + //try to bind to jquery now so that one can write angular.element().read() //but we will rebind on bootstrap again. bindJQuery(); diff --git a/awx/ui/static/lib/angular/angular.min.js b/awx/ui/static/lib/angular/angular.min.js index d383a47b98..1e819cb35a 100644 --- a/awx/ui/static/lib/angular/angular.min.js +++ b/awx/ui/static/lib/angular/angular.min.js @@ -1,209 +1,207 @@ /* - AngularJS v1.2.15-build.2398+sha.4bab3d8 + AngularJS v1.2.15 (c) 2010-2014 Google, Inc. http://angularjs.org License: MIT */ -(function(D,U,s){'use strict';function F(b){return function(){var a=arguments[0],c,a="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.2.15-build.2398+sha.4bab3d8/"+(b?b+"/":"")+a;for(c=1;c").append(b).html();try{return 3===b[0].nodeType?P(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/, -function(a,b){return"<"+P(b)})}catch(d){return P(c)}}function Zb(b){try{return decodeURIComponent(b)}catch(a){}}function $b(b){var a={},c,d;r((b||"").split("&"),function(b){b&&(c=b.split("="),d=Zb(c[0]),v(d)&&(b=v(c[1])?Zb(c[1]):!0,a[d]?I(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function ac(b){var a=[];r(b,function(b,d){I(b)?r(b,function(b){a.push(va(d,!0)+(!0===b?"":"="+va(b,!0)))}):a.push(va(d,!0)+(!0===b?"":"="+va(b,!0)))});return a.length?a.join("&"):""}function zb(b){return va(b, -!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function va(b,a){return encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,a?"%20":"+")}function cd(b,a){function c(a){a&&d.push(a)}var d=[b],e,f,h=["ng:app","ng-app","x-ng-app","data-ng-app"],g=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;r(h,function(a){h[a]=!0;c(U.getElementById(a));a=a.replace(":","\\:");b.querySelectorAll&&(r(b.querySelectorAll("."+a),c),r(b.querySelectorAll("."+ -a+"\\:"),c),r(b.querySelectorAll("["+a+"]"),c))});r(d,function(a){if(!e){var b=g.exec(" "+a.className+" ");b?(e=a,f=(b[2]||"").replace(/\s+/g,",")):r(a.attributes,function(b){!e&&h[b.name]&&(e=a,f=b.value)})}});e&&a(e,f?[f]:[])}function bc(b,a){var c=function(){b=z(b);if(b.injector()){var c=b[0]===U?"document":fa(b);throw Na("btstrpd",c);}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);a.unshift("ng");c=cc(a);c.invoke(["$rootScope","$rootElement","$compile","$injector","$animate", -function(a,b,c,d,e){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},d=/^NG_DEFER_BOOTSTRAP!/;if(D&&!d.test(D.name))return c();D.name=D.name.replace(d,"");Ca.resumeBootstrap=function(b){r(b,function(b){a.push(b)});c()}}function eb(b,a){a=a||"_";return b.replace(dd,function(b,d){return(d?a:"")+b.toLowerCase()})}function Ab(b,a,c){if(!b)throw Na("areq",a||"?",c||"required");return b}function Pa(b,a,c){c&&I(b)&&(b=b[b.length-1]);Ab(O(b),a,"not a function, got "+(b&&"object"==typeof b? -b.constructor.name||"Object":typeof b));return b}function wa(b,a){if("hasOwnProperty"===b)throw Na("badname",a);}function dc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,h=0;h 
    "+b;a.removeChild(a.firstChild);Eb(this,a.childNodes);z(U.createDocumentFragment()).append(this)}else Eb(this, -b)}function Fb(b){return b.cloneNode(!0)}function Ea(b){ec(b);var a=0;for(b=b.childNodes||[];a=Q?(c.preventDefault=null,c.stopPropagation=null,c.isDefaultPrevented=null):(delete c.preventDefault,delete c.stopPropagation,delete c.isDefaultPrevented)};c.elem=b;return c}function Fa(b){var a=typeof b,c;"object"==a&&null!==b?"function"==typeof(c=b.$$hashKey)?c=b.$$hashKey():c=== -s&&(c=b.$$hashKey=ab()):c=b;return a+":"+c}function Sa(b){r(b,this.put,this)}function lc(b){var a,c;"function"==typeof b?(a=b.$inject)||(a=[],b.length&&(c=b.toString().replace(jd,""),c=c.match(kd),r(c[1].split(ld),function(b){b.replace(md,function(b,c,d){a.push(d)})})),b.$inject=a):I(b)?(c=b.length-1,Pa(b[c],"fn"),a=b.slice(0,c)):Pa(b,"fn",!0);return a}function cc(b){function a(a){return function(b,c){if(X(b))r(b,Tb(a));else return a(b,c)}}function c(a,b){wa(a,"service");if(O(b)||I(b))b=n.instantiate(b); -if(!b.$get)throw Ta("pget",a);return l[a+g]=b}function d(a,b){return c(a,{$get:b})}function e(a){var b=[],c,d,f,g;r(a,function(a){if(!k.get(a)){k.put(a,!0);try{if(y(a))for(c=Ua(a),b=b.concat(e(c.requires)).concat(c._runBlocks),d=c._invokeQueue,f=0,g=d.length;f 4096 bytes)!"));else{if(m.cookie!==aa)for(aa=m.cookie,d=aa.split("; "),M={},f=0;fk&&this.remove(q.key),b},get:function(a){if(k]*)?>/i,g=/^(on[a-z]+|formaction)$/;this.directive=function k(a,e){wa(a,"directive"); -y(a)?(Ab(e,"directiveFactory"),c.hasOwnProperty(a)||(c[a]=[],b.factory(a+d,["$injector","$exceptionHandler",function(b,d){var e=[];r(c[a],function(c,f){try{var g=b.invoke(c);O(g)?g={compile:$(g)}:!g.compile&&g.link&&(g.compile=$(g.link));g.priority=g.priority||0;g.index=f;g.name=g.name||a;g.require=g.require||g.controller&&g.name;g.restrict=g.restrict||"A";e.push(g)}catch(h){d(h)}});return e}])),c[a].push(e)):r(a,Tb(k));return this};this.aHrefSanitizationWhitelist=function(b){return v(b)?(a.aHrefSanitizationWhitelist(b), -this):a.aHrefSanitizationWhitelist()};this.imgSrcSanitizationWhitelist=function(b){return v(b)?(a.imgSrcSanitizationWhitelist(b),this):a.imgSrcSanitizationWhitelist()};this.$get=["$injector","$interpolate","$exceptionHandler","$http","$templateCache","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(a,b,n,q,p,A,E,B,u,H,J,w){function Y(a,b,c,d,e){a instanceof z||(a=z(a));r(a,function(b,c){3==b.nodeType&&b.nodeValue.match(/\S+/)&&(a[c]=z(b).wrap("").parent()[0])}); -var f=M(a,b,a,c,d,e);T(a,"ng-scope");return function(b,c,d){Ab(b,"scope");var e=c?Ga.clone.call(a):a;r(d,function(a,b){e.data("$"+b+"Controller",a)});d=0;for(var g=e.length;darguments.length&&(b=a,a=s);Ia&&(c=v);return p(a,b,c)}var L,w,u,Y,N,V,v={},mb;L=c===f?d:Wb(d,new Ib(z(f),d.$attr));w=L.$$element;if(M){var t=/^\s*([@=&])(\??)\s*(\w*)\s*$/;g=z(f);V=e.$new(!0);aa&&aa===M.$$originalDirective?g.data("$isolateScope",V):g.data("$isolateScopeNoTemplate",V);T(g,"ng-isolate-scope");r(M.scope,function(a,c){var d= -a.match(t)||[],f=d[3]||c,g="?"==d[2],d=d[1],h,k,p,n;V.$$isolateBindings[c]=d+f;switch(d){case "@":L.$observe(f,function(a){V[c]=a});L.$$observers[f].$$scope=e;L[f]&&(V[c]=b(L[f])(e));break;case "=":if(g&&!L[f])break;k=A(L[f]);n=k.literal?ta:function(a,b){return a===b};p=k.assign||function(){h=V[c]=k(e);throw ha("nonassign",L[f],M.name);};h=V[c]=k(e);V.$watch(function(){var a=k(e);n(a,V[c])||(n(a,h)?p(e,a=V[c]):V[c]=a);return h=a},null,k.literal);break;case "&":k=A(L[f]);V[c]=function(a){return k(e, -a)};break;default:throw ha("iscp",M.name,c,a);}})}mb=p&&q;J&&r(J,function(a){var b={$scope:a===M||a.$$isolateScope?V:e,$element:w,$attrs:L,$transclude:mb},c;N=a.controller;"@"==N&&(N=L[a.name]);c=E(N,b);v[a.name]=c;Ia||w.data("$"+a.name+"Controller",c);a.controllerAs&&(b.$scope[a.controllerAs]=c)});g=0;for(u=h.length;gG.priority)break;if(t=G.scope)u=u||G,G.templateUrl||(S("new/isolated scope",M,G,K),X(t)&&(M=G));ga= -G.name;!G.templateUrl&&G.controller&&(t=G.controller,J=J||{},S("'"+ga+"' controller",J[ga],G,K),J[ga]=G);if(t=G.transclude)Va=!0,G.$$tlb||(S("transclusion",v,G,K),v=G),"element"==t?(Ia=!0,w=G.priority,t=N(c,R,W),K=d.$$element=z(U.createComment(" "+ga+": "+d[ga]+" ")),c=K[0],nb(f,z(ua.call(t,0)),c),F=Y(t,e,w,g&&g.name,{nonTlbTranscludeDirective:v})):(t=z(Fb(c)).contents(),K.empty(),F=Y(t,e));if(G.template)if(S("template",aa,G,K),aa=G,t=O(G.template)?G.template(K,d):G.template,t=oc(t),G.replace){g= -G;t=C(t);c=t[0];if(1!=t.length||1!==c.nodeType)throw ha("tplrt",ga,"");nb(f,K,c);Q={$attr:{}};t=V(c,[],Q);var Z=a.splice(D+1,a.length-(D+1));M&&lb(t);a=a.concat(t).concat(Z);x(d,Q);Q=a.length}else K.html(t);if(G.templateUrl)S("template",aa,G,K),aa=G,G.replace&&(g=G),B=P(a.splice(D,a.length-D),K,d,f,F,h,k,{controllerDirectives:J,newIsolateScopeDirective:M,templateDirective:aa,nonTlbTranscludeDirective:v}),Q=a.length;else if(G.compile)try{pa=G.compile(K,d,F),O(pa)?q(null,pa,R,W):pa&&q(pa.pre,pa.post, -R,W)}catch($){n($,fa(K))}G.terminal&&(B.terminal=!0,w=Math.max(w,G.priority))}B.scope=u&&!0===u.scope;B.transclude=Va&&F;p.hasElementTranscludeDirective=Ia;return B}function lb(a){for(var b=0,c=a.length;bq.priority)&&-1!=q.restrict.indexOf(f)&&(l&&(q=Vb(q,{$$start:l,$$end:p})),b.push(q),h=q)}catch(H){n(H)}}return h} -function x(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;r(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});r(b,function(b,f){"class"==f?(T(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function C(a){var b;a=ca(a);if(b=h.exec(a)){b=b[1].toLowerCase();a=z(""+a+"
    ");if(/(thead|tbody|tfoot)/.test(b))return a.children(b); -a=a.children("tbody");return"tr"===b?a.children("tr"):a.children("tr").contents()}return z("
    "+a+"
    ").contents()}function P(a,b,c,d,e,f,g,h){var k=[],l,n,A=b[0],E=a.shift(),w=t({},E,{templateUrl:null,transclude:null,replace:null,$$originalDirective:E}),B=O(E.templateUrl)?E.templateUrl(b,c):E.templateUrl;b.empty();q.get(H.getTrustedResourceUrl(B),{cache:p}).success(function(p){var q,H;p=oc(p);if(E.replace){p=C(p);q=p[0];if(1!=p.length||1!==q.nodeType)throw ha("tplrt",E.name,B);p={$attr:{}}; -nb(d,b,q);var u=V(q,[],p);X(E.scope)&&lb(u);a=u.concat(a);x(c,p)}else q=A,b.html(p);a.unshift(w);l=Va(a,q,c,e,b,E,f,g,h);r(d,function(a,c){a==q&&(d[c]=b[0])});for(n=M(b[0].childNodes,e);k.length;){p=k.shift();H=k.shift();var J=k.shift(),Y=k.shift(),u=b[0];if(H!==A){var N=H.className;h.hasElementTranscludeDirective&&E.replace||(u=Fb(q));nb(J,z(H),u);T(z(u),N)}H=l.transclude?aa(p,l.transclude):Y;l(n,p,u,d,H)}k=null}).error(function(a,b,c,d){throw ha("tpload",d.url);});return function(a,b,c,d,e){k?(k.push(b), -k.push(c),k.push(d),k.push(e)):l(n,b,c,d,e)}}function F(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.namea.status?b:n.reject(b)}var d={method:"get",transformRequest:e.transformRequest, -transformResponse:e.transformResponse},f=function(a){function b(a){var c;r(a,function(b,d){O(b)&&(c=b(),null!=c?a[d]=c:delete a[d])})}var c=e.headers,d=t({},a.headers),f,g,c=t({},c.common,c[P(a.method)]);b(c);b(d);a:for(f in c){a=P(f);for(g in d)if(P(g)===a)continue a;d[f]=c[f]}return d}(a);t(d,a);d.headers=f;d.method=Ja(d.method);(a=Jb(d.url)?b.cookies()[d.xsrfCookieName||e.xsrfCookieName]:s)&&(f[d.xsrfHeaderName||e.xsrfHeaderName]=a);var g=[function(a){f=a.headers;var b=sc(a.data,rc(f),a.transformRequest); -C(a.data)&&r(f,function(a,b){"content-type"===P(b)&&delete f[b]});C(a.withCredentials)&&!C(e.withCredentials)&&(a.withCredentials=e.withCredentials);return A(a,b,f).then(c,c)},s],h=n.when(d);for(r(u,function(a){(a.request||a.requestError)&&g.unshift(a.request,a.requestError);(a.response||a.responseError)&&g.push(a.response,a.responseError)});g.length;){a=g.shift();var k=g.shift(),h=h.then(a,k)}h.success=function(a){h.then(function(b){a(b.data,b.status,b.headers,d)});return h};h.error=function(a){h.then(null, -function(b){a(b.data,b.status,b.headers,d)});return h};return h}function A(b,c,f){function h(a,b,c){u&&(200<=a&&300>a?u.put(s,[a,b,qc(c)]):u.remove(s));k(b,a,c);d.$$phase||d.$apply()}function k(a,c,d){c=Math.max(c,0);(200<=c&&300>c?q.resolve:q.reject)({data:a,status:c,headers:rc(d),config:b})}function m(){var a=cb(p.pendingRequests,b);-1!==a&&p.pendingRequests.splice(a,1)}var q=n.defer(),A=q.promise,u,r,s=E(b.url,b.params);p.pendingRequests.push(b);A.then(m,m);(b.cache||e.cache)&&(!1!==b.cache&&"GET"== -b.method)&&(u=X(b.cache)?b.cache:X(e.cache)?e.cache:B);if(u)if(r=u.get(s),v(r)){if(r.then)return r.then(m,m),r;I(r)?k(r[1],r[0],ba(r[2])):k(r,200,{})}else u.put(s,A);C(r)&&a(b.method,s,c,h,f,b.timeout,b.withCredentials,b.responseType);return A}function E(a,b){if(!b)return a;var c=[];Zc(b,function(a,b){null===a||C(a)||(I(a)||(a=[a]),r(a,function(a){X(a)&&(a=oa(a));c.push(va(b)+"="+va(a))}))});0=Q&&(!b.match(/^(get|post|head|put|delete|options)$/i)|| -!D.XMLHttpRequest))return new D.ActiveXObject("Microsoft.XMLHTTP");if(D.XMLHttpRequest)return new D.XMLHttpRequest;throw F("$httpBackend")("noxhr");}function zd(){this.$get=["$browser","$window","$document",function(b,a,c){return Ad(b,yd,b.defer,a.angular.callbacks,c[0])}]}function Ad(b,a,c,d,e){function f(a,b){var c=e.createElement("script"),d=function(){c.onreadystatechange=c.onload=c.onerror=null;e.body.removeChild(c);b&&b()};c.type="text/javascript";c.src=a;Q&&8>=Q?c.onreadystatechange=function(){/loaded|complete/.test(c.readyState)&& -d()}:c.onload=c.onerror=function(){d()};e.body.appendChild(c);return d}var h=-1;return function(e,m,k,l,n,q,p,A){function E(){u=h;J&&J();w&&w.abort()}function B(a,d,e,f){T&&c.cancel(T);J=w=null;d=0===d?e?200:404:d;a(1223==d?204:d,e,f);b.$$completeOutstandingRequest(x)}var u;b.$$incOutstandingRequestCount();m=m||b.url();if("jsonp"==P(e)){var H="_"+(d.counter++).toString(36);d[H]=function(a){d[H].data=a};var J=f(m.replace("JSON_CALLBACK","angular.callbacks."+H),function(){d[H].data?B(l,200,d[H].data): -B(l,u||-2);d[H]=Ca.noop})}else{var w=a(e);w.open(e,m,!0);r(n,function(a,b){v(a)&&w.setRequestHeader(b,a)});w.onreadystatechange=function(){if(w&&4==w.readyState){var a=null,b=null;u!==h&&(a=w.getAllResponseHeaders(),b="response"in w?w.response:w.responseText);B(l,u||w.status,b,a)}};p&&(w.withCredentials=!0);if(A)try{w.responseType=A}catch(s){if("json"!==A)throw s;}w.send(k||null)}if(0=g&&(n.resolve(p),l(q.$$intervalId),delete e[q.$$intervalId]);A||b.$apply()},h);e[q.$$intervalId]=n;return q}var e={};d.cancel=function(a){return a&&a.$$intervalId in e?(e[a.$$intervalId].reject("canceled"),clearInterval(a.$$intervalId),delete e[a.$$intervalId],!0):!1};return d}]}function Dd(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"", +(function(Q,T,s){'use strict';function z(b){return function(){var a=arguments[0],c,a="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.2.15/"+(b?b+"/":"")+a;for(c=1;c").append(b).html();try{return 3===b[0].nodeType?O(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/, +function(a,b){return"<"+O(b)})}catch(d){return O(c)}}function Vb(b){try{return decodeURIComponent(b)}catch(a){}}function Wb(b){var a={},c,d;r((b||"").split("&"),function(b){b&&(c=b.split("="),d=Vb(c[0]),u(d)&&(b=u(c[1])?Vb(c[1]):!0,a[d]?M(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Xb(b){var a=[];r(b,function(b,d){M(b)?r(b,function(b){a.push(wa(d,!0)+(!0===b?"":"="+wa(b,!0)))}):a.push(wa(d,!0)+(!0===b?"":"="+wa(b,!0)))});return a.length?a.join("&"):""}function vb(b){return wa(b, +!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function wa(b,a){return encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,a?"%20":"+")}function Uc(b,a){function c(a){a&&d.push(a)}var d=[b],e,f,g=["ng:app","ng-app","x-ng-app","data-ng-app"],h=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;r(g,function(a){g[a]=!0;c(T.getElementById(a));a=a.replace(":","\\:");b.querySelectorAll&&(r(b.querySelectorAll("."+a),c),r(b.querySelectorAll("."+ +a+"\\:"),c),r(b.querySelectorAll("["+a+"]"),c))});r(d,function(a){if(!e){var b=h.exec(" "+a.className+" ");b?(e=a,f=(b[2]||"").replace(/\s+/g,",")):r(a.attributes,function(b){!e&&g[b.name]&&(e=a,f=b.value)})}});e&&a(e,f?[f]:[])}function Yb(b,a){var c=function(){b=w(b);if(b.injector()){var c=b[0]===T?"document":fa(b);throw Oa("btstrpd",c);}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);a.unshift("ng");c=Zb(a);c.invoke(["$rootScope","$rootElement","$compile","$injector","$animate", +function(a,b,c,d,e){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},d=/^NG_DEFER_BOOTSTRAP!/;if(Q&&!d.test(Q.name))return c();Q.name=Q.name.replace(d,"");Ca.resumeBootstrap=function(b){r(b,function(b){a.push(b)});c()}}function eb(b,a){a=a||"_";return b.replace(Vc,function(b,d){return(d?a:"")+b.toLowerCase()})}function wb(b,a,c){if(!b)throw Oa("areq",a||"?",c||"required");return b}function Qa(b,a,c){c&&M(b)&&(b=b[b.length-1]);wb(D(b),a,"not a function, got "+(b&&"object"==typeof b? +b.constructor.name||"Object":typeof b));return b}function xa(b,a){if("hasOwnProperty"===b)throw Oa("badname",a);}function $b(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g 
    "+b;a.removeChild(a.firstChild);Bb(this,a.childNodes);w(T.createDocumentFragment()).append(this)}else Bb(this,b)}function Cb(b){return b.cloneNode(!0)}function Fa(b){fc(b);var a=0;for(b=b.childNodes||[];a=P?(c.preventDefault=null,c.stopPropagation=null,c.isDefaultPrevented=null):(delete c.preventDefault,delete c.stopPropagation,delete c.isDefaultPrevented)};c.elem=b;return c}function Ga(b){var a=typeof b,c;"object"==a&&null!==b?"function"==typeof(c=b.$$hashKey)?c=b.$$hashKey():c===s&&(c=b.$$hashKey=ab()):c=b;return a+":"+c}function Ua(b){r(b,this.put,this)}function mc(b){var a,c;"function"== +typeof b?(a=b.$inject)||(a=[],b.length&&(c=b.toString().replace(je,""),c=c.match(ke),r(c[1].split(le),function(b){b.replace(me,function(b,c,d){a.push(d)})})),b.$inject=a):M(b)?(c=b.length-1,Qa(b[c],"fn"),a=b.slice(0,c)):Qa(b,"fn",!0);return a}function Zb(b){function a(a){return function(b,c){if(W(b))r(b,Pb(a));else return a(b,c)}}function c(a,b){xa(a,"service");if(D(b)||M(b))b=n.instantiate(b);if(!b.$get)throw Va("pget",a);return l[a+h]=b}function d(a,b){return c(a,{$get:b})}function e(a){var b=[], +c,d,f,h;r(a,function(a){if(!k.get(a)){k.put(a,!0);try{if(x(a))for(c=Ra(a),b=b.concat(e(c.requires)).concat(c._runBlocks),d=c._invokeQueue,f=0,h=d.length;f 4096 bytes)!"));else{if(m.cookie!==Z)for(Z=m.cookie,d=Z.split("; "),N={},f=0;fk&&this.remove(q.key),b},get:function(a){if(k]*)?>/i,h=/^(on[a-z]+|formaction)$/;this.directive=function k(a,e){xa(a,"directive");x(a)?(wb(e,"directiveFactory"),c.hasOwnProperty(a)||(c[a]=[],b.factory(a+ +d,["$injector","$exceptionHandler",function(b,d){var e=[];r(c[a],function(c,f){try{var h=b.invoke(c);D(h)?h={compile:Y(h)}:!h.compile&&h.link&&(h.compile=Y(h.link));h.priority=h.priority||0;h.index=f;h.name=h.name||a;h.require=h.require||h.controller&&h.name;h.restrict=h.restrict||"A";e.push(h)}catch(g){d(g)}});return e}])),c[a].push(e)):r(a,Pb(k));return this};this.aHrefSanitizationWhitelist=function(b){return u(b)?(a.aHrefSanitizationWhitelist(b),this):a.aHrefSanitizationWhitelist()};this.imgSrcSanitizationWhitelist= +function(b){return u(b)?(a.imgSrcSanitizationWhitelist(b),this):a.imgSrcSanitizationWhitelist()};this.$get=["$injector","$interpolate","$exceptionHandler","$http","$templateCache","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(a,b,n,q,p,t,H,C,A,J,F,y){function ba(a,b,c,d,e){a instanceof w||(a=w(a));r(a,function(b,c){3==b.nodeType&&b.nodeValue.match(/\S+/)&&(a[c]=w(b).wrap("").parent()[0])});var f=N(a,b,a,c,d,e);S(a,"ng-scope");return function(b, +c,d){wb(b,"scope");var e=c?Ha.clone.call(a):a;r(d,function(a,b){e.data("$"+b+"Controller",a)});d=0;for(var h=e.length;darguments.length&&(b=a,a=s);Ja&&(c=ya);return p(a,b,c)}var y,ca,A,I,ba,U,ya={},u;y=c===f?d:Sb(d,new Fb(w(f),d.$attr));ca=y.$$element;if(N){var oe=/^\s*([@=&])(\??)\s*(\w*)\s*$/;h=w(f);U=e.$new(!0);Z&&Z===N.$$originalDirective?h.data("$isolateScope",U):h.data("$isolateScopeNoTemplate",U);S(h,"ng-isolate-scope");r(N.scope,function(a,c){var d=a.match(oe)||[],f=d[3]||c,h="?"==d[2],d=d[1], +g,k,p,n;U.$$isolateBindings[c]=d+f;switch(d){case "@":y.$observe(f,function(a){U[c]=a});y.$$observers[f].$$scope=e;y[f]&&(U[c]=b(y[f])(e));break;case "=":if(h&&!y[f])break;k=t(y[f]);n=k.literal?ua:function(a,b){return a===b};p=k.assign||function(){g=U[c]=k(e);throw ha("nonassign",y[f],N.name);};g=U[c]=k(e);U.$watch(function(){var a=k(e);n(a,U[c])||(n(a,g)?p(e,a=U[c]):U[c]=a);return g=a},null,k.literal);break;case "&":k=t(y[f]);U[c]=function(a){return k(e,a)};break;default:throw ha("iscp",N.name,c, +a);}})}u=p&&q;F&&r(F,function(a){var b={$scope:a===N||a.$$isolateScope?U:e,$element:ca,$attrs:y,$transclude:u},c;ba=a.controller;"@"==ba&&(ba=y[a.name]);c=H(ba,b);ya[a.name]=c;Ja||ca.data("$"+a.name+"Controller",c);a.controllerAs&&(b.$scope[a.controllerAs]=c)});h=0;for(A=g.length;hG.priority)break;if(v=G.scope)A=A||G,G.templateUrl||(Q("new/isolated scope",N,G,K),W(v)&&(N=G));ga=G.name;!G.templateUrl&&G.controller&& +(v=G.controller,F=F||{},Q("'"+ga+"' controller",F[ga],G,K),F[ga]=G);if(v=G.transclude)Wa=!0,G.$$tlb||(Q("transclusion",u,G,K),u=G),"element"==v?(Ja=!0,y=G.priority,v=I(c,R,V),K=d.$$element=w(T.createComment(" "+ga+": "+d[ga]+" ")),c=K[0],lb(f,w(va.call(v,0)),c),z=ba(v,e,y,h&&h.name,{nonTlbTranscludeDirective:u})):(v=w(Cb(c)).contents(),K.empty(),z=ba(v,e));if(G.template)if(Q("template",Z,G,K),Z=G,v=D(G.template)?G.template(K,d):G.template,v=oc(v),G.replace){h=G;v=E(v);c=v[0];if(1!=v.length||1!==c.nodeType)throw ha("tplrt", +ga,"");lb(f,K,c);P={$attr:{}};v=U(c,[],P);var X=a.splice(la+1,a.length-(la+1));N&&kb(v);a=a.concat(v).concat(X);B(d,P);P=a.length}else K.html(v);if(G.templateUrl)Q("template",Z,G,K),Z=G,G.replace&&(h=G),J=O(a.splice(la,a.length-la),K,d,f,z,g,k,{controllerDirectives:F,newIsolateScopeDirective:N,templateDirective:Z,nonTlbTranscludeDirective:u}),P=a.length;else if(G.compile)try{L=G.compile(K,d,z),D(L)?q(null,L,R,V):L&&q(L.pre,L.post,R,V)}catch(Y){n(Y,fa(K))}G.terminal&&(J.terminal=!0,y=Math.max(y,G.priority))}J.scope= +A&&!0===A.scope;J.transclude=Wa&&z;p.hasElementTranscludeDirective=Ja;return J}function kb(a){for(var b=0,c=a.length;bt.priority)&&-1!=t.restrict.indexOf(f)&&(l&&(t=Rb(t,{$$start:l,$$end:p})),b.push(t),g=t)}catch(y){n(y)}}return g}function B(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;r(a,function(d,e){"$"!=e.charAt(0)&& +(b[e]&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});r(b,function(b,f){"class"==f?(S(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function E(a){var b;a=aa(a);if(b=g.exec(a)){b=b[1].toLowerCase();a=w(""+a+"
    ");if(/(thead|tbody|tfoot)/.test(b))return a.children(b);a=a.children("tbody");return"tr"===b?a.children("tr"):a.children("tr").contents()}return w("
    "+ +a+"
    ").contents()}function O(a,b,c,d,e,f,h,g){var k=[],l,n,t=b[0],H=a.shift(),y=v({},H,{templateUrl:null,transclude:null,replace:null,$$originalDirective:H}),C=D(H.templateUrl)?H.templateUrl(b,c):H.templateUrl;b.empty();q.get(J.getTrustedResourceUrl(C),{cache:p}).success(function(p){var q,J;p=oc(p);if(H.replace){p=E(p);q=p[0];if(1!=p.length||1!==q.nodeType)throw ha("tplrt",H.name,C);p={$attr:{}};lb(d,b,q);var A=U(q,[],p);W(H.scope)&&kb(A);a=A.concat(a);B(c,p)}else q=t,b.html(p);a.unshift(y); +l=Wa(a,q,c,e,b,H,f,h,g);r(d,function(a,c){a==q&&(d[c]=b[0])});for(n=N(b[0].childNodes,e);k.length;){p=k.shift();J=k.shift();var I=k.shift(),F=k.shift(),A=b[0];if(J!==t){var ba=J.className;g.hasElementTranscludeDirective&&H.replace||(A=Cb(q));lb(I,w(J),A);S(w(A),ba)}J=l.transclude?Z(p,l.transclude):F;l(n,p,A,d,J)}k=null}).error(function(a,b,c,d){throw ha("tpload",d.url);});return function(a,b,c,d,e){k?(k.push(b),k.push(c),k.push(d),k.push(e)):l(n,b,c,d,e)}}function z(a,b){var c=b.priority-a.priority; +return 0!==c?c:a.name!==b.name?a.namea.status?b:n.reject(b)}var d={method:"get",transformRequest:e.transformRequest,transformResponse:e.transformResponse},f=function(a){function b(a){var c; +r(a,function(b,d){D(b)&&(c=b(),null!=c?a[d]=c:delete a[d])})}var c=e.headers,d=v({},a.headers),f,h,c=v({},c.common,c[O(a.method)]);b(c);b(d);a:for(f in c){a=O(f);for(h in d)if(O(h)===a)continue a;d[f]=c[f]}return d}(a);v(d,a);d.headers=f;d.method=Da(d.method);(a=Gb(d.url)?b.cookies()[d.xsrfCookieName||e.xsrfCookieName]:s)&&(f[d.xsrfHeaderName||e.xsrfHeaderName]=a);var h=[function(a){f=a.headers;var b=sc(a.data,rc(f),a.transformRequest);E(a.data)&&r(f,function(a,b){"content-type"===O(b)&&delete f[b]}); +E(a.withCredentials)&&!E(e.withCredentials)&&(a.withCredentials=e.withCredentials);return t(a,b,f).then(c,c)},s],g=n.when(d);for(r(A,function(a){(a.request||a.requestError)&&h.unshift(a.request,a.requestError);(a.response||a.responseError)&&h.push(a.response,a.responseError)});h.length;){a=h.shift();var k=h.shift(),g=g.then(a,k)}g.success=function(a){g.then(function(b){a(b.data,b.status,b.headers,d)});return g};g.error=function(a){g.then(null,function(b){a(b.data,b.status,b.headers,d)});return g}; +return g}function t(b,c,f){function g(a,b,c){A&&(200<=a&&300>a?A.put(s,[a,b,qc(c)]):A.remove(s));k(b,a,c);d.$$phase||d.$apply()}function k(a,c,d){c=Math.max(c,0);(200<=c&&300>c?t.resolve:t.reject)({data:a,status:c,headers:rc(d),config:b})}function m(){var a=cb(p.pendingRequests,b);-1!==a&&p.pendingRequests.splice(a,1)}var t=n.defer(),q=t.promise,A,r,s=H(b.url,b.params);p.pendingRequests.push(b);q.then(m,m);(b.cache||e.cache)&&(!1!==b.cache&&"GET"==b.method)&&(A=W(b.cache)?b.cache:W(e.cache)?e.cache: +C);if(A)if(r=A.get(s),u(r)){if(r.then)return r.then(m,m),r;M(r)?k(r[1],r[0],$(r[2])):k(r,200,{})}else A.put(s,q);E(r)&&a(b.method,s,c,g,f,b.timeout,b.withCredentials,b.responseType);return q}function H(a,b){if(!b)return a;var c=[];Qc(b,function(a,b){null===a||E(a)||(M(a)||(a=[a]),r(a,function(a){W(a)&&(a=oa(a));c.push(wa(b)+"="+wa(a))}))});0=P&&(!b.match(/^(get|post|head|put|delete|options)$/i)|| +!Q.XMLHttpRequest))return new Q.ActiveXObject("Microsoft.XMLHTTP");if(Q.XMLHttpRequest)return new Q.XMLHttpRequest;throw z("$httpBackend")("noxhr");}function Sd(){this.$get=["$browser","$window","$document",function(b,a,c){return re(b,qe,b.defer,a.angular.callbacks,c[0])}]}function re(b,a,c,d,e){function f(a,b){var c=e.createElement("script"),d=function(){c.onreadystatechange=c.onload=c.onerror=null;e.body.removeChild(c);b&&b()};c.type="text/javascript";c.src=a;P&&8>=P?c.onreadystatechange=function(){/loaded|complete/.test(c.readyState)&& +d()}:c.onload=c.onerror=function(){d()};e.body.appendChild(c);return d}var g=-1;return function(e,m,k,l,n,q,p,t){function H(){A=g;F&&F();y&&y.abort()}function C(a,d,e,f){S&&c.cancel(S);F=y=null;0===d&&(d=e?200:"file"==pa(m).protocol?404:0);a(1223==d?204:d,e,f);b.$$completeOutstandingRequest(B)}var A;b.$$incOutstandingRequestCount();m=m||b.url();if("jsonp"==O(e)){var J="_"+(d.counter++).toString(36);d[J]=function(a){d[J].data=a};var F=f(m.replace("JSON_CALLBACK","angular.callbacks."+J),function(){d[J].data? +C(l,200,d[J].data):C(l,A||-2);d[J]=Ca.noop})}else{var y=a(e);y.open(e,m,!0);r(n,function(a,b){u(a)&&y.setRequestHeader(b,a)});y.onreadystatechange=function(){if(y&&4==y.readyState){var a=null,b=null;A!==g&&(a=y.getAllResponseHeaders(),b="response"in y?y.response:y.responseText);C(l,A||y.status,b,a)}};p&&(y.withCredentials=!0);if(t)try{y.responseType=t}catch(s){if("json"!==t)throw s;}y.send(k||null)}if(0=h&&(n.resolve(p),l(q.$$intervalId),delete e[q.$$intervalId]);t||b.$apply()},g);e[q.$$intervalId]=n;return q}var e={};d.cancel=function(a){return a&&a.$$intervalId in e?(e[a.$$intervalId].reject("canceled"),clearInterval(a.$$intervalId),delete e[a.$$intervalId],!0):!1};return d}]}function Zc(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"", gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a", -"short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(b){return 1===b?"one":"other"}}}}function uc(b){b=b.split("/");for(var a=b.length;a--;)b[a]=zb(b[a]);return b.join("/")}function vc(b,a,c){b=xa(b,c);a.$$protocol=b.protocol;a.$$host=b.hostname;a.$$port=R(b.port)||Ed[b.protocol]||null}function wc(b,a,c){var d="/"!==b.charAt(0);d&&(b="/"+b);b=xa(b,c);a.$$path=decodeURIComponent(d&& -"/"===b.pathname.charAt(0)?b.pathname.substring(1):b.pathname);a.$$search=$b(b.search);a.$$hash=decodeURIComponent(b.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function la(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function Wa(b){var a=b.indexOf("#");return-1==a?b:b.substr(0,a)}function Kb(b){return b.substr(0,Wa(b).lastIndexOf("/")+1)}function xc(b,a){this.$$html5=!0;a=a||"";var c=Kb(b);vc(b,this,b);this.$$parse=function(a){var e=la(c,a);if(!y(e))throw Lb("ipthprfx", -a,c);wc(e,this,b);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=ac(this.$$search),b=this.$$hash?"#"+zb(this.$$hash):"";this.$$url=uc(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$rewrite=function(d){var e;if((e=la(b,d))!==s)return d=e,(e=la(a,e))!==s?c+(la("/",e)||e):b+d;if((e=la(c,d))!==s)return c+e;if(c==d+"/")return c}}function Mb(b,a){var c=Kb(b);vc(b,this,b);this.$$parse=function(d){var e=la(b,d)||la(c,d),e="#"==e.charAt(0)?la(a,e): -this.$$html5?e:"";if(!y(e))throw Lb("ihshprfx",d,a);wc(e,this,b);d=this.$$path;var f=/^\/?.*?:(\/.*)/;0===e.indexOf(b)&&(e=e.replace(b,""));f.exec(e)||(d=(e=f.exec(d))?e[1]:d);this.$$path=d;this.$$compose()};this.$$compose=function(){var c=ac(this.$$search),e=this.$$hash?"#"+zb(this.$$hash):"";this.$$url=uc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$rewrite=function(a){if(Wa(b)==Wa(a))return a}}function yc(b,a){this.$$html5=!0;Mb.apply(this,arguments);var c=Kb(b); -this.$$rewrite=function(d){var e;if(b==Wa(d))return d;if(e=la(c,d))return b+a+e;if(c===d+"/")return c}}function ob(b){return function(){return this[b]}}function zc(b,a){return function(c){if(C(c))return this[b];this[b]=a(c);this.$$compose();return this}}function Fd(){var b="",a=!1;this.hashPrefix=function(a){return v(a)?(b=a,this):b};this.html5Mode=function(b){return v(b)?(a=b,this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(c,d,e,f){function h(a){c.$broadcast("$locationChangeSuccess", -g.absUrl(),a)}var g,m=d.baseHref(),k=d.url();a?(m=k.substring(0,k.indexOf("/",k.indexOf("//")+2))+(m||"/"),e=e.history?xc:yc):(m=Wa(k),e=Mb);g=new e(m,"#"+b);g.$$parse(g.$$rewrite(k));f.on("click",function(a){if(!a.ctrlKey&&!a.metaKey&&2!=a.which){for(var b=z(a.target);"a"!==P(b[0].nodeName);)if(b[0]===f[0]||!(b=b.parent())[0])return;var e=b.prop("href");X(e)&&"[object SVGAnimatedString]"===e.toString()&&(e=xa(e.animVal).href);var h=g.$$rewrite(e);e&&(!b.attr("target")&&h&&!a.isDefaultPrevented())&& -(a.preventDefault(),h!=d.url()&&(g.$$parse(h),c.$apply(),D.angular["ff-684208-preventDefault"]=!0))}});g.absUrl()!=k&&d.url(g.absUrl(),!0);d.onUrlChange(function(a){g.absUrl()!=a&&(c.$evalAsync(function(){var b=g.absUrl();g.$$parse(a);c.$broadcast("$locationChangeStart",a,b).defaultPrevented?(g.$$parse(b),d.url(b)):h(b)}),c.$$phase||c.$digest())});var l=0;c.$watch(function(){var a=d.url(),b=g.$$replace;l&&a==g.absUrl()||(l++,c.$evalAsync(function(){c.$broadcast("$locationChangeStart",g.absUrl(),a).defaultPrevented? -g.$$parse(a):(d.url(g.absUrl(),b),h(a))}));g.$$replace=!1;return l});return g}]}function Gd(){var b=!0,a=this;this.debugEnabled=function(a){return v(a)?(b=a,this):b};this.$get=["$window",function(c){function d(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=c.console||{},e=b[a]||b.log||x;a=!1;try{a=!!e.apply}catch(m){}return a?function(){var a= -[];r(arguments,function(b){a.push(d(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(){b&&c.apply(a,arguments)}}()}}]}function da(b,a){if("constructor"===b)throw ya("isecfld",a);return b}function Xa(b,a){if(b){if(b.constructor===b)throw ya("isecfn",a);if(b.document&&b.location&&b.alert&&b.setInterval)throw ya("isecwindow",a);if(b.children&&(b.nodeName||b.prop&&b.attr&&b.find))throw ya("isecdom", -a);}return b}function pb(b,a,c,d,e){e=e||{};a=a.split(".");for(var f,h=0;1e?Ac(d[0],d[1],d[2],d[3],d[4],c,a):function(b,f){var g=0,h;do h=Ac(d[g++],d[g++],d[g++],d[g++],d[g++],c,a)(b,f),f=s,b=h;while(ga)for(b in g++,d)d.hasOwnProperty(b)&&!e.hasOwnProperty(b)&&(m--,delete d[b])}else d!==e&&(d=e,g++);return g},function(){b(e,d,c)})},$digest:function(){var d,f,g,h,k=this.$$asyncQueue,l=this.$$postDigestQueue,r,w,s=b,T,M=[],v,t,N;m("$digest");c=null;do{w=!1;for(T=this;k.length;){try{N=k.shift(),N.scope.$eval(N.expression)}catch(z){q.$$phase=null,e(z)}c=null}a:do{if(h= -T.$$watchers)for(r=h.length;r--;)try{if(d=h[r])if((f=d.get(T))!==(g=d.last)&&!(d.eq?ta(f,g):"number"==typeof f&&"number"==typeof g&&isNaN(f)&&isNaN(g)))w=!0,c=d,d.last=d.eq?ba(f):f,d.fn(f,g===n?f:g,T),5>s&&(v=4-s,M[v]||(M[v]=[]),t=O(d.exp)?"fn: "+(d.exp.name||d.exp.toString()):d.exp,t+="; newVal: "+oa(f)+"; oldVal: "+oa(g),M[v].push(t));else if(d===c){w=!1;break a}}catch(y){q.$$phase=null,e(y)}if(!(h=T.$$childHead||T!==this&&T.$$nextSibling))for(;T!==this&&!(h=T.$$nextSibling);)T=T.$parent}while(T= -h);if((w||k.length)&&!s--)throw q.$$phase=null,a("infdig",b,oa(M));}while(w||k.length);for(q.$$phase=null;l.length;)try{l.shift()()}catch(x){e(x)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this!==q&&(r(this.$$listenerCount,db(null,l,this)),a.$$childHead==this&&(a.$$childHead=this.$$nextSibling),a.$$childTail==this&&(a.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&& -(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null)}},$eval:function(a,b){return f(a)(this,b)},$evalAsync:function(a){q.$$phase||q.$$asyncQueue.length||h.defer(function(){q.$$asyncQueue.length&&q.$digest()});this.$$asyncQueue.push({scope:this,expression:a})},$$postDigest:function(a){this.$$postDigestQueue.push(a)},$apply:function(a){try{return m("$apply"),this.$eval(a)}catch(b){e(b)}finally{q.$$phase=null; -try{q.$digest()}catch(c){throw e(c),c;}}},$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(){c[cb(c,b)]=null;l(e,1,a)}},$emit:function(a,b){var c=[],d,f=this,g=!1,h={name:a,targetScope:f,stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=[h].concat(ua.call(arguments,1)),l,m;do{d=f.$$listeners[a]|| -c;h.currentScope=f;l=0;for(m=d.length;lc.msieDocumentMode)throw ra("iequirks");var e=ba(ea);e.isEnabled=function(){return b};e.trustAs= -d.trustAs;e.getTrusted=d.getTrusted;e.valueOf=d.valueOf;b||(e.trustAs=e.getTrusted=function(a,b){return b},e.valueOf=Aa);e.parseAs=function(b,c){var d=a(c);return d.literal&&d.constant?d:function(a,c){return e.getTrusted(b,d(a,c))}};var f=e.parseAs,h=e.getTrusted,g=e.trustAs;r(ea,function(a,b){var c=P(b);e[Qa("parse_as_"+c)]=function(b){return f(a,b)};e[Qa("get_trusted_"+c)]=function(b){return h(a,b)};e[Qa("trust_as_"+c)]=function(b){return g(a,b)}});return e}]}function Sd(){this.$get=["$window", -"$document",function(b,a){var c={},d=R((/android (\d+)/.exec(P((b.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||{}).userAgent),f=a[0]||{},h=f.documentMode,g,m=/^(Moz|webkit|O|ms)(?=[A-Z])/,k=f.body&&f.body.style,l=!1,n=!1;if(k){for(var q in k)if(l=m.exec(q)){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);n=!!("animation"in k||g+"Animation"in k);!d||l&&n||(l=y(f.body.style.webkitTransition), -n=y(f.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hashchange:"onhashchange"in b&&(!h||7b;b=Math.abs(b);var h=b+"",g="",m=[],k=!1;if(-1!==h.indexOf("e")){var l=h.match(/([\d\.]+)e(-?)(\d+)/);l&&"-"==l[2]&&l[3]>e+1?h="0":(g=h,k=!0)}if(k)0b)&&(g=b.toFixed(e));else{h=(h.split(Lc)[1]||"").length;C(e)&&(e=Math.min(Math.max(a.minFrac,h),a.maxFrac));h=Math.pow(10,e);b=Math.round(b*h)/h;b=(""+b).split(Lc);h=b[0];b=b[1]||"";var l=0,n=a.lgSize,q=a.gSize;if(h.length>=n+q)for(l=h.length-n,k=0;kb&&(d="-",b=-b);for(b=""+b;b.length-c)e+=c;0===e&&-12==c&&(e=12);return qb(e,a,d)}}function rb(b,a){return function(c,d){var e=c["get"+b](),f=Ja(a?"SHORT"+b:b);return d[f][e]}} -function Mc(b){var a=(new Date(b,0,1)).getDay();return new Date(b,0,(4>=a?5:12)-a)}function Nc(b){return function(a){var c=Mc(a.getFullYear());a=+new Date(a.getFullYear(),a.getMonth(),a.getDate()+(4-a.getDay()))-+c;a=1+Math.round(a/6048E5);return qb(a,b)}}function Hc(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,h=0,g=b[8]?a.setUTCFullYear:a.setFullYear,m=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=R(b[9]+b[10]),h=R(b[9]+b[11]));g.call(a,R(b[1]),R(b[2])-1,R(b[3]));f=R(b[4]||0)-f;h=R(b[5]|| -0)-h;g=R(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));m.call(a,f,h,g,b)}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,e){var f="",h=[],g,m;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;y(c)&&(c=ae.test(c)?R(c):a(c));yb(c)&&(c=new Date(c));if(!na(c))return c;for(;e;)(m=be.exec(e))?(h=h.concat(ua.call(m,1)),e=h.pop()):(h.push(e),e=null);r(h,function(a){g=ce[a];f+=g?g(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g, -"").replace(/''/g,"'")});return f}}function Wd(){return function(b){return oa(b,!0)}}function Xd(){return function(b,a){if(!I(b)&&!y(b))return b;a=R(a);if(y(b))return a?0<=a?b.slice(0,a):b.slice(a,b.length):"";var c=[],d,e;a>b.length?a=b.length:a<-b.length&&(a=-b.length);0a||37<=a&&40>=a)||l()});if(e.hasEvent("paste"))a.on("paste cut",l)}a.on("change",m);d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)};var n=c.ngPattern;n&&((e=n.match(/^\/(.*)\/([gim]*)$/))?(n=RegExp(e[1],e[2]),e=function(a){return ma(d, -"pattern",d.$isEmpty(a)||n.test(a),a)}):e=function(c){var e=b.$eval(n);if(!e||!e.test)throw F("ngPattern")("noregexp",n,e,fa(a));return ma(d,"pattern",d.$isEmpty(c)||e.test(c),c)},d.$formatters.push(e),d.$parsers.push(e));if(c.ngMinlength){var q=R(c.ngMinlength);e=function(a){return ma(d,"minlength",d.$isEmpty(a)||a.length>=q,a)};d.$parsers.push(e);d.$formatters.push(e)}if(c.ngMaxlength){var p=R(c.ngMaxlength);e=function(a){return ma(d,"maxlength",d.$isEmpty(a)||a.length<=p,a)};d.$parsers.push(e); -d.$formatters.push(e)}}function wb(b,a){return function(c){var d;return na(c)?c:y(c)&&(b.lastIndex=0,c=b.exec(c))?(c.shift(),d={yyyy:0,MM:1,dd:1,HH:0,mm:0},r(c,function(b,c){c=c(h.min);g.$setValidity("min",b);return b?a:s},g.$parsers.push(e),g.$formatters.push(e));h.max&&(e=function(a){var b=g.$isEmpty(a)||c(a)<=c(h.max);g.$setValidity("max",b);return b?a:s},g.$parsers.push(e),g.$formatters.push(e))}}function Pb(b,a){b="ngClass"+b;return function(){return{restrict:"AC",link:function(c,d,e){function f(b){if(!0===a||c.$index%2===a){var d=h(b||"");g?ta(b,g)||e.$updateClass(d,h(g)):e.$addClass(d)}g=ba(b)} -function h(a){if(I(a))return a.join(" ");if(X(a)){var b=[];r(a,function(a,c){a&&b.push(c)});return b.join(" ")}return a}var g;c.$watch(e[b],f,!0);e.$observe("class",function(a){f(c.$eval(e[b]))});"ngClass"!==b&&c.$watch("$index",function(d,f){var g=d&1;if(g!==f&1){var n=h(c.$eval(e[b]));g===a?e.$addClass(n):e.$removeClass(n)}})}}}}var P=function(b){return y(b)?b.toLowerCase():b},$d=Object.prototype.hasOwnProperty,Ja=function(b){return y(b)?b.toUpperCase():b},Q,z,Da,ua=[].slice,ee=[].push,Ba=Object.prototype.toString, -Na=F("ng"),Ca=D.angular||(D.angular={}),Ua,Ha,ia=["0","0","0"];Q=R((/msie (\d+)/.exec(P(navigator.userAgent))||[])[1]);isNaN(Q)&&(Q=R((/trident\/.*; rv:(\d+)/.exec(P(navigator.userAgent))||[])[1]));x.$inject=[];Aa.$inject=[];var ca=function(){return String.prototype.trim?function(b){return y(b)?b.trim():b}:function(b){return y(b)?b.replace(/^\s\s*/,"").replace(/\s\s*$/,""):b}}();Ha=9>Q?function(b){b=b.nodeName?b:b[0];return b.scopeName&&"HTML"!=b.scopeName?Ja(b.scopeName+":"+b.nodeName):b.nodeName}: -function(b){return b.nodeName?b.nodeName:b[0].nodeName};var dd=/[A-Z]/g,fe={full:"1.2.15-build.2398+sha.4bab3d8",major:1,minor:2,dot:15,codeName:"snapshot"},Ra=S.cache={},fb=S.expando="ng-"+(new Date).getTime(),hd=1,Pc=D.document.addEventListener?function(b,a,c){b.addEventListener(a,c,!1)}:function(b,a,c){b.attachEvent("on"+a,c)},Gb=D.document.removeEventListener?function(b,a,c){b.removeEventListener(a,c,!1)}:function(b,a,c){b.detachEvent("on"+a,c)};S._data=function(b){return this.cache[b[this.expando]]|| -{}};var fd=/([\:\-\_]+(.))/g,gd=/^moz([A-Z])/,Db=F("jqLite"),Ga=S.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===U.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),S(D).on("load",a))},toString:function(){var b=[];r(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?z(this[b]):z(this[this.length+b])},length:0,push:ee,sort:[].sort,splice:[].splice},jb={};r("multiple selected checked disabled readOnly required open".split(" "), -function(b){jb[P(b)]=b});var kc={};r("input select option textarea button form details".split(" "),function(b){kc[Ja(b)]=!0});r({data:gc,inheritedData:ib,scope:function(b){return z(b).data("$scope")||ib(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return z(b).data("$isolateScope")||z(b).data("$isolateScopeNoTemplate")},controller:hc,injector:function(b){return ib(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Hb,css:function(b,a,c){a=Qa(a);if(v(c))b.style[a]= -c;else{var d;8>=Q&&(d=b.currentStyle&&b.currentStyle[a],""===d&&(d="auto"));d=d||b.style[a];8>=Q&&(d=""===d?s:d);return d}},attr:function(b,a,c){var d=P(a);if(jb[d])if(v(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||x).specified?d:s;else if(v(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?s:b},prop:function(b,a,c){if(v(c))b[a]=c;else return b[a]},text:function(){function b(b,d){var e=a[b.nodeType]; -if(C(d))return e?b[e]:"";b[e]=d}var a=[];9>Q?(a[1]="innerText",a[3]="nodeValue"):a[1]=a[3]="textContent";b.$dv="";return b}(),val:function(b,a){if(C(a)){if("SELECT"===Ha(b)&&b.multiple){var c=[];r(b.options,function(a){a.selected&&c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(C(a))return b.innerHTML;for(var c=0,d=b.childNodes;c":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a, -c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"&":function(a,c,d,e){return d(a,c)&e(a,c)},"|":function(a,c,d,e){return e(a,c)(a,c,d(a,c))},"!":function(a,c,d){return!d(a,c)}},je={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},Ob=function(a){this.options=a};Ob.prototype={constructor:Ob,lex:function(a){this.text=a;this.index=0;this.ch=s;this.lastCh=":";this.tokens=[];var c;for(a=[];this.index=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,c,d){d=d||this.index;c=v(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw ya("lexerr", -a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.index","<=",">="))a=this.binaryFn(a,c.fn,this.relational());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.fn,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a, -c.fn,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(Ya.ZERO,a.fn,this.unary()):(a=this.expect("!"))?this.unaryFn(a.fn,this.unary()):this.primary()},fieldAccess:function(a){var c=this,d=this.expect().text,e=Bc(d,this.options,this.text);return t(function(c,d,g){return e(g||a(c,d))},{assign:function(e,h,g){return pb(a(e,g),d,h,c.text,c.options)}})},objectIndex:function(a){var c=this,d=this.expression();this.consume("]");return t(function(e, -f){var h=a(e,f),g=d(e,f),m;if(!h)return s;(h=Xa(h[g],c.text))&&(h.then&&c.options.unwrapPromises)&&(m=h,"$$v"in h||(m.$$v=s,m.then(function(a){m.$$v=a})),h=h.$$v);return h},{assign:function(e,f,h){var g=d(e,h);return Xa(a(e,h),c.text)[g]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());while(this.expect(","))}this.consume(")");var e=this;return function(f,h){for(var g=[],m=c?c(f,h):f,k=0;ka.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(qb(Math[0=Q&&(c.href||c.name||c.$set("href",""),a.append(U.createComment("IE fix")));if(!c.href&&!c.xlinkHref&&!c.name)return function(a,c){var f="[object SVGAnimatedString]"===Ba.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(f)|| -a.preventDefault()})}}}),Qb={};r(jb,function(a,c){if("multiple"!=a){var d=ka("ng-"+c);Qb[d]=function(){return{priority:100,link:function(a,f,h){a.$watch(h[d],function(a){h.$set(c,!!a)})}}}}});r(["src","srcset","href"],function(a){var c=ka("ng-"+a);Qb[c]=function(){return{priority:99,link:function(d,e,f){var h=a,g=a;"href"===a&&"[object SVGAnimatedString]"===Ba.call(e.prop("href"))&&(g="xlinkHref",f.$attr[g]="xlink:href",h=null);f.$observe(c,function(a){a&&(f.$set(g,a),Q&&h&&e.prop(h,f[g]))})}}}}); -var ub={$addControl:x,$removeControl:x,$setValidity:x,$setDirty:x,$setPristine:x};Oc.$inject=["$element","$attrs","$scope","$animate"];var Qc=function(a){return["$timeout",function(c){return{name:"form",restrict:a?"EAC":"E",controller:Oc,compile:function(){return{pre:function(a,e,f,h){if(!f.action){var g=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1};Pc(e[0],"submit",g);e.on("$destroy",function(){c(function(){Gb(e[0],"submit",g)},0,!1)})}var m=e.parent().controller("form"),k=f.name|| -f.ngForm;k&&pb(a,k,h,k);if(m)e.on("$destroy",function(){m.$removeControl(h);k&&pb(a,k,s,k);t(h,ub)})}}}}}]},le=Qc(),me=Qc(!0),ne=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,oe=/^[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-z0-9-]+(\.[a-z0-9-]+)*$/i,pe=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,Rc=/^(\d{4})-(\d{2})-(\d{2})$/,Sc=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)$/,Rb=/^(\d{4})-W(\d\d)$/,Tc=/^(\d{4})-(\d\d)$/,Uc=/^(\d\d):(\d\d)$/,Vc={text:Za,date:$a("date",Rc,wb(Rc,["yyyy", -"MM","dd"]),"yyyy-MM-dd"),"datetime-local":$a("datetimelocal",Sc,wb(Sc,["yyyy","MM","dd","HH","mm"]),"yyyy-MM-ddTHH:mm"),time:$a("time",Uc,wb(Uc,["HH","mm"]),"HH:mm"),week:$a("week",Rb,function(a){if(na(a))return a;if(y(a)){Rb.lastIndex=0;var c=Rb.exec(a);if(c){a=+c[1];var d=+c[2],c=Mc(a),d=7*(d-1);return new Date(a,0,c.getDate()+d)}}return NaN},"yyyy-Www"),month:$a("month",Tc,wb(Tc,["yyyy","MM"]),"yyyy-MM"),number:function(a,c,d,e,f,h){Za(a,c,d,e,f,h);e.$parsers.push(function(a){var c=e.$isEmpty(a); -if(c||pe.test(a))return e.$setValidity("number",!0),""===a?null:c?a:parseFloat(a);e.$setValidity("number",!1);return s});de(e,"number",c);e.$formatters.push(function(a){return e.$isEmpty(a)?"":""+a});d.min&&(a=function(a){var c=parseFloat(d.min);return ma(e,"min",e.$isEmpty(a)||a>=c,a)},e.$parsers.push(a),e.$formatters.push(a));d.max&&(a=function(a){var c=parseFloat(d.max);return ma(e,"max",e.$isEmpty(a)||a<=c,a)},e.$parsers.push(a),e.$formatters.push(a));e.$formatters.push(function(a){return ma(e, -"number",e.$isEmpty(a)||yb(a),a)})},url:function(a,c,d,e,f,h){Za(a,c,d,e,f,h);a=function(a){return ma(e,"url",e.$isEmpty(a)||ne.test(a),a)};e.$formatters.push(a);e.$parsers.push(a)},email:function(a,c,d,e,f,h){Za(a,c,d,e,f,h);a=function(a){return ma(e,"email",e.$isEmpty(a)||oe.test(a),a)};e.$formatters.push(a);e.$parsers.push(a)},radio:function(a,c,d,e){C(d.name)&&c.attr("name",ab());c.on("click",function(){c[0].checked&&a.$apply(function(){e.$setViewValue(d.value)})});e.$render=function(){c[0].checked= -d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e){var f=d.ngTrueValue,h=d.ngFalseValue;y(f)||(f=!0);y(h)||(h=!1);c.on("click",function(){a.$apply(function(){e.$setViewValue(c[0].checked)})});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return a!==f};e.$formatters.push(function(a){return a===f});e.$parsers.push(function(a){return a?f:h})},hidden:x,button:x,submit:x,reset:x,file:x},Wc=["$browser","$sniffer","$filter",function(a,c,d){return{restrict:"E", -require:"?ngModel",link:function(e,f,h,g){g&&(Vc[P(h.type)]||Vc.text)(e,f,h,g,c,a,d)}}}],tb="ng-valid",sb="ng-invalid",Ka="ng-pristine",vb="ng-dirty",qe=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate",function(a,c,d,e,f,h){function g(a,c){c=c?"-"+eb(c,"-"):"";h.removeClass(e,(a?sb:tb)+c);h.addClass(e,(a?tb:sb)+c)}this.$modelValue=this.$viewValue=Number.NaN;this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid= -!1;this.$name=d.name;var m=f(d.ngModel),k=m.assign;if(!k)throw F("ngModel")("nonassign",d.ngModel,fa(e));this.$render=x;this.$isEmpty=function(a){return C(a)||""===a||null===a||a!==a};var l=e.inheritedData("$formController")||ub,n=0,q=this.$error={};e.addClass(Ka);g(!0);this.$setValidity=function(a,c){q[a]!==!c&&(c?(q[a]&&n--,n||(g(!0),this.$valid=!0,this.$invalid=!1)):(g(!1),this.$invalid=!0,this.$valid=!1,n++),q[a]=!c,g(c,a),l.$setValidity(a,c,this))};this.$setPristine=function(){this.$dirty=!1; -this.$pristine=!0;h.removeClass(e,vb);h.addClass(e,Ka)};this.$setViewValue=function(d){this.$viewValue=d;this.$pristine&&(this.$dirty=!0,this.$pristine=!1,h.removeClass(e,Ka),h.addClass(e,vb),l.$setDirty());r(this.$parsers,function(a){d=a(d)});this.$modelValue!==d&&(this.$modelValue=d,k(a,d),r(this.$viewChangeListeners,function(a){try{a()}catch(d){c(d)}}))};var p=this;a.$watch(function(){var c=m(a);if(p.$modelValue!==c){var d=p.$formatters,e=d.length;for(p.$modelValue=c;e--;)c=d[e](c);p.$viewValue!== -c&&(p.$viewValue=c,p.$render())}return c})}],re=function(){return{require:["ngModel","^?form"],controller:qe,link:function(a,c,d,e){var f=e[0],h=e[1]||ub;h.$addControl(f);a.$on("$destroy",function(){h.$removeControl(f)})}}},se=$({require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),Xc=function(){return{require:"?ngModel",link:function(a,c,d,e){if(e){d.required=!0;var f=function(a){if(d.required&&e.$isEmpty(a))e.$setValidity("required",!1);else return e.$setValidity("required", -!0),a};e.$formatters.push(f);e.$parsers.unshift(f);d.$observe("required",function(){f(e.$viewValue)})}}}},te=function(){return{require:"ngModel",link:function(a,c,d,e){var f=(a=/\/(.*)\//.exec(d.ngList))&&RegExp(a[1])||d.ngList||",";e.$parsers.push(function(a){if(!C(a)){var c=[];a&&r(a.split(f),function(a){a&&c.push(ca(a))});return c}});e.$formatters.push(function(a){return I(a)?a.join(", "):s});e.$isEmpty=function(a){return!a||!a.length}}}},ue=/^(true|false|\d+)$/,ve=function(){return{priority:100, -compile:function(a,c){return ue.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",a)})}}}},we=sa(function(a,c,d){c.addClass("ng-binding").data("$binding",d.ngBind);a.$watch(d.ngBind,function(a){c.text(a==s?"":a)})}),xe=["$interpolate",function(a){return function(c,d,e){c=a(d.attr(e.$attr.ngBindTemplate));d.addClass("ng-binding").data("$binding",c);e.$observe("ngBindTemplate",function(a){d.text(a)})}}],ye=["$sce","$parse", -function(a,c){return function(d,e,f){e.addClass("ng-binding").data("$binding",f.ngBindHtml);var h=c(f.ngBindHtml);d.$watch(function(){return(h(d)||"").toString()},function(c){e.html(a.getTrustedHtml(h(d))||"")})}}],ze=Pb("",!0),Ae=Pb("Odd",0),Be=Pb("Even",1),Ce=sa({compile:function(a,c){c.$set("ngCloak",s);a.removeClass("ng-cloak")}}),De=[function(){return{scope:!0,controller:"@",priority:500}}],Yc={};r("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), -function(a){var c=ka("ng-"+a);Yc[c]=["$parse",function(d){return{compile:function(e,f){var h=d(f[c]);return function(c,d,e){d.on(P(a),function(a){c.$apply(function(){h(c,{$event:a})})})}}}}]});var Ee=["$animate",function(a){return{transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,h){var g,m,k;c.$watch(e.ngIf,function(f){Oa(f)?m||(m=c.$new(),h(m,function(c){c[c.length++]=U.createComment(" end ngIf: "+e.ngIf+" ");g={clone:c};a.enter(c,d.parent(),d)})):(k&&(k.remove(), -k=null),m&&(m.$destroy(),m=null),g&&(k=Bb(g.clone),a.leave(k,function(){k=null}),g=null))})}}}],Fe=["$http","$templateCache","$anchorScroll","$animate","$sce",function(a,c,d,e,f){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:Ca.noop,compile:function(h,g){var m=g.ngInclude||g.src,k=g.onload||"",l=g.autoscroll;return function(g,h,p,r,s){var t=0,u,z,J,w=function(){z&&(z.remove(),z=null);u&&(u.$destroy(),u=null);J&&(e.leave(J,function(){z=null}),z=J,J=null)};g.$watch(f.parseAsResourceUrl(m), -function(f){var m=function(){!v(l)||l&&!g.$eval(l)||d()},p=++t;f?(a.get(f,{cache:c}).success(function(a){if(p===t){var c=g.$new();r.template=a;a=s(c,function(a){w();e.enter(a,null,h,m)});u=c;J=a;u.$emit("$includeContentLoaded");g.$eval(k)}}).error(function(){p===t&&w()}),g.$emit("$includeContentRequested")):(w(),r.template=null)})}}}}],Ge=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(c,d,e,f){d.html(f.template);a(d.contents())(c)}}}],He=sa({priority:450, -compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),Ie=sa({terminal:!0,priority:1E3}),Je=["$locale","$interpolate",function(a,c){var d=/{}/g;return{restrict:"EA",link:function(e,f,h){var g=h.count,m=h.$attr.when&&f.attr(h.$attr.when),k=h.offset||0,l=e.$eval(m)||{},n={},q=c.startSymbol(),p=c.endSymbol(),s=/^when(Minus)?(.+)$/;r(h,function(a,c){s.test(c)&&(l[P(c.replace("when","").replace("Minus","-"))]=f.attr(h.$attr[c]))});r(l,function(a,e){n[e]=c(a.replace(d,q+g+"-"+k+p))});e.$watch(function(){var c= -parseFloat(e.$eval(g));if(isNaN(c))return"";c in l||(c=a.pluralCat(c-k));return n[c](e,f,!0)},function(a){f.text(a)})}}}],Ke=["$parse","$animate",function(a,c){var d=F("ngRepeat");return{transclude:"element",priority:1E3,terminal:!0,$$tlb:!0,link:function(e,f,h,g,m){var k=h.ngRepeat,l=k.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),n,q,p,s,t,v,u={$id:Fa};if(!l)throw d("iexp",k);h=l[1];g=l[2];(l=l[3])?(n=a(l),q=function(a,c,d){v&&(u[v]=a);u[t]=c;u.$index=d;return n(e, -u)}):(p=function(a,c){return Fa(c)},s=function(a){return a});l=h.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/);if(!l)throw d("iidexp",h);t=l[3]||l[1];v=l[2];var H={};e.$watchCollection(g,function(a){var g,h,l=f[0],n,u={},y,N,x,C,F,K,I=[];if(xb(a))F=a,n=q||p;else{n=q||s;F=[];for(x in a)a.hasOwnProperty(x)&&"$"!=x.charAt(0)&&F.push(x);F.sort()}y=F.length;h=I.length=F.length;for(g=0;gD;)y.pop().element.remove()}for(;x.length> -B;)x.pop()[0].element.remove()}var k;if(!(k=t.match(d)))throw Te("iexp",t,fa(f));var l=c(k[2]||k[1]),m=k[4]||k[6],n=k[5],q=c(k[3]||""),r=c(k[2]?k[1]:m),z=c(k[7]),w=k[8]?c(k[8]):null,x=[[{element:f,label:""}]];E&&(a(E)(e),E.removeClass("ng-scope"),E.remove());f.empty();f.on("change",function(){e.$apply(function(){var a,c=z(e)||[],d={},h,k,l,q,t,v,u;if(p)for(k=[],q=0,v=x.length;q@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}.ng-animate-block-transitions{transition:0s all!important;-webkit-transition:0s all!important;}'); +return k}:function(f,g){var k=g&&g.hasOwnProperty(b)?g:f;if(null==k)return k;k=k[b];if(!a)return k;if(null==k)return s;k=k[a];if(!c)return k;if(null==k)return s;k=k[c];if(!d)return k;if(null==k)return s;k=k[d];return e?null==k?s:k=k[e]:k}}function te(b,a){da(b,a);return function(a,d){return null==a?s:(d&&d.hasOwnProperty(b)?d:a)[b]}}function ue(b,a,c){da(b,c);da(a,c);return function(c,e){if(null==c)return s;c=(e&&e.hasOwnProperty(b)?e:c)[b];return null==c?s:c[a]}}function Bc(b,a,c){if(Kb.hasOwnProperty(b))return Kb[b]; +var d=b.split("."),e=d.length,f;if(a.unwrapPromises||1!==e)if(a.unwrapPromises||2!==e)if(a.csp)f=6>e?Ac(d[0],d[1],d[2],d[3],d[4],c,a):function(b,f){var h=0,g;do g=Ac(d[h++],d[h++],d[h++],d[h++],d[h++],c,a)(b,f),f=s,b=g;while(ha)for(b in k++,e)e.hasOwnProperty(b)&&!d.hasOwnProperty(b)&&(r--,delete e[b])}else e!==d&&(e=d,k++);return k},function(){q?(q= +!1,b(d,d,c)):b(d,h,c);if(g)if(W(d))if($a(d)){h=Array(d.length);for(var a=0;as&&(u=4-s,N[u]||(N[u]=[]),v=D(d.exp)?"fn: "+(d.exp.name||d.exp.toString()):d.exp,v+="; newVal: "+oa(f)+"; oldVal: "+oa(h),N[u].push(v));else if(d===c){y=!1;break a}}catch(x){q.$$phase=null,e(x)}if(!(g=S.$$childHead||S!==this&&S.$$nextSibling))for(;S!==this&&!(g=S.$$nextSibling);)S=S.$parent}while(S=g);if((y||k.length)&&!s--)throw q.$$phase=null,a("infdig",b,oa(N));}while(y||k.length);for(q.$$phase=null;l.length;)try{l.shift()()}catch(B){e(B)}}, +$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this!==q&&(r(this.$$listenerCount,db(null,l,this)),a.$$childHead==this&&(a.$$childHead=this.$$nextSibling),a.$$childTail==this&&(a.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail= +null)}},$eval:function(a,b){return f(a)(this,b)},$evalAsync:function(a){q.$$phase||q.$$asyncQueue.length||g.defer(function(){q.$$asyncQueue.length&&q.$digest()});this.$$asyncQueue.push({scope:this,expression:a})},$$postDigest:function(a){this.$$postDigestQueue.push(a)},$apply:function(a){try{return m("$apply"),this.$eval(a)}catch(b){e(b)}finally{q.$$phase=null;try{q.$digest()}catch(c){throw e(c),c;}}},$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(){c[cb(c,b)]=null;l(e,1,a)}},$emit:function(a,b){var c=[],d,f=this,h=!1,g={name:a,targetScope:f,stopPropagation:function(){h=!0},preventDefault:function(){g.defaultPrevented=!0},defaultPrevented:!1},k=[g].concat(va.call(arguments,1)),l,m;do{d=f.$$listeners[a]||c;g.currentScope=f;l=0;for(m=d.length;lc.msieDocumentMode)throw ra("iequirks");var e=$(ea);e.isEnabled=function(){return b};e.trustAs=d.trustAs;e.getTrusted=d.getTrusted;e.valueOf=d.valueOf;b||(e.trustAs=e.getTrusted=function(a,b){return b},e.valueOf=Ba);e.parseAs= +function(b,c){var d=a(c);return d.literal&&d.constant?d:function(a,c){return e.getTrusted(b,d(a,c))}};var f=e.parseAs,g=e.getTrusted,h=e.trustAs;r(ea,function(a,b){var c=O(b);e[Sa("parse_as_"+c)]=function(b){return f(a,b)};e[Sa("get_trusted_"+c)]=function(b){return g(a,b)};e[Sa("trust_as_"+c)]=function(b){return h(a,b)}});return e}]}function $d(){this.$get=["$window","$document",function(b,a){var c={},d=R((/android (\d+)/.exec(O((b.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator|| +{}).userAgent),f=a[0]||{},g=f.documentMode,h,m=/^(Moz|webkit|O|ms)(?=[A-Z])/,k=f.body&&f.body.style,l=!1,n=!1;if(k){for(var q in k)if(l=m.exec(q)){h=l[0];h=h.substr(0,1).toUpperCase()+h.substr(1);break}h||(h="WebkitOpacity"in k&&"webkit");l=!!("transition"in k||h+"Transition"in k);n=!!("animation"in k||h+"Animation"in k);!d||l&&n||(l=x(f.body.style.webkitTransition),n=x(f.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hashchange:"onhashchange"in b&&(!g||7< +g),hasEvent:function(a){if("input"==a&&9==P)return!1;if(E(c[a])){var b=f.createElement("div");c[a]="on"+a in b}return c[a]},csp:Tb(),vendorPrefix:h,transitions:l,animations:n,android:d,msie:P,msieDocumentMode:g}}]}function be(){this.$get=["$rootScope","$browser","$q","$exceptionHandler",function(b,a,c,d){function e(e,h,m){var k=c.defer(),l=k.promise,n=u(m)&&!m;h=a.defer(function(){try{k.resolve(e())}catch(a){k.reject(a),d(a)}finally{delete f[l.$$timeoutId]}n||b.$apply()},h);l.$$timeoutId=h;f[h]=k; +return l}var f={};e.cancel=function(b){return b&&b.$$timeoutId in f?(f[b.$$timeoutId].reject("canceled"),delete f[b.$$timeoutId],a.defer.cancel(b.$$timeoutId)):!1};return e}]}function pa(b,a){var c=b;P&&(V.setAttribute("href",c),c=V.href);V.setAttribute("href",c);return{href:V.href,protocol:V.protocol?V.protocol.replace(/:$/,""):"",host:V.host,search:V.search?V.search.replace(/^\?/,""):"",hash:V.hash?V.hash.replace(/^#/,""):"",hostname:V.hostname,port:V.port,pathname:"/"===V.pathname.charAt(0)?V.pathname: +"/"+V.pathname}}function Gb(b){b=x(b)?pa(b):b;return b.protocol===Fc.protocol&&b.host===Fc.host}function ce(){this.$get=Y(Q)}function ec(b){function a(d,e){if(W(d)){var f={};r(d,function(b,c){f[c]=a(c,b)});return f}return b.factory(d+c,e)}var c="Filter";this.register=a;this.$get=["$injector",function(a){return function(b){return a.get(b+c)}}];a("currency",Gc);a("date",Hc);a("filter",xe);a("json",ye);a("limitTo",ze);a("lowercase",Ae);a("number",Ic);a("orderBy",Jc);a("uppercase",Be)}function xe(){return function(b, +a,c){if(!M(b))return b;var d=typeof c,e=[];e.check=function(a){for(var b=0;bb;b=Math.abs(b);var g=b+"",h="",m=[],k=!1;if(-1!==g.indexOf("e")){var l=g.match(/([\d\.]+)e(-?)(\d+)/);l&&"-"==l[2]&& +l[3]>e+1?g="0":(h=g,k=!0)}if(k)0b)&&(h=b.toFixed(e));else{g=(g.split(Lc)[1]||"").length;E(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));g=Math.pow(10,e);b=Math.round(b*g)/g;b=(""+b).split(Lc);g=b[0];b=b[1]||"";var l=0,n=a.lgSize,q=a.gSize;if(g.length>=n+q)for(l=g.length-n,k=0;kb&&(d="-",b=-b);for(b=""+b;b.length-c)e+=c;0===e&&-12==c&&(e=12);return Mb(e,a,d)}}function ob(b,a){return function(c,d){var e=c["get"+b](),f=Da(a?"SHORT"+b:b);return d[f][e]}}function Hc(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,m= +b[8]?a.setUTCHours:a.setHours;b[9]&&(f=R(b[9]+b[10]),g=R(b[9]+b[11]));h.call(a,R(b[1]),R(b[2])-1,R(b[3]));f=R(b[4]||0)-f;g=R(b[5]||0)-g;h=R(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));m.call(a,f,g,h,b)}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,e){var f="",g=[],h,m;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;x(c)&&(c=Ce.test(c)?R(c):a(c));ub(c)&&(c=new Date(c));if(!Ma(c))return c;for(;e;)(m=De.exec(e))? +(g=g.concat(va.call(m,1)),e=g.pop()):(g.push(e),e=null);r(g,function(a){h=Ee[a];f+=h?h(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return f}}function ye(){return function(b){return oa(b,!0)}}function ze(){return function(b,a){if(!M(b)&&!x(b))return b;a=R(a);if(x(b))return a?0<=a?b.slice(0,a):b.slice(a,b.length):"";var c=[],d,e;a>b.length?a=b.length:a<-b.length&&(a=-b.length);0a||37<=a&&40>=a)||l()});if(e.hasEvent("paste"))a.on("paste cut", +l)}a.on("change",m);d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)};var n=c.ngPattern;n&&((e=n.match(/^\/(.*)\/([gim]*)$/))?(n=RegExp(e[1],e[2]),e=function(a){return na(d,"pattern",d.$isEmpty(a)||n.test(a),a)}):e=function(c){var e=b.$eval(n);if(!e||!e.test)throw z("ngPattern")("noregexp",n,e,fa(a));return na(d,"pattern",d.$isEmpty(c)||e.test(c),c)},d.$formatters.push(e),d.$parsers.push(e));if(c.ngMinlength){var q=R(c.ngMinlength);e=function(a){return na(d,"minlength",d.$isEmpty(a)|| +a.length>=q,a)};d.$parsers.push(e);d.$formatters.push(e)}if(c.ngMaxlength){var p=R(c.ngMaxlength);e=function(a){return na(d,"maxlength",d.$isEmpty(a)||a.length<=p,a)};d.$parsers.push(e);d.$formatters.push(e)}}function Nb(b,a){b="ngClass"+b;return function(){return{restrict:"AC",link:function(c,d,e){function f(b){if(!0===a||c.$index%2===a){var d=g(b||"");h?ua(b,h)||e.$updateClass(d,g(h)):e.$addClass(d)}h=$(b)}function g(a){if(M(a))return a.join(" ");if(W(a)){var b=[];r(a,function(a,c){a&&b.push(c)}); +return b.join(" ")}return a}var h;c.$watch(e[b],f,!0);e.$observe("class",function(a){f(c.$eval(e[b]))});"ngClass"!==b&&c.$watch("$index",function(d,f){var h=d&1;if(h!==f&1){var n=g(c.$eval(e[b]));h===a?e.$addClass(n):e.$removeClass(n)}})}}}}var O=function(b){return x(b)?b.toLowerCase():b},Dc=Object.prototype.hasOwnProperty,Da=function(b){return x(b)?b.toUpperCase():b},P,w,Ea,va=[].slice,Ge=[].push,ta=Object.prototype.toString,Oa=z("ng"),Ca=Q.angular||(Q.angular={}),Ra,Ia,ia=["0","0","0"];P=R((/msie (\d+)/.exec(O(navigator.userAgent))|| +[])[1]);isNaN(P)&&(P=R((/trident\/.*; rv:(\d+)/.exec(O(navigator.userAgent))||[])[1]));B.$inject=[];Ba.$inject=[];var aa=function(){return String.prototype.trim?function(b){return x(b)?b.trim():b}:function(b){return x(b)?b.replace(/^\s\s*/,"").replace(/\s\s*$/,""):b}}();Ia=9>P?function(b){b=b.nodeName?b:b[0];return b.scopeName&&"HTML"!=b.scopeName?Da(b.scopeName+":"+b.nodeName):b.nodeName}:function(b){return b.nodeName?b.nodeName:b[0].nodeName};var Vc=/[A-Z]/g,Yc={full:"1.2.15",major:1,minor:2,dot:15, +codeName:"beer-underestimating"},Ta=L.cache={},fb=L.expando="ng-"+(new Date).getTime(),he=1,Nc=Q.document.addEventListener?function(b,a,c){b.addEventListener(a,c,!1)}:function(b,a,c){b.attachEvent("on"+a,c)},Db=Q.document.removeEventListener?function(b,a,c){b.removeEventListener(a,c,!1)}:function(b,a,c){b.detachEvent("on"+a,c)};L._data=function(b){return this.cache[b[this.expando]]||{}};var fe=/([\:\-\_]+(.))/g,ge=/^moz([A-Z])/,Ab=z("jqLite"),Ha=L.prototype={ready:function(b){function a(){c||(c=!0, +b())}var c=!1;"complete"===T.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),L(Q).on("load",a))},toString:function(){var b=[];r(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?w(this[b]):w(this[this.length+b])},length:0,push:Ge,sort:[].sort,splice:[].splice},jb={};r("multiple selected checked disabled readOnly required open".split(" "),function(b){jb[O(b)]=b});var lc={};r("input select option textarea button form details".split(" "),function(b){lc[Da(b)]= +!0});r({data:hc,inheritedData:ib,scope:function(b){return w(b).data("$scope")||ib(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return w(b).data("$isolateScope")||w(b).data("$isolateScopeNoTemplate")},controller:ic,injector:function(b){return ib(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Eb,css:function(b,a,c){a=Sa(a);if(u(c))b.style[a]=c;else{var d;8>=P&&(d=b.currentStyle&&b.currentStyle[a],""===d&&(d="auto"));d=d||b.style[a];8>=P&&(d=""===d?s: +d);return d}},attr:function(b,a,c){var d=O(a);if(jb[d])if(u(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||B).specified?d:s;else if(u(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?s:b},prop:function(b,a,c){if(u(c))b[a]=c;else return b[a]},text:function(){function b(b,d){var e=a[b.nodeType];if(E(d))return e?b[e]:"";b[e]=d}var a=[];9>P?(a[1]="innerText",a[3]="nodeValue"):a[1]=a[3]="textContent"; +b.$dv="";return b}(),val:function(b,a){if(E(a)){if("SELECT"===Ia(b)&&b.multiple){var c=[];r(b.options,function(a){a.selected&&c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(E(a))return b.innerHTML;for(var c=0,d=b.childNodes;c":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"&":function(a,c,d,e){return d(a, +c)&e(a,c)},"|":function(a,c,d,e){return e(a,c)(a,c,d(a,c))},"!":function(a,c,d){return!d(a,c)}},Je={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},Lb=function(a){this.options=a};Lb.prototype={constructor:Lb,lex:function(a){this.text=a;this.index=0;this.ch=s;this.lastCh=":";this.tokens=[];var c;for(a=[];this.index=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,c,d){d=d||this.index;c=u(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw za("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.index","<=",">="))a=this.binaryFn(a,c.fn,this.relational());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.fn,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.fn,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(Za.ZERO,a.fn, +this.unary()):(a=this.expect("!"))?this.unaryFn(a.fn,this.unary()):this.primary()},fieldAccess:function(a){var c=this,d=this.expect().text,e=Bc(d,this.options,this.text);return v(function(c,d,h){return e(h||a(c,d))},{assign:function(e,g,h){return nb(a(e,h),d,g,c.text,c.options)}})},objectIndex:function(a){var c=this,d=this.expression();this.consume("]");return v(function(e,f){var g=a(e,f),h=d(e,f),m;if(!g)return s;(g=Ya(g[h],c.text))&&(g.then&&c.options.unwrapPromises)&&(m=g,"$$v"in g||(m.$$v=s,m.then(function(a){m.$$v= +a})),g=g.$$v);return g},{assign:function(e,f,g){var h=d(e,g);return Ya(a(e,g),c.text)[h]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());while(this.expect(","))}this.consume(")");var e=this;return function(f,g){for(var h=[],m=c?c(f,g):f,k=0;ka.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Mb(Math[0=P&&(c.href||c.name||c.$set("href",""),a.append(T.createComment("IE fix")));if(!c.href&&!c.xlinkHref&&!c.name)return function(a,c){var f="[object SVGAnimatedString]"===ta.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(f)||a.preventDefault()})}}}),yb={};r(jb,function(a,c){if("multiple"!=a){var d=ka("ng-"+c);yb[d]=function(){return{priority:100,link:function(a,f,g){a.$watch(g[d],function(a){g.$set(c,!!a)})}}}}});r(["src", +"srcset","href"],function(a){var c=ka("ng-"+a);yb[c]=function(){return{priority:99,link:function(d,e,f){var g=a,h=a;"href"===a&&"[object SVGAnimatedString]"===ta.call(e.prop("href"))&&(h="xlinkHref",f.$attr[h]="xlink:href",g=null);f.$observe(c,function(a){a&&(f.$set(h,a),P&&g&&e.prop(g,f[h]))})}}}});var rb={$addControl:B,$removeControl:B,$setValidity:B,$setDirty:B,$setPristine:B};Mc.$inject=["$element","$attrs","$scope","$animate"];var Oc=function(a){return["$timeout",function(c){return{name:"form", +restrict:a?"EAC":"E",controller:Mc,compile:function(){return{pre:function(a,e,f,g){if(!f.action){var h=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1};Nc(e[0],"submit",h);e.on("$destroy",function(){c(function(){Db(e[0],"submit",h)},0,!1)})}var m=e.parent().controller("form"),k=f.name||f.ngForm;k&&nb(a,k,g,k);if(m)e.on("$destroy",function(){m.$removeControl(g);k&&nb(a,k,s,k);v(g,rb)})}}}}}]},bd=Oc(),od=Oc(!0),Ke=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/, +Le=/^[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-z0-9-]+(\.[a-z0-9-]+)*$/i,Me=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,Pc={text:tb,number:function(a,c,d,e,f,g){tb(a,c,d,e,f,g);e.$parsers.push(function(a){var c=e.$isEmpty(a);if(c||Me.test(a))return e.$setValidity("number",!0),""===a?null:c?a:parseFloat(a);e.$setValidity("number",!1);return s});Fe(e,"number",c);e.$formatters.push(function(a){return e.$isEmpty(a)?"":""+a});d.min&&(a=function(a){var c=parseFloat(d.min);return na(e,"min",e.$isEmpty(a)||a>=c,a)},e.$parsers.push(a), +e.$formatters.push(a));d.max&&(a=function(a){var c=parseFloat(d.max);return na(e,"max",e.$isEmpty(a)||a<=c,a)},e.$parsers.push(a),e.$formatters.push(a));e.$formatters.push(function(a){return na(e,"number",e.$isEmpty(a)||ub(a),a)})},url:function(a,c,d,e,f,g){tb(a,c,d,e,f,g);a=function(a){return na(e,"url",e.$isEmpty(a)||Ke.test(a),a)};e.$formatters.push(a);e.$parsers.push(a)},email:function(a,c,d,e,f,g){tb(a,c,d,e,f,g);a=function(a){return na(e,"email",e.$isEmpty(a)||Le.test(a),a)};e.$formatters.push(a); +e.$parsers.push(a)},radio:function(a,c,d,e){E(d.name)&&c.attr("name",ab());c.on("click",function(){c[0].checked&&a.$apply(function(){e.$setViewValue(d.value)})});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e){var f=d.ngTrueValue,g=d.ngFalseValue;x(f)||(f=!0);x(g)||(g=!1);c.on("click",function(){a.$apply(function(){e.$setViewValue(c[0].checked)})});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return a!==f}; +e.$formatters.push(function(a){return a===f});e.$parsers.push(function(a){return a?f:g})},hidden:B,button:B,submit:B,reset:B,file:B},bc=["$browser","$sniffer",function(a,c){return{restrict:"E",require:"?ngModel",link:function(d,e,f,g){g&&(Pc[O(f.type)]||Pc.text)(d,e,f,g,c,a)}}}],qb="ng-valid",pb="ng-invalid",Ka="ng-pristine",sb="ng-dirty",Ne=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate",function(a,c,d,e,f,g){function h(a,c){c=c?"-"+eb(c,"-"):"";g.removeClass(e,(a?pb:qb)+c); +g.addClass(e,(a?qb:pb)+c)}this.$modelValue=this.$viewValue=Number.NaN;this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$name=d.name;var m=f(d.ngModel),k=m.assign;if(!k)throw z("ngModel")("nonassign",d.ngModel,fa(e));this.$render=B;this.$isEmpty=function(a){return E(a)||""===a||null===a||a!==a};var l=e.inheritedData("$formController")||rb,n=0,q=this.$error={};e.addClass(Ka);h(!0);this.$setValidity=function(a,c){q[a]!== +!c&&(c?(q[a]&&n--,n||(h(!0),this.$valid=!0,this.$invalid=!1)):(h(!1),this.$invalid=!0,this.$valid=!1,n++),q[a]=!c,h(c,a),l.$setValidity(a,c,this))};this.$setPristine=function(){this.$dirty=!1;this.$pristine=!0;g.removeClass(e,sb);g.addClass(e,Ka)};this.$setViewValue=function(d){this.$viewValue=d;this.$pristine&&(this.$dirty=!0,this.$pristine=!1,g.removeClass(e,Ka),g.addClass(e,sb),l.$setDirty());r(this.$parsers,function(a){d=a(d)});this.$modelValue!==d&&(this.$modelValue=d,k(a,d),r(this.$viewChangeListeners, +function(a){try{a()}catch(d){c(d)}}))};var p=this;a.$watch(function(){var c=m(a);if(p.$modelValue!==c){var d=p.$formatters,e=d.length;for(p.$modelValue=c;e--;)c=d[e](c);p.$viewValue!==c&&(p.$viewValue=c,p.$render())}return c})}],Dd=function(){return{require:["ngModel","^?form"],controller:Ne,link:function(a,c,d,e){var f=e[0],g=e[1]||rb;g.$addControl(f);a.$on("$destroy",function(){g.$removeControl(f)})}}},Fd=Y({require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}), +cc=function(){return{require:"?ngModel",link:function(a,c,d,e){if(e){d.required=!0;var f=function(a){if(d.required&&e.$isEmpty(a))e.$setValidity("required",!1);else return e.$setValidity("required",!0),a};e.$formatters.push(f);e.$parsers.unshift(f);d.$observe("required",function(){f(e.$viewValue)})}}}},Ed=function(){return{require:"ngModel",link:function(a,c,d,e){var f=(a=/\/(.*)\//.exec(d.ngList))&&RegExp(a[1])||d.ngList||",";e.$parsers.push(function(a){if(!E(a)){var c=[];a&&r(a.split(f),function(a){a&& +c.push(aa(a))});return c}});e.$formatters.push(function(a){return M(a)?a.join(", "):s});e.$isEmpty=function(a){return!a||!a.length}}}},Oe=/^(true|false|\d+)$/,Gd=function(){return{priority:100,compile:function(a,c){return Oe.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",a)})}}}},gd=sa(function(a,c,d){c.addClass("ng-binding").data("$binding",d.ngBind);a.$watch(d.ngBind,function(a){c.text(a==s?"":a)})}),id=["$interpolate", +function(a){return function(c,d,e){c=a(d.attr(e.$attr.ngBindTemplate));d.addClass("ng-binding").data("$binding",c);e.$observe("ngBindTemplate",function(a){d.text(a)})}}],hd=["$sce","$parse",function(a,c){return function(d,e,f){e.addClass("ng-binding").data("$binding",f.ngBindHtml);var g=c(f.ngBindHtml);d.$watch(function(){return(g(d)||"").toString()},function(c){e.html(a.getTrustedHtml(g(d))||"")})}}],jd=Nb("",!0),ld=Nb("Odd",0),kd=Nb("Even",1),md=sa({compile:function(a,c){c.$set("ngCloak",s);a.removeClass("ng-cloak")}}), +nd=[function(){return{scope:!0,controller:"@",priority:500}}],dc={};r("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var c=ka("ng-"+a);dc[c]=["$parse",function(d){return{compile:function(e,f){var g=d(f[c]);return function(c,d,e){d.on(O(a),function(a){c.$apply(function(){g(c,{$event:a})})})}}}}]});var qd=["$animate",function(a){return{transclude:"element",priority:600,terminal:!0,restrict:"A", +$$tlb:!0,link:function(c,d,e,f,g){var h,m,k;c.$watch(e.ngIf,function(f){Pa(f)?m||(m=c.$new(),g(m,function(c){c[c.length++]=T.createComment(" end ngIf: "+e.ngIf+" ");h={clone:c};a.enter(c,d.parent(),d)})):(k&&(k.remove(),k=null),m&&(m.$destroy(),m=null),h&&(k=xb(h.clone),a.leave(k,function(){k=null}),h=null))})}}}],rd=["$http","$templateCache","$anchorScroll","$animate","$sce",function(a,c,d,e,f){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:Ca.noop,compile:function(g, +h){var m=h.ngInclude||h.src,k=h.onload||"",l=h.autoscroll;return function(g,h,p,r,s){var v=0,A,w,F,y=function(){w&&(w.remove(),w=null);A&&(A.$destroy(),A=null);F&&(e.leave(F,function(){w=null}),w=F,F=null)};g.$watch(f.parseAsResourceUrl(m),function(f){var m=function(){!u(l)||l&&!g.$eval(l)||d()},p=++v;f?(a.get(f,{cache:c}).success(function(a){if(p===v){var c=g.$new();r.template=a;a=s(c,function(a){y();e.enter(a,null,h,m)});A=c;F=a;A.$emit("$includeContentLoaded");g.$eval(k)}}).error(function(){p=== +v&&y()}),g.$emit("$includeContentRequested")):(y(),r.template=null)})}}}}],Hd=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(c,d,e,f){d.html(f.template);a(d.contents())(c)}}}],sd=sa({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),td=sa({terminal:!0,priority:1E3}),ud=["$locale","$interpolate",function(a,c){var d=/{}/g;return{restrict:"EA",link:function(e,f,g){var h=g.count,m=g.$attr.when&&f.attr(g.$attr.when),k=g.offset|| +0,l=e.$eval(m)||{},n={},q=c.startSymbol(),p=c.endSymbol(),t=/^when(Minus)?(.+)$/;r(g,function(a,c){t.test(c)&&(l[O(c.replace("when","").replace("Minus","-"))]=f.attr(g.$attr[c]))});r(l,function(a,e){n[e]=c(a.replace(d,q+h+"-"+k+p))});e.$watch(function(){var c=parseFloat(e.$eval(h));if(isNaN(c))return"";c in l||(c=a.pluralCat(c-k));return n[c](e,f,!0)},function(a){f.text(a)})}}}],vd=["$parse","$animate",function(a,c){var d=z("ngRepeat");return{transclude:"element",priority:1E3,terminal:!0,$$tlb:!0, +link:function(e,f,g,h,m){var k=g.ngRepeat,l=k.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),n,q,p,t,s,v,u={$id:Ga};if(!l)throw d("iexp",k);g=l[1];h=l[2];(l=l[3])?(n=a(l),q=function(a,c,d){v&&(u[v]=a);u[s]=c;u.$index=d;return n(e,u)}):(p=function(a,c){return Ga(c)},t=function(a){return a});l=g.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/);if(!l)throw d("iidexp",g);s=l[3]||l[1];v=l[2];var J={};e.$watchCollection(h,function(a){var g,h,l=f[0],n,u={},A,I,x,B,E,K, +z=[];if($a(a))E=a,n=q||p;else{n=q||t;E=[];for(x in a)a.hasOwnProperty(x)&&"$"!=x.charAt(0)&&E.push(x);E.sort()}A=E.length;h=z.length=E.length;for(g=0;gD;)z.pop().element.remove()}for(;x.length>C;)x.pop()[0].element.remove()}var k;if(!(k=t.match(d)))throw Pe("iexp",t,fa(f));var l=c(k[2]||k[1]),m=k[4]||k[6],n=k[5],q=c(k[3]||""),r= +c(k[2]?k[1]:m),y=c(k[7]),w=k[8]?c(k[8]):null,x=[[{element:f,label:""}]];v&&(a(v)(e),v.removeClass("ng-scope"),v.remove());f.empty();f.on("change",function(){e.$apply(function(){var a,c=y(e)||[],d={},h,k,l,q,t,v,u;if(p)for(k=[],q=0,v=x.length;q@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}.ng-animate-block-transitions{transition:0s all!important;-webkit-transition:0s all!important;}'); //# sourceMappingURL=angular.min.js.map diff --git a/awx/ui/static/lib/angular/angular.min.js.gzip b/awx/ui/static/lib/angular/angular.min.js.gzip index 87491dbd885f15072ea7b35ca2c31ed72fa0730e..d8b9b2772ce76ce1b038dd6446bc525cedd94733 100644 GIT binary patch literal 38065 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 V3$pLMS8%>6JHG&4qpT*A0RVF(^mzaP literal 38454 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%0A8}ByYXXRc>IsdK3`bfEy79b$2pL(|j_i6uwdu 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","<=",">=","&&","||","&","|","!","ESCAPE","lex","ch","lastCh","tokens","is","readString","peek","readNumber","isIdent","readIdent","was","isWhitespace","ch2","ch3","fn2","fn3","throwError","chars","isExpOperator","start","end","colStr","peekCh","ident","lastDot","peekIndex","methodName","quote","rawString","hex","rep","ZERO","Parser.ZERO","assignment","logicalOR","functionCall","fieldAccess","objectIndex","filterChain","this.filterChain","primary","statements","expect","consume","arrayDeclaration","msg","peekToken","e1","e2","e3","e4","t","unaryFn","right","ternaryFn","left","middle","binaryFn","statement","argsFn","fnInvoke","ternary","logicalAND","equality","relational","additive","multiplicative","unary","field","indexFn","o","safe","contextGetter","fnPtr","elementFns","allConstant","elementFn","keyValues","ampmGetter","getHours","AMPMS","timeZoneGetter","zone","getTimezoneOffset","paddedZone","htmlAnchorDirective","xlinkHref","ngAttributeAliasDirectives","propName","normalized","ngBooleanAttrWatchAction","formDirectiveFactory","isNgForm","formDirective","formElement","action","preventDefaultListener","parentFormCtrl","alias","ngFormDirective","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","DATE_REGEXP","DATETIMELOCAL_REGEXP","WEEK_REGEXP","MONTH_REGEXP","TIME_REGEXP","inputType","weekParser","isoWeek","week","addDays","numberInputType","urlInputType","urlValidator","emailInputType","emailValidator","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrl.$isEmpty","inputDirective","NgModelController","$modelValue","$viewChangeListeners","ngModelGet","ngModel","ngModelSet","this.$isEmpty","inheritedData","this.$setValidity","this.$setPristine","this.$setViewValue","ngModelWatch","formatters","ngModelDirective","ctrls","modelCtrl","formCtrl","ngChangeDirective","ngChange","requiredDirective","required","ngListDirective","ngList","viewValue","CONSTANT_VALUE_REGEXP","ngValueDirective","tpl","tplAttr","ngValue","ngValueConstantLink","ngValueLink","valueWatchAction","ngBindDirective","ngBind","ngBindWatchAction","ngBindTemplateDirective","ngBindTemplate","ngBindHtmlDirective","ngBindHtml","getStringValue","ngBindHtmlWatchAction","getTrustedHtml","ngClassDirective","ngClassOddDirective","ngClassEvenDirective","ngCloakDirective","ngControllerDirective","ngEventDirectives","ngIfDirective","$transclude","previousElements","ngIf","ngIfWatchAction","ngIncludeDirective","$anchorScroll","srcExp","ngInclude","onloadExp","autoScrollExp","autoscroll","previousElement","currentElement","cleanupLastIncludeContent","parseAsResourceUrl","ngIncludeWatchAction","afterAnimation","thisChangeId","newScope","ngIncludeFillContentDirective","$compile","ngInitDirective","ngInit","ngNonBindableDirective","ngPluralizeDirective","BRACE","numberExp","whenExp","whens","whensExpFns","isWhen","attributeName","ngPluralizeWatch","ngPluralizeWatchAction","ngRepeatDirective","ngRepeatMinErr","ngRepeat","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","valueIdentifier","keyIdentifier","hashFnLocals","lhs","rhs","trackByExp","lastBlockMap","ngRepeatAction","collection","previousNode","nextNode","nextBlockMap","arrayLength","collectionKeys","nextBlockOrder","trackByIdFn","trackById","$first","$last","$middle","$odd","$even","ngShowDirective","ngShow","ngShowWatchAction","ngHideDirective","ngHide","ngHideWatchAction","ngStyleDirective","ngStyle","ngStyleWatchAction","newStyles","oldStyles","ngSwitchDirective","ngSwitchController","cases","selectedTranscludes","selectedElements","selectedScopes","ngSwitch","ngSwitchWatchAction","change","selectedTransclude","selectedScope","caseElement","anchor","ngSwitchWhenDirective","ngSwitchWhen","ngSwitchDefaultDirective","ngTranscludeDirective","$attrs","scriptDirective","ngOptionsMinErr","ngOptionsDirective","selectDirective","NG_OPTIONS_REGEXP","nullModelCtrl","optionsMap","ngModelCtrl","unknownOption","databound","init","self.init","ngModelCtrl_","nullOption_","unknownOption_","addOption","self.addOption","removeOption","self.removeOption","hasOption","renderUnknownOption","self.renderUnknownOption","unknownVal","self.hasOption","setupAsSingle","selectElement","selectCtrl","ngModelCtrl.$render","emptyOption","setupAsMultiple","lastView","items","selectMultipleWatch","setupAsOptions","render","optionGroups","optionGroupNames","optionGroupName","optionGroup","existingParent","existingOptions","modelValue","valuesFn","keyName","groupIndex","selectedSet","lastElement","trackFn","trackIndex","valueName","groupByFn","modelCast","label","displayFn","nullOption","groupLength","optionGroupsCache","optGroupTemplate","existingOption","optionTemplate","optionsExp","track","optionElement","ngOptions","ngModelCtrl.$isEmpty","optionDirective","nullSelectCtrl","selectCtrlName","interpolateWatchAction","styleDirective","publishExternalAPI","ngModule","$$csp"] +"names":["window","document","undefined","minErr","isArrayLike","obj","isWindow","length","nodeType","isString","isArray","forEach","iterator","context","key","isFunction","hasOwnProperty","call","sortedKeys","keys","push","sort","forEachSorted","i","reverseParams","iteratorFn","value","nextUid","index","uid","digit","charCodeAt","join","String","fromCharCode","unshift","setHashKey","h","$$hashKey","extend","dst","arguments","int","str","parseInt","inherit","parent","extra","noop","identity","$","valueFn","isUndefined","isDefined","isObject","isNumber","isDate","toString","isRegExp","location","alert","setInterval","isElement","node","nodeName","prop","attr","find","map","results","list","indexOf","array","arrayRemove","splice","copy","source","destination","$evalAsync","$watch","ngMinErr","Date","getTime","RegExp","shallowCopy","src","charAt","equals","o1","o2","t1","t2","keySet","csp","securityPolicy","isActive","querySelector","bind","self","fn","curryArgs","slice","startIndex","apply","concat","toJsonReplacer","val","toJson","pretty","JSON","stringify","fromJson","json","parse","toBoolean","v","lowercase","startingTag","element","jqLite","clone","empty","e","elemHtml","append","html","TEXT_NODE","match","replace","tryDecodeURIComponent","decodeURIComponent","parseKeyValue","keyValue","key_value","split","toKeyValue","parts","arrayValue","encodeUriQuery","encodeUriSegment","pctEncodeSpaces","encodeURIComponent","angularInit","bootstrap","elements","appElement","module","names","NG_APP_CLASS_REGEXP","name","getElementById","querySelectorAll","exec","className","attributes","modules","doBootstrap","injector","tag","$provide","createInjector","invoke","scope","compile","animate","$apply","data","NG_DEFER_BOOTSTRAP","test","angular","resumeBootstrap","angular.resumeBootstrap","extraModules","snake_case","separator","SNAKE_CASE_REGEXP","letter","pos","toLowerCase","assertArg","arg","reason","assertArgFn","acceptArrayAnnotation","constructor","assertNotHasOwnProperty","getter","path","bindFnToScope","lastInstance","len","getBlockElements","nodes","startNode","endNode","nextSibling","setupModuleLoader","$injectorMinErr","$$minErr","factory","requires","configFn","invokeLater","provider","method","insertMethod","invokeQueue","moduleInstance","runBlocks","config","run","block","publishExternalAPI","version","uppercase","angularModule","$LocaleProvider","ngModule","$$SanitizeUriProvider","$CompileProvider","directive","htmlAnchorDirective","inputDirective","formDirective","scriptDirective","selectDirective","styleDirective","optionDirective","ngBindDirective","ngBindHtmlDirective","ngBindTemplateDirective","ngClassDirective","ngClassEvenDirective","ngClassOddDirective","ngCloakDirective","ngControllerDirective","ngFormDirective","ngHideDirective","ngIfDirective","ngIncludeDirective","ngInitDirective","ngNonBindableDirective","ngPluralizeDirective","ngRepeatDirective","ngShowDirective","ngStyleDirective","ngSwitchDirective","ngSwitchWhenDirective","ngSwitchDefaultDirective","ngOptionsDirective","ngTranscludeDirective","ngModelDirective","ngListDirective","ngChangeDirective","requiredDirective","ngValueDirective","ngIncludeFillContentDirective","ngAttributeAliasDirectives","ngEventDirectives","$AnchorScrollProvider","$AnimateProvider","$BrowserProvider","$CacheFactoryProvider","$ControllerProvider","$DocumentProvider","$ExceptionHandlerProvider","$FilterProvider","$InterpolateProvider","$IntervalProvider","$HttpProvider","$HttpBackendProvider","$LocationProvider","$LogProvider","$ParseProvider","$RootScopeProvider","$QProvider","$SceProvider","$SceDelegateProvider","$SnifferProvider","$TemplateCacheProvider","$TimeoutProvider","$WindowProvider","$$RAFProvider","$$AsyncCallbackProvider","camelCase","SPECIAL_CHARS_REGEXP","_","offset","toUpperCase","MOZ_HACK_REGEXP","jqLitePatchJQueryRemove","dispatchThis","filterElems","getterIfNoArguments","removePatch","param","filter","fireEvent","set","setIndex","setLength","childIndex","children","shift","triggerHandler","childLength","jQuery","originalJqFn","$original","JQLite","trim","jqLiteMinErr","div","createElement","innerHTML","removeChild","firstChild","jqLiteAddNodes","childNodes","fragment","createDocumentFragment","jqLiteClone","cloneNode","jqLiteDealoc","jqLiteRemoveData","jqLiteOff","type","unsupported","events","jqLiteExpandoStore","handle","eventHandler","removeEventListenerFn","expandoId","jqName","expandoStore","jqCache","$destroy","jqId","jqLiteData","isSetter","keyDefined","isSimpleGetter","jqLiteHasClass","selector","getAttribute","jqLiteRemoveClass","cssClasses","setAttribute","cssClass","jqLiteAddClass","existingClasses","root","jqLiteController","jqLiteInheritedData","ii","parentNode","host","jqLiteEmpty","getBooleanAttrName","booleanAttr","BOOLEAN_ATTR","BOOLEAN_ELEMENTS","createEventHandler","event","preventDefault","event.preventDefault","returnValue","stopPropagation","event.stopPropagation","cancelBubble","target","srcElement","defaultPrevented","prevent","isDefaultPrevented","event.isDefaultPrevented","eventHandlersCopy","msie","elem","hashKey","objType","HashMap","put","annotate","$inject","fnText","STRIP_COMMENTS","argDecl","FN_ARGS","FN_ARG_SPLIT","FN_ARG","all","underscore","last","modulesToLoad","supportObject","delegate","provider_","providerInjector","instantiate","$get","providerCache","providerSuffix","factoryFn","loadModules","moduleFn","loadedModules","get","_runBlocks","_invokeQueue","invokeArgs","message","stack","createInternalInjector","cache","getService","serviceName","INSTANTIATING","err","locals","args","Type","Constructor","returnedValue","prototype","instance","has","service","$injector","constant","instanceCache","decorator","decorFn","origProvider","orig$get","origProvider.$get","origInstance","instanceInjector","servicename","autoScrollingEnabled","disableAutoScrolling","this.disableAutoScrolling","$window","$location","$rootScope","getFirstAnchor","result","scroll","hash","elm","scrollIntoView","getElementsByName","scrollTo","autoScrollWatch","autoScrollWatchAction","$$rAF","$timeout","supported","Browser","$log","$sniffer","completeOutstandingRequest","outstandingRequestCount","outstandingRequestCallbacks","pop","error","startPoller","interval","setTimeout","check","pollFns","pollFn","pollTimeout","fireUrlChange","newLocation","lastBrowserUrl","url","urlChangeListeners","listener","rawDocument","history","clearTimeout","pendingDeferIds","isMock","$$completeOutstandingRequest","$$incOutstandingRequestCount","self.$$incOutstandingRequestCount","notifyWhenNoOutstandingRequests","self.notifyWhenNoOutstandingRequests","callback","addPollFn","self.addPollFn","href","baseElement","self.url","replaceState","pushState","urlChangeInit","onUrlChange","self.onUrlChange","on","hashchange","baseHref","self.baseHref","lastCookies","lastCookieString","cookiePath","cookies","self.cookies","cookieLength","cookie","escape","warn","cookieArray","unescape","substring","defer","self.defer","delay","timeoutId","cancel","self.defer.cancel","deferId","$document","this.$get","cacheFactory","cacheId","options","refresh","entry","freshEnd","staleEnd","n","link","p","nextEntry","prevEntry","caches","size","stats","capacity","Number","MAX_VALUE","lruHash","lruEntry","remove","removeAll","destroy","info","cacheFactory.info","cacheFactory.get","$cacheFactory","$$sanitizeUriProvider","hasDirectives","Suffix","COMMENT_DIRECTIVE_REGEXP","CLASS_DIRECTIVE_REGEXP","TABLE_CONTENT_REGEXP","EVENT_HANDLER_ATTR_REGEXP","this.directive","registerDirective","directiveFactory","$exceptionHandler","directives","priority","require","controller","restrict","aHrefSanitizationWhitelist","this.aHrefSanitizationWhitelist","regexp","imgSrcSanitizationWhitelist","this.imgSrcSanitizationWhitelist","$interpolate","$http","$templateCache","$parse","$controller","$sce","$animate","$$sanitizeUri","$compileNodes","transcludeFn","maxPriority","ignoreDirective","previousCompileContext","nodeValue","wrap","compositeLinkFn","compileNodes","safeAddClass","publicLinkFn","cloneConnectFn","transcludeControllers","$linkNode","JQLitePrototype","eq","$element","addClass","nodeList","$rootElement","boundTranscludeFn","childLinkFn","$node","childScope","nodeListLength","stableNodeList","Array","linkFns","nodeLinkFn","$new","childTranscludeFn","transclude","createBoundTranscludeFn","attrs","linkFnFound","Attributes","collectDirectives","applyDirectivesToNode","terminal","transcludedScope","cloneFn","controllers","scopeCreated","$$transcluded","attrsMap","$attr","addDirective","directiveNormalize","nodeName_","nName","nAttrs","j","jj","attrStartName","attrEndName","specified","ngAttrName","NG_ATTR_BINDING","substr","directiveNName","addAttrInterpolateDirective","addTextInterpolateDirective","byPriority","groupScan","attrStart","attrEnd","depth","hasAttribute","$compileMinErr","groupElementsLinkFnWrapper","linkFn","compileNode","templateAttrs","jqCollection","originalReplaceDirective","preLinkFns","postLinkFns","addLinkFns","pre","post","newIsolateScopeDirective","$$isolateScope","cloneAndAnnotateFn","getControllers","elementControllers","retrievalMethod","optional","directiveName","linkNode","controllersBoundTransclude","cloneAttachFn","hasElementTranscludeDirective","isolateScope","$$element","LOCAL_REGEXP","templateDirective","$$originalDirective","definition","scopeName","attrName","mode","lastValue","parentGet","parentSet","compare","$$isolateBindings","$observe","$$observers","$$scope","literal","a","b","assign","parentValueWatch","parentValue","controllerDirectives","controllerInstance","controllerAs","$scope","scopeToChild","template","templateUrl","terminalPriority","newScopeDirective","nonTlbTranscludeDirective","hasTranscludeDirective","$compileNode","$template","$$start","$$end","directiveValue","assertNoDuplicate","$$tlb","createComment","replaceWith","replaceDirective","contents","denormalizeTemplate","directiveTemplateContents","newTemplateAttrs","templateDirectives","unprocessedDirectives","markDirectivesAsIsolate","mergeTemplateAttributes","compileTemplateUrl","Math","max","tDirectives","startAttrName","endAttrName","srcAttr","dstAttr","$set","table","tAttrs","linkQueue","afterTemplateNodeLinkFn","afterTemplateChildLinkFn","beforeTemplateCompileNode","origAsyncDirective","derivedSyncDirective","getTrustedResourceUrl","success","content","childBoundTranscludeFn","tempTemplateAttrs","beforeTemplateLinkNode","linkRootElement","oldClasses","response","code","headers","delayedNodeLinkFn","ignoreChildLinkFn","rootElement","diff","what","previousDirective","text","interpolateFn","textInterpolateLinkFn","bindings","interpolateFnWatchAction","getTrustedContext","attrNormalizedName","HTML","RESOURCE_URL","attrInterpolatePreLinkFn","$$inter","newValue","oldValue","$updateClass","elementsToRemove","newNode","firstElementToRemove","removeCount","j2","replaceChild","appendChild","expando","k","kk","annotation","$addClass","classVal","$removeClass","removeClass","newClasses","toAdd","tokenDifference","toRemove","setClass","writeAttr","booleanKey","removeAttr","listeners","startSymbol","endSymbol","PREFIX_REGEXP","str1","str2","values","tokens1","tokens2","token","CNTRL_REG","register","this.register","expression","identifier","exception","cause","parseHeaders","parsed","line","headersGetter","headersObj","transformData","fns","JSON_START","JSON_END","PROTECTION_PREFIX","CONTENT_TYPE_APPLICATION_JSON","defaults","d","interceptorFactories","interceptors","responseInterceptorFactories","responseInterceptors","$httpBackend","$browser","$q","requestConfig","transformResponse","resp","status","reject","transformRequest","mergeHeaders","execHeaders","headerContent","headerFn","header","defHeaders","reqHeaders","defHeaderName","reqHeaderName","common","lowercaseDefHeaderName","xsrfValue","urlIsSameOrigin","xsrfCookieName","xsrfHeaderName","chain","serverRequest","reqData","withCredentials","sendReq","then","promise","when","reversedInterceptors","interceptor","request","requestError","responseError","thenFn","rejectFn","promise.success","promise.error","done","headersString","resolvePromise","$$phase","deferred","resolve","removePendingReq","idx","pendingRequests","cachedResp","buildUrl","params","defaultCache","timeout","responseType","interceptorFactory","responseFn","createShortMethods","createShortMethodsWithData","createXhr","XMLHttpRequest","ActiveXObject","createHttpBackend","callbacks","$browserDefer","jsonpReq","script","doneWrapper","onreadystatechange","onload","onerror","body","script.onreadystatechange","readyState","script.onerror","ABORTED","timeoutRequest","jsonpDone","xhr","abort","completeRequest","urlResolve","protocol","callbackId","counter","open","setRequestHeader","xhr.onreadystatechange","responseHeaders","getAllResponseHeaders","responseText","send","this.startSymbol","this.endSymbol","mustHaveExpression","trustedContext","endIndex","hasInterpolation","startSymbolLength","exp","endSymbolLength","$interpolateMinErr","part","getTrusted","valueOf","newErr","$interpolate.startSymbol","$interpolate.endSymbol","count","invokeApply","clearInterval","iteration","skipApply","$$intervalId","tick","notify","intervals","interval.cancel","short","pluralCat","num","encodePath","segments","parseAbsoluteUrl","absoluteUrl","locationObj","appBase","parsedUrl","$$protocol","$$host","hostname","$$port","port","DEFAULT_PORTS","parseAppUrl","relativeUrl","prefixed","$$path","pathname","$$search","search","$$hash","beginsWith","begin","whole","stripHash","stripFile","lastIndexOf","LocationHtml5Url","basePrefix","$$html5","appBaseNoFile","$$parse","this.$$parse","pathUrl","$locationMinErr","$$compose","this.$$compose","$$url","$$absUrl","$$rewrite","this.$$rewrite","appUrl","prevAppUrl","LocationHashbangUrl","hashPrefix","withoutBaseUrl","withoutHashUrl","windowsFilePathExp","firstPathSegmentMatch","LocationHashbangInHtml5Url","locationGetter","property","locationGetterSetter","preprocess","html5Mode","this.hashPrefix","prefix","this.html5Mode","afterLocationChange","oldUrl","$broadcast","absUrl","initialUrl","LocationMode","ctrlKey","metaKey","which","absHref","animVal","rewrittenUrl","newUrl","$digest","changeCounter","$locationWatch","currentReplace","$$replace","debug","debugEnabled","this.debugEnabled","flag","formatError","Error","sourceURL","consoleLog","console","logFn","log","hasApply","arg1","arg2","ensureSafeMemberName","fullExpression","$parseMinErr","ensureSafeObject","setter","setValue","fullExp","propertyObj","unwrapPromises","promiseWarning","$$v","cspSafeGetterFn","key0","key1","key2","key3","key4","cspSafePromiseEnabledGetter","pathVal","cspSafeGetter","simpleGetterFn1","simpleGetterFn2","getterFn","getterFnCache","pathKeys","pathKeysLength","evaledFnGetter","Function","$parseOptions","this.unwrapPromises","logPromiseWarnings","this.logPromiseWarnings","$filter","promiseWarningCache","parsedExpression","lexer","Lexer","parser","Parser","qFactory","nextTick","exceptionHandler","defaultCallback","defaultErrback","pending","ref","createInternalRejectedPromise","progress","errback","progressback","wrappedCallback","wrappedErrback","wrappedProgressback","catch","finally","makePromise","resolved","handleCallback","isResolved","callbackOutput","promises","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","webkitCancelRequestAnimationFrame","rafSupported","raf","id","timer","TTL","$rootScopeMinErr","lastDirtyWatch","digestTtl","this.digestTtl","Scope","$id","$parent","$$watchers","$$nextSibling","$$prevSibling","$$childHead","$$childTail","$root","$$destroyed","$$asyncQueue","$$postDigestQueue","$$listeners","$$listenerCount","beginPhase","phase","compileToFn","decrementListenerCount","current","initWatchVal","isolate","child","ChildScope","watchExp","objectEquality","watcher","listenFn","watcher.fn","newVal","oldVal","originalFn","$watchCollection","veryOldValue","trackVeryOldValue","changeDetected","objGetter","internalArray","internalObject","initRun","oldLength","$watchCollectionWatch","newLength","$watchCollectionAction","watch","watchers","asyncQueue","postDigestQueue","dirty","ttl","watchLog","logIdx","logMsg","asyncTask","$eval","isNaN","next","expr","$$postDigest","$on","namedListeners","$emit","listenerArgs","array1","currentScope","sanitizeUri","uri","isImage","regex","normalizedVal","adjustMatcher","matcher","$sceMinErr","adjustMatchers","matchers","adjustedMatchers","SCE_CONTEXTS","resourceUrlWhitelist","resourceUrlBlacklist","this.resourceUrlWhitelist","this.resourceUrlBlacklist","generateHolderType","Base","holderType","trustedValue","$$unwrapTrustedValue","this.$$unwrapTrustedValue","holderType.prototype.valueOf","holderType.prototype.toString","htmlSanitizer","trustedValueHolderBase","byType","CSS","URL","JS","trustAs","maybeTrusted","allowed","enabled","this.enabled","$sceDelegate","msieDocumentMode","sce","isEnabled","sce.isEnabled","sce.getTrusted","parseAs","sce.parseAs","sceParseAsTrusted","enumValue","lName","eventSupport","android","userAgent","navigator","boxee","documentMode","vendorPrefix","vendorRegex","bodyStyle","style","transitions","animations","webkitTransition","webkitAnimation","hasEvent","divElm","deferreds","$$timeoutId","timeout.cancel","base","urlParsingNode","requestUrl","originUrl","filters","suffix","currencyFilter","dateFilter","filterFilter","jsonFilter","limitToFilter","lowercaseFilter","numberFilter","orderByFilter","uppercaseFilter","comparator","comparatorType","predicates","predicates.check","objKey","filtered","$locale","formats","NUMBER_FORMATS","amount","currencySymbol","CURRENCY_SYM","formatNumber","PATTERNS","GROUP_SEP","DECIMAL_SEP","number","fractionSize","pattern","groupSep","decimalSep","isFinite","isNegative","abs","numStr","formatedText","hasExponent","toFixed","fractionLen","min","minFrac","maxFrac","pow","round","fraction","lgroup","lgSize","group","gSize","negPre","posPre","negSuf","posSuf","padNumber","digits","neg","dateGetter","date","dateStrGetter","shortForm","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","object","input","limit","out","sortPredicate","reverseOrder","reverseComparator","comp","descending","v1","v2","predicate","arrayCopy","ngDirective","FormController","toggleValidCss","isValid","validationErrorKey","INVALID_CLASS","VALID_CLASS","form","parentForm","nullFormCtrl","invalidCount","errors","$error","controls","$name","ngForm","$dirty","$pristine","$valid","$invalid","$addControl","PRISTINE_CLASS","form.$addControl","control","$removeControl","form.$removeControl","queue","validationToken","$setValidity","form.$setValidity","$setDirty","form.$setDirty","DIRTY_CLASS","$setPristine","form.$setPristine","validate","ctrl","validatorName","validity","addNativeHtml5Validators","validator","badInput","customError","typeMismatch","valueMissing","$parsers","$formatters","textInputType","composing","ngTrim","$viewValue","$setViewValue","deferListener","keyCode","$render","ctrl.$render","$isEmpty","ngPattern","patternValidator","patternObj","ngMinlength","minlength","minLengthValidator","ngMaxlength","maxlength","maxLengthValidator","classDirective","ngClassWatchAction","$index","flattenClasses","classes","old$index","mod","Object","addEventListenerFn","addEventListener","attachEvent","removeEventListener","detachEvent","_data","JQLite._data","ready","trigger","fired","removeAttribute","css","currentStyle","lowercasedName","getNamedItem","ret","getText","textProp","NODE_TYPE_TEXT_PROPERTY","$dv","multiple","option","selected","onFn","eventFns","contains","compareDocumentPosition","adown","documentElement","bup","eventmap","related","relatedTarget","one","off","replaceNode","insertBefore","contentDocument","prepend","wrapNode","after","newElement","toggleClass","condition","classCondition","nextElementSibling","getElementsByTagName","eventName","eventData","arg3","unbind","$animateMinErr","$$selectors","classNameFilter","this.classNameFilter","$$classNameFilter","$$asyncCallback","enter","leave","move","add","PATH_MATCH","paramValue","OPERATORS","null","true","false","+","-","*","/","%","^","===","!==","==","!=","<",">","<=",">=","&&","||","&","|","!","ESCAPE","lex","ch","lastCh","tokens","is","readString","peek","readNumber","isIdent","readIdent","was","isWhitespace","ch2","ch3","fn2","fn3","throwError","chars","isExpOperator","start","end","colStr","peekCh","ident","lastDot","peekIndex","methodName","quote","rawString","hex","rep","ZERO","Parser.ZERO","assignment","logicalOR","functionCall","fieldAccess","objectIndex","filterChain","this.filterChain","primary","statements","expect","consume","arrayDeclaration","msg","peekToken","e1","e2","e3","e4","t","unaryFn","right","ternaryFn","left","middle","binaryFn","statement","argsFn","fnInvoke","ternary","logicalAND","equality","relational","additive","multiplicative","unary","field","indexFn","o","safe","contextGetter","fnPtr","elementFns","allConstant","elementFn","keyValues","ampmGetter","getHours","AMPMS","timeZoneGetter","zone","getTimezoneOffset","paddedZone","xlinkHref","propName","normalized","ngBooleanAttrWatchAction","formDirectiveFactory","isNgForm","formElement","action","preventDefaultListener","parentFormCtrl","alias","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","inputType","numberInputType","minValidator","maxValidator","urlInputType","urlValidator","emailInputType","emailValidator","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrl.$isEmpty","NgModelController","$modelValue","NaN","$viewChangeListeners","ngModelGet","ngModel","ngModelSet","this.$isEmpty","inheritedData","this.$setValidity","this.$setPristine","this.$setViewValue","ngModelWatch","formatters","ctrls","modelCtrl","formCtrl","ngChange","required","ngList","viewValue","CONSTANT_VALUE_REGEXP","tpl","tplAttr","ngValue","ngValueConstantLink","ngValueLink","valueWatchAction","ngBind","ngBindWatchAction","ngBindTemplate","ngBindHtml","getStringValue","ngBindHtmlWatchAction","getTrustedHtml","$transclude","previousElements","ngIf","ngIfWatchAction","$anchorScroll","srcExp","ngInclude","onloadExp","autoScrollExp","autoscroll","previousElement","currentElement","cleanupLastIncludeContent","parseAsResourceUrl","ngIncludeWatchAction","afterAnimation","thisChangeId","newScope","$compile","ngInit","BRACE","numberExp","whenExp","whens","whensExpFns","isWhen","attributeName","ngPluralizeWatch","ngPluralizeWatchAction","ngRepeatMinErr","ngRepeat","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","valueIdentifier","keyIdentifier","hashFnLocals","lhs","rhs","trackByExp","lastBlockMap","ngRepeatAction","collection","previousNode","nextNode","nextBlockMap","arrayLength","collectionKeys","nextBlockOrder","trackByIdFn","trackById","$first","$last","$middle","$odd","$even","ngShow","ngShowWatchAction","ngHide","ngHideWatchAction","ngStyle","ngStyleWatchAction","newStyles","oldStyles","ngSwitchController","cases","selectedTranscludes","selectedElements","selectedScopes","ngSwitch","ngSwitchWatchAction","change","selectedTransclude","selectedScope","caseElement","anchor","ngSwitchWhen","$attrs","ngOptionsMinErr","NG_OPTIONS_REGEXP","nullModelCtrl","optionsMap","ngModelCtrl","unknownOption","databound","init","self.init","ngModelCtrl_","nullOption_","unknownOption_","addOption","self.addOption","removeOption","self.removeOption","hasOption","renderUnknownOption","self.renderUnknownOption","unknownVal","self.hasOption","setupAsSingle","selectElement","selectCtrl","ngModelCtrl.$render","emptyOption","setupAsMultiple","lastView","items","selectMultipleWatch","setupAsOptions","render","optionGroups","optionGroupNames","optionGroupName","optionGroup","existingParent","existingOptions","modelValue","valuesFn","keyName","groupIndex","selectedSet","lastElement","trackFn","trackIndex","valueName","groupByFn","modelCast","label","displayFn","nullOption","groupLength","optionGroupsCache","optGroupTemplate","existingOption","optionTemplate","optionsExp","track","optionElement","ngOptions","ngModelCtrl.$isEmpty","nullSelectCtrl","selectCtrlName","interpolateWatchAction","$$csp"] } diff --git a/awx/ui/static/lib/angular/bower.json b/awx/ui/static/lib/angular/bower.json index 12a0e4cf2b..345233fac6 100644 --- a/awx/ui/static/lib/angular/bower.json +++ b/awx/ui/static/lib/angular/bower.json @@ -1,6 +1,6 @@ { "name": "angular", - "version": "1.2.15-build.2398+sha.4bab3d8", + "version": "1.2.15", "main": "./angular.js", "dependencies": { } diff --git a/bower.json b/bower.json index 877d6326c7..c43701a2d1 100644 --- a/bower.json +++ b/bower.json @@ -15,7 +15,7 @@ "angular-md5": "~0.1.7", "angular-resource": "~1.2.12", "angular-sanitize": "~1.2.12", - "angular-scheduler": "~0.0.8", + "angular-scheduler": "~0.0.9", "bootstrap": "~3.1.1", "components-font-awesome": "~4.0.3", "less.js": "~1.6.3",