;(function(global,factory){typeof exports==='object'&&typeof module!=='undefined'?module.exports=factory():typeof define==='function'&&define.amd?define(factory):global.moment=factory()}(this,(function(){'use strict';var hookCallback;function hooks(){return hookCallback.apply(null,arguments);}
function setHookCallback(callback){hookCallback=callback;}
function isArray(input){return input instanceof Array||Object.prototype.toString.call(input)==='[object Array]';}
function isObject(input){return input!=null&&Object.prototype.toString.call(input)==='[object Object]';}
function isObjectEmpty(obj){var k;for(k in obj){return false;}
return true;}
function isNumber(input){return typeof input==='number'||Object.prototype.toString.call(input)==='[object Number]';}
function isDate(input){return input instanceof Date||Object.prototype.toString.call(input)==='[object Date]';}
function map(arr,fn){var res=[],i;for(i=0;i<arr.length;++i){res.push(fn(arr[i],i));}
return res;}
function hasOwnProp(a,b){return Object.prototype.hasOwnProperty.call(a,b);}
function extend(a,b){for(var i in b){if(hasOwnProp(b,i)){a[i]=b[i];}}
if(hasOwnProp(b,'toString')){a.toString=b.toString;}
if(hasOwnProp(b,'valueOf')){a.valueOf=b.valueOf;}
return a;}
function createUTC(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,true).utc();}
function defaultParsingFlags(){return{empty:false,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:false,invalidMonth:null,invalidFormat:false,userInvalidated:false,iso:false,parsedDateParts:[],meridiem:null};}
function getParsingFlags(m){if(m._pf==null){m._pf=defaultParsingFlags();}
return m._pf;}
var some;if(Array.prototype.some){some=Array.prototype.some;}else{some=function(fun){var t=Object(this);var len=t.length>>>0;for(var i=0;i<len;i++){if(i in t&&fun.call(this,t[i],i,t)){return true;}}
return false;};}
var some$1=some;function isValid(m){if(m._isValid==null){var flags=getParsingFlags(m);var parsedParts=some$1.call(flags.parsedDateParts,function(i){return i!=null;});var isNowValid=!isNaN(m._d.getTime())&&flags.overflow<0&&!flags.empty&&!flags.invalidMonth&&!flags.invalidWeekday&&!flags.nullInput&&!flags.invalidFormat&&!flags.userInvalidated&&(!flags.meridiem||(flags.meridiem&&parsedParts));if(m._strict){isNowValid=isNowValid&&flags.charsLeftOver===0&&flags.unusedTokens.length===0&&flags.bigHour===undefined;}
if(Object.isFrozen==null||!Object.isFrozen(m)){m._isValid=isNowValid;}
else{return isNowValid;}}
return m._isValid;}
function createInvalid(flags){var m=createUTC(NaN);if(flags!=null){extend(getParsingFlags(m),flags);}
else{getParsingFlags(m).userInvalidated=true;}
return m;}
function isUndefined(input){return input===void 0;}
var momentProperties=hooks.momentProperties=[];function copyConfig(to,from){var i,prop,val;if(!isUndefined(from._isAMomentObject)){to._isAMomentObject=from._isAMomentObject;}
if(!isUndefined(from._i)){to._i=from._i;}
if(!isUndefined(from._f)){to._f=from._f;}
if(!isUndefined(from._l)){to._l=from._l;}
if(!isUndefined(from._strict)){to._strict=from._strict;}
if(!isUndefined(from._tzm)){to._tzm=from._tzm;}
if(!isUndefined(from._isUTC)){to._isUTC=from._isUTC;}
if(!isUndefined(from._offset)){to._offset=from._offset;}
if(!isUndefined(from._pf)){to._pf=getParsingFlags(from);}
if(!isUndefined(from._locale)){to._locale=from._locale;}
if(momentProperties.length>0){for(i in momentProperties){prop=momentProperties[i];val=from[prop];if(!isUndefined(val)){to[prop]=val;}}}
return to;}
var updateInProgress=false;function Moment(config){copyConfig(this,config);this._d=new Date(config._d!=null?config._d.getTime():NaN);if(!this.isValid()){this._d=new Date(NaN);}
if(updateInProgress===false){updateInProgress=true;hooks.updateOffset(this);updateInProgress=false;}}
function isMoment(obj){return obj instanceof Moment||(obj!=null&&obj._isAMomentObject!=null);}
function absFloor(number){if(number<0){return Math.ceil(number)||0;}else{return Math.floor(number);}}
function toInt(argumentForCoercion){var coercedNumber=+argumentForCoercion,value=0;if(coercedNumber!==0&&isFinite(coercedNumber)){value=absFloor(coercedNumber);}
return value;}
function compareArrays(array1,array2,dontConvert){var len=Math.min(array1.length,array2.length),lengthDiff=Math.abs(array1.length-array2.length),diffs=0,i;for(i=0;i<len;i++){if((dontConvert&&array1[i]!==array2[i])||(!dontConvert&&toInt(array1[i])!==toInt(array2[i]))){diffs++;}}
return diffs+lengthDiff;}
function warn(msg){if(hooks.suppressDeprecationWarnings===false&&(typeof console!=='undefined')&&console.warn){console.warn('Deprecation warning: '+msg);}}
function deprecate(msg,fn){var firstTime=true;return extend(function(){if(hooks.deprecationHandler!=null){hooks.deprecationHandler(null,msg);}
if(firstTime){var args=[];var arg;for(var i=0;i<arguments.length;i++){arg='';if(typeof arguments[i]==='object'){arg+='\n['+i+'] ';for(var key in arguments[0]){arg+=key+': '+arguments[0][key]+', ';}
arg=arg.slice(0,-2);}else{arg=arguments[i];}
args.push(arg);}
warn(msg+'\nArguments: '+Array.prototype.slice.call(args).join('')+'\n'+(new Error()).stack);firstTime=false;}
return fn.apply(this,arguments);},fn);}
var deprecations={};function deprecateSimple(name,msg){if(hooks.deprecationHandler!=null){hooks.deprecationHandler(name,msg);}
if(!deprecations[name]){warn(msg);deprecations[name]=true;}}
hooks.suppressDeprecationWarnings=false;hooks.deprecationHandler=null;function isFunction(input){return input instanceof Function||Object.prototype.toString.call(input)==='[object Function]';}
function set(config){var prop,i;for(i in config){prop=config[i];if(isFunction(prop)){this[i]=prop;}else{this['_'+i]=prop;}}
this._config=config;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+'|'+(/\d{1,2}/).source);}
function mergeConfigs(parentConfig,childConfig){var res=extend({},parentConfig),prop;for(prop in childConfig){if(hasOwnProp(childConfig,prop)){if(isObject(parentConfig[prop])&&isObject(childConfig[prop])){res[prop]={};extend(res[prop],parentConfig[prop]);extend(res[prop],childConfig[prop]);}else if(childConfig[prop]!=null){res[prop]=childConfig[prop];}else{delete res[prop];}}}
for(prop in parentConfig){if(hasOwnProp(parentConfig,prop)&&!hasOwnProp(childConfig,prop)&&isObject(parentConfig[prop])){res[prop]=extend({},res[prop]);}}
return res;}
function Locale(config){if(config!=null){this.set(config);}}
var keys;if(Object.keys){keys=Object.keys;}else{keys=function(obj){var i,res=[];for(i in obj){if(hasOwnProp(obj,i)){res.push(i);}}
return res;};}
var keys$1=keys;var defaultCalendar={sameDay:'[Today at] LT',nextDay:'[Tomorrow at] LT',nextWeek:'dddd [at] LT',lastDay:'[Yesterday at] LT',lastWeek:'[Last] dddd [at] LT',sameElse:'L'};function calendar(key,mom,now){var output=this._calendar[key]||this._calendar['sameElse'];return isFunction(output)?output.call(mom,now):output;}
var defaultLongDateFormat={LTS:'h:mm:ss A',LT:'h:mm A',L:'MM/DD/YYYY',LL:'MMMM D, YYYY',LLL:'MMMM D, YYYY h:mm A',LLLL:'dddd, MMMM D, YYYY h:mm A'};function longDateFormat(key){var format=this._longDateFormat[key],formatUpper=this._longDateFormat[key.toUpperCase()];if(format||!formatUpper){return format;}
this._longDateFormat[key]=formatUpper.replace(/MMMM|MM|DD|dddd/g,function(val){return val.slice(1);});return this._longDateFormat[key];}
var defaultInvalidDate='Invalid date';function invalidDate(){return this._invalidDate;}
var defaultOrdinal='%d';var defaultOrdinalParse=/\d{1,2}/;function ordinal(number){return this._ordinal.replace('%d',number);}
var defaultRelativeTime={future:'in %s',past:'%s ago',s:'a few seconds',m:'a minute',mm:'%d minutes',h:'an hour',hh:'%d hours',d:'a day',dd:'%d days',M:'a month',MM:'%d months',y:'a year',yy:'%d years'};function relativeTime(number,withoutSuffix,string,isFuture){var output=this._relativeTime[string];return(isFunction(output))?output(number,withoutSuffix,string,isFuture):output.replace(/%d/i,number);}
function pastFuture(diff,output){var format=this._relativeTime[diff>0?'future':'past'];return isFunction(format)?format(output):format.replace(/%s/i,output);}
var aliases={};function addUnitAlias(unit,shorthand){var lowerCase=unit.toLowerCase();aliases[lowerCase]=aliases[lowerCase+'s']=aliases[shorthand]=unit;}
function normalizeUnits(units){return typeof units==='string'?aliases[units]||aliases[units.toLowerCase()]:undefined;}
function normalizeObjectUnits(inputObject){var normalizedInput={},normalizedProp,prop;for(prop in inputObject){if(hasOwnProp(inputObject,prop)){normalizedProp=normalizeUnits(prop);if(normalizedProp){normalizedInput[normalizedProp]=inputObject[prop];}}}
return normalizedInput;}
var priorities={};function addUnitPriority(unit,priority){priorities[unit]=priority;}
function getPrioritizedUnits(unitsObj){var units=[];for(var u in unitsObj){units.push({unit:u,priority:priorities[u]});}
units.sort(function(a,b){return a.priority-b.priority;});return units;}
function makeGetSet(unit,keepTime){return function(value){if(value!=null){set$1(this,unit,value);hooks.updateOffset(this,keepTime);return this;}else{return get(this,unit);}};}
function get(mom,unit){return mom.isValid()?mom._d['get'+(mom._isUTC?'UTC':'')+unit]():NaN;}
function set$1(mom,unit,value){if(mom.isValid()){mom._d['set'+(mom._isUTC?'UTC':'')+unit](value);}}
function stringGet(units){units=normalizeUnits(units);if(isFunction(this[units])){return this[units]();}
return this;}
function stringSet(units,value){if(typeof units==='object'){units=normalizeObjectUnits(units);var prioritized=getPrioritizedUnits(units);for(var i=0;i<prioritized.length;i++){this[prioritized[i].unit](units[prioritized[i].unit]);}}else{units=normalizeUnits(units);if(isFunction(this[units])){return this[units](value);}}
return this;}
function zeroFill(number,targetLength,forceSign){var absNumber=''+Math.abs(number),zerosToFill=targetLength-absNumber.length,sign=number>=0;return(sign?(forceSign?'+':''):'-')+
Math.pow(10,Math.max(0,zerosToFill)).toString().substr(1)+absNumber;}
var formattingTokens=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;var localFormattingTokens=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;var formatFunctions={};var formatTokenFunctions={};function addFormatToken(token,padded,ordinal,callback){var func=callback;if(typeof callback==='string'){func=function(){return this[callback]();};}
if(token){formatTokenFunctions[token]=func;}
if(padded){formatTokenFunctions[padded[0]]=function(){return zeroFill(func.apply(this,arguments),padded[1],padded[2]);};}
if(ordinal){formatTokenFunctions[ordinal]=function(){return this.localeData().ordinal(func.apply(this,arguments),token);};}}
function removeFormattingTokens(input){if(input.match(/\[[\s\S]/)){return input.replace(/^\[|\]$/g,'');}
return input.replace(/\\/g,'');}
function makeFormatFunction(format){var array=format.match(formattingTokens),i,length;for(i=0,length=array.length;i<length;i++){if(formatTokenFunctions[array[i]]){array[i]=formatTokenFunctions[array[i]];}else{array[i]=removeFormattingTokens(array[i]);}}
return function(mom){var output='',i;for(i=0;i<length;i++){output+=array[i]instanceof Function?array[i].call(mom,format):array[i];}
return output;};}
function formatMoment(m,format){if(!m.isValid()){return m.localeData().invalidDate();}
format=expandFormat(format,m.localeData());formatFunctions[format]=formatFunctions[format]||makeFormatFunction(format);return formatFunctions[format](m);}
function expandFormat(format,locale){var i=5;function replaceLongDateFormatTokens(input){return locale.longDateFormat(input)||input;}
localFormattingTokens.lastIndex=0;while(i>=0&&localFormattingTokens.test(format)){format=format.replace(localFormattingTokens,replaceLongDateFormatTokens);localFormattingTokens.lastIndex=0;i-=1;}
return format;}
var match1=/\d/;var match2=/\d\d/;var match3=/\d{3}/;var match4=/\d{4}/;var match6=/[+-]?\d{6}/;var match1to2=/\d\d?/;var match3to4=/\d\d\d\d?/;var match5to6=/\d\d\d\d\d\d?/;var match1to3=/\d{1,3}/;var match1to4=/\d{1,4}/;var match1to6=/[+-]?\d{1,6}/;var matchUnsigned=/\d+/;var matchSigned=/[+-]?\d+/;var matchOffset=/Z|[+-]\d\d:?\d\d/gi;var matchShortOffset=/Z|[+-]\d\d(?::?\d\d)?/gi;var matchTimestamp=/[+-]?\d+(\.\d{1,3})?/;var matchWord=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i;var regexes={};function addRegexToken(token,regex,strictRegex){regexes[token]=isFunction(regex)?regex:function(isStrict,localeData){return(isStrict&&strictRegex)?strictRegex:regex;};}
function getParseRegexForToken(token,config){if(!hasOwnProp(regexes,token)){return new RegExp(unescapeFormat(token));}
return regexes[token](config._strict,config._locale);}
function unescapeFormat(s){return regexEscape(s.replace('\\','').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(matched,p1,p2,p3,p4){return p1||p2||p3||p4;}));}
function regexEscape(s){return s.replace(/[-\/\\^$*+?.()|[\]{}]/g,'\\$&');}
var tokens={};function addParseToken(token,callback){var i,func=callback;if(typeof token==='string'){token=[token];}
if(isNumber(callback)){func=function(input,array){array[callback]=toInt(input);};}
for(i=0;i<token.length;i++){tokens[token[i]]=func;}}
function addWeekParseToken(token,callback){addParseToken(token,function(input,array,config,token){config._w=config._w||{};callback(input,config._w,config,token);});}
function addTimeToArrayFromToken(token,input,config){if(input!=null&&hasOwnProp(tokens,token)){tokens[token](input,config._a,config,token);}}
var YEAR=0;var MONTH=1;var DATE=2;var HOUR=3;var MINUTE=4;var SECOND=5;var MILLISECOND=6;var WEEK=7;var WEEKDAY=8;var indexOf;if(Array.prototype.indexOf){indexOf=Array.prototype.indexOf;}else{indexOf=function(o){var i;for(i=0;i<this.length;++i){if(this[i]===o){return i;}}
return-1;};}
var indexOf$1=indexOf;function daysInMonth(year,month){return new Date(Date.UTC(year,month+1,0)).getUTCDate();}
addFormatToken('M',['MM',2],'Mo',function(){return this.month()+1;});addFormatToken('MMM',0,0,function(format){return this.localeData().monthsShort(this,format);});addFormatToken('MMMM',0,0,function(format){return this.localeData().months(this,format);});addUnitAlias('month','M');addUnitPriority('month',8);addRegexToken('M',match1to2);addRegexToken('MM',match1to2,match2);addRegexToken('MMM',function(isStrict,locale){return locale.monthsShortRegex(isStrict);});addRegexToken('MMMM',function(isStrict,locale){return locale.monthsRegex(isStrict);});addParseToken(['M','MM'],function(input,array){array[MONTH]=toInt(input)-1;});addParseToken(['MMM','MMMM'],function(input,array,config,token){var month=config._locale.monthsParse(input,token,config._strict);if(month!=null){array[MONTH]=month;}else{getParsingFlags(config).invalidMonth=input;}});var MONTHS_IN_FORMAT=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/;var defaultLocaleMonths='January_February_March_April_May_June_July_August_September_October_November_December'.split('_');function localeMonths(m,format){if(!m){return this._months;}
return isArray(this._months)?this._months[m.month()]:this._months[(this._months.isFormat||MONTHS_IN_FORMAT).test(format)?'format':'standalone'][m.month()];}
var defaultLocaleMonthsShort='Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');function localeMonthsShort(m,format){if(!m){return this._monthsShort;}
return isArray(this._monthsShort)?this._monthsShort[m.month()]:this._monthsShort[MONTHS_IN_FORMAT.test(format)?'format':'standalone'][m.month()];}
function handleStrictParse(monthName,format,strict){var i,ii,mom,llc=monthName.toLocaleLowerCase();if(!this._monthsParse){this._monthsParse=[];this._longMonthsParse=[];this._shortMonthsParse=[];for(i=0;i<12;++i){mom=createUTC([2000,i]);this._shortMonthsParse[i]=this.monthsShort(mom,'').toLocaleLowerCase();this._longMonthsParse[i]=this.months(mom,'').toLocaleLowerCase();}}
if(strict){if(format==='MMM'){ii=indexOf$1.call(this._shortMonthsParse,llc);return ii!==-1?ii:null;}else{ii=indexOf$1.call(this._longMonthsParse,llc);return ii!==-1?ii:null;}}else{if(format==='MMM'){ii=indexOf$1.call(this._shortMonthsParse,llc);if(ii!==-1){return ii;}
ii=indexOf$1.call(this._longMonthsParse,llc);return ii!==-1?ii:null;}else{ii=indexOf$1.call(this._longMonthsParse,llc);if(ii!==-1){return ii;}
ii=indexOf$1.call(this._shortMonthsParse,llc);return ii!==-1?ii:null;}}}
function localeMonthsParse(monthName,format,strict){var i,mom,regex;if(this._monthsParseExact){return handleStrictParse.call(this,monthName,format,strict);}
if(!this._monthsParse){this._monthsParse=[];this._longMonthsParse=[];this._shortMonthsParse=[];}
for(i=0;i<12;i++){mom=createUTC([2000,i]);if(strict&&!this._longMonthsParse[i]){this._longMonthsParse[i]=new RegExp('^'+this.months(mom,'').replace('.','')+'$','i');this._shortMonthsParse[i]=new RegExp('^'+this.monthsShort(mom,'').replace('.','')+'$','i');}
if(!strict&&!this._monthsParse[i]){regex='^'+this.months(mom,'')+'|^'+this.monthsShort(mom,'');this._monthsParse[i]=new RegExp(regex.replace('.',''),'i');}
if(strict&&format==='MMMM'&&this._longMonthsParse[i].test(monthName)){return i;}else if(strict&&format==='MMM'&&this._shortMonthsParse[i].test(monthName)){return i;}else if(!strict&&this._monthsParse[i].test(monthName)){return i;}}}
function setMonth(mom,value){var dayOfMonth;if(!mom.isValid()){return mom;}
if(typeof value==='string'){if(/^\d+$/.test(value)){value=toInt(value);}else{value=mom.localeData().monthsParse(value);if(!isNumber(value)){return mom;}}}
dayOfMonth=Math.min(mom.date(),daysInMonth(mom.year(),value));mom._d['set'+(mom._isUTC?'UTC':'')+'Month'](value,dayOfMonth);return mom;}
function getSetMonth(value){if(value!=null){setMonth(this,value);hooks.updateOffset(this,true);return this;}else{return get(this,'Month');}}
function getDaysInMonth(){return daysInMonth(this.year(),this.month());}
var defaultMonthsShortRegex=matchWord;function monthsShortRegex(isStrict){if(this._monthsParseExact){if(!hasOwnProp(this,'_monthsRegex')){computeMonthsParse.call(this);}
if(isStrict){return this._monthsShortStrictRegex;}else{return this._monthsShortRegex;}}else{if(!hasOwnProp(this,'_monthsShortRegex')){this._monthsShortRegex=defaultMonthsShortRegex;}
return this._monthsShortStrictRegex&&isStrict?this._monthsShortStrictRegex:this._monthsShortRegex;}}
var defaultMonthsRegex=matchWord;function monthsRegex(isStrict){if(this._monthsParseExact){if(!hasOwnProp(this,'_monthsRegex')){computeMonthsParse.call(this);}
if(isStrict){return this._monthsStrictRegex;}else{return this._monthsRegex;}}else{if(!hasOwnProp(this,'_monthsRegex')){this._monthsRegex=defaultMonthsRegex;}
return this._monthsStrictRegex&&isStrict?this._monthsStrictRegex:this._monthsRegex;}}
function computeMonthsParse(){function cmpLenRev(a,b){return b.length-a.length;}
var shortPieces=[],longPieces=[],mixedPieces=[],i,mom;for(i=0;i<12;i++){mom=createUTC([2000,i]);shortPieces.push(this.monthsShort(mom,''));longPieces.push(this.months(mom,''));mixedPieces.push(this.months(mom,''));mixedPieces.push(this.monthsShort(mom,''));}
shortPieces.sort(cmpLenRev);longPieces.sort(cmpLenRev);mixedPieces.sort(cmpLenRev);for(i=0;i<12;i++){shortPieces[i]=regexEscape(shortPieces[i]);longPieces[i]=regexEscape(longPieces[i]);}
for(i=0;i<24;i++){mixedPieces[i]=regexEscape(mixedPieces[i]);}
this._monthsRegex=new RegExp('^('+mixedPieces.join('|')+')','i');this._monthsShortRegex=this._monthsRegex;this._monthsStrictRegex=new RegExp('^('+longPieces.join('|')+')','i');this._monthsShortStrictRegex=new RegExp('^('+shortPieces.join('|')+')','i');}
addFormatToken('Y',0,0,function(){var y=this.year();return y<=9999?''+y:'+'+y;});addFormatToken(0,['YY',2],0,function(){return this.year()%100;});addFormatToken(0,['YYYY',4],0,'year');addFormatToken(0,['YYYYY',5],0,'year');addFormatToken(0,['YYYYYY',6,true],0,'year');addUnitAlias('year','y');addUnitPriority('year',1);addRegexToken('Y',matchSigned);addRegexToken('YY',match1to2,match2);addRegexToken('YYYY',match1to4,match4);addRegexToken('YYYYY',match1to6,match6);addRegexToken('YYYYYY',match1to6,match6);addParseToken(['YYYYY','YYYYYY'],YEAR);addParseToken('YYYY',function(input,array){array[YEAR]=input.length===2?hooks.parseTwoDigitYear(input):toInt(input);});addParseToken('YY',function(input,array){array[YEAR]=hooks.parseTwoDigitYear(input);});addParseToken('Y',function(input,array){array[YEAR]=parseInt(input,10);});function daysInYear(year){return isLeapYear(year)?366:365;}
function isLeapYear(year){return(year%4===0&&year%100!==0)||year%400===0;}
hooks.parseTwoDigitYear=function(input){return toInt(input)+(toInt(input)>68?1900:2000);};var getSetYear=makeGetSet('FullYear',true);function getIsLeapYear(){return isLeapYear(this.year());}
function createDate(y,m,d,h,M,s,ms){var date=new Date(y,m,d,h,M,s,ms);if(y<100&&y>=0&&isFinite(date.getFullYear())){date.setFullYear(y);}
return date;}
function createUTCDate(y){var date=new Date(Date.UTC.apply(null,arguments));if(y<100&&y>=0&&isFinite(date.getUTCFullYear())){date.setUTCFullYear(y);}
return date;}
function firstWeekOffset(year,dow,doy){var
fwd=7+dow-doy,fwdlw=(7+createUTCDate(year,0,fwd).getUTCDay()-dow)%7;return-fwdlw+fwd-1;}
function dayOfYearFromWeeks(year,week,weekday,dow,doy){var localWeekday=(7+weekday-dow)%7,weekOffset=firstWeekOffset(year,dow,doy),dayOfYear=1+7*(week-1)+localWeekday+weekOffset,resYear,resDayOfYear;if(dayOfYear<=0){resYear=year-1;resDayOfYear=daysInYear(resYear)+dayOfYear;}else if(dayOfYear>daysInYear(year)){resYear=year+1;resDayOfYear=dayOfYear-daysInYear(year);}else{resYear=year;resDayOfYear=dayOfYear;}
return{year:resYear,dayOfYear:resDayOfYear};}
function weekOfYear(mom,dow,doy){var weekOffset=firstWeekOffset(mom.year(),dow,doy),week=Math.floor((mom.dayOfYear()-weekOffset-1)/7)+1,resWeek,resYear;if(week<1){resYear=mom.year()-1;resWeek=week+weeksInYear(resYear,dow,doy);}else if(week>weeksInYear(mom.year(),dow,doy)){resWeek=week-weeksInYear(mom.year(),dow,doy);resYear=mom.year()+1;}else{resYear=mom.year();resWeek=week;}
return{week:resWeek,year:resYear};}
function weeksInYear(year,dow,doy){var weekOffset=firstWeekOffset(year,dow,doy),weekOffsetNext=firstWeekOffset(year+1,dow,doy);return(daysInYear(year)-weekOffset+weekOffsetNext)/7;}
addFormatToken('w',['ww',2],'wo','week');addFormatToken('W',['WW',2],'Wo','isoWeek');addUnitAlias('week','w');addUnitAlias('isoWeek','W');addUnitPriority('week',5);addUnitPriority('isoWeek',5);addRegexToken('w',match1to2);addRegexToken('ww',match1to2,match2);addRegexToken('W',match1to2);addRegexToken('WW',match1to2,match2);addWeekParseToken(['w','ww','W','WW'],function(input,week,config,token){week[token.substr(0,1)]=toInt(input);});function localeWeek(mom){return weekOfYear(mom,this._week.dow,this._week.doy).week;}
var defaultLocaleWeek={dow:0,doy:6};function localeFirstDayOfWeek(){return this._week.dow;}
function localeFirstDayOfYear(){return this._week.doy;}
function getSetWeek(input){var week=this.localeData().week(this);return input==null?week:this.add((input-week)*7,'d');}
function getSetISOWeek(input){var week=weekOfYear(this,1,4).week;return input==null?week:this.add((input-week)*7,'d');}
addFormatToken('d',0,'do','day');addFormatToken('dd',0,0,function(format){return this.localeData().weekdaysMin(this,format);});addFormatToken('ddd',0,0,function(format){return this.localeData().weekdaysShort(this,format);});addFormatToken('dddd',0,0,function(format){return this.localeData().weekdays(this,format);});addFormatToken('e',0,0,'weekday');addFormatToken('E',0,0,'isoWeekday');addUnitAlias('day','d');addUnitAlias('weekday','e');addUnitAlias('isoWeekday','E');addUnitPriority('day',11);addUnitPriority('weekday',11);addUnitPriority('isoWeekday',11);addRegexToken('d',match1to2);addRegexToken('e',match1to2);addRegexToken('E',match1to2);addRegexToken('dd',function(isStrict,locale){return locale.weekdaysMinRegex(isStrict);});addRegexToken('ddd',function(isStrict,locale){return locale.weekdaysShortRegex(isStrict);});addRegexToken('dddd',function(isStrict,locale){return locale.weekdaysRegex(isStrict);});addWeekParseToken(['dd','ddd','dddd'],function(input,week,config,token){var weekday=config._locale.weekdaysParse(input,token,config._strict);if(weekday!=null){week.d=weekday;}else{getParsingFlags(config).invalidWeekday=input;}});addWeekParseToken(['d','e','E'],function(input,week,config,token){week[token]=toInt(input);});function parseWeekday(input,locale){if(typeof input!=='string'){return input;}
if(!isNaN(input)){return parseInt(input,10);}
input=locale.weekdaysParse(input);if(typeof input==='number'){return input;}
return null;}
function parseIsoWeekday(input,locale){if(typeof input==='string'){return locale.weekdaysParse(input)%7||7;}
return isNaN(input)?null:input;}
var defaultLocaleWeekdays='Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');function localeWeekdays(m,format){if(!m){return this._weekdays;}
return isArray(this._weekdays)?this._weekdays[m.day()]:this._weekdays[this._weekdays.isFormat.test(format)?'format':'standalone'][m.day()];}
var defaultLocaleWeekdaysShort='Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');function localeWeekdaysShort(m){return(m)?this._weekdaysShort[m.day()]:this._weekdaysShort;}
var defaultLocaleWeekdaysMin='Su_Mo_Tu_We_Th_Fr_Sa'.split('_');function localeWeekdaysMin(m){return(m)?this._weekdaysMin[m.day()]:this._weekdaysMin;}
function handleStrictParse$1(weekdayName,format,strict){var i,ii,mom,llc=weekdayName.toLocaleLowerCase();if(!this._weekdaysParse){this._weekdaysParse=[];this._shortWeekdaysParse=[];this._minWeekdaysParse=[];for(i=0;i<7;++i){mom=createUTC([2000,1]).day(i);this._minWeekdaysParse[i]=this.weekdaysMin(mom,'').toLocaleLowerCase();this._shortWeekdaysParse[i]=this.weekdaysShort(mom,'').toLocaleLowerCase();this._weekdaysParse[i]=this.weekdays(mom,'').toLocaleLowerCase();}}
if(strict){if(format==='dddd'){ii=indexOf$1.call(this._weekdaysParse,llc);return ii!==-1?ii:null;}else if(format==='ddd'){ii=indexOf$1.call(this._shortWeekdaysParse,llc);return ii!==-1?ii:null;}else{ii=indexOf$1.call(this._minWeekdaysParse,llc);return ii!==-1?ii:null;}}else{if(format==='dddd'){ii=indexOf$1.call(this._weekdaysParse,llc);if(ii!==-1){return ii;}
ii=indexOf$1.call(this._shortWeekdaysParse,llc);if(ii!==-1){return ii;}
ii=indexOf$1.call(this._minWeekdaysParse,llc);return ii!==-1?ii:null;}else if(format==='ddd'){ii=indexOf$1.call(this._shortWeekdaysParse,llc);if(ii!==-1){return ii;}
ii=indexOf$1.call(this._weekdaysParse,llc);if(ii!==-1){return ii;}
ii=indexOf$1.call(this._minWeekdaysParse,llc);return ii!==-1?ii:null;}else{ii=indexOf$1.call(this._minWeekdaysParse,llc);if(ii!==-1){return ii;}
ii=indexOf$1.call(this._weekdaysParse,llc);if(ii!==-1){return ii;}
ii=indexOf$1.call(this._shortWeekdaysParse,llc);return ii!==-1?ii:null;}}}
function localeWeekdaysParse(weekdayName,format,strict){var i,mom,regex;if(this._weekdaysParseExact){return handleStrictParse$1.call(this,weekdayName,format,strict);}
if(!this._weekdaysParse){this._weekdaysParse=[];this._minWeekdaysParse=[];this._shortWeekdaysParse=[];this._fullWeekdaysParse=[];}
for(i=0;i<7;i++){mom=createUTC([2000,1]).day(i);if(strict&&!this._fullWeekdaysParse[i]){this._fullWeekdaysParse[i]=new RegExp('^'+this.weekdays(mom,'').replace('.','\.?')+'$','i');this._shortWeekdaysParse[i]=new RegExp('^'+this.weekdaysShort(mom,'').replace('.','\.?')+'$','i');this._minWeekdaysParse[i]=new RegExp('^'+this.weekdaysMin(mom,'').replace('.','\.?')+'$','i');}
if(!this._weekdaysParse[i]){regex='^'+this.weekdays(mom,'')+'|^'+this.weekdaysShort(mom,'')+'|^'+this.weekdaysMin(mom,'');this._weekdaysParse[i]=new RegExp(regex.replace('.',''),'i');}
if(strict&&format==='dddd'&&this._fullWeekdaysParse[i].test(weekdayName)){return i;}else if(strict&&format==='ddd'&&this._shortWeekdaysParse[i].test(weekdayName)){return i;}else if(strict&&format==='dd'&&this._minWeekdaysParse[i].test(weekdayName)){return i;}else if(!strict&&this._weekdaysParse[i].test(weekdayName)){return i;}}}
function getSetDayOfWeek(input){if(!this.isValid()){return input!=null?this:NaN;}
var day=this._isUTC?this._d.getUTCDay():this._d.getDay();if(input!=null){input=parseWeekday(input,this.localeData());return this.add(input-day,'d');}else{return day;}}
function getSetLocaleDayOfWeek(input){if(!this.isValid()){return input!=null?this:NaN;}
var weekday=(this.day()+7-this.localeData()._week.dow)%7;return input==null?weekday:this.add(input-weekday,'d');}
function getSetISODayOfWeek(input){if(!this.isValid()){return input!=null?this:NaN;}
if(input!=null){var weekday=parseIsoWeekday(input,this.localeData());return this.day(this.day()%7?weekday:weekday-7);}else{return this.day()||7;}}
var defaultWeekdaysRegex=matchWord;function weekdaysRegex(isStrict){if(this._weekdaysParseExact){if(!hasOwnProp(this,'_weekdaysRegex')){computeWeekdaysParse.call(this);}
if(isStrict){return this._weekdaysStrictRegex;}else{return this._weekdaysRegex;}}else{if(!hasOwnProp(this,'_weekdaysRegex')){this._weekdaysRegex=defaultWeekdaysRegex;}
return this._weekdaysStrictRegex&&isStrict?this._weekdaysStrictRegex:this._weekdaysRegex;}}
var defaultWeekdaysShortRegex=matchWord;function weekdaysShortRegex(isStrict){if(this._weekdaysParseExact){if(!hasOwnProp(this,'_weekdaysRegex')){computeWeekdaysParse.call(this);}
if(isStrict){return this._weekdaysShortStrictRegex;}else{return this._weekdaysShortRegex;}}else{if(!hasOwnProp(this,'_weekdaysShortRegex')){this._weekdaysShortRegex=defaultWeekdaysShortRegex;}
return this._weekdaysShortStrictRegex&&isStrict?this._weekdaysShortStrictRegex:this._weekdaysShortRegex;}}
var defaultWeekdaysMinRegex=matchWord;function weekdaysMinRegex(isStrict){if(this._weekdaysParseExact){if(!hasOwnProp(this,'_weekdaysRegex')){computeWeekdaysParse.call(this);}
if(isStrict){return this._weekdaysMinStrictRegex;}else{return this._weekdaysMinRegex;}}else{if(!hasOwnProp(this,'_weekdaysMinRegex')){this._weekdaysMinRegex=defaultWeekdaysMinRegex;}
return this._weekdaysMinStrictRegex&&isStrict?this._weekdaysMinStrictRegex:this._weekdaysMinRegex;}}
function computeWeekdaysParse(){function cmpLenRev(a,b){return b.length-a.length;}
var minPieces=[],shortPieces=[],longPieces=[],mixedPieces=[],i,mom,minp,shortp,longp;for(i=0;i<7;i++){mom=createUTC([2000,1]).day(i);minp=this.weekdaysMin(mom,'');shortp=this.weekdaysShort(mom,'');longp=this.weekdays(mom,'');minPieces.push(minp);shortPieces.push(shortp);longPieces.push(longp);mixedPieces.push(minp);mixedPieces.push(shortp);mixedPieces.push(longp);}
minPieces.sort(cmpLenRev);shortPieces.sort(cmpLenRev);longPieces.sort(cmpLenRev);mixedPieces.sort(cmpLenRev);for(i=0;i<7;i++){shortPieces[i]=regexEscape(shortPieces[i]);longPieces[i]=regexEscape(longPieces[i]);mixedPieces[i]=regexEscape(mixedPieces[i]);}
this._weekdaysRegex=new RegExp('^('+mixedPieces.join('|')+')','i');this._weekdaysShortRegex=this._weekdaysRegex;this._weekdaysMinRegex=this._weekdaysRegex;this._weekdaysStrictRegex=new RegExp('^('+longPieces.join('|')+')','i');this._weekdaysShortStrictRegex=new RegExp('^('+shortPieces.join('|')+')','i');this._weekdaysMinStrictRegex=new RegExp('^('+minPieces.join('|')+')','i');}
function hFormat(){return this.hours()%12||12;}
function kFormat(){return this.hours()||24;}
addFormatToken('H',['HH',2],0,'hour');addFormatToken('h',['hh',2],0,hFormat);addFormatToken('k',['kk',2],0,kFormat);addFormatToken('hmm',0,0,function(){return''+hFormat.apply(this)+zeroFill(this.minutes(),2);});addFormatToken('hmmss',0,0,function(){return''+hFormat.apply(this)+zeroFill(this.minutes(),2)+
zeroFill(this.seconds(),2);});addFormatToken('Hmm',0,0,function(){return''+this.hours()+zeroFill(this.minutes(),2);});addFormatToken('Hmmss',0,0,function(){return''+this.hours()+zeroFill(this.minutes(),2)+
zeroFill(this.seconds(),2);});function meridiem(token,lowercase){addFormatToken(token,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),lowercase);});}
meridiem('a',true);meridiem('A',false);addUnitAlias('hour','h');addUnitPriority('hour',13);function matchMeridiem(isStrict,locale){return locale._meridiemParse;}
addRegexToken('a',matchMeridiem);addRegexToken('A',matchMeridiem);addRegexToken('H',match1to2);addRegexToken('h',match1to2);addRegexToken('HH',match1to2,match2);addRegexToken('hh',match1to2,match2);addRegexToken('hmm',match3to4);addRegexToken('hmmss',match5to6);addRegexToken('Hmm',match3to4);addRegexToken('Hmmss',match5to6);addParseToken(['H','HH'],HOUR);addParseToken(['a','A'],function(input,array,config){config._isPm=config._locale.isPM(input);config._meridiem=input;});addParseToken(['h','hh'],function(input,array,config){array[HOUR]=toInt(input);getParsingFlags(config).bigHour=true;});addParseToken('hmm',function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos));array[MINUTE]=toInt(input.substr(pos));getParsingFlags(config).bigHour=true;});addParseToken('hmmss',function(input,array,config){var pos1=input.length-4;var pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1));array[MINUTE]=toInt(input.substr(pos1,2));array[SECOND]=toInt(input.substr(pos2));getParsingFlags(config).bigHour=true;});addParseToken('Hmm',function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos));array[MINUTE]=toInt(input.substr(pos));});addParseToken('Hmmss',function(input,array,config){var pos1=input.length-4;var pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1));array[MINUTE]=toInt(input.substr(pos1,2));array[SECOND]=toInt(input.substr(pos2));});function localeIsPM(input){return((input+'').toLowerCase().charAt(0)==='p');}
var defaultLocaleMeridiemParse=/[ap]\.?m?\.?/i;function localeMeridiem(hours,minutes,isLower){if(hours>11){return isLower?'pm':'PM';}else{return isLower?'am':'AM';}}
var getSetHour=makeGetSet('Hours',true);var baseConfig={calendar:defaultCalendar,longDateFormat:defaultLongDateFormat,invalidDate:defaultInvalidDate,ordinal:defaultOrdinal,ordinalParse:defaultOrdinalParse,relativeTime:defaultRelativeTime,months:defaultLocaleMonths,monthsShort:defaultLocaleMonthsShort,week:defaultLocaleWeek,weekdays:defaultLocaleWeekdays,weekdaysMin:defaultLocaleWeekdaysMin,weekdaysShort:defaultLocaleWeekdaysShort,meridiemParse:defaultLocaleMeridiemParse};var locales={};var localeFamilies={};var globalLocale;function normalizeLocale(key){return key?key.toLowerCase().replace('_','-'):key;}
function chooseLocale(names){var i=0,j,next,locale,split;while(i<names.length){split=normalizeLocale(names[i]).split('-');j=split.length;next=normalizeLocale(names[i+1]);next=next?next.split('-'):null;while(j>0){locale=loadLocale(split.slice(0,j).join('-'));if(locale){return locale;}
if(next&&next.length>=j&&compareArrays(split,next,true)>=j-1){break;}
j--;}
i++;}
return null;}
function loadLocale(name){var oldLocale=null;if(!locales[name]&&(typeof module!=='undefined')&&module&&module.exports){try{oldLocale=globalLocale._abbr;require('./locale/'+name);getSetGlobalLocale(oldLocale);}catch(e){}}
return locales[name];}
function getSetGlobalLocale(key,values){var data;if(key){if(isUndefined(values)){data=getLocale(key);}
else{data=defineLocale(key,values);}
if(data){globalLocale=data;}}
return globalLocale._abbr;}
function defineLocale(name,config){if(config!==null){var parentConfig=baseConfig;config.abbr=name;if(locales[name]!=null){deprecateSimple('defineLocaleOverride','use moment.updateLocale(localeName, config) to change '+'an existing locale. moment.defineLocale(localeName, '+'config) should only be used for creating a new locale '+'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');parentConfig=locales[name]._config;}else if(config.parentLocale!=null){if(locales[config.parentLocale]!=null){parentConfig=locales[config.parentLocale]._config;}else{if(!localeFamilies[config.parentLocale]){localeFamilies[config.parentLocale]=[];}
localeFamilies[config.parentLocale].push({name:name,config:config});return null;}}
locales[name]=new Locale(mergeConfigs(parentConfig,config));if(localeFamilies[name]){localeFamilies[name].forEach(function(x){defineLocale(x.name,x.config);});}
getSetGlobalLocale(name);return locales[name];}else{delete locales[name];return null;}}
function updateLocale(name,config){if(config!=null){var locale,parentConfig=baseConfig;if(locales[name]!=null){parentConfig=locales[name]._config;}
config=mergeConfigs(parentConfig,config);locale=new Locale(config);locale.parentLocale=locales[name];locales[name]=locale;getSetGlobalLocale(name);}else{if(locales[name]!=null){if(locales[name].parentLocale!=null){locales[name]=locales[name].parentLocale;}else if(locales[name]!=null){delete locales[name];}}}
return locales[name];}
function getLocale(key){var locale;if(key&&key._locale&&key._locale._abbr){key=key._locale._abbr;}
if(!key){return globalLocale;}
if(!isArray(key)){locale=loadLocale(key);if(locale){return locale;}
key=[key];}
return chooseLocale(key);}
function listLocales(){return keys$1(locales);}
function checkOverflow(m){var overflow;var a=m._a;if(a&&getParsingFlags(m).overflow===-2){overflow=a[MONTH]<0||a[MONTH]>11?MONTH:a[DATE]<1||a[DATE]>daysInMonth(a[YEAR],a[MONTH])?DATE:a[HOUR]<0||a[HOUR]>24||(a[HOUR]===24&&(a[MINUTE]!==0||a[SECOND]!==0||a[MILLISECOND]!==0))?HOUR:a[MINUTE]<0||a[MINUTE]>59?MINUTE:a[SECOND]<0||a[SECOND]>59?SECOND:a[MILLISECOND]<0||a[MILLISECOND]>999?MILLISECOND:-1;if(getParsingFlags(m)._overflowDayOfYear&&(overflow<YEAR||overflow>DATE)){overflow=DATE;}
if(getParsingFlags(m)._overflowWeeks&&overflow===-1){overflow=WEEK;}
if(getParsingFlags(m)._overflowWeekday&&overflow===-1){overflow=WEEKDAY;}
getParsingFlags(m).overflow=overflow;}
return m;}
var extendedIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/;var basicIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/;var tzRegex=/Z|[+-]\d\d(?::?\d\d)?/;var isoDates=[['YYYYYY-MM-DD',/[+-]\d{6}-\d\d-\d\d/],['YYYY-MM-DD',/\d{4}-\d\d-\d\d/],['GGGG-[W]WW-E',/\d{4}-W\d\d-\d/],['GGGG-[W]WW',/\d{4}-W\d\d/,false],['YYYY-DDD',/\d{4}-\d{3}/],['YYYY-MM',/\d{4}-\d\d/,false],['YYYYYYMMDD',/[+-]\d{10}/],['YYYYMMDD',/\d{8}/],['GGGG[W]WWE',/\d{4}W\d{3}/],['GGGG[W]WW',/\d{4}W\d{2}/,false],['YYYYDDD',/\d{7}/]];var isoTimes=[['HH:mm:ss.SSSS',/\d\d:\d\d:\d\d\.\d+/],['HH:mm:ss,SSSS',/\d\d:\d\d:\d\d,\d+/],['HH:mm:ss',/\d\d:\d\d:\d\d/],['HH:mm',/\d\d:\d\d/],['HHmmss.SSSS',/\d\d\d\d\d\d\.\d+/],['HHmmss,SSSS',/\d\d\d\d\d\d,\d+/],['HHmmss',/\d\d\d\d\d\d/],['HHmm',/\d\d\d\d/],['HH',/\d\d/]];var aspNetJsonRegex=/^\/?Date\((\-?\d+)/i;function configFromISO(config){var i,l,string=config._i,match=extendedIsoRegex.exec(string)||basicIsoRegex.exec(string),allowTime,dateFormat,timeFormat,tzFormat;if(match){getParsingFlags(config).iso=true;for(i=0,l=isoDates.length;i<l;i++){if(isoDates[i][1].exec(match[1])){dateFormat=isoDates[i][0];allowTime=isoDates[i][2]!==false;break;}}
if(dateFormat==null){config._isValid=false;return;}
if(match[3]){for(i=0,l=isoTimes.length;i<l;i++){if(isoTimes[i][1].exec(match[3])){timeFormat=(match[2]||' ')+isoTimes[i][0];break;}}
if(timeFormat==null){config._isValid=false;return;}}
if(!allowTime&&timeFormat!=null){config._isValid=false;return;}
if(match[4]){if(tzRegex.exec(match[4])){tzFormat='Z';}else{config._isValid=false;return;}}
config._f=dateFormat+(timeFormat||'')+(tzFormat||'');configFromStringAndFormat(config);}else{config._isValid=false;}}
function configFromString(config){var matched=aspNetJsonRegex.exec(config._i);if(matched!==null){config._d=new Date(+matched[1]);return;}
configFromISO(config);if(config._isValid===false){delete config._isValid;hooks.createFromInputFallback(config);}}
hooks.createFromInputFallback=deprecate('value provided is not in a recognized ISO format. moment construction falls back to js Date(), '+'which is not reliable across all browsers and versions. Non ISO date formats are '+'discouraged and will be removed in an upcoming major release. Please refer to '+'http://momentjs.com/guides/#/warnings/js-date/ for more info.',function(config){config._d=new Date(config._i+(config._useUTC?' UTC':''));});function defaults(a,b,c){if(a!=null){return a;}
if(b!=null){return b;}
return c;}
function currentDateArray(config){var nowValue=new Date(hooks.now());if(config._useUTC){return[nowValue.getUTCFullYear(),nowValue.getUTCMonth(),nowValue.getUTCDate()];}
return[nowValue.getFullYear(),nowValue.getMonth(),nowValue.getDate()];}
function configFromArray(config){var i,date,input=[],currentDate,yearToUse;if(config._d){return;}
currentDate=currentDateArray(config);if(config._w&&config._a[DATE]==null&&config._a[MONTH]==null){dayOfYearFromWeekInfo(config);}
if(config._dayOfYear){yearToUse=defaults(config._a[YEAR],currentDate[YEAR]);if(config._dayOfYear>daysInYear(yearToUse)){getParsingFlags(config)._overflowDayOfYear=true;}
date=createUTCDate(yearToUse,0,config._dayOfYear);config._a[MONTH]=date.getUTCMonth();config._a[DATE]=date.getUTCDate();}
for(i=0;i<3&&config._a[i]==null;++i){config._a[i]=input[i]=currentDate[i];}
for(;i<7;i++){config._a[i]=input[i]=(config._a[i]==null)?(i===2?1:0):config._a[i];}
if(config._a[HOUR]===24&&config._a[MINUTE]===0&&config._a[SECOND]===0&&config._a[MILLISECOND]===0){config._nextDay=true;config._a[HOUR]=0;}
config._d=(config._useUTC?createUTCDate:createDate).apply(null,input);if(config._tzm!=null){config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm);}
if(config._nextDay){config._a[HOUR]=24;}}
function dayOfYearFromWeekInfo(config){var w,weekYear,week,weekday,dow,doy,temp,weekdayOverflow;w=config._w;if(w.GG!=null||w.W!=null||w.E!=null){dow=1;doy=4;weekYear=defaults(w.GG,config._a[YEAR],weekOfYear(createLocal(),1,4).year);week=defaults(w.W,1);weekday=defaults(w.E,1);if(weekday<1||weekday>7){weekdayOverflow=true;}}else{dow=config._locale._week.dow;doy=config._locale._week.doy;var curWeek=weekOfYear(createLocal(),dow,doy);weekYear=defaults(w.gg,config._a[YEAR],curWeek.year);week=defaults(w.w,curWeek.week);if(w.d!=null){weekday=w.d;if(weekday<0||weekday>6){weekdayOverflow=true;}}else if(w.e!=null){weekday=w.e+dow;if(w.e<0||w.e>6){weekdayOverflow=true;}}else{weekday=dow;}}
if(week<1||week>weeksInYear(weekYear,dow,doy)){getParsingFlags(config)._overflowWeeks=true;}else if(weekdayOverflow!=null){getParsingFlags(config)._overflowWeekday=true;}else{temp=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy);config._a[YEAR]=temp.year;config._dayOfYear=temp.dayOfYear;}}
hooks.ISO_8601=function(){};function configFromStringAndFormat(config){if(config._f===hooks.ISO_8601){configFromISO(config);return;}
config._a=[];getParsingFlags(config).empty=true;var string=''+config._i,i,parsedInput,tokens,token,skipped,stringLength=string.length,totalParsedInputLength=0;tokens=expandFormat(config._f,config._locale).match(formattingTokens)||[];for(i=0;i<tokens.length;i++){token=tokens[i];parsedInput=(string.match(getParseRegexForToken(token,config))||[])[0];if(parsedInput){skipped=string.substr(0,string.indexOf(parsedInput));if(skipped.length>0){getParsingFlags(config).unusedInput.push(skipped);}
string=string.slice(string.indexOf(parsedInput)+parsedInput.length);totalParsedInputLength+=parsedInput.length;}
if(formatTokenFunctions[token]){if(parsedInput){getParsingFlags(config).empty=false;}
else{getParsingFlags(config).unusedTokens.push(token);}
addTimeToArrayFromToken(token,parsedInput,config);}
else if(config._strict&&!parsedInput){getParsingFlags(config).unusedTokens.push(token);}}
getParsingFlags(config).charsLeftOver=stringLength-totalParsedInputLength;if(string.length>0){getParsingFlags(config).unusedInput.push(string);}
if(config._a[HOUR]<=12&&getParsingFlags(config).bigHour===true&&config._a[HOUR]>0){getParsingFlags(config).bigHour=undefined;}
getParsingFlags(config).parsedDateParts=config._a.slice(0);getParsingFlags(config).meridiem=config._meridiem;config._a[HOUR]=meridiemFixWrap(config._locale,config._a[HOUR],config._meridiem);configFromArray(config);checkOverflow(config);}
function meridiemFixWrap(locale,hour,meridiem){var isPm;if(meridiem==null){return hour;}
if(locale.meridiemHour!=null){return locale.meridiemHour(hour,meridiem);}else if(locale.isPM!=null){isPm=locale.isPM(meridiem);if(isPm&&hour<12){hour+=12;}
if(!isPm&&hour===12){hour=0;}
return hour;}else{return hour;}}
function configFromStringAndArray(config){var tempConfig,bestMoment,scoreToBeat,i,currentScore;if(config._f.length===0){getParsingFlags(config).invalidFormat=true;config._d=new Date(NaN);return;}
for(i=0;i<config._f.length;i++){currentScore=0;tempConfig=copyConfig({},config);if(config._useUTC!=null){tempConfig._useUTC=config._useUTC;}
tempConfig._f=config._f[i];configFromStringAndFormat(tempConfig);if(!isValid(tempConfig)){continue;}
currentScore+=getParsingFlags(tempConfig).charsLeftOver;currentScore+=getParsingFlags(tempConfig).unusedTokens.length*10;getParsingFlags(tempConfig).score=currentScore;if(scoreToBeat==null||currentScore<scoreToBeat){scoreToBeat=currentScore;bestMoment=tempConfig;}}
extend(config,bestMoment||tempConfig);}
function configFromObject(config){if(config._d){return;}
var i=normalizeObjectUnits(config._i);config._a=map([i.year,i.month,i.day||i.date,i.hour,i.minute,i.second,i.millisecond],function(obj){return obj&&parseInt(obj,10);});configFromArray(config);}
function createFromConfig(config){var res=new Moment(checkOverflow(prepareConfig(config)));if(res._nextDay){res.add(1,'d');res._nextDay=undefined;}
return res;}
function prepareConfig(config){var input=config._i,format=config._f;config._locale=config._locale||getLocale(config._l);if(input===null||(format===undefined&&input==='')){return createInvalid({nullInput:true});}
if(typeof input==='string'){config._i=input=config._locale.preparse(input);}
if(isMoment(input)){return new Moment(checkOverflow(input));}else if(isDate(input)){config._d=input;}else if(isArray(format)){configFromStringAndArray(config);}else if(format){configFromStringAndFormat(config);}else{configFromInput(config);}
if(!isValid(config)){config._d=null;}
return config;}
function configFromInput(config){var input=config._i;if(input===undefined){config._d=new Date(hooks.now());}else if(isDate(input)){config._d=new Date(input.valueOf());}else if(typeof input==='string'){configFromString(config);}else if(isArray(input)){config._a=map(input.slice(0),function(obj){return parseInt(obj,10);});configFromArray(config);}else if(typeof(input)==='object'){configFromObject(config);}else if(isNumber(input)){config._d=new Date(input);}else{hooks.createFromInputFallback(config);}}
function createLocalOrUTC(input,format,locale,strict,isUTC){var c={};if(locale===true||locale===false){strict=locale;locale=undefined;}
if((isObject(input)&&isObjectEmpty(input))||(isArray(input)&&input.length===0)){input=undefined;}
c._isAMomentObject=true;c._useUTC=c._isUTC=isUTC;c._l=locale;c._i=input;c._f=format;c._strict=strict;return createFromConfig(c);}
function createLocal(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,false);}
var prototypeMin=deprecate('moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',function(){var other=createLocal.apply(null,arguments);if(this.isValid()&&other.isValid()){return other<this?this:other;}else{return createInvalid();}});var prototypeMax=deprecate('moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',function(){var other=createLocal.apply(null,arguments);if(this.isValid()&&other.isValid()){return other>this?this:other;}else{return createInvalid();}});function pickBy(fn,moments){var res,i;if(moments.length===1&&isArray(moments[0])){moments=moments[0];}
if(!moments.length){return createLocal();}
res=moments[0];for(i=1;i<moments.length;++i){if(!moments[i].isValid()||moments[i][fn](res)){res=moments[i];}}
return res;}
function min(){var args=[].slice.call(arguments,0);return pickBy('isBefore',args);}
function max(){var args=[].slice.call(arguments,0);return pickBy('isAfter',args);}
var now=function(){return Date.now?Date.now():+(new Date());};function Duration(duration){var normalizedInput=normalizeObjectUnits(duration),years=normalizedInput.year||0,quarters=normalizedInput.quarter||0,months=normalizedInput.month||0,weeks=normalizedInput.week||0,days=normalizedInput.day||0,hours=normalizedInput.hour||0,minutes=normalizedInput.minute||0,seconds=normalizedInput.second||0,milliseconds=normalizedInput.millisecond||0;this._milliseconds=+milliseconds+
seconds*1e3+
minutes*6e4+
hours*1000*60*60;this._days=+days+
weeks*7;this._months=+months+
quarters*3+
years*12;this._data={};this._locale=getLocale();this._bubble();}
function isDuration(obj){return obj instanceof Duration;}
function absRound(number){if(number<0){return Math.round(-1*number)* -1;}else{return Math.round(number);}}
function offset(token,separator){addFormatToken(token,0,0,function(){var offset=this.utcOffset();var sign='+';if(offset<0){offset=-offset;sign='-';}
return sign+zeroFill(~~(offset/60),2)+separator+zeroFill(~~(offset)%60,2);});}
offset('Z',':');offset('ZZ','');addRegexToken('Z',matchShortOffset);addRegexToken('ZZ',matchShortOffset);addParseToken(['Z','ZZ'],function(input,array,config){config._useUTC=true;config._tzm=offsetFromString(matchShortOffset,input);});var chunkOffset=/([\+\-]|\d\d)/gi;function offsetFromString(matcher,string){var matches=(string||'').match(matcher);if(matches===null){return null;}
var chunk=matches[matches.length-1]||[];var parts=(chunk+'').match(chunkOffset)||['-',0,0];var minutes=+(parts[1]*60)+toInt(parts[2]);return minutes===0?0:parts[0]==='+'?minutes:-minutes;}
function cloneWithOffset(input,model){var res,diff;if(model._isUTC){res=model.clone();diff=(isMoment(input)||isDate(input)?input.valueOf():createLocal(input).valueOf())-res.valueOf();res._d.setTime(res._d.valueOf()+diff);hooks.updateOffset(res,false);return res;}else{return createLocal(input).local();}}
function getDateOffset(m){return-Math.round(m._d.getTimezoneOffset()/15)*15;}
hooks.updateOffset=function(){};function getSetOffset(input,keepLocalTime){var offset=this._offset||0,localAdjust;if(!this.isValid()){return input!=null?this:NaN;}
if(input!=null){if(typeof input==='string'){input=offsetFromString(matchShortOffset,input);if(input===null){return this;}}else if(Math.abs(input)<16){input=input*60;}
if(!this._isUTC&&keepLocalTime){localAdjust=getDateOffset(this);}
this._offset=input;this._isUTC=true;if(localAdjust!=null){this.add(localAdjust,'m');}
if(offset!==input){if(!keepLocalTime||this._changeInProgress){addSubtract(this,createDuration(input-offset,'m'),1,false);}else if(!this._changeInProgress){this._changeInProgress=true;hooks.updateOffset(this,true);this._changeInProgress=null;}}
return this;}else{return this._isUTC?offset:getDateOffset(this);}}
function getSetZone(input,keepLocalTime){if(input!=null){if(typeof input!=='string'){input=-input;}
this.utcOffset(input,keepLocalTime);return this;}else{return-this.utcOffset();}}
function setOffsetToUTC(keepLocalTime){return this.utcOffset(0,keepLocalTime);}
function setOffsetToLocal(keepLocalTime){if(this._isUTC){this.utcOffset(0,keepLocalTime);this._isUTC=false;if(keepLocalTime){this.subtract(getDateOffset(this),'m');}}
return this;}
function setOffsetToParsedOffset(){if(this._tzm!=null){this.utcOffset(this._tzm);}else if(typeof this._i==='string'){var tZone=offsetFromString(matchOffset,this._i);if(tZone!=null){this.utcOffset(tZone);}
else{this.utcOffset(0,true);}}
return this;}
function hasAlignedHourOffset(input){if(!this.isValid()){return false;}
input=input?createLocal(input).utcOffset():0;return(this.utcOffset()-input)%60===0;}
function isDaylightSavingTime(){return(this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset());}
function isDaylightSavingTimeShifted(){if(!isUndefined(this._isDSTShifted)){return this._isDSTShifted;}
var c={};copyConfig(c,this);c=prepareConfig(c);if(c._a){var other=c._isUTC?createUTC(c._a):createLocal(c._a);this._isDSTShifted=this.isValid()&&compareArrays(c._a,other.toArray())>0;}else{this._isDSTShifted=false;}
return this._isDSTShifted;}
function isLocal(){return this.isValid()?!this._isUTC:false;}
function isUtcOffset(){return this.isValid()?this._isUTC:false;}
function isUtc(){return this.isValid()?this._isUTC&&this._offset===0:false;}
var aspNetRegex=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/;var isoRegex=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;function createDuration(input,key){var duration=input,match=null,sign,ret,diffRes;if(isDuration(input)){duration={ms:input._milliseconds,d:input._days,M:input._months};}else if(isNumber(input)){duration={};if(key){duration[key]=input;}else{duration.milliseconds=input;}}else if(!!(match=aspNetRegex.exec(input))){sign=(match[1]==='-')?-1:1;duration={y:0,d:toInt(match[DATE])*sign,h:toInt(match[HOUR])*sign,m:toInt(match[MINUTE])*sign,s:toInt(match[SECOND])*sign,ms:toInt(absRound(match[MILLISECOND]*1000))*sign};}else if(!!(match=isoRegex.exec(input))){sign=(match[1]==='-')?-1:1;duration={y:parseIso(match[2],sign),M:parseIso(match[3],sign),w:parseIso(match[4],sign),d:parseIso(match[5],sign),h:parseIso(match[6],sign),m:parseIso(match[7],sign),s:parseIso(match[8],sign)};}else if(duration==null){duration={};}else if(typeof duration==='object'&&('from' in duration||'to' in duration)){diffRes=momentsDifference(createLocal(duration.from),createLocal(duration.to));duration={};duration.ms=diffRes.milliseconds;duration.M=diffRes.months;}
ret=new Duration(duration);if(isDuration(input)&&hasOwnProp(input,'_locale')){ret._locale=input._locale;}
return ret;}
createDuration.fn=Duration.prototype;function parseIso(inp,sign){var res=inp&&parseFloat(inp.replace(',','.'));return(isNaN(res)?0:res)*sign;}
function positiveMomentsDifference(base,other){var res={milliseconds:0,months:0};res.months=other.month()-base.month()+
(other.year()-base.year())*12;if(base.clone().add(res.months,'M').isAfter(other)){--res.months;}
res.milliseconds=+other- +(base.clone().add(res.months,'M'));return res;}
function momentsDifference(base,other){var res;if(!(base.isValid()&&other.isValid())){return{milliseconds:0,months:0};}
other=cloneWithOffset(other,base);if(base.isBefore(other)){res=positiveMomentsDifference(base,other);}else{res=positiveMomentsDifference(other,base);res.milliseconds=-res.milliseconds;res.months=-res.months;}
return res;}
function createAdder(direction,name){return function(val,period){var dur,tmp;if(period!==null&&!isNaN(+period)){deprecateSimple(name,'moment().'+name+'(period, number) is deprecated. Please use moment().'+name+'(number, period). '+'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');tmp=val;val=period;period=tmp;}
val=typeof val==='string'?+val:val;dur=createDuration(val,period);addSubtract(this,dur,direction);return this;};}
function addSubtract(mom,duration,isAdding,updateOffset){var milliseconds=duration._milliseconds,days=absRound(duration._days),months=absRound(duration._months);if(!mom.isValid()){return;}
updateOffset=updateOffset==null?true:updateOffset;if(milliseconds){mom._d.setTime(mom._d.valueOf()+milliseconds*isAdding);}
if(days){set$1(mom,'Date',get(mom,'Date')+days*isAdding);}
if(months){setMonth(mom,get(mom,'Month')+months*isAdding);}
if(updateOffset){hooks.updateOffset(mom,days||months);}}
var add=createAdder(1,'add');var subtract=createAdder(-1,'subtract');function getCalendarFormat(myMoment,now){var diff=myMoment.diff(now,'days',true);return diff<-6?'sameElse':diff<-1?'lastWeek':diff<0?'lastDay':diff<1?'sameDay':diff<2?'nextDay':diff<7?'nextWeek':'sameElse';}
function calendar$1(time,formats){var now=time||createLocal(),sod=cloneWithOffset(now,this).startOf('day'),format=hooks.calendarFormat(this,sod)||'sameElse';var output=formats&&(isFunction(formats[format])?formats[format].call(this,now):formats[format]);return this.format(output||this.localeData().calendar(format,this,createLocal(now)));}
function clone(){return new Moment(this);}
function isAfter(input,units){var localInput=isMoment(input)?input:createLocal(input);if(!(this.isValid()&&localInput.isValid())){return false;}
units=normalizeUnits(!isUndefined(units)?units:'millisecond');if(units==='millisecond'){return this.valueOf()>localInput.valueOf();}else{return localInput.valueOf()<this.clone().startOf(units).valueOf();}}
function isBefore(input,units){var localInput=isMoment(input)?input:createLocal(input);if(!(this.isValid()&&localInput.isValid())){return false;}
units=normalizeUnits(!isUndefined(units)?units:'millisecond');if(units==='millisecond'){return this.valueOf()<localInput.valueOf();}else{return this.clone().endOf(units).valueOf()<localInput.valueOf();}}
function isBetween(from,to,units,inclusivity){inclusivity=inclusivity||'()';return(inclusivity[0]==='('?this.isAfter(from,units):!this.isBefore(from,units))&&(inclusivity[1]===')'?this.isBefore(to,units):!this.isAfter(to,units));}
function isSame(input,units){var localInput=isMoment(input)?input:createLocal(input),inputMs;if(!(this.isValid()&&localInput.isValid())){return false;}
units=normalizeUnits(units||'millisecond');if(units==='millisecond'){return this.valueOf()===localInput.valueOf();}else{inputMs=localInput.valueOf();return this.clone().startOf(units).valueOf()<=inputMs&&inputMs<=this.clone().endOf(units).valueOf();}}
function isSameOrAfter(input,units){return this.isSame(input,units)||this.isAfter(input,units);}
function isSameOrBefore(input,units){return this.isSame(input,units)||this.isBefore(input,units);}
function diff(input,units,asFloat){var that,zoneDelta,delta,output;if(!this.isValid()){return NaN;}
that=cloneWithOffset(input,this);if(!that.isValid()){return NaN;}
zoneDelta=(that.utcOffset()-this.utcOffset())*6e4;units=normalizeUnits(units);if(units==='year'||units==='month'||units==='quarter'){output=monthDiff(this,that);if(units==='quarter'){output=output/3;}else if(units==='year'){output=output/12;}}else{delta=this-that;output=units==='second'?delta/1e3:units==='minute'?delta/6e4:units==='hour'?delta/36e5:units==='day'?(delta-zoneDelta)/864e5:units==='week'?(delta-zoneDelta)/6048e5:delta;}
return asFloat?output:absFloor(output);}
function monthDiff(a,b){var wholeMonthDiff=((b.year()-a.year())*12)+(b.month()-a.month()),anchor=a.clone().add(wholeMonthDiff,'months'),anchor2,adjust;if(b-anchor<0){anchor2=a.clone().add(wholeMonthDiff-1,'months');adjust=(b-anchor)/(anchor-anchor2);}else{anchor2=a.clone().add(wholeMonthDiff+1,'months');adjust=(b-anchor)/(anchor2-anchor);}
return-(wholeMonthDiff+adjust)||0;}
hooks.defaultFormat='YYYY-MM-DDTHH:mm:ssZ';hooks.defaultFormatUtc='YYYY-MM-DDTHH:mm:ss[Z]';function toString(){return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');}
function toISOString(){var m=this.clone().utc();if(0<m.year()&&m.year()<=9999){if(isFunction(Date.prototype.toISOString)){return this.toDate().toISOString();}else{return formatMoment(m,'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');}}else{return formatMoment(m,'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');}}
function inspect(){if(!this.isValid()){return'moment.invalid(/* '+this._i+' */)';}
var func='moment';var zone='';if(!this.isLocal()){func=this.utcOffset()===0?'moment.utc':'moment.parseZone';zone='Z';}
var prefix='['+func+'("]';var year=(0<this.year()&&this.year()<=9999)?'YYYY':'YYYYYY';var datetime='-MM-DD[T]HH:mm:ss.SSS';var suffix=zone+'[")]';return this.format(prefix+year+datetime+suffix);}
function format(inputString){if(!inputString){inputString=this.isUtc()?hooks.defaultFormatUtc:hooks.defaultFormat;}
var output=formatMoment(this,inputString);return this.localeData().postformat(output);}
function from(time,withoutSuffix){if(this.isValid()&&((isMoment(time)&&time.isValid())||createLocal(time).isValid())){return createDuration({to:this,from:time}).locale(this.locale()).humanize(!withoutSuffix);}else{return this.localeData().invalidDate();}}
function fromNow(withoutSuffix){return this.from(createLocal(),withoutSuffix);}
function to(time,withoutSuffix){if(this.isValid()&&((isMoment(time)&&time.isValid())||createLocal(time).isValid())){return createDuration({from:this,to:time}).locale(this.locale()).humanize(!withoutSuffix);}else{return this.localeData().invalidDate();}}
function toNow(withoutSuffix){return this.to(createLocal(),withoutSuffix);}
function locale(key){var newLocaleData;if(key===undefined){return this._locale._abbr;}else{newLocaleData=getLocale(key);if(newLocaleData!=null){this._locale=newLocaleData;}
return this;}}
var lang=deprecate('moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',function(key){if(key===undefined){return this.localeData();}else{return this.locale(key);}});function localeData(){return this._locale;}
function startOf(units){units=normalizeUnits(units);switch(units){case'year':this.month(0);case'quarter':case'month':this.date(1);case'week':case'isoWeek':case'day':case'date':this.hours(0);case'hour':this.minutes(0);case'minute':this.seconds(0);case'second':this.milliseconds(0);}
if(units==='week'){this.weekday(0);}
if(units==='isoWeek'){this.isoWeekday(1);}
if(units==='quarter'){this.month(Math.floor(this.month()/3)*3);}
return this;}
function endOf(units){units=normalizeUnits(units);if(units===undefined||units==='millisecond'){return this;}
if(units==='date'){units='day';}
return this.startOf(units).add(1,(units==='isoWeek'?'week':units)).subtract(1,'ms');}
function valueOf(){return this._d.valueOf()-((this._offset||0)*60000);}
function unix(){return Math.floor(this.valueOf()/1000);}
function toDate(){return new Date(this.valueOf());}
function toArray(){var m=this;return[m.year(),m.month(),m.date(),m.hour(),m.minute(),m.second(),m.millisecond()];}
function toObject(){var m=this;return{years:m.year(),months:m.month(),date:m.date(),hours:m.hours(),minutes:m.minutes(),seconds:m.seconds(),milliseconds:m.milliseconds()};}
function toJSON(){return this.isValid()?this.toISOString():null;}
function isValid$1(){return isValid(this);}
function parsingFlags(){return extend({},getParsingFlags(this));}
function invalidAt(){return getParsingFlags(this).overflow;}
function creationData(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict};}
addFormatToken(0,['gg',2],0,function(){return this.weekYear()%100;});addFormatToken(0,['GG',2],0,function(){return this.isoWeekYear()%100;});function addWeekYearFormatToken(token,getter){addFormatToken(0,[token,token.length],0,getter);}
addWeekYearFormatToken('gggg','weekYear');addWeekYearFormatToken('ggggg','weekYear');addWeekYearFormatToken('GGGG','isoWeekYear');addWeekYearFormatToken('GGGGG','isoWeekYear');addUnitAlias('weekYear','gg');addUnitAlias('isoWeekYear','GG');addUnitPriority('weekYear',1);addUnitPriority('isoWeekYear',1);addRegexToken('G',matchSigned);addRegexToken('g',matchSigned);addRegexToken('GG',match1to2,match2);addRegexToken('gg',match1to2,match2);addRegexToken('GGGG',match1to4,match4);addRegexToken('gggg',match1to4,match4);addRegexToken('GGGGG',match1to6,match6);addRegexToken('ggggg',match1to6,match6);addWeekParseToken(['gggg','ggggg','GGGG','GGGGG'],function(input,week,config,token){week[token.substr(0,2)]=toInt(input);});addWeekParseToken(['gg','GG'],function(input,week,config,token){week[token]=hooks.parseTwoDigitYear(input);});function getSetWeekYear(input){return getSetWeekYearHelper.call(this,input,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy);}
function getSetISOWeekYear(input){return getSetWeekYearHelper.call(this,input,this.isoWeek(),this.isoWeekday(),1,4);}
function getISOWeeksInYear(){return weeksInYear(this.year(),1,4);}
function getWeeksInYear(){var weekInfo=this.localeData()._week;return weeksInYear(this.year(),weekInfo.dow,weekInfo.doy);}
function getSetWeekYearHelper(input,week,weekday,dow,doy){var weeksTarget;if(input==null){return weekOfYear(this,dow,doy).year;}else{weeksTarget=weeksInYear(input,dow,doy);if(week>weeksTarget){week=weeksTarget;}
return setWeekAll.call(this,input,week,weekday,dow,doy);}}
function setWeekAll(weekYear,week,weekday,dow,doy){var dayOfYearData=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy),date=createUTCDate(dayOfYearData.year,0,dayOfYearData.dayOfYear);this.year(date.getUTCFullYear());this.month(date.getUTCMonth());this.date(date.getUTCDate());return this;}
addFormatToken('Q',0,'Qo','quarter');addUnitAlias('quarter','Q');addUnitPriority('quarter',7);addRegexToken('Q',match1);addParseToken('Q',function(input,array){array[MONTH]=(toInt(input)-1)*3;});function getSetQuarter(input){return input==null?Math.ceil((this.month()+1)/3):this.month((input-1)*3+this.month()%3);}
addFormatToken('D',['DD',2],'Do','date');addUnitAlias('date','D');addUnitPriority('date',9);addRegexToken('D',match1to2);addRegexToken('DD',match1to2,match2);addRegexToken('Do',function(isStrict,locale){return isStrict?locale._ordinalParse:locale._ordinalParseLenient;});addParseToken(['D','DD'],DATE);addParseToken('Do',function(input,array){array[DATE]=toInt(input.match(match1to2)[0],10);});var getSetDayOfMonth=makeGetSet('Date',true);addFormatToken('DDD',['DDDD',3],'DDDo','dayOfYear');addUnitAlias('dayOfYear','DDD');addUnitPriority('dayOfYear',4);addRegexToken('DDD',match1to3);addRegexToken('DDDD',match3);addParseToken(['DDD','DDDD'],function(input,array,config){config._dayOfYear=toInt(input);});function getSetDayOfYear(input){var dayOfYear=Math.round((this.clone().startOf('day')-this.clone().startOf('year'))/864e5)+1;return input==null?dayOfYear:this.add((input-dayOfYear),'d');}
addFormatToken('m',['mm',2],0,'minute');addUnitAlias('minute','m');addUnitPriority('minute',14);addRegexToken('m',match1to2);addRegexToken('mm',match1to2,match2);addParseToken(['m','mm'],MINUTE);var getSetMinute=makeGetSet('Minutes',false);addFormatToken('s',['ss',2],0,'second');addUnitAlias('second','s');addUnitPriority('second',15);addRegexToken('s',match1to2);addRegexToken('ss',match1to2,match2);addParseToken(['s','ss'],SECOND);var getSetSecond=makeGetSet('Seconds',false);addFormatToken('S',0,0,function(){return~~(this.millisecond()/100);});addFormatToken(0,['SS',2],0,function(){return~~(this.millisecond()/10);});addFormatToken(0,['SSS',3],0,'millisecond');addFormatToken(0,['SSSS',4],0,function(){return this.millisecond()*10;});addFormatToken(0,['SSSSS',5],0,function(){return this.millisecond()*100;});addFormatToken(0,['SSSSSS',6],0,function(){return this.millisecond()*1000;});addFormatToken(0,['SSSSSSS',7],0,function(){return this.millisecond()*10000;});addFormatToken(0,['SSSSSSSS',8],0,function(){return this.millisecond()*100000;});addFormatToken(0,['SSSSSSSSS',9],0,function(){return this.millisecond()*1000000;});addUnitAlias('millisecond','ms');addUnitPriority('millisecond',16);addRegexToken('S',match1to3,match1);addRegexToken('SS',match1to3,match2);addRegexToken('SSS',match1to3,match3);var token;for(token='SSSS';token.length<=9;token+='S'){addRegexToken(token,matchUnsigned);}
function parseMs(input,array){array[MILLISECOND]=toInt(('0.'+input)*1000);}
for(token='S';token.length<=9;token+='S'){addParseToken(token,parseMs);}
var getSetMillisecond=makeGetSet('Milliseconds',false);addFormatToken('z',0,0,'zoneAbbr');addFormatToken('zz',0,0,'zoneName');function getZoneAbbr(){return this._isUTC?'UTC':'';}
function getZoneName(){return this._isUTC?'Coordinated Universal Time':'';}
var proto=Moment.prototype;proto.add=add;proto.calendar=calendar$1;proto.clone=clone;proto.diff=diff;proto.endOf=endOf;proto.format=format;proto.from=from;proto.fromNow=fromNow;proto.to=to;proto.toNow=toNow;proto.get=stringGet;proto.invalidAt=invalidAt;proto.isAfter=isAfter;proto.isBefore=isBefore;proto.isBetween=isBetween;proto.isSame=isSame;proto.isSameOrAfter=isSameOrAfter;proto.isSameOrBefore=isSameOrBefore;proto.isValid=isValid$1;proto.lang=lang;proto.locale=locale;proto.localeData=localeData;proto.max=prototypeMax;proto.min=prototypeMin;proto.parsingFlags=parsingFlags;proto.set=stringSet;proto.startOf=startOf;proto.subtract=subtract;proto.toArray=toArray;proto.toObject=toObject;proto.toDate=toDate;proto.toISOString=toISOString;proto.inspect=inspect;proto.toJSON=toJSON;proto.toString=toString;proto.unix=unix;proto.valueOf=valueOf;proto.creationData=creationData;proto.year=getSetYear;proto.isLeapYear=getIsLeapYear;proto.weekYear=getSetWeekYear;proto.isoWeekYear=getSetISOWeekYear;proto.quarter=proto.quarters=getSetQuarter;proto.month=getSetMonth;proto.daysInMonth=getDaysInMonth;proto.week=proto.weeks=getSetWeek;proto.isoWeek=proto.isoWeeks=getSetISOWeek;proto.weeksInYear=getWeeksInYear;proto.isoWeeksInYear=getISOWeeksInYear;proto.date=getSetDayOfMonth;proto.day=proto.days=getSetDayOfWeek;proto.weekday=getSetLocaleDayOfWeek;proto.isoWeekday=getSetISODayOfWeek;proto.dayOfYear=getSetDayOfYear;proto.hour=proto.hours=getSetHour;proto.minute=proto.minutes=getSetMinute;proto.second=proto.seconds=getSetSecond;proto.millisecond=proto.milliseconds=getSetMillisecond;proto.utcOffset=getSetOffset;proto.utc=setOffsetToUTC;proto.local=setOffsetToLocal;proto.parseZone=setOffsetToParsedOffset;proto.hasAlignedHourOffset=hasAlignedHourOffset;proto.isDST=isDaylightSavingTime;proto.isLocal=isLocal;proto.isUtcOffset=isUtcOffset;proto.isUtc=isUtc;proto.isUTC=isUtc;proto.zoneAbbr=getZoneAbbr;proto.zoneName=getZoneName;proto.dates=deprecate('dates accessor is deprecated. Use date instead.',getSetDayOfMonth);proto.months=deprecate('months accessor is deprecated. Use month instead',getSetMonth);proto.years=deprecate('years accessor is deprecated. Use year instead',getSetYear);proto.zone=deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',getSetZone);proto.isDSTShifted=deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',isDaylightSavingTimeShifted);function createUnix(input){return createLocal(input*1000);}
function createInZone(){return createLocal.apply(null,arguments).parseZone();}
function preParsePostFormat(string){return string;}
var proto$1=Locale.prototype;proto$1.calendar=calendar;proto$1.longDateFormat=longDateFormat;proto$1.invalidDate=invalidDate;proto$1.ordinal=ordinal;proto$1.preparse=preParsePostFormat;proto$1.postformat=preParsePostFormat;proto$1.relativeTime=relativeTime;proto$1.pastFuture=pastFuture;proto$1.set=set;proto$1.months=localeMonths;proto$1.monthsShort=localeMonthsShort;proto$1.monthsParse=localeMonthsParse;proto$1.monthsRegex=monthsRegex;proto$1.monthsShortRegex=monthsShortRegex;proto$1.week=localeWeek;proto$1.firstDayOfYear=localeFirstDayOfYear;proto$1.firstDayOfWeek=localeFirstDayOfWeek;proto$1.weekdays=localeWeekdays;proto$1.weekdaysMin=localeWeekdaysMin;proto$1.weekdaysShort=localeWeekdaysShort;proto$1.weekdaysParse=localeWeekdaysParse;proto$1.weekdaysRegex=weekdaysRegex;proto$1.weekdaysShortRegex=weekdaysShortRegex;proto$1.weekdaysMinRegex=weekdaysMinRegex;proto$1.isPM=localeIsPM;proto$1.meridiem=localeMeridiem;function get$1(format,index,field,setter){var locale=getLocale();var utc=createUTC().set(setter,index);return locale[field](utc,format);}
function listMonthsImpl(format,index,field){if(isNumber(format)){index=format;format=undefined;}
format=format||'';if(index!=null){return get$1(format,index,field,'month');}
var i;var out=[];for(i=0;i<12;i++){out[i]=get$1(format,i,field,'month');}
return out;}
function listWeekdaysImpl(localeSorted,format,index,field){if(typeof localeSorted==='boolean'){if(isNumber(format)){index=format;format=undefined;}
format=format||'';}else{format=localeSorted;index=format;localeSorted=false;if(isNumber(format)){index=format;format=undefined;}
format=format||'';}
var locale=getLocale(),shift=localeSorted?locale._week.dow:0;if(index!=null){return get$1(format,(index+shift)%7,field,'day');}
var i;var out=[];for(i=0;i<7;i++){out[i]=get$1(format,(i+shift)%7,field,'day');}
return out;}
function listMonths(format,index){return listMonthsImpl(format,index,'months');}
function listMonthsShort(format,index){return listMonthsImpl(format,index,'monthsShort');}
function listWeekdays(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,'weekdays');}
function listWeekdaysShort(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,'weekdaysShort');}
function listWeekdaysMin(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,'weekdaysMin');}
getSetGlobalLocale('en',{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(number){var b=number%10,output=(toInt(number%100/10)===1)?'th':(b===1)?'st':(b===2)?'nd':(b===3)?'rd':'th';return number+output;}});hooks.lang=deprecate('moment.lang is deprecated. Use moment.locale instead.',getSetGlobalLocale);hooks.langData=deprecate('moment.langData is deprecated. Use moment.localeData instead.',getLocale);var mathAbs=Math.abs;function abs(){var data=this._data;this._milliseconds=mathAbs(this._milliseconds);this._days=mathAbs(this._days);this._months=mathAbs(this._months);data.milliseconds=mathAbs(data.milliseconds);data.seconds=mathAbs(data.seconds);data.minutes=mathAbs(data.minutes);data.hours=mathAbs(data.hours);data.months=mathAbs(data.months);data.years=mathAbs(data.years);return this;}
function addSubtract$1(duration,input,value,direction){var other=createDuration(input,value);duration._milliseconds+=direction*other._milliseconds;duration._days+=direction*other._days;duration._months+=direction*other._months;return duration._bubble();}
function add$1(input,value){return addSubtract$1(this,input,value,1);}
function subtract$1(input,value){return addSubtract$1(this,input,value,-1);}
function absCeil(number){if(number<0){return Math.floor(number);}else{return Math.ceil(number);}}
function bubble(){var milliseconds=this._milliseconds;var days=this._days;var months=this._months;var data=this._data;var seconds,minutes,hours,years,monthsFromDays;if(!((milliseconds>=0&&days>=0&&months>=0)||(milliseconds<=0&&days<=0&&months<=0))){milliseconds+=absCeil(monthsToDays(months)+days)*864e5;days=0;months=0;}
data.milliseconds=milliseconds%1000;seconds=absFloor(milliseconds/1000);data.seconds=seconds%60;minutes=absFloor(seconds/60);data.minutes=minutes%60;hours=absFloor(minutes/60);data.hours=hours%24;days+=absFloor(hours/24);monthsFromDays=absFloor(daysToMonths(days));months+=monthsFromDays;days-=absCeil(monthsToDays(monthsFromDays));years=absFloor(months/12);months%=12;data.days=days;data.months=months;data.years=years;return this;}
function daysToMonths(days){return days*4800/146097;}
function monthsToDays(months){return months*146097/4800;}
function as(units){var days;var months;var milliseconds=this._milliseconds;units=normalizeUnits(units);if(units==='month'||units==='year'){days=this._days+milliseconds/864e5;months=this._months+daysToMonths(days);return units==='month'?months:months/12;}else{days=this._days+Math.round(monthsToDays(this._months));switch(units){case'week':return days/7+milliseconds/6048e5;case'day':return days+milliseconds/864e5;case'hour':return days*24+milliseconds/36e5;case'minute':return days*1440+milliseconds/6e4;case'second':return days*86400+milliseconds/1000;case'millisecond':return Math.floor(days*864e5)+milliseconds;default:throw new Error('Unknown unit '+units);}}}
function valueOf$1(){return(this._milliseconds+
this._days*864e5+
(this._months%12)*2592e6+
toInt(this._months/12)*31536e6);}
function makeAs(alias){return function(){return this.as(alias);};}
var asMilliseconds=makeAs('ms');var asSeconds=makeAs('s');var asMinutes=makeAs('m');var asHours=makeAs('h');var asDays=makeAs('d');var asWeeks=makeAs('w');var asMonths=makeAs('M');var asYears=makeAs('y');function get$2(units){units=normalizeUnits(units);return this[units+'s']();}
function makeGetter(name){return function(){return this._data[name];};}
var milliseconds=makeGetter('milliseconds');var seconds=makeGetter('seconds');var minutes=makeGetter('minutes');var hours=makeGetter('hours');var days=makeGetter('days');var months=makeGetter('months');var years=makeGetter('years');function weeks(){return absFloor(this.days()/7);}
var round=Math.round;var thresholds={s:45,m:45,h:22,d:26,M:11};function substituteTimeAgo(string,number,withoutSuffix,isFuture,locale){return locale.relativeTime(number||1,!!withoutSuffix,string,isFuture);}
function relativeTime$1(posNegDuration,withoutSuffix,locale){var duration=createDuration(posNegDuration).abs();var seconds=round(duration.as('s'));var minutes=round(duration.as('m'));var hours=round(duration.as('h'));var days=round(duration.as('d'));var months=round(duration.as('M'));var years=round(duration.as('y'));var a=seconds<thresholds.s&&['s',seconds]||minutes<=1&&['m']||minutes<thresholds.m&&['mm',minutes]||hours<=1&&['h']||hours<thresholds.h&&['hh',hours]||days<=1&&['d']||days<thresholds.d&&['dd',days]||months<=1&&['M']||months<thresholds.M&&['MM',months]||years<=1&&['y']||['yy',years];a[2]=withoutSuffix;a[3]=+posNegDuration>0;a[4]=locale;return substituteTimeAgo.apply(null,a);}
function getSetRelativeTimeRounding(roundingFunction){if(roundingFunction===undefined){return round;}
if(typeof(roundingFunction)==='function'){round=roundingFunction;return true;}
return false;}
function getSetRelativeTimeThreshold(threshold,limit){if(thresholds[threshold]===undefined){return false;}
if(limit===undefined){return thresholds[threshold];}
thresholds[threshold]=limit;return true;}
function humanize(withSuffix){var locale=this.localeData();var output=relativeTime$1(this,!withSuffix,locale);if(withSuffix){output=locale.pastFuture(+this,output);}
return locale.postformat(output);}
var abs$1=Math.abs;function toISOString$1(){var seconds=abs$1(this._milliseconds)/1000;var days=abs$1(this._days);var months=abs$1(this._months);var minutes,hours,years;minutes=absFloor(seconds/60);hours=absFloor(minutes/60);seconds%=60;minutes%=60;years=absFloor(months/12);months%=12;var Y=years;var M=months;var D=days;var h=hours;var m=minutes;var s=seconds;var total=this.asSeconds();if(!total){return'P0D';}
return(total<0?'-':'')+'P'+
(Y?Y+'Y':'')+
(M?M+'M':'')+
(D?D+'D':'')+
((h||m||s)?'T':'')+
(h?h+'H':'')+
(m?m+'M':'')+
(s?s+'S':'');}
var proto$2=Duration.prototype;proto$2.abs=abs;proto$2.add=add$1;proto$2.subtract=subtract$1;proto$2.as=as;proto$2.asMilliseconds=asMilliseconds;proto$2.asSeconds=asSeconds;proto$2.asMinutes=asMinutes;proto$2.asHours=asHours;proto$2.asDays=asDays;proto$2.asWeeks=asWeeks;proto$2.asMonths=asMonths;proto$2.asYears=asYears;proto$2.valueOf=valueOf$1;proto$2._bubble=bubble;proto$2.get=get$2;proto$2.milliseconds=milliseconds;proto$2.seconds=seconds;proto$2.minutes=minutes;proto$2.hours=hours;proto$2.days=days;proto$2.weeks=weeks;proto$2.months=months;proto$2.years=years;proto$2.humanize=humanize;proto$2.toISOString=toISOString$1;proto$2.toString=toISOString$1;proto$2.toJSON=toISOString$1;proto$2.locale=locale;proto$2.localeData=localeData;proto$2.toIsoString=deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',toISOString$1);proto$2.lang=lang;addFormatToken('X',0,0,'unix');addFormatToken('x',0,0,'valueOf');addRegexToken('x',matchSigned);addRegexToken('X',matchTimestamp);addParseToken('X',function(input,array,config){config._d=new Date(parseFloat(input,10)*1000);});addParseToken('x',function(input,array,config){config._d=new Date(toInt(input));});hooks.version='2.17.1';setHookCallback(createLocal);hooks.fn=proto;hooks.min=min;hooks.max=max;hooks.now=now;hooks.utc=createUTC;hooks.unix=createUnix;hooks.months=listMonths;hooks.isDate=isDate;hooks.locale=getSetGlobalLocale;hooks.invalid=createInvalid;hooks.duration=createDuration;hooks.isMoment=isMoment;hooks.weekdays=listWeekdays;hooks.parseZone=createInZone;hooks.localeData=getLocale;hooks.isDuration=isDuration;hooks.monthsShort=listMonthsShort;hooks.weekdaysMin=listWeekdaysMin;hooks.defineLocale=defineLocale;hooks.updateLocale=updateLocale;hooks.locales=listLocales;hooks.weekdaysShort=listWeekdaysShort;hooks.normalizeUnits=normalizeUnits;hooks.relativeTimeRounding=getSetRelativeTimeRounding;hooks.relativeTimeThreshold=getSetRelativeTimeThreshold;hooks.calendarFormat=getCalendarFormat;hooks.prototype=proto;return hooks;})));;;
;(function(scope){"use strict";function Metrics(element){var computedStyle=getComputedStyle(element);this.units={px:1};this.element=element;var parseLength=function(length){return length&&length.length?parseInt(length):0;};this.margins=[computedStyle.marginTop,computedStyle.marginRight,computedStyle.marginBottom,computedStyle.marginLeft];this.margins=this.margins.map(parseLength);this.borders=[computedStyle.borderTopWidth,computedStyle.borderRightWidth,computedStyle.borderBottomWidth,computedStyle.borderLeftWidth];this.borders=this.borders.map(parseLength);this.paddings=[computedStyle.paddingTop,computedStyle.paddingRight,computedStyle.paddingBottom,computedStyle.paddingLeft];this.paddings=this.paddings.map(parseLength);this.borderBox={x:0,y:0,width:element.offsetWidth,height:element.offsetHeight};this.marginBox={x:-this.margins[3],y:-this.margins[0],width:element.offsetWidth+this.margins[1]+this.margins[3],height:element.offsetHeight+this.margins[0]+this.margins[2]};var self=this;var radii=['borderTopLeftRadius','borderTopRightRadius','borderBottomRightRadius','borderBottomLeftRadius'];this.borderBox.radii=radii.map(function(radius,index){radius=computedStyle[radius].split(/\s+/);return[self.toPixels(radius[0],self.borderBox.width),self.toPixels(radius.length>1?radius[1]:radius[0],self.borderBox.height)];});this.cssFloat=computedStyle.cssFloat;}
Metrics.prototype.unitToPx=function(unit){if(this.units[unit])
return this.units[unit];var cached=this.element.style.getPropertyValue('line-height');this.element.style.setProperty('line-height',1+unit);this.units[unit]=parseFloat(getComputedStyle(this.element).getPropertyValue('line-height'));this.element.style.setProperty('line-height',cached);return this.units[unit];};Metrics.prototype.getUnitsMap=function(element){var units=['em','ex','ch','rem','vw','vh','vmin','vmax','cm','mm','in','px','pt','pc'];var child=document.createElement('div');child.style.width='0px';child.style.height='0px';element.appendChild(child);var style=getComputedStyle(child);var result={};units.forEach(function(unit){child.style.lineHeight='1'+unit;result[unit]=parseFloat(style.lineHeight);});child.parentNode.removeChild(child);return result;};Metrics.prototype.toPixels=function(length,percentageBase){var split=/([\-0-9\.]*)([a-z%]*)/.exec(length);split[1]=parseFloat(split[1]);if(!split[2])
return split[1];if(split[2]==='%')
return split[1]*percentageBase/100;return split[1]*this.unitToPx(split[2]);};function compareLineSlopes(origin,endPoint1,endPoint2){return((endPoint2.x-origin.x)*(endPoint1.y-origin.y))-((endPoint1.x-origin.x)*(endPoint2.y-origin.y));}
function areCollinearPoints(p0,p1,p2){return Math.abs(compareLineSlopes(p0,p1,p2))<350;}
function areCoincidentPoints(p0,p1){return p0.x==p1.x&&p0.y==p1.y;}
function isPointOnLineSegment(lineStartPoint,lineEndPoint,point){return point.x>=Math.min(lineStartPoint.x,lineEndPoint.x)&&point.x<=Math.max(lineStartPoint.x,lineEndPoint.x)&&areCollinearPoints(lineStartPoint,lineEndPoint,point);}
function PolygonEdge(){}
PolygonEdge.prototype.init=function(polygon,vertex1,vertex2){this.polygon=polygon;this.vertex1=vertex1;this.vertex2=vertex2;this.minX=Math.min(this.vertex1.x,this.vertex2.x);this.maxX=Math.max(this.vertex1.x,this.vertex2.x);};PolygonEdge.prototype.containsPoint=function(point){return isPointOnLineSegment(this.vertex1,this.vertex2,point);};PolygonEdge.prototype.overlapsYRange=function(y1,y2){var edgeY1=this.vertex1.y;var edgeY2=this.vertex2.y;return y2>=Math.min(edgeY1,edgeY2)&&y1<=Math.max(edgeY1,edgeY2);};PolygonEdge.prototype.isWithinYRange=function(y1,y2){var edgeY1=this.vertex1.y;var edgeY2=this.vertex2.y;return y1<=Math.min(edgeY1,edgeY2)&&y2>=Math.max(edgeY1,edgeY2);};PolygonEdge.prototype.inwardNormal=function(){var dx=this.vertex2.x-this.vertex1.x;var dy=this.vertex2.y-this.vertex1.y;var edgeLength=Math.sqrt(dx*dx+dy*dy);return{x:-dy/edgeLength,y:dx/edgeLength};};PolygonEdge.prototype.outwardNormal=function(){var n=this.inwardNormal();return{x:-n.x,y:-n.y};};PolygonEdge.prototype.xIntercept=function(y){var vertex1Y=this.vertex1.y;var vertex2Y=this.vertex2.y;if(vertex1Y==vertex2Y)
return Math.min(this.vertex1.x,this.vertex2.x);if(y==Math.min(vertex1Y,vertex2Y))
return(vertex1Y<vertex2Y)?this.vertex1.x:this.vertex2.x;if(y==Math.max(vertex1Y,vertex2Y))
return(vertex1Y>vertex2Y)?this.vertex1.x:this.vertex2.x;return this.vertex1.x+((y-vertex1Y)*(this.vertex2.x-this.vertex1.x)/(vertex2Y-vertex1Y));};PolygonEdge.prototype.clippedEdgeXRange=function(y1,y2){if(this.isWithinYRange(y1,y2)){var vertex1X=this.vertex1.x;var vertex2X=this.vertex2.x;return{x1:Math.min(vertex1X,vertex2X),x2:Math.max(vertex1X,vertex2X)};}
var minYVertex,maxYVertex;if(this.vertex1.y<this.vertex2.y){minYVertex=this.vertex1;maxYVertex=this.vertex2;}
else{minYVertex=this.vertex2;maxYVertex=this.vertex1;}
var xForY1=(minYVertex.y<y1)?this.xIntercept(y1):minYVertex.x;var xForY2=(maxYVertex.y>y2)?this.xIntercept(y2):maxYVertex.x;return{x1:Math.min(xForY1,xForY2),x2:Math.max(xForY1,xForY2)};};function clippedCircleXRange(center,radius,y1,y2){if(center.y>=y1&&center.y<=y2)
return{x1:center.x-radius,x2:center.x+radius};var yi,xi;if(y2<center.y){yi=y2-center.y;xi=ellipseXIntercept(yi,radius,radius);return{x1:center.x-xi,x2:center.x+xi};}
yi=y1-center.y;xi=ellipseXIntercept(yi,radius,radius);return{x1:center.x-xi,x2:center.x+xi};}
function ShapeEdge(polygon,vertex1,vertex2){this.init(polygon,vertex1,vertex2);}
ShapeEdge.prototype=new PolygonEdge();function OffsetEdge(edge,normalUnitVector){var shapeMargin=edge.polygon.shapeMargin;var dx=normalUnitVector.x*shapeMargin;var dy=normalUnitVector.y*shapeMargin;this.anchorEdge=edge;this.normalUnitVector=normalUnitVector;var vertex1={x:edge.vertex1.x+dx,y:edge.vertex1.y+dy};var vertex2={x:edge.vertex2.x+dx,y:edge.vertex2.y+dy};this.init(edge.polygon,vertex1,vertex2);}
OffsetEdge.prototype=new PolygonEdge();function isVertexOrderClockwise(vertices){var minVertexIndex=0;for(var i=1;i<vertices.length;++i){var p=vertices[i];if(p.y<vertices[minVertexIndex].y||(p.y==vertices[minVertexIndex].y&&p.x<vertices[minVertexIndex].x))
minVertexIndex=i;}
var nextVertex=vertices[(minVertexIndex+1)%vertices.length];var prevVertex=vertices[(minVertexIndex+vertices.length-1)%vertices.length];return compareLineSlopes(prevVertex,vertices[minVertexIndex],nextVertex)<0;}
function Polygon(vertices,fillRule,shapeMargin){this.m_vertices=vertices;this.fillRule=fillRule;this.shapeMargin=shapeMargin;if(vertices.length<3){this.m_edges=[];this.shapeMarginEdges=[];return;}
var edges=[];var minX=(vertices.length>0)?vertices[0].x:undefined;var minY=(vertices.length>0)?vertices[0].y:undefined;var maxX=minX;var maxY=minY;var clockwise=isVertexOrderClockwise(vertices);var vertex1Index=0;do{var vertex2Index=this.nextEdgeVertexIndex(vertex1Index,clockwise);edges.push(new ShapeEdge(this,vertices[vertex1Index],vertices[vertex2Index]));var x=vertices[vertex1Index].x;var y=vertices[vertex1Index].y;minX=Math.min(x,minX);minY=Math.min(y,minY);maxX=Math.max(x,maxX);maxY=Math.max(y,maxY);vertex1Index=vertex2Index;}while(vertex1Index!==0);var edgeIndex=0,nextEdgeIndex;while(edgeIndex<edges.length&&edges.length>3){nextEdgeIndex=(edgeIndex+1)%edges.length;if(areCollinearPoints(edges[edgeIndex].vertex1,edges[edgeIndex].vertex2,edges[nextEdgeIndex].vertex2)){edges[edgeIndex].vertex2=edges[nextEdgeIndex].vertex2;edges.splice(nextEdgeIndex,1);}else
edgeIndex++;}
if(shapeMargin===0){this.shapeMarginEdges=edges;}else{var shapeMarginEdges=[];for(var i=0;i<edges.length;i++){shapeMarginEdges.push(new OffsetEdge(edges[i],edges[i].outwardNormal()));shapeMarginEdges.push(new OffsetEdge(edges[i],edges[i].inwardNormal()));}
this.shapeMarginEdges=shapeMarginEdges;}
this.m_edges=edges;this.bounds=new Rect(minX-shapeMargin,minY-shapeMargin,shapeMargin*2+(maxX-minX),shapeMargin*2+(maxY-minY));}
Polygon.prototype.vertexAt=function(index){return this.m_vertices[index];};Polygon.prototype.edgeAt=function(index){return this.m_edges[index];};Polygon.prototype.isEmpty=function(){return this.m_edges.length<3||this.bounds.isEmpty();};Polygon.prototype.vertices=function(){return this.m_vertices.slice(0);};Polygon.prototype.edges=function(){return this.m_edges.slice(0);};Polygon.prototype.overlapsYRange=function(y1,y2){return y1<this.bounds.maxY&&y2>=this.bounds.y;};Polygon.prototype.nextVertexIndex=function(vertexIndex,clockwise){var nVertices=this.m_vertices.length;return((clockwise)?vertexIndex+1:vertexIndex-1+nVertices)%nVertices;};Polygon.prototype.nextEdgeVertexIndex=function(vertex1Index,clockwise){var nVertices=this.m_vertices.length;var vertex2Index=this.nextVertexIndex(vertex1Index,clockwise);while(vertex2Index&&areCoincidentPoints(this.vertexAt(vertex1Index),this.vertexAt(vertex2Index)))
vertex2Index=this.nextVertexIndex(vertex2Index,clockwise);while(vertex2Index){var vertexIndex3=this.nextVertexIndex(vertex2Index,clockwise);if(!areCollinearPoints(this.vertexAt(vertex1Index),this.vertexAt(vertex2Index),this.vertexAt(vertexIndex3)))
break;vertex2Index=vertexIndex3;}
return vertex2Index;};Polygon.prototype.containsPointEvenOdd=function(point){var crossingCount=0;for(var i=0;i<this.m_edges.length;++i){var edge=this.edgeAt(i);if(edge.containsPoint(point))
return true;var vertex1=edge.vertex1;var vertex2=edge.vertex2;if((vertex1.y<=point.y&&vertex2.y>point.y)||(vertex1.y>point.y&&vertex2.y<=point.y)){var vt=(point.y-vertex1.y)/(vertex2.y-vertex1.y);if(point.x<vertex1.x+vt*(vertex2.x-vertex1.x))
++crossingCount;}}
return(crossingCount&1)!==0;};Polygon.prototype.containsPointNonZero=function(point){var windingNumber=0;for(var i=0;i<this.m_edges.length;++i){var edge=this.edgeAt(i);if(edge.containsPoint(point))
return true;var vertex1=edge.vertex1;var vertex2=edge.vertex2;if(vertex2.y<point.y){if((vertex1.y>point.y)&&(compareLineSlopes(vertex1,vertex2,point)>0))
++windingNumber;}else if(vertex2.y>point.y){if((vertex1.y<=point.y)&&(compareLineSlopes(vertex1,vertex2,point)<0))
--windingNumber;}}
return windingNumber!==0;};Polygon.prototype.containsPoint=function(point){if(!this.bounds.containsPoint(point))
return false;return this.fillRule=="nonzero"?this.containsPointNonZero(point):this.containsPointEvenOdd(point);};Polygon.prototype.edgeVerticesThatOverlapYRange=function(y1,y2){var result=[];for(var i=0;i<this.m_edges.length;i++){var vertex=this.edgeAt(i).vertex1;if(vertex.y>=y1&&vertex.y<y2)
result.push(vertex);}
return result;};Polygon.prototype.edgesThatOverlapYRange=function(y1,y2){var result=[];for(var i=0;i<this.m_edges.length;i++){var edge=this.edgeAt(i);if(edge.overlapsYRange(y1,y2))
result.push(edge);}
return result;};Polygon.prototype.shapeMarginEdgesThatOverlapYRange=function(y1,y2){var result=[];for(var i=0;i<this.shapeMarginEdges.length;i++){var edge=this.shapeMarginEdges[i];if(edge.overlapsYRange(y1,y2))
result.push(edge);}
return result;};function compareEdgeMinX(edge1,edge2){return edge1.minX-edge2.minX;}
function compareVertexXIncreasing(vertex1,vertex2){return vertex2.x-vertex1.x;}
Polygon.prototype.leftExclusionEdge=function(y1,y2){if(this.isEmpty()||!this.bounds.overlapsYRange(y1,y2))
return undefined;var result,i,xRange;var overlappingEdges=this.shapeMarginEdgesThatOverlapYRange(y1,y2);if(overlappingEdges.length!==0){overlappingEdges.sort(compareEdgeMinX);result=overlappingEdges[0].clippedEdgeXRange(y1,y2).x1;for(i=1;i<overlappingEdges.length;i++){if(overlappingEdges[i].minX>result)
break;xRange=overlappingEdges[i].clippedEdgeXRange(y1,y2);result=(result===undefined)?xRange.x1:Math.min(result,xRange.x1);}}
var shapeMargin=this.shapeMargin;if(shapeMargin>0){var overlappingVertices=this.edgeVerticesThatOverlapYRange(y1-shapeMargin,y2+shapeMargin);overlappingVertices.sort(compareVertexXIncreasing);for(i=0;i<overlappingVertices.length;i++){xRange=clippedCircleXRange(overlappingVertices[i],shapeMargin,y1,y2);result=(result===undefined)?xRange.x1:Math.min(result,xRange.x1);}}
if(result===undefined)
console.error("Polygon leftExclusionEdge() failed");return result;};function compareEdgeMaxX(edge1,edge2){return edge2.maxX-edge1.maxX;}
function compareVertexXDecreasing(vertex1,vertex2){return vertex1.x-vertex2.x;}
Polygon.prototype.rightExclusionEdge=function(y1,y2){if(this.isEmpty()||!this.bounds.overlapsYRange(y1,y2))
return undefined;var result,i,xRange;var overlappingEdges=this.shapeMarginEdgesThatOverlapYRange(y1,y2);if(overlappingEdges.length!==0){overlappingEdges.sort(compareEdgeMaxX);result=overlappingEdges[0].clippedEdgeXRange(y1,y2).x2;for(i=1;i<overlappingEdges.length;i++){if(overlappingEdges[i].maxX<result)
break;xRange=overlappingEdges[i].clippedEdgeXRange(y1,y2);result=Math.max(result,xRange.x2);}}
var shapeMargin=this.shapeMargin;if(shapeMargin>0){var overlappingVertices=this.edgeVerticesThatOverlapYRange(y1-shapeMargin,y2+shapeMargin);overlappingVertices.sort(compareVertexXDecreasing);for(i=0;i<overlappingVertices.length;i++){xRange=clippedCircleXRange(overlappingVertices[i],shapeMargin,y1,y2);result=(result===undefined)?xRange.x2:Math.max(result,xRange.x2);}}
if(result===undefined)
console.error("Polygon rightExclusionEdge() failed");return result;};function RasterInterval(y,startX,endX){this.y=y;this.startX=startX;this.endX=endX;}
function RasterIntervals(yOffset,size){this.intervals=[];this.yOffset=yOffset;this.size=size;for(var i=0;i<size;i++)
this.intervals[i]=RasterIntervals.none;this.minY=-yOffset;this.maxY=size-yOffset;}
RasterIntervals.none={};RasterIntervals.prototype.intervalAt=function(y){return this.intervals[y+this.yOffset];};RasterIntervals.prototype.setIntervalAt=function(y,value){this.intervals[y+this.yOffset]=value;};RasterIntervals.prototype.uniteIntervalAt=function(y,interval){var intervalAtY=this.intervalAt(y);if(intervalAtY===RasterIntervals.none)
this.setIntervalAt(y,interval);else{intervalAtY.startX=Math.min(intervalAtY.startX,interval.startX);intervalAtY.endX=Math.max(intervalAtY.endX,interval.endX);}};RasterIntervals.prototype.intervalAtContains=function(y,interval){var intervalAtY=this.intervalAt(y);if(intervalAtY==RasterIntervals.none)
return false;return intervalAtY.startX<=interval.startX&&intervalAtY.endX>=interval.endX;};function ShapeMarginIntervalGenerator(shapeMargin){this.shapeMargin=shapeMargin;this.xIntercepts=[];for(var y=0;y<=shapeMargin;y++)
this.xIntercepts[y]=Math.sqrt(shapeMargin*shapeMargin-y*y);}
ShapeMarginIntervalGenerator.prototype.generateIntervalAt=function(atY,forInterval){var xInterceptsIndex=Math.abs(atY-forInterval.y);var dx=(xInterceptsIndex>this.shapeMargin)?0:this.xIntercepts[xInterceptsIndex];return new RasterInterval(atY,forInterval.startX-dx,forInterval.endX+dx);};RasterIntervals.prototype.computeMarginIntervals=function(shapeMargin,clip){var mig=new ShapeMarginIntervalGenerator(shapeMargin);var result=new RasterIntervals(this.yOffset,this.size);for(var y=this.minY;y<this.maxY;++y){var intervalAtY=this.intervalAt(y);if(intervalAtY==RasterIntervals.none)
continue;var marginY0=Math.max(this.minY,y-shapeMargin);var marginY1=Math.min(this.maxY-1,y+shapeMargin);var marginY;for(marginY=y-1;marginY>=marginY0;--marginY){if(marginY>0&&this.intervalAtContains(marginY,intervalAtY))
break;result.uniteIntervalAt(marginY,mig.generateIntervalAt(marginY,intervalAtY));}
result.uniteIntervalAt(y,mig.generateIntervalAt(y,intervalAtY));for(marginY=y+1;marginY<=marginY1;++marginY){if(marginY<this.maxY&&this.intervalAtContains(marginY,intervalAtY))
break;result.uniteIntervalAt(marginY,mig.generateIntervalAt(marginY,intervalAtY));}}
return result;};function error(url,exception){console.log("Unable to load image ",url,". It's probably missing or you've run into a CORS issue.");if(exception)
console.log("The exact problem was ",exception);}
function RasterImage(image,width,height){var canvas=document.createElement("canvas");this.width=canvas.width=width;this.height=canvas.height=height;var g=canvas.getContext("2d");g.drawImage(image,0,0,width,height);try{this.imageData=g.getImageData(0,0,width,height);}catch(e){error(image.src,e);}}
RasterImage.prototype.hasData=function(){return!!this.imageData;};RasterImage.prototype.alphaAt=function(x,y){return this.imageData.data[(x*4+3)+y*this.width*4];};function Raster(url,box,shapeImageThreshold,shapeMargin,clip,whenReady){this.url=url;this.box=box;this.shapeImageThreshold=(256*shapeImageThreshold);this.shapeMargin=shapeMargin;this.clip=clip;this.init(whenReady);}
Raster.prototype.init=function(callback){var raster=this;var image=new Image();var blob;var canvas=document.createElement("canvas");if(!canvas.getContext){error(raster.url);callback();}
image.onload=function(){raster.intervals=raster.computeIntervals(image);if(raster.intervals){if(raster.shapeMargin>0)
raster.intervals=raster.intervals.computeMarginIntervals(raster.shapeMargin,raster.clip);}
if(blob)
URL.revokeObjectURL(blob);callback();};image.onerror=function(){error(raster.url);callback();};if(!image.hasOwnProperty('crossOrigin')&&window.URL&&window.URL.createObjectURL){var xhr=new XMLHttpRequest();xhr.onreadystatechange=function(){if(xhr.readyState===4){if(xhr.status===200){blob=URL.createObjectURL(xhr.response);image.src=blob;}else{error(raster.url);callback();}}};xhr.open('GET',raster.url,true);xhr.responseType='blob';xhr.send();}else{image.crossOrigin="anonymous";image.src=raster.url;}};Raster.prototype.computeIntervals=function(image){var clip=this.clip,threshold=this.shapeImageThreshold,width=this.box.width,height=this.box.height,rasterImage=new RasterImage(image,width,height);if(!rasterImage.hasData())
return undefined;var intervals=new RasterIntervals(-clip.y,clip.height),maxY=Math.min(clip.height,this.box.height);for(var y=0;y<maxY;y++){var startX=-1;for(var x=0;x<this.box.width;x++){var alpha=rasterImage.alphaAt(x,y);if(startX==-1&&alpha>threshold){startX=x;if(intervals.intervalAt(y)===RasterIntervals.none)
intervals.setIntervalAt(y,new RasterInterval(y,startX,width));}else if(startX!=-1&&alpha<=threshold){intervals.intervalAt(y).endX=x;startX=-1;}}}
return intervals;};Raster.prototype.rightExclusionEdge=function(y1,y2){var intervals=this.intervals;if(!intervals)
return this.clip.width;var x;for(var y=Math.max(y1,this.clip.y);y<=y2&&y<this.clip.maxY;y++){var endX=intervals.intervalAt(y).endX;if(x===undefined||(endX!==undefined&&endX>x))
x=endX;}
return x;};Raster.prototype.leftExclusionEdge=function(y1,y2){var intervals=this.intervals;if(!intervals)
return 0;var x;for(var y=Math.max(y1,this.clip.y);y<=y2&&y<this.clip.maxY;y++){var startX=intervals.intervalAt(y).startX;if(x===undefined||(startX!==undefined&&startX<x))
x=startX;}
return x;};function Size(width,height){this.width=width;this.height=height;}
Size.zeroSize={width:0,height:0};Size.prototype.isEmpty=function(){return this.width<=0||this.height<=0;};Size.prototype.scale=function(factor){this.width*=factor;this.height*=factor;};function Rect(x,y,width,height){this.x=x;this.y=y;this.width=width;this.height=height;this.maxX=x+width;this.maxY=y+height;}
Rect.prototype.isEmpty=function(){return this.width<=0||this.height<=0;};Rect.prototype.containsX=function(x){return x>=this.x&&x<this.maxX;};Rect.prototype.containsY=function(y){return y>=this.y&&y<this.maxY;};Rect.prototype.containsPoint=function(p){return this.containsX(p.x)&&this.containsY(p.y);};Rect.prototype.shiftLeftEdgeTo=function(newX){this.width-=newX-this.x;this.x=newX;};Rect.prototype.shiftTopEdgeTo=function(newY){this.height-=newY-this.y;this.y=newY;};Rect.prototype.shiftRightEdgeTo=function(newX){this.width=newX-this.x;};Rect.prototype.shiftBottomEdgeTo=function(newY){this.height=newY-this.y;};Rect.prototype.overlapsYRange=function(minY,maxY){return!this.isEmpty()&&maxY>=this.y&&minY<this.maxY;};Rect.prototype.overlapsXRange=function(minX,maxX){return!this.isEmpty()&&maxX>=this.x&&minX<this.maxX;};function RoundedRect(rect,topLeft,topRight,bottomLeft,bottomRight){this.rect=rect;this.radii={topLeft:topLeft,topRight:topRight,bottomLeft:bottomLeft,bottomRight:bottomRight};}
RoundedRect.prototype.isEmpty=function(){return this.width<=0||this.height<=0;};RoundedRect.prototype.topLeftCorner=function(){return new Rect(this.rect.x,this.rect.y,this.radii.topLeft.width,this.radii.topLeft.height);};RoundedRect.prototype.topRightCorner=function(){return new Rect(this.rect.maxX-this.radii.topRight.width,this.rect.y,this.radii.topRight.width,this.radii.topRight.height);};RoundedRect.prototype.bottomLeftCorner=function(){return new Rect(this.rect.x,this.rect.maxY-this.radii.bottomLeft.height,this.radii.bottomLeft.width,this.radii.bottomLeft.height);};RoundedRect.prototype.bottomRightCorner=function(){return new Rect(this.rect.maxX-this.radii.bottomRight.width,this.rect.maxY-this.radii.bottomRight.height,this.radii.bottomRight.width,this.radii.bottomRight.height);};RoundedRect.prototype.isRounded=function(){function isCornerRadiusNonZero(radius){return radius.width>0&&radius.height>0;}
return isCornerRadiusNonZero(this.radii.topLeft)||isCornerRadiusNonZero(this.radii.topRight)||isCornerRadiusNonZero(this.radii.bottomLeft)||isCornerRadiusNonZero(this.radii.bottomRight);};RoundedRect.prototype.cornersInsetRect=function(){var topLeftCorner=this.topLeftCorner();var topRightCorner=this.topRightCorner();var bottomLeftCorner=this.bottomLeftCorner();var bottomRightCorner=this.bottomRightCorner();var x=Math.max(topLeftCorner.maxX,bottomLeftCorner.maxX);var y=Math.max(topLeftCorner.maxY,topRightCorner.maxY);return new Rect(x,y,Math.min(topRightCorner.x,bottomRightCorner.x)-x,Math.min(bottomLeftCorner.y,bottomRightCorner.y)-y);};RoundedRect.prototype.scaleRadii=function(factor){if(factor==1)
return;var radii=this.radii;radii.topLeft.scale(factor);if(radii.topLeft.isEmpty())
radii.topLeft=Size.zeroSize;radii.topRight.scale(factor);if(radii.topRight.isEmpty())
radii.topRight=Size.zeroSize;radii.bottomLeft.scale(factor);if(radii.bottomLeft.isEmpty())
radii.bottomLeft=Size.zeroSize;radii.bottomRight.scale(factor);if(radii.bottomRight.isEmpty())
radii.bottomRight=Size.zeroSize;};RoundedRect.prototype.isRenderable=function(){var radii=this.radii;var rect=this.rect;return radii.topLeft.width+radii.topRight.width<=rect.width&&radii.bottomLeft.width+radii.bottomRight.width<=rect.width&&radii.topLeft.height+radii.bottomLeft.height<=rect.height&&radii.topRight.height+radii.bottomRight.height<=rect.height;};RoundedRect.prototype.adjustRadii=function(){var radii=this.radii;var maxRadiusWidth=Math.max(radii.topLeft.width+radii.topRight.width,radii.bottomLeft.width+radii.bottomRight.width);var maxRadiusHeight=Math.max(radii.topLeft.height+radii.bottomLeft.height,radii.topRight.height+radii.bottomRight.height);if(maxRadiusWidth<=0||maxRadiusHeight<=0){this.radii={topLeft:Size.zeroSize,topRight:Size.zeroSize,bottomRight:Size.zeroSize,bottomLeft:Size.zeroSize};return;}
var rect=this.rect;var widthRatio=rect.width/maxRadiusWidth;var heightRatio=rect.height/maxRadiusHeight;this.scaleRadii(widthRatio<heightRatio?widthRatio:heightRatio);};function ellipseXIntercept(y,rx,ry){return rx*Math.sqrt(1-(y*y)/(ry*ry));}
RoundedRect.prototype.minXInterceptAt=function(y,noInterceptReturnValue){if(!this.rect.containsY(y))
return noInterceptReturnValue;var topLeftCorner=this.topLeftCorner(),yi;if(topLeftCorner.containsY(y)){yi=topLeftCorner.maxY-y;return topLeftCorner.maxX-ellipseXIntercept(yi,topLeftCorner.width,topLeftCorner.height);}
var bottomLeftCorner=this.bottomLeftCorner();if(bottomLeftCorner.containsY(y)){yi=y-bottomLeftCorner.y;return bottomLeftCorner.maxX-ellipseXIntercept(yi,bottomLeftCorner.width,bottomLeftCorner.height);}
return this.rect.x;};RoundedRect.prototype.maxXInterceptAt=function(y,noInterceptReturnValue){if(!this.rect.containsY(y))
return noInterceptReturnValue;var topRightCorner=this.topRightCorner(),yi;if(topRightCorner.containsY(y)){yi=topRightCorner.maxY-y;return topRightCorner.x+ellipseXIntercept(yi,topRightCorner.width,topRightCorner.height);}
var bottomRightCorner=this.bottomRightCorner();if(bottomRightCorner.containsY(y)){yi=y-bottomRightCorner.y;return bottomRightCorner.x+ellipseXIntercept(yi,bottomRightCorner.width,bottomRightCorner.height);}
return this.rect.maxX;};RoundedRect.prototype.rightExclusionEdge=function(y1,y2){if(this.rect.isEmpty()||!this.rect.overlapsYRange(y1,y2))
return undefined;if(!this.isRounded()||this.cornersInsetRect().overlapsYRange(y1,y2))
return this.rect.maxX;return Math.max(this.maxXInterceptAt(y1,this.rect.x),this.maxXInterceptAt(y2,this.rect.x));};RoundedRect.prototype.leftExclusionEdge=function(y1,y2){if(this.rect.isEmpty()||!this.rect.overlapsYRange(y1,y2))
return undefined;if(!this.isRounded()||this.cornersInsetRect().overlapsYRange(y1,y2))
return this.rect.x;return Math.min(this.minXInterceptAt(y1,this.rect.maxX),this.minXInterceptAt(y2,this.rect.maxX));};function computeOffsetHeight(dx,dy,areaLimit){if(dy===0)
return 1;if(dx===0||(dx*dy)/2<areaLimit)
return Math.round(dy);return Math.round(Math.sqrt(2*areaLimit*(dy/dx)));}
function leftCornerOffset(leftCorner,offset){return leftCorner.maxX-offset;}
function rightCornerOffset(rightCorner,offset){return rightCorner.x+offset;}
function leftBoxOffset(box){return box.x;}
function rightBoxOffset(box){return box.maxX;}
function adaptiveOffsetFnGenerator(getTopCorner,getBottomCorner,getBoxOffset,getCornerOffset){return function(y1,y2,areaLimit){if(!this.rect.overlapsYRange(y1,y2))
return[{x:undefined,height:y2-y1}];var offsets=[];if(y1<this.rect.y)
offsets.push({x:undefined,height:this.rect.y-y1});var offsetHeight,minY,maxY,y,yi,xi,topCorner=getTopCorner.call(this),bottomCorner=getBottomCorner.call(this),boxArea=new Rect(this.rect.x,topCorner.maxY,this.rect.width,bottomCorner.y-topCorner.maxY);if(topCorner.overlapsYRange(y1,y2)){offsetHeight=computeOffsetHeight(topCorner.width,topCorner.height,areaLimit);minY=Math.max(topCorner.y,y1);maxY=Math.min(topCorner.maxY,y2);for(y=minY;y<maxY;y+=offsetHeight){yi=topCorner.maxY-Math.min(y+offsetHeight,maxY);xi=ellipseXIntercept(yi,topCorner.width,topCorner.height);offsets.push({height:Math.min(offsetHeight,maxY-y),x:getCornerOffset(topCorner,xi)});}}
minY=Math.max(boxArea.y,y1);maxY=Math.min(boxArea.maxY,y2);if(boxArea.overlapsYRange(y1,y2))
offsets.push({x:getBoxOffset(boxArea),height:maxY-minY});if(bottomCorner.overlapsYRange(y1,y2)){offsetHeight=computeOffsetHeight(bottomCorner.width,bottomCorner.height,areaLimit);minY=Math.max(y1,bottomCorner.y);maxY=Math.min(bottomCorner.maxY,y2);for(y=minY;y<maxY;y+=offsetHeight){yi=y-bottomCorner.y;xi=ellipseXIntercept(yi,bottomCorner.width,bottomCorner.height);offsets.push({height:Math.min(offsetHeight,maxY-y),x:getCornerOffset(bottomCorner,xi)});}}
if(y2>this.rect.maxY)
offsets.push({x:undefined,height:y2-this.rect.maxY});return offsets;};}
RoundedRect.prototype.rightExclusionOffsets=adaptiveOffsetFnGenerator(RoundedRect.prototype.topRightCorner,RoundedRect.prototype.bottomRightCorner,rightBoxOffset,rightCornerOffset);RoundedRect.prototype.leftExclusionOffsets=adaptiveOffsetFnGenerator(RoundedRect.prototype.topLeftCorner,RoundedRect.prototype.bottomLeftCorner,leftBoxOffset,leftCornerOffset);function createRoundedRectForCircle(circle,margin){var r=circle.r+margin;var c=new Size(r,r);return new RoundedRect(new Rect(circle.cx-r,circle.cy-r,r*2,r*2),c,c,c,c);}
function createRoundedRectForEllipse(ellipse,margin){var c=new Size(ellipse.rx+margin,ellipse.ry+margin);return new RoundedRect(new Rect(ellipse.cx-c.width,ellipse.cy-c.height,c.width*2,c.height*2),c,c,c,c);}
function createRoundedRectForInset(inset,margin){function toSize(r){return new Size(r[0]+margin,r[1]+margin);}
var topLeft=toSize(inset.radii[0]);var topRight=toSize(inset.radii[1]);var bottomRight=toSize(inset.radii[2]);var bottomLeft=toSize(inset.radii[3]);var rect=new Rect(inset.x-margin,inset.y-margin,inset.width+2*margin,inset.height+2*margin);return new RoundedRect(rect,topLeft,topRight,bottomLeft,bottomRight);}
function createRoundedRectForBox(box,margin){function toSize(r){return new Size(r[0]+margin,r[1]+margin);}
var topLeft=toSize(box.radii[0]),topRight=toSize(box.radii[1]),bottomRight=toSize(box.radii[2]),bottomLeft=toSize(box.radii[3]);var rect=new Rect(-margin,-margin,box.width+2*margin,box.height+2*margin);return new RoundedRect(rect,topLeft,topRight,bottomLeft,bottomRight);}
function createRaster(url,box,shapeImageThreshold,shapeMargin,clip,doLayout){var clipRect=new Rect(clip.x,clip.y,clip.width,clip.height);return new Raster(url,box,shapeImageThreshold,shapeMargin,clipRect,doLayout);}
function createPolygon(polygon,shapeMargin){return new Polygon(polygon.points,polygon.fillRule,shapeMargin);}
function createShapeGeometry(shapeValue,whenReady){var shapeMargin=(shapeValue.shapeMargin===undefined)?0:shapeValue.shapeMargin;var geometry;if(shapeValue.shape){switch(shapeValue.shape.type){case"circle":geometry=createRoundedRectForCircle(shapeValue.shape,shapeMargin);break;case"ellipse":geometry=createRoundedRectForEllipse(shapeValue.shape,shapeMargin);break;case"inset":geometry=createRoundedRectForInset(shapeValue.shape,shapeMargin);if(!geometry.isRenderable())
geometry.adjustRadii();break;case"polygon":geometry=createPolygon(shapeValue.shape,shapeMargin);break;}
whenReady();return geometry;}
if(shapeValue.url)
return createRaster(shapeValue.url,shapeValue.box,shapeValue.shapeImageThreshold,shapeMargin,shapeValue.clip,whenReady);if(shapeValue.box){geometry=createRoundedRectForBox(shapeValue.box,shapeMargin);whenReady();return geometry;}
console.error("Unrecognized shape");}
function ShapeInfo(element){this.metrics=new Metrics(element);var parserSettings={metrics:this.metrics,shapeOutside:element.getAttribute('data-shape-outside'),shapeMargin:element.getAttribute('data-shape-margin'),shapeImageThreshold:element.getAttribute('data-shape-image-threshold')};this.shapeValue=new ShapeValue(parserSettings);var self=this;this.geometry=createShapeGeometry(this.shapeValue,function(){self.ready=true;if(self.callback)
self.callback();});}
ShapeInfo.prototype.onReady=function(callback){if(this.ready)
callback();else
this.callback=callback;};ShapeInfo.prototype.leftExclusionEdge=function(line){return this.geometry?this.geometry.leftExclusionEdge(line.top,line.bottom):line.left;};ShapeInfo.prototype.rightExclusionEdge=function(line){return this.geometry?this.geometry.rightExclusionEdge(line.top,line.bottom):line.right;};function exclusionEdgeValue(x){return x===undefined?0:x;}
ShapeInfo.prototype.computeStepOffsets=function(step){var offset,offsets=[];for(var i=0;i<Math.ceil(this.metrics.marginBox.height/step);i++){var lineBounds={left:0,right:this.shapeValue.box.width,top:i*step,bottom:Math.min((i+1)*step,this.metrics.marginBox.height)};lineBounds.top-=(this.metrics.margins[0]+this.shapeValue.box.y);lineBounds.bottom-=(this.metrics.margins[0]+this.shapeValue.box.y);if(this.metrics.cssFloat==='left'){offset=this.rightExclusionEdge(lineBounds);offset=(offset===undefined?0:offset+this.shapeValue.box.x+this.metrics.margins[3]);}else{offset=this.leftExclusionEdge(lineBounds);offset=(offset===undefined?0:this.metrics.marginBox.width-(offset+this.shapeValue.box.x+this.metrics.margins[3]));}
offsets.push({cssFloat:this.metrics.cssFloat,top:lineBounds.top+this.shapeValue.box.y+this.metrics.margins[0],bottom:lineBounds.bottom+this.shapeValue.box.y+this.metrics.margins[0],'offset':Math.min(offset,this.metrics.marginBox.width)});}
return offsets;};ShapeInfo.prototype.computeAdaptiveOffsets=function(limit){var dx=this.shapeValue.box.x+this.metrics.margins[3];var dy=this.metrics.margins[0]+this.shapeValue.box.y;var offsets=(this.metrics.cssFloat==='left')?this.geometry.rightExclusionOffsets(-dy,this.metrics.marginBox.height-dy,limit):this.geometry.leftExclusionOffsets(-dy,this.metrics.marginBox.height-dy,limit);var result=[];var y=0;for(var i=0;i<offsets.length;i++){var layoutOffset;if(offsets[i].x===undefined)
layoutOffset=0;else{layoutOffset=this.metrics.cssFloat=='left'?offsets[i].x+dx:this.metrics.marginBox.width-(offsets[i].x+dx);layoutOffset=Math.min(layoutOffset,this.metrics.marginBox.width);}
result.push({offset:layoutOffset,top:y,bottom:y+offsets[i].height,cssFloat:this.metrics.cssFloat});y+=offsets[i].height;}
return result;};ShapeInfo.prototype.offsets=function(parameters){if(this.geometry instanceof RoundedRect)
return(parameters&&parameters.mode)=="step"?this.computeStepOffsets(parameters.step):this.computeAdaptiveOffsets(parameters.limit);return this.computeStepOffsets(parameters.step);};function Polyfill(scope){this.scope=scope;var script=document.currentScript;if(!script){script=document.getElementsByTagName('script');script=script[script.length-1];}
var self=this;var autoRun=script.getAttribute('data-auto-run')!=='false';if(autoRun&&scope.addEventListener){scope.addEventListener('load',function(){self.run();});}}
function fakeIt(element,offsets){var wrapper=document.createElement('div'),styles;offsets.forEach(function(offset,i){var height=offset.bottom-offset.top;var sandbag=document.createElement('div');sandbag.className="sandbag";styles={cssFloat:offset.cssFloat,width:offset.offset+'px',height:height+'px',clear:offset.cssFloat};for(var prop in styles)
sandbag.style[prop]=styles[prop];wrapper.appendChild(sandbag);});styles={position:'relative',width:'auto',height:'0',clear:'both',pointerEvents:'none'};for(var prop in styles)
wrapper.style[prop]=styles[prop];var parent=element.parentNode,subwrapper,computedStyle=getComputedStyle(parent),borderHeight=parseFloat(computedStyle.borderTop)+parseFloat(computedStyle.borderBottom);styles={position:'absolute',top:'0',width:'100%',height:parent.clientHeight-borderHeight,left:'0'};subwrapper=document.createElement('div');for(prop in styles)
subwrapper.style[prop]=styles[prop];wrapper.appendChild(subwrapper);if(element.parentNode)
element.parentNode.insertBefore(wrapper,element);subwrapper.appendChild(element);wrapper.setAttribute('data-shape-outside-container','true');}
Polyfill.prototype.polyfill=function(element,settings){var computedStyle=getComputedStyle(element);if(!(/left|right/.test(computedStyle.cssFloat)&&element.getAttribute('data-shape-outside')))
return;var step=settings&&settings.step||parseInt(computedStyle.fontSize);var mode=settings&&settings.mode||"adaptive";var limit=settings&&settings.limit||step*1.8;var shapeInfo=new ShapeInfo(element);var self=this;shapeInfo.onReady(function(){var offsets=shapeInfo.offsets({mode:mode,limit:limit,step:step});fakeIt(element,offsets);if(settings&&settings.callback&&typeof settings.callback==='function')
settings.callback.call(self.scope);});};Polyfill.prototype.removePolyfill=function(element){var oldParent=element.parentNode;for(oldParent=element.parentNode;oldParent&&oldParent.hasAttribute&&!oldParent.hasAttribute('data-shape-outside-container');oldParent=oldParent.parentNode);if(!oldParent||!oldParent.hasAttribute)
return;oldParent.parentNode.insertBefore(element,oldParent);oldParent.parentNode.removeChild(oldParent);};function debounce(func,wait){var timeout;return function(){var context=this,args=arguments;clearTimeout(timeout);timeout=setTimeout(function(){timeout=null;func.apply(context,args);},wait);};}
Polyfill.prototype.run=function(settings){var self=this;var force=settings&&settings.force,forceLayout=force&&(force===this.Force.Layout||force===this.Force.LayoutStyles),forceStyles=force&&(force===this.Force.Styles||force===this.Force.LayoutStyles);if(force===this.Force.LayoutStyles)
settings.force=this.Force.Layout;else if(force)
delete settings.force;if(this.hasNativeSupport===undefined){var div=document.createElement('div');var properties=['shape-outside','-webkit-shape-outside'];properties.forEach(function(property){div.style.setProperty(property,'content-box');self.hasNativeSupport=self.hasNativeSupport||div.style.getPropertyValue(property);});}
if(this.hasNativeSupport&&!force)
return;if(!this.stylesLoaded||forceStyles){this.stylesLoaded=true;new StylePolyfill(function(rules){rules.forEach(function(rule){var els=document.querySelectorAll(rule.selector);for(var i=0;i<els.length;i++)
els[i].setAttribute('data-'+rule.property,rule.value);});self.run(settings);});var relayout=debounce(function(){self.teardown();self.run(settings);},300);this.scope.addEventListener('resize',relayout);return;}
var els=document.querySelectorAll('[data-shape-outside]');for(var i=0;i<els.length;i++)
this.polyfill(els[i],settings);};Polyfill.prototype.teardown=function(){var els=document.querySelectorAll('[data-shape-outside]');for(var i=0;i<els.length;i++)
this.removePolyfill(els[i]);};Polyfill.prototype.Force={Layout:'force-layout',Styles:'force-styles',LayoutStyles:'force-layout-styles'};if(Object.freeze)
Polyfill.prototype.Force=Object.freeze(Polyfill.prototype.Force);function ShapeValue(params){if(!(params&&params.metrics&&params.shapeOutside)){console.error('ShapeValue requires at least a metrics object and shape-outside string');return;}
this.url=this.parseUrl(params.shapeOutside);this.box=this.parseBox(this.url?'content-box':params.shapeOutside,params.metrics);this.shape=this.parseBasicShape(params.shapeOutside,this.box,params.metrics);this.clip=this.computeClip(this.box,params.metrics);this.shapeMargin=this.parseShapeMargin(params.shapeMargin,this.box,params.metrics);this.shapeImageThreshold=this.parseShapeImageThreshold(params.shapeImageThreshold);}
ShapeValue.prototype.parseUrl=function(text){var url=/url\((.*)\)/.exec(text);if(!url)
return null;url=url[1];url=url.replace(/^['"]/,'');url=url.replace(/['"]$/,'');return url;};function adjustBounds(bounds,sign,offsets){var top=offsets.reduce(function(prev,curr){return prev+curr[0];},0);var right=offsets.reduce(function(prev,curr){return prev+curr[1];},0);var bottom=offsets.reduce(function(prev,curr){return prev+curr[2];},0);var left=offsets.reduce(function(prev,curr){return prev+curr[3];},0);bounds.x-=sign*left;bounds.y-=sign*top;bounds.width+=sign*(left+right);bounds.height+=sign*(top+bottom);}
function adjustRadius(radius,sign,offset){if(sign<0)
return Math.max(radius+sign*offset,0);var ratio=Math.abs(radius/offset);if(ratio<1)
return Math.max(radius+offset*(1+Math.pow(ratio-1,3)),0);return radius+offset;}
function adjustRadii(radii,sign,offsets){var top=offsets.reduce(function(prev,curr){return prev+curr[0];},0);var right=offsets.reduce(function(prev,curr){return prev+curr[1];},0);var bottom=offsets.reduce(function(prev,curr){return prev+curr[2];},0);var left=offsets.reduce(function(prev,curr){return prev+curr[3];},0);radii[0][0]=adjustRadius(radii[0][0],sign,left);radii[0][1]=adjustRadius(radii[0][1],sign,top);radii[1][0]=adjustRadius(radii[1][0],sign,right);radii[1][1]=adjustRadius(radii[1][1],sign,top);radii[2][0]=adjustRadius(radii[2][0],sign,right);radii[2][1]=adjustRadius(radii[2][1],sign,bottom);radii[3][0]=adjustRadius(radii[3][0],sign,left);radii[3][1]=adjustRadius(radii[3][1],sign,bottom);}
ShapeValue.prototype.parseBox=function(text,metrics){var box=/margin-box|border-box|padding-box|content-box/.exec(text);if(!box)
box='margin-box';else
box=box[0];var radii=JSON.parse(JSON.stringify(metrics.borderBox.radii));var result={text:box,x:metrics.borderBox.x,y:metrics.borderBox.y,width:metrics.borderBox.width,height:metrics.borderBox.height,'radii':radii};switch(box){case'content-box':adjustBounds(result,-1,[metrics.paddings,metrics.borders]);adjustRadii(result.radii,-1,[metrics.paddings,metrics.borders]);break;case'padding-box':adjustBounds(result,-1,[metrics.borders]);adjustRadii(result.radii,-1,[metrics.borders]);break;case'border-box':break;case'margin-box':adjustBounds(result,1,[metrics.margins]);adjustRadii(result.radii,1,[metrics.margins]);break;}
return result;};function pluck(arr,index){return arr.map(function(item){return item[index];});}
ShapeValue.prototype.printShape=function(){if(this.shape){switch(this.shape.type){case'inset':return'inset('+this.shape.insets.join(' ')+' round '+pluck(this.shape.radii,0).join(' ')+' / '+pluck(this.shape.radii,1).join(' ')+')';case'circle':return'circle('+this.shape.r+' at '+this.shape.cx+' '+this.shape.cy+')';case'ellipse':return'ellipse('+this.shape.rx+' '+this.shape.ry+' at '+this.shape.cx+' '+this.shape.cy+')';case'polygon':return'polygon('+this.shape.fillRule+', '+
this.shape.points.map(function(point){return point.x+' '+point.y;}).join(', ')+')';default:return'not yet implemented for '+this.shape.type;}}
return'no shape specified';};ShapeValue.prototype.printBox=function(){if(this.box){return this.box.text+' { x: '+this.box.x+', y: '+this.box.y+', width: '+this.box.width+', height: '+this.box.height+', radii: '+pluck(this.box.radii,0).join(' ')+' / '+pluck(this.box.radii,1).join(' ')+' }';}
return'no box specified';};ShapeValue.prototype.parseBasicShape=function(text,box,metrics){var shape=/(inset|circle|ellipse|polygon)\((.*)\)/.exec(text);if(!shape)
return null;var command=shape[1],args=shape[2]?shape[2]:'';switch(command){case'inset':return this.parseInset(args,box,metrics);case'circle':return this.parseCircle(args,box,metrics);case'ellipse':return this.parseEllipse(args,box,metrics);case'polygon':return this.parsePolygon(args,box,metrics);default:return null;}};ShapeValue.prototype.parseInset=function(args,box,metrics){var re=/((?:[^r]|r(?!o))*)?\s*(?:round\s+([^\/]*)(?:\s*\/\s*(.*))?)?/;args=re.exec(args);var result={type:'inset',insets:[0,0,0,0],radii:[[0,0],[0,0],[0,0],[0,0]]};if(args&&args[1]){var insets=args[1].trim();insets=insets.split(/\s+/);result.insets[0]=insets[0];result.insets[1]=insets.length>1?insets[1]:result.insets[0];result.insets[2]=insets.length>2?insets[2]:result.insets[0];result.insets[3]=insets.length>3?insets[3]:result.insets[1];result.insets[0]=metrics.toPixels(result.insets[0],box.height);result.insets[1]=metrics.toPixels(result.insets[1],box.width);result.insets[2]=metrics.toPixels(result.insets[2],box.height);result.insets[3]=metrics.toPixels(result.insets[3],box.width);}
var radii;if(args&&args[2]){radii=args[2].trim();radii=radii.split(/\s+/);if(radii.length<2)radii.push(radii[0]);if(radii.length<3)radii.push(radii[0]);if(radii.length<4)radii.push(radii[1]);result.radii=radii.map(function(radius){radius=metrics.toPixels(radius,box.width);return[radius,radius];});}
if(args&&args[3]){radii=args[3].trim();radii=radii.split(/\s+/);if(radii.length<2)radii.push(radii[0]);if(radii.length<3)radii.push(radii[0]);if(radii.length<4)radii.push(radii[1]);radii.forEach(function(radius,i){result.radii[i][1]=metrics.toPixels(radius,box.height);});}
result.x=result.insets[3];result.y=result.insets[0];result.width=box.width-(result.insets[1]+result.insets[3]);result.height=box.height-(result.insets[0]+result.insets[2]);return result;};function positionOffsetToPixels(offset,extent,metrics){offset=offset.split(/\s+/);var direction='TopLeft';var length=0;switch(offset[0]){case'top':case'left':break;case'bottom':case'right':direction='BottomRight';break;case'center':length=extent/2.0;break;default:length=metrics.toPixels(offset[0],extent);}
if(offset.length>1)
length=metrics.toPixels(offset[1],extent);return direction==='TopLeft'?length:extent-length;}
function radiusToPixels(r,sides,extent,metrics){if(r==='closest-side')
return Math.min.apply(null,sides);else if(r==='farthest-side')
return Math.max.apply(null,sides);else
return metrics.toPixels(r,extent);}
ShapeValue.prototype.parseEllipsoid=function(args){var re=/((?:[^a]|a(?!t))*)?\s*(?:at\s+(.*))?/;args=re.exec(args);var result={};if(args&&args[1]){var radii=args[1].trim();radii=radii.split(/\s+/);result.rx=radii[0];result.ry=radii.length>1?radii[1]:radii[0];}else{result.rx=result.ry='closest-side';}
var resolvedPositions=[];if(args&&args[2]){var positions=args[2].trim();positions=positions.split(/\s+/);var canMergeBack=false;positions.forEach(function(position){if(/\d+/.test(position)&&canMergeBack)
resolvedPositions[resolvedPositions.length-1]+=' '+position;else
resolvedPositions.push(position);canMergeBack=(/top|bottom|left|right/.test(position)&&positions.length>2);});}
while(resolvedPositions.length<2)
resolvedPositions.push('center');if(/top|bottom/.test(resolvedPositions[0])||/left|right/.test(resolvedPositions[1])){var swap=resolvedPositions[0];resolvedPositions[0]=resolvedPositions[1];resolvedPositions[1]=swap;}
result.cx=resolvedPositions[0];result.cy=resolvedPositions[1];return result;};ShapeValue.prototype.parseCircle=function(args,box,metrics){var result=this.parseEllipsoid(args);result.type='circle';result.cx=positionOffsetToPixels(result.cx,box.width,metrics);result.cy=positionOffsetToPixels(result.cy,box.height,metrics);result.r=radiusToPixels(result.rx,[Math.abs(result.cx),Math.abs(box.width-result.cx),Math.abs(result.cy),Math.abs(box.height-result.cy)],Math.sqrt((box.width*box.width+box.height*box.height)/2),metrics);delete result.rx;delete result.ry;return result;};ShapeValue.prototype.parseEllipse=function(args,box,metrics){var result=this.parseEllipsoid(args);result.type='ellipse';result.cx=positionOffsetToPixels(result.cx,box.width,metrics);result.cy=positionOffsetToPixels(result.cy,box.height,metrics);result.rx=radiusToPixels(result.rx,[Math.abs(result.cx),Math.abs(box.width-result.cx)],box.width,metrics);result.ry=radiusToPixels(result.ry,[Math.abs(result.cy),Math.abs(box.height-result.cy)],box.height,metrics);return result;};ShapeValue.prototype.parsePolygon=function(args,box,metrics){args=args.split(/\s*,\s*/);var rule='nonzero';if(args.length>0&&/nonzero|evenodd/.test(args[0])){rule=args[0].trim();args=args.slice(1);}
var points=args.map(function(point){var coords=point.split(/\s+/);return{x:metrics.toPixels(coords[0],box.width),y:metrics.toPixels(coords[1],box.height)};});return{type:'polygon','fillRule':rule,'points':points};};ShapeValue.prototype.computeClip=function(referenceBox,metrics){var marginLeft=metrics.margins[3];var marginTop=metrics.margins[0];var marginWidth=metrics.margins[3]+metrics.margins[1];var marginHeight=metrics.margins[0]+metrics.margins[2];return{x:-referenceBox.x-marginLeft,y:-referenceBox.y-marginTop,width:metrics.borderBox.width+marginWidth,height:metrics.borderBox.height+marginHeight};};ShapeValue.prototype.parseShapeMargin=function(margin,box,metrics){return parseInt(margin)?Math.max(0,metrics.toPixels(margin,box.width)):0;};ShapeValue.prototype.parseShapeImageThreshold=function(threshold){var value=parseFloat(threshold);return value?Math.min(Math.max(0,value),1.0):0;};function getStyleSheetElements(){var doc=document,stylesheets=[],i,len;if(typeof doc.querySelectorAll=='function'){stylesheets=doc.querySelectorAll('link[rel="stylesheet"], style');stylesheets=Array.prototype.slice.call(stylesheets,0);}else{var tags=doc.getElementsByTagName("link");if(tags.length){for(i=0,len=tags.length;i<len;i++){if(tags[i].getAttribute('rel')==="stylesheet"){stylesheets.push(tags[i]);}}}
tags=doc.getElementsByTagName("style");for(i=0,len=tags.length;i<len;i++){stylesheets.push(tags[i]);}}
return stylesheets;}
function StyleSheet(source){this.source=source;this.url=source.href||null;this.cssText='';}
StyleSheet.prototype.load=function(onSuccess,onError,scope){var self=this;if(this.url){var xhr=new XMLHttpRequest();xhr.onreadystatechange=function(){if(xhr.readyState===4){if(xhr.status===200){self.cssText=xhr.responseText;onSuccess.call(scope,self);}else{onError.call(scope,self);}}};xhr.open('GET',this.url);try{xhr.send(null);}
catch(e){console.log("An error occurred loading a stylesheet, probably because we can't access the local file system");onError.call(scope,self);}}else{this.cssText=this.source.textContent;onSuccess.call(scope,self);}};function StyleLoader(callback){if(!(this instanceof StyleLoader)){return new StyleLoader(callback);}
this.stylesheets=[];this.queueCount=0;this.callback=callback||function(){};this.init();}
StyleLoader.prototype.init=function(){var els=getStyleSheetElements(),len=els.length,stylesheet,i;this.queueCount=len;for(i=0;i<len;i++){stylesheet=new StyleSheet(els[i]);this.stylesheets.push(stylesheet);stylesheet.load(this.onStyleSheetLoad,this.onStyleSheetError,this);}};StyleLoader.prototype.onStyleSheetLoad=function(stylesheet){this.queueCount--;this.onComplete.call(this);};StyleLoader.prototype.onStyleSheetError=function(stylesheet){var len=this.stylesheets.length,i;for(i=0;i<len;i++){if(stylesheet.source===this.stylesheets[i].source){this.stylesheets.splice(i,1);this.queueCount--;this.onComplete.call(this);return;}}};StyleLoader.prototype.onComplete=function(){if(this.queueCount===0){this.callback.call(this,this.stylesheets);}};function StylePolyfill(callback){this.callback=callback||function(){};var self=this;new StyleLoader(function(stylesheets){self.onStylesLoaded(stylesheets);});}
StylePolyfill.prototype.onStylesLoaded=function(stylesheets){var selector="\\s*([^{}]*[^\\s])\\s*{[^\\}]*";var value="\\s*:\\s*((?:[^;\\(]|\\([^\\)]*\\))*)\\s*;";var re,match;var rules=[],properties=["shape-outside","shape-margin","shape-image-threshold"];properties.forEach(function(property){re=new RegExp(selector+"("+property+")"+value,"ig");stylesheets.forEach(function(stylesheet){while((match=re.exec(stylesheet.cssText))!==null){rules.push({selector:match[1],property:match[2],value:match[3]});}});});this.callback(rules);};scope.ShapesPolyfill=new Polyfill(scope);})(window);;;
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.AirDatepicker=t():e.AirDatepicker=t()}(this,(function(){return function(){"use strict";var e={d:function(t,i){for(var s in i)e.o(i,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:i[s]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t={};e.d(t,{default:function(){return K}});var i={days:"days",months:"months",years:"years",day:"day",month:"month",year:"year",eventChangeViewDate:"changeViewDate",eventChangeCurrentView:"changeCurrentView",eventChangeFocusDate:"changeFocusDate",eventChangeSelectedDate:"changeSelectedDate",eventChangeTime:"changeTime",eventChangeLastSelectedDate:"changeLastSelectedDate",actionSelectDate:"selectDate",actionUnselectDate:"unselectDate",cssClassWeekend:"-weekend-"},s={classes:"",inline:!1,locale:{days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],daysShort:["Вос","Пон","Вто","Сре","Чет","Пят","Суб"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",dateFormat:"dd.MM.yyyy",timeFormat:"HH:mm",firstDay:1},startDate:new Date,firstDay:"",weekends:[6,0],dateFormat:"",altField:"",altFieldDateFormat:"T",toggleSelected:!0,keyboardNav:!0,selectedDates:!1,container:"",isMobile:!1,visible:!1,position:"bottom left",offset:12,view:i.days,minView:i.days,showOtherMonths:!0,selectOtherMonths:!0,moveToOtherMonthsOnSelect:!0,showOtherYears:!0,selectOtherYears:!0,moveToOtherYearsOnSelect:!0,minDate:"",maxDate:"",disableNavWhenOutOfRange:!0,multipleDates:!1,multipleDatesSeparator:", ",range:!1,dynamicRange:!0,buttons:!1,monthsField:"monthsShort",showEvent:"focus",autoClose:!1,prevHtml:'<svg><path d="M 17,12 l -5,5 l 5,5"></path></svg>',nextHtml:'<svg><path d="M 14,12 l 5,5 l -5,5"></path></svg>',navTitles:{days:"MMMM, <i>yyyy</i>",months:"yyyy",years:"yyyy1 - yyyy2"},timepicker:!1,onlyTimepicker:!1,dateTimeSeparator:" ",timeFormat:"",minHours:0,maxHours:24,minMinutes:0,maxMinutes:59,hoursStep:1,minutesStep:1,onSelect:!1,onChangeViewDate:!1,onChangeView:!1,onRenderCell:!1,onShow:!1,onHide:!1,onClickDayName:!1};function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;return"string"==typeof e?t.querySelector(e):e}function n(){let{tagName:e="div",className:t="",innerHtml:i="",id:s="",attrs:a={}}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=document.createElement(e);return t&&n.classList.add(...t.split(" ")),s&&(n.id=s),i&&(n.innerHTML=i),a&&r(n,a),n}function r(e,t){for(let[i,s]of Object.entries(t))void 0!==s&&e.setAttribute(i,s);return e}function h(e){return new Date(e.getFullYear(),e.getMonth()+1,0).getDate()}function o(e){let t=e.getHours(),{hours:i,dayPeriod:s}=l(t);return{year:e.getFullYear(),month:e.getMonth(),fullMonth:e.getMonth()+1<10?"0"+(e.getMonth()+1):e.getMonth()+1,date:e.getDate(),fullDate:e.getDate()<10?"0"+e.getDate():e.getDate(),day:e.getDay(),hours:t,fullHours:d(t),hours12:i,dayPeriod:s,fullHours12:d(i),minutes:e.getMinutes(),fullMinutes:e.getMinutes()<10?"0"+e.getMinutes():e.getMinutes()}}function l(e){return{dayPeriod:e>11?"pm":"am",hours:e%12==0?12:e%12}}function d(e){return e<10?"0"+e:e}function c(e){let t=10*Math.floor(e.getFullYear()/10);return[t,t+9]}function u(){let e=[];for(var t=arguments.length,i=new Array(t),s=0;s<t;s++)i[s]=arguments[s];return i.forEach((t=>{if("object"==typeof t)for(let i in t)t[i]&&e.push(i);else t&&e.push(t)})),e.join(" ")}function p(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.days;if(!e||!t)return!1;let a=o(e),n=o(t),r={[i.days]:a.date===n.date&&a.month===n.month&&a.year===n.year,[i.months]:a.month===n.month&&a.year===n.year,[i.years]:a.year===n.year};return r[s]}function m(e,t,i){let s=g(e,!1).getTime(),a=g(t,!1).getTime();return i?s>=a:s>a}function v(e,t){return!m(e,t,!0)}function g(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=new Date(e.getTime());return"boolean"!=typeof t||t||D(i),i}function D(e){return e.setHours(0,0,0,0),e}function y(e,t,i){e.length?e.forEach((e=>{e.addEventListener(t,i)})):e.addEventListener(t,i)}function f(e,t){return!(!e||e===document||e instanceof DocumentFragment)&&(e.matches(t)?e:f(e.parentNode,t))}function w(e,t,i){return e>i?i:e<t?t:e}function b(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s<t;s++)i[s-1]=arguments[s];return i.filter((e=>e)).forEach((t=>{for(let[i,s]of Object.entries(t))if(void 0!==s&&"[object Object]"===s.toString()){let t=void 0!==e[i]?e[i].toString():void 0,a=s.toString(),n=Array.isArray(s)?[]:{};e[i]=e[i]?t!==a?n:e[i]:n,b(e[i],s)}else e[i]=s})),e}function k(e){let t=e;return e instanceof Date||(t=new Date(e)),isNaN(t.getTime())&&(console.log(`Unable to convert value "${e}" to Date object`),t=!1),t}function C(e){let t="\\s|\\.|-|/|\\\\|,|\\$|\\!|\\?|:|;";return new RegExp("(^|>|"+t+")("+e+")($|<|"+t+")","g")}function $(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var s=i.call(e,t);if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class _{constructor(){let{type:e,date:t,dp:i,opts:s,body:a}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};$(this,"focus",(()=>{this.$cell.classList.add("-focus-"),this.focused=!0})),$(this,"removeFocus",(()=>{this.$cell.classList.remove("-focus-"),this.focused=!1})),$(this,"select",(()=>{this.$cell.classList.add("-selected-"),this.selected=!0})),$(this,"removeSelect",(()=>{this.$cell.classList.remove("-selected-","-range-from-","-range-to-"),this.selected=!1})),$(this,"onChangeSelectedDate",(()=>{this.isDisabled||(this._handleSelectedStatus(),this.opts.range&&this._handleRangeStatus())})),$(this,"onChangeFocusDate",(e=>{if(!e)return void(this.focused&&this.removeFocus());let t=p(e,this.date,this.type);t?this.focus():!t&&this.focused&&this.removeFocus(),this.opts.range&&this._handleRangeStatus()})),$(this,"render",(()=>(this.$cell.innerHTML=this._getHtml(),this.$cell.adpCell=this,this.$cell))),this.type=e,this.singleType=this.type.slice(0,-1),this.date=t,this.dp=i,this.opts=s,this.body=a,this.customData=!1,this.init()}init(){let{range:e,onRenderCell:t}=this.opts;t&&(this.customData=t({date:this.date,cellType:this.singleType,datepicker:this.dp})),this._createElement(),this._bindDatepickerEvents(),this._handleInitialFocusStatus(),this.dp.hasSelectedDates&&(this._handleSelectedStatus(),e&&this._handleRangeStatus())}_bindDatepickerEvents(){this.dp.on(i.eventChangeSelectedDate,this.onChangeSelectedDate),this.dp.on(i.eventChangeFocusDate,this.onChangeFocusDate)}unbindDatepickerEvents(){this.dp.off(i.eventChangeSelectedDate,this.onChangeSelectedDate),this.dp.off(i.eventChangeFocusDate,this.onChangeFocusDate)}_createElement(){var e;let{year:t,month:i,date:s}=o(this.date),a=(null===(e=this.customData)||void 0===e?void 0:e.attrs)||{};this.$cell=n({className:this._getClassName(),attrs:{"data-year":t,"data-month":i,"data-date":s,...a}})}_getClassName(){var e,t;let s=new Date,{selectOtherMonths:a,selectOtherYears:n}=this.opts,{minDate:r,maxDate:h}=this.dp,{day:l}=o(this.date),d=this._isOutOfMinMaxRange(),c=null===(e=this.customData)||void 0===e?void 0:e.disabled,m=u("air-datepicker-cell",`-${this.singleType}-`,{"-current-":p(s,this.date,this.type),"-min-date-":r&&p(r,this.date,this.type),"-max-date-":h&&p(h,this.date,this.type)}),v="";switch(this.type){case i.days:v=u({"-weekend-":this.dp.isWeekend(l),"-other-month-":this.isOtherMonth,"-disabled-":this.isOtherMonth&&!a||d||c});break;case i.months:v=u({"-disabled-":d||c});break;case i.years:v=u({"-other-decade-":this.isOtherDecade,"-disabled-":d||this.isOtherDecade&&!n||c})}return u(m,v,null===(t=this.customData)||void 0===t?void 0:t.classes)}_getHtml(){var e;let{year:t,month:s,date:a}=o(this.date),{showOtherMonths:n,showOtherYears:r}=this.opts;if(null!==(e=this.customData)&&void 0!==e&&e.html)return this.customData.html;switch(this.type){case i.days:return!n&&this.isOtherMonth?"":a;case i.months:return this.dp.locale[this.opts.monthsField][s];case i.years:return!r&&this.isOtherDecade?"":t}}_isOutOfMinMaxRange(){let{minDate:e,maxDate:t}=this.dp,{type:s,date:a}=this,{month:n,year:r,date:h}=o(a),l=s===i.days,d=s===i.years,c=!!e&&new Date(r,d?e.getMonth():n,l?h:e.getDate()),u=!!t&&new Date(r,d?t.getMonth():n,l?h:t.getDate());return e&&t?v(c,e)||m(u,t):e?v(c,e):t?m(u,t):void 0}destroy(){this.unbindDatepickerEvents()}_handleRangeStatus(){let{rangeDateFrom:e,rangeDateTo:t}=this.dp,i=u({"-in-range-":e&&t&&(s=this.date,a=e,n=t,m(s,a)&&v(s,n)),"-range-from-":e&&p(this.date,e,this.type),"-range-to-":t&&p(this.date,t,this.type)});var s,a,n;this.$cell.classList.remove("-range-from-","-range-to-","-in-range-"),i&&this.$cell.classList.add(...i.split(" "))}_handleSelectedStatus(){let e=this.dp._checkIfDateIsSelected(this.date,this.type);e?this.select():!e&&this.selected&&this.removeSelect()}_handleInitialFocusStatus(){p(this.dp.focusDate,this.date,this.type)&&this.focus()}get isDisabled(){return this.$cell.matches(".-disabled-")}get isOtherMonth(){return this.dp.isOtherMonth(this.date)}get isOtherDecade(){return this.dp.isOtherDecade(this.date)}}function M(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var s=i.call(e,t);if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}let S={[i.days]:`<div class="air-datepicker-body--day-names"></div><div class="air-datepicker-body--cells -${i.days}-"></div>`,[i.months]:`<div class="air-datepicker-body--cells -${i.months}-"></div>`,[i.years]:`<div class="air-datepicker-body--cells -${i.years}-"></div>`};const T=".air-datepicker-cell";class F{constructor(e){let{dp:t,type:s,opts:a}=e;M(this,"handleClick",(e=>{let t=e.target.closest(T).adpCell;if(t.isDisabled)return;if(!this.dp.isMinViewReached)return void this.dp.down();let i=this.dp._checkIfDateIsSelected(t.date,t.type);i?this.dp._handleAlreadySelectedDates(i,t.date):this.dp.selectDate(t.date)})),M(this,"handleDayNameClick",(e=>{let t=e.target.getAttribute("data-day-index");this.opts.onClickDayName({dayIndex:Number(t),datepicker:this.dp})})),M(this,"onChangeCurrentView",(e=>{e!==this.type?this.hide():(this.show(),this.render())})),M(this,"onMouseOverCell",(e=>{let t=f(e.target,T);this.dp.setFocusDate(!!t&&t.adpCell.date)})),M(this,"onMouseOutCell",(()=>{this.dp.setFocusDate(!1)})),M(this,"onClickBody",(e=>{let{onClickDayName:t}=this.opts,i=e.target;i.closest(T)&&this.handleClick(e),t&&i.closest(".air-datepicker-body--day-name")&&this.handleDayNameClick(e)})),M(this,"onMouseDown",(e=>{this.pressed=!0;let t=f(e.target,T),i=t&&t.adpCell;p(i.date,this.dp.rangeDateFrom)&&(this.rangeFromFocused=!0),p(i.date,this.dp.rangeDateTo)&&(this.rangeToFocused=!0)})),M(this,"onMouseMove",(e=>{if(!this.pressed||!this.dp.isMinViewReached)return;e.preventDefault();let t=f(e.target,T),i=t&&t.adpCell,{selectedDates:s,rangeDateTo:a,rangeDateFrom:n}=this.dp;if(!i||i.isDisabled)return;let{date:r}=i;if(2===s.length){if(this.rangeFromFocused&&!m(r,a)){let{hours:e,minutes:t}=o(n);r.setHours(e),r.setMinutes(t),this.dp.rangeDateFrom=r,this.dp.replaceDate(n,r)}if(this.rangeToFocused&&!v(r,n)){let{hours:e,minutes:t}=o(a);r.setHours(e),r.setMinutes(t),this.dp.rangeDateTo=r,this.dp.replaceDate(a,r)}}})),M(this,"onMouseUp",(()=>{this.pressed=!1,this.rangeFromFocused=!1,this.rangeToFocused=!1})),M(this,"onChangeViewDate",((e,t)=>{if(!this.isVisible)return;let s=c(e),a=c(t);switch(this.dp.currentView){case i.days:if(p(e,t,i.months))return;break;case i.months:if(p(e,t,i.years))return;break;case i.years:if(s[0]===a[0]&&s[1]===a[1])return}this.render()})),M(this,"render",(()=>{this.destroyCells(),this._generateCells(),this.cells.forEach((e=>{this.$cells.appendChild(e.render())}))})),this.dp=t,this.type=s,this.opts=a,this.cells=[],this.$el="",this.pressed=!1,this.isVisible=!0,this.init()}init(){this._buildBaseHtml(),this.type===i.days&&this.renderDayNames(),this.render(),this._bindEvents(),this._bindDatepickerEvents()}_bindEvents(){let{range:e,dynamicRange:t}=this.opts;y(this.$el,"mouseover",this.onMouseOverCell),y(this.$el,"mouseout",this.onMouseOutCell),y(this.$el,"click",this.onClickBody),e&&t&&(y(this.$el,"mousedown",this.onMouseDown),y(this.$el,"mousemove",this.onMouseMove),y(window.document,"mouseup",this.onMouseUp))}_bindDatepickerEvents(){this.dp.on(i.eventChangeViewDate,this.onChangeViewDate),this.dp.on(i.eventChangeCurrentView,this.onChangeCurrentView)}_buildBaseHtml(){this.$el=n({className:`air-datepicker-body -${this.type}-`,innerHtml:S[this.type]}),this.$names=a(".air-datepicker-body--day-names",this.$el),this.$cells=a(".air-datepicker-body--cells",this.$el)}_getDayNamesHtml(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.dp.locale.firstDay,t="",s=this.dp.isWeekend,{onClickDayName:a}=this.opts,n=e,r=0;for(;r<7;){let e=n%7;t+=`<div class="${u("air-datepicker-body--day-name",{[i.cssClassWeekend]:s(e),"-clickable-":!!a})}" data-day-index='${e}'>${this.dp.locale.daysMin[e]}</div>`,r++,n++}return t}_getDaysCells(){let{viewDate:e,locale:{firstDay:t}}=this.dp,i=h(e),{year:s,month:a}=o(e),n=new Date(s,a,1),r=new Date(s,a,i),l=n.getDay()-t,d=6-r.getDay()+t;l=l<0?l+7:l,d=d>6?d-7:d;let c=function(e,t){let{year:i,month:s,date:a}=o(e);return new Date(i,s,a-t)}(n,l),u=i+l+d,p=c.getDate(),{year:m,month:v}=o(c),g=0;for(;g<u;){let e=new Date(m,v,p+g);this._generateCell(e),g++}}_generateCell(e){let{type:t,dp:i,opts:s}=this,a=new _({type:t,dp:i,opts:s,date:e,body:this});return this.cells.push(a),a}_generateDayCells(){this._getDaysCells()}_generateMonthCells(){let{year:e}=this.dp.parsedViewDate,t=0;for(;t<12;)this.cells.push(this._generateCell(new Date(e,t))),t++}_generateYearCells(){let e=c(this.dp.viewDate),t=e[0]-1,i=e[1]+1,s=t;for(;s<=i;)this.cells.push(this._generateCell(new Date(s,0))),s++}renderDayNames(){this.$names.innerHTML=this._getDayNamesHtml()}_generateCells(){switch(this.type){case i.days:this._generateDayCells();break;case i.months:this._generateMonthCells();break;case i.years:this._generateYearCells()}}show(){this.isVisible=!0,this.$el.classList.remove("-hidden-")}hide(){this.isVisible=!1,this.$el.classList.add("-hidden-")}destroyCells(){this.cells.forEach((e=>e.destroy())),this.cells=[],this.$cells.innerHTML=""}destroy(){this.destroyCells(),this.dp.off(i.eventChangeViewDate,this.onChangeViewDate),this.dp.off(i.eventChangeCurrentView,this.onChangeCurrentView)}}function V(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var s=i.call(e,t);if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class x{constructor(e){let{dp:t,opts:i}=e;V(this,"onClickNav",(e=>{let t=f(e.target,".air-datepicker-nav--action");if(!t)return;let i=t.dataset.action;this.dp[i]()})),V(this,"onChangeViewDate",(()=>{this.render(),this._resetNavStatus(),this.handleNavStatus()})),V(this,"onChangeCurrentView",(()=>{this.render(),this._resetNavStatus(),this.handleNavStatus()})),V(this,"onClickNavTitle",(()=>{this.dp.isFinalView||this.dp.up()})),V(this,"update",(()=>{let{prevHtml:e,nextHtml:t}=this.opts;this.$prev.innerHTML=e,this.$next.innerHTML=t,this._resetNavStatus(),this.render(),this.handleNavStatus()})),V(this,"renderDelay",(()=>{setTimeout(this.render)})),V(this,"render",(()=>{this.$title.innerHTML=this._getTitle(),function(e,t){for(let i in t)t[i]?e.classList.add(i):e.classList.remove(i)}(this.$title,{"-disabled-":this.dp.isFinalView})})),this.dp=t,this.opts=i,this.init()}init(){this._createElement(),this._buildBaseHtml(),this._defineDOM(),this.render(),this.handleNavStatus(),this._bindEvents(),this._bindDatepickerEvents()}_defineDOM(){this.$title=a(".air-datepicker-nav--title",this.$el),this.$prev=a('[data-action="prev"]',this.$el),this.$next=a('[data-action="next"]',this.$el)}_bindEvents(){this.$el.addEventListener("click",this.onClickNav),this.$title.addEventListener("click",this.onClickNavTitle)}_bindDatepickerEvents(){this.dp.on(i.eventChangeViewDate,this.onChangeViewDate),this.dp.on(i.eventChangeCurrentView,this.onChangeCurrentView),this.isNavIsFunction&&(this.dp.on(i.eventChangeSelectedDate,this.renderDelay),this.dp.opts.timepicker&&this.dp.on(i.eventChangeTime,this.render))}destroy(){this.dp.off(i.eventChangeViewDate,this.onChangeViewDate),this.dp.off(i.eventChangeCurrentView,this.onChangeCurrentView),this.isNavIsFunction&&(this.dp.off(i.eventChangeSelectedDate,this.renderDelay),this.dp.opts.timepicker&&this.dp.off(i.eventChangeTime,this.render))}_createElement(){this.$el=n({tagName:"nav",className:"air-datepicker-nav"})}_getTitle(){let{dp:e,opts:t}=this,i=t.navTitles[e.currentView];return"function"==typeof i?i(e):e.formatDate(e.viewDate,i)}handleNavStatus(){let{disableNavWhenOutOfRange:e}=this.opts,{minDate:t,maxDate:s}=this.dp;if(!t&&!s||!e)return;let{year:a,month:n}=this.dp.parsedViewDate,r=!!t&&o(t),h=!!s&&o(s);switch(this.dp.currentView){case i.days:t&&r.month>=n&&r.year>=a&&this._disableNav("prev"),s&&h.month<=n&&h.year<=a&&this._disableNav("next");break;case i.months:t&&r.year>=a&&this._disableNav("prev"),s&&h.year<=a&&this._disableNav("next");break;case i.years:{let e=c(this.dp.viewDate);t&&r.year>=e[0]&&this._disableNav("prev"),s&&h.year<=e[1]&&this._disableNav("next");break}}}_disableNav(e){a('[data-action="'+e+'"]',this.$el).classList.add("-disabled-")}_resetNavStatus(){!function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s<t;s++)i[s-1]=arguments[s];e.length?e.forEach((e=>{e.classList.remove(...i)})):e.classList.remove(...i)}(this.$el.querySelectorAll(".air-datepicker-nav--action"),"-disabled-")}_buildBaseHtml(){let{prevHtml:e,nextHtml:t}=this.opts;this.$el.innerHTML=`<div class="air-datepicker-nav--action" data-action="prev">${e}</div><div class="air-datepicker-nav--title"></div><div class="air-datepicker-nav--action" data-action="next">${t}</div>`}get isNavIsFunction(){let{navTitles:e}=this.opts;return Object.keys(e).find((t=>"function"==typeof e[t]))}}var H={today:{content:e=>e.locale.today,onClick:e=>e.setViewDate(new Date)},clear:{content:e=>e.locale.clear,onClick:e=>e.clear()}};class E{constructor(e){let{dp:t,opts:i}=e;this.dp=t,this.opts=i,this.init()}init(){this.createElement(),this.render()}createElement(){this.$el=n({className:"air-datepicker-buttons"})}destroy(){this.$el.parentNode.removeChild(this.$el)}clearHtml(){return this.$el.innerHTML="",this}generateButtons(){let{buttons:e}=this.opts;Array.isArray(e)||(e=[e]),e.forEach((e=>{let t=e;"string"==typeof e&&H[e]&&(t=H[e]);let i=this.createButton(t);t.onClick&&this.attachEventToButton(i,t.onClick),this.$el.appendChild(i)}))}attachEventToButton(e,t){e.addEventListener("click",(()=>{t(this.dp)}))}createButton(e){let{content:t,className:i,tagName:s="button",attrs:a={}}=e;return n({tagName:s,innerHtml:`<span tabindex='-1'>${"function"==typeof t?t(this.dp):t}</span>`,className:u("air-datepicker-button",i),attrs:a})}render(){this.generateButtons()}}function L(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var s=i.call(e,t);if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class O{constructor(){let{opts:e,dp:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};L(this,"toggleTimepickerIsActive",(e=>{this.dp.timepickerIsActive=e})),L(this,"onChangeSelectedDate",(e=>{let{date:t,updateTime:i=!1}=e;t&&(this.setMinMaxTime(t),this.setCurrentTime(!!i&&t),this.addTimeToDate(t))})),L(this,"onChangeLastSelectedDate",(e=>{e&&(this.setTime(e),this.render())})),L(this,"onChangeInputRange",(e=>{let t=e.target;this[t.getAttribute("name")]=t.value,this.updateText(),this.dp.trigger(i.eventChangeTime,{hours:this.hours,minutes:this.minutes})})),L(this,"onMouseEnterLeave",(e=>{let t=e.target.getAttribute("name"),i=this.$minutesText;"hours"===t&&(i=this.$hoursText),i.classList.toggle("-focus-")})),L(this,"onFocus",(()=>{this.toggleTimepickerIsActive(!0)})),L(this,"onBlur",(()=>{this.toggleTimepickerIsActive(!1)})),this.opts=e,this.dp=t;let{timeFormat:s}=this.dp.locale;s&&(s.match(C("h"))||s.match(C("hh")))&&(this.ampm=!0),this.init()}init(){this.setTime(this.dp.lastSelectedDate||this.dp.viewDate),this.createElement(),this.buildHtml(),this.defineDOM(),this.render(),this.bindDatepickerEvents(),this.bindDOMEvents()}bindDatepickerEvents(){this.dp.on(i.eventChangeSelectedDate,this.onChangeSelectedDate),this.dp.on(i.eventChangeLastSelectedDate,this.onChangeLastSelectedDate)}bindDOMEvents(){let e="input";navigator.userAgent.match(/trident/gi)&&(e="change"),y(this.$ranges,e,this.onChangeInputRange),y(this.$ranges,"mouseenter",this.onMouseEnterLeave),y(this.$ranges,"mouseleave",this.onMouseEnterLeave),y(this.$ranges,"focus",this.onFocus),y(this.$ranges,"mousedown",this.onFocus),y(this.$ranges,"blur",this.onBlur)}createElement(){this.$el=n({className:u("air-datepicker-time",{"-am-pm-":this.dp.ampm})})}destroy(){this.dp.off(i.eventChangeSelectedDate,this.onChangeSelectedDate),this.dp.off(i.eventChangeLastSelectedDate,this.onChangeLastSelectedDate),this.$el.parentNode.removeChild(this.$el)}buildHtml(){let{ampm:e,hours:t,displayHours:i,minutes:s,minHours:a,minMinutes:n,maxHours:r,maxMinutes:h,dayPeriod:o,opts:{hoursStep:l,minutesStep:c}}=this;this.$el.innerHTML=`<div class="air-datepicker-time--current">   <span class="air-datepicker-time--current-hours">${d(i)}</span>   <span class="air-datepicker-time--current-colon">:</span>   <span class="air-datepicker-time--current-minutes">${d(s)}</span>   `+(e?`<span class='air-datepicker-time--current-ampm'>${o}</span>`:"")+'</div><div class="air-datepicker-time--sliders">   <div class="air-datepicker-time--row">'+`      <input type="range" name="hours" value="${t}" min="${a}" max="${r}" step="${l}"/>   </div>   <div class="air-datepicker-time--row">`+`      <input type="range" name="minutes" value="${s}" min="${n}" max="${h}" step="${c}"/>   </div></div>`}defineDOM(){let e=e=>a(e,this.$el);this.$ranges=this.$el.querySelectorAll('[type="range"]'),this.$hours=e('[name="hours"]'),this.$minutes=e('[name="minutes"]'),this.$hoursText=e(".air-datepicker-time--current-hours"),this.$minutesText=e(".air-datepicker-time--current-minutes"),this.$ampm=e(".air-datepicker-time--current-ampm")}setTime(e){this.setMinMaxTime(e),this.setCurrentTime(e)}addTimeToDate(e){e&&(e.setHours(this.hours),e.setMinutes(this.minutes))}setMinMaxTime(e){if(this.setMinMaxTimeFromOptions(),e){let{minDate:t,maxDate:i}=this.dp;t&&p(e,t)&&this.setMinTimeFromMinDate(t),i&&p(e,i)&&this.setMaxTimeFromMaxDate(i)}}setCurrentTime(e){let{hours:t,minutes:i}=e?o(e):this;this.hours=w(t,this.minHours,this.maxHours),this.minutes=w(i,this.minMinutes,this.maxMinutes)}setMinMaxTimeFromOptions(){let{minHours:e,minMinutes:t,maxHours:i,maxMinutes:s}=this.opts;this.minHours=w(e,0,23),this.minMinutes=w(t,0,59),this.maxHours=w(i,0,23),this.maxMinutes=w(s,0,59)}setMinTimeFromMinDate(e){let{lastSelectedDate:t}=this.dp;this.minHours=e.getHours(),t&&t.getHours()>e.getHours()?this.minMinutes=this.opts.minMinutes:this.minMinutes=e.getMinutes()}setMaxTimeFromMaxDate(e){let{lastSelectedDate:t}=this.dp;this.maxHours=e.getHours(),t&&t.getHours()<e.getHours()?this.maxMinutes=this.opts.maxMinutes:this.maxMinutes=e.getMinutes()}updateSliders(){r(this.$hours,{min:this.minHours,max:this.maxHours}).value=this.hours,r(this.$minutes,{min:this.minMinutes,max:this.maxMinutes}).value=this.minutes}updateText(){this.$hoursText.innerHTML=d(this.displayHours),this.$minutesText.innerHTML=d(this.minutes),this.ampm&&(this.$ampm.innerHTML=this.dayPeriod)}set hours(e){this._hours=e;let{hours:t,dayPeriod:i}=l(e);this.displayHours=this.ampm?t:e,this.dayPeriod=i}get hours(){return this._hours}render(){this.updateSliders(),this.updateText()}}function A(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var s=i.call(e,t);if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class N{constructor(e){let{dp:t,opts:i}=e;A(this,"pressedKeys",new Set),A(this,"hotKeys",new Map([[[["Control","ArrowRight"],["Control","ArrowUp"]],e=>e.month++],[[["Control","ArrowLeft"],["Control","ArrowDown"]],e=>e.month--],[[["Shift","ArrowRight"],["Shift","ArrowUp"]],e=>e.year++],[[["Shift","ArrowLeft"],["Shift","ArrowDown"]],e=>e.year--],[[["Alt","ArrowRight"],["Alt","ArrowUp"]],e=>e.year+=10],[[["Alt","ArrowLeft"],["Alt","ArrowDown"]],e=>e.year-=10],[["Control","Shift","ArrowUp"],(e,t)=>t.up()]])),A(this,"handleHotKey",(e=>{let t=this.hotKeys.get(e),i=o(this.getInitialFocusDate());t(i,this.dp);let{year:s,month:a,date:n}=i,r=h(new Date(s,a));r<n&&(n=r);let l=this.dp.getClampedDate(new Date(s,a,n));this.dp.setFocusDate(l,{viewDateTransition:!0})})),A(this,"isHotKeyPressed",(()=>{let e=!1,t=this.pressedKeys.size,i=e=>this.pressedKeys.has(e);for(let[s]of this.hotKeys){if(e)break;if(Array.isArray(s[0]))s.forEach((a=>{e||t!==a.length||(e=a.every(i)&&s)}));else{if(t!==s.length)continue;e=s.every(i)&&s}}return e})),A(this,"isArrow",(e=>e>=37&&e<=40)),A(this,"onKeyDown",(e=>{let{key:t,which:i}=e,{dp:s,dp:{focusDate:a},opts:n}=this;this.registerKey(t);let r=this.isHotKeyPressed();if(r)return e.preventDefault(),void this.handleHotKey(r);if(this.isArrow(i))return e.preventDefault(),void this.focusNextCell(t);if("Enter"===t){if(s.currentView!==n.minView)return void s.down();if(a){let e=s._checkIfDateIsSelected(a);return void(e?s._handleAlreadySelectedDates(e,a):s.selectDate(a))}}"Escape"===t&&this.dp.hide()})),A(this,"onKeyUp",(e=>{this.removeKey(e.key)})),this.dp=t,this.opts=i,this.init()}init(){this.bindKeyboardEvents()}bindKeyboardEvents(){let{$el:e}=this.dp;e.addEventListener("keydown",this.onKeyDown),e.addEventListener("keyup",this.onKeyUp)}destroy(){let{$el:e}=this.dp;e.removeEventListener("keydown",this.onKeyDown),e.removeEventListener("keyup",this.onKeyUp),this.hotKeys=null,this.pressedKeys=null}getInitialFocusDate(){let{focusDate:e,currentView:t,selectedDates:s,parsedViewDate:{year:a,month:n}}=this.dp,r=e||s[s.length-1];if(!r)switch(t){case i.days:r=new Date(a,n,(new Date).getDate());break;case i.months:r=new Date(a,n,1);break;case i.years:r=new Date(a,0,1)}return r}focusNextCell(e){let t=this.getInitialFocusDate(),{currentView:s}=this.dp,{days:a,months:n,years:r}=i,h=o(t),l=h.year,d=h.month,c=h.date;switch(e){case"ArrowLeft":s===a&&(c-=1),s===n&&(d-=1),s===r&&(l-=1);break;case"ArrowUp":s===a&&(c-=7),s===n&&(d-=3),s===r&&(l-=4);break;case"ArrowRight":s===a&&(c+=1),s===n&&(d+=1),s===r&&(l+=1);break;case"ArrowDown":s===a&&(c+=7),s===n&&(d+=3),s===r&&(l+=4)}let u=this.dp.getClampedDate(new Date(l,d,c));this.dp.setFocusDate(u,{viewDateTransition:!0})}registerKey(e){this.pressedKeys.add(e)}removeKey(e){this.pressedKeys.delete(e)}}let I={on(e,t){this.__events||(this.__events={}),this.__events[e]?this.__events[e].push(t):this.__events[e]=[t]},off(e,t){this.__events&&this.__events[e]&&(this.__events[e]=this.__events[e].filter((e=>e!==t)))},removeAllEvents(){this.__events={}},trigger(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s<t;s++)i[s-1]=arguments[s];this.__events&&this.__events[e]&&this.__events[e].forEach((e=>{e(...i)}))}};function P(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var s=i.call(e,t);if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}let j="",R="",B=!1;class K{static buildGlobalContainer(e){B=!0,j=n({className:e,id:e}),a("body").appendChild(j)}constructor(e,t){var r=this;if(P(this,"viewIndexes",[i.days,i.months,i.years]),P(this,"next",(()=>{let{year:e,month:t}=this.parsedViewDate;switch(this.currentView){case i.days:this.setViewDate(new Date(e,t+1,1));break;case i.months:this.setViewDate(new Date(e+1,t,1));break;case i.years:this.setViewDate(new Date(e+10,0,1))}})),P(this,"prev",(()=>{let{year:e,month:t}=this.parsedViewDate;switch(this.currentView){case i.days:this.setViewDate(new Date(e,t-1,1));break;case i.months:this.setViewDate(new Date(e-1,t,1));break;case i.years:this.setViewDate(new Date(e-10,0,1))}})),P(this,"_finishHide",(()=>{this.hideAnimation=!1,this._destroyComponents(),this.$container.removeChild(this.$datepicker)})),P(this,"setPosition",(function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if("function"==typeof(e=e||r.opts.position))return void(r.customHide=e({$datepicker:r.$datepicker,$target:r.$el,$pointer:r.$pointer,isViewChange:t,done:r._finishHide}));let i,s,{isMobile:a}=r.opts,n=r.$el.getBoundingClientRect(),h=r.$el.getBoundingClientRect(),o=r.$datepicker.offsetParent,l=r.$el.offsetParent,d=r.$datepicker.getBoundingClientRect(),c=e.split(" "),u=window.scrollY,p=window.scrollX,m=r.opts.offset,v=c[0],g=c[1];if(a)r.$datepicker.style.cssText="left: 50%; top: 50%";else{if(o===l&&o!==document.body&&(h={top:r.$el.offsetTop,left:r.$el.offsetLeft,width:n.width,height:r.$el.offsetHeight},u=0,p=0),o!==l&&o!==document.body){let e=o.getBoundingClientRect();h={top:n.top-e.top,left:n.left-e.left,width:n.width,height:n.height},u=0,p=0}switch(v){case"top":i=h.top-d.height-m;break;case"right":s=h.left+h.width+m;break;case"bottom":i=h.top+h.height+m;break;case"left":s=h.left-d.width-m}switch(g){case"top":i=h.top;break;case"right":s=h.left+h.width-d.width;break;case"bottom":i=h.top+h.height-d.height;break;case"left":s=h.left;break;case"center":/left|right/.test(v)?i=h.top+h.height/2-d.height/2:s=h.left+h.width/2-d.width/2}r.$datepicker.style.cssText=`left: ${s+p}px; top: ${i+u}px`}})),P(this,"_setInputValue",(()=>{let{opts:e,$altField:t,locale:{dateFormat:i}}=this,{altFieldDateFormat:s,altField:a}=e;a&&t&&(t.value=this._getInputValue(s)),this.$el.value=this._getInputValue(i)})),P(this,"_getInputValue",(e=>{let{selectedDates:t,opts:i}=this,{multipleDates:s,multipleDatesSeparator:a}=i;if(!t.length)return"";let n="function"==typeof e,r=n?e(s?t:t[0]):t.map((t=>this.formatDate(t,e)));return r=n?r:r.join(a),r})),P(this,"_checkIfDateIsSelected",(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i.days,s=!1;return r.selectedDates.some((i=>{let a=p(e,i,t);return s=a&&i,a})),s})),P(this,"_scheduleCallAfterTransition",(e=>{this._cancelScheduledCall(),e&&e(!1),this._onTransitionEnd=()=>{e&&e(!0)},this.$datepicker.addEventListener("transitionend",this._onTransitionEnd,{once:!0})})),P(this,"_cancelScheduledCall",(()=>{this.$datepicker.removeEventListener("transitionend",this._onTransitionEnd)})),P(this,"setViewDate",(e=>{if(!((e=k(e))instanceof Date))return;if(p(e,this.viewDate))return;let t=this.viewDate;this.viewDate=e;let{onChangeViewDate:s}=this.opts;if(s){let{month:e,year:t}=this.parsedViewDate;s({month:e,year:t,decade:this.curDecade})}this.trigger(i.eventChangeViewDate,e,t)})),P(this,"setFocusDate",(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(!e||(e=k(e))instanceof Date)&&(r.focusDate=e,r.opts.range&&e&&r._handleRangeOnFocus(),r.trigger(i.eventChangeFocusDate,e,t))})),P(this,"setCurrentView",(e=>{if(this.viewIndexes.includes(e)){if(this.currentView=e,this.elIsInput&&this.visible&&this.setPosition(void 0,!0),this.trigger(i.eventChangeCurrentView,e),!this.views[e]){let t=this.views[e]=new F({dp:this,opts:this.opts,type:e});this.shouldUpdateDOM&&this.$content.appendChild(t.$el)}this.opts.onChangeView&&this.opts.onChangeView(e)}})),P(this,"_updateLastSelectedDate",(e=>{this.lastSelectedDate=e,this.trigger(i.eventChangeLastSelectedDate,e)})),P(this,"destroy",(()=>{let{showEvent:e,isMobile:t}=this.opts,i=this.$datepicker.parentNode;i&&i.removeChild(this.$datepicker),this.$el.removeEventListener(e,this._onFocus),this.$el.removeEventListener("blur",this._onBlur),window.removeEventListener("resize",this._onResize),t&&this._removeMobileAttributes(),this.keyboardNav&&this.keyboardNav.destroy(),this.views=null,this.nav=null,this.$datepicker=null,this.opts=null,this.$customContainer=null,this.viewDate=null,this.focusDate=null,this.selectedDates=null,this.rangeDateFrom=null,this.rangeDateTo=null})),P(this,"update",(e=>{let t=b({},this.opts);b(this.opts,e);let{timepicker:s,buttons:a,range:n,selectedDates:r,isMobile:h}=this.opts,o=this.visible||this.treatAsInline;this._createMinMaxDates(),this._limitViewDateByMaxMinDates(),this._handleLocale(),!t.selectedDates&&r&&this.selectDate(r),e.view&&this.setCurrentView(e.view),this._setInputValue(),t.range&&!n?(this.rangeDateTo=!1,this.rangeDateFrom=!1):!t.range&&n&&this.selectedDates.length&&(this.rangeDateFrom=this.selectedDates[0],this.rangeDateTo=this.selectedDates[1]),t.timepicker&&!s?(o&&this.timepicker.destroy(),this.timepicker=!1,this.$timepicker.parentNode.removeChild(this.$timepicker)):!t.timepicker&&s&&this._addTimepicker(),!t.buttons&&a?this._addButtons():t.buttons&&!a?(this.buttons.destroy(),this.$buttons.parentNode.removeChild(this.$buttons)):o&&t.buttons&&a&&this.buttons.clearHtml().render(),!t.isMobile&&h?(this.treatAsInline||R||this._createMobileOverlay(),this._addMobileAttributes(),this.visible&&this._showMobileOverlay()):t.isMobile&&!h&&(this._removeMobileAttributes(),this.visible&&(R.classList.remove("-active-"),"function"!=typeof this.opts.position&&this.setPosition())),o&&(this.nav.update(),this.views[this.currentView].render(),this.currentView===i.days&&this.views[this.currentView].renderDayNames())})),P(this,"isOtherMonth",(e=>{let{month:t}=o(e);return t!==this.parsedViewDate.month})),P(this,"isOtherYear",(e=>{let{year:t}=o(e);return t!==this.parsedViewDate.year})),P(this,"isOtherDecade",(e=>{let{year:t}=o(e),[i,s]=c(this.viewDate);return t<i||t>s})),P(this,"_onChangeSelectedDate",(e=>{let{silent:t}=e;setTimeout((()=>{this._setInputValue(),this.opts.onSelect&&!t&&this._triggerOnSelect()}))})),P(this,"_onChangeFocusedDate",(function(e){let{viewDateTransition:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)return;let i=!1;t&&(i=r.isOtherMonth(e)||r.isOtherYear(e)||r.isOtherDecade(e)),i&&r.setViewDate(e)})),P(this,"_onChangeTime",(e=>{let{hours:t,minutes:i}=e,s=new Date,{lastSelectedDate:a,opts:{onSelect:n}}=this,r=a;a||(r=s);let h=this.getCell(r,this.currentViewSingular),o=h&&h.adpCell;o&&o.isDisabled||(r.setHours(t),r.setMinutes(i),a?(this._setInputValue(),n&&this._triggerOnSelect()):this.selectDate(r))})),P(this,"_onFocus",(e=>{this.visible||this.show()})),P(this,"_onBlur",(e=>{this.inFocus||!this.visible||this.opts.isMobile||this.hide()})),P(this,"_onMouseDown",(e=>{this.inFocus=!0})),P(this,"_onMouseUp",(e=>{this.inFocus=!1,this.$el.focus()})),P(this,"_onResize",(()=>{this.visible&&"function"!=typeof this.opts.position&&this.setPosition()})),P(this,"_onClickOverlay",(()=>{this.visible&&this.hide()})),P(this,"isWeekend",(e=>this.opts.weekends.includes(e))),P(this,"getClampedDate",(e=>{let{minDate:t,maxDate:i}=this,s=e;return i&&m(e,i)?s=i:t&&v(e,t)&&(s=t),s})),this.$el=a(e),!this.$el)return;this.$datepicker=n({className:"air-datepicker"}),this.opts=b({},s,t),this.$customContainer=!!this.opts.container&&a(this.opts.container),this.$altField=a(this.opts.altField||!1);let{view:h,startDate:l}=this.opts;l||(this.opts.startDate=new Date),"INPUT"===this.$el.nodeName&&(this.elIsInput=!0),this.inited=!1,this.visible=!1,this.viewDate=k(this.opts.startDate),this.focusDate=!1,this.initialReadonly=this.$el.getAttribute("readonly"),this.customHide=!1,this.currentView=h,this.selectedDates=[],this.views={},this.keys=[],this.rangeDateFrom="",this.rangeDateTo="",this.timepickerIsActive=!1,this.treatAsInline=this.opts.inline||!this.elIsInput,this.init()}init(){let{opts:e,treatAsInline:t,opts:{inline:i,isMobile:s,selectedDates:n,keyboardNav:r,onlyTimepicker:h}}=this,o=a("body");(!B||B&&j&&!o.contains(j))&&!i&&this.elIsInput&&!this.$customContainer&&K.buildGlobalContainer(K.defaultGlobalContainerId),!s||R||t||this._createMobileOverlay(),this._handleLocale(),this._bindSubEvents(),this._createMinMaxDates(),this._limitViewDateByMaxMinDates(),this.elIsInput&&(i||this._bindEvents(),r&&!h&&(this.keyboardNav=new N({dp:this,opts:e}))),n&&this.selectDate(n,{silent:!0}),this.opts.visible&&!t&&this.show(),s&&!t&&this.$el.setAttribute("readonly",!0),t&&this._createComponents()}_createMobileOverlay(){R=n({className:"air-datepicker-overlay"}),j.appendChild(R)}_createComponents(){let{opts:e,treatAsInline:t,opts:{inline:i,buttons:s,timepicker:a,position:n,classes:r,onlyTimepicker:h,isMobile:o}}=this;this._buildBaseHtml(),this.elIsInput&&(i||this._setPositionClasses(n)),!i&&this.elIsInput||this.$datepicker.classList.add("-inline-"),r&&this.$datepicker.classList.add(...r.split(" ")),h&&this.$datepicker.classList.add("-only-timepicker-"),o&&!t&&this._addMobileAttributes(),this.views[this.currentView]=new F({dp:this,type:this.currentView,opts:e}),this.nav=new x({dp:this,opts:e}),a&&this._addTimepicker(),s&&this._addButtons(),this.$content.appendChild(this.views[this.currentView].$el),this.$nav.appendChild(this.nav.$el)}_destroyComponents(){for(let e in this.views)this.views[e].destroy();this.views={},this.nav.destroy(),this.timepicker&&this.timepicker.destroy()}_addMobileAttributes(){R.addEventListener("click",this._onClickOverlay),this.$datepicker.classList.add("-is-mobile-"),this.$el.setAttribute("readonly",!0)}_removeMobileAttributes(){R.removeEventListener("click",this._onClickOverlay),this.$datepicker.classList.remove("-is-mobile-"),this.initialReadonly||""===this.initialReadonly||this.$el.removeAttribute("readonly")}_createMinMaxDates(){let{minDate:e,maxDate:t}=this.opts;this.minDate=!!e&&k(e),this.maxDate=!!t&&k(t)}_addTimepicker(){this.$timepicker=n({className:"air-datepicker--time"}),this.$datepicker.appendChild(this.$timepicker),this.timepicker=new O({dp:this,opts:this.opts}),this.$timepicker.appendChild(this.timepicker.$el)}_addButtons(){this.$buttons=n({className:"air-datepicker--buttons"}),this.$datepicker.appendChild(this.$buttons),this.buttons=new E({dp:this,opts:this.opts}),this.$buttons.appendChild(this.buttons.$el)}_bindSubEvents(){this.on(i.eventChangeSelectedDate,this._onChangeSelectedDate),this.on(i.eventChangeFocusDate,this._onChangeFocusedDate),this.on(i.eventChangeTime,this._onChangeTime)}_buildBaseHtml(){let{inline:e}=this.opts;var t,i;this.elIsInput?e?(t=this.$datepicker,(i=this.$el).parentNode.insertBefore(t,i.nextSibling)):this.$container.appendChild(this.$datepicker):this.$el.appendChild(this.$datepicker),this.$datepicker.innerHTML='<i class="air-datepicker--pointer"></i><div class="air-datepicker--navigation"></div><div class="air-datepicker--content"></div>',this.$content=a(".air-datepicker--content",this.$datepicker),this.$pointer=a(".air-datepicker--pointer",this.$datepicker),this.$nav=a(".air-datepicker--navigation",this.$datepicker)}_handleLocale(){let{locale:e,dateFormat:t,firstDay:i,timepicker:s,onlyTimepicker:a,timeFormat:n,dateTimeSeparator:r}=this.opts;var h;this.locale=(h=e,JSON.parse(JSON.stringify(h))),t&&(this.locale.dateFormat=t),void 0!==n&&""!==n&&(this.locale.timeFormat=n);let{timeFormat:o}=this.locale;if(""!==i&&(this.locale.firstDay=i),s&&"function"!=typeof t){let e=o?r:"";this.locale.dateFormat=[this.locale.dateFormat,o||""].join(e)}a&&"function"!=typeof t&&(this.locale.dateFormat=this.locale.timeFormat)}_setPositionClasses(e){if("function"==typeof e)return void this.$datepicker.classList.add("-custom-position-");let t=(e=e.split(" "))[0],i=`air-datepicker -${t}-${e[1]}- -from-${t}-`;this.$datepicker.classList.add(...i.split(" "))}_bindEvents(){this.$el.addEventListener(this.opts.showEvent,this._onFocus),this.$el.addEventListener("blur",this._onBlur),this.$datepicker.addEventListener("mousedown",this._onMouseDown),this.$datepicker.addEventListener("mouseup",this._onMouseUp),window.addEventListener("resize",this._onResize)}_limitViewDateByMaxMinDates(){let{viewDate:e,minDate:t,maxDate:i}=this;i&&m(e,i)&&this.setViewDate(i),t&&v(e,t)&&this.setViewDate(t)}formatDate(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.viewDate,t=arguments.length>1?arguments[1]:void 0;if(e=k(e),!(e instanceof Date))return;let i=t,s=this.locale,a=o(e),n=a.dayPeriod,r=c(e),h=K.replacer,l={T:e.getTime(),m:a.minutes,mm:a.fullMinutes,h:a.hours12,hh:a.fullHours12,H:a.hours,HH:a.fullHours,aa:n,AA:n.toUpperCase(),E:s.daysShort[a.day],EEEE:s.days[a.day],d:a.date,dd:a.fullDate,M:a.month+1,MM:a.fullMonth,MMM:s.monthsShort[a.month],MMMM:s.months[a.month],yy:a.year.toString().slice(-2),yyyy:a.year,yyyy1:r[0],yyyy2:r[1]};for(let[e,t]of Object.entries(l))i=h(i,C(e),t);return i}down(e){this._handleUpDownActions(e,"down")}up(e){this._handleUpDownActions(e,"up")}selectDate(e){let t,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{currentView:a,parsedViewDate:n,selectedDates:r}=this,{updateTime:h}=s,{moveToOtherMonthsOnSelect:o,moveToOtherYearsOnSelect:l,multipleDates:d,range:c,autoClose:u}=this.opts,p=r.length;if(Array.isArray(e))return e.forEach((e=>{this.selectDate(e,s)})),new Promise((e=>{setTimeout(e)}));if((e=k(e))instanceof Date){if(a===i.days&&e.getMonth()!==n.month&&o&&(t=new Date(e.getFullYear(),e.getMonth(),1)),a===i.years&&e.getFullYear()!==n.year&&l&&(t=new Date(e.getFullYear(),0,1)),t&&this.setViewDate(t),d&&!c){if(p===d)return;this._checkIfDateIsSelected(e)||r.push(e)}else if(c)switch(p){case 1:r.push(e),this.rangeDateTo||(this.rangeDateTo=e),m(this.rangeDateFrom,this.rangeDateTo)&&(this.rangeDateTo=this.rangeDateFrom,this.rangeDateFrom=e),this.selectedDates=[this.rangeDateFrom,this.rangeDateTo];break;case 2:this.selectedDates=[e],this.rangeDateFrom=e,this.rangeDateTo="";break;default:this.selectedDates=[e],this.rangeDateFrom=e}else this.selectedDates=[e];return this.trigger(i.eventChangeSelectedDate,{action:i.actionSelectDate,silent:null==s?void 0:s.silent,date:e,updateTime:h}),this._updateLastSelectedDate(e),u&&!this.timepickerIsActive&&this.visible&&(d||c?c&&1===p&&this.hide():this.hide()),new Promise((e=>{setTimeout(e)}))}}unselectDate(e){let t=this.selectedDates,s=this;if((e=k(e))instanceof Date)return t.some(((a,n)=>{if(p(a,e))return t.splice(n,1),s.selectedDates.length?s._updateLastSelectedDate(s.selectedDates[s.selectedDates.length-1]):(s.rangeDateFrom="",s.rangeDateTo="",s._updateLastSelectedDate(!1)),this.trigger(i.eventChangeSelectedDate,{action:i.actionUnselectDate,date:e}),!0}))}replaceDate(e,t){let s=this.selectedDates.find((t=>p(t,e,this.currentView))),a=this.selectedDates.indexOf(s);a<0||p(this.selectedDates[a],t,this.currentView)||(this.selectedDates[a]=t,this.trigger(i.eventChangeSelectedDate,{action:i.actionSelectDate,date:t,updateTime:!0}),this._updateLastSelectedDate(t))}clear(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.selectedDates=[],this.rangeDateFrom=!1,this.rangeDateTo=!1,this.trigger(i.eventChangeSelectedDate,{action:i.actionUnselectDate,silent:e.silent}),new Promise((e=>{setTimeout(e)}))}show(){let{onShow:e,isMobile:t}=this.opts;this._cancelScheduledCall(),this.visible||this.hideAnimation||this._createComponents(),this.setPosition(this.opts.position),this.$datepicker.classList.add("-active-"),this.visible=!0,e&&this._scheduleCallAfterTransition(e),t&&this._showMobileOverlay()}hide(){let{onHide:e,isMobile:t}=this.opts,i=this._hasTransition();this.visible=!1,this.hideAnimation=!0,this.$datepicker.classList.remove("-active-"),this.customHide&&this.customHide(),this.elIsInput&&this.$el.blur(),this._scheduleCallAfterTransition((t=>{!this.customHide&&(t&&i||!t&&!i)&&this._finishHide(),e&&e(t)})),t&&R.classList.remove("-active-")}_triggerOnSelect(){let e=[],t=[],{selectedDates:i,locale:s,opts:{onSelect:a,multipleDates:n,range:r}}=this,h=n||r,o="function"==typeof s.dateFormat;i.length&&(e=i.map(g),t=o?n?s.dateFormat(e):e.map((e=>s.dateFormat(e))):e.map((e=>this.formatDate(e,s.dateFormat)))),a({date:h?e:e[0],formattedDate:h?t:t[0],datepicker:this})}_handleAlreadySelectedDates(e,t){let{range:i,toggleSelected:s}=this.opts;i?s?this.unselectDate(t):2!==this.selectedDates.length&&this.selectDate(t):s&&this.unselectDate(t),s||this._updateLastSelectedDate(e)}_handleUpDownActions(e,t){if(!((e=k(e||this.focusDate||this.viewDate))instanceof Date))return;let i="up"===t?this.viewIndex+1:this.viewIndex-1;i>2&&(i=2),i<0&&(i=0),this.setViewDate(new Date(e.getFullYear(),e.getMonth(),1)),this.setCurrentView(this.viewIndexes[i])}_handleRangeOnFocus(){1===this.selectedDates.length&&(m(this.selectedDates[0],this.focusDate)?(this.rangeDateTo=this.selectedDates[0],this.rangeDateFrom=this.focusDate):(this.rangeDateTo=this.focusDate,this.rangeDateFrom=this.selectedDates[0]))}getCell(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i.day;if(!((e=k(e))instanceof Date))return;let{year:s,month:a,date:n}=o(e),r=`[data-year="${s}"]`,h=`[data-month="${a}"]`,l={[i.day]:`${r}${h}[data-date="${n}"]`,[i.month]:`${r}${h}`,[i.year]:`${r}`};return this.views[this.currentView].$el.querySelector(l[t])}_showMobileOverlay(){R.classList.add("-active-")}_hasTransition(){return window.getComputedStyle(this.$datepicker).getPropertyValue("transition-duration").split(", ").reduce(((e,t)=>parseFloat(t)+e),0)>0}get shouldUpdateDOM(){return this.visible||this.treatAsInline}get parsedViewDate(){return o(this.viewDate)}get currentViewSingular(){return this.currentView.slice(0,-1)}get curDecade(){return c(this.viewDate)}get viewIndex(){return this.viewIndexes.indexOf(this.currentView)}get isFinalView(){return this.currentView===i.years}get hasSelectedDates(){return this.selectedDates.length>0}get isMinViewReached(){return this.currentView===this.opts.minView||this.currentView===i.days}get $container(){return this.$customContainer||j}static replacer(e,t,i){return e.replace(t,(function(e,t,s,a){return t+i+a}))}}var U;return P(K,"defaults",s),P(K,"version","3.3.5"),P(K,"defaultGlobalContainerId","air-datepicker-global-container"),U=K.prototype,Object.assign(U,I),t.default}()}));;;
if(navigator.userAgent.indexOf("Windows")!==-1){document.documentElement.classList.add("is-windows");}
$(function(){var url=location.pathname.replace(/\/?$/,"/");$("#js-site-nav ul li:has(li)").addClass("has-children");$('#js-site-nav li:has(a[href="'+url+'"])').addClass("is-active");$(".footer_nav > ul").addClass("level-1");$(".footer_nav > ul > li > ul").addClass("level-2");});const navToggleButtons=document.querySelectorAll(".has-children");const navAccordionButtons=document.querySelectorAll(".js-nav-accordion");if(navToggleButtons){navToggleButtons.forEach(function(navBtn){navBtn.addEventListener("click",function(e){e.preventDefault();var nav=navBtn.nextElementSibling;if(nav){nav.classList.add("is-active");document.body.classList.add("nav-active");}});});}
if(navAccordionButtons){navAccordionButtons.forEach(function(accordionBtn){accordionBtn.addEventListener("click",function(e){var childNav=accordionBtn.nextElementSibling;if(childNav.classList.contains("is-expanded")){childNav.classList.remove("is-expanded");}else{childNav.classList.add("is-expanded");}});});}
("use strict");var fE=new(function(){this.addModule=function(module){fE[module.id.substr(0,1).toLowerCase()+module.id.substr(1)]=module;};})();function SectionControl(){this.id="SectionControl";this.sections=[];$(document).ready(function(){fE.sectionControl.resize();});window.addEventListener("load",function(){fE.sectionControl.resize();});window.addEventListener("resize",function(){fE.sectionControl.resize();});window.addEventListener("scroll",function(){fE.sectionControl.process();});}
SectionControl.prototype={destroy:function(){},add:function(elements){var e,i=0;elements.addClass("is-animatable");for(;i<elements.length;i++){e=elements[i];this.sections.push({bVisible:undefined,e:e,height:0,id:e.id,pageX:0,pageY:0,stage:-1,width:0,});}},process:function(){var self=this,bVisible,clientHeight=document.documentElement.clientHeight,eViewX,eViewY,pageX=window.pageXOffset,pageY=window.pageYOffset,sec,sections=self.sections,i=sections.length;while(i--){sec=sections[i];eViewX=sec.pageX-pageX;eViewY=sec.pageY-pageY;bVisible=sec.bVisible;sec.bVisible=false;if(eViewY+sec.height<=0)sec.stage=1;else if(eViewY>clientHeight-1)
sec.stage=-1;else{sec.bVisible=true;sec.stage=(clientHeight-eViewY)/(sec.height+clientHeight);if(self.visPolicy!==undefined)self.visPolicy(sec);}
if(bVisible!==sec.bVisible)self.visChangePolicy(sec);}},resize:function(){var self=this,clientRect,i=self.sections.length,pageXOffset=window.pageXOffset,pageYOffset=window.pageYOffset,sec;while(i--){sec=self.sections[i];clientRect=sec.e.getBoundingClientRect();sec.pageX=clientRect.left+pageXOffset;sec.pageY=clientRect.top+pageYOffset;sec.height=clientRect.bottom-clientRect.top;sec.width=clientRect.right-clientRect.left;}
self.process();if(self.resizePolicy!==undefined)self.resizePolicy();},};fE.addModule(new SectionControl());(function($,window,document,undefined){$.fn.doubleTapToGo=function(action){if(!("ontouchstart" in window)&&!navigator.msMaxTouchPoints&&!navigator.userAgent.toLowerCase().match(/windows phone os 7/i))
return false;if(action==="unbind"){this.each(function(){$(this).off();$(document).off("click touchstart MSPointerDown",handleTouch);});}else{this.each(function(){var curItem=false;$(this).on("click",function(e){var item=$(this);if(item[0]!=curItem[0]){e.preventDefault();curItem=item;}});$(document).on("click touchstart MSPointerDown",handleTouch);function handleTouch(e){var resetItem=true,parents=$(e.target).parents();for(var i=0;i<parents.length;i++)
if(parents[i]==curItem[0])resetItem=false;if(resetItem)curItem=false;}});}
return this;};})(jQuery,window,document);function StickyElements(){this.elements=[];this.id="Sticky";this.pageHeight;this.viewHeight;window.addEventListener("load",function(e){fE.sticky.resize();fE.sticky.process();});window.addEventListener("resize",function(e){fE.sticky.resize();});window.addEventListener("scroll",function(){fE.sticky.process();});}
StickyElements.prototype={add:function(e,y){this.elements.push({bSticky:false,e:e,y:y,});},process:function(){var el,i=this.elements.length,pageY=window.pageYOffset;if(this.pageHeight===undefined)return;while(i--){el=this.elements[i];if(el.y>0){if(pageY>el.y){if(!el.bSticky){el.bSticky=true;el.e.classList.add("is-fixed");}
continue;}}else{if(this.pageHeight-this.viewHeight-pageY>-el.y){if(!el.bSticky){el.bSticky=true;el.e.classList.add("is-fixed");}
continue;}}
if(el.bSticky){el.bSticky=false;el.e.classList.remove("is-fixed");}}},resize:function(e){var dE=document.documentElement,scrollHeight=dE.scrollHeight,self=this,viewHeight=dE.clientHeight;self.pageHeight=viewHeight;if(scrollHeight>viewHeight)self.pageHeight=scrollHeight;self.viewHeight=viewHeight;},};fE.addModule(new StickyElements());$(document).ready(function(){$(document.documentElement).addClass("is-ready");fE.sectionControl.visChangePolicy=function(sec){if(sec.bVisible)$(sec.e).addClass("is-animated");};fE.sectionControl.visPolicy=function(sec){var section;for(var i=0;i<this.sections.length;i++){section=this.sections[i];if(section.id==="")continue;if(Math.abs(window.pageYOffset-section.pageY)<206){$(".section_links > a").removeClass("is-active");$(".section_links > a[href='#"+section.id+"']").addClass("is-active");}}};fE.sectionControl.add($("#js-attraction-wrapper > section, #js-home-wrapper > aside, #js-home-wrapper section, #js-page-nav ~ section, #js-page-nav + article section"));fE.sectionControl.resize();processScroll();var video=document.getElementById("bannerVideo");if(video!=null){video.addEventListener("canplay",function(){var loader=$(this).closest(".banner_video").find(".loader");if(loader){loader.addClass("loaded");}
video.play();});!(function(A,e,o){function t(A,e){return typeof A===e;}
function n(){var A,e,o,n,a,l,i;for(var r in s)
if(s.hasOwnProperty(r)){if(((A=[]),(e=s[r]),e.name&&(A.push(e.name.toLowerCase()),e.options&&e.options.aliases&&e.options.aliases.length)))
for(o=0;o<e.options.aliases.length;o++)
A.push(e.options.aliases[o].toLowerCase());for(n=t(e.fn,"function")?e.fn():e.fn,a=0;a<A.length;a++)
(l=A[a]),(i=l.split(".")),1===i.length?(Modernizr[i[0]]=n):(!Modernizr[i[0]]||Modernizr[i[0]]instanceof Boolean||(Modernizr[i[0]]=new Boolean(Modernizr[i[0]])),(Modernizr[i[0]][i[1]]=n)),c.push((n?"":"no-")+i.join("-"));}}
function a(A){var e=h.className,o=Modernizr._config.classPrefix||"";if((R&&(e=e.baseVal),Modernizr._config.enableJSClass)){var t=new RegExp("(^|\\s)"+o+"no-js(\\s|$)");e=e.replace(t,"$1"+o+"js$2");}
Modernizr._config.enableClasses&&((e+=" "+o+A.join(" "+o)),R?(h.className.baseVal=e):(h.className=e));}
function l(){return"function"!=typeof e.createElement?e.createElement(arguments[0]):R?e.createElementNS.call(e,"http://www.w3.org/2000/svg",arguments[0]):e.createElement.apply(e,arguments);}
function i(A,e){if("object"==typeof A)for(var o in A)d(A,o)&&i(o,A[o]);else{A=A.toLowerCase();var t=A.split("."),n=Modernizr[t[0]];if((2==t.length&&(n=n[t[1]]),"undefined"!=typeof n))
return Modernizr;(e="function"==typeof e?e():e),1==t.length?(Modernizr[t[0]]=e):(!Modernizr[t[0]]||Modernizr[t[0]]instanceof Boolean||(Modernizr[t[0]]=new Boolean(Modernizr[t[0]])),(Modernizr[t[0]][t[1]]=e)),a([(e&&0!=e?"":"no-")+t.join("-")]),Modernizr._trigger(A,e);}
return Modernizr;}
var c=[],s=[],r={_version:"3.3.1",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0,},_q:[],on:function(A,e){var o=this;setTimeout(function(){e(o[A]);},0);},addTest:function(A,e,o){s.push({name:A,fn:e,options:o});},addAsyncTest:function(A){s.push({name:null,fn:A});},},Modernizr=function(){};(Modernizr.prototype=r),(Modernizr=new Modernizr());var h=e.documentElement,R="svg"===h.nodeName.toLowerCase();Modernizr.addTest("video",function(){var A=l("video"),e=!1;try{(e=!!A.canPlayType)&&((e=new Boolean(e)),(e.ogg=A.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,"")),(e.h264=A.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,"")),(e.webm=A.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")),(e.vp9=A.canPlayType('video/webm; codecs="vp9"').replace(/^no$/,"")),(e.hls=A.canPlayType('application/x-mpegURL; codecs="avc1.42E01E"').replace(/^no$/,"")));}catch(o){}
return e;});var d;!(function(){var A={}.hasOwnProperty;d=t(A,"undefined")||t(A.call,"undefined")?function(A,e){return e in A&&t(A.constructor.prototype[e],"undefined");}:function(e,o){return A.call(e,o);};})(),(r._l={}),(r.on=function(A,e){this._l[A]||(this._l[A]=[]),this._l[A].push(e),Modernizr.hasOwnProperty(A)&&setTimeout(function(){Modernizr._trigger(A,Modernizr[A]);},0);}),(r._trigger=function(A,e){if(this._l[A]){var o=this._l[A];setTimeout(function(){var A,t;for(A=0;A<o.length;A++)(t=o[A])(e);},0),delete this._l[A];}}),Modernizr._q.push(function(){r.addTest=i;}),Modernizr.addAsyncTest(function(){function A(l){n++,clearTimeout(e);var c=(l&&"playing"===l.type)||0!==a.currentTime;return!c&&t>n?void(e=setTimeout(A,o)):(a.removeEventListener("playing",A,!1),i("videoautoplay",c),void a.parentNode.removeChild(a));}
var e,o=200,t=5,n=0,a=l("video"),c=a.style;if(!(Modernizr.video&&"autoplay" in a))
return void i("videoautoplay",!1);(c.position="absolute"),(c.height=0),(c.width=0);try{if(Modernizr.video.ogg)
a.src="data:video/ogg;base64,T2dnUwACAAAAAAAAAABmnCATAAAAAHDEixYBKoB0aGVvcmEDAgEAAQABAAAQAAAQAAAAAAAFAAAAAQAAAAAAAAAAAGIAYE9nZ1MAAAAAAAAAAAAAZpwgEwEAAAACrA7TDlj///////////////+QgXRoZW9yYSsAAABYaXBoLk9yZyBsaWJ0aGVvcmEgMS4xIDIwMDkwODIyIChUaHVzbmVsZGEpAQAAABoAAABFTkNPREVSPWZmbXBlZzJ0aGVvcmEtMC4yOYJ0aGVvcmG+zSj3uc1rGLWpSUoQc5zmMYxSlKQhCDGMYhCEIQhAAAAAAAAAAAAAEW2uU2eSyPxWEvx4OVts5ir1aKtUKBMpJFoQ/nk5m41mUwl4slUpk4kkghkIfDwdjgajQYC8VioUCQRiIQh8PBwMhgLBQIg4FRba5TZ5LI/FYS/Hg5W2zmKvVoq1QoEykkWhD+eTmbjWZTCXiyVSmTiSSCGQh8PB2OBqNBgLxWKhQJBGIhCHw8HAyGAsFAiDgUCw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDAwPEhQUFQ0NDhESFRUUDg4PEhQVFRUOEBETFBUVFRARFBUVFRUVEhMUFRUVFRUUFRUVFRUVFRUVFRUVFRUVEAwLEBQZGxwNDQ4SFRwcGw4NEBQZHBwcDhATFhsdHRwRExkcHB4eHRQYGxwdHh4dGxwdHR4eHh4dHR0dHh4eHRALChAYKDM9DAwOExo6PDcODRAYKDlFOA4RFh0zV1A+EhYlOkRtZ00YIzdAUWhxXDFATldneXhlSFxfYnBkZ2MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEhIVGRoaGhoSFBYaGhoaGhUWGRoaGhoaGRoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhESFh8kJCQkEhQYIiQkJCQWGCEkJCQkJB8iJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQREhgvY2NjYxIVGkJjY2NjGBo4Y2NjY2MvQmNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRISEhUXGBkbEhIVFxgZGxwSFRcYGRscHRUXGBkbHB0dFxgZGxwdHR0YGRscHR0dHhkbHB0dHR4eGxwdHR0eHh4REREUFxocIBERFBcaHCAiERQXGhwgIiUUFxocICIlJRcaHCAiJSUlGhwgIiUlJSkcICIlJSUpKiAiJSUlKSoqEBAQFBgcICgQEBQYHCAoMBAUGBwgKDBAFBgcICgwQEAYHCAoMEBAQBwgKDBAQEBgICgwQEBAYIAoMEBAQGCAgAfF5cdH1e3Ow/L66wGmYnfIUbwdUTe3LMRbqON8B+5RJEvcGxkvrVUjTMrsXYhAnIwe0dTJfOYbWrDYyqUrz7dw/JO4hpmV2LsQQvkUeGq1BsZLx+cu5iV0e0eScJ91VIQYrmqfdVSK7GgjOU0oPaPOu5IcDK1mNvnD+K8LwS87f8Jx2mHtHnUkTGAurWZlNQa74ZLSFH9oF6FPGxzLsjQO5Qe0edcpttd7BXBSqMCL4k/4tFrHIPuEQ7m1/uIWkbDMWVoDdOSuRQ9286kvVUlQjzOE6VrNguN4oRXYGkgcnih7t13/9kxvLYKQezwLTrO44sVmMPgMqORo1E0sm1/9SludkcWHwfJwTSybR4LeAz6ugWVgRaY8mV/9SluQmtHrzsBtRF/wPY+X0JuYTs+ltgrXAmlk10xQHmTu9VSIAk1+vcvU4ml2oNzrNhEtQ3CysNP8UeR35wqpKUBdGdZMSjX4WVi8nJpdpHnbhzEIdx7mwf6W1FKAiucMXrWUWVjyRf23chNtR9mIzDoT/6ZLYailAjhFlZuvPtSeZ+2oREubDoWmT3TguY+JHPdRVSLKxfKH3vgNqJ/9emeEYikGXDFNzaLjvTeGAL61mogOoeG3y6oU4rW55ydoj0lUTSR/mmRhPmF86uwIfzp3FtiufQCmppaHDlGE0r2iTzXIw3zBq5hvaTldjG4CPb9wdxAme0SyedVKczJ9AtYbgPOzYKJvZZImsN7ecrxWZg5dR6ZLj/j4qpWsIA+vYwE+Tca9ounMIsrXMB4Stiib2SPQtZv+FVIpfEbzv8ncZoLBXc3YBqTG1HsskTTotZOYTG+oVUjLk6zhP8bg4RhMUNtfZdO7FdpBuXzhJ5Fh8IKlJG7wtD9ik8rWOJxy6iQ3NwzBpQ219mlyv+FLicYs2iJGSE0u2txzed++D61ZWCiHD/cZdQVCqkO2gJpdpNaObhnDfAPrT89RxdWFZ5hO3MseBSIlANppdZNIV/Rwe5eLTDvkfWKzFnH+QJ7m9QWV1KdwnuIwTNtZdJMoXBf74OhRnh2t+OTGL+AVUnIkyYY+QG7g9itHXyF3OIygG2s2kud679ZWKqSFa9n3IHD6MeLv1lZ0XyduRhiDRtrNnKoyiFVLcBm0ba5Yy3fQkDh4XsFE34isVpOzpa9nR8iCpS4HoxG2rJpnRhf3YboVa1PcRouh5LIJv/uQcPNd095ickTaiGBnWLKVWRc0OnYTSyex/n2FofEPnDG8y3PztHrzOLK1xo6RAml2k9owKajOC0Wr4D5x+3nA0UEhK2m198wuBHF3zlWWVKWLN1CHzLClUfuoYBcx4b1llpeBKmbayaR58njtE9onD66lUcsg0Spm2snsb+8HaJRn4dYcLbCuBuYwziB8/5U1C1DOOz2gZjSZtrLJk6vrLF3hwY4Io9xuT/ruUFRSBkNtUzTOWhjh26irLEPx4jPZL3Fo3QrReoGTTM21xYTT9oFdhTUIvjqTkfkvt0bzgVUjq/hOYY8j60IaO/0AzRBtqkTS6R5ellZd5uKdzzhb8BFlDdAcrwkE0rbXTOPB+7Y0FlZO96qFL4Ykg21StJs8qIW7h16H5hGiv8V2Cflau7QVDepTAHa6Lgt6feiEvJDM21StJsmOH/hynURrKxvUpQ8BH0JF7BiyG2qZpnL/7AOU66gt+reLEXY8pVOCQvSsBtqZTNM8bk9ohRcwD18o/WVkbvrceVKRb9I59IEKysjBeTMmmbA21xu/6iHadLRxuIzkLpi8wZYmmbbWi32RVAUjruxWlJ//iFxE38FI9hNKOoCdhwf5fDe4xZ81lgREhK2m1j78vW1CqkuMu/AjBNK210kzRUX/B+69cMMUG5bYrIeZxVSEZISmkzbXOi9yxwIfPgdsov7R71xuJ7rFcACjG/9PzApqFq7wEgzNJm2suWESPuwrQvejj7cbnQxMkxpm21lUYJL0fKmogPPqywn7e3FvB/FCNxPJ85iVUkCE9/tLKx31G4CgNtWTTPFhMvlu8G4/TrgaZttTChljfNJGgOT2X6EqpETy2tYd9cCBI4lIXJ1/3uVUllZEJz4baqGF64yxaZ+zPLYwde8Uqn1oKANtUrSaTOPHkhvuQP3bBlEJ/LFe4pqQOHUI8T8q7AXx3fLVBgSCVpMba55YxN3rv8U1Dv51bAPSOLlZWebkL8vSMGI21lJmmeVxPRwFlZF1CpqCN8uLwymaZyjbXHCRytogPN3o/n74CNykfT+qqRv5AQlHcRxYrC5KvGmbbUwmZY/29BvF6C1/93x4WVglXDLFpmbapmF89HKTogRwqqSlGbu+oiAkcWFbklC6Zhf+NtTLFpn8oWz+HsNRVSgIxZWON+yVyJlE5tq/+GWLTMutYX9ekTySEQPLVNQQ3OfycwJBM0zNtZcse7CvcKI0V/zh16Dr9OSA21MpmmcrHC+6pTAPHPwoit3LHHqs7jhFNRD6W8+EBGoSEoaZttTCZljfduH/fFisn+dRBGAZYtMzbVMwvul/T/crK1NQh8gN0SRRa9cOux6clC0/mDLFpmbarmF8/e6CopeOLCNW6S/IUUg3jJIYiAcDoMcGeRbOvuTPjXR/tyo79LK3kqqkbxkkMRAOB0GODPItnX3Jnxro/25Ud+llbyVVSN4ySGIgHA6DHBnkWzr7kz410f7cqO/Syt5KqpFVJwn6gBEvBM0zNtZcpGOEPiysW8vvRd2R0f7gtjhqUvXL+gWVwHm4XJDBiMpmmZtrLfPwd/IugP5+fKVSysH1EXreFAcEhelGmbbUmZY4Xdo1vQWVnK19P4RuEnbf0gQnR+lDCZlivNM22t1ESmopPIgfT0duOfQrsjgG4tPxli0zJmF5trdL1JDUIUT1ZXSqQDeR4B8mX3TrRro/2McGeUvLtwo6jIEKMkCUXWsLyZROd9P/rFYNtXPBli0z398iVUlVKAjFlY437JXImUTm2r/4ZYtMy61hf16RPJIU9nZ1MABAwAAAAAAAAAZpwgEwIAAABhp658BScAAAAAAADnUFBQXIDGXLhwtttNHDhw5OcpQRMETBEwRPduylKVB0HRdF0A";else{if(!Modernizr.video.h264)return void i("videoautoplay",!1);a.src="data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAAs1tZGF0AAACrgYF//+q3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE0OCByMjYwMSBhMGNkN2QzIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxNSAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MzoweDExMyBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MSBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTEgbG9va2FoZWFkX3RocmVhZHM9MSBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0zIGJfcHlyYW1pZD0yIGJfYWRhcHQ9MSBiX2JpYXM9MCBkaXJlY3Q9MSB3ZWlnaHRiPTEgb3Blbl9nb3A9MCB3ZWlnaHRwPTIga2V5aW50PTI1MCBrZXlpbnRfbWluPTEwIHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAAAD2WIhAA3//728P4FNjuZQQAAAu5tb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAAZAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACGHRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAZAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAgAAAAIAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAAGQAAAAAAAEAAAAAAZBtZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAACgAAAAEAFXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSGFuZGxlcgAAAAE7bWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAAA+3N0YmwAAACXc3RzZAAAAAAAAAABAAAAh2F2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgACAEgAAABIAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY//8AAAAxYXZjQwFkAAr/4QAYZ2QACqzZX4iIhAAAAwAEAAADAFA8SJZYAQAGaOvjyyLAAAAAGHN0dHMAAAAAAAAAAQAAAAEAAAQAAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAABRzdHN6AAAAAAAAAsUAAAABAAAAFHN0Y28AAAAAAAAAAQAAADAAAABidWR0YQAAAFptZXRhAAAAAAAAACFoZGxyAAAAAAAAAABtZGlyYXBwbAAAAAAAAAAAAAAAAC1pbHN0AAAAJal0b28AAAAdZGF0YQAAAAEAAAAATGF2ZjU2LjQwLjEwMQ==";}}catch(s){return void i("videoautoplay",!1);}
a.setAttribute("autoplay",""),(a.style.cssText="display:none"),h.appendChild(a),setTimeout(function(){a.addEventListener("playing",A,!1),(e=setTimeout(A,o));},0);}),n(),a(c),delete r.addTest,delete r.addAsyncTest;for(var E=0;E<Modernizr._q.length;E++)Modernizr._q[E]();A.Modernizr=Modernizr;})(window,document);Modernizr.on("videoautoplay",function(result){if(!result){$("#bannerPicture").show();$(".banner_video").hide();}else if($("#bannerVideo").length){$("#bannerPicture").hide();$(".banner_video").show();}});}
$("#js-site-nav li:has(ul)").doubleTapToGo();const searchWrappers=document.querySelectorAll(".js-search");searchWrappers?.forEach((searchWrapper)=>{const toggle=searchWrapper.querySelector(".toggle-search");const form=searchWrapper.querySelector("form");const input=form.querySelector("input");toggle?.addEventListener("click",(e)=>{e.preventDefault();input.focus();});form.addEventListener("focus",()=>{form.classList.add("is-active");},true);form.addEventListener("blur",()=>{form.classList.remove("is-active");},true);});$("#js-toggle-more-nav").on("click",function(){$("body").toggleClass("more-tab-is-active");});$("#js-close-nav").on("click",function(){$("body").removeClass("more-tab-is-active");});$(".js-toggle-faq").on("click",function(){var open=$(this).hasClass("is-active");$(".frequently_asked_questions dt").removeClass("is-active");if(!open){$(this).addClass("is-active");}});$.each($(".moment"),function(index,value){value.innerText=moment(value.innerText).fromNow();});const parseAttr=(value)=>!isNaN(value)?Number(value):value==="true"?true:value==="false"?false:value;document.querySelectorAll(".carousel").forEach((el)=>{const slideCount=el.querySelectorAll(".slide").length;const dataSettings=Object.fromEntries(Array.from(el.attributes).filter((attr)=>attr.name.startsWith("data-")).map((attr)=>[attr.name.replace("data-","").replace(/-([a-z])/g,(g)=>g[1].toUpperCase()),parseAttr(attr.value),]));$(el).slick({dots:false,speed:300,slidesToShow:slideCount<3?slideCount:3,nextArrow:'<button type="button" class="button button--next">Next</button>',prevArrow:'<button type="button" class="button button--prev">Previous</button>',infinite:true,variableWidth:false,responsive:[{breakpoint:1024,settings:{slidesToShow:slideCount<3?slideCount:3,centerMode:true,centerPadding:0,infinite:true,slidesToScroll:1,},},{breakpoint:750,settings:{slidesToShow:slideCount<2?slideCount:2,infinite:true,centerMode:true,centerPadding:"5%",slidesToScroll:1,},},{breakpoint:650,settings:{slidesToShow:1,slidesToScroll:1,centerMode:true,centerPadding:0,infinite:true,arrows:false,},},],...dataSettings,});});$("#js-event-carousel").slick({dots:false,speed:300,slidesToShow:3,nextArrow:'<button type="button" class="button button--next">Next</button>',prevArrow:'<button type="button" class="button button--prev">Previous</button>',infinite:true,variableWidth:false,responsive:[{breakpoint:1024,settings:{slidesToShow:3,centerMode:true,centerPadding:0,infinite:true,slidesToScroll:1,},},{breakpoint:750,settings:{slidesToShow:2,infinite:true,centerMode:true,centerPadding:"5%",slidesToScroll:1,},},{breakpoint:650,settings:{slidesToShow:1,slidesToScroll:1,centerMode:true,centerPadding:0,infinite:true,arrows:false,},},],});$(".js-attraction-carousel").slick({dots:false,speed:300,slidesToShow:3,nextArrow:'<button type="button" class="button button--next button--solid">Next</button>',prevArrow:'<button type="button" class="button button--prev button--solid">Previous</button>',infinite:true,responsive:[{breakpoint:1200,settings:{slidesToShow:2,infinite:true,slidesToScroll:1,},},{breakpoint:650,settings:{arrows:false,centerMode:true,centerPadding:"12%",slidesToShow:1,infinite:true,slidesToScroll:1,},},{breakpoint:450,settings:{arrows:false,centerMode:true,centerPadding:"8%",slidesToShow:1,infinite:true,slidesToScroll:1,},},],});$("#js-social-carousel").slick({dots:false,speed:700,slidesToShow:4,slidesToScroll:3,nextArrow:'<button type="button" class="button button--next">Next</button>',prevArrow:'<button type="button" class="button button--prev">Previous</button>',infinite:true,responsive:[{breakpoint:1600,settings:{slidesToShow:3.5,slidesToScroll:2,},},{breakpoint:1200,settings:{slidesToShow:2.5,slidesToScroll:1,},},{breakpoint:900,settings:{slidesToShow:2,slidesToScroll:1,},},{breakpoint:700,settings:{slidesToShow:1.5,slidesToScroll:1,},},{breakpoint:600,settings:{slidesToShow:1.1,slidesToScroll:1,},},{breakpoint:500,settings:{slidesToShow:1,slidesToScroll:1,},},],});$("#js-forecast-carousel").slick({dots:false,speed:500,fade:true,nextArrow:"#button-next",prevArrow:"#button-prev",infinite:false,});$(".js-image-carousel").slick({dots:true,arrows:false,speed:500,adaptiveHeight:true,fade:true,});$(".js-image-carousel-with-arrows").not(".map_illustration__marker .js-image-carousel-with-arrows").slick({dots:false,arrows:true,speed:500,adaptiveHeight:true,fade:false,});if(getUrlVars()["Event"]!=null){LoadEventModal(getUrlVars()["Event"]);}
setShareLinks();});function getUrlVars(){var vars=[],hash;var hashes=window.location.href.slice(window.location.href.indexOf("?")+1).split("&");for(var i=0;i<hashes.length;i++){hash=hashes[i].split("=");vars.push(hash[0]);vars[hash[0]]=hash[1];}
return vars;}
function LoadEventModal(eventId){var pageBody=$("body");pageBody.addClass("modal-is-active");$.ajax({url:"/Umbraco/Surface/Feed/GetEvent",type:"GET",data:{id:eventId},}).done(function(partialViewResult){$("#eventModal").html(partialViewResult);$("#js-event-images-carousel").slick({dots:true,arrows:false,speed:500,fade:true,});var url=window.location.href.replace(window.location.search,"");setShareLinks();});$("#js-event-images-carousel").slick({dots:true,arrows:false,speed:500,fade:true,});}
function CloseEventModal(){$("body").removeClass("modal-is-active");}
$("#js-close-modal").on("click",function(){CloseEventModal();});var processScroll=function(){var pageBody=$("body");if(window.pageYOffset>0){pageBody.addClass("is-scrolled");}else{pageBody.removeClass("is-scrolled");}};window.addEventListener("scroll",function(e){processScroll();});function socialWindow(url){var left=(screen.width-570)/2;var top=(screen.height-570)/2;var params="menubar=no,toolbar=no,status=no,width=570,height=570,top="+
top+",left="+
left;window.open(url,"NewWindow",params);}
function setShareLinks(){var pageUrl=$("meta[property='og:url']").attr("content");var tweet="";jQuery(".social--facebook").on("click",function(){var url="https://www.facebook.com/sharer.php?u="+
pageUrl+"&fbrefresh="+
Math.floor(Math.random()*100+1);socialWindow(url);});jQuery(".social--twitter").on("click",function(){var url="https://twitter.com/intent/tweet?url="+pageUrl+"&text="+tweet;socialWindow(url);});jQuery(".social--weibo").on("click",function(){var url="http://service.weibo.com/share/share.php?url="+
pageUrl+"&title="+
tweet;socialWindow(url);});jQuery(".social--tiktok").on("click",function(){var url="http://service.weibo.com/share/share.php?url="+
pageUrl+"&title="+
tweet;socialWindow(url);});function modalOpen(target){target.fadeIn();}
function modalClose(target){target.fadeOut();}
jQuery(".social--weChat").on("click",function(){$("body").addClass("modal-is-active");$("body").addClass("modal-is-active--wechat");modalOpen($(".modal--wechat"));});jQuery(".modal__close").on("click",function(){$("body").removeClass("modal-is-active");$("body").removeClass("modal-is-active--wechat");modalClose($(".modal--wechat"));});jQuery(".social--email").on("click",function(){var url="mailto:?subject=Look at this website&body=Hi, I found this website and thought you might like it "+
pageUrl;window.location.href=url;});jQuery(".social-share.linkedin").on("click",function(){var url="https://www.linkedin.com/shareArticle?mini=true&url="+pageUrl;socialWindow(url);});}
$("#js-close-cookies").on("click",function(){$(this).parent().addClass("is-hidden");});var bookTicketsLinks=document.querySelectorAll('[href="/book-tickets/"]');if(bookTicketsLinks){bookTicketsLinks.forEach(function(link){const urlSplit=window.location.href.split("/");const urlSplitLast=urlSplit.pop()||urlSplit.pop();if(urlSplitLast.includes("book-tickets")){link.href="#book-tickets";}});}
document.addEventListener("DOMContentLoaded",function(){if(window.location.hash==="#debug"){document.documentElement.classList.add("debug");}});function showHideVideoSorries(){if(!document.querySelector(".video-sorry"))return;document.querySelectorAll(".video-sorry").forEach((element)=>{if(window.Cookiebot&&window.Cookiebot.consent&&window.Cookiebot.consent.marketing===false){element.removeAttribute("hidden");}else{element.setAttribute("hidden","true");}});}
document.addEventListener("DOMContentLoaded",showHideVideoSorries);window.addEventListener("CookiebotOnAccept",showHideVideoSorries);window.addEventListener("CookiebotOnDecline",showHideVideoSorries);document.querySelectorAll("a.js-cookie-consent").forEach((element)=>{element.addEventListener("click",function(e){e.preventDefault();window.Cookiebot&&window.Cookiebot.submitCustomConsent(true,true,true);});});;;
var localeEn={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday",],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December",],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",],today:"Today",clear:"Clear",dateFormat:"dd/MM/yyyy",timeFormat:"hh:mm aa",firstDay:0,};var eventsDatepickers={},eventsSearchDates=[],eventsTag,eventsPage=1,singleDateDebounce;var dateWorkaroundForTimezones=function(date){return new Date(date.getTime()-date.getTimezoneOffset()*60000).toISOString().split("T")[0];};document.querySelectorAll(".range-datepicker input").forEach(function(input){var datepicker=new AirDatepicker(input,{locale:localeEn,multipleDatesSeparator:" → ",minDate:new Date(),buttons:[],navTitles:{days:(function(){return input.placeholder+": <i>MMMM yyyy</i>";})(),},position:function({$datepicker,$target,$pointer}){setDatepickerPosition({datepicker,$datepicker,$target,$pointer});var scrollDebounce;window.addEventListener("scroll",function(){clearTimeout(scrollDebounce);scrollDebounce=setTimeout(function(){setDatepickerPosition({datepicker,$datepicker,$target,$pointer});},20);});},onSelect:function({date,formattedDate,datepicker}){if(input.id==="eventsDatepickerStart"&&eventsDatepickers.eventsDatepickerEnd){eventsDatepickers.eventsDatepickerEnd.update({minDate:date,});eventsSearchDates[0]=date;if(!eventsSearchDates[1]){eventsSearchDates[1]=date;eventsDatepickers.eventsDatepickerEnd.selectDate(eventsSearchDates[1]);}
eventsSearch({animate:true,newDatesProvided:true});datepicker.hide();}
if(input.id==="eventsDatepickerEnd"&&eventsDatepickers.eventsDatepickerStart){eventsDatepickers.eventsDatepickerStart.update({maxDate:date,});eventsSearchDates[1]=date;eventsSearch({animate:true,newDatesProvided:true});datepicker.hide();}},onChangeViewDate:function(){clearTimeout(singleDateDebounce);},onChangeView:function(){clearTimeout(singleDateDebounce);},onClickDayName:function(){clearTimeout(singleDateDebounce);},});if(input.id){eventsDatepickers[input.id]=datepicker;}});var eventsScroll=function(){setTimeout(function(){var top=document.getElementById("articleResults").offsetTop;top-=document.getElementById("js-site-header")?document.getElementById("js-site-header").offsetHeight:0;top-=document.getElementById("event-tags")?document.getElementById("event-tags").offsetHeight/2:0;window.scroll({top,behavior:"smooth",});},500);};var eventsSearch=function({animate,newDatesProvided}){if(newDatesProvided){eventsPage=1;}
var data={tag:eventsTag,page:eventsPage,pageSize:99,};if(newDatesProvided&&(!eventsSearchDates||!eventsSearchDates[0]||!eventsSearchDates[1])){return;}
if(eventsSearchDates[0]&&!eventsSearchDates[1]){eventsSearchDates[1]=eventsSearchDates[0];eventsDatepickers.eventsDatepickerEnd.selectDate(eventsSearchDates[0]);return;}
if(eventsSearchDates[0]){data.startDate=dateWorkaroundForTimezones(eventsSearchDates[0]);}
if(eventsSearchDates[1]){data.endDate=dateWorkaroundForTimezones(eventsSearchDates[1]);}
console.log(":: ~ eventsSearch",data);$.ajax({url:"/Umbraco/Surface/EventSurface/EventFilter",type:"GET",data,}).done(function(partialViewResult){$("#articleResults").html(partialViewResult);if(animate){eventsScroll();}});};document.querySelectorAll("#event-tags [data-key]").forEach(function(t){t.addEventListener("click",function(e){if(/#menu/.test(t.href)){eventsSearch({animate:true,newDatesProvided:false});}
document.querySelectorAll("#event-tags [data-key]").forEach(function(tag){tag.classList.remove("is-active");});t.classList.add("is-active");eventsTag=t.getAttribute("data-key");eventsPage=1;eventsSearch({animate:true,newDatesProvided:false});});});window.onload=function(){if(document.querySelector("#event-tags [data-key]")){var eventsCategory=window.location.hash?window.location.hash.replace("#",""):"";if(eventsCategory){eventsTag=eventsCategory;document.querySelector('#event-tags [data-key=""]').classList.remove("is-active");document.querySelector('#event-tags [data-key="'+eventsCategory+'"]').classList.add("is-active");eventsPage=1;eventsSearch({animate:true,newDatesProvided:false});}
document.addEventListener("click",function(e){if(e.target&&e.target.id=="loadNext"){eventsPage++;eventsSearch({animate:false,newDatesProvided:false});}});}};document.querySelectorAll(".eventsDatepickerClear").forEach(function(button){button.addEventListener("click",function(e){for(var key in eventsDatepickers){try{eventsDatepickers[key].clear({silent:true});eventsDatepickers[key].update({minDate:new Date(),maxDate:new Date(9999999999999),});}catch(e){}}
eventsSearchDates=[];eventsSearch({animate:true,newDatesProvided:false});});});document.querySelectorAll(".eventsDatepickerSearch").forEach(function(button){button.addEventListener("click",function(e){eventsSearch({animate:true,newDatesProvided:false});});});var setDatepickerPosition=function({datepicker,$datepicker,$target,$pointer,}){var coords=$target.getBoundingClientRect();var dpWidth=$datepicker.clientWidth;var top,left;if(coords.y<125){$datepicker.style.position="fixed";top=155;}else{$datepicker.style.position="absolute";top=coords.y+coords.height/2+window.scrollY+25;}
if(window.innerWidth<580){left=window.innerWidth/2-dpWidth/2;$pointer.style.display="none";}else{left=coords.x+coords.width-dpWidth;$pointer.style.display="block";datepicker._setPositionClasses("bottom right");}
$datepicker.style.left=left+"px";$datepicker.style.top=top+"px";};;;
