/*
 AngularJS v1.4.3
 (c) 2010-2015 Google, Inc. http://angularjs.org
 License: MIT
*/
(function(O,U,t){'use strict';function J(b){return function(){var a=arguments[0],c;c="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.4.3/"+(b?b+"/":"")+a;for(a=1;a<arguments.length;a++){c=c+(1==a?"?":"&")+"p"+(a-1)+"=";var d=encodeURIComponent,e;e=arguments[a];e="function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof e?"undefined":"string"!=typeof e?JSON.stringify(e):e;c+=d(e)}return Error(c)}}function Ea(b){if(null==b||Wa(b))return!1;var a="length"in Object(b)&&b.length;
return b.nodeType===qa&&a?!0:L(b)||G(b)||0===a||"number"===typeof a&&0<a&&a-1 in b}function m(b,a,c){var d,e;if(b)if(z(b))for(d in b)"prototype"==d||"length"==d||"name"==d||b.hasOwnProperty&&!b.hasOwnProperty(d)||a.call(c,b[d],d,b);else if(G(b)||Ea(b)){var f="object"!==typeof b;d=0;for(e=b.length;d<e;d++)(f||d in b)&&a.call(c,b[d],d,b)}else if(b.forEach&&b.forEach!==m)b.forEach(a,c,b);else if(nc(b))for(d in b)a.call(c,b[d],d,b);else if("function"===typeof b.hasOwnProperty)for(d in b)b.hasOwnProperty(d)&&
a.call(c,b[d],d,b);else for(d in b)Xa.call(b,d)&&a.call(c,b[d],d,b);return b}function oc(b,a,c){for(var d=Object.keys(b).sort(),e=0;e<d.length;e++)a.call(c,b[d[e]],d[e]);return d}function pc(b){return function(a,c){b(c,a)}}function Ud(){return++nb}function qc(b,a){a?b.$$hashKey=a:delete b.$$hashKey}function Nb(b,a,c){for(var d=b.$$hashKey,e=0,f=a.length;e<f;++e){var g=a[e];if(H(g)||z(g))for(var h=Object.keys(g),l=0,k=h.length;l<k;l++){var n=h[l],r=g[n];c&&H(r)?aa(r)?b[n]=new Date(r.valueOf()):(H(b[n])||
(b[n]=G(r)?[]:{}),Nb(b[n],[r],!0)):b[n]=r}}qc(b,d);return b}function P(b){return Nb(b,za.call(arguments,1),!1)}function Vd(b){return Nb(b,za.call(arguments,1),!0)}function W(b){return parseInt(b,10)}function Ob(b,a){return P(Object.create(b),a)}function v(){}function Ya(b){return b}function ra(b){return function(){return b}}function rc(b){return z(b.toString)&&b.toString!==Object.prototype.toString}function A(b){return"undefined"===typeof b}function w(b){return"undefined"!==typeof b}function H(b){return null!==
b&&"object"===typeof b}function nc(b){return null!==b&&"object"===typeof b&&!sc(b)}function L(b){return"string"===typeof b}function V(b){return"number"===typeof b}function aa(b){return"[object Date]"===sa.call(b)}function z(b){return"function"===typeof b}function Za(b){return"[object RegExp]"===sa.call(b)}function Wa(b){return b&&b.window===b}function $a(b){return b&&b.$evalAsync&&b.$watch}function ab(b){return"boolean"===typeof b}function tc(b){return!(!b||!(b.nodeName||b.prop&&b.attr&&b.find))}
function Wd(b){var a={};b=b.split(",");var c;for(c=0;c<b.length;c++)a[b[c]]=!0;return a}function ta(b){return M(b.nodeName||b[0]&&b[0].nodeName)}function bb(b,a){var c=b.indexOf(a);0<=c&&b.splice(c,1);return c}function fa(b,a,c,d){if(Wa(b)||$a(b))throw Fa("cpws");if(uc.test(sa.call(a)))throw Fa("cpta");if(a){if(b===a)throw Fa("cpi");c=c||[];d=d||[];H(b)&&(c.push(b),d.push(a));var e;if(G(b))for(e=a.length=0;e<b.length;e++)a.push(fa(b[e],null,c,d));else{var f=a.$$hashKey;G(a)?a.length=0:m(a,function(b,
c){delete a[c]});if(nc(b))for(e in b)a[e]=fa(b[e],null,c,d);else if(b&&"function"===typeof b.hasOwnProperty)for(e in b)b.hasOwnProperty(e)&&(a[e]=fa(b[e],null,c,d));else for(e in b)Xa.call(b,e)&&(a[e]=fa(b[e],null,c,d));qc(a,f)}}else if(a=b,H(b)){if(c&&-1!==(f=c.indexOf(b)))return d[f];if(G(b))return fa(b,[],c,d);if(uc.test(sa.call(b)))a=new b.constructor(b);else if(aa(b))a=new Date(b.getTime());else if(Za(b))a=new RegExp(b.source,b.toString().match(/[^\/]*$/)[0]),a.lastIndex=b.lastIndex;else return e=
Object.create(sc(b)),fa(b,e,c,d);d&&(c.push(b),d.push(a))}return a}function ia(b,a){if(G(b)){a=a||[];for(var c=0,d=b.length;c<d;c++)a[c]=b[c]}else if(H(b))for(c in a=a||{},b)if("$"!==c.charAt(0)||"$"!==c.charAt(1))a[c]=b[c];return a||b}function ka(b,a){if(b===a)return!0;if(null===b||null===a)return!1;if(b!==b&&a!==a)return!0;var c=typeof b,d;if(c==typeof a&&"object"==c)if(G(b)){if(!G(a))return!1;if((c=b.length)==a.length){for(d=0;d<c;d++)if(!ka(b[d],a[d]))return!1;return!0}}else{if(aa(b))return aa(a)?
ka(b.getTime(),a.getTime()):!1;if(Za(b))return Za(a)?b.toString()==a.toString():!1;if($a(b)||$a(a)||Wa(b)||Wa(a)||G(a)||aa(a)||Za(a))return!1;c=ga();for(d in b)if("$"!==d.charAt(0)&&!z(b[d])){if(!ka(b[d],a[d]))return!1;c[d]=!0}for(d in a)if(!(d in c||"$"===d.charAt(0)||a[d]===t||z(a[d])))return!1;return!0}return!1}function cb(b,a,c){return b.concat(za.call(a,c))}function vc(b,a){var c=2<arguments.length?za.call(arguments,2):[];return!z(a)||a instanceof RegExp?a:c.length?function(){return arguments.length?
a.apply(b,cb(c,arguments,0)):a.apply(b,c)}:function(){return arguments.length?a.apply(b,arguments):a.call(b)}}function Xd(b,a){var c=a;"string"===typeof b&&"$"===b.charAt(0)&&"$"===b.charAt(1)?c=t:Wa(a)?c="$WINDOW":a&&U===a?c="$DOCUMENT":$a(a)&&(c="$SCOPE");return c}function db(b,a){if("undefined"===typeof b)return t;V(a)||(a=a?2:null);return JSON.stringify(b,Xd,a)}function wc(b){return L(b)?JSON.parse(b):b}function xc(b,a){var c=Date.parse("Jan 01, 1970 00:00:00 "+b)/6E4;return isNaN(c)?a:c}function Pb(b,
a,c){c=c?-1:1;var d=xc(a,b.getTimezoneOffset());a=b;b=c*(d-b.getTimezoneOffset());a=new Date(a.getTime());a.setMinutes(a.getMinutes()+b);return a}function ua(b){b=y(b).clone();try{b.empty()}catch(a){}var c=y("<div>").append(b).html();try{return b[0].nodeType===Na?M(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+M(b)})}catch(d){return M(c)}}function yc(b){try{return decodeURIComponent(b)}catch(a){}}function zc(b){var a={},c,d;m((b||"").split("&"),function(b){b&&(c=b.replace(/\+/g,
"%20").split("="),d=yc(c[0]),w(d)&&(b=w(c[1])?yc(c[1]):!0,Xa.call(a,d)?G(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Qb(b){var a=[];m(b,function(b,d){G(b)?m(b,function(b){a.push(ma(d,!0)+(!0===b?"":"="+ma(b,!0)))}):a.push(ma(d,!0)+(!0===b?"":"="+ma(b,!0)))});return a.length?a.join("&"):""}function ob(b){return ma(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function ma(b,a){return encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,
"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,a?"%20":"+")}function Yd(b,a){var c,d,e=Oa.length;for(d=0;d<e;++d)if(c=Oa[d]+a,L(c=b.getAttribute(c)))return c;return null}function Zd(b,a){var c,d,e={};m(Oa,function(a){a+="app";!c&&b.hasAttribute&&b.hasAttribute(a)&&(c=b,d=b.getAttribute(a))});m(Oa,function(a){a+="app";var e;!c&&(e=b.querySelector("["+a.replace(":","\\:")+"]"))&&(c=e,d=e.getAttribute(a))});c&&(e.strictDi=null!==Yd(c,"strict-di"),a(c,d?[d]:[],e))}function Ac(b,a,c){H(c)||
(c={});c=P({strictDi:!1},c);var d=function(){b=y(b);if(b.injector()){var d=b[0]===U?"document":ua(b);throw Fa("btstrpd",d.replace(/</,"&lt;").replace(/>/,"&gt;"));}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);c.debugInfoEnabled&&a.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);a.unshift("ng");d=eb(a,c.strictDi);d.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return d},e=
/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;O&&e.test(O.name)&&(c.debugInfoEnabled=!0,O.name=O.name.replace(e,""));if(O&&!f.test(O.name))return d();O.name=O.name.replace(f,"");ca.resumeBootstrap=function(b){m(b,function(b){a.push(b)});return d()};z(ca.resumeDeferredBootstrap)&&ca.resumeDeferredBootstrap()}function $d(){O.name="NG_ENABLE_DEBUG_INFO!"+O.name;O.location.reload()}function ae(b){b=ca.element(b).injector();if(!b)throw Fa("test");return b.get("$$testability")}function Bc(b,a){a=a||
"_";return b.replace(be,function(b,d){return(d?a:"")+b.toLowerCase()})}function ce(){var b;if(!Cc){var a=pb();la=O.jQuery;w(a)&&(la=null===a?t:O[a]);la&&la.fn.on?(y=la,P(la.fn,{scope:Pa.scope,isolateScope:Pa.isolateScope,controller:Pa.controller,injector:Pa.injector,inheritedData:Pa.inheritedData}),b=la.cleanData,la.cleanData=function(a){var d;if(Rb)Rb=!1;else for(var e=0,f;null!=(f=a[e]);e++)(d=la._data(f,"events"))&&d.$destroy&&la(f).triggerHandler("$destroy");b(a)}):y=Q;ca.element=y;Cc=!0}}function Sb(b,
a,c){if(!b)throw Fa("areq",a||"?",c||"required");return b}function Qa(b,a,c){c&&G(b)&&(b=b[b.length-1]);Sb(z(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function Ra(b,a){if("hasOwnProperty"===b)throw Fa("badname",a);}function Dc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g<f;g++)d=a[g],b&&(b=(e=b)[d]);return!c&&z(b)?vc(e,b):b}function qb(b){var a=b[0];b=b[b.length-1];var c=[a];do{a=a.nextSibling;if(!a)break;c.push(a)}while(a!==
b);return y(c)}function ga(){return Object.create(null)}function de(b){function a(a,b,c){return a[b]||(a[b]=c())}var c=J("$injector"),d=J("ng");b=a(b,"angular",Object);b.$$minErr=b.$$minErr||J;return a(b,"module",function(){var b={};return function(f,g,h){if("hasOwnProperty"===f)throw d("badname","module");g&&b.hasOwnProperty(f)&&(b[f]=null);return a(b,f,function(){function a(b,c,e,f){f||(f=d);return function(){f[e||"push"]([b,c,arguments]);return C}}function b(a,c){return function(b,e){e&&z(e)&&
(e.$$moduleName=f);d.push([a,c,arguments]);return C}}if(!g)throw c("nomod",f);var d=[],e=[],s=[],x=a("$injector","invoke","push",e),C={_invokeQueue:d,_configBlocks:e,_runBlocks:s,requires:g,name:f,provider:b("$provide","provider"),factory:b("$provide","factory"),service:b("$provide","service"),value:a("$provide","value"),constant:a("$provide","constant","unshift"),decorator:b("$provide","decorator"),animation:b("$animateProvider","register"),filter:b("$filterProvider","register"),controller:b("$controllerProvider",
"register"),directive:b("$compileProvider","directive"),config:x,run:function(a){s.push(a);return this}};h&&x(h);return C})}})}function ee(b){P(b,{bootstrap:Ac,copy:fa,extend:P,merge:Vd,equals:ka,element:y,forEach:m,injector:eb,noop:v,bind:vc,toJson:db,fromJson:wc,identity:Ya,isUndefined:A,isDefined:w,isString:L,isFunction:z,isObject:H,isNumber:V,isElement:tc,isArray:G,version:fe,isDate:aa,lowercase:M,uppercase:rb,callbacks:{counter:0},getTestability:ae,$$minErr:J,$$csp:fb,reloadWithDebugInfo:$d});
gb=de(O);try{gb("ngLocale")}catch(a){gb("ngLocale",[]).provider("$locale",ge)}gb("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:he});a.provider("$compile",Ec).directive({a:ie,input:Fc,textarea:Fc,form:je,script:ke,select:le,style:me,option:ne,ngBind:oe,ngBindHtml:pe,ngBindTemplate:qe,ngClass:re,ngClassEven:se,ngClassOdd:te,ngCloak:ue,ngController:ve,ngForm:we,ngHide:xe,ngIf:ye,ngInclude:ze,ngInit:Ae,ngNonBindable:Be,ngPluralize:Ce,ngRepeat:De,ngShow:Ee,ngStyle:Fe,ngSwitch:Ge,
ngSwitchWhen:He,ngSwitchDefault:Ie,ngOptions:Je,ngTransclude:Ke,ngModel:Le,ngList:Me,ngChange:Ne,pattern:Gc,ngPattern:Gc,required:Hc,ngRequired:Hc,minlength:Ic,ngMinlength:Ic,maxlength:Jc,ngMaxlength:Jc,ngValue:Oe,ngModelOptions:Pe}).directive({ngInclude:Qe}).directive(sb).directive(Kc);a.provider({$anchorScroll:Re,$animate:Se,$$animateQueue:Te,$$AnimateRunner:Ue,$browser:Ve,$cacheFactory:We,$controller:Xe,$document:Ye,$exceptionHandler:Ze,$filter:Lc,$interpolate:$e,$interval:af,$http:bf,$httpParamSerializer:cf,
$httpParamSerializerJQLike:df,$httpBackend:ef,$location:ff,$log:gf,$parse:hf,$rootScope:jf,$q:kf,$$q:lf,$sce:mf,$sceDelegate:nf,$sniffer:of,$templateCache:pf,$templateRequest:qf,$$testability:rf,$timeout:sf,$window:tf,$$rAF:uf,$$jqLite:vf,$$HashMap:wf,$$cookieReader:xf})}])}function hb(b){return b.replace(yf,function(a,b,d,e){return e?d.toUpperCase():d}).replace(zf,"Moz$1")}function Mc(b){b=b.nodeType;return b===qa||!b||9===b}function Nc(b,a){var c,d,e=a.createDocumentFragment(),f=[];if(Tb.test(b)){c=
c||e.appendChild(a.createElement("div"));d=(Af.exec(b)||["",""])[1].toLowerCase();d=na[d]||na._default;c.innerHTML=d[1]+b.replace(Bf,"<$1></$2>")+d[2];for(d=d[0];d--;)c=c.lastChild;f=cb(f,c.childNodes);c=e.firstChild;c.textContent=""}else f.push(a.createTextNode(b));e.textContent="";e.innerHTML="";m(f,function(a){e.appendChild(a)});return e}function Q(b){if(b instanceof Q)return b;var a;L(b)&&(b=R(b),a=!0);if(!(this instanceof Q)){if(a&&"<"!=b.charAt(0))throw Ub("nosel");return new Q(b)}if(a){a=U;
var c;b=(c=Cf.exec(b))?[a.createElement(c[1])]:(c=Nc(b,a))?c.childNodes:[]}Oc(this,b)}function Vb(b){return b.cloneNode(!0)}function tb(b,a){a||ub(b);if(b.querySelectorAll)for(var c=b.querySelectorAll("*"),d=0,e=c.length;d<e;d++)ub(c[d])}function Pc(b,a,c,d){if(w(d))throw Ub("offargs");var e=(d=vb(b))&&d.events,f=d&&d.handle;if(f)if(a)m(a.split(" "),function(a){if(w(c)){var d=e[a];bb(d||[],c);if(d&&0<d.length)return}b.removeEventListener(a,f,!1);delete e[a]});else for(a in e)"$destroy"!==a&&b.removeEventListener(a,
f,!1),delete e[a]}function ub(b,a){var c=b.ng339,d=c&&ib[c];d&&(a?delete d.data[a]:(d.handle&&(d.events.$destroy&&d.handle({},"$destroy"),Pc(b)),delete ib[c],b.ng339=t))}function vb(b,a){var c=b.ng339,c=c&&ib[c];a&&!c&&(b.ng339=c=++Df,c=ib[c]={events:{},data:{},handle:t});return c}function Wb(b,a,c){if(Mc(b)){var d=w(c),e=!d&&a&&!H(a),f=!a;b=(b=vb(b,!e))&&b.data;if(d)b[a]=c;else{if(f)return b;if(e)return b&&b[a];P(b,a)}}}function wb(b,a){return b.getAttribute?-1<(" "+(b.getAttribute("class")||"")+
" ").replace(/[\n\t]/g," ").indexOf(" "+a+" "):!1}function xb(b,a){a&&b.setAttribute&&m(a.split(" "),function(a){b.setAttribute("class",R((" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+R(a)+" "," ")))})}function yb(b,a){if(a&&b.setAttribute){var c=(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");m(a.split(" "),function(a){a=R(a);-1===c.indexOf(" "+a+" ")&&(c+=a+" ")});b.setAttribute("class",R(c))}}function Oc(b,a){if(a)if(a.nodeType)b[b.length++]=a;else{var c=
a.length;if("number"===typeof c&&a.window!==a){if(c)for(var d=0;d<c;d++)b[b.length++]=a[d]}else b[b.length++]=a}}function Qc(b,a){return zb(b,"$"+(a||"ngController")+"Controller")}function zb(b,a,c){9==b.nodeType&&(b=b.documentElement);for(a=G(a)?a:[a];b;){for(var d=0,e=a.length;d<e;d++)if((c=y.data(b,a[d]))!==t)return c;b=b.parentNode||11===b.nodeType&&b.host}}function Rc(b){for(tb(b,!0);b.firstChild;)b.removeChild(b.firstChild)}function Xb(b,a){a||tb(b);var c=b.parentNode;c&&c.removeChild(b)}function Ef(b,
a){a=a||O;if("complete"===a.document.readyState)a.setTimeout(b);else y(a).on("load",b)}function Sc(b,a){var c=Ab[a.toLowerCase()];return c&&Tc[ta(b)]&&c}function Ff(b,a){var c=b.nodeName;return("INPUT"===c||"TEXTAREA"===c)&&Uc[a]}function Gf(b,a){var c=function(c,e){c.isDefaultPrevented=function(){return c.defaultPrevented};var f=a[e||c.type],g=f?f.length:0;if(g){if(A(c.immediatePropagationStopped)){var h=c.stopImmediatePropagation;c.stopImmediatePropagation=function(){c.immediatePropagationStopped=
!0;c.stopPropagation&&c.stopPropagation();h&&h.call(c)}}c.isImmediatePropagationStopped=function(){return!0===c.immediatePropagationStopped};1<g&&(f=ia(f));for(var l=0;l<g;l++)c.isImmediatePropagationStopped()||f[l].call(b,c)}};c.elem=b;return c}function vf(){this.$get=function(){return P(Q,{hasClass:function(b,a){b.attr&&(b=b[0]);return wb(b,a)},addClass:function(b,a){b.attr&&(b=b[0]);return yb(b,a)},removeClass:function(b,a){b.attr&&(b=b[0]);return xb(b,a)}})}}function Ga(b,a){var c=b&&b.$$hashKey;
if(c)return"function"===typeof c&&(c=b.$$hashKey()),c;c=typeof b;return c="function"==c||"object"==c&&null!==b?b.$$hashKey=c+":"+(a||Ud)():c+":"+b}function Sa(b,a){if(a){var c=0;this.nextUid=function(){return++c}}m(b,this.put,this)}function Hf(b){return(b=b.toString().replace(Vc,"").match(Wc))?"function("+(b[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function eb(b,a){function c(a){return function(b,c){if(H(b))m(b,pc(a));else return a(b,c)}}function d(a,b){Ra(a,"service");if(z(b)||G(b))b=s.instantiate(b);
if(!b.$get)throw Ha("pget",a);return r[a+"Provider"]=b}function e(a,b){return function(){var c=C.invoke(b,this);if(A(c))throw Ha("undef",a);return c}}function f(a,b,c){return d(a,{$get:!1!==c?e(a,b):b})}function g(a){var b=[],c;m(a,function(a){function d(a){var b,c;b=0;for(c=a.length;b<c;b++){var e=a[b],f=s.get(e[0]);f[e[1]].apply(f,e[2])}}if(!n.get(a)){n.put(a,!0);try{L(a)?(c=gb(a),b=b.concat(g(c.requires)).concat(c._runBlocks),d(c._invokeQueue),d(c._configBlocks)):z(a)?b.push(s.invoke(a)):G(a)?
b.push(s.invoke(a)):Qa(a,"module")}catch(e){throw G(a)&&(a=a[a.length-1]),e.message&&e.stack&&-1==e.stack.indexOf(e.message)&&(e=e.message+"\n"+e.stack),Ha("modulerr",a,e.stack||e.message||e);}}});return b}function h(b,c){function d(a,e){if(b.hasOwnProperty(a)){if(b[a]===l)throw Ha("cdep",a+" <- "+k.join(" <- "));return b[a]}try{return k.unshift(a),b[a]=l,b[a]=c(a,e)}catch(f){throw b[a]===l&&delete b[a],f;}finally{k.shift()}}function e(b,c,f,g){"string"===typeof f&&(g=f,f=null);var h=[],k=eb.$$annotate(b,
a,g),l,s,n;s=0;for(l=k.length;s<l;s++){n=k[s];if("string"!==typeof n)throw Ha("itkn",n);h.push(f&&f.hasOwnProperty(n)?f[n]:d(n,g))}G(b)&&(b=b[l]);return b.apply(c,h)}return{invoke:e,instantiate:function(a,b,c){var d=Object.create((G(a)?a[a.length-1]:a).prototype||null);a=e(a,d,b,c);return H(a)||z(a)?a:d},get:d,annotate:eb.$$annotate,has:function(a){return r.hasOwnProperty(a+"Provider")||b.hasOwnProperty(a)}}}a=!0===a;var l={},k=[],n=new Sa([],!0),r={$provide:{provider:c(d),factory:c(f),service:c(function(a,
b){return f(a,["$injector",function(a){return a.instantiate(b)}])}),value:c(function(a,b){return f(a,ra(b),!1)}),constant:c(function(a,b){Ra(a,"constant");r[a]=b;x[a]=b}),decorator:function(a,b){var c=s.get(a+"Provider"),d=c.$get;c.$get=function(){var a=C.invoke(d,c);return C.invoke(b,null,{$delegate:a})}}}},s=r.$injector=h(r,function(a,b){ca.isString(b)&&k.push(b);throw Ha("unpr",k.join(" <- "));}),x={},C=x.$injector=h(x,function(a,b){var c=s.get(a+"Provider",b);return C.invoke(c.$get,c,t,a)});m(g(b),
function(a){a&&C.invoke(a)});return C}function Re(){var b=!0;this.disableAutoScrolling=function(){b=!1};this.$get=["$window","$location","$rootScope",function(a,c,d){function e(a){var b=null;Array.prototype.some.call(a,function(a){if("a"===ta(a))return b=a,!0});return b}function f(b){if(b){b.scrollIntoView();var c;c=g.yOffset;z(c)?c=c():tc(c)?(c=c[0],c="fixed"!==a.getComputedStyle(c).position?0:c.getBoundingClientRect().bottom):V(c)||(c=0);c&&(b=b.getBoundingClientRect().top,a.scrollBy(0,b-c))}else a.scrollTo(0,
0)}function g(a){a=L(a)?a:c.hash();var b;a?(b=h.getElementById(a))?f(b):(b=e(h.getElementsByName(a)))?f(b):"top"===a&&f(null):f(null)}var h=a.document;b&&d.$watch(function(){return c.hash()},function(a,b){a===b&&""===a||Ef(function(){d.$evalAsync(g)})});return g}]}function jb(b,a){if(!b&&!a)return"";if(!b)return a;if(!a)return b;G(b)&&(b=b.join(" "));G(a)&&(a=a.join(" "));return b+" "+a}function If(b){L(b)&&(b=b.split(" "));var a=ga();m(b,function(b){b.length&&(a[b]=!0)});return a}function Ia(b){return H(b)?
b:{}}function Jf(b,a,c,d){function e(a){try{a.apply(null,za.call(arguments,1))}finally{if(C--,0===C)for(;F.length;)try{F.pop()()}catch(b){c.error(b)}}}function f(){g();h()}function g(){a:{try{u=n.state;break a}catch(a){}u=void 0}u=A(u)?null:u;ka(u,D)&&(u=D);D=u}function h(){if(K!==l.url()||p!==u)K=l.url(),p=u,m(B,function(a){a(l.url(),u)})}var l=this,k=b.location,n=b.history,r=b.setTimeout,s=b.clearTimeout,x={};l.isMock=!1;var C=0,F=[];l.$$completeOutstandingRequest=e;l.$$incOutstandingRequestCount=
function(){C++};l.notifyWhenNoOutstandingRequests=function(a){0===C?a():F.push(a)};var u,p,K=k.href,q=a.find("base"),I=null;g();p=u;l.url=function(a,c,e){A(e)&&(e=null);k!==b.location&&(k=b.location);n!==b.history&&(n=b.history);if(a){var f=p===e;if(K===a&&(!d.history||f))return l;var h=K&&Ja(K)===Ja(a);K=a;p=e;if(!d.history||h&&f){if(!h||I)I=a;c?k.replace(a):h?(c=k,e=a.indexOf("#"),a=-1===e?"":a.substr(e),c.hash=a):k.href=a}else n[c?"replaceState":"pushState"](e,"",a),g(),p=u;return l}return I||
k.href.replace(/%27/g,"'")};l.state=function(){return u};var B=[],N=!1,D=null;l.onUrlChange=function(a){if(!N){if(d.history)y(b).on("popstate",f);y(b).on("hashchange",f);N=!0}B.push(a);return a};l.$$applicationDestroyed=function(){y(b).off("hashchange popstate",f)};l.$$checkUrlChange=h;l.baseHref=function(){var a=q.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""};l.defer=function(a,b){var c;C++;c=r(function(){delete x[c];e(a)},b||0);x[c]=!0;return c};l.defer.cancel=function(a){return x[a]?
(delete x[a],s(a),e(v),!0):!1}}function Ve(){this.$get=["$window","$log","$sniffer","$document",function(b,a,c,d){return new Jf(b,d,a,c)}]}function We(){this.$get=function(){function b(b,d){function e(a){a!=r&&(s?s==a&&(s=a.n):s=a,f(a.n,a.p),f(a,r),r=a,r.n=null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(b in a)throw J("$cacheFactory")("iid",b);var g=0,h=P({},d,{id:b}),l={},k=d&&d.capacity||Number.MAX_VALUE,n={},r=null,s=null;return a[b]={put:function(a,b){if(!A(b)){if(k<Number.MAX_VALUE){var c=
n[a]||(n[a]={key:a});e(c)}a in l||g++;l[a]=b;g>k&&this.remove(s.key);return b}},get:function(a){if(k<Number.MAX_VALUE){var b=n[a];if(!b)return;e(b)}return l[a]},remove:function(a){if(k<Number.MAX_VALUE){var b=n[a];if(!b)return;b==r&&(r=b.p);b==s&&(s=b.n);f(b.n,b.p);delete n[a]}delete l[a];g--},removeAll:function(){l={};g=0;n={};r=s=null},destroy:function(){n=h=l=null;delete a[b]},info:function(){return P({},h,{size:g})}}}var a={};b.info=function(){var b={};m(a,function(a,e){b[e]=a.info()});return b};
b.get=function(b){return a[b]};return b}}function pf(){this.$get=["$cacheFactory",function(b){return b("templates")}]}function Ec(b,a){function c(a,b,c){var d=/^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/,e={};m(a,function(a,f){var g=a.match(d);if(!g)throw ea("iscp",b,f,a,c?"controller bindings definition":"isolate scope definition");e[f]={mode:g[1][0],collection:"*"===g[2],optional:"?"===g[3],attrName:g[4]||f}});return e}function d(a){var b=a.charAt(0);if(!b||b!==M(b))throw ea("baddir",a);if(a!==a.trim())throw ea("baddir",
a);}var e={},f=/^\s*directive\:\s*([\w\-]+)\s+(.*)$/,g=/(([\w\-]+)(?:\:([^;]+))?;?)/,h=Wd("ngSrc,ngSrcset,src,srcset"),l=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,k=/^(on[a-z]+|formaction)$/;this.directive=function s(a,f){Ra(a,"directive");L(a)?(d(a),Sb(f,"directiveFactory"),e.hasOwnProperty(a)||(e[a]=[],b.factory(a+"Directive",["$injector","$exceptionHandler",function(b,d){var f=[];m(e[a],function(e,g){try{var h=b.invoke(e);z(h)?h={compile:ra(h)}:!h.compile&&h.link&&(h.compile=ra(h.link));h.priority=h.priority||
0;h.index=g;h.name=h.name||a;h.require=h.require||h.controller&&h.name;h.restrict=h.restrict||"EA";var k=h,l=h,s=h.name,n={isolateScope:null,bindToController:null};H(l.scope)&&(!0===l.bindToController?(n.bindToController=c(l.scope,s,!0),n.isolateScope={}):n.isolateScope=c(l.scope,s,!1));H(l.bindToController)&&(n.bindToController=c(l.bindToController,s,!0));if(H(n.bindToController)){var C=l.controller,$=l.controllerAs;if(!C)throw ea("noctrl",s);var ha;a:if($&&L($))ha=$;else{if(L(C)){var m=Xc.exec(C);
if(m){ha=m[3];break a}}ha=void 0}if(!ha)throw ea("noident",s);}var q=k.$$bindings=n;H(q.isolateScope)&&(h.$$isolateBindings=q.isolateScope);h.$$moduleName=e.$$moduleName;f.push(h)}catch(t){d(t)}});return f}])),e[a].push(f)):m(a,pc(s));return this};this.aHrefSanitizationWhitelist=function(b){return w(b)?(a.aHrefSanitizationWhitelist(b),this):a.aHrefSanitizationWhitelist()};this.imgSrcSanitizationWhitelist=function(b){return w(b)?(a.imgSrcSanitizationWhitelist(b),this):a.imgSrcSanitizationWhitelist()};
var n=!0;this.debugInfoEnabled=function(a){return w(a)?(n=a,this):n};this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(a,b,c,d,u,p,K,q,I,B,N){function D(a,b){try{a.addClass(b)}catch(c){}}function Z(a,b,c,d,e){a instanceof y||(a=y(a));m(a,function(b,c){b.nodeType==Na&&b.nodeValue.match(/\S+/)&&(a[c]=y(b).wrap("<span></span>").parent()[0])});var f=S(a,b,a,c,d,e);Z.$$addScopeClass(a);
var g=null;return function(b,c,d){Sb(b,"scope");d=d||{};var e=d.parentBoundTranscludeFn,h=d.transcludeControllers;d=d.futureParentElement;e&&e.$$boundTransclude&&(e=e.$$boundTransclude);g||(g=(d=d&&d[0])?"foreignobject"!==ta(d)&&d.toString().match(/SVG/)?"svg":"html":"html");d="html"!==g?y(Yb(g,y("<div>").append(a).html())):c?Pa.clone.call(a):a;if(h)for(var k in h)d.data("$"+k+"Controller",h[k].instance);Z.$$addScopeInfo(d,b);c&&c(d,b);f&&f(b,d,d,e);return d}}function S(a,b,c,d,e,f){function g(a,
c,d,e){var f,k,l,s,n,B,C;if(p)for(C=Array(c.length),s=0;s<h.length;s+=3)f=h[s],C[f]=c[f];else C=c;s=0;for(n=h.length;s<n;)if(k=C[h[s++]],c=h[s++],f=h[s++],c){if(c.scope){if(l=a.$new(),Z.$$addScopeInfo(y(k),l),B=c.$$destroyBindings)c.$$destroyBindings=null,l.$on("$destroyed",B)}else l=a;B=c.transcludeOnThisElement?$(a,c.transclude,e):!c.templateOnThisElement&&e?e:!e&&b?$(a,b):null;c(f,l,k,d,B,c)}else f&&f(a,k.childNodes,t,e)}for(var h=[],k,l,s,n,p,B=0;B<a.length;B++){k=new aa;l=ha(a[B],[],k,0===B?
d:t,e);(f=l.length?E(l,a[B],k,b,c,null,[],[],f):null)&&f.scope&&Z.$$addScopeClass(k.$$element);k=f&&f.terminal||!(s=a[B].childNodes)||!s.length?null:S(s,f?(f.transcludeOnThisElement||!f.templateOnThisElement)&&f.transclude:b);if(f||k)h.push(B,f,k),n=!0,p=p||f;f=null}return n?g:null}function $(a,b,c){return function(d,e,f,g,h){d||(d=a.$new(!1,h),d.$$transcluded=!0);return b(d,e,{parentBoundTranscludeFn:c,transcludeControllers:f,futureParentElement:g})}}function ha(a,b,c,d,e){var h=c.$attr,k;switch(a.nodeType){case qa:w(b,
wa(ta(a)),"E",d,e);for(var l,s,n,p=a.attributes,B=0,C=p&&p.length;B<C;B++){var x=!1,S=!1;l=p[B];k=l.name;s=R(l.value);l=wa(k);if(n=ia.test(l))k=k.replace(Zc,"").substr(8).replace(/_(.)/g,function(a,b){return b.toUpperCase()});var F=l.replace(/(Start|End)$/,"");A(F)&&l===F+"Start"&&(x=k,S=k.substr(0,k.length-5)+"end",k=k.substr(0,k.length-6));l=wa(k.toLowerCase());h[l]=k;if(n||!c.hasOwnProperty(l))c[l]=s,Sc(a,l)&&(c[l]=!0);V(a,b,s,l,n);w(b,l,"A",d,e,x,S)}a=a.className;H(a)&&(a=a.animVal);if(L(a)&&
""!==a)for(;k=g.exec(a);)l=wa(k[2]),w(b,l,"C",d,e)&&(c[l]=R(k[3])),a=a.substr(k.index+k[0].length);break;case Na:if(11===Ua)for(;a.parentNode&&a.nextSibling&&a.nextSibling.nodeType===Na;)a.nodeValue+=a.nextSibling.nodeValue,a.parentNode.removeChild(a.nextSibling);xa(b,a.nodeValue);break;case 8:try{if(k=f.exec(a.nodeValue))l=wa(k[1]),w(b,l,"M",d,e)&&(c[l]=R(k[2]))}catch($){}}b.sort(Aa);return b}function va(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw ea("uterdir",b,c);
a.nodeType==qa&&(a.hasAttribute(b)&&e++,a.hasAttribute(c)&&e--);d.push(a);a=a.nextSibling}while(0<e)}else d.push(a);return y(d)}function Yc(a,b,c){return function(d,e,f,g,h){e=va(e[0],b,c);return a(d,e,f,g,h)}}function E(a,b,d,e,f,g,h,k,s){function n(a,b,c,d){if(a){c&&(a=Yc(a,c,d));a.require=E.require;a.directiveName=w;if(u===E||E.$$isolateScope)a=X(a,{isolateScope:!0});h.push(a)}if(b){c&&(b=Yc(b,c,d));b.require=E.require;b.directiveName=w;if(u===E||E.$$isolateScope)b=X(b,{isolateScope:!0});k.push(b)}}
function B(a,b,c,d){var e;if(L(b)){var f=b.match(l);b=b.substring(f[0].length);var g=f[1]||f[3],f="?"===f[2];"^^"===g?c=c.parent():e=(e=d&&d[b])&&e.instance;e||(d="$"+b+"Controller",e=g?c.inheritedData(d):c.data(d));if(!e&&!f)throw ea("ctreq",b,a);}else if(G(b))for(e=[],g=0,f=b.length;g<f;g++)e[g]=B(a,b[g],c,d);return e||null}function x(a,b,c,d,e,f){var g=ga(),h;for(h in d){var k=d[h],l={$scope:k===u||k.$$isolateScope?e:f,$element:a,$attrs:b,$transclude:c},s=k.controller;"@"==s&&(s=b[k.name]);l=p(s,
l,!0,k.controllerAs);g[k.name]=l;q||a.data("$"+k.name+"Controller",l.instance)}return g}function S(a,c,e,f,g,l){function s(a,b,c){var d;$a(a)||(c=b,b=a,a=t);q&&(d=m);c||(c=q?ja.parent():ja);return g(a,b,d,c,va)}var n,p,C,F,m,ha,ja;b===e?(f=d,ja=d.$$element):(ja=y(e),f=new aa(ja,d));u&&(F=c.$new(!0));g&&(ha=s,ha.$$boundTransclude=g);N&&(m=x(ja,f,ha,N,F,c));u&&(Z.$$addScopeInfo(ja,F,!0,!(D&&(D===u||D===u.$$originalDirective))),Z.$$addScopeClass(ja,!0),F.$$isolateBindings=u.$$isolateBindings,W(c,f,F,
F.$$isolateBindings,u,F));if(m){var K=u||$,I;K&&m[K.name]&&(p=K.$$bindings.bindToController,(C=m[K.name])&&C.identifier&&p&&(I=C,l.$$destroyBindings=W(c,f,C.instance,p,K)));for(n in m){C=m[n];var E=C();E!==C.instance&&(C.instance=E,ja.data("$"+n+"Controller",E),C===I&&(l.$$destroyBindings(),l.$$destroyBindings=W(c,f,E,p,K)))}}n=0;for(l=h.length;n<l;n++)p=h[n],Y(p,p.isolateScope?F:c,ja,f,p.require&&B(p.directiveName,p.require,ja,m),ha);var va=c;u&&(u.template||null===u.templateUrl)&&(va=F);a&&a(va,
e.childNodes,t,g);for(n=k.length-1;0<=n;n--)p=k[n],Y(p,p.isolateScope?F:c,ja,f,p.require&&B(p.directiveName,p.require,ja,m),ha)}s=s||{};for(var F=-Number.MAX_VALUE,$=s.newScopeDirective,N=s.controllerDirectives,u=s.newIsolateScopeDirective,D=s.templateDirective,m=s.nonTlbTranscludeDirective,K=!1,I=!1,q=s.hasElementTranscludeDirective,ba=d.$$element=y(b),E,w,v,A=e,Aa,xa=0,Ta=a.length;xa<Ta;xa++){E=a[xa];var M=E.$$start,P=E.$$end;M&&(ba=va(b,M,P));v=t;if(F>E.priority)break;if(v=E.scope)E.templateUrl||
(H(v)?(O("new/isolated scope",u||$,E,ba),u=E):O("new/isolated scope",u,E,ba)),$=$||E;w=E.name;!E.templateUrl&&E.controller&&(v=E.controller,N=N||ga(),O("'"+w+"' controller",N[w],E,ba),N[w]=E);if(v=E.transclude)K=!0,E.$$tlb||(O("transclusion",m,E,ba),m=E),"element"==v?(q=!0,F=E.priority,v=ba,ba=d.$$element=y(U.createComment(" "+w+": "+d[w]+" ")),b=ba[0],T(f,za.call(v,0),b),A=Z(v,e,F,g&&g.name,{nonTlbTranscludeDirective:m})):(v=y(Vb(b)).contents(),ba.empty(),A=Z(v,e));if(E.template)if(I=!0,O("template",
D,E,ba),D=E,v=z(E.template)?E.template(ba,d):E.template,v=fa(v),E.replace){g=E;v=Tb.test(v)?$c(Yb(E.templateNamespace,R(v))):[];b=v[0];if(1!=v.length||b.nodeType!==qa)throw ea("tplrt",w,"");T(f,ba,b);Ta={$attr:{}};v=ha(b,[],Ta);var Q=a.splice(xa+1,a.length-(xa+1));u&&ad(v);a=a.concat(v).concat(Q);J(d,Ta);Ta=a.length}else ba.html(v);if(E.templateUrl)I=!0,O("template",D,E,ba),D=E,E.replace&&(g=E),S=Lf(a.splice(xa,a.length-xa),ba,d,f,K&&A,h,k,{controllerDirectives:N,newScopeDirective:$!==E&&$,newIsolateScopeDirective:u,
templateDirective:D,nonTlbTranscludeDirective:m}),Ta=a.length;else if(E.compile)try{Aa=E.compile(ba,d,A),z(Aa)?n(null,Aa,M,P):Aa&&n(Aa.pre,Aa.post,M,P)}catch(Kf){c(Kf,ua(ba))}E.terminal&&(S.terminal=!0,F=Math.max(F,E.priority))}S.scope=$&&!0===$.scope;S.transcludeOnThisElement=K;S.templateOnThisElement=I;S.transclude=A;s.hasElementTranscludeDirective=q;return S}function ad(a){for(var b=0,c=a.length;b<c;b++)a[b]=Ob(a[b],{$$isolateScope:!0})}function w(b,d,f,g,h,k,l){if(d===h)return null;h=null;if(e.hasOwnProperty(d)){var n;
d=a.get(d+"Directive");for(var p=0,B=d.length;p<B;p++)try{n=d[p],(g===t||g>n.priority)&&-1!=n.restrict.indexOf(f)&&(k&&(n=Ob(n,{$$start:k,$$end:l})),b.push(n),h=n)}catch(x){c(x)}}return h}function A(b){if(e.hasOwnProperty(b))for(var c=a.get(b+"Directive"),d=0,f=c.length;d<f;d++)if(b=c[d],b.multiElement)return!0;return!1}function J(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;m(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});m(b,function(b,f){"class"==
f?(D(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 Lf(a,b,c,e,f,g,h,k){var l=[],s,n,p=b[0],B=a.shift(),C=Ob(B,{templateUrl:null,transclude:null,replace:null,$$originalDirective:B}),x=z(B.templateUrl)?B.templateUrl(b,c):B.templateUrl,N=B.templateNamespace;b.empty();d(x).then(function(d){var F,u;d=fa(d);if(B.replace){d=Tb.test(d)?$c(Yb(N,R(d))):
[];F=d[0];if(1!=d.length||F.nodeType!==qa)throw ea("tplrt",B.name,x);d={$attr:{}};T(e,b,F);var K=ha(F,[],d);H(B.scope)&&ad(K);a=K.concat(a);J(c,d)}else F=p,b.html(d);a.unshift(C);s=E(a,F,c,f,b,B,g,h,k);m(e,function(a,c){a==F&&(e[c]=b[0])});for(n=S(b[0].childNodes,f);l.length;){d=l.shift();u=l.shift();var I=l.shift(),va=l.shift(),K=b[0];if(!d.$$destroyed){if(u!==p){var Z=u.className;k.hasElementTranscludeDirective&&B.replace||(K=Vb(F));T(I,y(u),K);D(y(K),Z)}u=s.transcludeOnThisElement?$(d,s.transclude,
va):va;s(n,d,K,e,u,s)}}l=null});return function(a,b,c,d,e){a=e;b.$$destroyed||(l?l.push(b,c,d,a):(s.transcludeOnThisElement&&(a=$(b,s.transclude,e)),s(n,b,c,d,a,s)))}}function Aa(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.name<b.name?-1:1:a.index-b.index}function O(a,b,c,d){function e(a){return a?" (module: "+a+")":""}if(b)throw ea("multidir",b.name,e(b.$$moduleName),c.name,e(c.$$moduleName),a,ua(d));}function xa(a,c){var d=b(c,!0);d&&a.push({priority:0,compile:function(a){a=
a.parent();var b=!!a.length;b&&Z.$$addBindingClass(a);return function(a,c){var e=c.parent();b||Z.$$addBindingClass(e);Z.$$addBindingInfo(e,d.expressions);a.$watch(d,function(a){c[0].nodeValue=a})}}})}function Yb(a,b){a=M(a||"html");switch(a){case "svg":case "math":var c=U.createElement("div");c.innerHTML="<"+a+">"+b+"</"+a+">";return c.childNodes[0].childNodes;default:return b}}function Q(a,b){if("srcdoc"==b)return I.HTML;var c=ta(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||
"ngSrc"==b))return I.RESOURCE_URL}function V(a,c,d,e,f){var g=Q(a,e);f=h[e]||f;var l=b(d,!0,g,f);if(l){if("multiple"===e&&"select"===ta(a))throw ea("selmulti",ua(a));c.push({priority:100,compile:function(){return{pre:function(a,c,h){c=h.$$observers||(h.$$observers={});if(k.test(e))throw ea("nodomevents");var s=h[e];s!==d&&(l=s&&b(s,!0,g,f),d=s);l&&(h[e]=l(a),(c[e]||(c[e]=[])).$$inter=!0,(h.$$observers&&h.$$observers[e].$$scope||a).$watch(l,function(a,b){"class"===e&&a!=b?h.$updateClass(a,b):h.$set(e,
a)}))}}}})}}function T(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g<h;g++)if(a[g]==d){a[g++]=c;h=g+e-1;for(var k=a.length;g<k;g++,h++)h<k?a[g]=a[h]:delete a[g];a.length-=e-1;a.context===d&&(a.context=c);break}f&&f.replaceChild(c,d);a=U.createDocumentFragment();a.appendChild(d);y.hasData(d)&&(y(c).data(y(d).data()),la?(Rb=!0,la.cleanData([d])):delete y.cache[d[y.expando]]);d=1;for(e=b.length;d<e;d++)f=b[d],y(f).remove(),a.appendChild(f),delete b[d];b[0]=c;b.length=1}function X(a,
b){return P(function(){return a.apply(null,arguments)},a,b)}function Y(a,b,d,e,f,g){try{a(b,d,e,f,g)}catch(h){c(h,ua(d))}}function W(a,c,d,e,f,g){var h;m(e,function(e,g){var k=e.attrName,l=e.optional,s=e.mode,n,p,B,C;Xa.call(c,k)||(c[k]=t);switch(s){case "@":c[k]||l||(d[g]=t);c.$observe(k,function(a){d[g]=a});c.$$observers[k].$$scope=a;c[k]&&(d[g]=b(c[k])(a));break;case "=":if(l&&!c[k])break;p=u(c[k]);C=p.literal?ka:function(a,b){return a===b||a!==a&&b!==b};B=p.assign||function(){n=d[g]=p(a);throw ea("nonassign",
c[k],f.name);};n=d[g]=p(a);l=function(b){C(b,d[g])||(C(b,n)?B(a,b=d[g]):d[g]=b);return n=b};l.$stateful=!0;l=e.collection?a.$watchCollection(c[k],l):a.$watch(u(c[k],l),null,p.literal);h=h||[];h.push(l);break;case "&":p=u(c[k]);if(p===v&&l)break;d[g]=function(b){return p(a,b)}}});e=h?function(){for(var a=0,b=h.length;a<b;++a)h[a]()}:v;return g&&e!==v?(g.$on("$destroy",e),v):e}var aa=function(a,b){if(b){var c=Object.keys(b),d,e,f;d=0;for(e=c.length;d<e;d++)f=c[d],this[f]=b[f]}else this.$attr={};this.$$element=
a};aa.prototype={$normalize:wa,$addClass:function(a){a&&0<a.length&&B.addClass(this.$$element,a)},$removeClass:function(a){a&&0<a.length&&B.removeClass(this.$$element,a)},$updateClass:function(a,b){var c=bd(a,b);c&&c.length&&B.addClass(this.$$element,c);(c=bd(b,a))&&c.length&&B.removeClass(this.$$element,c)},$set:function(a,b,d,e){var f=this.$$element[0],g=Sc(f,a),h=Ff(f,a),f=a;g?(this.$$element.prop(a,b),e=g):h&&(this[h]=b,f=h);this[a]=b;e?this.$attr[a]=e:(e=this.$attr[a])||(this.$attr[a]=e=Bc(a,
"-"));g=ta(this.$$element);if("a"===g&&"href"===a||"img"===g&&"src"===a)this[a]=b=N(b,"src"===a);else if("img"===g&&"srcset"===a){for(var g="",h=R(b),k=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,k=/\s/.test(h)?k:/(,)/,h=h.split(k),k=Math.floor(h.length/2),l=0;l<k;l++)var s=2*l,g=g+N(R(h[s]),!0),g=g+(" "+R(h[s+1]));h=R(h[2*l]).split(/\s/);g+=N(R(h[0]),!0);2===h.length&&(g+=" "+R(h[1]));this[a]=b=g}!1!==d&&(null===b||b===t?this.$$element.removeAttr(e):this.$$element.attr(e,b));(a=this.$$observers)&&m(a[f],
function(a){try{a(b)}catch(d){c(d)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers=ga()),e=d[a]||(d[a]=[]);e.push(b);K.$evalAsync(function(){!e.$$inter&&c.hasOwnProperty(a)&&b(c[a])});return function(){bb(e,b)}}};var ca=b.startSymbol(),da=b.endSymbol(),fa="{{"==ca||"}}"==da?Ya:function(a){return a.replace(/\{\{/g,ca).replace(/}}/g,da)},ia=/^ngAttr[A-Z]/;Z.$$addBindingInfo=n?function(a,b){var c=a.data("$binding")||[];G(b)?c=c.concat(b):c.push(b);a.data("$binding",c)}:v;Z.$$addBindingClass=
n?function(a){D(a,"ng-binding")}:v;Z.$$addScopeInfo=n?function(a,b,c,d){a.data(c?d?"$isolateScopeNoTemplate":"$isolateScope":"$scope",b)}:v;Z.$$addScopeClass=n?function(a,b){D(a,b?"ng-isolate-scope":"ng-scope")}:v;return Z}]}function wa(b){return hb(b.replace(Zc,""))}function bd(b,a){var c="",d=b.split(/\s+/),e=a.split(/\s+/),f=0;a:for(;f<d.length;f++){for(var g=d[f],h=0;h<e.length;h++)if(g==e[h])continue a;c+=(0<c.length?" ":"")+g}return c}function $c(b){b=y(b);var a=b.length;if(1>=a)return b;for(;a--;)8===
b[a].nodeType&&Mf.call(b,a,1);return b}function Xe(){var b={},a=!1;this.register=function(a,d){Ra(a,"controller");H(a)?P(b,a):b[a]=d};this.allowGlobals=function(){a=!0};this.$get=["$injector","$window",function(c,d){function e(a,b,c,d){if(!a||!H(a.$scope))throw J("$controller")("noscp",d,b);a.$scope[b]=c}return function(f,g,h,l){var k,n,r;h=!0===h;l&&L(l)&&(r=l);if(L(f)){l=f.match(Xc);if(!l)throw Nf("ctrlfmt",f);n=l[1];r=r||l[3];f=b.hasOwnProperty(n)?b[n]:Dc(g.$scope,n,!0)||(a?Dc(d,n,!0):t);Qa(f,
n,!0)}if(h)return h=(G(f)?f[f.length-1]:f).prototype,k=Object.create(h||null),r&&e(g,r,k,n||f.name),P(function(){var a=c.invoke(f,k,g,n);a!==k&&(H(a)||z(a))&&(k=a,r&&e(g,r,k,n||f.name));return k},{instance:k,identifier:r});k=c.instantiate(f,g,n);r&&e(g,r,k,n||f.name);return k}}]}function Ye(){this.$get=["$window",function(b){return y(b.document)}]}function Ze(){this.$get=["$log",function(b){return function(a,c){b.error.apply(b,arguments)}}]}function Zb(b){return H(b)?aa(b)?b.toISOString():db(b):b}
function cf(){this.$get=function(){return function(b){if(!b)return"";var a=[];oc(b,function(b,d){null===b||A(b)||(G(b)?m(b,function(b,c){a.push(ma(d)+"="+ma(Zb(b)))}):a.push(ma(d)+"="+ma(Zb(b))))});return a.join("&")}}}function df(){this.$get=function(){return function(b){function a(b,e,f){null===b||A(b)||(G(b)?m(b,function(b){a(b,e+"[]")}):H(b)&&!aa(b)?oc(b,function(b,c){a(b,e+(f?"":"[")+c+(f?"":"]"))}):c.push(ma(e)+"="+ma(Zb(b))))}if(!b)return"";var c=[];a(b,"",!0);return c.join("&")}}}function $b(b,
a){if(L(b)){var c=b.replace(Of,"").trim();if(c){var d=a("Content-Type");(d=d&&0===d.indexOf(cd))||(d=(d=c.match(Pf))&&Qf[d[0]].test(c));d&&(b=wc(c))}}return b}function dd(b){var a=ga(),c;L(b)?m(b.split("\n"),function(b){c=b.indexOf(":");var e=M(R(b.substr(0,c)));b=R(b.substr(c+1));e&&(a[e]=a[e]?a[e]+", "+b:b)}):H(b)&&m(b,function(b,c){var f=M(c),g=R(b);f&&(a[f]=a[f]?a[f]+", "+g:g)});return a}function ed(b){var a;return function(c){a||(a=dd(b));return c?(c=a[M(c)],void 0===c&&(c=null),c):a}}function fd(b,
a,c,d){if(z(d))return d(b,a,c);m(d,function(d){b=d(b,a,c)});return b}function bf(){var b=this.defaults={transformResponse:[$b],transformRequest:[function(a){return H(a)&&"[object File]"!==sa.call(a)&&"[object Blob]"!==sa.call(a)&&"[object FormData]"!==sa.call(a)?db(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ia(ac),put:ia(ac),patch:ia(ac)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer"},a=!1;this.useApplyAsync=function(b){return w(b)?
(a=!!b,this):a};var c=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector",function(d,e,f,g,h,l){function k(a){function c(a){var b=P({},a);b.data=a.data?fd(a.data,a.headers,a.status,e.transformResponse):a.data;a=a.status;return 200<=a&&300>a?b:h.reject(b)}function d(a,b){var c,e={};m(a,function(a,d){z(a)?(c=a(b),null!=c&&(e[d]=c)):e[d]=a});return e}if(!ca.isObject(a))throw J("$http")("badreq",a);var e=P({method:"get",transformRequest:b.transformRequest,
transformResponse:b.transformResponse,paramSerializer:b.paramSerializer},a);e.headers=function(a){var c=b.headers,e=P({},a.headers),f,g,h,c=P({},c.common,c[M(a.method)]);a:for(f in c){g=M(f);for(h in e)if(M(h)===g)continue a;e[f]=c[f]}return d(e,ia(a))}(a);e.method=rb(e.method);e.paramSerializer=L(e.paramSerializer)?l.get(e.paramSerializer):e.paramSerializer;var f=[function(a){var d=a.headers,e=fd(a.data,ed(d),t,a.transformRequest);A(e)&&m(d,function(a,b){"content-type"===M(b)&&delete d[b]});A(a.withCredentials)&&
!A(b.withCredentials)&&(a.withCredentials=b.withCredentials);return n(a,e).then(c,c)},t],g=h.when(e);for(m(x,function(a){(a.request||a.requestError)&&f.unshift(a.request,a.requestError);(a.response||a.responseError)&&f.push(a.response,a.responseError)});f.length;){a=f.shift();var k=f.shift(),g=g.then(a,k)}g.success=function(a){Qa(a,"fn");g.then(function(b){a(b.data,b.status,b.headers,e)});return g};g.error=function(a){Qa(a,"fn");g.then(null,function(b){a(b.data,b.status,b.headers,e)});return g};return g}
function n(c,f){function l(b,c,d,e){function f(){n(c,b,d,e)}N&&(200<=b&&300>b?N.put(S,[b,c,dd(d),e]):N.remove(S));a?g.$applyAsync(f):(f(),g.$$phase||g.$apply())}function n(a,b,d,e){b=Math.max(b,0);(200<=b&&300>b?I.resolve:I.reject)({data:a,status:b,headers:ed(d),config:c,statusText:e})}function x(a){n(a.data,a.status,ia(a.headers()),a.statusText)}function m(){var a=k.pendingRequests.indexOf(c);-1!==a&&k.pendingRequests.splice(a,1)}var I=h.defer(),B=I.promise,N,D,q=c.headers,S=r(c.url,c.paramSerializer(c.params));
k.pendingRequests.push(c);B.then(m,m);!c.cache&&!b.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(N=H(c.cache)?c.cache:H(b.cache)?b.cache:s);N&&(D=N.get(S),w(D)?D&&z(D.then)?D.then(x,x):G(D)?n(D[1],D[0],ia(D[2]),D[3]):n(D,200,{},"OK"):N.put(S,B));A(D)&&((D=gd(c.url)?e()[c.xsrfCookieName||b.xsrfCookieName]:t)&&(q[c.xsrfHeaderName||b.xsrfHeaderName]=D),d(c.method,S,f,l,q,c.timeout,c.withCredentials,c.responseType));return B}function r(a,b){0<b.length&&(a+=(-1==a.indexOf("?")?"?":"&")+b);
return a}var s=f("$http");b.paramSerializer=L(b.paramSerializer)?l.get(b.paramSerializer):b.paramSerializer;var x=[];m(c,function(a){x.unshift(L(a)?l.get(a):l.invoke(a))});k.pendingRequests=[];(function(a){m(arguments,function(a){k[a]=function(b,c){return k(P({},c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){m(arguments,function(a){k[a]=function(b,c,d){return k(P({},d||{},{method:a,url:b,data:c}))}})})("post","put","patch");k.defaults=b;return k}]}function Rf(){return new O.XMLHttpRequest}
function ef(){this.$get=["$browser","$window","$document",function(b,a,c){return Sf(b,Rf,b.defer,a.angular.callbacks,c[0])}]}function Sf(b,a,c,d,e){function f(a,b,c){var f=e.createElement("script"),n=null;f.type="text/javascript";f.src=a;f.async=!0;n=function(a){f.removeEventListener("load",n,!1);f.removeEventListener("error",n,!1);e.body.removeChild(f);f=null;var g=-1,x="unknown";a&&("load"!==a.type||d[b].called||(a={type:"error"}),x=a.type,g="error"===a.type?404:200);c&&c(g,x)};f.addEventListener("load",
n,!1);f.addEventListener("error",n,!1);e.body.appendChild(f);return n}return function(e,h,l,k,n,r,s,x){function C(){p&&p();K&&K.abort()}function F(a,d,e,f,g){I!==t&&c.cancel(I);p=K=null;a(d,e,f,g);b.$$completeOutstandingRequest(v)}b.$$incOutstandingRequestCount();h=h||b.url();if("jsonp"==M(e)){var u="_"+(d.counter++).toString(36);d[u]=function(a){d[u].data=a;d[u].called=!0};var p=f(h.replace("JSON_CALLBACK","angular.callbacks."+u),u,function(a,b){F(k,a,d[u].data,"",b);d[u]=v})}else{var K=a();K.open(e,
h,!0);m(n,function(a,b){w(a)&&K.setRequestHeader(b,a)});K.onload=function(){var a=K.statusText||"",b="response"in K?K.response:K.responseText,c=1223===K.status?204:K.status;0===c&&(c=b?200:"file"==Ba(h).protocol?404:0);F(k,c,b,K.getAllResponseHeaders(),a)};e=function(){F(k,-1,null,null,"")};K.onerror=e;K.onabort=e;s&&(K.withCredentials=!0);if(x)try{K.responseType=x}catch(q){if("json"!==x)throw q;}K.send(l)}if(0<r)var I=c(C,r);else r&&z(r.then)&&r.then(C)}}function $e(){var b="{{",a="}}";this.startSymbol=
function(a){return a?(b=a,this):b};this.endSymbol=function(b){return b?(a=b,this):a};this.$get=["$parse","$exceptionHandler","$sce",function(c,d,e){function f(a){return"\\\\\\"+a}function g(c){return c.replace(n,b).replace(r,a)}function h(f,h,n,r){function u(a){try{var b=a;a=n?e.getTrusted(n,b):e.valueOf(b);var c;if(r&&!w(a))c=a;else if(null==a)c="";else{switch(typeof a){case "string":break;case "number":a=""+a;break;default:a=db(a)}c=a}return c}catch(g){d(Ka.interr(f,g))}}r=!!r;for(var p,m,q=0,I=
[],B=[],N=f.length,D=[],t=[];q<N;)if(-1!=(p=f.indexOf(b,q))&&-1!=(m=f.indexOf(a,p+l)))q!==p&&D.push(g(f.substring(q,p))),q=f.substring(p+l,m),I.push(q),B.push(c(q,u)),q=m+k,t.push(D.length),D.push("");else{q!==N&&D.push(g(f.substring(q)));break}n&&1<D.length&&Ka.throwNoconcat(f);if(!h||I.length){var S=function(a){for(var b=0,c=I.length;b<c;b++){if(r&&A(a[b]))return;D[t[b]]=a[b]}return D.join("")};return P(function(a){var b=0,c=I.length,e=Array(c);try{for(;b<c;b++)e[b]=B[b](a);return S(e)}catch(g){d(Ka.interr(f,
g))}},{exp:f,expressions:I,$$watchDelegate:function(a,b){var c;return a.$watchGroup(B,function(d,e){var f=S(d);z(b)&&b.call(this,f,d!==e?c:f,a);c=f})}})}}var l=b.length,k=a.length,n=new RegExp(b.replace(/./g,f),"g"),r=new RegExp(a.replace(/./g,f),"g");h.startSymbol=function(){return b};h.endSymbol=function(){return a};return h}]}function af(){this.$get=["$rootScope","$window","$q","$$q",function(b,a,c,d){function e(e,h,l,k){var n=4<arguments.length,r=n?za.call(arguments,4):[],s=a.setInterval,x=a.clearInterval,
C=0,F=w(k)&&!k,u=(F?d:c).defer(),p=u.promise;l=w(l)?l:0;p.then(null,null,n?function(){e.apply(null,r)}:e);p.$$intervalId=s(function(){u.notify(C++);0<l&&C>=l&&(u.resolve(C),x(p.$$intervalId),delete f[p.$$intervalId]);F||b.$apply()},h);f[p.$$intervalId]=u;return p}var f={};e.cancel=function(b){return b&&b.$$intervalId in f?(f[b.$$intervalId].reject("canceled"),a.clearInterval(b.$$intervalId),delete f[b.$$intervalId],!0):!1};return e}]}function ge(){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",ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"]},pluralCat:function(b){return 1===b?"one":"other"}}}}function bc(b){b=b.split("/");for(var a=b.length;a--;)b[a]=ob(b[a]);return b.join("/")}function hd(b,a){var c=Ba(b);a.$$protocol=c.protocol;
a.$$host=c.hostname;a.$$port=W(c.port)||Tf[c.protocol]||null}function id(b,a){var c="/"!==b.charAt(0);c&&(b="/"+b);var d=Ba(b);a.$$path=decodeURIComponent(c&&"/"===d.pathname.charAt(0)?d.pathname.substring(1):d.pathname);a.$$search=zc(d.search);a.$$hash=decodeURIComponent(d.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function ya(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function Ja(b){var a=b.indexOf("#");return-1==a?b:b.substr(0,a)}function Bb(b){return b.replace(/(#.+)|#$/,
"$1")}function cc(b){return b.substr(0,Ja(b).lastIndexOf("/")+1)}function dc(b,a){this.$$html5=!0;a=a||"";var c=cc(b);hd(b,this);this.$$parse=function(a){var b=ya(c,a);if(!L(b))throw Cb("ipthprfx",a,c);id(b,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Qb(this.$$search),b=this.$$hash?"#"+ob(this.$$hash):"";this.$$url=bc(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),
!0;var f,g;(f=ya(b,d))!==t?(g=f,g=(f=ya(a,f))!==t?c+(ya("/",f)||f):b+g):(f=ya(c,d))!==t?g=c+f:c==d+"/"&&(g=c);g&&this.$$parse(g);return!!g}}function ec(b,a){var c=cc(b);hd(b,this);this.$$parse=function(d){var e=ya(b,d)||ya(c,d),f;A(e)||"#"!==e.charAt(0)?this.$$html5?f=e:(f="",A(e)&&(b=d,this.replace())):(f=ya(a,e),A(f)&&(f=e));id(f,this);d=this.$$path;var e=b,g=/^\/[A-Z]:(\/.*)/;0===f.indexOf(e)&&(f=f.replace(e,""));g.exec(f)||(d=(f=g.exec(d))?f[1]:d);this.$$path=d;this.$$compose()};this.$$compose=
function(){var c=Qb(this.$$search),e=this.$$hash?"#"+ob(this.$$hash):"";this.$$url=bc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$parseLinkUrl=function(a,c){return Ja(b)==Ja(a)?(this.$$parse(a),!0):!1}}function jd(b,a){this.$$html5=!0;ec.apply(this,arguments);var c=cc(b);this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;b==Ja(d)?f=d:(g=ya(c,d))?f=b+a+g:c===d+"/"&&(f=c);f&&this.$$parse(f);return!!f};this.$$compose=function(){var c=
Qb(this.$$search),e=this.$$hash?"#"+ob(this.$$hash):"";this.$$url=bc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+a+this.$$url}}function Db(b){return function(){return this[b]}}function kd(b,a){return function(c){if(A(c))return this[b];this[b]=a(c);this.$$compose();return this}}function ff(){var b="",a={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(a){return w(a)?(b=a,this):b};this.html5Mode=function(b){return ab(b)?(a.enabled=b,this):H(b)?(ab(b.enabled)&&(a.enabled=b.enabled),
ab(b.requireBase)&&(a.requireBase=b.requireBase),ab(b.rewriteLinks)&&(a.rewriteLinks=b.rewriteLinks),this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(c,d,e,f,g){function h(a,b,c){var e=k.url(),f=k.$$state;try{d.url(a,b,c),k.$$state=d.state()}catch(g){throw k.url(e),k.$$state=f,g;}}function l(a,b){c.$broadcast("$locationChangeSuccess",k.absUrl(),a,k.$$state,b)}var k,n;n=d.baseHref();var r=d.url(),s;if(a.enabled){if(!n&&a.requireBase)throw Cb("nobase");s=r.substring(0,
r.indexOf("/",r.indexOf("//")+2))+(n||"/");n=e.history?dc:jd}else s=Ja(r),n=ec;k=new n(s,"#"+b);k.$$parseLinkUrl(r,r);k.$$state=d.state();var x=/^\s*(javascript|mailto):/i;f.on("click",function(b){if(a.rewriteLinks&&!b.ctrlKey&&!b.metaKey&&!b.shiftKey&&2!=b.which&&2!=b.button){for(var e=y(b.target);"a"!==ta(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),l=e.attr("href")||e.attr("xlink:href");H(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=Ba(h.animVal).href);x.test(h)||
!h||e.attr("target")||b.isDefaultPrevented()||!k.$$parseLinkUrl(h,l)||(b.preventDefault(),k.absUrl()!=d.url()&&(c.$apply(),g.angular["ff-684208-preventDefault"]=!0))}});Bb(k.absUrl())!=Bb(r)&&d.url(k.absUrl(),!0);var C=!0;d.onUrlChange(function(a,b){c.$evalAsync(function(){var d=k.absUrl(),e=k.$$state,f;k.$$parse(a);k.$$state=b;f=c.$broadcast("$locationChangeStart",a,d,b,e).defaultPrevented;k.absUrl()===a&&(f?(k.$$parse(d),k.$$state=e,h(d,!1,e)):(C=!1,l(d,e)))});c.$$phase||c.$digest()});c.$watch(function(){var a=
Bb(d.url()),b=Bb(k.absUrl()),f=d.state(),g=k.$$replace,n=a!==b||k.$$html5&&e.history&&f!==k.$$state;if(C||n)C=!1,c.$evalAsync(function(){var b=k.absUrl(),d=c.$broadcast("$locationChangeStart",b,a,k.$$state,f).defaultPrevented;k.absUrl()===b&&(d?(k.$$parse(a),k.$$state=f):(n&&h(b,g,f===k.$$state?null:k.$$state),l(a,f)))});k.$$replace=!1});return k}]}function gf(){var b=!0,a=this;this.debugEnabled=function(a){return w(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||v;a=!1;try{a=!!e.apply}catch(l){}return a?function(){var a=[];m(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 Ca(b,a){if("__defineGetter__"===b||"__defineSetter__"===b||"__lookupGetter__"===b||"__lookupSetter__"===b||"__proto__"===b)throw da("isecfld",a);return b}function oa(b,a){if(b){if(b.constructor===b)throw da("isecfn",a);if(b.window===b)throw da("isecwindow",a);if(b.children&&(b.nodeName||b.prop&&b.attr&&b.find))throw da("isecdom",a);if(b===Object)throw da("isecobj",a);}return b}function ld(b,a){if(b){if(b.constructor===b)throw da("isecfn",a);if(b===Uf||b===Vf||b===Wf)throw da("isecff",a);
}}function Xf(b,a){return"undefined"!==typeof b?b:a}function md(b,a){return"undefined"===typeof b?a:"undefined"===typeof a?b:b+a}function T(b,a){var c,d;switch(b.type){case q.Program:c=!0;m(b.body,function(b){T(b.expression,a);c=c&&b.expression.constant});b.constant=c;break;case q.Literal:b.constant=!0;b.toWatch=[];break;case q.UnaryExpression:T(b.argument,a);b.constant=b.argument.constant;b.toWatch=b.argument.toWatch;break;case q.BinaryExpression:T(b.left,a);T(b.right,a);b.constant=b.left.constant&&
b.right.constant;b.toWatch=b.left.toWatch.concat(b.right.toWatch);break;case q.LogicalExpression:T(b.left,a);T(b.right,a);b.constant=b.left.constant&&b.right.constant;b.toWatch=b.constant?[]:[b];break;case q.ConditionalExpression:T(b.test,a);T(b.alternate,a);T(b.consequent,a);b.constant=b.test.constant&&b.alternate.constant&&b.consequent.constant;b.toWatch=b.constant?[]:[b];break;case q.Identifier:b.constant=!1;b.toWatch=[b];break;case q.MemberExpression:T(b.object,a);b.computed&&T(b.property,a);
b.constant=b.object.constant&&(!b.computed||b.property.constant);b.toWatch=[b];break;case q.CallExpression:c=b.filter?!a(b.callee.name).$stateful:!1;d=[];m(b.arguments,function(b){T(b,a);c=c&&b.constant;b.constant||d.push.apply(d,b.toWatch)});b.constant=c;b.toWatch=b.filter&&!a(b.callee.name).$stateful?d:[b];break;case q.AssignmentExpression:T(b.left,a);T(b.right,a);b.constant=b.left.constant&&b.right.constant;b.toWatch=[b];break;case q.ArrayExpression:c=!0;d=[];m(b.elements,function(b){T(b,a);c=
c&&b.constant;b.constant||d.push.apply(d,b.toWatch)});b.constant=c;b.toWatch=d;break;case q.ObjectExpression:c=!0;d=[];m(b.properties,function(b){T(b.value,a);c=c&&b.value.constant;b.value.constant||d.push.apply(d,b.value.toWatch)});b.constant=c;b.toWatch=d;break;case q.ThisExpression:b.constant=!1,b.toWatch=[]}}function nd(b){if(1==b.length){b=b[0].expression;var a=b.toWatch;return 1!==a.length?a:a[0]!==b?a:t}}function od(b){return b.type===q.Identifier||b.type===q.MemberExpression}function pd(b){if(1===
b.body.length&&od(b.body[0].expression))return{type:q.AssignmentExpression,left:b.body[0].expression,right:{type:q.NGValueParameter},operator:"="}}function qd(b){return 0===b.body.length||1===b.body.length&&(b.body[0].expression.type===q.Literal||b.body[0].expression.type===q.ArrayExpression||b.body[0].expression.type===q.ObjectExpression)}function rd(b,a){this.astBuilder=b;this.$filter=a}function sd(b,a){this.astBuilder=b;this.$filter=a}function Eb(b,a,c,d){oa(b,d);a=a.split(".");for(var e,f=0;1<
a.length;f++){e=Ca(a.shift(),d);var g=oa(b[e],d);g||(g={},b[e]=g);b=g}e=Ca(a.shift(),d);oa(b[e],d);return b[e]=c}function Fb(b){return"constructor"==b}function fc(b){return z(b.valueOf)?b.valueOf():Yf.call(b)}function hf(){var b=ga(),a=ga();this.$get=["$filter","$sniffer",function(c,d){function e(a,b){return null==a||null==b?a===b:"object"===typeof a&&(a=fc(a),"object"===typeof a)?!1:a===b||a!==a&&b!==b}function f(a,b,c,d,f){var g=d.inputs,h;if(1===g.length){var k=e,g=g[0];return a.$watch(function(a){var b=
g(a);e(b,k)||(h=d(a,t,t,[b]),k=b&&fc(b));return h},b,c,f)}for(var l=[],n=[],r=0,m=g.length;r<m;r++)l[r]=e,n[r]=null;return a.$watch(function(a){for(var b=!1,c=0,f=g.length;c<f;c++){var k=g[c](a);if(b||(b=!e(k,l[c])))n[c]=k,l[c]=k&&fc(k)}b&&(h=d(a,t,t,n));return h},b,c,f)}function g(a,b,c,d){var e,f;return e=a.$watch(function(a){return d(a)},function(a,c,d){f=a;z(b)&&b.apply(this,arguments);w(a)&&d.$$postDigest(function(){w(f)&&e()})},c)}function h(a,b,c,d){function e(a){var b=!0;m(a,function(a){w(a)||
(b=!1)});return b}var f,g;return f=a.$watch(function(a){return d(a)},function(a,c,d){g=a;z(b)&&b.call(this,a,c,d);e(a)&&d.$$postDigest(function(){e(g)&&f()})},c)}function l(a,b,c,d){var e;return e=a.$watch(function(a){return d(a)},function(a,c,d){z(b)&&b.apply(this,arguments);e()},c)}function k(a,b){if(!b)return a;var c=a.$$watchDelegate,c=c!==h&&c!==g?function(c,d,e,f){e=a(c,d,e,f);return b(e,c,d)}:function(c,d,e,f){e=a(c,d,e,f);c=b(e,c,d);return w(e)?c:e};a.$$watchDelegate&&a.$$watchDelegate!==
f?c.$$watchDelegate=a.$$watchDelegate:b.$stateful||(c.$$watchDelegate=f,c.inputs=a.inputs?a.inputs:[a]);return c}var n={csp:d.csp,expensiveChecks:!1},r={csp:d.csp,expensiveChecks:!0};return function(d,e,C){var m,u,p;switch(typeof d){case "string":p=d=d.trim();var q=C?a:b;m=q[p];m||(":"===d.charAt(0)&&":"===d.charAt(1)&&(u=!0,d=d.substring(2)),C=C?r:n,m=new gc(C),m=(new hc(m,c,C)).parse(d),m.constant?m.$$watchDelegate=l:u?m.$$watchDelegate=m.literal?h:g:m.inputs&&(m.$$watchDelegate=f),q[p]=m);return k(m,
e);case "function":return k(d,e);default:return v}}}]}function kf(){this.$get=["$rootScope","$exceptionHandler",function(b,a){return td(function(a){b.$evalAsync(a)},a)}]}function lf(){this.$get=["$browser","$exceptionHandler",function(b,a){return td(function(a){b.defer(a)},a)}]}function td(b,a){function c(a,b,c){function d(b){return function(c){e||(e=!0,b.call(a,c))}}var e=!1;return[d(b),d(c)]}function d(){this.$$state={status:0}}function e(a,b){return function(c){b.call(a,c)}}function f(c){!c.processScheduled&&
c.pending&&(c.processScheduled=!0,b(function(){var b,d,e;e=c.pending;c.processScheduled=!1;c.pending=t;for(var f=0,g=e.length;f<g;++f){d=e[f][0];b=e[f][c.status];try{z(b)?d.resolve(b(c.value)):1===c.status?d.resolve(c.value):d.reject(c.value)}catch(h){d.reject(h),a(h)}}}))}function g(){this.promise=new d;this.resolve=e(this,this.resolve);this.reject=e(this,this.reject);this.notify=e(this,this.notify)}var h=J("$q",TypeError);d.prototype={then:function(a,b,c){var d=new g;this.$$state.pending=this.$$state.pending||
[];this.$$state.pending.push([d,a,b,c]);0<this.$$state.status&&f(this.$$state);return d.promise},"catch":function(a){return this.then(null,a)},"finally":function(a,b){return this.then(function(b){return k(b,!0,a)},function(b){return k(b,!1,a)},b)}};g.prototype={resolve:function(a){this.promise.$$state.status||(a===this.promise?this.$$reject(h("qcycle",a)):this.$$resolve(a))},$$resolve:function(b){var d,e;e=c(this,this.$$resolve,this.$$reject);try{if(H(b)||z(b))d=b&&b.then;z(d)?(this.promise.$$state.status=
-1,d.call(b,e[0],e[1],this.notify)):(this.promise.$$state.value=b,this.promise.$$state.status=1,f(this.promise.$$state))}catch(g){e[1](g),a(g)}},reject:function(a){this.promise.$$state.status||this.$$reject(a)},$$reject:function(a){this.promise.$$state.value=a;this.promise.$$state.status=2;f(this.promise.$$state)},notify:function(c){var d=this.promise.$$state.pending;0>=this.promise.$$state.status&&d&&d.length&&b(function(){for(var b,e,f=0,g=d.length;f<g;f++){e=d[f][0];b=d[f][3];try{e.notify(z(b)?
b(c):c)}catch(h){a(h)}}})}};var l=function(a,b){var c=new g;b?c.resolve(a):c.reject(a);return c.promise},k=function(a,b,c){var d=null;try{z(c)&&(d=c())}catch(e){return l(e,!1)}return d&&z(d.then)?d.then(function(){return l(a,b)},function(a){return l(a,!1)}):l(a,b)},n=function(a,b,c,d){var e=new g;e.resolve(a);return e.promise.then(b,c,d)},r=function x(a){if(!z(a))throw h("norslvr",a);if(!(this instanceof x))return new x(a);var b=new g;a(function(a){b.resolve(a)},function(a){b.reject(a)});return b.promise};
r.defer=function(){return new g};r.reject=function(a){var b=new g;b.reject(a);return b.promise};r.when=n;r.resolve=n;r.all=function(a){var b=new g,c=0,d=G(a)?[]:{};m(a,function(a,e){c++;n(a).then(function(a){d.hasOwnProperty(e)||(d[e]=a,--c||b.resolve(d))},function(a){d.hasOwnProperty(e)||b.reject(a)})});0===c&&b.resolve(d);return b.promise};return r}function uf(){this.$get=["$window","$timeout",function(b,a){function c(){for(var a=0;a<n.length;a++){var b=n[a];b&&(n[a]=null,b())}k=n.length=0}function d(a){var b=
n.length;k++;n.push(a);0===b&&(l=h(c));return function(){0<=b&&(b=n[b]=null,0===--k&&l&&(l(),l=null,n.length=0))}}var e=b.requestAnimationFrame||b.webkitRequestAnimationFrame,f=b.cancelAnimationFrame||b.webkitCancelAnimationFrame||b.webkitCancelRequestAnimationFrame,g=!!e,h=g?function(a){var b=e(a);return function(){f(b)}}:function(b){var c=a(b,16.66,!1);return function(){a.cancel(c)}};d.supported=g;var l,k=0,n=[];return d}]}function jf(){function b(a){function b(){this.$$watchers=this.$$nextSibling=
this.$$childHead=this.$$childTail=null;this.$$listeners={};this.$$listenerCount={};this.$$watchersCount=0;this.$id=++nb;this.$$ChildScope=null}b.prototype=a;return b}var a=10,c=J("$rootScope"),d=null,e=null;this.digestTtl=function(b){arguments.length&&(a=b);return a};this.$get=["$injector","$exceptionHandler","$parse","$browser",function(f,g,h,l){function k(a){a.currentScope.$$destroyed=!0}function n(){this.$id=++nb;this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=
this.$$childTail=null;this.$root=this;this.$$destroyed=!1;this.$$listeners={};this.$$listenerCount={};this.$$watchersCount=0;this.$$isolateBindings=null}function r(a){if(p.$$phase)throw c("inprog",p.$$phase);p.$$phase=a}function s(a,b){do a.$$watchersCount+=b;while(a=a.$parent)}function x(a,b,c){do a.$$listenerCount[c]-=b,0===a.$$listenerCount[c]&&delete a.$$listenerCount[c];while(a=a.$parent)}function q(){}function F(){for(;I.length;)try{I.shift()()}catch(a){g(a)}e=null}function u(){null===e&&(e=
l.defer(function(){p.$apply(F)}))}n.prototype={constructor:n,$new:function(a,c){var d;c=c||this;a?(d=new n,d.$root=this.$root):(this.$$ChildScope||(this.$$ChildScope=b(this)),d=new this.$$ChildScope);d.$parent=c;d.$$prevSibling=c.$$childTail;c.$$childHead?(c.$$childTail.$$nextSibling=d,c.$$childTail=d):c.$$childHead=c.$$childTail=d;(a||c!=this)&&d.$on("$destroy",k);return d},$watch:function(a,b,c,e){var f=h(a);if(f.$$watchDelegate)return f.$$watchDelegate(this,b,c,f,a);var g=this,k=g.$$watchers,l=
{fn:b,last:q,get:f,exp:e||a,eq:!!c};d=null;z(b)||(l.fn=v);k||(k=g.$$watchers=[]);k.unshift(l);s(this,1);return function(){0<=bb(k,l)&&s(g,-1);d=null}},$watchGroup:function(a,b){function c(){h=!1;k?(k=!1,b(e,e,g)):b(e,d,g)}var d=Array(a.length),e=Array(a.length),f=[],g=this,h=!1,k=!0;if(!a.length){var l=!0;g.$evalAsync(function(){l&&b(e,e,g)});return function(){l=!1}}if(1===a.length)return this.$watch(a[0],function(a,c,f){e[0]=a;d[0]=c;b(e,a===c?e:d,f)});m(a,function(a,b){var k=g.$watch(a,function(a,
f){e[b]=a;d[b]=f;h||(h=!0,g.$evalAsync(c))});f.push(k)});return function(){for(;f.length;)f.shift()()}},$watchCollection:function(a,b){function c(a){e=a;var b,d,g,h;if(!A(e)){if(H(e))if(Ea(e))for(f!==r&&(f=r,m=f.length=0,l++),a=e.length,m!==a&&(l++,f.length=m=a),b=0;b<a;b++)h=f[b],g=e[b],d=h!==h&&g!==g,d||h===g||(l++,f[b]=g);else{f!==s&&(f=s={},m=0,l++);a=0;for(b in e)e.hasOwnProperty(b)&&(a++,g=e[b],h=f[b],b in f?(d=h!==h&&g!==g,d||h===g||(l++,f[b]=g)):(m++,f[b]=g,l++));if(m>a)for(b in l++,f)e.hasOwnProperty(b)||
(m--,delete f[b])}else f!==e&&(f=e,l++);return l}}c.$stateful=!0;var d=this,e,f,g,k=1<b.length,l=0,n=h(a,c),r=[],s={},p=!0,m=0;return this.$watch(n,function(){p?(p=!1,b(e,e,d)):b(e,g,d);if(k)if(H(e))if(Ea(e)){g=Array(e.length);for(var a=0;a<e.length;a++)g[a]=e[a]}else for(a in g={},e)Xa.call(e,a)&&(g[a]=e[a]);else g=e})},$digest:function(){var b,f,h,k,n,s,m=a,x,u=[],E,I;r("$digest");l.$$checkUrlChange();this===p&&null!==e&&(l.defer.cancel(e),F());d=null;do{s=!1;for(x=this;t.length;){try{I=t.shift(),
I.scope.$eval(I.expression,I.locals)}catch(v){g(v)}d=null}a:do{if(k=x.$$watchers)for(n=k.length;n--;)try{if(b=k[n])if((f=b.get(x))!==(h=b.last)&&!(b.eq?ka(f,h):"number"===typeof f&&"number"===typeof h&&isNaN(f)&&isNaN(h)))s=!0,d=b,b.last=b.eq?fa(f,null):f,b.fn(f,h===q?f:h,x),5>m&&(E=4-m,u[E]||(u[E]=[]),u[E].push({msg:z(b.exp)?"fn: "+(b.exp.name||b.exp.toString()):b.exp,newVal:f,oldVal:h}));else if(b===d){s=!1;break a}}catch(A){g(A)}if(!(k=x.$$watchersCount&&x.$$childHead||x!==this&&x.$$nextSibling))for(;x!==
this&&!(k=x.$$nextSibling);)x=x.$parent}while(x=k);if((s||t.length)&&!m--)throw p.$$phase=null,c("infdig",a,u);}while(s||t.length);for(p.$$phase=null;w.length;)try{w.shift()()}catch(y){g(y)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this===p&&l.$$applicationDestroyed();s(this,-this.$$watchersCount);for(var b in this.$$listenerCount)x(this,this.$$listenerCount[b],b);a&&a.$$childHead==this&&(a.$$childHead=this.$$nextSibling);a&&a.$$childTail==
this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=v;this.$on=this.$watch=this.$watchGroup=function(){return v};this.$$listeners={};this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=this.$$watchers=null}},$eval:function(a,b){return h(a)(this,b)},
$evalAsync:function(a,b){p.$$phase||t.length||l.defer(function(){t.length&&p.$digest()});t.push({scope:this,expression:a,locals:b})},$$postDigest:function(a){w.push(a)},$apply:function(a){try{return r("$apply"),this.$eval(a)}catch(b){g(b)}finally{p.$$phase=null;try{p.$digest()}catch(c){throw g(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&I.push(b);u()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||
(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){var d=c.indexOf(b);-1!==d&&(c[d]=null,x(e,1,a))}},$emit:function(a,b){var c=[],d,e=this,f=!1,h={name:a,targetScope:e,stopPropagation:function(){f=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=cb([h],arguments,1),l,n;do{d=e.$$listeners[a]||c;h.currentScope=e;l=0;for(n=d.length;l<n;l++)if(d[l])try{d[l].apply(null,k)}catch(r){g(r)}else d.splice(l,1),l--,n--;if(f)return h.currentScope=
null,h;e=e.$parent}while(e);h.currentScope=null;return h},$broadcast:function(a,b){var c=this,d=this,e={name:a,targetScope:this,preventDefault:function(){e.defaultPrevented=!0},defaultPrevented:!1};if(!this.$$listenerCount[a])return e;for(var f=cb([e],arguments,1),h,k;c=d;){e.currentScope=c;d=c.$$listeners[a]||[];h=0;for(k=d.length;h<k;h++)if(d[h])try{d[h].apply(null,f)}catch(l){g(l)}else d.splice(h,1),h--,k--;if(!(d=c.$$listenerCount[a]&&c.$$childHead||c!==this&&c.$$nextSibling))for(;c!==this&&!(d=
c.$$nextSibling);)c=c.$parent}e.currentScope=null;return e}};var p=new n,t=p.$$asyncQueue=[],w=p.$$postDigestQueue=[],I=p.$$applyAsyncQueue=[];return p}]}function he(){var b=/^\s*(https?|ftp|mailto|tel|file):/,a=/^\s*((https?|ftp|file|blob):|data:image\/)/;this.aHrefSanitizationWhitelist=function(a){return w(a)?(b=a,this):b};this.imgSrcSanitizationWhitelist=function(b){return w(b)?(a=b,this):a};this.$get=function(){return function(c,d){var e=d?a:b,f;f=Ba(c).href;return""===f||f.match(e)?c:"unsafe:"+
f}}}function Zf(b){if("self"===b)return b;if(L(b)){if(-1<b.indexOf("***"))throw Da("iwcard",b);b=ud(b).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*");return new RegExp("^"+b+"$")}if(Za(b))return new RegExp("^"+b.source+"$");throw Da("imatcher");}function vd(b){var a=[];w(b)&&m(b,function(b){a.push(Zf(b))});return a}function nf(){this.SCE_CONTEXTS=pa;var b=["self"],a=[];this.resourceUrlWhitelist=function(a){arguments.length&&(b=vd(a));return b};this.resourceUrlBlacklist=function(b){arguments.length&&
(a=vd(b));return a};this.$get=["$injector",function(c){function d(a,b){return"self"===a?gd(b):!!a.exec(b.href)}function e(a){var b=function(a){this.$$unwrapTrustedValue=function(){return a}};a&&(b.prototype=new a);b.prototype.valueOf=function(){return this.$$unwrapTrustedValue()};b.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()};return b}var f=function(a){throw Da("unsafe");};c.has("$sanitize")&&(f=c.get("$sanitize"));var g=e(),h={};h[pa.HTML]=e(g);h[pa.CSS]=e(g);h[pa.URL]=
e(g);h[pa.JS]=e(g);h[pa.RESOURCE_URL]=e(h[pa.URL]);return{trustAs:function(a,b){var c=h.hasOwnProperty(a)?h[a]:null;if(!c)throw Da("icontext",a,b);if(null===b||b===t||""===b)return b;if("string"!==typeof b)throw Da("itype",a);return new c(b)},getTrusted:function(c,e){if(null===e||e===t||""===e)return e;var g=h.hasOwnProperty(c)?h[c]:null;if(g&&e instanceof g)return e.$$unwrapTrustedValue();if(c===pa.RESOURCE_URL){var g=Ba(e.toString()),r,s,m=!1;r=0;for(s=b.length;r<s;r++)if(d(b[r],g)){m=!0;break}if(m)for(r=
0,s=a.length;r<s;r++)if(d(a[r],g)){m=!1;break}if(m)return e;throw Da("insecurl",e.toString());}if(c===pa.HTML)return f(e);throw Da("unsafe");},valueOf:function(a){return a instanceof g?a.$$unwrapTrustedValue():a}}}]}function mf(){var b=!0;this.enabled=function(a){arguments.length&&(b=!!a);return b};this.$get=["$parse","$sceDelegate",function(a,c){if(b&&8>Ua)throw Da("iequirks");var d=ia(pa);d.isEnabled=function(){return b};d.trustAs=c.trustAs;d.getTrusted=c.getTrusted;d.valueOf=c.valueOf;b||(d.trustAs=
d.getTrusted=function(a,b){return b},d.valueOf=Ya);d.parseAs=function(b,c){var e=a(c);return e.literal&&e.constant?e:a(c,function(a){return d.getTrusted(b,a)})};var e=d.parseAs,f=d.getTrusted,g=d.trustAs;m(pa,function(a,b){var c=M(b);d[hb("parse_as_"+c)]=function(b){return e(a,b)};d[hb("get_trusted_"+c)]=function(b){return f(a,b)};d[hb("trust_as_"+c)]=function(b){return g(a,b)}});return d}]}function of(){this.$get=["$window","$document",function(b,a){var c={},d=W((/android (\d+)/.exec(M((b.navigator||
{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||{}).userAgent),f=a[0]||{},g,h=/^(Moz|webkit|ms)(?=[A-Z])/,l=f.body&&f.body.style,k=!1,n=!1;if(l){for(var r in l)if(k=h.exec(r)){g=k[0];g=g.substr(0,1).toUpperCase()+g.substr(1);break}g||(g="WebkitOpacity"in l&&"webkit");k=!!("transition"in l||g+"Transition"in l);n=!!("animation"in l||g+"Animation"in l);!d||k&&n||(k=L(l.webkitTransition),n=L(l.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hasEvent:function(a){if("input"===
a&&11>=Ua)return!1;if(A(c[a])){var b=f.createElement("div");c[a]="on"+a in b}return c[a]},csp:fb(),vendorPrefix:g,transitions:k,animations:n,android:d}}]}function qf(){this.$get=["$templateCache","$http","$q","$sce",function(b,a,c,d){function e(f,g){e.totalPendingRequests++;L(f)&&b.get(f)||(f=d.getTrustedResourceUrl(f));var h=a.defaults&&a.defaults.transformResponse;G(h)?h=h.filter(function(a){return a!==$b}):h===$b&&(h=null);return a.get(f,{cache:b,transformResponse:h})["finally"](function(){e.totalPendingRequests--}).then(function(a){b.put(f,
a.data);return a.data},function(a){if(!g)throw ea("tpload",f,a.status,a.statusText);return c.reject(a)})}e.totalPendingRequests=0;return e}]}function rf(){this.$get=["$rootScope","$browser","$location",function(b,a,c){return{findBindings:function(a,b,c){a=a.getElementsByClassName("ng-binding");var g=[];m(a,function(a){var d=ca.element(a).data("$binding");d&&m(d,function(d){c?(new RegExp("(^|\\s)"+ud(b)+"(\\s|\\||$)")).test(d)&&g.push(a):-1!=d.indexOf(b)&&g.push(a)})});return g},findModels:function(a,
b,c){for(var g=["ng-","data-ng-","ng\\:"],h=0;h<g.length;++h){var l=a.querySelectorAll("["+g[h]+"model"+(c?"=":"*=")+'"'+b+'"]');if(l.length)return l}},getLocation:function(){return c.url()},setLocation:function(a){a!==c.url()&&(c.url(a),b.$digest())},whenStable:function(b){a.notifyWhenNoOutstandingRequests(b)}}}]}function sf(){this.$get=["$rootScope","$browser","$q","$$q","$exceptionHandler",function(b,a,c,d,e){function f(f,l,k){z(f)||(k=l,l=f,f=v);var n=za.call(arguments,3),r=w(k)&&!k,s=(r?d:c).defer(),
m=s.promise,q;q=a.defer(function(){try{s.resolve(f.apply(null,n))}catch(a){s.reject(a),e(a)}finally{delete g[m.$$timeoutId]}r||b.$apply()},l);m.$$timeoutId=q;g[q]=s;return m}var g={};f.cancel=function(b){return b&&b.$$timeoutId in g?(g[b.$$timeoutId].reject("canceled"),delete g[b.$$timeoutId],a.defer.cancel(b.$$timeoutId)):!1};return f}]}function Ba(b){Ua&&(X.setAttribute("href",b),b=X.href);X.setAttribute("href",b);return{href:X.href,protocol:X.protocol?X.protocol.replace(/:$/,""):"",host:X.host,
search:X.search?X.search.replace(/^\?/,""):"",hash:X.hash?X.hash.replace(/^#/,""):"",hostname:X.hostname,port:X.port,pathname:"/"===X.pathname.charAt(0)?X.pathname:"/"+X.pathname}}function gd(b){b=L(b)?Ba(b):b;return b.protocol===wd.protocol&&b.host===wd.host}function tf(){this.$get=ra(O)}function xd(b){function a(a){try{return decodeURIComponent(a)}catch(b){return a}}var c=b[0]||{},d={},e="";return function(){var b,g,h,l,k;b=c.cookie||"";if(b!==e)for(e=b,b=e.split("; "),d={},h=0;h<b.length;h++)g=
b[h],l=g.indexOf("="),0<l&&(k=a(g.substring(0,l)),d[k]===t&&(d[k]=a(g.substring(l+1))));return d}}function xf(){this.$get=xd}function Lc(b){function a(c,d){if(H(c)){var e={};m(c,function(b,c){e[c]=a(c,b)});return e}return b.factory(c+"Filter",d)}this.register=a;this.$get=["$injector",function(a){return function(b){return a.get(b+"Filter")}}];a("currency",yd);a("date",zd);a("filter",$f);a("json",ag);a("limitTo",bg);a("lowercase",cg);a("number",Ad);a("orderBy",Bd);a("uppercase",dg)}function $f(){return function(b,
a,c){if(!Ea(b)){if(null==b)return b;throw J("filter")("notarray",b);}var d;switch(ic(a)){case "function":break;case "boolean":case "null":case "number":case "string":d=!0;case "object":a=eg(a,c,d);break;default:return b}return Array.prototype.filter.call(b,a)}}function eg(b,a,c){var d=H(b)&&"$"in b;!0===a?a=ka:z(a)||(a=function(a,b){if(A(a))return!1;if(null===a||null===b)return a===b;if(H(b)||H(a)&&!rc(a))return!1;a=M(""+a);b=M(""+b);return-1!==a.indexOf(b)});return function(e){return d&&!H(e)?La(e,
b.$,a,!1):La(e,b,a,c)}}function La(b,a,c,d,e){var f=ic(b),g=ic(a);if("string"===g&&"!"===a.charAt(0))return!La(b,a.substring(1),c,d);if(G(b))return b.some(function(b){return La(b,a,c,d)});switch(f){case "object":var h;if(d){for(h in b)if("$"!==h.charAt(0)&&La(b[h],a,c,!0))return!0;return e?!1:La(b,a,c,!1)}if("object"===g){for(h in a)if(e=a[h],!z(e)&&!A(e)&&(f="$"===h,!La(f?b:b[h],e,c,f,f)))return!1;return!0}return c(b,a);case "function":return!1;default:return c(b,a)}}function ic(b){return null===
b?"null":typeof b}function yd(b){var a=b.NUMBER_FORMATS;return function(b,d,e){A(d)&&(d=a.CURRENCY_SYM);A(e)&&(e=a.PATTERNS[1].maxFrac);return null==b?b:Cd(b,a.PATTERNS[1],a.GROUP_SEP,a.DECIMAL_SEP,e).replace(/\u00A4/g,d)}}function Ad(b){var a=b.NUMBER_FORMATS;return function(b,d){return null==b?b:Cd(b,a.PATTERNS[0],a.GROUP_SEP,a.DECIMAL_SEP,d)}}function Cd(b,a,c,d,e){if(H(b))return"";var f=0>b;b=Math.abs(b);var g=Infinity===b;if(!g&&!isFinite(b))return"";var h=b+"",l="",k=!1,n=[];g&&(l="\u221e");
if(!g&&-1!==h.indexOf("e")){var r=h.match(/([\d\.]+)e(-?)(\d+)/);r&&"-"==r[2]&&r[3]>e+1?b=0:(l=h,k=!0)}if(g||k)0<e&&1>b&&(l=b.toFixed(e),b=parseFloat(l));else{g=(h.split(Dd)[1]||"").length;A(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));b=+(Math.round(+(b.toString()+"e"+e)).toString()+"e"+-e);var g=(""+b).split(Dd),h=g[0],g=g[1]||"",r=0,s=a.lgSize,m=a.gSize;if(h.length>=s+m)for(r=h.length-s,k=0;k<r;k++)0===(r-k)%m&&0!==k&&(l+=c),l+=h.charAt(k);for(k=r;k<h.length;k++)0===(h.length-k)%s&&0!==k&&
(l+=c),l+=h.charAt(k);for(;g.length<e;)g+="0";e&&"0"!==e&&(l+=d+g.substr(0,e))}0===b&&(f=!1);n.push(f?a.negPre:a.posPre,l,f?a.negSuf:a.posSuf);return n.join("")}function Gb(b,a,c){var d="";0>b&&(d="-",b=-b);for(b=""+b;b.length<a;)b="0"+b;c&&(b=b.substr(b.length-a));return d+b}function Y(b,a,c,d){c=c||0;return function(e){e=e["get"+b]();if(0<c||e>-c)e+=c;0===e&&-12==c&&(e=12);return Gb(e,a,d)}}function Hb(b,a){return function(c,d){var e=c["get"+b](),f=rb(a?"SHORT"+b:b);return d[f][e]}}function Ed(b){var a=
(new Date(b,0,1)).getDay();return new Date(b,0,(4>=a?5:12)-a)}function Fd(b){return function(a){var c=Ed(a.getFullYear());a=+new Date(a.getFullYear(),a.getMonth(),a.getDate()+(4-a.getDay()))-+c;a=1+Math.round(a/6048E5);return Gb(a,b)}}function jc(b,a){return 0>=b.getFullYear()?a.ERAS[0]:a.ERAS[1]}function zd(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,l=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=W(b[9]+b[10]),g=W(b[9]+b[11]));h.call(a,W(b[1]),
W(b[2])-1,W(b[3]));f=W(b[4]||0)-f;g=W(b[5]||0)-g;h=W(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));l.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,f){var g="",h=[],l,k;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;L(c)&&(c=fg.test(c)?W(c):a(c));V(c)&&(c=new Date(c));if(!aa(c)||!isFinite(c.getTime()))return c;for(;e;)(k=gg.exec(e))?(h=cb(h,k,1),e=h.pop()):(h.push(e),e=null);var n=c.getTimezoneOffset();
f&&(n=xc(f,c.getTimezoneOffset()),c=Pb(c,f,!0));m(h,function(a){l=hg[a];g+=l?l(c,b.DATETIME_FORMATS,n):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function ag(){return function(b,a){A(a)&&(a=2);return db(b,a)}}function bg(){return function(b,a,c){a=Infinity===Math.abs(Number(a))?Number(a):W(a);if(isNaN(a))return b;V(b)&&(b=b.toString());if(!G(b)&&!L(b))return b;c=!c||isNaN(c)?0:W(c);c=0>c&&c>=-b.length?b.length+c:c;return 0<=a?b.slice(c,c+a):0===c?b.slice(a,b.length):b.slice(Math.max(0,
c+a),c)}}function Bd(b){function a(a,c){c=c?-1:1;return a.map(function(a){var d=1,h=Ya;if(z(a))h=a;else if(L(a)){if("+"==a.charAt(0)||"-"==a.charAt(0))d="-"==a.charAt(0)?-1:1,a=a.substring(1);if(""!==a&&(h=b(a),h.constant))var l=h(),h=function(a){return a[l]}}return{get:h,descending:d*c}})}function c(a){switch(typeof a){case "number":case "boolean":case "string":return!0;default:return!1}}return function(b,e,f){if(!Ea(b))return b;G(e)||(e=[e]);0===e.length&&(e=["+"]);var g=a(e,f);b=Array.prototype.map.call(b,
function(a,b){return{value:a,predicateValues:g.map(function(d){var e=d.get(a);d=typeof e;if(null===e)d="string",e="null";else if("string"===d)e=e.toLowerCase();else if("object"===d)a:{if("function"===typeof e.valueOf&&(e=e.valueOf(),c(e)))break a;if(rc(e)&&(e=e.toString(),c(e)))break a;e=b}return{value:e,type:d}})}});b.sort(function(a,b){for(var c=0,d=0,e=g.length;d<e;++d){var c=a.predicateValues[d],f=b.predicateValues[d],m=0;c.type===f.type?c.value!==f.value&&(m=c.value<f.value?-1:1):m=c.type<f.type?
-1:1;if(c=m*g[d].descending)break}return c});return b=b.map(function(a){return a.value})}}function Ma(b){z(b)&&(b={link:b});b.restrict=b.restrict||"AC";return ra(b)}function Gd(b,a,c,d,e){var f=this,g=[],h=f.$$parentForm=b.parent().controller("form")||Ib;f.$error={};f.$$success={};f.$pending=t;f.$name=e(a.name||a.ngForm||"")(c);f.$dirty=!1;f.$pristine=!0;f.$valid=!0;f.$invalid=!1;f.$submitted=!1;h.$addControl(f);f.$rollbackViewValue=function(){m(g,function(a){a.$rollbackViewValue()})};f.$commitViewValue=
function(){m(g,function(a){a.$commitViewValue()})};f.$addControl=function(a){Ra(a.$name,"input");g.push(a);a.$name&&(f[a.$name]=a)};f.$$renameControl=function(a,b){var c=a.$name;f[c]===a&&delete f[c];f[b]=a;a.$name=b};f.$removeControl=function(a){a.$name&&f[a.$name]===a&&delete f[a.$name];m(f.$pending,function(b,c){f.$setValidity(c,null,a)});m(f.$error,function(b,c){f.$setValidity(c,null,a)});m(f.$$success,function(b,c){f.$setValidity(c,null,a)});bb(g,a)};Hd({ctrl:this,$element:b,set:function(a,b,
c){var d=a[b];d?-1===d.indexOf(c)&&d.push(c):a[b]=[c]},unset:function(a,b,c){var d=a[b];d&&(bb(d,c),0===d.length&&delete a[b])},parentForm:h,$animate:d});f.$setDirty=function(){d.removeClass(b,Va);d.addClass(b,Jb);f.$dirty=!0;f.$pristine=!1;h.$setDirty()};f.$setPristine=function(){d.setClass(b,Va,Jb+" ng-submitted");f.$dirty=!1;f.$pristine=!0;f.$submitted=!1;m(g,function(a){a.$setPristine()})};f.$setUntouched=function(){m(g,function(a){a.$setUntouched()})};f.$setSubmitted=function(){d.addClass(b,
"ng-submitted");f.$submitted=!0;h.$setSubmitted()}}function kc(b){b.$formatters.push(function(a){return b.$isEmpty(a)?a:a.toString()})}function kb(b,a,c,d,e,f){var g=M(a[0].type);if(!e.android){var h=!1;a.on("compositionstart",function(a){h=!0});a.on("compositionend",function(){h=!1;l()})}var l=function(b){k&&(f.defer.cancel(k),k=null);if(!h){var e=a.val();b=b&&b.type;"password"===g||c.ngTrim&&"false"===c.ngTrim||(e=R(e));(d.$viewValue!==e||""===e&&d.$$hasNativeValidators)&&d.$setViewValue(e,b)}};
if(e.hasEvent("input"))a.on("input",l);else{var k,n=function(a,b,c){k||(k=f.defer(function(){k=null;b&&b.value===c||l(a)}))};a.on("keydown",function(a){var b=a.keyCode;91===b||15<b&&19>b||37<=b&&40>=b||n(a,this,this.value)});if(e.hasEvent("paste"))a.on("paste cut",n)}a.on("change",l);d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)}}function Kb(b,a){return function(c,d){var e,f;if(aa(c))return c;if(L(c)){'"'==c.charAt(0)&&'"'==c.charAt(c.length-1)&&(c=c.substring(1,c.length-1));
if(ig.test(c))return new Date(c);b.lastIndex=0;if(e=b.exec(c))return e.shift(),f=d?{yyyy:d.getFullYear(),MM:d.getMonth()+1,dd:d.getDate(),HH:d.getHours(),mm:d.getMinutes(),ss:d.getSeconds(),sss:d.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},m(e,function(b,c){c<a.length&&(f[a[c]]=+b)}),new Date(f.yyyy,f.MM-1,f.dd,f.HH,f.mm,f.ss||0,1E3*f.sss||0)}return NaN}}function lb(b,a,c,d){return function(e,f,g,h,l,k,n){function r(a){return a&&!(a.getTime&&a.getTime()!==a.getTime())}function s(a){return w(a)?
aa(a)?a:c(a):t}Id(e,f,g,h);kb(e,f,g,h,l,k);var m=h&&h.$options&&h.$options.timezone,q;h.$$parserName=b;h.$parsers.push(function(b){return h.$isEmpty(b)?null:a.test(b)?(b=c(b,q),m&&(b=Pb(b,m)),b):t});h.$formatters.push(function(a){if(a&&!aa(a))throw Lb("datefmt",a);if(r(a))return(q=a)&&m&&(q=Pb(q,m,!0)),n("date")(a,d,m);q=null;return""});if(w(g.min)||g.ngMin){var F;h.$validators.min=function(a){return!r(a)||A(F)||c(a)>=F};g.$observe("min",function(a){F=s(a);h.$validate()})}if(w(g.max)||g.ngMax){var u;
h.$validators.max=function(a){return!r(a)||A(u)||c(a)<=u};g.$observe("max",function(a){u=s(a);h.$validate()})}}}function Id(b,a,c,d){(d.$$hasNativeValidators=H(a[0].validity))&&d.$parsers.push(function(b){var c=a.prop("validity")||{};return c.badInput&&!c.typeMismatch?t:b})}function Jd(b,a,c,d,e){if(w(d)){b=b(d);if(!b.constant)throw J("ngModel")("constexpr",c,d);return b(a)}return e}function lc(b,a){b="ngClass"+b;return["$animate",function(c){function d(a,b){var c=[],d=0;a:for(;d<a.length;d++){for(var e=
a[d],n=0;n<b.length;n++)if(e==b[n])continue a;c.push(e)}return c}function e(a){var b=[];return G(a)?(m(a,function(a){b=b.concat(e(a))}),b):L(a)?a.split(" "):H(a)?(m(a,function(a,c){a&&(b=b.concat(c.split(" ")))}),b):a}return{restrict:"AC",link:function(f,g,h){function l(a,b){var c=g.data("$classCounts")||ga(),d=[];m(a,function(a){if(0<b||c[a])c[a]=(c[a]||0)+b,c[a]===+(0<b)&&d.push(a)});g.data("$classCounts",c);return d.join(" ")}function k(b){if(!0===a||f.$index%2===a){var k=e(b||[]);if(!n){var m=
l(k,1);h.$addClass(m)}else if(!ka(b,n)){var q=e(n),m=d(k,q),k=d(q,k),m=l(m,1),k=l(k,-1);m&&m.length&&c.addClass(g,m);k&&k.length&&c.removeClass(g,k)}}n=ia(b)}var n;f.$watch(h[b],k,!0);h.$observe("class",function(a){k(f.$eval(h[b]))});"ngClass"!==b&&f.$watch("$index",function(c,d){var g=c&1;if(g!==(d&1)){var k=e(f.$eval(h[b]));g===a?(g=l(k,1),h.$addClass(g)):(g=l(k,-1),h.$removeClass(g))}})}}}]}function Hd(b){function a(a,b){b&&!f[a]?(k.addClass(e,a),f[a]=!0):!b&&f[a]&&(k.removeClass(e,a),f[a]=!1)}
function c(b,c){b=b?"-"+Bc(b,"-"):"";a(mb+b,!0===c);a(Kd+b,!1===c)}var d=b.ctrl,e=b.$element,f={},g=b.set,h=b.unset,l=b.parentForm,k=b.$animate;f[Kd]=!(f[mb]=e.hasClass(mb));d.$setValidity=function(b,e,f){e===t?(d.$pending||(d.$pending={}),g(d.$pending,b,f)):(d.$pending&&h(d.$pending,b,f),Ld(d.$pending)&&(d.$pending=t));ab(e)?e?(h(d.$error,b,f),g(d.$$success,b,f)):(g(d.$error,b,f),h(d.$$success,b,f)):(h(d.$error,b,f),h(d.$$success,b,f));d.$pending?(a(Md,!0),d.$valid=d.$invalid=t,c("",null)):(a(Md,
!1),d.$valid=Ld(d.$error),d.$invalid=!d.$valid,c("",d.$valid));e=d.$pending&&d.$pending[b]?t:d.$error[b]?!1:d.$$success[b]?!0:null;c(b,e);l.$setValidity(b,e,d)}}function Ld(b){if(b)for(var a in b)if(b.hasOwnProperty(a))return!1;return!0}var jg=/^\/(.+)\/([a-z]*)$/,M=function(b){return L(b)?b.toLowerCase():b},Xa=Object.prototype.hasOwnProperty,rb=function(b){return L(b)?b.toUpperCase():b},Ua,y,la,za=[].slice,Mf=[].splice,kg=[].push,sa=Object.prototype.toString,sc=Object.getPrototypeOf,Fa=J("ng"),ca=
O.angular||(O.angular={}),gb,nb=0;Ua=U.documentMode;v.$inject=[];Ya.$inject=[];var G=Array.isArray,uc=/^\[object (Uint8(Clamped)?)|(Uint16)|(Uint32)|(Int8)|(Int16)|(Int32)|(Float(32)|(64))Array\]$/,R=function(b){return L(b)?b.trim():b},ud=function(b){return b.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")},fb=function(){if(w(fb.isActive_))return fb.isActive_;var b=!(!U.querySelector("[ng-csp]")&&!U.querySelector("[data-ng-csp]"));if(!b)try{new Function("")}catch(a){b=!0}return fb.isActive_=
b},pb=function(){if(w(pb.name_))return pb.name_;var b,a,c=Oa.length,d,e;for(a=0;a<c;++a)if(d=Oa[a],b=U.querySelector("["+d.replace(":","\\:")+"jq]")){e=b.getAttribute(d+"jq");break}return pb.name_=e},Oa=["ng-","data-ng-","ng:","x-ng-"],be=/[A-Z]/g,Cc=!1,Rb,qa=1,Na=3,fe={full:"1.4.3",major:1,minor:4,dot:3,codeName:"foam-acceleration"};Q.expando="ng339";var ib=Q.cache={},Df=1;Q._data=function(b){return this.cache[b[this.expando]]||{}};var yf=/([\:\-\_]+(.))/g,zf=/^moz([A-Z])/,lg={mouseleave:"mouseout",
mouseenter:"mouseover"},Ub=J("jqLite"),Cf=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Tb=/<|&#?\w+;/,Af=/<([\w:]+)/,Bf=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,na={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};na.optgroup=na.option;na.tbody=na.tfoot=na.colgroup=na.caption=na.thead;
na.th=na.td;var Pa=Q.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===U.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),Q(O).on("load",a))},toString:function(){var b=[];m(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?y(this[b]):y(this[this.length+b])},length:0,push:kg,sort:[].sort,splice:[].splice},Ab={};m("multiple selected checked disabled readOnly required open".split(" "),function(b){Ab[M(b)]=b});var Tc={};m("input select option textarea button form details".split(" "),
function(b){Tc[b]=!0});var Uc={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};m({data:Wb,removeData:ub,hasData:function(b){for(var a in ib[b.ng339])return!0;return!1}},function(b,a){Q[a]=b});m({data:Wb,inheritedData:zb,scope:function(b){return y.data(b,"$scope")||zb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return y.data(b,"$isolateScope")||y.data(b,"$isolateScopeNoTemplate")},controller:Qc,injector:function(b){return zb(b,
"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:wb,css:function(b,a,c){a=hb(a);if(w(c))b.style[a]=c;else return b.style[a]},attr:function(b,a,c){var d=b.nodeType;if(d!==Na&&2!==d&&8!==d)if(d=M(a),Ab[d])if(w(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||v).specified?d:t;else if(w(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?t:b},prop:function(b,a,c){if(w(c))b[a]=c;else return b[a]},
text:function(){function b(a,b){if(A(b)){var d=a.nodeType;return d===qa||d===Na?a.textContent:""}a.textContent=b}b.$dv="";return b}(),val:function(b,a){if(A(a)){if(b.multiple&&"select"===ta(b)){var c=[];m(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(A(a))return b.innerHTML;tb(b,!0);b.innerHTML=a},empty:Rc},function(b,a){Q.prototype[a]=function(a,d){var e,f,g=this.length;if(b!==Rc&&(2==b.length&&b!==wb&&b!==Qc?
a:d)===t){if(H(a)){for(e=0;e<g;e++)if(b===Wb)b(this[e],a);else for(f in a)b(this[e],f,a[f]);return this}e=b.$dv;g=e===t?Math.min(g,1):g;for(f=0;f<g;f++){var h=b(this[f],a,d);e=e?e+h:h}return e}for(e=0;e<g;e++)b(this[e],a,d);return this}});m({removeData:ub,on:function a(c,d,e,f){if(w(f))throw Ub("onargs");if(Mc(c)){var g=vb(c,!0);f=g.events;var h=g.handle;h||(h=g.handle=Gf(c,f));for(var g=0<=d.indexOf(" ")?d.split(" "):[d],l=g.length;l--;){d=g[l];var k=f[d];k||(f[d]=[],"mouseenter"===d||"mouseleave"===
d?a(c,lg[d],function(a){var c=a.relatedTarget;c&&(c===this||this.contains(c))||h(a,d)}):"$destroy"!==d&&c.addEventListener(d,h,!1),k=f[d]);k.push(e)}}},off:Pc,one:function(a,c,d){a=y(a);a.on(c,function f(){a.off(c,d);a.off(c,f)});a.on(c,d)},replaceWith:function(a,c){var d,e=a.parentNode;tb(a);m(new Q(c),function(c){d?e.insertBefore(c,d.nextSibling):e.replaceChild(c,a);d=c})},children:function(a){var c=[];m(a.childNodes,function(a){a.nodeType===qa&&c.push(a)});return c},contents:function(a){return a.contentDocument||
a.childNodes||[]},append:function(a,c){var d=a.nodeType;if(d===qa||11===d){c=new Q(c);for(var d=0,e=c.length;d<e;d++)a.appendChild(c[d])}},prepend:function(a,c){if(a.nodeType===qa){var d=a.firstChild;m(new Q(c),function(c){a.insertBefore(c,d)})}},wrap:function(a,c){c=y(c).eq(0).clone()[0];var d=a.parentNode;d&&d.replaceChild(c,a);c.appendChild(a)},remove:Xb,detach:function(a){Xb(a,!0)},after:function(a,c){var d=a,e=a.parentNode;c=new Q(c);for(var f=0,g=c.length;f<g;f++){var h=c[f];e.insertBefore(h,
d.nextSibling);d=h}},addClass:yb,removeClass:xb,toggleClass:function(a,c,d){c&&m(c.split(" "),function(c){var f=d;A(f)&&(f=!wb(a,c));(f?yb:xb)(a,c)})},parent:function(a){return(a=a.parentNode)&&11!==a.nodeType?a:null},next:function(a){return a.nextElementSibling},find:function(a,c){return a.getElementsByTagName?a.getElementsByTagName(c):[]},clone:Vb,triggerHandler:function(a,c,d){var e,f,g=c.type||c,h=vb(a);if(h=(h=h&&h.events)&&h[g])e={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return!0===
this.defaultPrevented},stopImmediatePropagation:function(){this.immediatePropagationStopped=!0},isImmediatePropagationStopped:function(){return!0===this.immediatePropagationStopped},stopPropagation:v,type:g,target:a},c.type&&(e=P(e,c)),c=ia(h),f=d?[e].concat(d):[e],m(c,function(c){e.isImmediatePropagationStopped()||c.apply(a,f)})}},function(a,c){Q.prototype[c]=function(c,e,f){for(var g,h=0,l=this.length;h<l;h++)A(g)?(g=a(this[h],c,e,f),w(g)&&(g=y(g))):Oc(g,a(this[h],c,e,f));return w(g)?g:this};Q.prototype.bind=
Q.prototype.on;Q.prototype.unbind=Q.prototype.off});Sa.prototype={put:function(a,c){this[Ga(a,this.nextUid)]=c},get:function(a){return this[Ga(a,this.nextUid)]},remove:function(a){var c=this[a=Ga(a,this.nextUid)];delete this[a];return c}};var wf=[function(){this.$get=[function(){return Sa}]}],Wc=/^function\s*[^\(]*\(\s*([^\)]*)\)/m,mg=/,/,ng=/^\s*(_?)(\S+?)\1\s*$/,Vc=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Ha=J("$injector");eb.$$annotate=function(a,c,d){var e;if("function"===typeof a){if(!(e=a.$inject)){e=
[];if(a.length){if(c)throw L(d)&&d||(d=a.name||Hf(a)),Ha("strictdi",d);c=a.toString().replace(Vc,"");c=c.match(Wc);m(c[1].split(mg),function(a){a.replace(ng,function(a,c,d){e.push(d)})})}a.$inject=e}}else G(a)?(c=a.length-1,Qa(a[c],"fn"),e=a.slice(0,c)):Qa(a,"fn",!0);return e};var Nd=J("$animate"),Ue=function(){this.$get=["$q","$$rAF",function(a,c){function d(){}d.all=v;d.chain=v;d.prototype={end:v,cancel:v,resume:v,pause:v,complete:v,then:function(d,f){return a(function(a){c(function(){a()})}).then(d,
f)}};return d}]},Te=function(){var a=new Sa,c=[];this.$get=["$$AnimateRunner","$rootScope",function(d,e){function f(d,f,l){var k=a.get(d);k||(a.put(d,k={}),c.push(d));f&&m(f.split(" "),function(a){a&&(k[a]=!0)});l&&m(l.split(" "),function(a){a&&(k[a]=!1)});1<c.length||e.$$postDigest(function(){m(c,function(c){var d=a.get(c);if(d){var e=If(c.attr("class")),f="",g="";m(d,function(a,c){a!==!!e[c]&&(a?f+=(f.length?" ":"")+c:g+=(g.length?" ":"")+c)});m(c,function(a){f&&yb(a,f);g&&xb(a,g)});a.remove(c)}});
c.length=0})}return{enabled:v,on:v,off:v,pin:v,push:function(a,c,e,k){k&&k();e=e||{};e.from&&a.css(e.from);e.to&&a.css(e.to);(e.addClass||e.removeClass)&&f(a,e.addClass,e.removeClass);return new d}}}]},Se=["$provide",function(a){var c=this;this.$$registeredAnimations=Object.create(null);this.register=function(d,e){if(d&&"."!==d.charAt(0))throw Nd("notcsel",d);var f=d+"-animation";c.$$registeredAnimations[d.substr(1)]=f;a.factory(f,e)};this.classNameFilter=function(a){if(1===arguments.length&&(this.$$classNameFilter=
a instanceof RegExp?a:null)&&/(\s+|\/)ng-animate(\s+|\/)/.test(this.$$classNameFilter.toString()))throw Nd("nongcls","ng-animate");return this.$$classNameFilter};this.$get=["$$animateQueue",function(a){function c(a,d,e){if(e){var l;a:{for(l=0;l<e.length;l++){var k=e[l];if(1===k.nodeType){l=k;break a}}l=void 0}!l||l.parentNode||l.previousElementSibling||(e=null)}e?e.after(a):d.prepend(a)}return{on:a.on,off:a.off,pin:a.pin,enabled:a.enabled,cancel:function(a){a.end&&a.end()},enter:function(f,g,h,l){g=
g&&y(g);h=h&&y(h);g=g||h.parent();c(f,g,h);return a.push(f,"enter",Ia(l))},move:function(f,g,h,l){g=g&&y(g);h=h&&y(h);g=g||h.parent();c(f,g,h);return a.push(f,"move",Ia(l))},leave:function(c,e){return a.push(c,"leave",Ia(e),function(){c.remove()})},addClass:function(c,e,h){h=Ia(h);h.addClass=jb(h.addclass,e);return a.push(c,"addClass",h)},removeClass:function(c,e,h){h=Ia(h);h.removeClass=jb(h.removeClass,e);return a.push(c,"removeClass",h)},setClass:function(c,e,h,l){l=Ia(l);l.addClass=jb(l.addClass,
e);l.removeClass=jb(l.removeClass,h);return a.push(c,"setClass",l)},animate:function(c,e,h,l,k){k=Ia(k);k.from=k.from?P(k.from,e):e;k.to=k.to?P(k.to,h):h;k.tempClasses=jb(k.tempClasses,l||"ng-inline-animate");return a.push(c,"animate",k)}}}]}],ea=J("$compile");Ec.$inject=["$provide","$$sanitizeUriProvider"];var Zc=/^((?:x|data)[\:\-_])/i,Nf=J("$controller"),Xc=/^(\S+)(\s+as\s+(\w+))?$/,cd="application/json",ac={"Content-Type":cd+";charset=utf-8"},Pf=/^\[|^\{(?!\{)/,Qf={"[":/]$/,"{":/}$/},Of=/^\)\]\}',?\n/,
Ka=ca.$interpolateMinErr=J("$interpolate");Ka.throwNoconcat=function(a){throw Ka("noconcat",a);};Ka.interr=function(a,c){return Ka("interr",a,c.toString())};var og=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,Tf={http:80,https:443,ftp:21},Cb=J("$location"),pg={$$html5:!1,$$replace:!1,absUrl:Db("$$absUrl"),url:function(a){if(A(a))return this.$$url;var c=og.exec(a);(c[1]||""===a)&&this.path(decodeURIComponent(c[1]));(c[2]||c[1]||""===a)&&this.search(c[3]||"");this.hash(c[5]||"");return this},protocol:Db("$$protocol"),
host:Db("$$host"),port:Db("$$port"),path:kd("$$path",function(a){a=null!==a?a.toString():"";return"/"==a.charAt(0)?a:"/"+a}),search:function(a,c){switch(arguments.length){case 0:return this.$$search;case 1:if(L(a)||V(a))a=a.toString(),this.$$search=zc(a);else if(H(a))a=fa(a,{}),m(a,function(c,e){null==c&&delete a[e]}),this.$$search=a;else throw Cb("isrcharg");break;default:A(c)||null===c?delete this.$$search[a]:this.$$search[a]=c}this.$$compose();return this},hash:kd("$$hash",function(a){return null!==
a?a.toString():""}),replace:function(){this.$$replace=!0;return this}};m([jd,ec,dc],function(a){a.prototype=Object.create(pg);a.prototype.state=function(c){if(!arguments.length)return this.$$state;if(a!==dc||!this.$$html5)throw Cb("nostate");this.$$state=A(c)?null:c;return this}});var da=J("$parse"),Uf=Function.prototype.call,Vf=Function.prototype.apply,Wf=Function.prototype.bind,Mb=ga();m("+ - * / % === !== == != < > <= >= && || ! = |".split(" "),function(a){Mb[a]=!0});var qg={n:"\n",f:"\f",r:"\r",
t:"\t",v:"\v","'":"'",'"':'"'},gc=function(a){this.options=a};gc.prototype={constructor:gc,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index<this.text.length;)if(a=this.text.charAt(this.index),'"'===a||"'"===a)this.readString(a);else if(this.isNumber(a)||"."===a&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdent(a))this.readIdent();else if(this.is(a,"(){}[].,;:?"))this.tokens.push({index:this.index,text:a}),this.index++;else if(this.isWhitespace(a))this.index++;
else{var c=a+this.peek(),d=c+this.peek(2),e=Mb[c],f=Mb[d];Mb[a]||e||f?(a=f?d:e?c:a,this.tokens.push({index:this.index,text:a,operator:!0}),this.index+=a.length):this.throwError("Unexpected next character ",this.index,this.index+1)}return this.tokens},is:function(a,c){return-1!==c.indexOf(a)},peek:function(a){a=a||1;return this.index+a<this.text.length?this.text.charAt(this.index+a):!1},isNumber:function(a){return"0"<=a&&"9">=a&&"string"===typeof a},isWhitespace:function(a){return" "===a||"\r"===a||
"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=w(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw da("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.index<this.text.length;){var d=M(this.text.charAt(this.index));if("."==d||this.isNumber(d))a+=d;else{var e=this.peek();
if("e"==d&&this.isExpOperator(e))a+=d;else if(this.isExpOperator(d)&&e&&this.isNumber(e)&&"e"==a.charAt(a.length-1))a+=d;else if(!this.isExpOperator(d)||e&&this.isNumber(e)||"e"!=a.charAt(a.length-1))break;else this.throwError("Invalid exponent")}this.index++}this.tokens.push({index:c,text:a,constant:!0,value:Number(a)})},readIdent:function(){for(var a=this.index;this.index<this.text.length;){var c=this.text.charAt(this.index);if(!this.isIdent(c)&&!this.isNumber(c))break;this.index++}this.tokens.push({index:a,
text:this.text.slice(a,this.index),identifier:!0})},readString:function(a){var c=this.index;this.index++;for(var d="",e=a,f=!1;this.index<this.text.length;){var g=this.text.charAt(this.index),e=e+g;if(f)"u"===g?(f=this.text.substring(this.index+1,this.index+5),f.match(/[\da-f]{4}/i)||this.throwError("Invalid unicode escape [\\u"+f+"]"),this.index+=4,d+=String.fromCharCode(parseInt(f,16))):d+=qg[g]||g,f=!1;else if("\\"===g)f=!0;else{if(g===a){this.index++;this.tokens.push({index:c,text:e,constant:!0,
value:d});return}d+=g}this.index++}this.throwError("Unterminated quote",c)}};var q=function(a,c){this.lexer=a;this.options=c};q.Program="Program";q.ExpressionStatement="ExpressionStatement";q.AssignmentExpression="AssignmentExpression";q.ConditionalExpression="ConditionalExpression";q.LogicalExpression="LogicalExpression";q.BinaryExpression="BinaryExpression";q.UnaryExpression="UnaryExpression";q.CallExpression="CallExpression";q.MemberExpression="MemberExpression";q.Identifier="Identifier";q.Literal=
"Literal";q.ArrayExpression="ArrayExpression";q.Property="Property";q.ObjectExpression="ObjectExpression";q.ThisExpression="ThisExpression";q.NGValueParameter="NGValueParameter";q.prototype={ast:function(a){this.text=a;this.tokens=this.lexer.lex(a);a=this.program();0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]);return a},program:function(){for(var a=[];;)if(0<this.tokens.length&&!this.peek("}",")",";","]")&&a.push(this.expressionStatement()),!this.expect(";"))return{type:q.Program,
body:a}},expressionStatement:function(){return{type:q.ExpressionStatement,expression:this.filterChain()}},filterChain:function(){for(var a=this.expression();this.expect("|");)a=this.filter(a);return a},expression:function(){return this.assignment()},assignment:function(){var a=this.ternary();this.expect("=")&&(a={type:q.AssignmentExpression,left:a,right:this.assignment(),operator:"="});return a},ternary:function(){var a=this.logicalOR(),c,d;return this.expect("?")&&(c=this.expression(),this.consume(":"))?
(d=this.expression(),{type:q.ConditionalExpression,test:a,alternate:c,consequent:d}):a},logicalOR:function(){for(var a=this.logicalAND();this.expect("||");)a={type:q.LogicalExpression,operator:"||",left:a,right:this.logicalAND()};return a},logicalAND:function(){for(var a=this.equality();this.expect("&&");)a={type:q.LogicalExpression,operator:"&&",left:a,right:this.equality()};return a},equality:function(){for(var a=this.relational(),c;c=this.expect("==","!=","===","!==");)a={type:q.BinaryExpression,
operator:c.text,left:a,right:this.relational()};return a},relational:function(){for(var a=this.additive(),c;c=this.expect("<",">","<=",">=");)a={type:q.BinaryExpression,operator:c.text,left:a,right:this.additive()};return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a={type:q.BinaryExpression,operator:c.text,left:a,right:this.multiplicative()};return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a={type:q.BinaryExpression,operator:c.text,
left:a,right:this.unary()};return a},unary:function(){var a;return(a=this.expect("+","-","!"))?{type:q.UnaryExpression,operator:a.text,prefix:!0,argument:this.unary()}:this.primary()},primary:function(){var a;this.expect("(")?(a=this.filterChain(),this.consume(")")):this.expect("[")?a=this.arrayDeclaration():this.expect("{")?a=this.object():this.constants.hasOwnProperty(this.peek().text)?a=fa(this.constants[this.consume().text]):this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant():
this.throwError("not a primary expression",this.peek());for(var c;c=this.expect("(","[",".");)"("===c.text?(a={type:q.CallExpression,callee:a,arguments:this.parseArguments()},this.consume(")")):"["===c.text?(a={type:q.MemberExpression,object:a,property:this.expression(),computed:!0},this.consume("]")):"."===c.text?a={type:q.MemberExpression,object:a,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return a},filter:function(a){a=[a];for(var c={type:q.CallExpression,callee:this.identifier(),
arguments:a,filter:!0};this.expect(":");)a.push(this.expression());return c},parseArguments:function(){var a=[];if(")"!==this.peekToken().text){do a.push(this.expression());while(this.expect(","))}return a},identifier:function(){var a=this.consume();a.identifier||this.throwError("is not a valid identifier",a);return{type:q.Identifier,name:a.text}},constant:function(){return{type:q.Literal,value:this.consume().value}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;
a.push(this.expression())}while(this.expect(","))}this.consume("]");return{type:q.ArrayExpression,elements:a}},object:function(){var a=[],c;if("}"!==this.peekToken().text){do{if(this.peek("}"))break;c={type:q.Property,kind:"init"};this.peek().constant?c.key=this.constant():this.peek().identifier?c.key=this.identifier():this.throwError("invalid key",this.peek());this.consume(":");c.value=this.expression();a.push(c)}while(this.expect(","))}this.consume("}");return{type:q.ObjectExpression,properties:a}},
throwError:function(a,c){throw da("syntax",c.text,a,c.index+1,this.text,this.text.substring(c.index));},consume:function(a){if(0===this.tokens.length)throw da("ueoe",this.text);var c=this.expect(a);c||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return c},peekToken:function(){if(0===this.tokens.length)throw da("ueoe",this.text);return this.tokens[0]},peek:function(a,c,d,e){return this.peekAhead(0,a,c,d,e)},peekAhead:function(a,c,d,e,f){if(this.tokens.length>a){a=this.tokens[a];
var g=a.text;if(g===c||g===d||g===e||g===f||!(c||d||e||f))return a}return!1},expect:function(a,c,d,e){return(a=this.peek(a,c,d,e))?(this.tokens.shift(),a):!1},constants:{"true":{type:q.Literal,value:!0},"false":{type:q.Literal,value:!1},"null":{type:q.Literal,value:null},undefined:{type:q.Literal,value:t},"this":{type:q.ThisExpression}}};rd.prototype={compile:function(a,c){var d=this,e=this.astBuilder.ast(a);this.state={nextId:0,filters:{},expensiveChecks:c,fn:{vars:[],body:[],own:{}},assign:{vars:[],
body:[],own:{}},inputs:[]};T(e,d.$filter);var f="",g;this.stage="assign";if(g=pd(e))this.state.computing="assign",f=this.nextId(),this.recurse(g,f),f="fn.assign="+this.generateFunction("assign","s,v,l");g=nd(e.body);d.stage="inputs";m(g,function(a,c){var e="fn"+c;d.state[e]={vars:[],body:[],own:{}};d.state.computing=e;var f=d.nextId();d.recurse(a,f);d.return_(f);d.state.inputs.push(e);a.watchId=c});this.state.computing="fn";this.stage="main";this.recurse(e);f='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+
"var fn="+this.generateFunction("fn","s,l,a,i")+f+this.watchFns()+"return fn;";f=(new Function("$filter","ensureSafeMemberName","ensureSafeObject","ensureSafeFunction","ifDefined","plus","text",f))(this.$filter,Ca,oa,ld,Xf,md,a);this.state=this.stage=t;f.literal=qd(e);f.constant=e.constant;return f},USE:"use",STRICT:"strict",watchFns:function(){var a=[],c=this.state.inputs,d=this;m(c,function(c){a.push("var "+c+"="+d.generateFunction(c,"s"))});c.length&&a.push("fn.inputs=["+c.join(",")+"];");return a.join("")},
generateFunction:function(a,c){return"function("+c+"){"+this.varsPrefix(a)+this.body(a)+"};"},filterPrefix:function(){var a=[],c=this;m(this.state.filters,function(d,e){a.push(d+"=$filter("+c.escape(e)+")")});return a.length?"var "+a.join(",")+";":""},varsPrefix:function(a){return this.state[a].vars.length?"var "+this.state[a].vars.join(",")+";":""},body:function(a){return this.state[a].body.join("")},recurse:function(a,c,d,e,f,g){var h,l,k=this,n,r;e=e||v;if(!g&&w(a.watchId))c=c||this.nextId(),this.if_("i",
this.lazyAssign(c,this.computedMember("i",a.watchId)),this.lazyRecurse(a,c,d,e,f,!0));else switch(a.type){case q.Program:m(a.body,function(c,d){k.recurse(c.expression,t,t,function(a){l=a});d!==a.body.length-1?k.current().body.push(l,";"):k.return_(l)});break;case q.Literal:r=this.escape(a.value);this.assign(c,r);e(r);break;case q.UnaryExpression:this.recurse(a.argument,t,t,function(a){l=a});r=a.operator+"("+this.ifDefined(l,0)+")";this.assign(c,r);e(r);break;case q.BinaryExpression:this.recurse(a.left,
t,t,function(a){h=a});this.recurse(a.right,t,t,function(a){l=a});r="+"===a.operator?this.plus(h,l):"-"===a.operator?this.ifDefined(h,0)+a.operator+this.ifDefined(l,0):"("+h+")"+a.operator+"("+l+")";this.assign(c,r);e(r);break;case q.LogicalExpression:c=c||this.nextId();k.recurse(a.left,c);k.if_("&&"===a.operator?c:k.not(c),k.lazyRecurse(a.right,c));e(c);break;case q.ConditionalExpression:c=c||this.nextId();k.recurse(a.test,c);k.if_(c,k.lazyRecurse(a.alternate,c),k.lazyRecurse(a.consequent,c));e(c);
break;case q.Identifier:c=c||this.nextId();d&&(d.context="inputs"===k.stage?"s":this.assign(this.nextId(),this.getHasOwnProperty("l",a.name)+"?l:s"),d.computed=!1,d.name=a.name);Ca(a.name);k.if_("inputs"===k.stage||k.not(k.getHasOwnProperty("l",a.name)),function(){k.if_("inputs"===k.stage||"s",function(){f&&1!==f&&k.if_(k.not(k.nonComputedMember("s",a.name)),k.lazyAssign(k.nonComputedMember("s",a.name),"{}"));k.assign(c,k.nonComputedMember("s",a.name))})},c&&k.lazyAssign(c,k.nonComputedMember("l",
a.name)));(k.state.expensiveChecks||Fb(a.name))&&k.addEnsureSafeObject(c);e(c);break;case q.MemberExpression:h=d&&(d.context=this.nextId())||this.nextId();c=c||this.nextId();k.recurse(a.object,h,t,function(){k.if_(k.notNull(h),function(){if(a.computed)l=k.nextId(),k.recurse(a.property,l),k.addEnsureSafeMemberName(l),f&&1!==f&&k.if_(k.not(k.computedMember(h,l)),k.lazyAssign(k.computedMember(h,l),"{}")),r=k.ensureSafeObject(k.computedMember(h,l)),k.assign(c,r),d&&(d.computed=!0,d.name=l);else{Ca(a.property.name);
f&&1!==f&&k.if_(k.not(k.nonComputedMember(h,a.property.name)),k.lazyAssign(k.nonComputedMember(h,a.property.name),"{}"));r=k.nonComputedMember(h,a.property.name);if(k.state.expensiveChecks||Fb(a.property.name))r=k.ensureSafeObject(r);k.assign(c,r);d&&(d.computed=!1,d.name=a.property.name)}},function(){k.assign(c,"undefined")});e(c)},!!f);break;case q.CallExpression:c=c||this.nextId();a.filter?(l=k.filter(a.callee.name),n=[],m(a.arguments,function(a){var c=k.nextId();k.recurse(a,c);n.push(c)}),r=l+
"("+n.join(",")+")",k.assign(c,r),e(c)):(l=k.nextId(),h={},n=[],k.recurse(a.callee,l,h,function(){k.if_(k.notNull(l),function(){k.addEnsureSafeFunction(l);m(a.arguments,function(a){k.recurse(a,k.nextId(),t,function(a){n.push(k.ensureSafeObject(a))})});h.name?(k.state.expensiveChecks||k.addEnsureSafeObject(h.context),r=k.member(h.context,h.name,h.computed)+"("+n.join(",")+")"):r=l+"("+n.join(",")+")";r=k.ensureSafeObject(r);k.assign(c,r)},function(){k.assign(c,"undefined")});e(c)}));break;case q.AssignmentExpression:l=
this.nextId();h={};if(!od(a.left))throw da("lval");this.recurse(a.left,t,h,function(){k.if_(k.notNull(h.context),function(){k.recurse(a.right,l);k.addEnsureSafeObject(k.member(h.context,h.name,h.computed));r=k.member(h.context,h.name,h.computed)+a.operator+l;k.assign(c,r);e(c||r)})},1);break;case q.ArrayExpression:n=[];m(a.elements,function(a){k.recurse(a,k.nextId(),t,function(a){n.push(a)})});r="["+n.join(",")+"]";this.assign(c,r);e(r);break;case q.ObjectExpression:n=[];m(a.properties,function(a){k.recurse(a.value,
k.nextId(),t,function(c){n.push(k.escape(a.key.type===q.Identifier?a.key.name:""+a.key.value)+":"+c)})});r="{"+n.join(",")+"}";this.assign(c,r);e(r);break;case q.ThisExpression:this.assign(c,"s");e("s");break;case q.NGValueParameter:this.assign(c,"v"),e("v")}},getHasOwnProperty:function(a,c){var d=a+"."+c,e=this.current().own;e.hasOwnProperty(d)||(e[d]=this.nextId(!1,a+"&&("+this.escape(c)+" in "+a+")"));return e[d]},assign:function(a,c){if(a)return this.current().body.push(a,"=",c,";"),a},filter:function(a){this.state.filters.hasOwnProperty(a)||
(this.state.filters[a]=this.nextId(!0));return this.state.filters[a]},ifDefined:function(a,c){return"ifDefined("+a+","+this.escape(c)+")"},plus:function(a,c){return"plus("+a+","+c+")"},return_:function(a){this.current().body.push("return ",a,";")},if_:function(a,c,d){if(!0===a)c();else{var e=this.current().body;e.push("if(",a,"){");c();e.push("}");d&&(e.push("else{"),d(),e.push("}"))}},not:function(a){return"!("+a+")"},notNull:function(a){return a+"!=null"},nonComputedMember:function(a,c){return a+
"."+c},computedMember:function(a,c){return a+"["+c+"]"},member:function(a,c,d){return d?this.computedMember(a,c):this.nonComputedMember(a,c)},addEnsureSafeObject:function(a){this.current().body.push(this.ensureSafeObject(a),";")},addEnsureSafeMemberName:function(a){this.current().body.push(this.ensureSafeMemberName(a),";")},addEnsureSafeFunction:function(a){this.current().body.push(this.ensureSafeFunction(a),";")},ensureSafeObject:function(a){return"ensureSafeObject("+a+",text)"},ensureSafeMemberName:function(a){return"ensureSafeMemberName("+
a+",text)"},ensureSafeFunction:function(a){return"ensureSafeFunction("+a+",text)"},lazyRecurse:function(a,c,d,e,f,g){var h=this;return function(){h.recurse(a,c,d,e,f,g)}},lazyAssign:function(a,c){var d=this;return function(){d.assign(a,c)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)},escape:function(a){if(L(a))return"'"+a.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(V(a))return a.toString();if(!0===a)return"true";
if(!1===a)return"false";if(null===a)return"null";if("undefined"===typeof a)return"undefined";throw da("esc");},nextId:function(a,c){var d="v"+this.state.nextId++;a||this.current().vars.push(d+(c?"="+c:""));return d},current:function(){return this.state[this.state.computing]}};sd.prototype={compile:function(a,c){var d=this,e=this.astBuilder.ast(a);this.expression=a;this.expensiveChecks=c;T(e,d.$filter);var f,g;if(f=pd(e))g=this.recurse(f);f=nd(e.body);var h;f&&(h=[],m(f,function(a,c){var e=d.recurse(a);
a.input=e;h.push(e);a.watchId=c}));var l=[];m(e.body,function(a){l.push(d.recurse(a.expression))});f=0===e.body.length?function(){}:1===e.body.length?l[0]:function(a,c){var d;m(l,function(e){d=e(a,c)});return d};g&&(f.assign=function(a,c,d){return g(a,d,c)});h&&(f.inputs=h);f.literal=qd(e);f.constant=e.constant;return f},recurse:function(a,c,d){var e,f,g=this,h;if(a.input)return this.inputs(a.input,a.watchId);switch(a.type){case q.Literal:return this.value(a.value,c);case q.UnaryExpression:return f=
this.recurse(a.argument),this["unary"+a.operator](f,c);case q.BinaryExpression:return e=this.recurse(a.left),f=this.recurse(a.right),this["binary"+a.operator](e,f,c);case q.LogicalExpression:return e=this.recurse(a.left),f=this.recurse(a.right),this["binary"+a.operator](e,f,c);case q.ConditionalExpression:return this["ternary?:"](this.recurse(a.test),this.recurse(a.alternate),this.recurse(a.consequent),c);case q.Identifier:return Ca(a.name,g.expression),g.identifier(a.name,g.expensiveChecks||Fb(a.name),
c,d,g.expression);case q.MemberExpression:return e=this.recurse(a.object,!1,!!d),a.computed||(Ca(a.property.name,g.expression),f=a.property.name),a.computed&&(f=this.recurse(a.property)),a.computed?this.computedMember(e,f,c,d,g.expression):this.nonComputedMember(e,f,g.expensiveChecks,c,d,g.expression);case q.CallExpression:return h=[],m(a.arguments,function(a){h.push(g.recurse(a))}),a.filter&&(f=this.$filter(a.callee.name)),a.filter||(f=this.recurse(a.callee,!0)),a.filter?function(a,d,e,g){for(var m=
[],q=0;q<h.length;++q)m.push(h[q](a,d,e,g));a=f.apply(t,m,g);return c?{context:t,name:t,value:a}:a}:function(a,d,e,r){var m=f(a,d,e,r),q;if(null!=m.value){oa(m.context,g.expression);ld(m.value,g.expression);q=[];for(var t=0;t<h.length;++t)q.push(oa(h[t](a,d,e,r),g.expression));q=oa(m.value.apply(m.context,q),g.expression)}return c?{value:q}:q};case q.AssignmentExpression:return e=this.recurse(a.left,!0,1),f=this.recurse(a.right),function(a,d,h,r){var m=e(a,d,h,r);a=f(a,d,h,r);oa(m.value,g.expression);
m.context[m.name]=a;return c?{value:a}:a};case q.ArrayExpression:return h=[],m(a.elements,function(a){h.push(g.recurse(a))}),function(a,d,e,f){for(var g=[],m=0;m<h.length;++m)g.push(h[m](a,d,e,f));return c?{value:g}:g};case q.ObjectExpression:return h=[],m(a.properties,function(a){h.push({key:a.key.type===q.Identifier?a.key.name:""+a.key.value,value:g.recurse(a.value)})}),function(a,d,e,f){for(var g={},m=0;m<h.length;++m)g[h[m].key]=h[m].value(a,d,e,f);return c?{value:g}:g};case q.ThisExpression:return function(a){return c?
{value:a}:a};case q.NGValueParameter:return function(a,d,e,f){return c?{value:e}:e}}},"unary+":function(a,c){return function(d,e,f,g){d=a(d,e,f,g);d=w(d)?+d:0;return c?{value:d}:d}},"unary-":function(a,c){return function(d,e,f,g){d=a(d,e,f,g);d=w(d)?-d:0;return c?{value:d}:d}},"unary!":function(a,c){return function(d,e,f,g){d=!a(d,e,f,g);return c?{value:d}:d}},"binary+":function(a,c,d){return function(e,f,g,h){var l=a(e,f,g,h);e=c(e,f,g,h);l=md(l,e);return d?{value:l}:l}},"binary-":function(a,c,d){return function(e,
f,g,h){var l=a(e,f,g,h);e=c(e,f,g,h);l=(w(l)?l:0)-(w(e)?e:0);return d?{value:l}:l}},"binary*":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)*c(e,f,g,h);return d?{value:e}:e}},"binary/":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)/c(e,f,g,h);return d?{value:e}:e}},"binary%":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)%c(e,f,g,h);return d?{value:e}:e}},"binary===":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)===c(e,f,g,h);return d?{value:e}:e}},"binary!==":function(a,
c,d){return function(e,f,g,h){e=a(e,f,g,h)!==c(e,f,g,h);return d?{value:e}:e}},"binary==":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)==c(e,f,g,h);return d?{value:e}:e}},"binary!=":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)!=c(e,f,g,h);return d?{value:e}:e}},"binary<":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)<c(e,f,g,h);return d?{value:e}:e}},"binary>":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)>c(e,f,g,h);return d?{value:e}:e}},"binary<=":function(a,c,d){return function(e,
f,g,h){e=a(e,f,g,h)<=c(e,f,g,h);return d?{value:e}:e}},"binary>=":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)>=c(e,f,g,h);return d?{value:e}:e}},"binary&&":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)&&c(e,f,g,h);return d?{value:e}:e}},"binary||":function(a,c,d){return function(e,f,g,h){e=a(e,f,g,h)||c(e,f,g,h);return d?{value:e}:e}},"ternary?:":function(a,c,d,e){return function(f,g,h,l){f=a(f,g,h,l)?c(f,g,h,l):d(f,g,h,l);return e?{value:f}:f}},value:function(a,c){return function(){return c?
{context:t,name:t,value:a}:a}},identifier:function(a,c,d,e,f){return function(g,h,l,k){g=h&&a in h?h:g;e&&1!==e&&g&&!g[a]&&(g[a]={});h=g?g[a]:t;c&&oa(h,f);return d?{context:g,name:a,value:h}:h}},computedMember:function(a,c,d,e,f){return function(g,h,l,k){var n=a(g,h,l,k),m,s;null!=n&&(m=c(g,h,l,k),Ca(m,f),e&&1!==e&&n&&!n[m]&&(n[m]={}),s=n[m],oa(s,f));return d?{context:n,name:m,value:s}:s}},nonComputedMember:function(a,c,d,e,f,g){return function(h,l,k,n){h=a(h,l,k,n);f&&1!==f&&h&&!h[c]&&(h[c]={});
l=null!=h?h[c]:t;(d||Fb(c))&&oa(l,g);return e?{context:h,name:c,value:l}:l}},inputs:function(a,c){return function(d,e,f,g){return g?g[c]:a(d,e,f)}}};var hc=function(a,c,d){this.lexer=a;this.$filter=c;this.options=d;this.ast=new q(this.lexer);this.astCompiler=d.csp?new sd(this.ast,c):new rd(this.ast,c)};hc.prototype={constructor:hc,parse:function(a){return this.astCompiler.compile(a,this.options.expensiveChecks)}};ga();ga();var Yf=Object.prototype.valueOf,Da=J("$sce"),pa={HTML:"html",CSS:"css",URL:"url",
RESOURCE_URL:"resourceUrl",JS:"js"},ea=J("$compile"),X=U.createElement("a"),wd=Ba(O.location.href);xd.$inject=["$document"];Lc.$inject=["$provide"];yd.$inject=["$locale"];Ad.$inject=["$locale"];var Dd=".",hg={yyyy:Y("FullYear",4),yy:Y("FullYear",2,0,!0),y:Y("FullYear",1),MMMM:Hb("Month"),MMM:Hb("Month",!0),MM:Y("Month",2,1),M:Y("Month",1,1),dd:Y("Date",2),d:Y("Date",1),HH:Y("Hours",2),H:Y("Hours",1),hh:Y("Hours",2,-12),h:Y("Hours",1,-12),mm:Y("Minutes",2),m:Y("Minutes",1),ss:Y("Seconds",2),s:Y("Seconds",
1),sss:Y("Milliseconds",3),EEEE:Hb("Day"),EEE:Hb("Day",!0),a:function(a,c){return 12>a.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a,c,d){a=-1*d;return a=(0<=a?"+":"")+(Gb(Math[0<a?"floor":"ceil"](a/60),2)+Gb(Math.abs(a%60),2))},ww:Fd(2),w:Fd(1),G:jc,GG:jc,GGG:jc,GGGG:function(a,c){return 0>=a.getFullYear()?c.ERANAMES[0]:c.ERANAMES[1]}},gg=/((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,fg=/^\-?\d+$/;zd.$inject=["$locale"];var cg=ra(M),dg=ra(rb);Bd.$inject=
["$parse"];var ie=ra({restrict:"E",compile:function(a,c){if(!c.href&&!c.xlinkHref)return function(a,c){if("a"===c[0].nodeName.toLowerCase()){var f="[object SVGAnimatedString]"===sa.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(f)||a.preventDefault()})}}}}),sb={};m(Ab,function(a,c){function d(a,d,f){a.$watch(f[e],function(a){f.$set(c,!!a)})}if("multiple"!=a){var e=wa("ng-"+c),f=d;"checked"===a&&(f=function(a,c,f){f.ngModel!==f[e]&&d(a,c,f)});sb[e]=function(){return{restrict:"A",
priority:100,link:f}}}});m(Uc,function(a,c){sb[c]=function(){return{priority:100,link:function(a,e,f){if("ngPattern"===c&&"/"==f.ngPattern.charAt(0)&&(e=f.ngPattern.match(jg))){f.$set("ngPattern",new RegExp(e[1],e[2]));return}a.$watch(f[c],function(a){f.$set(c,a)})}}}});m(["src","srcset","href"],function(a){var c=wa("ng-"+a);sb[c]=function(){return{priority:99,link:function(d,e,f){var g=a,h=a;"href"===a&&"[object SVGAnimatedString]"===sa.call(e.prop("href"))&&(h="xlinkHref",f.$attr[h]="xlink:href",
g=null);f.$observe(c,function(c){c?(f.$set(h,c),Ua&&g&&e.prop(g,f[h])):"href"===a&&f.$set(h,null)})}}}});var Ib={$addControl:v,$$renameControl:function(a,c){a.$name=c},$removeControl:v,$setValidity:v,$setDirty:v,$setPristine:v,$setSubmitted:v};Gd.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var Od=function(a){return["$timeout",function(c){return{name:"form",restrict:a?"EAC":"E",controller:Gd,compile:function(d,e){d.addClass(Va).addClass(mb);var f=e.name?"name":a&&e.ngForm?"ngForm":
!1;return{pre:function(a,d,e,k){if(!("action"in e)){var n=function(c){a.$apply(function(){k.$commitViewValue();k.$setSubmitted()});c.preventDefault()};d[0].addEventListener("submit",n,!1);d.on("$destroy",function(){c(function(){d[0].removeEventListener("submit",n,!1)},0,!1)})}var m=k.$$parentForm;f&&(Eb(a,k.$name,k,k.$name),e.$observe(f,function(c){k.$name!==c&&(Eb(a,k.$name,t,k.$name),m.$$renameControl(k,c),Eb(a,k.$name,k,k.$name))}));d.on("$destroy",function(){m.$removeControl(k);f&&Eb(a,e[f],t,
k.$name);P(k,Ib)})}}}}}]},je=Od(),we=Od(!0),ig=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,rg=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,sg=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,tg=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,Pd=/^(\d{4})-(\d{2})-(\d{2})$/,Qd=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,mc=/^(\d{4})-W(\d\d)$/,Rd=/^(\d{4})-(\d\d)$/,
Sd=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Td={text:function(a,c,d,e,f,g){kb(a,c,d,e,f,g);kc(e)},date:lb("date",Pd,Kb(Pd,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":lb("datetimelocal",Qd,Kb(Qd,"yyyy MM dd HH mm ss sss".split(" ")),"yyyy-MM-ddTHH:mm:ss.sss"),time:lb("time",Sd,Kb(Sd,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:lb("week",mc,function(a,c){if(aa(a))return a;if(L(a)){mc.lastIndex=0;var d=mc.exec(a);if(d){var e=+d[1],f=+d[2],g=d=0,h=0,l=0,k=Ed(e),f=7*(f-1);c&&(d=c.getHours(),g=
c.getMinutes(),h=c.getSeconds(),l=c.getMilliseconds());return new Date(e,0,k.getDate()+f,d,g,h,l)}}return NaN},"yyyy-Www"),month:lb("month",Rd,Kb(Rd,["yyyy","MM"]),"yyyy-MM"),number:function(a,c,d,e,f,g){Id(a,c,d,e);kb(a,c,d,e,f,g);e.$$parserName="number";e.$parsers.push(function(a){return e.$isEmpty(a)?null:tg.test(a)?parseFloat(a):t});e.$formatters.push(function(a){if(!e.$isEmpty(a)){if(!V(a))throw Lb("numfmt",a);a=a.toString()}return a});if(w(d.min)||d.ngMin){var h;e.$validators.min=function(a){return e.$isEmpty(a)||
A(h)||a>=h};d.$observe("min",function(a){w(a)&&!V(a)&&(a=parseFloat(a,10));h=V(a)&&!isNaN(a)?a:t;e.$validate()})}if(w(d.max)||d.ngMax){var l;e.$validators.max=function(a){return e.$isEmpty(a)||A(l)||a<=l};d.$observe("max",function(a){w(a)&&!V(a)&&(a=parseFloat(a,10));l=V(a)&&!isNaN(a)?a:t;e.$validate()})}},url:function(a,c,d,e,f,g){kb(a,c,d,e,f,g);kc(e);e.$$parserName="url";e.$validators.url=function(a,c){var d=a||c;return e.$isEmpty(d)||rg.test(d)}},email:function(a,c,d,e,f,g){kb(a,c,d,e,f,g);kc(e);
e.$$parserName="email";e.$validators.email=function(a,c){var d=a||c;return e.$isEmpty(d)||sg.test(d)}},radio:function(a,c,d,e){A(d.name)&&c.attr("name",++nb);c.on("click",function(a){c[0].checked&&e.$setViewValue(d.value,a&&a.type)});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e,f,g,h,l){var k=Jd(l,a,"ngTrueValue",d.ngTrueValue,!0),n=Jd(l,a,"ngFalseValue",d.ngFalseValue,!1);c.on("click",function(a){e.$setViewValue(c[0].checked,a&&
a.type)});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return!1===a};e.$formatters.push(function(a){return ka(a,k)});e.$parsers.push(function(a){return a?k:n})},hidden:v,button:v,submit:v,reset:v,file:v},Fc=["$browser","$sniffer","$filter","$parse",function(a,c,d,e){return{restrict:"E",require:["?ngModel"],link:{pre:function(f,g,h,l){l[0]&&(Td[M(h.type)]||Td.text)(f,g,h,l[0],c,a,d,e)}}}}],ug=/^(true|false|\d+)$/,Oe=function(){return{restrict:"A",priority:100,compile:function(a,
c){return ug.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)})}}}},oe=["$compile",function(a){return{restrict:"AC",compile:function(c){a.$$addBindingClass(c);return function(c,e,f){a.$$addBindingInfo(e,f.ngBind);e=e[0];c.$watch(f.ngBind,function(a){e.textContent=a===t?"":a})}}}}],qe=["$interpolate","$compile",function(a,c){return{compile:function(d){c.$$addBindingClass(d);return function(d,f,g){d=a(f.attr(g.$attr.ngBindTemplate));
c.$$addBindingInfo(f,d.expressions);f=f[0];g.$observe("ngBindTemplate",function(a){f.textContent=a===t?"":a})}}}}],pe=["$sce","$parse","$compile",function(a,c,d){return{restrict:"A",compile:function(e,f){var g=c(f.ngBindHtml),h=c(f.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(e);return function(c,e,f){d.$$addBindingInfo(e,f.ngBindHtml);c.$watch(h,function(){e.html(a.getTrustedHtml(g(c))||"")})}}}}],Ne=ra({restrict:"A",require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),
re=lc("",!0),te=lc("Odd",0),se=lc("Even",1),ue=Ma({compile:function(a,c){c.$set("ngCloak",t);a.removeClass("ng-cloak")}}),ve=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Kc={},vg={blur:!0,focus:!0};m("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var c=wa("ng-"+a);Kc[c]=["$parse","$rootScope",function(d,e){return{restrict:"A",compile:function(f,g){var h=
d(g[c],null,!0);return function(c,d){d.on(a,function(d){var f=function(){h(c,{$event:d})};vg[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var ye=["$animate",function(a){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,l,k;c.$watch(e.ngIf,function(c){c?l||g(function(c,f){l=f;c[c.length++]=U.createComment(" end ngIf: "+e.ngIf+" ");h={clone:c};a.enter(c,d.parent(),d)}):(k&&(k.remove(),k=null),l&&(l.$destroy(),l=null),h&&(k=
qb(h.clone),a.leave(k).then(function(){k=null}),h=null))})}}}],ze=["$templateRequest","$anchorScroll","$animate",function(a,c,d){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:ca.noop,compile:function(e,f){var g=f.ngInclude||f.src,h=f.onload||"",l=f.autoscroll;return function(e,f,m,s,q){var t=0,F,u,p,v=function(){u&&(u.remove(),u=null);F&&(F.$destroy(),F=null);p&&(d.leave(p).then(function(){u=null}),u=p,p=null)};e.$watch(g,function(g){var m=function(){!w(l)||l&&!e.$eval(l)||
c()},r=++t;g?(a(g,!0).then(function(a){if(r===t){var c=e.$new();s.template=a;a=q(c,function(a){v();d.enter(a,null,f).then(m)});F=c;p=a;F.$emit("$includeContentLoaded",g);e.$eval(h)}},function(){r===t&&(v(),e.$emit("$includeContentError",g))}),e.$emit("$includeContentRequested",g)):(v(),s.template=null)})}}}}],Qe=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(c,d,e,f){/SVG/.test(d[0].toString())?(d.empty(),a(Nc(f.template,U).childNodes)(c,function(a){d.append(a)},
{futureParentElement:d})):(d.html(f.template),a(d.contents())(c))}}}],Ae=Ma({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),Me=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,c,d,e){var f=c.attr(d.$attr.ngList)||", ",g="false"!==d.ngTrim,h=g?R(f):f;e.$parsers.push(function(a){if(!A(a)){var c=[];a&&m(a.split(h),function(a){a&&c.push(g?R(a):a)});return c}});e.$formatters.push(function(a){return G(a)?a.join(f):t});e.$isEmpty=function(a){return!a||
!a.length}}}},mb="ng-valid",Kd="ng-invalid",Va="ng-pristine",Jb="ng-dirty",Md="ng-pending",Lb=new J("ngModel"),wg=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,c,d,e,f,g,h,l,k,n){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=t;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty=
!1;this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success={};this.$pending=t;this.$name=n(d.name||"",!1)(a);var r=f(d.ngModel),s=r.assign,q=r,C=s,F=null,u,p=this;this.$$setOptions=function(a){if((p.$options=a)&&a.getterSetter){var c=f(d.ngModel+"()"),g=f(d.ngModel+"($$$p)");q=function(a){var d=r(a);z(d)&&(d=c(a));return d};C=function(a,c){z(r(a))?g(a,{$$$p:p.$modelValue}):s(a,p.$modelValue)}}else if(!r.assign)throw Lb("nonassign",d.ngModel,ua(e));};this.$render=v;this.$isEmpty=function(a){return A(a)||
""===a||null===a||a!==a};var K=e.inheritedData("$formController")||Ib,y=0;Hd({ctrl:this,$element:e,set:function(a,c){a[c]=!0},unset:function(a,c){delete a[c]},parentForm:K,$animate:g});this.$setPristine=function(){p.$dirty=!1;p.$pristine=!0;g.removeClass(e,Jb);g.addClass(e,Va)};this.$setDirty=function(){p.$dirty=!0;p.$pristine=!1;g.removeClass(e,Va);g.addClass(e,Jb);K.$setDirty()};this.$setUntouched=function(){p.$touched=!1;p.$untouched=!0;g.setClass(e,"ng-untouched","ng-touched")};this.$setTouched=
function(){p.$touched=!0;p.$untouched=!1;g.setClass(e,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){h.cancel(F);p.$viewValue=p.$$lastCommittedViewValue;p.$render()};this.$validate=function(){if(!V(p.$modelValue)||!isNaN(p.$modelValue)){var a=p.$$rawModelValue,c=p.$valid,d=p.$modelValue,e=p.$options&&p.$options.allowInvalid;p.$$runValidators(a,p.$$lastCommittedViewValue,function(f){e||c===f||(p.$modelValue=f?a:t,p.$modelValue!==d&&p.$$writeModelToScope())})}};this.$$runValidators=
function(a,c,d){function e(){var d=!0;m(p.$validators,function(e,f){var h=e(a,c);d=d&&h;g(f,h)});return d?!0:(m(p.$asyncValidators,function(a,c){g(c,null)}),!1)}function f(){var d=[],e=!0;m(p.$asyncValidators,function(f,h){var k=f(a,c);if(!k||!z(k.then))throw Lb("$asyncValidators",k);g(h,t);d.push(k.then(function(){g(h,!0)},function(a){e=!1;g(h,!1)}))});d.length?k.all(d).then(function(){h(e)},v):h(!0)}function g(a,c){l===y&&p.$setValidity(a,c)}function h(a){l===y&&d(a)}y++;var l=y;(function(){var a=
p.$$parserName||"parse";if(u===t)g(a,null);else return u||(m(p.$validators,function(a,c){g(c,null)}),m(p.$asyncValidators,function(a,c){g(c,null)})),g(a,u),u;return!0})()?e()?f():h(!1):h(!1)};this.$commitViewValue=function(){var a=p.$viewValue;h.cancel(F);if(p.$$lastCommittedViewValue!==a||""===a&&p.$$hasNativeValidators)p.$$lastCommittedViewValue=a,p.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var c=p.$$lastCommittedViewValue;if(u=A(c)?t:!0)for(var d=
0;d<p.$parsers.length;d++)if(c=p.$parsers[d](c),A(c)){u=!1;break}V(p.$modelValue)&&isNaN(p.$modelValue)&&(p.$modelValue=q(a));var e=p.$modelValue,f=p.$options&&p.$options.allowInvalid;p.$$rawModelValue=c;f&&(p.$modelValue=c,p.$modelValue!==e&&p.$$writeModelToScope());p.$$runValidators(c,p.$$lastCommittedViewValue,function(a){f||(p.$modelValue=a?c:t,p.$modelValue!==e&&p.$$writeModelToScope())})};this.$$writeModelToScope=function(){C(a,p.$modelValue);m(p.$viewChangeListeners,function(a){try{a()}catch(d){c(d)}})};
this.$setViewValue=function(a,c){p.$viewValue=a;p.$options&&!p.$options.updateOnDefault||p.$$debounceViewValueCommit(c)};this.$$debounceViewValueCommit=function(c){var d=0,e=p.$options;e&&w(e.debounce)&&(e=e.debounce,V(e)?d=e:V(e[c])?d=e[c]:V(e["default"])&&(d=e["default"]));h.cancel(F);d?F=h(function(){p.$commitViewValue()},d):l.$$phase?p.$commitViewValue():a.$apply(function(){p.$commitViewValue()})};a.$watch(function(){var c=q(a);if(c!==p.$modelValue&&(p.$modelValue===p.$modelValue||c===c)){p.$modelValue=
p.$$rawModelValue=c;u=t;for(var d=p.$formatters,e=d.length,f=c;e--;)f=d[e](f);p.$viewValue!==f&&(p.$viewValue=p.$$lastCommittedViewValue=f,p.$render(),p.$$runValidators(c,f,v))}return c})}],Le=["$rootScope",function(a){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:wg,priority:1,compile:function(c){c.addClass(Va).addClass("ng-untouched").addClass(mb);return{pre:function(a,c,f,g){var h=g[0],l=g[1]||Ib;h.$$setOptions(g[2]&&g[2].$options);l.$addControl(h);f.$observe("name",
function(a){h.$name!==a&&l.$$renameControl(h,a)});a.$on("$destroy",function(){l.$removeControl(h)})},post:function(c,e,f,g){var h=g[0];if(h.$options&&h.$options.updateOn)e.on(h.$options.updateOn,function(a){h.$$debounceViewValueCommit(a&&a.type)});e.on("blur",function(e){h.$touched||(a.$$phase?c.$evalAsync(h.$setTouched):c.$apply(h.$setTouched))})}}}}}],xg=/(\s+|^)default(\s+|$)/,Pe=function(){return{restrict:"A",controller:["$scope","$attrs",function(a,c){var d=this;this.$options=fa(a.$eval(c.ngModelOptions));
this.$options.updateOn!==t?(this.$options.updateOnDefault=!1,this.$options.updateOn=R(this.$options.updateOn.replace(xg,function(){d.$options.updateOnDefault=!0;return" "}))):this.$options.updateOnDefault=!0}]}},Be=Ma({terminal:!0,priority:1E3}),yg=J("ngOptions"),zg=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,
Je=["$compile","$parse",function(a,c){function d(a,d,e){function f(a,c,d,e,g){this.selectValue=a;this.viewValue=c;this.label=d;this.group=e;this.disabled=g}function n(a){var c;if(!q&&Ea(a))c=a;else{c=[];for(var d in a)a.hasOwnProperty(d)&&"$"!==d.charAt(0)&&c.push(d)}return c}var m=a.match(zg);if(!m)throw yg("iexp",a,ua(d));var s=m[5]||m[7],q=m[6];a=/ as /.test(m[0])&&m[1];var t=m[9];d=c(m[2]?m[1]:s);var v=a&&c(a)||d,u=t&&c(t),p=t?function(a,c){return u(e,c)}:function(a){return Ga(a)},w=function(a,
c){return p(a,z(a,c))},y=c(m[2]||m[1]),A=c(m[3]||""),B=c(m[4]||""),N=c(m[8]),D={},z=q?function(a,c){D[q]=c;D[s]=a;return D}:function(a){D[s]=a;return D};return{trackBy:t,getTrackByValue:w,getWatchables:c(N,function(a){var c=[];a=a||[];for(var d=n(a),f=d.length,g=0;g<f;g++){var h=a===d?g:d[g],k=z(a[h],h),h=p(a[h],k);c.push(h);if(m[2]||m[1])h=y(e,k),c.push(h);m[4]&&(k=B(e,k),c.push(k))}return c}),getOptions:function(){for(var a=[],c={},d=N(e)||[],g=n(d),h=g.length,m=0;m<h;m++){var r=d===g?m:g[m],s=
z(d[r],r),q=v(e,s),r=p(q,s),u=y(e,s),x=A(e,s),s=B(e,s),q=new f(r,q,u,x,s);a.push(q);c[r]=q}return{items:a,selectValueMap:c,getOptionFromViewValue:function(a){return c[w(a)]},getViewValueFromOption:function(a){return t?ca.copy(a.viewValue):a.viewValue}}}}}var e=U.createElement("option"),f=U.createElement("optgroup");return{restrict:"A",terminal:!0,require:["select","?ngModel"],link:function(c,h,l,k){function n(a,c){a.element=c;c.disabled=a.disabled;a.value!==c.value&&(c.value=a.selectValue);a.label!==
c.label&&(c.label=a.label,c.textContent=a.label)}function r(a,c,d,e){c&&M(c.nodeName)===d?d=c:(d=e.cloneNode(!1),c?a.insertBefore(d,c):a.appendChild(d));return d}function s(a){for(var c;a;)c=a.nextSibling,Xb(a),a=c}function q(a){var c=p&&p[0],d=N&&N[0];if(c||d)for(;a&&(a===c||a===d);)a=a.nextSibling;return a}function t(){var a=D&&u.readValue();D=z.getOptions();var c={},d=h[0].firstChild;B&&h.prepend(p);d=q(d);D.items.forEach(function(a){var g,k;a.group?(g=c[a.group],g||(g=r(h[0],d,"optgroup",f),d=
g.nextSibling,g.label=a.group,g=c[a.group]={groupElement:g,currentOptionElement:g.firstChild}),k=r(g.groupElement,g.currentOptionElement,"option",e),n(a,k),g.currentOptionElement=k.nextSibling):(k=r(h[0],d,"option",e),n(a,k),d=k.nextSibling)});Object.keys(c).forEach(function(a){s(c[a].currentOptionElement)});s(d);v.$render();if(!v.$isEmpty(a)){var g=u.readValue();(z.trackBy?ka(a,g):a===g)||(v.$setViewValue(g),v.$render())}}var v=k[1];if(v){var u=k[0];k=l.multiple;for(var p,w=0,A=h.children(),I=A.length;w<
I;w++)if(""===A[w].value){p=A.eq(w);break}var B=!!p,N=y(e.cloneNode(!1));N.val("?");var D,z=d(l.ngOptions,h,c);k?(v.$isEmpty=function(a){return!a||0===a.length},u.writeValue=function(a){D.items.forEach(function(a){a.element.selected=!1});a&&a.forEach(function(a){(a=D.getOptionFromViewValue(a))&&!a.disabled&&(a.element.selected=!0)})},u.readValue=function(){var a=h.val()||[],c=[];m(a,function(a){a=D.selectValueMap[a];a.disabled||c.push(D.getViewValueFromOption(a))});return c},z.trackBy&&c.$watchCollection(function(){if(G(v.$viewValue))return v.$viewValue.map(function(a){return z.getTrackByValue(a)})},
function(){v.$render()})):(u.writeValue=function(a){var c=D.getOptionFromViewValue(a);c&&!c.disabled?h[0].value!==c.selectValue&&(N.remove(),B||p.remove(),h[0].value=c.selectValue,c.element.selected=!0,c.element.setAttribute("selected","selected")):null===a||B?(N.remove(),B||h.prepend(p),h.val(""),p.prop("selected",!0),p.attr("selected",!0)):(B||p.remove(),h.prepend(N),h.val("?"),N.prop("selected",!0),N.attr("selected",!0))},u.readValue=function(){var a=D.selectValueMap[h.val()];return a&&!a.disabled?
(B||p.remove(),N.remove(),D.getViewValueFromOption(a)):null},z.trackBy&&c.$watch(function(){return z.getTrackByValue(v.$viewValue)},function(){v.$render()}));B?(p.remove(),a(p)(c),p.removeClass("ng-scope")):p=y(e.cloneNode(!1));t();c.$watchCollection(z.getWatchables,t)}}}}],Ce=["$locale","$interpolate","$log",function(a,c,d){var e=/{}/g,f=/^when(Minus)?(.+)$/;return{link:function(g,h,l){function k(a){h.text(a||"")}var n=l.count,r=l.$attr.when&&h.attr(l.$attr.when),s=l.offset||0,q=g.$eval(r)||{},t=
{},w=c.startSymbol(),u=c.endSymbol(),p=w+n+"-"+s+u,y=ca.noop,z;m(l,function(a,c){var d=f.exec(c);d&&(d=(d[1]?"-":"")+M(d[2]),q[d]=h.attr(l.$attr[c]))});m(q,function(a,d){t[d]=c(a.replace(e,p))});g.$watch(n,function(c){var e=parseFloat(c),f=isNaN(e);f||e in q||(e=a.pluralCat(e-s));e===z||f&&V(z)&&isNaN(z)||(y(),f=t[e],A(f)?(null!=c&&d.debug("ngPluralize: no rule defined for '"+e+"' in "+r),y=v,k()):y=g.$watch(f,k),z=e)})}}}],De=["$parse","$animate",function(a,c){var d=J("ngRepeat"),e=function(a,c,
d,e,k,m,r){a[d]=e;k&&(a[k]=m);a.$index=c;a.$first=0===c;a.$last=c===r-1;a.$middle=!(a.$first||a.$last);a.$odd=!(a.$even=0===(c&1))};return{restrict:"A",multiElement:!0,transclude:"element",priority:1E3,terminal:!0,$$tlb:!0,compile:function(f,g){var h=g.ngRepeat,l=U.createComment(" end ngRepeat: "+h+" "),k=h.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!k)throw d("iexp",h);var n=k[1],r=k[2],s=k[3],q=k[4],k=n.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/);
if(!k)throw d("iidexp",n);var v=k[3]||k[1],w=k[2];if(s&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(s)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(s)))throw d("badident",s);var u,p,z,A,I={$id:Ga};q?u=a(q):(z=function(a,c){return Ga(c)},A=function(a){return a});return function(a,f,g,k,n){u&&(p=function(c,d,e){w&&(I[w]=c);I[v]=d;I.$index=e;return u(a,I)});var q=ga();a.$watchCollection(r,function(g){var k,r,u=f[0],x,D=ga(),I,H,L,G,M,J,O;s&&(a[s]=g);if(Ea(g))M=
g,r=p||z;else for(O in r=p||A,M=[],g)g.hasOwnProperty(O)&&"$"!==O.charAt(0)&&M.push(O);I=M.length;O=Array(I);for(k=0;k<I;k++)if(H=g===M?k:M[k],L=g[H],G=r(H,L,k),q[G])J=q[G],delete q[G],D[G]=J,O[k]=J;else{if(D[G])throw m(O,function(a){a&&a.scope&&(q[a.id]=a)}),d("dupes",h,G,L);O[k]={id:G,scope:t,clone:t};D[G]=!0}for(x in q){J=q[x];G=qb(J.clone);c.leave(G);if(G[0].parentNode)for(k=0,r=G.length;k<r;k++)G[k].$$NG_REMOVED=!0;J.scope.$destroy()}for(k=0;k<I;k++)if(H=g===M?k:M[k],L=g[H],J=O[k],J.scope){x=
u;do x=x.nextSibling;while(x&&x.$$NG_REMOVED);J.clone[0]!=x&&c.move(qb(J.clone),null,y(u));u=J.clone[J.clone.length-1];e(J.scope,k,v,L,w,H,I)}else n(function(a,d){J.scope=d;var f=l.cloneNode(!1);a[a.length++]=f;c.enter(a,null,y(u));u=f;J.clone=a;D[J.id]=J;e(J.scope,k,v,L,w,H,I)});q=D})}}}}],Ee=["$animate",function(a){return{restrict:"A",multiElement:!0,link:function(c,d,e){c.$watch(e.ngShow,function(c){a[c?"removeClass":"addClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],xe=["$animate",
function(a){return{restrict:"A",multiElement:!0,link:function(c,d,e){c.$watch(e.ngHide,function(c){a[c?"addClass":"removeClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],Fe=Ma(function(a,c,d){a.$watch(d.ngStyle,function(a,d){d&&a!==d&&m(d,function(a,d){c.css(d,"")});a&&c.css(a)},!0)}),Ge=["$animate",function(a){return{require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(c,d,e,f){var g=[],h=[],l=[],k=[],n=function(a,c){return function(){a.splice(c,1)}};c.$watch(e.ngSwitch||
e.on,function(c){var d,e;d=0;for(e=l.length;d<e;++d)a.cancel(l[d]);d=l.length=0;for(e=k.length;d<e;++d){var q=qb(h[d].clone);k[d].$destroy();(l[d]=a.leave(q)).then(n(l,d))}h.length=0;k.length=0;(g=f.cases["!"+c]||f.cases["?"])&&m(g,function(c){c.transclude(function(d,e){k.push(e);var f=c.element;d[d.length++]=U.createComment(" end ngSwitchWhen: ");h.push({clone:d});a.enter(d,f.parent(),f)})})})}}}],He=Ma({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,c,d,e,
f){e.cases["!"+d.ngSwitchWhen]=e.cases["!"+d.ngSwitchWhen]||[];e.cases["!"+d.ngSwitchWhen].push({transclude:f,element:c})}}),Ie=Ma({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,c,d,e,f){e.cases["?"]=e.cases["?"]||[];e.cases["?"].push({transclude:f,element:c})}}),Ke=Ma({restrict:"EAC",link:function(a,c,d,e,f){if(!f)throw J("ngTransclude")("orphan",ua(c));f(function(a){c.empty();c.append(a)})}}),ke=["$templateCache",function(a){return{restrict:"E",terminal:!0,
compile:function(c,d){"text/ng-template"==d.type&&a.put(d.id,c[0].text)}}}],Ag={$setViewValue:v,$render:v},Bg=["$element","$scope","$attrs",function(a,c,d){var e=this,f=new Sa;e.ngModelCtrl=Ag;e.unknownOption=y(U.createElement("option"));e.renderUnknownOption=function(c){c="? "+Ga(c)+" ?";e.unknownOption.val(c);a.prepend(e.unknownOption);a.val(c)};c.$on("$destroy",function(){e.renderUnknownOption=v});e.removeUnknownOption=function(){e.unknownOption.parent()&&e.unknownOption.remove()};e.readValue=
function(){e.removeUnknownOption();return a.val()};e.writeValue=function(c){e.hasOption(c)?(e.removeUnknownOption(),a.val(c),""===c&&e.emptyOption.prop("selected",!0)):null==c&&e.emptyOption?(e.removeUnknownOption(),a.val("")):e.renderUnknownOption(c)};e.addOption=function(a,c){Ra(a,'"option value"');""===a&&(e.emptyOption=c);var d=f.get(a)||0;f.put(a,d+1)};e.removeOption=function(a){var c=f.get(a);c&&(1===c?(f.remove(a),""===a&&(e.emptyOption=t)):f.put(a,c-1))};e.hasOption=function(a){return!!f.get(a)}}],
le=function(){return{restrict:"E",require:["select","?ngModel"],controller:Bg,link:function(a,c,d,e){var f=e[1];if(f){var g=e[0];g.ngModelCtrl=f;f.$render=function(){g.writeValue(f.$viewValue)};c.on("change",function(){a.$apply(function(){f.$setViewValue(g.readValue())})});if(d.multiple){g.readValue=function(){var a=[];m(c.find("option"),function(c){c.selected&&a.push(c.value)});return a};g.writeValue=function(a){var d=new Sa(a);m(c.find("option"),function(a){a.selected=w(d.get(a.value))})};var h,
l=NaN;a.$watch(function(){l!==f.$viewValue||ka(h,f.$viewValue)||(h=ia(f.$viewValue),f.$render());l=f.$viewValue});f.$isEmpty=function(a){return!a||0===a.length}}}}}},ne=["$interpolate",function(a){function c(a){a[0].hasAttribute("selected")&&(a[0].selected=!0)}return{restrict:"E",priority:100,compile:function(d,e){if(A(e.value)){var f=a(d.text(),!0);f||e.$set("value",d.text())}return function(a,d,e){var k=d.parent(),m=k.data("$selectController")||k.parent().data("$selectController");m&&m.ngModelCtrl&&
(f?a.$watch(f,function(a,f){e.$set("value",a);f!==a&&m.removeOption(f);m.addOption(a,d);m.ngModelCtrl.$render();c(d)}):(m.addOption(e.value,d),m.ngModelCtrl.$render(),c(d)),d.on("$destroy",function(){m.removeOption(e.value);m.ngModelCtrl.$render()}))}}}}],me=ra({restrict:"E",terminal:!1}),Hc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){e&&(d.required=!0,e.$validators.required=function(a,c){return!d.required||!e.$isEmpty(c)},d.$observe("required",function(){e.$validate()}))}}},
Gc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f,g=d.ngPattern||d.pattern;d.$observe("pattern",function(a){L(a)&&0<a.length&&(a=new RegExp("^"+a+"$"));if(a&&!a.test)throw J("ngPattern")("noregexp",g,a,ua(c));f=a||t;e.$validate()});e.$validators.pattern=function(a){return e.$isEmpty(a)||A(f)||f.test(a)}}}}},Jc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f=-1;d.$observe("maxlength",function(a){a=W(a);f=isNaN(a)?-1:a;e.$validate()});
e.$validators.maxlength=function(a,c){return 0>f||e.$isEmpty(c)||c.length<=f}}}}},Ic=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f=0;d.$observe("minlength",function(a){f=W(a)||0;e.$validate()});e.$validators.minlength=function(a,c){return e.$isEmpty(c)||c.length>=f}}}}};O.angular.bootstrap?console.log("WARNING: Tried to load angular more than once."):(ce(),ee(ca),y(U).ready(function(){Zd(U,Ac)}))})(window,document);!window.angular.$$csp()&&window.angular.element(document.head).prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>');
//# sourceMappingURL=angular.min.js.map
;
/*
 * Date Format 1.2.3
 * (c) 2007-2009 Steven Levithan <stevenlevithan.com>
 * MIT license
 *
 * Includes enhancements by Scott Trenda <scott.trenda.net>
 * and Kris Kowal <cixar.com/~kris.kowal/>
 *
 * Accepts a date, a mask, or a date and a mask.
 * Returns a formatted version of the given date.
 * The date defaults to the current date/time.
 * The mask defaults to dateFormat.masks.default.
 */

var dateFormat = function () {
    var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
		timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
		timezoneClip = /[^-+\dA-Z]/g,
		pad = function (val, len) {
		    val = String(val);
		    len = len || 2;
		    while (val.length < len) val = "0" + val;
		    return val;
		};

    // Regexes and supporting functions are cached through closure
    return function (date, mask, utc) {
        var dF = dateFormat;

        // You can't provide utc if you skip other args (use the "UTC:" mask prefix)
        if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
            mask = date;
            date = undefined;
        }

        // Passing date through Date applies Date.parse, if necessary
        date = date ? new Date(date) : new Date;
        if (isNaN(date)) throw SyntaxError("invalid date");

        mask = String(dF.masks[mask] || mask || dF.masks["default"]);

        // Allow setting the utc argument via the mask
        if (mask.slice(0, 4) == "UTC:") {
            mask = mask.slice(4);
            utc = true;
        }

        var _ = utc ? "getUTC" : "get",
			d = date[_ + "Date"](),
			D = date[_ + "Day"](),
			m = date[_ + "Month"](),
			y = date[_ + "FullYear"](),
			H = date[_ + "Hours"](),
			M = date[_ + "Minutes"](),
			s = date[_ + "Seconds"](),
			L = date[_ + "Milliseconds"](),
			o = utc ? 0 : date.getTimezoneOffset(),
			flags = {
			    d: d,
			    dd: pad(d),
			    ddd: dF.i18n.dayNames[D],
			    dddd: dF.i18n.dayNames[D + 7],
			    m: m + 1,
			    mm: pad(m + 1),
			    mmm: dF.i18n.monthNames[m],
			    mmmm: dF.i18n.monthNames[m + 12],
			    yy: String(y).slice(2),
			    yyyy: y,
			    h: H % 12 || 12,
			    hh: pad(H % 12 || 12),
			    H: H,
			    HH: pad(H),
			    M: M,
			    MM: pad(M),
			    s: s,
			    ss: pad(s),
			    l: pad(L, 3),
			    L: pad(L > 99 ? Math.round(L / 10) : L),
			    t: H < 12 ? "a" : "p",
			    tt: H < 12 ? "am" : "pm",
			    T: H < 12 ? "A" : "P",
			    TT: H < 12 ? "AM" : "PM",
			    Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
			    o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
			    S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
			};

        return mask.replace(token, function ($0) {
            return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
        });
    };
}();

// Some common format strings
dateFormat.masks = {
    "default": "ddd mmm dd yyyy HH:MM:ss",
    shortDate: "m/d/yy",
    mediumDate: "mmm d, yyyy",
    longDate: "mmmm d, yyyy",
    fullDate: "dddd, mmmm d, yyyy",
    shortTime: "h:MM TT",
    mediumTime: "h:MM:ss TT",
    longTime: "h:MM:ss TT Z",
    isoDate: "yyyy-mm-dd",
    isoTime: "HH:MM:ss",
    isoDateTime: "yyyy-mm-dd'T'HH:MM:ss",
    isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
};

// Internationalization strings
dateFormat.i18n = {
    dayNames: [
		"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
		"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
    ],
    monthNames: [
		"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
		"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
    ]
};

// For convenience...
Date.prototype.format = function (mask, utc) {
    return dateFormat(this, mask, utc);
};

;
/*!
 * JavaScript Cookie v2.2.0
 * https://github.com/js-cookie/js-cookie
 *
 * Copyright 2006, 2015 Klaus Hartl & Fagner Brack
 * Released under the MIT license
 */
; (function (factory) {
    var registeredInModuleLoader;
    if (typeof define === 'function' && define.amd) {
        define(factory);
        registeredInModuleLoader = true;
    }
    if (typeof exports === 'object') {
        module.exports = factory();
        registeredInModuleLoader = true;
    }
    if (!registeredInModuleLoader) {
        var OldCookies = window.Cookies;
        var api = window.Cookies = factory();
        api.noConflict = function () {
            window.Cookies = OldCookies;
            return api;
        };
    }
}(function () {
    function extend() {
        var i = 0;
        var result = {};
        for (; i < arguments.length; i++) {
            var attributes = arguments[i];
            for (var key in attributes) {
                result[key] = attributes[key];
            }
        }
        return result;
    }

    function init(converter) {
        function api(key, value, attributes) {
            if (typeof document === 'undefined') {
                return;
            }

            // Write

            if (arguments.length > 1) {
                attributes = extend({
                    path: '/'
                }, api.defaults, attributes);

                if (typeof attributes.expires === 'number') {
                    attributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);
                }

                // We're using "expires" because "max-age" is not supported by IE
                attributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';

                try {
                    var result = JSON.stringify(value);
                    if (/^[\{\[]/.test(result)) {
                        value = result;
                    }
                } catch (e) { }

                value = converter.write ?
					converter.write(value, key) :
					encodeURIComponent(String(value))
						.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);

                key = encodeURIComponent(String(key))
					.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)
					.replace(/[\(\)]/g, escape);

                var stringifiedAttributes = '';
                for (var attributeName in attributes) {
                    if (!attributes[attributeName]) {
                        continue;
                    }
                    stringifiedAttributes += '; ' + attributeName;
                    if (attributes[attributeName] === true) {
                        continue;
                    }

                    // Considers RFC 6265 section 5.2:
                    // ...
                    // 3.  If the remaining unparsed-attributes contains a %x3B (";")
                    //     character:
                    // Consume the characters of the unparsed-attributes up to,
                    // not including, the first %x3B (";") character.
                    // ...
                    stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];
                }

                return (document.cookie = key + '=' + value + stringifiedAttributes);
            }

            // Read

            var jar = {};
            var decode = function (s) {
                return s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);
            };
            // To prevent the for loop in the first place assign an empty array
            // in case there are no cookies at all.
            var cookies = document.cookie ? document.cookie.split('; ') : [];
            var i = 0;

            for (; i < cookies.length; i++) {
                var parts = cookies[i].split('=');
                var cookie = parts.slice(1).join('=');

                if (!this.json && cookie.charAt(0) === '"') {
                    cookie = cookie.slice(1, -1);
                }

                try {
                    var name = decode(parts[0]);
                    cookie = (converter.read || converter)(cookie, name) ||
						decode(cookie);

                    if (this.json) {
                        try {
                            cookie = JSON.parse(cookie);
                        } catch (e) { }
                    }

                    jar[name] = cookie;

                    if (key === name) {
                        break;
                    }
                } catch (e) { }
            }

            return key ? jar[key] : jar;
        }

        api.set = api;
        api.get = function (key) {
            return api.call(api, key);
        };
        api.getJSON = function (key) {
            return api.call({
                json: true
            }, key);
        };
        api.remove = function (key, attributes) {
            api(key, '', extend(attributes, {
                expires: -1
            }));
        };

        api.defaults = {};

        api.withConverter = init;

        return api;
    }

    return init(function () { });
}));
;
/*!
 * jQuery.scrollTo
 * Copyright (c) 2007-2015 Ariel Flesler - aflesler ○ gmail • com | http://flesler.blogspot.com
 * Licensed under MIT
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 * @projectDescription Lightweight, cross-browser and highly customizable animated scrolling with jQuery
 * @author Ariel Flesler
 * @version 2.1.2
 */
; (function (factory) {
    'use strict';
    if (typeof define === 'function' && define.amd) {
        // AMD
        define(['jquery'], factory);
    } else if (typeof module !== 'undefined' && module.exports) {
        // CommonJS
        module.exports = factory(require('jquery'));
    } else {
        // Global
        factory(jQuery);
    }
})(function ($) {
    'use strict';

    var $scrollTo = $.scrollTo = function (target, duration, settings) {
        return $(window).scrollTo(target, duration, settings);
    };

    $scrollTo.defaults = {
        axis: 'xy',
        duration: 0,
        limit: true
    };

    function isWin(elem) {
        return !elem.nodeName ||
			$.inArray(elem.nodeName.toLowerCase(), ['iframe', '#document', 'html', 'body']) !== -1;
    }

    $.fn.scrollTo = function (target, duration, settings) {
        if (typeof duration === 'object') {
            settings = duration;
            duration = 0;
        }
        if (typeof settings === 'function') {
            settings = { onAfter: settings };
        }
        if (target === 'max') {
            target = 9e9;
        }

        settings = $.extend({}, $scrollTo.defaults, settings);
        // Speed is still recognized for backwards compatibility
        duration = duration || settings.duration;
        // Make sure the settings are given right
        var queue = settings.queue && settings.axis.length > 1;
        if (queue) {
            // Let's keep the overall duration
            duration /= 2;
        }
        settings.offset = both(settings.offset);
        settings.over = both(settings.over);

        return this.each(function () {
            // Null target yields nothing, just like jQuery does
            if (target === null) return;

            var win = isWin(this),
				elem = win ? this.contentWindow || window : this,
				$elem = $(elem),
				targ = target,
				attr = {},
				toff;

            switch (typeof targ) {
                // A number will pass the regex
                case 'number':
                case 'string':
                    if (/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ)) {
                        targ = both(targ);
                        // We are done
                        break;
                    }
                    // Relative/Absolute selector
                    targ = win ? $(targ) : $(targ, elem);
                    /* falls through */
                case 'object':
                    if (targ.length === 0) return;
                    // DOMElement / jQuery
                    if (targ.is || targ.style) {
                        // Get the real position of the target
                        toff = (targ = $(targ)).offset();
                    }
            }

            var offset = $.isFunction(settings.offset) && settings.offset(elem, targ) || settings.offset;

            $.each(settings.axis.split(''), function (i, axis) {
                var Pos = axis === 'x' ? 'Left' : 'Top',
					pos = Pos.toLowerCase(),
					key = 'scroll' + Pos,
					prev = $elem[key](),
					max = $scrollTo.max(elem, axis);

                if (toff) {// jQuery / DOMElement
                    attr[key] = toff[pos] + (win ? 0 : prev - $elem.offset()[pos]);

                    // If it's a dom element, reduce the margin
                    if (settings.margin) {
                        attr[key] -= parseInt(targ.css('margin' + Pos), 10) || 0;
                        attr[key] -= parseInt(targ.css('border' + Pos + 'Width'), 10) || 0;
                    }

                    attr[key] += offset[pos] || 0;

                    if (settings.over[pos]) {
                        // Scroll to a fraction of its width/height
                        attr[key] += targ[axis === 'x' ? 'width' : 'height']() * settings.over[pos];
                    }
                } else {
                    var val = targ[pos];
                    // Handle percentage values
                    attr[key] = val.slice && val.slice(-1) === '%' ?
						parseFloat(val) / 100 * max
						: val;
                }

                // Number or 'number'
                if (settings.limit && /^\d+$/.test(attr[key])) {
                    // Check the limits
                    attr[key] = attr[key] <= 0 ? 0 : Math.min(attr[key], max);
                }

                // Don't waste time animating, if there's no need.
                if (!i && settings.axis.length > 1) {
                    if (prev === attr[key]) {
                        // No animation needed
                        attr = {};
                    } else if (queue) {
                        // Intermediate animation
                        animate(settings.onAfterFirst);
                        // Don't animate this axis again in the next iteration.
                        attr = {};
                    }
                }
            });

            animate(settings.onAfter);

            function animate(callback) {
                var opts = $.extend({}, settings, {
                    // The queue setting conflicts with animate()
                    // Force it to always be true
                    queue: true,
                    duration: duration,
                    complete: callback && function () {
                        callback.call(elem, targ, settings);
                    }
                });
                $elem.animate(attr, opts);
            }
        });
    };

    // Max scrolling position, works on quirks mode
    // It only fails (not too badly) on IE, quirks mode.
    $scrollTo.max = function (elem, axis) {
        var Dim = axis === 'x' ? 'Width' : 'Height',
			scroll = 'scroll' + Dim;

        if (!isWin(elem))
            return elem[scroll] - $(elem)[Dim.toLowerCase()]();

        var size = 'client' + Dim,
			doc = elem.ownerDocument || elem.document,
			html = doc.documentElement,
			body = doc.body;

        return Math.max(html[scroll], body[scroll]) - Math.min(html[size], body[size]);
    };

    function both(val) {
        return $.isFunction(val) || $.isPlainObject(val) ? val : { top: val, left: val };
    }

    // Add special hooks so that window scroll properties can be animated
    $.Tween.propHooks.scrollLeft =
	$.Tween.propHooks.scrollTop = {
	    get: function (t) {
	        return $(t.elem)[t.prop]();
	    },
	    set: function (t) {
	        var curr = this.get(t);
	        // If interrupt is true and user scrolled, stop animating
	        if (t.options.interrupt && t._last && t._last !== curr) {
	            return $(t.elem).stop();
	        }
	        var next = Math.round(t.now);
	        // Don't waste CPU
	        // Browsers don't render floating point scroll
	        if (curr !== next) {
	            $(t.elem)[t.prop](next);
	            t._last = this.get(t);
	        }
	    }
	};

    // AMD requirement
    return $scrollTo;
});;
/*!
 * 
 *         SimpleBar.js - v2.6.1
 *         Scrollbars, simpler.
 *         https://grsmto.github.io/simplebar/
 *         
 *         Made by Adrien Grsmto from a fork by Jonathan Nicol
 *         Under MIT License
 *       
 */
!function (t, e) { "object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? exports.SimpleBar = e() : t.SimpleBar = e() }(this, function () {
    return function (t) { function e(r) { if (n[r]) return n[r].exports; var i = n[r] = { i: r, l: !1, exports: {} }; return t[r].call(i.exports, i, i.exports, e), i.l = !0, i.exports } var n = {}; return e.m = t, e.c = n, e.d = function (t, n, r) { e.o(t, n) || Object.defineProperty(t, n, { configurable: !1, enumerable: !0, get: r }) }, e.n = function (t) { var n = t && t.__esModule ? function () { return t.default } : function () { return t }; return e.d(n, "a", n), n }, e.o = function (t, e) { return Object.prototype.hasOwnProperty.call(t, e) }, e.p = "", e(e.s = 27) }([function (t, e, n) { var r = n(23)("wks"), i = n(12), o = n(1).Symbol, s = "function" == typeof o; (t.exports = function (t) { return r[t] || (r[t] = s && o[t] || (s ? o : i)("Symbol." + t)) }).store = r }, function (t, e) { var n = t.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")(); "number" == typeof __g && (__g = n) }, function (t, e) { var n = {}.hasOwnProperty; t.exports = function (t, e) { return n.call(t, e) } }, function (t, e) { var n = t.exports = { version: "2.5.1" }; "number" == typeof __e && (__e = n) }, function (t, e, n) { var r = n(5), i = n(11); t.exports = n(7) ? function (t, e, n) { return r.f(t, e, i(1, n)) } : function (t, e, n) { return t[e] = n, t } }, function (t, e, n) { var r = n(6), i = n(33), o = n(34), s = Object.defineProperty; e.f = n(7) ? Object.defineProperty : function (t, e, n) { if (r(t), e = o(e, !0), r(n), i) try { return s(t, e, n) } catch (t) { } if ("get" in n || "set" in n) throw TypeError("Accessors not supported!"); return "value" in n && (t[e] = n.value), t } }, function (t, e, n) { var r = n(10); t.exports = function (t) { if (!r(t)) throw TypeError(t + " is not an object!"); return t } }, function (t, e, n) { t.exports = !n(16)(function () { return 7 != Object.defineProperty({}, "a", { get: function () { return 7 } }).a }) }, function (t, e) { var n = Math.ceil, r = Math.floor; t.exports = function (t) { return isNaN(t = +t) ? 0 : (t > 0 ? r : n)(t) } }, function (t, e) { t.exports = function (t) { if (void 0 == t) throw TypeError("Can't call method on  " + t); return t } }, function (t, e) { t.exports = function (t) { return "object" == typeof t ? null !== t : "function" == typeof t } }, function (t, e) { t.exports = function (t, e) { return { enumerable: !(1 & t), configurable: !(2 & t), writable: !(4 & t), value: e } } }, function (t, e) { var n = 0, r = Math.random(); t.exports = function (t) { return "Symbol(".concat(void 0 === t ? "" : t, ")_", (++n + r).toString(36)) } }, function (t, e) { t.exports = {} }, function (t, e, n) { var r = n(23)("keys"), i = n(12); t.exports = function (t) { return r[t] || (r[t] = i(t)) } }, function (t, e, n) { var r = n(1), i = n(3), o = n(4), s = n(18), c = n(19), a = function (t, e, n) { var u, l, f, h, d = t & a.F, p = t & a.G, v = t & a.S, b = t & a.P, y = t & a.B, m = p ? r : v ? r[e] || (r[e] = {}) : (r[e] || {}).prototype, g = p ? i : i[e] || (i[e] = {}), E = g.prototype || (g.prototype = {}); p && (n = e); for (u in n) l = !d && m && void 0 !== m[u], f = (l ? m : n)[u], h = y && l ? c(f, r) : b && "function" == typeof f ? c(Function.call, f) : f, m && s(m, u, f, t & a.U), g[u] != f && o(g, u, h), b && E[u] != f && (E[u] = f) }; r.core = i, a.F = 1, a.G = 2, a.S = 4, a.P = 8, a.B = 16, a.W = 32, a.U = 64, a.R = 128, t.exports = a }, function (t, e) { t.exports = function (t) { try { return !!t() } catch (t) { return !0 } } }, function (t, e, n) { var r = n(10), i = n(1).document, o = r(i) && r(i.createElement); t.exports = function (t) { return o ? i.createElement(t) : {} } }, function (t, e, n) { var r = n(1), i = n(4), o = n(2), s = n(12)("src"), c = Function.toString, a = ("" + c).split("toString"); n(3).inspectSource = function (t) { return c.call(t) }, (t.exports = function (t, e, n, c) { var u = "function" == typeof n; u && (o(n, "name") || i(n, "name", e)), t[e] !== n && (u && (o(n, s) || i(n, s, t[e] ? "" + t[e] : a.join(String(e)))), t === r ? t[e] = n : c ? t[e] ? t[e] = n : i(t, e, n) : (delete t[e], i(t, e, n))) })(Function.prototype, "toString", function () { return "function" == typeof this && this[s] || c.call(this) }) }, function (t, e, n) { var r = n(35); t.exports = function (t, e, n) { if (r(t), void 0 === e) return t; switch (n) { case 1: return function (n) { return t.call(e, n) }; case 2: return function (n, r) { return t.call(e, n, r) }; case 3: return function (n, r, i) { return t.call(e, n, r, i) } } return function () { return t.apply(e, arguments) } } }, function (t, e, n) { var r = n(41), i = n(9); t.exports = function (t) { return r(i(t)) } }, function (t, e) { var n = {}.toString; t.exports = function (t) { return n.call(t).slice(8, -1) } }, function (t, e, n) { var r = n(8), i = Math.min; t.exports = function (t) { return t > 0 ? i(r(t), 9007199254740991) : 0 } }, function (t, e, n) { var r = n(1), i = r["__core-js_shared__"] || (r["__core-js_shared__"] = {}); t.exports = function (t) { return i[t] || (i[t] = {}) } }, function (t, e) { t.exports = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",") }, function (t, e, n) { var r = n(5).f, i = n(2), o = n(0)("toStringTag"); t.exports = function (t, e, n) { t && !i(t = n ? t : t.prototype, o) && r(t, o, { configurable: !0, value: e }) } }, function (t, e, n) { var r = n(9); t.exports = function (t) { return Object(r(t)) } }, function (t, e, n) { "use strict"; function r(t) { return t && t.__esModule ? t : { default: t } } function i(t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") } function o(t, e) { for (var n = 0; n < e.length; n++) { var r = e[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r) } } function s(t, e, n) { return e && o(t.prototype, e), n && o(t, n), t } Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0, n(28); var c = r(n(53)), a = r(n(54)), u = r(n(56)); n(57), Object.assign = n(58); var l = function () { function t(e, n) { i(this, t), this.el = e, this.flashTimeout, this.contentEl, this.scrollContentEl, this.dragOffset = { x: 0, y: 0 }, this.isVisible = { x: !0, y: !0 }, this.scrollOffsetAttr = { x: "scrollLeft", y: "scrollTop" }, this.sizeAttr = { x: "offsetWidth", y: "offsetHeight" }, this.scrollSizeAttr = { x: "scrollWidth", y: "scrollHeight" }, this.offsetAttr = { x: "left", y: "top" }, this.globalObserver, this.mutationObserver, this.resizeObserver, this.currentAxis, this.isRtl, this.options = Object.assign({}, t.defaultOptions, n), this.classNames = this.options.classNames, this.scrollbarWidth = (0, c.default)(), this.offsetSize = 20, this.flashScrollbar = this.flashScrollbar.bind(this), this.onDragY = this.onDragY.bind(this), this.onDragX = this.onDragX.bind(this), this.onScrollY = this.onScrollY.bind(this), this.onScrollX = this.onScrollX.bind(this), this.drag = this.drag.bind(this), this.onEndDrag = this.onEndDrag.bind(this), this.onMouseEnter = this.onMouseEnter.bind(this), this.recalculate = (0, a.default)(this.recalculate, 100, { leading: !0 }), this.init() } return s(t, [{ key: "init", value: function () { this.el.SimpleBar = this, this.initDOM(), this.scrollbarX = this.trackX.querySelector(".".concat(this.classNames.scrollbar)), this.scrollbarY = this.trackY.querySelector(".".concat(this.classNames.scrollbar)), this.isRtl = "rtl" === getComputedStyle(this.contentEl).direction, this.scrollContentEl.style[this.isRtl ? "paddingLeft" : "paddingRight"] = "".concat(this.scrollbarWidth || this.offsetSize, "px"), this.scrollContentEl.style.marginBottom = "-".concat(2 * this.scrollbarWidth || this.offsetSize, "px"), this.contentEl.style.paddingBottom = "".concat(this.scrollbarWidth || this.offsetSize, "px"), 0 !== this.scrollbarWidth && (this.contentEl.style[this.isRtl ? "marginLeft" : "marginRight"] = "-".concat(this.scrollbarWidth, "px")), this.recalculate(), this.initListeners() } }, { key: "initDOM", value: function () { var t = this; if (Array.from(this.el.children).filter(function (e) { return e.classList.contains(t.classNames.scrollContent) }).length) this.trackX = this.el.querySelector(".".concat(this.classNames.track, ".horizontal")), this.trackY = this.el.querySelector(".".concat(this.classNames.track, ".vertical")), this.scrollContentEl = this.el.querySelector(".".concat(this.classNames.scrollContent)), this.contentEl = this.el.querySelector(".".concat(this.classNames.content)); else { for (this.scrollContentEl = document.createElement("div"), this.contentEl = document.createElement("div"), this.scrollContentEl.classList.add(this.classNames.scrollContent), this.contentEl.classList.add(this.classNames.content) ; this.el.firstChild;) this.contentEl.appendChild(this.el.firstChild); this.scrollContentEl.appendChild(this.contentEl), this.el.appendChild(this.scrollContentEl) } if (!this.trackX || !this.trackY) { var e = document.createElement("div"), n = document.createElement("div"); e.classList.add(this.classNames.track), n.classList.add(this.classNames.scrollbar), e.appendChild(n), this.trackX = e.cloneNode(!0), this.trackX.classList.add("horizontal"), this.trackY = e.cloneNode(!0), this.trackY.classList.add("vertical"), this.el.insertBefore(this.trackX, this.el.firstChild), this.el.insertBefore(this.trackY, this.el.firstChild) } this.el.setAttribute("data-simplebar", "init") } }, { key: "initListeners", value: function () { var t = this; this.options.autoHide && this.el.addEventListener("mouseenter", this.onMouseEnter), this.scrollbarY.addEventListener("mousedown", this.onDragY), this.scrollbarX.addEventListener("mousedown", this.onDragX), this.scrollContentEl.addEventListener("scroll", this.onScrollY), this.contentEl.addEventListener("scroll", this.onScrollX), "undefined" != typeof MutationObserver && (this.mutationObserver = new MutationObserver(function (e) { e.forEach(function (e) { (t.isChildNode(e.target) || e.addedNodes.length) && t.recalculate() }) }), this.mutationObserver.observe(this.el, { attributes: !0, childList: !0, characterData: !0, subtree: !0 })), this.resizeObserver = new u.default(this.recalculate.bind(this)), this.resizeObserver.observe(this.el) } }, { key: "removeListeners", value: function () { this.options.autoHide && this.el.removeEventListener("mouseenter", this.onMouseEnter), this.scrollbarX.removeEventListener("mousedown", this.onDragX), this.scrollbarY.removeEventListener("mousedown", this.onDragY), this.scrollContentEl.removeEventListener("scroll", this.onScrollY), this.contentEl.removeEventListener("scroll", this.onScrollX), this.mutationObserver.disconnect(), this.resizeObserver.disconnect() } }, { key: "onDragX", value: function (t) { this.onDrag(t, "x") } }, { key: "onDragY", value: function (t) { this.onDrag(t, "y") } }, { key: "onDrag", value: function (t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "y"; t.preventDefault(); var n = "y" === e ? this.scrollbarY : this.scrollbarX, r = "y" === e ? t.pageY : t.pageX; this.dragOffset[e] = r - n.getBoundingClientRect()[this.offsetAttr[e]], this.currentAxis = e, document.addEventListener("mousemove", this.drag), document.addEventListener("mouseup", this.onEndDrag) } }, { key: "drag", value: function (t) { var e, n, r; t.preventDefault(), "y" === this.currentAxis ? (e = t.pageY, n = this.trackY, r = this.scrollContentEl) : (e = t.pageX, n = this.trackX, r = this.contentEl); var i = e - n.getBoundingClientRect()[this.offsetAttr[this.currentAxis]] - this.dragOffset[this.currentAxis], o = i / n[this.sizeAttr[this.currentAxis]], s = o * this.contentEl[this.scrollSizeAttr[this.currentAxis]]; r[this.scrollOffsetAttr[this.currentAxis]] = s } }, { key: "onEndDrag", value: function () { document.removeEventListener("mousemove", this.drag), document.removeEventListener("mouseup", this.onEndDrag) } }, { key: "resizeScrollbar", value: function () { var t, e, n, r, i, o = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "y"; "x" === o ? (t = this.trackX, e = this.scrollbarX, n = this.contentEl[this.scrollOffsetAttr[o]], r = this.contentSizeX, i = this.scrollbarXSize) : (t = this.trackY, e = this.scrollbarY, n = this.scrollContentEl[this.scrollOffsetAttr[o]], r = this.contentSizeY, i = this.scrollbarYSize); var s = i / r, c = n / (r - i), a = Math.max(~~(s * i), this.options.scrollbarMinSize), u = ~~((i - a) * c); this.isVisible[o] = i < r, this.isVisible[o] || this.options.forceVisible ? (t.style.visibility = "visible", this.options.forceVisible ? e.style.visibility = "hidden" : e.style.visibility = "visible", "x" === o ? (e.style.left = "".concat(u, "px"), e.style.width = "".concat(a, "px")) : (e.style.top = "".concat(u, "px"), e.style.height = "".concat(a, "px"))) : t.style.visibility = "hidden" } }, { key: "onScrollX", value: function () { this.flashScrollbar("x") } }, { key: "onScrollY", value: function () { this.flashScrollbar("y") } }, { key: "onMouseEnter", value: function () { this.flashScrollbar("x"), this.flashScrollbar("y") } }, { key: "flashScrollbar", value: function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "y"; this.resizeScrollbar(t), this.showScrollbar(t) } }, { key: "showScrollbar", value: function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "y"; this.isVisible[t] && ("x" === t ? this.scrollbarX.classList.add("visible") : this.scrollbarY.classList.add("visible"), this.options.autoHide && ("number" == typeof this.flashTimeout && window.clearTimeout(this.flashTimeout), this.flashTimeout = window.setTimeout(this.hideScrollbar.bind(this), 1e3))) } }, { key: "hideScrollbar", value: function () { this.scrollbarX.classList.remove("visible"), this.scrollbarY.classList.remove("visible"), "number" == typeof this.flashTimeout && window.clearTimeout(this.flashTimeout) } }, { key: "recalculate", value: function () { this.contentSizeX = this.contentEl[this.scrollSizeAttr.x], this.contentSizeY = this.contentEl[this.scrollSizeAttr.y] - (this.scrollbarWidth || this.offsetSize), this.scrollbarXSize = this.trackX[this.sizeAttr.x], this.scrollbarYSize = this.trackY[this.sizeAttr.y], this.resizeScrollbar("x"), this.resizeScrollbar("y"), this.options.autoHide || (this.showScrollbar("x"), this.showScrollbar("y")) } }, { key: "getScrollElement", value: function () { return "y" === (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "y") ? this.scrollContentEl : this.contentEl } }, { key: "getContentElement", value: function () { return this.contentEl } }, { key: "unMount", value: function () { this.removeListeners(), this.el.SimpleBar = null } }, { key: "isChildNode", value: function (t) { return null !== t && (t === this.el || this.isChildNode(t.parentNode)) } }], [{ key: "initHtmlApi", value: function () { this.initDOMLoadedElements = this.initDOMLoadedElements.bind(this), "undefined" != typeof MutationObserver && (this.globalObserver = new MutationObserver(function (e) { e.forEach(function (e) { Array.from(e.addedNodes).forEach(function (e) { 1 === e.nodeType && (e.hasAttribute("data-simplebar") ? !e.SimpleBar && new t(e, t.getElOptions(e)) : Array.from(e.querySelectorAll("[data-simplebar]")).forEach(function (e) { !e.SimpleBar && new t(e, t.getElOptions(e)) })) }), Array.from(e.removedNodes).forEach(function (t) { 1 === t.nodeType && (t.hasAttribute("data-simplebar") ? t.SimpleBar && t.SimpleBar.unMount() : Array.from(t.querySelectorAll("[data-simplebar]")).forEach(function (t) { t.SimpleBar && t.SimpleBar.unMount() })) }) }) }), this.globalObserver.observe(document, { childList: !0, subtree: !0 })), "complete" === document.readyState || "loading" !== document.readyState && !document.documentElement.doScroll ? window.setTimeout(this.initDOMLoadedElements.bind(this)) : (document.addEventListener("DOMContentLoaded", this.initDOMLoadedElements), window.addEventListener("load", this.initDOMLoadedElements)) } }, { key: "getElOptions", value: function (e) { return Object.keys(t.htmlAttributes).reduce(function (n, r) { var i = t.htmlAttributes[r]; return e.hasAttribute(i) && (n[r] = JSON.parse(e.getAttribute(i) || !0)), n }, {}) } }, { key: "removeObserver", value: function () { this.globalObserver.disconnect() } }, { key: "initDOMLoadedElements", value: function () { document.removeEventListener("DOMContentLoaded", this.initDOMLoadedElements), window.removeEventListener("load", this.initDOMLoadedElements), Array.from(document.querySelectorAll("[data-simplebar]")).forEach(function (e) { e.SimpleBar || new t(e, t.getElOptions(e)) }) } }, { key: "defaultOptions", get: function () { return { autoHide: !0, forceVisible: !1, classNames: { content: "simplebar-content", scrollContent: "simplebar-scroll-content", scrollbar: "simplebar-scrollbar", track: "simplebar-track" }, scrollbarMinSize: 25 } } }, { key: "htmlAttributes", get: function () { return { autoHide: "data-simplebar-auto-hide", forceVisible: "data-simplebar-force-visible", scrollbarMinSize: "data-simplebar-scrollbar-min-size" } } }]), t }(); e.default = l, l.initHtmlApi() }, function (t, e, n) { n(29), n(46), t.exports = n(3).Array.from }, function (t, e, n) { "use strict"; var r = n(30)(!0); n(31)(String, "String", function (t) { this._t = String(t), this._i = 0 }, function () { var t, e = this._t, n = this._i; return n >= e.length ? { value: void 0, done: !0 } : (t = r(e, n), this._i += t.length, { value: t, done: !1 }) }) }, function (t, e, n) { var r = n(8), i = n(9); t.exports = function (t) { return function (e, n) { var o, s, c = String(i(e)), a = r(n), u = c.length; return a < 0 || a >= u ? t ? "" : void 0 : (o = c.charCodeAt(a), o < 55296 || o > 56319 || a + 1 === u || (s = c.charCodeAt(a + 1)) < 56320 || s > 57343 ? t ? c.charAt(a) : o : t ? c.slice(a, a + 2) : s - 56320 + (o - 55296 << 10) + 65536) } } }, function (t, e, n) { "use strict"; var r = n(32), i = n(15), o = n(18), s = n(4), c = n(2), a = n(13), u = n(36), l = n(25), f = n(45), h = n(0)("iterator"), d = !([].keys && "next" in [].keys()), p = function () { return this }; t.exports = function (t, e, n, v, b, y, m) { u(n, e, v); var g, E, O, _ = function (t) { if (!d && t in A) return A[t]; switch (t) { case "keys": case "values": return function () { return new n(this, t) } } return function () { return new n(this, t) } }, x = e + " Iterator", w = "values" == b, S = !1, A = t.prototype, k = A[h] || A["@@iterator"] || b && A[b], j = k || _(b), M = b ? w ? _("entries") : j : void 0, L = "Array" == e ? A.entries || k : k; if (L && (O = f(L.call(new t))) !== Object.prototype && O.next && (l(O, x, !0), r || c(O, h) || s(O, h, p)), w && k && "values" !== k.name && (S = !0, j = function () { return k.call(this) }), r && !m || !d && !S && A[h] || s(A, h, j), a[e] = j, a[x] = p, b) if (g = { values: w ? j : _("values"), keys: y ? j : _("keys"), entries: M }, m) for (E in g) E in A || o(A, E, g[E]); else i(i.P + i.F * (d || S), e, g); return g } }, function (t, e) { t.exports = !1 }, function (t, e, n) { t.exports = !n(7) && !n(16)(function () { return 7 != Object.defineProperty(n(17)("div"), "a", { get: function () { return 7 } }).a }) }, function (t, e, n) { var r = n(10); t.exports = function (t, e) { if (!r(t)) return t; var n, i; if (e && "function" == typeof (n = t.toString) && !r(i = n.call(t))) return i; if ("function" == typeof (n = t.valueOf) && !r(i = n.call(t))) return i; if (!e && "function" == typeof (n = t.toString) && !r(i = n.call(t))) return i; throw TypeError("Can't convert object to primitive value") } }, function (t, e) { t.exports = function (t) { if ("function" != typeof t) throw TypeError(t + " is not a function!"); return t } }, function (t, e, n) { "use strict"; var r = n(37), i = n(11), o = n(25), s = {}; n(4)(s, n(0)("iterator"), function () { return this }), t.exports = function (t, e, n) { t.prototype = r(s, { next: i(1, n) }), o(t, e + " Iterator") } }, function (t, e, n) { var r = n(6), i = n(38), o = n(24), s = n(14)("IE_PROTO"), c = function () { }, a = function () { var t, e = n(17)("iframe"), r = o.length; for (e.style.display = "none", n(44).appendChild(e), e.src = "javascript:", t = e.contentWindow.document, t.open(), t.write("<script>document.F=Object<\/script>"), t.close(), a = t.F; r--;) delete a.prototype[o[r]]; return a() }; t.exports = Object.create || function (t, e) { var n; return null !== t ? (c.prototype = r(t), n = new c, c.prototype = null, n[s] = t) : n = a(), void 0 === e ? n : i(n, e) } }, function (t, e, n) { var r = n(5), i = n(6), o = n(39); t.exports = n(7) ? Object.defineProperties : function (t, e) { i(t); for (var n, s = o(e), c = s.length, a = 0; c > a;) r.f(t, n = s[a++], e[n]); return t } }, function (t, e, n) { var r = n(40), i = n(24); t.exports = Object.keys || function (t) { return r(t, i) } }, function (t, e, n) { var r = n(2), i = n(20), o = n(42)(!1), s = n(14)("IE_PROTO"); t.exports = function (t, e) { var n, c = i(t), a = 0, u = []; for (n in c) n != s && r(c, n) && u.push(n); for (; e.length > a;) r(c, n = e[a++]) && (~o(u, n) || u.push(n)); return u } }, function (t, e, n) { var r = n(21); t.exports = Object("z").propertyIsEnumerable(0) ? Object : function (t) { return "String" == r(t) ? t.split("") : Object(t) } }, function (t, e, n) { var r = n(20), i = n(22), o = n(43); t.exports = function (t) { return function (e, n, s) { var c, a = r(e), u = i(a.length), l = o(s, u); if (t && n != n) { for (; u > l;) if ((c = a[l++]) != c) return !0 } else for (; u > l; l++) if ((t || l in a) && a[l] === n) return t || l || 0; return !t && -1 } } }, function (t, e, n) { var r = n(8), i = Math.max, o = Math.min; t.exports = function (t, e) { return t = r(t), t < 0 ? i(t + e, 0) : o(t, e) } }, function (t, e, n) { var r = n(1).document; t.exports = r && r.documentElement }, function (t, e, n) { var r = n(2), i = n(26), o = n(14)("IE_PROTO"), s = Object.prototype; t.exports = Object.getPrototypeOf || function (t) { return t = i(t), r(t, o) ? t[o] : "function" == typeof t.constructor && t instanceof t.constructor ? t.constructor.prototype : t instanceof Object ? s : null } }, function (t, e, n) { "use strict"; var r = n(19), i = n(15), o = n(26), s = n(47), c = n(48), a = n(22), u = n(49), l = n(50); i(i.S + i.F * !n(52)(function (t) { Array.from(t) }), "Array", { from: function (t) { var e, n, i, f, h = o(t), d = "function" == typeof this ? this : Array, p = arguments.length, v = p > 1 ? arguments[1] : void 0, b = void 0 !== v, y = 0, m = l(h); if (b && (v = r(v, p > 2 ? arguments[2] : void 0, 2)), void 0 == m || d == Array && c(m)) for (e = a(h.length), n = new d(e) ; e > y; y++) u(n, y, b ? v(h[y], y) : h[y]); else for (f = m.call(h), n = new d; !(i = f.next()).done; y++) u(n, y, b ? s(f, v, [i.value, y], !0) : i.value); return n.length = y, n } }) }, function (t, e, n) { var r = n(6); t.exports = function (t, e, n, i) { try { return i ? e(r(n)[0], n[1]) : e(n) } catch (e) { var o = t.return; throw void 0 !== o && r(o.call(t)), e } } }, function (t, e, n) { var r = n(13), i = n(0)("iterator"), o = Array.prototype; t.exports = function (t) { return void 0 !== t && (r.Array === t || o[i] === t) } }, function (t, e, n) { "use strict"; var r = n(5), i = n(11); t.exports = function (t, e, n) { e in t ? r.f(t, e, i(0, n)) : t[e] = n } }, function (t, e, n) { var r = n(51), i = n(0)("iterator"), o = n(13); t.exports = n(3).getIteratorMethod = function (t) { if (void 0 != t) return t[i] || t["@@iterator"] || o[r(t)] } }, function (t, e, n) { var r = n(21), i = n(0)("toStringTag"), o = "Arguments" == r(function () { return arguments }()), s = function (t, e) { try { return t[e] } catch (t) { } }; t.exports = function (t) { var e, n, c; return void 0 === t ? "Undefined" : null === t ? "Null" : "string" == typeof (n = s(e = Object(t), i)) ? n : o ? r(e) : "Object" == (c = r(e)) && "function" == typeof e.callee ? "Arguments" : c } }, function (t, e, n) { var r = n(0)("iterator"), i = !1; try { var o = [7][r](); o.return = function () { i = !0 }, Array.from(o, function () { throw 2 }) } catch (t) { } t.exports = function (t, e) { if (!e && !i) return !1; var n = !1; try { var o = [7], s = o[r](); s.next = function () { return { done: n = !0 } }, o[r] = function () { return s }, t(o) } catch (t) { } return n } }, function (t, e, n) {
        var r, i, o;/*! scrollbarWidth.js v0.1.3 | felixexter | MIT | https://github.com/felixexter/scrollbarWidth */
        !function (n, s) { i = [], r = s, void 0 !== (o = "function" == typeof r ? r.apply(e, i) : r) && (t.exports = o) }(0, function () { "use strict"; function t() { if ("undefined" == typeof document) return 0; var t, e = document.body, n = document.createElement("div"), r = n.style; return r.position = "absolute", r.top = r.left = "-9999px", r.width = r.height = "100px", r.overflow = "scroll", e.appendChild(n), t = n.offsetWidth - n.clientWidth, e.removeChild(n), t } return t })
    }, function (t, e, n) { (function (e) { function n(t, e, n) { function i(e) { var n = v, r = b; return v = b = void 0, w = e, m = t.apply(r, n) } function o(t) { return w = t, g = setTimeout(l, e), S ? i(t) : m } function a(t) { var n = t - x, r = t - w, i = e - n; return A ? O(i, y - r) : i } function u(t) { var n = t - x, r = t - w; return void 0 === x || n >= e || n < 0 || A && r >= y } function l() { var t = _(); if (u(t)) return f(t); g = setTimeout(l, a(t)) } function f(t) { return g = void 0, k && v ? i(t) : (v = b = void 0, m) } function h() { void 0 !== g && clearTimeout(g), w = 0, v = x = b = g = void 0 } function d() { return void 0 === g ? m : f(_()) } function p() { var t = _(), n = u(t); if (v = arguments, b = this, x = t, n) { if (void 0 === g) return o(x); if (A) return g = setTimeout(l, e), i(x) } return void 0 === g && (g = setTimeout(l, e)), m } var v, b, y, m, g, x, w = 0, S = !1, A = !1, k = !0; if ("function" != typeof t) throw new TypeError(c); return e = s(e) || 0, r(n) && (S = !!n.leading, A = "maxWait" in n, y = A ? E(s(n.maxWait) || 0, e) : y, k = "trailing" in n ? !!n.trailing : k), p.cancel = h, p.flush = d, p } function r(t) { var e = typeof t; return !!t && ("object" == e || "function" == e) } function i(t) { return !!t && "object" == typeof t } function o(t) { return "symbol" == typeof t || i(t) && g.call(t) == u } function s(t) { if ("number" == typeof t) return t; if (o(t)) return a; if (r(t)) { var e = "function" == typeof t.valueOf ? t.valueOf() : t; t = r(e) ? e + "" : e } if ("string" != typeof t) return 0 === t ? t : +t; t = t.replace(l, ""); var n = h.test(t); return n || d.test(t) ? p(t.slice(2), n ? 2 : 8) : f.test(t) ? a : +t } var c = "Expected a function", a = NaN, u = "[object Symbol]", l = /^\s+|\s+$/g, f = /^[-+]0x[0-9a-f]+$/i, h = /^0b[01]+$/i, d = /^0o[0-7]+$/i, p = parseInt, v = "object" == typeof e && e && e.Object === Object && e, b = "object" == typeof self && self && self.Object === Object && self, y = v || b || Function("return this")(), m = Object.prototype, g = m.toString, E = Math.max, O = Math.min, _ = function () { return y.Date.now() }; t.exports = n }).call(e, n(55)) }, function (t, e) { var n; n = function () { return this }(); try { n = n || Function("return this")() || (0, eval)("this") } catch (t) { "object" == typeof window && (n = window) } t.exports = n }, function (t, e, n) { "use strict"; function r(t) { return parseFloat(t) || 0 } function i(t) { return Array.prototype.slice.call(arguments, 1).reduce(function (e, n) { return e + r(t["border-" + n + "-width"]) }, 0) } function o(t) { for (var e = ["top", "right", "bottom", "left"], n = {}, i = 0, o = e; i < o.length; i += 1) { var s = o[i], c = t["padding-" + s]; n[s] = r(c) } return n } function s(t) { var e = t.getBBox(); return f(0, 0, e.width, e.height) } function c(t) { var e = t.clientWidth, n = t.clientHeight; if (!e && !n) return _; var s = getComputedStyle(t), c = o(s), u = c.left + c.right, l = c.top + c.bottom, h = r(s.width), d = r(s.height); if ("border-box" === s.boxSizing && (Math.round(h + u) !== e && (h -= i(s, "left", "right") + u), Math.round(d + l) !== n && (d -= i(s, "top", "bottom") + l)), !a(t)) { var p = Math.round(h + u) - e, v = Math.round(d + l) - n; 1 !== Math.abs(p) && (h -= p), 1 !== Math.abs(v) && (d -= v) } return f(c.left, c.top, h, d) } function a(t) { return t === document.documentElement } function u(t) { return d ? x(t) ? s(t) : c(t) : _ } function l(t) { var e = t.x, n = t.y, r = t.width, i = t.height, o = "undefined" != typeof DOMRectReadOnly ? DOMRectReadOnly : Object, s = Object.create(o.prototype); return O(s, { x: e, y: n, width: r, height: i, top: n, right: e + r, bottom: i + n, left: e }), s } function f(t, e, n, r) { return { x: t, y: e, width: n, height: r } } Object.defineProperty(e, "__esModule", { value: !0 }); var h = function () { function t(t, e) { var n = -1; return t.some(function (t, r) { return t[0] === e && (n = r, !0) }), n } return "undefined" != typeof Map ? Map : function () { function e() { this.__entries__ = [] } var n = { size: {} }; return n.size.get = function () { return this.__entries__.length }, e.prototype.get = function (e) { var n = t(this.__entries__, e), r = this.__entries__[n]; return r && r[1] }, e.prototype.set = function (e, n) { var r = t(this.__entries__, e); ~r ? this.__entries__[r][1] = n : this.__entries__.push([e, n]) }, e.prototype.delete = function (e) { var n = this.__entries__, r = t(n, e); ~r && n.splice(r, 1) }, e.prototype.has = function (e) { return !!~t(this.__entries__, e) }, e.prototype.clear = function () { this.__entries__.splice(0) }, e.prototype.forEach = function (t, e) { void 0 === e && (e = null); for (var n = 0, r = this.__entries__; n < r.length; n += 1) { var i = r[n]; t.call(e, i[1], i[0]) } }, Object.defineProperties(e.prototype, n), e }() }(), d = "undefined" != typeof window && "undefined" != typeof document && window.document === document, p = function () { return "function" == typeof requestAnimationFrame ? requestAnimationFrame : function (t) { return setTimeout(function () { return t(Date.now()) }, 1e3 / 60) } }(), v = 2, b = function (t, e) { function n() { o && (o = !1, t()), s && i() } function r() { p(n) } function i() { var t = Date.now(); if (o) { if (t - c < v) return; s = !0 } else o = !0, s = !1, setTimeout(r, e); c = t } var o = !1, s = !1, c = 0; return i }, y = ["top", "right", "bottom", "left", "width", "height", "size", "weight"], m = "undefined" != typeof navigator && /Trident\/.*rv:11/.test(navigator.userAgent), g = "undefined" != typeof MutationObserver && !m, E = function () { this.connected_ = !1, this.mutationEventsAdded_ = !1, this.mutationsObserver_ = null, this.observers_ = [], this.onTransitionEnd_ = this.onTransitionEnd_.bind(this), this.refresh = b(this.refresh.bind(this), 20) }; E.prototype.addObserver = function (t) { ~this.observers_.indexOf(t) || this.observers_.push(t), this.connected_ || this.connect_() }, E.prototype.removeObserver = function (t) { var e = this.observers_, n = e.indexOf(t); ~n && e.splice(n, 1), !e.length && this.connected_ && this.disconnect_() }, E.prototype.refresh = function () { this.updateObservers_() && this.refresh() }, E.prototype.updateObservers_ = function () { var t = this.observers_.filter(function (t) { return t.gatherActive(), t.hasActive() }); return t.forEach(function (t) { return t.broadcastActive() }), t.length > 0 }, E.prototype.connect_ = function () { d && !this.connected_ && (document.addEventListener("transitionend", this.onTransitionEnd_), window.addEventListener("resize", this.refresh), g ? (this.mutationsObserver_ = new MutationObserver(this.refresh), this.mutationsObserver_.observe(document, { attributes: !0, childList: !0, characterData: !0, subtree: !0 })) : (document.addEventListener("DOMSubtreeModified", this.refresh), this.mutationEventsAdded_ = !0), this.connected_ = !0) }, E.prototype.disconnect_ = function () { d && this.connected_ && (document.removeEventListener("transitionend", this.onTransitionEnd_), window.removeEventListener("resize", this.refresh), this.mutationsObserver_ && this.mutationsObserver_.disconnect(), this.mutationEventsAdded_ && document.removeEventListener("DOMSubtreeModified", this.refresh), this.mutationsObserver_ = null, this.mutationEventsAdded_ = !1, this.connected_ = !1) }, E.prototype.onTransitionEnd_ = function (t) { var e = t.propertyName; y.some(function (t) { return !!~e.indexOf(t) }) && this.refresh() }, E.getInstance = function () { return this.instance_ || (this.instance_ = new E), this.instance_ }, E.instance_ = null; var O = function (t, e) { for (var n = 0, r = Object.keys(e) ; n < r.length; n += 1) { var i = r[n]; Object.defineProperty(t, i, { value: e[i], enumerable: !1, writable: !1, configurable: !0 }) } return t }, _ = f(0, 0, 0, 0), x = function () { return "undefined" != typeof SVGGraphicsElement ? function (t) { return t instanceof SVGGraphicsElement } : function (t) { return t instanceof SVGElement && "function" == typeof t.getBBox } }(), w = function (t) { this.broadcastWidth = 0, this.broadcastHeight = 0, this.contentRect_ = f(0, 0, 0, 0), this.target = t }; w.prototype.isActive = function () { var t = u(this.target); return this.contentRect_ = t, t.width !== this.broadcastWidth || t.height !== this.broadcastHeight }, w.prototype.broadcastRect = function () { var t = this.contentRect_; return this.broadcastWidth = t.width, this.broadcastHeight = t.height, t }; var S = function (t, e) { var n = l(e); O(this, { target: t, contentRect: n }) }, A = function (t, e, n) { if ("function" != typeof t) throw new TypeError("The callback provided as parameter 1 is not a function."); this.activeObservations_ = [], this.observations_ = new h, this.callback_ = t, this.controller_ = e, this.callbackCtx_ = n }; A.prototype.observe = function (t) { if (!arguments.length) throw new TypeError("1 argument required, but only 0 present."); if ("undefined" != typeof Element && Element instanceof Object) { if (!(t instanceof Element)) throw new TypeError('parameter 1 is not of type "Element".'); var e = this.observations_; e.has(t) || (e.set(t, new w(t)), this.controller_.addObserver(this), this.controller_.refresh()) } }, A.prototype.unobserve = function (t) { if (!arguments.length) throw new TypeError("1 argument required, but only 0 present."); if ("undefined" != typeof Element && Element instanceof Object) { if (!(t instanceof Element)) throw new TypeError('parameter 1 is not of type "Element".'); var e = this.observations_; e.has(t) && (e.delete(t), e.size || this.controller_.removeObserver(this)) } }, A.prototype.disconnect = function () { this.clearActive(), this.observations_.clear(), this.controller_.removeObserver(this) }, A.prototype.gatherActive = function () { var t = this; this.clearActive(), this.observations_.forEach(function (e) { e.isActive() && t.activeObservations_.push(e) }) }, A.prototype.broadcastActive = function () { if (this.hasActive()) { var t = this.callbackCtx_, e = this.activeObservations_.map(function (t) { return new S(t.target, t.broadcastRect()) }); this.callback_.call(t, e, t), this.clearActive() } }, A.prototype.clearActive = function () { this.activeObservations_.splice(0) }, A.prototype.hasActive = function () { return this.activeObservations_.length > 0 }; var k = "undefined" != typeof WeakMap ? new WeakMap : new h, j = function (t) { if (!(this instanceof j)) throw new TypeError("Cannot call a class as a function"); if (!arguments.length) throw new TypeError("1 argument required, but only 0 present."); var e = E.getInstance(), n = new A(t, e, this); k.set(this, n) };["observe", "unobserve", "disconnect"].forEach(function (t) { j.prototype[t] = function () { return (e = k.get(this))[t].apply(e, arguments); var e } }); var M = function () { return "undefined" != typeof ResizeObserver ? ResizeObserver : j }(); e.default = M }, function (t, e) { }, function (t, e, n) {
        "use strict"; function r(t) { if (null === t || void 0 === t) throw new TypeError("Object.assign cannot be called with null or undefined"); return Object(t) }/*
object-assign
(c) Sindre Sorhus
@license MIT
*/
        var i = Object.getOwnPropertySymbols, o = Object.prototype.hasOwnProperty, s = Object.prototype.propertyIsEnumerable; t.exports = function () { try { if (!Object.assign) return !1; var t = new String("abc"); if (t[5] = "de", "5" === Object.getOwnPropertyNames(t)[0]) return !1; for (var e = {}, n = 0; n < 10; n++) e["_" + String.fromCharCode(n)] = n; if ("0123456789" !== Object.getOwnPropertyNames(e).map(function (t) { return e[t] }).join("")) return !1; var r = {}; return "abcdefghijklmnopqrst".split("").forEach(function (t) { r[t] = t }), "abcdefghijklmnopqrst" === Object.keys(Object.assign({}, r)).join("") } catch (t) { return !1 } }() ? Object.assign : function (t, e) { for (var n, c, a = r(t), u = 1; u < arguments.length; u++) { n = Object(arguments[u]); for (var l in n) o.call(n, l) && (a[l] = n[l]); if (i) { c = i(n); for (var f = 0; f < c.length; f++) s.call(n, c[f]) && (a[c[f]] = n[c[f]]) } } return a }
    }]).default
});;
'use strict';

/*****************************************************************************************
 * Bepalen resolutie client. 
 * @returns: {string} resolutie breedte x hoogte
 */
function helperGetResolution() {
    return window.screen.width + "x" + window.screen.height;
}

/*****************************************************************************************
 * hrefs maken van links in text.
 * @param: {string} text
 * @returns: {string} text met parsed hyperlinks.
 */
function replaceURLWithHTMLLinks(text) {
    var exp = /(\b(https?):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
    return text.replace(exp, "<a target='_blank' href='$1'>$1</a>");
}

/*****************************************************************************************
 * Caret naar einde plaatsen in contenteditable veld.
 * @param: {jquery element} input content editble.
 */
function setCaretAtEnd(element) {
    var e = $(element)[0];
    var range, selection;
    if (document.createRange) {
        range = document.createRange();
        range.selectNodeContents(e);
        range.collapse(false);
        selection = window.getSelection();
        selection.removeAllRanges();
        selection.addRange(range);
    }
}

/*****************************************************************************************
 *  Format string helper functie
 * @param {string} this
 * @param {string} arguments
 * @returns {string} formatted string
 */
String.prototype.formatString = function () {
    var a = this;
    for (var k in arguments) {
        a = a.replace(new RegExp("\\{" + k + "\\}", 'g'), arguments[k]);
    }
    return a
}

/*****************************************************************************************
 * endswith helper functie
 * @param {string} input
 * @param {string} suffix
 * @returns {bool} endswith ja/nee
 */
function stringEndsWith(input, suffix) {
    return (input.toLowerCase().substr(input.length - suffix.length) === suffix.toLowerCase());
}

/*****************************************************************************************
 * startswith helper functie.
 * @param {string} input
 * @param {string} prefix
 * @returns {bool} startswith ja/nee
 */
function stringStartsWith(input, prefix) {
    return (input.toLowerCase().substr(0, prefix.length) === prefix.toLowerCase());
}


/*****************************************************************************************
 * startswith helper functie. 
 * @returns {bool} kudtbrowser ja/nee
 */
function browserIsIE() {
    if (/Edge\/|Trident\/|MSIE /.test(window.navigator.userAgent)) {
        return true;
    }

    return false;
}

/*****************************************************************************************
 * Portrait ja/nee
 * @returns {bool} Portrait ja/nee
 */
function isPortrait() {

    var orientation = screen.msOrientation || (screen.orientation || screen.mozOrientation || {}).type;

    if (orientation === undefined) {
        return window.innerWidth < window.innerHeight;
    }

    if (orientation === "portrait-secondary" || orientation === "portrait-primary") {
        return true;
    }

    return false;
}

/*****************************************************************************************
 * Mobile ja/nee
 * @returns {bool} mobile ja/nee
 */
function isMobile() {
    return window.innerHeight < 700 || window.innerWidth < 700;
}

/*****************************************************************************************
 * Mobile ja/nee
 * @returns {bool} mobile ja/nee
 */
function isMobileTouch() {
    try { document.createEvent("TouchEvent"); return true; }
    catch (e) { return false; }
}

/*****************************************************************************************
 * Is Apple mobile device.
 * @returns {bool} apple ja/nee
 */
function isIPhoneOrIPad() {
    return ((navigator.platform.indexOf("iPhone") != -1) || (navigator.platform.indexOf("iPad") != -1));
}

/*****************************************************************************************
 * Is Android device.
 * @returns {bool} android ja/nee
 */
function isAndroidDevice() {
    var isAndroid = /(android)/i.test(navigator.userAgent);
    return isAndroid;
}

;
/// <reference path="chatcontrol-helpers.js" />
/// <reference path="chatcontrol-settings.js" />
/// <reference path="chatcontrol-rest.js" />

/*******************************************************************************************************************
 * 
 *  Chat module voor chatten.
 * 
 *******************************************************************************************************************/
SalesforceChatModule = (new function () {

    // private variables.
    var breakPollingLooop = true;
    var chatSettingUploadUrl = null;
    var typingLockTimer = new Date();


    //ChatGLobalEnums.ChatSesionVariable
    var CV = null;
    // ChatGLobalEnums.ParseTextTypes 
    var PT = null;
    //ChatGLobalEnums.ChatModes
    var CM = null;
    //ChatGLobalEnums.ChatMessageTypes
    var MT = null;
    //ChatGlobalSettings.texts
    var TX = null;


    /*****************************************************************************************
     * Acieve browsertab ja/nee
     */
    isActiveTab = function () {
        var isactive = sessionStorage.getItem(ChatGlobalSettings.usersession.chatActive);
        if (isactive === null) {
            return null;
        }
        return isactive === "true";
    }

    /*****************************************************************************************
     * Set tab als actief
     */
    setActiveTab = function (active) {
        sessionStorage.setItem(ChatGlobalSettings.usersession.chatActive, active);
    }

    /*****************************************************************************************
    * Set focus input
    */
    setFocusUserChatInput = function () {
        setTimeout(function () {
            $("#txt-userchat-text").scrollLeft(10000);
            $("#txt-userchat-text").focus();
            setCaretAtEnd($("#txt-userchat-text"));
        }, 100);
    }

    /*****************************************************************************************
     * Toggle chat panel
     */
    toggleChatPanel = function () {
        $("#pnl-chatcontrol").toggleClass("chatpanel-open");

        if (isActiveTab() !== null) {
            SalesforceSessionModule.setVariable(CV.unreadcount, null);
            SalesforceSessionModule.setVariable(CV.windowopen, chatPanelVisible());
        }

        $("#div-chatbutton-counter-pulse").fadeOut(500);
        $("#div-chatbutton-counter-back").fadeOut(500);

        var activeTab = sessionStorage.getItem(ChatGlobalSettings.usersession.chatActive);
        var mode = SalesforceSessionModule.getVariable(CV.chatmode);


        if (chatPanelVisible() && activeTab === "true" && mode === CM.chatting) {
            setFocusUserChatInput();
        }
    }

    /*****************************************************************************************
     * Panel visible ja/nee?
     * @returns {bool} visible ja/nee
     */
    chatPanelVisible = function () {
        return $("#pnl-chatcontrol").hasClass("chatpanel-open");
    }

    /*****************************************************************************************
     * Set juiste window obv chatmode.
     * @param {chatmode} chatmode
     */
    setChatWindow = function (mode) {

        // niet opslaan.
        if (mode !== CM.quit && mode !== CM.duplicate) {
            SalesforceSessionModule.setVariable(CV.chatmode, mode);
        }

        var text_title = null;
        var text_body = null;
        var buttons = null;

        switch (mode) {
            case CM.chatended_user:
                text_title = TX.ended_user_title;
                text_body = TX.ended_user_text;
                buttons = { download: true, quit: true };
                break;
            case CM.chatended_agent:
                text_title = TX.ended_agent_title;
                text_body = TX.ended_agent_text;
                buttons = { download: true, quit: true };
                break;
            case CM.chatended_disconnect:
                text_title = TX.error_agentdisconnect_title;
                text_body = TX.error_agentdisconnect_text;
                buttons = { download: true, quit: true, retry: true };
                break;
            case CM.error_generic:
                text_title = TX.error_generic_title;
                text_body = TX.error_generic_text;
                buttons = { download: true, quit: true, retry: true };
                break;
            case CM.error_initfail:
                text_title = TX.error_chatrequest_title;
                text_body = TX.error_chatrequest_text;
                buttons = { quit: true, retry: true };
                break;
            case CM.error_init_waitmore:
                text_title = TX.error_init_waitmore_title;
                text_body = TX.error_init_waitmore_text;
                buttons = { quit: true };
                break;
            case CM.error_sendmessage:
                text_title = TX.error_sendmessage_title;
                text_body = TX.error_sendmessage_text;
                buttons = { download: true, quit: true, retry: true };
                break;
            case CM.error_retrievemessage:
                text_title = TX.error_retrievemessage_title;
                text_body = TX.error_retrievemessage_text;
                buttons = { download: true, quit: true, retry: true };
                break;
            case CM.error_upload:
                text_title = TX.error_upload_title;
                text_body = TX.error_upload_text;
                buttons = { download: true, quit: true, retry: true };
                break;
            case CM.error_notavailable:
                text_title = TX.error_notavailable_title;
                text_body = TX.error_notavailable_text;
                buttons = { quit: true };
                break;
        }

        if (text_title !== null && text_body !== null) {
            setEndedText(text_title, text_body);
        }

        if (buttons !== null) {
            setEndedButtons(buttons);
        }

        var current = $("#pnl-chatcontrol #pnl-chatpanel .active");

        if (current.length > 0) {
            $(current).removeClass("active");
        }

        var panelname = mode;

        if (panelname.indexOf("error") === 0) {
            panelname = "chatended";
        }
        else if (panelname.indexOf("_") > 0) {
            panelname = panelname.substr(0, panelname.indexOf("_"));
        }

        if (mode === CM.connecting) {
            if (isMobileTouch() === true && isIPhoneOrIPad() === true) {
                $("#pnl-sfchat-connecting #lbl-connect-mobilewarning").show();
                $("#pnl-sfchat-startchat #lbl-startchat-mobilewarning").show();
            }
            else {
                $("#pnl-sfchat-connecting #lbl-connect-mobilewarning").hide();
                $("#pnl-sfchat-startchat #lbl-startchat-mobilewarning").hide();
            }
        }

        $("#pnl-chatcontrol #pnl-chatpanel #pnl-sfchat-" + panelname).addClass("active");
    }

    /*****************************************************************************************
     *  Text en titel setten bij stoppen chat.
     * @param {string} titel voor scherm
     * @param {string} text voor scherm
     */
    setEndedText = function (title, text) {
        $("#pnl-chatcontrol #pnl-chatpanel  #lbl-ended-title").text(title);
        $("#pnl-chatcontrol #pnl-chatpanel  #lbl-ended-text").text(text);
    };

    /*****************************************************************************************
     * Juiste buttons tonen op ended panel
     * @param {$[button]} lijst met buttons.
     */
    setEndedButtons = function (buttons) {
        if (buttons === undefined) {
            $("#pnl-chatcontrol #pnl-chatpanel #pnl-sfchat-chatended button").hide();
        }
        else {
            if (buttons.retry === true) {
                $("#pnl-chatcontrol #pnl-chatpanel #pnl-sfchat-chatended #btn-chatended-retry").show();
            }
            else {
                $("#pnl-chatcontrol #pnl-chatpanel #pnl-sfchat-chatended #btn-chatended-retry").hide();
            }
            if (buttons.quit === true) {
                $("#pnl-chatcontrol #pnl-chatpanel #pnl-sfchat-chatended #btn-chatended-quit").show();
            }
            else {
                $("#pnl-chatcontrol #pnl-chatpanel #pnl-sfchat-chatended #btn-chatended-quit").hide();
            }
            if (buttons.download === true) {
                $("#pnl-chatcontrol #pnl-chatpanel #pnl-sfchat-chatended #btn-chatended-download").show();
            }
            else {
                $("#pnl-chatcontrol #pnl-chatpanel #pnl-sfchat-chatended #btn-chatended-download").hide();
            }
        }
    }

    /*****************************************************************************************
     * Agent naam opslaan in cookie
     * @param {string} name, agent naam 
     */
    setAgentName = function (name) {
        SalesforceSessionModule.setVariable(CV.agentname, name);
        $("#pnl-chatcontrol #lbl-chatagent-name").text(name);
    }

    /*****************************************************************************************
     *  Agentnaam opnieuw setten in window.
     */
    refreshAgentName = function () {
        var name = SalesforceSessionModule.getVariable(CV.agentname);
        $("#pnl-chatcontrol #lbl-chatagent-name").text(name);
    }

    /*****************************************************************************************
     * Text omzetten naar juiste formaat, wel/niet smileys etc?
     * @param {string} text wat aangepast moet worden.
     * @param {parsetype} soort parse
     * @returns {string} aangepaste text.
     */
    parseChatText = function (txt, parsetype) {

        if (txt === undefined || txt === "" || parsetype === undefined) {
            return txt;
        }

        // bestemming waar plaatjes in moeten.
        if (parsetype === PT.from_userinput || parsetype === PT.to_chatwindow || parsetype === PT.to_history) {
            $.each(ChatSmileMapping, function (index, val) {
                $.each(val.codes, function (index, code) {
                    if (txt.indexOf(code) >= 0) {
                        if (parsetype === PT.from_userinput) {
                            txt = txt.replace(code, "<span><i class='" + val.faclass + "' icon-code='" + val.faclass + "' />&nbsp;</span>");
                        }
                        else {
                            txt = txt.replace(code, "<i class='" + val.faclass + "' icon-code='" + val.faclass + "' />");
                        }
                    }
                });
            });

            // hrefs maken.
            if (parsetype === PT.to_chatwindow) {
                txt = replaceURLWithHTMLLinks(txt);
            }

            return txt;
        }
        // deze types hebben plaintext nodig.
        else if (parsetype === PT.to_agent || parsetype === PT.to_transcript) {
            var txtHtml = $("<div>{0}</div>".formatString(txt));

            $.each(ChatSmileMapping, function (index, map) {
                $(txtHtml).find("[icon-code=" + map.faclass + "]").replaceWith(map.codes[0]);
            });

            return $(txtHtml).text();
        }
        else {
            return txt;
        }
    }


    /*****************************************************************************************
     * Ongelezen berichten
     */
    incrementNewMessages = function () {
        $("#chatbutton-counter-label").text('');

        if (chatPanelVisible()) {
            SalesforceSessionModule.setVariable(CV.unreadcount, 0);
        }
        else {
            var count = SalesforceSessionModule.getVariable(CV.unreadcount);
            if (count === null || count === undefined) {
                count = 0;
            }

            count = count + 1;
            SalesforceSessionModule.setVariable(CV.unreadcount, count);
            $("#chatbutton-counter-label").text(count);

            if ($("#div-chatbutton-counter-pulse").is(":hidden") === true) {
                $("#div-chatbutton-counter-pulse").fadeIn(500);
                $("#div-chatbutton-counter-back").fadeIn(500);
            }

            $("#chatbutton-counter-label").fadeOut(500, function () {
                if (count === 1) {
                    $("#div-chatbutton-counter-back").attr("title", ChatGlobalSettings.texts.button_ongelezen_een);
                }
                else {
                    $("#div-chatbutton-counter-back").attr("title", ChatGlobalSettings.texts.button_ongelezen_meerdere.formatString(count));
                }

                $("#chatbutton-counter-label").fadeIn(500);
            });
        }
    }

    /*****************************************************************************************
     * Toevoegen text aan chat window.
     * @param {messagetype} soort bericht
     * @param {string} text 
     * @param {string} token, salesforce upload token
     * @returns {string} html voor chatwindow
     */
    messageAppendToChatWindow = function (messagetype, text, token) {
        if (text.length === 0) {
            return "";
        }

        var html = null;
        var time = dateFormat(new Date(), "HH:MM:ss");
        var parsed = parseChatText(text, PT.to_chatwindow);

        if (messagetype === MT.from_user) {
            html = "<div class='chat-message-user'><p>{0}<span class='time-stamp'>{1}</span></p></div>".formatString(parsed, time);
        }
        else if (messagetype === MT.from_agent) {
            html = "<div class='chat-message-agent'><img src='/Resources/Shared/Images/{0}-chat-icoon.png' class='agent-icon' /><p>{1}<span class='time-stamp'>{2}</span></p></div>".formatString(ChatGlobalSettings.label, parsed, time);
        }
        else if (messagetype === MT.upload_request) {
            html = $("#template-uploaditem").html().formatString(token, parsed, time);
        }
        else if (messagetype === MT.message) {
            html = "<div class='chat-message-message'><p>{0}<span class='time-stamp'>{1}</span></p></div>".formatString(parsed, time);
        }
        else if (messagetype === MT.success) {
            html = "<div class='chat-message-success'><p>{0}<span class='time-stamp'>{1}</span></p></div>".formatString(parsed, time);
        }
        else if (messagetype === MT.warning) {
            html = "<div class='chat-message-warning'><p>{0}<span class='time-stamp'>{1}</span></p></div>".formatString(parsed, time);
        }
        else if (messagetype === MT.error) {
            html = "<div class='chat-message-error'><p>{0}<span class='time-stamp'>{1}</span></p></div>".formatString(parsed, time);
        }

        if (html !== null) {
            $("#pnl-sfchat-chatting .chat-chatcontent .simplebar-content").append(html);
            messageAppendToChatHistory(html);
            messageAppendToChatTranscript(messagetype, parseChatText(text, PT.to_transcript));
        }

        $("#pnl-sfchat-chatting .simplebar-scroll-content").scrollTop($("#pnl-sfchat-chatting .simplebar-scroll-content")[0].scrollHeight);

        return html;
    }

    /*****************************************************************************************
     * Ophalen transcript uit session storage.
     * @returns {string} totale transcript
     */
    getTranscriptText = function () {
        var tn = ChatGlobalSettings.usersession.transcriptName;
        return sessionStorage.getItem(tn);
    }

    /*****************************************************************************************
     * Toevoegen text aan transcript
     * @param {messagetype} bericht type.
     * @param {string} text naar transcript.
     */
    messageAppendToChatTranscript = function (messagetype, txt) {

        var tn = ChatGlobalSettings.usersession.transcriptName;
        var transcript = sessionStorage.getItem(tn);
        var date = new Date();

        var agent = SalesforceSessionModule.getVariable(CV.agentname);

        var fulldate = dateFormat(date, "dd-mm-yyyy HH:MM:ss");
        var time = dateFormat(date, "HH:MM:ss");

        var newtext = "";

        // titel voor transcript.
        if (transcript === null || transcript === "") {
            transcript = "";
            newtext = TX.shared_transcriptheader.formatString(fulldate, agent);
        }

        // per messagetype andere format.
        if (messagetype === MT.from_user) {
            newtext += "\r\n{0} U: {1}".formatString(time, txt);
        }
        else if (messagetype === MT.from_agent) {
            newtext += "\r\n{0} {1}: {2}".formatString(time, agent, txt);
        }
        else if (messagetype === MT.upload_request) {
            newtext += "\r\n{0} {1}: {2}".formatString(time, agent, ChatGlobalSettings.texts.trans_uploadverzoek);
        }
        else if (messagetype === MT.message) {
            newtext += "\r\n{0} Info: {1}".formatString(time, txt);
        }
        else if (messagetype === MT.success) {
            newtext += "\r\n{0} Success: {1}".formatString(time, txt);
        }
        else if (messagetype === MT.warning) {
            newtext += "\r\n{0} Waarschuwing: {1}".formatString(time, txt);
        }
        else if (messagetype === MT.error) {
            newtext += "\r\n{0} Fout opgetreden: {1}".formatString(time, txt);
        }

        transcript += newtext.replace(/<br\s*\/?>/mg, "\r\n");

        // opslaan in storage.
        sessionStorage.setItem(tn, transcript);
    }



    setQPositionConnecting = function (position) {

        if (position === null) {
            $("#lbl-connect-status").text(TX.connecting_unknowninline);
        }
        else if (position <= 1) {
            $("#lbl-connect-status").text(TX.connecting_first);
        }
        else {
            $("#lbl-connect-status").text(TX.connecting_xinline.formatString(position));
        }
    }

    /*****************************************************************************************
     * Toevoegen aan session storage, ophalen geschiedenis bij redirect/F5 etc.
     * @param {string} html voor history.
     */
    messageAppendToChatHistory = function (html) {
        if (html === null) {
            return;
        }

        var hn = ChatGlobalSettings.usersession.historyName;
        var history = sessionStorage.getItem(hn);

        if (history === null) {
            history = "";
        }

        var filter = $(html);
        $(".chatmessage-upload-block", filter).remove();

        history += filter[0].outerHTML;
        sessionStorage.setItem(hn, history);
    }

    /*****************************************************************************************
     * Ophalen geschiedenis bij redirect/F5 etc.
     * @returns {string} chat content html
     */
    getChatHistory = function () {
        var hn = ChatGlobalSettings.usersession.historyName;
        var history = sessionStorage.getItem(hn);
        return history;
    }

    /*****************************************************************************************
     * Verwerken messages van server.
     * @param {object} data, salesforce data.
     */
    handelChatMessages = function (data) {

        if (data === '' || data === 'undefined' || data === null) {
            return false;
        }

        var continueMessageLoop = true;

        $.each(data.messages, function (index, m) {
            if (m.type === "FileTransfer") {
                if (m.message.type === "Requested") {
                    chatSettingUploadUrl = m.message.uploadServletUrl;
                    messageAppendToChatWindow(MT.upload_request, TX.chatting_uploadreq, m.message.fileToken);
                }
                else if (m.message.type === "Canceled") {
                    messageAppendToChatWindow(MT.warning, TX.chatting_uploadcancelled);
                }

                incrementNewMessages();
            }
            else if (m.type === "AgentDisconnect") {
                continueMessageLoop = false;
                setChatWindow(CM.chatended_disconnect);
                incrementNewMessages();
            }
            else if (m.type === "AgentNotTyping") {
                $("#pnl-agent-typing span").css("opacity", "0");
            }
            else if (m.type === "AgentTyping") {
                $("#pnl-agent-typing span").css("opacity", "1");
            }
            else if (m.type === "ChasitorSessionData") {
                // todo?
            }
            else if (m.type === "ChatEnded") {
                continueMessageLoop = false;
                setChatWindow(CM.chatended_agent);
                incrementNewMessages();
            }
            else if (m.type === "ChatEstablished") {
                setAgentName(m.message.name);
                setChatWindow(CM.chatting);
                restSetChatBreadcrumb(function (result) { });
                incrementNewMessages();

                if (isMobileTouch()) {
                    messageAppendToChatWindow(MT.warning, TX.warning_mobileconnect);
                }

            }
            else if (m.type === "ChatMessage") {
                setAgentName(m.message.name);
                messageAppendToChatWindow(MT.from_agent, m.message.text);
                $("#pnl-agent-typing span").css("opacity", "0");
                incrementNewMessages();
            }
            else if (m.type === "ChatRequestFail") {
                continueMessageLoop = false;
                setChatWindow(CM.error_initfail);
                incrementNewMessages();
            }
            else if (m.type === "ChatRequestSuccess") {
                SalesforceSessionModule.setVariable(CV.qposition, m.message.queuePosition);
                setQPositionConnecting(m.message.queuePosition);
                incrementNewMessages();
            }
            else if (m.type === "ChatTransferred") {
                setAgentName(m.message.name);
                var text = TX.chatting_transfered.formatString(m.message.name);
                messageAppendToChatWindow(MT.warning, text);
                incrementNewMessages();
            }
            else if (m.type === "QueueUpdate") {
                SalesforceSessionModule.setVariable(CV.qposition, m.message.position);
                setQPositionConnecting(m.message.position);
            }
        });

        return continueMessageLoop;
    }

    /*****************************************************************************************
     * Opschonen chat output.
     */
    clearChatWindow = function () {
        $("#pnl-chatcontrol #pnl-chatpanel #pnl-sfchat-chatting .chat-chatcontent .simplebar-content").html('');
    }


    /*****************************************************************************************
     * Ophalen user.
     * @returns {object} user object
     */
    getCurrentUser = function () {
        if (ChatGlobalSettings.user.isset === false) {
            return null;
        }
        return ChatGlobalSettings.user;
    }


    /*****************************************************************************************
     * Infinite loop ophalen berichten.
     */
    messagePollingLoop = function () {
        if (breakPollingLooop === true) {
            return;
        }
        restGetChatMessages(function (result) {
            // error.
            if (result === undefined || result === false) {
                breakPollingLooop = true;
                setChatWindow(CM.error_retrievemessage);
            }
            else if (result === true) {
                // geen result, wel blijven loopen
                messagePollingLoop();
            }
            else if (result === "duplicate") {
                breakPollingLooop = true;
                // tab inactief
                setActiveTab(false);
                setChatWindow(CM.duplicate);
            }
            else {
                // verwerk berichten
                if (handelChatMessages(result) === true) {
                    messagePollingLoop();
                }
                else {
                    breakPollingLooop = true;
                }
            }
        });
    }


    /*******************************************************************************************************************
    /*******************************************************************************************************************
    *
    * 
    * Publieke functies.
    * 
    */
    return {
        // init
        initSettings: function () {
            CV = ChatGLobalEnums.ChatSesionVariable;
            PT = ChatGLobalEnums.ParseTextTypes;
            TX = ChatGlobalSettings.texts;
            CM = ChatGLobalEnums.ChatModes;
            MT = ChatGLobalEnums.ChatMessageTypes;
        },
        /*****************************************************************************************
         * Reset bij pageload
         */
        initChat: function () {
            var activeTab = sessionStorage.getItem(ChatGlobalSettings.usersession.chatActive);
            // read cookie set windows/chat history
            var mode = SalesforceSessionModule.getVariable(CV.chatmode);
            var domain = SalesforceSessionModule.getVariable(CV.domain);

            if ((mode === CM.chatting || mode === CM.connecting) && activeTab === null && domain === document.domain) {
                mode = CM.duplicate;
                setActiveTab(false);
            }

            if (mode !== undefined) {
                var domainSwitched = (domain !== document.domain);

                if (activeTab !== null || domainSwitched) {

                    setActiveTab(true);

                    if (domain !== document.domain) {
                        SalesforceSessionModule.setVariable(CV.domain, domain);
                    }

                    if (mode === CM.chatting || mode === CM.quit) {
                        refreshAgentName();
                        $("#pnl-chatcontrol #pnl-chatpanel #pnl-sfchat-chatting .chat-chatcontent .simplebar-content").html(getChatHistory());
                        $("#pnl-sfchat-chatting .simplebar-scroll-content").scrollTop($("#pnl-sfchat-chatting .simplebar-scroll-content")[0].scrollHeight);
                        breakPollingLooop = false;
                        messagePollingLoop();
                    }
                    else if (mode === CM.connecting) {
                        $("#txt-userchat-text").html('');
                        var position = SalesforceSessionModule.getVariable(CV.qposition);
                        setQPositionConnecting(position);

                        breakPollingLooop = false;
                        messagePollingLoop();
                    }
                    else {
                        breakPollingLooop = true;
                        SalesforceSessionModule.clearUserSession();
                    }
                }

                var windowopen = SalesforceSessionModule.getVariable(CV.windowopen);

                if (windowopen === true && (activeTab !== null || domainSwitched)) {
                    $("#pnl-chatcontrol").addClass("chatpanel-open");
                    $("#pnl-chatcontrol").addClass("force");

                    setTimeout(function () {
                        $("#pnl-chatcontrol").removeClass("force");
                    }, 50);
                }

                setChatWindow(mode);
            }
        },

        /*****************************************************************************************
        * Check chat mode .
        */
        getChatMode: function () {
            return SalesforceSessionModule.getVariable(CV.chatmode);
        },

        /*****************************************************************************************
        * Check chat mode .
        */
        setLiveChatOvergang: function (agentName) {
            setActiveTab(true);
            setChatWindow(CM.chatting);
            $("#pnl-chatcontrol #btn-chatbutton").show();
            setAgentName(agentName);   
            breakPollingLooop = false;
            messagePollingLoop();

            var mode = sessionStorage.getItem("chatPopupStatus");

            if (mode !== undefined && mode === "open") {
                toggleChatPanel();
            }
        },

        /*****************************************************************************************
         * Check chat beschikbaar.
         * @param {event} callback event
         * @param {cached} caching op server ja/nee
         */
        checkChatAvailability: function (callback, cached) {
            restCheckChatAvailableRequest(function (result) {

                var mode = SalesforceSessionModule.getVariable(CV.chatmode);

                if (result === true || mode === CM.connecting || mode === CM.chatting) {
                    $("#pnl-chatcontrol #btn-chatbutton").show();
                }
                else {
                    $("#pnl-chatcontrol #btn-chatbutton").hide();
                }

                callback(result);
            }, cached);
        },

        /*****************************************************************************************
        *   Start chat button click.
        */
        startChatRequest: function (button) {

            $(button).prop('disabled', true);

            restCheckChatAvailableRequest(function (available) {

                if (available === true) {
                    // send request.
                    restInitChat(getCurrentUser(), function (result) {

                        $(button).prop('disabled', false);

                        if (result === false) {
                            SalesforceSessionModule.clearUserSession();
                            setChatWindow(CM.error_initfail);
                        }
                        else if (result === 406) {
                            SalesforceSessionModule.clearUserSession();
                            setChatWindow(CM.error_init_waitmore);
                        }
                        else {
                            setChatWindow(CM.connecting);
                            SalesforceSessionModule.createUserSession(result.session, 1);
                            breakPollingLooop = false;
                            messagePollingLoop();
                            setActiveTab(true);
                        }
                    });
                }
                else {
                    $(button).prop('disabled', false);
                    SalesforceSessionModule.clearUserSession();
                    setChatWindow(CM.error_notavailable);
                }
            });
        },

        /*****************************************************************************************
         * Chat button click, toggle window of chat starten.
         */
        handleChatButton: function () {
            var activeTab = sessionStorage.getItem(ChatGlobalSettings.usersession.chatActive);

            var mode = SalesforceSessionModule.getVariable(CV.chatmode);

            if (mode === undefined) {

                $("#txt-userchat-text").html('');

                if (isMobile() && isMobileTouch()) {
                    if (!isPortrait()) {
                        $("#pnl-mobile-orientation").show(200);
                        return;
                    }
                }

                clearChatWindow();
                toggleChatPanel();

                setChatWindow(CM.startchat);
            }
            else {
                if (stringStartsWith(mode, "error") && chatPanelVisible()) {
                    SalesforceSessionModule.clearUserSession();
                    toggleChatPanel();
                    return;
                }

                if (isMobile() && isMobileTouch()) {
                    if (!isPortrait()) {
                        $("#pnl-mobile-orientation").show(200);
                        return;
                    }
                }

                if (activeTab === null || activeTab === false) {
                    // niet goed.
                    if (mode === CM.connecting || mode === CM.chatting) {
                        setChatWindow(CM.duplicate);
                    }
                }

                toggleChatPanel();
            }
        },

        /*****************************************************************************************
        * Cancel request.
        */
        cancelChatRequest: function () {
            restExitChat(function (result) { });
            toggleChatPanel();
            breakPollingLooop = true;
            SalesforceSessionModule.clearUserSession();
        },
        /*****************************************************************************************
         * Minimize chat window
         */
        miniMe: function () {
            toggleChatPanel();
        },
        /*****************************************************************************************
         * Exit chat
         */
        exitChat: function () {
            setChatWindow(CM.quit);
        },

        /*****************************************************************************************
         * Verstuur chat bericht door user.
         * @param {string} input html van user.
         */
        sendChatMessage: function (input) {
            var txt_input = $(input).html().trim();

            if (txt_input.length === 0) {
                return;
            }

            var text = parseChatText(txt_input, PT.to_agent);

            restSendChatMessage(text, function (result) {
                if (result.success === true) {
                    // chatwindow
                    messageAppendToChatWindow(MT.from_user, txt_input);
                    $(input).html('');
                }
                else {
                    // error show.
                    // kill chat.
                    breakPollingLooop = true;
                    setChatWindow(CM.error_sendmessage);
                }
            });
        },

        /*****************************************************************************************
         * Smileys parsen tijdens typen + sneakpeek naar agent.
         * @param {string} input html van user.
         */
        parseChatUserInput: function (input) {
            var txt_clean = $(input).html().trim();
            var txt_parse = parseChatText(txt_clean, PT.from_userinput);

            var sendTypingMessage = false;

            var now = new Date();
            if (typingLockTimer !== undefined) {
                var diff = (now.getTime() - typingLockTimer.getTime()) / 1000;
                if (diff > 1) {
                    sendTypingMessage = true;
                    typingLockTimer = now;
                }
            }

            if (sendTypingMessage === true) {
                if (ChatGlobalSettings.enablesneakpeek) {
                    var agent_txt = parseChatText(txt_clean, PT.to_agent);
                    restSendSneakPeek(agent_txt);
                }
            }

            // txt met images vullen.
            if (txt_clean !== txt_parse) {
                $(input).html(txt_parse);
                setCaretAtEnd(input);
                $(input).scrollLeft(10000);
            }
        },

        /*****************************************************************************************
         * Breadcrumb voor agent.
         */
        setBreadCrumb: function () {
            var mode = SalesforceSessionModule.getVariable(CV.chatmode);
            if (mode !== undefined) {
                restSetChatBreadcrumb(function () { });
            }
        },

        /*****************************************************************************************
         * Upload file naar agent.
         * @param {element} file upload element
         */
        uploadFileToAgent: function (item) {
            var token = $(item).attr("data-uploadref");

            if (token === undefined || chatSettingUploadUrl === null) {
                $("#input-chat-upload").val('');

                messageAppendToChatWindow(MT.error, ChatGlobalSettings.texts.upload_error_user);

                restSendChatMessage(ChatGlobalSettings.texts.upload_error_agent, function (result) {
                    if (result === false) {
                        breakPollingLooop = true;
                        setChatWindow(CM.error_upload);
                    }
                });

                $(".chatmessage-uploading", item).fadeOut(500);
                $(".chatmessage-upload-fail", item).fadeIn(500);

                return;
            }
            else {
                var file = $("#input-chat-upload")[0].files[0];

                if (file.size > ChatGlobalSettings.uploadMaxSize) {
                    $("#input-chat-upload").val('');
                    messageAppendToChatWindow(MT.error, ChatGlobalSettings.texts.upload_error_filesize);
                    return;
                }

                var valid = false;

                $.each(ChatGlobalSettings.uploadExtensions, function (i, val) {
                    valid = stringEndsWith(file.name, val);
                    if (valid === true) {
                        return false;
                    }
                });

                if (valid === false) {
                    $("#input-chat-upload").val('');
                    messageAppendToChatWindow(MT.error, ChatGlobalSettings.texts.upload_error_filetype);
                    return;
                }

                $(".chatmessage-upload-button", item).fadeOut(500);
                $(".chatmessage-uploading", item).fadeIn(500);

                restUploadFile(chatSettingUploadUrl, file, token, function (result) {
                    $("#input-chat-upload").val('');
                    $(".chatmessage-uploading", item).fadeOut(500);

                    if (result === 200) {
                        $(".chatmessage-upload-ok", item).fadeIn(500);
                        messageAppendToChatWindow(MT.success, ChatGlobalSettings.texts.upload_succes);

                        if (isIPhoneOrIPad()) {
                            messagePollingLoop();
                        }
                    }
                    else {

                        $(".chatmessage-upload-fail", item).fadeIn(500);

                        var msgUser = ChatGlobalSettings.texts.upload_error_user;
                        var msgAgent = ChatGlobalSettings.texts.upload_error_agent;

                        if (result === 406) {
                            msgUser = ChatGlobalSettings.texts.upload_error_user_virusfile;
                            msgAgent = ChatGlobalSettings.texts.upload_error_agent_virusfile;
                        }

                        messageAppendToChatWindow(MT.error, msgUser);

                        restSendChatMessage(msgAgent, function (result) {
                            if (result === false) {
                                breakPollingLooop = true;
                                setChatWindow(CM.error_upload);
                            }
                        });
                    }
                });
            }
        },

        /*****************************************************************************************
        * Exit chat.
        */
        exitChatConfirm: function () {
            breakPollingLooop = true;
            restExitChat(function (result) {
            });

            setChatWindow(CM.chatended_user);
        },

        /*****************************************************************************************
        * Annuleren exit chat
        */
        exitChatCancel: function () {
            setChatWindow(CM.chatting);
        },

        /*****************************************************************************************
        * Retry chat
        */
        retry: function () {
            SalesforceSessionModule.clearUserSession();

            restCheckChatAvailableRequest(function (available) {
                if (available === true) {
                    setChatWindow(CM.connecting);
                    restInitChat(getCurrentUser(), function (result) {
                        if (result === false) {
                            setChatWindow(CM.error_initfail);
                        }
                        else {
                            SalesforceSessionModule.createUserSession(result.session, 1);
                            breakPollingLooop = false;
                            messagePollingLoop();
                        }
                    });
                }
                else {
                    setChatWindow(CM.error_notavailable);
                }
            });
        },

        /*****************************************************************************************
        * Downloaden van transcript
        */
        download: function () {
            var chatlog = getTranscriptText();

            if (chatlog) {
                if (browserIsIE() === true) {
                    var transcript = new Blob([chatlog], { type: 'text/plain' });
                    window.navigator.msSaveBlob(transcript, "Chatlog.txt");
                }
                else {
                    var element = document.createElement('a');
                    element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(chatlog));
                    element.setAttribute('download', "Chatlog.txt");

                    element.style.display = 'none';
                    document.body.appendChild(element);

                    element.click();
                    document.body.removeChild(element);
                }
            }
        },

        /*****************************************************************************************
        * Afsluiten en sluiten chat.
        */
        quit: function () {
            SalesforceSessionModule.clearUserSession();
            toggleChatPanel();
        },

        /*****************************************************************************************
        * Focus input
        */
        setFocusChatInput: function () {
            setFocusUserChatInput();
        },

        /*****************************************************************************************
        * Juiste weergave, landscape niet voor mobile toestaan
        */
        checkMobileStatus: function () {
            if (isMobile() && isMobileTouch()) {
                if (isPortrait()) {
                    $("#pnl-mobile-orientation").hide(200);
                }
                else {
                    if (chatPanelVisible()) {
                        toggleChatPanel();
                        $("#pnl-mobile-orientation").show(200);
                    }
                }
            }
        }
    };
});;
'use strict';

/// <reference path="chatcontrol-settings.js" />
/// <reference path="chatcontrol-helpers.js" />


function generateChatRestTimeStamp(url) {
    return url + "?dt=" + new Date().getTime();
}

function parseResult(input) {
    try {
        return $.parseJSON(input);
    } catch (e) {
        return null;
    }
}

var getMessageRestRequest = null;

/*****************************************************************************************
 *  Init details request aanvullen.
 * @param {object} user gegevens.
 * @param {object} salesforce request object
 */
function restAppendChatDetailsRequest(user, reqObj) {
    reqObj.prechatDetails.push({
        "label": "Chat_Origin",
        "value": "Chat",
        "entityMaps": [
            {
                "entityName": "Contact",
                "fieldName": "Origin"
            }
        ],
        "transcriptFields": [
            "caseOrigin__c"
        ],
        "displayToAgent": true
    });

    reqObj.prechatDetails.push({
        "label": "Label",
        "value": ChatGlobalSettings.label,
        "entityMaps": [
            {
                "entityName": "Case",
                "fieldName": "Label__c"
            }
        ],
        "transcriptFields": [
            "Label__c"
        ],
        "displayToAgent": true
    });


    reqObj.prechatDetails.push({
        "label": "IP Adres",
        "value": $("#hf-client-address").val(),
        "entityMaps": [],
        "transcriptFields": [],
        "displayToAgent": true
    });

    reqObj.prechatDetails.push({
        "label": "Description",
        "value": "Chat via " + ChatGlobalSettings.label,
        "entityMaps": [
            {
                "entityName": "Case",
                "fieldName": "Description"
            }
        ],
        "transcriptFields": [
            "description__c"
        ],
        "displayToAgent": true
    });

    reqObj.prechatEntities.push({
        "entityName": "Case",
        "showOnCreate": true,
        "saveToTranscript": "Case",
        "entityFieldsMaps": [
            {
                "fieldName": "Origin",
                "label": "Chat_Origin",
                "doFind": false,
                "isExactMatch": false,
                "doCreate": true
            },
            {
                "fieldName": "Description",
                "label": "Description",
                "doFind": false,
                "isExactMatch": false,
                "doCreate": true
            },
            {
                "fieldName": "Label__c",
                "label": "Label",
                "doFind": false,
                "isExactMatch": false,
                "doCreate": true
            }
        ]
    });

    // account
    if (user !== null) {

        reqObj.prechatDetails.push({
            "label": "ClientNumber",
            "value": user.relnr,
            "entityMaps": [],
            "transcriptFields": [],
            "displayToAgent": true,
            "doKnowledgeSearch": false
        });

        reqObj.prechatEntities.push({
            "entityName": "Contact",
            "saveToTranscript": "ContactId",
            "showOnCreate": false,
            "linkToEntityName": "Case",
            "linkToEntityField": "ContactId",
            "entityFieldsMaps":
                [
                    {
                        "fieldName": "Client_Number__c",
                        "label": "ClientNumber",
                        "doFind": true,
                        "isExactMatch": true,
                        "doCreate": false
                    }
                ]
        });

        reqObj.prechatEntities.push({
            "entityName": "Account",
            "saveToTranscript": "AccountId",
            "showOnCreate": true,
            "linkToEntityName": "Case",
            "linkToEntityField": "AccountId",
            "entityFieldsMaps":
                [
                    {
                        "fieldName": "Client_Number__c",
                        "label": "ClientNumber",
                        "doFind": true,
                        "isExactMatch": true,
                        "doCreate": false
                    }
                ]
        });
    }
}


/*****************************************************************************************
 * afhandeling bij redirect/refresh
 * @param {object} xhr object request.
 * @returns {bool} aborted ja/nee?
 */
function requestAbortedByUser(xhr) {
    return !xhr.getAllResponseHeaders();
}

/*****************************************************************************************
 * Chat available ja/nee?
 * @param {event} callbackmethod. boolean
 * @param {cached} waarde uit cache ja/nee. boolean
 */
function restCheckChatAvailableRequest(callbackMethod, cached) {

    var sf = ChatGlobalSettings.salesforce;

    var req = {
        req: {
            IsPost: false,
            Method: cached === true ? "Visitor/AvailabilityCached" : "Visitor/Availability"
        }
    };

    $.ajax({
        type: "POST",
        cache: false,
        url: generateChatRestTimeStamp(ProxyServiceURL),
        contentType: "application/json; charset=utf-8",
        dataType: 'json',
        data: JSON.stringify(req),
        success: function (proxyresult, status, xhr) {

            if (xhr.status !== 200) {
                callbackMethod(false);
            }
            else {
                var data = parseResult(proxyresult.ResultJSON);
                var isAvailable = false;

                $.each(data.messages, function (i, value) {
                    if (value.type === "Availability" && value.message !== null) {
                        $.each(value.message.results, function (j, result) {
                            if (result.isAvailable === true) {
                                isAvailable = true;
                            }
                        });
                    }
                });

                callbackMethod(isAvailable);
            }
        },
        error: function (xhr, statusText, err) {
            callbackMethod(false);
        }
    });
}


/*****************************************************************************************
 * Chat available ja/nee?
 */
function restGetVisitorID(callbackMethod) {

    var sf = ChatGlobalSettings.salesforce;

    var req = {
        req: {
            IsPost: false,
            Method: "Visitor/VisitorId"
        }
    };

    $.ajax({
        type: "POST",
        cache: false,
        url: generateChatRestTimeStamp(ProxyServiceURL),
        contentType: "application/json; charset=utf-8",
        dataType: 'json',
        data: JSON.stringify(req),
        success: function (proxyresult, status, xhr) {

            var data = parseResult(proxyresult.ResultJSON);

            if (xhr.status === 200) {
                try {
                    var session = data.messages[0].message.sessionId;
                    callbackMethod(session);
                }
                catch (e) {
                    callbackMethod(false);
                }
            }
            else {
                callbackMethod(false);
            }
        },
        error: function (xhr, statusText, err) {
            callbackMethod(false);
        }
    });
}

/*****************************************************************************************
 * Init chat met gegevens.
 */
function restInitChat(user, callbackMethod) {
    var sf = ChatGlobalSettings.salesforce;

    var reqObj = {
        userAgent: navigator.userAgent,
        screenResolution: helperGetResolution(),
        visitorName: "",
        prechatDetails: [],
        prechatEntities: [],
        receiveQueueUpdates: true,
        isPost: true,
        trackingId: ""
    };

    // add data..
    restAppendChatDetailsRequest(user, reqObj);

    var req = {
        req: {
            IsPost: false,
            Method: "System/SessionId"
        }
    };

    $.ajax({
        type: "POST",
        cache: false,
        url: generateChatRestTimeStamp(ProxyServiceURL),
        contentType: "application/json; charset=utf-8",
        dataType: 'json',
        data: JSON.stringify(req),
        success: function (proxyresult, status_session, xhr) {
            // niet goed.
            if (xhr.status !== 200) {
                callbackMethod(false);
                return;
            }

            var session = parseResult(proxyresult.ResultJSON);

            // set sessionID
            reqObj.sessionId = session.id;

            var reqInit = {
                req: {
                    IsPost: true,
                    Method: "Chasitor/ChasitorInit",
                    RequestJSON: JSON.stringify(reqObj),
                    HeaderSequence: "1",
                    HeaderAffinity: session.affinityToken,
                    HeaderSessionKey: session.key
                }
            };

            // use session to init request.
            $.ajax({
                type: "POST",
                cache: false,
                url: generateChatRestTimeStamp(ProxyServiceURL),
                contentType: "application/json; charset=utf-8",
                dataType: 'json',
                data: JSON.stringify(reqInit),
                success: function (init, status_init, xhrInit) {
                    if (xhrInit.status === 200) {
                        if (init.ResultCode === 200) {
                            callbackMethod({ session: session, success: true });
                        }
                        else {
                            callbackMethod(false);
                        }
                    }
                    else {
                        callbackMethod(false);
                    }
                },
                error: function (xhr, status_init, err) {
                    if (xhr.status === 406) {
                        callbackMethod(406);
                    }
                    else {
                        callbackMethod(false);
                    }
                }
            });
        },
        error: function (xhr, status, err) {
            callbackMethod(false);
        }
    });
}

/*****************************************************************************************
 * Polling loop voor berichten van server.
 */
function restGetChatMessages(callbackMethod) {

    var sf = ChatGlobalSettings.salesforce;
    var session = SalesforceSessionModule.getSalesforceSession();

    // fout
    if (session === undefined || session === null) {
        callbackMethod(false);
        return;
    }

    var req = {
        req: {
            IsPost: false,
            Method: "System/Messages",
            HeaderAffinity: session.affinityToken,
            HeaderSessionKey: session.key
        }
    };

    getMessageRestRequest = $.ajax({
        type: "POST",
        cache: false,
        url: generateChatRestTimeStamp(ProxyServiceURL),
        contentType: "application/json; charset=utf-8",
        dataType: 'json',
        data: JSON.stringify(req),
        success: function (proxyresult, textStatus, xhr) {
            if (xhr.status === 200) {
                try {
                    if (proxyresult.ResultCode === 200) {
                        var data = parseResult(proxyresult.ResultJSON);
                        callbackMethod(data);
                    }
                    else if (proxyresult.ResultCode === 204) {
                        callbackMethod(true);
                    }
                    else if (proxyresult.ResultCode === 409) {
                        callbackMethod("duplicate");
                    }
                    else {
                        callbackMethod(false);
                    }
                }
                catch (e) {
                    callbackMethod(false);
                }
            }
            else {
                callbackMethod(false);
            }
        },
        error: function (xhr, statusText, err) {
            if (!requestAbortedByUser(xhr)) {
                callbackMethod(false);
            }
        }
    });
}

/*****************************************************************************************
 * Chat afsluiten.
 */
function restExitChat(callbackMethod) {

    var sf = ChatGlobalSettings.salesforce;
    var session = SalesforceSessionModule.getSalesforceSession();

    // fout
    if (session === undefined || session === null) {
        return;
    }

    var req = {
        req: {
            IsPost: true,
            Method: "Chasitor/ChatEnd",
            HeaderAffinity: session.affinityToken,
            HeaderSessionKey: session.key,
            HeaderSequence: SalesforceSessionModule.getSequenceNumber(),
            RequestJSON: JSON.stringify({ reason: "client" })
        }
    };

    $.ajax({
        type: "POST",
        cache: false,
        url: generateChatRestTimeStamp(ProxyServiceURL),
        contentType: "application/json; charset=utf-8",
        dataType: 'json',
        data: JSON.stringify(req),
        success: function (data, status, xhr) {
            callbackMethod(xhr.status === 200 && data.ResultCode === 200);
        },
        error: function (xhr, status, err) {
            callbackMethod(false);
        }
    });
}

/*****************************************************************************************
 * Breadcrumb voor tracking
 */
function restSetChatBreadcrumb(callbackMethod) {

    var sf = ChatGlobalSettings.salesforce;
    var session = SalesforceSessionModule.getSalesforceSession();

    if (session === undefined) {
        callbackMethod(false);
        return;
    }

    var req = {
        req: {
            IsPost: true,
            SessionID: session.id,
            Method: "Visitor/Breadcrumb",
            RequestJSON: JSON.stringify({ location: window.location.href })
        }
    };

    $.ajax({
        type: "POST",
        cache: false,
        url: generateChatRestTimeStamp(ProxyServiceURL),
        contentType: "application/json; charset=utf-8",
        dataType: 'json',
        data: JSON.stringify(req),
        success: function (data, status, xhr) {
            callbackMethod(xhr.status === 200 && data.ResultCode === 200);
        },
        error: function (xhr, status, err) {
            callbackMethod(false);
        }
    });
}

/*****************************************************************************************
 * Sneakpeek voor agent.
 */
function restSendSneakPeek(text) {

    var sf = ChatGlobalSettings.salesforce;
    var session = SalesforceSessionModule.getSalesforceSession();

    if (session === undefined || text === undefined || text === null || text.length === 0) {
        return;
    }

    var peek = {
        text: text,
        position: 0
    };

    var req = {
        req: {
            IsPost: true,
            Method: "Chasitor/ChasitorSneakPeek",
            HeaderAffinity: session.affinityToken,
            HeaderSessionKey: session.key,
            RequestJSON: JSON.stringify(peek)
        }
    };

    $.ajax({
        type: "POST",
        cache: false,
        url: generateChatRestTimeStamp(ProxyServiceURL),
        contentType: "application/json; charset=utf-8",
        dataType: 'json',
        data: JSON.stringify(req),
        error: function (xhr, statusText, err) {
            console.log("fail:  chat peek.");
        }
    });

}

/*****************************************************************************************
 * User is typing voor agent.
 */
function restSendTypingMessage() {

    var sf = ChatGlobalSettings.salesforce;
    var session = SalesforceSessionModule.getSalesforceSession();

    if (session === undefined) {
        return;
    }

    var req = {
        req: {
            IsPost: true,
            Method: "Chasitor/ChasitorTyping",
            HeaderAffinity: session.affinityToken,
            HeaderSessionKey: session.key
        }
    };

    $.ajax({
        type: "POST",
        cache: false,
        url: generateChatRestTimeStamp(ProxyServiceURL),
        contentType: "application/json; charset=utf-8",
        dataType: 'json',
        data: JSON.stringify(req),
        error: function (xhr, statusText, err) {
            console.log("fail:  chat peek fail.");
        }
    });

}

/*****************************************************************************************
 * Uploaden van file naar backoffice
 */
function restUploadFile(uploadUrl, file, token, callbackMethod) {

    try {
        var sf = ChatGlobalSettings.salesforce;
        var session = SalesforceSessionModule.getSalesforceSession();

        if (session === undefined) {
            callbackMethod(false);
            return;
        }

        var xhr = new XMLHttpRequest();
        xhr.file = file;

        xhr.onreadystatechange = function (e) {
            if (this.readyState === 4) {
                try {
                    var json = $.parseJSON(e.target.responseText);

                    callbackMethod(this.status === 200 && json.ResultCode === 200 ? 200 : this.status);
                }
                catch (e) {
                    callbackMethod(this.status);
                }
            }
        };

        xhr.open("POST", ProxyServiceUploadURL, true);
        var formData = new FormData();
        formData.append("file", file);
        formData.append("filename", file.name);
        formData.append("filetype", file.type);
        formData.append("uploadurl", uploadUrl);
        formData.append("chatKey", session.id);
        formData.append("filetoken", token);
        xhr.send(formData);
    }
    catch (e) {
        callbackMethod(false);
    }
}

/*****************************************************************************************
 * Sturen bericht naar server
 */
function restSendChatMessage(txt, callbackMethod) {

    var sf = ChatGlobalSettings.salesforce;
    var session = SalesforceSessionModule.getSalesforceSession();

    if (session === undefined || session === null) {
        callbackMethod({ success: false });
        return;
    }

    var req = {
        req: {
            IsPost: true,
            Method: "Chasitor/ChatMessage",
            HeaderAffinity: session.affinityToken,
            HeaderSessionKey: session.key,
            HeaderSequence: SalesforceSessionModule.getSequenceNumber(),
            RequestJSON: JSON.stringify({ text: txt }),
        }
    };

    $.ajax({
        type: "POST",
        cache: false,
        url: generateChatRestTimeStamp(ProxyServiceURL),
        contentType: "application/json; charset=utf-8",
        dataType: 'json',
        data: JSON.stringify(req),
        success: function (data, textStatus, xhr) {
            callbackMethod({ success: xhr.status === 200 && data.ResultCode === 200 });
        },
        error: function (xhr, statusText, err) {
            callbackMethod({ success: false });
        }
    });
};
/*****************************************************************************************
 * Global Chat enum variables.
 */
var ChatGLobalEnums = Object.freeze({
    ChatModes: {
        startchat: "startchat",
        connecting: "connecting",
        chatting: "chatting",
        chatended_user: "chatended_user",
        chatended_agent: "chatended_agent",
        chatended_disconnect: "chatended_disconnect",
        quit: "quit",
        error_generic: "error_generic",
        error_retrievemessage: "error_retrievemessage",
        error_initfail: "error_initfail",
        error_init_waitmore: "error_init_waitmore",
        error_sendmessage: "error_sendmessage",
        error_upload: "error_upload",
        error_notavailable: "error_notavailable",
        duplicate: "duplicate"
    },
    ChatMessageTypes: {
        from_user: 0,
        from_agent: 1,
        upload_request: 2,
        message: 3,
        warning: 4,
        error: 5,
        success: 6
    },
    ParseTextTypes: {
        from_userinput: 0,
        to_chatwindow: 1,
        to_agent: 2,
        to_transcript: 3,
        to_history: 4,
    },
    ChatSesionVariable: {
        agentname: 0,
        chatmode: 1,
        sequence: 2,
        unreadcount: 3,
        visitorid: 4,
        qposition: 5,
        windowopen: 6,
        domain: 7,
    }
});


var ProxyServiceURL = null;
var ProxyServiceURL = null;
var ProxyServiceUploadURL = null;


/*****************************************************************************************
 * Chat smiley mappings voor chat.
 */
var ChatSmileMapping = Object.freeze({

    smile: {
        codes: [":-)", ":)"],
        faclass: "chaticon-smiley"
    },
    meh: {
        codes: [":-|", ":|"],
        faclass: "chaticon-meh"
    },
    sad: {
        codes: [":-(", ":("],
        faclass: "chaticon-sad"
    },
    heart: {
        codes: ["<3", "&lt;3"],
        faclass: "chaticon-heart"
    },
    thumbup: {
        codes: ["[tu]"],
        faclass: "chaticon-thumbup"
    },
    thumbdown: {
        codes: ["[td]"],
        faclass: "chaticon-thumbdown"
    },


});

/*****************************************************************************************
 * Module voor settings..
 */
SalesforceSessionModule = (new function () {

    var cookieName = null;

    getChatDomain = function () {
        var splitted = document.domain.split(".");

        if (splitted.length === 1) {
            return splitted[0];
        }

        return "." + splitted[splitted.length - 2] + "." + splitted[splitted.length - 1];
    };

    return {
        /*****************************************************************************************
         * init
         */
        initSettings: function () {
            cookieName = ChatGlobalSettings.usersession.cookieName;
        },

        /*****************************************************************************************
        * clear alle user setting data.
        */
        clearUserSession: function () {
            var domain = getChatDomain();
            Cookies.remove(ChatGlobalSettings.usersession.cookieName, { secure: true, domain: domain });
            sessionStorage.removeItem(ChatGlobalSettings.usersession.transcriptName);
            sessionStorage.removeItem(ChatGlobalSettings.usersession.historyName);
            sessionStorage.removeItem(ChatGlobalSettings.usersession.chatActive);

            if (getMessageRestRequest !== null) {
                try {
                    getMessageRestRequest.abort();
                }
                catch (e) {

                }
            }
        },
        /*****************************************************************************************
        * aanmaken user session
        */
        createUserSession: function (session, sequenceNumber) {
            this.clearUserSession();
            var cookie = {
                session: session,
                chatmode: ChatGLobalEnums.ChatModes.connecting,
                sequenceNumber: sequenceNumber,
                agentname: null,
                qposition: null,
                windowopen: true,
                domain: document.domain
            };

            var domain = getChatDomain();
            Cookies.set(cookieName, cookie, { secure: true, domain: domain });
        },
        /*****************************************************************************************
        * salesforce session uit cookie halen.
        */
        getSalesforceSession: function () {
            var cookie = Cookies.getJSON(cookieName);
            if (cookie !== undefined) {
                return cookie.session;
            }
            return undefined;
        },
        /*****************************************************************************************
        *  sesquence nummer voor rest calls salesforce.
        */
        getSequenceNumber: function () {
            var key = ChatGLobalEnums.ChatSesionVariable.sequence;
            var number = this.getVariable(key);
            number = number + 1;
            this.setVariable(key, number);
            return number;
        },
        /*****************************************************************************************
        * set variable in cookie
        */
        setVariable: function (key, value) {
            var cookie = Cookies.getJSON(cookieName);

            if (cookie === undefined) {
                return;
            }
            if (key === ChatGLobalEnums.ChatSesionVariable.chatmode) {
                cookie.chatmode = value;
            }
            else if (key === ChatGLobalEnums.ChatSesionVariable.agentname) {
                cookie.agentname = value;
            }
            else if (key === ChatGLobalEnums.ChatSesionVariable.sequence) {
                cookie.sequenceNumber = value;
            }
            else if (key === ChatGLobalEnums.ChatSesionVariable.unreadcount) {
                cookie.unreadcount = value;
            }
            else if (key === ChatGLobalEnums.ChatSesionVariable.qposition) {
                cookie.qposition = value;
            }
            else if (key === ChatGLobalEnums.ChatSesionVariable.windowopen) {
                cookie.windowopen = value;
            }
            else if (key === ChatGLobalEnums.ChatSesionVariable.domain) {
                cookie.domain = value;
            }

            var domain = getChatDomain();
            Cookies.set(cookieName, cookie, { secure: true, domain: domain });
        },
        /*****************************************************************************************
        * ophalen variable uit cookie.
        */
        getVariable: function (key) {
            var cookie = Cookies.getJSON(cookieName);
            if (cookie === undefined) {
                return undefined;
            }
            if (key === ChatGLobalEnums.ChatSesionVariable.chatmode) {
                return cookie.chatmode;
            }
            else if (key === ChatGLobalEnums.ChatSesionVariable.agentname) {
                return cookie.agentname;
            }
            else if (key === ChatGLobalEnums.ChatSesionVariable.sequence) {
                return cookie.sequenceNumber;
            }
            else if (key === ChatGLobalEnums.ChatSesionVariable.unreadcount) {
                return cookie.unreadcount;
            }
            else if (key === ChatGLobalEnums.ChatSesionVariable.qposition) {
                return cookie.qposition;
            }
            else if (key === ChatGLobalEnums.ChatSesionVariable.windowopen) {
                return cookie.windowopen;
            }
            else if (key === ChatGLobalEnums.ChatSesionVariable.domain) {
                return cookie.domain;
            }
            return undefined;
        }
    }
});

;
/*!
 * @fileOverview TouchSwipe - jQuery Plugin
 * @version 1.6.18
 *
 * @author Matt Bryson http://www.github.com/mattbryson
 * @see https://github.com/mattbryson/TouchSwipe-Jquery-Plugin
 * @see http://labs.rampinteractive.co.uk/touchSwipe/
 * @see http://plugins.jquery.com/project/touchSwipe
 * @license
 * Copyright (c) 2010-2015 Matt Bryson
 * Dual licensed under the MIT or GPL Version 2 licenses.
 *
 */
!function(factory){"function"==typeof define&&define.amd&&define.amd.jQuery?define(["jquery"],factory):factory("undefined"!=typeof module&&module.exports?require("jquery"):jQuery)}(function($){"use strict";function init(options){return!options||void 0!==options.allowPageScroll||void 0===options.swipe&&void 0===options.swipeStatus||(options.allowPageScroll=NONE),void 0!==options.click&&void 0===options.tap&&(options.tap=options.click),options||(options={}),options=$.extend({},$.fn.swipe.defaults,options),this.each(function(){var $this=$(this),plugin=$this.data(PLUGIN_NS);plugin||(plugin=new TouchSwipe(this,options),$this.data(PLUGIN_NS,plugin))})}function TouchSwipe(element,options){function touchStart(jqEvent){if(!(getTouchInProgress()||$(jqEvent.target).closest(options.excludedElements,$element).length>0)){var event=jqEvent.originalEvent?jqEvent.originalEvent:jqEvent;if(!event.pointerType||"mouse"!=event.pointerType||0!=options.fallbackToMouseEvents){var ret,touches=event.touches,evt=touches?touches[0]:event;return phase=PHASE_START,touches?fingerCount=touches.length:options.preventDefaultEvents!==!1&&jqEvent.preventDefault(),distance=0,direction=null,currentDirection=null,pinchDirection=null,duration=0,startTouchesDistance=0,endTouchesDistance=0,pinchZoom=1,pinchDistance=0,maximumsMap=createMaximumsData(),cancelMultiFingerRelease(),createFingerData(0,evt),!touches||fingerCount===options.fingers||options.fingers===ALL_FINGERS||hasPinches()?(startTime=getTimeStamp(),2==fingerCount&&(createFingerData(1,touches[1]),startTouchesDistance=endTouchesDistance=calculateTouchesDistance(fingerData[0].start,fingerData[1].start)),(options.swipeStatus||options.pinchStatus)&&(ret=triggerHandler(event,phase))):ret=!1,ret===!1?(phase=PHASE_CANCEL,triggerHandler(event,phase),ret):(options.hold&&(holdTimeout=setTimeout($.proxy(function(){$element.trigger("hold",[event.target]),options.hold&&(ret=options.hold.call($element,event,event.target))},this),options.longTapThreshold)),setTouchInProgress(!0),null)}}}function touchMove(jqEvent){var event=jqEvent.originalEvent?jqEvent.originalEvent:jqEvent;if(phase!==PHASE_END&&phase!==PHASE_CANCEL&&!inMultiFingerRelease()){var ret,touches=event.touches,evt=touches?touches[0]:event,currentFinger=updateFingerData(evt);if(endTime=getTimeStamp(),touches&&(fingerCount=touches.length),options.hold&&clearTimeout(holdTimeout),phase=PHASE_MOVE,2==fingerCount&&(0==startTouchesDistance?(createFingerData(1,touches[1]),startTouchesDistance=endTouchesDistance=calculateTouchesDistance(fingerData[0].start,fingerData[1].start)):(updateFingerData(touches[1]),endTouchesDistance=calculateTouchesDistance(fingerData[0].end,fingerData[1].end),pinchDirection=calculatePinchDirection(fingerData[0].end,fingerData[1].end)),pinchZoom=calculatePinchZoom(startTouchesDistance,endTouchesDistance),pinchDistance=Math.abs(startTouchesDistance-endTouchesDistance)),fingerCount===options.fingers||options.fingers===ALL_FINGERS||!touches||hasPinches()){if(direction=calculateDirection(currentFinger.start,currentFinger.end),currentDirection=calculateDirection(currentFinger.last,currentFinger.end),validateDefaultEvent(jqEvent,currentDirection),distance=calculateDistance(currentFinger.start,currentFinger.end),duration=calculateDuration(),setMaxDistance(direction,distance),ret=triggerHandler(event,phase),!options.triggerOnTouchEnd||options.triggerOnTouchLeave){var inBounds=!0;if(options.triggerOnTouchLeave){var bounds=getbounds(this);inBounds=isInBounds(currentFinger.end,bounds)}!options.triggerOnTouchEnd&&inBounds?phase=getNextPhase(PHASE_MOVE):options.triggerOnTouchLeave&&!inBounds&&(phase=getNextPhase(PHASE_END)),phase!=PHASE_CANCEL&&phase!=PHASE_END||triggerHandler(event,phase)}}else phase=PHASE_CANCEL,triggerHandler(event,phase);ret===!1&&(phase=PHASE_CANCEL,triggerHandler(event,phase))}}function touchEnd(jqEvent){var event=jqEvent.originalEvent?jqEvent.originalEvent:jqEvent,touches=event.touches;if(touches){if(touches.length&&!inMultiFingerRelease())return startMultiFingerRelease(event),!0;if(touches.length&&inMultiFingerRelease())return!0}return inMultiFingerRelease()&&(fingerCount=fingerCountAtRelease),endTime=getTimeStamp(),duration=calculateDuration(),didSwipeBackToCancel()||!validateSwipeDistance()?(phase=PHASE_CANCEL,triggerHandler(event,phase)):options.triggerOnTouchEnd||options.triggerOnTouchEnd===!1&&phase===PHASE_MOVE?(options.preventDefaultEvents!==!1&&jqEvent.cancelable!==!1&&jqEvent.preventDefault(),phase=PHASE_END,triggerHandler(event,phase)):!options.triggerOnTouchEnd&&hasTap()?(phase=PHASE_END,triggerHandlerForGesture(event,phase,TAP)):phase===PHASE_MOVE&&(phase=PHASE_CANCEL,triggerHandler(event,phase)),setTouchInProgress(!1),null}function touchCancel(){fingerCount=0,endTime=0,startTime=0,startTouchesDistance=0,endTouchesDistance=0,pinchZoom=1,cancelMultiFingerRelease(),setTouchInProgress(!1)}function touchLeave(jqEvent){var event=jqEvent.originalEvent?jqEvent.originalEvent:jqEvent;options.triggerOnTouchLeave&&(phase=getNextPhase(PHASE_END),triggerHandler(event,phase))}function removeListeners(){$element.unbind(START_EV,touchStart),$element.unbind(CANCEL_EV,touchCancel),$element.unbind(MOVE_EV,touchMove),$element.unbind(END_EV,touchEnd),LEAVE_EV&&$element.unbind(LEAVE_EV,touchLeave),setTouchInProgress(!1)}function getNextPhase(currentPhase){var nextPhase=currentPhase,validTime=validateSwipeTime(),validDistance=validateSwipeDistance(),didCancel=didSwipeBackToCancel();return!validTime||didCancel?nextPhase=PHASE_CANCEL:!validDistance||currentPhase!=PHASE_MOVE||options.triggerOnTouchEnd&&!options.triggerOnTouchLeave?!validDistance&&currentPhase==PHASE_END&&options.triggerOnTouchLeave&&(nextPhase=PHASE_CANCEL):nextPhase=PHASE_END,nextPhase}function triggerHandler(event,phase){var ret,touches=event.touches;return(didSwipe()||hasSwipes())&&(ret=triggerHandlerForGesture(event,phase,SWIPE)),(didPinch()||hasPinches())&&ret!==!1&&(ret=triggerHandlerForGesture(event,phase,PINCH)),didDoubleTap()&&ret!==!1?ret=triggerHandlerForGesture(event,phase,DOUBLE_TAP):didLongTap()&&ret!==!1?ret=triggerHandlerForGesture(event,phase,LONG_TAP):didTap()&&ret!==!1&&(ret=triggerHandlerForGesture(event,phase,TAP)),phase===PHASE_CANCEL&&touchCancel(event),phase===PHASE_END&&(touches?touches.length||touchCancel(event):touchCancel(event)),ret}function triggerHandlerForGesture(event,phase,gesture){var ret;if(gesture==SWIPE){if($element.trigger("swipeStatus",[phase,direction||null,distance||0,duration||0,fingerCount,fingerData,currentDirection]),options.swipeStatus&&(ret=options.swipeStatus.call($element,event,phase,direction||null,distance||0,duration||0,fingerCount,fingerData,currentDirection),ret===!1))return!1;if(phase==PHASE_END&&validateSwipe()){if(clearTimeout(singleTapTimeout),clearTimeout(holdTimeout),$element.trigger("swipe",[direction,distance,duration,fingerCount,fingerData,currentDirection]),options.swipe&&(ret=options.swipe.call($element,event,direction,distance,duration,fingerCount,fingerData,currentDirection),ret===!1))return!1;switch(direction){case LEFT:$element.trigger("swipeLeft",[direction,distance,duration,fingerCount,fingerData,currentDirection]),options.swipeLeft&&(ret=options.swipeLeft.call($element,event,direction,distance,duration,fingerCount,fingerData,currentDirection));break;case RIGHT:$element.trigger("swipeRight",[direction,distance,duration,fingerCount,fingerData,currentDirection]),options.swipeRight&&(ret=options.swipeRight.call($element,event,direction,distance,duration,fingerCount,fingerData,currentDirection));break;case UP:$element.trigger("swipeUp",[direction,distance,duration,fingerCount,fingerData,currentDirection]),options.swipeUp&&(ret=options.swipeUp.call($element,event,direction,distance,duration,fingerCount,fingerData,currentDirection));break;case DOWN:$element.trigger("swipeDown",[direction,distance,duration,fingerCount,fingerData,currentDirection]),options.swipeDown&&(ret=options.swipeDown.call($element,event,direction,distance,duration,fingerCount,fingerData,currentDirection))}}}if(gesture==PINCH){if($element.trigger("pinchStatus",[phase,pinchDirection||null,pinchDistance||0,duration||0,fingerCount,pinchZoom,fingerData]),options.pinchStatus&&(ret=options.pinchStatus.call($element,event,phase,pinchDirection||null,pinchDistance||0,duration||0,fingerCount,pinchZoom,fingerData),ret===!1))return!1;if(phase==PHASE_END&&validatePinch())switch(pinchDirection){case IN:$element.trigger("pinchIn",[pinchDirection||null,pinchDistance||0,duration||0,fingerCount,pinchZoom,fingerData]),options.pinchIn&&(ret=options.pinchIn.call($element,event,pinchDirection||null,pinchDistance||0,duration||0,fingerCount,pinchZoom,fingerData));break;case OUT:$element.trigger("pinchOut",[pinchDirection||null,pinchDistance||0,duration||0,fingerCount,pinchZoom,fingerData]),options.pinchOut&&(ret=options.pinchOut.call($element,event,pinchDirection||null,pinchDistance||0,duration||0,fingerCount,pinchZoom,fingerData))}}return gesture==TAP?phase!==PHASE_CANCEL&&phase!==PHASE_END||(clearTimeout(singleTapTimeout),clearTimeout(holdTimeout),hasDoubleTap()&&!inDoubleTap()?(doubleTapStartTime=getTimeStamp(),singleTapTimeout=setTimeout($.proxy(function(){doubleTapStartTime=null,$element.trigger("tap",[event.target]),options.tap&&(ret=options.tap.call($element,event,event.target))},this),options.doubleTapThreshold)):(doubleTapStartTime=null,$element.trigger("tap",[event.target]),options.tap&&(ret=options.tap.call($element,event,event.target)))):gesture==DOUBLE_TAP?phase!==PHASE_CANCEL&&phase!==PHASE_END||(clearTimeout(singleTapTimeout),clearTimeout(holdTimeout),doubleTapStartTime=null,$element.trigger("doubletap",[event.target]),options.doubleTap&&(ret=options.doubleTap.call($element,event,event.target))):gesture==LONG_TAP&&(phase!==PHASE_CANCEL&&phase!==PHASE_END||(clearTimeout(singleTapTimeout),doubleTapStartTime=null,$element.trigger("longtap",[event.target]),options.longTap&&(ret=options.longTap.call($element,event,event.target)))),ret}function validateSwipeDistance(){var valid=!0;return null!==options.threshold&&(valid=distance>=options.threshold),valid}function didSwipeBackToCancel(){var cancelled=!1;return null!==options.cancelThreshold&&null!==direction&&(cancelled=getMaxDistance(direction)-distance>=options.cancelThreshold),cancelled}function validatePinchDistance(){return null===options.pinchThreshold||pinchDistance>=options.pinchThreshold}function validateSwipeTime(){var result;return result=!options.maxTimeThreshold||!(duration>=options.maxTimeThreshold)}function validateDefaultEvent(jqEvent,direction){if(options.preventDefaultEvents!==!1)if(options.allowPageScroll===NONE)jqEvent.preventDefault();else{var auto=options.allowPageScroll===AUTO;switch(direction){case LEFT:(options.swipeLeft&&auto||!auto&&options.allowPageScroll!=HORIZONTAL)&&jqEvent.preventDefault();break;case RIGHT:(options.swipeRight&&auto||!auto&&options.allowPageScroll!=HORIZONTAL)&&jqEvent.preventDefault();break;case UP:(options.swipeUp&&auto||!auto&&options.allowPageScroll!=VERTICAL)&&jqEvent.preventDefault();break;case DOWN:(options.swipeDown&&auto||!auto&&options.allowPageScroll!=VERTICAL)&&jqEvent.preventDefault();break;case NONE:}}}function validatePinch(){var hasCorrectFingerCount=validateFingers(),hasEndPoint=validateEndPoint(),hasCorrectDistance=validatePinchDistance();return hasCorrectFingerCount&&hasEndPoint&&hasCorrectDistance}function hasPinches(){return!!(options.pinchStatus||options.pinchIn||options.pinchOut)}function didPinch(){return!(!validatePinch()||!hasPinches())}function validateSwipe(){var hasValidTime=validateSwipeTime(),hasValidDistance=validateSwipeDistance(),hasCorrectFingerCount=validateFingers(),hasEndPoint=validateEndPoint(),didCancel=didSwipeBackToCancel(),valid=!didCancel&&hasEndPoint&&hasCorrectFingerCount&&hasValidDistance&&hasValidTime;return valid}function hasSwipes(){return!!(options.swipe||options.swipeStatus||options.swipeLeft||options.swipeRight||options.swipeUp||options.swipeDown)}function didSwipe(){return!(!validateSwipe()||!hasSwipes())}function validateFingers(){return fingerCount===options.fingers||options.fingers===ALL_FINGERS||!SUPPORTS_TOUCH}function validateEndPoint(){return 0!==fingerData[0].end.x}function hasTap(){return!!options.tap}function hasDoubleTap(){return!!options.doubleTap}function hasLongTap(){return!!options.longTap}function validateDoubleTap(){if(null==doubleTapStartTime)return!1;var now=getTimeStamp();return hasDoubleTap()&&now-doubleTapStartTime<=options.doubleTapThreshold}function inDoubleTap(){return validateDoubleTap()}function validateTap(){return(1===fingerCount||!SUPPORTS_TOUCH)&&(isNaN(distance)||distance<options.threshold)}function validateLongTap(){return duration>options.longTapThreshold&&distance<DOUBLE_TAP_THRESHOLD}function didTap(){return!(!validateTap()||!hasTap())}function didDoubleTap(){return!(!validateDoubleTap()||!hasDoubleTap())}function didLongTap(){return!(!validateLongTap()||!hasLongTap())}function startMultiFingerRelease(event){previousTouchEndTime=getTimeStamp(),fingerCountAtRelease=event.touches.length+1}function cancelMultiFingerRelease(){previousTouchEndTime=0,fingerCountAtRelease=0}function inMultiFingerRelease(){var withinThreshold=!1;if(previousTouchEndTime){var diff=getTimeStamp()-previousTouchEndTime;diff<=options.fingerReleaseThreshold&&(withinThreshold=!0)}return withinThreshold}function getTouchInProgress(){return!($element.data(PLUGIN_NS+"_intouch")!==!0)}function setTouchInProgress(val){$element&&(val===!0?($element.bind(MOVE_EV,touchMove),$element.bind(END_EV,touchEnd),LEAVE_EV&&$element.bind(LEAVE_EV,touchLeave)):($element.unbind(MOVE_EV,touchMove,!1),$element.unbind(END_EV,touchEnd,!1),LEAVE_EV&&$element.unbind(LEAVE_EV,touchLeave,!1)),$element.data(PLUGIN_NS+"_intouch",val===!0))}function createFingerData(id,evt){var f={start:{x:0,y:0},last:{x:0,y:0},end:{x:0,y:0}};return f.start.x=f.last.x=f.end.x=evt.pageX||evt.clientX,f.start.y=f.last.y=f.end.y=evt.pageY||evt.clientY,fingerData[id]=f,f}function updateFingerData(evt){var id=void 0!==evt.identifier?evt.identifier:0,f=getFingerData(id);return null===f&&(f=createFingerData(id,evt)),f.last.x=f.end.x,f.last.y=f.end.y,f.end.x=evt.pageX||evt.clientX,f.end.y=evt.pageY||evt.clientY,f}function getFingerData(id){return fingerData[id]||null}function setMaxDistance(direction,distance){direction!=NONE&&(distance=Math.max(distance,getMaxDistance(direction)),maximumsMap[direction].distance=distance)}function getMaxDistance(direction){if(maximumsMap[direction])return maximumsMap[direction].distance}function createMaximumsData(){var maxData={};return maxData[LEFT]=createMaximumVO(LEFT),maxData[RIGHT]=createMaximumVO(RIGHT),maxData[UP]=createMaximumVO(UP),maxData[DOWN]=createMaximumVO(DOWN),maxData}function createMaximumVO(dir){return{direction:dir,distance:0}}function calculateDuration(){return endTime-startTime}function calculateTouchesDistance(startPoint,endPoint){var diffX=Math.abs(startPoint.x-endPoint.x),diffY=Math.abs(startPoint.y-endPoint.y);return Math.round(Math.sqrt(diffX*diffX+diffY*diffY))}function calculatePinchZoom(startDistance,endDistance){var percent=endDistance/startDistance*1;return percent.toFixed(2)}function calculatePinchDirection(){return pinchZoom<1?OUT:IN}function calculateDistance(startPoint,endPoint){return Math.round(Math.sqrt(Math.pow(endPoint.x-startPoint.x,2)+Math.pow(endPoint.y-startPoint.y,2)))}function calculateAngle(startPoint,endPoint){var x=startPoint.x-endPoint.x,y=endPoint.y-startPoint.y,r=Math.atan2(y,x),angle=Math.round(180*r/Math.PI);return angle<0&&(angle=360-Math.abs(angle)),angle}function calculateDirection(startPoint,endPoint){if(comparePoints(startPoint,endPoint))return NONE;var angle=calculateAngle(startPoint,endPoint);return angle<=45&&angle>=0?LEFT:angle<=360&&angle>=315?LEFT:angle>=135&&angle<=225?RIGHT:angle>45&&angle<135?DOWN:UP}function getTimeStamp(){var now=new Date;return now.getTime()}function getbounds(el){el=$(el);var offset=el.offset(),bounds={left:offset.left,right:offset.left+el.outerWidth(),top:offset.top,bottom:offset.top+el.outerHeight()};return bounds}function isInBounds(point,bounds){return point.x>bounds.left&&point.x<bounds.right&&point.y>bounds.top&&point.y<bounds.bottom}function comparePoints(pointA,pointB){return pointA.x==pointB.x&&pointA.y==pointB.y}var options=$.extend({},options),useTouchEvents=SUPPORTS_TOUCH||SUPPORTS_POINTER||!options.fallbackToMouseEvents,START_EV=useTouchEvents?SUPPORTS_POINTER?SUPPORTS_POINTER_IE10?"MSPointerDown":"pointerdown":"touchstart":"mousedown",MOVE_EV=useTouchEvents?SUPPORTS_POINTER?SUPPORTS_POINTER_IE10?"MSPointerMove":"pointermove":"touchmove":"mousemove",END_EV=useTouchEvents?SUPPORTS_POINTER?SUPPORTS_POINTER_IE10?"MSPointerUp":"pointerup":"touchend":"mouseup",LEAVE_EV=useTouchEvents?SUPPORTS_POINTER?"mouseleave":null:"mouseleave",CANCEL_EV=SUPPORTS_POINTER?SUPPORTS_POINTER_IE10?"MSPointerCancel":"pointercancel":"touchcancel",distance=0,direction=null,currentDirection=null,duration=0,startTouchesDistance=0,endTouchesDistance=0,pinchZoom=1,pinchDistance=0,pinchDirection=0,maximumsMap=null,$element=$(element),phase="start",fingerCount=0,fingerData={},startTime=0,endTime=0,previousTouchEndTime=0,fingerCountAtRelease=0,doubleTapStartTime=0,singleTapTimeout=null,holdTimeout=null;try{$element.bind(START_EV,touchStart),$element.bind(CANCEL_EV,touchCancel)}catch(e){$.error("events not supported "+START_EV+","+CANCEL_EV+" on jQuery.swipe")}this.enable=function(){return this.disable(),$element.bind(START_EV,touchStart),$element.bind(CANCEL_EV,touchCancel),$element},this.disable=function(){return removeListeners(),$element},this.destroy=function(){removeListeners(),$element.data(PLUGIN_NS,null),$element=null},this.option=function(property,value){if("object"==typeof property)options=$.extend(options,property);else if(void 0!==options[property]){if(void 0===value)return options[property];options[property]=value}else{if(!property)return options;$.error("Option "+property+" does not exist on jQuery.swipe.options")}return null}}var VERSION="1.6.18",LEFT="left",RIGHT="right",UP="up",DOWN="down",IN="in",OUT="out",NONE="none",AUTO="auto",SWIPE="swipe",PINCH="pinch",TAP="tap",DOUBLE_TAP="doubletap",LONG_TAP="longtap",HORIZONTAL="horizontal",VERTICAL="vertical",ALL_FINGERS="all",DOUBLE_TAP_THRESHOLD=10,PHASE_START="start",PHASE_MOVE="move",PHASE_END="end",PHASE_CANCEL="cancel",SUPPORTS_TOUCH="ontouchstart"in window,SUPPORTS_POINTER_IE10=window.navigator.msPointerEnabled&&!window.navigator.pointerEnabled&&!SUPPORTS_TOUCH,SUPPORTS_POINTER=(window.navigator.pointerEnabled||window.navigator.msPointerEnabled)&&!SUPPORTS_TOUCH,PLUGIN_NS="TouchSwipe",defaults={fingers:1,threshold:75,cancelThreshold:null,pinchThreshold:20,maxTimeThreshold:null,fingerReleaseThreshold:250,longTapThreshold:500,doubleTapThreshold:200,swipe:null,swipeLeft:null,swipeRight:null,swipeUp:null,swipeDown:null,swipeStatus:null,pinchIn:null,pinchOut:null,pinchStatus:null,click:null,tap:null,doubleTap:null,longTap:null,hold:null,triggerOnTouchEnd:!0,triggerOnTouchLeave:!1,allowPageScroll:"auto",fallbackToMouseEvents:!0,excludedElements:".noSwipe",preventDefaultEvents:!0};$.fn.swipe=function(method){var $this=$(this),plugin=$this.data(PLUGIN_NS);if(plugin&&"string"==typeof method){if(plugin[method])return plugin[method].apply(plugin,Array.prototype.slice.call(arguments,1));$.error("Method "+method+" does not exist on jQuery.swipe")}else if(plugin&&"object"==typeof method)plugin.option.apply(plugin,arguments);else if(!(plugin||"object"!=typeof method&&method))return init.apply(this,arguments);return $this},$.fn.swipe.version=VERSION,$.fn.swipe.defaults=defaults,$.fn.swipe.phases={PHASE_START:PHASE_START,PHASE_MOVE:PHASE_MOVE,PHASE_END:PHASE_END,PHASE_CANCEL:PHASE_CANCEL},$.fn.swipe.directions={LEFT:LEFT,RIGHT:RIGHT,UP:UP,DOWN:DOWN,IN:IN,OUT:OUT},$.fn.swipe.pageScroll={NONE:NONE,HORIZONTAL:HORIZONTAL,VERTICAL:VERTICAL,AUTO:AUTO},$.fn.swipe.fingers={ONE:1,TWO:2,THREE:3,FOUR:4,FIVE:5,ALL:ALL_FINGERS}});;
(function ($) {
  $(document).ready(function () {
    //replace all svg with png when not supported
    if (!Modernizr.svg) {
      $('img[src*="svg"]').attr('src', function () {
        return $(this).attr('src').replace('.svg', '.png');
      });
    }
  });
})(jQuery);;
/// <reference path="../vendor/JQuery/jquery-1.11.1.js" />

(function ($) {
    $(document).ready(function () {
        HandleIframe();
    });

    function HandleIframe() {
        var fullwindowframes = $('iframe.full-window');

        if ($(fullwindowframes).length > 0) {
            $(fullwindowframes).each(function () {
                $(this).css('height', $(window).height());
            });
        }
    }
})(jQuery);;
(function ($) {
  $(document).ready(function () {
    setCookiewallPosition();
  });

  function setCookiewallPosition() {
    if (parseFloat(getAndroidVersion()) < 4.0) {
      $('#cookieWallBar').addClass('fixed-not-supported');
      $('#cookieWallModal').addClass('fixed-not-supported');
    }
    else {
      $('#cookieWallBar').css('position', 'fixed');
    }
  }

  function getAndroidVersion(ua) {
    ua = (ua || navigator.userAgent).toLowerCase();
    var match = ua.match(/android\s([0-9\.]*)/);
    return match ? match[1] : false;
  };
})(jQuery);;
/// <reference path="../vendor/JQuery/jquery-1.11.1.js" />

(function ($) {
    trackVirtualPageView = function (url) {
        if (typeof dataLayer === "undefined" || typeof url === "undefined") {
            return;
        }

        var section = url.split("#");

        if (section.length <= 0)
        {
            return;
        }

        section = section.reverse();

        var event = new VirtualPageEvent('Virtual Page Event: Accordion Element Expanded - ' + section[0] + ', ' + encodeURIComponent(window.location.host + url));
        event.trigger();
        dataLayer.push({ event: "sendVirtualPageview", vpv: "" + url + "" });
    };


    $(document).ready(function () {
        $('.panel-collapse').on('hidden.bs.collapse', function () {
        });

        $('.panel-collapse').on('shown.bs.collapse', function () {
            // Track
            var panel = $(this).closest('.panel.panel-default');
            var virtualurl = $(panel).data('virtual-url');
            try {
                if (virtualurl.length > 0) {
                    trackVirtualPageView(window.location.pathname + virtualurl);
                }
            } catch (e) {
            }
        });

        // Attach show/hide events for analytics
        $('a[data-toggle="tab"]').on('hidden.bs.tab', function () {
        });

        $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
            var virtualurl = $(e.target).data('virtual-url');
            try {
                if (virtualurl.length > 0) {
                    trackVirtualPageView(window.location.pathname + virtualurl);
                }
            } catch (e) {
            }
        });
    });
})(jQuery);;
/// <reference path="../vendor/JQuery/jquery-1.11.1.js" />

(function ($) {
    $(document).ready(function () {
        $("a[href*='" + window.location.pathname + window.location.search + "#']").each(function () {
            $(this).click(function () { document.location.href = $(this).attr('href'); HandleScroll(); return false; });
        });

        window.setTimeout(function () { HandleScroll(); }, 50);
    });

    HandleScroll = function () {
        var hash = window.location.hash;
        if (hash.length > 1) {
            var content = hash.substring(1);
            var baseoffset = 65;
            var scrollpos = 0;
            var accordion = $("div[data-virtual-url='#" + content + "'] div.panel-heading");

            if (accordion.length === 0) {
                // geen accordion maar klapblok			
                accordion = $("A#" + content).next();
            }

            if (accordion.length === 0) {
                accordion = $('a[data-tab-target^="' + content + '"]:visible');
                if (accordion.length === 0) {
                    accordion = $('div[data-tab-target^="' + content + '"]');
                }
            }

            if (accordion.length === 0) {
                return;
            }

            scrollpos = $(accordion).offset().top;

            var scrollTimeout = 1000;

            $('html, body').animate({
                scrollTop: scrollpos
            }, scrollTimeout);

            // 1x click trigger.
            window.setTimeout(function () {
                if (!$(accordion).next().hasClass("in")) {
                    $(accordion).trigger('click');
                }
            }, scrollTimeout);

            if ($('section.menu').css('position') == 'fixed') {
                $('html, body').animate({ scrollTop: scrollpos - $('section.menu').height() }, 100);
            }
        }
    }
})(jQuery);;
var initEqualizeHeights;

(function ($) {
  // jquery docs http://api.jquery.com/map/#example-2
  $.fn.equalizeHeights = function () {
    var maxHeight = this.map(function (i, e) {
      return $(e).height();
    }).get();
    return this.height(Math.max.apply(this, maxHeight));
  };

  var selectorsgroups = {};

  function groupBySelectorgroup(selector) {
    if (selector == null || selector.length == 0) {
      return;
    }
    selector.each(function () {
      var group = $(this).data('equalize-group');
      group = group == null ? '' : group;
      if (selectorsgroups[group] == null) {
        selectorsgroups[group] = [];
      }
      selectorsgroups[group].push(this);
    });
  }

  function equalizeHeights() {
    if (selectorsgroups == null || selectorsgroups.length == 0) {
      return;
    }

    $.each(selectorsgroups, function(groupName, selector) {
      if (selector == null || selector.length == 0) {
        return;
      }
      selector = $(selector);
      var width = window.innerWidth || $(window).width();
      selector.css('height', 'auto');
      var minWidth = selector.first().data('equalize-min-width');
      minWidth = isNaN(minWidth) ? 0 : minWidth;
      if (width >= minWidth) {
        selector.equalizeHeights();
      }
    });
  }

  initEqualizeHeights = function () {
    selectorsgroups = {};
    groupBySelectorgroup($('.equalize-height'));
    equalizeHeights();
  }

  $(document).ready(function () {
      setTimeout(function () { initEqualizeHeights(); }, 100);
  });

  $(window).on("resize", function () {
    equalizeHeights();
  });

})(jQuery);;
/// <reference path="../vendor/JQuery/jquery-1.11.1.js" />

(function ($) {

    initTypeAhead = function (el, button, url, noresults) {
        var resultsempty = noresults;

        function typeaheadRequest(query) {
            return $.ajax({
                type: 'GET',
                url: '/services/websites/publiekesites/search.svc/typeahead/' + encodeURIComponent(query),
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
            });
        }
        $('#' + el).typeahead({
            highlight: true,
            hint: true,
            minLength: 2
        },
        {
            name: 'typeahead',
            displayKey:
            function (data) {
                return (data);
            },
            templates: {
                empty: [resultsempty],
                suggestion:
                function (data) {
                    return '<span class="tt-suggestionfirstelement">' + (data) + '</span>';
                }
            },
            source: function Suggesties(query, process) {
                typeaheadRequest(query).done(
                    function (data) {
                        process(data.Results);
                    });
            }
        }).on('typeahead:cursorchanged', function (obj, data, name) {
        }).on('typeahead:selected', function (obj, data, name) {
            Search(el);
        }).on('typeahead:opened typeahead:closed', function (obj, data, name) {
        }).on('keypress', function (e) {
            if (e.which == 13) {
                e.preventDefault();
                Search(el);
            }
        });

        $('#' + button).click(function (e) {
            e.preventDefault();
            Search(el);
        });

        function Search(el) {
            var searchval = encodeURIComponent($('#' + el).val().trim());
            if (searchval == '') {
              window.location = url;
            } else {
              window.location = url + '?search=' + searchval;
            }
        };
    };

    initSearchMore = function (el, button, rows, bekijkpagina) {

        function searchMoreRequest(query, rows, startrow) {
            return $.ajax({
                type: 'GET',
                url: '/services/websites/publiekesites/search.svc/search/' + encodeURIComponent(query) + '/' + rows + '/' + startrow,
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
            });
        }

        $('#' + button).click(function (e) {
            e.preventDefault();
            SearchMore(el);
        });

        function SearchMore(el) {
            var element = $('#' + el);
            var term = element.data('search');
            var rows = parseInt(element.data('rows'));
            var startrow = parseInt(element.data('startrow')) + rows;
            var emptyresult = $('<div class="result"><h3><a></a></h3><p></p><a></a></div>');
            searchMoreRequest(term, rows, startrow).done(
                                function (data) {
                                    element.data('startrow', startrow);
                                    if (data.TotalResults <= startrow + rows) {
                                        element.hide();
                                    }
                                    var scrollTarget = 0;
                                    for (var i = 0; i < data.Results.length; i++) {
                                        var result = $('<div class="result"><h3><a></a></h3><p></p><a class="arrow-inline"></a></div>');
                                        result.find('>h3').before('<!-- ' + data.Results[i].Score + ' -->');
                                        result.find('>h3>a').attr('href', data.Results[i].Url);
                                        result.find('>h3>a').text(data.Results[i].PageTitle);
                                        result.find('>p').text(data.Results[i].PageMetaDescription && data.Results[i].PageMetaDescription.length > 0 ? data.Results[i].PageMetaDescription : data.Results[i].PageContent);
                                        result.find('>a').attr('href', data.Results[i].Url);
                                        result.find('>a').text(bekijkpagina.length > 0 ? bekijkpagina : data.Results[i].Url);
                                        element.before(result);
                                        if (i == 0) {
                                            scrollTarget = result.offset().top;
                                        }
                                    }
                                    element.data('startrow', startrow);
                                    $('html, body').animate({ scrollTop: scrollTarget }, 1500);
                                });
        };
    };

    $(document).ready(function () {
        $('.modal.searchbar').on('shown.bs.modal', function (e) {
            $(e.target).find('input').focus();
            var virtualurl = $(e.target).data('virtual-url');
            try {
                if (virtualurl.length > 0) {
                    trackVirtualPageView(window.location.pathname + virtualurl);
                }
            } catch (e) {
            }
        })
    });
})(jQuery);;
/// <reference path="../vendor/JQuery/jquery-1.11.1.js" />

(function ($) {
    $(document).ready(function () {
        InitAccordionEvent();
    });

    function InitAccordionEvent() {
        $(".panel-default > .panel-heading").on("click", function () {
            if ($(this).attr('data-parent') !== undefined) {
                $(this).closest(".panel-group").find(".brandicon").each(function () {
                    $(this).css("height", "30px");
                });
            }

            var brandicon = $(this).find(".brandicon");
            if ($(this).hasClass("collapsed")) {
                brandicon.height($(this).outerHeight());
            }
            else {
                brandicon.css("height", "30px");
            }
        });
    }

    //timestamp toevoegen aan de querystring om caching te voorkomen
    makeUniqueQuerystring = function (oldquery) {
        var teken = "&";
        if (oldquery == "")
            teken = "?";
        return oldquery + teken + "timestamp=" + new Date().getTime();
    };


    isPageEditor = function () {
        if (typeof Sitecore == "undefined") {
            return false;
        }
        if (typeof Sitecore.PageModes == "undefined" || Sitecore.PageModes == null) {
            return false;
        }
        return Sitecore.PageModes.PageEditor != null;
    }

    String.prototype.format = function () {
        var args = arguments;
        return this.replace(/\{(\d+)\}/g, function (m, n) { return args[n]; });
    };

    isMobileUser = function () {

        var isMobile = false;
        if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)
            || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0, 4))) {
            isMobile = true;
        }

        return isMobile;
    }


})(jQuery);;
/// <reference path="https://code.jquery.com/jquery-1.11.1.js" />

(function ($) {

  $(document).ready(function () {

      $('#kwalserv_hide').hide();

      $('#kwalserv_hide').click(function () {
          $('.meerblok_kwalserv').hide();
          $('#kwalserv_hide').hide();
          $('#kwalserv_show').show();
      });

      $('#kwalserv_show').click(function () {
          $('.meerblok_kwalserv').show();
          $('#kwalserv_hide').show();
          $('#kwalserv_show').hide();
      });

      $('#reviews_hide').hide();

      $('#reviews_hide').click(function () {
          $('.zv-review-meer').hide();
          $('#reviews_hide').hide();
          $('#reviews_show').show();
      });

      $('#reviews_show').click(function () {
          $('.zv-review-meer').show();
          $('#reviews_hide').show();
          $('#reviews_show').hide();
      });

  });
 
})(jQuery);;
/// <reference path="https://code.jquery.com/jquery-1.11.1.js" />

(function ($) {
    $(document).ready(function () {
        adjustResults();
        convertBackToTopLink();
  });

  convertBackToTopLink = function () {
      $('a').each(function () {
          if (($(this).attr('href') == '#') && !((typeof Sitecore !== 'undefined') && (Sitecore.PageModes) && (Sitecore.PageModes.PageEditor))) {
                  $(this).attr('href', 'javascript:window.scrollTo(0, 0);'); 
          }
      });
  }


    adjustResults = function () {
        $('.zv-result, .zv-details').each(function () {
            var resultHide = $(this).find('.zv-result-hide');
            if ((resultHide.find('h4').length == 0) && $('.zv-results #divResultContainer').length == 0) {
                resultHide.hide();
                $(this).find('.zv-result-stretch').css('width', '100%');
            }
            if ($('.zv-results #divResultContainer').length > 0) {
                var aantalblokjes = resultHide.find('.zv-result-extra').length;
                resultHide.css('min-height', aantalblokjes * 35 + 38);
            }
        });

        $('.zv-actueletekst button').click(function () { setTimeout(positionContactBlock, 200); });
        $('.zv-sortering').change(function () { document.location.href = this.value; });

        $('.zv-result-extra-container').each(function () {
            if ($(this).height() == 0) {
                $(this).remove();
            }
        });

        positionContactBlock();
        positionButtons();

        $(window).on("resize", function () {
            positionContactBlock();
            positionButtons();
        });

        $(window).on("orientationchange", function (event) {
            positionContactBlock();
        });

        $(window).scroll(function () {
            positionContactBlock();
        });
    }

    positionButtons = function () {
        var phone = window.matchMedia("(max-width: 767px)").matches;
        $('.zv-result').each(function () {
            var buttons = $(this).find('#divButtons');
            if (phone) {
                $(this).find('#divRight').append(buttons);
            }
            else {
                $(this).find('.zv-result-info').append(buttons);
            }
        });

    }

    positionContactBlock = function () {
        var $search = $('.zv-search');
        var $inlayside = $('.inlay-side');
        var $resultsView = $('.zv-results-view');
        var $details = $('.zv-algemeneinformatie');
        var $route = $('.zv-route');
        var $contact = $('#ContactBlock');
        var $terugnaarboven = $('.terugnaarboven').parent();
        var $menu = $('.menu');
        var $map = $('.zv-results-map'); 

        var contactWidth = $contact.width();
        var fixateContacts = false;
        var margin = 0;       

        if ($contact.length == 0) {
            return;
        }

        var top = $inlayside.offset().top;
        var mintop = 0;
        var docViewTop = $(window).scrollTop();

        if ($menu.length > 0 && $menu.offset().top >= docViewTop) {
            mintop = $menu.outerHeight(true);
        }

        if ($route.length > 0) {
            margin = $route.position().top + parseInt($route.css('marginTop'));
        }

        if ($map.length > 0) {
            margin = $map.position().top + parseInt($map.css('marginTop'));
        }

        if ($search.length > 0) {
            margin = $search.position().top + parseInt($search.css('marginTop'));
        }
        if ($resultsView.length > 0 && (($map.length == 0) || $map.css('display') == 'none')) {
            margin = $resultsView.position().top + parseInt($resultsView.css('marginTop'));

            if ($(document).width() >= 768) {
                fixateContacts = true; //only fixate contacts on results and details page
            }
        }
        else if ($details.length > 0) {
            margin = $details.position().top + parseInt($details.css('marginTop'));
            if ($(document).width() >= 768) {
                fixateContacts = true; //only fixate contacts on results and details page
            }
        }

        if ($(document).width() >= 992) {
            top += margin;
        } else {
            top += 20;
        }

        if (fixateContacts && margin > 0 && $(window).scrollTop() > top) {
            $contact.css('marginTop', '');
            $contact.css('position', 'fixed');
            $contact.css('top', mintop);
            $contact.width(contactWidth);
            $terugnaarboven.css('position', 'fixed');
            $terugnaarboven.css('top', mintop + $contact.outerHeight(true));
            $terugnaarboven.width(contactWidth);
        } else {
            $contact.css('position', '');
            $contact.css('top', '');
            $terugnaarboven.css('position', '');
            $terugnaarboven.css('top', '');
            $contact.width('auto');
            $terugnaarboven.width('auto');

            if ($(document).width() >= 992)
                $contact.css('marginTop', margin + 'px');
            else {
                $contact.css('marginTop', '20px');
            }
        }
    }

    alleenGecontracteerdTonen = function (obj) {
        document.location.href = obj.getAttribute('redirect-url');
    }

    neemtNieuwePatientenAanTonen = function (obj) {
        document.location.href = obj.getAttribute('redirect-url');
    }

})(jQuery);;
/// <reference path="https://code.jquery.com/jquery-1.11.1.js" />

(function ($) {
    $(document).ready(function () {

        adjustRoute();
    });

    adjustRoute = function () {


        positionAdres();


        $(window).on("resize", function () {
            positionAdres();

        });

        $(window).on("orientationchange", function (event) {
            positionAdres();
        });

        $(window).scroll(function () {
            positionAdres();
        });
    }


    positionAdres = function () {
        
        var $route = $('.zv-route');
        if ($route.length == 0) {
            return;
        }

        var phone = window.matchMedia("(max-width: 767px)").matches;

        var adres = $route.find('#divRouteAdres');
        if (phone) {
            $route.find('#divRouteAdresMob').append(adres);
        }
        else {
            $route.find('.adres').append(adres);
        }

    }



})(jQuery);;
/// <reference path="https://code.jquery.com/jquery-1.11.1.js" />

(function ($) {

    function getParameterByName(name) {
        name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
        var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
            results = regex.exec(location.search);
        return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
    }


    // Create Base64 Object
    var Base64 = { _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", encode: function (e) { var t = ""; var n, r, i, s, o, u, a; var f = 0; e = Base64._utf8_encode(e); while (f < e.length) { n = e.charCodeAt(f++); r = e.charCodeAt(f++); i = e.charCodeAt(f++); s = n >> 2; o = (n & 3) << 4 | r >> 4; u = (r & 15) << 2 | i >> 6; a = i & 63; if (isNaN(r)) { u = a = 64 } else if (isNaN(i)) { a = 64 } t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a) } return t }, decode: function (e) { var t = ""; var n, r, i; var s, o, u, a; var f = 0; e = e.replace(/[^A-Za-z0-9\+\/\=]/g, ""); while (f < e.length) { s = this._keyStr.indexOf(e.charAt(f++)); o = this._keyStr.indexOf(e.charAt(f++)); u = this._keyStr.indexOf(e.charAt(f++)); a = this._keyStr.indexOf(e.charAt(f++)); n = s << 2 | o >> 4; r = (o & 15) << 4 | u >> 2; i = (u & 3) << 6 | a; t = t + String.fromCharCode(n); if (u != 64) { t = t + String.fromCharCode(r) } if (a != 64) { t = t + String.fromCharCode(i) } } t = Base64._utf8_decode(t); return t }, _utf8_encode: function (e) { e = e.replace(/\r\n/g, "\n"); var t = ""; for (var n = 0; n < e.length; n++) { var r = e.charCodeAt(n); if (r < 128) { t += String.fromCharCode(r) } else if (r > 127 && r < 2048) { t += String.fromCharCode(r >> 6 | 192); t += String.fromCharCode(r & 63 | 128) } else { t += String.fromCharCode(r >> 12 | 224); t += String.fromCharCode(r >> 6 & 63 | 128); t += String.fromCharCode(r & 63 | 128) } } return t }, _utf8_decode: function (e) { var t = ""; var n = 0; var r = c1 = c2 = 0; while (n < e.length) { r = e.charCodeAt(n); if (r < 128) { t += String.fromCharCode(r); n++ } else if (r > 191 && r < 224) { c2 = e.charCodeAt(n + 1); t += String.fromCharCode((r & 31) << 6 | c2 & 63); n += 2 } else { c2 = e.charCodeAt(n + 1); c3 = e.charCodeAt(n + 2); t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63); n += 3 } } return t } }

   

    initSuggestionPrediction = function () {
        $('.zv-search').each(function () {
            var placeSearch, autocomplete;
            var search = $($(this).data('locationsearch'));
            var result = $($(this).data('locationresult'));
            var latitude = $($(this).data('latitude'));
            var longitude = $($(this).data('longitude'));

            if (search == 'undefined' || $(search).length == 0 || result == 'undefined' || $(result).length == 0) {
                return;
            }

            var options =
                {
                    componentRestrictions: { country: 'nl' },
                    types: $(search).data('restrictions').split(",")
                };


            var input = $(search)[0];
            var _addEventListener = (input.addEventListener) ? input.addEventListener : input.attachEvent;

            function addEventListenerWrapper(type, listener) {
                if (type == "keydown") {
                    var orig_listener = listener;
                    listener = function (event) {
                        var suggestion_selected = $(".pac-item-selected").length > 0;

                        if ((event.which == 13 || event.which == 9) && !suggestion_selected) {
                            var simulated_downarrow = $.Event("keydown", {
                                keyCode: 40,
                                which: 40
                            });
                            orig_listener.apply(input, [simulated_downarrow]);
                        }

                        orig_listener.apply(input, [event]);
                    };
                }

                _addEventListener.apply(input, [type, listener]);
            }

            input.addEventListener = addEventListenerWrapper;
            input.attachEvent = addEventListenerWrapper;

            var options =
                 {
                     componentRestrictions: { country: 'nl' },
                     types: $(input).data('restrictions').split(",")
                 };

            autocomplete = new google.maps.places.Autocomplete(input, options);

            google.maps.event.addListener(autocomplete, 'place_changed', function () {
                locationChanged(autocomplete, $(result)[0], $(latitude)[0], $(longitude)[0]);
            });
        });
    };

    locationChanged = function (autocomplete, rs, lat, lng) {
        var place = autocomplete.getPlace();
        $(lat).val(place.geometry.location.lat());
        $(lng).val(place.geometry.location.lng());
        $(rs).val(encodeURIComponent(JSON.stringify(place)));
        $(rs).trigger('change');
    }

    initTypeAheadZV = function (el, year, url, noresults, maxResults) {
        var searchResults = new Bloodhound({
            datumTokenizer: Bloodhound.tokenizers.obj.whitespace,
            queryTokenizer: Bloodhound.tokenizers.whitespace,
            limit: maxResults,
            remote: {
                url: '/services/websites/zorgvinder/search.svc/typeahead/',
                replace: function (url, query) {
                    return url + Base64.encode(query) + '?jaar=' + getYears()[0] + '&ms=' + new Date().getTime()
                },
                filter: function (response) {
                    setTimeout(disableHoofdCategorie, 50);
                    return response.Results
                }
            }
        });
        searchResults.initialize();

        var itemSelected = false;

        $('#' + el).typeahead({
            highlight: true,
            hint: true,
            minLength: 3,
            limit: maxResults
        },
        {
            name: 'typeahead',
            displayKey: function (data) {
                return data.Trefwoord;
            },
            source: searchResults.ttAdapter(),
            templates: {
                empty: function (object) {
                    categorieEmpty(); return noresults;
                },
                suggestion:
                function (data) {
                    if (data.IsHoofdCategorie) {
                        return '<h4 class=typeahead-header>' + data.Naam + '</h4>';
                    }
                    return '<span>' + data.Trefwoord + '</span> (' + data.Naam + ')';
                }
            }
        }).on('typeahead:cursorchanged', function (obj, data, name) {
        }).on('typeahead:selected', function (obj, data, name) {
            categorieChanged(data.ParentId, data.Id, data.Bron, data.TrefwoordId);
            itemSelected = true;
        }).on('typeahead:opened', function (obj, data, name) {
            itemSelected = false;
        }).on('typeahead:closed', function (obj, data, name) {
        }).on('keydown', function (e) {
            if (e.which == 13 || e.which == 9) {
                e.preventDefault();

                if (!itemSelected) {
                    $(".tt-suggestion:first").trigger('click');
                }
            }
        });


        function categorieChanged(hoofdId, subId, bron, trefwoordId) {
            var tbxCat = $('.zv-search').data('cat');
            var tbxHoofd = $('.zv-search').data('hoofd');
            var tbxSub = $('.zv-search').data('sub');
            var tbxBron = $('.zv-search').data('bron');
            var tbxTref = $('.zv-search').data('trefw');
            $(tbxCat).val(hoofdId + '_' + subId + '_' + trefwoordId);
            $(tbxHoofd).val(hoofdId);
            $(tbxSub).val(subId);
            $(tbxBron).val(bron);
            $(tbxTref).val(trefwoordId);
            $(tbxCat).trigger('change');
        }

        function categorieEmpty() {
          console.log('empty');
          var tbxCat = $('.zv-search').data('cat');
          var tbxHoofd = $('.zv-search').data('hoofd');
          var tbxSub = $('.zv-search').data('sub');
          var tbxBron = $('.zv-search').data('bron');
          $(tbxCat).val('');
          $(tbxHoofd).val('undef');
          $(tbxSub).val('undef');
          $(tbxBron).val('undef');
           }

        function getYears() {
            var defaultYear = $('.zv-search').data('defaultyear');
            var years = [];
            var checkedYears = $('#' + year).find('input:checked');
            checkedYears.each(function (index) {
                years.push($(this).val());
            });
            if (!years.length > 0) years.push(defaultYear);
            return years;
        }

        function disableHoofdCategorie() {
            $('.typeahead-header').parent().removeClass('tt-suggestion').addClass('tt-categorie');
        }
    };

    bindEvents = function () {
        $('.zv-search .delete').on('click', function () {
            var textbox = $('#' + $(this).data('textbox'));
            if (textbox != null) {
                $(this).hide();
                textbox.val('');
                Clear(textbox, true);
                setTimeout(function () { textbox.trigger('input'); textbox.focus(); }, 0);
            }
        });

        $('.zv-search input.form-control').on('keyup', function (e) {
            var $a = $('.zv-search a.delete[data-textbox=' + $(this).attr('id'));
            if ($(this).val() == '') {
                $a.hide();
                Clear($(this), true);
            }
            else {
                $a.show();
            }
        });

        $('.zv-search a.delete').each(function () {
            var textbox = $(this).data('textbox');
            if (textbox.length && $('#' + textbox).length && $('#' + textbox).val() != "") {
                $(this).show();
            }
            else {
                $(this).hide();
            }
        });

        $('.zv-search .trefwoord').on('keydown', function (e) {
            if (e.keyCode == 9) {
                e.preventDefault();
                $('.zv-search .naam').focus();
            }
        });

    }

    Clear = function (el, trigger) {
        var box = $(el);
        var triggerelements = box.data('delete-triggers');
        if (triggerelements != null) {
            if ($(triggerelements).val().length > 0) {
                $(triggerelements).val("");
                if (trigger) {
                    $(triggerelements).trigger('change');
                }
            }
        }
    }

    initStartoverlay = function (overlayText) {
        var $modal = $('#modal-popup');
        if ($modal.length > 0) {
            var $modalBody = $modal.find('.modal-body');
            if ($modalBody.length > 0) {
                $modalBody.html(overlayText);
                $modal.modal('show');
            }
        }
    }

})(jQuery);;
/// <reference path="https://code.jquery.com/jquery-1.11.1.js" />

function SetExpandableText(textcontainer, text, json) {
    var html = MakeExpandableText(textcontainer, text, json.length > 0 ? jQuery.parseJSON(json) : json);
    $("#" + textcontainer).html(html);
}

function MakeExpandableText(textcontainer, text, json) {

    var pCount = 0;

    try {
        pCount = $(text).filter('p, ul').length;
    }
    catch (err) {
    }


    var container = $("#" + textcontainer);
    var alertbox = container.closest(".alert");
    var link = alertbox.find(".toggle-text-link");

    if (text == null || text == "") {
        alertbox.hide();
    }


    if (link != null) {
        link.hide();
    }

    if (json == null || json == "" || json.aantalregels >= json.minimumregels || json.inklapbaar == false || pCount <= json.aantalregels || pCount < json.minimumregels) {
        return text;
    }

    var counter = 0;
    var firstpart = "";
    var secondpart = "";


    $(text).filter('p, ul').each(function () {
        if (counter < json.aantalregels) {
            firstpart += $(this).outerHTML();
        }
        else {
            secondpart += $(this).outerHTML();
        }
        counter++;
    });

    var html = "";

    if (firstpart.length > 0 && secondpart.length > 0) {
        html += "<div>" + firstpart + "</div>";

        if (json.uitgeklapt) {
            html += "<div class='expandable-text'>" + secondpart + "<div>";
            link.text(json.inklaptekst);
        }
        else {
            html += "<div class='expandable-text' style='display:none'>" + secondpart + "<div>";
            link.text(json.uitklaptekst);
        }
        link.show();

        //  angular..
        link.unbind('click');
        link.on("click", function () {
            var subtext = container.closest(".alert").find(".expandable-text");

            subtext.slideToggle("fast", function () {
                link.text(subtext.is(':visible') ? json.inklaptekst : json.uitklaptekst);
            });
        });

        return html;
    }

    return text;
}


jQuery.fn.outerHTML = function (s) {
    return s
        ? this.before(s).remove()
        : jQuery("<p>").append(this.eq(0).clone()).html();
};


(function ($) {
    var zorgvinderApp = angular.module('zorgvinderApp', []);

    /* 
      ResultatenController - Zoekresultaten resultatenpagina 
    */


    $.fn.goTo = function () {
        $('html, body').animate({
            scrollTop: $(this).offset().top + 'px'
        }, 'fast');
        return this;
    }

    zorgvinderApp.controller('ResultatenController', function ($scope, $http, $sce) {

        $scope.results = [];
        $scope.displayTypes = [];
        $scope.sortingTypes = [];
        $scope.loading = false;
        $scope.hasMoreResults = false;
        $scope.hasRun = false;
        $scope.texts = [];
        $scope.totalResults = 0;
        $scope.blackListed = 0;
        $scope.hasMovedToZorgAanbieder = false;
        $scope.hasBeenFound = false;
             
        $scope.init = function (searchurl, qs, zorgaanbiederurl, noresults) {
            $scope.searchurl = searchurl;
            $scope.qs = makeUniqueQuerystring(qs);
            $scope.zorgaanbiederurl = zorgaanbiederurl;
            $scope.noresults = noresults;
            $scope.getMoreResults();
            $scope.showText = sessionStorage.getItem('textResultDelete') != 'yes';
        };


        $scope.getMoreResults = function () {
            $scope.loading = true;
            var currentPage = parseInt($(".zv-results").attr("data-page"), 10);
            var limit = $(".zv-results").data("limit");

            $http
              .get($scope.searchurl + makeUniqueQuerystring($scope.qs), {
                  params: {
                      "limit": limit,
                      "page": currentPage
                  }
              })
              .success(function (data) {
                  $(".zv-results").attr("data-page", parseInt($(".zv-results").attr("data-page"), 10) + 1);

                  if (data.Resultaten != null) {
                      for (var i = 0; i < data.Resultaten.length; i++) {
                          $scope.results.push(data.Resultaten[i]);
                      }

                      // alleeen eerste keer setten ivm zwarte lijst items die ontbreken.
                      if ($scope.totalResults == 0) {
                          $scope.totalResults = data.TotaalResultaten;
                      }

                      // aantal pages bepalen.
                      var pageCount = Math.ceil(data.TotaalResultaten / limit);

                      // huidige pagina is niet maximaal gevuld.
                      if (currentPage < pageCount && data.Resultaten.length < limit) {
                          $scope.blackListed += (limit - data.Resultaten.length);
                      }


                      if ($scope.results.length >= data.TotaalResultaten - $scope.blackListed) {
                          $scope.hasMoreResults = false;
                      } else {
                          if (currentPage < pageCount) {
                              $scope.hasMoreResults = true;
                          }
                      }

                      if ($scope.hasMoreResults) {

                          var zpid = getParameterByName("id");
                          var found = false;

                          if (zpid > 0) {
                              for (i = 0; i < $scope.results.length; i++) {
                                  if ($scope.results[i].Id == zpid) {
                                      found = true;
                                  }
                              }

                              if (!found) {
                                  $scope.hasMoreResults = false
                                  $scope.getMoreResults();
                              }
                              else {
                                  $scope.hasBeenFound = true;
                              }
                          }

                      }
                  }

                  $scope.texts = [];

                  if (data.Teksten != null) {
                      for (var i = 0; i < data.Teksten.length; i++) {
                          $scope.texts.push(data.Teksten[i]);
                      }
                  }

                  $scope.displayTypes = data.DisplayTypes;
                  $scope.sortingTypes = data.SortingTypes;
              })
              .finally(function () {
                  $scope.loading = false;
                  $scope.hasRun = true;

                  $scope.adjustResultList();

                  setTimeout(function () { initEqualizeHeights(); }, 0);

                  if ($('.zv-results .zv-results-map:visible').length > 0) {
                      initGoogleMapsLocaties($scope.results);
                  }

                  if (!$scope.hasMovedToZorgAanbieder && $scope.hasBeenFound) {
                      $scope.hasMovedToZorgAanbieder = true;
                      $scope.moveToZorgAanbieder();
                  }

                  retrieveVergelijker(false);

                  // verwijderen lege I'tjes.                  
                  setTimeout(function () { InitModalPopups(); }, 0);
              });
        };

        $scope.showResultList = function () {
            $('.zv-results .zv-results-view').removeClass('hide');
            $('.zv-results .zv-results-more').removeClass('hide');
            $('.zv-result').removeClass('zv-topresult hide');
            $('.zv-results .zv-results-map').addClass('hide');
            $('.zv-results .zv-results-sortering .form-control').removeClass('hide');
            $('.zv-results .filters').removeClass('hide');
            $scope.setActiveButton($('#list'));
            setTimeout(function () { initEqualizeHeights(); }, 0);
        };

        $scope.showResultMap = function () {
            $('.zv-results .zv-results-view').addClass('hide');
            $('.zv-results .zv-results-more').removeClass('hide');
            $('.zv-result').removeClass('zv-topresult hide');
            $('.zv-results .zv-results-map').removeClass('hide');
            $('.zv-results .zv-results-sortering .form-control').addClass('hide');
            $('.zv-results .filters').addClass('hide');
            $scope.setActiveButton($('#map'));
            initGoogleMapsLocaties($scope.results);
        };

        $scope.setActiveButton = function (btn) {
            $('.zv-results-displaybuttons .btn').removeClass('active');
            btn.addClass('active');
        };


        $scope.translateCijfer = function (value, oldmin, oldmax, newmin, newmax) {
            return ((((value - oldmin) * (newmax - newmin)) / (oldmax - oldmin)) + newmin).toFixed(1);;
        };

        $scope.formatSubtitle = function (total, subtitle) {
            return subtitle.replace('{0}', total)
        }


        $scope.getTrustedHtmlTextExpandable = function (textcontainer, x, json) {
            var txt = MakeExpandableText(textcontainer, x, json);
            return $sce.trustAsHtml(txt);
        };

        $scope.getTrustedHtmlText = function (x) {
            return $sce.trustAsHtml(x);
        };


        $scope.hasText = function (texts, textType) {

            for (var i = 0; i < texts.length; i++) {
                if (texts[i].Type == textType) {
                    return true;
                }
            }

            return false;
        };

        $scope.getText = function (texts, textType) {

            for (var i = 0; i < texts.length; i++) {
                if (texts[i].Type == textType) {
                    return texts[i].Inhoud;
                }
            }

            return null;
        };


        $scope.adjustResultList = function () {
            setTimeout(function () {
                adjustResults()
            }, 0);
        }


        $scope.moveToZorgAanbieder = function () {
            setTimeout(function () {
                var zpid = getParameterByName("id");

                if (zpid > 0) {
                    $('#divZp_' + zpid).goTo();
                }
            }, 0);
        }


        //$(window).scroll(function () {
        //    if ($(window).scrollTop() + $(window).height() == $(document).height()) {
        //        if ($scope.hasMoreResults == true && $scope.loading == false) {
        //            $scope.getMoreResults();
        //        }
        //    }
        //});
    });


    function getParameterByName(name) {
        name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
        var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
            results = regex.exec(location.search);
        return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
    }

    zorgvinderApp.directive('starRating', function () {
        return {
            restrict: 'E',
            scope: {
                score: '=score',
                max: '=max'
            },
            template: '<span class="zv-star-rating"><i ng-repeat="star in stars" ng-class="{\'full fa-star-full\': star.full, \'half\': !star.full && star.half, \'fa-star-empty\': !star.full && !star.half }"></i></span>',
            link: function (scope, element, attributes) {
                if (scope.max == undefined) {
                    scope.max = 5;
                }

                scope.stars = [];
                for (var i = 0; i < scope.max; i++) {
                    scope.stars.push({
                        full: i < Math.floor(scope.score),
                        half: i < scope.score && (scope.score % 1 != 0)
                    });
                }

            }
        }
    });

    /* 
    ZorgaanbiederController - Detail zorgaanbieder
    */
    zorgvinderApp.filter('ctime', function () {
        return function (jsonDate) {
            var date = new Date(parseInt(jsonDate.substr(6)));
            return date;
        };
    });



})(jQuery);

;
/// <reference path="https://code.jquery.com/jquery-1.11.1.js" />

(function ($) {
  $(document).ready(
      function () {
        initGoogleMaps();
      });

  var gm_map;
  var gm_geocoder;
  var gm_directionsDisplay;
  var gm_stepDisplay;
  var gm_markerArray = [];
  var gm_locaties = [];
  var gm_baseIcon;
  var gm_infowindow;
  var gm_bounds;
  var gm_detailsLink;
  var gm_postalcode;
  var gm_distance_format;

  var gm_lat;
  var gm_lng;

  var markerStart;
  var markerEnd;

  var maps;
  var canvas;
  var panel_info;
  var panel_mapinfo;
  var panel_warnings;

  trackVirtualPageView = function (url) {
    if (typeof dataLayer === "undefined" || typeof url === "undefined") {
      return;
    }

    dataLayer.push({ event: "sendVirtualPageview", vpv: "" + url + "" });
  };

  function initGoogleMaps() {
    $('div.zv-route, div.zv-resultaten-kaart').each(function () {
      var id = $(this).data('id');
      gm_detailsLink = $(this).data('detailslink');
      markerStart = $(this).data('marker-start');
      markerEnd = $(this).data('marker-end');
      gm_postalcode = $(this).data('postcode');
      gm_postalcode_org = $(this).data('postcode');
      gm_lat = $(this).data('latitude');
      gm_lng = $(this).data('longitude');
      gm_distance_format = $(this).data('distance-format');

      maps = 'googlemaps_' + id;
      canvas = 'map_canvas_' + id;
      panel_info = 'info_' + id;
      panel_mapinfo = 'map_info_' + id;
      panel_warnings = 'warnings_' + id;
    });

    $('a.route-plannen').click(function () {
      if (gm_postalcode == $('input.postcode').val() && gm_postalcode == gm_postalcode_org) {
        gm_calcRoute(
            new google.maps.LatLng(gm_lat, gm_lng),
            new google.maps.LatLng(gm_locaties[0].Adres.Latitude, gm_locaties[0].Adres.Longitude),
            gm_postalcode,
            false);
        trackVirtualPageView(window.location.pathname + '/plannen' + window.location.search);
      }
      else {
        gm_postalcode = $('input.postcode').val();
        gm_calcRoute(
            gm_postalcode + ", Nederland",
            new google.maps.LatLng(gm_locaties[0].Adres.Latitude, gm_locaties[0].Adres.Longitude),
            gm_postalcode,
            false);
        trackVirtualPageView(window.location.pathname + '/plannen_postcode' + window.location.search);
      }
    });
  }

  /*
  Initialize Google Maps with locations
  */
  initGoogleMapsLocaties = function (praktijken) {
    // Onderstaande regel is nodig om een re-init van de map mogelijk te maken
    $('.zv-results-map').removeClass('hide');
    gm_locaties = praktijken;
    gm_initialize(canvas);
    gm_setMarkers(praktijken, 23, 28);
    $('#' + canvas).show();
    trackVirtualPageView(window.location.pathname + '/kaart' + window.location.search);
  }

  function gm_initialize(canvas) {
    // Instantiate a directions service.
    var directionsService = new google.maps.DirectionsService;

    gm_geocoder = new google.maps.Geocoder();
    gm_bounds = new google.maps.LatLngBounds();

    gm_map = new google.maps.Map(document.getElementById(canvas));

    gm_directionsDisplay = new google.maps.DirectionsRenderer({ map: gm_map });

    gm_infowindow = new google.maps.InfoWindow;
  }

  function gm_clearMarkers() {
    // First, safely clear out any existing markerArray
    // from previous calculations.
    for (i = 0; i < gm_markerArray.length; i++) {
      gm_markerArray[i].setMap(null);
    }
  }

  function gm_calcRoute(
      start,
      destination,
      title_end,
      showmarkers) {
    var warnings = document.getElementById(panel_warnings);
    var informatie = document.getElementById(panel_info);

    var gm_directionsService = new google.maps.DirectionsService();

    gm_directionsDisplay.setMap(null);

    var rendererOptions = { map: gm_map, suppressMarkers: true }

    gm_directionsDisplay = new google.maps.DirectionsRenderer(rendererOptions);

    // Instantiate an info window to hold step text.
    gm_stepDisplay = new google.maps.InfoWindow();

    gm_clearMarkers();

    // Retrieve the start and end locations and create
    // a DirectionsRequest using DRIVING directions.

    var request = {
      origin: start,
      destination: destination,
      travelMode: google.maps.TravelMode.DRIVING
    };

    // Route the directions and pass the response to a
    // function to create markers for each step.
    gm_directionsService.route(request, function (response, status) {
      if (status == google.maps.DirectionsStatus.OK) {
        var text = "" + response.routes[0].warnings + "";
        if (warnings.innerHTML !== text) {
          warnings.innerHTML = "" + response.routes[0].warnings + "";
        }

        gm_directionsDisplay.setDirections(response);
        informatie.innerHTML = "";
        gm_showSteps(
            response,
            title_end,
            showmarkers);

        if (window.location.hash != '') {
          window.location.hash = window.location.hash;
        }
      }
      else if (status == google.maps.DirectionsStatus.ZERO_RESULTS) {
        warnings.innerHTML = "geen route";
      }
    });
  }

  function gm_showSteps(
      directionResult,
      title_end,
      showmarkers) {

    // For each step, place a marker, and add the text to the marker's
    // info window. Also attach the marker to an array so we
    // can keep track of it and remove it when calculating new
    // routes.
    myRoute = directionResult.routes[0].legs[0];

    // Place start- and endmarkers on map
    makeMarker(myRoute.start_location, markerStart, myRoute.start_address);
    makeMarker(myRoute.end_location, markerEnd, myRoute.end_address);

    var image;
    gm_addRouteInfoText(myRoute);

    var shape = {
      coord: [1, 1, 1, 20, 18, 20, 18, 1],
      type: 'poly'
    };

    for (var i = 0; i < myRoute.steps.length; i++) {
      if (showmarkers) {
        image = i == 0
            ? markerStart
            : i == myRoute.steps.length
                ? markerEnd
                : markerStart;

        var marker = new google.maps.Marker({
          position: myRoute.steps[i].start_point,
          map: gm_map,
          icon: image,
          shape: shape
        });

        gm_markerArray.push(marker);

        var instructions = myRoute.steps[i].instructions;

        gm_attachInstructionText(marker, instructions);
        google.maps.event.addListener(marker, 'click', function () {
          gm_stepDisplay.setContent(instructions);
          gm_stepDisplay.open(gm_map, marker);
        });
      }

      gm_addInstructionText(i, myRoute.steps[i]);
      //if (marker) {
      //    gm_markerArray[i] = marker;
      //}
    }

    gm_addRouteInfoText(myRoute);
  }

  function makeMarker(position, icon, title) {
    gm_markerArray.push(
        new google.maps.Marker({
          position: position,
          map: gm_map,
          icon: icon,
          title: title
        }));
  }

  function gm_attachInstructionText(marker, text) {
    google.maps.event.addListener(marker, 'click', function () {
      gm_stepDisplay.setContent(text);
      gm_stepDisplay.open(gm_map, marker);
    });
  }

  function gm_addInstructionText(counter, step) {
    var informatie = document.getElementById(panel_info);
    var cssclass = counter % 2 == 0 ? 'itemeven' : 'itemodd';
    var instructions = step.instructions;
    var distancetext;
    var durationtext;
    var distance = step.distance;
    if (distance != null) {
      distancetext = ' <span class="afstand">' + distance.text + '</span>';
    }

    var duration = step.duration;
    if (duration != null) {
      durationtext = ' <span class="duur">Ongeveer ' + duration.text + '</span>';
    }

    informatie.innerHTML += '<div class="' + cssclass + '"><div>' + (counter + 1) + '. ' + instructions + '</div>' + distancetext + durationtext + '</div>';
  }

  function gm_addRouteInfoText(leg) {
    var informatie = document.getElementById(panel_info);
    var cssclass = 'routeinfo itemodd';
    var instructions = leg.instructions;
    var distancetext;
    var durationtext;
    var distance = leg.distance;
    if (distance != null) {
      distancetext = ' <span class="afstand">' + distance.text + '</span>';
    }

    var duration = leg.duration;
    if (duration != null) {
      durationtext = ' <span class="duur">Ongeveer ' + duration.text + '</span>';
    }

    informatie.innerHTML += '<div class="' + cssclass + '"><div>Totale reistijd en afstand</div>' + distancetext + durationtext + '</div>';
  }

  function gm_setMarkers(locations) {
    // Add markers to the map    
    // Marker sizes are expressed as a Size of X,Y   
    // where the origin of the image (0,0) is located   
    // in the top left of the image.    
    // Origins, anchor positions and coordinates of the marker   
    // increase in the X direction to the right and in   
    // the Y direction down.   

    //var shadow = new google.maps.MarkerImage('images/beachflag_shadow.png',       
    // The shadow image is larger in the horizontal dimension       
    // while the position and offset are the same as for the main image.       
    //new google.maps.Size(37, 32),       
    //new google.maps.Point(0,0),       
    //new google.maps.Point(0, 32));       
    // Shapes define the clickable region of the icon.       
    // The type defines an HTML <area> element 'poly' which       
    // traces out a polygon as a series of X,Y points. The final       
    // coordinate closes the poly by connecting to the first       
    // coordinate.   

    var shape = {
      coord: [1, 1, 1, 20, 18, 20, 18, 1],
      type: 'poly'
    };

    /*
    new google.maps.Size(23, 28),

    vervangen door de width en height van de afbeelding

    new google.maps.Point(0, 28) 0, height
    */

    for (var i = 0; i < locations.length; i++) {
      var location = locations[i];

      // Als de locatie lat-lon op 0 heeft staan dan skippen we deze
      if (location.Adres.Latitude === null || location.Adres.Longitude === null || location.Adres.Latitude === 0 || location.Adres.Longitude === 0) {
        continue;
      }

      var image = new google.maps.MarkerImage(
          markerEnd,
          new google.maps.Size(23, 28),
          new google.maps.Point(0, 0),
        new google.maps.Point(0, 28));

      var myLatLng = new google.maps.LatLng(location.Adres.Latitude, location.Adres.Longitude);

      gm_ProcessMarker(i, locations.length, myLatLng, image, shape, location.Naam, location, location.Id);
    }

    /* Home locatie, als laatste toevoegen */
    var homeImage = new google.maps.MarkerImage(
        markerStart,
        new google.maps.Size(23, 28),
        new google.maps.Point(0, 0),
      new google.maps.Point(0, 28));

    gm_ProcessMarker(locations.length, 1, new google.maps.LatLng(gm_lat, gm_lng), homeImage, shape, "Start", "", 20000);
  }

  function gm_ProcessMarker(index, numberOfItems, markerLatLng, image, shape, title, praktijk, zindex) {
    if (markerLatLng != null) {

      var toonpopup = praktijk == "" ? false : true;

      var marker = new google.maps.Marker({
        position: markerLatLng,
        map: gm_map,
        icon: image,
        shape: shape,
        title: title,
        zIndex: zindex,
        toonPopup: toonpopup
      });

      gm_markerArray.push(marker);

      gm_bounds.extend(markerLatLng);

      if (toonpopup == false) {
        return;
      }

      var postcode = "",
        straatnaam = "",
        naam = "",
        contentstring = "",
        telefoonNummer = "",
        telefoonnummerSpecialisme = "",
        afstand = "";

      if (praktijk.Adres) {
        postcode = praktijk.Adres.Postcode + " " + praktijk.Adres.Plaatsnaam;
        straatnaam = praktijk.Adres.Straatnaam;
      }

      if (praktijk.Naam) {
        naam = praktijk.Naam.split("\\n");
      }

      if (praktijk.Telefoon) {
        telefoonNummer = praktijk.Telefoon;
      }

      if (praktijk.Afstand && gm_distance_format) {
        afstand = gm_distance_format.replace("{0}", praktijk.Afstand);
      }

      if (praktijk.Specialisme) {
        var specialisme = praktijk.Specialisme;
        if (specialisme.Telefoon) {
          telefoonnummerSpecialisme = specialisme.Telefoon;
        }
      }

      if (naam.length > 0) {
        for (var i = 0; i < naam.length; i++) {
          contentstring += createDetails(naam[i], praktijk.Id, straatnaam, postcode, telefoonNummer, telefoonnummerSpecialisme, afstand);
        }
      }
      else {
        contentstring += createDetails(naam, praktijk.Id, straatnaam, postcode, telefoonNummer, telefoonnummerSpecialisme, afstand);
      }

      marker.contentstring = contentstring;

      gm_markerArray[index] = marker;

      google.maps.event.addListener(marker, 'click', function () {
        gm_infowindow.close();
        if (this.toonPopup == false)
          return;

        gm_infowindow = new google.maps.InfoWindow({
          content: "<div id='googlepraktijkdetails'><div id='pnlDetails'>" + marker.contentstring + "</div></div>"
        });

        gm_infowindow.open(gm_map, marker);
      });

      gm_recenterMap();
    }
  }

  function gm_recenterMap() {
    gm_map.fitBounds(gm_bounds);
    var center = gm_map.getCenter;
    if (gm_map.getZoom() < 7) {
      gm_map.setZoom(7);
    }

    if (gm_map.getZoom() > 13) {
      gm_map.setZoom(13);
    }
    gm_map.getCenter(center);
  }

  function createDetails(naam, parktijkid, straatnaam, postcode, telefoonnummer, telefoonnummerSpecialisme, afstand) {
    console.log(this);
    var details = '';
    details += "<div class='details'>" + createPraktijkLink(naam, parktijkid);
    details += "<ul class='adres'>";
    details += "<li><span>" + straatnaam + "</span></li>";
    details += "<li><span>" + postcode + "</span></li>";
    details += "</ul>";

    details += "<ul>";
    if (afstand !== '') {
      details += "<li><span class='afstand'>Afstand: " + afstand + "</span></li>";
    }

    if (telefoonnummer) {
        details += "<li><span class='icon brandicon brandicon-telefoon'></span><span class='telefoon'>" + telefoonnummer + "</span></li>";
    }

    if (telefoonnummerSpecialisme) {
      details += "<li><span class='telefoon'>" + telefoonnummerSpecialisme + "</span></li>";
    }

    details += "</ul>";
    details += "</div>";

    return details;
  }

  function createPraktijkLink(name, parktijkid) {
    return (gm_detailsLink == null || gm_detailsLink == '')
        ? "<strong>" + name + "</strong>"
        : "<a class='naam' href=\"" + gm_detailsLink + "&id=" + parktijkid + "\">" + name + "</a>";
  }

  function gm_sleep(ms) {
    var dt = new Date();
    dt.setTime(dt.getTime() + ms);
    while (new Date().getTime() < dt.getTime());
  }

})(jQuery);;
/// <reference path="https://code.jquery.com/jquery-1.11.1.js" />

(function ($) {    
        
	$(document).ready(function () {
		InitModalPopups();
	});

})(jQuery);


function InitModalPopups(index) {

    
    var popups = $('.modal-popup');

    if (popups != null && popups.length > 0) {

        $('.modal-popup').each(function () {
            if ($(this).data('content') == '') {
                $(this).hide();
            }
        });

        $('.modal-popup').click(function () {
            $('#modal-popup .modal-body').html($(this).data('content'));
        });
    }
};
(function ($) {

    var vergelijkerurl = "/services/websites/zorgvinder/zorgaanbieder.svc/vergelijking";

    $(document).ready(function () {

        $('#indicatorheaderhide').hide();

        $('#indicatorheaderhide').click(function () {
            $('.zorginzicht').hide();
            $('#indicatorheaderhide').hide();
            $('#indicatorheadershow').show();
        });

        $('#indicatorheadershow').click(function () {
            $('.zorginzicht').show();
            $('#indicatorheaderhide').show();
            $('#indicatorheadershow').hide();
        });


        var toonVergelijker = $("input[name=___TOON_VERGELIJKER]").val();

        initAnimations();

        if (!toonVergelijker) {
            return;
        }

        var mobile = isMobileUser();

        if (mobile) {
            $(".zv-vergelijker").hide();

        } else {
            $(".zv-vergelijker").width($(".inlay-main").width());
            $('.zv-vergelijker').delegate('.vergelijker-sticky-header', 'click',
                function () {
                    toggleVergelijker();
                });

            $(window).on("resize", function () {
                $(".zv-vergelijker").width($(".zv-results-view").width());
            });
        }

        // experience editor..
        if (isPageEditor()) {
            $(".zv-vergelijker").show();
        }

        retrieveVergelijker(false);
    });

    initAnimations = function () {
        $('div.graph.animate').each(function (index) {
            var bar = $(this).find('span.bar');
            if (bar) {
                $(bar).animate({
                    width: $(bar).data('width') + "%"
                }, 1000, "easeInCubic", function () {
                });
            }
        });

        $('span.zv-star-rating.animate').each(function (index) {
            $(this).children().each(function (i, el) {
                setTimeout(function (el) {
                    el.fadeIn();
                }, i * 250, $(this));
            })
        });
    }

    toggleVergelijker = function () {
        $(".zv-vergelijker").find('#toggle-icon').toggleClass('glyphicon-menu-up').toggleClass('glyphicon-menu-down');
        $(".zv-vergelijker").find(".vergelijker-sticky-body").slideToggle("fast", function () {
            //            
        });
    }

    vergelijkerItemClicked = function (elem) {

        var vergelijkerItem = $(elem).closest(".vergelijker-box");
        var id = $(vergelijkerItem).attr("data-zorgaanbieder");
        var checkbox = $(vergelijkerItem).find("#chkVergelijker" + id);
        var bekijk = $(vergelijkerItem).find("#lblbekijk");


        if (checkbox.is(':checked')) {
            addAanbiederVergelijker(id);
        }
        else {

            removeAanbiederVergelijker(id);
        }

    }

    retrieveVergelijker = function (animateVergelijker) {

        animateVergelijker = (animateVergelijker == undefined) ? true : false;

        $.ajax({
            type: 'GET',
            url: vergelijkerurl + '/getvergelijker' + makeUniqueQuerystring(""),
            dataType: "json",
            success: function (data) {

                if (data.Melding != '') {
                    toonModal(data.Melding);
                    return;
                }

                var aanbiederslist = [];
                $.each(data.Aanbieders, function (i, item) {
                    aanbiederslist.push(item.Id);
                });

                $(".vergelijker-box").each(function () {
                    var zpId = $(this).data("zorgaanbieder");
                    setVergelijkerVoorZorgaanbieder(zpId, data.Aantal, $.inArray(zpId, aanbiederslist) == -1 ? false : true);
                });


                if (data.Aantal > 0) {

                    var labelAantalVergelijker = $("input[name=___AANTAL_IN_VERGELIJKER]").val();
                    var labelVoeg1AanbiederToe = $("input[name=___VOEG_1_AANBIEDER_TOE]").val();
                    var labelVoeg2AanbiederToe = $("input[name=___VOEG_2_AANBIEDER_TOE]").val();

                    $("#lblHeaderAantal").html(labelAantalVergelijker.format(data.Aantal));
                    $("#divVergelijkerContent").empty();

                    var outer = $("<div></div>");
                    var table = $("<table></table>");
                    var header = $("<tr></tr>");

                    outer.append(table);

                    for (i = 0; i < 3; i++) {
                        if (i < data.Aantal) {
                            var aanbiederheader = $("<td></td>");
                            var aanbieder = data.Aanbieders[i];
                            aanbiederheader.append("<i onclick='removeAanbiederVergelijker(" + aanbieder.Id + ");' class='glyphicon glyphicon-trash'></i>");
                            aanbiederheader.append("<h4>" + aanbieder.Naam + "</h4>");
                            header.append(aanbiederheader)
                        }
                        else {

                            var labelVoegAanbiederToe = data.Aantal == 1 ? labelVoeg2AanbiederToe : labelVoeg1AanbiederToe;

                            header.append("<td class='empty' rowspan='" + (data.AantalVelden + 1) + "'><div class='vergelijker-item-leeg'><span>" + labelVoegAanbiederToe + "</span></div></td>")
                        }
                    }

                    table.append(header);

                    var labelGeenWaarde = $("input[name=___GEEN_WAARDE]").val();


                    for (i = 0; i < data.AantalVelden; i++) {
                        var regel = $("<tr></tr>");

                        var geenWaardeAantal = 0;

                        for (j = 0; j < data.Aantal; j++) {

                            var veldWaarde = data.Aanbieders[j].VergelijkerVelden[i];

                            if (veldWaarde.indexOf('___GEEN_WAARDE') !== -1) {
                                veldWaarde = labelGeenWaarde;
                                geenWaardeAantal++;
                            }

                            regel.append("<td>" + veldWaarde + "</td>");
                        }

                        if (geenWaardeAantal < data.Aantal) {
                            table.append(regel);
                        }
                    }

                    $("#divVergelijkerContent").append(outer)


                    var isCollapsed = isCollaped = $(".zv-vergelijker").find('#toggle-icon').hasClass('glyphicon-menu-up');

                    if (isCollaped && animateVergelijker) {
                        window.setTimeout(function () {
                            toggleVergelijker();
                            window.setTimeout(function () {
                                toggleVergelijker();
                            }, 3000);
                        }, 50);
                    }
                }
            },
            error: function (xhr) {
                console.log("Error: Ophalen vergelijker gegevens.");
            }
        });


    };

    addAanbiederVergelijker = function (id) {

        $.ajax({
            type: 'POST',
            url: vergelijkerurl + '/add/' + id + makeUniqueQuerystring(location.search),
            dataType: "json",
            success: function (data) {
                if (data.Melding == '') {
                    retrieveVergelijker();
                }
                else {
                    toonModal(data.Melding);
                    var item = $(".vergelijker-box[data-zorgaanbieder='" + id + "']");
                    var checkbox = item.find("#chkVergelijker" + id);
                    checkbox.prop('checked', false);
                }
            },
            error: function (xhr) {
                console.log("Error: Toevoegen zorgaanbieder in vergelijking.");
            }
        });
    }


    removeAanbiederVergelijker = function (id) {

        $.ajax({
            type: 'POST',
            url: vergelijkerurl + '/remove/' + id + makeUniqueQuerystring(location.search),
            dataType: "json",
            success: function (data) {
                if (data.Melding == '') {
                    retrieveVergelijker();
                }
                else {
                    toonModal(data.Melding);

                }
            },
            error: function (xhr) {
                console.log("Error: verwijderen zorgaanbieder.");
            }
        });
    }

    toonModal = function (melding) {

        var $modal = $('#modal-popup');
        var labelMelding = $("input[name=" + melding + "]").val();

        if ($modal.length > 0) {
            var $modalBody = $modal.find('.modal-body');

            if ($modalBody.length > 0) {
                if (melding == '___ERROR_SESSIE_VERLOPEN') {
                    $modal.on('hidden.bs.modal', function () {
                        location.reload();
                    });
                }

                $modalBody.html(labelMelding);
                $modal.modal('show');
            }
        }
    }

    getPrevious = function Previous(pagsize, aantalpag) {
        var pag = Number(document.getElementById("currentpage").value);
        if (pag > 0) {
            getPagina(pag - 1, pagsize, aantalpag);
        }
    }

    getNext = function Next(pagsize, aantalpag) {
        var pag = Number(document.getElementById("currentpage").value);
        if (pag + 1 < aantalpag) {
            getPagina(pag + 1, pagsize, aantalpag);
        }
    }

    getPagina = function Pagina(pag, pagsize, aantalpag) {
        $('.beste_scores_lijst_item').show();
        $('.beste_scores_lijst_item').slice(0, pag * pagsize).hide();
        $('.beste_scores_lijst_item').slice(pag * pagsize, pagsize).show();
        $('.beste_scores_lijst_item').slice((pag + 1) * pagsize).hide();

        $('.beste_scores_paginalink').removeClass("current");
        $('.beste_scores_paginalink').eq(pag + 1).addClass("current");
        document.getElementById("currentpage").value = pag;
    }

    toonModalBestScorend = function (titel, uitleg, zorgpartijen, pagsize) {
        var aantal = zorgpartijen.length;
        var pagina = aantal / pagsize;
        pagina = Math.ceil(pagina);

        var paghtml = "";
        if (aantal > 1) {
            paghtml += '<span class="beste_scores_paginalink" onclick="getPrevious(' + pagsize + ',' + pagina + ')"><</span>';
            for (p = 0; p < pagina; p++) {
                paghtml += '<span class="beste_scores_paginalink" onclick="getPagina(' + p + ',' + pagsize + ',' + pagina + ')">' + (p + 1) + '</span>';
            }
            paghtml += '<span class="beste_scores_paginalink" onclick="getNext(' + pagsize + ',' + pagina + ')">></span>';
        }

        var $modal = $('#modal-popup');
        if ($modal.length > 0) {
            var $modalBody = $modal.find('.modal-body');

            if ($modalBody.length > 0) {
                var html = '<div class="beste_scores_title"><span>' + titel + '</span></div>' +
                           '<div class="beste_scores_uitleg"><span>' + uitleg + '</span></div>' +
                           '<div class="beste_scores_lijst">';
                for (i in zorgpartijen) {
                    html += '<div class="beste_scores_lijst_item"><a href="' + zorgpartijen[i].DetailsUrl + '"><span>' + zorgpartijen[i].Naam + '</span></a></div>';
                }
                html += '</div>';
                html += paghtml;
                html += '<input type="hidden" id="currentpage" name="currentpage" value="0" />'
                $modalBody.html(html);
                getPagina(0, pagsize, pagina);
                $modal.modal('show');
            }
        }
    }


    removeAllAanbiedersVergelijker = function () {
        $.ajax({
            type: 'POST',
            url: vergelijkerurl + '/clear' + makeUniqueQuerystring(location.search),
            dataType: "json",
            success: function (data) {
                if (data.Melding == '') {
                    setVergelijkerVoorZorgaanbieder(-1, 0, false);
                }
                else {
                    toonModal(data.Melding);
                }
            },
            error: function (xhr) {
                console.log("Error: verwijderen zorgaanbieders uit vergelijking.");
            }
        });
    }

    setVergelijkerVoorZorgaanbieder = function (id, aantalInVergelijker, checked) {

        if (aantalInVergelijker == 0) {
            var isCollapsed = isCollaped = $(".zv-vergelijker").find('#toggle-icon').hasClass('glyphicon-menu-up');

            if (!isCollaped) {
                toggleVergelijker();
            }
        }

        if (id > 0) {
            var item = $(".vergelijker-box[data-zorgaanbieder='" + id + "']");
            var checkbox = item.find("#chkVergelijker" + id);

            item.find(".vergelijker-label").hide();

            if (checked) {
                if (aantalInVergelijker > 1) {
                    item.find(".vergelijker-label[data-type='bekijk']").show();
                }
                else {
                    item.find(".vergelijker-label[data-type='result-toegevoegd']").show();
                }
                item.find(".vergelijker-label[data-type='toegevoegd']").show();
                checkbox.prop('checked', true);

            }
            else {
                item.find(".vergelijker-label[data-type='toevoegen']").show();
                checkbox.prop('checked', false);
            }
        }

        $(".vergelijker-box").each(function (index, element) {
            var id = $(this).attr("data-zorgaanbieder");
            var itemCheckbox = $(this).find("#chkVergelijker" + id);
            var hyperlink = $(this).find("a");

            hyperlink.hide();

            if (aantalInVergelijker > 1) {
                hyperlink.show();
            }
            else if (aantalInVergelijker == 0) {
                itemCheckbox.prop('checked', false);
                $(this).find(".vergelijker-label[data-type='bekijk']").hide();
                $(this).find(".vergelijker-label[data-type='result-toegevoegd']").hide();
                $(this).find(".vergelijker-label[data-type='toegevoegd']").hide();
                $(this).find(".vergelijker-label[data-type='toevoegen']").show();
            }
        });

        if (aantalInVergelijker >= 1 && !isMobileUser()) {
            $(".zv-vergelijker").show();
        }
        else {
            $(".zv-vergelijker").hide();
        }
    }

    bekijkVergelijking = function () {
        try {
            $('#lbBekijkVergelijking')[0].click();
        }
        catch (e) {
            console.log("Error: bekijken vergelijking.");
        }
    }


})(jQuery);;
/// <reference path="https://code.jquery.com/jquery-1.11.1.js" />

(function ($) {
  $(document).ready(function () {
    $('div.drilldown-a-tot-z li a.has-children').on('click', function () {
      $('div.drilldown-a-tot-z li a').removeClass('active');
      $(this).addClass('active');
      var letter = $(this).data('letter').toLowerCase();
      setActiveLetter(letter);      
    });

    initPlaatsen();
  });

  function initPlaatsen() {
    var hash = window.location.hash;
    if (hash.length > 1) {
      var content = hash.substring(1);

      if (content.length == 1) {
        setActiveLetter(content.toLowerCase());
      }
      else {
        setActiveLetter(getFirstLetter());
      }
    }
    else {
      setActiveLetter(getFirstLetter());
    }
  }

  function setActiveLetter(letter) {
    $('.categorie').hide();
    $('.categorie-' + letter).show();
  }

  function getFirstLetter() {
    var lettersWithChildren = $('div.drilldown-a-tot-z li a.has-children');
    return lettersWithChildren ? $(lettersWithChildren[0]).data('letter') : 'a';
  }
})(jQuery);;
// Sticky Plugin v1.0.3 for jQuery
// =============
// Author: Anthony Garand
// Improvements by German M. Bravo (Kronuz) and Ruud Kamphuis (ruudk)
// Improvements by Leonardo C. Daronco (daronco)
// Created: 02/14/2011
// Date: 07/20/2015
// Website: http://stickyjs.com/
// Description: Makes an element on the page stick on the screen as you scroll
//              It will only set the 'top' and 'position' of your element, you
//              might need to adjust the width in some cases.

(function (factory) {
    if (typeof define === 'function' && define.amd) {
        // AMD. Register as an anonymous module.
        define(['jquery'], factory);
    } else if (typeof module === 'object' && module.exports) {
        // Node/CommonJS
        module.exports = factory(require('jquery'));
    } else {
        // Browser globals
        factory(jQuery);
    }
}(function ($) {
    var slice = Array.prototype.slice; // save ref to original slice()
    var splice = Array.prototype.splice; // save ref to original slice()

    var defaults = {
        topSpacing: 0,
        bottomSpacing: 0,
        className: 'is-sticky',
        wrapperClassName: 'sticky-wrapper',
        center: false,
        getWidthFrom: '',
        widthFromWrapper: true, // works only when .getWidthFrom is empty
        responsiveWidth: false
    },
      $window = $(window),
      $document = $(document),
      sticked = [],
      windowHeight = $window.height(),
      scroller = function () {
          var scrollTop = $window.scrollTop(),
            documentHeight = $document.height(),
            dwh = documentHeight - windowHeight,
            extra = (scrollTop > dwh) ? dwh - scrollTop : 0;

          for (var i = 0, l = sticked.length; i < l; i++) {
              var s = sticked[i],
                elementTop = s.stickyWrapper.offset().top,
                etse = elementTop - s.topSpacing - extra;

              //update height in case of dynamic content
              s.stickyWrapper.css('height', s.stickyElement.outerHeight());

              if (scrollTop <= etse) {
                  if (s.currentTop !== null) {
                      s.stickyElement
                        .css({
                            'width': '',
                            'position': '',
                            'top': ''
                        });
                      s.stickyElement.parent().removeClass(s.className);
                      s.stickyElement.trigger('sticky-end', [s]);
                      s.currentTop = null;
                  }
              }
              else {
                  var newTop = documentHeight - s.stickyElement.outerHeight()
                    - s.topSpacing - s.bottomSpacing - scrollTop - extra;
                  if (newTop < 0) {
                      newTop = newTop + s.topSpacing;
                  } else {
                      newTop = s.topSpacing;
                  }
                  if (s.currentTop !== newTop) {
                      var newWidth;
                      if (s.getWidthFrom) {
                          newWidth = $(s.getWidthFrom).width() || null;
                      } else if (s.widthFromWrapper) {
                          newWidth = s.stickyWrapper.width();
                      }
                      if (newWidth == null) {
                          newWidth = s.stickyElement.width();
                      }
                      s.stickyElement
                        .css('width', newWidth)
                        .css('position', 'fixed')
                        .css('top', newTop);

                      s.stickyElement.parent().addClass(s.className);

                      if (s.currentTop === null) {
                          s.stickyElement.trigger('sticky-start', [s]);
                      } else {
                          // sticky is started but it have to be repositioned
                          s.stickyElement.trigger('sticky-update', [s]);
                      }

                      if (s.currentTop === s.topSpacing && s.currentTop > newTop || s.currentTop === null && newTop < s.topSpacing) {
                          // just reached bottom || just started to stick but bottom is already reached
                          s.stickyElement.trigger('sticky-bottom-reached', [s]);
                      } else if (s.currentTop !== null && newTop === s.topSpacing && s.currentTop < newTop) {
                          // sticky is started && sticked at topSpacing && overflowing from top just finished
                          s.stickyElement.trigger('sticky-bottom-unreached', [s]);
                      }

                      s.currentTop = newTop;
                  }

                  // Check if sticky has reached end of container and stop sticking
                  var stickyWrapperContainer = s.stickyWrapper.parent();
                  var unstick = (s.stickyElement.offset().top + s.stickyElement.outerHeight() >= stickyWrapperContainer.offset().top + stickyWrapperContainer.outerHeight()) && (s.stickyElement.offset().top <= s.topSpacing);

                  if (unstick) {
                      s.stickyElement
                        .css('position', 'absolute')
                        .css('top', '')
                        .css('bottom', 0);
                  } else {
                      s.stickyElement
                        .css('position', 'fixed')
                        .css('top', newTop)
                        .css('bottom', '');
                  }
              }
          }
      },
      resizer = function () {
          windowHeight = $window.height();

          for (var i = 0, l = sticked.length; i < l; i++) {
              var s = sticked[i];
              var newWidth = null;
              if (s.getWidthFrom) {
                  if (s.responsiveWidth) {
                      newWidth = $(s.getWidthFrom).width();
                  }
              } else if (s.widthFromWrapper) {
                  newWidth = s.stickyWrapper.width();
              }
              if (newWidth != null) {
                  s.stickyElement.css('width', newWidth);
              }
          }
      },
      methods = {
          init: function (options) {
              var o = $.extend({}, defaults, options);
              return this.each(function () {
                  var stickyElement = $(this);

                  var stickyId = stickyElement.attr('id');
                  var wrapperId = stickyId ? stickyId + '-' + defaults.wrapperClassName : defaults.wrapperClassName;
                  var wrapper = $('<div></div>')
                    .attr('id', wrapperId)
                    .addClass(o.wrapperClassName);

                  stickyElement.wrapAll(wrapper);

                  var stickyWrapper = stickyElement.parent();

                  if (o.center) {
                      stickyWrapper.css({ width: stickyElement.outerWidth(), marginLeft: "auto", marginRight: "auto" });
                  }

                  if (stickyElement.css("float") === "right") {
                      stickyElement.css({ "float": "none" }).parent().css({ "float": "right" });
                  }

                  o.stickyElement = stickyElement;
                  o.stickyWrapper = stickyWrapper;
                  o.currentTop = null;

                  sticked.push(o);

                  methods.setWrapperHeight(this);
                  methods.setupChangeListeners(this);
              });
          },

          setWrapperHeight: function (stickyElement) {
              var element = $(stickyElement);
              var stickyWrapper = element.parent();
              if (stickyWrapper) {
                  stickyWrapper.css('height', element.outerHeight());
              }
          },

          setupChangeListeners: function (stickyElement) {
              if (window.MutationObserver) {
                  var mutationObserver = new window.MutationObserver(function (mutations) {
                      if (mutations[0].addedNodes.length || mutations[0].removedNodes.length) {
                          methods.setWrapperHeight(stickyElement);
                      }
                  });
                  mutationObserver.observe(stickyElement, { subtree: true, childList: true });
              } else {
                  stickyElement.addEventListener('DOMNodeInserted', function () {
                      methods.setWrapperHeight(stickyElement);
                  }, false);
                  stickyElement.addEventListener('DOMNodeRemoved', function () {
                      methods.setWrapperHeight(stickyElement);
                  }, false);
              }
          },
          update: scroller,
          unstick: function (options) {
              return this.each(function () {
                  var that = this;
                  var unstickyElement = $(that);

                  var removeIdx = -1;
                  var i = sticked.length;
                  while (i-- > 0) {
                      if (sticked[i].stickyElement.get(0) === that) {
                          splice.call(sticked, i, 1);
                          removeIdx = i;
                      }
                  }
                  if (removeIdx !== -1) {
                      unstickyElement.unwrap();
                      unstickyElement
                        .css({
                            'width': '',
                            'position': '',
                            'top': '',
                            'float': ''
                        })
                      ;
                  }
              });
          }
      };

    // should be more efficient than using $window.scroll(scroller) and $window.resize(resizer):
    if (window.addEventListener) {
        window.addEventListener('scroll', scroller, false);
        window.addEventListener('resize', resizer, false);
    } else if (window.attachEvent) {
        window.attachEvent('onscroll', scroller);
        window.attachEvent('onresize', resizer);
    }

    $.fn.sticky = function (method) {
        if (methods[method]) {
            return methods[method].apply(this, slice.call(arguments, 1));
        } else if (typeof method === 'object' || !method) {
            return methods.init.apply(this, arguments);
        } else {
            $.error('Method ' + method + ' does not exist on jQuery.sticky');
        }
    };

    $.fn.unstick = function (method) {
        if (methods[method]) {
            return methods[method].apply(this, slice.call(arguments, 1));
        } else if (typeof method === 'object' || !method) {
            return methods.unstick.apply(this, arguments);
        } else {
            $.error('Method ' + method + ' does not exist on jQuery.sticky');
        }
    };
    $(function () {
        setTimeout(scroller, 0);
    });
}));
;
