/* OxJS 0.1.3905 (c) 2023 0x2620, dual-licensed GPL/MIT, see https://oxjs.org for details */'use strict';this.Ox=function(value){return Ox.wrap(value);};Ox.load=function(){var callback=arguments[arguments.length-1],length,loaded=0,localeFiles=[],modules={},succeeded=0,type=Ox.typeOf(arguments[0]);if(type=='string'){modules=Ox.extend({},arguments[0],Ox.isObject(arguments[1])?arguments[1]:{});}else if(type=='array'){arguments[0].forEach(function(value){if(Ox.isString(value)){modules[value]={};}else{Ox.extend(modules,value);}});}else if(type=='object'){modules=arguments[0];} length=Ox.len(modules);Ox.documentReady(function(){if(!length){callback(true);}else{Ox.forEach(modules,function(options,module){Ox.getFile(Ox.PATH+module+'/'+module+'.js?'+Ox.VERSION,function(){Ox.load[module](options,function(success){succeeded+=success;if(++loaded==length){Ox.setLocale(Ox.LOCALE,function(){callback(succeeded==length);});}});});});}});};Ox.localStorage=function(namespace){var localStorage;try{localStorage=window.localStorage||{};for(var key in localStorage){} localStorage.setItem('OxJS.test','');localStorage.removeItem('OxJS.test');}catch(e){console.log('localStorage disabled');localStorage={};} function storage(key,value){var ret;if(arguments.length==0){ret={};Ox.forEach(localStorage,function(value,key){if(Ox.startsWith(key,namespace+'.')){ret[key.slice(namespace.length+1)]=JSON.parse(value);}});}else if(arguments.length==1&&typeof key=='string'){value=localStorage[namespace+'.'+key];ret=value===void 0?void 0:JSON.parse(value);}else{Ox.forEach(Ox.makeObject(arguments),function(value,key){localStorage[namespace+'.'+key]=JSON.stringify(value);});ret=storage;} return ret;} storage['delete']=function(){var keys=arguments.length==0?Object.keys(storage()):Ox.slice(arguments);keys.forEach(function(key){delete localStorage[namespace+'.'+key];});return storage;};return storage;};Ox.Log=(function(){var storage=Ox.localStorage('Ox'),log=storage('log')||{filter:[],filterEnabled:true},that=function(){var ret;if(arguments.length==0){ret=log;}else{ret=that.log.apply(null,arguments);} return ret;};that.filter=function(value){if(!Ox.isUndefined(value)){that.filter.enable();log.filter=Ox.makeArray(value);storage('log',log);} return log.filter;};that.filter.add=function(value){return that.filter(Ox.unique(log.filter.concat(Ox.makeArray(value))));};that.filter.disable=function(){log.filterEnabled=false;storage('log',log);};that.filter.enable=function(){log.filterEnabled=true;storage('log',log);};that.filter.remove=function(value){value=Ox.makeArray(value);return that.filter(log.filter.filter(function(v){return value.indexOf(v)==-1;}));};that.log=function(){var args=Ox.slice(arguments),date,ret;if(!log.filterEnabled||log.filter.indexOf(args[0])>-1){date=new Date();args.unshift(Ox.formatDate(date,'%H:%M:%S.')+(+date).toString().slice(-3));window.console&&window.console.log&&window.console.log.apply(window.console,args);ret=args.join(' ');} return ret;};return that;}());Ox.loop=function(){var length=arguments.length,start=length>2?arguments[0]:0,stop=arguments[length>2?1:0],step=length==4?arguments[2]:(start<=stop?1:-1),iterator=arguments[length-1],i;for(i=start;step>0?istop;i+=step){if(iterator(i)===false){break;}} return i;};Ox.print=function(){var args=Ox.slice(arguments),date=new Date();args.unshift(date.toString().split(' ')[4]+'.'+(+date).toString().slice(-3));window.console&&window.console.log.apply(window.console,args);return args.join(' ');};Ox.trace=function(){var args=Ox.slice(arguments);try{throw new Error();}catch(e){if(e.stack){args.push('\n'+Ox.clean(e.stack.split('\n').slice(2).join('\n')));}} return Ox.print.apply(null,args);};Ox.uid=(function(){var uid=0;return function(){return++uid;};}());Ox.wrap=function(value,chained){var wrapper={chain:function(){wrapper.chained=true;return wrapper;},chained:chained||false,value:function(){return value;}};Ox.methods(Ox).filter(function(method){return method[0]==method[0].toLowerCase();}).forEach(function(method){wrapper[method]=function(){var args=Array.prototype.slice.call(arguments),ret;args.unshift(value);ret=Ox[method].apply(Ox,args);return wrapper.chained?Ox.wrap(ret,true):ret;};});return wrapper;};'use strict';Ox.cache=function(fn,options){var cache={},ret;options=options||{};options.async=options.async||false;options.key=options.key||JSON.stringify;ret=function(){var args=Ox.slice(arguments),key=options.key(args);function callback(){cache[key]=Ox.slice(arguments);Ox.last(args).apply(this,arguments);} if(options.async){if(!(key in cache)){fn.apply(this,args.slice(0,-1).concat(callback));}else{setTimeout(function(){callback.apply(this,cache[key]);});}}else{if(!(key in cache)){cache[key]=fn.apply(this,args);} return cache[key];}};ret.clear=function(){if(arguments.length==0){cache={};}else{Ox.makeArray(arguments).forEach(function(key){delete cache[key];});} return ret;};return ret;};Ox.debounce=function(fn){var args,immediate=Ox.last(arguments)===true,ms=Ox.isNumber(arguments[1])?arguments[1]:250,timeout;return function(){args=arguments;if(!timeout){if(immediate){fn.apply(null,args);args=null;}}else{clearTimeout(timeout);} timeout=setTimeout(function(){if(args!==null){fn.apply(null,args);} timeout=null;},ms);};};Ox.identity=function(value){return value;};Ox.noop=function(){var callback=Ox.last(arguments);Ox.isFunction(callback)&&callback();};Ox.once=function(fn){var once=false;return function(){if(!once){once=true;fn.apply(null,arguments);}};};Ox.queue=function(fn,maxThreads){maxThreads=maxThreads||10;var processing=[],queued=[],ret=Ox.cache(function(){var args=Ox.slice(arguments);queued.push({args:args,key:getKey(args)});process();},{async:true,key:getKey}),threads=0;ret.cancel=function(){threads-=processing.length;processing=[];return ret;};ret.clear=function(){threads=0;queued=[];return ret;};ret.reset=function(){return ret.cancel().clear();};function getKey(args){return JSON.stringify(args.slice(0,-1));} function process(){var n=Math.min(queued.length,maxThreads-threads);if(n){threads+=n;processing=processing.concat(queued.splice(0,n));Ox.parallelForEach(processing,function(value,index,array,callback){var args=value.args,key=value.key;fn.apply(this,args.slice(0,-1).concat(function(result){var index=Ox.indexOf(processing,function(value){return value.key==key;});if(index>-1){processing.splice(index,1);args.slice(-1)[0](result);threads--;} callback();}));},process);}} return ret;};Ox.throttle=function(fn,ms){var args,timeout;ms=arguments.length==1?250:ms;return function(){args=arguments;if(!timeout){fn.apply(null,args);args=null;timeout=setTimeout(function(){if(args!==null){fn.apply(null,args);} timeout=null;},ms);}};};Ox.time=function(fn){var time=new Date();fn();return new Date()-time;};'use strict';(function(window){var canDefineProperty=!!Object.defineProperty&&(function(){try{Object.defineProperty({},'a',{});return true;}catch(e){}}()),chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',log;Ox.polyfill={};Ox.polyfill.atob=function(string){var binary='',ret='';String(string).replace(/=/g,'').split('').forEach(function(char){binary+=Ox.pad(chars.indexOf(char).toString(2),'left',6,'0');});while(binary.length>=8){ret+=Ox.char(parseInt(binary.slice(0,8),2));binary=binary.slice(8);} return ret;};Ox.polyfill.btoa=function(string){var binary='',ret='';String(string).split('').forEach(function(char){binary+=Ox.pad(char.charCodeAt(0).toString(2),'left',8,'0');});binary=Ox.pad(binary,Math.ceil(binary.length/6)*6,'0');while(binary){ret+=chars[parseInt(binary.slice(0,6),2)];binary=binary.slice(6);} return Ox.pad(ret,Math.ceil(ret.length/4)*4,'=');};Ox.polyfill.bind=function(that){if(typeof this!=='function'){throw new TypeError();} var args=Array.prototype.slice.call(arguments,1),fn=function(){},this_=this,ret=function(){return this_.apply(this instanceof fn?this:that||window,args.concat(Array.prototype.slice.call(arguments)));};fn.prototype=this.prototype;ret.prototype=new fn();return ret;};Ox.polyfill.every=function(iterator,that){if(this===void 0||this===null||typeof iterator!=='function'){throw new TypeError();} var array=Object(this),i,length=array.length>>>0,ret=true;for(i=0;i>>0,ret=[],value;for(i=0;i>>0;for(i=0;i>>0,ret=-1;for(i=0;i>>0,ret=-1;for(i=length-1;i>=0;i--){if(i in array&&array[i]===value){ret=i;break;}} return ret;};Ox.polyfill.map=function(iterator,that){if(this===void 0||this===null||typeof iterator!=='function'){throw new TypeError();} var array=Object(this),i,length=array.length>>>0,ret=new Array(length);for(i=0;i=0;i--){if(i in array){ret=iterator.call(void 0,ret,array[i],i,array);}} return ret;};Ox.polyfill.some=function(iterator,that){if(this===void 0||this===null||typeof iterator!=='function'){throw new TypeError();} var array=Object(this),i,length=array.length>>>0,ret=false;for(i=0;i1){keys=[];options.sort=parseSort(options.sort.concat(api.sort)).filter(function(v){var ret=keys.indexOf(v.key)==-1;keys.push(v.key);return ret;});options.sort.forEach(function(v){var key=v.key;if(api.enums[key]){map[key]=function(value){return api.enums[key].indexOf(value.toLowerCase());};}else if(api.map[key]){map[key]=api.map[key];}});if(options.keys||options.positions){result.data.items=sortBy(result.data.items,options.sort,map,options.query);}} if(options.positions){data={positions:{}};options.positions.forEach(function(id){data.positions[id]=Ox.indexOf(result.data.items,function(item){return item[api.unique]==id;});});result.data=data;}else if(!options.keys){data={};api.sums.forEach(function(key){data[key]=result.data.items.map(function(item){return item[key];});data[key]=Ox.isString(data[key][0])?Ox.unique(data[key]).length:Ox.sum(data[key]);});data.items=result.data.items.length;if(api.geo){data.area=data.items==0?{south:-Ox.MAX_LATITUDE,west:-179,north:Ox.MAX_LATITUDE,east:179}:result.data.items.reduce(function(prev,curr){return{south:Math.min(prev.south,curr.south),west:Math.min(prev.west,curr.west),north:Math.max(prev.north,curr.north),east:Math.max(prev.east,curr.east)};},{south:Ox.MAX_LATITUDE,west:180,north:-Ox.MAX_LATITUDE,east:-180});} result.data=data;}else{if(!Ox.isEmpty(options.keys)){if(options.keys.indexOf(api.unique)==-1){options.keys.push(api.unique);} result.data.items=result.data.items.map(function(item){var ret={};options.keys.forEach(function(key){ret[key]=item[key];});return ret;});} if(options.range){result.data.items=result.data.items.slice(options.range[0],options.range[1]);}} callback&&callback(result);return result;},ret=Ox.extend(api.cache?Ox.cache(fn,{async:true}):fn,{update:function(updatedItems){items=updatedItems;api.cache&&ret.clear();sortBy.clear();return ret;}}),sortBy=Ox.cache(function sortBy(array,by,map,query){return Ox.sortBy(array,by,map);},{key:function(args){return JSON.stringify([args[1],args[3]]);}});function parseEnums(enums){return Ox.map(enums,function(values){return values.map(function(value){return value.toLowerCase();});});} function parseConditions(conditions){return conditions.map(function(condition){var key=condition.key,operator=condition.operator,values=Ox.makeArray(condition.value);if(condition.conditions){condition.conditions=parseConditions(condition.conditions);}else{values=values.map(function(value){if(Ox.isString(value)){value=value.toLowerCase();} if(api.enums[key]&&(operator.indexOf('<')>-1||operator.indexOf('>')>-1)){value=api.enums[key].indexOf(value);} return value;});condition.value=Ox.isArray(condition.value)?values:values[0];} return condition;});} function parseSort(sort){return sort.map(function(sort){return Ox.isString(sort)?{key:sort.replace(/^[\+\-]/,''),operator:sort[0]=='-'?'-':'+'}:sort;});} function testCondition(item,condition){var key=condition.key,operator=condition.operator.replace('!',''),value=condition.value,not=condition.operator[0]=='!',itemValue=item[key],test={'=':function(a,b){return Ox.isArray(b)?a>=b[0]&&a-1;}):Ox.isString(a)?a.indexOf(b)>-1:a===b;},'==':function(a,b){return Ox.isArray(a)?a.some(function(value){return value===b;}):a===b;},'<':function(a,b){return a':function(a,b){return a>b;},'>=':function(a,b){return a>=b;},'^':function(a,b){return Ox.startsWith(a,b);},'$':function(a,b){return Ox.endsWith(a,b);}};if(Ox.isString(itemValue)){itemValue=itemValue.toLowerCase();}else if(Ox.isArray(itemValue)&&Ox.isString(itemValue[0])){itemValue=itemValue.map(function(value){return value.toLowerCase();});} if(api.enums[key]&&(operator.indexOf('<')>-1||operator.indexOf('>')>-1)){itemValue=api.enums[key].indexOf(itemValue);} return test[operator](itemValue,value)==!not;} function testQuery(item,query){var match=true;Ox.forEach(query.conditions,function(condition){match=(condition.conditions?testQuery:testCondition)(item,condition);if((query.operator=='&'&&!match)||(query.operator=='|'&&match)){return false;}});return match;} return ret;};Ox.compact=function(array){return array.filter(function(value){return value!=null;});};Ox.find=function(array,string,leading){var matches=[[],[]];string=string.toLowerCase();array.forEach(function(value){var lowerCase=value.toLowerCase(),index=lowerCase.indexOf(string);index>-1&&matches[index==0?0:1][lowerCase==string?'unshift':'push'](value);});return leading?matches[0]:matches[0].concat(matches[1]);};Ox.flatten=function(array){var ret=[];array.forEach(function(value){if(Ox.isArray(value)){ret=ret.concat(Ox.flatten(value));}else{ret.push(value);}});return ret;};Ox.getIndex=function(array,key,value){return Ox.indexOf(array,function(obj){return obj[key]===value;});};Ox.getIndexById=function(array,id){return Ox.getIndex(array,'id',id);};Ox.getObject=function(array,key,value){var index=Ox.getIndex(array,key,value);return index>-1?array[index]:null;};Ox.getObjectById=function(array,id){return Ox.getObject(array,'id',id);};Ox.last=function(array,value){var ret;if(arguments.length==1){ret=array[array.length-1];}else{array[array.length-1]=value;ret=array;} return ret;};Ox.makeArray=function(value){var ret,type=Ox.typeOf(value);if(type=='arguments'||type=='nodelist'){ret=Ox.slice(value);}else if(type=='array'){ret=value;}else{ret=[value];} return ret;};Ox.nextValue=function(array,value,direction){var found=false,nextValue;direction=direction||1;direction==-1&&array.reverse();Ox.forEach(array,function(v){if(direction==1?v>value:vb?1:0;});};Ox.sortBy=function(array,by,map){var sortValues={};by=Ox.makeArray(by).map(function(value){return Ox.isString(value)?{key:value.replace(/^[\+\-]/,''),operator:value[0]=='-'?'-':'+'}:value;});map=map||{};return array.sort(function(a,b){var aValue,bValue,index=0,key,ret=0;while(ret==0&&indexbValue){ret=by[index].operator=='+'?1:-1;}else{index++;}} return ret;});};}());Ox.unique=function(array){return Ox.filter(array,function(value,index){return array.indexOf(value)==index;});};Ox.zip=function(){var args=arguments.length==1?arguments[0]:Ox.slice(arguments),array=[];args[0].forEach(function(value,index){array[index]=[];args.forEach(function(value){array[index].push(value[index]);});});return array;};'use strict';Ox.char=String.fromCharCode;Ox.clean=function(string){return Ox.filter(Ox.map(string.split('\n'),function(string){return string.replace(/\s+/g,' ').trim()||'';})).join('\n');};Ox.codePointAt=function(string,index){var first,length=string.length,ret,second;if(index>=0&&index0xDBFF||index==length-1){ret=first;}else{second=string.charCodeAt(index+1);ret=second<0xDC00||second>0xDFFF?first:((first-0xD800)*0x400)+(second-0xDC00)+0x10000;}} return ret;};Ox.endsWith=function(string,substring){string=string.toString();substring=substring.toString();return string.slice(string.length-substring.length)==substring;};Ox.fromCodePoint=function(){var ret='';Ox.forEach(arguments,function(number){if(number<0||number>0x10FFFF||!Ox.isInt(number)){throw new RangeError();} if(number<0x10000){ret+=String.fromCharCode(number);}else{number-=0x10000;ret+=String.fromCharCode((number>>10)+0xD800) +String.fromCharCode((number%0x400)+0xDC00);}});return ret;};Ox.isValidEmail=function(string){return!!/^[0-9A-Z\.\+\-_]+@(?:[0-9A-Z\-]+\.)+[A-Z]{2,64}$/i.test(string);};Ox.pad=function(string,position,length,padding){var hasPosition=Ox.isString(arguments[1]),isNumber=Ox.isNumber(arguments[0]),last=Ox.last(arguments);position=hasPosition?arguments[1]:isNumber?'left':'right';length=Math.max(hasPosition?arguments[2]:arguments[1],0);padding=Ox.isString(last)?last:isNumber&&position=='left'?'0':' ';string=string.toString();padding=Ox.repeat(padding,length-string.length);return position=='left'?(padding+string).slice(-length):(string+padding).slice(0,length);};Ox.parseDuration=function(string){return string.split(':').reverse().slice(0,4).reduce(function(p,c,i){return p+(parseFloat(c)||0)*(i==3?86400:Math.pow(60,i));},0);};Ox.parsePath=function(string){var matches=/^(.+\/)?(.+?(\..+)?)?$/.exec(string);return{pathname:matches[1]||'',filename:matches[2]||'',extension:matches[3]?matches[3].slice(1):''};};Ox.parseSRT=function(string,fps){return string.replace(/\r\n/g,'\n').trim().split('\n\n').map(function(block){var lines=block.split('\n'),points;if(lines.length<3){Ox.Log('Core','skip invalid srt block',lines);return{};} lines.shift();points=lines.shift().split(' --> ').map(function(point){return point.replace(',',':').split(':').reduce(function(previous,current,index){return previous+parseInt(current,10)*[3600,60,1,0.001][index];},0);});if(fps){points=points.map(function(point){return Math.round(point*fps)/fps;});} return{'in':points[0],out:points[1],text:lines.join('\n')};}).filter(function(block){return!Ox.isEmpty(block);});};Ox.parseURL=(function(){var a=document.createElement('a'),keys=['hash','host','hostname','origin','pathname','port','protocol','search'];return function(string){var ret={};a.href=string;keys.forEach(function(key){ret[key]=a[key];});return ret;};}());Ox.parseUserAgent=function(userAgent){var aliases={browser:{'Firefox':/(Fennec|Firebird|Iceweasel|Minefield|Namoroka|Phoenix|SeaMonkey|Shiretoko)/},system:{'BSD':/(FreeBSD|NetBSD|OpenBSD)/,'Linux':/(CrOS|MeeGo|webOS)/,'Unix':/(AIX|HP-UX|IRIX|SunOS)/}},names={browser:{'chromeframe':'Chrome Frame','MSIE':'Internet Explorer'},system:{'CPU OS':'iOS','iPhone OS':'iOS','Macintosh':'Mac OS X'}},regexps={browser:[/(Camino)\/(\d+)/,/(chromeframe)\/(\d+)/,/(Edge)\/(\d+)/,/(Chrome)\/(\d+)/,/(Epiphany)\/(\d+)/,/(Firefox)\/(\d+)/,/(Galeon)\/(\d+)/,/(Googlebot)\/(\d+)/,/(Konqueror)\/(\d+)/,/(MSIE) (\d+)/,/(Netscape)\d?\/(\d+)/,/(NokiaBrowser)\/(\d+)/,/(Opera) (\d+)/,/(Opera)\/.+Version\/(\d+)/,/(YandexBot)\/(\d+)/,/(YandexMobileBot)\/(\d+)/,/Version\/(\d+).+(Safari)/],system:[/(Android) (\d+)/,/(BeOS)/,/(BlackBerry) (\d+)/,/(Darwin)/,/(BSD) (FreeBSD|NetBSD|OpenBSD)/,/(CPU OS) (\d+)/,/(iPhone OS) (\d+)/,/(Linux).+(CentOS|CrOS|Debian|Fedora|Gentoo|Mandriva|MeeGo|Mint|Red Hat|SUSE|Ubuntu|webOS)/,/(CentOS|CrOS|Debian|Fedora|Gentoo|Mandriva|MeeGo|Mint|Red Hat|SUSE|Ubuntu|webOS).+(Linux)/,/(Linux)/,/(Mac OS X) (10.\d+)/,/(Mac OS X)/,/(Macintosh)/,/(SymbianOS)\/(\d+)/,/(SymbOS)/,/(OS\/2)/,/(Unix) (AIX|HP-UX|IRIX|SunOS)/,/(Unix)/,/(Windows) (NT \d\.\d)/,/(Windows) (95|98|2000|2003|ME|NT|XP)/,/(Windows).+(Win 9x 4\.90)/,/(Windows).+(Win9\d)/,/(Windows).+(WinNT4.0)/]},versions={browser:{},system:{'10.0':'10.0 (Cheetah)','10.1':'10.1 (Puma)','10.2':'10.2 (Jaguar)','10.3':'10.3 (Panther)','10.4':'10.4 (Tiger)','10.5':'10.5 (Leopard)','10.6':'10.6 (Snow Leopard)','10.7':'10.7 (Lion)','10.8':'10.8 (Mountain Lion)','10.9':'10.9 (Mavericks)','10.10':'10.10 (Yosemite)','10.11':'10.11 (El Capitan)','10.12':'10.12 (Sierra)','10.13':'10.13 (High Sierra)','CrOS':'Chrome OS','NT 4.0':'NT 4.0 (Windows NT)','NT 4.1':'NT 4.1 (Windows 98)','Win 9x 4.90':'NT 4.9 (Windows ME)','NT 5.0':'NT 5.0 (Windows 2000)','NT 5.1':'NT 5.1 (Windows XP)','NT 5.2':'NT 5.2 (Windows 2003)','NT 6.0':'NT 6.0 (Windows Vista)','NT 6.1':'NT 6.1 (Windows 7)','NT 6.2':'NT 6.2 (Windows 8)','NT 6.3':'NT 6.3 (Windows 8.1)','NT 6.4':'NT 6.4 (Windows 10)','95':'NT 4.0 (Windows 95)','NT':'NT 4.0 (Windows NT)','98':'NT 4.1 (Windows 98)','ME':'NT 4.9 (Windows ME)','2000':'NT 5.0 (Windows 2000)','2003':'NT 5.2 (Windows 2003)','XP':'NT 5.1 (Windows XP)','Win95':'NT 4.0 (Windows 95)','WinNT4.0':'NT 4.0 (Windows NT)','Win98':'NT 4.1 (Windows 98)'}},userAgentData={};Ox.forEach(regexps,function(regexps,key){userAgentData[key]={name:'',string:'',version:''};Ox.forEach(aliases[key],function(regexp,alias){userAgent=userAgent.replace(regexp,key=='browser'?alias:alias+' $1');});Ox.forEach(regexps,function(regexp){var matches=userAgent.match(regexp),name,string,swap,version;if(matches){matches[2]=matches[2]||'';swap=matches[1].match(/^\d/)||matches[2]=='Linux';name=matches[swap?2:1];version=matches[swap?1:2].replace('_','.');name=names[key][name]||name,version=versions[key][version]||version;string=name;if(version){string+=' '+(['BSD','Linux','Unix'].indexOf(name)>-1?'('+version+')':version);} userAgentData[key]={name:names[name]||name,string:string,version:versions[version]||version};return false;}});});return userAgentData;};Ox.repeat=function(value,times){var ret;if(Ox.isArray(value)){ret=[];Ox.loop(times,function(){ret=ret.concat(value);});}else{ret=times>=1?new Array(times+1).join(value.toString()):'';} return ret;};Ox.splice=function(string,index,remove){var array=string.split('');Array.prototype.splice.apply(array,Ox.slice(arguments,1));return array.join('');};Ox.startsWith=function(string,substring){string=string.toString();substring=substring.toString();return string.slice(0,substring.length)==substring;};Ox.toCamelCase=function(string){return string.replace(/[\-\/_][a-z]/g,function(string){return string[1].toUpperCase();});};Ox.toDashes=function(string){return string.replace(/[A-Z]/g,function(string){return'-'+string.toLowerCase();});};Ox.toSlashes=function(string){return string.replace(/[A-Z]/g,function(string){return'/'+string.toLowerCase();});};Ox.toTitleCase=function(string){return string.split(' ').map(function(value){var substring=value.slice(1),lowercase=substring.toLowerCase();if(substring==lowercase){value=value.slice(0,1).toUpperCase()+lowercase;} return value;}).join(' ');};Ox.toUnderscores=function(string){return string.replace(/[A-Z]/g,function(string){return'_'+string.toLowerCase();});};Ox.truncate=function(string,position,length,padding){var hasPosition=Ox.isString(arguments[1]),last=Ox.last(arguments);position=hasPosition?arguments[1]:'right';length=hasPosition?arguments[2]:arguments[1];padding=Ox.isString(last)?last:'…';if(string.length>length){if(position=='left'){string=padding +string.slice(padding.length+string.length-length);}else if(position=='center'){string=string.slice(0,Math.ceil((length-padding.length)/2)) +padding +string.slice(-Math.floor((length-padding.length)/2));}else if(position=='right'){string=string.slice(0,length-padding.length)+padding;}} return string;};Ox.words=function(string){var array=string.toLowerCase().split(/\b/),length=array.length,startsWithWord=/\w/.test(array[0]);array.forEach(function(v,i){if(i>0&&i1){max=Ox.max(words.map(function(word){return word.length;}));while(length>max){if(Ox.wordwrap(string,--length,newline).split(newline).length>lines.length){length++;break;}}}} lines=[''];words.forEach(function(word){var index;if((lines[lines.length-1]+word).length<=length){lines[lines.length-1]+=word+' ';}else{if(word.length<=length){lines.push(word+' ');}else{index=length-lines[lines.length-1].length;lines[lines.length-1]+=word.slice(0,index);while(index-1;};Ox.count=function(collection,value){var count={};Ox.forEach(collection,function(value){count[value]=(count[value]||0)+1;});return value?count[value]||0:count;};Ox.every=function(collection,iterator,that){iterator=iterator||Ox.identity;return Ox.forEach(collection,function(value,key,collection){return!!iterator.call(that,value,key,collection);})==Ox.len(collection);};Ox.filter=function(collection,iterator,that){var ret,type=Ox.typeOf(collection);iterator=iterator||Ox.identity;if(type=='object'||type=='storage'){ret={};Ox.forEach(collection,function(value,key){if(iterator.call(that,value,key,collection)){ret[key]=value;}});}else{ret=Ox.slice(collection).filter(iterator,that);if(type=='string'){ret=ret.join('');}} return ret;};Ox.forEach=function(collection,iterator,that){var i=0,key,type=Ox.typeOf(collection);if(type=='object'||type=='storage'){for(key in collection){if(Ox.hasOwn(collection,key)&&iterator.call(that,collection[key],key,collection)===false){break;} i++;}}else{collection=Ox.slice(collection);for(i=0;i-1){ret=collection.splice(key,1)[0];}}else{key=Ox.keyOf(collection,element);if(key){ret=collection[key];delete collection[key];}} return ret;};Ox.reverse=function(collection){return Ox.isArray(collection)?Ox.clone(collection).reverse():collection.toString().split('').reverse().join('');};Ox.shuffle=function(collection){var keys,ret,type=Ox.typeOf(collection),values;if(type=='object'||type=='storage'){keys=Object.keys(collection);values=Ox.shuffle(Ox.values(collection));ret={};keys.forEach(function(key,index){ret[key]=values[index];});}else{ret=[];Ox.slice(collection).forEach(function(value,index){var random=Math.floor(Math.random()*(index+1));ret[index]=ret[random];ret[random]=value;});if(type=='string'){ret=ret.join('');}} return ret;};Ox.slice=Ox.toArray=function(collection,start,stop){return Array.prototype.slice.call(collection,start,stop);};if(Ox.slice([0]).length==0||Ox.slice('0')[0]===null||Ox.slice('0')[0]===void 0||!(function(){try{return Ox.slice(document.getElementsByTagName('a'));}catch(error){}}())){Ox.slice=Ox.toArray=function(collection,start,stop){var args=stop===void 0?[start]:[start,stop],array=[],index,length,ret;if(Ox.typeOf(collection)=='string'){collection=collection.split('');} try{ret=Array.prototype.slice.apply(collection,args);}catch(error){length=collection.length;for(index=0;index1?Ox.slice(arguments):collection;Ox.forEach(collection,function(value){value=+value;ret+=isFinite(value)?value:0;});return ret;};Ox.values=function(collection){var ret,type=Ox.typeOf(collection);if(type=='array'||type=='nodelist'){ret=Ox.slice(collection);}else if(type=='object'||type=='storage'){ret=[];Ox.forEach(collection,function(value){ret.push(value);});}else if(type=='string'){ret=collection.split('');} return ret;};Ox.walk=function(collection,iterator,that,keys){keys=keys||[];Ox.forEach(collection,function(value,key){var keys_=keys.concat(key);iterator.call(that,value,keys_,collection);Ox.walk(collection[key],iterator,that,keys_);});};'use strict';Ox.acosh=function(x){return Math.log(x+Math.sqrt(x*x-1));};Ox.asinh=function(x){return Math.log(x+Math.sqrt(x*x+1));};Ox.atanh=function(x){return 0.5*Math.log((1+x)/(1-x));};Ox.cosh=function(x){return(Math.exp(x)+Math.exp(-x))/2;};Ox.deg=function(rad){return rad*180/Math.PI;};Ox.hypot=function(){return Math.sqrt(Ox.slice(arguments).reduce(function(sum,number){return sum+number*number;},0));};Ox.limit=function(){var number=arguments[0],min=arguments.length==3?arguments[1]:-Infinity,max=arguments[arguments.length-1];return Math.min(Math.max(number,min),max);};Ox.log=function(number,base){return Math.log(number)/Math.log(base||Math.E);};Ox.mod=function(number,by){return(number%by+by)%by;};Ox.rad=function(deg){return deg*Math.PI/180;};Ox.random=function(){var min=arguments.length==2?arguments[0]:0,max=arguments.length?Ox.last(arguments):2;return min+Math.floor(Math.random()*(max-min));};Ox.round=function(number,decimals){var pow=Math.pow(10,decimals||0);return Math.round(number*pow)/pow;};Ox.sign=function(x){x=+x;return x!==x||x===0?x:x<0?-1:1;};Ox.sinh=function(x){return(Math.exp(x)-Math.exp(-x))/2;};Ox.splitInt=function(number,by){var div=Math.floor(number/by),mod=number%by;return Ox.range(by).map(function(i){return div+(i>by-1-mod);});};Ox.tanh=function(x){return(Math.exp(x)-Math.exp(-x))/(Math.exp(x)+Math.exp(-x));};Ox.trunc=function(x){return~~x;};'use strict';(function(){function asyncMap(forEach,collection,iterator,that,callback){var type=Ox.typeOf(collection),results=type=='object'?{}:[];callback=Ox.last(arguments);that=arguments.length==5?that:null;forEach(collection,function(value,key,collection,callback){iterator(value,key,collection,function(value){results[key]=value;callback();});},that,function(){callback(type=='string'?results.join(''):results);});} Ox.asyncMap=function(array,iterator,that,callback){array=Ox.makeArray(array);callback=Ox.last(arguments);that=arguments.length==4?that:null;if(array.some(Ox.isArray)){Ox.serialMap(array,function(value,key,array,callback){Ox.parallelMap(Ox.makeArray(value),iterator,callback);},callback);}else{Ox.parallelMap(array,iterator,callback);}};Ox.nonblockingForEach=function(collection,iterator,that,callback,ms){var i=0,keys,last=Ox.last(arguments),n,time,type=Ox.typeOf(collection);callback=Ox.isFunction(last)?last:arguments[arguments.length-2];collection=type=='array'||type=='object'?collection:Ox.slice(collection);keys=type=='object'?Object.keys(collection):Ox.range(collection.length);ms=ms||1000;n=Ox.len(collection);that=arguments.length==5||(arguments.length==4&&Ox.isFunction(last))?that:null;time=+new Date();iterate();function iterate(){Ox.forEach(keys.slice(i),function(key){if(key in collection){if(iterator.call(that,collection[key],key,collection)===false){i=n;return false;}} i++;if(+new Date()>=time+ms){return false;}});if(i1){v3--;} if(v3<1/6){rgb[i]=v1+((v2-v1)*6*v3);}else if(v3<0.5){rgb[i]=v2;}else if(v3<2/3){rgb[i]=v1+((v2-v1)*6*(2/3-v3));}else{rgb[i]=v1;}});} return rgb.map(function(value){return Math.round(value*255);});};Ox.toHex=function(rgb){return rgb.map(function(value){return Ox.pad(value.toString(16).toUpperCase(),'left',2,'0');}).join('');};Ox.toRGB=function(hex){return Ox.range(3).map(function(index){return parseInt(hex.substr(index*2,2),16);});};'use strict';Ox.AMPM=['AM','PM'];Ox.BASE_32_ALIASES={'I':'1','L':'1','O':'0','U':'V'},Ox.BASE_32_DIGITS='0123456789ABCDEFGHJKMNPQRSTVWXYZ';Ox.BCAD=['BC','AD'];Ox.EARTH_RADIUS=6378137;Ox.EARTH_CIRCUMFERENCE=2*Math.PI*Ox.EARTH_RADIUS;Ox.EARTH_SURFACE=4*Math.PI*Math.pow(Ox.EARTH_RADIUS,2);Ox.HTML_ENTITIES={'"':'"','&':'&',"'":''','<':'<','>':'>'};Ox.KEYS={0:'section',8:'backspace',9:'tab',12:'clear',13:'enter',16:'shift',17:'control',18:'alt',20:'capslock',27:'escape',32:'space',33:'pageup',34:'pagedown',35:'end',36:'home',37:'left',38:'up',39:'right',40:'down',45:'insert',46:'delete',47:'help',48:'0',49:'1',50:'2',51:'3',52:'4',53:'5',54:'6',55:'7',56:'8',57:'9',65:'a',66:'b',67:'c',68:'d',69:'e',70:'f',71:'g',72:'h',73:'i',74:'j',75:'k',76:'l',77:'m',78:'n',79:'o',80:'p',81:'q',82:'r',83:'s',84:'t',85:'u',86:'v',87:'w',88:'x',89:'y',90:'z',91:'meta.left',92:'meta.right',93:'meta.right',96:'0.numpad',97:'1.numpad',98:'2.numpad',99:'3.numpad',100:'4.numpad',101:'5.numpad',102:'6.numpad',103:'7.numpad',104:'8.numpad',105:'9.numpad',106:'asterisk.numpad',107:'plus.numpad',109:'minus.numpad',108:'enter.numpad',110:'dot.numpad',111:'slash.numpad',112:'f1',113:'f2',114:'f3',115:'f4',116:'f5',117:'f6',118:'f7',119:'f8',120:'f9',121:'f10',122:'f11',123:'f12',124:'f13',125:'f14',126:'f15',127:'f16',128:'f17',129:'f18',130:'f19',131:'f20',144:'numlock',145:'scrolllock',186:'semicolon',187:'equal',188:'comma',189:'minus',190:'dot',191:'slash',192:'backtick',219:'openbracket',220:'backslash',221:'closebracket',222:'quote',224:'meta'};Ox.LOCALE='en';Ox.LOCALE_NAMES={'ar':'العربية','de':'Deutsch','el':'Ελληνικά','en':'English','fr':'Français','hi':'हिन्दी'};Ox.LOCALES={"Geo":["de","ar"],"Ox":["de","el","hi","ar"],"UI":["de","el","hi","ar"]};Ox.MAX_LATITUDE=Ox.deg(Math.atan(Ox.sinh(Math.PI)));Ox.MIN_LATITUDE=-Ox.MAX_LATITUDE;Ox.MODIFIER_KEYS={altKey:'alt',ctrlKey:'control',shiftKey:'shift',metaKey:'meta'};Ox.MONTHS=['January','February','March','April','May','June','July','August','September','October','November','December'];Ox.SHORT_MONTHS=Ox.MONTHS.map(function(val){return val.slice(0,3);});Ox.PATH=(function(){var index,regexp=/Ox\.js(\?.+|)$/,scripts=document.getElementsByTagName('script'),src;for(index=scripts.length-1;index>=0;index--){src=scripts[index].src;if(regexp.test(src)){return src.replace(regexp,'');}}}());Ox.MODE=Ox.PATH.slice(0,-1).split('/').pop();Ox.PREFIXES=['','K','M','G','T','P'];Ox.SEASONS=['Winter','Spring','Summer','Fall'];Ox.STACK_SIZE=65536;Ox.SYMBOLS={dollar:'\u0024',cent:'\u00A2',pound:'\u00A3',currency:'\u00A4',yen:'\u00A5',bullet:'\u2022',ellipsis:'\u2026',permille:'\u2030',colon:'\u20A1',cruzeiro:'\u20A2',franc:'\u20A3',lira:'\u20A4',naira:'\u20A6',peseta:'\u20A7',won:'\u20A9',sheqel:'\u20AA',dong:'\u20AB',euro:'\u20AC',kip:'\u20AD',tugrik:'\u20AE',drachma:'\u20AF',peso:'\u20B1',guarani:'\u20B2',austral:'\u20B3',hryvnia:'\u20B4',cedi:'\u20B5',tenge:'\u20B8',rupee:'\u20B9',celsius:'\u2103',fahrenheit:'\u2109',pounds:'\u2114',ounce:'\u2125',ohm:'\u2126',kelvin:'\u212A',angstrom:'\u212B',info:'\u2139',arrow_left:'\u2190',arrow_up:'\u2191',arrow_right:'\u2192',arrow_down:'\u2193',home:'\u2196',end:'\u2198','return':'\u21A9',redo:'\u21BA',undo:'\u21BB',page_up:'\u21DE',page_down:'\u21DF',tab:'\u21E5',shift:'\u21E7',capslock:'\u21EA',infinity:'\u221E',control:'\u2303',command:'\u2318',enter:'\u2324',alt:'\u2325','delete':'\u2326',clear:'\u2327',backspace:'\u232B',option:'\u2387',navigate:'\u2388',escape:'\u238B',eject:'\u23CF',space:'\u2423',triangle_up:'\u25B2',triangle_right:'\u25BA',triangle_down:'\u25BC',select:'\u25BE',triangle_left:'\u25C0',diamond:'\u25C6',black_star:'\u2605',white_star:'\u2606',burn:'\u2622',sound:'\u266B',trash:'\u267A',flag:'\u2691',anchor:'\u2693',gear:'\u2699',atom:'\u269B',warning:'\u26A0',voltage:'\u26A1',cut:'\u2702',backup:'\u2707',fly:'\u2708',check:'\u2713',close:'\u2715',ballot:'\u2717',windows:'\u2756',edit:'\uF802',click:'\uF803',apple:'\uF8FF'};Ox.VERSION='0.1.3905';Ox.WEEKDAYS=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'];Ox.SHORT_WEEKDAYS=Ox.WEEKDAYS.map(function(val){return val.slice(0,3);});'use strict';Ox.$=Ox.element=function $(value){var elements=Ox.isArray(value)?value:Ox.isNodeList(value)?Ox.slice(value):!Ox.isString(value)?[value]:value[0]=='<'?[document.createElement(value.slice(1,-1))]:Ox.slice(document.querySelectorAll(value)),mousewheelEvents=['wheel','mousewheel'],originalMousewheelEvents='onwheel'in document?['wheel']:['mousewheel','DOMMouseScroll','MozMousePixelScroll'],previousDisplay;function getElements($other){return $other.forEach?$other:Ox.range($other.length).map(function(index){return $other[index];});} function normalizeEvents(args){var ret={};Ox.forEach(Ox.makeObject(args),function(callback,event){if(Ox.contains(mousewheelEvents,event)){originalMousewheelEvents.forEach(function(event){ret[event]=callback;});}else{ret[event]=callback;}});return ret;} return elements.length?Ox.extend(Ox.zipObject(Ox.range(elements.length),elements),{add:function add($other){elements=Ox.unique(elements.concat($other.elements()));this.length=elements.length;return this;},addClass:function addClass(string){string=Ox.clean(string);elements.forEach(function(element){element.className=Ox.unique(((element.className?element.className+' ':'')+string).split(' ')).join(' ');});return this;},append:function append(){var $others=Ox.slice(arguments);elements.forEach(function(element){$others.forEach(function($other){getElements($other).forEach(function(otherElement){element.appendChild(otherElement);});});});return this;},appendTo:function appendTo($other){getElements($other).forEach(function(otherElement){elements.forEach(function(element){otherElement.appendChild(element);});});return this;},attr:function attr(){var args=arguments,ret;if(args.length==1&&Ox.isString(args[0])){ret=this[0].getAttribute?this[0].getAttribute(args[0]):void 0;return ret===null?void 0:ret;}else{args=Ox.makeObject(args);elements.forEach(function(element){Ox.forEach(args,function(value,key){if(element.setAttribute&&!Ox.contains([false,null,void 0],value)){element.setAttribute(key,value);}});});return this;}},children:function children(selector){var children=Ox.unique(Ox.flatten(elements.map(function(element){return Ox.slice(element.childNodes);})));return Ox.$(selector?children.filter(function(child){return Ox.$(child).is(selector);}):children);},css:function css(){var args=arguments;if(args.length==1&&Ox.isString(args[0])){return elements[0].style[args[0]];}else{elements.forEach(function(element){Ox.forEach(Ox.makeObject(args),function(value,key){element.style[key]=value;});});return this;}},data:function data(){var args;if(arguments.length==1&&Ox.isString(arguments[0])){return element.getAttribute('data-'+arguments[0]);}else{args=Ox.makeObject(arguments);elements.forEach(function(element){Ox.forEach(args,function(value,key){element.setAttribute('data-'+key,value);});});return this;}},elements:elements,eq:function eq(){var that=this;Ox.loop(1,this.length,function(index){delete that[index];});this.elements=[this.elements[index]];this.length=1;return this;},empty:function empty(){return this.html('');},every:function every(){return Array.prototype.every.apply(elements,arguments);},filter:function filter(){return Array.prototype.filter.apply(elements,arguments);},find:function find(selector){return Ox.$(Ox.unique(Ox.flatten(elements.map(function(element){return Ox.slice(element.querySelectorAll(selector||'*'));}))));},forEach:function forEach(){Array.prototype.forEach.apply(elements,arguments);return this;},hasClass:function hasClass(string){return elements.some(function(element){return Ox.contains(element.className.split(' '),string);});},height:function height(){return elements[0][elements[0]==document?'height':elements[0]==window?'innerHeight':'offsetHeight'];},hide:function hide(){previousDisplay=this.css('display');return this.css({display:'none'});},html:function html(string){var html='';if(arguments.length==0){elements.forEach(function(element){html+=element.innerHTML;}) return html;}else{elements.forEach(function(element){element.innerHTML=string;});return this;}},insertAfter:function insertAfter($other){var nextSibling=$other[0].nextSibling;elements.forEach(function(element){$other[0].parentNode.insertBefore(element,nextSibling);}) return this;},insertBefore:function insertBefore($other){elements.forEach(function(element){$other[0].parentNode.insertBefore(element,$other[0]);});return this;},is:function is(selector){return elements.some(function(element){var parent=element.parentNode;if(!parent){parent=document.createElement('div');parent.appendChild(element);} return Ox.contains(parent.querySelectorAll(selector),element);});},length:elements.length,map:function map(){return Array.prototype.map.apply(elements,arguments);},next:function next(){return Ox.$(Ox.unique(Ox.filter(elements.map(function(element){return element.nextSibling;}))));},nextAll:function nextAll(){var siblings=[];elements.forEach(function(element){var sibling=element;while(true){sibling=sibling.nextSibling;if(!sibling){break;} siblings.push(sibling);}});return Ox.$(Ox.unique(siblings));},off:function off(event,callback){var args=normalizeEvents(arguments);elements.forEach(function(element){Ox.forEach(args,function(callback,event){if(callback){element.removeEventListener(event,callback,false);}else{element['on'+event]=null;}});});return this;},on:function on(){var args=normalizeEvents(arguments);elements.forEach(function(element){Ox.forEach(args,function(callback,event){element.addEventListener(event,callback,false);});});return this;},one:function one(events){var args=Ox.slice(arguments),that=this;Ox.forEach(normalizeEvents(arguments),function(callback,event){that.on(event,function fn(){that.off(event,fn);return callback.apply(that,args);});});return this;},parent:function parent(){return Ox.$(Ox.unique(Ox.compact(elements.map(function(element){return element.parentNode;}))));},parents:function parents(selector){var parents=[];Ox.reverse(elements).forEach(function(element){var parent=element;while(true){parent=parent.parentNode;if(!parent||parent==document){break;} parents.unshift(parent);}});parents=Ox.unique(parents);return Ox.$(selector?parents.filter(function(parent){return Ox.$(parent).is(selector);}):parents);},prepend:function prepend(){var $others=Ox.slice(arguments).reverse();elements.forEach(function(element){var parent=element.parentNode;$others.forEach(function($other){getElements($other).forEach(function(otherElement){parent.insertBefore(otherElement,parent.firstChild);});});});return this;},prependTo:function prependTo($other){getElements($other).forEach(function(otherElement){var firstChild=otherElement.firstChild elements.forEach(function(element){otherElement.insertBefore(element,firstChild);});});return this;},prev:function prev(){return Ox.$(Ox.unique(Ox.filter(elements.map(function(element){return element.previousSibling;}))));},prevAll:function prevAll(){var siblings=[];Ox.reverse(elements).forEach(function(element){var sibling=element;while(true){sibling=sibling.previousSibling;if(!sibling){break;} siblings.unshift(sibling);}});return Ox.$(Ox.unique(siblings));},reduce:function reduce(){return Array.prototype.reduce.apply(elements,arguments);},remove:function remove(){elements.forEach(function(element){if(element.parentNode){element.parentNode.removeChild(element);}});return this;},removeAttr:function removeAttr(){var keys=Ox.makeArray(arguments);elements.forEach(function(element){keys.forEach(function(key){element.removeAttribute(key);});});return this;},removeClass:function removeClass(string){var classNames=Ox.clean(string).split(' ');elements.forEach(function(element){element.className=element.className.split(' ').filter(function(className){return!Ox.contains(classNames,className)}).join(' ');});return this;},replace:function replace($other){getElements($other).forEach(function(otherElement){var parent=otherElement.parentNode,sibling=otherElement.nextSibling;if(parent){parent.removeChild(otherElement);elements.forEach(function(element){parent.insertBefore(element,sibling)});}});return this;},replaceWith:function replaceWith($other){elements.forEach(function(element){var parent=element.parentNode,sibling=element.nextSibling;if(parent){parent.removeChild(element);getElements($other).forEach(function(otherElement){parent.insertBefore(otherElement,sibling);});}});return this;},show:function show(){return this.css({display:previousDisplay||'block'});},siblings:function siblings(selector){var siblings=Ox.unique(elements.map(function(element){return Ox.filter(element.parentNode.childNodes,function(sibling){return sibling!==element;});}));return Ox.$(selector?siblings.filter(function(sibling){return Ox.$(sibling).is(selector);}):siblings);},some:function some(){return Array.prototype.some.apply(elements,arguments);},text:function text(string){var text='';if(arguments.length==0){elements.forEach(function(element){text+=Ox.isString(element.textContent)?element.textContent:element.innerText;});return text;}else{elements.forEach(function(element){element.empty();element.appendChild(document.createTextNode(string));});return this;}},toggle:function toggle(){return this[Ox.$(element).css('display')=='none'?'show':'hide']();},toggleClass:function toggleClass(string){elements.forEach(function(element){var $element=Ox.$(element);$element[$element.hasClass(string)?'removeClass':'addClass'](string);}) return this;},trigger:function trigger(event){elements.forEach(function(element){var e=document.createEvent('MouseEvents');e.initEvent(event,true,true);element.dispatchEvent(e);});return this;},val:function val(value){var ret;if(arguments.length==0){return elements[0].value;}else{elements.forEach(function(element){element.value=value;});return this;}},width:function width(){return elements[0][elements[0]==document?'width':elements[0]==window?'innerWidth':'offsetWidth'];}}):null;};Ox.canvas=function(){var c={},isImage=arguments.length==1,image=isImage?arguments[0]:{width:arguments[0],height:arguments[1]};c.context=(c.canvas=Ox.$('').attr({width:image.width,height:image.height})[0]).getContext('2d');isImage&&c.context.drawImage(image,0,0);c.data=(c.imageData=c.context.getImageData(0,0,image.width,image.height)).data;return c;};Ox.documentReady=(function(){var callbacks=[];document.onreadystatechange=window.onload=function(){if(document.readyState=='complete'){callbacks.forEach(function(callback){callback();});document.onreadystatechange=window.onload=null;}};return function(callback){if(document.readyState=='complete'){callback();return true;}else{callbacks.push(callback);return false;}};}());'use strict';Ox.getDateInWeek=function(date,weekday,utc){date=Ox.makeDate(date);var sourceWeekday=Ox.getISODay(date,utc),targetWeekday=Ox.isNumber(weekday)?weekday:Ox.indexOf(Ox.WEEKDAYS,function(v){return v.slice(0,3)==weekday.slice(0,3);})+1;return Ox.setDate(date,Ox.getDate(date,utc)-sourceWeekday+targetWeekday,utc);};Ox.getDayOfTheYear=function(date,utc){date=Ox.makeDate(date);var month=Ox.getMonth(date,utc),year=Ox.getFullYear(date,utc);return Ox.sum(Ox.range(month).map(function(i){return Ox.getDaysInMonth(year,i+1);}))+Ox.getDate(date,utc);};Ox.getDaysInMonth=function(year,month){year=Ox.makeYear(year);month=Ox.isNumber(month)?month:Ox.indexOf(Ox.MONTHS,function(v){return v.slice(0,3)==month.slice(0,3);})+1;return new Date(year,month,0,1).getDate();};Ox.getDaysInYear=function(year,utc){return 365+Ox.isLeapYear(Ox.makeYear(year,utc));};Ox.getFirstDayOfTheYear=function(date,utc){date=Ox.makeDate(date);date=Ox.setMonth(date,0,utc);date=Ox.setDate(date,1,utc);return Ox.getDay(date,utc);};Ox.getISODate=function(date,utc){return Ox.formatDate(Ox.makeDate(date),'%FT%TZ',utc);};Ox.getISODay=function(date,utc){return Ox.getDay(Ox.makeDate(date),utc)||7;};Ox.getISOWeek=function(date,utc){date=Ox.makeDate(date);return Math.floor((Ox.getDayOfTheYear(Ox.setDate(date,Ox.getDate(date,utc)-Ox.getISODay(date,utc)+4,utc),utc)-1)/7)+1;};Ox.getISOYear=function(date,utc){date=Ox.makeDate(date);return Ox.getFullYear(Ox.setDate(date,Ox.getDate(date,utc)-Ox.getISODay(date,utc)+4,utc));};Ox.getTime=function(utc){return+new Date()-(utc?Ox.getTimezoneOffset():0);};Ox.getTimezoneOffset=function(date){return Ox.makeDate(date).getTimezoneOffset()*60000;};Ox.getTimezoneOffsetString=function(date){var offset=Ox.makeDate(date).getTimezoneOffset();return(offset<=0?'+':'-') +Ox.pad(Math.floor(Math.abs(offset)/60),2) +Ox.pad(Math.abs(offset)%60,2);};Ox.getWeek=function(date,utc){date=Ox.makeDate(date);return Math.floor((Ox.getDayOfTheYear(date,utc) +Ox.getFirstDayOfTheYear(date,utc)-1)/7);};Ox.isLeapYear=function(year,utc){year=Ox.makeYear(year,utc);return year%4==0&&(year%100!=0||year%400==0);};Ox.makeDate=function(date){if(Ox.isString(date)&&Ox.isInvalidDate(new Date(date))){if(/^\d{4}$/.test(date)){date+='-01-01';}else if(/^\d{4}-\d{2}$/.test(date)){date+='-01';}else if(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/.test(date)){date=date.replace(/T/,' ').replace(/Z/,'');} date=date.replace(/-/g,'/');} return Ox.isUndefined(date)?new Date():new Date(date);};Ox.makeYear=function(date,utc){return Ox.isDate(date)?Ox.getFullYear(date,utc):parseInt(date,10);};Ox.parseDate=function(string,utc){var date,defaults=[,1,1,0,0,0,0],values=/(-?\d+)-?(\d+)?-?(\d+)? ?(\d+)?:?(\d+)?:?(\d+)?\.?(\d+)?/.exec(string);if(values){values.shift();date=new Date();values=values.map(function(v,i){return v?(i==6?Ox.pad(v,3,'0'):v):defaults[i];});values[1]--;['FullYear','Month','Date','Hours','Minutes','Seconds','Milliseconds'].forEach(function(part,i){Ox['set'+part](date,values[i],utc);});}else{date=null;} return date;};['FullYear','Month','Date','Day','Hours','Minutes','Seconds','Milliseconds'].forEach(function(part){Ox['get'+part]=function(date,utc){return Ox.makeDate(date)['get'+(utc?'UTC':'')+part]();};Ox['set'+part]=function(date,num,utc){return(Ox.isDate(date)?date:new Date(date))['set'+(utc?'UTC':'')+part](num);};});'use strict';Ox.encodeBase26=function(number){var string='';while(number){string=String.fromCharCode(65+(number-1)%26)+string;number=Math.floor((number-1)/26);} return string;};Ox.decodeBase26=function(string){return string.toUpperCase().split('').reverse().reduce(function(p,c,i){return p+(c.charCodeAt(0)-64)*Math.pow(26,i);},0);};Ox.encodeBase32=function(number){return Ox.map(number.toString(32),function(char){return Ox.BASE_32_DIGITS[parseInt(char,32)];});};Ox.decodeBase32=function(string){return parseInt(Ox.map(string.toUpperCase(),function(char){var index=Ox.BASE_32_DIGITS.indexOf(Ox.BASE_32_ALIASES[char]||char);return index==-1?' ':index.toString(32);}),32);};Ox.encodeBase64=function(number){return btoa(Ox.encodeBase256(number)).replace(/=/g,'');};Ox.decodeBase64=function(string){return Ox.decodeBase256(atob(string));};Ox.encodeBase128=function(number){var string='';while(number){string=Ox.char(number&127)+string;number>>=7;} return string;};Ox.decodeBase128=function(string){return string.split('').reverse().reduce(function(p,c,i){return p+(c.charCodeAt(0)<>=8;} return string;};Ox.decodeBase256=function(string){return string.split('').reverse().reduce(function(p,c,i){return p+(c.charCodeAt(0)<>6|192) +String.fromCharCode(code&63|128);}else{string=String.fromCharCode(code>>12|224) +String.fromCharCode(code>>6&63|128) +String.fromCharCode(code&63|128);} return string;});};Ox.decodeUTF8=function(string){var code,i=0,length=string.length,ret='';function error(byte,position){throw new RangeError('UTF-8 codec can\'t decode byte 0x'+byte.toString(16).toUpperCase()+' at position '+position);} while(i=192&&code[0]<240&&i=128&&code[1]<192){if(code[0]<224){ret+=String.fromCharCode((code[0]&31)<<6|code[1]&63);i+=2;}else if(code[2]>=128&&code[2]<192){ret+=String.fromCharCode((code[0]&15)<<12|(code[1]&63)<<6|code[2]&63);i+=3;}else{error(code[2],i+2);}}else{error(code[1],i+1);}}else{error(code[0],i);}} return ret;};'use strict';Ox.formatArea=function(number,decimals){var k=number>=1000000?'k':'';decimals=Ox.isUndefined(decimals)?8:decimals;return Ox.formatNumber((k?number/1000000:number).toPrecision(decimals))+' '+k+'m\u00B2';};Ox.formatCount=function(number,singular,plural){plural=(plural||singular+'s')+(number===2?'{2}':'');return(number===0?Ox._('no'):Ox.formatNumber(number)) +' '+Ox._(number===1?singular:plural);};Ox.formatCurrency=function(number,string,decimals){return string+Ox.formatNumber(number,decimals);};(function(){var format=[['%',function(){return'%{%}';}],['c',function(){return'%D %r';}],['D',function(){return'%m/%d/%y';}],['ED',function(){return'%ES %T';}],['Ed',function(){return'%ES %R';}],['EL',function(){return Ox._('%A, %B %e, %Y');}],['El',function(){return Ox._('%B %e, %Y');}],['EM',function(){return Ox._('%a, %b %e, %Y');}],['Em',function(){return Ox._('%b %e, %Y');}],['ES',function(){return Ox._('%m/%d/%Y');}],['Es',function(){return Ox._('%m/%d/%y');}],['ET',function(){return Ox._('%I:%M:%S %p');}],['Et',function(){return Ox._('%I:%M %p');}],['F',function(){return'%Y-%m-%d';}],['h',function(){return'%b';}],['R',function(){return'%H:%M';}],['r',function(){return'%I:%M:%S %p';}],['T',function(){return'%H:%M:%S';}],['v',function(){return'%e-%b-%Y';}],['\\+',function(){return'%a %b %e %H:%M:%S %Z %Y';}],['A',function(date,utc){return Ox._(Ox.WEEKDAYS[(Ox.getDay(date,utc)+6)%7]);}],['a',function(date,utc){return Ox._(Ox.SHORT_WEEKDAYS[(Ox.getDay(date,utc)+6)%7]);}],['B',function(date,utc){return Ox._(Ox.MONTHS[Ox.getMonth(date,utc)]);}],['b',function(date,utc){return Ox._(Ox.SHORT_MONTHS[Ox.getMonth(date,utc)]);}],['C',function(date,utc){return Math.floor(Ox.getFullYear(date,utc)/100).toString();}],['d',function(date,utc){return Ox.pad(Ox.getDate(date,utc),2);}],['e',function(date,utc){return Ox.pad(Ox.getDate(date,utc),2,' ');}],['G',function(date,utc){return Ox.getISOYear(date,utc);}],['g',function(date,utc){return Ox.getISOYear(date,utc).toString().slice(-2);}],['H',function(date,utc){return Ox.pad(Ox.getHours(date,utc),2);}],['I',function(date,utc){return Ox.pad((Ox.getHours(date,utc)+11)%12+1,2);}],['j',function(date,utc){return Ox.pad(Ox.getDayOfTheYear(date,utc),3);}],['k',function(date,utc){return Ox.pad(Ox.getHours(date,utc),2,' ');}],['l',function(date,utc){return Ox.pad(((Ox.getHours(date,utc)+11)%12+1),2,' ');}],['M',function(date,utc){return Ox.pad(Ox.getMinutes(date,utc),2);}],['m',function(date,utc){return Ox.pad((Ox.getMonth(date,utc)+1),2);}],['p',function(date,utc){return Ox._(Ox.AMPM[Math.floor(Ox.getHours(date,utc)/12)]);}],['Q',function(date,utc){return Math.floor(Ox.getMonth(date,utc)/4)+1;}],['S',function(date,utc){return Ox.pad(Ox.getSeconds(date,utc),2);}],['s',function(date,utc){return Math.floor((+date-(utc?Ox.getTimezoneOffset(date):0))/1000);}],['U',function(date,utc){return Ox.pad(Ox.getWeek(date,utc),2);}],['u',function(date,utc){return Ox.getISODay(date,utc);}],['V',function(date,utc){return Ox.pad(Ox.getISOWeek(date,utc),2);}],['W',function(date,utc){return Ox.pad(Math.floor((Ox.getDayOfTheYear(date,utc) +(Ox.getFirstDayOfTheYear(date,utc)||7)-2)/7),2);}],['w',function(date,utc){return Ox.getDay(date,utc);}],['X',function(date,utc){var y=Ox.getFullYear(date,utc);return Math.abs(y)+' '+Ox._(Ox.BCAD[y<0?0:1]);}],['x',function(date,utc){var y=Ox.getFullYear(date,utc);return Math.abs(y)+(y<1000?' '+Ox._(Ox.BCAD[y<0?0:1]):'');}],['Y',function(date,utc){return Ox.getFullYear(date,utc);}],['y',function(date,utc){return Ox.getFullYear(date,utc).toString().slice(-2);}],['Z',function(date,utc){return utc?'UTC':(date.toString().split('(')[1]||'').replace(')','');}],['z',function(date,utc){return utc?'+0000':Ox.getTimezoneOffsetString(date);}],['n',function(){return'\n';}],['t',function(){return'\t';}],['\\{%\\}',function(){return'%';}]].map(function(value){return[new RegExp('%'+value[0],'g'),value[1]];});Ox.formatDate=function(date,string,utc){if(date===''){return'';} date=Ox.makeDate(date);format.forEach(function(value){string=string.replace(value[0],function(){return value[1](date,utc);});});return string;};}());Ox.formatDateRange=function(start,end,utc){end=end||Ox.formatDate(new Date(),'%Y-%m-%d');var isOneUnit=false,range=[start,end],strings,dates=range.map(function(str){return Ox.parseDate(str,utc);}),parts=range.map(function(str){var parts=Ox.compact(/(-?\d+)-?(\d+)?-?(\d+)? ?(\d+)?:?(\d+)?:?(\d+)?/.exec(str));parts.shift();return parts.map(function(part){return parseInt(part,10);});}),precision=parts.map(function(parts){return parts.length;}),y=parts[0][0]<0?'%X':'%Y',formats=[y,'%B '+y,'%a, %b %e, '+y,'%a, %b %e, '+y+', %H:%M','%a, %b %e, '+y+', %H:%M','%a, %b %e, '+y+', %H:%M:%S',];if(precision[0]==precision[1]){isOneUnit=true;Ox.loop(precision[0],function(i){if((i1?'s':''):'';})).join(' ');};Ox.formatDegrees=function(degrees,mode){var days=0,seconds=Math.round(Math.abs(degrees)*3600),sign=degrees<0?'-':'',array=Ox.formatDuration(seconds).split(':');if(array.length==4){days=parseInt(array.shift(),10);} array[0]=days*24+parseInt(array[0],10);return(!mode?sign:'') +array[0]+'°'+array[1]+"'"+array[2]+'"' +(mode=='lat'?(degrees<0?'S':'N'):mode=='lng'?(degrees<0?'W':'E'):'');};Ox.formatDimensions=Ox.formatResolution=function(array,string){return array.map(function(value){return Ox.formatNumber(value);}).join(' × ')+(string?' '+string:'');};Ox.formatDuration=function(seconds){var last=Ox.last(arguments),format=last=='short'||last=='long'?last:'none',decimals=Ox.isNumber(arguments[1])?arguments[1]:0,seconds=Ox.round(Math.abs(seconds),decimals),values=[Math.floor(seconds/31536000),Math.floor(seconds%31536000/86400),Math.floor(seconds%86400/3600),Math.floor(seconds%3600/60),Ox.formatNumber(seconds%60,decimals)],string=format=='short'?['y','d','h','m','s']:format=='long'?['year','day','hour','minute','second']:[],pad=[values[0].toString().length,values[0]?3:values[1].toString().length,2,2,decimals?decimals+3:2];while(!values[0]&&values.length>(format=='none'?3:1)){values.shift();string.shift();pad.shift();} return Ox.filter(Ox.map(values,function(value,index){var ret;if(format=='none'){ret=Ox.pad(value,'left',pad[index],'0');}else if(Ox.isNumber(value)?value:parseFloat(value)){ret=value+(format=='long'?' ':'')+Ox._(string[index]+(format=='long'?(value==1?'':value==2?'s{2}':'s'):''));}else{ret='';} return ret;})).join(format=='none'?':':' ');};Ox.formatISBN=function(isbn,length,dashes){var ret='';function getCheckDigit(isbn){var mod=isbn.length==10?11:10 return(Ox.mod(mod-Ox.sum(isbn.slice(0,-1).split('').map(function(digit,index){return isbn.length==10?parseInt(digit)*(10-index):parseInt(digit)*(index%2==0?1:3);})),mod)+'').replace('10','X');} isbn=isbn.toUpperCase().replace(/[^\dX]/g,'');if(isbn.length==10){isbn=isbn.slice(0,-1).replace(/\D/g,'')+isbn.slice(-1);} if((isbn.length==10||isbn.length==13)&&isbn.slice(-1)==getCheckDigit(isbn)){if(isbn.length==length){ret=isbn}else if(isbn.length==10||isbn.slice(0,3)=='978'){isbn=isbn.length==10?'978'+isbn:isbn.slice(3);ret=isbn.slice(0,-1)+getCheckDigit(isbn);}} return dashes?[ret.slice(-13,-10),ret.slice(-10,-9),ret.slice(-9,-6),ret.slice(-6,-1),ret.slice(-1)].join('-').replace(/^-+/,''):ret;};Ox.formatNumber=function(number,decimals){var array=[],abs=Math.abs(number),split=abs.toFixed(decimals).split('.');while(split[0]){array.unshift(split[0].slice(-3));split[0]=split[0].slice(0,-3);} split[0]=array.join(Ox._(','));return(number<0?'-':'')+split.join(Ox._('.'));};Ox.formatOrdinal=function(number){var string=Ox.formatNumber(number),length=string.length,last=string[length-1],ten=length>1&&string[length-2]=='1',twenty=length>1&&!ten;if(last=='1'&&!ten){string+=Ox._('st'+(twenty?'{21}':''));}else if(last=='2'&&!ten){string+=Ox._('nd'+(twenty?'{22}':''));}else if(last=='3'&&!ten){string+=Ox._('rd'+(twenty?'{23}':''));}else{string+=Ox._('th'+(Ox.contains('123',last)&&ten?'{1'+last+'}':''));} return string;};Ox.formatPercent=function(number,total,decimals){return Ox.formatNumber(number/total*100,decimals)+Ox._('%');};Ox.formatRoman=function(number){var string='';Ox.forEach({M:1000,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1},function(value,roman){while(number>=value){string+=roman;number-=value;}});return string;};Ox.formatSRT=function(subtitles){return'\ufeff'+Ox.sortBy(subtitles,['in','out']).map(function(subtitle,index){return[index+1,['in','out'].map(function(key){return Ox.formatDuration(subtitle[key],3).replace('.',',');}).join(' --> '),subtitle['text']].join('\r\n')}).join('\r\n\r\n')+'\r\n\r\n';};Ox.formatString=function(string,collection,keepUnmatched){return string.replace(/\{([^}]+)\}/g,function(string,match){var key,keys=match.replace(/\\\./g,'\n').split('.').map(function(key){return key.replace(/\n/g,'.');}),value=collection||{};while(keys.length){key=keys.shift();if(value[key]){value=value[key];}else{value=null;break;}} return value!==null?value:keepUnmatched?'{'+match+'}':'';});};Ox.formatUnit=function(number,string,decimals){return Ox.formatNumber(number,decimals) +(/^[:%]/.test(string)?'':' ')+string;};Ox.formatValue=function(number,string,bin){var base=bin?1024:1000,length=Ox.PREFIXES.length,ret;Ox.forEach(Ox.PREFIXES,function(prefix,index){if(numberpointB.lng;};Ox.getArea=function(pointA,pointB){if(Ox.crossesDateline(pointA,pointB)){pointB.lng+=360;} pointA=rad(pointA);pointB=rad(pointB);return Math.pow(Ox.EARTH_RADIUS,2)*Math.abs(Math.sin(pointA.lat)-Math.sin(pointB.lat))*Math.abs(pointA.lng-pointB.lng);};Ox.getAverageBearing=function(bearingA,bearingB){return Ox.mod((bearingA+bearingB)/2+(Math.abs(bearingA-bearingB)>180?180:0),360);};Ox.getBearing=function(pointA,pointB){pointA=rad(pointA);pointB=rad(pointB);var x=Math.cos(pointA.lat)*Math.sin(pointB.lat) -Math.sin(pointA.lat)*Math.cos(pointB.lat)*Math.cos(pointB.lng-pointA.lng),y=Math.sin(pointB.lng-pointA.lng)*Math.cos(pointB.lat);return(Ox.deg(Math.atan2(y,x))+360)%360;};Ox.getBearingDifference=function(bearingA,bearingB){var difference=Math.abs(bearingA-bearingB);return difference>180?360-difference:difference;};Ox.getCenter=function(pointA,pointB){pointA=rad(pointA);pointB=rad(pointB);var x=Math.cos(pointB.lat)*Math.cos(pointB.lng-pointA.lng),y=Math.cos(pointB.lat)*Math.sin(pointB.lng-pointA.lng),d=Math.sqrt(Math.pow(Math.cos(pointA.lat)+x,2)+Math.pow(y,2)),lat=Math.atan2(Math.sin(pointA.lat)+Math.sin(pointB.lat),d),lng=pointA.lng+Math.atan2(y,Math.cos(pointA.lat)+x);return deg({lat:lat,lng:lng});};Ox.getCircle=function(center,radius,precision){return Ox.range(0,360,360/Math.pow(2,precision)).map(function(bearing){return Ox.getPoint(center,radius,bearing);});};Ox.getClosestBearing=function(bearing,bearings){var differences=bearings.map(function(bearing_){return getBearingDifference(bearing,bearing_);});return bearings[differences.indexOf(Ox.min(differences))];};Ox.getDegreesPerMeter=function(lat){return 360/Ox.EARTH_CIRCUMFERENCE/Math.cos(lat*Math.PI/180);};Ox.getDistance=function(pointA,pointB){pointA=rad(pointA);pointB=rad(pointB);return Math.acos(Math.sin(pointA.lat)*Math.sin(pointB.lat) +Math.cos(pointA.lat)*Math.cos(pointB.lat)*Math.cos(pointB.lng-pointA.lng))*Ox.EARTH_RADIUS;};Ox.getLatLngByXY=function(xy){function getValue(value){return(value-0.5)*2*Math.PI;} return{lat:-Ox.deg(Math.atan(Ox.sinh(getValue(xy.y)))),lng:Ox.deg(getValue(xy.x))};};Ox.getLine=function(pointA,pointB,precision){var line=[pointA,pointB],points;while(precision>0){points=[line[0]];Ox.loop(line.length-1,function(i){points.push(Ox.getCenter(line[i],line[i+1]),line[i+1]);});line=points;precision--;} return line;};Ox.getMetersPerDegree=function(lat){return Math.cos(lat*Math.PI/180)*Ox.EARTH_CIRCUMFERENCE/360;};Ox.getPoint=function(point,distance,bearing){var pointB={};point=rad(point);distance/=Ox.EARTH_RADIUS;bearing=Ox.rad(bearing);pointB.lat=Math.asin(Math.sin(point.lat)*Math.cos(distance) +Math.cos(point.lat)*Math.sin(distance)*Math.cos(bearing));pointB.lng=point.lng+Math.atan2(Math.sin(bearing)*Math.sin(distance)*Math.cos(point.lat),Math.cos(distance)-Math.sin(point.lat)*Math.sin(pointB.lat));return deg(pointB);};Ox.getXYByLatLng=function(latlng){function getValue(value){return value/(2*Math.PI)+0.5;} return{x:getValue(Ox.rad(latlng.lng)),y:getValue(Ox.asinh(Math.tan(Ox.rad(-latlng.lat))))};};Ox.isPolar=function(point){return point.latOx.MAX_LATITUDE;};Ox.containsArea=function(areaA,areaB){var areas=[areaA,areaB].map(splitArea),ret;function contains(areaA,areaB){return areaA.sw.lat<=areaB.sw.lat&&areaA.sw.lng<=areaB.sw.lng&&areaA.ne.lat>=areaB.ne.lat&&areaA.ne.lng>=areaB.ne.lng;} Ox.forEach(areas[1],function(area1){Ox.forEach(areas[0],function(area0){ret=contains(area0,area1);return!ret;});return ret;});return ret;};Ox.intersectAreas=function(areas){var intersections,ret;areas=areas.map(splitArea);ret=areas[0];function intersect(areaA,areaB){return areaA.sw.lat>areaB.ne.lat||areaA.sw.lng>areaB.ne.lng||areaA.ne.latret.ne.lat){ret.ne.lat=area.ne.lat;} index=isContainedInGap(area);if(index>-1){gaps.push({sw:gaps[index].sw,ne:{lat:90,lng:area.sw.lng}});gaps.push({sw:{lat:-90,lng:area.ne.lng},ne:gaps[index].ne});gaps.splice(index,1);}else{indices=containsGaps(area);Ox.reverse(indices).forEach(function(index){gaps.splice(index,1);});intersections=intersectsWithGaps(area);Ox.forEach(intersections,function(intersection,index){gaps[index]={sw:{lat:-90,lng:gaps[index].sw.lng==intersection.sw.lng?intersection.ne.lng:gaps[index].sw.lng},ne:{lat:90,lng:gaps[index].ne.lng==intersection.ne.lng?intersection.sw.lng:gaps[index].ne.lng}};});}});if(gaps.length==0){ret.sw.lng=-180;ret.ne.lng=180;}else{gaps.sort(function(a,b){return(b.ne.lng +(Ox.crossesDateline(b.sw,b.ne)?360:0) -b.sw.lng)-(a.ne.lng +(Ox.crossesDateline(a.sw,a.ne)?360:0) -a.sw.lng);});ret.sw.lng=gaps[0].ne.lng;ret.ne.lng=gaps[0].sw.lng;} return ret;};}());'use strict';(function(){var defaultTags=[{'name':'b'},{'name':'bdi'},{'name':'code'},{'name':'em'},{'name':'i'},{'name':'q'},{'name':'s'},{'name':'span'},{'name':'strong'},{'name':'sub'},{'name':'sup'},{'name':'u'},{'name':'blockquote'},{'name':'cite'},{'name':'div','optional':['style'],'validate':{'style':/^direction: rtl$/}},{'name':'h1'},{'name':'h2'},{'name':'h3'},{'name':'h4'},{'name':'h5'},{'name':'h6'},{'name':'p'},{'name':'pre'},{'name':'li'},{'name':'ol'},{'name':'ul'},{'name':'dl'},{'name':'dt'},{'name':'dd'},{'name':'table'},{'name':'tbody'},{'name':'td'},{'name':'tfoot'},{'name':'th'},{'name':'thead'},{'name':'tr'},{'name':'[]'},{'name':'a','required':['href'],'optional':['target'],'validate':{'href':/^((https?:\/\/|\/|mailto:).*?)/,'target':/^_blank$/}},{'name':'br'},{'name':'iframe','optional':['width','height'],'required':['src'],'validate':{'width':/^\d+$/,'height':/^\d+$/,'src':/^((https?:\/\/|\/).*?)/}},{'name':'img','optional':['width','height'],'required':['src'],'validate':{'width':/^\d+$/,'height':/^\d+$/,'src':/^((https?:\/\/|\/).*?)/},},{'name':'figure'},{'name':'figcaption'}],htmlEntities={'"':'"','&':'&',"'":''','<':'<','>':'>'},regexp={entity:/&[^\s]+?;/g,html:/[<&]/,tag:new RegExp('<\\/?('+['a','b','br','code','i','s','span','u'].join('|')+')\\/?>','gi')},salt=Ox.range(2).map(function(){return Ox.range(16).map(function(){return Ox.char(65+Ox.random(26));}).join('');});function addLinks(string,obfuscate){return string.replace(/\b((https?:\/\/|www\.).+?)([.,:;!?)\]]*?(\s|$))/gi,function(match,url,prefix,end){prefix=prefix.toLowerCase()=='www.'?'http://':'';return Ox.formatString('{url}{end}',{end:end,prefix:prefix,url:url});}).replace(/\b([0-9A-Z.+\-_]+@(?:[0-9A-Z\-]+\.)+[A-Z]{2,6})\b/gi,obfuscate?function(match,mail){return Ox.encodeEmailAddress(mail);}:'$1');} function decodeHTMLEntities(string){return string.replace(new RegExp('('+Ox.values(htmlEntities).join('|')+')','g'),function(match){return Ox.keyOf(htmlEntities,match);}).replace(/&#([0-9A-FX]+);/gi,function(match,code){return Ox.char(/^X/i.test(code)?parseInt(code.slice(1),16):parseInt(code,10));});}function splitHTMLTags(string,ignore){var isTag=false,ret=[''];ignore=ignore||[];Ox.forEach(string,function(char,i){if(!isTag&&char=='<'&&ignore.indexOf(i)==-1){isTag=true;ret.push('');} ret[ret.length-1]+=char;if(isTag&&char=='>'){isTag=false;ret.push('');}});return ret;} Ox.addLinks=function(string,isHTML){var isLink=false;return isHTML?splitHTMLTags(string).map(function(string,i){var isTag=i%2;if(isTag){if(/^'+parts[1]+'';};Ox.encodeHTMLEntities=function(string,encodeAll){return Ox.map(String(string),function(char){var code=char.charCodeAt(0);if(code<128){char=char in htmlEntities?htmlEntities[char]:char;}else if(encodeAll){char='&#x' +Ox.pad(code.toString(16).toUpperCase(),'left',4,'0') +';';} return char;});};Ox.decodeHTMLEntities=function(string,decodeAll){return decodeAll?Ox.decodeHTMLEntities(Ox.normalizeHTML(string)):decodeHTMLEntities(string);};Ox.highlight=function(string,query,classname,isHTML){if(!query){return string;} var cursor=0,entities=[],matches=[],offset=0,re=Ox.isRegExp(query)?query:new RegExp(Ox.escapeRegExp(query),'gi'),span=['',''],tags=[];function insert(array){array.forEach(function(v){string=Ox.splice(string,v.position,v.length,v.value);matches.forEach(function(match){if(v.position').html(html).html():html;};Ox.parseMarkdown=function(string){var array=[];return string.replace(/\r\n/g,'\n').replace(/\r/g,'\n').replace(/(?:^|\n)```(.*)\n([^`]+)\n```/g,function(match,classname,code){array.push('
'
+code.trim().replace(/
');return salt.join(array.length-1);}).replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(match,prev,backticks,code,next){array.push(prev+'' +code.trim().replace(/');return salt.join(array.length-1);}).replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,'$2').replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,'$2').replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,function(match,all,text,id,url,rest,quote,title){return''+text+'';}).replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,'$1').replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi,function(match,mail){return Ox.encodeEmailAddress(mail);}).replace(/\n\n/g,'

').replace(new RegExp(salt.join('(\\d+)'),'g'),function(match,index){return array[parseInt(index)];});};Ox.sanitizeHTML=function(html,tags,globalAttributes){tags=tags||defaultTags;globalAttributes=globalAttributes||[];var escaped={},level=0,matches=[],selfClosingTags=['img','br'],validAttributes={},requiredAttributes={},validate={},validTags=tags.map(function(tag){validAttributes[tag.name]=globalAttributes.concat(tag.required||[]).concat(tag.optional||[]);requiredAttributes[tag.name]=tag.required||[];validate[tag.name]=tag.validate||{};return tag.name;});if(Ox.contains(validTags,'[]')){html=html.replace(/\[((\/|https?:\/\/|mailto:).+?) (.+?)\]/gi,'$3');validTags=validTags.filter(function(tag){return tag!='[]';});} html=splitHTMLTags(html).map(function(string,i){var attrs={},attrMatch,attrRegexp=/([^=\ ]+)="([^"]+)"/g,attrString,isClosing,isTag=i%2,isValid=true,tag,tagMatch,tagRegexp=/<(\/)?([^\ \/]+)(.*?)(\/)?>/g;if(isTag){tagMatch=tagRegexp.exec(string);if(tagMatch){isClosing=!Ox.isUndefined(tagMatch[1]);tag=tagMatch[2];attrString=tagMatch[3].trim();while(attrMatch=attrRegexp.exec(attrString)){if(validAttributes[tag]&&Ox.contains(validAttributes[tag],attrMatch[1])){attrs[attrMatch[1]]=attrMatch[2];}} if(!isClosing&&!Ox.contains(selfClosingTags,tag)){level++;} if(!Ox.contains(validTags,tag)||(attrString.length&&Ox.isEmpty(attrs))){isValid=false;}else if(!isClosing&&requiredAttributes[tag]){requiredAttributes[tag].forEach(function(attr){if(Ox.isUndefined(attrs[attr])){isValid=false;}});} if(isValid&&!Ox.isEmpty(attrs)){Ox.forEach(attrs,function(value,key){if(!Ox.isUndefined(validate[tag][key])&&!validate[tag][key].exec(value)){isValid=false;return false;}});} if(isValid&&isClosing){isValid=!escaped[level];}else{escaped[level]=!isValid;} if(isClosing){level--;} if(isValid){return'<' +(isClosing?'/':'') +tag +(!isClosing&&!Ox.isEmpty(attrs)?' '+Ox.values(Ox.map(attrs,function(value,key){return key+'="'+value+'"';})).join(' '):'') +'>';}}} return Ox.encodeHTMLEntities(Ox.decodeHTMLEntities(string));}).join('');html=Ox.addLinks(html,true);html=html.replace(/\n\n/g,'

');return Ox.normalizeHTML(html);};Ox.stripTags=function(string){return string.replace(/<.*?>/g,'');};}());'use strict';Ox.oshash=function(file,callback){var hash=fromString(file.size.toString());read(0);function add(A,B){var a,b,c,d;d=A[3]+B[3];c=A[2]+B[2]+(d>>16);d&=0xffff;b=A[1]+B[1]+(c>>16);c&=0xffff;a=A[0]+B[0]+(b>>16);b&=0xffff;a&=0xffff;return[a,b,c,d];} function fromData(s,offset){offset=offset||0;return[s.charCodeAt(offset+6)+(s.charCodeAt(offset+7)<<8),s.charCodeAt(offset+4)+(s.charCodeAt(offset+5)<<8),s.charCodeAt(offset+2)+(s.charCodeAt(offset+3)<<8),s.charCodeAt(offset+0)+(s.charCodeAt(offset+1)<<8)];} function fromString(str){var base=10,blen=1,i,num,pos,r=[0,0,0,0];for(pos=0;pos>>=16;} if(num){blen++;}}while(num);} return r;} function hex(h){return(Ox.pad(h[0].toString(16),'left',4,'0') +Ox.pad(h[1].toString(16),'left',4,'0') +Ox.pad(h[2].toString(16),'left',4,'0') +Ox.pad(h[3].toString(16),'left',4,'0')).toLowerCase();} function read(offset,last){var blob,block=65536,length=8,reader=new FileReader();reader.onload=function(data){var s=data.target.result,s_length=s.length-length,i;for(i=0;i<=s_length;i+=length){hash=add(hash,fromData(s,i));} if(file.size>>(32-s));return t4;};function cvt_hex(val){var str="";var i;var v;for(i=7;i>=0;i--){v=(val>>>(i*4))&0x0f;str+=v.toString(16);} return str;};var blockstart;var i,j;var W=new Array(80);var H0=0x67452301;var H1=0xEFCDAB89;var H2=0x98BADCFE;var H3=0x10325476;var H4=0xC3D2E1F0;var A,B,C,D,E;var temp;msg=Ox.encodeUTF8(msg);var msg_len=msg.length;var word_array=new Array();for(i=0;i>>29);word_array.push((msg_len<<3)&0x0ffffffff);for(blockstart=0;blockstart\s+(.+?)$/,multiline:/^\/\*\@.*?\n([\w\W]+)\n.*?\@?\*\/$/,script:/\n(\s*