diff --git a/.gitignore b/.gitignore index fd0ab8d..0291013 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ -.idea node_modules build/ .*.swp -.DS_Store +.env \ No newline at end of file diff --git a/Procfile b/Procfile deleted file mode 100644 index 063b78f..0000000 --- a/Procfile +++ /dev/null @@ -1 +0,0 @@ -web: npm start diff --git a/client/amcharts/amcharts.js b/client/amcharts/amcharts.js deleted file mode 100755 index 98755bd..0000000 --- a/client/amcharts/amcharts.js +++ /dev/null @@ -1,377 +0,0 @@ -if(!AmCharts)var AmCharts={themes:{},maps:{},inheriting:{},charts:[],onReadyArray:[],useUTC:!1,updateRate:40,uid:0,lang:{},translations:{},mapTranslations:{}}; -AmCharts.Class=function(a){var b=function(){arguments[0]!==AmCharts.inheriting&&(this.events={},this.construct.apply(this,arguments))};a.inherits?(b.prototype=new a.inherits(AmCharts.inheriting),b.base=a.inherits.prototype,delete a.inherits):(b.prototype.createEvents=function(){for(var a=0,b=arguments.length;aAmCharts.IEversion&&0");if(10h){l.remove();for(var l=[],p=0;-1<(index=b.indexOf(" ",p));)l.push(index),p=index+1;for(var q=Math.round(b.length/2),r=1E3,s,p=0;pc&&(a=c);return a};AmCharts.isDefined=function(a){return void 0===a?!1:!0};AmCharts.stripNumbers=function(a){return a.replace(/[0-9]+/g,"")};AmCharts.roundTo=function(a,b){if(0>b)return a;var c=Math.pow(10,b);return Math.round(a*c)/c}; -AmCharts.toFixed=function(a,b){var c=String(Math.round(a*Math.pow(10,b)));if(0=g[b].contains){var k=a-Math.floor(a/g[b].contains)*g[b].contains;"ss"==b&&(k=AmCharts.formatNumber(k,f),1==k.split(h)[0].length&&(k="0"+k));("mm"==b||"hh"==b)&&10>k&&(k="0"+k);c=k+""+d[b]+""+c;a=Math.floor(a/g[b].contains);b=g[b].nextInterval;return AmCharts.formatDuration(a,b,c,d,e,f)}"ss"==b&&(a=AmCharts.formatNumber(a,f),1==a.split(h)[0].length&&(a="0"+a));("mm"==b||"hh"==b)&&10>a&&(a="0"+a);c=a+""+ -d[b]+""+c;if(g[e].count>g[b].count)for(a=g[b].count;aa?"-":"";a=Math.abs(a);var h=String(a),k=!1;-1!=h.indexOf("e")&&(k=!0);0<=c&&!k&&(h=AmCharts.toFixed(a,c));var l="";if(k)l=h;else{var h=h.split("."),k=String(h[0]),m;for(m=k.length;0<=m;m-=3)l=m!=k.length?0!==m?k.substring(m-3,m)+b+l:k.substring(m-3,m)+l:k.substring(m-3,m);void 0!==h[1]&&(l=l+f+h[1]);void 0!==c&&0=c.x-5&&a<=c.x+c.width+5&&b>=c.y-5&&b<=c.y+c.height+5?!0:!1};AmCharts.isPercents=function(a){if(-1!=String(a).indexOf("%"))return!0}; -AmCharts.findPosX=function(a){var b=a,c=a.offsetLeft;if(a.offsetParent){for(;a=a.offsetParent;)c+=a.offsetLeft;for(;(b=b.parentNode)&&b!=document.body;)c-=b.scrollLeft||0}return c};AmCharts.findPosY=function(a){var b=a,c=a.offsetTop;if(a.offsetParent){for(;a=a.offsetParent;)c+=a.offsetTop;for(;(b=b.parentNode)&&b!=document.body;)c-=b.scrollTop||0}return c};AmCharts.findIfFixed=function(a){if(a.offsetParent)for(;a=a.offsetParent;)if("fixed"==AmCharts.getStyle(a,"position"))return!0;return!1}; -AmCharts.findIfAuto=function(a){return a.style&&"auto"==AmCharts.getStyle(a,"overflow")?!0:a.parentNode?AmCharts.findIfAuto(a.parentNode):!1};AmCharts.findScrollLeft=function(a,b){a.scrollLeft&&(b+=a.scrollLeft);return a.parentNode?AmCharts.findScrollLeft(a.parentNode,b):b};AmCharts.findScrollTop=function(a,b){a.scrollTop&&(b+=a.scrollTop);return a.parentNode?AmCharts.findScrollTop(a.parentNode,b):b}; -AmCharts.formatValue=function(a,b,c,d,e,f,g,h){if(b){void 0===e&&(e="");var k;for(k=0;ka&&(g="-");a=Math.abs(a);if(1=b[h].number&&(k=a/b[h].number,l=Number(d.precision),1>l&&(l=1),c=AmCharts.roundTo(k,l),l=AmCharts.formatNumber(c,{precision:-1,decimalSeparator:d.decimalSeparator,thousandsSeparator:d.thousandsSeparator}),!e||k==c)){f=g+""+l+""+b[h].prefix;break}}else for(h=0;h"==a&&(a="easeOutSine");"<"==a&&(a="easeInSine");"elastic"==a&&(a="easeOutElastic");return a}; -AmCharts.getObjById=function(a,b){var c,d;for(d=0;d"));return a};AmCharts.fixBrakes=function(a){if(AmCharts.isModern){var b=RegExp("
","g");a&&(a=a.replace(b,"\n"))}else a=AmCharts.fixNewLines(a);return a}; -AmCharts.deleteObject=function(a,b){if(a){if(void 0===b||null===b)b=20;if(0!==b)if("[object Array]"===Object.prototype.toString.call(a))for(var c=0;ca&&(a=3)):a=this.width/this.minHorizontalGap, -this.gridCountR=Math.max(a,1)):this.gridCountR=this.gridCount;this.axisWidth=this.axisLine.axisWidth;this.addTitle()},setOrientation:function(a){this.orientation=a?"H":"V"},addTitle:function(){var a=this.title;if(a){var b=this.chart,c=this.titleColor;void 0===c&&(c=b.color);var d=this.titleFontSize;isNaN(d)&&(d=b.fontSize+1);this.titleLabel=AmCharts.text(b.container,a,c,b.fontFamily,d,this.titleAlign,this.titleBold)}},positionTitle:function(){var a=this.titleLabel;if(a){var b,c,d=this.labelsSet,e= -{};0=this.gridCountR&&(this.gridCountR=1);this.totals=[];this.data=this.chart.chartData;var a=this.chart;"xy"!=a.type&&(this.stackGraphs("smoothedLine"),this.stackGraphs("line"),this.stackGraphs("column"),this.stackGraphs("step"));this.recalculateToPercents&&this.recalculate();this.synchronizationMultiplier&& -this.synchronizeWith?(AmCharts.isString(this.synchronizeWith)&&(this.synchronizeWith=a.getValueAxisById(this.synchronizeWith)),this.synchronizeWith&&(this.synchronizeWithAxis(this.synchronizeWith),this.foundGraphs=!0)):(this.foundGraphs=!1,this.getMinMax())},draw:function(){AmCharts.ValueAxis.base.draw.call(this);var a=this.chart,b=this.set;"duration"==this.type&&(this.duration="ss");!0===this.dataChanged&&(this.updateData(),this.dataChanged=!1);if(this.logarithmic&&(0>=this.getMin(0,this.data.length- -1)||0>=this.minimum))this.fire("logarithmicAxisFailed",{type:"logarithmicAxisFailed",chart:a});else{this.grid0=null;var c,d,e=a.dx,f=a.dy,g=!1,h=this.logarithmic;if(isNaN(this.min)||isNaN(this.max)||!this.foundGraphs||Infinity==this.min||-Infinity==this.max)g=!0;else{var k=this.labelFrequency,l=this.showFirstLabel,m=this.showLastLabel,n=1,p=0,q=Math.round((this.max-this.min)/this.step)+1,r;!0===h?(r=Math.log(this.max)*Math.LOG10E-Math.log(this.minReal)*Math.LOG10E,this.stepWidth=this.axisWidth/r, -r>this.logGridLimit&&(q=Math.ceil(Math.log(this.max)*Math.LOG10E)+1,p=Math.round(Math.log(this.minReal)*Math.LOG10E),q>this.gridCountR&&(n=Math.ceil(q/this.gridCountR)))):this.stepWidth=this.axisWidth/(this.max-this.min);var s=0;1>this.step&&-1this.maxDecCount&&(s=this.maxDecCount);var v=this.precision;isNaN(v)||(s=v);this.max=AmCharts.roundTo(this.max,this.maxDecCount);this.min=AmCharts.roundTo(this.min,this.maxDecCount); -var w={};w.precision=s;w.decimalSeparator=a.nf.decimalSeparator;w.thousandsSeparator=a.nf.thousandsSeparator;this.numberFormatter=w;var t,u=this.guides,y=u.length;if(05*this.min&&(p-=this.min),p=AmCharts.roundTo(p,this.maxDecCount+1),!this.integersOnly||Math.round(p)==p)if(isNaN(v)||Number(AmCharts.toFixed(p,v))==p){!0===h&&(0===p&&(p=this.minReal),r>this.logGridLimit&&(p=Math.pow(10,d)),u=-1!=String(p).indexOf("e")?!0:!1);this.useScientificNotation&&(u=!0);this.usePrefixes&&(u=!1);u?(t=-1==String(p).indexOf("e")?p.toExponential(15):String(p),c=t.split("e"),t=Number(c[0]),c=Number(c[1]),t=AmCharts.roundTo(t,14),10==t&&(t=1,c+= -1),t=t+"e"+c,0===p&&(t="0"),1==p&&(t="1")):(h&&(t=String(p).split("."),t[1]?(w.precision=t[1].length,0>d&&(w.precision=Math.abs(d))):w.precision=-1),t=this.usePrefixes?AmCharts.addPrefix(p,a.prefixesOfBigNumbers,a.prefixesOfSmallNumbers,w,!0):AmCharts.formatNumber(p,w,w.precision));this.duration&&(t=AmCharts.formatDuration(p,this.duration,"",this.durationUnits,this.maxInterval,w));this.recalculateToPercents?t+="%":(c=this.unit)&&(t="left"==this.unitPosition?c+t:t+c);Math.round(d/k)!=d/k&&(t=void 0); -if(0===d&&!l||d==q-1&&!m)t=" ";c=this.getCoordinate(p);this.labelFunction&&(t=this.labelFunction(p,t,this).toString());t=new this.axisItemRenderer(this,c,t,void 0,void 0,void 0,void 0,this.boldLabels);this.pushAxisItem(t);if(p==this.baseValue&&"radar"!=a.type){var F,H,z=this.viW,A=this.viH;t=this.viX;E=this.viY;"H"==this.orientation?0<=c&&c<=z+1&&(F=[c,c,c+e],H=[A,0,f]):0<=c&&c<=A+1&&(F=[0,z,z+e],H=[c,c,c+f]);F&&(c=AmCharts.fitToBounds(2*this.gridAlpha,0,1),c=AmCharts.line(a.container,F,H,this.gridColor, -c,1,this.dashLength),c.translate(t,E),this.grid0=c,a.axesSet.push(c),c.toBack())}if(!isNaN(I)&&0this.baseValue&&this.max>this.baseValue&&(d=this.min);this.minb&&c.shift();for(var d=Math.floor(Math.log(Math.abs(a))* -Math.LOG10E),e=0;ea){if(g=Math.pow(10,-g)*f,g==Math.round(g))return f}else if(f==Math.round(f))return f}},stackGraphs:function(a){var b=this.stackType;"stacked"==b&&(b="regular");"line"==b&&(b="none");"100% stacked"==b&&(b="100%");this.stackType=b;var c=[],d=[],e=[],f=[],g,h=this.chart.graphs,k,l,m,n,p=this.baseValue,q=!1;if("line"==a||"step"==a||"smoothedLine"==a)q=!0;if(q&&("regular"==b||"100%"== -b))for(n=0;ng?(l.values.close=g,isNaN(d[k])?l.values.open=p:(l.values.close+=d[k],l.values.open=d[k]),d[k]=l.values.close): -(l.values.close=g,isNaN(e[k])?l.values.open=p:(l.values.close+=e[k],l.values.open=e[k]),e[k]=l.values.close)))}}for(k=this.start;k<=this.end;k++)for(n=0;n -c?(l.values.close=AmCharts.fitToBounds(c+d[k],-100,100),l.values.open=d[k],d[k]=l.values.close):(l.values.close=AmCharts.fitToBounds(c+e[k],-100,100),l.values.open=e[k],e[k]=l.values.close)))))},recalculate:function(){var a=this.chart,b=a.graphs,c;for(c=0;cn&&g++}if(l=a.recalculateFromDate)a.dataDateFormat&&(l=AmCharts.stringToDate(l,a.dataDateFormat)),g=a.getClosestIndex(a.chartData,"time",l.getTime(),!0,0,a.chartData.length),h=a.chartData.length-1;for(l=g;l<=h&&(g=this.data[l].axes[this.id].graphs[d.id], -f=g.values[e],isNaN(f));l++);this.recBaseValue=f;for(e=k;e<=h;e++){g=this.data[e].axes[this.id].graphs[d.id];g.percents={};var k=g.values,p;for(p in k)g.percents[p]="percents"!=p?k[p]/f*100-100:k[p]}}}},getMinMax:function(){var a=!1,b=this.chart,c=b.graphs,d;for(d=0;dthis.max&&(this.max=c.toValue),c.value>this.max&&(this.max=c.value);isNaN(this.minimum)||(this.min=this.minimum);isNaN(this.maximum)||(this.max=this.maximum); -this.min>this.max&&(a=this.max,this.max=this.min,this.min=a);isNaN(this.minTemp)||(this.min=this.minTemp);isNaN(this.maxTemp)||(this.max=this.maxTemp);this.minReal=this.min;this.maxReal=this.max;0===this.min&&0===this.max&&(this.max=9);this.min>this.max&&(this.min=this.max-1);a=this.min;b=this.max;c=this.max-this.min;d=0===c?Math.pow(10,Math.floor(Math.log(Math.abs(this.max))*Math.LOG10E))/10:Math.pow(10,Math.floor(Math.log(Math.abs(c))*Math.LOG10E))/10;isNaN(this.maximum)&&isNaN(this.maxTemp)&&(this.max= -Math.ceil(this.max/d)*d+d);isNaN(this.minimum)&&isNaN(this.minTemp)&&(this.min=Math.floor(this.min/d)*d-d);0>this.min&&0<=a&&(this.min=0);0=b&&(this.max=0);"100%"==this.stackType&&(this.min=0>this.min?-100:0,this.max=0>this.max?0:100);c=this.max-this.min;d=Math.pow(10,Math.floor(Math.log(Math.abs(c))*Math.LOG10E))/10;this.step=Math.ceil(c/this.gridCountR/d)*d;c=Math.pow(10,Math.floor(Math.log(Math.abs(this.step))*Math.LOG10E));c=this.fixStepE(c);d=Math.ceil(this.step/c);5= -d&&2c?(this.maxDecCount=Math.abs(Math.log(Math.abs(c))*Math.LOG10E),this.maxDecCount=Math.round(this.maxDecCount),this.step=AmCharts.roundTo(this.step,this.maxDecCount+1)):this.maxDecCount=0;this.min=this.step*Math.floor(this.min/this.step);this.max=this.step*Math.ceil(this.max/this.step);0>this.min&&0<=a&&(this.min=0);0=b&&(this.max=0);1b?Math.abs(b)-1:Math.abs(b);var e;for(e=0;eb?Number("0."+c+String(a)):Number(String(a)+c)},getMin:function(a,b){var c,d;for(d=a;d<=b;d++){var e=this.data[d].axes[this.id].graphs,f;for(f in e)if(e.hasOwnProperty(f)){var g= -this.chart.getGraphById(f);if(g.includeInMinMax&&(!g.hidden||this.includeHidden)){isNaN(c)&&(c=Infinity);this.foundGraphs=!0;g=e[f].values;this.recalculateToPercents&&(g=e[f].percents);var h;if(this.minMaxField)h=g[this.minMaxField],ha&&(a=f);else for(var g in e)e.hasOwnProperty(g)&&"percents"!=g&&"total"!=g&&(f=e[g],f>a&&(a=f))}}}return a},dispatchZoomEvent:function(a,b){var c={type:"axisZoomed",startValue:a,endValue:b,target:this,chart:this.chart};this.fire(c.type,c)},zoomToValues:function(a,b){if(bthis.max&&(b=this.max);c={type:"axisSelfZoomed"};c.chart=this.chart;c.valueAxis=this;c.multiplier=this.axisWidth/Math.abs(this.getCoordinate(b)-this.getCoordinate(a));c.position="V"==this.orientation?this.reversed?this.getCoordinate(a):this.getCoordinate(b):this.reversed?this.getCoordinate(b):this.getCoordinate(a);this.fire(c.type,c)},coordinateToValue:function(a){if(isNaN(a))return NaN;var b=this.axisWidth,c=this.stepWidth,d=this.reversed,e=this.rotate,f=this.min,g=this.minReal; -return!0===this.logarithmic?Math.pow(10,(e?!0===d?(b-a)/c:a/c:!0===d?a/c:(b-a)/c)+Math.log(g)*Math.LOG10E):!0===d?e?f-(a-b)/c:a/c+f:e?a/c+f:f-(a-b)/c},getCoordinate:function(a){if(isNaN(a))return NaN;var b=this.rotate,c=this.reversed,d=this.axisWidth,e=this.stepWidth,f=this.min,g=this.minReal;!0===this.logarithmic?(a=Math.log(a)*Math.LOG10E-Math.log(g)*Math.LOG10E,b=b?!0===c?d-e*a:e*a:!0===c?e*a:d-e*a):b=!0===c?b?d-e*(a-f):e*(a-f):b?e*(a-f):d-e*(a-f);b=this.rotate?b+(this.x-this.viX):b+(this.y-this.viY); -1E7m?(B=V+ca*Math.sin(Y)-u-3+2,G+=-ca*Math.cos(Y)-ja*Math.sin(Y)-4):B-=u+p+3+3,B-=ha):(0m?(B=V+u+3-ca/2*Math.sin(Y)+2,G+=ca/2*Math.cos(Y)):B+=u+v+3+3,B+=ha)):(B+=$+p/2-Z,G+=ba,L?(0X+2||0>f))x.remove(),x=null}else{0<=b&&b<=V+1&&(0V+1||Bc&&"object"==typeof d&&(d=d.join(",").split(",").reverse());"V"==g?(a=AmCharts.rect(k,a.width,c,d,l),a.translate(e,b-h+f)):(a=AmCharts.rect(k, -c,a.height,d,l),a.translate(b-h+e,f));this.set=k.set([a])},graphics:function(){return this.set},getLabel:function(){}});AmCharts.AmChart=AmCharts.Class({construct:function(a){this.theme=a;this.version="3.10.1";AmCharts.addChart(this);this.createEvents("dataUpdated","init","rendered","drawn","failed");this.height=this.width="100%";this.dataChanged=!0;this.chartCreated=!1;this.previousWidth=this.previousHeight=0;this.backgroundColor="#FFFFFF";this.borderAlpha=this.backgroundAlpha=0;this.color=this.borderColor="#000000";this.fontFamily="Verdana";this.fontSize=11;this.usePrefixes=!1;this.precision=-1;this.percentPrecision= -2;this.decimalSeparator=".";this.thousandsSeparator=",";this.labels=[];this.allLabels=[];this.titles=[];this.marginRight=this.marginLeft=this.autoMarginOffset=0;this.timeOuts=[];this.creditsPosition="top-left";var b=document.createElement("div"),c=b.style;c.overflow="hidden";c.position="relative";c.textAlign="left";this.chartDiv=b;b=document.createElement("div");c=b.style;c.overflow="hidden";c.position="relative";c.textAlign="left";this.legendDiv=b;this.titleHeight=0;this.hideBalloonTime=150;this.handDrawScatter= -2;this.handDrawThickness=1;this.prefixesOfBigNumbers=[{number:1E3,prefix:"k"},{number:1E6,prefix:"M"},{number:1E9,prefix:"G"},{number:1E12,prefix:"T"},{number:1E15,prefix:"P"},{number:1E18,prefix:"E"},{number:1E21,prefix:"Z"},{number:1E24,prefix:"Y"}];this.prefixesOfSmallNumbers=[{number:1E-24,prefix:"y"},{number:1E-21,prefix:"z"},{number:1E-18,prefix:"a"},{number:1E-15,prefix:"f"},{number:1E-12,prefix:"p"},{number:1E-9,prefix:"n"},{number:1E-6,prefix:"\u03bc"},{number:.001,prefix:"m"}];this.panEventsEnabled= -!0;AmCharts.bezierX=3;AmCharts.bezierY=6;this.product="amcharts";this.animations=[];this.balloon=new AmCharts.AmBalloon(this.theme);this.balloon.chart=this;AmCharts.applyTheme(this,a,"AmChart")},drawChart:function(){this.drawBackground();this.redrawLabels();this.drawTitles();this.brr()},drawBackground:function(){AmCharts.remove(this.background);var a=this.container,b=this.backgroundColor,c=this.backgroundAlpha,d=this.set;AmCharts.isModern||0!==c||(c=.001);var e=this.updateWidth();this.realWidth=e; -var f=this.updateHeight();this.realHeight=f;this.background=b=AmCharts.polygon(a,[0,e-1,e-1,0],[0,0,f-1,f-1],b,c,1,this.borderColor,this.borderAlpha);d.push(b);if(b=this.backgroundImage)this.path&&(b=this.path+b),this.bgImg=a=a.image(b,0,0,e,f),d.push(a)},drawTitles:function(){var a=this.titles;if(AmCharts.ifArray(a)){var b=20,c;for(c=0;ca||isNaN(a))a=0;this.chartDiv.style.height=a+"px"}}return a},updateWidth:function(){var a=this.divRealWidth, -b=this.divRealHeight,c=this.legend;if(c){var d=this.legendDiv,e=d.offsetWidth;isNaN(c.width)||(e=c.width);var f=d.offsetHeight,d=d.style,g=this.chartDiv.style,c=c.position;if("right"==c||"left"==c){a-=e;if(0>a||isNaN(a))a=0;g.width=a+"px";"left"==c?g.left=e+"px":d.left=a+"px";b>f&&(d.top=(b-f)/2+"px")}}return a},getTitleHeight:function(){var a=0,b=this.titles;if(0a.valueAxis.minMaxMultiplier&&a.positiveClip(a.set));break;case "radar":a.createRadarGraph();break;case "xy":a.createXYGraph(),a.positiveClip(a.set)}a.playedTO=setTimeout(function(){a.setAnimationPlayed.call(a)},500*a.chart.startDuration)}},setAnimationPlayed:function(){this.animationPlayed= -!0},createXYGraph:function(){var a=[],b=[],c=this.xAxis,d=this.yAxis;this.pmh=d.viH+1;this.pmw=c.viW+1;this.pmy=this.pmx=0;var e;for(e=this.start;e<=this.end;e++){var f=this.data[e].axes[c.id].graphs[this.id],g=f.values,h=g.x,k=g.y,g=c.getCoordinate(h),l=d.getCoordinate(k);!isNaN(h)&&!isNaN(k)&&(a.push(g),b.push(l),(h=this.createBullet(f,g,l,e))||(h=0),k=this.labelText)&&(f=this.createLabel(f,g,l,k),this.allBullets.push(f),this.positionLabel(g,l,f,this.labelPosition,h))}this.drawLineGraph(a,b);this.launchAnimation()}, -createRadarGraph:function(){var a=this.valueAxis.stackType,b=[],c=[],d,e,f;for(f=this.start;f<=this.end;f++){var g=this.data[f].axes[this.valueAxis.id].graphs[this.id],h;h="none"==a||"3d"==a?g.values.value:g.values.close;if(isNaN(h))this.drawLineGraph(b,c),b=[],c=[];else{var k=this.y-(this.valueAxis.getCoordinate(h)-this.height),l=180-360/(this.end-this.start+1)*f;h=k*Math.sin(l/180*Math.PI);k*=Math.cos(l/180*Math.PI);b.push(h);c.push(k);(l=this.createBullet(g,h,k,f))||(l=0);var m=this.labelText; -m&&(g=this.createLabel(g,h,k,m),this.allBullets.push(g),this.positionLabel(h,k,g,this.labelPosition,l));isNaN(d)&&(d=h);isNaN(e)&&(e=k)}}b.push(d);c.push(e);this.drawLineGraph(b,c);this.launchAnimation()},positionLabel:function(a,b,c,d,e){var f=c.getBBox();switch(d){case "left":a-=(f.width+e)/2+2;break;case "top":b-=(e+f.height)/2+1;break;case "right":a+=(f.width+e)/2+2;break;case "bottom":b+=(e+f.height)/2+1}c.translate(a,b)},getGradRotation:function(){var a=270;"horizontal"==this.gradientOrientation&& -(a=0);return this.gradientRotation=a},createSerialGraph:function(){this.dashLengthSwitched=this.fillColorsSwitched=this.lineColorSwitched=void 0;var a=this.chart,b=this.id,c=this.index,d=this.data,e=this.chart.container,f=this.valueAxis,g=this.type,h=this.columnWidthReal,k=this.showBulletsAt;isNaN(this.columnWidth)||(h=this.columnWidth);isNaN(h)&&(h=.8);var l=this.useNegativeColorIfDown,m=this.width,n=this.height,p=this.y,q=this.rotate,r=this.columnCount,s=AmCharts.toCoordinate(this.cornerRadiusTop, -h/2),v=this.connect,w=[],t=[],u,y,E,A,z=this.chart.graphs.length,K,I=this.dx/this.tcc,F=this.dy/this.tcc,H=f.stackType,L=this.labelPosition,ha=this.start,ba=this.end,$=this.scrollbar,Ra=this.categoryAxis,na=this.baseCoord,ta=this.negativeBase,V=this.columnIndex,X=this.lineThickness,Z=this.lineAlpha,oa=this.lineColorR,R=this.dashLength,Y=this.set,qa=L,G=this.getGradRotation(),B=this.chart.columnSpacing,W=Ra.cellWidth,ca=(W*h-r)/r;B>ca&&(B=ca);var ja,x,ab,jb=n+1,kb=m+1,bb=0,lb=0,mb,nb,cb,db,ob=this.fillColorsR, -Da=this.negativeFillColors,wa=this.negativeLineColor,Sa=this.fillAlphas,Ta=this.negativeFillAlphas;"object"==typeof Sa&&(Sa=Sa[0]);"object"==typeof Ta&&(Ta=Ta[0]);var eb=f.getCoordinate(f.min);f.logarithmic&&(eb=f.getCoordinate(f.minReal));this.minCoord=eb;this.resetBullet&&(this.bullet="none");if(!($||"line"!=g&&"smoothedLine"!=g&&"step"!=g||(1==d.length&&"step"!=g&&"none"==this.bullet&&(this.bullet="round",this.resetBullet=!0),!Da&&void 0==wa||l))){var La=ta;La>f.max&&(La=f.max);Lah&&(h=1);var J;if("line"==g||"step"==g||"smoothedLine"==g){if(0U?!0:!1);if(!$)switch(this.showBalloonAt){case "close":x.y=C;break;case "open":x.y=M;break;case "high":x.y= -ya;break;case "low":x.y=xa}var la=ja.x[Ra.id],Oa=this.periodSpan-1,ma=Math.floor(W/2)+Math.floor(Oa*W/2),za=ma,Hb=0;"left"==this.stepDirection&&(Hb=(2*W+Oa*W)/2,la-=Hb);"start"==this.pointPosition&&(la-=W/2+Math.floor(Oa*W/2),ma=0,za=Math.floor(W)+Math.floor(Oa*W));"end"==this.pointPosition&&(la+=W/2+Math.floor(Oa*W/2),ma=Math.floor(W)+Math.floor(Oa*W),za=0);if(Gb){var sb=this.columnWidth;isNaN(sb)||(ma*=sb,za*=sb)}$||(x.x=la);-1E5>la&&(la=-1E5);la>m+1E5&&(la=m+1E5);q?(D=C,N=M,M=C=la,isNaN(ka)&&!this.fillToGraph&& -(N=na),Fa=xa,Ga=ya):(N=D=la,isNaN(ka)&&!this.fillToGraph&&(M=na));UNa?(Ma&&(Ua=!0),Ma=!1):(Ma||(Ua=!0),Ma=!0):x.isNegative=U=hb||Math.abs(C-gb)>=hb)w.push(D),t.push(C),fb=D,gb=C;aa=D;ia=C;ea=D;fa=C;!Ea||isNaN(M)||isNaN(N)||(O.push(N),P.push(M));if(Ua||void 0!=x.lineColor||void 0!=x.fillColors|| -!isNaN(x.dashLength))this.drawLineGraph(w,t,O,P),w=[D],t=[C],O=[],P=[],!Ea||isNaN(M)||isNaN(N)||(O.push(N),P.push(M)),l?Ma?(this.lineColorSwitched=oa,this.fillColorsSwitched=ob):(this.lineColorSwitched=wa,this.fillColorsSwitched=Da):(this.lineColorSwitched=x.lineColor,this.fillColorsSwitched=x.fillColors),this.dashLengthSwitched=x.dashLength;x.gap&&(this.drawLineGraph(w,t,O,P),w=[],t=[],O=[],P=[])}break;case "smoothedLine":if(isNaN(U))v||(this.drawSmoothedGraph(w,t,O,P),w=[],t=[],O=[],P=[]);else{if(Math.abs(D- -fb)>=hb||Math.abs(C-gb)>=hb)w.push(D),t.push(C),fb=D,gb=C;aa=D;ia=C;ea=D;fa=C;!Ea||isNaN(M)||isNaN(N)||(O.push(N),P.push(M));void 0==x.lineColor&&void 0==x.fillColors&&isNaN(x.dashLength)||(this.drawSmoothedGraph(w,t,O,P),w=[D],t=[C],O=[],P=[],!Ea||isNaN(M)||isNaN(N)||(O.push(N),P.push(M)),this.lineColorSwitched=x.lineColor,this.fillColorsSwitched=x.fillColors,this.dashLengthSwitched=x.dashLength);x.gap&&(this.drawSmoothedGraph(w,t,O,P),w=[],t=[],O=[],P=[])}break;case "step":if(!isNaN(U)){if(void 0== -x.lineColor&&void 0==x.fillColors&&isNaN(x.dashLength)||(this.drawLineGraph(w,t,O,P),w=[],t=[],O=[],P=[],this.lineColorSwitched=x.lineColor,this.fillColorsSwitched=x.fillColors,this.dashLengthSwitched=x.dashLength),q?(isNaN(u)||(w.push(u),t.push(C-ma)),t.push(C-ma),w.push(D),t.push(C+za),w.push(D),!Ea||isNaN(M)||isNaN(N)||(O.push(E),P.push(M-ma),O.push(N),P.push(M-ma),O.push(N),P.push(M+za))):(isNaN(y)||(t.push(y),w.push(u),t.push(y),w.push(D-ma)),w.push(D-ma),t.push(C),w.push(D+za),t.push(C),!Ea|| -isNaN(M)||isNaN(N)||(O.push(N-ma),P.push(A),O.push(N-ma),P.push(M),O.push(N+za),P.push(M))),u=D,y=C,E=N,A=M,aa=D,ia=C,ea=D,fa=C,Ua&&(this.drawLineGraph(w,t,O,P),w=[],t=[],O=[],P=[],l&&(Ma?(this.lineColorSwitched=oa,this.fillColorsSwitched=ob):(this.lineColorSwitched=wa,this.fillColorsSwitched=Da))),Gb||x.gap)u=y=NaN,this.drawLineGraph(w,t,O,P),w=[],t=[],O=[],P=[]}else if(!v){if(1>=this.periodSpan||1ma+za)u=y=NaN;this.drawLineGraph(w,t,O,P);w=[];t=[];O=[];P=[]}break;case "column":pa= -ua;void 0!=x.lineColor&&(pa=x.lineColor);if(!isNaN(U)){l||(x.isNegative=UJb&&ka>Jb))if(q){"3d"==H?(T=C-(r/2-this.depthCount+1)*(h+B)+B/2+F*V,S=N+I*V):(T=Math.floor(C-(r/2-V)*(h+B)+B/2),S=N);Q=h;aa=D;ia=T+h/2;ea=D;fa=T+h/2;T+Q>n&&(Q=n-T);0>T&&(Q+=T,T=0);da=D-N;var Vb=S;S=AmCharts.fitToBounds(S,0,m);da+=Vb-S;da=AmCharts.fitToBounds(da,-S,m-S+I*V);TU&&(L=f.reversed?"right":"left")),"regular"==H||"100%"==H)&&(aa+=this.dx)}else{"3d"==H?(S=D-(r/2-this.depthCount+1)*(h+B)+B/2+I*V,T=M+F*V):(S=D-(r/2-V)*(h+B)+B/2,T=M);Q=h;aa=S+h/2;ia=C;ea=S+h/2;fa=C;S+Q>m+V*I&&(Q=m-S+V*I);0>S&&(Q+=S,S=0);da=C-M;var Wb=T;T=AmCharts.fitToBounds(T,this.dy,n);da+=Wb-T;da=AmCharts.fitToBounds(da,-T+F*V,n-T);if(SU&&"middle"!=L&&"inside"!=L)L="bottom";else if(L=qa,"regular"==H||"100%"==H)ia+=this.dy}if(ra&&(sa=ra.set,x.columnGraphics=sa,sa.translate(S,T),this.columnsSet.push(sa),(x.url||this.showHandOnHover)&&sa.setAttr("cursor","pointer"),!$)){"none"==H&&(K=q?(this.end+1-J)*z-c:z*J+c);"3d"==H&&(q?(K=(this.end+1-J)*z-c-1E3*this.depthCount,aa+=I*this.columnIndex,ea+=I*this.columnIndex,x.y+=I*this.columnIndex):(K=(z-c)*(J+1)+1E3*this.depthCount,aa+=3,ia+=F*this.columnIndex+ -7,fa+=F*this.columnIndex,x.y+=F*this.columnIndex));if("regular"==H||"100%"==H)"inside"!=L&&(L="middle"),K=q?0n&&(Q=n-T),0>T&&(Q+=T,T=0),Tka?(ub=[D,Ga],vb=[N,Fa]):(ub=[N,Ga],vb=[D,Fa]);!isNaN(Ga)&&!isNaN(Fa)&&Cm&&(Q=m-S),0>S&&(Q+=S,S=0),da=C-M,Ska?(wb=[C,ya],xb=[M,xa]):(wb=[M,ya],xb=[C,xa]);!isNaN(ya)&&!isNaN(xa)&&DU||0da?Pa/2+6:-Pa/2-6):Ja=0>da?Ka:-Ka}if(ga){if(isNaN(ia)||isNaN(aa))ga.remove(),ga=null;else if(aa+=Ia,ia+=Ja,ga.translate(aa,ia),q){if(0>ia||ia>n)ga.remove(),ga=null}else{var Pb=0;"3d"==H&&(Pb=I*V);if(0>aa||aa>m+Pb)ga.remove(),ga=null}ga&&this.allBullets.push(ga)}}if("regular"==H||"100%"==H){var Qb=f.totalText;if(Qb){var Qa=this.createLabel(x,0,0,Qb,f.totalTextColor);this.allBullets.push(Qa);var Rb=Qa.getBBox(),Sb=Rb.width,Tb=Rb.height,Ya,Za,Ub=f.totals[J];Ub&&Ub.remove(); -var $a=0;"column"!=g&&($a=Ha);q?(Za=C,Ya=0>U?D-Sb/2-2-$a:D+Sb/2+3+$a):(Ya=D,Za=0>U?C+Tb/2+$a:C-Tb/2-3-$a);Qa.translate(Ya,Za);f.totals[J]=Qa;q?(0>Za||Za>n)&&Qa.remove():(0>Ya||Ya>m)&&Qa.remove()}}}}}}if("line"==g||"step"==g||"smoothedLine"==g)"smoothedLine"==g?this.drawSmoothedGraph(w,t,O,P):this.drawLineGraph(w,t,O,P),$||this.launchAnimation();this.bulletsHidden&&this.hideBullets()},animateColumns:function(a,b,c,d,e,f){var g=this;c=g.chart.startDuration;0a&&(a=this.fillAlphas),0===a&&(a=this.bulletAlpha),0===a&&(a=1));return a},createBullet:function(a,b,c,d){d=this.container;var e=this.bulletOffset,f= -this.bulletSize;isNaN(a.bulletSize)||(f=a.bulletSize);var g=a.values.value,h=this.maxValue,k=this.minValue,l=this.maxBulletSize,m=this.minBulletSize;isNaN(h)||(isNaN(g)||(f=(g-k)/(h-k)*(l-m)+m),k==h&&(f=l));h=f;this.bulletAxis&&(f=a.values.error,isNaN(f)||(g=f),f=this.bulletAxis.stepWidth*g);fb-0||b-0>this.width||c<-f/2||c-0>this.height)&&(n.remove(),n=null),n&&(this.bulletSet.push(n),n.translate(b,c),this.addListeners(n,a),this.allBullets.push(n)),a.bx=b,a.by=c);a.bulletGraphics=n;return f},showBullets:function(){var a=this.allBullets,b;this.bulletsHidden=!1;for(b=0;ba&&(a=0),a>c&&(a=c)):(a=a.mouseX-this.x-1,0>a&&(a=0),a>b&&(a=b));return a},updateCrosshair:function(){var a=this.chart,b=a.mouseX-this.x,c=a.mouseY-this.y,d=this.vLine,e=this.hLine,b=AmCharts.fitToBounds(b, -0,this.width),c=AmCharts.fitToBounds(c,0,this.height);0a&&(e=a,g=c-a),cb&&(f=b,h=d-b),dy&&(e=y-c),z+e=this.data.length||0>l+e||(h.start=l+e,h.end=H+e,this.fire(h.type,h)))}else{"start"==E?r-=g.cellWidth/2:"mouse"==E&&(c.mouseIsOver?r=s?f-2:e-2:isNaN(this.tempPosition)||(r=this.tempPosition-2));if(s){if(0>r)if(z)r=0;else{this.hideCursor();return}if(r>p+1)if(z)r=p+1;else{this.hideCursor();return}}else{if(0>r)if(z)r= -0;else{this.hideCursor();return}if(r>n)if(z)r=n;else{this.hideCursor();return}}if(0r||r>p)v=!1}else if(k=r,r=t,0>k||k>n+h+1)v=!1;v&&(1!=this.graphBulletSize&&AmCharts.isModern&&(v=y.bulletGraphics)&&(v.getBBox(),v.translate(y.bx,y.by,this.graphBulletSize),this.resizedBullets.push(y),A=this.graphBulletAlpha,isNaN(A)||(v.setAttr("fill-opacity",A),v.setAttr("stroke-opacity",A))),v=u.valueBalloon,A=c.getBalloonColor(u,y),v.setBounds(l,m,l+n,m+p),v.pointerOrientation="H", -F=this.balloonPointerOrientation,"vertical"==F&&(v.pointerOrientation="V"),"horizontal"==F&&(v.pointerOrientation="H"),v.changeColor(A),void 0!==u.balloonAlpha&&(v.fillAlpha=u.balloonAlpha),void 0!==u.balloonTextColor&&(v.color=u.balloonTextColor),v.setPosition(k+l,r+m),k=c.formatString(u.balloonText,y,!0),(r=u.balloonFunction)&&(k=r(y,u).toString()),""!==k&&(s?v.showBalloon(k):(v.text=k,v.show=!0),w.push({yy:t,balloon:v})),!s&&v.set&&(v.set.hide(),u=v.textDiv)&&(u.style.visibility="hidden"))}}this.avoidBalloonOverlapping&& -this.arrangeBalloons()}b?(h={type:"changed"},h.index=a,h.chart=this.chart,h.zooming=z,h.mostCloseGraph=H,h.position=s?f:e,h.target=this,c.fire("changed",h),this.fire("changed",h),this.skipZoomDispatch=!1):(this.skipZoomDispatch=!0,c.updateLegendValues(a));this.previousIndex=a;this.previousMostCloseGraph=H}}}else this.hideCursor()},enableDrawing:function(a){this.enabled=!a;this.hideCursor();this.rolledOver=!1;this.drawing=a},isZooming:function(a){a&&a!=this.zooming&&this.handleMouseDown("fake");a|| -a==this.zooming||this.handleMouseUp()},handleMouseOut:function(){if(this.enabled)if(this.zooming)this.setPosition();else{this.index=void 0;var a={type:"changed",index:void 0,target:this};a.chart=this.chart;this.fire("changed",a);this.hideCursor()}},handleReleaseOutside:function(){this.handleMouseUp()},handleMouseUp:function(){var a=this.chart,b=this.data,c;if(a){var d=a.mouseX-this.x,e=a.mouseY-this.y;if(this.drawingNow){this.drawingNow=!1;AmCharts.remove(this.drawingLine);c=this.drawStartX;var f= -this.drawStartY;if(2Math.abs(e-this.initialMouse)&&this.fromIndex==this.index||(this.indexMath.abs(d-g)&&3>Math.abs(e-h)||(b=Math.min(g,d),f=Math.min(h,e),d=Math.abs(g-d),e=Math.abs(h-e),a.hideXScrollbar&&(b=0,d=this.width),a.hideYScrollbar&&(f=0,e=this.height),c.selectionHeight=e,c.selectionWidth=d,c.selectionY= -f,c.selectionX=b,this.skipZoomDispatch||this.fire(c.type,c))}this.selectWithoutZooming||AmCharts.remove(this.selection)}this.panning=this.zooming=this.skipZoomDispatch=!1}}},showCursorAt:function(a){var b=this.chart.categoryAxis;a=b.parseDates?b.dateToCoordinate(a):b.categoryToCoordinate(a);this.previousMousePosition=NaN;this.forceShow=!0;this.setPosition(a,!1)},clearSelection:function(){AmCharts.remove(this.selection)},handleMouseDown:function(a){if(this.zoomable||this.pan||this.drawing){var b=this.rotate, -c=this.chart,d=c.mouseX-this.x,e=c.mouseY-this.y;if(0document.documentMode&&(this.updateOnReleaseOnly=!0);this.dragIconWidth=18;this.dragIconHeight=25;AmCharts.applyTheme(this,a,"SimpleChartScrollbar")},draw:function(){var a= -this;a.destroy();a.interval=setInterval(function(){a.updateScrollbar.call(a)},40);var b=a.chart.container,c=a.rotate,d=a.chart,e=b.set();a.set=e;d.scrollbarsSet.push(e);var f,g;c?(f=a.scrollbarHeight,g=d.plotAreaHeight):(g=a.scrollbarHeight,f=d.plotAreaWidth);a.width=f;if((a.height=g)&&f){var h=AmCharts.rect(b,f,g,a.backgroundColor,a.backgroundAlpha,1,a.backgroundColor,a.backgroundAlpha);a.bg=h;e.push(h);h=AmCharts.rect(b,f,g,"#000",.005);e.push(h);a.invisibleBg=h;h.click(function(){a.handleBgClick()}).mouseover(function(){a.handleMouseOver()}).mouseout(function(){a.handleMouseOut()}).touchend(function(){a.handleBgClick()}); -h=AmCharts.rect(b,f,g,a.selectedBackgroundColor,a.selectedBackgroundAlpha);a.selectedBG=h;e.push(h);f=AmCharts.rect(b,f,g,"#000",.005);a.dragger=f;e.push(f);f.mousedown(function(b){a.handleDragStart(b)}).mouseup(function(){a.handleDragStop()}).mouseover(function(){a.handleDraggerOver()}).mouseout(function(){a.handleMouseOut()}).touchstart(function(b){a.handleDragStart(b)}).touchend(function(){a.handleDragStop()});f=d.pathToImages;c?(h=f+"dragIconH.gif",f=a.dragIconWidth,c=a.dragIconHeight):(h=f+"dragIcon.gif", -c=a.dragIconWidth,f=a.dragIconHeight);g=b.image(h,0,0,c,f);var h=b.image(h,0,0,c,f),k=10,l=20;d.panEventsEnabled&&(k=25,l=a.scrollbarHeight);var m=AmCharts.rect(b,k,l,"#000",.005),n=AmCharts.rect(b,k,l,"#000",.005);n.translate(-(k-c)/2,-(l-f)/2);m.translate(-(k-c)/2,-(l-f)/2);c=b.set([g,n]);b=b.set([h,m]);a.iconLeft=c;a.iconRight=b;c.mousedown(function(){a.leftDragStart()}).mouseup(function(){a.leftDragStop()}).mouseover(function(){a.iconRollOver()}).mouseout(function(){a.iconRollOut()}).touchstart(function(b){a.leftDragStart()}).touchend(function(){a.leftDragStop()}); -b.mousedown(function(){a.rightDragStart()}).mouseup(function(){a.rightDragStop()}).mouseover(function(){a.iconRollOver()}).mouseout(function(){a.iconRollOut()}).touchstart(function(b){a.rightDragStart()}).touchend(function(){a.rightDragStop()});AmCharts.ifArray(d.chartData)?e.show():e.hide();a.hideDragIcons();a.clipDragger(!1)}e.translate(a.x,a.y)},updateScrollbarSize:function(a,b){var c=this.dragger,d,e,f,g;this.rotate?(d=0,e=a,f=this.width+1,g=b-a,c.setAttr("height",b-a),c.setAttr("y",e)):(d=a, -e=0,f=b-a,g=this.height+1,c.setAttr("width",b-a),c.setAttr("x",d));this.clipAndUpdate(d,e,f,g)},updateScrollbar:function(){var a,b=!1,c,d,e=this.x,f=this.y,g=this.dragger,h=this.getDBox();c=h.x+e;d=h.y+f;var k=h.width,h=h.height,l=this.rotate,m=this.chart,n=this.width,p=this.height,q=m.mouseX,r=m.mouseY;a=this.initialMouse;m.mouseIsOver&&(this.dragging&&(m=this.initialCoord,l?(a=m+(r-a),0>a&&(a=0),m=p-h,a>m&&(a=m),g.setAttr("y",a)):(a=m+(q-a),0>a&&(a=0),m=n-k,a>m&&(a=m),g.setAttr("x",a))),this.resizingRight&& -(l?(a=r-d,a+d>p+f&&(a=p-d+f),0>a?(this.resizingRight=!1,b=this.resizingLeft=!0):(0===a&&(a=.1),g.setAttr("height",a))):(a=q-c,a+c>n+e&&(a=n-c+e),0>a?(this.resizingRight=!1,b=this.resizingLeft=!0):(0===a&&(a=.1),g.setAttr("width",a)))),this.resizingLeft&&(l?(c=d,d=r,dp+f&&(d=p+f),a=!0===b?c-d:h+c-d,0>a?(this.resizingRight=!0,this.resizingLeft=!1,g.setAttr("y",c+h-f)):(0===a&&(a=.1),g.setAttr("y",d-f),g.setAttr("height",a))):(d=q,dn+e&&(d=n+e),a=!0===b?c-d:k+c-d,0>a?(this.resizingRight= -!0,this.resizingLeft=!1,g.setAttr("x",c+k-e)):(0===a&&(a=.1),g.setAttr("x",d-e),g.setAttr("width",a)))),this.clipDragger(!0))},clipDragger:function(a){var b=this.getDBox();if(b){var c=b.x,d=b.y,e=b.width,b=b.height,f=!1;if(this.rotate){if(c=0,e=this.width+1,this.clipY!=d||this.clipH!=b)f=!0}else if(d=0,b=this.height+1,this.clipX!=c||this.clipW!=e)f=!0;f&&(this.clipAndUpdate(c,d,e,b),a&&(this.updateOnReleaseOnly||this.dispatchScrollbarEvent()))}},maskGraphs:function(){},clipAndUpdate:function(a,b, -c,d){this.clipX=a;this.clipY=b;this.clipW=c;this.clipH=d;this.selectedBG.clipRect(a,b,c,d);this.updateDragIconPositions();this.maskGraphs(a,b,c,d)},dispatchScrollbarEvent:function(){if(this.skipEvent)this.skipEvent=!1;else{var a=this.chart;a.hideBalloon();var b=this.getDBox(),c=b.x,d=b.y,e=b.width,b=b.height;this.rotate?(c=d,e=this.height/b):e=this.width/e;a={type:"zoomed",position:c,chart:a,target:this,multiplier:e};this.fire(a.type,a)}},updateDragIconPositions:function(){var a=this.getDBox(),b= -a.x,c=a.y,d=this.iconLeft,e=this.iconRight,f,g,h=this.scrollbarHeight;this.rotate?(f=this.dragIconWidth,g=this.dragIconHeight,d.translate(this.x+(h-g)/2,this.y+c-f/2),e.translate(this.x+(h-g)/2,this.y+c+a.height-f/2)):(f=this.dragIconHeight,g=this.dragIconWidth,d.translate(this.x+b-g/2,this.y+(h-f)/2),e.translate(this.x+b-g/2+a.width,this.y+(h-f)/2))},showDragIcons:function(){this.resizeEnabled&&(this.iconLeft.show(),this.iconRight.show())},hideDragIcons:function(){if(!this.resizingLeft&&!this.resizingRight&& -!this.dragging){if(this.hideResizeGrips||!this.resizeEnabled)this.iconLeft.hide(),this.iconRight.hide();this.removeCursors()}},removeCursors:function(){this.chart.setMouseCursor("auto")},relativeZoom:function(a,b){this.dragger.stop();this.multiplier=a;this.position=b;this.updateScrollbarSize(b,this.rotate?b+this.height/a:b+this.width/a)},destroy:function(){this.clear();AmCharts.remove(this.set);AmCharts.remove(this.iconRight);AmCharts.remove(this.iconLeft)},clear:function(){clearInterval(this.interval)}, -handleDragStart:function(){var a=this.chart;this.dragger.stop();this.removeCursors();this.dragging=!0;var b=this.getDBox();this.rotate?(this.initialCoord=b.y,this.initialMouse=a.mouseY):(this.initialCoord=b.x,this.initialMouse=a.mouseX)},handleDragStop:function(){this.updateOnReleaseOnly&&(this.updateScrollbar(),this.skipEvent=!1,this.dispatchScrollbarEvent());this.dragging=!1;this.mouseIsOver&&this.removeCursors();this.updateScrollbar()},handleDraggerOver:function(){this.handleMouseOver()},leftDragStart:function(){this.dragger.stop(); -this.resizingLeft=!0},leftDragStop:function(){this.resizingLeft=!1;this.mouseIsOver||this.removeCursors();this.updateOnRelease()},rightDragStart:function(){this.dragger.stop();this.resizingRight=!0},rightDragStop:function(){this.resizingRight=!1;this.mouseIsOver||this.removeCursors();this.updateOnRelease()},iconRollOut:function(){this.removeCursors()},iconRollOver:function(){this.rotate?this.chart.setMouseCursor("n-resize"):this.chart.setMouseCursor("e-resize");this.handleMouseOver()},getDBox:function(){if(this.dragger)return this.dragger.getBBox()}, -handleBgClick:function(){if(!this.resizingRight&&!this.resizingLeft){this.zooming=!0;var a,b,c=this.scrollDuration,d=this.dragger;a=this.getDBox();var e=a.height,f=a.width;b=this.chart;var g=this.y,h=this.x,k=this.rotate;k?(a="y",b=b.mouseY-e/2-g,b=AmCharts.fitToBounds(b,0,this.height-e)):(a="x",b=b.mouseX-f/2-h,b=AmCharts.fitToBounds(b,0,this.width-f));this.updateOnReleaseOnly?(this.skipEvent=!1,d.setAttr(a,b),this.dispatchScrollbarEvent(),this.clipDragger()):(b=Math.round(b),k?d.animate({y:b},c, -">"):d.animate({x:b},c,">"))}},updateOnRelease:function(){this.updateOnReleaseOnly&&(this.updateScrollbar(),this.skipEvent=!1,this.dispatchScrollbarEvent())},handleReleaseOutside:function(){if(this.set){if(this.resizingLeft||this.resizingRight||this.dragging)this.updateOnRelease(),this.removeCursors();this.mouseIsOver=this.dragging=this.resizingRight=this.resizingLeft=!1;this.hideDragIcons();this.updateScrollbar()}},handleMouseOver:function(){this.mouseIsOver=!0;this.showDragIcons()},handleMouseOut:function(){this.mouseIsOver= -!1;this.hideDragIcons()}});AmCharts.ChartScrollbar=AmCharts.Class({inherits:AmCharts.SimpleChartScrollbar,construct:function(a){this.cname="ChartScrollbar";AmCharts.ChartScrollbar.base.construct.call(this,a);this.graphLineColor="#BBBBBB";this.graphLineAlpha=0;this.graphFillColor="#BBBBBB";this.graphFillAlpha=1;this.selectedGraphLineColor="#888888";this.selectedGraphLineAlpha=0;this.selectedGraphFillColor="#888888";this.selectedGraphFillAlpha=1;this.gridCount=0;this.gridColor="#FFFFFF";this.gridAlpha=.7;this.skipEvent=this.autoGridCount= -!1;this.color="#FFFFFF";this.scrollbarCreated=!1;this.offset=0;AmCharts.applyTheme(this,a,this.cname)},init:function(){var a=this.categoryAxis,b=this.chart;a||(this.categoryAxis=a=new AmCharts.CategoryAxis);a.chart=b;a.id="scrollbar";a.dateFormats=b.categoryAxis.dateFormats;a.markPeriodChange=b.categoryAxis.markPeriodChange;a.boldPeriodBeginning=b.categoryAxis.boldPeriodBeginning;a.axisItemRenderer=AmCharts.RecItem;a.axisRenderer=AmCharts.RecAxis;a.guideFillRenderer=AmCharts.RecFill;a.inside=!0;a.fontSize= -this.fontSize;a.tickLength=0;a.axisAlpha=0;AmCharts.isString(this.graph)&&(this.graph=AmCharts.getObjById(b.graphs,this.graph));if(a=this.graph){var c=this.valueAxis;c||(this.valueAxis=c=new AmCharts.ValueAxis,c.visible=!1,c.scrollbar=!0,c.axisItemRenderer=AmCharts.RecItem,c.axisRenderer=AmCharts.RecAxis,c.guideFillRenderer=AmCharts.RecFill,c.labelsEnabled=!1,c.chart=b);b=this.unselectedGraph;b||(b=new AmCharts.AmGraph,b.scrollbar=!0,this.unselectedGraph=b,b.negativeBase=a.negativeBase,b.noStepRisers= -a.noStepRisers);b=this.selectedGraph;b||(b=new AmCharts.AmGraph,b.scrollbar=!0,this.selectedGraph=b,b.negativeBase=a.negativeBase,b.noStepRisers=a.noStepRisers)}this.scrollbarCreated=!0},draw:function(){var a=this;AmCharts.ChartScrollbar.base.draw.call(a);a.scrollbarCreated||a.init();var b=a.chart,c=b.chartData,d=a.categoryAxis,e=a.rotate,f=a.x,g=a.y,h=a.width,k=a.height,l=b.categoryAxis,m=a.set;d.setOrientation(!e);d.parseDates=l.parseDates;d.rotate=e;d.equalSpacing=l.equalSpacing;d.minPeriod=l.minPeriod; -d.startOnAxis=l.startOnAxis;d.viW=h;d.viH=k;d.width=h;d.height=k;d.gridCount=a.gridCount;d.gridColor=a.gridColor;d.gridAlpha=a.gridAlpha;d.color=a.color;d.tickLength=0;d.axisAlpha=0;d.autoGridCount=a.autoGridCount;d.parseDates&&!d.equalSpacing&&d.timeZoom(b.firstTime,b.lastTime);d.zoom(0,c.length-1);if(l=a.graph){var n=a.valueAxis,p=l.valueAxis;n.id=p.id;n.rotate=e;n.setOrientation(e);n.width=h;n.height=k;n.viW=h;n.viH=k;n.dataProvider=c;n.reversed=p.reversed;n.logarithmic=p.logarithmic;n.gridAlpha= -0;n.axisAlpha=0;m.push(n.set);e?(n.y=g,n.x=0):(n.x=f,n.y=0);var f=Infinity,g=-Infinity,q;for(q=0;qg&&(g=v)}}Infinity!=f&&(n.minimum=f);-Infinity!=g&&(n.maximum=g+.1*(g-f));f==g&&(n.minimum-=1,n.maximum+=1);void 0!==a.minimum&&(n.minimum=a.minimum);void 0!==a.maximum&&(n.maximum=a.maximum);n.zoom(0,c.length-1);s=a.unselectedGraph;s.id=l.id;s.rotate=e;s.chart= -b;s.data=c;s.valueAxis=n;s.chart=l.chart;s.categoryAxis=a.categoryAxis;s.periodSpan=l.periodSpan;s.valueField=l.valueField;s.openField=l.openField;s.closeField=l.closeField;s.highField=l.highField;s.lowField=l.lowField;s.lineAlpha=a.graphLineAlpha;s.lineColorR=a.graphLineColor;s.fillAlphas=a.graphFillAlpha;s.fillColorsR=a.graphFillColor;s.connect=l.connect;s.hidden=l.hidden;s.width=h;s.height=k;s.pointPosition=l.pointPosition;s.stepDirection=l.stepDirection;s.periodSpan=l.periodSpan;p=a.selectedGraph; -p.id=l.id;p.rotate=e;p.chart=b;p.data=c;p.valueAxis=n;p.chart=l.chart;p.categoryAxis=d;p.periodSpan=l.periodSpan;p.valueField=l.valueField;p.openField=l.openField;p.closeField=l.closeField;p.highField=l.highField;p.lowField=l.lowField;p.lineAlpha=a.selectedGraphLineAlpha;p.lineColorR=a.selectedGraphLineColor;p.fillAlphas=a.selectedGraphFillAlpha;p.fillColorsR=a.selectedGraphFillColor;p.connect=l.connect;p.hidden=l.hidden;p.width=h;p.height=k;p.pointPosition=l.pointPosition;p.stepDirection=l.stepDirection; -p.periodSpan=l.periodSpan;b=a.graphType;b||(b=l.type);s.type=b;p.type=b;c=c.length-1;s.zoom(0,c);p.zoom(0,c);p.set.click(function(){a.handleBackgroundClick()}).mouseover(function(){a.handleMouseOver()}).mouseout(function(){a.handleMouseOut()});s.set.click(function(){a.handleBackgroundClick()}).mouseover(function(){a.handleMouseOver()}).mouseout(function(){a.handleMouseOut()});m.push(s.set);m.push(p.set)}m.push(d.set);m.push(d.labelsSet);a.bg.toBack();a.invisibleBg.toFront();a.dragger.toFront();a.iconLeft.toFront(); -a.iconRight.toFront()},timeZoom:function(a,b,c){this.startTime=a;this.endTime=b;this.timeDifference=b-a;this.skipEvent=!AmCharts.toBoolean(c);this.zoomScrollbar();this.skipEvent||this.dispatchScrollbarEvent()},zoom:function(a,b){this.start=a;this.end=b;this.skipEvent=!0;this.zoomScrollbar()},dispatchScrollbarEvent:function(){if(this.skipEvent)this.skipEvent=!1;else{var a=this.chart.chartData,b,c,d=this.dragger.getBBox();b=d.x;var e=d.y,f=d.width;c=d.height;d=this.chart;this.rotate?b=e:c=f;f={type:"zoomed", -target:this};f.chart=d;var g=this.categoryAxis,h=this.stepWidth,e=d.minSelectedTime;if(g.parseDates&&!g.equalSpacing){if(a=d.lastTime,d=d.firstTime,g.minDuration(),g=Math.round(b/h)+d,b=this.dragging?g+this.timeDifference:Math.round((b+c)/h)+d,g>b&&(g=b),0a&&(b=a),b-eb&&(b=g+e),g!=this.startTime||b!=this.endTime)this.startTime=g,this.endTime=b,f.start=g,f.end=b,f.startDate=new Date(g),f.endDate=new Date(b), -this.fire(f.type,f)}else if(g.startOnAxis||(b+=h/2),c-=this.stepWidth/2,e=g.xToIndex(b),b=g.xToIndex(b+c),e!=this.start||this.end!=b)g.startOnAxis&&(this.resizingRight&&e==b&&b++,this.resizingLeft&&e==b&&(0this.timeDifference&&(this.timeDifference=0)},handleBackgroundClick:function(){AmCharts.ChartScrollbar.base.handleBackgroundClick.call(this);this.dragging||(this.difference=this.end-this.start,this.timeDifference=this.endTime-this.startTime,0>this.timeDifference&&(this.timeDifference=0))}});AmCharts.AmBalloon=AmCharts.Class({construct:function(a){this.cname="AmBalloon";this.enabled=!0;this.fillColor="#FFFFFF";this.fillAlpha=.8;this.borderThickness=2;this.borderColor="#FFFFFF";this.borderAlpha=1;this.cornerRadius=0;this.maximumWidth=220;this.horizontalPadding=8;this.verticalPadding=4;this.pointerWidth=6;this.pointerOrientation="V";this.color="#000000";this.adjustBorderColor=!0;this.show=this.follow=this.showBullet=!1;this.bulletSize=3;this.shadowAlpha=.4;this.shadowColor="#000000";this.fadeOutDuration= -this.animationDuration=.3;this.fixedPosition=!1;this.offsetY=6;this.offsetX=1;this.textAlign="center";AmCharts.isModern||(this.offsetY*=1.5);AmCharts.applyTheme(this,a,this.cname)},draw:function(){var a=this.pointToX,b=this.pointToY;this.deltaSignX=this.deltaSignY=1;var c=this.chart;AmCharts.VML&&(this.fadeOutDuration=0);this.xAnim&&c.stopAnim(this.xAnim);this.yAnim&&c.stopAnim(this.yAnim);if(!isNaN(a)){var d=this.follow,e=c.container,f=this.set;AmCharts.remove(f);this.removeDiv();f=e.set();f.node.style.pointerEvents= -"none";this.set=f;c.balloonsSet.push(f);if(this.show){var g=this.l,h=this.t,k=this.r,l=this.b,m=this.balloonColor,n=this.fillColor,p=this.borderColor,q=n;void 0!=m&&(this.adjustBorderColor?q=p=m:n=m);var r=this.horizontalPadding,s=this.verticalPadding,v=this.pointerWidth,w=this.pointerOrientation,t=this.cornerRadius,u=c.fontFamily,y=this.fontSize;void 0==y&&(y=c.fontSize);var m=document.createElement("div"),E=m.style;E.pointerEvents="none";E.position="absolute";var A=this.minWidth,z="";isNaN(A)|| -(z="min-width:"+(A-2*r)+"px; ");m.innerHTML='
'+this.text+"
";c.chartDiv.appendChild(m);this.textDiv=m;y=m.offsetWidth;u=m.offsetHeight;m.clientHeight&&(y=m.clientWidth,u=m.clientHeight);u+=2*s;z=y+2*r;!isNaN(A)&&zu&&(v=u/2),y=b-u/2,a=l&&(y=l-u);yk&&(A=k-z);var h=y+s,l=A+r,s=this.shadowAlpha,I=this.shadowColor,r=this.borderThickness,F=this.bulletSize,H;0z-v&&(g=z-v),gu-v&&(q=u-v),qa?z:a-A,z,z,0,0,z]),0this.r-d.width&&(a=this.r-d.width);e1.1*q&&(w[K].gap=!0);this.processFields(b,F,H);F.category=t.category;F.serialDataItem=t;F.graph=b;t.axes[A].graphs[K]=F;p[K]=t.time;w[K]= -F}}}this.chartData[s]=t}}for(c=0;cb?this.colors[b]:AmCharts.randomColor();a.lineColorR=c}a.fillColorsR=a.fillColors?a.fillColors:a.lineColorR;a.bulletBorderColorR=a.bulletBorderColor?a.bulletBorderColor:a.useLineColorForBulletBorder?a.lineColorR:a.bulletColor;a.bulletColorR=a.bulletColor?a.bulletColor:a.lineColorR;if(c= -this.patterns)a.pattern=c[b]},handleLegendEvent:function(a){var b=a.type;a=a.dataItem;if(!this.legend.data&&a){var c=a.hidden,d=a.showBalloon;switch(b){case "clickMarker":this.textClickEnabled&&(d?this.hideGraphsBalloon(a):this.showGraphsBalloon(a));break;case "clickLabel":d?this.hideGraphsBalloon(a):this.showGraphsBalloon(a);break;case "rollOverItem":c||this.highlightGraph(a);break;case "rollOutItem":c||this.unhighlightGraph();break;case "hideItem":this.hideGraph(a);break;case "showItem":this.showGraph(a)}}}, -highlightGraph:function(a){var b=this.graphs,c,d=.2;this.legend&&(d=this.legend.rollOverGraphAlpha);if(1!=d)for(c=0;cthis.hoverAlpha&&a.wedge&&a.wedge.attr({opacity:this.hoverAlpha});var d=a.balloonX,e=a.balloonY;a.pulled&&(d+=a.pullX,e+=a.pullY);var f=this.formatString(this.balloonText,a,!0),g=this.balloonFunction;g&&(f=g(a,f));g=AmCharts.adjustLuminosity(a.color, --.15);this.showBalloon(f,g,b,d,e);a={type:"rollOverSlice",dataItem:a,chart:this,event:c};this.fire(a.type,a)}},rollOutSlice:function(a,b){isNaN(a)||(a=this.chartData[a]);a.wedge&&a.wedge.attr({opacity:1});this.hideBalloon();var c={type:"rollOutSlice",dataItem:a,chart:this,event:b};this.fire(c.type,c)},clickSlice:function(a,b){isNaN(a)||(a=this.chartData[a]);a.pulled?this.pullSlice(a,0):this.pullSlice(a,1);AmCharts.getURL(a.url,this.urlTarget);var c={type:"clickSlice",dataItem:a,chart:this,event:b}; -this.fire(c.type,c)},handleRightClick:function(a,b){isNaN(a)||(a=this.chartData[a]);var c={type:"rightClickSlice",dataItem:a,chart:this,event:b};this.fire(c.type,c)},drawTicks:function(){var a=this.chartData,b;for(b=0;bb&&(b=e);d.remove()}return b}});AmCharts.AmRectangularChart=AmCharts.Class({inherits:AmCharts.AmCoordinateChart,construct:function(a){AmCharts.AmRectangularChart.base.construct.call(this,a);this.theme=a;this.createEvents("zoomed");this.marginRight=this.marginBottom=this.marginTop=this.marginLeft=20;this.verticalPosition=this.horizontalPosition=this.depth3D=this.angle=0;this.heightMultiplier=this.widthMultiplier=1;this.plotAreaFillColors="#FFFFFF";this.plotAreaFillAlphas=0;this.plotAreaBorderColor="#000000";this.plotAreaBorderAlpha= -0;this.zoomOutButtonImageSize=17;this.zoomOutButtonImage="lens.png";this.zoomOutText="Show all";this.zoomOutButtonColor="#e5e5e5";this.zoomOutButtonAlpha=0;this.zoomOutButtonRollOverAlpha=1;this.zoomOutButtonPadding=8;this.trendLines=[];this.autoMargins=!0;this.marginsUpdated=!1;this.autoMarginOffset=10;AmCharts.applyTheme(this,a,"AmRectangularChart")},initChart:function(){AmCharts.AmRectangularChart.base.initChart.call(this);this.updateDxy();var a=!0;!this.marginsUpdated&&this.autoMargins&&(this.resetMargins(), -a=!1);this.processScrollbars();this.updateMargins();this.updatePlotArea();this.updateScrollbars();this.updateTrendLines();this.updateChartCursor();this.updateValueAxes();a&&(this.scrollbarOnly||this.updateGraphs())},drawChart:function(){AmCharts.AmRectangularChart.base.drawChart.call(this);this.drawPlotArea();if(AmCharts.ifArray(this.chartData)){var a=this.chartCursor;a&&a.draw();a=this.zoomOutText;""!==a&&a&&this.drawZoomOutButton()}},resetMargins:function(){var a={},b;if("serial"==this.type){var c= -this.valueAxes;for(b=0;b=e-c&&(this.marginRight=Math.round(k-e+c));d.top&&hf-c&&(this.marginBottom=Math.round(this.marginBottom+b-f+c));this.initChart()},getAxisBounds:function(a,b,c,d,e){if(!a.ignoreAxisWidth){var f=a.labelsSet,g=a.tickLength;a.inside&&(g=0);if(f)switch(f=a.getBBox(),a.position){case "top":a=f.y; -d>a&&(d=a);break;case "bottom":a=f.y+f.height;ea&&(b=a)}}return{l:b,t:d,r:c,b:e}},drawZoomOutButton:function(){var a=this,b=a.container.set();a.zoomButtonSet.push(b);var c=a.color,d=a.fontSize,e=a.zoomOutButtonImageSize,f=a.zoomOutButtonImage,g=AmCharts.lang.zoomOutText||a.zoomOutText,h=a.zoomOutButtonColor,k=a.zoomOutButtonAlpha,l=a.zoomOutButtonFontSize,m=a.zoomOutButtonPadding;isNaN(l)||(d=l);(l=a.zoomOutButtonFontColor)&& -(c=l);var l=a.zoomOutButton,n;l&&(l.fontSize&&(d=l.fontSize),l.color&&(c=l.color),l.backgroundColor&&(h=l.backgroundColor),isNaN(l.backgroundAlpha)||(a.zoomOutButtonRollOverAlpha=l.backgroundAlpha));var p=l=0;void 0!==a.pathToImages&&f&&(n=a.container.image(a.pathToImages+f,0,0,e,e),b.push(n),n=n.getBBox(),l=n.width+5);void 0!==g&&(c=AmCharts.text(a.container,g,c,a.fontFamily,d,"start"),d=c.getBBox(),p=n?n.height/2-3:d.height/2,c.translate(l,p),b.push(c));n=b.getBBox();c=1;AmCharts.isModern||(c=0); -h=AmCharts.rect(a.container,n.width+2*m+5,n.height+2*m-2,h,1,1,h,c);h.setAttr("opacity",k);h.translate(-m,-m);b.push(h);h.toBack();a.zbBG=h;n=h.getBBox();b.translate(a.marginLeftReal+a.plotAreaWidth-n.width+m,a.marginTopReal+m);b.hide();b.mouseover(function(){a.rollOverZB()}).mouseout(function(){a.rollOutZB()}).click(function(){a.clickZB()}).touchstart(function(){a.rollOverZB()}).touchend(function(){a.rollOutZB();a.clickZB()});for(k=0;ka&&(a=1);1>b&&(b=1);this.plotAreaWidth=Math.round(a);this.plotAreaHeight=Math.round(b)},updateDxy:function(){this.dx=Math.round(this.depth3D*Math.cos(this.angle*Math.PI/180));this.dy=Math.round(-this.depth3D*Math.sin(this.angle*Math.PI/180));this.d3x= -Math.round(this.columnSpacing3D*Math.cos(this.angle*Math.PI/180));this.d3y=Math.round(-this.columnSpacing3D*Math.sin(this.angle*Math.PI/180))},updateMargins:function(){var a=this.getTitleHeight();this.titleHeight=a;this.marginTopReal=this.marginTop-this.dy+a;this.marginBottomReal=this.marginBottom;this.marginLeftReal=this.marginLeft;this.marginRightReal=this.marginRight},updateValueAxes:function(){var a=this.valueAxes,b=this.marginLeftReal,c=this.marginTopReal,d=this.plotAreaHeight,e=this.plotAreaWidth, -f;for(f=0;fb&&(b=Math.abs(b),q=-b);0>c&&(c=Math.abs(c),r=-c);q+=AmCharts.dx;r+=AmCharts.dy;e={fill:n,stroke:g,"fill-opacity":e,"stroke-opacity":h};void 0!==m&&0=s&&(e=s);var v=1/180*Math.PI,s=b+Math.sin(d*v)*h,w=c-Math.cos(d*v)*q,t=b+Math.sin(d*v)*f,u=c-Math.cos(d*v)*g,y=b+Math.sin((d+e)*v)*f,E=c-Math.cos((d+e)*v)*g,A=b+Math.sin((d+e)*v)*h,v=c-Math.cos((d+e)*v)*q,z={fill:AmCharts.adjustLuminosity(l.fill,-.2),"stroke-opacity":0,"fill-opacity":l["fill-opacity"]},K=0;180Math.abs(e)&&1>=Math.abs(y-t)&&1>=Math.abs(E-u)&&(I=!0));e="";var F;n&&(z["fill-opacity"]=0,z["stroke-opacity"]=l["stroke-opacity"]/2,z.stroke=l.stroke);0a.length&&(a=String(a[0])+String(a[0])+String(a[1])+String(a[1])+String(a[2])+String(a[2]));b=b||0;var c="#",d,e;for(e=0;3>e;e++)d=parseInt(a.substr(2*e,2),16),d=Math.round(Math.min(Math.max(0,d+d*b),255)).toString(16),c+=("00"+d).substr(d.length);return c};AmCharts.Bezier=AmCharts.Class({construct:function(a,b,c,d,e,f,g,h,k,l){"object"==typeof g&&(g=g[0]);"object"==typeof h&&(h=h[0]);f={fill:g,"fill-opacity":h,"stroke-width":f};void 0!==k&&0c&&(h=c);b.push({x:k.x-h/e,y:k.y-d/f});b.push({x:k.x,y:k.y});b.push({x:k.x+h/e,y:k.y+d/f})}d=a[a.length-1].y-a[a.length-2].y;c=a[a.length-1].x-a[a.length-2].x;b.push({x:a[a.length-1].x- -c/e,y:a[a.length-1].y-d/f});b.push({x:a[a.length-1].x,y:a[a.length-1].y});return b},drawBeziers:function(a){var b="",c;for(c=0;c<(a.length-1)/3;c++)b+=this.drawBezierMidpoint(a[3*c],a[3*c+1],a[3*c+2],a[3*c+3]);return b},drawBezierMidpoint:function(a,b,c,d){var e=Math.round,f=this.getPointOnSegment(a,b,.75),g=this.getPointOnSegment(d,c,.75),h=(d.x-a.x)/16,k=(d.y-a.y)/16,l=this.getPointOnSegment(a,b,.375);a=this.getPointOnSegment(f,g,.375);a.x-=h;a.y-=k;b=this.getPointOnSegment(g,f,.375);b.x+=h;b.y+= -k;c=this.getPointOnSegment(d,c,.375);h=this.getMiddle(l,a);f=this.getMiddle(f,g);g=this.getMiddle(b,c);l=" Q"+e(l.x)+","+e(l.y)+","+e(h.x)+","+e(h.y);l+=" Q"+e(a.x)+","+e(a.y)+","+e(f.x)+","+e(f.y);l+=" Q"+e(b.x)+","+e(b.y)+","+e(g.x)+","+e(g.y);return l+=" Q"+e(c.x)+","+e(c.y)+","+e(d.x)+","+e(d.y)},getMiddle:function(a,b){return{x:(a.x+b.x)/2,y:(a.y+b.y)/2}},getPointOnSegment:function(a,b,c){return{x:a.x+(b.x-a.x)*c,y:a.y+(b.y-a.y)*c}}});AmCharts.AmDraw=AmCharts.Class({construct:function(a,b,c,d){AmCharts.SVG_NS="http://www.w3.org/2000/svg";AmCharts.SVG_XLINK="http://www.w3.org/1999/xlink";AmCharts.hasSVG=!!document.createElementNS&&!!document.createElementNS(AmCharts.SVG_NS,"svg").createSVGRect;1>b&&(b=10);1>c&&(c=10);this.div=a;this.width=b;this.height=c;this.rBin=document.createElement("div");if(AmCharts.hasSVG){AmCharts.SVG=!0;var e=this.createSvgElement("svg");e.style.position="absolute";e.style.width=b+"px";e.style.height=c+ -"px";b=this.createSvgElement("desc");b.appendChild(document.createTextNode("JavaScript chart by amCharts "+d.version));e.appendChild(b);AmCharts.rtl&&(e.setAttribute("direction","rtl"),e.style.left="auto",e.style.right="0px");e.setAttribute("version","1.1");a.appendChild(e);this.container=e;this.R=new AmCharts.SVGRenderer(this)}else AmCharts.isIE&&AmCharts.VMLRenderer&&(AmCharts.VML=!0,AmCharts.vmlStyleSheet||(document.namespaces.add("amvml","urn:schemas-microsoft-com:vml"),31>document.styleSheets.length? -(e=document.createStyleSheet(),e.addRule(".amvml","behavior:url(#default#VML); display:inline-block; antialias:true"),AmCharts.vmlStyleSheet=e):document.styleSheets[0].addRule(".amvml","behavior:url(#default#VML); display:inline-block; antialias:true")),this.container=a,this.R=new AmCharts.VMLRenderer(this,d),this.R.disableSelection(a))},createSvgElement:function(a){return document.createElementNS(AmCharts.SVG_NS,a)},circle:function(a,b,c,d){var e=new AmCharts.AmDObject("circle",this);e.attr({r:c, -cx:a,cy:b});this.addToContainer(e.node,d);return e},setSize:function(a,b){0c&&(c=1);1>d&&(d=1);h.attr({x:a,y:b,width:c,height:d,rx:e,ry:e,"stroke-width":f});this.addToContainer(h.node,g);return h},image:function(a,b,c,d,e,f){var g=new AmCharts.AmDObject("image", -this);g.attr({x:b,y:c,width:d,height:e});this.R.path(g,a);this.addToContainer(g.node,f);return g},addToContainer:function(a,b){b||(b=this.container);b.appendChild(a)},text:function(a,b,c){return this.R.text(a,b,c)},path:function(a,b,c,d){var e=new AmCharts.AmDObject("path",this);d||(d="100,100");e.attr({cs:d});c?e.attr({dd:a}):e.attr({d:a});this.addToContainer(e.node,b);return e},set:function(a){return this.R.set(a)},remove:function(a){if(a){var b=this.rBin;b.appendChild(a);b.innerHTML=""}},renderFix:function(){var a= -this.container,b=a.style,c;try{c=a.getScreenCTM()||a.createSVGMatrix()}catch(d){c=a.createSVGMatrix()}a=1-c.e%1;c=1-c.f%1;.5c&&(g="dot"), -3<=c&&6>=c&&(g="dash"),6g&&(b+=g);0>h&&(c+=h)}return{x:b,y:c,width:d, -height:e}},setText:function(a,b){var c=a.node;c&&(c.innerHTML=b);this.setAttr(a,"text-anchor",a.anchor)},addListener:function(a,b,c){a.node["on"+b]=c},move:function(a,b,c){var d=a.node,e=d.style;"text"==a.type&&(c-=AmCharts.removePx(e.fontSize)/2-1);"oval"==a.shapeType&&(b-=AmCharts.removePx(e.width)/2,c-=AmCharts.removePx(e.height)/2);a=a.bw;isNaN(a)||(b-=a,c-=a);isNaN(b)||isNaN(c)||(d.style.left=b+"px",d.style.top=c+"px")},svgPathToVml:function(a){var b=a.split(" ");a="";var c,d=Math.round,e;for(e= -0;ethis.fontSize&&(this.ly=e/2-1);0p&&(p=u);w=w.height;w>q&&(q=w)}var u=q=0,y=f,E=0,A=0;for(t=0;tA&&(A=w.height);K+w.width>n&&0=k&& -(u=0,q++,E=E+A+l,A=0);r.push(z)}w=r.getBBox();k=w.height+2*l-1;"left"==a||"right"==a?(h=w.width+2*f,g.style.width=h+b+c+"px"):h=h-b-c-1;c=AmCharts.polygon(this.container,[0,h,h,0],[0,0,k,k],this.backgroundColor,this.backgroundAlpha,1,this.borderColor,this.borderAlpha);s.push(c);s.translate(b,d);c.toBack();b=f;if("top"==a||"bottom"==a||"absolute"==a||"outside"==a)"center"==this.align?b=f+(h-w.width)/2:"right"==this.align&&(b=f+h-w.width);r.translate(b,l+1);this.titleHeight>k&&(k=this.titleHeight); -a=k+d+e+1;0>a&&(a=0);g.style.height=Math.round(a)+"px"},createEntry:function(a){if(!1!==a.visibleInLegend){var b=this.chart,c=a.markerType;c||(c=this.markerType);var d=a.color,e=a.alpha;a.legendKeyColor&&(d=a.legendKeyColor());a.legendKeyAlpha&&(e=a.legendKeyAlpha());var f;!0===a.hidden&&(f=d=this.markerDisabledColor);var g=a.pattern,h=a.customMarker;h||(h=this.customMarker);var k=this.container,l=this.markerSize,m=0,n=0,p=l/2;if(this.useGraphSettings)if(m=a.type,this.switchType=void 0,"line"==m|| -"step"==m||"smoothedLine"==m||"ohlc"==m)g=k.set(),a.hidden||(d=a.lineColorR,f=a.bulletBorderColorR),n=AmCharts.line(k,[0,2*l],[l/2,l/2],d,a.lineAlpha,a.lineThickness,a.dashLength),g.push(n),a.bullet&&(a.hidden||(d=a.bulletColorR),n=AmCharts.bullet(k,a.bullet,a.bulletSize,d,a.bulletAlpha,a.bulletBorderThickness,f,a.bulletBorderAlpha))&&(n.translate(l+1,l/2),g.push(n)),p=0,m=l,n=l/3;else{var q;a.getGradRotation&&(q=a.getGradRotation());m=a.fillColorsR;!0===a.hidden&&(m=d);if(g=this.createMarker("rectangle", -m,a.fillAlphas,a.lineThickness,d,a.lineAlpha,q,g))p=l,g.translate(p,l/2);m=l}else h?(b.path&&(h=b.path+h),g=k.image(h,0,0,l,l)):(g=this.createMarker(c,d,e,void 0,void 0,void 0,void 0,g))&&g.translate(l/2,l/2);this.addListeners(g,a);k=k.set([g]);this.switchable&&a.switchable&&k.setAttr("cursor","pointer");(f=this.switchType)&&"none"!=f&&("x"==f?(q=this.createX(),q.translate(l/2,l/2)):q=this.createV(),q.dItem=a,!0!==a.hidden?"x"==f?q.hide():q.show():"x"!=f&&q.hide(),this.switchable||q.hide(),this.addListeners(q, -a),a.legendSwitch=q,k.push(q));f=this.color;a.showBalloon&&this.textClickEnabled&&void 0!==this.selectedColor&&(f=this.selectedColor);this.useMarkerColorForLabels&&(f=d);!0===a.hidden&&(f=this.markerDisabledColor);d=AmCharts.massReplace(this.labelText,{"[[title]]":a.title});q=this.fontSize;g&&l<=q&&g.translate(p,l/2+this.ly-q/2+(q+2-l)/2-n);var r;d&&(d=AmCharts.fixBrakes(d),a.legendTextReal=d,r=this.labelWidth,r=isNaN(r)?AmCharts.text(this.container,d,f,b.fontFamily,q,"start"):AmCharts.wrappedText(this.container, -d,f,b.fontFamily,q,"start",!1,r,0),r.translate(this.lx+m,this.ly),k.push(r),b=r.getBBox().width,this.maxLabelWidthc&&(d="00"+c);10<=c&&100>c&&(d="0"+c);a=a.replace(/fff/g,d)}return a};AmCharts.extractPeriod=function(a){var b=AmCharts.stripNumbers(a),c=1;b!=a&&(c=Number(a.slice(0,a.indexOf(b))));return{period:b,count:c}}; -AmCharts.newDate=function(a,b){return date="fff"==b?AmCharts.useUTC?new Date(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),a.getUTCHours(),a.getUTCMinutes(),a.getUTCSeconds(),a.getUTCMilliseconds()):new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),a.getMinutes(),a.getSeconds(),a.getMilliseconds()):new Date(a)}; -AmCharts.resetDateToMin=function(a,b,c,d){void 0===d&&(d=1);var e,f,g,h,k,l,m;AmCharts.useUTC?(e=a.getUTCFullYear(),f=a.getUTCMonth(),g=a.getUTCDate(),h=a.getUTCHours(),k=a.getUTCMinutes(),l=a.getUTCSeconds(),m=a.getUTCMilliseconds(),a=a.getUTCDay()):(e=a.getFullYear(),f=a.getMonth(),g=a.getDate(),h=a.getHours(),k=a.getMinutes(),l=a.getSeconds(),m=a.getMilliseconds(),a=a.getDay());switch(b){case "YYYY":e=Math.floor(e/c)*c;f=0;g=1;m=l=k=h=0;break;case "MM":f=Math.floor(f/c)*c;g=1;m=l=k=h=0;break;case "WW":0=== -a&&0=c[b].contains?(a=Math.round(a/c[b].contains),b=c[b].nextInterval,AmCharts.getMaxInterval(a,b)):"ss"==b?c[b].nextInterval:b};AmCharts.dayNames="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" ");AmCharts.shortDayNames="Sun Mon Tue Wed Thu Fri Sat".split(" ");AmCharts.monthNames="January February March April May June July August September October November December".split(" ");AmCharts.shortMonthNames="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "); -AmCharts.getWeekNumber=function(a){a=new Date(a);a.setHours(0,0,0);a.setDate(a.getDate()+4-(a.getDay()||7));var b=new Date(a.getFullYear(),0,1);return Math.ceil(((a-b)/864E5+1)/7)}; -AmCharts.stringToDate=function(a,b){var c={},d=[{pattern:"YYYY",period:"year"},{pattern:"YY",period:"year"},{pattern:"MM",period:"month"},{pattern:"M",period:"month"},{pattern:"DD",period:"date"},{pattern:"D",period:"date"},{pattern:"JJ",period:"hours"},{pattern:"J",period:"hours"},{pattern:"HH",period:"hours"},{pattern:"H",period:"hours"},{pattern:"KK",period:"hours"},{pattern:"K",period:"hours"},{pattern:"LL",period:"hours"},{pattern:"L",period:"hours"},{pattern:"NN",period:"minutes"},{pattern:"N", -period:"minutes"},{pattern:"SS",period:"seconds"},{pattern:"S",period:"seconds"},{pattern:"QQQ",period:"milliseconds"},{pattern:"QQ",period:"milliseconds"},{pattern:"Q",period:"milliseconds"}],e=!0,f=b.indexOf("AA");-1!=f&&(a.substr(f,2),"pm"==a.toLowerCase&&(e=!1));var f=b,g,h,k;for(k=0;kd&&(p="0"+p);var q="0"+f;b=b.replace(/W/g,m);m=g;24==m&&(m=0);var r=m;10>r&&(r= -"0"+r);b=b.replace(/JJ/g,r);b=b.replace(/J/g,m);r=g;0===r&&(r=24,-1!=b.indexOf("H")&&e--);m=e;10>e&&(m="0"+e);var s=r;10>s&&(s="0"+s);b=b.replace(/HH/g,s);b=b.replace(/H/g,r);r=g;11s&&(s="0"+s);b=b.replace(/KK/g,s);b=b.replace(/K/g,r);r=g;0===r&&(r=12);12s&&(s="0"+s);b=b.replace(/LL/g,s);b=b.replace(/L/g,r);r=h;10>r&&(r="0"+r);b=b.replace(/NN/g,r);b=b.replace(/N/g,h);h=k;10>h&&(h="0"+h);b=b.replace(/SS/g,h);b=b.replace(/S/g,k);k=l;10>k&&(k="00"+k);100>k&&(k="0"+ -k);h=l;10>h&&(h="00"+h);b=b.replace(/QQQ/g,k);b=b.replace(/QQ/g,h);b=b.replace(/Q/g,l);b=12>g?b.replace(/A/g,"am"):b.replace(/A/g,"pm");b=b.replace(/YYYY/g,"@IIII@");b=b.replace(/YY/g,"@II@");b=b.replace(/MMMM/g,"@XXXX@");b=b.replace(/MMM/g,"@XXX@");b=b.replace(/MM/g,"@XX@");b=b.replace(/M/g,"@X@");b=b.replace(/DD/g,"@RR@");b=b.replace(/D/g,"@R@");b=b.replace(/EEEE/g,"@PPPP@");b=b.replace(/EEE/g,"@PPP@");b=b.replace(/EE/g,"@PP@");b=b.replace(/E/g,"@P@");b=b.replace(/@IIII@/g,c);b=b.replace(/@II@/g, -n);b=b.replace(/@XXXX@/g,AmCharts.monthNames[d]);b=b.replace(/@XXX@/g,AmCharts.shortMonthNames[d]);b=b.replace(/@XX@/g,p);b=b.replace(/@X@/g,d+1);b=b.replace(/@RR@/g,m);b=b.replace(/@R@/g,e);b=b.replace(/@PPPP@/g,AmCharts.dayNames[f]);b=b.replace(/@PPP@/g,AmCharts.shortDayNames[f]);b=b.replace(/@PP@/g,q);return b=b.replace(/@P@/g,f)}; -AmCharts.changeDate=function(a,b,c,d,e){var f=-1;void 0===d&&(d=!0);void 0===e&&(e=!1);!0===d&&(f=1);switch(b){case "YYYY":a.setFullYear(a.getFullYear()+c*f);d||e||a.setDate(a.getDate()+1);break;case "MM":b=a.getMonth();a.setMonth(a.getMonth()+c*f);a.getMonth()>b+c*f&&a.setDate(a.getDate()-1);d||e||a.setDate(a.getDate()+1);break;case "DD":a.setDate(a.getDate()+c*f);break;case "WW":a.setDate(a.getDate()+c*f*7);break;case "hh":a.setHours(a.getHours()+c*f);break;case "mm":a.setMinutes(a.getMinutes()+ -c*f);break;case "ss":a.setSeconds(a.getSeconds()+c*f);break;case "fff":a.setMilliseconds(a.getMilliseconds()+c*f)}return a}; \ No newline at end of file diff --git a/client/amcharts/custom.js b/client/amcharts/custom.js deleted file mode 100644 index 3d9d1a4..0000000 --- a/client/amcharts/custom.js +++ /dev/null @@ -1,80 +0,0 @@ -function CustomChart(startingFrom, cum, chartData) { - - //console.log(data); - - chartData.reverse(); - chartData.forEach(function(entry, i) { - var profit = (entry.cash_out ? entry.cash_out : 0) + (entry.bonus ? entry.bonus : 0) - entry.bet; - cum += profit; - entry.cum_profit = (cum/100); - entry.n = startingFrom+i; - entry.force_color = profit > 0 ? 'green' : 'red'; - }); - - AmCharts.ready(function () { - - function frmt(x) { - var entry = x.dataContext; - var profit = (entry.cash_out ? entry.cash_out : 0) + (entry.bonus ? entry.bonus : 0) - entry.bet; - - var r = "" + - "" + - '' + - "" + - "" + - '' + - "" + - '
Game Id:" + entry.game_id + "
(" + entry.timeago + ")" + - "
Bet:' + (entry.bet/100).toFixed() + ' bits
Crash At:" + (entry.game_crash ? (entry.game_crash/100).toFixed(2) + 'x' : '?') + "
Cashed Out:" + (entry.cash_out ? (entry.cash_out / entry.bet).toFixed(2) + 'x' : '-') + "
Bonus: ' + (entry.bonus ? (entry.bonus/100).toFixed(2) : 0) + ' bits
Profit:" + (profit/100).toFixed(2) + " bits
'; - return r; - - } - - - var chart = AmCharts.makeChart("chartdiv", { - "theme": "none", - "type": "serial", - "autoMargins": false, - "marginLeft": 20, - "marginRight": 8, - "marginTop": 10, - "marginBottom": 26, - "pathToImages": "/amcharts/images/", - "dataProvider": chartData, - "valueAxes": [ - { - "axisAlpha": 0, - "inside": true, - "title": 'Cumulative Net Profit' - } - ], - "graphs": [ - { - "useNegativeColorIfDown": true, - - "bullet": "round", - "bulletBorderAlpha": 1, - "bulletBorderColor": "#FFFFFF", - "balloonFunction": frmt, - "lineThickness": 2, - "lineColor": "green", - "negativeLineColor": "red", - "valueField": "cum_profit", - "colorField": "force_color" - } - ], - "chartCursor": { - cursorColor: "black" - }, - "categoryField": "n" - }); - - chart.addListener("clickGraphItem", function (event) { - var gameId = event.item.dataContext.game_id; - window.location="/game/" + gameId; - }); - - - }); - -} \ No newline at end of file diff --git a/client/amcharts/exporting/amexport.js b/client/amcharts/exporting/amexport.js deleted file mode 100755 index 44bbbb5..0000000 --- a/client/amcharts/exporting/amexport.js +++ /dev/null @@ -1,794 +0,0 @@ -AmCharts.AmExport = AmCharts.Class({ - construct: function(chart, cfg, init ) { - var _this = this; - _this.DEBUG = false; - _this.chart = chart; - _this.canvas = null; - _this.svgs = []; - _this.userCFG = cfg; - - _this.buttonIcon = 'export.png'; - _this.exportPNG = true; - _this.exportPDF = false; - _this.exportJPG = false; - _this.exportSVG = false; - //_this.left; - _this.right = 0; - //_this.bottom; - _this.top = 0; - //_this.color; - _this.buttonRollOverColor = "#EFEFEF"; - //_this.buttonColor = "#FFFFFF"; - //_this.buttonRollOverAlpha = 0.5; - _this.textRollOverColor = "#CC0000"; - _this.buttonTitle = "Save chart as an image"; - _this.buttonAlpha = 0.75; - _this.imageFileName = "amChart"; - _this.imageBackgroundColor = "#FFFFFF"; - - if (init) { - _this.init(); - } - }, - - toCoordinate:function(value){ - if(value === undefined){ - return "auto"; - } - if(String(value).indexOf("%") != -1){ - return value; - } - else{ - return value + "px"; - } - }, - - init: function(){ - var _this = this; - - var formats = []; - if (_this.exportPNG) { - formats.push("png"); - } - if (_this.exportPDF) { - formats.push("pdf"); - } - if (_this.exportJPG) { - formats.push("jpg"); - } - if (_this.exportSVG) { - formats.push("svg"); - } - - var menuItems = []; - if(formats.length == 1){ - var format = formats[0]; - menuItems.push({format:format, iconTitle:_this.buttonTitle, icon:_this.chart.pathToImages + _this.buttonIcon}) - } - else if(formats.length > 1){ - var subItems = []; - for(var i = 0; i < formats.length; i++){ - subItems.push({format:formats[i], title:formats[i].toUpperCase()}); - } - menuItems.push({onclick: function() {}, icon:_this.chart.pathToImages + _this.buttonIcon, items:subItems}) - } - - - var color = _this.color; - if(color === undefined){ - color = _this.chart.color; - } - - var buttonColor = _this.buttonColor; - if(buttonColor === undefined){ - buttonColor = "transparent"; - } - - - _this.cfg = { - menuTop : _this.toCoordinate(_this.top), - menuLeft : _this.toCoordinate(_this.left), - menuRight : _this.toCoordinate(_this.right), - menuBottom : _this.toCoordinate(_this.bottom), - menuItems : menuItems, - menuItemStyle: { - backgroundColor : buttonColor, - opacity :_this.buttonAlpha, - rollOverBackgroundColor : _this.buttonRollOverColor, - color : color, - rollOverColor : _this.textRollOverColor, - paddingTop : '6px', - paddingRight : '6px', - paddingBottom : '6px', - paddingLeft : '6px', - marginTop : '0px', - marginRight : '0px', - marginBottom : '0px', - marginLeft : '0px', - textAlign : 'left', - textDecoration : 'none', - fontFamily : _this.chart.fontFamily, - fontSize : _this.chart.fontSize + 'px' - }, - menuItemOutput: { - backgroundColor : _this.imageBackgroundColor, - fileName : _this.imageFileName, - format : 'png', - output : 'dataurlnewwindow', - render : 'browser', - dpi : 90, - onclick : function(instance, config, event) { - event.preventDefault(); - instance.output(config); - } - }, - removeImagery: true - }; - - _this.processing = { - buffer: [], - drawn: 0, - timer: 0 - }; - - // Config dependency adaption - if (typeof(window.canvg) != 'undefined' && typeof(window.RGBColor) != 'undefined') { - _this.cfg.menuItemOutput.render = 'canvg'; - } - if (typeof(window.saveAs) != 'undefined') { - _this.cfg.menuItemOutput.output = 'save'; - } - if (AmCharts.isIE && AmCharts.IEversion < 10) { - _this.cfg.menuItemOutput.output = 'dataurlnewwindow'; - } - - // Merge given configs - var cfg = _this.userCFG; - if (cfg) { - cfg.menuItemOutput = AmCharts.extend(_this.cfg.menuItemOutput, cfg.menuItemOutput || {}); - cfg.menuItemStyle = AmCharts.extend(_this.cfg.menuItemStyle, cfg.menuItemStyle || {}); - _this.cfg = AmCharts.extend(_this.cfg, cfg); - } - - // Add reference to chart - _this.chart.AmExport = _this; - - // Listen to the drawer - _this.chart.addListener('rendered', function() { - _this.setup(); - }); - - // DEBUG; Public reference - if (_this.DEBUG) { - window.AmExport = _this; - } - }, - - - /* - Simple log function for internal purpose - @param **args - */ - log: function() { - console.log('AmExport: ', arguments); - }, - - /* PUBLIC - Prepares everything to get exported - @param none - */ - setup: function() { - var _this = this; - - if (_this.DEBUG == 10) { - _this.log('SETUP START'); - } // DEBUG - - - if (!AmCharts.isIE || (AmCharts.isIE && AmCharts.IEversion > 9)) { - // Build Buttons - _this.generateButtons(); - if (_this.DEBUG == 10) { - _this.log('SETUP END'); - } // DEBUG - } else { - if (_this.DEBUG == 10) { - _this.log('< IE10 NOT SUPPORTED'); - } // DEBUG - } - }, - - /* PUBLIC - Decodes base64 string to binary array - @param base64_string - @copyright Eli Grey, http://eligrey.com and Devin Samarin, https://github.com/eboyjr - */ - generateBinaryArray: function(base64_string) { - var - len = base64_string.length, - buffer = new Uint8Array(len / 4 * 3 | 0), - i = 0, - outptr = 0, - last = [0, 0], - state = 0, - save = 0, - rank, code, undef, base64_ranks = new Uint8Array([ - 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, 0, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 - ]); - while (len--) { - code = base64_string.charCodeAt(i++); - rank = base64_ranks[code - 43]; - if (rank !== 255 && rank !== undef) { - last[1] = last[0]; - last[0] = code; - save = (save << 6) | rank; - state++; - if (state === 4) { - buffer[outptr++] = save >>> 16; - if (last[1] !== 61 /* padding character */ ) { - buffer[outptr++] = save >>> 8; - } - if (last[0] !== 61 /* padding character */ ) { - buffer[outptr++] = save; - } - state = 0; - } - } - } - // 2/3 chance there's going to be some null bytes at the end, but that - // doesn't really matter with most image formats. - // If it somehow matters for you, truncate the buffer up outptr. - return buffer; - }, - - /* - Creates blob object - @param base64_datastring string - @param type string - */ - generateBlob: function(datastring, type) { - var _this = this, - header_end = type!='image/svg+xml'?datastring.indexOf(',') + 1:0, - header = datastring.substring(0, header_end), - data = datastring, - blob = new Blob(); - - if (header.indexOf('base64') != -1) { - data = _this.generateBinaryArray(datastring.substring(header_end)); - } - - // Fake blob for IE - if (AmCharts.isIE && AmCharts.IEversion < 10) { - blob.data = data; - blob.size = data.length; - blob.type = type; - blob.encoding = 'base64'; - } else { - blob = new Blob([data], { - type: type - }); - } - return blob; - }, - - /* - Creates PDF object - @param config object - */ - generatePDF: function(cfg) { - var _this = this, - pdf = { - output: function() { - return ''; - } - }, - data = _this.canvas.toDataURL('image/jpeg'), // JSPDF ONLY SUPPORTS JPG - width = (_this.canvas.width * 25.4) / cfg.dpi, - height = (_this.canvas.height * 25.4) / cfg.dpi; - - // Check - if (window.jsPDF) { - pdf = new jsPDF(); - if (pdf.addImage) { - pdf.addImage(data, 'JPEG', 0, 0, width, height); - } else { - alert("Missing jsPDF plugin; Please add the 'addImage' plugin."); - } - } else { - alert("Missing jsPDF lib; Don't forget to add the addImage plugin."); - } - - return pdf; - }, - - /* - Creates the CANVAS to receive the image data - @param format void() - @param callback; given callback function which returns the blob or datastring of the configured ouput type - */ - output: function(cfg, externalCallback) { - var _this = this; - cfg = AmCharts.extend(AmCharts.extend({}, _this.cfg.menuItemOutput), cfg || {}); - - if(_this.chart.prepareForExport){ - _this.chart.prepareForExport(); - } - - /* PRIVATE - Callback function which gets called after the drawing process is done - @param none - */ - function internalCallback() { - var data = null; - var blob; - if (_this.DEBUG == 10) { - _this.log('OUTPUT', cfg.format); - } // DEBUG - - // SVG - if (cfg.format == 'image/svg+xml' || cfg.format == 'svg') { - data = _this.generateSVG(); - blob = _this.generateBlob(data, 'image/svg+xml'); - - if (cfg.output == 'save') { - saveAs(blob, cfg.fileName + '.svg'); - } else if (cfg.output == 'datastring' || cfg.output == 'datauristring' || cfg.output == 'dataurlstring') { - blob = 'data:image/svg+xml;base64,' + btoa(data); - } else if (cfg.output == 'dataurlnewwindow') { - window.open('data:image/svg+xml;base64,' + btoa(data)); - } else if (cfg.output == 'datauri' || cfg.output == 'dataurl') { - location.href = 'data:image/svg+xml;base64,' + btoa(data); - } else if (cfg.output == 'datastream') { - location.href = 'data:image/octet-stream;base64,' + data; - } - - if (externalCallback) - externalCallback.apply(_this, [blob]); - - // PDF - } else if (cfg.format == 'application/pdf' || cfg.format == 'pdf') { - data = _this.generatePDF(cfg).output('dataurlstring'); - blob = _this.generateBlob(data, 'application/pdf'); - - if (cfg.output == 'save') { - saveAs(blob, cfg.fileName + '.pdf'); - } else if (cfg.output == 'datastring' || cfg.output == 'datauristring' || cfg.output == 'dataurlstring') { - blob = data; - } else if (cfg.output == 'dataurlnewwindow') { - window.open(data); - } else if (cfg.output == 'datauri' || cfg.output == 'dataurl') { - location.href = data; - } else if (cfg.output == 'datastream') { - location.href = data.replace('application/pdf', 'application/octet-stream'); - } - - if (externalCallback) - externalCallback.apply(_this, [blob]); - - // PNG - } else if (cfg.format == 'image/png' || cfg.format == 'png') { - data = _this.canvas.toDataURL('image/png'); - blob = _this.generateBlob(data, 'image/png'); - - if (cfg.output == 'save') { - saveAs(blob, cfg.fileName + '.png'); - } else if (cfg.output == 'datastring' || cfg.output == 'datauristring' || cfg.output == 'dataurlstring') { - blob = data; - } else if (cfg.output == 'dataurlnewwindow') { - window.open(data); - } else if (cfg.output == 'datauri' || cfg.output == 'dataurl') { - location.href = data; - } else if (cfg.output == 'datastream') { - location.href = data.replace('image/png', 'image/octet-stream'); - } - - if (externalCallback) - externalCallback.apply(_this, [blob]); - - // JPG - } else if (cfg.format == 'image/jpeg' || cfg.format == 'jpeg' || cfg.format == 'jpg') { - data = _this.canvas.toDataURL('image/jpeg'); - blob = _this.generateBlob(data, 'image/jpeg'); - - if (cfg.output == 'save') { - saveAs(blob, cfg.fileName + '.jpg'); - } else if (cfg.output == 'datastring' || cfg.output == 'datauristring' || cfg.output == 'dataurlstring') { - blob = data; - } else if (cfg.output == 'dataurlnewwindow') { - window.open(data); - } else if (cfg.output == 'datauri' || cfg.output == 'dataurl') { - location.href = data; - } else if (cfg.output == 'datastream') { - location.href = data.replace('image/jpeg', 'image/octet-stream'); - } - - if (externalCallback) - externalCallback.apply(_this, [blob]); - } - - } - - return _this.generateOutput(cfg, internalCallback); - }, - - /* PUBLIC - Polifies missing attributes to the SVG and replaces images to embedded base64 images - @param none - */ - polifySVG: function(svg) { - var _this = this; - - // Recursive function to force the attributes - function recursiveChange(svg, tag) { - var items = svg.getElementsByTagName(tag); - var i = items.length; - - while(i--) { - if (_this.cfg.removeImagery) { - items[i].parentNode.removeChild(items[i]); - - } else { - var image = document.createElement('img'); - var canvas = document.createElement('canvas'); - var ctx = canvas.getContext('2d'); - - canvas.width = items[i].getAttribute('width'); - canvas.height = items[i].getAttribute('height'); - image.src = items[i].getAttribute('xlink:href'); - image.width = items[i].getAttribute('width'); - image.height = items[i].getAttribute('height'); - - try { - ctx.drawImage(image, 0, 0, image.width, image.height); - datastring = canvas.toDataURL(); // image.src; // canvas.toDataURL(); // - } catch (err) { - datastring = image.src; // image.src; // canvas.toDataURL(); // - - _this.log('Tainted canvas, reached browser CORS security; origin from imagery must be equal to the server!'); - throw new Error(err); - } - - items[i].setAttribute('xlink:href', datastring); - } - - if (_this.DEBUG == 10) { - _this.log('POLIFIED', items[i]); - } // DEBUG - } - } - - // Put some attrs to it; fixed 20/03/14 xmlns is required to produce a valid svg file - if (AmCharts.IEversion == 0) { - svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg'); - if ( !_this.cfg.removeImagery ) { - svg.setAttribute('xmlns:xlink','http://www.w3.org/1999/xlink'); - } - } - - // DEBUG - if (_this.DEBUG == 10) { - _this.log('POLIFIED', svg); - } - - // Force link adaption - recursiveChange(svg, 'pattern'); - recursiveChange(svg, 'image'); - - _this.svgs.push(svg); - - return svg; - }, - - - /* PUBLIC - Stacks multiple SVGs into one - @param none - */ - generateSVG: function() { - var _this = this; - var context = document.createElement('svg'); - context.setAttribute('xmlns', 'http://www.w3.org/2000/svg'); - context.setAttribute('xmlns:xlink','http://www.w3.org/1999/xlink'); - - for (var i = 0; i < _this.processing.buffer.length; i++) { - var group = document.createElement('g'), - data = _this.processing.buffer[i]; - - data[0].setAttribute('xmlns', 'http://www.w3.org/2000/svg'); - data[0].setAttribute('xmlns:xlink','http://www.w3.org/1999/xlink'); - - group.setAttribute('transform', 'translate('+data[1].x+','+data[1].y+')'); - group.appendChild(data[0]); - context.appendChild(group); - } - - return new XMLSerializer().serializeToString(context); - }, - - /* PUBLIC - Generates the canvas with the given SVGs and configured renderer - @param callback; function(); gets called after drawing process on the canvas has been finished - */ - generateOutput: function(cfg, callback) { - var _this = this, - svgs = _this.chart.div.getElementsByTagName('svg'), - canvas = document.createElement('canvas'), - context = canvas.getContext('2d'), - offset = { - y: 0, - x: 0 - }, - tmp = {}; - - // Reset - _this.processing.buffer = []; - _this.processing.drawn = 0; - _this.canvas = canvas; - _this.svgs = []; - - // Walkthroug SVGs - if (_this.DEBUG == 10) { - _this.log('START EXPORT'); - } // DEBUG - if (_this.DEBUG == 10) { - _this.log('START BUFFERING'); - } // DEBUG - for (var i = 0; i < svgs.length; i++) { - var parent = svgs[i].parentNode, - svgX = Number(parent.style.left.slice(0, -2)), - svgY = Number(parent.style.top.slice(0, -2)), - svgClone = _this.polifySVG(svgs[i].cloneNode(true)), - tmp = AmCharts.extend({}, offset); - - // Overtake parent position if given; fixed 20/03/14 distinguish between relativ and others - if (parent.style.position == 'relative') { - offset.x = svgX ? svgX : offset.x; - offset.y = svgY ? svgY : offset.y; - } else { - offset.x = svgX; - offset.y = svgY; - } - - _this.processing.buffer.push([svgClone, AmCharts.extend({}, offset)]); - - // Put back from "cache" - if (svgY && svgX) { - offset = tmp; - - // New offset for next one - } else { - offset.y += svgY ? 0 : parent.offsetHeight; - } - - if (_this.DEBUG == 10) { - _this.log('BUFFERED', svgs[i], offset); - } // DEBUG - } - if (_this.DEBUG == 10) { - _this.log('END BUFFERING'); - } // DEBUG - - // Apply background - if (_this.DEBUG == 10) { - _this.log('START DRAWING', cfg.render); - } // DEBUG - if (_this.DEBUG == 10) { - _this.log('FILL BACKGROUND'); - } // DEBUG - canvas.id = AmCharts.getUniqueId(); - canvas.width = _this.chart.divRealWidth; - canvas.height = _this.chart.divRealHeight; - - - // Stockchart exception - var adapted = { - width: false, - height: false - }; - if ( _this.chart.periodSelector ) { - if ( ['left','right'].indexOf(_this.chart.periodSelector.position) != -1 ) { - canvas.width -= _this.chart.periodSelector.div.offsetWidth + 16; - adapted.width = true; - } else { - canvas.height -= _this.chart.periodSelector.div.offsetHeight; - adapted.height = true; - } - } - - if ( _this.chart.dataSetSelector ) { - if ( ['left','right'].indexOf(_this.chart.dataSetSelector.position) != -1 ) { - if ( !adapted.width ) { - canvas.width -= _this.chart.dataSetSelector.div.offsetWidth + 16; - } - } else { - canvas.height -= _this.chart.dataSetSelector.div.offsetHeight; - } - } - - // Set given background; jpeg default - if (cfg.backgroundColor || cfg.format == 'image/jpeg') { - context.fillStyle = cfg.backgroundColor || '#FFFFFF'; - context.fillRect(0, 0, canvas.width, canvas.height); - } - - /* PRIVATE - Recursive function to draw the images to the canvas; - @param none; - */ - function drawItWhenItsLoaded() { - var img, buffer, offset, source; - - // DRAWING PROCESS DONE - if (_this.processing.buffer.length == _this.processing.drawn || cfg.format == 'svg' ) { - if (_this.DEBUG == 10) { - _this.log('END DRAWING'); - } // DEBUG - return callback(); - - // LOOPING LUI - } else { - if (_this.DEBUG == 10) { - _this.log('DRAW', _this.processing.drawn + 1, 'OF', _this.processing.buffer.length); - } // DEBUG - - buffer = _this.processing.buffer[_this.processing.drawn]; - source = new XMLSerializer().serializeToString(buffer[0]); //source = 'data:image/svg+xml;base64,' + btoa(); - offset = buffer[1]; - - if (_this.DEBUG == 10) { - _this.log('SOURCE', source); - } // DEBUG - - // NATIVE - if (cfg.render == 'browser') { - img = new Image(); - img.id = AmCharts.getUniqueId(); - source = 'data:image/svg+xml;base64,' + btoa(source); - - //img.crossOrigin = "Anonymous"; - img.onload = function() { - context.drawImage(this, buffer[1].x, buffer[1].y); - _this.processing.drawn++; - - if (_this.DEBUG == 10) { - _this.log('ONLOAD', this); - } // DEBUG - drawItWhenItsLoaded(); - }; - img.onerror = function() { - if (_this.DEBUG == 10) { - _this.log('ONERROR', this); - } // DEBUG - context.drawImage(this, buffer[1].x, buffer[1].y); - _this.processing.drawn++; - drawItWhenItsLoaded(); - }; - img.src = source; - - if (_this.DEBUG == 10) { - _this.log('ADD', img); - } // DEBUG - if (img.complete || typeof(img.complete) == 'undefined' || img.complete === undefined) { - if (_this.DEBUG == 10) { - _this.log('FORCE ONLOAD', img); - } // DEBUG - img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="; - img.src = source; - } - - // CANVG - } else if (cfg.render == 'canvg') { - canvg(canvas, source, { - offsetX: offset.x, - offsetY: offset.y, - ignoreMouse: true, - ignoreAnimation: true, - ignoreDimensions: true, - ignoreClear: true, - renderCallback: function() { - _this.processing.drawn++; - drawItWhenItsLoaded(); - } - }); - } - } - } - return drawItWhenItsLoaded(); - }, - - /* - Generates the export menu to trigger the exportation - @param none; - */ - generateButtons: function() { - var _this = this, - div = document.createElement('div'), - lvl = 0; - - // Push sublings - function createList(items) { - var ul = document.createElement('ul'); - - ul.setAttribute('style', 'list-style: none; margin: 0; padding: 0;'); - - // Walkthrough items - for (var i = 0; i < items.length; i++) { - var li = document.createElement('li'), - img = document.createElement('img'), - a = document.createElement('a'), - item = items[i], - children = null, - itemStyle = AmCharts.extend(AmCharts.extend({}, _this.cfg.menuItemStyle), items[i]); - - // MERGE CFG - item = AmCharts.extend(AmCharts.extend({}, _this.cfg.menuItemOutput), item); - - // ICON - if (item['icon']) { - img.alt = ''; - img.src = item['icon']; - img.setAttribute('style', 'margin: 0 auto;border: none;outline: none'); - if (item['iconTitle']) { - img.title = item['iconTitle']; - } - a.appendChild(img); - } - - // TITLE; STYLING - a.href = '#'; - if (item['title']) { - img.setAttribute('style', 'margin-right: 5px;'); - a.innerHTML += item.title; - } - a.setAttribute('style', 'display: block;'); - AmCharts.extend(a.style, itemStyle); - - // ONCLICK - a.onclick = item.onclick.bind(a, _this, item); - li.appendChild(a); - - // APPEND SIBLINGS - if (item.items) { - children = createList(item.items); - li.appendChild(children); - - li.onmouseover = function() { - children.style.display = 'block'; - }; - li.onmouseout = function() { - children.style.display = 'none'; - }; - children.style.display = 'none'; - } - - // Append to parent - ul.appendChild(li); - - // Apply hover - a.onmouseover = function() { - this.style.backgroundColor = itemStyle.rollOverBackgroundColor; - this.style.color = itemStyle.rollOverColor; - this.style.borderColor = itemStyle.rollOverBorderColor; - }; - a.onmouseout = function() { - this.style.backgroundColor = itemStyle.backgroundColor; - this.style.color = itemStyle.color; - this.style.borderColor = itemStyle.borderColor; - }; - } - lvl++; - - if (_this.DEBUG == 10) { - _this.log('MENU', ul); - } // DEBUG - - return ul; - } - - // Style wrapper; Push into chart div - div.setAttribute('style', 'width:39px; height:28px; position: absolute;top:' + _this.cfg.menuTop + ';right:' + _this.cfg.menuRight + ';bottom:' + _this.cfg.menuBottom + ';left:' + _this.cfg.menuLeft + ';box-shadow:0px 0px 1px 0px rgba(0,0,0,0);'); - div.setAttribute('class', 'amExportButton'); - div.appendChild(createList(_this.cfg.menuItems)); - _this.chart.containerDiv.appendChild(div); - } -}); \ No newline at end of file diff --git a/client/amcharts/exporting/canvg.js b/client/amcharts/exporting/canvg.js deleted file mode 100755 index e9f35e0..0000000 --- a/client/amcharts/exporting/canvg.js +++ /dev/null @@ -1,2842 +0,0 @@ -/* - * canvg.js - Javascript SVG parser and renderer on Canvas - * MIT Licensed - * Gabe Lerner (gabelerner@gmail.com) - * http://code.google.com/p/canvg/ - * - * Requires: rgbcolor.js - http://www.phpied.com/rgb-color-parser-in-javascript/ - */ -(function(){ - // canvg(target, s) - // empty parameters: replace all 'svg' elements on page with 'canvas' elements - // target: canvas element or the id of a canvas element - // s: svg string, url to svg file, or xml document - // opts: optional hash of options - // ignoreMouse: true => ignore mouse events - // ignoreAnimation: true => ignore animations - // ignoreDimensions: true => does not try to resize canvas - // ignoreClear: true => does not clear canvas - // offsetX: int => draws at a x offset - // offsetY: int => draws at a y offset - // scaleWidth: int => scales horizontally to width - // scaleHeight: int => scales vertically to height - // renderCallback: function => will call the function after the first render is completed - // forceRedraw: function => will call the function on every frame, if it returns true, will redraw - this.canvg = function (target, s, opts) { - // no parameters - if (target == null && s == null && opts == null) { - var svgTags = document.getElementsByTagName('svg'); - for (var i=0; i]*>/, ''); - var xmlDoc = new ActiveXObject('Microsoft.XMLDOM'); - xmlDoc.async = 'false'; - xmlDoc.loadXML(xml); - return xmlDoc; - } - } - - svg.Property = function(name, value) { - this.name = name; - this.value = value; - } - svg.Property.prototype.getValue = function() { - return this.value; - } - - svg.Property.prototype.hasValue = function() { - return (this.value != null && this.value !== ''); - } - - // return the numerical value of the property - svg.Property.prototype.numValue = function() { - if (!this.hasValue()) return 0; - - var n = parseFloat(this.value); - if ((this.value + '').match(/%$/)) { - n = n / 100.0; - } - return n; - } - - svg.Property.prototype.valueOrDefault = function(def) { - if (this.hasValue()) return this.value; - return def; - } - - svg.Property.prototype.numValueOrDefault = function(def) { - if (this.hasValue()) return this.numValue(); - return def; - } - - // color extensions - // augment the current color value with the opacity - svg.Property.prototype.addOpacity = function(opacity) { - var newValue = this.value; - if (opacity != null && opacity != '' && typeof(this.value)=='string') { // can only add opacity to colors, not patterns - var color = new RGBColor(this.value); - if (color.ok) { - newValue = 'rgba(' + color.r + ', ' + color.g + ', ' + color.b + ', ' + opacity + ')'; - } - } - return new svg.Property(this.name, newValue); - } - - // definition extensions - // get the definition from the definitions table - svg.Property.prototype.getDefinition = function() { - var name = this.value.match(/#([^\)'"]+)/); - if (name) { name = name[1]; } - if (!name) { name = this.value; } - return svg.Definitions[name]; - } - - svg.Property.prototype.isUrlDefinition = function() { - return this.value.indexOf('url(') == 0 - } - - svg.Property.prototype.getFillStyleDefinition = function(e, opacityProp) { - var def = this.getDefinition(); - - // gradient - if (def != null && def.createGradient) { - return def.createGradient(svg.ctx, e, opacityProp); - } - - // pattern - if (def != null && def.createPattern) { - if (def.getHrefAttribute().hasValue()) { - var pt = def.attribute('patternTransform'); - def = def.getHrefAttribute().getDefinition(); - if (pt.hasValue()) { def.attribute('patternTransform', true).value = pt.value; } - } - return def.createPattern(svg.ctx, e); - } - - return null; - } - - // length extensions - svg.Property.prototype.getDPI = function(viewPort) { - return 96.0; // TODO: compute? - } - - svg.Property.prototype.getEM = function(viewPort) { - var em = 12; - - var fontSize = new svg.Property('fontSize', svg.Font.Parse(svg.ctx.font).fontSize); - if (fontSize.hasValue()) em = fontSize.toPixels(viewPort); - - return em; - } - - svg.Property.prototype.getUnits = function() { - var s = this.value+''; - return s.replace(/[0-9\.\-]/g,''); - } - - // get the length as pixels - svg.Property.prototype.toPixels = function(viewPort, processPercent) { - if (!this.hasValue()) return 0; - var s = this.value+''; - if (s.match(/em$/)) return this.numValue() * this.getEM(viewPort); - if (s.match(/ex$/)) return this.numValue() * this.getEM(viewPort) / 2.0; - if (s.match(/px$/)) return this.numValue(); - if (s.match(/pt$/)) return this.numValue() * this.getDPI(viewPort) * (1.0 / 72.0); - if (s.match(/pc$/)) return this.numValue() * 15; - if (s.match(/cm$/)) return this.numValue() * this.getDPI(viewPort) / 2.54; - if (s.match(/mm$/)) return this.numValue() * this.getDPI(viewPort) / 25.4; - if (s.match(/in$/)) return this.numValue() * this.getDPI(viewPort); - if (s.match(/%$/)) return this.numValue() * svg.ViewPort.ComputeSize(viewPort); - var n = this.numValue(); - if (processPercent && n < 1.0) return n * svg.ViewPort.ComputeSize(viewPort); - return n; - } - - // time extensions - // get the time as milliseconds - svg.Property.prototype.toMilliseconds = function() { - if (!this.hasValue()) return 0; - var s = this.value+''; - if (s.match(/s$/)) return this.numValue() * 1000; - if (s.match(/ms$/)) return this.numValue(); - return this.numValue(); - } - - // angle extensions - // get the angle as radians - svg.Property.prototype.toRadians = function() { - if (!this.hasValue()) return 0; - var s = this.value+''; - if (s.match(/deg$/)) return this.numValue() * (Math.PI / 180.0); - if (s.match(/grad$/)) return this.numValue() * (Math.PI / 200.0); - if (s.match(/rad$/)) return this.numValue(); - return this.numValue() * (Math.PI / 180.0); - } - - // fonts - svg.Font = new (function() { - this.Styles = 'normal|italic|oblique|inherit'; - this.Variants = 'normal|small-caps|inherit'; - this.Weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit'; - - this.CreateFont = function(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) { - var f = inherit != null ? this.Parse(inherit) : this.CreateFont('', '', '', '', '', svg.ctx.font); - return { - fontFamily: fontFamily || f.fontFamily, - fontSize: fontSize || f.fontSize, - fontStyle: fontStyle || f.fontStyle, - fontWeight: fontWeight || f.fontWeight, - fontVariant: fontVariant || f.fontVariant, - toString: function () { return [this.fontStyle, this.fontVariant, this.fontWeight, this.fontSize, this.fontFamily].join(' ') } - } - } - - var that = this; - this.Parse = function(s) { - var f = {}; - var d = svg.trim(svg.compressSpaces(s || '')).split(' '); - var set = { fontSize: false, fontStyle: false, fontWeight: false, fontVariant: false } - var ff = ''; - for (var i=0; i this.x2) this.x2 = x; - } - - if (y != null) { - if (isNaN(this.y1) || isNaN(this.y2)) { - this.y1 = y; - this.y2 = y; - } - if (y < this.y1) this.y1 = y; - if (y > this.y2) this.y2 = y; - } - } - this.addX = function(x) { this.addPoint(x, null); } - this.addY = function(y) { this.addPoint(null, y); } - - this.addBoundingBox = function(bb) { - this.addPoint(bb.x1, bb.y1); - this.addPoint(bb.x2, bb.y2); - } - - this.addQuadraticCurve = function(p0x, p0y, p1x, p1y, p2x, p2y) { - var cp1x = p0x + 2/3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0) - var cp1y = p0y + 2/3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0) - var cp2x = cp1x + 1/3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0) - var cp2y = cp1y + 1/3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0) - this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y); - } - - this.addBezierCurve = function(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) { - // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html - var p0 = [p0x, p0y], p1 = [p1x, p1y], p2 = [p2x, p2y], p3 = [p3x, p3y]; - this.addPoint(p0[0], p0[1]); - this.addPoint(p3[0], p3[1]); - - for (i=0; i<=1; i++) { - var f = function(t) { - return Math.pow(1-t, 3) * p0[i] - + 3 * Math.pow(1-t, 2) * t * p1[i] - + 3 * (1-t) * Math.pow(t, 2) * p2[i] - + Math.pow(t, 3) * p3[i]; - } - - var b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i]; - var a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i]; - var c = 3 * p1[i] - 3 * p0[i]; - - if (a == 0) { - if (b == 0) continue; - var t = -c / b; - if (0 < t && t < 1) { - if (i == 0) this.addX(f(t)); - if (i == 1) this.addY(f(t)); - } - continue; - } - - var b2ac = Math.pow(b, 2) - 4 * c * a; - if (b2ac < 0) continue; - var t1 = (-b + Math.sqrt(b2ac)) / (2 * a); - if (0 < t1 && t1 < 1) { - if (i == 0) this.addX(f(t1)); - if (i == 1) this.addY(f(t1)); - } - var t2 = (-b - Math.sqrt(b2ac)) / (2 * a); - if (0 < t2 && t2 < 1) { - if (i == 0) this.addX(f(t2)); - if (i == 1) this.addY(f(t2)); - } - } - } - - this.isPointInBox = function(x, y) { - return (this.x1 <= x && x <= this.x2 && this.y1 <= y && y <= this.y2); - } - - this.addPoint(x1, y1); - this.addPoint(x2, y2); - } - - // transforms - svg.Transform = function(v) { - var that = this; - this.Type = {} - - // translate - this.Type.translate = function(s) { - this.p = svg.CreatePoint(s); - this.apply = function(ctx) { - ctx.translate(this.p.x || 0.0, this.p.y || 0.0); - } - this.unapply = function(ctx) { - ctx.translate(-1.0 * this.p.x || 0.0, -1.0 * this.p.y || 0.0); - } - this.applyToPoint = function(p) { - p.applyTransform([1, 0, 0, 1, this.p.x || 0.0, this.p.y || 0.0]); - } - } - - // rotate - this.Type.rotate = function(s) { - var a = svg.ToNumberArray(s); - this.angle = new svg.Property('angle', a[0]); - this.cx = a[1] || 0; - this.cy = a[2] || 0; - this.apply = function(ctx) { - ctx.translate(this.cx, this.cy); - ctx.rotate(this.angle.toRadians()); - ctx.translate(-this.cx, -this.cy); - } - this.unapply = function(ctx) { - ctx.translate(this.cx, this.cy); - ctx.rotate(-1.0 * this.angle.toRadians()); - ctx.translate(-this.cx, -this.cy); - } - this.applyToPoint = function(p) { - var a = this.angle.toRadians(); - p.applyTransform([1, 0, 0, 1, this.p.x || 0.0, this.p.y || 0.0]); - p.applyTransform([Math.cos(a), Math.sin(a), -Math.sin(a), Math.cos(a), 0, 0]); - p.applyTransform([1, 0, 0, 1, -this.p.x || 0.0, -this.p.y || 0.0]); - } - } - - this.Type.scale = function(s) { - this.p = svg.CreatePoint(s); - this.apply = function(ctx) { - ctx.scale(this.p.x || 1.0, this.p.y || this.p.x || 1.0); - } - this.unapply = function(ctx) { - ctx.scale(1.0 / this.p.x || 1.0, 1.0 / this.p.y || this.p.x || 1.0); - } - this.applyToPoint = function(p) { - p.applyTransform([this.p.x || 0.0, 0, 0, this.p.y || 0.0, 0, 0]); - } - } - - this.Type.matrix = function(s) { - this.m = svg.ToNumberArray(s); - this.apply = function(ctx) { - ctx.transform(this.m[0], this.m[1], this.m[2], this.m[3], this.m[4], this.m[5]); - } - this.applyToPoint = function(p) { - p.applyTransform(this.m); - } - } - - this.Type.SkewBase = function(s) { - this.base = that.Type.matrix; - this.base(s); - this.angle = new svg.Property('angle', s); - } - this.Type.SkewBase.prototype = new this.Type.matrix; - - this.Type.skewX = function(s) { - this.base = that.Type.SkewBase; - this.base(s); - this.m = [1, 0, Math.tan(this.angle.toRadians()), 1, 0, 0]; - } - this.Type.skewX.prototype = new this.Type.SkewBase; - - this.Type.skewY = function(s) { - this.base = that.Type.SkewBase; - this.base(s); - this.m = [1, Math.tan(this.angle.toRadians()), 0, 1, 0, 0]; - } - this.Type.skewY.prototype = new this.Type.SkewBase; - - this.transforms = []; - - this.apply = function(ctx) { - for (var i=0; i=0; i--) { - this.transforms[i].unapply(ctx); - } - } - - this.applyToPoint = function(p) { - for (var i=0; i= this.tokens.length - 1; - } - - this.isCommandOrEnd = function() { - if (this.isEnd()) return true; - return this.tokens[this.i + 1].match(/^[A-Za-z]$/) != null; - } - - this.isRelativeCommand = function() { - switch(this.command) - { - case 'm': - case 'l': - case 'h': - case 'v': - case 'c': - case 's': - case 'q': - case 't': - case 'a': - case 'z': - return true; - break; - } - return false; - } - - this.getToken = function() { - this.i++; - return this.tokens[this.i]; - } - - this.getScalar = function() { - return parseFloat(this.getToken()); - } - - this.nextCommand = function() { - this.previousCommand = this.command; - this.command = this.getToken(); - } - - this.getPoint = function() { - var p = new svg.Point(this.getScalar(), this.getScalar()); - return this.makeAbsolute(p); - } - - this.getAsControlPoint = function() { - var p = this.getPoint(); - this.control = p; - return p; - } - - this.getAsCurrentPoint = function() { - var p = this.getPoint(); - this.current = p; - return p; - } - - this.getReflectedControlPoint = function() { - if (this.previousCommand.toLowerCase() != 'c' && - this.previousCommand.toLowerCase() != 's' && - this.previousCommand.toLowerCase() != 'q' && - this.previousCommand.toLowerCase() != 't' ){ - return this.current; - } - - // reflect point - var p = new svg.Point(2 * this.current.x - this.control.x, 2 * this.current.y - this.control.y); - return p; - } - - this.makeAbsolute = function(p) { - if (this.isRelativeCommand()) { - p.x += this.current.x; - p.y += this.current.y; - } - return p; - } - - this.addMarker = function(p, from, priorTo) { - // if the last angle isn't filled in because we didn't have this point yet ... - if (priorTo != null && this.angles.length > 0 && this.angles[this.angles.length-1] == null) { - this.angles[this.angles.length-1] = this.points[this.points.length-1].angleTo(priorTo); - } - this.addMarkerAngle(p, from == null ? null : from.angleTo(p)); - } - - this.addMarkerAngle = function(p, a) { - this.points.push(p); - this.angles.push(a); - } - - this.getMarkerPoints = function() { return this.points; } - this.getMarkerAngles = function() { - for (var i=0; i 1) { - rx *= Math.sqrt(l); - ry *= Math.sqrt(l); - } - // cx', cy' - var s = (largeArcFlag == sweepFlag ? -1 : 1) * Math.sqrt( - ((Math.pow(rx,2)*Math.pow(ry,2))-(Math.pow(rx,2)*Math.pow(currp.y,2))-(Math.pow(ry,2)*Math.pow(currp.x,2))) / - (Math.pow(rx,2)*Math.pow(currp.y,2)+Math.pow(ry,2)*Math.pow(currp.x,2)) - ); - if (isNaN(s)) s = 0; - var cpp = new svg.Point(s * rx * currp.y / ry, s * -ry * currp.x / rx); - // cx, cy - var centp = new svg.Point( - (curr.x + cp.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, - (curr.y + cp.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y - ); - // vector magnitude - var m = function(v) { return Math.sqrt(Math.pow(v[0],2) + Math.pow(v[1],2)); } - // ratio between two vectors - var r = function(u, v) { return (u[0]*v[0]+u[1]*v[1]) / (m(u)*m(v)) } - // angle between two vectors - var a = function(u, v) { return (u[0]*v[1] < u[1]*v[0] ? -1 : 1) * Math.acos(r(u,v)); } - // initial angle - var a1 = a([1,0], [(currp.x-cpp.x)/rx,(currp.y-cpp.y)/ry]); - // angle delta - var u = [(currp.x-cpp.x)/rx,(currp.y-cpp.y)/ry]; - var v = [(-currp.x-cpp.x)/rx,(-currp.y-cpp.y)/ry]; - var ad = a(u, v); - if (r(u,v) <= -1) ad = Math.PI; - if (r(u,v) >= 1) ad = 0; - - // for markers - var dir = 1 - sweepFlag ? 1.0 : -1.0; - var ah = a1 + dir * (ad / 2.0); - var halfWay = new svg.Point( - centp.x + rx * Math.cos(ah), - centp.y + ry * Math.sin(ah) - ); - pp.addMarkerAngle(halfWay, ah - dir * Math.PI / 2); - pp.addMarkerAngle(cp, ah - dir * Math.PI); - - bb.addPoint(cp.x, cp.y); // TODO: this is too naive, make it better - if (ctx != null) { - var r = rx > ry ? rx : ry; - var sx = rx > ry ? 1 : rx / ry; - var sy = rx > ry ? ry / rx : 1; - - ctx.translate(centp.x, centp.y); - ctx.rotate(xAxisRotation); - ctx.scale(sx, sy); - ctx.arc(0, 0, r, a1, a1 + ad, 1 - sweepFlag); - ctx.scale(1/sx, 1/sy); - ctx.rotate(-xAxisRotation); - ctx.translate(-centp.x, -centp.y); - } - } - break; - case 'Z': - case 'z': - if (ctx != null) ctx.closePath(); - pp.current = pp.start; - } - } - - return bb; - } - - this.getMarkers = function() { - var points = this.PathParser.getMarkerPoints(); - var angles = this.PathParser.getMarkerAngles(); - - var markers = []; - for (var i=0; i 1) this.offset = 1; - - var stopColor = this.style('stop-color'); - if (this.style('stop-opacity').hasValue()) stopColor = stopColor.addOpacity(this.style('stop-opacity').value); - this.color = stopColor.value; - } - svg.Element.stop.prototype = new svg.Element.ElementBase; - - // animation base element - svg.Element.AnimateBase = function(node) { - this.base = svg.Element.ElementBase; - this.base(node); - - svg.Animations.push(this); - - this.duration = 0.0; - this.begin = this.attribute('begin').toMilliseconds(); - this.maxDuration = this.begin + this.attribute('dur').toMilliseconds(); - - this.getProperty = function() { - var attributeType = this.attribute('attributeType').value; - var attributeName = this.attribute('attributeName').value; - - if (attributeType == 'CSS') { - return this.parent.style(attributeName, true); - } - return this.parent.attribute(attributeName, true); - }; - - this.initialValue = null; - this.initialUnits = ''; - this.removed = false; - - this.calcValue = function() { - // OVERRIDE ME! - return ''; - } - - this.update = function(delta) { - // set initial value - if (this.initialValue == null) { - this.initialValue = this.getProperty().value; - this.initialUnits = this.getProperty().getUnits(); - } - - // if we're past the end time - if (this.duration > this.maxDuration) { - // loop for indefinitely repeating animations - if (this.attribute('repeatCount').value == 'indefinite' - || this.attribute('repeatDur').value == 'indefinite') { - this.duration = 0.0 - } - else if (this.attribute('fill').valueOrDefault('remove') == 'remove' && !this.removed) { - this.removed = true; - this.getProperty().value = this.initialValue; - return true; - } - else { - return false; // no updates made - } - } - this.duration = this.duration + delta; - - // if we're past the begin time - var updated = false; - if (this.begin < this.duration) { - var newValue = this.calcValue(); // tween - - if (this.attribute('type').hasValue()) { - // for transform, etc. - var type = this.attribute('type').value; - newValue = type + '(' + newValue + ')'; - } - - this.getProperty().value = newValue; - updated = true; - } - - return updated; - } - - this.from = this.attribute('from'); - this.to = this.attribute('to'); - this.values = this.attribute('values'); - if (this.values.hasValue()) this.values.value = this.values.value.split(';'); - - // fraction of duration we've covered - this.progress = function() { - var ret = { progress: (this.duration - this.begin) / (this.maxDuration - this.begin) }; - if (this.values.hasValue()) { - var p = ret.progress * (this.values.value.length - 1); - var lb = Math.floor(p), ub = Math.ceil(p); - ret.from = new svg.Property('from', parseFloat(this.values.value[lb])); - ret.to = new svg.Property('to', parseFloat(this.values.value[ub])); - ret.progress = (p - lb) / (ub - lb); - } - else { - ret.from = this.from; - ret.to = this.to; - } - return ret; - } - } - svg.Element.AnimateBase.prototype = new svg.Element.ElementBase; - - // animate element - svg.Element.animate = function(node) { - this.base = svg.Element.AnimateBase; - this.base(node); - - this.calcValue = function() { - var p = this.progress(); - - // tween value linearly - var newValue = p.from.numValue() + (p.to.numValue() - p.from.numValue()) * p.progress; - return newValue + this.initialUnits; - }; - } - svg.Element.animate.prototype = new svg.Element.AnimateBase; - - // animate color element - svg.Element.animateColor = function(node) { - this.base = svg.Element.AnimateBase; - this.base(node); - - this.calcValue = function() { - var p = this.progress(); - var from = new RGBColor(p.from.value); - var to = new RGBColor(p.to.value); - - if (from.ok && to.ok) { - // tween color linearly - var r = from.r + (to.r - from.r) * p.progress; - var g = from.g + (to.g - from.g) * p.progress; - var b = from.b + (to.b - from.b) * p.progress; - return 'rgb('+parseInt(r,10)+','+parseInt(g,10)+','+parseInt(b,10)+')'; - } - return this.attribute('from').value; - }; - } - svg.Element.animateColor.prototype = new svg.Element.AnimateBase; - - // animate transform element - svg.Element.animateTransform = function(node) { - this.base = svg.Element.AnimateBase; - this.base(node); - - this.calcValue = function() { - var p = this.progress(); - - // tween value linearly - var from = svg.ToNumberArray(p.from.value); - var to = svg.ToNumberArray(p.to.value); - var newValue = ''; - for (var i=0; i startI && child.attribute('x').hasValue()) break; // new group - width += child.measureTextRecursive(ctx); - } - return -1 * (textAnchor == 'end' ? width : width / 2.0); - } - return 0; - } - - this.renderChild = function(ctx, parent, i) { - var child = parent.children[i]; - if (child.attribute('x').hasValue()) { - child.x = child.attribute('x').toPixels('x') + this.getAnchorDelta(ctx, parent, i); - } - else { - if (this.attribute('dx').hasValue()) this.x += this.attribute('dx').toPixels('x'); - if (child.attribute('dx').hasValue()) this.x += child.attribute('dx').toPixels('x'); - child.x = this.x; - } - this.x = child.x + child.measureText(ctx); - - if (child.attribute('y').hasValue()) { - child.y = child.attribute('y').toPixels('y'); - } - else { - if (this.attribute('dy').hasValue()) this.y += this.attribute('dy').toPixels('y'); - if (child.attribute('dy').hasValue()) this.y += child.attribute('dy').toPixels('y'); - child.y = this.y; - } - this.y = child.y; - - child.render(ctx); - - for (var i=0; i0 && text[i-1]!=' ' && i0 && text[i-1]!=' ' && (i == text.length-1 || text[i+1]==' ')) arabicForm = 'initial'; - if (typeof(font.glyphs[c]) != 'undefined') { - glyph = font.glyphs[c][arabicForm]; - if (glyph == null && font.glyphs[c].type == 'glyph') glyph = font.glyphs[c]; - } - } - else { - glyph = font.glyphs[c]; - } - if (glyph == null) glyph = font.missingGlyph; - return glyph; - } - - this.renderChildren = function(ctx) { - var customFont = this.parent.style('font-family').getDefinition(); - if (customFont != null) { - var fontSize = this.parent.style('font-size').numValueOrDefault(svg.Font.Parse(svg.ctx.font).fontSize); - var fontStyle = this.parent.style('font-style').valueOrDefault(svg.Font.Parse(svg.ctx.font).fontStyle); - var text = this.getText(); - if (customFont.isRTL) text = text.split("").reverse().join(""); - - var dx = svg.ToNumberArray(this.parent.attribute('dx').value); - for (var i=0; i 0) { - var urlStart = srcs[s].indexOf('url'); - var urlEnd = srcs[s].indexOf(')', urlStart); - var url = srcs[s].substr(urlStart + 5, urlEnd - urlStart - 6); - var doc = svg.parseXml(svg.ajax(url)); - var fonts = doc.getElementsByTagName('font'); - for (var f=0; f> 18 & 0x3f; - h2 = bits >> 12 & 0x3f; - h3 = bits >> 6 & 0x3f; - h4 = bits & 0x3f; - - // use hexets to index into b64, and append result to encoded string - tmp_arr[ac++] = b64a[h1] + b64a[h2] + b64a[h3] + b64a[h4]; - } while (i < data.length); - - enc = tmp_arr.join(''); - r = data.length % 3; - return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3); - // end of base64 encoder MIT, GPL - }; - } - - if (typeof atob === 'undefined') { - window.atob = function (data) { - // http://kevin.vanzonneveld.net - // + original by: Tyler Akins (http://rumkin.com) - // + improved by: Thunder.m - // + input by: Aman Gupta - // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) - // + bugfixed by: Onno Marsman - // + bugfixed by: Pellentesque Malesuada - // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) - // + input by: Brett Zamir (http://brett-zamir.me) - // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) - // * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA=='); - // * returns 1: 'Kevin van Zonneveld' - // mozilla has this native - // - but breaks in 2.0.0.12! - //if (typeof this.window['atob'] == 'function') { - // return atob(data); - //} - var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", - o1, - o2, - o3, - h1, - h2, - h3, - h4, - bits, - i = 0, - ac = 0, - dec = "", - tmp_arr = []; - - if (!data) { - return data; - } - - data += ''; - - do { // unpack four hexets into three octets using index points in b64 - h1 = b64.indexOf(data.charAt(i++)); - h2 = b64.indexOf(data.charAt(i++)); - h3 = b64.indexOf(data.charAt(i++)); - h4 = b64.indexOf(data.charAt(i++)); - - bits = h1 << 18 | h2 << 12 | h3 << 6 | h4; - - o1 = bits >> 16 & 0xff; - o2 = bits >> 8 & 0xff; - o3 = bits & 0xff; - - if (h3 === 64) { - tmp_arr[ac++] = String.fromCharCode(o1); - } else if (h4 === 64) { - tmp_arr[ac++] = String.fromCharCode(o1, o2); - } else { - tmp_arr[ac++] = String.fromCharCode(o1, o2, o3); - } - } while (i < data.length); - dec = tmp_arr.join(''); - return dec; - }; - } - - var getObjectLength = typeof Object.keys === 'function' ? - function (object) { - return Object.keys(object).length; - } : - function (object) { - var i = 0, e; - for (e in object) { - if (object.hasOwnProperty(e)) { - i++; - } - } - return i; - }, - -/** -PubSub implementation - -@class -@name PubSub -*/ - PubSub = function (context) { - /** @preserve - ----------------------------------------------------------------------------------------------- - JavaScript PubSub library - 2012 (c) ddotsenko@willowsystems.com - based on Peter Higgins (dante@dojotoolkit.org) - Loosely based on Dojo publish/subscribe API, limited in scope. Rewritten blindly. - Original is (c) Dojo Foundation 2004-2010. Released under either AFL or new BSD, see: - http://dojofoundation.org/license for more information. - ----------------------------------------------------------------------------------------------- - */ - /** - @private - @fieldOf PubSub - */ - this.topics = {}; - /** - Stores what will be `this` within the callback functions. - - @private - @fieldOf PubSub# - */ - this.context = context; - /** - Allows caller to emit an event and pass arguments to event listeners. - @public - @function - @param topic {String} Name of the channel on which to voice this event - @param args Any number of arguments you want to pass to the listeners of this event. - @methodOf PubSub# - @name publish - */ - this.publish = function (topic, args) { - if (this.topics[topic]) { - var currentTopic = this.topics[topic], - toremove = [], - fn, - i, - l, - pair, - emptyFunc = function () {}; - args = Array.prototype.slice.call(arguments, 1); - for (i = 0, l = currentTopic.length; i < l; i++) { - pair = currentTopic[i]; // this is a [function, once_flag] array - fn = pair[0]; - if (pair[1]) { /* 'run once' flag set */ - pair[0] = emptyFunc; - toremove.push(i); - } - fn.apply(this.context, args); - } - for (i = 0, l = toremove.length; i < l; i++) { - currentTopic.splice(toremove[i], 1); - } - } - }; - /** - Allows listener code to subscribe to channel and be called when data is available - @public - @function - @param topic {String} Name of the channel on which to voice this event - @param callback {Function} Executable (function pointer) that will be ran when event is voiced on this channel. - @param once {Boolean} (optional. False by default) Flag indicating if the function is to be triggered only once. - @returns {Object} A token object that cen be used for unsubscribing. - @methodOf PubSub# - @name subscribe - */ - this.subscribe = function (topic, callback, once) { - if (!this.topics[topic]) { - this.topics[topic] = [[callback, once]]; - } else { - this.topics[topic].push([callback, once]); - } - return { - "topic": topic, - "callback": callback - }; - }; - /** - Allows listener code to unsubscribe from a channel - @public - @function - @param token {Object} A token object that was returned by `subscribe` method - @methodOf PubSub# - @name unsubscribe - */ - this.unsubscribe = function (token) { - if (this.topics[token.topic]) { - var currentTopic = this.topics[token.topic], i, l; - - for (i = 0, l = currentTopic.length; i < l; i++) { - if (currentTopic[i][0] === token.callback) { - currentTopic.splice(i, 1); - } - } - } - }; - }; - - -/** -@constructor -@private -*/ - function jsPDF(orientation, unit, format, compressPdf) { /** String orientation, String unit, String format, Boolean compressed */ - - // Default parameter values - if (typeof orientation === 'undefined') { - orientation = 'p'; - } else { - orientation = orientation.toString().toLowerCase(); - } - if (typeof unit === 'undefined') { unit = 'mm'; } - if (typeof format === 'undefined') { format = 'a4'; } - if (typeof compressPdf === 'undefined' && typeof zpipe === 'undefined') { compressPdf = false; } - - var format_as_string = format.toString().toLowerCase(), - version = '0.9.0rc2', - content = [], - content_length = 0, - compress = compressPdf, - pdfVersion = '1.3', // PDF Version - pageFormats = { // Size in pt of various paper formats - 'a0': [2383.94, 3370.39], - 'a1': [1683.78, 2383.94], - 'a2': [1190.55, 1683.78], - 'a3': [841.89, 1190.55], - 'a4': [595.28, 841.89], - 'a5': [419.53, 595.28], - 'a6': [297.64, 419.53], - 'a7': [209.76, 297.64], - 'a8': [147.4 , 209.76], - 'a9': [104.88, 147.4], - 'a10': [73.7, 104.88], - 'b0': [2834.65, 4008.19], - 'b1': [2004.09, 2834.65], - 'b2': [1417.32, 2004.09], - 'b3': [1000.63, 1417.32], - 'b4': [708.66, 1000.63], - 'b5': [498.9, 708.66], - 'b6': [354.33, 498.9], - 'b7': [249.45, 354.33], - 'b8': [175.75, 249.45], - 'b9': [124.72, 175.75], - 'b10': [87.87, 124.72], - 'c0': [2599.37, 3676.54], - 'c1': [1836.85, 2599.37], - 'c2': [1298.27, 1836.85], - 'c3': [918.43, 1298.27], - 'c4': [649.13, 918.43], - 'c5': [459.21, 649.13], - 'c6': [323.15, 459.21], - 'c7': [229.61, 323.15], - 'c8': [161.57, 229.61], - 'c9': [113.39, 161.57], - 'c10': [79.37, 113.39], - 'letter': [612, 792], - 'government-letter': [576, 756], - 'legal': [612, 1008], - 'junior-legal': [576, 360], - 'ledger': [1224, 792], - 'tabloid': [792, 1224] - }, - textColor = '0 g', - drawColor = '0 G', - page = 0, - pages = [], - objectNumber = 2, // 'n' Current object number - outToPages = false, // switches where out() prints. outToPages true = push to pages obj. outToPages false = doc builder content - offsets = [], // List of offsets. Activated and reset by buildDocument(). Pupulated by various calls buildDocument makes. - fonts = {}, // collection of font objects, where key is fontKey - a dynamically created label for a given font. - fontmap = {}, // mapping structure fontName > fontStyle > font key - performance layer. See addFont() - activeFontSize = 16, - activeFontKey, // will be string representing the KEY of the font as combination of fontName + fontStyle - lineWidth = 0.200025, // 2mm - lineHeightProportion = 1.15, - pageHeight, - pageWidth, - k, // Scale factor - documentProperties = {'title': '', 'subject': '', 'author': '', 'keywords': '', 'creator': ''}, - lineCapID = 0, - lineJoinID = 0, - API = {}, - events = new PubSub(API), - tmp, - plugin, - ///////////////////// - // Private functions - ///////////////////// - // simplified (speedier) replacement for sprintf's %.2f conversion - f2 = function (number) { - return number.toFixed(2); - }, - // simplified (speedier) replacement for sprintf's %.3f conversion - f3 = function (number) { - return number.toFixed(3); - }, - // simplified (speedier) replacement for sprintf's %02d - padd2 = function (number) { - var n = (number).toFixed(0); - if (number < 10) { - return '0' + n; - } else { - return n; - } - }, - // simplified (speedier) replacement for sprintf's %02d - padd10 = function (number) { - var n = (number).toFixed(0); - if (n.length < 10) { - return new Array( 11 - n.length ).join('0') + n; - } else { - return n; - } - }, - out = function (string) { - if (outToPages) { /* set by beginPage */ - pages[page].push(string); - } else { - content.push(string); - content_length += string.length + 1; // +1 is for '\n' that will be used to join contents of content - } - }, - newObject = function () { - // Begin a new object - objectNumber++; - offsets[objectNumber] = content_length; - out(objectNumber + ' 0 obj'); - return objectNumber; - }, - putStream = function (str) { - out('stream'); - out(str); - out('endstream'); - }, - wPt, - hPt, - kids, - i, - putPages = function () { - wPt = pageWidth * k; - hPt = pageHeight * k; - - // outToPages = false as set in endDocument(). out() writes to content. - - var n, p, arr, uint, i, deflater, adler32; - for (n = 1; n <= page; n++) { - newObject(); - out('<>'); - out('endobj'); - - // Page content - p = pages[n].join('\n'); - newObject(); - if (compress) { - arr = []; - for (i = 0; i < p.length; ++i) { - arr[i] = p.charCodeAt(i); - } - adler32 = adler32cs.from(p); - deflater = new Deflater(6); - deflater.append(new Uint8Array(arr)); - p = deflater.flush(); - arr = [new Uint8Array([120, 156]), new Uint8Array(p), - new Uint8Array([adler32 & 0xFF, (adler32 >> 8) & 0xFF, (adler32 >> 16) & 0xFF, (adler32 >> 24) & 0xFF])]; - p = ''; - for (i in arr) { - if (arr.hasOwnProperty(i)) { - p += String.fromCharCode.apply(null, arr[i]); - } - } - out('<>'); - } else { - out('<>'); - } - putStream(p); - out('endobj'); - } - offsets[1] = content_length; - out('1 0 obj'); - out('<>'); - out('endobj'); - }, - putFont = function (font) { - font.objectNumber = newObject(); - out('<>'); - out('endobj'); - }, - putFonts = function () { - var fontKey; - for (fontKey in fonts) { - if (fonts.hasOwnProperty(fontKey)) { - putFont(fonts[fontKey]); - } - } - }, - putXobjectDict = function () { - // Loop through images, or other data objects - events.publish('putXobjectDict'); - }, - putResourceDictionary = function () { - out('/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]'); - out('/Font <<'); - // Do this for each font, the '1' bit is the index of the font - var fontKey; - for (fontKey in fonts) { - if (fonts.hasOwnProperty(fontKey)) { - out('/' + fontKey + ' ' + fonts[fontKey].objectNumber + ' 0 R'); - } - } - out('>>'); - out('/XObject <<'); - putXobjectDict(); - out('>>'); - }, - putResources = function () { - putFonts(); - events.publish('putResources'); - // Resource dictionary - offsets[2] = content_length; - out('2 0 obj'); - out('<<'); - putResourceDictionary(); - out('>>'); - out('endobj'); - events.publish('postPutResources'); - }, - addToFontDictionary = function (fontKey, fontName, fontStyle) { - // this is mapping structure for quick font key lookup. - // returns the KEY of the font (ex: "F1") for a given pair of font name and type (ex: "Arial". "Italic") - var undef; - if (fontmap[fontName] === undef) { - fontmap[fontName] = {}; // fontStyle is a var interpreted and converted to appropriate string. don't wrap in quotes. - } - fontmap[fontName][fontStyle] = fontKey; - }, - /** - FontObject describes a particular font as member of an instnace of jsPDF - - It's a collection of properties like 'id' (to be used in PDF stream), - 'fontName' (font's family name), 'fontStyle' (font's style variant label) - - @class - @public - @property id {String} PDF-document-instance-specific label assinged to the font. - @property PostScriptName {String} PDF specification full name for the font - @property encoding {Object} Encoding_name-to-Font_metrics_object mapping. - @name FontObject - */ - FontObject = {}, - addFont = function (PostScriptName, fontName, fontStyle, encoding) { - var fontKey = 'F' + (getObjectLength(fonts) + 1).toString(10), - // This is FontObject - font = fonts[fontKey] = { - 'id': fontKey, - // , 'objectNumber': will be set by putFont() - 'PostScriptName': PostScriptName, - 'fontName': fontName, - 'fontStyle': fontStyle, - 'encoding': encoding, - 'metadata': {} - }; - - addToFontDictionary(fontKey, fontName, fontStyle); - - events.publish('addFont', font); - - return fontKey; - }, - addFonts = function () { - - var HELVETICA = "helvetica", - TIMES = "times", - COURIER = "courier", - NORMAL = "normal", - BOLD = "bold", - ITALIC = "italic", - BOLD_ITALIC = "bolditalic", - encoding = 'StandardEncoding', - standardFonts = [ - ['Helvetica', HELVETICA, NORMAL], - ['Helvetica-Bold', HELVETICA, BOLD], - ['Helvetica-Oblique', HELVETICA, ITALIC], - ['Helvetica-BoldOblique', HELVETICA, BOLD_ITALIC], - ['Courier', COURIER, NORMAL], - ['Courier-Bold', COURIER, BOLD], - ['Courier-Oblique', COURIER, ITALIC], - ['Courier-BoldOblique', COURIER, BOLD_ITALIC], - ['Times-Roman', TIMES, NORMAL], - ['Times-Bold', TIMES, BOLD], - ['Times-Italic', TIMES, ITALIC], - ['Times-BoldItalic', TIMES, BOLD_ITALIC] - ], - i, - l, - fontKey, - parts; - for (i = 0, l = standardFonts.length; i < l; i++) { - fontKey = addFont( - standardFonts[i][0], - standardFonts[i][1], - standardFonts[i][2], - encoding - ); - - // adding aliases for standard fonts, this time matching the capitalization - parts = standardFonts[i][0].split('-'); - addToFontDictionary(fontKey, parts[0], parts[1] || ''); - } - - events.publish('addFonts', {'fonts': fonts, 'dictionary': fontmap}); - }, - /** - - @public - @function - @param text {String} - @param flags {Object} Encoding flags. - @returns {String} Encoded string - */ - to8bitStream = function (text, flags) { - /* PDF 1.3 spec: - "For text strings encoded in Unicode, the first two bytes must be 254 followed by - 255, representing the Unicode byte order marker, U+FEFF. (This sequence conflicts - with the PDFDocEncoding character sequence thorn ydieresis, which is unlikely - to be a meaningful beginning of a word or phrase.) The remainder of the - string consists of Unicode character codes, according to the UTF-16 encoding - specified in the Unicode standard, version 2.0. Commonly used Unicode values - are represented as 2 bytes per character, with the high-order byte appearing first - in the string." - - In other words, if there are chars in a string with char code above 255, we - recode the string to UCS2 BE - string doubles in length and BOM is prepended. - - HOWEVER! - Actual *content* (body) text (as opposed to strings used in document properties etc) - does NOT expect BOM. There, it is treated as a literal GID (Glyph ID) - - Because of Adobe's focus on "you subset your fonts!" you are not supposed to have - a font that maps directly Unicode (UCS2 / UTF16BE) code to font GID, but you could - fudge it with "Identity-H" encoding and custom CIDtoGID map that mimics Unicode - code page. There, however, all characters in the stream are treated as GIDs, - including BOM, which is the reason we need to skip BOM in content text (i.e. that - that is tied to a font). - - To signal this "special" PDFEscape / to8bitStream handling mode, - API.text() function sets (unless you overwrite it with manual values - given to API.text(.., flags) ) - flags.autoencode = true - flags.noBOM = true - - */ - - /* - `flags` properties relied upon: - .sourceEncoding = string with encoding label. - "Unicode" by default. = encoding of the incoming text. - pass some non-existing encoding name - (ex: 'Do not touch my strings! I know what I am doing.') - to make encoding code skip the encoding step. - .outputEncoding = Either valid PDF encoding name - (must be supported by jsPDF font metrics, otherwise no encoding) - or a JS object, where key = sourceCharCode, value = outputCharCode - missing keys will be treated as: sourceCharCode === outputCharCode - .noBOM - See comment higher above for explanation for why this is important - .autoencode - See comment higher above for explanation for why this is important - */ - - var i, l, undef, sourceEncoding, encodingBlock, outputEncoding, newtext, isUnicode, ch, bch; - - if (flags === undef) { - flags = {}; - } - - sourceEncoding = flags.sourceEncoding ? sourceEncoding : 'Unicode'; - - outputEncoding = flags.outputEncoding; - - // This 'encoding' section relies on font metrics format - // attached to font objects by, among others, - // "Willow Systems' standard_font_metrics plugin" - // see jspdf.plugin.standard_font_metrics.js for format - // of the font.metadata.encoding Object. - // It should be something like - // .encoding = {'codePages':['WinANSI....'], 'WinANSI...':{code:code, ...}} - // .widths = {0:width, code:width, ..., 'fof':divisor} - // .kerning = {code:{previous_char_code:shift, ..., 'fof':-divisor},...} - if ((flags.autoencode || outputEncoding) && - fonts[activeFontKey].metadata && - fonts[activeFontKey].metadata[sourceEncoding] && - fonts[activeFontKey].metadata[sourceEncoding].encoding - ) { - encodingBlock = fonts[activeFontKey].metadata[sourceEncoding].encoding; - - // each font has default encoding. Some have it clearly defined. - if (!outputEncoding && fonts[activeFontKey].encoding) { - outputEncoding = fonts[activeFontKey].encoding; - } - - // Hmmm, the above did not work? Let's try again, in different place. - if (!outputEncoding && encodingBlock.codePages) { - outputEncoding = encodingBlock.codePages[0]; // let's say, first one is the default - } - - if (typeof outputEncoding === 'string') { - outputEncoding = encodingBlock[outputEncoding]; - } - // we want output encoding to be a JS Object, where - // key = sourceEncoding's character code and - // value = outputEncoding's character code. - if (outputEncoding) { - isUnicode = false; - newtext = []; - for (i = 0, l = text.length; i < l; i++) { - ch = outputEncoding[text.charCodeAt(i)]; - if (ch) { - newtext.push( - String.fromCharCode(ch) - ); - } else { - newtext.push( - text[i] - ); - } - - // since we are looping over chars anyway, might as well - // check for residual unicodeness - if (newtext[i].charCodeAt(0) >> 8) { /* more than 255 */ - isUnicode = true; - } - } - text = newtext.join(''); - } - } - - i = text.length; - // isUnicode may be set to false above. Hence the triple-equal to undefined - while (isUnicode === undef && i !== 0) { - if (text.charCodeAt(i - 1) >> 8) { /* more than 255 */ - isUnicode = true; - } - i--; - } - if (!isUnicode) { - return text; - } else { - newtext = flags.noBOM ? [] : [254, 255]; - for (i = 0, l = text.length; i < l; i++) { - ch = text.charCodeAt(i); - bch = ch >> 8; // divide by 256 - if (bch >> 8) { /* something left after dividing by 256 second time */ - throw new Error("Character at position " + i.toString(10) + " of string '" + text + "' exceeds 16bits. Cannot be encoded into UCS-2 BE"); - } - newtext.push(bch); - newtext.push(ch - (bch << 8)); - } - return String.fromCharCode.apply(undef, newtext); - } - }, - // Replace '/', '(', and ')' with pdf-safe versions - pdfEscape = function (text, flags) { - // doing to8bitStream does NOT make this PDF display unicode text. For that - // we also need to reference a unicode font and embed it - royal pain in the rear. - - // There is still a benefit to to8bitStream - PDF simply cannot handle 16bit chars, - // which JavaScript Strings are happy to provide. So, while we still cannot display - // 2-byte characters property, at least CONDITIONALLY converting (entire string containing) - // 16bit chars to (USC-2-BE) 2-bytes per char + BOM streams we ensure that entire PDF - // is still parseable. - // This will allow immediate support for unicode in document properties strings. - return to8bitStream(text, flags).replace(/\\/g, '\\\\').replace(/\(/g, '\\(').replace(/\)/g, '\\)'); - }, - putInfo = function () { - out('/Producer (jsPDF ' + version + ')'); - if (documentProperties.title) { - out('/Title (' + pdfEscape(documentProperties.title) + ')'); - } - if (documentProperties.subject) { - out('/Subject (' + pdfEscape(documentProperties.subject) + ')'); - } - if (documentProperties.author) { - out('/Author (' + pdfEscape(documentProperties.author) + ')'); - } - if (documentProperties.keywords) { - out('/Keywords (' + pdfEscape(documentProperties.keywords) + ')'); - } - if (documentProperties.creator) { - out('/Creator (' + pdfEscape(documentProperties.creator) + ')'); - } - var created = new Date(); - out('/CreationDate (D:' + - [ - created.getFullYear(), - padd2(created.getMonth() + 1), - padd2(created.getDate()), - padd2(created.getHours()), - padd2(created.getMinutes()), - padd2(created.getSeconds()) - ].join('') + - ')' - ); - }, - putCatalog = function () { - out('/Type /Catalog'); - out('/Pages 1 0 R'); - // @TODO: Add zoom and layout modes - out('/OpenAction [3 0 R /FitH null]'); - out('/PageLayout /OneColumn'); - events.publish('putCatalog'); - }, - putTrailer = function () { - out('/Size ' + (objectNumber + 1)); - out('/Root ' + objectNumber + ' 0 R'); - out('/Info ' + (objectNumber - 1) + ' 0 R'); - }, - beginPage = function () { - page++; - // Do dimension stuff - outToPages = true; - pages[page] = []; - }, - _addPage = function () { - beginPage(); - // Set line width - out(f2(lineWidth * k) + ' w'); - // Set draw color - out(drawColor); - // resurrecting non-default line caps, joins - if (lineCapID !== 0) { - out(lineCapID.toString(10) + ' J'); - } - if (lineJoinID !== 0) { - out(lineJoinID.toString(10) + ' j'); - } - events.publish('addPage', {'pageNumber': page}); - }, - /** - Returns a document-specific font key - a label assigned to a - font name + font type combination at the time the font was added - to the font inventory. - - Font key is used as label for the desired font for a block of text - to be added to the PDF document stream. - @private - @function - @param fontName {String} can be undefined on "falthy" to indicate "use current" - @param fontStyle {String} can be undefined on "falthy" to indicate "use current" - @returns {String} Font key. - */ - getFont = function (fontName, fontStyle) { - var key, undef; - - if (fontName === undef) { - fontName = fonts[activeFontKey].fontName; - } - if (fontStyle === undef) { - fontStyle = fonts[activeFontKey].fontStyle; - } - - try { - key = fontmap[fontName][fontStyle]; // returns a string like 'F3' - the KEY corresponding tot he font + type combination. - } catch (e) { - key = undef; - } - if (!key) { - throw new Error("Unable to look up font label for font '" + fontName + "', '" + fontStyle + "'. Refer to getFontList() for available fonts."); - } - - return key; - }, - buildDocument = function () { - - outToPages = false; // switches out() to content - content = []; - offsets = []; - - // putHeader() - out('%PDF-' + pdfVersion); - - putPages(); - - putResources(); - - // Info - newObject(); - out('<<'); - putInfo(); - out('>>'); - out('endobj'); - - // Catalog - newObject(); - out('<<'); - putCatalog(); - out('>>'); - out('endobj'); - - // Cross-ref - var o = content_length, i; - out('xref'); - out('0 ' + (objectNumber + 1)); - out('0000000000 65535 f '); - for (i = 1; i <= objectNumber; i++) { - out(padd10(offsets[i]) + ' 00000 n '); - } - // Trailer - out('trailer'); - out('<<'); - putTrailer(); - out('>>'); - out('startxref'); - out(o); - out('%%EOF'); - - outToPages = true; - - return content.join('\n'); - }, - getStyle = function (style) { - // see Path-Painting Operators of PDF spec - var op = 'S'; // stroke - if (style === 'F') { - op = 'f'; // fill - } else if (style === 'FD' || style === 'DF') { - op = 'B'; // both - } - return op; - }, - - /** - Generates the PDF document. - Possible values: - datauristring (alias dataurlstring) - Data-Url-formatted data returned as string. - datauri (alias datauri) - Data-Url-formatted data pushed into current window's location (effectively reloading the window with contents of the PDF). - - If `type` argument is undefined, output is raw body of resulting PDF returned as a string. - - @param {String} type A string identifying one of the possible output types. - @param {Object} options An object providing some additional signalling to PDF generator. - @function - @returns {jsPDF} - @methodOf jsPDF# - @name output - */ - output = function (type, options) { - var undef, data, length, array, i, blob; - switch (type) { - case undef: - return buildDocument(); - case 'save': - if (navigator.getUserMedia) { - if (window.URL === undefined) { - return API.output('dataurlnewwindow'); - } else if (window.URL.createObjectURL === undefined) { - return API.output('dataurlnewwindow'); - } - } - data = buildDocument(); - - // Need to add the file to BlobBuilder as a Uint8Array - length = data.length; - array = new Uint8Array(new ArrayBuffer(length)); - - for (i = 0; i < length; i++) { - array[i] = data.charCodeAt(i); - } - - blob = new Blob([array], {type: "application/pdf"}); - - saveAs(blob, options); - break; - case 'datauristring': - case 'dataurlstring': - return 'data:application/pdf;base64,' + btoa(buildDocument()); - case 'datauri': - case 'dataurl': - document.location.href = 'data:application/pdf;base64,' + btoa(buildDocument()); - break; - case 'dataurlnewwindow': - window.open('data:application/pdf;base64,' + btoa(buildDocument())); - break; - default: - throw new Error('Output type "' + type + '" is not supported.'); - } - // @TODO: Add different output options - }; - - if (unit === 'pt') { - k = 1; - } else if (unit === 'mm') { - k = 72 / 25.4; - } else if (unit === 'cm') { - k = 72 / 2.54; - } else if (unit === 'in') { - k = 72; - } else { - throw ('Invalid unit: ' + unit); - } - - // Dimensions are stored as user units and converted to points on output - if (pageFormats.hasOwnProperty(format_as_string)) { - pageHeight = pageFormats[format_as_string][1] / k; - pageWidth = pageFormats[format_as_string][0] / k; - } else { - try { - pageHeight = format[1]; - pageWidth = format[0]; - } catch (err) { - throw ('Invalid format: ' + format); - } - } - - if (orientation === 'p' || orientation === 'portrait') { - orientation = 'p'; - if (pageWidth > pageHeight) { - tmp = pageWidth; - pageWidth = pageHeight; - pageHeight = tmp; - } - } else if (orientation === 'l' || orientation === 'landscape') { - orientation = 'l'; - if (pageHeight > pageWidth) { - tmp = pageWidth; - pageWidth = pageHeight; - pageHeight = tmp; - } - } else { - throw ('Invalid orientation: ' + orientation); - } - - - - //--------------------------------------- - // Public API - - /* - Object exposing internal API to plugins - @public - */ - API.internal = { - 'pdfEscape': pdfEscape, - 'getStyle': getStyle, - /** - Returns {FontObject} describing a particular font. - @public - @function - @param fontName {String} (Optional) Font's family name - @param fontStyle {String} (Optional) Font's style variation name (Example:"Italic") - @returns {FontObject} - */ - 'getFont': function () { return fonts[getFont.apply(API, arguments)]; }, - 'getFontSize': function () { return activeFontSize; }, - 'getLineHeight': function () { return activeFontSize * lineHeightProportion; }, - 'btoa': btoa, - 'write': function (string1, string2, string3, etc) { - out( - arguments.length === 1 ? string1 : Array.prototype.join.call(arguments, ' ') - ); - }, - 'getCoordinateString': function (value) { - return f2(value * k); - }, - 'getVerticalCoordinateString': function (value) { - return f2((pageHeight - value) * k); - }, - 'collections': {}, - 'newObject': newObject, - 'putStream': putStream, - 'events': events, - // ratio that you use in multiplication of a given "size" number to arrive to 'point' - // units of measurement. - // scaleFactor is set at initialization of the document and calculated against the stated - // default measurement units for the document. - // If default is "mm", k is the number that will turn number in 'mm' into 'points' number. - // through multiplication. - 'scaleFactor': k, - 'pageSize': {'width': pageWidth, 'height': pageHeight}, - 'output': function (type, options) { - return output(type, options); - }, - 'getNumberOfPages': function () {return pages.length - 1; }, - 'pages': pages - }; - - /** - Adds (and transfers the focus to) new page to the PDF document. - @function - @returns {jsPDF} - - @methodOf jsPDF# - @name addPage - */ - API.addPage = function () { - _addPage(); - return this; - }; - - /** - Adds text to page. Supports adding multiline text when 'text' argument is an Array of Strings. - @function - @param {String|Array} text String or array of strings to be added to the page. Each line is shifted one line down per font, spacing settings declared before this call. - @param {Number} x Coordinate (in units declared at inception of PDF document) against left edge of the page - @param {Number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page - @param {Object} flags Collection of settings signalling how the text must be encoded. Defaults are sane. If you think you want to pass some flags, you likely can read the source. - @returns {jsPDF} - @methodOf jsPDF# - @name text - */ - API.text = function (text, x, y, flags) { - /** - * Inserts something like this into PDF - BT - /F1 16 Tf % Font name + size - 16 TL % How many units down for next line in multiline text - 0 g % color - 28.35 813.54 Td % position - (line one) Tj - T* (line two) Tj - T* (line three) Tj - ET - */ - - var undef, _first, _second, _third, newtext, str, i; - // Pre-August-2012 the order of arguments was function(x, y, text, flags) - // in effort to make all calls have similar signature like - // function(data, coordinates... , miscellaneous) - // this method had its args flipped. - // code below allows backward compatibility with old arg order. - if (typeof text === 'number') { - _first = y; - _second = text; - _third = x; - - text = _first; - x = _second; - y = _third; - } - - // If there are any newlines in text, we assume - // the user wanted to print multiple lines, so break the - // text up into an array. If the text is already an array, - // we assume the user knows what they are doing. - if (typeof text === 'string' && text.match(/[\n\r]/)) { - text = text.split(/\r\n|\r|\n/g); - } - - if (typeof flags === 'undefined') { - flags = {'noBOM': true, 'autoencode': true}; - } else { - - if (flags.noBOM === undef) { - flags.noBOM = true; - } - - if (flags.autoencode === undef) { - flags.autoencode = true; - } - - } - - if (typeof text === 'string') { - str = pdfEscape(text, flags); - } else if (text instanceof Array) { /* Array */ - // we don't want to destroy original text array, so cloning it - newtext = text.concat(); - // we do array.join('text that must not be PDFescaped") - // thus, pdfEscape each component separately - for (i = newtext.length - 1; i !== -1; i--) { - newtext[i] = pdfEscape(newtext[i], flags); - } - str = newtext.join(") Tj\nT* ("); - } else { - throw new Error('Type of text must be string or Array. "' + text + '" is not recognized.'); - } - // Using "'" ("go next line and render text" mark) would save space but would complicate our rendering code, templates - - // BT .. ET does NOT have default settings for Tf. You must state that explicitely every time for BT .. ET - // if you want text transformation matrix (+ multiline) to work reliably (which reads sizes of things from font declarations) - // Thus, there is NO useful, *reliable* concept of "default" font for a page. - // The fact that "default" (reuse font used before) font worked before in basic cases is an accident - // - readers dealing smartly with brokenness of jsPDF's markup. - out( - 'BT\n/' + - activeFontKey + ' ' + activeFontSize + ' Tf\n' + // font face, style, size - (activeFontSize * lineHeightProportion) + ' TL\n' + // line spacing - textColor + - '\n' + f2(x * k) + ' ' + f2((pageHeight - y) * k) + ' Td\n(' + - str + - ') Tj\nET' - ); - return this; - }; - - API.line = function (x1, y1, x2, y2) { - out( - f2(x1 * k) + ' ' + f2((pageHeight - y1) * k) + ' m ' + - f2(x2 * k) + ' ' + f2((pageHeight - y2) * k) + ' l S' - ); - return this; - }; - - /** - Adds series of curves (straight lines or cubic bezier curves) to canvas, starting at `x`, `y` coordinates. - All data points in `lines` are relative to last line origin. - `x`, `y` become x1,y1 for first line / curve in the set. - For lines you only need to specify [x2, y2] - (ending point) vector against x1, y1 starting point. - For bezier curves you need to specify [x2,y2,x3,y3,x4,y4] - vectors to control points 1, 2, ending point. All vectors are against the start of the curve - x1,y1. - - @example .lines([[2,2],[-2,2],[1,1,2,2,3,3],[2,1]], 212,110, 10) // line, line, bezier curve, line - @param {Array} lines Array of *vector* shifts as pairs (lines) or sextets (cubic bezier curves). - @param {Number} x Coordinate (in units declared at inception of PDF document) against left edge of the page - @param {Number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page - @param {Number} scale (Defaults to [1.0,1.0]) x,y Scaling factor for all vectors. Elements can be any floating number Sub-one makes drawing smaller. Over-one grows the drawing. Negative flips the direction. - @param {String} style One of 'S' (the default), 'F', 'FD' or 'DF'. 'S' draws just the curve. 'F' fills the region defined by the curves. 'DF' or 'FD' draws the curves and fills the region. - @param {Boolean} closed If true, the path is closed with a straight line from the end of the last curve to the starting point. - @function - @returns {jsPDF} - @methodOf jsPDF# - @name lines - */ - API.lines = function (lines, x, y, scale, style, closed) { - var undef, _first, _second, _third, scalex, scaley, i, l, leg, x2, y2, x3, y3, x4, y4; - - // Pre-August-2012 the order of arguments was function(x, y, lines, scale, style) - // in effort to make all calls have similar signature like - // function(content, coordinateX, coordinateY , miscellaneous) - // this method had its args flipped. - // code below allows backward compatibility with old arg order. - if (typeof lines === 'number') { - _first = y; - _second = lines; - _third = x; - - lines = _first; - x = _second; - y = _third; - } - - style = getStyle(style); - scale = scale === undef ? [1, 1] : scale; - - // starting point - out(f3(x * k) + ' ' + f3((pageHeight - y) * k) + ' m '); - - scalex = scale[0]; - scaley = scale[1]; - l = lines.length; - //, x2, y2 // bezier only. In page default measurement "units", *after* scaling - //, x3, y3 // bezier only. In page default measurement "units", *after* scaling - // ending point for all, lines and bezier. . In page default measurement "units", *after* scaling - x4 = x; // last / ending point = starting point for first item. - y4 = y; // last / ending point = starting point for first item. - - for (i = 0; i < l; i++) { - leg = lines[i]; - if (leg.length === 2) { - // simple line - x4 = leg[0] * scalex + x4; // here last x4 was prior ending point - y4 = leg[1] * scaley + y4; // here last y4 was prior ending point - out(f3(x4 * k) + ' ' + f3((pageHeight - y4) * k) + ' l'); - } else { - // bezier curve - x2 = leg[0] * scalex + x4; // here last x4 is prior ending point - y2 = leg[1] * scaley + y4; // here last y4 is prior ending point - x3 = leg[2] * scalex + x4; // here last x4 is prior ending point - y3 = leg[3] * scaley + y4; // here last y4 is prior ending point - x4 = leg[4] * scalex + x4; // here last x4 was prior ending point - y4 = leg[5] * scaley + y4; // here last y4 was prior ending point - out( - f3(x2 * k) + ' ' + - f3((pageHeight - y2) * k) + ' ' + - f3(x3 * k) + ' ' + - f3((pageHeight - y3) * k) + ' ' + - f3(x4 * k) + ' ' + - f3((pageHeight - y4) * k) + ' c' - ); - } - } - - if (closed == true) { - out(' h'); - } - - // stroking / filling / both the path - out(style); - return this; - }; - - /** - Adds a rectangle to PDF - - @param {Number} x Coordinate (in units declared at inception of PDF document) against left edge of the page - @param {Number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page - @param {Number} w Width (in units declared at inception of PDF document) - @param {Number} h Height (in units declared at inception of PDF document) - @param {String} style (Defaults to active fill/stroke style) A string signalling if stroke, fill or both are to be applied. - @function - @returns {jsPDF} - @methodOf jsPDF# - @name rect - */ - API.rect = function (x, y, w, h, style) { - var op = getStyle(style); - out([ - f2(x * k), - f2((pageHeight - y) * k), - f2(w * k), - f2(-h * k), - 're', - op - ].join(' ')); - return this; - }; - - /** - Adds a triangle to PDF - - @param {Number} x1 Coordinate (in units declared at inception of PDF document) against left edge of the page - @param {Number} y1 Coordinate (in units declared at inception of PDF document) against upper edge of the page - @param {Number} x2 Coordinate (in units declared at inception of PDF document) against left edge of the page - @param {Number} y2 Coordinate (in units declared at inception of PDF document) against upper edge of the page - @param {Number} x3 Coordinate (in units declared at inception of PDF document) against left edge of the page - @param {Number} y3 Coordinate (in units declared at inception of PDF document) against upper edge of the page - @param {String} style (Defaults to active fill/stroke style) A string signalling if stroke, fill or both are to be applied. - @function - @returns {jsPDF} - @methodOf jsPDF# - @name triangle - */ - API.triangle = function (x1, y1, x2, y2, x3, y3, style) { - this.lines( - [ - [ x2 - x1, y2 - y1 ], // vector to point 2 - [ x3 - x2, y3 - y2 ], // vector to point 3 - [ x1 - x3, y1 - y3 ] // closing vector back to point 1 - ], - x1, - y1, // start of path - [1, 1], - style, - true - ); - return this; - }; - - /** - Adds a rectangle with rounded corners to PDF - - @param {Number} x Coordinate (in units declared at inception of PDF document) against left edge of the page - @param {Number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page - @param {Number} w Width (in units declared at inception of PDF document) - @param {Number} h Height (in units declared at inception of PDF document) - @param {Number} rx Radius along x axis (in units declared at inception of PDF document) - @param {Number} rx Radius along y axis (in units declared at inception of PDF document) - @param {String} style (Defaults to active fill/stroke style) A string signalling if stroke, fill or both are to be applied. - @function - @returns {jsPDF} - @methodOf jsPDF# - @name roundedRect - */ - API.roundedRect = function (x, y, w, h, rx, ry, style) { - var MyArc = 4 / 3 * (Math.SQRT2 - 1); - this.lines( - [ - [ (w - 2 * rx), 0 ], - [ (rx * MyArc), 0, rx, ry - (ry * MyArc), rx, ry ], - [ 0, (h - 2 * ry) ], - [ 0, (ry * MyArc), -(rx * MyArc), ry, -rx, ry], - [ (-w + 2 * rx), 0], - [ -(rx * MyArc), 0, -rx, -(ry * MyArc), -rx, -ry], - [ 0, (-h + 2 * ry)], - [ 0, -(ry * MyArc), (rx * MyArc), -ry, rx, -ry] - ], - x + rx, - y, // start of path - [1, 1], - style - ); - return this; - }; - - /** - Adds an ellipse to PDF - - @param {Number} x Coordinate (in units declared at inception of PDF document) against left edge of the page - @param {Number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page - @param {Number} rx Radius along x axis (in units declared at inception of PDF document) - @param {Number} rx Radius along y axis (in units declared at inception of PDF document) - @param {String} style (Defaults to active fill/stroke style) A string signalling if stroke, fill or both are to be applied. - @function - @returns {jsPDF} - @methodOf jsPDF# - @name ellipse - */ - API.ellipse = function (x, y, rx, ry, style) { - var op = getStyle(style), - lx = 4 / 3 * (Math.SQRT2 - 1) * rx, - ly = 4 / 3 * (Math.SQRT2 - 1) * ry; - - out([ - f2((x + rx) * k), - f2((pageHeight - y) * k), - 'm', - f2((x + rx) * k), - f2((pageHeight - (y - ly)) * k), - f2((x + lx) * k), - f2((pageHeight - (y - ry)) * k), - f2(x * k), - f2((pageHeight - (y - ry)) * k), - 'c' - ].join(' ')); - out([ - f2((x - lx) * k), - f2((pageHeight - (y - ry)) * k), - f2((x - rx) * k), - f2((pageHeight - (y - ly)) * k), - f2((x - rx) * k), - f2((pageHeight - y) * k), - 'c' - ].join(' ')); - out([ - f2((x - rx) * k), - f2((pageHeight - (y + ly)) * k), - f2((x - lx) * k), - f2((pageHeight - (y + ry)) * k), - f2(x * k), - f2((pageHeight - (y + ry)) * k), - 'c' - ].join(' ')); - out([ - f2((x + lx) * k), - f2((pageHeight - (y + ry)) * k), - f2((x + rx) * k), - f2((pageHeight - (y + ly)) * k), - f2((x + rx) * k), - f2((pageHeight - y) * k), - 'c', - op - ].join(' ')); - return this; - }; - - /** - Adds an circle to PDF - - @param {Number} x Coordinate (in units declared at inception of PDF document) against left edge of the page - @param {Number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page - @param {Number} r Radius (in units declared at inception of PDF document) - @param {String} style (Defaults to active fill/stroke style) A string signalling if stroke, fill or both are to be applied. - @function - @returns {jsPDF} - @methodOf jsPDF# - @name circle - */ - API.circle = function (x, y, r, style) { - return this.ellipse(x, y, r, r, style); - }; - - /** - Adds a properties to the PDF document - - @param {Object} A property_name-to-property_value object structure. - @function - @returns {jsPDF} - @methodOf jsPDF# - @name setProperties - */ - API.setProperties = function (properties) { - // copying only those properties we can render. - var property; - for (property in documentProperties) { - if (documentProperties.hasOwnProperty(property) && properties[property]) { - documentProperties[property] = properties[property]; - } - } - return this; - }; - - /** - Sets font size for upcoming text elements. - - @param {Number} size Font size in points. - @function - @returns {jsPDF} - @methodOf jsPDF# - @name setFontSize - */ - API.setFontSize = function (size) { - activeFontSize = size; - return this; - }; - - /** - Sets text font face, variant for upcoming text elements. - See output of jsPDF.getFontList() for possible font names, styles. - - @param {String} fontName Font name or family. Example: "times" - @param {String} fontStyle Font style or variant. Example: "italic" - @function - @returns {jsPDF} - @methodOf jsPDF# - @name setFont - */ - API.setFont = function (fontName, fontStyle) { - activeFontKey = getFont(fontName, fontStyle); - // if font is not found, the above line blows up and we never go further - return this; - }; - - /** - Switches font style or variant for upcoming text elements, - while keeping the font face or family same. - See output of jsPDF.getFontList() for possible font names, styles. - - @param {String} style Font style or variant. Example: "italic" - @function - @returns {jsPDF} - @methodOf jsPDF# - @name setFontStyle - */ - API.setFontStyle = API.setFontType = function (style) { - var undef; - activeFontKey = getFont(undef, style); - // if font is not found, the above line blows up and we never go further - return this; - }; - - /** - Returns an object - a tree of fontName to fontStyle relationships available to - active PDF document. - - @public - @function - @returns {Object} Like {'times':['normal', 'italic', ... ], 'arial':['normal', 'bold', ... ], ... } - @methodOf jsPDF# - @name getFontList - */ - API.getFontList = function () { - // TODO: iterate over fonts array or return copy of fontmap instead in case more are ever added. - var list = {}, - fontName, - fontStyle, - tmp; - - for (fontName in fontmap) { - if (fontmap.hasOwnProperty(fontName)) { - list[fontName] = tmp = []; - for (fontStyle in fontmap[fontName]) { - if (fontmap[fontName].hasOwnProperty(fontStyle)) { - tmp.push(fontStyle); - } - } - } - } - - return list; - }; - - /** - Sets line width for upcoming lines. - - @param {Number} width Line width (in units declared at inception of PDF document) - @function - @returns {jsPDF} - @methodOf jsPDF# - @name setLineWidth - */ - API.setLineWidth = function (width) { - out((width * k).toFixed(2) + ' w'); - return this; - }; - - /** - Sets the stroke color for upcoming elements. - - Depending on the number of arguments given, Gray, RGB, or CMYK - color space is implied. - - When only ch1 is given, "Gray" color space is implied and it - must be a value in the range from 0.00 (solid black) to to 1.00 (white) - if values are communicated as String types, or in range from 0 (black) - to 255 (white) if communicated as Number type. - The RGB-like 0-255 range is provided for backward compatibility. - - When only ch1,ch2,ch3 are given, "RGB" color space is implied and each - value must be in the range from 0.00 (minimum intensity) to to 1.00 - (max intensity) if values are communicated as String types, or - from 0 (min intensity) to to 255 (max intensity) if values are communicated - as Number types. - The RGB-like 0-255 range is provided for backward compatibility. - - When ch1,ch2,ch3,ch4 are given, "CMYK" color space is implied and each - value must be a in the range from 0.00 (0% concentration) to to - 1.00 (100% concentration) - - Because JavaScript treats fixed point numbers badly (rounds to - floating point nearest to binary representation) it is highly advised to - communicate the fractional numbers as String types, not JavaScript Number type. - - @param {Number|String} ch1 Color channel value - @param {Number|String} ch2 Color channel value - @param {Number|String} ch3 Color channel value - @param {Number|String} ch4 Color channel value - - @function - @returns {jsPDF} - @methodOf jsPDF# - @name setDrawColor - */ - API.setDrawColor = function (ch1, ch2, ch3, ch4) { - var color; - if (ch2 === undefined || (ch4 === undefined && ch1 === ch2 === ch3)) { - // Gray color space. - if (typeof ch1 === 'string') { - color = ch1 + ' G'; - } else { - color = f2(ch1 / 255) + ' G'; - } - } else if (ch4 === undefined) { - // RGB - if (typeof ch1 === 'string') { - color = [ch1, ch2, ch3, 'RG'].join(' '); - } else { - color = [f2(ch1 / 255), f2(ch2 / 255), f2(ch3 / 255), 'RG'].join(' '); - } - } else { - // CMYK - if (typeof ch1 === 'string') { - color = [ch1, ch2, ch3, ch4, 'K'].join(' '); - } else { - color = [f2(ch1), f2(ch2), f2(ch3), f2(ch4), 'K'].join(' '); - } - } - - out(color); - return this; - }; - - /** - Sets the fill color for upcoming elements. - - Depending on the number of arguments given, Gray, RGB, or CMYK - color space is implied. - - When only ch1 is given, "Gray" color space is implied and it - must be a value in the range from 0.00 (solid black) to to 1.00 (white) - if values are communicated as String types, or in range from 0 (black) - to 255 (white) if communicated as Number type. - The RGB-like 0-255 range is provided for backward compatibility. - - When only ch1,ch2,ch3 are given, "RGB" color space is implied and each - value must be in the range from 0.00 (minimum intensity) to to 1.00 - (max intensity) if values are communicated as String types, or - from 0 (min intensity) to to 255 (max intensity) if values are communicated - as Number types. - The RGB-like 0-255 range is provided for backward compatibility. - - When ch1,ch2,ch3,ch4 are given, "CMYK" color space is implied and each - value must be a in the range from 0.00 (0% concentration) to to - 1.00 (100% concentration) - - Because JavaScript treats fixed point numbers badly (rounds to - floating point nearest to binary representation) it is highly advised to - communicate the fractional numbers as String types, not JavaScript Number type. - - @param {Number|String} ch1 Color channel value - @param {Number|String} ch2 Color channel value - @param {Number|String} ch3 Color channel value - @param {Number|String} ch4 Color channel value - - @function - @returns {jsPDF} - @methodOf jsPDF# - @name setFillColor - */ - API.setFillColor = function (ch1, ch2, ch3, ch4) { - var color; - - if (ch2 === undefined || (ch4 === undefined && ch1 === ch2 === ch3)) { - // Gray color space. - if (typeof ch1 === 'string') { - color = ch1 + ' g'; - } else { - color = f2(ch1 / 255) + ' g'; - } - } else if (ch4 === undefined) { - // RGB - if (typeof ch1 === 'string') { - color = [ch1, ch2, ch3, 'rg'].join(' '); - } else { - color = [f2(ch1 / 255), f2(ch2 / 255), f2(ch3 / 255), 'rg'].join(' '); - } - } else { - // CMYK - if (typeof ch1 === 'string') { - color = [ch1, ch2, ch3, ch4, 'k'].join(' '); - } else { - color = [f2(ch1), f2(ch2), f2(ch3), f2(ch4), 'k'].join(' '); - } - } - - out(color); - return this; - }; - - /** - Sets the text color for upcoming elements. - If only one, first argument is given, - treats the value as gray-scale color value. - - @param {Number} r Red channel color value in range 0-255 or {String} r color value in hexadecimal, example: '#FFFFFF' - @param {Number} g Green channel color value in range 0-255 - @param {Number} b Blue channel color value in range 0-255 - @function - @returns {jsPDF} - @methodOf jsPDF# - @name setTextColor - */ - API.setTextColor = function (r, g, b) { - var patt = /#[0-9A-Fa-f]{6}/; - if ((typeof r == 'string') && patt.test(r)) { - var hex = r.replace('#',''); - var bigint = parseInt(hex, 16); - r = (bigint >> 16) & 255; - g = (bigint >> 8) & 255; - b = bigint & 255; - } - - if ((r === 0 && g === 0 && b === 0) || (typeof g === 'undefined')) { - textColor = f3(r / 255) + ' g'; - } else { - textColor = [f3(r / 255), f3(g / 255), f3(b / 255), 'rg'].join(' '); - } - return this; - }; - - /** - Is an Object providing a mapping from human-readable to - integer flag values designating the varieties of line cap - and join styles. - - @returns {Object} - @fieldOf jsPDF# - @name CapJoinStyles - */ - API.CapJoinStyles = { - 0: 0, - 'butt': 0, - 'but': 0, - 'miter': 0, - 1: 1, - 'round': 1, - 'rounded': 1, - 'circle': 1, - 2: 2, - 'projecting': 2, - 'project': 2, - 'square': 2, - 'bevel': 2 - }; - - /** - Sets the line cap styles - See {jsPDF.CapJoinStyles} for variants - - @param {String|Number} style A string or number identifying the type of line cap - @function - @returns {jsPDF} - @methodOf jsPDF# - @name setLineCap - */ - API.setLineCap = function (style) { - var id = this.CapJoinStyles[style]; - if (id === undefined) { - throw new Error("Line cap style of '" + style + "' is not recognized. See or extend .CapJoinStyles property for valid styles"); - } - lineCapID = id; - out(id.toString(10) + ' J'); - - return this; - }; - - /** - Sets the line join styles - See {jsPDF.CapJoinStyles} for variants - - @param {String|Number} style A string or number identifying the type of line join - @function - @returns {jsPDF} - @methodOf jsPDF# - @name setLineJoin - */ - API.setLineJoin = function (style) { - var id = this.CapJoinStyles[style]; - if (id === undefined) { - throw new Error("Line join style of '" + style + "' is not recognized. See or extend .CapJoinStyles property for valid styles"); - } - lineJoinID = id; - out(id.toString(10) + ' j'); - - return this; - }; - - // Output is both an internal (for plugins) and external function - API.output = output; - - /** - * Saves as PDF document. An alias of jsPDF.output('save', 'filename.pdf') - * @param {String} filename The filename including extension. - * - * @function - * @returns {jsPDF} - * @methodOf jsPDF# - * @name save - */ - API.save = function (filename) { - API.output('save', filename); - }; - - // applying plugins (more methods) ON TOP of built-in API. - // this is intentional as we allow plugins to override - // built-ins - for (plugin in jsPDF.API) { - if (jsPDF.API.hasOwnProperty(plugin)) { - if (plugin === 'events' && jsPDF.API.events.length) { - (function (events, newEvents) { - - // jsPDF.API.events is a JS Array of Arrays - // where each Array is a pair of event name, handler - // Events were added by plugins to the jsPDF instantiator. - // These are always added to the new instance and some ran - // during instantiation. - - var eventname, handler_and_args, i; - - for (i = newEvents.length - 1; i !== -1; i--) { - // subscribe takes 3 args: 'topic', function, runonce_flag - // if undefined, runonce is false. - // users can attach callback directly, - // or they can attach an array with [callback, runonce_flag] - // that's what the "apply" magic is for below. - eventname = newEvents[i][0]; - handler_and_args = newEvents[i][1]; - events.subscribe.apply( - events, - [eventname].concat( - typeof handler_and_args === 'function' ? - [ handler_and_args ] : - handler_and_args - ) - ); - } - }(events, jsPDF.API.events)); - } else { - API[plugin] = jsPDF.API[plugin]; - } - } - } - - ///////////////////////////////////////// - // continuing initilisation of jsPDF Document object - ///////////////////////////////////////// - - - // Add the first page automatically - addFonts(); - activeFontKey = 'F1'; - _addPage(); - - events.publish('initialized'); - - return API; - } - -/** -jsPDF.API is a STATIC property of jsPDF class. -jsPDF.API is an object you can add methods and properties to. -The methods / properties you add will show up in new jsPDF objects. - -One property is prepopulated. It is the 'events' Object. Plugin authors can add topics, callbacks to this object. These will be reassigned to all new instances of jsPDF. -Examples: - jsPDF.API.events['initialized'] = function(){ 'this' is API object } - jsPDF.API.events['addFont'] = function(added_font_object){ 'this' is API object } - -@static -@public -@memberOf jsPDF -@name API - -@example - jsPDF.API.mymethod = function(){ - // 'this' will be ref to internal API object. see jsPDF source - // , so you can refer to built-in methods like so: - // this.line(....) - // this.text(....) - } - var pdfdoc = new jsPDF() - pdfdoc.mymethod() // <- !!!!!! -*/ - jsPDF.API = {'events': []}; - - return jsPDF; -}()); \ No newline at end of file diff --git a/client/amcharts/exporting/jspdf.plugin.addimage.js b/client/amcharts/exporting/jspdf.plugin.addimage.js deleted file mode 100755 index 12c882e..0000000 --- a/client/amcharts/exporting/jspdf.plugin.addimage.js +++ /dev/null @@ -1,230 +0,0 @@ -/** @preserve -jsPDF addImage plugin (JPEG only at this time) -Copyright (c) 2012 https://github.com/siefkenj/ -*/ - -/** - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * ==================================================================== - */ - -;(function(jsPDFAPI) { -'use strict' - -var namespace = 'addImage_' - -// takes a string imgData containing the raw bytes of -// a jpeg image and returns [width, height] -// Algorithm from: http://www.64lines.com/jpeg-width-height -var getJpegSize = function(imgData) { - 'use strict' - var width, height; - // Verify we have a valid jpeg header 0xff,0xd8,0xff,0xe0,?,?,'J','F','I','F',0x00 - if (!imgData.charCodeAt(0) === 0xff || - !imgData.charCodeAt(1) === 0xd8 || - !imgData.charCodeAt(2) === 0xff || - !imgData.charCodeAt(3) === 0xe0 || - !imgData.charCodeAt(6) === 'J'.charCodeAt(0) || - !imgData.charCodeAt(7) === 'F'.charCodeAt(0) || - !imgData.charCodeAt(8) === 'I'.charCodeAt(0) || - !imgData.charCodeAt(9) === 'F'.charCodeAt(0) || - !imgData.charCodeAt(10) === 0x00) { - throw new Error('getJpegSize requires a binary jpeg file') - } - var blockLength = imgData.charCodeAt(4)*256 + imgData.charCodeAt(5); - var i = 4, len = imgData.length; - while ( i < len ) { - i += blockLength; - if (imgData.charCodeAt(i) !== 0xff) { - throw new Error('getJpegSize could not find the size of the image'); - } - if (imgData.charCodeAt(i+1) === 0xc0 || //(SOF) Huffman - Baseline DCT - imgData.charCodeAt(i+1) === 0xc1 || //(SOF) Huffman - Extended sequential DCT - imgData.charCodeAt(i+1) === 0xc2 || // Progressive DCT (SOF2) - imgData.charCodeAt(i+1) === 0xc3 || // Spatial (sequential) lossless (SOF3) - imgData.charCodeAt(i+1) === 0xc4 || // Differential sequential DCT (SOF5) - imgData.charCodeAt(i+1) === 0xc5 || // Differential progressive DCT (SOF6) - imgData.charCodeAt(i+1) === 0xc6 || // Differential spatial (SOF7) - imgData.charCodeAt(i+1) === 0xc7) { - height = imgData.charCodeAt(i+5)*256 + imgData.charCodeAt(i+6); - width = imgData.charCodeAt(i+7)*256 + imgData.charCodeAt(i+8); - return [width, height]; - } else { - i += 2; - blockLength = imgData.charCodeAt(i)*256 + imgData.charCodeAt(i+1) - } - } -} -// Image functionality ported from pdf.js -, putImage = function(img) { - var objectNumber = this.internal.newObject() - , out = this.internal.write - , putStream = this.internal.putStream - - img['n'] = objectNumber - - out('<>'); - } - if ('trns' in img && img['trns'].constructor == Array) { - var trns = ''; - for ( var i = 0; i < img['trns'].length; i++) { - trns += (img[trns][i] + ' ' + img['trns'][i] + ' '); - out('/Mask [' + trns + ']'); - } - } - if ('smask' in img) { - out('/SMask ' + (objectNumber + 1) + ' 0 R'); - } - out('/Length ' + img['data'].length + '>>'); - - putStream(img['data']); - - out('endobj'); -} -, putResourcesCallback = function() { - var images = this.internal.collections[namespace + 'images'] - for ( var i in images ) { - putImage.call(this, images[i]) - } -} -, putXObjectsDictCallback = function(){ - var images = this.internal.collections[namespace + 'images'] - , out = this.internal.write - , image - for (var i in images) { - image = images[i] - out( - '/I' + image['i'] - , image['n'] - , '0' - , 'R' - ) - } -} - -jsPDFAPI.addImage = function(imageData, format, x, y, w, h) { - 'use strict' - if (typeof imageData === 'object' && imageData.nodeType === 1) { - var canvas = document.createElement('canvas'); - canvas.width = imageData.clientWidth; - canvas.height = imageData.clientHeight; - - var ctx = canvas.getContext('2d'); - if (!ctx) { - throw ('addImage requires canvas to be supported by browser.'); - } - ctx.drawImage(imageData, 0, 0, canvas.width, canvas.height); - imageData = canvas.toDataURL('image/jpeg'); - format = "JPEG"; - } - if (format.toUpperCase() !== 'JPEG') { - throw new Error('addImage currently only supports format \'JPEG\', not \''+format+'\''); - } - - var imageIndex - , images = this.internal.collections[namespace + 'images'] - , coord = this.internal.getCoordinateString - , vcoord = this.internal.getVerticalCoordinateString; - - // Detect if the imageData is raw binary or Data URL - if (imageData.substring(0, 23) === 'data:image/jpeg;base64,') { - imageData = atob(imageData.replace('data:image/jpeg;base64,', '')); - } - - if (images){ - // this is NOT the first time this method is ran on this instance of jsPDF object. - imageIndex = Object.keys ? - Object.keys(images).length : - (function(o){ - var i = 0 - for (var e in o){if(o.hasOwnProperty(e)){ i++ }} - return i - })(images) - } else { - // this is the first time this method is ran on this instance of jsPDF object. - imageIndex = 0 - this.internal.collections[namespace + 'images'] = images = {} - this.internal.events.subscribe('putResources', putResourcesCallback) - this.internal.events.subscribe('putXobjectDict', putXObjectsDictCallback) - } - - var dims = getJpegSize(imageData); - var info = { - w : dims[0], - h : dims[1], - cs : 'DeviceRGB', - bpc : 8, - f : 'DCTDecode', - i : imageIndex, - data : imageData - // n: objectNumber will be added by putImage code - - }; - images[imageIndex] = info - if (!w && !h) { - w = -96; - h = -96; - } - if (w < 0) { - w = (-1) * info['w'] * 72 / w / this.internal.scaleFactor; - } - if (h < 0) { - h = (-1) * info['h'] * 72 / h / this.internal.scaleFactor; - } - if (w === 0) { - w = h * info['w'] / info['h']; - } - if (h === 0) { - h = w * info['h'] / info['w']; - } - - this.internal.write( - 'q' - , coord(w) - , '0 0' - , coord(h) // TODO: check if this should be shifted by vcoord - , coord(x) - , vcoord(y + h) - , 'cm /I'+info['i'] - , 'Do Q' - ) - - return this -} -})(jsPDF.API) \ No newline at end of file diff --git a/client/amcharts/exporting/rgbcolor.js b/client/amcharts/exporting/rgbcolor.js deleted file mode 100755 index 04423f2..0000000 --- a/client/amcharts/exporting/rgbcolor.js +++ /dev/null @@ -1,288 +0,0 @@ -/** - * A class to parse color values - * @author Stoyan Stefanov - * @link http://www.phpied.com/rgb-color-parser-in-javascript/ - * @license Use it if you like it - */ -function RGBColor(color_string) -{ - this.ok = false; - - // strip any leading # - if (color_string.charAt(0) == '#') { // remove # if any - color_string = color_string.substr(1,6); - } - - color_string = color_string.replace(/ /g,''); - color_string = color_string.toLowerCase(); - - // before getting into regexps, try simple matches - // and overwrite the input - var simple_colors = { - aliceblue: 'f0f8ff', - antiquewhite: 'faebd7', - aqua: '00ffff', - aquamarine: '7fffd4', - azure: 'f0ffff', - beige: 'f5f5dc', - bisque: 'ffe4c4', - black: '000000', - blanchedalmond: 'ffebcd', - blue: '0000ff', - blueviolet: '8a2be2', - brown: 'a52a2a', - burlywood: 'deb887', - cadetblue: '5f9ea0', - chartreuse: '7fff00', - chocolate: 'd2691e', - coral: 'ff7f50', - cornflowerblue: '6495ed', - cornsilk: 'fff8dc', - crimson: 'dc143c', - cyan: '00ffff', - darkblue: '00008b', - darkcyan: '008b8b', - darkgoldenrod: 'b8860b', - darkgray: 'a9a9a9', - darkgreen: '006400', - darkkhaki: 'bdb76b', - darkmagenta: '8b008b', - darkolivegreen: '556b2f', - darkorange: 'ff8c00', - darkorchid: '9932cc', - darkred: '8b0000', - darksalmon: 'e9967a', - darkseagreen: '8fbc8f', - darkslateblue: '483d8b', - darkslategray: '2f4f4f', - darkturquoise: '00ced1', - darkviolet: '9400d3', - deeppink: 'ff1493', - deepskyblue: '00bfff', - dimgray: '696969', - dodgerblue: '1e90ff', - feldspar: 'd19275', - firebrick: 'b22222', - floralwhite: 'fffaf0', - forestgreen: '228b22', - fuchsia: 'ff00ff', - gainsboro: 'dcdcdc', - ghostwhite: 'f8f8ff', - gold: 'ffd700', - goldenrod: 'daa520', - gray: '808080', - green: '008000', - greenyellow: 'adff2f', - honeydew: 'f0fff0', - hotpink: 'ff69b4', - indianred : 'cd5c5c', - indigo : '4b0082', - ivory: 'fffff0', - khaki: 'f0e68c', - lavender: 'e6e6fa', - lavenderblush: 'fff0f5', - lawngreen: '7cfc00', - lemonchiffon: 'fffacd', - lightblue: 'add8e6', - lightcoral: 'f08080', - lightcyan: 'e0ffff', - lightgoldenrodyellow: 'fafad2', - lightgrey: 'd3d3d3', - lightgreen: '90ee90', - lightpink: 'ffb6c1', - lightsalmon: 'ffa07a', - lightseagreen: '20b2aa', - lightskyblue: '87cefa', - lightslateblue: '8470ff', - lightslategray: '778899', - lightsteelblue: 'b0c4de', - lightyellow: 'ffffe0', - lime: '00ff00', - limegreen: '32cd32', - linen: 'faf0e6', - magenta: 'ff00ff', - maroon: '800000', - mediumaquamarine: '66cdaa', - mediumblue: '0000cd', - mediumorchid: 'ba55d3', - mediumpurple: '9370d8', - mediumseagreen: '3cb371', - mediumslateblue: '7b68ee', - mediumspringgreen: '00fa9a', - mediumturquoise: '48d1cc', - mediumvioletred: 'c71585', - midnightblue: '191970', - mintcream: 'f5fffa', - mistyrose: 'ffe4e1', - moccasin: 'ffe4b5', - navajowhite: 'ffdead', - navy: '000080', - oldlace: 'fdf5e6', - olive: '808000', - olivedrab: '6b8e23', - orange: 'ffa500', - orangered: 'ff4500', - orchid: 'da70d6', - palegoldenrod: 'eee8aa', - palegreen: '98fb98', - paleturquoise: 'afeeee', - palevioletred: 'd87093', - papayawhip: 'ffefd5', - peachpuff: 'ffdab9', - peru: 'cd853f', - pink: 'ffc0cb', - plum: 'dda0dd', - powderblue: 'b0e0e6', - purple: '800080', - red: 'ff0000', - rosybrown: 'bc8f8f', - royalblue: '4169e1', - saddlebrown: '8b4513', - salmon: 'fa8072', - sandybrown: 'f4a460', - seagreen: '2e8b57', - seashell: 'fff5ee', - sienna: 'a0522d', - silver: 'c0c0c0', - skyblue: '87ceeb', - slateblue: '6a5acd', - slategray: '708090', - snow: 'fffafa', - springgreen: '00ff7f', - steelblue: '4682b4', - tan: 'd2b48c', - teal: '008080', - thistle: 'd8bfd8', - tomato: 'ff6347', - turquoise: '40e0d0', - violet: 'ee82ee', - violetred: 'd02090', - wheat: 'f5deb3', - white: 'ffffff', - whitesmoke: 'f5f5f5', - yellow: 'ffff00', - yellowgreen: '9acd32' - }; - for (var key in simple_colors) { - if (color_string == key) { - color_string = simple_colors[key]; - } - } - // emd of simple type-in colors - - // array of color definition objects - var color_defs = [ - { - re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/, - example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'], - process: function (bits){ - return [ - parseInt(bits[1]), - parseInt(bits[2]), - parseInt(bits[3]) - ]; - } - }, - { - re: /^(\w{2})(\w{2})(\w{2})$/, - example: ['#00ff00', '336699'], - process: function (bits){ - return [ - parseInt(bits[1], 16), - parseInt(bits[2], 16), - parseInt(bits[3], 16) - ]; - } - }, - { - re: /^(\w{1})(\w{1})(\w{1})$/, - example: ['#fb0', 'f0f'], - process: function (bits){ - return [ - parseInt(bits[1] + bits[1], 16), - parseInt(bits[2] + bits[2], 16), - parseInt(bits[3] + bits[3], 16) - ]; - } - } - ]; - - // search through the definitions to find a match - for (var i = 0; i < color_defs.length; i++) { - var re = color_defs[i].re; - var processor = color_defs[i].process; - var bits = re.exec(color_string); - if (bits) { - channels = processor(bits); - this.r = channels[0]; - this.g = channels[1]; - this.b = channels[2]; - this.ok = true; - } - - } - - // validate/cleanup values - this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r); - this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g); - this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b); - - // some getters - this.toRGB = function () { - return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')'; - } - this.toHex = function () { - var r = this.r.toString(16); - var g = this.g.toString(16); - var b = this.b.toString(16); - if (r.length == 1) r = '0' + r; - if (g.length == 1) g = '0' + g; - if (b.length == 1) b = '0' + b; - return '#' + r + g + b; - } - - // help - this.getHelpXML = function () { - - var examples = new Array(); - // add regexps - for (var i = 0; i < color_defs.length; i++) { - var example = color_defs[i].example; - for (var j = 0; j < example.length; j++) { - examples[examples.length] = example[j]; - } - } - // add type-in colors - for (var sc in simple_colors) { - examples[examples.length] = sc; - } - - var xml = document.createElement('ul'); - xml.setAttribute('id', 'rgbcolor-examples'); - for (var i = 0; i < examples.length; i++) { - try { - var list_item = document.createElement('li'); - var list_color = new RGBColor(examples[i]); - var example_div = document.createElement('div'); - example_div.style.cssText = - 'margin: 3px; ' - + 'border: 1px solid black; ' - + 'background:' + list_color.toHex() + '; ' - + 'color:' + list_color.toHex() - ; - example_div.appendChild(document.createTextNode('test')); - var list_item_value = document.createTextNode( - ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex() - ); - list_item.appendChild(example_div); - list_item.appendChild(list_item_value); - xml.appendChild(list_item); - - } catch(e){} - } - return xml; - - } - -} - diff --git a/client/amcharts/funnel.js b/client/amcharts/funnel.js deleted file mode 100755 index 8ab57cd..0000000 --- a/client/amcharts/funnel.js +++ /dev/null @@ -1,8 +0,0 @@ -AmCharts.AmFunnelChart=AmCharts.Class({inherits:AmCharts.AmSlicedChart,construct:function(u){this.type="funnel";AmCharts.AmFunnelChart.base.construct.call(this,u);this.cname="AmFunnelChart";this.startX=this.startY=0;this.baseWidth="100%";this.neckHeight=this.neckWidth=0;this.rotate=!1;this.valueRepresents="height";this.pullDistance=30;this.labelPosition="center";this.labelText="[[title]]: [[value]]";this.balloonText="[[title]]: [[value]]\n[[description]]";AmCharts.applyTheme(this,u,this.cname)},drawChart:function(){AmCharts.AmFunnelChart.base.drawChart.call(this); -var u=this.chartData;if(AmCharts.ifArray(u))if(0b&&(b=0);b=(Math.sqrt(b)-C)/(2*d);if(!k&&a>=r||k&&a<=r)b=2*-p/l;else if(!k&&a+b>r||k&&a-br||k&&a-br&&(d=0),e.push(a,a,a+d,a+b,a+b,a+d,a)),C=!0):(n.push(h-m,h+m,h+p,h-p),k?e.push(a,a,a-b,a-b):e.push(a,a,a+b,a+b));t.set();d=t.set();n=AmCharts.polygon(t,n,e,c.color,c.alpha,this.outlineThickness,this.outlineColor,this.outlineAlpha);d.push(n);this.graphsSet.push(d);c.wedge=d;c.index=w;if(e=this.gradientRatio){var s=[],f;for(f=0;f=this.hideLabelsPercent&&(e=this.formatString(this.labelText,c),(n=this.labelFunction)&&(e=n(c,e)),s=c.labelColor,s||(s=this.color),n=this.labelPosition,f="left","center"==n&&(f="middle"),"left"==n&&(f="right"),e=AmCharts.wrappedText(t,e,s,this.fontFamily,this.fontSize, -f,!1,this.maxLabelWidth),e.node.style.pointerEvents="none",d.push(e),s=h,k?(f=a-b/2,c.ty0=f):(f=a+b/2,c.ty0=f,fg-q&&(f=g-q)),"right"==n&&(s=v+10+A,c.tx0=h+(m-b/2/E),C&&(c.tx0=h+p)),"left"==n&&(c.tx0=h-(m-b/2/E),C&&(c.tx0=h-p),s=A),c.label=e,c.labelX=s,c.labelY=f,c.labelHeight=e.getBBox().height,e.translate(s,f),m=e.getBBox(),B=AmCharts.rect(t,m.width+5,m.height+5,"#ffffff",.005),B.translate(s+m.x,f+m.y),d.push(B),c.hitRect=B,F=e.getBBox().height,B=f);(0===c.alpha||0v&&(l=t+D+5):v+y+5>t&&(l=t-5-y);t=l;D=y;if(A){A.translate(a,l);var z=A.getBBox()}g.hitRect.translate(a+z.x,l+z.y);g.labelY=l;g.tx=a;g.ty=l;g.tx2=a}"center"!=this.labelPosition&&this.drawTicks()}}); \ No newline at end of file diff --git a/client/amcharts/gauge.js b/client/amcharts/gauge.js deleted file mode 100755 index d03d4ef..0000000 --- a/client/amcharts/gauge.js +++ /dev/null @@ -1,19 +0,0 @@ -AmCharts.GaugeAxis=AmCharts.Class({construct:function(a){this.cname="GaugeAxis";this.radius="95%";this.startAngle=-120;this.endAngle=120;this.startValue=0;this.endValue=200;this.gridCount=5;this.tickLength=10;this.minorTickLength=5;this.tickColor="#555555";this.labelFrequency=this.tickThickness=this.tickAlpha=1;this.inside=!0;this.labelOffset=10;this.showLastLabel=this.showFirstLabel=!0;this.axisThickness=1;this.axisColor="#000000";this.axisAlpha=1;this.gridInside=!0;this.topTextYOffset=0;this.topTextBold= -!0;this.bottomTextYOffset=0;this.bottomTextBold=!0;this.centerY=this.centerX="0%";this.bandOutlineAlpha=this.bandOutlineThickness=0;this.bandOutlineColor="#000000";this.bandAlpha=1;AmCharts.applyTheme(this,a,"GaugeAxis")},value2angle:function(a){return(a-this.startValue)/(this.endValue-this.startValue)*(this.endAngle-this.startAngle)+this.startAngle},setTopText:function(a){if(void 0!==a){this.topText=a;var b=this.chart;if(this.axisCreated){this.topTF&&this.topTF.remove();var c=this.topTextFontSize; -c||(c=b.fontSize);var d=this.topTextColor;d||(d=b.color);a=AmCharts.text(b.container,a,d,b.fontFamily,c,void 0,this.topTextBold);a.translate(this.centerXReal,this.centerYReal-this.radiusReal/2+this.topTextYOffset);this.chart.graphsSet.push(a);this.topTF=a}}},setBottomText:function(a){if(void 0!==a){this.bottomText=a;var b=this.chart;if(this.axisCreated){this.bottomTF&&this.bottomTF.remove();var c=this.bottomTextFontSize;c||(c=b.fontSize);var d=this.bottomTextColor;d||(d=b.color);a=AmCharts.text(b.container, -a,d,b.fontFamily,c,void 0,this.bottomTextBold);a.translate(this.centerXReal,this.centerYReal+this.radiusReal/2+this.bottomTextYOffset);this.bottomTF=a;this.chart.graphsSet.push(a)}}},draw:function(){var a=this.chart,b=a.graphsSet,c=this.startValue,d=this.endValue,f=this.valueInterval;isNaN(f)&&(f=(d-c)/this.gridCount);var m=this.minorTickInterval;isNaN(m)&&(m=f/5);var p=this.startAngle,k=this.endAngle,e=this.tickLength,l=(d-c)/f+1,g=(k-p)/(l-1);this.singleValueAngle=d=g/f;var h=a.container,q=this.tickColor, -u=this.tickAlpha,C=this.tickThickness,D=f/m,F=g/D,m=this.minorTickLength,I=this.labelFrequency,s=this.radiusReal;this.inside||(s-=15);var y=a.centerX+AmCharts.toCoordinate(this.centerX,a.realWidth),z=a.centerY+AmCharts.toCoordinate(this.centerY,a.realHeight);this.centerXReal=y;this.centerYReal=z;var J={fill:this.axisColor,"fill-opacity":this.axisAlpha,"stroke-width":0,"stroke-opacity":0},n,A;this.gridInside?A=n=s:(n=s-e,A=n+m);var r=this.axisThickness/2,k=AmCharts.wedge(h,y,z,p,k-p,n+r,n+r,n-r,0, -J);b.push(k);k=AmCharts.doNothing;AmCharts.isModern||(k=Math.round);J=AmCharts.getDecimals(f);for(n=0;na&&(a=c.width*h);c.height*h>e&&(e=c.height* -h)}(h=this.legend)&&h.invalidateSize();if(this.adjustSize&&!this.chartCreated){g&&(g=g.getBBox(),g.width>a&&(a=g.width),g.height>e&&(e=g.height));g=0;if(l>e||d>a)g=Math.min(l-e,d-a);0= -this.totalFrames?d=b.value:(b.frame++,b.clockWiseOnly&&b.valuethis.maxLabelWidth&&(q=this.maxLabelWidth);this.labelText&&this.labelsEnabled||(v=q=0);w=void 0===this.pieX?(b-k-a)/2+k:d(this.pieX,this.realWidth);x=void 0===this.pieY?(h-t-m)/2+t:d(this.pieY,h);g=d(this.radius,b,h);g||(b=0<=v?b-k-a-2*q:b-k-a,h=h-t-m,g=Math.min(b,h),hb&&(g=b)),h=AmCharts.toCoordinate(this.pullOutRadius,g),g=(0<=v?g-1.8*(v+h):g-1.8*h)/2);g=g&&(d=g-1);m=AmCharts.fitToBounds(this.startAngle,0,360);0=this.hideLabelsPercent){var l=m+n/2;360=l&&0<=l?(B=0,A="start",u=8):90<=l&&180>l?(B=1, -A="start",u=8):180<=l&&270>l?(B=2,A="end",u=-8):270<=l&&360>l&&(B=3,A="end",u=-8);a.labelQuarter=B}else A="middle";var l=this.formatString(this.labelText,a),s=this.labelFunction;s&&(l=s(a,l));s=a.labelColor;s||(s=this.color);l=AmCharts.wrappedText(c,l,s,this.fontFamily,this.fontSize,A,!1,this.maxLabelWidth);l.translate(n+1.5*u,z);l.node.style.pointerEvents="none";a.tx=n+1.5*u;a.ty=z;0<=r?(r=l.getBBox(),s=AmCharts.rect(c,r.width+5,r.height+5,"#FFFFFF",.005),s.translate(n+1.5*u+r.x,z+r.y),a.hitRect= -s,p.push(l),p.push(s)):this.freeLabelsSet.push(l);a.label=l;a.tx=n;a.tx2=n+u;a.tx0=w+q*g;a.ty0=x+y*g}n=d+(g-d)/2;a.pulled&&(n+=this.pullOutRadiusReal);a.balloonX=q*n+w;a.balloonY=y*n+x;a.startX=Math.round(q*t);a.startY=Math.round(y*t);a.pullX=Math.round(q*h);a.pullY=Math.round(y*h);this.graphsSet.push(p);(0===a.alpha||0c?b.toFront():180<=c&&b.toBack()}},arrangeLabels:function(){var e=this.chartData,f=e.length,c,b;for(b=f-1;0<=b;b--)c=e[b],0!==c.labelQuarter||c.hidden||this.checkOverlapping(b,c,0,!0,0);for(b=0;b -h&&(d=f.ty+3*f.iy,f.ty=d,m.translate(f.tx2,d),f.hitRect&&(m=m.getBBox(),f.hitRect.translate(f.tx2+m.x,d+m.y)),this.checkOverlapping(e,f,c,b,h+1))}},checkOverlappingReal:function(e,f,c){var b=!1,h=e.label,d=f.label;e.labelQuarter!=c||e.hidden||f.hidden||!d||(h=h.getBBox(),c={},c.width=h.width,c.height=h.height,c.y=e.ty,c.x=e.tx,e=d.getBBox(),d={},d.width=e.width,d.height=e.height,d.y=f.ty,d.x=f.tx,AmCharts.hitTest(c,d)&&(b=!0));return b}}); \ No newline at end of file diff --git a/client/amcharts/radar.js b/client/amcharts/radar.js deleted file mode 100755 index e44dfe2..0000000 --- a/client/amcharts/radar.js +++ /dev/null @@ -1,10 +0,0 @@ -AmCharts.AmRadarChart=AmCharts.Class({inherits:AmCharts.AmCoordinateChart,construct:function(a){this.type="radar";AmCharts.AmRadarChart.base.construct.call(this,a);this.cname="AmRadarChart";this.marginRight=this.marginBottom=this.marginTop=this.marginLeft=0;this.radius="35%";AmCharts.applyTheme(this,a,this.cname)},initChart:function(){AmCharts.AmRadarChart.base.initChart.call(this);this.dataChanged&&(this.updateData(),this.dataChanged=!1,this.dispatchDataUpdated=!0);this.drawChart()},updateData:function(){this.parseData(); -var a=this.graphs,b;for(b=0;bk&&(u="end",h-=10);180==k&&(q-=5);0===k&&(q+=5);k=AmCharts.text(b.container,a[t].category,r,l,g,u);k.translate(h+5,q);this.set.push(k);k.getBBox()}}}}});AmCharts.RadItem=AmCharts.Class({construct:function(a,b,c,d,m,p,e,f){void 0===c&&(c="");var n=a.chart.fontFamily,l=a.fontSize;void 0===l&&(l=a.chart.fontSize);var g=a.color;void 0===g&&(g=a.chart.color);var r=a.chart.container;this.set=d=r.set();var w=a.axisColor,t=a.axisAlpha,k=a.tickLength,h=a.gridAlpha,q=a.gridThickness,u=a.gridColor,A=a.dashLength,B=a.fillColor,y=a.fillAlpha,C=a.labelsEnabled;m=a.counter;var D=a.inside,E=a.gridType,s,H=a.labelOffset;b-=a.height;var x;p=a.x;var F=a.y;e?(C=!0,isNaN(e.tickLength)|| -(k=e.tickLength),void 0!=e.lineColor&&(u=e.lineColor),isNaN(e.lineAlpha)||(h=e.lineAlpha),isNaN(e.dashLength)||(A=e.dashLength),isNaN(e.lineThickness)||(q=e.lineThickness),!0===e.inside&&(D=!0),void 0!==e.boldLabel&&(f=e.boldLabel)):c||(h/=3,k/=2);var G="end",z=-1;D&&(G="start",z=1);var v;C&&(v=AmCharts.text(r,c,g,n,l,G,f),v.translate(p+(k+3+H)*z,b),d.push(v),this.label=v,x=AmCharts.line(r,[p,p+k*z],[b,b],w,t,q),d.push(x));b=Math.round(a.y-b);f=[];n=[];if(0a?d?(d=this.startTime+e*c,c=this.endTime+1*c,this.zoomToDates(new Date(d),new Date(c))):(d=this.start+e,c=this.end+1,this.zoomToIndexes(d,c)):d?(d=this.startTime-e*c,c=this.endTime- -1*c,this.zoomToDates(new Date(d),new Date(c))):(d=this.start-e,c=this.end-1,this.zoomToIndexes(d,c))}},validateData:function(a){this.marginsUpdated=!1;this.zoomOutOnDataUpdate&&!a&&(this.endTime=this.end=this.startTime=this.start=NaN);AmCharts.AmSerialChart.base.validateData.call(this)},drawChart:function(){AmCharts.AmSerialChart.base.drawChart.call(this);var a=this.chartData;if(AmCharts.ifArray(a)){var b=this.chartScrollbar;b&&b.draw();if(0c&&(a=b-c,this.updateScrollbar=!0),a!=this.startTime&&b-a>c&&(b=a+c,this.updateScrollbar=!0));var d=this.minSelectedTime;if(0n&&(a=n);bn&&(b=n);bc&&(a=b-c,this.updateScrollbar=!0),a!=this.start&&b-a>c&&(b=a+c,this.updateScrollbar=!0));if(a!=this.start||b!=this.end){var d=this.chartData.length-1;isNaN(a)&&(a=0,isNaN(c)||(a=d-c));isNaN(b)&&(b=d);bd&&(b=d);a>d&&(a=d-1);0>a&&(a=0);this.start=a;this.end=b;this.categoryAxis.zoom(a,b);this.zoomAxesAndGraphs();this.zoomScrollbar();0!== -a||b!=this.chartData.length-1?this.showZB(!0):this.showZB(!1);this.updateColumnsDepth();this.dispatchIndexZoomEvent()}},updateGraphs:function(){AmCharts.AmSerialChart.base.updateGraphs.call(this);var a=this.graphs,b;for(b=0;bb.depth?1:-1},zoomScrollbar:function(){var a=this.chartScrollbar,b=this.categoryAxis;a&&this.updateScrollbar&& -(b.parseDates&&!b.equalSpacing?a.timeZoom(this.startTime,this.endTime):a.zoom(this.start,this.end),this.updateScrollbar=!0)},updateTrendLines:function(){var a=this.trendLines,b;for(b=0;be&&(e=0);f>a.length-1&&(f=a.length-1);var l=e+Math.round((f-e)/2),n=a[l][b];if(1>=f-e){if(d)return e;d=a[f][b];return Math.abs(a[e][b]-c)a&&(a=0),b>d-1&&(b=d-1),d=this.categoryAxis,d.parseDates&&!d.equalSpacing?this.zoom(c[a].time,this.getEndTime(c[b].time)):this.zoom(a,b))}},zoomToDates:function(a,b){this.updateScrollbar=!0;var c=this.chartData;if(this.categoryAxis.equalSpacing){var d=this.getClosestIndex(c,"time",a.getTime(),!0,0,c.length);b=AmCharts.resetDateToMin(b,this.categoryAxis.minPeriod, -1);c=this.getClosestIndex(c,"time",b.getTime(),!1,0,c.length);this.zoom(d,c)}else this.zoom(a.getTime(),b.getTime())},zoomToCategoryValues:function(a,b){this.updateScrollbar=!0;this.zoom(this.getCategoryIndexByValue(a),this.getCategoryIndexByValue(b))},formatPeriodString:function(a,b){if(b){var c=["value","open","low","high","close"],d="value open low high close average sum count".split(" "),e=b.valueAxis,f=this.chartData,l=b.numberFormatter;l||(l=this.nf);for(var n=0;nA)r=A;if(isNaN(s)||sz)y=z;if(isNaN(w)||wb&&0===h&&(h=180):0>c&&270==h&&(h=90);this.gradientRotation=h;0===d&&0===e&&(this.cornerRadius=m);this.draw()},draw:function(){var a=this.set;a.clear();var b=this.container,c=this.w,d=this.h,e=this.dx,f= -this.dy,l=this.colors,n=this.alpha,k=this.bwidth,g=this.bcolor,h=this.balpha,m=this.gradientRotation,u=this.cornerRadius,r=this.dashLength,s=this.pattern,p=l,v=l;"object"==typeof l&&(p=l[0],v=l[l.length-1]);var q,x,t,y,w,C,B,z,A,D=n;s&&(n=0);if(0Math.abs(d)&&(d=0);1>Math.abs(c)&&(c=0);b=0===d?AmCharts.line(b,[0,c],[0,0],g,h,k,r):0===c?AmCharts.line(b, -[0,0],[0,d],g,h,k,r):0d?[q,A,x,t,y,w,C,B,z,b]:[B,z,x,t,y,w,q,A,C,b];for(q=0;qa&&(this.endTime=a);q=this.minorGridEnabled;var w,a=this.gridAlpha,C;if(this.parseDates&&!this.equalSpacing){this.timeDifference=this.endTime-this.startTime;d=this.choosePeriod(0);e=d.period;u=d.count;r=AmCharts.getPeriodDuration(e,u);rg&&(g=0),l=0,this.end-g+1>=this.autoRotateCount&&(this.labelRotation=this.autoRotateAngle),b=g;b<=this.end+2;b++){p=!1;0<=b&&bthis.end&&"start"==this.tickPosition&&(h=" ");p=new this.axisItemRenderer(this,g,h,x,B,p,void 0,y,tickShift,!1,s.labelColor);p.serialDataItem=s;this.pushAxisItem(p);this.gridAlpha=a}}else if(this.parseDates&&this.equalSpacing){f=this.start; -this.startTime=this.data[this.start].time;this.endTime=this.data[this.end].time;this.timeDifference=this.endTime-this.startTime;d=this.choosePeriod(0);e=d.period;u=d.count;r=AmCharts.getPeriodDuration(e,u);rg&&(g=0);v=this.end+2;v>=this.data.length&&(v=this.data.length);C=!1;C=!n;this.previousPos=-1E3;20=r){g=this.getCoordinate(b-this.start);q=!1;this.nextPeriod[s]&&(q=this.checkPeriodChange(this.nextPeriod[s],1,m,h,s));y=!1;q&&this.markPeriodChange?(q=this.dateFormatsObject[this.nextPeriod[s]],y=!0):q=this.dateFormatsObject[s];h=AmCharts.formatDate(new Date(m),q);if(b==d&&!n||b==l&&!k)h=" ";C?C=!1:(t||(y=!1),g-this.previousPos>this.safeDistance*Math.cos(this.labelRotation*Math.PI/180)&&(this.labelFunction&&(h=this.labelFunction(h,new Date(m),this,e,u,p)),this.boldLabels&&(y=!0),p=new this.axisItemRenderer(this, -g,h,void 0,void 0,void 0,void 0,y),x=p.graphics(),this.pushAxisItem(p),p=x.getBBox().width,AmCharts.isModern||(p-=g),this.previousPos=g+p));p=h=m}else isNaN(w)||(this.checkPeriodChange(e,w,m,B)&&(this.gridAlpha=this.minorGridAlpha,g=this.getCoordinate(b-this.start),q=new this.axisItemRenderer(this,g),this.pushAxisItem(q),B=m),this.gridAlpha=a)}for(b=0;bthis.height+1&&c--:f>this.width+1&&c--;0>f&&c++;return c=AmCharts.fitToBounds(c,0,b.length-1)},dateToCoordinate:function(a){return this.parseDates&&!this.equalSpacing?(a.getTime()- -this.startTime)*this.stepWidth:this.parseDates&&this.equalSpacing?(a=this.chart.getClosestIndex(this.data,"time",a.getTime(),!1,0,this.data.length-1),this.getCoordinate(a-this.start)):NaN},categoryToCoordinate:function(a){return this.chart?(a=this.chart.getCategoryIndexByValue(a),this.getCoordinate(a-this.start)):NaN},coordinateToDate:function(a){return this.equalSpacing?(a=this.xToIndex(a),new Date(this.data[a].time)):new Date(this.startTime+a/this.stepWidth)}}); \ No newline at end of file diff --git a/client/amcharts/themes/black.js b/client/amcharts/themes/black.js deleted file mode 100755 index 09c160b..0000000 --- a/client/amcharts/themes/black.js +++ /dev/null @@ -1,206 +0,0 @@ -AmCharts.themes.black = { - - themeName: "black", - - AmChart: { - color: "#e7e7e7", backgroundColor: "#222222" - }, - - AmCoordinateChart: { - colors: ["#de4c4f", "#d8854f", "#eea638", "#a7a737", "#86a965", "#8aabb0", "#69c8ff", "#cfd27e", "#9d9888", "#916b8a", "#724887", "#7256bc"] - }, - - AmStockChart: { - colors: ["#de4c4f", "#d8854f", "#eea638", "#a7a737", "#86a965", "#8aabb0", "#69c8ff", "#cfd27e", "#9d9888", "#916b8a", "#724887", "#7256bc"] - }, - - AmSlicedChart: { - outlineAlpha: 1, - outlineThickness: 2, - labelTickColor: "#FFFFFF", - labelTickAlpha: 0.3, - colors: ["#de4c4f", "#d8854f", "#eea638", "#a7a737", "#86a965", "#8aabb0", "#69c8ff", "#cfd27e", "#9d9888", "#916b8a", "#724887", "#7256bc"] - }, - - AmRectangularChart: { - zoomOutButtonColor: '#FFFFFF', - zoomOutButtonRollOverAlpha: 0.15, - zoomOutButtonImage: "lensWhite.png" - }, - - AxisBase: { - axisColor: "#FFFFFF", - axisAlpha: 0.3, - gridAlpha: 0.1, - gridColor: "#FFFFFF", - dashLength: 3 - }, - - ChartScrollbar: { - backgroundColor: "#000000", - backgroundAlpha: 0.2, - graphFillAlpha: 0.2, - graphLineAlpha: 0, - graphFillColor: "#FFFFFF", - selectedGraphFillColor: "#FFFFFF", - selectedGraphFillAlpha: 0.4, - selectedGraphLineColor: "#FFFFFF", - selectedBackgroundColor: "#FFFFFF", - selectedBackgroundAlpha: 0.09, - gridAlpha: 0.15 - }, - - ChartCursor: { - cursorColor: "#FFFFFF", - color: "#000000", - cursorAlpha: 0.5 - }, - - AmLegend: { - color: "#e7e7e7" - }, - - AmGraph: { - lineAlpha: 0.9 - }, - - - GaugeArrow: { - color: "#FFFFFF", - alpha: 0.8, - nailAlpha: 0, - innerRadius: "40%", - nailRadius: 15, - startWidth: 15, - borderAlpha: 0.8, - nailBorderAlpha: 0 - }, - - GaugeAxis: { - tickColor: "#FFFFFF", - tickAlpha: 1, - tickLength: 15, - minorTickLength: 8, - axisThickness: 3, - axisColor: '#FFFFFF', - axisAlpha: 1, - bandAlpha: 0.8 - }, - - TrendLine: { - lineColor: "#c03246", - lineAlpha: 0.8 - }, - - // ammap - AreasSettings: { - alpha: 0.8, - color: "#FFFFFF", - colorSolid: "#000000", - unlistedAreasAlpha: 0.4, - unlistedAreasColor: "#FFFFFF", - outlineColor: "#000000", - outlineAlpha: 0.5, - outlineThickness: 0.5, - rollOverColor: "#3c5bdc", - rollOverOutlineColor: "#000000", - selectedOutlineColor: "#000000", - selectedColor: "#f15135", - unlistedAreasOutlineColor: "#000000", - unlistedAreasOutlineAlpha: 0.5 - }, - - LinesSettings: { - color: "#FFFFFF", - alpha: 0.8 - }, - - ImagesSettings: { - alpha: 0.8, - labelColor: "#FFFFFF", - color: "#FFFFFF", - labelRollOverColor: "#3c5bdc" - }, - - ZoomControl: { - buttonRollOverColor: "#3c5bdc", - buttonFillColor: "#738f58", - buttonBorderColor: "#738f58", - buttonFillAlpha: 0.8, - gridBackgroundColor: "#FFFFFF", - buttonBorderAlpha:0, - buttonCornerRadius:2, - gridAlpha:0.5, - gridBackgroundColor:"#FFFFFF", - homeIconFile:"homeIconWhite.gif", - buttonIconAlpha:0.6, - gridAlpha: 0.2, - buttonSize:20 - }, - - SmallMap: { - mapColor: "#FFFFFF", - rectangleColor: "#FFFFFF", - backgroundColor: "#000000", - backgroundAlpha: 0.7, - borderThickness: 1, - borderAlpha: 0.8 - }, - - // the defaults below are set using CSS syntax, you can use any existing css property - // if you don't use Stock chart, you can delete lines below - PeriodSelector: { - color: "#e7e7e7" - }, - - PeriodButton: { - color: "#e7e7e7", - background: "transparent", - opacity: 0.7, - border: "1px solid rgba(255, 255, 255, .15)", - MozBorderRadius: "5px", - borderRadius: "5px", - margin: "1px", - outline: "none", - boxSizing: "border-box" - }, - - PeriodButtonSelected: { - color: "#e7e7e7", - backgroundColor: "rgba(255, 255, 255, 0.1)", - border: "1px solid rgba(255, 255, 255, .3)", - MozBorderRadius: "5px", - borderRadius: "5px", - margin: "1px", - outline: "none", - opacity: 1, - boxSizing: "border-box" - }, - - PeriodInputField: { - color: "#e7e7e7", - background: "transparent", - border: "1px solid rgba(255, 255, 255, .15)", - outline: "none" - }, - - DataSetSelector: { - color: "#e7e7e7", - selectedBackgroundColor: "rgba(255, 255, 255, .25)", - rollOverBackgroundColor: "rgba(255, 255, 255, .15)" - }, - - DataSetCompareList: { - color: "#e7e7e7", - lineHeight: "100%", - boxSizing: "initial", - webkitBoxSizing: "initial", - border: "1px solid rgba(255, 255, 255, .15)" - }, - - DataSetSelect: { - border: "1px solid rgba(255, 255, 255, .15)", - outline: "none" - } - -}; \ No newline at end of file diff --git a/client/amcharts/themes/chalk.js b/client/amcharts/themes/chalk.js deleted file mode 100755 index a33f392..0000000 --- a/client/amcharts/themes/chalk.js +++ /dev/null @@ -1,217 +0,0 @@ -AmCharts.themes.chalk = { - - themeName: "chalk", - - AmChart: { - color: "#e7e7e7", - fontFamily: "Covered By Your Grace", - fontSize: 18, - handDrawn: true, - backgroundColor: "#282828" - }, - - AmCoordinateChart: { - colors: ["#FFFFFF", "#e384a6", "#f4d499", "#4d90d6", "#c7e38c", "#9986c8", "#edf28c", "#ffd1d4", "#5ee1dc", "#b0eead", "#fef85a", "#8badd2"] - }, - - AmSlicedChart: { - outlineAlpha: 1, - labelTickColor: "#FFFFFF", - labelTickAlpha: 0.3, - colors: ["#FFFFFF", "#e384a6", "#f4d499", "#4d90d6", "#c7e38c", "#9986c8", "#edf28c", "#ffd1d4", "#5ee1dc", "#b0eead", "#fef85a", "#8badd2"] - }, - - AmStockChart: { - colors: ["#FFFFFF", "#e384a6", "#f4d499", "#4d90d6", "#c7e38c", "#9986c8", "#edf28c", "#ffd1d4", "#5ee1dc", "#b0eead", "#fef85a", "#8badd2"] - }, - - AmRectangularChart: { - - zoomOutButtonColor: '#FFFFFF', - zoomOutButtonRollOverAlpha: 0.15, - zoomOutButtonImage: "lensWhite.png" - }, - - AxisBase: { - axisColor: "#FFFFFF", - gridColor: "#FFFFFF" - }, - - ChartScrollbar: { - backgroundColor: "#FFFFFF", - backgroundAlpha: 0.2, - graphFillAlpha: 0.5, - graphLineAlpha: 0, - selectedBackgroundColor: "#000000", - selectedBackgroundAlpha: 0.25, - fontSize: 15, - gridAlpha: 0.15 - }, - - ChartCursor: { - cursorColor: "#FFFFFF", - color: "#000000" - }, - - AmLegend: { - color: "#e7e7e7", - markerSize: 20 - }, - - AmGraph: { - lineAlpha: 0.8 - }, - - - GaugeArrow: { - color: "#FFFFFF", - alpha: 0.1, - nailAlpha: 0, - innerRadius: "40%", - nailRadius: 15, - startWidth: 15, - borderAlpha: 0.8, - nailBorderAlpha: 0 - }, - - GaugeAxis: { - tickColor: "#FFFFFF", - tickAlpha: 0.8, - tickLength: 15, - minorTickLength: 8, - axisThickness: 3, - axisColor: '#FFFFFF', - axisAlpha: 0.8, - bandAlpha: 0.4 - }, - - TrendLine: { - lineColor: "#c03246", - lineAlpha: 0.8 - }, - - // ammap - AmMap: { - handDrawn: false - }, - - AreasSettings: { - alpha: 0.8, - color: "#FFFFFF", - colorSolid: "#000000", - unlistedAreasAlpha: 0.4, - unlistedAreasColor: "#FFFFFF", - outlineColor: "#000000", - outlineAlpha: 0.5, - outlineThickness: 0.5, - rollOverColor: "#4d90d6", - rollOverOutlineColor: "#000000", - selectedOutlineColor: "#000000", - selectedColor: "#e384a6", - unlistedAreasOutlineColor: "#000000", - unlistedAreasOutlineAlpha: 0.5 - }, - - LinesSettings: { - color: "#FFFFFF", - alpha: 0.8 - }, - - ImagesSettings: { - alpha: 0.8, - labelFontSize: 16, - labelColor: "#FFFFFF", - color: "#FFFFFF", - labelRollOverColor: "#4d90d6" - }, - - ZoomControl: { - buttonRollOverColor: "#4d90d6", - buttonFillColor: "#e384a6", - buttonFillAlpha: 0.8, - buttonBorderColor: "#FFFFFF", - gridBackgroundColor: "#FFFFFF", - gridAlpha: 0.8 - }, - - SmallMap: { - mapColor: "#FFFFFF", - rectangleColor: "#FFFFFF", - backgroundColor: "#000000", - backgroundAlpha: 0.7, - borderThickness: 1, - borderAlpha: 0.8 - }, - - - // the defaults below are set using CSS syntax, you can use any existing css property - // if you don't use Stock chart, you can delete lines below - PeriodSelector: { - fontFamily: "Covered By Your Grace", - fontSize:"16px", - color: "#e7e7e7" - }, - - PeriodButton: { - fontFamily: "Covered By Your Grace", - fontSize:"16px", - color: "#e7e7e7", - background: "transparent", - opacity: 0.7, - border: "1px solid rgba(255, 255, 255, .15)", - MozBorderRadius: "5px", - borderRadius: "5px", - margin: "1px", - outline: "none", - boxSizing: "border-box" - }, - - PeriodButtonSelected: { - fontFamily: "Covered By Your Grace", - fontSize:"16px", - color: "#e7e7e7", - backgroundColor: "rgba(255, 255, 255, 0.1)", - border: "1px solid rgba(255, 255, 255, .3)", - MozBorderRadius: "5px", - borderRadius: "5px", - margin: "1px", - outline: "none", - opacity: 1, - boxSizing: "border-box" - }, - - PeriodInputField: { - fontFamily: "Covered By Your Grace", - fontSize:"16px", - color: "#e7e7e7", - background: "transparent", - border: "1px solid rgba(255, 255, 255, .15)", - outline: "none" - }, - - DataSetSelector: { - fontFamily: "Covered By Your Grace", - fontSize:"16px", - color: "#e7e7e7", - selectedBackgroundColor: "rgba(255, 255, 255, .25)", - rollOverBackgroundColor: "rgba(255, 255, 255, .15)" - }, - - DataSetCompareList: { - fontFamily: "Covered By Your Grace", - fontSize:"16px", - color: "#e7e7e7", - lineHeight: "100%", - boxSizing: "initial", - webkitBoxSizing: "initial", - border: "1px solid rgba(255, 255, 255, .15)" - }, - - DataSetSelect: { - fontFamily: "Covered By Your Grace", - fontSize:"16px", - border: "1px solid rgba(255, 255, 255, .15)", - outline: "none" - } - -}; \ No newline at end of file diff --git a/client/amcharts/themes/dark.js b/client/amcharts/themes/dark.js deleted file mode 100755 index 8367b72..0000000 --- a/client/amcharts/themes/dark.js +++ /dev/null @@ -1,205 +0,0 @@ -AmCharts.themes.dark = { - - themeName: "dark", - - AmChart: { - color: "#e7e7e7", backgroundColor: "#282828" - }, - - AmCoordinateChart: { - colors: ["#ae85c9", "#aab9f7", "#b6d2ff", "#c9e6f2", "#c9f0e1", "#e8d685", "#e0ad63", "#d48652", "#d27362", "#495fba", "#7a629b", "#8881cc"] - }, - - AmStockChart: { - colors: ["#639dbd", "#e8d685", "#ae85c9", "#c9f0e1", "#d48652", "#629b6d", "#719dc3", "#719dc3"] - }, - - AmSlicedChart: { - outlineAlpha: 1, - outlineThickness: 2, - labelTickColor: "#FFFFFF", - labelTickAlpha: 0.3, - colors: ["#495fba", "#e8d685", "#ae85c9", "#c9f0e1", "#d48652", "#629b6d", "#719dc3", "#719dc3"] - }, - - AmRectangularChart: { - zoomOutButtonColor: '#FFFFFF', - zoomOutButtonRollOverAlpha: 0.15, - zoomOutButtonImage: "lensWhite.png" - }, - - AxisBase: { - axisColor: "#FFFFFF", - axisAlpha: 0.3, - gridAlpha: 0.1, - gridColor: "#FFFFFF", - dashLength: 3 - }, - - ChartScrollbar: { - backgroundColor: "#000000", - backgroundAlpha: 0.2, - graphFillAlpha: 0.2, - graphLineAlpha: 0, - graphFillColor: "#FFFFFF", - selectedGraphFillColor: "#FFFFFF", - selectedGraphFillAlpha: 0.4, - selectedGraphLineColor: "#FFFFFF", - selectedBackgroundColor: "#FFFFFF", - selectedBackgroundAlpha: 0.09, - gridAlpha: 0.15 - }, - - ChartCursor: { - cursorColor: "#FFFFFF", - color: "#000000", - cursorAlpha: 0.5 - }, - - AmLegend: { - color: "#e7e7e7" - }, - - AmGraph: { - lineAlpha: 0.9 - }, - - - GaugeArrow: { - color: "#FFFFFF", - alpha: 0.8, - nailAlpha: 0, - innerRadius: "40%", - nailRadius: 15, - startWidth: 15, - borderAlpha: 0.8, - nailBorderAlpha: 0 - }, - - GaugeAxis: { - tickColor: "#FFFFFF", - tickAlpha: 1, - tickLength: 15, - minorTickLength: 8, - axisThickness: 3, - axisColor: '#FFFFFF', - axisAlpha: 1, - bandAlpha: 0.8 - }, - - TrendLine: { - lineColor: "#c03246", - lineAlpha: 0.8 - }, - - // ammap - AreasSettings: { - alpha: 0.8, - color: "#FFFFFF", - colorSolid: "#000000", - unlistedAreasAlpha: 0.4, - unlistedAreasColor: "#FFFFFF", - outlineColor: "#000000", - outlineAlpha: 0.5, - outlineThickness: 0.5, - rollOverColor: "#3c5bdc", - rollOverOutlineColor: "#000000", - selectedOutlineColor: "#000000", - selectedColor: "#f15135", - unlistedAreasOutlineColor: "#000000", - unlistedAreasOutlineAlpha: 0.5 - }, - - LinesSettings: { - color: "#FFFFFF", - alpha: 0.8 - }, - - ImagesSettings: { - alpha: 0.8, - labelColor: "#FFFFFF", - color: "#FFFFFF", - labelRollOverColor: "#3c5bdc" - }, - - ZoomControl: { - buttonRollOverColor: "#3c5bdc", - buttonFillColor: "#f15135", - buttonFillAlpha: 0.8, - gridBackgroundColor: "#FFFFFF", - buttonBorderAlpha:0, - buttonCornerRadius:2, - gridAlpha:0.5, - gridBackgroundColor:"#FFFFFF", - homeIconFile:"homeIconWhite.gif", - buttonIconAlpha:0.6, - gridAlpha: 0.2, - buttonSize:20 - }, - - SmallMap: { - mapColor: "#FFFFFF", - rectangleColor: "#FFFFFF", - backgroundColor: "#000000", - backgroundAlpha: 0.7, - borderThickness: 1, - borderAlpha: 0.8 - }, - - // the defaults below are set using CSS syntax, you can use any existing css property - // if you don't use Stock chart, you can delete lines below - PeriodSelector: { - color: "#e7e7e7" - }, - - PeriodButton: { - color: "#e7e7e7", - background: "transparent", - opacity: 0.7, - border: "1px solid rgba(255, 255, 255, .15)", - MozBorderRadius: "5px", - borderRadius: "5px", - margin: "1px", - outline: "none", - boxSizing: "border-box" - }, - - PeriodButtonSelected: { - color: "#e7e7e7", - backgroundColor: "rgba(255, 255, 255, 0.1)", - border: "1px solid rgba(255, 255, 255, .3)", - MozBorderRadius: "5px", - borderRadius: "5px", - margin: "1px", - outline: "none", - opacity: 1, - boxSizing: "border-box" - }, - - PeriodInputField: { - color: "#e7e7e7", - background: "transparent", - border: "1px solid rgba(255, 255, 255, .15)", - outline: "none" - }, - - DataSetSelector: { - color: "#e7e7e7", - selectedBackgroundColor: "rgba(255, 255, 255, .25)", - rollOverBackgroundColor: "rgba(255, 255, 255, .15)" - }, - - DataSetCompareList: { - color: "#e7e7e7", - lineHeight: "100%", - boxSizing: "initial", - webkitBoxSizing: "initial", - border: "1px solid rgba(255, 255, 255, .15)" - }, - - DataSetSelect: { - border: "1px solid rgba(255, 255, 255, .15)", - outline: "none" - } - -}; \ No newline at end of file diff --git a/client/amcharts/themes/light.js b/client/amcharts/themes/light.js deleted file mode 100755 index 077ddbb..0000000 --- a/client/amcharts/themes/light.js +++ /dev/null @@ -1,199 +0,0 @@ -AmCharts.themes.light = { - - themeName:"light", - - AmChart: { - color: "#000000", backgroundColor: "#FFFFFF" - }, - - AmCoordinateChart: { - colors: ["#67b7dc", "#fdd400", "#84b761", "#cc4748", "#cd82ad", "#2f4074", "#448e4d", "#b7b83f", "#b9783f", "#b93e3d", "#913167"] - }, - - AmStockChart: { - colors: ["#67b7dc", "#fdd400", "#84b761", "#cc4748", "#cd82ad", "#2f4074", "#448e4d", "#b7b83f", "#b9783f", "#b93e3d", "#913167"] - }, - - AmSlicedChart: { - colors: ["#67b7dc", "#fdd400", "#84b761", "#cc4748", "#cd82ad", "#2f4074", "#448e4d", "#b7b83f", "#b9783f", "#b93e3d", "#913167"], - outlineAlpha: 1, - outlineThickness: 2, - labelTickColor: "#000000", - labelTickAlpha: 0.3 - }, - - AmRectangularChart: { - zoomOutButtonColor: '#000000', - zoomOutButtonRollOverAlpha: 0.15, - zoomOutButtonImage: "lens.png" - }, - - AxisBase: { - axisColor: "#000000", - axisAlpha: 0.3, - gridAlpha: 0.1, - gridColor: "#000000" - }, - - ChartScrollbar: { - backgroundColor: "#000000", - backgroundAlpha: 0.12, - graphFillAlpha: 0.5, - graphLineAlpha: 0, - selectedBackgroundColor: "#FFFFFF", - selectedBackgroundAlpha: 0.4, - gridAlpha: 0.15 - }, - - ChartCursor: { - cursorColor: "#000000", - color: "#FFFFFF", - cursorAlpha: 0.5 - }, - - AmLegend: { - color: "#000000" - }, - - AmGraph: { - lineAlpha: 0.9 - }, - GaugeArrow: { - color: "#000000", - alpha: 0.8, - nailAlpha: 0, - innerRadius: "40%", - nailRadius: 15, - startWidth: 15, - borderAlpha: 0.8, - nailBorderAlpha: 0 - }, - - GaugeAxis: { - tickColor: "#000000", - tickAlpha: 1, - tickLength: 15, - minorTickLength: 8, - axisThickness: 3, - axisColor: '#000000', - axisAlpha: 1, - bandAlpha: 0.8 - }, - - TrendLine: { - lineColor: "#c03246", - lineAlpha: 0.8 - }, - - // ammap - AreasSettings: { - alpha: 0.8, - color: "#67b7dc", - colorSolid: "#003767", - unlistedAreasAlpha: 0.4, - unlistedAreasColor: "#000000", - outlineColor: "#FFFFFF", - outlineAlpha: 0.5, - outlineThickness: 0.5, - rollOverColor: "#3c5bdc", - rollOverOutlineColor: "#FFFFFF", - selectedOutlineColor: "#FFFFFF", - selectedColor: "#f15135", - unlistedAreasOutlineColor: "#FFFFFF", - unlistedAreasOutlineAlpha: 0.5 - }, - - LinesSettings: { - color: "#000000", - alpha: 0.8 - }, - - ImagesSettings: { - alpha: 0.8, - labelColor: "#000000", - color: "#000000", - labelRollOverColor: "#3c5bdc" - }, - - ZoomControl: { - buttonRollOverColor: "#3c5bdc", - buttonFillColor: "#3994e2", - buttonBorderColor: "#3994e2", - buttonFillAlpha: 0.8, - gridBackgroundColor: "#FFFFFF", - buttonBorderAlpha:0, - buttonCornerRadius:2, - gridColor:"#FFFFFF", - gridBackgroundColor:"#000000", - buttonIconAlpha:0.6, - gridAlpha: 0.6, - buttonSize:20 - }, - - SmallMap: { - mapColor: "#000000", - rectangleColor: "#f15135", - backgroundColor: "#FFFFFF", - backgroundAlpha: 0.7, - borderThickness: 1, - borderAlpha: 0.8 - }, - - // the defaults below are set using CSS syntax, you can use any existing css property - // if you don't use Stock chart, you can delete lines below - PeriodSelector: { - color: "#000000" - }, - - PeriodButton: { - color: "#000000", - background: "transparent", - opacity: 0.7, - border: "1px solid rgba(0, 0, 0, .3)", - MozBorderRadius: "5px", - borderRadius: "5px", - margin: "1px", - outline: "none", - boxSizing: "border-box" - }, - - PeriodButtonSelected: { - color: "#000000", - backgroundColor: "#b9cdf5", - border: "1px solid rgba(0, 0, 0, .3)", - MozBorderRadius: "5px", - borderRadius: "5px", - margin: "1px", - outline: "none", - opacity: 1, - boxSizing: "border-box" - }, - - PeriodInputField: { - color: "#000000", - background: "transparent", - border: "1px solid rgba(0, 0, 0, .3)", - outline: "none" - }, - - DataSetSelector: { - - color: "#000000", - selectedBackgroundColor: "#b9cdf5", - rollOverBackgroundColor: "#a8b0e4" - }, - - DataSetCompareList: { - color: "#000000", - lineHeight: "100%", - boxSizing: "initial", - webkitBoxSizing: "initial", - border: "1px solid rgba(0, 0, 0, .3)" - }, - - DataSetSelect: { - border: "1px solid rgba(0, 0, 0, .3)", - outline: "none" - } - -}; \ No newline at end of file diff --git a/client/amcharts/themes/patterns.js b/client/amcharts/themes/patterns.js deleted file mode 100755 index 6446276..0000000 --- a/client/amcharts/themes/patterns.js +++ /dev/null @@ -1,259 +0,0 @@ -AmCharts.themes.patterns = { - - themeName:"patterns", - - AmChart: { - color: "#000000", backgroundColor: "#FFFFFF" - }, - - AmCoordinateChart: { - colors:["#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000"], - patterns:[ - {"url":"../amcharts/patterns/black/pattern1.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern2.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern3.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern4.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern5.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern6.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern7.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern8.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern9.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern10.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern11.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern12.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern13.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern14.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern15.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern16.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern17.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern18.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern19.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern20.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern21.png", "width":4, "height":4}] - }, - - - AmStockChart: { - colors:["#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000"] - }, - - AmPieChart: { - depth3D:0, - angle:0, - labelRadius:10 - }, - - AmSlicedChart: { - outlineAlpha: 0.3, - colors:["#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000"], - outlineThickness: 1, - outlineColor:"#000000", - labelTickColor: "#000000", - labelTickAlpha: 0.3, - patterns:[ - {"url":"../amcharts/patterns/black/pattern1.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern2.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern3.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern4.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern5.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern6.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern7.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern8.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern9.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern10.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern11.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern12.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern13.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern14.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern15.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern16.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern17.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern18.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern19.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern20.png", "width":4, "height":4}, - {"url":"../amcharts/patterns/black/pattern21.png", "width":4, "height":4}] - }, - - AmRectangularChart: { - zoomOutButtonColor: '#000000', - zoomOutButtonRollOverAlpha: 0.15, - zoomOutButtonImage: "lens.png" - }, - - - - AxisBase: { - axisColor: "#000000", - axisAlpha: 0.3, - gridAlpha: 0.05, - gridColor: "#000000" - }, - - ChartScrollbar: { - backgroundColor: "#000000", - backgroundAlpha: 0.13, - graphFillAlpha: 0.4, - selectedGraphFillAlpha: 0.7, - graphLineAlpha: 0, - selectedBackgroundColor: "#FFFFFF", - selectedBackgroundAlpha: 0.9, - gridAlpha: 0.15 - }, - - ChartCursor: { - cursorColor: "#000000", - color: "#FFFFFF", - cursorAlpha: 0.5 - }, - - AmLegend: { - color: "#000000", - markerBorderAlpha:0.1, - markerSize:20, - switchColor:"#000000" - }, - - AmGraph: { - lineAlpha: 0.4, - fillAlphas:0.5 - }, - - AmAngularGauge:{ - faceAlpha:0.5, - facePattern:{"url":"../amcharts/patterns/black/pattern1.png", "width":4, "height":4} - }, - - - GaugeArrow: { - color: "#000000", - alpha: 1, - nailAlpha: 1, - innerRadius: "0%", - nailRadius: 15, - startWidth: 15, - borderAlpha: 1, - radius:"70%", - nailBorderAlpha: 1 - }, - - GaugeAxis: { - tickColor: "#000000", - tickAlpha: 1, - tickLength: 15, - minorTickLength: 8, - axisThickness: 1, - axisColor: '#000000', - axisAlpha: 1, - bandAlpha: 1 - }, - - TrendLine: { - lineColor: "#c03246", - lineAlpha: 0.8 - }, - - // ammap - AreasSettings: { - alpha: 0.8, - color: "#000000", - colorSolid: "#000000", - unlistedAreasAlpha: 0.4, - unlistedAreasColor: "#000000", - outlineColor: "#FFFFFF", - outlineAlpha: 0.5, - outlineThickness: 0.5, - rollOverColor: "#3c5bdc", - rollOverOutlineColor: "#FFFFFF", - selectedOutlineColor: "#FFFFFF", - selectedColor: "#f15135", - unlistedAreasOutlineColor: "#FFFFFF", - unlistedAreasOutlineAlpha: 0.5 - }, - - LinesSettings: { - color: "#000000", - alpha: 0.8 - }, - - ImagesSettings: { - alpha: 0.8, - labelColor: "#000000", - color: "#000000", - labelRollOverColor: "#3c5bdc" - }, - - ZoomControl: { - buttonRollOverColor: "#3c5bdc", - buttonFillColor: "#f15135", - buttonFillAlpha: 0.8, - buttonBorderColor: "#000000", - gridBackgroundColor: "#000000", - gridAlpha: 0.8 - }, - - SmallMap: { - mapColor: "#000000", - rectangleColor: "#FFFFFF", - backgroundColor: "#FFFFFF", - backgroundAlpha: 0.7, - borderThickness: 1, - borderAlpha: 0.8 - }, - - // the defaults below are set using CSS syntax, you can use any existing css property - // if you don't use Stock chart, you can delete lines below - PeriodSelector: { - color: "#000000" - }, - - PeriodButton: { - color: "#000000", - background: "transparent", - opacity: 0.7, - border: "1px solid rgba(0, 0, 0, .3)", - MozBorderRadius: "5px", - borderRadius: "5px", - margin: "1px", - outline: "none", - boxSizing: "border-box" - }, - - PeriodButtonSelected: { - color: "#000000", - backgroundColor: "rgba(0, 0, 0, 0.1)", - border: "1px solid rgba(0, 0, 0, .3)", - MozBorderRadius: "5px", - borderRadius: "5px", - margin: "1px", - outline: "none", - opacity: 1, - boxSizing: "border-box" - }, - - PeriodInputField: { - color: "#000000", - background: "transparent", - border: "1px solid rgba(0, 0, 0, .3)", - outline: "none" - }, - - DataSetSelector: { - color: "#000000", - selectedBackgroundColor: "rgba(0, 0, 0, .25)", - rollOverBackgroundColor: "rgba(0, 0, 0, .15)" - }, - - DataSetCompareList: { - color: "#000000", - lineHeight: "100%", - boxSizing: "initial", - webkitBoxSizing: "initial", - border: "1px solid rgba(0, 0, 0, .3)" - }, - - DataSetSelect: { - border: "1px solid rgba(0, 0, 0, .3)", - outline: "none" - } - -}; \ No newline at end of file diff --git a/client/amcharts/xy.js b/client/amcharts/xy.js deleted file mode 100755 index 92489e1..0000000 --- a/client/amcharts/xy.js +++ /dev/null @@ -1,17 +0,0 @@ -AmCharts.AmXYChart=AmCharts.Class({inherits:AmCharts.AmRectangularChart,construct:function(a){this.type="xy";AmCharts.AmXYChart.base.construct.call(this,a);this.cname="AmXYChart";this.theme=a;this.createEvents("zoomed");this.maxZoomFactor=20;AmCharts.applyTheme(this,a,this.cname)},initChart:function(){AmCharts.AmXYChart.base.initChart.call(this);this.dataChanged&&(this.updateData(),this.dataChanged=!1,this.dispatchDataUpdated=!0);this.updateScrollbar=!0;this.drawChart();this.autoMargins&&!this.marginsUpdated&& -(this.marginsUpdated=!0,this.measureMargins());var a=this.marginLeftReal,c=this.marginTopReal,b=this.plotAreaWidth,d=this.plotAreaHeight;this.graphsSet.clipRect(a,c,b,d);this.bulletSet.clipRect(a,c,b,d);this.trendLinesSet.clipRect(a,c,b,d)},prepareForExport:function(){var a=this.bulletSet;a.clipPath&&this.container.remove(a.clipPath)},createValueAxes:function(){var a=[],c=[];this.xAxes=a;this.yAxes=c;var b=this.valueAxes,d,e;for(e=0;ee){var f=e;e=d;d=f}b.dispatchZoomEvent(d,e)}}}},zoomObjects:function(a){var c=a.length,b;for(b=0;be&&(e=h);hthis.maxZoomFactor&&(a=this.maxZoomFactor);return a},handleHSBZoom:function(a){var c=this.fitMultiplier(a.multiplier);a=-a.position*c;var b=-(this.plotAreaWidth*c-this.plotAreaWidth);a .column, - .row.collapse > .columns { - padding-left: 0; - padding-right: 0; } - .row.collapse .row { - margin-left: 0; - margin-right: 0; } - .row .row { - width: auto; - margin-left: -0.9375rem; - margin-right: -0.9375rem; - margin-top: 0; - margin-bottom: 0; - max-width: none; } - .row .row:before, .row .row:after { - content: " "; - display: table; } - .row .row:after { - clear: both; } - .row .row.collapse { - width: auto; - margin: 0; - max-width: none; } - .row .row.collapse:before, .row .row.collapse:after { - content: " "; - display: table; } - .row .row.collapse:after { - clear: both; } - -.column, -.columns { - padding-left: 0.9375rem; - padding-right: 0.9375rem; - width: 100%; - float: left; } - -@media only screen { - .small-push-0 { - position: relative; - left: 0%; - right: auto; } - - .small-pull-0 { - position: relative; - right: 0%; - left: auto; } - - .small-push-1 { - position: relative; - left: 8.33333%; - right: auto; } - - .small-pull-1 { - position: relative; - right: 8.33333%; - left: auto; } - - .small-push-2 { - position: relative; - left: 16.66667%; - right: auto; } - - .small-pull-2 { - position: relative; - right: 16.66667%; - left: auto; } - - .small-push-3 { - position: relative; - left: 25%; - right: auto; } - - .small-pull-3 { - position: relative; - right: 25%; - left: auto; } - - .small-push-4 { - position: relative; - left: 33.33333%; - right: auto; } - - .small-pull-4 { - position: relative; - right: 33.33333%; - left: auto; } - - .small-push-5 { - position: relative; - left: 41.66667%; - right: auto; } - - .small-pull-5 { - position: relative; - right: 41.66667%; - left: auto; } - - .small-push-6 { - position: relative; - left: 50%; - right: auto; } - - .small-pull-6 { - position: relative; - right: 50%; - left: auto; } - - .small-push-7 { - position: relative; - left: 58.33333%; - right: auto; } - - .small-pull-7 { - position: relative; - right: 58.33333%; - left: auto; } - - .small-push-8 { - position: relative; - left: 66.66667%; - right: auto; } - - .small-pull-8 { - position: relative; - right: 66.66667%; - left: auto; } - - .small-push-9 { - position: relative; - left: 75%; - right: auto; } - - .small-pull-9 { - position: relative; - right: 75%; - left: auto; } - - .small-push-10 { - position: relative; - left: 83.33333%; - right: auto; } - - .small-pull-10 { - position: relative; - right: 83.33333%; - left: auto; } - - .small-push-11 { - position: relative; - left: 91.66667%; - right: auto; } - - .small-pull-11 { - position: relative; - right: 91.66667%; - left: auto; } - - .column, - .columns { - position: relative; - padding-left: 0.9375rem; - padding-right: 0.9375rem; - float: left; } - - .small-1 { - width: 8.33333%; } - - .small-2 { - width: 16.66667%; } - - .small-3 { - width: 25%; } - - .small-4 { - width: 33.33333%; } - - .small-5 { - width: 41.66667%; } - - .small-6 { - width: 50%; } - - .small-7 { - width: 58.33333%; } - - .small-8 { - width: 66.66667%; } - - .small-9 { - width: 75%; } - - .small-10 { - width: 83.33333%; } - - .small-11 { - width: 91.66667%; } - - .small-12 { - width: 100%; } - - [class*="column"] + [class*="column"]:last-child { - float: right; } - - [class*="column"] + [class*="column"].end { - float: left; } - - .small-offset-0 { - margin-left: 0% !important; } - - .small-offset-1 { - margin-left: 8.33333% !important; } - - .small-offset-2 { - margin-left: 16.66667% !important; } - - .small-offset-3 { - margin-left: 25% !important; } - - .small-offset-4 { - margin-left: 33.33333% !important; } - - .small-offset-5 { - margin-left: 41.66667% !important; } - - .small-offset-6 { - margin-left: 50% !important; } - - .small-offset-7 { - margin-left: 58.33333% !important; } - - .small-offset-8 { - margin-left: 66.66667% !important; } - - .small-offset-9 { - margin-left: 75% !important; } - - .small-offset-10 { - margin-left: 83.33333% !important; } - - .small-offset-11 { - margin-left: 91.66667% !important; } - - .small-reset-order { - margin-left: 0; - margin-right: 0; - left: auto; - right: auto; - float: left; } - - .column.small-centered, - .columns.small-centered { - margin-left: auto; - margin-right: auto; - float: none !important; } - - .column.small-uncentered, - .columns.small-uncentered { - margin-left: 0; - margin-right: 0; - float: left !important; } - - .column.small-uncentered.opposite, - .columns.small-uncentered.opposite { - float: right; } } -@media only screen and (min-width: 40.063em) { - .medium-push-0 { - position: relative; - left: 0%; - right: auto; } - - .medium-pull-0 { - position: relative; - right: 0%; - left: auto; } - - .medium-push-1 { - position: relative; - left: 8.33333%; - right: auto; } - - .medium-pull-1 { - position: relative; - right: 8.33333%; - left: auto; } - - .medium-push-2 { - position: relative; - left: 16.66667%; - right: auto; } - - .medium-pull-2 { - position: relative; - right: 16.66667%; - left: auto; } - - .medium-push-3 { - position: relative; - left: 25%; - right: auto; } - - .medium-pull-3 { - position: relative; - right: 25%; - left: auto; } - - .medium-push-4 { - position: relative; - left: 33.33333%; - right: auto; } - - .medium-pull-4 { - position: relative; - right: 33.33333%; - left: auto; } - - .medium-push-5 { - position: relative; - left: 41.66667%; - right: auto; } - - .medium-pull-5 { - position: relative; - right: 41.66667%; - left: auto; } - - .medium-push-6 { - position: relative; - left: 50%; - right: auto; } - - .medium-pull-6 { - position: relative; - right: 50%; - left: auto; } - - .medium-push-7 { - position: relative; - left: 58.33333%; - right: auto; } - - .medium-pull-7 { - position: relative; - right: 58.33333%; - left: auto; } - - .medium-push-8 { - position: relative; - left: 66.66667%; - right: auto; } - - .medium-pull-8 { - position: relative; - right: 66.66667%; - left: auto; } - - .medium-push-9 { - position: relative; - left: 75%; - right: auto; } - - .medium-pull-9 { - position: relative; - right: 75%; - left: auto; } - - .medium-push-10 { - position: relative; - left: 83.33333%; - right: auto; } - - .medium-pull-10 { - position: relative; - right: 83.33333%; - left: auto; } - - .medium-push-11 { - position: relative; - left: 91.66667%; - right: auto; } - - .medium-pull-11 { - position: relative; - right: 91.66667%; - left: auto; } - - .column, - .columns { - position: relative; - padding-left: 0.9375rem; - padding-right: 0.9375rem; - float: left; } - - .medium-1 { - width: 8.33333%; } - - .medium-2 { - width: 16.66667%; } - - .medium-3 { - width: 25%; } - - .medium-4 { - width: 33.33333%; } - - .medium-5 { - width: 41.66667%; } - - .medium-6 { - width: 50%; } - - .medium-7 { - width: 58.33333%; } - - .medium-8 { - width: 66.66667%; } - - .medium-9 { - width: 75%; } - - .medium-10 { - width: 83.33333%; } - - .medium-11 { - width: 91.66667%; } - - .medium-12 { - width: 100%; } - - [class*="column"] + [class*="column"]:last-child { - float: right; } - - [class*="column"] + [class*="column"].end { - float: left; } - - .medium-offset-0 { - margin-left: 0% !important; } - - .medium-offset-1 { - margin-left: 8.33333% !important; } - - .medium-offset-2 { - margin-left: 16.66667% !important; } - - .medium-offset-3 { - margin-left: 25% !important; } - - .medium-offset-4 { - margin-left: 33.33333% !important; } - - .medium-offset-5 { - margin-left: 41.66667% !important; } - - .medium-offset-6 { - margin-left: 50% !important; } - - .medium-offset-7 { - margin-left: 58.33333% !important; } - - .medium-offset-8 { - margin-left: 66.66667% !important; } - - .medium-offset-9 { - margin-left: 75% !important; } - - .medium-offset-10 { - margin-left: 83.33333% !important; } - - .medium-offset-11 { - margin-left: 91.66667% !important; } - - .medium-reset-order { - margin-left: 0; - margin-right: 0; - left: auto; - right: auto; - float: left; } - - .column.medium-centered, - .columns.medium-centered { - margin-left: auto; - margin-right: auto; - float: none !important; } - - .column.medium-uncentered, - .columns.medium-uncentered { - margin-left: 0; - margin-right: 0; - float: left !important; } - - .column.medium-uncentered.opposite, - .columns.medium-uncentered.opposite { - float: right; } - - .push-0 { - position: relative; - left: 0%; - right: auto; } - - .pull-0 { - position: relative; - right: 0%; - left: auto; } - - .push-1 { - position: relative; - left: 8.33333%; - right: auto; } - - .pull-1 { - position: relative; - right: 8.33333%; - left: auto; } - - .push-2 { - position: relative; - left: 16.66667%; - right: auto; } - - .pull-2 { - position: relative; - right: 16.66667%; - left: auto; } - - .push-3 { - position: relative; - left: 25%; - right: auto; } - - .pull-3 { - position: relative; - right: 25%; - left: auto; } - - .push-4 { - position: relative; - left: 33.33333%; - right: auto; } - - .pull-4 { - position: relative; - right: 33.33333%; - left: auto; } - - .push-5 { - position: relative; - left: 41.66667%; - right: auto; } - - .pull-5 { - position: relative; - right: 41.66667%; - left: auto; } - - .push-6 { - position: relative; - left: 50%; - right: auto; } - - .pull-6 { - position: relative; - right: 50%; - left: auto; } - - .push-7 { - position: relative; - left: 58.33333%; - right: auto; } - - .pull-7 { - position: relative; - right: 58.33333%; - left: auto; } - - .push-8 { - position: relative; - left: 66.66667%; - right: auto; } - - .pull-8 { - position: relative; - right: 66.66667%; - left: auto; } - - .push-9 { - position: relative; - left: 75%; - right: auto; } - - .pull-9 { - position: relative; - right: 75%; - left: auto; } - - .push-10 { - position: relative; - left: 83.33333%; - right: auto; } - - .pull-10 { - position: relative; - right: 83.33333%; - left: auto; } - - .push-11 { - position: relative; - left: 91.66667%; - right: auto; } - - .pull-11 { - position: relative; - right: 91.66667%; - left: auto; } } -@media only screen and (min-width: 64.063em) { - .large-push-0 { - position: relative; - left: 0%; - right: auto; } - - .large-pull-0 { - position: relative; - right: 0%; - left: auto; } - - .large-push-1 { - position: relative; - left: 8.33333%; - right: auto; } - - .large-pull-1 { - position: relative; - right: 8.33333%; - left: auto; } - - .large-push-2 { - position: relative; - left: 16.66667%; - right: auto; } - - .large-pull-2 { - position: relative; - right: 16.66667%; - left: auto; } - - .large-push-3 { - position: relative; - left: 25%; - right: auto; } - - .large-pull-3 { - position: relative; - right: 25%; - left: auto; } - - .large-push-4 { - position: relative; - left: 33.33333%; - right: auto; } - - .large-pull-4 { - position: relative; - right: 33.33333%; - left: auto; } - - .large-push-5 { - position: relative; - left: 41.66667%; - right: auto; } - - .large-pull-5 { - position: relative; - right: 41.66667%; - left: auto; } - - .large-push-6 { - position: relative; - left: 50%; - right: auto; } - - .large-pull-6 { - position: relative; - right: 50%; - left: auto; } - - .large-push-7 { - position: relative; - left: 58.33333%; - right: auto; } - - .large-pull-7 { - position: relative; - right: 58.33333%; - left: auto; } - - .large-push-8 { - position: relative; - left: 66.66667%; - right: auto; } - - .large-pull-8 { - position: relative; - right: 66.66667%; - left: auto; } - - .large-push-9 { - position: relative; - left: 75%; - right: auto; } - - .large-pull-9 { - position: relative; - right: 75%; - left: auto; } - - .large-push-10 { - position: relative; - left: 83.33333%; - right: auto; } - - .large-pull-10 { - position: relative; - right: 83.33333%; - left: auto; } - - .large-push-11 { - position: relative; - left: 91.66667%; - right: auto; } - - .large-pull-11 { - position: relative; - right: 91.66667%; - left: auto; } - - .column, - .columns { - position: relative; - padding-left: 0.9375rem; - padding-right: 0.9375rem; - float: left; } - - .large-1 { - width: 8.33333%; } - - .large-2 { - width: 16.66667%; } - - .large-3 { - width: 25%; } - - .large-4 { - width: 33.33333%; } - - .large-5 { - width: 41.66667%; } - - .large-6 { - width: 50%; } - - .large-7 { - width: 58.33333%; } - - .large-8 { - width: 66.66667%; } - - .large-9 { - width: 75%; } - - .large-10 { - width: 83.33333%; } - - .large-11 { - width: 91.66667%; } - - .large-12 { - width: 100%; } - - [class*="column"] + [class*="column"]:last-child { - float: right; } - - [class*="column"] + [class*="column"].end { - float: left; } - - .large-offset-0 { - margin-left: 0% !important; } - - .large-offset-1 { - margin-left: 8.33333% !important; } - - .large-offset-2 { - margin-left: 16.66667% !important; } - - .large-offset-3 { - margin-left: 25% !important; } - - .large-offset-4 { - margin-left: 33.33333% !important; } - - .large-offset-5 { - margin-left: 41.66667% !important; } - - .large-offset-6 { - margin-left: 50% !important; } - - .large-offset-7 { - margin-left: 58.33333% !important; } - - .large-offset-8 { - margin-left: 66.66667% !important; } - - .large-offset-9 { - margin-left: 75% !important; } - - .large-offset-10 { - margin-left: 83.33333% !important; } - - .large-offset-11 { - margin-left: 91.66667% !important; } - - .large-reset-order { - margin-left: 0; - margin-right: 0; - left: auto; - right: auto; - float: left; } - - .column.large-centered, - .columns.large-centered { - margin-left: auto; - margin-right: auto; - float: none !important; } - - .column.large-uncentered, - .columns.large-uncentered { - margin-left: 0; - margin-right: 0; - float: left !important; } - - .column.large-uncentered.opposite, - .columns.large-uncentered.opposite { - float: right; } - - .push-0 { - position: relative; - left: 0%; - right: auto; } - - .pull-0 { - position: relative; - right: 0%; - left: auto; } - - .push-1 { - position: relative; - left: 8.33333%; - right: auto; } - - .pull-1 { - position: relative; - right: 8.33333%; - left: auto; } - - .push-2 { - position: relative; - left: 16.66667%; - right: auto; } - - .pull-2 { - position: relative; - right: 16.66667%; - left: auto; } - - .push-3 { - position: relative; - left: 25%; - right: auto; } - - .pull-3 { - position: relative; - right: 25%; - left: auto; } - - .push-4 { - position: relative; - left: 33.33333%; - right: auto; } - - .pull-4 { - position: relative; - right: 33.33333%; - left: auto; } - - .push-5 { - position: relative; - left: 41.66667%; - right: auto; } - - .pull-5 { - position: relative; - right: 41.66667%; - left: auto; } - - .push-6 { - position: relative; - left: 50%; - right: auto; } - - .pull-6 { - position: relative; - right: 50%; - left: auto; } - - .push-7 { - position: relative; - left: 58.33333%; - right: auto; } - - .pull-7 { - position: relative; - right: 58.33333%; - left: auto; } - - .push-8 { - position: relative; - left: 66.66667%; - right: auto; } - - .pull-8 { - position: relative; - right: 66.66667%; - left: auto; } - - .push-9 { - position: relative; - left: 75%; - right: auto; } - - .pull-9 { - position: relative; - right: 75%; - left: auto; } - - .push-10 { - position: relative; - left: 83.33333%; - right: auto; } - - .pull-10 { - position: relative; - right: 83.33333%; - left: auto; } - - .push-11 { - position: relative; - left: 91.66667%; - right: auto; } - - .pull-11 { - position: relative; - right: 91.66667%; - left: auto; } } -button, .button { - border-style: solid; - border-width: 0px; - cursor: pointer; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; - font-weight: normal; - line-height: normal; - margin: 0 0 1.25rem; - position: relative; - text-decoration: none; - text-align: center; - -webkit-appearance: none; - -webkit-border-radius: 0; - display: inline-block; - padding-top: 1rem; - padding-right: 2rem; - padding-bottom: 1.0625rem; - padding-left: 2rem; - font-size: 1rem; - background-color: #008cba; - border-color: #007095; - color: white; - transition: background-color 300ms ease-out; } - button:hover, button:focus, .button:hover, .button:focus { - background-color: #007095; } - button:hover, button:focus, .button:hover, .button:focus { - color: white; } - button.secondary, .button.secondary { - background-color: #e7e7e7; - border-color: #b9b9b9; - color: #333333; } - button.secondary:hover, button.secondary:focus, .button.secondary:hover, .button.secondary:focus { - background-color: #b9b9b9; } - button.secondary:hover, button.secondary:focus, .button.secondary:hover, .button.secondary:focus { - color: #333333; } - button.success, .button.success { - background-color: #43ac6a; - border-color: #368a55; - color: white; } - button.success:hover, button.success:focus, .button.success:hover, .button.success:focus { - background-color: #368a55; } - button.success:hover, button.success:focus, .button.success:hover, .button.success:focus { - color: white; } - button.alert, .button.alert { - background-color: #f04124; - border-color: #cf2a0e; - color: white; } - button.alert:hover, button.alert:focus, .button.alert:hover, .button.alert:focus { - background-color: #cf2a0e; } - button.alert:hover, button.alert:focus, .button.alert:hover, .button.alert:focus { - color: white; } - button.large, .button.large { - padding-top: 1.125rem; - padding-right: 2.25rem; - padding-bottom: 1.1875rem; - padding-left: 2.25rem; - font-size: 1.25rem; } - button.small, .button.small { - padding-top: 0.875rem; - padding-right: 1.75rem; - padding-bottom: 0.9375rem; - padding-left: 1.75rem; - font-size: 0.8125rem; } - button.tiny, .button.tiny { - padding-top: 0.625rem; - padding-right: 1.25rem; - padding-bottom: 0.6875rem; - padding-left: 1.25rem; - font-size: 0.6875rem; } - button.expand, .button.expand { - padding-right: 0; - padding-left: 0; - width: 100%; } - button.left-align, .button.left-align { - text-align: left; - text-indent: 0.75rem; } - button.right-align, .button.right-align { - text-align: right; - padding-right: 0.75rem; } - button.radius, .button.radius { - border-radius: 3px; } - button.round, .button.round { - border-radius: 1000px; } - button.disabled, button[disabled], .button.disabled, .button[disabled] { - background-color: #008cba; - border-color: #007095; - color: white; - cursor: default; - opacity: 0.7; - box-shadow: none; } - button.disabled:hover, button.disabled:focus, button[disabled]:hover, button[disabled]:focus, .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { - background-color: #007095; } - button.disabled:hover, button.disabled:focus, button[disabled]:hover, button[disabled]:focus, .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { - color: white; } - button.disabled:hover, button.disabled:focus, button[disabled]:hover, button[disabled]:focus, .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { - background-color: #008cba; } - button.disabled.secondary, button[disabled].secondary, .button.disabled.secondary, .button[disabled].secondary { - background-color: #e7e7e7; - border-color: #b9b9b9; - color: #333333; - cursor: default; - opacity: 0.7; - box-shadow: none; } - button.disabled.secondary:hover, button.disabled.secondary:focus, button[disabled].secondary:hover, button[disabled].secondary:focus, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary:hover, .button[disabled].secondary:focus { - background-color: #b9b9b9; } - button.disabled.secondary:hover, button.disabled.secondary:focus, button[disabled].secondary:hover, button[disabled].secondary:focus, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary:hover, .button[disabled].secondary:focus { - color: #333333; } - button.disabled.secondary:hover, button.disabled.secondary:focus, button[disabled].secondary:hover, button[disabled].secondary:focus, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary:hover, .button[disabled].secondary:focus { - background-color: #e7e7e7; } - button.disabled.success, button[disabled].success, .button.disabled.success, .button[disabled].success { - background-color: #43ac6a; - border-color: #368a55; - color: white; - cursor: default; - opacity: 0.7; - box-shadow: none; } - button.disabled.success:hover, button.disabled.success:focus, button[disabled].success:hover, button[disabled].success:focus, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success:hover, .button[disabled].success:focus { - background-color: #368a55; } - button.disabled.success:hover, button.disabled.success:focus, button[disabled].success:hover, button[disabled].success:focus, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success:hover, .button[disabled].success:focus { - color: white; } - button.disabled.success:hover, button.disabled.success:focus, button[disabled].success:hover, button[disabled].success:focus, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success:hover, .button[disabled].success:focus { - background-color: #43ac6a; } - button.disabled.alert, button[disabled].alert, .button.disabled.alert, .button[disabled].alert { - background-color: #f04124; - border-color: #cf2a0e; - color: white; - cursor: default; - opacity: 0.7; - box-shadow: none; } - button.disabled.alert:hover, button.disabled.alert:focus, button[disabled].alert:hover, button[disabled].alert:focus, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert:hover, .button[disabled].alert:focus { - background-color: #cf2a0e; } - button.disabled.alert:hover, button.disabled.alert:focus, button[disabled].alert:hover, button[disabled].alert:focus, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert:hover, .button[disabled].alert:focus { - color: white; } - button.disabled.alert:hover, button.disabled.alert:focus, button[disabled].alert:hover, button[disabled].alert:focus, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert:hover, .button[disabled].alert:focus { - background-color: #f04124; } - -@media only screen and (min-width: 40.063em) { - button, .button { - display: inline-block; } } -meta.foundation-mq-topbar { - font-family: "/only screen and (min-width:40.063em)/"; - width: 40.063em; } - -/* Wrapped around .top-bar to contain to grid width */ -.contain-to-grid { - width: 100%; - background: #333333; } - .contain-to-grid .top-bar { - margin-bottom: 0; } - -.fixed { - width: 100%; - left: 0; - position: fixed; - top: 0; - z-index: 99; } - .fixed.expanded:not(.top-bar) { - overflow-y: auto; - height: auto; - width: 100%; - max-height: 100%; } - .fixed.expanded:not(.top-bar) .title-area { - position: fixed; - width: 100%; - z-index: 99; } - .fixed.expanded:not(.top-bar) .top-bar-section { - z-index: 98; - margin-top: 45px; } - -.top-bar { - overflow: hidden; - height: 45px; - line-height: 45px; - position: relative; - background: #333333; - margin-bottom: 0; } - .top-bar ul { - margin-bottom: 0; - list-style: none; } - .top-bar .row { - max-width: none; } - .top-bar form, - .top-bar input { - margin-bottom: 0; } - .top-bar input { - height: auto; - padding-top: .35rem; - padding-bottom: .35rem; - font-size: 0.75rem; } - .top-bar .button, .top-bar button { - padding-top: .45rem; - padding-bottom: .35rem; - margin-bottom: 0; - font-size: 0.75rem; } - .top-bar .title-area { - position: relative; - margin: 0; } - .top-bar .name { - height: 45px; - margin: 0; - font-size: 16px; } - .top-bar .name h1 { - line-height: 45px; - font-size: 1.0625rem; - margin: 0; } - .top-bar .name h1 a { - font-weight: normal; - color: white; - width: 75%; - display: block; - padding: 0 15px; } - .top-bar .toggle-topbar { - position: absolute; - right: 0; - top: 0; } - .top-bar .toggle-topbar a { - color: white; - text-transform: uppercase; - font-size: 0.8125rem; - font-weight: bold; - position: relative; - display: block; - padding: 0 15px; - height: 45px; - line-height: 45px; } - .top-bar .toggle-topbar.menu-icon { - right: 15px; - top: 50%; - margin-top: -16px; - padding-left: 40px; } - .top-bar .toggle-topbar.menu-icon a { - height: 34px; - line-height: 33px; - padding: 0; - color: white; - position: relative; } - .top-bar .toggle-topbar.menu-icon a::after { - right: 0; } - .top-bar .toggle-topbar.menu-icon a::after span:after { - content: ''; - position: absolute; - display: block; - height: 0; - box-shadow: 0 0px 0 1px white, 0 7px 0 1px white, 0 14px 0 1px white; - width: 16px; } - .top-bar .toggle-topbar.menu-icon a::after span:hover:after { - box-shadow: 0 0px 0 1px white, 0 7px 0 1px white, 0 14px 0 1px white; } - .top-bar.expanded { - height: auto; - background: transparent; } - .top-bar.expanded .title-area { - background: #333333; } - .top-bar.expanded .toggle-topbar a { - color: #888888; } - .top-bar.expanded .toggle-topbar a::after { - box-shadow: 0 10px 0 1px #888888, 0 16px 0 1px #888888, 0 22px 0 1px #888888; } - -.top-bar-section { - left: 0; - position: relative; - width: auto; - transition: left 300ms ease-out; } - .top-bar-section ul { - padding: 0; - width: 100%; - height: auto; - display: block; - font-size: 16px; - margin: 0; } - .top-bar-section .divider, - .top-bar-section [role="separator"] { - border-top: solid 1px #1a1a1a; - clear: both; - height: 1px; - width: 100%; } - .top-bar-section ul li { - background: #333333; } - .top-bar-section ul li > a { - display: block; - width: 100%; - color: white; - padding: 12px 0 12px 0; - padding-left: 15px; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; - font-size: 0.8125rem; - font-weight: normal; - text-transform: none; } - .top-bar-section ul li > a.button { - font-size: 0.8125rem; - padding-right: 15px; - padding-left: 15px; - background-color: #008cba; - border-color: #007095; - color: white; } - .top-bar-section ul li > a.button:hover, .top-bar-section ul li > a.button:focus { - background-color: #007095; } - .top-bar-section ul li > a.button:hover, .top-bar-section ul li > a.button:focus { - color: white; } - .top-bar-section ul li > a.button.secondary { - background-color: #e7e7e7; - border-color: #b9b9b9; - color: #333333; } - .top-bar-section ul li > a.button.secondary:hover, .top-bar-section ul li > a.button.secondary:focus { - background-color: #b9b9b9; } - .top-bar-section ul li > a.button.secondary:hover, .top-bar-section ul li > a.button.secondary:focus { - color: #333333; } - .top-bar-section ul li > a.button.success { - background-color: #43ac6a; - border-color: #368a55; - color: white; } - .top-bar-section ul li > a.button.success:hover, .top-bar-section ul li > a.button.success:focus { - background-color: #368a55; } - .top-bar-section ul li > a.button.success:hover, .top-bar-section ul li > a.button.success:focus { - color: white; } - .top-bar-section ul li > a.button.alert { - background-color: #f04124; - border-color: #cf2a0e; - color: white; } - .top-bar-section ul li > a.button.alert:hover, .top-bar-section ul li > a.button.alert:focus { - background-color: #cf2a0e; } - .top-bar-section ul li > a.button.alert:hover, .top-bar-section ul li > a.button.alert:focus { - color: white; } - .top-bar-section ul li > button { - font-size: 0.8125rem; - padding-right: 15px; - padding-left: 15px; - background-color: #008cba; - border-color: #007095; - color: white; } - .top-bar-section ul li > button:hover, .top-bar-section ul li > button:focus { - background-color: #007095; } - .top-bar-section ul li > button:hover, .top-bar-section ul li > button:focus { - color: white; } - .top-bar-section ul li > button.secondary { - background-color: #e7e7e7; - border-color: #b9b9b9; - color: #333333; } - .top-bar-section ul li > button.secondary:hover, .top-bar-section ul li > button.secondary:focus { - background-color: #b9b9b9; } - .top-bar-section ul li > button.secondary:hover, .top-bar-section ul li > button.secondary:focus { - color: #333333; } - .top-bar-section ul li > button.success { - background-color: #43ac6a; - border-color: #368a55; - color: white; } - .top-bar-section ul li > button.success:hover, .top-bar-section ul li > button.success:focus { - background-color: #368a55; } - .top-bar-section ul li > button.success:hover, .top-bar-section ul li > button.success:focus { - color: white; } - .top-bar-section ul li > button.alert { - background-color: #f04124; - border-color: #cf2a0e; - color: white; } - .top-bar-section ul li > button.alert:hover, .top-bar-section ul li > button.alert:focus { - background-color: #cf2a0e; } - .top-bar-section ul li > button.alert:hover, .top-bar-section ul li > button.alert:focus { - color: white; } - .top-bar-section ul li:hover:not(.has-form) > a { - background: #272727; - color: white; } - .top-bar-section ul li.active > a { - background: #008cba; - color: white; } - .top-bar-section ul li.active > a:hover { - background: #0078a0; - color: white; } - .top-bar-section .has-form { - padding: 15px; } - .top-bar-section .has-dropdown { - position: relative; } - .top-bar-section .has-dropdown > a:after { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 5px; - border-color: transparent transparent transparent rgba(255, 255, 255, 0.4); - border-left-style: solid; - margin-right: 15px; - margin-top: -4.5px; - position: absolute; - top: 50%; - right: 0; } - .top-bar-section .has-dropdown.moved { - position: static; } - .top-bar-section .has-dropdown.moved > .dropdown { - display: block; - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; - position: absolute !important; - width: 100%; } - .top-bar-section .has-dropdown.moved > a:after { - display: none; } - .top-bar-section .dropdown { - padding: 0; - position: absolute; - left: 100%; - top: 0; - z-index: 99; - display: block; - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - .top-bar-section .dropdown li { - width: 100%; - height: auto; } - .top-bar-section .dropdown li a { - font-weight: normal; - padding: 8px 15px; } - .top-bar-section .dropdown li a.parent-link { - font-weight: normal; } - .top-bar-section .dropdown li.title h5 { - margin-bottom: 0; - margin-top: 0; } - .top-bar-section .dropdown li.title h5 a { - color: white; - line-height: 22.5px; - display: block; } - .top-bar-section .dropdown li.has-form { - padding: 8px 15px; } - .top-bar-section .dropdown li .button, .top-bar-section .dropdown li button { - top: auto; } - .top-bar-section .dropdown label { - padding: 8px 15px 2px; - margin-bottom: 0; - text-transform: uppercase; - color: #777777; - font-weight: bold; - font-size: 0.625rem; } - -.js-generated { - display: block; } - -@media only screen and (min-width: 40.063em) { - .top-bar { - background: #333333; - overflow: visible; } - .top-bar:before, .top-bar:after { - content: " "; - display: table; } - .top-bar:after { - clear: both; } - .top-bar .toggle-topbar { - display: none; } - .top-bar .title-area { - float: left; } - .top-bar .name h1 a { - width: auto; } - .top-bar input, - .top-bar .button, - .top-bar button { - font-size: 0.875rem; - position: relative; - top: 7px; } - .top-bar.expanded { - background: #333333; } - - .contain-to-grid .top-bar { - max-width: 62.5rem; - margin: 0 auto; - margin-bottom: 0; } - - .top-bar-section { - transition: none 0 0; - left: 0 !important; } - .top-bar-section ul { - width: auto; - height: auto !important; - display: inline; } - .top-bar-section ul li { - float: left; } - .top-bar-section ul li .js-generated { - display: none; } - .top-bar-section li.hover > a:not(.button) { - background: #272727; - color: white; } - .top-bar-section li:not(.has-form) a:not(.button) { - padding: 0 15px; - line-height: 45px; - background: #333333; } - .top-bar-section li:not(.has-form) a:not(.button):hover { - background: #272727; } - .top-bar-section li.active:not(.has-form) a:not(.button) { - padding: 0 15px; - line-height: 45px; - color: white; - background: #008cba; } - .top-bar-section li.active:not(.has-form) a:not(.button):hover { - background: #0078a0; } - .top-bar-section .has-dropdown > a { - padding-right: 35px !important; } - .top-bar-section .has-dropdown > a:after { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 5px; - border-color: rgba(255, 255, 255, 0.4) transparent transparent transparent; - border-top-style: solid; - margin-top: -2.5px; - top: 22.5px; } - .top-bar-section .has-dropdown.moved { - position: relative; } - .top-bar-section .has-dropdown.moved > .dropdown { - display: block; - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - .top-bar-section .has-dropdown.hover > .dropdown, .top-bar-section .has-dropdown.not-click:hover > .dropdown { - display: block; - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; - position: absolute !important; } - .top-bar-section .has-dropdown .dropdown li.has-dropdown > a:after { - border: none; - content: "\00bb"; - top: 1rem; - margin-top: -1px; - right: 5px; - line-height: 1.2; } - .top-bar-section .dropdown { - left: 0; - top: auto; - background: transparent; - min-width: 100%; } - .top-bar-section .dropdown li a { - color: white; - line-height: 45px; - white-space: nowrap; - padding: 12px 15px; - background: #333333; } - .top-bar-section .dropdown li:not(.has-form) a:not(.button) { - color: white; - background: #333333; } - .top-bar-section .dropdown li:not(.has-form):hover > a:not(.button) { - color: white; - background: #272727; } - .top-bar-section .dropdown li label { - white-space: nowrap; - background: #333333; } - .top-bar-section .dropdown li .dropdown { - left: 100%; - top: 0; } - .top-bar-section > ul > .divider, .top-bar-section > ul > [role="separator"] { - border-bottom: none; - border-top: none; - border-right: solid 1px #4e4e4e; - clear: none; - height: 45px; - width: 0; } - .top-bar-section .has-form { - background: #333333; - padding: 0 15px; - height: 45px; } - .top-bar-section .right li .dropdown { - left: auto; - right: 0; } - .top-bar-section .right li .dropdown li .dropdown { - right: 100%; } - .top-bar-section .left li .dropdown { - right: auto; - left: 0; } - .top-bar-section .left li .dropdown li .dropdown { - left: 100%; } - - .no-js .top-bar-section ul li:hover > a { - background: #272727; - color: white; } - .no-js .top-bar-section ul li:active > a { - background: #008cba; - color: white; } - .no-js .top-bar-section .has-dropdown:hover > .dropdown { - display: block; - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; - position: absolute !important; } } -.breadcrumbs { - display: block; - padding: 0.5625rem 0.875rem 0.5625rem; - overflow: hidden; - margin-left: 0; - list-style: none; - border-style: solid; - border-width: 1px; - background-color: #f4f4f4; - border-color: gainsboro; - border-radius: 3px; } - .breadcrumbs > * { - margin: 0; - float: left; - font-size: 0.6875rem; - line-height: 0.6875rem; - text-transform: uppercase; - color: #008cba; } - .breadcrumbs > *:hover a, .breadcrumbs > *:focus a { - text-decoration: underline; } - .breadcrumbs > * a { - color: #008cba; } - .breadcrumbs > *.current { - cursor: default; - color: #333333; } - .breadcrumbs > *.current a { - cursor: default; - color: #333333; } - .breadcrumbs > *.current:hover, .breadcrumbs > *.current:hover a, .breadcrumbs > *.current:focus, .breadcrumbs > *.current:focus a { - text-decoration: none; } - .breadcrumbs > *.unavailable { - color: #999999; } - .breadcrumbs > *.unavailable a { - color: #999999; } - .breadcrumbs > *.unavailable:hover, .breadcrumbs > *.unavailable:hover a, .breadcrumbs > *.unavailable:focus, - .breadcrumbs > *.unavailable a:focus { - text-decoration: none; - color: #999999; - cursor: default; } - .breadcrumbs > *:before { - content: "/"; - color: #aaaaaa; - margin: 0 0.75rem; - position: relative; - top: 1px; } - .breadcrumbs > *:first-child:before { - content: " "; - margin: 0; } - -.alert-box { - border-style: solid; - border-width: 1px; - display: block; - font-weight: normal; - margin-bottom: 1.25rem; - position: relative; - padding: 0.875rem 1.5rem 0.875rem 0.875rem; - font-size: 0.8125rem; - transition: opacity 300ms ease-out; - background-color: #008cba; - border-color: #0078a0; - color: white; } - .alert-box .close { - font-size: 1.375rem; - padding: 9px 6px 4px; - line-height: 0; - position: absolute; - top: 50%; - margin-top: -0.6875rem; - right: 0.25rem; - color: #333333; - opacity: 0.3; } - .alert-box .close:hover, .alert-box .close:focus { - opacity: 0.5; } - .alert-box.radius { - border-radius: 3px; } - .alert-box.round { - border-radius: 1000px; } - .alert-box.success { - background-color: #43ac6a; - border-color: #3a945b; - color: white; } - .alert-box.alert { - background-color: #f04124; - border-color: #de2d0f; - color: white; } - .alert-box.secondary { - background-color: #e7e7e7; - border-color: #c7c7c7; - color: #4f4f4f; } - .alert-box.warning { - background-color: #f08a24; - border-color: #de770f; - color: white; } - .alert-box.info { - background-color: #a0d3e8; - border-color: #74bfdd; - color: #4f4f4f; } - .alert-box.alert-close { - opacity: 0; } - -.inline-list { - margin: 0 auto 1.0625rem auto; - margin-left: -1.375rem; - margin-right: 0; - padding: 0; - list-style: none; - overflow: hidden; } - .inline-list > li { - list-style: none; - float: left; - margin-left: 1.375rem; - display: block; } - .inline-list > li > * { - display: block; } - -.button-group { - list-style: none; - margin: 0; - left: 0; } - .button-group:before, .button-group:after { - content: " "; - display: table; } - .button-group:after { - clear: both; } - .button-group > li { - margin: 0; - float: left; } - .button-group > li > button, .button-group > li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group > li:first-child button, .button-group > li:first-child .button { - border-left: 0; } - .button-group > li:first-child { - margin-left: 0; } - .button-group.radius > * > button, .button-group.radius > * .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.radius > *:first-child button, .button-group.radius > *:first-child .button { - border-left: 0; } - .button-group.radius > *:first-child, .button-group.radius > *:first-child > a, .button-group.radius > *:first-child > button, .button-group.radius > *:first-child > .button { - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; } - .button-group.radius > *:last-child, .button-group.radius > *:last-child > a, .button-group.radius > *:last-child > button, .button-group.radius > *:last-child > .button { - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; } - .button-group.round > * > button, .button-group.round > * .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.round > *:first-child button, .button-group.round > *:first-child .button { - border-left: 0; } - .button-group.round > *:first-child, .button-group.round > *:first-child > a, .button-group.round > *:first-child > button, .button-group.round > *:first-child > .button { - border-bottom-left-radius: 1000px; - border-top-left-radius: 1000px; } - .button-group.round > *:last-child, .button-group.round > *:last-child > a, .button-group.round > *:last-child > button, .button-group.round > *:last-child > .button { - border-bottom-right-radius: 1000px; - border-top-right-radius: 1000px; } - .button-group.even-2 li { - width: 50%; } - .button-group.even-2 li > button, .button-group.even-2 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-2 li:first-child button, .button-group.even-2 li:first-child .button { - border-left: 0; } - .button-group.even-2 li button, .button-group.even-2 li .button { - width: 100%; } - .button-group.even-3 li { - width: 33.33333%; } - .button-group.even-3 li > button, .button-group.even-3 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-3 li:first-child button, .button-group.even-3 li:first-child .button { - border-left: 0; } - .button-group.even-3 li button, .button-group.even-3 li .button { - width: 100%; } - .button-group.even-4 li { - width: 25%; } - .button-group.even-4 li > button, .button-group.even-4 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-4 li:first-child button, .button-group.even-4 li:first-child .button { - border-left: 0; } - .button-group.even-4 li button, .button-group.even-4 li .button { - width: 100%; } - .button-group.even-5 li { - width: 20%; } - .button-group.even-5 li > button, .button-group.even-5 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-5 li:first-child button, .button-group.even-5 li:first-child .button { - border-left: 0; } - .button-group.even-5 li button, .button-group.even-5 li .button { - width: 100%; } - .button-group.even-6 li { - width: 16.66667%; } - .button-group.even-6 li > button, .button-group.even-6 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-6 li:first-child button, .button-group.even-6 li:first-child .button { - border-left: 0; } - .button-group.even-6 li button, .button-group.even-6 li .button { - width: 100%; } - .button-group.even-7 li { - width: 14.28571%; } - .button-group.even-7 li > button, .button-group.even-7 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-7 li:first-child button, .button-group.even-7 li:first-child .button { - border-left: 0; } - .button-group.even-7 li button, .button-group.even-7 li .button { - width: 100%; } - .button-group.even-8 li { - width: 12.5%; } - .button-group.even-8 li > button, .button-group.even-8 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-8 li:first-child button, .button-group.even-8 li:first-child .button { - border-left: 0; } - .button-group.even-8 li button, .button-group.even-8 li .button { - width: 100%; } - -.button-bar:before, .button-bar:after { - content: " "; - display: table; } -.button-bar:after { - clear: both; } -.button-bar .button-group { - float: left; - margin-right: 0.625rem; } - .button-bar .button-group div { - overflow: hidden; } - -/* Panels */ -.panel { - border-style: solid; - border-width: 1px; - border-color: #d8d8d8; - margin-bottom: 1.25rem; - padding: 1.25rem; - background: #f2f2f2; } - .panel > :first-child { - margin-top: 0; } - .panel > :last-child { - margin-bottom: 0; } - .panel h1, .panel h2, .panel h3, .panel h4, .panel h5, .panel h6, .panel p, .panel li { - color: #333333; } - .panel h1, .panel h2, .panel h3, .panel h4, .panel h5, .panel h6 { - line-height: 1; - margin-bottom: 0.625rem; } - .panel h1.subheader, .panel h2.subheader, .panel h3.subheader, .panel h4.subheader, .panel h5.subheader, .panel h6.subheader { - line-height: 1.4; } - .panel.callout { - border-style: solid; - border-width: 1px; - border-color: #b6edff; - margin-bottom: 1.25rem; - padding: 1.25rem; - background: #ecfaff; } - .panel.callout > :first-child { - margin-top: 0; } - .panel.callout > :last-child { - margin-bottom: 0; } - .panel.callout h1, .panel.callout h2, .panel.callout h3, .panel.callout h4, .panel.callout h5, .panel.callout h6, .panel.callout p, .panel.callout li { - color: #333333; } - .panel.callout h1, .panel.callout h2, .panel.callout h3, .panel.callout h4, .panel.callout h5, .panel.callout h6 { - line-height: 1; - margin-bottom: 0.625rem; } - .panel.callout h1.subheader, .panel.callout h2.subheader, .panel.callout h3.subheader, .panel.callout h4.subheader, .panel.callout h5.subheader, .panel.callout h6.subheader { - line-height: 1.4; } - .panel.callout a:not(.button) { - color: #008cba; } - .panel.radius { - border-radius: 3px; } - -.dropdown.button, button.dropdown { - position: relative; - padding-right: 3.5625rem; } - .dropdown.button:after, button.dropdown:after { - position: absolute; - content: ""; - width: 0; - height: 0; - display: block; - border-style: solid; - border-color: white transparent transparent transparent; - top: 50%; } - .dropdown.button:after, button.dropdown:after { - border-width: 0.375rem; - right: 1.40625rem; - margin-top: -0.15625rem; } - .dropdown.button:after, button.dropdown:after { - border-color: white transparent transparent transparent; } - .dropdown.button.tiny, button.dropdown.tiny { - padding-right: 2.625rem; } - .dropdown.button.tiny:before, button.dropdown.tiny:before { - border-width: 0.375rem; - right: 1.125rem; - margin-top: -0.125rem; } - .dropdown.button.tiny:after, button.dropdown.tiny:after { - border-color: white transparent transparent transparent; } - .dropdown.button.small, button.dropdown.small { - padding-right: 3.0625rem; } - .dropdown.button.small:after, button.dropdown.small:after { - border-width: 0.4375rem; - right: 1.3125rem; - margin-top: -0.15625rem; } - .dropdown.button.small:after, button.dropdown.small:after { - border-color: white transparent transparent transparent; } - .dropdown.button.large, button.dropdown.large { - padding-right: 3.625rem; } - .dropdown.button.large:after, button.dropdown.large:after { - border-width: 0.3125rem; - right: 1.71875rem; - margin-top: -0.15625rem; } - .dropdown.button.large:after, button.dropdown.large:after { - border-color: white transparent transparent transparent; } - .dropdown.button.secondary:after, button.dropdown.secondary:after { - border-color: #333333 transparent transparent transparent; } - -div.switch { - position: relative; - padding: 0; - display: block; - overflow: hidden; - border-style: solid; - border-width: 1px; - margin-bottom: 1.25rem; - height: 2.25rem; - background: white; - border-color: #cccccc; } - div.switch label { - position: relative; - left: 0; - z-index: 2; - float: left; - width: 50%; - height: 100%; - margin: 0; - font-weight: bold; - text-align: left; - transition: all 0.1s ease-out; } - div.switch input { - position: absolute; - z-index: 3; - opacity: 0; - width: 100%; - height: 100%; - -moz-appearance: none; } - div.switch input:hover, div.switch input:focus { - cursor: pointer; } - div.switch span:last-child { - position: absolute; - top: -1px; - left: -1px; - z-index: 1; - display: block; - padding: 0; - border-width: 1px; - border-style: solid; - transition: all 0.1s ease-out; } - div.switch input:not(:checked) + label { - opacity: 0; } - div.switch input:checked { - display: none !important; } - div.switch input { - left: 0; - display: block !important; } - div.switch input:first-of-type + label, - div.switch input:first-of-type + span + label { - left: -50%; } - div.switch input:first-of-type:checked + label, - div.switch input:first-of-type:checked + span + label { - left: 0%; } - div.switch input:last-of-type + label, - div.switch input:last-of-type + span + label { - right: -50%; - left: auto; - text-align: right; } - div.switch input:last-of-type:checked + label, - div.switch input:last-of-type:checked + span + label { - right: 0%; - left: auto; } - div.switch span.custom { - display: none !important; } - form.custom div.switch .hidden-field { - margin-left: auto; - position: absolute; - visibility: visible; } - div.switch label { - padding: 0; - line-height: 2.3rem; - font-size: 0.875rem; } - div.switch input:first-of-type:checked ~ span:last-child { - left: 100%; - margin-left: -2.1875rem; } - div.switch span:last-child { - width: 2.25rem; - height: 2.25rem; } - div.switch span:last-child { - border-color: #b3b3b3; - background: white; - background: linear-gradient(to bottom, white 0%, #f2f2f2 100%); - box-shadow: 2px 0 10px 0 rgba(0, 0, 0, 0.07), 1000px 0 0 980px #f3faf6, -2px 0 10px 0 rgba(0, 0, 0, 0.07), -1000px 0 0 1000px whitesmoke; } - div.switch:hover span:last-child, div.switch:focus span:last-child { - background: white; - background: linear-gradient(to bottom, white 0%, #e6e6e6 100%); } - div.switch:active { - background: transparent; } - div.switch.large { - height: 2.75rem; } - div.switch.large label { - padding: 0; - line-height: 2.3rem; - font-size: 1.0625rem; } - div.switch.large input:first-of-type:checked ~ span:last-child { - left: 100%; - margin-left: -2.6875rem; } - div.switch.large span:last-child { - width: 2.75rem; - height: 2.75rem; } - div.switch.small { - height: 1.75rem; } - div.switch.small label { - padding: 0; - line-height: 2.1rem; - font-size: 0.75rem; } - div.switch.small input:first-of-type:checked ~ span:last-child { - left: 100%; - margin-left: -1.6875rem; } - div.switch.small span:last-child { - width: 1.75rem; - height: 1.75rem; } - div.switch.tiny { - height: 1.375rem; } - div.switch.tiny label { - padding: 0; - line-height: 1.9rem; - font-size: 0.6875rem; } - div.switch.tiny input:first-of-type:checked ~ span:last-child { - left: 100%; - margin-left: -1.3125rem; } - div.switch.tiny span:last-child { - width: 1.375rem; - height: 1.375rem; } - div.switch.radius { - border-radius: 4px; } - div.switch.radius span:last-child { - border-radius: 3px; } - div.switch.round { - border-radius: 1000px; } - div.switch.round span:last-child { - border-radius: 999px; } - div.switch.round label { - padding: 0 0.5625rem; } - -/* Image Thumbnails */ -.th { - line-height: 0; - display: inline-block; - border: solid 4px white; - max-width: 100%; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); - transition: all 200ms ease-out; } - .th:hover, .th:focus { - box-shadow: 0 0 6px 1px rgba(0, 140, 186, 0.5); } - .th.radius { - border-radius: 3px; } - -/* Pricing Tables */ -.pricing-table { - border: solid 1px #dddddd; - margin-left: 0; - margin-bottom: 1.25rem; } - .pricing-table * { - list-style: none; - line-height: 1; } - .pricing-table .title { - background-color: #333333; - padding: 0.9375rem 1.25rem; - text-align: center; - color: #eeeeee; - font-weight: normal; - font-size: 1rem; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; } - .pricing-table .price { - background-color: #f6f6f6; - padding: 0.9375rem 1.25rem; - text-align: center; - color: #333333; - font-weight: normal; - font-size: 2rem; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; } - .pricing-table .description { - background-color: white; - padding: 0.9375rem; - text-align: center; - color: #777777; - font-size: 0.75rem; - font-weight: normal; - line-height: 1.4; - border-bottom: dotted 1px #dddddd; } - .pricing-table .bullet-item { - background-color: white; - padding: 0.9375rem; - text-align: center; - color: #333333; - font-size: 0.875rem; - font-weight: normal; - border-bottom: dotted 1px #dddddd; } - .pricing-table .cta-button { - background-color: white; - text-align: center; - padding: 1.25rem 1.25rem 0; } - -@keyframes rotate { - from { - -webkit-transform: rotate(0deg); - -moz-transform: rotate(0deg); - -ms-transform: rotate(0deg); - -o-transform: rotate(0deg); - transform: rotate(0deg); } - - to { - -webkit-transform: rotate(360deg); - -moz-transform: rotate(360deg); - -ms-transform: rotate(360deg); - -o-transform: rotate(360deg); - transform: rotate(360deg); } } - -/* Orbit Graceful Loading */ -.slideshow-wrapper { - position: relative; } - .slideshow-wrapper ul { - list-style-type: none; - margin: 0; } - .slideshow-wrapper ul li, - .slideshow-wrapper ul li .orbit-caption { - display: none; } - .slideshow-wrapper ul li:first-child { - display: block; } - .slideshow-wrapper .orbit-container { - background-color: transparent; } - .slideshow-wrapper .orbit-container li { - display: block; } - .slideshow-wrapper .orbit-container li .orbit-caption { - display: block; } - .slideshow-wrapper .preloader { - display: block; - width: 40px; - height: 40px; - position: absolute; - top: 50%; - left: 50%; - margin-top: -20px; - margin-left: -20px; - border: solid 3px; - border-color: #555555 white; - border-radius: 1000px; - animation-name: rotate; - animation-duration: 1.5s; - animation-iteration-count: infinite; - animation-timing-function: linear; } - -.orbit-container { - overflow: hidden; - width: 100%; - position: relative; - background: none; } - .orbit-container .orbit-slides-container { - list-style: none; - margin: 0; - padding: 0; - position: relative; - -webkit-transform: translateZ(0); } - .orbit-container .orbit-slides-container img { - display: block; - max-width: 100%; } - .orbit-container .orbit-slides-container.fade > li { - opacity: 0; - transition: opacity 500ms ease-in-out; - -ms-transform: translate(0, 0); - -webkit-transform: translate3d(0, 0, 0); - -moz-transform: translate3d(0, 0, 0); - -o-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); } - .orbit-container .orbit-slides-container.fade > li.animate-in { - opacity: 1; - z-index: 20; - transition: opacity 500ms ease-in-out; } - .orbit-container .orbit-slides-container.fade > li.animate-out { - z-index: 10; - transition: opacity 500ms ease-in-out; } - .orbit-container .orbit-slides-container.swipe-next > li { - -ms-transform: translate(100%, 0); - -webkit-transform: translate3d(100%, 0, 0); - -moz-transform: translate3d(100%, 0, 0); - -o-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); } - .orbit-container .orbit-slides-container.swipe-next > li.animate-in { - -ms-transform: translate(0, 0); - -webkit-transform: translate3d(0, 0, 0); - -moz-transform: translate3d(0, 0, 0); - -o-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - transition-duration: 500ms; } - .orbit-container .orbit-slides-container.swipe-next > li.animate-out { - -ms-transform: translate(-100%, 0); - -webkit-transform: translate3d(-100%, 0, 0); - -moz-transform: translate3d(-100%, 0, 0); - -o-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - transition-duration: 500ms; } - .orbit-container .orbit-slides-container.swipe-prev > li { - -ms-transform: translate(-100%, 0); - -webkit-transform: translate3d(-100%, 0, 0); - -moz-transform: translate3d(-100%, 0, 0); - -o-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); } - .orbit-container .orbit-slides-container.swipe-prev > li.animate-in { - -ms-transform: translate(0, 0); - -webkit-transform: translate3d(0, 0, 0); - -moz-transform: translate3d(0, 0, 0); - -o-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - transition-duration: 500ms; } - .orbit-container .orbit-slides-container.swipe-prev > li.animate-out { - -ms-transform: translate(100%, 0); - -webkit-transform: translate3d(100%, 0, 0); - -moz-transform: translate3d(100%, 0, 0); - -o-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - transition-duration: 500ms; } - .orbit-container .orbit-slides-container > li { - position: absolute; - top: 0; - left: 0; - width: 100%; - -ms-transform: translate(100%, 0); - -webkit-transform: translate3d(100%, 0, 0); - -moz-transform: translate3d(100%, 0, 0); - -o-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); } - .orbit-container .orbit-slides-container > li > a { - display: block; } - .orbit-container .orbit-slides-container > li.active { - opacity: 1; - position: relative; - top: 0; - left: 0; - -ms-transform: translate(0, 0); - -webkit-transform: translate3d(0, 0, 0); - -moz-transform: translate3d(0, 0, 0); - -o-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); } - .orbit-container .orbit-slides-container > li .orbit-caption { - position: absolute; - bottom: 0; - background-color: rgba(51, 51, 51, 0.8); - color: white; - width: 100%; - padding: 0.625rem 0.875rem; - font-size: 0.875rem; } - .orbit-container .orbit-slide-number { - position: absolute; - top: 10px; - left: 10px; - font-size: 12px; - color: white; - background: rgba(0, 0, 0, 0); - z-index: 10; } - .orbit-container .orbit-slide-number span { - font-weight: bold; - padding: 0.3125rem; } - .orbit-container .orbit-timer { - position: absolute; - top: 12px; - right: 10px; - height: 6px; - width: 100px; - z-index: 10; } - .orbit-container .orbit-timer .orbit-progress { - height: 3px; - background-color: rgba(255, 255, 255, 0.3); - display: block; - width: 0%; - position: relative; - right: 20px; - top: 5px; } - .orbit-container .orbit-timer > span { - display: none; - position: absolute; - top: 0px; - right: 0; - width: 11px; - height: 14px; - border: solid 4px white; - border-top: none; - border-bottom: none; } - .orbit-container .orbit-timer.paused > span { - right: -4px; - top: 0px; - width: 11px; - height: 14px; - border: inset 8px; - border-left-style: solid; - -webkit-transform: rotate(180deg); - -moz-transform: rotate(180deg); - -ms-transform: rotate(180deg); - -o-transform: rotate(180deg); - transform: rotate(180deg); - border-color: transparent white transparent transparent; } - .orbit-container .orbit-timer.paused > span.dark { - border-color: transparent #333333 transparent transparent; } - .orbit-container:hover .orbit-timer > span { - display: block; } - .orbit-container .orbit-prev, - .orbit-container .orbit-next { - position: absolute; - top: 45%; - margin-top: -25px; - width: 36px; - height: 60px; - line-height: 50px; - color: white; - background-color: transparent; - text-indent: -9999px !important; - z-index: 10; } - .orbit-container .orbit-prev:hover, - .orbit-container .orbit-next:hover { - background-color: rgba(0, 0, 0, 0.3); } - .orbit-container .orbit-prev > span, - .orbit-container .orbit-next > span { - position: absolute; - top: 50%; - margin-top: -10px; - display: block; - width: 0; - height: 0; - border: inset 10px; } - .orbit-container .orbit-prev { - left: 0; } - .orbit-container .orbit-prev > span { - border-right-style: solid; - border-color: transparent; - border-right-color: white; } - .orbit-container .orbit-prev:hover > span { - border-right-color: white; } - .orbit-container .orbit-next { - right: 0; } - .orbit-container .orbit-next > span { - border-color: transparent; - border-left-style: solid; - border-left-color: white; - left: 50%; - margin-left: -4px; } - .orbit-container .orbit-next:hover > span { - border-left-color: white; } - .orbit-container .orbit-bullets-container { - text-align: center; } - .orbit-container .orbit-bullets { - margin: 0 auto 30px auto; - overflow: hidden; - position: relative; - top: 10px; - float: none; - text-align: center; - display: block; } - .orbit-container .orbit-bullets li { - display: inline-block; - width: 0.5625rem; - height: 0.5625rem; - background: #cccccc; - float: none; - margin-right: 6px; - border-radius: 1000px; } - .orbit-container .orbit-bullets li.active { - background: #999999; } - .orbit-container .orbit-bullets li:last-child { - margin-right: 0; } - -.touch .orbit-container .orbit-prev, -.touch .orbit-container .orbit-next { - display: none; } -.touch .orbit-bullets { - display: none; } - -@media only screen and (min-width: 40.063em) { - .touch .orbit-container .orbit-prev, - .touch .orbit-container .orbit-next { - display: inherit; } - .touch .orbit-bullets { - display: block; } } -@media only screen and (max-width: 40em) { - .orbit-stack-on-small .orbit-slides-container { - height: auto !important; } - .orbit-stack-on-small .orbit-slides-container > * { - position: relative !important; - margin-left: 0% !important; - opacity: 1 !important; - -webkit-transform: none !important; - -moz-transform: none !important; - -ms-transform: none !important; - -o-transform: none !important; - transform: none !important; - transition: none !important; } - .orbit-stack-on-small .orbit-timer { - display: none; } - .orbit-stack-on-small .orbit-next, .orbit-stack-on-small .orbit-prev { - display: none; } - .orbit-stack-on-small .orbit-bullets { - display: none; } - .orbit-stack-on-small .orbit-slide-number { - display: none; } } -[data-magellan-expedition], [data-magellan-expedition-clone] { - background: white; - z-index: 50; - min-width: 100%; - padding: 10px; } - [data-magellan-expedition] .sub-nav, [data-magellan-expedition-clone] .sub-nav { - margin-bottom: 0; } - [data-magellan-expedition] .sub-nav dd, [data-magellan-expedition-clone] .sub-nav dd { - margin-bottom: 0; } - [data-magellan-expedition] .sub-nav a, [data-magellan-expedition-clone] .sub-nav a { - line-height: 1.8em; } - -.text-left { - text-align: left !important; } - -.text-right { - text-align: right !important; } - -.text-center { - text-align: center !important; } - -.text-justify { - text-align: justify !important; } - -@media only screen and (max-width: 40em) { - .small-only-text-left { - text-align: left !important; } - - .small-only-text-right { - text-align: right !important; } - - .small-only-text-center { - text-align: center !important; } - - .small-only-text-justify { - text-align: justify !important; } } -@media only screen { - .small-text-left { - text-align: left !important; } - - .small-text-right { - text-align: right !important; } - - .small-text-center { - text-align: center !important; } - - .small-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 40.063em) and (max-width: 64em) { - .medium-only-text-left { - text-align: left !important; } - - .medium-only-text-right { - text-align: right !important; } - - .medium-only-text-center { - text-align: center !important; } - - .medium-only-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 40.063em) { - .medium-text-left { - text-align: left !important; } - - .medium-text-right { - text-align: right !important; } - - .medium-text-center { - text-align: center !important; } - - .medium-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 64.063em) and (max-width: 90em) { - .large-only-text-left { - text-align: left !important; } - - .large-only-text-right { - text-align: right !important; } - - .large-only-text-center { - text-align: center !important; } - - .large-only-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 64.063em) { - .large-text-left { - text-align: left !important; } - - .large-text-right { - text-align: right !important; } - - .large-text-center { - text-align: center !important; } - - .large-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 90.063em) and (max-width: 120em) { - .xlarge-only-text-left { - text-align: left !important; } - - .xlarge-only-text-right { - text-align: right !important; } - - .xlarge-only-text-center { - text-align: center !important; } - - .xlarge-only-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 90.063em) { - .xlarge-text-left { - text-align: left !important; } - - .xlarge-text-right { - text-align: right !important; } - - .xlarge-text-center { - text-align: center !important; } - - .xlarge-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 120.063em) and (max-width: 99999999em) { - .xxlarge-only-text-left { - text-align: left !important; } - - .xxlarge-only-text-right { - text-align: right !important; } - - .xxlarge-only-text-center { - text-align: center !important; } - - .xxlarge-only-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 120.063em) { - .xxlarge-text-left { - text-align: left !important; } - - .xxlarge-text-right { - text-align: right !important; } - - .xxlarge-text-center { - text-align: center !important; } - - .xxlarge-text-justify { - text-align: justify !important; } } -/* Typography resets */ -div, -dl, -dt, -dd, -ul, -ol, -li, -h1, -h2, -h3, -h4, -h5, -h6, -pre, -form, -p, -blockquote, -th, -td { - margin: 0; - padding: 0; } - -/* Default Link Styles */ -a { - color: #008cba; - text-decoration: none; - line-height: inherit; } - a:hover, a:focus { - color: #0078a0; } - a img { - border: none; } - -/* Default paragraph styles */ -p { - font-family: inherit; - font-weight: normal; - font-size: 1rem; - line-height: 1.6; - margin-bottom: 1.25rem; - text-rendering: optimizeLegibility; } - p.lead { - font-size: 1.21875rem; - line-height: 1.6; } - p aside { - font-size: 0.875rem; - line-height: 1.35; - font-style: italic; } - -/* Default header styles */ -h1, h2, h3, h4, h5, h6 { - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; - font-weight: normal; - font-style: normal; - color: #222222; - text-rendering: optimizeLegibility; - margin-top: 0.2rem; - margin-bottom: 0.5rem; - line-height: 1.4; } - h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { - font-size: 60%; - color: #6f6f6f; - line-height: 0; } - -h1 { - font-size: 2.125rem; } - -h2 { - font-size: 1.6875rem; } - -h3 { - font-size: 1.375rem; } - -h4 { - font-size: 1.125rem; } - -h5 { - font-size: 1.125rem; } - -h6 { - font-size: 1rem; } - -.subheader { - line-height: 1.4; - color: #6f6f6f; - font-weight: normal; - margin-top: 0.2rem; - margin-bottom: 0.5rem; } - -hr { - border: solid #dddddd; - border-width: 1px 0 0; - clear: both; - margin: 1.25rem 0 1.1875rem; - height: 0; } - -/* Helpful Typography Defaults */ -em, -i { - font-style: italic; - line-height: inherit; } - -strong, -b { - font-weight: bold; - line-height: inherit; } - -small { - font-size: 60%; - line-height: inherit; } - -code { - font-family: Consolas, "Liberation Mono", Courier, monospace; - font-weight: bold; - color: #bd260d; } - -/* Lists */ -ul, -ol, -dl { - font-size: 1rem; - line-height: 1.6; - margin-bottom: 1.25rem; - list-style-position: outside; - font-family: inherit; } - -ul { - margin-left: 1.1rem; } - ul.no-bullet { - margin-left: 0; } - ul.no-bullet li ul, - ul.no-bullet li ol { - margin-left: 1.25rem; - margin-bottom: 0; - list-style: none; } - -/* Unordered Lists */ -ul li ul, -ul li ol { - margin-left: 1.25rem; - margin-bottom: 0; } -ul.square li ul, ul.circle li ul, ul.disc li ul { - list-style: inherit; } -ul.square { - list-style-type: square; - margin-left: 1.1rem; } -ul.circle { - list-style-type: circle; - margin-left: 1.1rem; } -ul.disc { - list-style-type: disc; - margin-left: 1.1rem; } -ul.no-bullet { - list-style: none; } - -/* Ordered Lists */ -ol { - margin-left: 1.4rem; } - ol li ul, - ol li ol { - margin-left: 1.25rem; - margin-bottom: 0; } - -/* Definition Lists */ -dl dt { - margin-bottom: 0.3rem; - font-weight: bold; } -dl dd { - margin-bottom: 0.75rem; } - -/* Abbreviations */ -abbr, -acronym { - text-transform: uppercase; - font-size: 90%; - color: #222222; - border-bottom: 1px dotted #dddddd; - cursor: help; } - -abbr { - text-transform: none; } - -/* Blockquotes */ -blockquote { - margin: 0 0 1.25rem; - padding: 0.5625rem 1.25rem 0 1.1875rem; - border-left: 1px solid #dddddd; } - blockquote cite { - display: block; - font-size: 0.8125rem; - color: #555555; } - blockquote cite:before { - content: "\2014 \0020"; } - blockquote cite a, - blockquote cite a:visited { - color: #555555; } - -blockquote, -blockquote p { - line-height: 1.6; - color: #6f6f6f; } - -/* Microformats */ -.vcard { - display: inline-block; - margin: 0 0 1.25rem 0; - border: 1px solid #dddddd; - padding: 0.625rem 0.75rem; } - .vcard li { - margin: 0; - display: block; } - .vcard .fn { - font-weight: bold; - font-size: 0.9375rem; } - -.vevent .summary { - font-weight: bold; } -.vevent abbr { - cursor: default; - text-decoration: none; - font-weight: bold; - border: none; - padding: 0 0.0625rem; } - -@media only screen and (min-width: 40.063em) { - h1, h2, h3, h4, h5, h6 { - line-height: 1.4; } - - h1 { - font-size: 2.75rem; } - - h2 { - font-size: 2.3125rem; } - - h3 { - font-size: 1.6875rem; } - - h4 { - font-size: 1.4375rem; } } -/* - * Print styles. - * - * Inlined to avoid required HTTP connection: www.phpied.com/delay-loading-your-print-css/ - * Credit to Paul Irish and HTML5 Boilerplate (html5boilerplate.com) -*/ -.print-only { - display: none !important; } - -@media print { - * { - background: transparent !important; - color: black !important; - /* Black prints faster: h5bp.com/s */ - box-shadow: none !important; - text-shadow: none !important; } - - a, - a:visited { - text-decoration: underline; } - - a[href]:after { - content: " (" attr(href) ")"; } - - abbr[title]:after { - content: " (" attr(title) ")"; } - - .ir a:after, - a[href^="javascript:"]:after, - a[href^="#"]:after { - content: ""; } - - pre, - blockquote { - border: 1px solid #999999; - page-break-inside: avoid; } - - thead { - display: table-header-group; - /* h5bp.com/t */ } - - tr, - img { - page-break-inside: avoid; } - - img { - max-width: 100% !important; } - - @page { - margin: 0.5cm; } - - p, - h2, - h3 { - orphans: 3; - widows: 3; } - - h2, - h3 { - page-break-after: avoid; } - - .hide-on-print { - display: none !important; } - - .print-only { - display: block !important; } - - .hide-for-print { - display: none !important; } - - .show-for-print { - display: inherit !important; } } -.tabs { - margin-bottom: 0 !important; - margin-left: 0; } - .tabs:before, .tabs:after { - content: " "; - display: table; } - .tabs:after { - clear: both; } - .tabs dd, .tabs .tab-title { - position: relative; - margin-bottom: 0 !important; - list-style: none; - float: left; } - .tabs dd > a, .tabs .tab-title > a { - display: block; - background: #efefef; - color: #222222; - padding: 1rem 2rem; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; - font-size: 1rem; } - .tabs dd > a:hover, .tabs .tab-title > a:hover { - background: #e1e1e1; } - .tabs dd.active a, .tabs .tab-title.active a { - background: white; - color: #222222; } - .tabs.radius dd:first-child a, .tabs.radius .tab:first-child a { - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; } - .tabs.radius dd:last-child a, .tabs.radius .tab:last-child a { - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; } - .tabs.vertical dd, .tabs.vertical .tab { - position: inherit; - float: none; - display: block; - top: auto; } - -.tabs-content { - margin-bottom: 1.5rem; - width: 100%; } - .tabs-content:before, .tabs-content:after { - content: " "; - display: table; } - .tabs-content:after { - clear: both; } - .tabs-content > .content { - display: none; - float: left; - padding: 0.9375rem 0; - width: 100%; } - .tabs-content > .content.active { - display: block; - float: none; } - .tabs-content > .content.contained { - padding: 0.9375rem; } - .tabs-content.vertical { - display: block; } - .tabs-content.vertical > .content { - padding: 0 0.9375rem; } - -@media only screen and (min-width: 40.063em) { - .tabs.vertical { - width: 20%; - float: left; - margin-bottom: 1.25rem; } - - .tabs-content.vertical { - width: 80%; - float: left; - margin-left: -1px; } } -.no-js .tabs-content > .content { - display: block; - float: none; } - -ul.pagination { - display: block; - min-height: 1.5rem; - margin-left: -0.3125rem; } - ul.pagination li { - height: 1.5rem; - color: #222222; - font-size: 0.875rem; - margin-left: 0.3125rem; } - ul.pagination li a { - display: block; - padding: 0.0625rem 0.625rem 0.0625rem; - color: #999999; - border-radius: 3px; } - ul.pagination li:hover a, - ul.pagination li a:focus { - background: #e6e6e6; } - ul.pagination li.unavailable a { - cursor: default; - color: #999999; } - ul.pagination li.unavailable:hover a, ul.pagination li.unavailable a:focus { - background: transparent; } - ul.pagination li.current a { - background: #008cba; - color: white; - font-weight: bold; - cursor: default; } - ul.pagination li.current a:hover, ul.pagination li.current a:focus { - background: #008cba; } - ul.pagination li { - float: left; - display: block; } - -/* Pagination centred wrapper */ -.pagination-centered { - text-align: center; } - .pagination-centered ul.pagination li { - float: none; - display: inline-block; } - -.side-nav { - display: block; - margin: 0; - padding: 0.875rem 0; - list-style-type: none; - list-style-position: inside; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; } - .side-nav li { - margin: 0 0 0.4375rem 0; - font-size: 0.875rem; } - .side-nav li a:not(.button) { - display: block; - color: #008cba; - margin: 0; - padding: 0.4375rem 0.875rem; } - .side-nav li a:not(.button):hover, .side-nav li a:not(.button):focus { - background: rgba(0, 0, 0, 0.025); - color: #1cc7ff; } - .side-nav li.active > a:first-child:not(.button) { - color: #1cc7ff; - font-weight: normal; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; } - .side-nav li.divider { - border-top: 1px solid; - height: 0; - padding: 0; - list-style: none; - border-top-color: white; } - .side-nav li.heading { - color: #008cba; - font-size: 0.875rem; - font-weight: bold; - text-transform: uppercase; } - -.accordion { - margin-bottom: 0; } - .accordion:before, .accordion:after { - content: " "; - display: table; } - .accordion:after { - clear: both; } - .accordion dd { - display: block; - margin-bottom: 0 !important; } - .accordion dd.active > a { - background: #e8e8e8; } - .accordion dd > a { - background: #efefef; - color: #222222; - padding: 1rem; - display: block; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; - font-size: 1rem; } - .accordion dd > a:hover { - background: #e3e3e3; } - .accordion dd > .content { - display: none; - padding: 0.9375rem; } - .accordion dd > .content.active { - display: block; - background: white; } - -.split.button { - position: relative; - padding-right: 5.0625rem; } - .split.button span { - display: block; - height: 100%; - position: absolute; - right: 0; - top: 0; - border-left: solid 1px; } - .split.button span:after { - position: absolute; - content: ""; - width: 0; - height: 0; - display: block; - border-style: inset; - top: 50%; - left: 50%; } - .split.button span:active { - background-color: rgba(0, 0, 0, 0.1); } - .split.button span { - border-left-color: rgba(255, 255, 255, 0.5); } - .split.button span { - width: 3.09375rem; } - .split.button span:after { - border-top-style: solid; - border-width: 0.375rem; - top: 48%; - margin-left: -0.375rem; } - .split.button span:after { - border-color: white transparent transparent transparent; } - .split.button.secondary span { - border-left-color: rgba(255, 255, 255, 0.5); } - .split.button.secondary span:after { - border-color: white transparent transparent transparent; } - .split.button.alert span { - border-left-color: rgba(255, 255, 255, 0.5); } - .split.button.success span { - border-left-color: rgba(255, 255, 255, 0.5); } - .split.button.tiny { - padding-right: 3.75rem; } - .split.button.tiny span { - width: 2.25rem; } - .split.button.tiny span:after { - border-top-style: solid; - border-width: 0.375rem; - top: 48%; - margin-left: -0.375rem; } - .split.button.small { - padding-right: 4.375rem; } - .split.button.small span { - width: 2.625rem; } - .split.button.small span:after { - border-top-style: solid; - border-width: 0.4375rem; - top: 48%; - margin-left: -0.375rem; } - .split.button.large { - padding-right: 5.5rem; } - .split.button.large span { - width: 3.4375rem; } - .split.button.large span:after { - border-top-style: solid; - border-width: 0.3125rem; - top: 48%; - margin-left: -0.375rem; } - .split.button.expand { - padding-left: 2rem; } - .split.button.secondary span:after { - border-color: #333333 transparent transparent transparent; } - .split.button.radius span { - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; } - .split.button.round span { - border-bottom-right-radius: 1000px; - border-top-right-radius: 1000px; } - -.reveal-modal-bg { - position: fixed; - height: 100%; - width: 100%; - background: black; - background: rgba(0, 0, 0, 0.45); - z-index: 99; - display: none; - top: 0; - left: 0; } - -dialog, .reveal-modal { - visibility: hidden; - display: none; - position: absolute; - z-index: 100; - width: 100vw; - top: 0; - left: 0; - background-color: white; - padding: 1.25rem; - border: solid 1px #666666; - box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); } - @media only screen and (max-width: 40em) { - dialog, .reveal-modal { - min-height: 100vh; } } - @media only screen and (min-width: 40.063em) { - dialog, .reveal-modal { - left: 50%; } } - dialog .column, - dialog .columns, .reveal-modal .column, - .reveal-modal .columns { - min-width: 0; } - dialog > :first-child, .reveal-modal > :first-child { - margin-top: 0; } - dialog > :last-child, .reveal-modal > :last-child { - margin-bottom: 0; } - @media only screen and (min-width: 40.063em) { - dialog, .reveal-modal { - margin-left: -40%; - width: 80%; } } - @media only screen and (min-width: 40.063em) { - dialog, .reveal-modal { - top: 6.25rem; } } - dialog .close-reveal-modal, .reveal-modal .close-reveal-modal { - font-size: 2.5rem; - line-height: 1; - position: absolute; - top: 0.5rem; - right: 0.6875rem; - color: #aaaaaa; - font-weight: bold; - cursor: pointer; } - -dialog[open] { - display: block; - visibility: visible; } - -@media only screen and (min-width: 40.063em) { - dialog, .reveal-modal { - padding: 1.875rem; } - dialog.radius, .reveal-modal.radius { - border-radius: 3px; } - dialog.round, .reveal-modal.round { - border-radius: 1000px; } - dialog.collapse, .reveal-modal.collapse { - padding: 0; } - dialog.full, .reveal-modal.full { - top: 0; - left: 0; - height: 100vh; - min-height: 100vh; - margin-left: 0 !important; } } - @media only screen and (min-width: 40.063em) and (min-width: 40.063em) { - dialog.tiny, .reveal-modal.tiny { - margin-left: -15%; - width: 30%; } } - @media only screen and (min-width: 40.063em) and (min-width: 40.063em) { - dialog.small, .reveal-modal.small { - margin-left: -20%; - width: 40%; } } - @media only screen and (min-width: 40.063em) and (min-width: 40.063em) { - dialog.medium, .reveal-modal.medium { - margin-left: -30%; - width: 60%; } } - @media only screen and (min-width: 40.063em) and (min-width: 40.063em) { - dialog.large, .reveal-modal.large { - margin-left: -35%; - width: 70%; } } - @media only screen and (min-width: 40.063em) and (min-width: 40.063em) { - dialog.xlarge, .reveal-modal.xlarge { - margin-left: -47.5%; - width: 95%; } } - - @media only screen and (min-width: 40.063em) and (min-width: 40.063em) { - dialog.full, .reveal-modal.full { - margin-left: -50vw; - width: 100vw; } } - -@media print { - dialog, .reveal-modal { - background: white !important; } } -/* Tooltips */ -.has-tip { - border-bottom: dotted 1px #cccccc; - cursor: help; - font-weight: bold; - color: #333333; } - .has-tip:hover, .has-tip:focus { - border-bottom: dotted 1px #003f54; - color: #008cba; } - .has-tip.tip-left, .has-tip.tip-right { - float: none !important; } - -.tooltip { - display: none; - position: absolute; - z-index: 999; - font-weight: normal; - font-size: 0.875rem; - line-height: 1.3; - padding: 0.75rem; - max-width: 85%; - left: 50%; - width: 100%; - color: white; - background: #333333; } - .tooltip > .nub { - display: block; - left: 5px; - position: absolute; - width: 0; - height: 0; - border: solid 5px; - border-color: transparent transparent #333333 transparent; - top: -10px; } - .tooltip > .nub.rtl { - left: auto; - right: 5px; } - .tooltip.radius { - border-radius: 3px; } - .tooltip.round { - border-radius: 1000px; } - .tooltip.round > .nub { - left: 2rem; } - .tooltip.opened { - color: #008cba !important; - border-bottom: dotted 1px #003f54 !important; } - -.tap-to-close { - display: block; - font-size: 0.625rem; - color: #777777; - font-weight: normal; } - -@media only screen and (min-width: 40.063em) { - .tooltip > .nub { - border-color: transparent transparent #333333 transparent; - top: -10px; } - .tooltip.tip-top > .nub { - border-color: #333333 transparent transparent transparent; - top: auto; - bottom: -10px; } - .tooltip.tip-left, .tooltip.tip-right { - float: none !important; } - .tooltip.tip-left > .nub { - border-color: transparent transparent transparent #333333; - right: -10px; - left: auto; - top: 50%; - margin-top: -5px; } - .tooltip.tip-right > .nub { - border-color: transparent #333333 transparent transparent; - right: auto; - left: -10px; - top: 50%; - margin-top: -5px; } } -/* Clearing Styles */ -.clearing-thumbs, [data-clearing] { - margin-bottom: 0; - margin-left: 0; - list-style: none; } - .clearing-thumbs:before, .clearing-thumbs:after, [data-clearing]:before, [data-clearing]:after { - content: " "; - display: table; } - .clearing-thumbs:after, [data-clearing]:after { - clear: both; } - .clearing-thumbs li, [data-clearing] li { - float: left; - margin-right: 10px; } - .clearing-thumbs[class*="block-grid-"] li, [data-clearing][class*="block-grid-"] li { - margin-right: 0; } - -.clearing-blackout { - background: #333333; - position: fixed; - width: 100%; - height: 100%; - top: 0; - left: 0; - z-index: 998; } - .clearing-blackout .clearing-close { - display: block; } - -.clearing-container { - position: relative; - z-index: 998; - height: 100%; - overflow: hidden; - margin: 0; } - -.clearing-touch-label { - position: absolute; - top: 50%; - left: 50%; - color: #aaa; - font-size: 0.6em; } - -.visible-img { - height: 95%; - position: relative; } - .visible-img img { - position: absolute; - left: 50%; - top: 50%; - margin-left: -50%; - max-height: 100%; - max-width: 100%; } - -.clearing-caption { - color: #cccccc; - font-size: 0.875em; - line-height: 1.3; - margin-bottom: 0; - text-align: center; - bottom: 0; - background: #333333; - width: 100%; - padding: 10px 30px 20px; - position: absolute; - left: 0; } - -.clearing-close { - z-index: 999; - padding-left: 20px; - padding-top: 10px; - font-size: 30px; - line-height: 1; - color: #cccccc; - display: none; } - .clearing-close:hover, .clearing-close:focus { - color: #ccc; } - -.clearing-assembled .clearing-container { - height: 100%; } - .clearing-assembled .clearing-container .carousel > ul { - display: none; } - -.clearing-feature li { - display: none; } - .clearing-feature li.clearing-featured-img { - display: block; } - -@media only screen and (min-width: 40.063em) { - .clearing-main-prev, - .clearing-main-next { - position: absolute; - height: 100%; - width: 40px; - top: 0; } - .clearing-main-prev > span, - .clearing-main-next > span { - position: absolute; - top: 50%; - display: block; - width: 0; - height: 0; - border: solid 12px; } - .clearing-main-prev > span:hover, - .clearing-main-next > span:hover { - opacity: 0.8; } - - .clearing-main-prev { - left: 0; } - .clearing-main-prev > span { - left: 5px; - border-color: transparent; - border-right-color: #cccccc; } - - .clearing-main-next { - right: 0; } - .clearing-main-next > span { - border-color: transparent; - border-left-color: #cccccc; } - - .clearing-main-prev.disabled, - .clearing-main-next.disabled { - opacity: 0.3; } - - .clearing-assembled .clearing-container .carousel { - background: rgba(51, 51, 51, 0.8); - height: 120px; - margin-top: 10px; - text-align: center; } - .clearing-assembled .clearing-container .carousel > ul { - display: inline-block; - z-index: 999; - height: 100%; - position: relative; - float: none; } - .clearing-assembled .clearing-container .carousel > ul li { - display: block; - width: 120px; - min-height: inherit; - float: left; - overflow: hidden; - margin-right: 0; - padding: 0; - position: relative; - cursor: pointer; - opacity: 0.4; - clear: none; } - .clearing-assembled .clearing-container .carousel > ul li.fix-height img { - height: 100%; - max-width: none; } - .clearing-assembled .clearing-container .carousel > ul li a.th { - border: none; - box-shadow: none; - display: block; } - .clearing-assembled .clearing-container .carousel > ul li img { - cursor: pointer !important; - width: 100% !important; } - .clearing-assembled .clearing-container .carousel > ul li.visible { - opacity: 1; } - .clearing-assembled .clearing-container .carousel > ul li:hover { - opacity: 0.8; } - .clearing-assembled .clearing-container .visible-img { - background: #333333; - overflow: hidden; - height: 85%; } - - .clearing-close { - position: absolute; - top: 10px; - right: 20px; - padding-left: 0; - padding-top: 0; } } -/* Progress Bar */ -.progress { - background-color: #f6f6f6; - height: 1.5625rem; - border: 1px solid white; - padding: 0.125rem; - margin-bottom: 0.625rem; } - .progress .meter { - background: #008cba; - height: 100%; - display: block; } - .progress.secondary .meter { - background: #e7e7e7; - height: 100%; - display: block; } - .progress.success .meter { - background: #43ac6a; - height: 100%; - display: block; } - .progress.alert .meter { - background: #f04124; - height: 100%; - display: block; } - .progress.radius { - border-radius: 3px; } - .progress.radius .meter { - border-radius: 2px; } - .progress.round { - border-radius: 1000px; } - .progress.round .meter { - border-radius: 999px; } - -.sub-nav { - display: block; - width: auto; - overflow: hidden; - margin: -0.25rem 0 1.125rem; - padding-top: 0.25rem; - margin-right: 0; - margin-left: -0.75rem; } - .sub-nav dt { - text-transform: uppercase; } - .sub-nav dt, - .sub-nav dd, - .sub-nav li { - float: left; - display: inline; - margin-left: 1rem; - margin-bottom: 0.625rem; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; - font-weight: normal; - font-size: 0.875rem; - color: #999999; } - .sub-nav dt a, - .sub-nav dd a, - .sub-nav li a { - text-decoration: none; - color: #999999; - padding: 0.1875rem 1rem; } - .sub-nav dt a:hover, - .sub-nav dd a:hover, - .sub-nav li a:hover { - color: #737373; } - .sub-nav dt.active a, - .sub-nav dd.active a, - .sub-nav li.active a { - border-radius: 3px; - font-weight: normal; - background: #008cba; - padding: 0.1875rem 1rem; - cursor: default; - color: white; } - .sub-nav dt.active a:hover, - .sub-nav dd.active a:hover, - .sub-nav li.active a:hover { - background: #0078a0; } - -/* Foundation Joyride */ -.joyride-list { - display: none; } - -/* Default styles for the container */ -.joyride-tip-guide { - display: none; - position: absolute; - background: #333333; - color: white; - z-index: 101; - top: 0; - left: 2.5%; - font-family: inherit; - font-weight: normal; - width: 95%; } - -.lt-ie9 .joyride-tip-guide { - max-width: 800px; - left: 50%; - margin-left: -400px; } - -.joyride-content-wrapper { - width: 100%; - padding: 1.125rem 1.25rem 1.5rem; } - .joyride-content-wrapper .button { - margin-bottom: 0 !important; } - -/* Add a little css triangle pip, older browser just miss out on the fanciness of it */ -.joyride-tip-guide .joyride-nub { - display: block; - position: absolute; - left: 22px; - width: 0; - height: 0; - border: 10px solid #333333; } - .joyride-tip-guide .joyride-nub.top { - border-top-style: solid; - border-color: #333333; - border-top-color: transparent !important; - border-left-color: transparent !important; - border-right-color: transparent !important; - top: -20px; } - .joyride-tip-guide .joyride-nub.bottom { - border-bottom-style: solid; - border-color: #333333 !important; - border-bottom-color: transparent !important; - border-left-color: transparent !important; - border-right-color: transparent !important; - bottom: -20px; } - .joyride-tip-guide .joyride-nub.right { - right: -20px; } - .joyride-tip-guide .joyride-nub.left { - left: -20px; } - -/* Typography */ -.joyride-tip-guide h1, -.joyride-tip-guide h2, -.joyride-tip-guide h3, -.joyride-tip-guide h4, -.joyride-tip-guide h5, -.joyride-tip-guide h6 { - line-height: 1.25; - margin: 0; - font-weight: bold; - color: white; } - -.joyride-tip-guide p { - margin: 0 0 1.125rem 0; - font-size: 0.875rem; - line-height: 1.3; } - -.joyride-timer-indicator-wrap { - width: 50px; - height: 3px; - border: solid 1px #555555; - position: absolute; - right: 1.0625rem; - bottom: 1rem; } - -.joyride-timer-indicator { - display: block; - width: 0; - height: inherit; - background: #666666; } - -.joyride-close-tip { - position: absolute; - right: 12px; - top: 10px; - color: #777777 !important; - text-decoration: none; - font-size: 24px; - font-weight: normal; - line-height: 0.5 !important; } - .joyride-close-tip:hover, .joyride-close-tip:focus { - color: #eeeeee !important; } - -.joyride-modal-bg { - position: fixed; - height: 100%; - width: 100%; - background: transparent; - background: rgba(0, 0, 0, 0.5); - z-index: 100; - display: none; - top: 0; - left: 0; - cursor: pointer; } - -.joyride-expose-wrapper { - background-color: #ffffff; - position: absolute; - border-radius: 3px; - z-index: 102; - box-shadow: 0 0 15px white; } - -.joyride-expose-cover { - background: transparent; - border-radius: 3px; - position: absolute; - z-index: 9999; - top: 0; - left: 0; } - -/* Styles for screens that are at least 768px; */ -@media only screen and (min-width: 40.063em) { - .joyride-tip-guide { - width: 300px; - left: inherit; } - .joyride-tip-guide .joyride-nub.bottom { - border-color: #333333 !important; - border-bottom-color: transparent !important; - border-left-color: transparent !important; - border-right-color: transparent !important; - bottom: -20px; } - .joyride-tip-guide .joyride-nub.right { - border-color: #333333 !important; - border-top-color: transparent !important; - border-right-color: transparent !important; - border-bottom-color: transparent !important; - top: 22px; - left: auto; - right: -20px; } - .joyride-tip-guide .joyride-nub.left { - border-color: #333333 !important; - border-top-color: transparent !important; - border-left-color: transparent !important; - border-bottom-color: transparent !important; - top: 22px; - left: -20px; - right: auto; } } -.label { - font-weight: normal; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; - text-align: center; - text-decoration: none; - line-height: 1; - white-space: nowrap; - display: inline-block; - position: relative; - margin-bottom: inherit; - padding: 0.25rem 0.5rem 0.375rem; - font-size: 0.6875rem; - background-color: #008cba; - color: white; } - .label.radius { - border-radius: 3px; } - .label.round { - border-radius: 1000px; } - .label.alert { - background-color: #f04124; - color: white; } - .label.success { - background-color: #43ac6a; - color: white; } - .label.secondary { - background-color: #e7e7e7; - color: #333333; } - -.off-canvas-wrap { - -webkit-backface-visibility: hidden; - position: relative; - width: 100%; - overflow: hidden; } - .off-canvas-wrap.move-right, .off-canvas-wrap.move-left { - min-height: 100%; - -webkit-overflow-scrolling: touch; } - -.inner-wrap { - -webkit-backface-visibility: hidden; - position: relative; - width: 100%; - -webkit-transition: -webkit-transform 500ms ease; - -moz-transition: -moz-transform 500ms ease; - -ms-transition: -ms-transform 500ms ease; - -o-transition: -o-transform 500ms ease; - transition: transform 500ms ease; } - .inner-wrap:before, .inner-wrap:after { - content: " "; - display: table; } - .inner-wrap:after { - clear: both; } - -.tab-bar { - -webkit-backface-visibility: hidden; - background: #333333; - color: white; - height: 2.8125rem; - line-height: 2.8125rem; - position: relative; } - .tab-bar h1, .tab-bar h2, .tab-bar h3, .tab-bar h4, .tab-bar h5, .tab-bar h6 { - color: white; - font-weight: bold; - line-height: 2.8125rem; - margin: 0; } - .tab-bar h1, .tab-bar h2, .tab-bar h3, .tab-bar h4 { - font-size: 1.125rem; } - -.left-small { - width: 2.8125rem; - height: 2.8125rem; - position: absolute; - top: 0; - border-right: solid 1px #1a1a1a; - left: 0; } - -.right-small { - width: 2.8125rem; - height: 2.8125rem; - position: absolute; - top: 0; - border-left: solid 1px #1a1a1a; - right: 0; } - -.tab-bar-section { - padding: 0 0.625rem; - position: absolute; - text-align: center; - height: 2.8125rem; - top: 0; } - @media only screen and (min-width: 40.063em) { - .tab-bar-section { - text-align: left; } } - .tab-bar-section.left { - left: 0; - right: 2.8125rem; } - .tab-bar-section.right { - left: 2.8125rem; - right: 0; } - .tab-bar-section.middle { - left: 2.8125rem; - right: 2.8125rem; } - -.tab-bar .menu-icon { - text-indent: 2.1875rem; - width: 2.8125rem; - height: 2.8125rem; - display: block; - line-height: 2.0625rem; - padding: 0; - color: white; - position: relative; - transform: translate3d(0, 0, 0); } - .tab-bar .menu-icon span:after { - content: ''; - position: absolute; - display: block; - height: 0; - top: 50%; - margin-top: -0.5rem; - left: 0.90625rem; - box-shadow: 0 0px 0 1px white, 0 7px 0 1px white, 0 14px 0 1px white; - width: 1rem; } - .tab-bar .menu-icon span:hover:after { - box-shadow: 0 0px 0 1px #b3b3b3, 0 7px 0 1px #b3b3b3, 0 14px 0 1px #b3b3b3; } - -.left-off-canvas-menu { - -webkit-backface-visibility: hidden; - width: 15.625rem; - top: 0; - bottom: 0; - position: absolute; - overflow-y: auto; - background: #333333; - z-index: 1001; - box-sizing: content-box; - transition: transform 500ms ease 0s; - -webkit-overflow-scrolling: touch; - -ms-transform: translate(-100%, 0); - -webkit-transform: translate3d(-100%, 0, 0); - -moz-transform: translate3d(-100%, 0, 0); - -ms-transform: translate3d(-100%, 0, 0); - -o-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - left: 0; } - .left-off-canvas-menu * { - -webkit-backface-visibility: hidden; } - -.right-off-canvas-menu { - -webkit-backface-visibility: hidden; - width: 15.625rem; - top: 0; - bottom: 0; - position: absolute; - overflow-y: auto; - background: #333333; - z-index: 1001; - box-sizing: content-box; - transition: transform 500ms ease 0s; - -webkit-overflow-scrolling: touch; - -ms-transform: translate(100%, 0); - -webkit-transform: translate3d(100%, 0, 0); - -moz-transform: translate3d(100%, 0, 0); - -ms-transform: translate3d(100%, 0, 0); - -o-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - right: 0; } - .right-off-canvas-menu * { - -webkit-backface-visibility: hidden; } - -ul.off-canvas-list { - list-style-type: none; - padding: 0; - margin: 0; } - ul.off-canvas-list li label { - padding: 0.3rem 0.9375rem; - color: #999999; - text-transform: uppercase; - font-weight: bold; - background: #444444; - border-top: 1px solid #5e5e5e; - border-bottom: none; - margin: 0; } - ul.off-canvas-list li a { - display: block; - padding: 0.66667rem; - color: rgba(255, 255, 255, 0.7); - border-bottom: 1px solid #262626; - transition: background 300ms ease; } - ul.off-canvas-list li a:hover { - background: #242424; } - -.move-right > .inner-wrap { - -ms-transform: translate(15.625rem, 0); - -webkit-transform: translate3d(15.625rem, 0, 0); - -moz-transform: translate3d(15.625rem, 0, 0); - -ms-transform: translate3d(15.625rem, 0, 0); - -o-transform: translate3d(15.625rem, 0, 0); - transform: translate3d(15.625rem, 0, 0); } -.move-right .exit-off-canvas { - -webkit-backface-visibility: hidden; - transition: background 300ms ease; - cursor: pointer; - box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); - display: block; - position: absolute; - background: rgba(255, 255, 255, 0.2); - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 1002; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } - @media only screen and (min-width: 40.063em) { - .move-right .exit-off-canvas:hover { - background: rgba(255, 255, 255, 0.05); } } - -.move-left > .inner-wrap { - -ms-transform: translate(-15.625rem, 0); - -webkit-transform: translate3d(-15.625rem, 0, 0); - -moz-transform: translate3d(-15.625rem, 0, 0); - -ms-transform: translate3d(-15.625rem, 0, 0); - -o-transform: translate3d(-15.625rem, 0, 0); - transform: translate3d(-15.625rem, 0, 0); } -.move-left .exit-off-canvas { - -webkit-backface-visibility: hidden; - transition: background 300ms ease; - cursor: pointer; - box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); - display: block; - position: absolute; - background: rgba(255, 255, 255, 0.2); - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 1002; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } - @media only screen and (min-width: 40.063em) { - .move-left .exit-off-canvas:hover { - background: rgba(255, 255, 255, 0.05); } } - -.offcanvas-overlap .left-off-canvas-menu, .offcanvas-overlap .right-off-canvas-menu { - -ms-transform: none; - -webkit-transform: none; - -moz-transform: none; - -o-transform: none; - transform: none; - z-index: 1003; } -.offcanvas-overlap .exit-offcanvas-menu { - -webkit-backface-visibility: hidden; - transition: background 300ms ease; - cursor: pointer; - box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); - display: block; - position: absolute; - background: rgba(255, 255, 255, 0.2); - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 1002; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - z-index: 1002; } - @media only screen and (min-width: 40.063em) { - .offcanvas-overlap .exit-offcanvas-menu:hover { - background: rgba(255, 255, 255, 0.05); } } - -.no-csstransforms .left-off-canvas-menu { - left: -15.625rem; } -.no-csstransforms .right-off-canvas-menu { - right: -15.625rem; } -.no-csstransforms .move-left > .inner-wrap { - right: 15.625rem; } -.no-csstransforms .move-right > .inner-wrap { - left: 15.625rem; } - -/* Foundation Dropdowns */ -.f-dropdown { - position: absolute; - left: -9999px; - list-style: none; - margin-left: 0; - width: 100%; - max-height: none; - height: auto; - background: white; - border: solid 1px #cccccc; - font-size: 0.875rem; - z-index: 99; - margin-top: 2px; - max-width: 200px; } - .f-dropdown > *:first-child { - margin-top: 0; } - .f-dropdown > *:last-child { - margin-bottom: 0; } - .f-dropdown:before { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 6px; - border-color: transparent transparent white transparent; - border-bottom-style: solid; - position: absolute; - top: -12px; - left: 10px; - z-index: 99; } - .f-dropdown:after { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 7px; - border-color: transparent transparent #cccccc transparent; - border-bottom-style: solid; - position: absolute; - top: -14px; - left: 9px; - z-index: 98; } - .f-dropdown.right:before { - left: auto; - right: 10px; } - .f-dropdown.right:after { - left: auto; - right: 9px; } - .f-dropdown.drop-right { - position: absolute; - left: -9999px; - list-style: none; - margin-left: 0; - width: 100%; - max-height: none; - height: auto; - background: white; - border: solid 1px #cccccc; - font-size: 0.875rem; - z-index: 99; - margin-top: 0; - margin-left: 2px; - max-width: 200px; } - .f-dropdown.drop-right > *:first-child { - margin-top: 0; } - .f-dropdown.drop-right > *:last-child { - margin-bottom: 0; } - .f-dropdown.drop-right:before { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 6px; - border-color: transparent white transparent transparent; - border-right-style: solid; - position: absolute; - top: 10px; - left: -12px; - z-index: 99; } - .f-dropdown.drop-right:after { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 7px; - border-color: transparent #cccccc transparent transparent; - border-right-style: solid; - position: absolute; - top: 9px; - left: -14px; - z-index: 98; } - .f-dropdown.drop-left { - position: absolute; - left: -9999px; - list-style: none; - margin-left: 0; - width: 100%; - max-height: none; - height: auto; - background: white; - border: solid 1px #cccccc; - font-size: 0.875rem; - z-index: 99; - margin-top: 0; - margin-left: -2px; - max-width: 200px; } - .f-dropdown.drop-left > *:first-child { - margin-top: 0; } - .f-dropdown.drop-left > *:last-child { - margin-bottom: 0; } - .f-dropdown.drop-left:before { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 6px; - border-color: transparent transparent transparent white; - border-left-style: solid; - position: absolute; - top: 10px; - right: -12px; - left: auto; - z-index: 99; } - .f-dropdown.drop-left:after { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 7px; - border-color: transparent transparent transparent #cccccc; - border-left-style: solid; - position: absolute; - top: 9px; - right: -14px; - left: auto; - z-index: 98; } - .f-dropdown.drop-top { - position: absolute; - left: -9999px; - list-style: none; - margin-left: 0; - width: 100%; - max-height: none; - height: auto; - background: white; - border: solid 1px #cccccc; - font-size: 0.875rem; - z-index: 99; - margin-top: -2px; - margin-left: 0; - max-width: 200px; } - .f-dropdown.drop-top > *:first-child { - margin-top: 0; } - .f-dropdown.drop-top > *:last-child { - margin-bottom: 0; } - .f-dropdown.drop-top:before { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 6px; - border-color: white transparent transparent transparent; - border-top-style: solid; - position: absolute; - top: auto; - bottom: -12px; - left: 10px; - right: auto; - z-index: 99; } - .f-dropdown.drop-top:after { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 7px; - border-color: #cccccc transparent transparent transparent; - border-top-style: solid; - position: absolute; - top: auto; - bottom: -14px; - left: 9px; - right: auto; - z-index: 98; } - .f-dropdown li { - font-size: 0.875rem; - cursor: pointer; - line-height: 1.125rem; - margin: 0; } - .f-dropdown li:hover, .f-dropdown li:focus { - background: #eeeeee; } - .f-dropdown li a { - display: block; - padding: 0.5rem; - color: #555555; } - .f-dropdown.content { - position: absolute; - left: -9999px; - list-style: none; - margin-left: 0; - padding: 1.25rem; - width: 100%; - height: auto; - max-height: none; - background: white; - border: solid 1px #cccccc; - font-size: 0.875rem; - z-index: 99; - max-width: 200px; } - .f-dropdown.content > *:first-child { - margin-top: 0; } - .f-dropdown.content > *:last-child { - margin-bottom: 0; } - .f-dropdown.tiny { - max-width: 200px; } - .f-dropdown.small { - max-width: 300px; } - .f-dropdown.medium { - max-width: 500px; } - .f-dropdown.large { - max-width: 800px; } - -table { - background: white; - margin-bottom: 1.25rem; - border: solid 1px #dddddd; } - table caption { - background: transparent; - color: #222222; - font-size: 1rem; - font-weight: bold; } - table thead { - background: whitesmoke; } - table thead tr th, - table thead tr td { - padding: 0.5rem 0.625rem 0.625rem; - font-size: 0.875rem; - font-weight: bold; - color: #222222; } - table tfoot { - background: whitesmoke; } - table tfoot tr th, - table tfoot tr td { - padding: 0.5rem 0.625rem 0.625rem; - font-size: 0.875rem; - font-weight: bold; - color: #222222; } - table tr th, - table tr td { - padding: 0.5625rem 0.625rem; - font-size: 0.875rem; - color: #222222; - text-align: left; } - table tr.even, table tr.alt, table tr:nth-of-type(even) { - background: #f9f9f9; } - table thead tr th, - table tfoot tr th, - table tfoot tr td, - table tbody tr th, - table tbody tr td, - table tr td { - display: table-cell; - line-height: 1.125rem; } - -/* Standard Forms */ -form { - margin: 0 0 1rem; } - -/* Using forms within rows, we need to set some defaults */ -form .row .row { - margin: 0 -0.5rem; } - form .row .row .column, - form .row .row .columns { - padding: 0 0.5rem; } - form .row .row.collapse { - margin: 0; } - form .row .row.collapse .column, - form .row .row.collapse .columns { - padding: 0; } - form .row .row.collapse input { - border-bottom-right-radius: 0; - border-top-right-radius: 0; } -form .row input.column, -form .row input.columns, -form .row textarea.column, -form .row textarea.columns { - padding-left: 0.5rem; } - -/* Label Styles */ -label { - font-size: 0.875rem; - color: #4d4d4d; - cursor: pointer; - display: block; - font-weight: normal; - line-height: 1.5; - margin-bottom: 0; - /* Styles for required inputs */ } - label.right { - float: none !important; - text-align: right; } - label.inline { - margin: 0 0 1rem 0; - padding: 0.5625rem 0; } - label small { - text-transform: capitalize; - color: #676767; } - -select::-ms-expand { - display: none; } - -@-moz-document url-prefix() { - select { - background: #fafafa; } - - select:hover { - background: #f3f3f3; } } - -/* Attach elements to the beginning or end of an input */ -.prefix, -.postfix { - display: block; - position: relative; - z-index: 2; - text-align: center; - width: 100%; - padding-top: 0; - padding-bottom: 0; - border-style: solid; - border-width: 1px; - overflow: hidden; - font-size: 0.875rem; - height: 2.3125rem; - line-height: 2.3125rem; } - -/* Adjust padding, alignment and radius if pre/post element is a button */ -.postfix.button { - padding-left: 0; - padding-right: 0; - padding-top: 0; - padding-bottom: 0; - text-align: center; - line-height: 2.125rem; - border: none; } - -.prefix.button { - padding-left: 0; - padding-right: 0; - padding-top: 0; - padding-bottom: 0; - text-align: center; - line-height: 2.125rem; - border: none; } - -.prefix.button.radius { - border-radius: 0; - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; } - -.postfix.button.radius { - border-radius: 0; - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; } - -.prefix.button.round { - border-radius: 0; - border-bottom-left-radius: 1000px; - border-top-left-radius: 1000px; } - -.postfix.button.round { - border-radius: 0; - border-bottom-right-radius: 1000px; - border-top-right-radius: 1000px; } - -/* Separate prefix and postfix styles when on span or label so buttons keep their own */ -span.prefix, label.prefix { - background: #f2f2f2; - border-right: none; - color: #333333; - border-color: #cccccc; } - span.prefix.radius, label.prefix.radius { - border-radius: 0; - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; } - -span.postfix, label.postfix { - background: #f2f2f2; - border-left: none; - color: #333333; - border-color: #cccccc; } - span.postfix.radius, label.postfix.radius { - border-radius: 0; - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; } - -/* We use this to get basic styling on all basic form elements */ -input[type="text"], -input[type="password"], -input[type="date"], -input[type="datetime"], -input[type="datetime-local"], -input[type="month"], -input[type="week"], -input[type="email"], -input[type="number"], -input[type="search"], -input[type="tel"], -input[type="time"], -input[type="url"], -textarea { - -webkit-appearance: none; - background-color: white; - font-family: inherit; - border: 1px solid #cccccc; - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - color: rgba(0, 0, 0, 0.75); - display: block; - font-size: 0.875rem; - margin: 0 0 1rem 0; - padding: 0.5rem; - height: 2.3125rem; - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - transition: box-shadow 0.45s, border-color 0.45s ease-in-out; } - input[type="text"]:focus, - input[type="password"]:focus, - input[type="date"]:focus, - input[type="datetime"]:focus, - input[type="datetime-local"]:focus, - input[type="month"]:focus, - input[type="week"]:focus, - input[type="email"]:focus, - input[type="number"]:focus, - input[type="search"]:focus, - input[type="tel"]:focus, - input[type="time"]:focus, - input[type="url"]:focus, - textarea:focus { - box-shadow: 0 0 5px #999999; - border-color: #999999; } - input[type="text"]:focus, - input[type="password"]:focus, - input[type="date"]:focus, - input[type="datetime"]:focus, - input[type="datetime-local"]:focus, - input[type="month"]:focus, - input[type="week"]:focus, - input[type="email"]:focus, - input[type="number"]:focus, - input[type="search"]:focus, - input[type="tel"]:focus, - input[type="time"]:focus, - input[type="url"]:focus, - textarea:focus { - background: #fafafa; - border-color: #999999; - outline: none; } - input[type="text"][disabled], fieldset[disabled] input[type="text"], - input[type="password"][disabled], fieldset[disabled] - input[type="password"], - input[type="date"][disabled], fieldset[disabled] - input[type="date"], - input[type="datetime"][disabled], fieldset[disabled] - input[type="datetime"], - input[type="datetime-local"][disabled], fieldset[disabled] - input[type="datetime-local"], - input[type="month"][disabled], fieldset[disabled] - input[type="month"], - input[type="week"][disabled], fieldset[disabled] - input[type="week"], - input[type="email"][disabled], fieldset[disabled] - input[type="email"], - input[type="number"][disabled], fieldset[disabled] - input[type="number"], - input[type="search"][disabled], fieldset[disabled] - input[type="search"], - input[type="tel"][disabled], fieldset[disabled] - input[type="tel"], - input[type="time"][disabled], fieldset[disabled] - input[type="time"], - input[type="url"][disabled], fieldset[disabled] - input[type="url"], - textarea[disabled], fieldset[disabled] - textarea { - background-color: #dddddd; } - input[type="text"].radius, - input[type="password"].radius, - input[type="date"].radius, - input[type="datetime"].radius, - input[type="datetime-local"].radius, - input[type="month"].radius, - input[type="week"].radius, - input[type="email"].radius, - input[type="number"].radius, - input[type="search"].radius, - input[type="tel"].radius, - input[type="time"].radius, - input[type="url"].radius, - textarea.radius { - border-radius: 3px; } - -input[type="submit"] { - -webkit-appearance: none; } - -/* Respect enforced amount of rows for textarea */ -textarea[rows] { - height: auto; } - -/* Add height value for select elements to match text input height */ -select { - -webkit-appearance: none !important; - background-color: #fafafa; - background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iM3B4IiB2aWV3Qm94PSIwIDAgNiAzIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA2IDMiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwb2x5Z29uIHBvaW50cz0iNS45OTIsMCAyLjk5MiwzIC0wLjAwOCwwICIvPjwvc3ZnPg=="); - background-repeat: no-repeat; - background-position: 97% center; - border: 1px solid #cccccc; - padding: 0.5rem; - font-size: 0.875rem; - color: rgba(0, 0, 0, 0.75); - line-height: normal; - border-radius: 0; - height: 2.3125rem; } - select.radius { - border-radius: 3px; } - select:hover { - background-color: #f3f3f3; - border-color: #999999; } - -/* Adjust margin for form elements below */ -input[type="file"], -input[type="checkbox"], -input[type="radio"], -select { - margin: 0 0 1rem 0; } - -input[type="checkbox"] + label, -input[type="radio"] + label { - display: inline-block; - margin-left: 0.5rem; - margin-right: 1rem; - margin-bottom: 0; - vertical-align: baseline; } - -/* Normalize file input width */ -input[type="file"] { - width: 100%; } - -/* We add basic fieldset styling */ -fieldset { - border: 1px solid #dddddd; - padding: 1.25rem; - margin: 1.125rem 0; } - fieldset legend { - font-weight: bold; - background: white; - padding: 0 0.1875rem; - margin: 0; - margin-left: -0.1875rem; } - -/* Error Handling */ -[data-abide] .error small.error, [data-abide] span.error, [data-abide] small.error { - display: block; - padding: 0.375rem 0.5625rem 0.5625rem; - margin-top: -1px; - margin-bottom: 1rem; - font-size: 0.75rem; - font-weight: normal; - font-style: italic; - background: #f04124; - color: white; } -[data-abide] span.error, [data-abide] small.error { - display: none; } - -span.error, small.error { - display: block; - padding: 0.375rem 0.5625rem 0.5625rem; - margin-top: -1px; - margin-bottom: 1rem; - font-size: 0.75rem; - font-weight: normal; - font-style: italic; - background: #f04124; - color: white; } - -.error input, -.error textarea, -.error select { - margin-bottom: 0; } -.error input[type="checkbox"], -.error input[type="radio"] { - margin-bottom: 1rem; } -.error label, -.error label.error { - color: #f04124; } -.error small.error { - display: block; - padding: 0.375rem 0.5625rem 0.5625rem; - margin-top: -1px; - margin-bottom: 1rem; - font-size: 0.75rem; - font-weight: normal; - font-style: italic; - background: #f04124; - color: white; } -.error > label > small { - color: #676767; - background: transparent; - padding: 0; - text-transform: capitalize; - font-style: normal; - font-size: 60%; - margin: 0; - display: inline; } -.error span.error-message { - display: block; } - -input.error, -textarea.error { - margin-bottom: 0; } - -label.error { - color: #f04124; } - -.range-slider { - display: block; - position: relative; - width: 100%; - height: 1rem; - border: 1px solid #dddddd; - margin: 1.25rem 0; - -ms-touch-action: none; - touch-action: none; - background: #fafafa; } - .range-slider.vertical-range { - display: block; - position: relative; - width: 100%; - height: 1rem; - border: 1px solid #dddddd; - margin: 1.25rem 0; - -ms-touch-action: none; - touch-action: none; - display: inline-block; - width: 1rem; - height: 12.5rem; } - .range-slider.vertical-range .range-slider-handle { - margin-top: 0; - margin-left: -0.5rem; - position: absolute; - bottom: -10.5rem; } - .range-slider.vertical-range .range-slider-active-segment { - width: 0.875rem; - height: auto; - bottom: 0; } - .range-slider.radius { - background: #fafafa; - border-radius: 3px; } - .range-slider.radius .range-slider-handle { - background: #008cba; - border-radius: 3px; } - .range-slider.radius .range-slider-handle:hover { - background: #007ba4; } - .range-slider.round { - background: #fafafa; - border-radius: 1000px; } - .range-slider.round .range-slider-handle { - background: #008cba; - border-radius: 1000px; } - .range-slider.round .range-slider-handle:hover { - background: #007ba4; } - -.range-slider-active-segment { - display: inline-block; - position: absolute; - height: 0.875rem; - background: #e5e5e5; } - -.range-slider-handle { - display: inline-block; - position: absolute; - z-index: 1; - top: -0.3125rem; - width: 2rem; - height: 1.375rem; - border: 1px solid none; - cursor: pointer; - background: #008cba; } - .range-slider-handle:hover { - background: #007ba4; } - -[class*="block-grid-"] { - display: block; - padding: 0; - margin: 0 -0.625rem; } - [class*="block-grid-"]:before, [class*="block-grid-"]:after { - content: " "; - display: table; } - [class*="block-grid-"]:after { - clear: both; } - [class*="block-grid-"] > li { - display: block; - height: auto; - float: left; - padding: 0 0.625rem 1.25rem; } - -@media only screen { - .small-block-grid-1 > li { - width: 100%; - list-style: none; } - .small-block-grid-1 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-1 > li:nth-of-type(1n+1) { - clear: both; } - - .small-block-grid-2 > li { - width: 50%; - list-style: none; } - .small-block-grid-2 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-2 > li:nth-of-type(2n+1) { - clear: both; } - - .small-block-grid-3 > li { - width: 33.33333%; - list-style: none; } - .small-block-grid-3 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-3 > li:nth-of-type(3n+1) { - clear: both; } - - .small-block-grid-4 > li { - width: 25%; - list-style: none; } - .small-block-grid-4 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-4 > li:nth-of-type(4n+1) { - clear: both; } - - .small-block-grid-5 > li { - width: 20%; - list-style: none; } - .small-block-grid-5 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-5 > li:nth-of-type(5n+1) { - clear: both; } - - .small-block-grid-6 > li { - width: 16.66667%; - list-style: none; } - .small-block-grid-6 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-6 > li:nth-of-type(6n+1) { - clear: both; } - - .small-block-grid-7 > li { - width: 14.28571%; - list-style: none; } - .small-block-grid-7 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-7 > li:nth-of-type(7n+1) { - clear: both; } - - .small-block-grid-8 > li { - width: 12.5%; - list-style: none; } - .small-block-grid-8 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-8 > li:nth-of-type(8n+1) { - clear: both; } - - .small-block-grid-9 > li { - width: 11.11111%; - list-style: none; } - .small-block-grid-9 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-9 > li:nth-of-type(9n+1) { - clear: both; } - - .small-block-grid-10 > li { - width: 10%; - list-style: none; } - .small-block-grid-10 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-10 > li:nth-of-type(10n+1) { - clear: both; } - - .small-block-grid-11 > li { - width: 9.09091%; - list-style: none; } - .small-block-grid-11 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-11 > li:nth-of-type(11n+1) { - clear: both; } - - .small-block-grid-12 > li { - width: 8.33333%; - list-style: none; } - .small-block-grid-12 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-12 > li:nth-of-type(12n+1) { - clear: both; } } -@media only screen and (min-width: 40.063em) { - .medium-block-grid-1 > li { - width: 100%; - list-style: none; } - .medium-block-grid-1 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-1 > li:nth-of-type(1n+1) { - clear: both; } - - .medium-block-grid-2 > li { - width: 50%; - list-style: none; } - .medium-block-grid-2 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-2 > li:nth-of-type(2n+1) { - clear: both; } - - .medium-block-grid-3 > li { - width: 33.33333%; - list-style: none; } - .medium-block-grid-3 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-3 > li:nth-of-type(3n+1) { - clear: both; } - - .medium-block-grid-4 > li { - width: 25%; - list-style: none; } - .medium-block-grid-4 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-4 > li:nth-of-type(4n+1) { - clear: both; } - - .medium-block-grid-5 > li { - width: 20%; - list-style: none; } - .medium-block-grid-5 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-5 > li:nth-of-type(5n+1) { - clear: both; } - - .medium-block-grid-6 > li { - width: 16.66667%; - list-style: none; } - .medium-block-grid-6 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-6 > li:nth-of-type(6n+1) { - clear: both; } - - .medium-block-grid-7 > li { - width: 14.28571%; - list-style: none; } - .medium-block-grid-7 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-7 > li:nth-of-type(7n+1) { - clear: both; } - - .medium-block-grid-8 > li { - width: 12.5%; - list-style: none; } - .medium-block-grid-8 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-8 > li:nth-of-type(8n+1) { - clear: both; } - - .medium-block-grid-9 > li { - width: 11.11111%; - list-style: none; } - .medium-block-grid-9 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-9 > li:nth-of-type(9n+1) { - clear: both; } - - .medium-block-grid-10 > li { - width: 10%; - list-style: none; } - .medium-block-grid-10 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-10 > li:nth-of-type(10n+1) { - clear: both; } - - .medium-block-grid-11 > li { - width: 9.09091%; - list-style: none; } - .medium-block-grid-11 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-11 > li:nth-of-type(11n+1) { - clear: both; } - - .medium-block-grid-12 > li { - width: 8.33333%; - list-style: none; } - .medium-block-grid-12 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-12 > li:nth-of-type(12n+1) { - clear: both; } } -@media only screen and (min-width: 64.063em) { - .large-block-grid-1 > li { - width: 100%; - list-style: none; } - .large-block-grid-1 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-1 > li:nth-of-type(1n+1) { - clear: both; } - - .large-block-grid-2 > li { - width: 50%; - list-style: none; } - .large-block-grid-2 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-2 > li:nth-of-type(2n+1) { - clear: both; } - - .large-block-grid-3 > li { - width: 33.33333%; - list-style: none; } - .large-block-grid-3 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-3 > li:nth-of-type(3n+1) { - clear: both; } - - .large-block-grid-4 > li { - width: 25%; - list-style: none; } - .large-block-grid-4 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-4 > li:nth-of-type(4n+1) { - clear: both; } - - .large-block-grid-5 > li { - width: 20%; - list-style: none; } - .large-block-grid-5 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-5 > li:nth-of-type(5n+1) { - clear: both; } - - .large-block-grid-6 > li { - width: 16.66667%; - list-style: none; } - .large-block-grid-6 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-6 > li:nth-of-type(6n+1) { - clear: both; } - - .large-block-grid-7 > li { - width: 14.28571%; - list-style: none; } - .large-block-grid-7 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-7 > li:nth-of-type(7n+1) { - clear: both; } - - .large-block-grid-8 > li { - width: 12.5%; - list-style: none; } - .large-block-grid-8 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-8 > li:nth-of-type(8n+1) { - clear: both; } - - .large-block-grid-9 > li { - width: 11.11111%; - list-style: none; } - .large-block-grid-9 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-9 > li:nth-of-type(9n+1) { - clear: both; } - - .large-block-grid-10 > li { - width: 10%; - list-style: none; } - .large-block-grid-10 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-10 > li:nth-of-type(10n+1) { - clear: both; } - - .large-block-grid-11 > li { - width: 9.09091%; - list-style: none; } - .large-block-grid-11 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-11 > li:nth-of-type(11n+1) { - clear: both; } - - .large-block-grid-12 > li { - width: 8.33333%; - list-style: none; } - .large-block-grid-12 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-12 > li:nth-of-type(12n+1) { - clear: both; } } -.flex-video { - position: relative; - padding-top: 1.5625rem; - padding-bottom: 67.5%; - height: 0; - margin-bottom: 1rem; - overflow: hidden; } - .flex-video.widescreen { - padding-bottom: 56.34%; } - .flex-video.vimeo { - padding-top: 0; } - .flex-video iframe, - .flex-video object, - .flex-video embed, - .flex-video video { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; } - -.keystroke, -kbd { - background-color: #ededed; - border-color: #dddddd; - color: #222222; - border-style: solid; - border-width: 1px; - margin: 0; - font-family: "Consolas", "Menlo", "Courier", monospace; - font-size: inherit; - padding: 0.125rem 0.25rem 0; - border-radius: 3px; } - -/* small displays */ -@media only screen { - .show-for-small-only, .show-for-small-up, .show-for-small, .show-for-small-down, .hide-for-medium-only, .hide-for-medium-up, .hide-for-medium, .show-for-medium-down, .hide-for-large-only, .hide-for-large-up, .hide-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xxlarge-only, .hide-for-xxlarge-up { - display: inherit !important; } - - .hide-for-small-only, .hide-for-small-up, .hide-for-small, .hide-for-small-down, .show-for-medium-only, .show-for-medium-up, .show-for-medium, .hide-for-medium-down, .show-for-large-only, .show-for-large-up, .show-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xxlarge-only, .show-for-xxlarge-up { - display: none !important; } - - .visible-for-small-only, .visible-for-small-up, .visible-for-small, .visible-for-small-down, .hidden-for-medium-only, .hidden-for-medium-up, .hidden-for-medium, .visible-for-medium-down, .hidden-for-large-only, .hidden-for-large-up, .hidden-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up { - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; } - - .hidden-for-small-only, .hidden-for-small-up, .hidden-for-small, .hidden-for-small-down, .visible-for-medium-only, .visible-for-medium-up, .visible-for-medium, .hidden-for-medium-down, .visible-for-large-only, .visible-for-large-up, .visible-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xxlarge-only, .visible-for-xxlarge-up { - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - - table.show-for-small-only, table.show-for-small-up, table.show-for-small, table.show-for-small-down, table.hide-for-medium-only, table.hide-for-medium-up, table.hide-for-medium, table.show-for-medium-down, table.hide-for-large-only, table.hide-for-large-up, table.hide-for-large, table.show-for-large-down, table.hide-for-xlarge-only, table.hide-for-xlarge-up, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up { - display: table; } - - thead.show-for-small-only, thead.show-for-small-up, thead.show-for-small, thead.show-for-small-down, thead.hide-for-medium-only, thead.hide-for-medium-up, thead.hide-for-medium, thead.show-for-medium-down, thead.hide-for-large-only, thead.hide-for-large-up, thead.hide-for-large, thead.show-for-large-down, thead.hide-for-xlarge-only, thead.hide-for-xlarge-up, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up { - display: table-header-group !important; } - - tbody.show-for-small-only, tbody.show-for-small-up, tbody.show-for-small, tbody.show-for-small-down, tbody.hide-for-medium-only, tbody.hide-for-medium-up, tbody.hide-for-medium, tbody.show-for-medium-down, tbody.hide-for-large-only, tbody.hide-for-large-up, tbody.hide-for-large, tbody.show-for-large-down, tbody.hide-for-xlarge-only, tbody.hide-for-xlarge-up, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up { - display: table-row-group !important; } - - tr.show-for-small-only, tr.show-for-small-up, tr.show-for-small, tr.show-for-small-down, tr.hide-for-medium-only, tr.hide-for-medium-up, tr.hide-for-medium, tr.show-for-medium-down, tr.hide-for-large-only, tr.hide-for-large-up, tr.hide-for-large, tr.show-for-large-down, tr.hide-for-xlarge-only, tr.hide-for-xlarge-up, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up { - display: table-row !important; } - - th.show-for-small-only, td.show-for-small-only, th.show-for-small-up, td.show-for-small-up, th.show-for-small, td.show-for-small, th.show-for-small-down, td.show-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.hide-for-medium-up, td.hide-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.show-for-medium-down, td.show-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.hide-for-large-up, td.hide-for-large-up, th.hide-for-large, td.hide-for-large, th.show-for-large-down, td.show-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.hide-for-xlarge-up, td.hide-for-xlarge-up, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up { - display: table-cell !important; } } -/* medium displays */ -@media only screen and (min-width: 40.063em) { - .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .show-for-medium-only, .show-for-medium-up, .show-for-medium, .show-for-medium-down, .hide-for-large-only, .hide-for-large-up, .hide-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xxlarge-only, .hide-for-xxlarge-up { - display: inherit !important; } - - .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .hide-for-medium-only, .hide-for-medium-up, .hide-for-medium, .hide-for-medium-down, .show-for-large-only, .show-for-large-up, .show-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xxlarge-only, .show-for-xxlarge-up { - display: none !important; } - - .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .visible-for-medium-only, .visible-for-medium-up, .visible-for-medium, .visible-for-medium-down, .hidden-for-large-only, .hidden-for-large-up, .hidden-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up { - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; } - - .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .hidden-for-medium-only, .hidden-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .visible-for-large-only, .visible-for-large-up, .visible-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xxlarge-only, .visible-for-xxlarge-up { - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - - table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.show-for-medium-only, table.show-for-medium-up, table.show-for-medium, table.show-for-medium-down, table.hide-for-large-only, table.hide-for-large-up, table.hide-for-large, table.show-for-large-down, table.hide-for-xlarge-only, table.hide-for-xlarge-up, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up { - display: table; } - - thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.show-for-medium-only, thead.show-for-medium-up, thead.show-for-medium, thead.show-for-medium-down, thead.hide-for-large-only, thead.hide-for-large-up, thead.hide-for-large, thead.show-for-large-down, thead.hide-for-xlarge-only, thead.hide-for-xlarge-up, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up { - display: table-header-group !important; } - - tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.show-for-medium-only, tbody.show-for-medium-up, tbody.show-for-medium, tbody.show-for-medium-down, tbody.hide-for-large-only, tbody.hide-for-large-up, tbody.hide-for-large, tbody.show-for-large-down, tbody.hide-for-xlarge-only, tbody.hide-for-xlarge-up, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up { - display: table-row-group !important; } - - tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.show-for-medium-only, tr.show-for-medium-up, tr.show-for-medium, tr.show-for-medium-down, tr.hide-for-large-only, tr.hide-for-large-up, tr.hide-for-large, tr.show-for-large-down, tr.hide-for-xlarge-only, tr.hide-for-xlarge-up, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up { - display: table-row !important; } - - th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.show-for-medium-only, td.show-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.show-for-medium, td.show-for-medium, th.show-for-medium-down, td.show-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.hide-for-large-up, td.hide-for-large-up, th.hide-for-large, td.hide-for-large, th.show-for-large-down, td.show-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.hide-for-xlarge-up, td.hide-for-xlarge-up, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up { - display: table-cell !important; } } -/* large displays */ -@media only screen and (min-width: 64.063em) { - .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .hide-for-medium-only, .show-for-medium-up, .hide-for-medium, .hide-for-medium-down, .show-for-large-only, .show-for-large-up, .show-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xxlarge-only, .hide-for-xxlarge-up { - display: inherit !important; } - - .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .show-for-medium-only, .hide-for-medium-up, .show-for-medium, .show-for-medium-down, .hide-for-large-only, .hide-for-large-up, .hide-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xxlarge-only, .show-for-xxlarge-up { - display: none !important; } - - .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .hidden-for-medium-only, .visible-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .visible-for-large-only, .visible-for-large-up, .visible-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up { - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; } - - .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .visible-for-medium-only, .hidden-for-medium-up, .visible-for-medium, .visible-for-medium-down, .hidden-for-large-only, .hidden-for-large-up, .hidden-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xxlarge-only, .visible-for-xxlarge-up { - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - - table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.hide-for-medium-only, table.show-for-medium-up, table.hide-for-medium, table.hide-for-medium-down, table.show-for-large-only, table.show-for-large-up, table.show-for-large, table.show-for-large-down, table.hide-for-xlarge-only, table.hide-for-xlarge-up, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up { - display: table; } - - thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.hide-for-medium, thead.hide-for-medium-down, thead.show-for-large-only, thead.show-for-large-up, thead.show-for-large, thead.show-for-large-down, thead.hide-for-xlarge-only, thead.hide-for-xlarge-up, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up { - display: table-header-group !important; } - - tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.show-for-large-only, tbody.show-for-large-up, tbody.show-for-large, tbody.show-for-large-down, tbody.hide-for-xlarge-only, tbody.hide-for-xlarge-up, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up { - display: table-row-group !important; } - - tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.hide-for-medium, tr.hide-for-medium-down, tr.show-for-large-only, tr.show-for-large-up, tr.show-for-large, tr.show-for-large-down, tr.hide-for-xlarge-only, tr.hide-for-xlarge-up, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up { - display: table-row !important; } - - th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.hide-for-medium-down, td.hide-for-medium-down, th.show-for-large-only, td.show-for-large-only, th.show-for-large-up, td.show-for-large-up, th.show-for-large, td.show-for-large, th.show-for-large-down, td.show-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.hide-for-xlarge-up, td.hide-for-xlarge-up, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up { - display: table-cell !important; } } -/* xlarge displays */ -@media only screen and (min-width: 90.063em) { - .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .hide-for-medium-only, .show-for-medium-up, .hide-for-medium, .hide-for-medium-down, .hide-for-large-only, .show-for-large-up, .hide-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .hide-for-xxlarge-only, .hide-for-xxlarge-up { - display: inherit !important; } - - .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .show-for-medium-only, .hide-for-medium-up, .show-for-medium, .show-for-medium-down, .show-for-large-only, .hide-for-large-up, .show-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .show-for-xxlarge-only, .show-for-xxlarge-up { - display: none !important; } - - .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .hidden-for-medium-only, .visible-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .hidden-for-large-only, .visible-for-large-up, .hidden-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up { - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; } - - .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .visible-for-medium-only, .hidden-for-medium-up, .visible-for-medium, .visible-for-medium-down, .visible-for-large-only, .hidden-for-large-up, .visible-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .visible-for-xxlarge-only, .visible-for-xxlarge-up { - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - - table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.hide-for-medium-only, table.show-for-medium-up, table.hide-for-medium, table.hide-for-medium-down, table.hide-for-large-only, table.show-for-large-up, table.hide-for-large, table.hide-for-large-down, table.show-for-xlarge-only, table.show-for-xlarge-up, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up { - display: table; } - - thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.hide-for-medium, thead.hide-for-medium-down, thead.hide-for-large-only, thead.show-for-large-up, thead.hide-for-large, thead.hide-for-large-down, thead.show-for-xlarge-only, thead.show-for-xlarge-up, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up { - display: table-header-group !important; } - - tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.hide-for-large-only, tbody.show-for-large-up, tbody.hide-for-large, tbody.hide-for-large-down, tbody.show-for-xlarge-only, tbody.show-for-xlarge-up, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up { - display: table-row-group !important; } - - tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.hide-for-medium, tr.hide-for-medium-down, tr.hide-for-large-only, tr.show-for-large-up, tr.hide-for-large, tr.hide-for-large-down, tr.show-for-xlarge-only, tr.show-for-xlarge-up, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up { - display: table-row !important; } - - th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.hide-for-medium-down, td.hide-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.show-for-large-up, td.show-for-large-up, th.hide-for-large, td.hide-for-large, th.hide-for-large-down, td.hide-for-large-down, th.show-for-xlarge-only, td.show-for-xlarge-only, th.show-for-xlarge-up, td.show-for-xlarge-up, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up { - display: table-cell !important; } } -/* xxlarge displays */ -@media only screen and (min-width: 120.063em) { - .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .hide-for-medium-only, .show-for-medium-up, .hide-for-medium, .hide-for-medium-down, .hide-for-large-only, .show-for-large-up, .hide-for-large, .hide-for-large-down, .hide-for-xlarge-only, .show-for-xlarge-up, .show-for-xxlarge-only, .show-for-xxlarge-up { - display: inherit !important; } - - .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .show-for-medium-only, .hide-for-medium-up, .show-for-medium, .show-for-medium-down, .show-for-large-only, .hide-for-large-up, .show-for-large, .show-for-large-down, .show-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xxlarge-only, .hide-for-xxlarge-up { - display: none !important; } - - .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .hidden-for-medium-only, .visible-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .hidden-for-large-only, .visible-for-large-up, .hidden-for-large, .hidden-for-large-down, .hidden-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xxlarge-only, .visible-for-xxlarge-up { - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; } - - .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .visible-for-medium-only, .hidden-for-medium-up, .visible-for-medium, .visible-for-medium-down, .visible-for-large-only, .hidden-for-large-up, .visible-for-large, .visible-for-large-down, .visible-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up { - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - - table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.hide-for-medium-only, table.show-for-medium-up, table.hide-for-medium, table.hide-for-medium-down, table.hide-for-large-only, table.show-for-large-up, table.hide-for-large, table.hide-for-large-down, table.hide-for-xlarge-only, table.show-for-xlarge-up, table.show-for-xxlarge-only, table.show-for-xxlarge-up { - display: table; } - - thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.hide-for-medium, thead.hide-for-medium-down, thead.hide-for-large-only, thead.show-for-large-up, thead.hide-for-large, thead.hide-for-large-down, thead.hide-for-xlarge-only, thead.show-for-xlarge-up, thead.show-for-xxlarge-only, thead.show-for-xxlarge-up { - display: table-header-group !important; } - - tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.hide-for-large-only, tbody.show-for-large-up, tbody.hide-for-large, tbody.hide-for-large-down, tbody.hide-for-xlarge-only, tbody.show-for-xlarge-up, tbody.show-for-xxlarge-only, tbody.show-for-xxlarge-up { - display: table-row-group !important; } - - tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.hide-for-medium, tr.hide-for-medium-down, tr.hide-for-large-only, tr.show-for-large-up, tr.hide-for-large, tr.hide-for-large-down, tr.hide-for-xlarge-only, tr.show-for-xlarge-up, tr.show-for-xxlarge-only, tr.show-for-xxlarge-up { - display: table-row !important; } - - th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.hide-for-medium-down, td.hide-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.show-for-large-up, td.show-for-large-up, th.hide-for-large, td.hide-for-large, th.hide-for-large-down, td.hide-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.show-for-xlarge-up, td.show-for-xlarge-up, th.show-for-xxlarge-only, td.show-for-xxlarge-only, th.show-for-xxlarge-up, td.show-for-xxlarge-up { - display: table-cell !important; } } -/* Orientation targeting */ -.show-for-landscape, -.hide-for-portrait { - display: inherit !important; } - -.hide-for-landscape, -.show-for-portrait { - display: none !important; } - -/* Specific visibility for tables */ -table.hide-for-landscape, table.show-for-portrait { - display: table; } - -thead.hide-for-landscape, thead.show-for-portrait { - display: table-header-group !important; } - -tbody.hide-for-landscape, tbody.show-for-portrait { - display: table-row-group !important; } - -tr.hide-for-landscape, tr.show-for-portrait { - display: table-row !important; } - -td.hide-for-landscape, td.show-for-portrait, -th.hide-for-landscape, -th.show-for-portrait { - display: table-cell !important; } - -@media only screen and (orientation: landscape) { - .show-for-landscape, - .hide-for-portrait { - display: inherit !important; } - - .hide-for-landscape, - .show-for-portrait { - display: none !important; } - - /* Specific visibility for tables */ - table.show-for-landscape, table.hide-for-portrait { - display: table; } - - thead.show-for-landscape, thead.hide-for-portrait { - display: table-header-group !important; } - - tbody.show-for-landscape, tbody.hide-for-portrait { - display: table-row-group !important; } - - tr.show-for-landscape, tr.hide-for-portrait { - display: table-row !important; } - - td.show-for-landscape, td.hide-for-portrait, - th.show-for-landscape, - th.hide-for-portrait { - display: table-cell !important; } } -@media only screen and (orientation: portrait) { - .show-for-portrait, - .hide-for-landscape { - display: inherit !important; } - - .hide-for-portrait, - .show-for-landscape { - display: none !important; } - - /* Specific visibility for tables */ - table.show-for-portrait, table.hide-for-landscape { - display: table; } - - thead.show-for-portrait, thead.hide-for-landscape { - display: table-header-group !important; } - - tbody.show-for-portrait, tbody.hide-for-landscape { - display: table-row-group !important; } - - tr.show-for-portrait, tr.hide-for-landscape { - display: table-row !important; } - - td.show-for-portrait, td.hide-for-landscape, - th.show-for-portrait, - th.hide-for-landscape { - display: table-cell !important; } } -/* Touch-enabled device targeting */ -.show-for-touch { - display: none !important; } - -.hide-for-touch { - display: inherit !important; } - -.touch .show-for-touch { - display: inherit !important; } - -.touch .hide-for-touch { - display: none !important; } - -/* Specific visibility for tables */ -table.hide-for-touch { - display: table; } - -.touch table.show-for-touch { - display: table; } - -thead.hide-for-touch { - display: table-header-group !important; } - -.touch thead.show-for-touch { - display: table-header-group !important; } - -tbody.hide-for-touch { - display: table-row-group !important; } - -.touch tbody.show-for-touch { - display: table-row-group !important; } - -tr.hide-for-touch { - display: table-row !important; } - -.touch tr.show-for-touch { - display: table-row !important; } - -td.hide-for-touch { - display: table-cell !important; } - -.touch td.show-for-touch { - display: table-cell !important; } - -th.hide-for-touch { - display: table-cell !important; } - -.touch th.show-for-touch { - display: table-cell !important; } - -/* Print visibility */ -@media print { - .show-for-print { - display: block; } - - .hide-for-print { - display: none; } - - table.show-for-print { - display: table; } - - thead.show-for-print { - display: table-header-group !important; } - - tbody.show-for-print { - display: table-row-group !important; } - - tr.show-for-print { - display: table-row !important; } - - td.show-for-print { - display: table-cell !important; } - - th.show-for-print { - display: table-cell !important; } } diff --git a/client/css/game.css b/client/css/game.css deleted file mode 100644 index 189b16f..0000000 --- a/client/css/game.css +++ /dev/null @@ -1,829 +0,0 @@ -@import url("reset.css"); -@import url("header.css"); -@import url("../lib/simplegrid/simplegrid.css"); -@import url("chat.css"); - -@font-face { - font-family: tale; - src: url(fonts/tale.otf); -} -@font-face { - font-family: rbn; - src: url(fonts/RBN.otf); -} - -body { - font-family: Helvetica, Arial, sans-serif; - -webkit-font-smoothing: antialiased; - font-size: 20px; - font-weight: 300; - line-height: 24px; - - background-color: white; - color: black; - - height: 100%; -} - -a { - color: #008cba; - text-decoration: none; - line-height: inherit; - cursor: pointer; -} -b { - font-weight: bold; -} -i { - font-style: italic; -} -.content { - margin-top: 50px; -} - -.grid-pad { - padding-left:0px; -} -/* Graph, Game button and Users playing - ========================================================================== */ - -.row1, .row1 > div { - height: 100%; -} - -.game-container { - padding-bottom: 5rem; -} - -.strong { - font-weight: 600; -} - - -/* Controls */ -.controls { - padding: 10px 10px; - border: 1px solid rgba(0, 0, 0, 0.1); - font-size: 20px; - width: 93%; - height: 170px; - background-image: url(../img/controls-back.png); - min-width: 0; - border-radius: 3px; -} -.game-states { - text-align: center; -} -.your-bet { - height: 134px; -} - -.your-bet .small { - font-size: 11px; -} - -.controls input { - border: 5px solid #dddddd; - background: rgba(255,255,255,0.7); - margin: 5px; - padding: 4px 5px 4px 10px; - font-size: 18px; - width: 110px; - text-align: right; -} - -.sticky { - margin-left: -4px; - color: #9C9696; -} - -.autoplay input, .cashout input{ - width: 18px; - margin-left: -5px; -} - -.autoplay, .cashout { - font-size: 13px; - display: inline; - line-height: 2rem; -} -.bet-grows { - font-size: 25px; - text-align: center; - margin-top: -5px; -} - -.big { - text-align: center; - font-size: 40px; - margin: 5px; - font-weight: bold; -} -.center { - text-align: center; -} -.place-bet { - margin-top: 30px; -} -.left-side { - margin-top: 29px; -} -.bet-span { - padding-right: 20px; - font-size: 25px; - padding-top: 6px; - - - width: 64px; - float:left; - margin-top: 8px; - line-height: 12px; - text-align: center; - margin-left: 9px; - font-weight: bold; -} -.cash-out { - margin-top: 13px; -} -.cash-out input{ - margin-left: 10px; -} - -.cash-out .information { - margin-top: -10px; - margin-bottom: 10px; -} -.game-hash { - font-size: 9px; -} -.green { - color: #7cba00; -} -.information { - text-align: center; - height: 20px; -} -.information .small { - font-size: 14px; - font-weight: 600; -} -.red { - color: #ba3c12; -} -.auto-cash-out-span { - font-size: 12px; - width: 64px; - float:left; - margin-top: 8px; - line-height: 12px; - text-align: center; - margin-left: 9px; - font-weight: bold; -} -.hint { - font-size: 12px; - float: left; - margin-top: 19px; - background: rgba(0, 142, 253, 0.79); - color: white; - font-weight: 500; - padding: 0px 6px; - text-align: center; -} -.cancel { - float: right; - margin-top: 5px; - margin-right: -3px; - font-size: 12px; - font-weight: 500; -} -.invalid { - float: right; - color: red; - position: absolute; -} -.boxes { - float: right; - width: 100px; - display: inline; - margin-top: 10px; -} -.boxes label:hover { - cursor: pointer; -} - -.auto-bet { - float: right; - margin-right: 59px; - margin-top: -24px; -} - -.auto-bet span { - font-size: 13px; -} - -.auto-bet label:hover { - cursor: pointer; -} - -.button { - display: block; - background-position: 0px 0px; - margin: 0 0 0 15px; - width: 100px; - height: 33px; - text-align: center; - color: #FFFFFF; - font-size: 26px; - padding-right: 10px; - padding-top: 13px; - text-transform: uppercase; -} -.big-button { - position: relative; - color: rgba(255,255,255,1); - text-decoration: none; - background-color: rgba(243, 150, 47,1); - font-weight: 300; - font-size: 2em; - display: block; - padding: 15px; - -webkit-border-radius: 8px; - -moz-border-radius: 8px; - border-radius: 8px; - -webkit-box-shadow: 0px 6px 0px rgb(255, 82, 5), 0px 9px 25px rgba(0,0,0,.1); - -moz-box-shadow: 0px 6px 0px rgb(255, 82, 5), 0px 9px 25px rgba(0,0,0,.1); - box-shadow: 0px 6px 0px rgb(255, 81, 20), 0px 9px 25px rgba(0,0,0,0.1); - width: 320px; - text-align: center; -} - -.big-button:active { - -webkit-box-shadow: 0px 3px 0px rgb(186, 60, 18), 0px 3px 6px rgba(0,0,0,.2); - -moz-box-shadow: 0px 3px 0px rgb(186, 60, 18), 0px 3px 6px rgba(0,0,0,.2); - box-shadow: 0px 3px 0px rgb(186, 60, 18), 0px 3px 6px rgba(0,0,0,0.2); - position: relative; - top: 6px; -} - -.big-button-disable { - position: relative; - color: rgba(255,255,255,1); - text-decoration: none; - background-color: rgba(168, 168, 168, 1); - font-weight: 300; - font-size: 2em; - display: block; - padding: 15px; - -webkit-border-radius: 8px; - -moz-border-radius: 8px; - border-radius: 8px - -webkit-box-shadow: 0px 3px 0px rgb(186, 60, 18), 0px 3px 6px rgba(0,0,0,.2); - -moz-box-shadow: 0px 3px 0px rgb(186, 60, 18), 0px 3px 6px rgba(0,0,0,.2); - box-shadow: 0px 3px 0px rgb(102, 102, 102), 0px 3px 6px rgba(0,0,0,0.2); - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - position: relative; - top: 6px; - width: 320px; - text-align: center; -} - -.cash-out .big-button-disable { - width: 100%; - height: 60px; - font-size: 1.5em; - padding: 18px; -} - -.cash-out .big-button { - width: 100%; - height: 60px; - font-size: 1.5em; - padding: 18px; - cursor: pointer; - margin-top: 40px; -} - -.cashed-out .cash-out { - margin-top: 11px; -} -.unselect { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.unclick { - cursor: default; -} -/* Game Button */ -.game { - margin-top: -19px; -} -.game-button { - text-align: center; - display: block; - min-width: 100%; - color: white; - position: relative; - cursor: pointer; - padding: 7px; - font-weight: 500; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} - -.game-button:hover { - font-weight: 300; -} - -.login { - margin-left: 150px; -} - -.split-button { - display: block; - height: 100%; - width: 2.75rem; - position: absolute; - right: 0; - top: 0; - border-left: solid 1px; - border-left-color: rgba(255,255,255,0.5); - font-size: 30px; - font-weight: 900; -} - -.playing { - background-color: #368a55; -} - -.will-join { - background-color: rgba(69, 34, 126, 0.82); -} - -.time-out { - background-color: #ba3c12; -} - -.not-enough-money { - background-color: grey; -} - -.not-logged { - background-color: grey; -} - - -/* Advanced options button */ - -.advanced-options { - height: 4rem; - font-size: 16px; - text-align: center; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; - margin-right: 2.75rem; -} - -.adv-opt-playing { - border: #368a55 2px solid; -} - -.adv-opt-place-bet { - border: #ff8100 2px solid; -} - -.adv-opt-will-join { - border: rgba(69, 34, 126, 0.82) 2px solid; -} - -.adv-opt-time-out { - border: #ba3c12 2px solid; -} - -.adv-opt-not-enough-balance { - border: grey 2px solid; -} - -.adv-opt-not-logged { - border: grey 2px solid; -} - -.advanced-options > div, .advanced-options > input { - display: inline-block; - height: 2rem; -} - -@media only screen and (max-width: 40em) { - .advanced-options { - height: 8rem; - } -} - -/* Game Button */ - -.game-button { - text-align: center; - display: block; - min-width: 100%; - color: white; - position: relative; - cursor: pointer; - padding: 7px; - font-weight: 500; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} - -.game-button:hover { - font-weight: 300; -} - -.login { - margin-left: 150px; -} - -.split-button { - display: block; - height: 100%; - width: 2.75rem; - position: absolute; - right: 0; - top: 0; - border-left: solid 1px; - border-left-color: rgba(255,255,255,0.5); - font-size: 30px; - font-weight: 900; -} - -.playing { - background-color: #368a55; -} - -.will-join { - background-color: rgba(69, 34, 126, 0.82); -} - -.time-out { - background-color: #ba3c12; -} - -.not-enough-money { - background-color: grey; -} - -.not-logged { - background-color: grey; -} - - -/* Advanced options button */ - -.advanced-options { - height: 4rem; - font-size: 16px; - text-align: center; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; - margin-right: 2.75rem; -} - -.adv-opt-playing { - border: #368a55 2px solid; -} - -.adv-opt-place-bet { - border: #ff8100 2px solid; -} - -.adv-opt-will-join { - border: rgba(69, 34, 126, 0.82) 2px solid; -} - -.adv-opt-time-out { - border: #ba3c12 2px solid; -} - -.adv-opt-not-enough-balance { - border: grey 2px solid; -} - -.adv-opt-not-logged { - border: grey 2px solid; -} - -.advanced-options > div, .advanced-options > input { - display: inline-block; - height: 2rem; -} - -@media only screen and (max-width: 40em) { - .advanced-options { - height: 8rem; - } -} - - -/* Auto Cash Out */ - -.tabs { - margin-top: -33px; -} - -.autocash-selector-container { - float: right; -} - -.autocash-selector { - display: inline-block; - text-align: right; -} - -.selector-qty { - margin-right: .5rem; -} - -.autocash-selector > span, .autocash-selector > a{ - line-height: 2rem; -} - -.cash-selector-btn { - cursor: pointer; - margin-right: 0.5rem; -} - -.selector-qty { - -} - -.selector-input { - width: 10rem; -} - -.selector-slider { - vertical-align: middle; - width: 10rem; -} - -.btn-disabled { - opacity: 0.5; -} - -.login { - margin-top: 50px; - width: 320px; -} -.register { - float:right; - margin-top: 6px; - font-size: 15px; -} -@media only screen and (max-width: 40em) { - .selector-input { - width: 5rem; - } - - .selector-slider { - width: 5rem; - } -} - - -/* Auto play */ - -@media only screen and (max-width: 40em) { - .autoplay { - float: none; - display: block !important; - text-align: right; - } -} - -/* Users playing + Users Summary */ - -.players { - height: 100%; -} - -.users-playing-container, .users-cashed-container { - text-align: center; - border: 1px solid rgba(94, 94, 94, 0.2); - margin-top: 1rem; -} - -.users-playing, .users-summary { /* table */ - width: 100%; - font-weight: 500; - table-layout: fixed; -} - -.users-playing thead, .users-summary thead { - border-bottom: 1px solid rgba(94, 94, 94, 0.2); - -} - -.users-playing thead tr, .users-summary thead tr { - position: relative; - display: block; -} - -.users-playing tbody, .users-summary tbody { - display: block; - overflow: auto; - height: 15rem; -} - -.users-playing tbody tr, .users-summary tbody tr { - width: 100%; - display: table-row; -} - -.users-playing td, .users-playing th, .users-summary td, .users-summary th{ - font-size: 1rem; - height: 1rem; - overflow: hidden; - text-align: left; - font-weight: 400; - font-size: 0.8rem; -} - -.users-summary tr:nth-of-type(even), .users-playing tr:nth-of-type(even) { - background: #f9f9f9; -} - - -/* Users playing */ -.users-playing td:nth-child(1), .users-playing th:nth-child(1) { width: 90px; padding-left: 6px; } -.users-playing td:nth-child(2), .users-playing th:nth-child(2) { width: 70px; } -.users-playing td:nth-child(3), .users-playing th:nth-child(3) { width: 80px; } -.users-playing td:nth-child(4), .users-playing th:nth-child(4) { min-width: 90px; } -.users-playing td:nth-child(5), .users-playing th:nth-child(5) { width: 80px; } - -.user-won td { - color: #408609; -} - -.user-lost td { - color: #e03e3e; -} - -/* Users Summary */ - - -.users-summary td:nth-child(1), .users-summary th:nth-child(1) { width: 90px; padding-left: 6px;} -.users-summary td:nth-child(2), .users-summary th:nth-child(2) { width: 70px; } -.users-summary td:nth-child(3), .users-summary th:nth-child(3) { width: 80px; } -.users-summary td:nth-child(4), .users-summary th:nth-child(4) { min-width: 90px; } -.users-summary td:nth-child(5), .users-summary th:nth-child(5) { width: 80px; } - -.user-playing td { - color: #ff8100; -} - -.user-cashed td { - color: #408609; -} - -/* Games log */ - -.games-log{ /* table */ - height: 100%; - width: 100%; - text-align: center; - border: 1px solid rgba(94, 94, 94, 0.2); -} - -.games-log th { - font-weight: 400; - font-size: 0.8rem; - text-align: left; -} - -.games-log thead { - border: 1px solid rgba(94, 94, 94, 0.2); -} - -.games-log tr:nth-of-type(even) { - background: #f9f9f9; -} - -.games-log tr td { - font-size: 0.8rem; - text-align: left; -} - -.games-log td:nth-child(1), .games-log th:nth-child(1) { - padding-left: 6px; - max-width: 3rem; -} - -.games-log tbody tr { - cursor: pointer; -} - -.games-log tbody tr:hover { - opacity: 0.4; -} - -.game-details { - font-size: 11px; - color: #408609; - letter-spacing: 0.03em; - font-weight: 200; -} - -.scroll { - overflow-y: scroll; -} - - -/* Tabs */ - -.log-chat-tabs-container { - position: relative; - margin-top: 5px; - background-color: white; - color: #32526E; -} - -.chat-log-tabs { - list-style: none; - padding:0; - margin:0; - font-size: 17px; -} - -.chat-log-tabs li { - display: inline; - border: 1px solid rgba(0, 0, 0, 0.1); - border-radius: 3px; - margin-right: 1px; - padding: 3px 0; -} - -.chat-log-tabs a { - padding: 0 1em; - font-weight: 200; -} - -.chat-log-tabs a:hover{ - color: rgba(243, 150, 47, 0.8); -} - -.chat-log-tabs-hidden { - position: fixed; - bottom: 0; - right: 0; -} - -.chat-log-tabs-hidden li { - display: inline-block; - margin-right: 1rem; -} - -.tab-active { - font-weight: 700; - -} - -.chat-log-tab a{ - color: black; -} - -.tab-active a { - color: rgba(243, 150, 47,1); - font-weight: 800; -} - -/* FOUNDATION MEDIA QUERIES */ - -@media only screen { } /* Define mobile styles */ - -@media only screen and (max-width: 40em) { } /* max-width 640px, mobile-only styles, use when QAing mobile issues */ - - -@media only screen and (min-width: 40.063em) { } /* min-width 641px, medium screens */ - -@media only screen and (min-width: 40.063em) and (max-width: 64em) { } /* min-width 641px and max-width 1024px, use when QAing tablet-only issues */ - - -@media only screen and (min-width: 64.063em) { } /* min-width 1025px, large screens */ - -@media only screen and (min-width: 64.063em) and (max-width: 90em) { } /* min-width 1025px and max-width 1440px, use when QAing large screen-only issues */ - - -@media only screen and (min-width: 90.063em) { } /* min-width 1441px, xlarge screens */ - -@media only screen and (min-width: 90.063em) and (max-width: 120em) { } /* min-width 1441px and max-width 1920px, use when QAing xlarge screen-only issues */ - -@media only screen and (min-width: 120.063em) { } /* min-width 1921px, xxlarge screens */ \ No newline at end of file diff --git a/client/css/header.css b/client/css/header.css deleted file mode 100644 index 48a24ca..0000000 --- a/client/css/header.css +++ /dev/null @@ -1,121 +0,0 @@ -/* Top bar - ========================================================================== */ - -/* Foundation Reset */ -.nav-top-bar h1{ - line-height: inherit !important; - margin: 0; - padding: 0; -} - -.nav-top-bar { - text-align: center; - border-bottom: 1px solid #ddd; - height: 45px; - line-height: 45px; -} - -.nav-top-bar div { - display: inline-block; - vertical-align: middle; -} - -.title { - float: left; -} - -.title h1, .title img { - display: inline-block; - vertical-align: middle; -} - -.title h1, .title a { - color: black; - font-size: 25px; - font-family: rbn; - font-weight: 700; - text-shadow: 0px 2px 2px rgba(5,2,0,0.4); - text-decoration: none; -} - -.table-title { - font-size: 25px; - font-family: rbn; -} - -.user-login { - float: right; -} - -.user-login a { - margin-left: 1rem; -} - -.balance-bits { - color: black; - margin-right: 1rem; - font-size: 1rem; -} - -.username { - margin-right: 1rem; - font-size: 0.8125rem; -} - -/* Small screens */ -@media only screen and (max-width: 40em) { - .table-title { - display: none !important; - } -} - -/* Messages for errors/success */ -.success { - position: relative; - background-color: #7cba00; - color: #f5f5f5; - font-size: 12px; - padding: 5px 15px; - margin: 0px 20%; - text-align: center; - line-height: 1; -} - -.success a { - color: #fff; -} - -.warning { - position: relative; - background-color: #ba3c12; - color: #f5f5f5; - font-size: 12px; - padding: 5px 15px; - margin: 0px 20%; - text-align: center; - line-height: 1; -} - - -/* FOUNDATION MEDIA QUERIES */ - -@media only screen { } /* Define mobile styles */ - -@media only screen and (max-width: 40em) { } /* max-width 640px, mobile-only styles, use when QAing mobile issues */ - - -@media only screen and (min-width: 40.063em) { } /* min-width 641px, medium screens */ - -@media only screen and (min-width: 40.063em) and (max-width: 64em) { } /* min-width 641px and max-width 1024px, use when QAing tablet-only issues */ - - -@media only screen and (min-width: 64.063em) { } /* min-width 1025px, large screens */ - -@media only screen and (min-width: 64.063em) and (max-width: 90em) { } /* min-width 1025px and max-width 1440px, use when QAing large screen-only issues */ - - -@media only screen and (min-width: 90.063em) { } /* min-width 1441px, xlarge screens */ - -@media only screen and (min-width: 90.063em) and (max-width: 120em) { } /* min-width 1441px and max-width 1920px, use when QAing xlarge screen-only issues */ - -@media only screen and (min-width: 120.063em) { } /* min-width 1921px, xxlarge screens */ \ No newline at end of file diff --git a/client/css/normalize.css b/client/css/normalize.css deleted file mode 100644 index 08f8950..0000000 --- a/client/css/normalize.css +++ /dev/null @@ -1,425 +0,0 @@ -/*! normalize.css v3.0.1 | MIT License | git.io/normalize */ - -/** - * 1. Set default font family to sans-serif. - * 2. Prevent iOS text size adjust after orientation change, without disabling - * user zoom. - */ - -html { - font-family: sans-serif; /* 1 */ - -ms-text-size-adjust: 100%; /* 2 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/** - * Remove default margin. - */ - -body { - margin: 0; -} - -/* HTML5 display definitions - ========================================================================== */ - -/** - * Correct `block` display not defined for any HTML5 element in IE 8/9. - * Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. - * Correct `block` display not defined for `main` in IE 11. - */ - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -nav, -section, -summary { - display: block; -} - -/** - * 1. Correct `inline-block` display not defined in IE 8/9. - * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. - */ - -audio, -canvas, -progress, -video { - display: inline-block; /* 1 */ - vertical-align: baseline; /* 2 */ -} - -/** - * Prevent modern browsers from displaying `audio` without controls. - * Remove excess height in iOS 5 devices. - */ - -audio:not([controls]) { - display: none; - height: 0; -} - -/** - * Address `[hidden]` styling not present in IE 8/9/10. - * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. - */ - -[hidden], -template { - display: none; -} - -/* Links - ========================================================================== */ - -/** - * Remove the gray background color from active links in IE 10. - */ - -a { - background: transparent; -} - -/** - * Improve readability when focused and also mouse hovered in all browsers. - */ - -a:active, -a:hover { - outline: 0; -} - -/* Text-level semantics - ========================================================================== */ - -/** - * Address styling not present in IE 8/9/10/11, Safari, and Chrome. - */ - -abbr[title] { - border-bottom: 1px dotted; -} - -/** - * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. - */ - -b, -strong { - font-weight: bold; -} - -/** - * Address styling not present in Safari and Chrome. - */ - -dfn { - font-style: italic; -} - -/** - * Address variable `h1` font-size and margin within `section` and `article` - * contexts in Firefox 4+, Safari, and Chrome. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/** - * Address styling not present in IE 8/9. - */ - -mark { - background: #ff0; - color: #000; -} - -/** - * Address inconsistent and variable font size in all browsers. - */ - -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` affecting `line-height` in all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -/* Embedded content - ========================================================================== */ - -/** - * Remove border when inside `a` element in IE 8/9/10. - */ - -img { - border: 0; -} - -/** - * Correct overflow not hidden in IE 9/10/11. - */ - -svg:not(:root) { - overflow: hidden; -} - -/* Grouping content - ========================================================================== */ - -/** - * Address margin not present in IE 8/9 and Safari. - */ - -figure { - margin: 1em 40px; -} - -/** - * Address differences between Firefox and other browsers. - */ - -hr { - -moz-box-sizing: content-box; - box-sizing: content-box; - height: 0; -} - -/** - * Contain overflow in all browsers. - */ - -pre { - overflow: auto; -} - -/** - * Address odd `em`-unit font size rendering in all browsers. - */ - -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} - -/* Forms - ========================================================================== */ - -/** - * Known limitation: by default, Chrome and Safari on OS X allow very limited - * styling of `select`, unless a `border` property is set. - */ - -/** - * 1. Correct color not being inherited. - * Known issue: affects color of disabled elements. - * 2. Correct font properties not being inherited. - * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. - */ - -button, -input, -optgroup, -select, -textarea { - color: inherit; /* 1 */ - font: inherit; /* 2 */ - margin: 0; /* 3 */ -} - -/** - * Address `overflow` set to `hidden` in IE 8/9/10/11. - */ - -button { - overflow: visible; -} - -/** - * Address inconsistent `text-transform` inheritance for `button` and `select`. - * All other form control elements do not inherit `text-transform` values. - * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. - * Correct `select` style inheritance in Firefox. - */ - -button, -select { - text-transform: none; -} - -/** - * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` - * and `video` controls. - * 2. Correct inability to style clickable `input` types in iOS. - * 3. Improve usability and consistency of cursor style between image-type - * `input` and others. - */ - -button, -html input[type="button"], /* 1 */ -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; /* 2 */ - cursor: pointer; /* 3 */ -} - -/** - * Re-set default cursor for disabled elements. - */ - -button[disabled], -html input[disabled] { - cursor: default; -} - -/** - * Remove inner padding and border in Firefox 4+. - */ - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -/** - * Address Firefox 4+ setting `line-height` on `input` using `!important` in - * the UA stylesheet. - */ - -input { - line-height: normal; -} - -/** - * It's recommended that you don't attempt to style these elements. - * Firefox's implementation doesn't respect box-sizing, padding, or width. - * - * 1. Address box sizing set to `content-box` in IE 8/9/10. - * 2. Remove excess padding in IE 8/9/10. - */ - -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Fix the cursor style for Chrome's increment/decrement buttons. For certain - * `font-size` values of the `input`, it causes the cursor style of the - * decrement button to change from `default` to `text`. - */ - -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Address `appearance` set to `searchfield` in Safari and Chrome. - * 2. Address `box-sizing` set to `border-box` in Safari and Chrome - * (include `-moz` to future-proof). - */ - -input[type="search"] { - -webkit-appearance: textfield; /* 1 */ - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; /* 2 */ - box-sizing: content-box; -} - -/** - * Remove inner padding and search cancel button in Safari and Chrome on OS X. - * Safari (but not Chrome) clips the cancel button when the search input has - * padding (and `textfield` appearance). - */ - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * Define consistent border, margin, and padding. - */ - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -/** - * 1. Correct `color` not being inherited in IE 8/9/10/11. - * 2. Remove padding so people aren't caught out if they zero out fieldsets. - */ - -legend { - border: 0; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Remove default vertical scrollbar in IE 8/9/10/11. - */ - -textarea { - overflow: auto; -} - -/** - * Don't inherit the `font-weight` (applied by a rule above). - * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. - */ - -optgroup { - font-weight: bold; -} - -/* Tables - ========================================================================== */ - -/** - * Remove most spacing between table cells. - */ - -table { - border-collapse: collapse; - border-spacing: 0; -} - -td, -th { - padding: 0; -} diff --git a/client/css/reset.css b/client/css/reset.css deleted file mode 100644 index c5cd707..0000000 --- a/client/css/reset.css +++ /dev/null @@ -1 +0,0 @@ -html, body, div, span, applet, object, iframe,h1, h2, h3, h4, h5, h6, p, blockquote, pre,a, abbr, acronym, address, big, cite, code,del, dfn, em, img, ins, kbd, q, s, samp,small, strike, strong, sub, sup, tt, var,b, u, i, center,dl, dt, dd, ol, ul, li,fieldset, form, label, legend,table, caption, tbody, tfoot, thead, tr, th, td,article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary,time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline;}/* HTML5 display-role reset for older browsers */article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block;}body { line-height: 1;}ol, ul { list-style: none;}blockquote, q { quotes: none;}blockquote:before, blockquote:after,q:before, q:after { content: ''; content: none;}table { border-collapse: collapse; border-spacing: 0;} \ No newline at end of file diff --git a/client/css/site.css b/client/css/site.css deleted file mode 100644 index 9fd75e8..0000000 --- a/client/css/site.css +++ /dev/null @@ -1,133 +0,0 @@ -/* - green: 89B151 - yellow: FDD262 - beige: C7B19C - gray: C3CED0 -*/ -@font-face { - font-family: tale; - src: url('fonts/tale.otf') -} - -@font-face { - font-family: rbn; - src: url('fonts/RBN.otf') -} -* { - margin: 0; -} -html, body { - height: 100%; -} -body { - font-size: 20px ; - letter-spacing: 1px; -} - -#slider { - margin-top: 50px; - text-align: center; -} -.content{ - min-height: 100%; - margin-bottom: -100px; -} -.content:after { - content: ""; - display: block; -} -footer{ - height: 100px; -} - -.tihidRibbon7{ - position: relative ; - margin-top: 10px; - font-size: 20px !important; - font-family: tale; - background: #FDD262; - text-align: center; - padding: 16px 90px; -} - -.tihidStrong { - color: #000; -} -p { - font-size: 18px; -} -.play { - float: right; -} -.content { - margin-top: 30px; -} -#error, #fail{ - color: red; -} -.tihidRibbon7:before, .tihidRibbon7:after{ - content: ""; - position:absolute; - display: block; - bottom:-16px; - border: 24px solid rgba(77, 81, 23, 0.54); - z-index:-1; - line-height:0; -} - -.tihidRibbon7:before{ - left:-32px; - border-right-width:24px; - border-left-color:#ffffff; -} - -.tihidRibbon7:after{ - right:-32px; - border-left-width:24px; - border-right-color:#ffffff; -} - -.tihidRibbon7 .tihidStrong:before, .tihidRibbon7 .tihidStrong:after{ - content: ""; - position: absolute; - display: block; - line-height:0; -} - -.tihidRibbon7 .tihidStrong:before{ - left:0; - bottom: -16px; - border-top:16px solid #1c2713; - border-left:16px solid transparent; -} - -.tihidRibbon7 .tihidStrong:after{ - right:0; - bottom: -16px; - border-top:16px solid #1c2713; - border-right:16px solid transparent; -} -.tihidRibbon7 a, .menu a{ - color: #000 -} - -.menu .active { - -} - -.menu a:hover, .menu .active { - color: #9EA081; -} - -.title-ribbon { - position: absolute; - margin-left: 88px; -} - -.title { - text-align: center; -} - -p{ - font-size: 16px; -} \ No newline at end of file diff --git a/client/fonts/glyphicons-halflings-regular.eot b/client/fonts/glyphicons-halflings-regular.eot deleted file mode 100644 index 4a4ca86..0000000 Binary files a/client/fonts/glyphicons-halflings-regular.eot and /dev/null differ diff --git a/client/fonts/glyphicons-halflings-regular.svg b/client/fonts/glyphicons-halflings-regular.svg deleted file mode 100644 index e3e2dc7..0000000 --- a/client/fonts/glyphicons-halflings-regular.svg +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/client/fonts/glyphicons-halflings-regular.ttf b/client/fonts/glyphicons-halflings-regular.ttf deleted file mode 100644 index 67fa00b..0000000 Binary files a/client/fonts/glyphicons-halflings-regular.ttf and /dev/null differ diff --git a/client/fonts/glyphicons-halflings-regular.woff b/client/fonts/glyphicons-halflings-regular.woff deleted file mode 100644 index 8c54182..0000000 Binary files a/client/fonts/glyphicons-halflings-regular.woff and /dev/null differ diff --git a/client/img/.gitkeep b/client/img/.gitkeep deleted file mode 100644 index 8b13789..0000000 --- a/client/img/.gitkeep +++ /dev/null @@ -1 +0,0 @@ - diff --git a/client/img/beat-odds.png b/client/img/beat-odds.png deleted file mode 100644 index 61df445..0000000 Binary files a/client/img/beat-odds.png and /dev/null differ diff --git a/client/img/bitcoins.jpg b/client/img/bitcoins.jpg deleted file mode 100644 index 9184dc2..0000000 Binary files a/client/img/bitcoins.jpg and /dev/null differ diff --git a/client/img/bitcoins2.jpg b/client/img/bitcoins2.jpg deleted file mode 100644 index a044278..0000000 Binary files a/client/img/bitcoins2.jpg and /dev/null differ diff --git a/client/img/bitcoins22.jpg b/client/img/bitcoins22.jpg deleted file mode 100644 index 081abd0..0000000 Binary files a/client/img/bitcoins22.jpg and /dev/null differ diff --git a/client/img/bullshit.png b/client/img/bullshit.png deleted file mode 100644 index b97e677..0000000 Binary files a/client/img/bullshit.png and /dev/null differ diff --git a/client/img/cash-out.png b/client/img/cash-out.png deleted file mode 100644 index b66a26b..0000000 Binary files a/client/img/cash-out.png and /dev/null differ diff --git a/client/img/casino.png b/client/img/casino.png deleted file mode 100644 index 5704b51..0000000 Binary files a/client/img/casino.png and /dev/null differ diff --git a/client/img/controls-back.png b/client/img/controls-back.png deleted file mode 100644 index 1f6b0a2..0000000 Binary files a/client/img/controls-back.png and /dev/null differ diff --git a/client/img/dice.jpg b/client/img/dice.jpg deleted file mode 100644 index a4f08b7..0000000 Binary files a/client/img/dice.jpg and /dev/null differ diff --git a/client/img/favicon.ico b/client/img/favicon.ico deleted file mode 100644 index 5e7913b..0000000 Binary files a/client/img/favicon.ico and /dev/null differ diff --git a/client/img/gamble.png b/client/img/gamble.png deleted file mode 100644 index d41c527..0000000 Binary files a/client/img/gamble.png and /dev/null differ diff --git a/client/img/html5.png b/client/img/html5.png deleted file mode 100644 index 8b35e2a..0000000 Binary files a/client/img/html5.png and /dev/null differ diff --git a/client/img/icons/bitcoin-ic.png b/client/img/icons/bitcoin-ic.png deleted file mode 100644 index 7fbc6ac..0000000 Binary files a/client/img/icons/bitcoin-ic.png and /dev/null differ diff --git a/client/img/icons/bitcoin.png b/client/img/icons/bitcoin.png deleted file mode 100644 index 73f6e17..0000000 Binary files a/client/img/icons/bitcoin.png and /dev/null differ diff --git a/client/img/icons/chart.png b/client/img/icons/chart.png deleted file mode 100755 index 2c8c0c5..0000000 Binary files a/client/img/icons/chart.png and /dev/null differ diff --git a/client/img/icons/dart.png b/client/img/icons/dart.png deleted file mode 100644 index fcbeedd..0000000 Binary files a/client/img/icons/dart.png and /dev/null differ diff --git a/client/img/icons/funny.png b/client/img/icons/funny.png deleted file mode 100755 index e2d39e6..0000000 Binary files a/client/img/icons/funny.png and /dev/null differ diff --git a/client/img/icons/multiplayer.png b/client/img/icons/multiplayer.png deleted file mode 100755 index 6a588fe..0000000 Binary files a/client/img/icons/multiplayer.png and /dev/null differ diff --git a/client/img/icons/secure.png b/client/img/icons/secure.png deleted file mode 100755 index 7f162e4..0000000 Binary files a/client/img/icons/secure.png and /dev/null differ diff --git a/client/img/icons/serious.png b/client/img/icons/serious.png deleted file mode 100644 index a3059f4..0000000 Binary files a/client/img/icons/serious.png and /dev/null differ diff --git a/client/img/icons/silver.png b/client/img/icons/silver.png deleted file mode 100644 index 8ad601c..0000000 Binary files a/client/img/icons/silver.png and /dev/null differ diff --git a/client/img/kale.jpg b/client/img/kale.jpg deleted file mode 100644 index 742593d..0000000 Binary files a/client/img/kale.jpg and /dev/null differ diff --git a/client/img/loading.gif b/client/img/loading.gif deleted file mode 100644 index 780423b..0000000 Binary files a/client/img/loading.gif and /dev/null differ diff --git a/client/img/logo.png b/client/img/logo.png deleted file mode 100644 index f89c392..0000000 Binary files a/client/img/logo.png and /dev/null differ diff --git a/client/img/manage.png b/client/img/manage.png deleted file mode 100644 index e15e9df..0000000 Binary files a/client/img/manage.png and /dev/null differ diff --git a/client/img/medal.png b/client/img/medal.png deleted file mode 100644 index ddc3ae5..0000000 Binary files a/client/img/medal.png and /dev/null differ diff --git a/client/img/step1.png b/client/img/step1.png deleted file mode 100644 index 5ad0c70..0000000 Binary files a/client/img/step1.png and /dev/null differ diff --git a/client/img/step2.png b/client/img/step2.png deleted file mode 100644 index a551e53..0000000 Binary files a/client/img/step2.png and /dev/null differ diff --git a/client/img/step3.png b/client/img/step3.png deleted file mode 100644 index 7a35ba5..0000000 Binary files a/client/img/step3.png and /dev/null differ diff --git a/client/img/team/ericwspringer.png b/client/img/team/ericwspringer.png deleted file mode 100644 index a18227a..0000000 Binary files a/client/img/team/ericwspringer.png and /dev/null differ diff --git a/client/img/team/omarloren.jpeg b/client/img/team/omarloren.jpeg deleted file mode 100644 index ee5adff..0000000 Binary files a/client/img/team/omarloren.jpeg and /dev/null differ diff --git a/client/img/team/psypersky.jpeg b/client/img/team/psypersky.jpeg deleted file mode 100644 index b2e400b..0000000 Binary files a/client/img/team/psypersky.jpeg and /dev/null differ diff --git a/client/img/wild.png b/client/img/wild.png deleted file mode 100644 index 0f6c9da..0000000 Binary files a/client/img/wild.png and /dev/null differ diff --git a/client/img/withdraw.png b/client/img/withdraw.png deleted file mode 100644 index 999b0b2..0000000 Binary files a/client/img/withdraw.png and /dev/null differ diff --git a/client/lib/font-awesome/css/font-awesome.css b/client/lib/font-awesome/css/font-awesome.css deleted file mode 100644 index eb4127b..0000000 --- a/client/lib/font-awesome/css/font-awesome.css +++ /dev/null @@ -1,1566 +0,0 @@ -/*! - * Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ -/* FONT PATH - * -------------------------- */ -@font-face { - font-family: 'FontAwesome'; - src: url('../fonts/fontawesome-webfont.eot?v=4.1.0'); - src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.1.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.1.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.1.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.1.0#fontawesomeregular') format('svg'); - font-weight: normal; - font-style: normal; -} -.fa { - display: inline-block; - font-family: FontAwesome; - font-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -/* makes the font 33% larger relative to the icon container */ -.fa-lg { - font-size: 1.33333333em; - line-height: 0.75em; - vertical-align: -15%; -} -.fa-2x { - font-size: 2em; -} -.fa-3x { - font-size: 3em; -} -.fa-4x { - font-size: 4em; -} -.fa-5x { - font-size: 5em; -} -.fa-fw { - width: 1.28571429em; - text-align: center; -} -.fa-ul { - padding-left: 0; - margin-left: 2.14285714em; - list-style-type: none; -} -.fa-ul > li { - position: relative; -} -.fa-li { - position: absolute; - left: -2.14285714em; - width: 2.14285714em; - top: 0.14285714em; - text-align: center; -} -.fa-li.fa-lg { - left: -1.85714286em; -} -.fa-border { - padding: .2em .25em .15em; - border: solid 0.08em #eeeeee; - border-radius: .1em; -} -.pull-right { - float: right; -} -.pull-left { - float: left; -} -.fa.pull-left { - margin-right: .3em; -} -.fa.pull-right { - margin-left: .3em; -} -.fa-spin { - -webkit-animation: spin 2s infinite linear; - -moz-animation: spin 2s infinite linear; - -o-animation: spin 2s infinite linear; - animation: spin 2s infinite linear; -} -@-moz-keyframes spin { - 0% { - -moz-transform: rotate(0deg); - } - 100% { - -moz-transform: rotate(359deg); - } -} -@-webkit-keyframes spin { - 0% { - -webkit-transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - } -} -@-o-keyframes spin { - 0% { - -o-transform: rotate(0deg); - } - 100% { - -o-transform: rotate(359deg); - } -} -@keyframes spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -.fa-rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); - -webkit-transform: rotate(90deg); - -moz-transform: rotate(90deg); - -ms-transform: rotate(90deg); - -o-transform: rotate(90deg); - transform: rotate(90deg); -} -.fa-rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform: rotate(180deg); - -moz-transform: rotate(180deg); - -ms-transform: rotate(180deg); - -o-transform: rotate(180deg); - transform: rotate(180deg); -} -.fa-rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - -webkit-transform: rotate(270deg); - -moz-transform: rotate(270deg); - -ms-transform: rotate(270deg); - -o-transform: rotate(270deg); - transform: rotate(270deg); -} -.fa-flip-horizontal { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); - -webkit-transform: scale(-1, 1); - -moz-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - -o-transform: scale(-1, 1); - transform: scale(-1, 1); -} -.fa-flip-vertical { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); - -webkit-transform: scale(1, -1); - -moz-transform: scale(1, -1); - -ms-transform: scale(1, -1); - -o-transform: scale(1, -1); - transform: scale(1, -1); -} -.fa-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.fa-stack-1x, -.fa-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.fa-stack-1x { - line-height: inherit; -} -.fa-stack-2x { - font-size: 2em; -} -.fa-inverse { - color: #ffffff; -} -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ -.fa-glass:before { - content: "\f000"; -} -.fa-music:before { - content: "\f001"; -} -.fa-search:before { - content: "\f002"; -} -.fa-envelope-o:before { - content: "\f003"; -} -.fa-heart:before { - content: "\f004"; -} -.fa-star:before { - content: "\f005"; -} -.fa-star-o:before { - content: "\f006"; -} -.fa-user:before { - content: "\f007"; -} -.fa-film:before { - content: "\f008"; -} -.fa-th-large:before { - content: "\f009"; -} -.fa-th:before { - content: "\f00a"; -} -.fa-th-list:before { - content: "\f00b"; -} -.fa-check:before { - content: "\f00c"; -} -.fa-times:before { - content: "\f00d"; -} -.fa-search-plus:before { - content: "\f00e"; -} -.fa-search-minus:before { - content: "\f010"; -} -.fa-power-off:before { - content: "\f011"; -} -.fa-signal:before { - content: "\f012"; -} -.fa-gear:before, -.fa-cog:before { - content: "\f013"; -} -.fa-trash-o:before { - content: "\f014"; -} -.fa-home:before { - content: "\f015"; -} -.fa-file-o:before { - content: "\f016"; -} -.fa-clock-o:before { - content: "\f017"; -} -.fa-road:before { - content: "\f018"; -} -.fa-download:before { - content: "\f019"; -} -.fa-arrow-circle-o-down:before { - content: "\f01a"; -} -.fa-arrow-circle-o-up:before { - content: "\f01b"; -} -.fa-inbox:before { - content: "\f01c"; -} -.fa-play-circle-o:before { - content: "\f01d"; -} -.fa-rotate-right:before, -.fa-repeat:before { - content: "\f01e"; -} -.fa-refresh:before { - content: "\f021"; -} -.fa-list-alt:before { - content: "\f022"; -} -.fa-lock:before { - content: "\f023"; -} -.fa-flag:before { - content: "\f024"; -} -.fa-headphones:before { - content: "\f025"; -} -.fa-volume-off:before { - content: "\f026"; -} -.fa-volume-down:before { - content: "\f027"; -} -.fa-volume-up:before { - content: "\f028"; -} -.fa-qrcode:before { - content: "\f029"; -} -.fa-barcode:before { - content: "\f02a"; -} -.fa-tag:before { - content: "\f02b"; -} -.fa-tags:before { - content: "\f02c"; -} -.fa-book:before { - content: "\f02d"; -} -.fa-bookmark:before { - content: "\f02e"; -} -.fa-print:before { - content: "\f02f"; -} -.fa-camera:before { - content: "\f030"; -} -.fa-font:before { - content: "\f031"; -} -.fa-bold:before { - content: "\f032"; -} -.fa-italic:before { - content: "\f033"; -} -.fa-text-height:before { - content: "\f034"; -} -.fa-text-width:before { - content: "\f035"; -} -.fa-align-left:before { - content: "\f036"; -} -.fa-align-center:before { - content: "\f037"; -} -.fa-align-right:before { - content: "\f038"; -} -.fa-align-justify:before { - content: "\f039"; -} -.fa-list:before { - content: "\f03a"; -} -.fa-dedent:before, -.fa-outdent:before { - content: "\f03b"; -} -.fa-indent:before { - content: "\f03c"; -} -.fa-video-camera:before { - content: "\f03d"; -} -.fa-photo:before, -.fa-image:before, -.fa-picture-o:before { - content: "\f03e"; -} -.fa-pencil:before { - content: "\f040"; -} -.fa-map-marker:before { - content: "\f041"; -} -.fa-adjust:before { - content: "\f042"; -} -.fa-tint:before { - content: "\f043"; -} -.fa-edit:before, -.fa-pencil-square-o:before { - content: "\f044"; -} -.fa-share-square-o:before { - content: "\f045"; -} -.fa-check-square-o:before { - content: "\f046"; -} -.fa-arrows:before { - content: "\f047"; -} -.fa-step-backward:before { - content: "\f048"; -} -.fa-fast-backward:before { - content: "\f049"; -} -.fa-backward:before { - content: "\f04a"; -} -.fa-play:before { - content: "\f04b"; -} -.fa-pause:before { - content: "\f04c"; -} -.fa-stop:before { - content: "\f04d"; -} -.fa-forward:before { - content: "\f04e"; -} -.fa-fast-forward:before { - content: "\f050"; -} -.fa-step-forward:before { - content: "\f051"; -} -.fa-eject:before { - content: "\f052"; -} -.fa-chevron-left:before { - content: "\f053"; -} -.fa-chevron-right:before { - content: "\f054"; -} -.fa-plus-circle:before { - content: "\f055"; -} -.fa-minus-circle:before { - content: "\f056"; -} -.fa-times-circle:before { - content: "\f057"; -} -.fa-check-circle:before { - content: "\f058"; -} -.fa-question-circle:before { - content: "\f059"; -} -.fa-info-circle:before { - content: "\f05a"; -} -.fa-crosshairs:before { - content: "\f05b"; -} -.fa-times-circle-o:before { - content: "\f05c"; -} -.fa-check-circle-o:before { - content: "\f05d"; -} -.fa-ban:before { - content: "\f05e"; -} -.fa-arrow-left:before { - content: "\f060"; -} -.fa-arrow-right:before { - content: "\f061"; -} -.fa-arrow-up:before { - content: "\f062"; -} -.fa-arrow-down:before { - content: "\f063"; -} -.fa-mail-forward:before, -.fa-share:before { - content: "\f064"; -} -.fa-expand:before { - content: "\f065"; -} -.fa-compress:before { - content: "\f066"; -} -.fa-plus:before { - content: "\f067"; -} -.fa-minus:before { - content: "\f068"; -} -.fa-asterisk:before { - content: "\f069"; -} -.fa-exclamation-circle:before { - content: "\f06a"; -} -.fa-gift:before { - content: "\f06b"; -} -.fa-leaf:before { - content: "\f06c"; -} -.fa-fire:before { - content: "\f06d"; -} -.fa-eye:before { - content: "\f06e"; -} -.fa-eye-slash:before { - content: "\f070"; -} -.fa-warning:before, -.fa-exclamation-triangle:before { - content: "\f071"; -} -.fa-plane:before { - content: "\f072"; -} -.fa-calendar:before { - content: "\f073"; -} -.fa-random:before { - content: "\f074"; -} -.fa-comment:before { - content: "\f075"; -} -.fa-magnet:before { - content: "\f076"; -} -.fa-chevron-up:before { - content: "\f077"; -} -.fa-chevron-down:before { - content: "\f078"; -} -.fa-retweet:before { - content: "\f079"; -} -.fa-shopping-cart:before { - content: "\f07a"; -} -.fa-folder:before { - content: "\f07b"; -} -.fa-folder-open:before { - content: "\f07c"; -} -.fa-arrows-v:before { - content: "\f07d"; -} -.fa-arrows-h:before { - content: "\f07e"; -} -.fa-bar-chart-o:before { - content: "\f080"; -} -.fa-twitter-square:before { - content: "\f081"; -} -.fa-facebook-square:before { - content: "\f082"; -} -.fa-camera-retro:before { - content: "\f083"; -} -.fa-key:before { - content: "\f084"; -} -.fa-gears:before, -.fa-cogs:before { - content: "\f085"; -} -.fa-comments:before { - content: "\f086"; -} -.fa-thumbs-o-up:before { - content: "\f087"; -} -.fa-thumbs-o-down:before { - content: "\f088"; -} -.fa-star-half:before { - content: "\f089"; -} -.fa-heart-o:before { - content: "\f08a"; -} -.fa-sign-out:before { - content: "\f08b"; -} -.fa-linkedin-square:before { - content: "\f08c"; -} -.fa-thumb-tack:before { - content: "\f08d"; -} -.fa-external-link:before { - content: "\f08e"; -} -.fa-sign-in:before { - content: "\f090"; -} -.fa-trophy:before { - content: "\f091"; -} -.fa-github-square:before { - content: "\f092"; -} -.fa-upload:before { - content: "\f093"; -} -.fa-lemon-o:before { - content: "\f094"; -} -.fa-phone:before { - content: "\f095"; -} -.fa-square-o:before { - content: "\f096"; -} -.fa-bookmark-o:before { - content: "\f097"; -} -.fa-phone-square:before { - content: "\f098"; -} -.fa-twitter:before { - content: "\f099"; -} -.fa-facebook:before { - content: "\f09a"; -} -.fa-github:before { - content: "\f09b"; -} -.fa-unlock:before { - content: "\f09c"; -} -.fa-credit-card:before { - content: "\f09d"; -} -.fa-rss:before { - content: "\f09e"; -} -.fa-hdd-o:before { - content: "\f0a0"; -} -.fa-bullhorn:before { - content: "\f0a1"; -} -.fa-bell:before { - content: "\f0f3"; -} -.fa-certificate:before { - content: "\f0a3"; -} -.fa-hand-o-right:before { - content: "\f0a4"; -} -.fa-hand-o-left:before { - content: "\f0a5"; -} -.fa-hand-o-up:before { - content: "\f0a6"; -} -.fa-hand-o-down:before { - content: "\f0a7"; -} -.fa-arrow-circle-left:before { - content: "\f0a8"; -} -.fa-arrow-circle-right:before { - content: "\f0a9"; -} -.fa-arrow-circle-up:before { - content: "\f0aa"; -} -.fa-arrow-circle-down:before { - content: "\f0ab"; -} -.fa-globe:before { - content: "\f0ac"; -} -.fa-wrench:before { - content: "\f0ad"; -} -.fa-tasks:before { - content: "\f0ae"; -} -.fa-filter:before { - content: "\f0b0"; -} -.fa-briefcase:before { - content: "\f0b1"; -} -.fa-arrows-alt:before { - content: "\f0b2"; -} -.fa-group:before, -.fa-users:before { - content: "\f0c0"; -} -.fa-chain:before, -.fa-link:before { - content: "\f0c1"; -} -.fa-cloud:before { - content: "\f0c2"; -} -.fa-flask:before { - content: "\f0c3"; -} -.fa-cut:before, -.fa-scissors:before { - content: "\f0c4"; -} -.fa-copy:before, -.fa-files-o:before { - content: "\f0c5"; -} -.fa-paperclip:before { - content: "\f0c6"; -} -.fa-save:before, -.fa-floppy-o:before { - content: "\f0c7"; -} -.fa-square:before { - content: "\f0c8"; -} -.fa-navicon:before, -.fa-reorder:before, -.fa-bars:before { - content: "\f0c9"; -} -.fa-list-ul:before { - content: "\f0ca"; -} -.fa-list-ol:before { - content: "\f0cb"; -} -.fa-strikethrough:before { - content: "\f0cc"; -} -.fa-underline:before { - content: "\f0cd"; -} -.fa-table:before { - content: "\f0ce"; -} -.fa-magic:before { - content: "\f0d0"; -} -.fa-truck:before { - content: "\f0d1"; -} -.fa-pinterest:before { - content: "\f0d2"; -} -.fa-pinterest-square:before { - content: "\f0d3"; -} -.fa-google-plus-square:before { - content: "\f0d4"; -} -.fa-google-plus:before { - content: "\f0d5"; -} -.fa-money:before { - content: "\f0d6"; -} -.fa-caret-down:before { - content: "\f0d7"; -} -.fa-caret-up:before { - content: "\f0d8"; -} -.fa-caret-left:before { - content: "\f0d9"; -} -.fa-caret-right:before { - content: "\f0da"; -} -.fa-columns:before { - content: "\f0db"; -} -.fa-unsorted:before, -.fa-sort:before { - content: "\f0dc"; -} -.fa-sort-down:before, -.fa-sort-desc:before { - content: "\f0dd"; -} -.fa-sort-up:before, -.fa-sort-asc:before { - content: "\f0de"; -} -.fa-envelope:before { - content: "\f0e0"; -} -.fa-linkedin:before { - content: "\f0e1"; -} -.fa-rotate-left:before, -.fa-undo:before { - content: "\f0e2"; -} -.fa-legal:before, -.fa-gavel:before { - content: "\f0e3"; -} -.fa-dashboard:before, -.fa-tachometer:before { - content: "\f0e4"; -} -.fa-comment-o:before { - content: "\f0e5"; -} -.fa-comments-o:before { - content: "\f0e6"; -} -.fa-flash:before, -.fa-bolt:before { - content: "\f0e7"; -} -.fa-sitemap:before { - content: "\f0e8"; -} -.fa-umbrella:before { - content: "\f0e9"; -} -.fa-paste:before, -.fa-clipboard:before { - content: "\f0ea"; -} -.fa-lightbulb-o:before { - content: "\f0eb"; -} -.fa-exchange:before { - content: "\f0ec"; -} -.fa-cloud-download:before { - content: "\f0ed"; -} -.fa-cloud-upload:before { - content: "\f0ee"; -} -.fa-user-md:before { - content: "\f0f0"; -} -.fa-stethoscope:before { - content: "\f0f1"; -} -.fa-suitcase:before { - content: "\f0f2"; -} -.fa-bell-o:before { - content: "\f0a2"; -} -.fa-coffee:before { - content: "\f0f4"; -} -.fa-cutlery:before { - content: "\f0f5"; -} -.fa-file-text-o:before { - content: "\f0f6"; -} -.fa-building-o:before { - content: "\f0f7"; -} -.fa-hospital-o:before { - content: "\f0f8"; -} -.fa-ambulance:before { - content: "\f0f9"; -} -.fa-medkit:before { - content: "\f0fa"; -} -.fa-fighter-jet:before { - content: "\f0fb"; -} -.fa-beer:before { - content: "\f0fc"; -} -.fa-h-square:before { - content: "\f0fd"; -} -.fa-plus-square:before { - content: "\f0fe"; -} -.fa-angle-double-left:before { - content: "\f100"; -} -.fa-angle-double-right:before { - content: "\f101"; -} -.fa-angle-double-up:before { - content: "\f102"; -} -.fa-angle-double-down:before { - content: "\f103"; -} -.fa-angle-left:before { - content: "\f104"; -} -.fa-angle-right:before { - content: "\f105"; -} -.fa-angle-up:before { - content: "\f106"; -} -.fa-angle-down:before { - content: "\f107"; -} -.fa-desktop:before { - content: "\f108"; -} -.fa-laptop:before { - content: "\f109"; -} -.fa-tablet:before { - content: "\f10a"; -} -.fa-mobile-phone:before, -.fa-mobile:before { - content: "\f10b"; -} -.fa-circle-o:before { - content: "\f10c"; -} -.fa-quote-left:before { - content: "\f10d"; -} -.fa-quote-right:before { - content: "\f10e"; -} -.fa-spinner:before { - content: "\f110"; -} -.fa-circle:before { - content: "\f111"; -} -.fa-mail-reply:before, -.fa-reply:before { - content: "\f112"; -} -.fa-github-alt:before { - content: "\f113"; -} -.fa-folder-o:before { - content: "\f114"; -} -.fa-folder-open-o:before { - content: "\f115"; -} -.fa-smile-o:before { - content: "\f118"; -} -.fa-frown-o:before { - content: "\f119"; -} -.fa-meh-o:before { - content: "\f11a"; -} -.fa-gamepad:before { - content: "\f11b"; -} -.fa-keyboard-o:before { - content: "\f11c"; -} -.fa-flag-o:before { - content: "\f11d"; -} -.fa-flag-checkered:before { - content: "\f11e"; -} -.fa-terminal:before { - content: "\f120"; -} -.fa-code:before { - content: "\f121"; -} -.fa-mail-reply-all:before, -.fa-reply-all:before { - content: "\f122"; -} -.fa-star-half-empty:before, -.fa-star-half-full:before, -.fa-star-half-o:before { - content: "\f123"; -} -.fa-location-arrow:before { - content: "\f124"; -} -.fa-crop:before { - content: "\f125"; -} -.fa-code-fork:before { - content: "\f126"; -} -.fa-unlink:before, -.fa-chain-broken:before { - content: "\f127"; -} -.fa-question:before { - content: "\f128"; -} -.fa-info:before { - content: "\f129"; -} -.fa-exclamation:before { - content: "\f12a"; -} -.fa-superscript:before { - content: "\f12b"; -} -.fa-subscript:before { - content: "\f12c"; -} -.fa-eraser:before { - content: "\f12d"; -} -.fa-puzzle-piece:before { - content: "\f12e"; -} -.fa-microphone:before { - content: "\f130"; -} -.fa-microphone-slash:before { - content: "\f131"; -} -.fa-shield:before { - content: "\f132"; -} -.fa-calendar-o:before { - content: "\f133"; -} -.fa-fire-extinguisher:before { - content: "\f134"; -} -.fa-rocket:before { - content: "\f135"; -} -.fa-maxcdn:before { - content: "\f136"; -} -.fa-chevron-circle-left:before { - content: "\f137"; -} -.fa-chevron-circle-right:before { - content: "\f138"; -} -.fa-chevron-circle-up:before { - content: "\f139"; -} -.fa-chevron-circle-down:before { - content: "\f13a"; -} -.fa-html5:before { - content: "\f13b"; -} -.fa-css3:before { - content: "\f13c"; -} -.fa-anchor:before { - content: "\f13d"; -} -.fa-unlock-alt:before { - content: "\f13e"; -} -.fa-bullseye:before { - content: "\f140"; -} -.fa-ellipsis-h:before { - content: "\f141"; -} -.fa-ellipsis-v:before { - content: "\f142"; -} -.fa-rss-square:before { - content: "\f143"; -} -.fa-play-circle:before { - content: "\f144"; -} -.fa-ticket:before { - content: "\f145"; -} -.fa-minus-square:before { - content: "\f146"; -} -.fa-minus-square-o:before { - content: "\f147"; -} -.fa-level-up:before { - content: "\f148"; -} -.fa-level-down:before { - content: "\f149"; -} -.fa-check-square:before { - content: "\f14a"; -} -.fa-pencil-square:before { - content: "\f14b"; -} -.fa-external-link-square:before { - content: "\f14c"; -} -.fa-share-square:before { - content: "\f14d"; -} -.fa-compass:before { - content: "\f14e"; -} -.fa-toggle-down:before, -.fa-caret-square-o-down:before { - content: "\f150"; -} -.fa-toggle-up:before, -.fa-caret-square-o-up:before { - content: "\f151"; -} -.fa-toggle-right:before, -.fa-caret-square-o-right:before { - content: "\f152"; -} -.fa-euro:before, -.fa-eur:before { - content: "\f153"; -} -.fa-gbp:before { - content: "\f154"; -} -.fa-dollar:before, -.fa-usd:before { - content: "\f155"; -} -.fa-rupee:before, -.fa-inr:before { - content: "\f156"; -} -.fa-cny:before, -.fa-rmb:before, -.fa-yen:before, -.fa-jpy:before { - content: "\f157"; -} -.fa-ruble:before, -.fa-rouble:before, -.fa-rub:before { - content: "\f158"; -} -.fa-won:before, -.fa-krw:before { - content: "\f159"; -} -.fa-bitcoin:before, -.fa-btc:before { - content: "\f15a"; -} -.fa-file:before { - content: "\f15b"; -} -.fa-file-text:before { - content: "\f15c"; -} -.fa-sort-alpha-asc:before { - content: "\f15d"; -} -.fa-sort-alpha-desc:before { - content: "\f15e"; -} -.fa-sort-amount-asc:before { - content: "\f160"; -} -.fa-sort-amount-desc:before { - content: "\f161"; -} -.fa-sort-numeric-asc:before { - content: "\f162"; -} -.fa-sort-numeric-desc:before { - content: "\f163"; -} -.fa-thumbs-up:before { - content: "\f164"; -} -.fa-thumbs-down:before { - content: "\f165"; -} -.fa-youtube-square:before { - content: "\f166"; -} -.fa-youtube:before { - content: "\f167"; -} -.fa-xing:before { - content: "\f168"; -} -.fa-xing-square:before { - content: "\f169"; -} -.fa-youtube-play:before { - content: "\f16a"; -} -.fa-dropbox:before { - content: "\f16b"; -} -.fa-stack-overflow:before { - content: "\f16c"; -} -.fa-instagram:before { - content: "\f16d"; -} -.fa-flickr:before { - content: "\f16e"; -} -.fa-adn:before { - content: "\f170"; -} -.fa-bitbucket:before { - content: "\f171"; -} -.fa-bitbucket-square:before { - content: "\f172"; -} -.fa-tumblr:before { - content: "\f173"; -} -.fa-tumblr-square:before { - content: "\f174"; -} -.fa-long-arrow-down:before { - content: "\f175"; -} -.fa-long-arrow-up:before { - content: "\f176"; -} -.fa-long-arrow-left:before { - content: "\f177"; -} -.fa-long-arrow-right:before { - content: "\f178"; -} -.fa-apple:before { - content: "\f179"; -} -.fa-windows:before { - content: "\f17a"; -} -.fa-android:before { - content: "\f17b"; -} -.fa-linux:before { - content: "\f17c"; -} -.fa-dribbble:before { - content: "\f17d"; -} -.fa-skype:before { - content: "\f17e"; -} -.fa-foursquare:before { - content: "\f180"; -} -.fa-trello:before { - content: "\f181"; -} -.fa-female:before { - content: "\f182"; -} -.fa-male:before { - content: "\f183"; -} -.fa-gittip:before { - content: "\f184"; -} -.fa-sun-o:before { - content: "\f185"; -} -.fa-moon-o:before { - content: "\f186"; -} -.fa-archive:before { - content: "\f187"; -} -.fa-bug:before { - content: "\f188"; -} -.fa-vk:before { - content: "\f189"; -} -.fa-weibo:before { - content: "\f18a"; -} -.fa-renren:before { - content: "\f18b"; -} -.fa-pagelines:before { - content: "\f18c"; -} -.fa-stack-exchange:before { - content: "\f18d"; -} -.fa-arrow-circle-o-right:before { - content: "\f18e"; -} -.fa-arrow-circle-o-left:before { - content: "\f190"; -} -.fa-toggle-left:before, -.fa-caret-square-o-left:before { - content: "\f191"; -} -.fa-dot-circle-o:before { - content: "\f192"; -} -.fa-wheelchair:before { - content: "\f193"; -} -.fa-vimeo-square:before { - content: "\f194"; -} -.fa-turkish-lira:before, -.fa-try:before { - content: "\f195"; -} -.fa-plus-square-o:before { - content: "\f196"; -} -.fa-space-shuttle:before { - content: "\f197"; -} -.fa-slack:before { - content: "\f198"; -} -.fa-envelope-square:before { - content: "\f199"; -} -.fa-wordpress:before { - content: "\f19a"; -} -.fa-openid:before { - content: "\f19b"; -} -.fa-institution:before, -.fa-bank:before, -.fa-university:before { - content: "\f19c"; -} -.fa-mortar-board:before, -.fa-graduation-cap:before { - content: "\f19d"; -} -.fa-yahoo:before { - content: "\f19e"; -} -.fa-google:before { - content: "\f1a0"; -} -.fa-reddit:before { - content: "\f1a1"; -} -.fa-reddit-square:before { - content: "\f1a2"; -} -.fa-stumbleupon-circle:before { - content: "\f1a3"; -} -.fa-stumbleupon:before { - content: "\f1a4"; -} -.fa-delicious:before { - content: "\f1a5"; -} -.fa-digg:before { - content: "\f1a6"; -} -.fa-pied-piper-square:before, -.fa-pied-piper:before { - content: "\f1a7"; -} -.fa-pied-piper-alt:before { - content: "\f1a8"; -} -.fa-drupal:before { - content: "\f1a9"; -} -.fa-joomla:before { - content: "\f1aa"; -} -.fa-language:before { - content: "\f1ab"; -} -.fa-fax:before { - content: "\f1ac"; -} -.fa-building:before { - content: "\f1ad"; -} -.fa-child:before { - content: "\f1ae"; -} -.fa-paw:before { - content: "\f1b0"; -} -.fa-spoon:before { - content: "\f1b1"; -} -.fa-cube:before { - content: "\f1b2"; -} -.fa-cubes:before { - content: "\f1b3"; -} -.fa-behance:before { - content: "\f1b4"; -} -.fa-behance-square:before { - content: "\f1b5"; -} -.fa-steam:before { - content: "\f1b6"; -} -.fa-steam-square:before { - content: "\f1b7"; -} -.fa-recycle:before { - content: "\f1b8"; -} -.fa-automobile:before, -.fa-car:before { - content: "\f1b9"; -} -.fa-cab:before, -.fa-taxi:before { - content: "\f1ba"; -} -.fa-tree:before { - content: "\f1bb"; -} -.fa-spotify:before { - content: "\f1bc"; -} -.fa-deviantart:before { - content: "\f1bd"; -} -.fa-soundcloud:before { - content: "\f1be"; -} -.fa-database:before { - content: "\f1c0"; -} -.fa-file-pdf-o:before { - content: "\f1c1"; -} -.fa-file-word-o:before { - content: "\f1c2"; -} -.fa-file-excel-o:before { - content: "\f1c3"; -} -.fa-file-powerpoint-o:before { - content: "\f1c4"; -} -.fa-file-photo-o:before, -.fa-file-picture-o:before, -.fa-file-image-o:before { - content: "\f1c5"; -} -.fa-file-zip-o:before, -.fa-file-archive-o:before { - content: "\f1c6"; -} -.fa-file-sound-o:before, -.fa-file-audio-o:before { - content: "\f1c7"; -} -.fa-file-movie-o:before, -.fa-file-video-o:before { - content: "\f1c8"; -} -.fa-file-code-o:before { - content: "\f1c9"; -} -.fa-vine:before { - content: "\f1ca"; -} -.fa-codepen:before { - content: "\f1cb"; -} -.fa-jsfiddle:before { - content: "\f1cc"; -} -.fa-life-bouy:before, -.fa-life-saver:before, -.fa-support:before, -.fa-life-ring:before { - content: "\f1cd"; -} -.fa-circle-o-notch:before { - content: "\f1ce"; -} -.fa-ra:before, -.fa-rebel:before { - content: "\f1d0"; -} -.fa-ge:before, -.fa-empire:before { - content: "\f1d1"; -} -.fa-git-square:before { - content: "\f1d2"; -} -.fa-git:before { - content: "\f1d3"; -} -.fa-hacker-news:before { - content: "\f1d4"; -} -.fa-tencent-weibo:before { - content: "\f1d5"; -} -.fa-qq:before { - content: "\f1d6"; -} -.fa-wechat:before, -.fa-weixin:before { - content: "\f1d7"; -} -.fa-send:before, -.fa-paper-plane:before { - content: "\f1d8"; -} -.fa-send-o:before, -.fa-paper-plane-o:before { - content: "\f1d9"; -} -.fa-history:before { - content: "\f1da"; -} -.fa-circle-thin:before { - content: "\f1db"; -} -.fa-header:before { - content: "\f1dc"; -} -.fa-paragraph:before { - content: "\f1dd"; -} -.fa-sliders:before { - content: "\f1de"; -} -.fa-share-alt:before { - content: "\f1e0"; -} -.fa-share-alt-square:before { - content: "\f1e1"; -} -.fa-bomb:before { - content: "\f1e2"; -} diff --git a/client/lib/font-awesome/css/font-awesome.min.css b/client/lib/font-awesome/css/font-awesome.min.css deleted file mode 100644 index 3d920fc..0000000 --- a/client/lib/font-awesome/css/font-awesome.min.css +++ /dev/null @@ -1,4 +0,0 @@ -/*! - * Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.1.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.1.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff?v=4.1.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.1.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.1.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1)}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-square:before,.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"} \ No newline at end of file diff --git a/client/lib/font-awesome/fonts/FontAwesome.otf b/client/lib/font-awesome/fonts/FontAwesome.otf deleted file mode 100644 index 3461e3f..0000000 Binary files a/client/lib/font-awesome/fonts/FontAwesome.otf and /dev/null differ diff --git a/client/lib/font-awesome/fonts/fontawesome-webfont.eot b/client/lib/font-awesome/fonts/fontawesome-webfont.eot deleted file mode 100755 index 6cfd566..0000000 Binary files a/client/lib/font-awesome/fonts/fontawesome-webfont.eot and /dev/null differ diff --git a/client/lib/font-awesome/fonts/fontawesome-webfont.svg b/client/lib/font-awesome/fonts/fontawesome-webfont.svg deleted file mode 100755 index a9f8469..0000000 --- a/client/lib/font-awesome/fonts/fontawesome-webfont.svg +++ /dev/null @@ -1,504 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/client/lib/font-awesome/fonts/fontawesome-webfont.ttf b/client/lib/font-awesome/fonts/fontawesome-webfont.ttf deleted file mode 100755 index 5cd6cff..0000000 Binary files a/client/lib/font-awesome/fonts/fontawesome-webfont.ttf and /dev/null differ diff --git a/client/lib/font-awesome/fonts/fontawesome-webfont.woff b/client/lib/font-awesome/fonts/fontawesome-webfont.woff deleted file mode 100755 index 9eaecb3..0000000 Binary files a/client/lib/font-awesome/fonts/fontawesome-webfont.woff and /dev/null differ diff --git a/client/lib/foundation-icons/.fontcustom-data b/client/lib/foundation-icons/.fontcustom-data deleted file mode 100644 index 8753d7b..0000000 --- a/client/lib/foundation-icons/.fontcustom-data +++ /dev/null @@ -1,298 +0,0 @@ -{ - "fonts": [ - "fontcustom_10588e4d0af9f9cd5471c9540658204b.ttf", - "fontcustom_10588e4d0af9f9cd5471c9540658204b.woff", - "fontcustom_10588e4d0af9f9cd5471c9540658204b.eot", - "fontcustom_10588e4d0af9f9cd5471c9540658204b.svg" - ], - "templates": [ - "fontcustom.css", - "fontcustom-preview.html" - ], - "file_name": "fontcustom_10588e4d0af9f9cd5471c9540658204b", - "glyphs": [ - "fi-address-book", - "fi-alert", - "fi-align-center", - "fi-align-justify", - "fi-align-left", - "fi-align-right", - "fi-anchor", - "fi-annotate", - "fi-archive", - "fi-arrow-down", - "fi-arrow-left", - "fi-arrow-right", - "fi-arrow-up", - "fi-arrows-compress", - "fi-arrows-expand", - "fi-arrows-in", - "fi-arrows-out", - "fi-asl", - "fi-asterisk", - "fi-at-sign", - "fi-background-color", - "fi-battery-empty", - "fi-battery-full", - "fi-battery-half", - "fi-bitcoin-circle", - "fi-bitcoin", - "fi-blind", - "fi-bluetooth", - "fi-bold", - "fi-book-bookmark", - "fi-book", - "fi-bookmark", - "fi-braille", - "fi-burst-new", - "fi-burst-sale", - "fi-burst", - "fi-calendar", - "fi-camera", - "fi-check", - "fi-checkbox", - "fi-clipboard-notes", - "fi-clipboard-pencil", - "fi-clipboard", - "fi-clock", - "fi-closed-caption", - "fi-cloud", - "fi-comment-minus", - "fi-comment-quotes", - "fi-comment-video", - "fi-comment", - "fi-comments", - "fi-compass", - "fi-contrast", - "fi-credit-card", - "fi-crop", - "fi-crown", - "fi-css3", - "fi-database", - "fi-die-five", - "fi-die-four", - "fi-die-one", - "fi-die-six", - "fi-die-three", - "fi-die-two", - "fi-dislike", - "fi-dollar-bill", - "fi-dollar", - "fi-download", - "fi-eject", - "fi-elevator", - "fi-euro", - "fi-eye", - "fi-fast-forward", - "fi-female-symbol", - "fi-female", - "fi-filter", - "fi-first-aid", - "fi-flag", - "fi-folder-add", - "fi-folder-lock", - "fi-folder", - "fi-foot", - "fi-foundation", - "fi-graph-bar", - "fi-graph-horizontal", - "fi-graph-pie", - "fi-graph-trend", - "fi-guide-dog", - "fi-hearing-aid", - "fi-heart", - "fi-home", - "fi-html5", - "fi-indent-less", - "fi-indent-more", - "fi-info", - "fi-italic", - "fi-key", - "fi-laptop", - "fi-layout", - "fi-lightbulb", - "fi-like", - "fi-link", - "fi-list-bullet", - "fi-list-number", - "fi-list-thumbnails", - "fi-list", - "fi-lock", - "fi-loop", - "fi-magnifying-glass", - "fi-mail", - "fi-male-female", - "fi-male-symbol", - "fi-male", - "fi-map", - "fi-marker", - "fi-megaphone", - "fi-microphone", - "fi-minus-circle", - "fi-minus", - "fi-mobile-signal", - "fi-mobile", - "fi-monitor", - "fi-mountains", - "fi-music", - "fi-next", - "fi-no-dogs", - "fi-no-smoking", - "fi-page-add", - "fi-page-copy", - "fi-page-csv", - "fi-page-delete", - "fi-page-doc", - "fi-page-edit", - "fi-page-export-csv", - "fi-page-export-doc", - "fi-page-export-pdf", - "fi-page-export", - "fi-page-filled", - "fi-page-multiple", - "fi-page-pdf", - "fi-page-remove", - "fi-page-search", - "fi-page", - "fi-paint-bucket", - "fi-paperclip", - "fi-pause", - "fi-paw", - "fi-paypal", - "fi-pencil", - "fi-photo", - "fi-play-circle", - "fi-play-video", - "fi-play", - "fi-plus", - "fi-pound", - "fi-power", - "fi-previous", - "fi-price-tag", - "fi-pricetag-multiple", - "fi-print", - "fi-prohibited", - "fi-projection-screen", - "fi-puzzle", - "fi-quote", - "fi-record", - "fi-refresh", - "fi-results-demographics", - "fi-results", - "fi-rewind-ten", - "fi-rewind", - "fi-rss", - "fi-safety-cone", - "fi-save", - "fi-share", - "fi-sheriff-badge", - "fi-shield", - "fi-shopping-bag", - "fi-shopping-cart", - "fi-shuffle", - "fi-skull", - "fi-social-500px", - "fi-social-adobe", - "fi-social-amazon", - "fi-social-android", - "fi-social-apple", - "fi-social-behance", - "fi-social-bing", - "fi-social-blogger", - "fi-social-delicious", - "fi-social-designer-news", - "fi-social-deviant-art", - "fi-social-digg", - "fi-social-dribbble", - "fi-social-drive", - "fi-social-dropbox", - "fi-social-evernote", - "fi-social-facebook", - "fi-social-flickr", - "fi-social-forrst", - "fi-social-foursquare", - "fi-social-game-center", - "fi-social-github", - "fi-social-google-plus", - "fi-social-hacker-news", - "fi-social-hi5", - "fi-social-instagram", - "fi-social-joomla", - "fi-social-lastfm", - "fi-social-linkedin", - "fi-social-medium", - "fi-social-myspace", - "fi-social-orkut", - "fi-social-path", - "fi-social-picasa", - "fi-social-pinterest", - "fi-social-rdio", - "fi-social-reddit", - "fi-social-skillshare", - "fi-social-skype", - "fi-social-smashing-mag", - "fi-social-snapchat", - "fi-social-spotify", - "fi-social-squidoo", - "fi-social-stack-overflow", - "fi-social-steam", - "fi-social-stumbleupon", - "fi-social-treehouse", - "fi-social-tumblr", - "fi-social-twitter", - "fi-social-vimeo", - "fi-social-windows", - "fi-social-xbox-20", - "fi-social-yahoo", - "fi-social-yelp", - "fi-social-youtube", - "fi-social-zerply", - "fi-social-zurb", - "fi-sound", - "fi-star", - "fi-stop", - "fi-strikethrough", - "fi-subscript", - "fi-superscript", - "fi-tablet-landscape", - "fi-tablet-portrait", - "fi-target-two", - "fi-target", - "fi-telephone-accessible", - "fi-telephone", - "fi-text-color", - "fi-thumbnails", - "fi-ticket", - "fi-torso-business", - "fi-torso-female", - "fi-torso", - "fi-torsos-all-female", - "fi-torsos-all", - "fi-torsos-female-male", - "fi-torsos-male-female", - "fi-torsos", - "fi-trash", - "fi-trees", - "fi-trophy", - "fi-underline", - "fi-universal-access", - "fi-unlink", - "fi-unlock", - "fi-upload-cloud", - "fi-upload", - "fi-usb", - "fi-video", - "fi-volume-none", - "fi-volume-strike", - "fi-volume", - "fi-web", - "fi-wheelchair", - "fi-widget", - "fi-wrench", - "fi-x-circle", - "fi-x", - "fi-yen", - "fi-zoom-in", - "fi-zoom-out" - ] -} \ No newline at end of file diff --git a/client/lib/foundation-icons/foundation-icons.css b/client/lib/foundation-icons/foundation-icons.css deleted file mode 100644 index d866a73..0000000 --- a/client/lib/foundation-icons/foundation-icons.css +++ /dev/null @@ -1,594 +0,0 @@ -/* - * Foundation Icons v 3.0 - * Made by ZURB 2013 http://zurb.com/playground/foundation-icon-fonts-3 - * MIT License - */ - -@font-face { - font-family: "foundation-icons"; - src: url("foundation-icons.eot"); - src: url("foundation-icons.eot?#iefix") format("embedded-opentype"), - url("foundation-icons.woff") format("woff"), - url("foundation-icons.ttf") format("truetype"), - url("foundation-icons.svg#fontcustom") format("svg"); - font-weight: normal; - font-style: normal; -} - -.fi-address-book:before, -.fi-alert:before, -.fi-align-center:before, -.fi-align-justify:before, -.fi-align-left:before, -.fi-align-right:before, -.fi-anchor:before, -.fi-annotate:before, -.fi-archive:before, -.fi-arrow-down:before, -.fi-arrow-left:before, -.fi-arrow-right:before, -.fi-arrow-up:before, -.fi-arrows-compress:before, -.fi-arrows-expand:before, -.fi-arrows-in:before, -.fi-arrows-out:before, -.fi-asl:before, -.fi-asterisk:before, -.fi-at-sign:before, -.fi-background-color:before, -.fi-battery-empty:before, -.fi-battery-full:before, -.fi-battery-half:before, -.fi-bitcoin-circle:before, -.fi-bitcoin:before, -.fi-blind:before, -.fi-bluetooth:before, -.fi-bold:before, -.fi-book-bookmark:before, -.fi-book:before, -.fi-bookmark:before, -.fi-braille:before, -.fi-burst-new:before, -.fi-burst-sale:before, -.fi-burst:before, -.fi-calendar:before, -.fi-camera:before, -.fi-check:before, -.fi-checkbox:before, -.fi-clipboard-notes:before, -.fi-clipboard-pencil:before, -.fi-clipboard:before, -.fi-clock:before, -.fi-closed-caption:before, -.fi-cloud:before, -.fi-comment-minus:before, -.fi-comment-quotes:before, -.fi-comment-video:before, -.fi-comment:before, -.fi-comments:before, -.fi-compass:before, -.fi-contrast:before, -.fi-credit-card:before, -.fi-crop:before, -.fi-crown:before, -.fi-css3:before, -.fi-database:before, -.fi-die-five:before, -.fi-die-four:before, -.fi-die-one:before, -.fi-die-six:before, -.fi-die-three:before, -.fi-die-two:before, -.fi-dislike:before, -.fi-dollar-bill:before, -.fi-dollar:before, -.fi-download:before, -.fi-eject:before, -.fi-elevator:before, -.fi-euro:before, -.fi-eye:before, -.fi-fast-forward:before, -.fi-female-symbol:before, -.fi-female:before, -.fi-filter:before, -.fi-first-aid:before, -.fi-flag:before, -.fi-folder-add:before, -.fi-folder-lock:before, -.fi-folder:before, -.fi-foot:before, -.fi-foundation:before, -.fi-graph-bar:before, -.fi-graph-horizontal:before, -.fi-graph-pie:before, -.fi-graph-trend:before, -.fi-guide-dog:before, -.fi-hearing-aid:before, -.fi-heart:before, -.fi-home:before, -.fi-html5:before, -.fi-indent-less:before, -.fi-indent-more:before, -.fi-info:before, -.fi-italic:before, -.fi-key:before, -.fi-laptop:before, -.fi-layout:before, -.fi-lightbulb:before, -.fi-like:before, -.fi-link:before, -.fi-list-bullet:before, -.fi-list-number:before, -.fi-list-thumbnails:before, -.fi-list:before, -.fi-lock:before, -.fi-loop:before, -.fi-magnifying-glass:before, -.fi-mail:before, -.fi-male-female:before, -.fi-male-symbol:before, -.fi-male:before, -.fi-map:before, -.fi-marker:before, -.fi-megaphone:before, -.fi-microphone:before, -.fi-minus-circle:before, -.fi-minus:before, -.fi-mobile-signal:before, -.fi-mobile:before, -.fi-monitor:before, -.fi-mountains:before, -.fi-music:before, -.fi-next:before, -.fi-no-dogs:before, -.fi-no-smoking:before, -.fi-page-add:before, -.fi-page-copy:before, -.fi-page-csv:before, -.fi-page-delete:before, -.fi-page-doc:before, -.fi-page-edit:before, -.fi-page-export-csv:before, -.fi-page-export-doc:before, -.fi-page-export-pdf:before, -.fi-page-export:before, -.fi-page-filled:before, -.fi-page-multiple:before, -.fi-page-pdf:before, -.fi-page-remove:before, -.fi-page-search:before, -.fi-page:before, -.fi-paint-bucket:before, -.fi-paperclip:before, -.fi-pause:before, -.fi-paw:before, -.fi-paypal:before, -.fi-pencil:before, -.fi-photo:before, -.fi-play-circle:before, -.fi-play-video:before, -.fi-play:before, -.fi-plus:before, -.fi-pound:before, -.fi-power:before, -.fi-previous:before, -.fi-price-tag:before, -.fi-pricetag-multiple:before, -.fi-print:before, -.fi-prohibited:before, -.fi-projection-screen:before, -.fi-puzzle:before, -.fi-quote:before, -.fi-record:before, -.fi-refresh:before, -.fi-results-demographics:before, -.fi-results:before, -.fi-rewind-ten:before, -.fi-rewind:before, -.fi-rss:before, -.fi-safety-cone:before, -.fi-save:before, -.fi-share:before, -.fi-sheriff-badge:before, -.fi-shield:before, -.fi-shopping-bag:before, -.fi-shopping-cart:before, -.fi-shuffle:before, -.fi-skull:before, -.fi-social-500px:before, -.fi-social-adobe:before, -.fi-social-amazon:before, -.fi-social-android:before, -.fi-social-apple:before, -.fi-social-behance:before, -.fi-social-bing:before, -.fi-social-blogger:before, -.fi-social-delicious:before, -.fi-social-designer-news:before, -.fi-social-deviant-art:before, -.fi-social-digg:before, -.fi-social-dribbble:before, -.fi-social-drive:before, -.fi-social-dropbox:before, -.fi-social-evernote:before, -.fi-social-facebook:before, -.fi-social-flickr:before, -.fi-social-forrst:before, -.fi-social-foursquare:before, -.fi-social-game-center:before, -.fi-social-github:before, -.fi-social-google-plus:before, -.fi-social-hacker-news:before, -.fi-social-hi5:before, -.fi-social-instagram:before, -.fi-social-joomla:before, -.fi-social-lastfm:before, -.fi-social-linkedin:before, -.fi-social-medium:before, -.fi-social-myspace:before, -.fi-social-orkut:before, -.fi-social-path:before, -.fi-social-picasa:before, -.fi-social-pinterest:before, -.fi-social-rdio:before, -.fi-social-reddit:before, -.fi-social-skillshare:before, -.fi-social-skype:before, -.fi-social-smashing-mag:before, -.fi-social-snapchat:before, -.fi-social-spotify:before, -.fi-social-squidoo:before, -.fi-social-stack-overflow:before, -.fi-social-steam:before, -.fi-social-stumbleupon:before, -.fi-social-treehouse:before, -.fi-social-tumblr:before, -.fi-social-twitter:before, -.fi-social-vimeo:before, -.fi-social-windows:before, -.fi-social-xbox:before, -.fi-social-yahoo:before, -.fi-social-yelp:before, -.fi-social-youtube:before, -.fi-social-zerply:before, -.fi-social-zurb:before, -.fi-sound:before, -.fi-star:before, -.fi-stop:before, -.fi-strikethrough:before, -.fi-subscript:before, -.fi-superscript:before, -.fi-tablet-landscape:before, -.fi-tablet-portrait:before, -.fi-target-two:before, -.fi-target:before, -.fi-telephone-accessible:before, -.fi-telephone:before, -.fi-text-color:before, -.fi-thumbnails:before, -.fi-ticket:before, -.fi-torso-business:before, -.fi-torso-female:before, -.fi-torso:before, -.fi-torsos-all-female:before, -.fi-torsos-all:before, -.fi-torsos-female-male:before, -.fi-torsos-male-female:before, -.fi-torsos:before, -.fi-trash:before, -.fi-trees:before, -.fi-trophy:before, -.fi-underline:before, -.fi-universal-access:before, -.fi-unlink:before, -.fi-unlock:before, -.fi-upload-cloud:before, -.fi-upload:before, -.fi-usb:before, -.fi-video:before, -.fi-volume-none:before, -.fi-volume-strike:before, -.fi-volume:before, -.fi-web:before, -.fi-wheelchair:before, -.fi-widget:before, -.fi-wrench:before, -.fi-x-circle:before, -.fi-x:before, -.fi-yen:before, -.fi-zoom-in:before, -.fi-zoom-out:before { - font-family: "foundation-icons"; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - display: inline-block; - text-decoration: inherit; -} - -.fi-address-book:before { content: "\f100"; } -.fi-alert:before { content: "\f101"; } -.fi-align-center:before { content: "\f102"; } -.fi-align-justify:before { content: "\f103"; } -.fi-align-left:before { content: "\f104"; } -.fi-align-right:before { content: "\f105"; } -.fi-anchor:before { content: "\f106"; } -.fi-annotate:before { content: "\f107"; } -.fi-archive:before { content: "\f108"; } -.fi-arrow-down:before { content: "\f109"; } -.fi-arrow-left:before { content: "\f10a"; } -.fi-arrow-right:before { content: "\f10b"; } -.fi-arrow-up:before { content: "\f10c"; } -.fi-arrows-compress:before { content: "\f10d"; } -.fi-arrows-expand:before { content: "\f10e"; } -.fi-arrows-in:before { content: "\f10f"; } -.fi-arrows-out:before { content: "\f110"; } -.fi-asl:before { content: "\f111"; } -.fi-asterisk:before { content: "\f112"; } -.fi-at-sign:before { content: "\f113"; } -.fi-background-color:before { content: "\f114"; } -.fi-battery-empty:before { content: "\f115"; } -.fi-battery-full:before { content: "\f116"; } -.fi-battery-half:before { content: "\f117"; } -.fi-bitcoin-circle:before { content: "\f118"; } -.fi-bitcoin:before { content: "\f119"; } -.fi-blind:before { content: "\f11a"; } -.fi-bluetooth:before { content: "\f11b"; } -.fi-bold:before { content: "\f11c"; } -.fi-book-bookmark:before { content: "\f11d"; } -.fi-book:before { content: "\f11e"; } -.fi-bookmark:before { content: "\f11f"; } -.fi-braille:before { content: "\f120"; } -.fi-burst-new:before { content: "\f121"; } -.fi-burst-sale:before { content: "\f122"; } -.fi-burst:before { content: "\f123"; } -.fi-calendar:before { content: "\f124"; } -.fi-camera:before { content: "\f125"; } -.fi-check:before { content: "\f126"; } -.fi-checkbox:before { content: "\f127"; } -.fi-clipboard-notes:before { content: "\f128"; } -.fi-clipboard-pencil:before { content: "\f129"; } -.fi-clipboard:before { content: "\f12a"; } -.fi-clock:before { content: "\f12b"; } -.fi-closed-caption:before { content: "\f12c"; } -.fi-cloud:before { content: "\f12d"; } -.fi-comment-minus:before { content: "\f12e"; } -.fi-comment-quotes:before { content: "\f12f"; } -.fi-comment-video:before { content: "\f130"; } -.fi-comment:before { content: "\f131"; } -.fi-comments:before { content: "\f132"; } -.fi-compass:before { content: "\f133"; } -.fi-contrast:before { content: "\f134"; } -.fi-credit-card:before { content: "\f135"; } -.fi-crop:before { content: "\f136"; } -.fi-crown:before { content: "\f137"; } -.fi-css3:before { content: "\f138"; } -.fi-database:before { content: "\f139"; } -.fi-die-five:before { content: "\f13a"; } -.fi-die-four:before { content: "\f13b"; } -.fi-die-one:before { content: "\f13c"; } -.fi-die-six:before { content: "\f13d"; } -.fi-die-three:before { content: "\f13e"; } -.fi-die-two:before { content: "\f13f"; } -.fi-dislike:before { content: "\f140"; } -.fi-dollar-bill:before { content: "\f141"; } -.fi-dollar:before { content: "\f142"; } -.fi-download:before { content: "\f143"; } -.fi-eject:before { content: "\f144"; } -.fi-elevator:before { content: "\f145"; } -.fi-euro:before { content: "\f146"; } -.fi-eye:before { content: "\f147"; } -.fi-fast-forward:before { content: "\f148"; } -.fi-female-symbol:before { content: "\f149"; } -.fi-female:before { content: "\f14a"; } -.fi-filter:before { content: "\f14b"; } -.fi-first-aid:before { content: "\f14c"; } -.fi-flag:before { content: "\f14d"; } -.fi-folder-add:before { content: "\f14e"; } -.fi-folder-lock:before { content: "\f14f"; } -.fi-folder:before { content: "\f150"; } -.fi-foot:before { content: "\f151"; } -.fi-foundation:before { content: "\f152"; } -.fi-graph-bar:before { content: "\f153"; } -.fi-graph-horizontal:before { content: "\f154"; } -.fi-graph-pie:before { content: "\f155"; } -.fi-graph-trend:before { content: "\f156"; } -.fi-guide-dog:before { content: "\f157"; } -.fi-hearing-aid:before { content: "\f158"; } -.fi-heart:before { content: "\f159"; } -.fi-home:before { content: "\f15a"; } -.fi-html5:before { content: "\f15b"; } -.fi-indent-less:before { content: "\f15c"; } -.fi-indent-more:before { content: "\f15d"; } -.fi-info:before { content: "\f15e"; } -.fi-italic:before { content: "\f15f"; } -.fi-key:before { content: "\f160"; } -.fi-laptop:before { content: "\f161"; } -.fi-layout:before { content: "\f162"; } -.fi-lightbulb:before { content: "\f163"; } -.fi-like:before { content: "\f164"; } -.fi-link:before { content: "\f165"; } -.fi-list-bullet:before { content: "\f166"; } -.fi-list-number:before { content: "\f167"; } -.fi-list-thumbnails:before { content: "\f168"; } -.fi-list:before { content: "\f169"; } -.fi-lock:before { content: "\f16a"; } -.fi-loop:before { content: "\f16b"; } -.fi-magnifying-glass:before { content: "\f16c"; } -.fi-mail:before { content: "\f16d"; } -.fi-male-female:before { content: "\f16e"; } -.fi-male-symbol:before { content: "\f16f"; } -.fi-male:before { content: "\f170"; } -.fi-map:before { content: "\f171"; } -.fi-marker:before { content: "\f172"; } -.fi-megaphone:before { content: "\f173"; } -.fi-microphone:before { content: "\f174"; } -.fi-minus-circle:before { content: "\f175"; } -.fi-minus:before { content: "\f176"; } -.fi-mobile-signal:before { content: "\f177"; } -.fi-mobile:before { content: "\f178"; } -.fi-monitor:before { content: "\f179"; } -.fi-mountains:before { content: "\f17a"; } -.fi-music:before { content: "\f17b"; } -.fi-next:before { content: "\f17c"; } -.fi-no-dogs:before { content: "\f17d"; } -.fi-no-smoking:before { content: "\f17e"; } -.fi-page-add:before { content: "\f17f"; } -.fi-page-copy:before { content: "\f180"; } -.fi-page-csv:before { content: "\f181"; } -.fi-page-delete:before { content: "\f182"; } -.fi-page-doc:before { content: "\f183"; } -.fi-page-edit:before { content: "\f184"; } -.fi-page-export-csv:before { content: "\f185"; } -.fi-page-export-doc:before { content: "\f186"; } -.fi-page-export-pdf:before { content: "\f187"; } -.fi-page-export:before { content: "\f188"; } -.fi-page-filled:before { content: "\f189"; } -.fi-page-multiple:before { content: "\f18a"; } -.fi-page-pdf:before { content: "\f18b"; } -.fi-page-remove:before { content: "\f18c"; } -.fi-page-search:before { content: "\f18d"; } -.fi-page:before { content: "\f18e"; } -.fi-paint-bucket:before { content: "\f18f"; } -.fi-paperclip:before { content: "\f190"; } -.fi-pause:before { content: "\f191"; } -.fi-paw:before { content: "\f192"; } -.fi-paypal:before { content: "\f193"; } -.fi-pencil:before { content: "\f194"; } -.fi-photo:before { content: "\f195"; } -.fi-play-circle:before { content: "\f196"; } -.fi-play-video:before { content: "\f197"; } -.fi-play:before { content: "\f198"; } -.fi-plus:before { content: "\f199"; } -.fi-pound:before { content: "\f19a"; } -.fi-power:before { content: "\f19b"; } -.fi-previous:before { content: "\f19c"; } -.fi-price-tag:before { content: "\f19d"; } -.fi-pricetag-multiple:before { content: "\f19e"; } -.fi-print:before { content: "\f19f"; } -.fi-prohibited:before { content: "\f1a0"; } -.fi-projection-screen:before { content: "\f1a1"; } -.fi-puzzle:before { content: "\f1a2"; } -.fi-quote:before { content: "\f1a3"; } -.fi-record:before { content: "\f1a4"; } -.fi-refresh:before { content: "\f1a5"; } -.fi-results-demographics:before { content: "\f1a6"; } -.fi-results:before { content: "\f1a7"; } -.fi-rewind-ten:before { content: "\f1a8"; } -.fi-rewind:before { content: "\f1a9"; } -.fi-rss:before { content: "\f1aa"; } -.fi-safety-cone:before { content: "\f1ab"; } -.fi-save:before { content: "\f1ac"; } -.fi-share:before { content: "\f1ad"; } -.fi-sheriff-badge:before { content: "\f1ae"; } -.fi-shield:before { content: "\f1af"; } -.fi-shopping-bag:before { content: "\f1b0"; } -.fi-shopping-cart:before { content: "\f1b1"; } -.fi-shuffle:before { content: "\f1b2"; } -.fi-skull:before { content: "\f1b3"; } -.fi-social-500px:before { content: "\f1b4"; } -.fi-social-adobe:before { content: "\f1b5"; } -.fi-social-amazon:before { content: "\f1b6"; } -.fi-social-android:before { content: "\f1b7"; } -.fi-social-apple:before { content: "\f1b8"; } -.fi-social-behance:before { content: "\f1b9"; } -.fi-social-bing:before { content: "\f1ba"; } -.fi-social-blogger:before { content: "\f1bb"; } -.fi-social-delicious:before { content: "\f1bc"; } -.fi-social-designer-news:before { content: "\f1bd"; } -.fi-social-deviant-art:before { content: "\f1be"; } -.fi-social-digg:before { content: "\f1bf"; } -.fi-social-dribbble:before { content: "\f1c0"; } -.fi-social-drive:before { content: "\f1c1"; } -.fi-social-dropbox:before { content: "\f1c2"; } -.fi-social-evernote:before { content: "\f1c3"; } -.fi-social-facebook:before { content: "\f1c4"; } -.fi-social-flickr:before { content: "\f1c5"; } -.fi-social-forrst:before { content: "\f1c6"; } -.fi-social-foursquare:before { content: "\f1c7"; } -.fi-social-game-center:before { content: "\f1c8"; } -.fi-social-github:before { content: "\f1c9"; } -.fi-social-google-plus:before { content: "\f1ca"; } -.fi-social-hacker-news:before { content: "\f1cb"; } -.fi-social-hi5:before { content: "\f1cc"; } -.fi-social-instagram:before { content: "\f1cd"; } -.fi-social-joomla:before { content: "\f1ce"; } -.fi-social-lastfm:before { content: "\f1cf"; } -.fi-social-linkedin:before { content: "\f1d0"; } -.fi-social-medium:before { content: "\f1d1"; } -.fi-social-myspace:before { content: "\f1d2"; } -.fi-social-orkut:before { content: "\f1d3"; } -.fi-social-path:before { content: "\f1d4"; } -.fi-social-picasa:before { content: "\f1d5"; } -.fi-social-pinterest:before { content: "\f1d6"; } -.fi-social-rdio:before { content: "\f1d7"; } -.fi-social-reddit:before { content: "\f1d8"; } -.fi-social-skillshare:before { content: "\f1d9"; } -.fi-social-skype:before { content: "\f1da"; } -.fi-social-smashing-mag:before { content: "\f1db"; } -.fi-social-snapchat:before { content: "\f1dc"; } -.fi-social-spotify:before { content: "\f1dd"; } -.fi-social-squidoo:before { content: "\f1de"; } -.fi-social-stack-overflow:before { content: "\f1df"; } -.fi-social-steam:before { content: "\f1e0"; } -.fi-social-stumbleupon:before { content: "\f1e1"; } -.fi-social-treehouse:before { content: "\f1e2"; } -.fi-social-tumblr:before { content: "\f1e3"; } -.fi-social-twitter:before { content: "\f1e4"; } -.fi-social-vimeo:before { content: "\f1e5"; } -.fi-social-windows:before { content: "\f1e6"; } -.fi-social-xbox:before { content: "\f1e7"; } -.fi-social-yahoo:before { content: "\f1e8"; } -.fi-social-yelp:before { content: "\f1e9"; } -.fi-social-youtube:before { content: "\f1ea"; } -.fi-social-zerply:before { content: "\f1eb"; } -.fi-social-zurb:before { content: "\f1ec"; } -.fi-sound:before { content: "\f1ed"; } -.fi-star:before { content: "\f1ee"; } -.fi-stop:before { content: "\f1ef"; } -.fi-strikethrough:before { content: "\f1f0"; } -.fi-subscript:before { content: "\f1f1"; } -.fi-superscript:before { content: "\f1f2"; } -.fi-tablet-landscape:before { content: "\f1f3"; } -.fi-tablet-portrait:before { content: "\f1f4"; } -.fi-target-two:before { content: "\f1f5"; } -.fi-target:before { content: "\f1f6"; } -.fi-telephone-accessible:before { content: "\f1f7"; } -.fi-telephone:before { content: "\f1f8"; } -.fi-text-color:before { content: "\f1f9"; } -.fi-thumbnails:before { content: "\f1fa"; } -.fi-ticket:before { content: "\f1fb"; } -.fi-torso-business:before { content: "\f1fc"; } -.fi-torso-female:before { content: "\f1fd"; } -.fi-torso:before { content: "\f1fe"; } -.fi-torsos-all-female:before { content: "\f1ff"; } -.fi-torsos-all:before { content: "\f200"; } -.fi-torsos-female-male:before { content: "\f201"; } -.fi-torsos-male-female:before { content: "\f202"; } -.fi-torsos:before { content: "\f203"; } -.fi-trash:before { content: "\f204"; } -.fi-trees:before { content: "\f205"; } -.fi-trophy:before { content: "\f206"; } -.fi-underline:before { content: "\f207"; } -.fi-universal-access:before { content: "\f208"; } -.fi-unlink:before { content: "\f209"; } -.fi-unlock:before { content: "\f20a"; } -.fi-upload-cloud:before { content: "\f20b"; } -.fi-upload:before { content: "\f20c"; } -.fi-usb:before { content: "\f20d"; } -.fi-video:before { content: "\f20e"; } -.fi-volume-none:before { content: "\f20f"; } -.fi-volume-strike:before { content: "\f210"; } -.fi-volume:before { content: "\f211"; } -.fi-web:before { content: "\f212"; } -.fi-wheelchair:before { content: "\f213"; } -.fi-widget:before { content: "\f214"; } -.fi-wrench:before { content: "\f215"; } -.fi-x-circle:before { content: "\f216"; } -.fi-x:before { content: "\f217"; } -.fi-yen:before { content: "\f218"; } -.fi-zoom-in:before { content: "\f219"; } -.fi-zoom-out:before { content: "\f21a"; } diff --git a/client/lib/foundation-icons/foundation-icons.eot b/client/lib/foundation-icons/foundation-icons.eot deleted file mode 100644 index 1746ad4..0000000 Binary files a/client/lib/foundation-icons/foundation-icons.eot and /dev/null differ diff --git a/client/lib/foundation-icons/foundation-icons.svg b/client/lib/foundation-icons/foundation-icons.svg deleted file mode 100644 index 4e014ff..0000000 --- a/client/lib/foundation-icons/foundation-icons.svg +++ /dev/null @@ -1,970 +0,0 @@ - - - - - -Created by FontForge 20120731 at Fri Aug 23 09:25:55 2013 - By Jordan Humphreys -Created by Jordan Humphreys with FontForge 2.0 (http://fontforge.sf.net) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/foundation-icons.ttf b/client/lib/foundation-icons/foundation-icons.ttf deleted file mode 100644 index 6cce217..0000000 Binary files a/client/lib/foundation-icons/foundation-icons.ttf and /dev/null differ diff --git a/client/lib/foundation-icons/foundation-icons.woff b/client/lib/foundation-icons/foundation-icons.woff deleted file mode 100644 index e2cfe25..0000000 Binary files a/client/lib/foundation-icons/foundation-icons.woff and /dev/null differ diff --git a/client/lib/foundation-icons/preview.html b/client/lib/foundation-icons/preview.html deleted file mode 100644 index cb439a3..0000000 --- a/client/lib/foundation-icons/preview.html +++ /dev/null @@ -1,3798 +0,0 @@ - - - - - Foundation Icons glyphs preview - - - - - - - - -
-

Foundation Icons contains 283 glyphs:

- - -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
-
- -
-
- 12141618212436486072 -
-
- - -
-
- -
- - diff --git a/client/lib/foundation-icons/svgs/fi-address-book.svg b/client/lib/foundation-icons/svgs/fi-address-book.svg deleted file mode 100644 index 0f72e21..0000000 --- a/client/lib/foundation-icons/svgs/fi-address-book.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-alert.svg b/client/lib/foundation-icons/svgs/fi-alert.svg deleted file mode 100644 index fffefe7..0000000 --- a/client/lib/foundation-icons/svgs/fi-alert.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-align-center.svg b/client/lib/foundation-icons/svgs/fi-align-center.svg deleted file mode 100644 index 9534a4e..0000000 --- a/client/lib/foundation-icons/svgs/fi-align-center.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-align-justify.svg b/client/lib/foundation-icons/svgs/fi-align-justify.svg deleted file mode 100644 index e5cc50c..0000000 --- a/client/lib/foundation-icons/svgs/fi-align-justify.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-align-left.svg b/client/lib/foundation-icons/svgs/fi-align-left.svg deleted file mode 100644 index d911ab3..0000000 --- a/client/lib/foundation-icons/svgs/fi-align-left.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-align-right.svg b/client/lib/foundation-icons/svgs/fi-align-right.svg deleted file mode 100644 index 0921087..0000000 --- a/client/lib/foundation-icons/svgs/fi-align-right.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-anchor.svg b/client/lib/foundation-icons/svgs/fi-anchor.svg deleted file mode 100644 index 1f1ec22..0000000 --- a/client/lib/foundation-icons/svgs/fi-anchor.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-annotate.svg b/client/lib/foundation-icons/svgs/fi-annotate.svg deleted file mode 100644 index 39b87fa..0000000 --- a/client/lib/foundation-icons/svgs/fi-annotate.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-archive.svg b/client/lib/foundation-icons/svgs/fi-archive.svg deleted file mode 100644 index 560d4a7..0000000 --- a/client/lib/foundation-icons/svgs/fi-archive.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-arrow-down.svg b/client/lib/foundation-icons/svgs/fi-arrow-down.svg deleted file mode 100644 index 2ca99a8..0000000 --- a/client/lib/foundation-icons/svgs/fi-arrow-down.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-arrow-left.svg b/client/lib/foundation-icons/svgs/fi-arrow-left.svg deleted file mode 100644 index 0d54f1b..0000000 --- a/client/lib/foundation-icons/svgs/fi-arrow-left.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-arrow-right.svg b/client/lib/foundation-icons/svgs/fi-arrow-right.svg deleted file mode 100644 index 0eece6d..0000000 --- a/client/lib/foundation-icons/svgs/fi-arrow-right.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-arrow-up.svg b/client/lib/foundation-icons/svgs/fi-arrow-up.svg deleted file mode 100644 index c2c9788..0000000 --- a/client/lib/foundation-icons/svgs/fi-arrow-up.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-arrows-compress.svg b/client/lib/foundation-icons/svgs/fi-arrows-compress.svg deleted file mode 100644 index d1ec83a..0000000 --- a/client/lib/foundation-icons/svgs/fi-arrows-compress.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-arrows-expand.svg b/client/lib/foundation-icons/svgs/fi-arrows-expand.svg deleted file mode 100644 index 14795a0..0000000 --- a/client/lib/foundation-icons/svgs/fi-arrows-expand.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-arrows-in.svg b/client/lib/foundation-icons/svgs/fi-arrows-in.svg deleted file mode 100644 index 0828632..0000000 --- a/client/lib/foundation-icons/svgs/fi-arrows-in.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-arrows-out.svg b/client/lib/foundation-icons/svgs/fi-arrows-out.svg deleted file mode 100644 index df45691..0000000 --- a/client/lib/foundation-icons/svgs/fi-arrows-out.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-asl.svg b/client/lib/foundation-icons/svgs/fi-asl.svg deleted file mode 100644 index fc1b4a5..0000000 --- a/client/lib/foundation-icons/svgs/fi-asl.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-asterisk.svg b/client/lib/foundation-icons/svgs/fi-asterisk.svg deleted file mode 100644 index 6f6819d..0000000 --- a/client/lib/foundation-icons/svgs/fi-asterisk.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-at-sign.svg b/client/lib/foundation-icons/svgs/fi-at-sign.svg deleted file mode 100644 index 38253a9..0000000 --- a/client/lib/foundation-icons/svgs/fi-at-sign.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-background-color.svg b/client/lib/foundation-icons/svgs/fi-background-color.svg deleted file mode 100644 index 65843a7..0000000 --- a/client/lib/foundation-icons/svgs/fi-background-color.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-battery-empty.svg b/client/lib/foundation-icons/svgs/fi-battery-empty.svg deleted file mode 100644 index 5ef5734..0000000 --- a/client/lib/foundation-icons/svgs/fi-battery-empty.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-battery-full.svg b/client/lib/foundation-icons/svgs/fi-battery-full.svg deleted file mode 100644 index 6c33344..0000000 --- a/client/lib/foundation-icons/svgs/fi-battery-full.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-battery-half.svg b/client/lib/foundation-icons/svgs/fi-battery-half.svg deleted file mode 100644 index efd7f79..0000000 --- a/client/lib/foundation-icons/svgs/fi-battery-half.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-bitcoin-circle.svg b/client/lib/foundation-icons/svgs/fi-bitcoin-circle.svg deleted file mode 100644 index 22a62a9..0000000 --- a/client/lib/foundation-icons/svgs/fi-bitcoin-circle.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-bitcoin.svg b/client/lib/foundation-icons/svgs/fi-bitcoin.svg deleted file mode 100644 index dd5e9d8..0000000 --- a/client/lib/foundation-icons/svgs/fi-bitcoin.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-blind.svg b/client/lib/foundation-icons/svgs/fi-blind.svg deleted file mode 100644 index cde5d3f..0000000 --- a/client/lib/foundation-icons/svgs/fi-blind.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-bluetooth.svg b/client/lib/foundation-icons/svgs/fi-bluetooth.svg deleted file mode 100644 index 3c20353..0000000 --- a/client/lib/foundation-icons/svgs/fi-bluetooth.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-bold.svg b/client/lib/foundation-icons/svgs/fi-bold.svg deleted file mode 100644 index 4acb923..0000000 --- a/client/lib/foundation-icons/svgs/fi-bold.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-book-bookmark.svg b/client/lib/foundation-icons/svgs/fi-book-bookmark.svg deleted file mode 100644 index 39102a5..0000000 --- a/client/lib/foundation-icons/svgs/fi-book-bookmark.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-book.svg b/client/lib/foundation-icons/svgs/fi-book.svg deleted file mode 100644 index abdedeb..0000000 --- a/client/lib/foundation-icons/svgs/fi-book.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-bookmark.svg b/client/lib/foundation-icons/svgs/fi-bookmark.svg deleted file mode 100644 index 1248622..0000000 --- a/client/lib/foundation-icons/svgs/fi-bookmark.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-braille.svg b/client/lib/foundation-icons/svgs/fi-braille.svg deleted file mode 100644 index 30fc6cb..0000000 --- a/client/lib/foundation-icons/svgs/fi-braille.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-burst-new.svg b/client/lib/foundation-icons/svgs/fi-burst-new.svg deleted file mode 100644 index c36ea1b..0000000 --- a/client/lib/foundation-icons/svgs/fi-burst-new.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-burst-sale.svg b/client/lib/foundation-icons/svgs/fi-burst-sale.svg deleted file mode 100644 index d9d71e3..0000000 --- a/client/lib/foundation-icons/svgs/fi-burst-sale.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-burst.svg b/client/lib/foundation-icons/svgs/fi-burst.svg deleted file mode 100644 index 7360ecb..0000000 --- a/client/lib/foundation-icons/svgs/fi-burst.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-calendar.svg b/client/lib/foundation-icons/svgs/fi-calendar.svg deleted file mode 100644 index e3ace20..0000000 --- a/client/lib/foundation-icons/svgs/fi-calendar.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-camera.svg b/client/lib/foundation-icons/svgs/fi-camera.svg deleted file mode 100644 index 06e1274..0000000 --- a/client/lib/foundation-icons/svgs/fi-camera.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-check.svg b/client/lib/foundation-icons/svgs/fi-check.svg deleted file mode 100644 index 2cb7716..0000000 --- a/client/lib/foundation-icons/svgs/fi-check.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-checkbox.svg b/client/lib/foundation-icons/svgs/fi-checkbox.svg deleted file mode 100644 index 2be4e62..0000000 --- a/client/lib/foundation-icons/svgs/fi-checkbox.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-clipboard-notes.svg b/client/lib/foundation-icons/svgs/fi-clipboard-notes.svg deleted file mode 100644 index c1ac67d..0000000 --- a/client/lib/foundation-icons/svgs/fi-clipboard-notes.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-clipboard-pencil.svg b/client/lib/foundation-icons/svgs/fi-clipboard-pencil.svg deleted file mode 100644 index f3d7cd6..0000000 --- a/client/lib/foundation-icons/svgs/fi-clipboard-pencil.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-clipboard.svg b/client/lib/foundation-icons/svgs/fi-clipboard.svg deleted file mode 100644 index cc49bfd..0000000 --- a/client/lib/foundation-icons/svgs/fi-clipboard.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-clock.svg b/client/lib/foundation-icons/svgs/fi-clock.svg deleted file mode 100644 index 546747b..0000000 --- a/client/lib/foundation-icons/svgs/fi-clock.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-closed-caption.svg b/client/lib/foundation-icons/svgs/fi-closed-caption.svg deleted file mode 100644 index fd086d1..0000000 --- a/client/lib/foundation-icons/svgs/fi-closed-caption.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-cloud.svg b/client/lib/foundation-icons/svgs/fi-cloud.svg deleted file mode 100644 index 505a683..0000000 --- a/client/lib/foundation-icons/svgs/fi-cloud.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-comment-minus.svg b/client/lib/foundation-icons/svgs/fi-comment-minus.svg deleted file mode 100644 index 3aae251..0000000 --- a/client/lib/foundation-icons/svgs/fi-comment-minus.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-comment-quotes.svg b/client/lib/foundation-icons/svgs/fi-comment-quotes.svg deleted file mode 100644 index bb00453..0000000 --- a/client/lib/foundation-icons/svgs/fi-comment-quotes.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-comment-video.svg b/client/lib/foundation-icons/svgs/fi-comment-video.svg deleted file mode 100644 index 93f7403..0000000 --- a/client/lib/foundation-icons/svgs/fi-comment-video.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-comment.svg b/client/lib/foundation-icons/svgs/fi-comment.svg deleted file mode 100644 index 22de756..0000000 --- a/client/lib/foundation-icons/svgs/fi-comment.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-comments.svg b/client/lib/foundation-icons/svgs/fi-comments.svg deleted file mode 100644 index 8b0493a..0000000 --- a/client/lib/foundation-icons/svgs/fi-comments.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-compass.svg b/client/lib/foundation-icons/svgs/fi-compass.svg deleted file mode 100644 index a18687e..0000000 --- a/client/lib/foundation-icons/svgs/fi-compass.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-contrast.svg b/client/lib/foundation-icons/svgs/fi-contrast.svg deleted file mode 100644 index f3b7753..0000000 --- a/client/lib/foundation-icons/svgs/fi-contrast.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-credit-card.svg b/client/lib/foundation-icons/svgs/fi-credit-card.svg deleted file mode 100644 index 4b9eb30..0000000 --- a/client/lib/foundation-icons/svgs/fi-credit-card.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-crop.svg b/client/lib/foundation-icons/svgs/fi-crop.svg deleted file mode 100644 index fc98711..0000000 --- a/client/lib/foundation-icons/svgs/fi-crop.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-crown.svg b/client/lib/foundation-icons/svgs/fi-crown.svg deleted file mode 100644 index cc6c7ec..0000000 --- a/client/lib/foundation-icons/svgs/fi-crown.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-css3.svg b/client/lib/foundation-icons/svgs/fi-css3.svg deleted file mode 100644 index 2cf61bb..0000000 --- a/client/lib/foundation-icons/svgs/fi-css3.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-database.svg b/client/lib/foundation-icons/svgs/fi-database.svg deleted file mode 100644 index 37f5f61..0000000 --- a/client/lib/foundation-icons/svgs/fi-database.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-die-five.svg b/client/lib/foundation-icons/svgs/fi-die-five.svg deleted file mode 100644 index ab5e8fd..0000000 --- a/client/lib/foundation-icons/svgs/fi-die-five.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-die-four.svg b/client/lib/foundation-icons/svgs/fi-die-four.svg deleted file mode 100644 index 5a0505e..0000000 --- a/client/lib/foundation-icons/svgs/fi-die-four.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-die-one.svg b/client/lib/foundation-icons/svgs/fi-die-one.svg deleted file mode 100644 index e18fab5..0000000 --- a/client/lib/foundation-icons/svgs/fi-die-one.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-die-six.svg b/client/lib/foundation-icons/svgs/fi-die-six.svg deleted file mode 100644 index bddb1fc..0000000 --- a/client/lib/foundation-icons/svgs/fi-die-six.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-die-three.svg b/client/lib/foundation-icons/svgs/fi-die-three.svg deleted file mode 100644 index 609e5b2..0000000 --- a/client/lib/foundation-icons/svgs/fi-die-three.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-die-two.svg b/client/lib/foundation-icons/svgs/fi-die-two.svg deleted file mode 100644 index 62ea9ef..0000000 --- a/client/lib/foundation-icons/svgs/fi-die-two.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-dislike.svg b/client/lib/foundation-icons/svgs/fi-dislike.svg deleted file mode 100644 index eca4f08..0000000 --- a/client/lib/foundation-icons/svgs/fi-dislike.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-dollar-bill.svg b/client/lib/foundation-icons/svgs/fi-dollar-bill.svg deleted file mode 100644 index 7720d22..0000000 --- a/client/lib/foundation-icons/svgs/fi-dollar-bill.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-dollar.svg b/client/lib/foundation-icons/svgs/fi-dollar.svg deleted file mode 100644 index 176140d..0000000 --- a/client/lib/foundation-icons/svgs/fi-dollar.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-download.svg b/client/lib/foundation-icons/svgs/fi-download.svg deleted file mode 100644 index 563847e..0000000 --- a/client/lib/foundation-icons/svgs/fi-download.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-eject.svg b/client/lib/foundation-icons/svgs/fi-eject.svg deleted file mode 100644 index d3634b0..0000000 --- a/client/lib/foundation-icons/svgs/fi-eject.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-elevator.svg b/client/lib/foundation-icons/svgs/fi-elevator.svg deleted file mode 100644 index 0b21567..0000000 --- a/client/lib/foundation-icons/svgs/fi-elevator.svg +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-euro.svg b/client/lib/foundation-icons/svgs/fi-euro.svg deleted file mode 100644 index 7bb680d..0000000 --- a/client/lib/foundation-icons/svgs/fi-euro.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-eye.svg b/client/lib/foundation-icons/svgs/fi-eye.svg deleted file mode 100644 index ad36020..0000000 --- a/client/lib/foundation-icons/svgs/fi-eye.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-fast-forward.svg b/client/lib/foundation-icons/svgs/fi-fast-forward.svg deleted file mode 100644 index b54cf18..0000000 --- a/client/lib/foundation-icons/svgs/fi-fast-forward.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-female-symbol.svg b/client/lib/foundation-icons/svgs/fi-female-symbol.svg deleted file mode 100644 index 0ee8d0e..0000000 --- a/client/lib/foundation-icons/svgs/fi-female-symbol.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-female.svg b/client/lib/foundation-icons/svgs/fi-female.svg deleted file mode 100644 index cf18fa3..0000000 --- a/client/lib/foundation-icons/svgs/fi-female.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-filter.svg b/client/lib/foundation-icons/svgs/fi-filter.svg deleted file mode 100644 index 8cb75a0..0000000 --- a/client/lib/foundation-icons/svgs/fi-filter.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-first-aid.svg b/client/lib/foundation-icons/svgs/fi-first-aid.svg deleted file mode 100644 index a10b0e0..0000000 --- a/client/lib/foundation-icons/svgs/fi-first-aid.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-flag.svg b/client/lib/foundation-icons/svgs/fi-flag.svg deleted file mode 100644 index cdf74f8..0000000 --- a/client/lib/foundation-icons/svgs/fi-flag.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-folder-add.svg b/client/lib/foundation-icons/svgs/fi-folder-add.svg deleted file mode 100644 index 7dd2d81..0000000 --- a/client/lib/foundation-icons/svgs/fi-folder-add.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-folder-lock.svg b/client/lib/foundation-icons/svgs/fi-folder-lock.svg deleted file mode 100644 index 53b7745..0000000 --- a/client/lib/foundation-icons/svgs/fi-folder-lock.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-folder.svg b/client/lib/foundation-icons/svgs/fi-folder.svg deleted file mode 100644 index 4c70436..0000000 --- a/client/lib/foundation-icons/svgs/fi-folder.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-foot.svg b/client/lib/foundation-icons/svgs/fi-foot.svg deleted file mode 100644 index d02f1ab..0000000 --- a/client/lib/foundation-icons/svgs/fi-foot.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-foundation.svg b/client/lib/foundation-icons/svgs/fi-foundation.svg deleted file mode 100644 index 250140d..0000000 --- a/client/lib/foundation-icons/svgs/fi-foundation.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-graph-bar.svg b/client/lib/foundation-icons/svgs/fi-graph-bar.svg deleted file mode 100644 index c195dfb..0000000 --- a/client/lib/foundation-icons/svgs/fi-graph-bar.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-graph-horizontal.svg b/client/lib/foundation-icons/svgs/fi-graph-horizontal.svg deleted file mode 100644 index 5ef147c..0000000 --- a/client/lib/foundation-icons/svgs/fi-graph-horizontal.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-graph-pie.svg b/client/lib/foundation-icons/svgs/fi-graph-pie.svg deleted file mode 100644 index dd013db..0000000 --- a/client/lib/foundation-icons/svgs/fi-graph-pie.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-graph-trend.svg b/client/lib/foundation-icons/svgs/fi-graph-trend.svg deleted file mode 100644 index bdcf648..0000000 --- a/client/lib/foundation-icons/svgs/fi-graph-trend.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-guide-dog.svg b/client/lib/foundation-icons/svgs/fi-guide-dog.svg deleted file mode 100644 index 2b3f0f9..0000000 --- a/client/lib/foundation-icons/svgs/fi-guide-dog.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-hearing-aid.svg b/client/lib/foundation-icons/svgs/fi-hearing-aid.svg deleted file mode 100644 index ec758cb..0000000 --- a/client/lib/foundation-icons/svgs/fi-hearing-aid.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-heart.svg b/client/lib/foundation-icons/svgs/fi-heart.svg deleted file mode 100644 index 264bdba..0000000 --- a/client/lib/foundation-icons/svgs/fi-heart.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-home.svg b/client/lib/foundation-icons/svgs/fi-home.svg deleted file mode 100644 index 6fe41cb..0000000 --- a/client/lib/foundation-icons/svgs/fi-home.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-html5.svg b/client/lib/foundation-icons/svgs/fi-html5.svg deleted file mode 100644 index 8f3e747..0000000 --- a/client/lib/foundation-icons/svgs/fi-html5.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-indent-less.svg b/client/lib/foundation-icons/svgs/fi-indent-less.svg deleted file mode 100644 index 82bda2c..0000000 --- a/client/lib/foundation-icons/svgs/fi-indent-less.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-indent-more.svg b/client/lib/foundation-icons/svgs/fi-indent-more.svg deleted file mode 100644 index a0fb948..0000000 --- a/client/lib/foundation-icons/svgs/fi-indent-more.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-info.svg b/client/lib/foundation-icons/svgs/fi-info.svg deleted file mode 100644 index ded5a99..0000000 --- a/client/lib/foundation-icons/svgs/fi-info.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-italic.svg b/client/lib/foundation-icons/svgs/fi-italic.svg deleted file mode 100644 index 30a37bc..0000000 --- a/client/lib/foundation-icons/svgs/fi-italic.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-key.svg b/client/lib/foundation-icons/svgs/fi-key.svg deleted file mode 100644 index 87ca7e1..0000000 --- a/client/lib/foundation-icons/svgs/fi-key.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-laptop.svg b/client/lib/foundation-icons/svgs/fi-laptop.svg deleted file mode 100644 index 2fe3f00..0000000 --- a/client/lib/foundation-icons/svgs/fi-laptop.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-layout.svg b/client/lib/foundation-icons/svgs/fi-layout.svg deleted file mode 100644 index 39b99fb..0000000 --- a/client/lib/foundation-icons/svgs/fi-layout.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-lightbulb.svg b/client/lib/foundation-icons/svgs/fi-lightbulb.svg deleted file mode 100644 index 9fbefa3..0000000 --- a/client/lib/foundation-icons/svgs/fi-lightbulb.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-like.svg b/client/lib/foundation-icons/svgs/fi-like.svg deleted file mode 100644 index d2b932a..0000000 --- a/client/lib/foundation-icons/svgs/fi-like.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-link.svg b/client/lib/foundation-icons/svgs/fi-link.svg deleted file mode 100644 index 2de6156..0000000 --- a/client/lib/foundation-icons/svgs/fi-link.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-list-bullet.svg b/client/lib/foundation-icons/svgs/fi-list-bullet.svg deleted file mode 100644 index 83ee673..0000000 --- a/client/lib/foundation-icons/svgs/fi-list-bullet.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-list-number.svg b/client/lib/foundation-icons/svgs/fi-list-number.svg deleted file mode 100644 index d75c192..0000000 --- a/client/lib/foundation-icons/svgs/fi-list-number.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-list-thumbnails.svg b/client/lib/foundation-icons/svgs/fi-list-thumbnails.svg deleted file mode 100644 index 204ac4c..0000000 --- a/client/lib/foundation-icons/svgs/fi-list-thumbnails.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-list.svg b/client/lib/foundation-icons/svgs/fi-list.svg deleted file mode 100644 index dfb1a84..0000000 --- a/client/lib/foundation-icons/svgs/fi-list.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-lock.svg b/client/lib/foundation-icons/svgs/fi-lock.svg deleted file mode 100644 index ed09e6f..0000000 --- a/client/lib/foundation-icons/svgs/fi-lock.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-loop.svg b/client/lib/foundation-icons/svgs/fi-loop.svg deleted file mode 100644 index b48f7fd..0000000 --- a/client/lib/foundation-icons/svgs/fi-loop.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-magnifying-glass.svg b/client/lib/foundation-icons/svgs/fi-magnifying-glass.svg deleted file mode 100644 index 890e1ca..0000000 --- a/client/lib/foundation-icons/svgs/fi-magnifying-glass.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-mail.svg b/client/lib/foundation-icons/svgs/fi-mail.svg deleted file mode 100644 index 46603c7..0000000 --- a/client/lib/foundation-icons/svgs/fi-mail.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-male-female.svg b/client/lib/foundation-icons/svgs/fi-male-female.svg deleted file mode 100644 index c2a8a65..0000000 --- a/client/lib/foundation-icons/svgs/fi-male-female.svg +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-male-symbol.svg b/client/lib/foundation-icons/svgs/fi-male-symbol.svg deleted file mode 100644 index 288fb2f..0000000 --- a/client/lib/foundation-icons/svgs/fi-male-symbol.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-male.svg b/client/lib/foundation-icons/svgs/fi-male.svg deleted file mode 100644 index c0aee01..0000000 --- a/client/lib/foundation-icons/svgs/fi-male.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-map.svg b/client/lib/foundation-icons/svgs/fi-map.svg deleted file mode 100644 index b4c97d1..0000000 --- a/client/lib/foundation-icons/svgs/fi-map.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-marker.svg b/client/lib/foundation-icons/svgs/fi-marker.svg deleted file mode 100644 index 56c731e..0000000 --- a/client/lib/foundation-icons/svgs/fi-marker.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-megaphone.svg b/client/lib/foundation-icons/svgs/fi-megaphone.svg deleted file mode 100644 index 8da1135..0000000 --- a/client/lib/foundation-icons/svgs/fi-megaphone.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-microphone.svg b/client/lib/foundation-icons/svgs/fi-microphone.svg deleted file mode 100644 index 435d5b8..0000000 --- a/client/lib/foundation-icons/svgs/fi-microphone.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-minus-circle.svg b/client/lib/foundation-icons/svgs/fi-minus-circle.svg deleted file mode 100644 index e2cbf22..0000000 --- a/client/lib/foundation-icons/svgs/fi-minus-circle.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-minus.svg b/client/lib/foundation-icons/svgs/fi-minus.svg deleted file mode 100644 index 838abb2..0000000 --- a/client/lib/foundation-icons/svgs/fi-minus.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-mobile-signal.svg b/client/lib/foundation-icons/svgs/fi-mobile-signal.svg deleted file mode 100644 index 38e69c2..0000000 --- a/client/lib/foundation-icons/svgs/fi-mobile-signal.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-mobile.svg b/client/lib/foundation-icons/svgs/fi-mobile.svg deleted file mode 100644 index bed0695..0000000 --- a/client/lib/foundation-icons/svgs/fi-mobile.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-monitor.svg b/client/lib/foundation-icons/svgs/fi-monitor.svg deleted file mode 100644 index f314b90..0000000 --- a/client/lib/foundation-icons/svgs/fi-monitor.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-mountains.svg b/client/lib/foundation-icons/svgs/fi-mountains.svg deleted file mode 100644 index 1af1907..0000000 --- a/client/lib/foundation-icons/svgs/fi-mountains.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-music.svg b/client/lib/foundation-icons/svgs/fi-music.svg deleted file mode 100644 index bc21def..0000000 --- a/client/lib/foundation-icons/svgs/fi-music.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-next.svg b/client/lib/foundation-icons/svgs/fi-next.svg deleted file mode 100644 index 6740b67..0000000 --- a/client/lib/foundation-icons/svgs/fi-next.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-no-dogs.svg b/client/lib/foundation-icons/svgs/fi-no-dogs.svg deleted file mode 100644 index c1fa625..0000000 --- a/client/lib/foundation-icons/svgs/fi-no-dogs.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-no-smoking.svg b/client/lib/foundation-icons/svgs/fi-no-smoking.svg deleted file mode 100644 index 84a30d9..0000000 --- a/client/lib/foundation-icons/svgs/fi-no-smoking.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-page-add.svg b/client/lib/foundation-icons/svgs/fi-page-add.svg deleted file mode 100644 index 6933f12..0000000 --- a/client/lib/foundation-icons/svgs/fi-page-add.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-page-copy.svg b/client/lib/foundation-icons/svgs/fi-page-copy.svg deleted file mode 100644 index 5fca2fc..0000000 --- a/client/lib/foundation-icons/svgs/fi-page-copy.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-page-csv.svg b/client/lib/foundation-icons/svgs/fi-page-csv.svg deleted file mode 100644 index 4d328db..0000000 --- a/client/lib/foundation-icons/svgs/fi-page-csv.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-page-delete.svg b/client/lib/foundation-icons/svgs/fi-page-delete.svg deleted file mode 100644 index 05d1887..0000000 --- a/client/lib/foundation-icons/svgs/fi-page-delete.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-page-doc.svg b/client/lib/foundation-icons/svgs/fi-page-doc.svg deleted file mode 100644 index 7af02d4..0000000 --- a/client/lib/foundation-icons/svgs/fi-page-doc.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-page-edit.svg b/client/lib/foundation-icons/svgs/fi-page-edit.svg deleted file mode 100644 index a01917f..0000000 --- a/client/lib/foundation-icons/svgs/fi-page-edit.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-page-export-csv.svg b/client/lib/foundation-icons/svgs/fi-page-export-csv.svg deleted file mode 100644 index 67e5696..0000000 --- a/client/lib/foundation-icons/svgs/fi-page-export-csv.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-page-export-doc.svg b/client/lib/foundation-icons/svgs/fi-page-export-doc.svg deleted file mode 100644 index f1438fb..0000000 --- a/client/lib/foundation-icons/svgs/fi-page-export-doc.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-page-export-pdf.svg b/client/lib/foundation-icons/svgs/fi-page-export-pdf.svg deleted file mode 100644 index 42675b9..0000000 --- a/client/lib/foundation-icons/svgs/fi-page-export-pdf.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-page-export.svg b/client/lib/foundation-icons/svgs/fi-page-export.svg deleted file mode 100644 index eb6a234..0000000 --- a/client/lib/foundation-icons/svgs/fi-page-export.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-page-filled.svg b/client/lib/foundation-icons/svgs/fi-page-filled.svg deleted file mode 100644 index 2a096dc..0000000 --- a/client/lib/foundation-icons/svgs/fi-page-filled.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-page-multiple.svg b/client/lib/foundation-icons/svgs/fi-page-multiple.svg deleted file mode 100644 index c6ec943..0000000 --- a/client/lib/foundation-icons/svgs/fi-page-multiple.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-page-pdf.svg b/client/lib/foundation-icons/svgs/fi-page-pdf.svg deleted file mode 100644 index d895e90..0000000 --- a/client/lib/foundation-icons/svgs/fi-page-pdf.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-page-remove.svg b/client/lib/foundation-icons/svgs/fi-page-remove.svg deleted file mode 100644 index 5d480aa..0000000 --- a/client/lib/foundation-icons/svgs/fi-page-remove.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-page-search.svg b/client/lib/foundation-icons/svgs/fi-page-search.svg deleted file mode 100644 index bbe154e..0000000 --- a/client/lib/foundation-icons/svgs/fi-page-search.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-page.svg b/client/lib/foundation-icons/svgs/fi-page.svg deleted file mode 100644 index 559d58e..0000000 --- a/client/lib/foundation-icons/svgs/fi-page.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-paint-bucket.svg b/client/lib/foundation-icons/svgs/fi-paint-bucket.svg deleted file mode 100644 index 2ee3356..0000000 --- a/client/lib/foundation-icons/svgs/fi-paint-bucket.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-paperclip.svg b/client/lib/foundation-icons/svgs/fi-paperclip.svg deleted file mode 100644 index 9ee9b96..0000000 --- a/client/lib/foundation-icons/svgs/fi-paperclip.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-pause.svg b/client/lib/foundation-icons/svgs/fi-pause.svg deleted file mode 100644 index 73b5436..0000000 --- a/client/lib/foundation-icons/svgs/fi-pause.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-paw.svg b/client/lib/foundation-icons/svgs/fi-paw.svg deleted file mode 100644 index d7b9b72..0000000 --- a/client/lib/foundation-icons/svgs/fi-paw.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-paypal.svg b/client/lib/foundation-icons/svgs/fi-paypal.svg deleted file mode 100644 index 8af9c42..0000000 --- a/client/lib/foundation-icons/svgs/fi-paypal.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-pencil.svg b/client/lib/foundation-icons/svgs/fi-pencil.svg deleted file mode 100644 index b64ea86..0000000 --- a/client/lib/foundation-icons/svgs/fi-pencil.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-photo.svg b/client/lib/foundation-icons/svgs/fi-photo.svg deleted file mode 100644 index 284a758..0000000 --- a/client/lib/foundation-icons/svgs/fi-photo.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-play-circle.svg b/client/lib/foundation-icons/svgs/fi-play-circle.svg deleted file mode 100644 index 738a087..0000000 --- a/client/lib/foundation-icons/svgs/fi-play-circle.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-play-video.svg b/client/lib/foundation-icons/svgs/fi-play-video.svg deleted file mode 100644 index 143fc7c..0000000 --- a/client/lib/foundation-icons/svgs/fi-play-video.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-play.svg b/client/lib/foundation-icons/svgs/fi-play.svg deleted file mode 100644 index b916725..0000000 --- a/client/lib/foundation-icons/svgs/fi-play.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-plus.svg b/client/lib/foundation-icons/svgs/fi-plus.svg deleted file mode 100644 index 4de3110..0000000 --- a/client/lib/foundation-icons/svgs/fi-plus.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-pound.svg b/client/lib/foundation-icons/svgs/fi-pound.svg deleted file mode 100644 index b116d4d..0000000 --- a/client/lib/foundation-icons/svgs/fi-pound.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-power.svg b/client/lib/foundation-icons/svgs/fi-power.svg deleted file mode 100644 index b3073f0..0000000 --- a/client/lib/foundation-icons/svgs/fi-power.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-previous.svg b/client/lib/foundation-icons/svgs/fi-previous.svg deleted file mode 100644 index 6b391a7..0000000 --- a/client/lib/foundation-icons/svgs/fi-previous.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-price-tag.svg b/client/lib/foundation-icons/svgs/fi-price-tag.svg deleted file mode 100644 index 1511b57..0000000 --- a/client/lib/foundation-icons/svgs/fi-price-tag.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-pricetag-multiple.svg b/client/lib/foundation-icons/svgs/fi-pricetag-multiple.svg deleted file mode 100644 index 01067a6..0000000 --- a/client/lib/foundation-icons/svgs/fi-pricetag-multiple.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-print.svg b/client/lib/foundation-icons/svgs/fi-print.svg deleted file mode 100644 index 79ccd49..0000000 --- a/client/lib/foundation-icons/svgs/fi-print.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-prohibited.svg b/client/lib/foundation-icons/svgs/fi-prohibited.svg deleted file mode 100644 index f1364f5..0000000 --- a/client/lib/foundation-icons/svgs/fi-prohibited.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-projection-screen.svg b/client/lib/foundation-icons/svgs/fi-projection-screen.svg deleted file mode 100644 index 5d1e421..0000000 --- a/client/lib/foundation-icons/svgs/fi-projection-screen.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-puzzle.svg b/client/lib/foundation-icons/svgs/fi-puzzle.svg deleted file mode 100644 index cfce1c0..0000000 --- a/client/lib/foundation-icons/svgs/fi-puzzle.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-quote.svg b/client/lib/foundation-icons/svgs/fi-quote.svg deleted file mode 100644 index ad42018..0000000 --- a/client/lib/foundation-icons/svgs/fi-quote.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-record.svg b/client/lib/foundation-icons/svgs/fi-record.svg deleted file mode 100644 index a4f0056..0000000 --- a/client/lib/foundation-icons/svgs/fi-record.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-refresh.svg b/client/lib/foundation-icons/svgs/fi-refresh.svg deleted file mode 100644 index c519432..0000000 --- a/client/lib/foundation-icons/svgs/fi-refresh.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-results-demographics.svg b/client/lib/foundation-icons/svgs/fi-results-demographics.svg deleted file mode 100644 index cddbea7..0000000 --- a/client/lib/foundation-icons/svgs/fi-results-demographics.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-results.svg b/client/lib/foundation-icons/svgs/fi-results.svg deleted file mode 100644 index 68e9908..0000000 --- a/client/lib/foundation-icons/svgs/fi-results.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-rewind-ten.svg b/client/lib/foundation-icons/svgs/fi-rewind-ten.svg deleted file mode 100644 index e710526..0000000 --- a/client/lib/foundation-icons/svgs/fi-rewind-ten.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-rewind.svg b/client/lib/foundation-icons/svgs/fi-rewind.svg deleted file mode 100644 index 8385736..0000000 --- a/client/lib/foundation-icons/svgs/fi-rewind.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-rss.svg b/client/lib/foundation-icons/svgs/fi-rss.svg deleted file mode 100644 index 51a675e..0000000 --- a/client/lib/foundation-icons/svgs/fi-rss.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-safety-cone.svg b/client/lib/foundation-icons/svgs/fi-safety-cone.svg deleted file mode 100644 index 7b8af9b..0000000 --- a/client/lib/foundation-icons/svgs/fi-safety-cone.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-save.svg b/client/lib/foundation-icons/svgs/fi-save.svg deleted file mode 100644 index b2247a5..0000000 --- a/client/lib/foundation-icons/svgs/fi-save.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-share.svg b/client/lib/foundation-icons/svgs/fi-share.svg deleted file mode 100644 index a083a45..0000000 --- a/client/lib/foundation-icons/svgs/fi-share.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-sheriff-badge.svg b/client/lib/foundation-icons/svgs/fi-sheriff-badge.svg deleted file mode 100644 index 46387b3..0000000 --- a/client/lib/foundation-icons/svgs/fi-sheriff-badge.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-shield.svg b/client/lib/foundation-icons/svgs/fi-shield.svg deleted file mode 100644 index 5874c2b..0000000 --- a/client/lib/foundation-icons/svgs/fi-shield.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-shopping-bag.svg b/client/lib/foundation-icons/svgs/fi-shopping-bag.svg deleted file mode 100644 index 43126aa..0000000 --- a/client/lib/foundation-icons/svgs/fi-shopping-bag.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-shopping-cart.svg b/client/lib/foundation-icons/svgs/fi-shopping-cart.svg deleted file mode 100644 index d4af8d8..0000000 --- a/client/lib/foundation-icons/svgs/fi-shopping-cart.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-shuffle.svg b/client/lib/foundation-icons/svgs/fi-shuffle.svg deleted file mode 100644 index 9baf4f4..0000000 --- a/client/lib/foundation-icons/svgs/fi-shuffle.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-skull.svg b/client/lib/foundation-icons/svgs/fi-skull.svg deleted file mode 100644 index 72061b7..0000000 --- a/client/lib/foundation-icons/svgs/fi-skull.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-500px.svg b/client/lib/foundation-icons/svgs/fi-social-500px.svg deleted file mode 100644 index baac418..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-500px.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-adobe.svg b/client/lib/foundation-icons/svgs/fi-social-adobe.svg deleted file mode 100644 index 1f70a5a..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-adobe.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-amazon.svg b/client/lib/foundation-icons/svgs/fi-social-amazon.svg deleted file mode 100644 index ebf39ce..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-amazon.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-android.svg b/client/lib/foundation-icons/svgs/fi-social-android.svg deleted file mode 100644 index 0c7e5f2..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-android.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-apple.svg b/client/lib/foundation-icons/svgs/fi-social-apple.svg deleted file mode 100644 index e79b3ee..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-apple.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-behance.svg b/client/lib/foundation-icons/svgs/fi-social-behance.svg deleted file mode 100644 index afb4e01..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-behance.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-bing.svg b/client/lib/foundation-icons/svgs/fi-social-bing.svg deleted file mode 100644 index 8db7124..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-bing.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-blogger.svg b/client/lib/foundation-icons/svgs/fi-social-blogger.svg deleted file mode 100644 index 834de1b..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-blogger.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-delicious.svg b/client/lib/foundation-icons/svgs/fi-social-delicious.svg deleted file mode 100644 index 5da3dcb..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-delicious.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-designer-news.svg b/client/lib/foundation-icons/svgs/fi-social-designer-news.svg deleted file mode 100644 index 1871ebc..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-designer-news.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-deviant-art.svg b/client/lib/foundation-icons/svgs/fi-social-deviant-art.svg deleted file mode 100644 index a2672b3..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-deviant-art.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-digg.svg b/client/lib/foundation-icons/svgs/fi-social-digg.svg deleted file mode 100644 index 7613993..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-digg.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-dribbble.svg b/client/lib/foundation-icons/svgs/fi-social-dribbble.svg deleted file mode 100644 index 1588427..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-dribbble.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-drive.svg b/client/lib/foundation-icons/svgs/fi-social-drive.svg deleted file mode 100644 index aadf6af..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-drive.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-dropbox.svg b/client/lib/foundation-icons/svgs/fi-social-dropbox.svg deleted file mode 100644 index cbbdf88..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-dropbox.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-evernote.svg b/client/lib/foundation-icons/svgs/fi-social-evernote.svg deleted file mode 100644 index accb31c..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-evernote.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-facebook.svg b/client/lib/foundation-icons/svgs/fi-social-facebook.svg deleted file mode 100644 index cd70aee..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-facebook.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-flickr.svg b/client/lib/foundation-icons/svgs/fi-social-flickr.svg deleted file mode 100644 index 93e27e8..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-flickr.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-forrst.svg b/client/lib/foundation-icons/svgs/fi-social-forrst.svg deleted file mode 100644 index 7a9f9b6..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-forrst.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-foursquare.svg b/client/lib/foundation-icons/svgs/fi-social-foursquare.svg deleted file mode 100644 index 223fe3d..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-foursquare.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-game-center.svg b/client/lib/foundation-icons/svgs/fi-social-game-center.svg deleted file mode 100644 index 6498f49..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-game-center.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-github.svg b/client/lib/foundation-icons/svgs/fi-social-github.svg deleted file mode 100644 index 9628d35..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-github.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-google-plus.svg b/client/lib/foundation-icons/svgs/fi-social-google-plus.svg deleted file mode 100644 index 586e6b9..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-google-plus.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-hacker-news.svg b/client/lib/foundation-icons/svgs/fi-social-hacker-news.svg deleted file mode 100644 index bccea9a..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-hacker-news.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-hi5.svg b/client/lib/foundation-icons/svgs/fi-social-hi5.svg deleted file mode 100644 index 7554b82..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-hi5.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-instagram.svg b/client/lib/foundation-icons/svgs/fi-social-instagram.svg deleted file mode 100644 index c806e9b..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-instagram.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-joomla.svg b/client/lib/foundation-icons/svgs/fi-social-joomla.svg deleted file mode 100644 index 189497a..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-joomla.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-lastfm.svg b/client/lib/foundation-icons/svgs/fi-social-lastfm.svg deleted file mode 100644 index d940db6..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-lastfm.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-linkedin.svg b/client/lib/foundation-icons/svgs/fi-social-linkedin.svg deleted file mode 100644 index fdfec24..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-linkedin.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-medium.svg b/client/lib/foundation-icons/svgs/fi-social-medium.svg deleted file mode 100644 index 0926027..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-medium.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-myspace.svg b/client/lib/foundation-icons/svgs/fi-social-myspace.svg deleted file mode 100644 index 4fe0544..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-myspace.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-orkut.svg b/client/lib/foundation-icons/svgs/fi-social-orkut.svg deleted file mode 100644 index 3f23927..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-orkut.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-path.svg b/client/lib/foundation-icons/svgs/fi-social-path.svg deleted file mode 100644 index e0ee2be..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-path.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-picasa.svg b/client/lib/foundation-icons/svgs/fi-social-picasa.svg deleted file mode 100644 index cefa711..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-picasa.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-pinterest.svg b/client/lib/foundation-icons/svgs/fi-social-pinterest.svg deleted file mode 100644 index 1f49e8e..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-pinterest.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-rdio.svg b/client/lib/foundation-icons/svgs/fi-social-rdio.svg deleted file mode 100644 index ff43cb0..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-rdio.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-reddit.svg b/client/lib/foundation-icons/svgs/fi-social-reddit.svg deleted file mode 100644 index efc393b..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-reddit.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-skillshare.svg b/client/lib/foundation-icons/svgs/fi-social-skillshare.svg deleted file mode 100644 index b711a58..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-skillshare.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-skype.svg b/client/lib/foundation-icons/svgs/fi-social-skype.svg deleted file mode 100644 index 46d1cf1..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-skype.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-smashing-mag.svg b/client/lib/foundation-icons/svgs/fi-social-smashing-mag.svg deleted file mode 100644 index ca5a3f8..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-smashing-mag.svg +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-snapchat.svg b/client/lib/foundation-icons/svgs/fi-social-snapchat.svg deleted file mode 100644 index 95f87c5..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-snapchat.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-spotify.svg b/client/lib/foundation-icons/svgs/fi-social-spotify.svg deleted file mode 100644 index 065576c..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-spotify.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-squidoo.svg b/client/lib/foundation-icons/svgs/fi-social-squidoo.svg deleted file mode 100644 index 44fa41f..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-squidoo.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-stack-overflow.svg b/client/lib/foundation-icons/svgs/fi-social-stack-overflow.svg deleted file mode 100644 index e5fe832..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-stack-overflow.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-steam.svg b/client/lib/foundation-icons/svgs/fi-social-steam.svg deleted file mode 100644 index 16e67ad..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-steam.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-stumbleupon.svg b/client/lib/foundation-icons/svgs/fi-social-stumbleupon.svg deleted file mode 100644 index 98c6b93..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-stumbleupon.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-treehouse.svg b/client/lib/foundation-icons/svgs/fi-social-treehouse.svg deleted file mode 100644 index fb7e90d..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-treehouse.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-tumblr.svg b/client/lib/foundation-icons/svgs/fi-social-tumblr.svg deleted file mode 100644 index 2ebc4ee..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-tumblr.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-twitter.svg b/client/lib/foundation-icons/svgs/fi-social-twitter.svg deleted file mode 100644 index b347224..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-twitter.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-vimeo.svg b/client/lib/foundation-icons/svgs/fi-social-vimeo.svg deleted file mode 100644 index f9ced41..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-vimeo.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-windows.svg b/client/lib/foundation-icons/svgs/fi-social-windows.svg deleted file mode 100644 index 57ae0af..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-windows.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-xbox.svg b/client/lib/foundation-icons/svgs/fi-social-xbox.svg deleted file mode 100644 index a245044..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-xbox.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-yahoo.svg b/client/lib/foundation-icons/svgs/fi-social-yahoo.svg deleted file mode 100644 index 42a42a9..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-yahoo.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-yelp.svg b/client/lib/foundation-icons/svgs/fi-social-yelp.svg deleted file mode 100644 index db257e8..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-yelp.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-youtube.svg b/client/lib/foundation-icons/svgs/fi-social-youtube.svg deleted file mode 100644 index f488af5..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-youtube.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-zerply.svg b/client/lib/foundation-icons/svgs/fi-social-zerply.svg deleted file mode 100644 index 2e98b49..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-zerply.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-social-zurb.svg b/client/lib/foundation-icons/svgs/fi-social-zurb.svg deleted file mode 100644 index 6447610..0000000 --- a/client/lib/foundation-icons/svgs/fi-social-zurb.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-sound.svg b/client/lib/foundation-icons/svgs/fi-sound.svg deleted file mode 100644 index ce3fca2..0000000 --- a/client/lib/foundation-icons/svgs/fi-sound.svg +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-star.svg b/client/lib/foundation-icons/svgs/fi-star.svg deleted file mode 100644 index da9bc09..0000000 --- a/client/lib/foundation-icons/svgs/fi-star.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-stop.svg b/client/lib/foundation-icons/svgs/fi-stop.svg deleted file mode 100644 index 666cd75..0000000 --- a/client/lib/foundation-icons/svgs/fi-stop.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-strikethrough.svg b/client/lib/foundation-icons/svgs/fi-strikethrough.svg deleted file mode 100644 index dd473c9..0000000 --- a/client/lib/foundation-icons/svgs/fi-strikethrough.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-subscript.svg b/client/lib/foundation-icons/svgs/fi-subscript.svg deleted file mode 100644 index 2e96aa2..0000000 --- a/client/lib/foundation-icons/svgs/fi-subscript.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-superscript.svg b/client/lib/foundation-icons/svgs/fi-superscript.svg deleted file mode 100644 index f4f0ba7..0000000 --- a/client/lib/foundation-icons/svgs/fi-superscript.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-tablet-landscape.svg b/client/lib/foundation-icons/svgs/fi-tablet-landscape.svg deleted file mode 100644 index 4480d3e..0000000 --- a/client/lib/foundation-icons/svgs/fi-tablet-landscape.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-tablet-portrait.svg b/client/lib/foundation-icons/svgs/fi-tablet-portrait.svg deleted file mode 100644 index 8488106..0000000 --- a/client/lib/foundation-icons/svgs/fi-tablet-portrait.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-target-two.svg b/client/lib/foundation-icons/svgs/fi-target-two.svg deleted file mode 100644 index 15059c4..0000000 --- a/client/lib/foundation-icons/svgs/fi-target-two.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-target.svg b/client/lib/foundation-icons/svgs/fi-target.svg deleted file mode 100644 index b1a0289..0000000 --- a/client/lib/foundation-icons/svgs/fi-target.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-telephone-accessible.svg b/client/lib/foundation-icons/svgs/fi-telephone-accessible.svg deleted file mode 100644 index 30b2b73..0000000 --- a/client/lib/foundation-icons/svgs/fi-telephone-accessible.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-telephone.svg b/client/lib/foundation-icons/svgs/fi-telephone.svg deleted file mode 100644 index 828a894..0000000 --- a/client/lib/foundation-icons/svgs/fi-telephone.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-text-color.svg b/client/lib/foundation-icons/svgs/fi-text-color.svg deleted file mode 100644 index 5a73110..0000000 --- a/client/lib/foundation-icons/svgs/fi-text-color.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-thumbnails.svg b/client/lib/foundation-icons/svgs/fi-thumbnails.svg deleted file mode 100644 index b2107cf..0000000 --- a/client/lib/foundation-icons/svgs/fi-thumbnails.svg +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-ticket.svg b/client/lib/foundation-icons/svgs/fi-ticket.svg deleted file mode 100644 index 5f55c64..0000000 --- a/client/lib/foundation-icons/svgs/fi-ticket.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-torso-business.svg b/client/lib/foundation-icons/svgs/fi-torso-business.svg deleted file mode 100644 index 27f09cf..0000000 --- a/client/lib/foundation-icons/svgs/fi-torso-business.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-torso-female.svg b/client/lib/foundation-icons/svgs/fi-torso-female.svg deleted file mode 100644 index d51dfd4..0000000 --- a/client/lib/foundation-icons/svgs/fi-torso-female.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-torso.svg b/client/lib/foundation-icons/svgs/fi-torso.svg deleted file mode 100644 index fd640c3..0000000 --- a/client/lib/foundation-icons/svgs/fi-torso.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-torsos-all-female.svg b/client/lib/foundation-icons/svgs/fi-torsos-all-female.svg deleted file mode 100644 index 74d8e46..0000000 --- a/client/lib/foundation-icons/svgs/fi-torsos-all-female.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-torsos-all.svg b/client/lib/foundation-icons/svgs/fi-torsos-all.svg deleted file mode 100644 index 7fd97f0..0000000 --- a/client/lib/foundation-icons/svgs/fi-torsos-all.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-torsos-female-male.svg b/client/lib/foundation-icons/svgs/fi-torsos-female-male.svg deleted file mode 100644 index 637e572..0000000 --- a/client/lib/foundation-icons/svgs/fi-torsos-female-male.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-torsos-male-female.svg b/client/lib/foundation-icons/svgs/fi-torsos-male-female.svg deleted file mode 100644 index 2f67e0b..0000000 --- a/client/lib/foundation-icons/svgs/fi-torsos-male-female.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-torsos.svg b/client/lib/foundation-icons/svgs/fi-torsos.svg deleted file mode 100644 index 37873c6..0000000 --- a/client/lib/foundation-icons/svgs/fi-torsos.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-trash.svg b/client/lib/foundation-icons/svgs/fi-trash.svg deleted file mode 100644 index 3955826..0000000 --- a/client/lib/foundation-icons/svgs/fi-trash.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-trees.svg b/client/lib/foundation-icons/svgs/fi-trees.svg deleted file mode 100644 index 55bc86e..0000000 --- a/client/lib/foundation-icons/svgs/fi-trees.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-trophy.svg b/client/lib/foundation-icons/svgs/fi-trophy.svg deleted file mode 100644 index 722c167..0000000 --- a/client/lib/foundation-icons/svgs/fi-trophy.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-underline.svg b/client/lib/foundation-icons/svgs/fi-underline.svg deleted file mode 100644 index adb2fd9..0000000 --- a/client/lib/foundation-icons/svgs/fi-underline.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-universal-access.svg b/client/lib/foundation-icons/svgs/fi-universal-access.svg deleted file mode 100644 index 5c2dca0..0000000 --- a/client/lib/foundation-icons/svgs/fi-universal-access.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-unlink.svg b/client/lib/foundation-icons/svgs/fi-unlink.svg deleted file mode 100644 index fbc7851..0000000 --- a/client/lib/foundation-icons/svgs/fi-unlink.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-unlock.svg b/client/lib/foundation-icons/svgs/fi-unlock.svg deleted file mode 100644 index c94929d..0000000 --- a/client/lib/foundation-icons/svgs/fi-unlock.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-upload-cloud.svg b/client/lib/foundation-icons/svgs/fi-upload-cloud.svg deleted file mode 100644 index cc2d135..0000000 --- a/client/lib/foundation-icons/svgs/fi-upload-cloud.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-upload.svg b/client/lib/foundation-icons/svgs/fi-upload.svg deleted file mode 100644 index 0536c3f..0000000 --- a/client/lib/foundation-icons/svgs/fi-upload.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-usb.svg b/client/lib/foundation-icons/svgs/fi-usb.svg deleted file mode 100644 index 5f25dd8..0000000 --- a/client/lib/foundation-icons/svgs/fi-usb.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-video.svg b/client/lib/foundation-icons/svgs/fi-video.svg deleted file mode 100644 index 2ba31d7..0000000 --- a/client/lib/foundation-icons/svgs/fi-video.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-volume-none.svg b/client/lib/foundation-icons/svgs/fi-volume-none.svg deleted file mode 100644 index 220f83f..0000000 --- a/client/lib/foundation-icons/svgs/fi-volume-none.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-volume-strike.svg b/client/lib/foundation-icons/svgs/fi-volume-strike.svg deleted file mode 100644 index 6f182e6..0000000 --- a/client/lib/foundation-icons/svgs/fi-volume-strike.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-volume.svg b/client/lib/foundation-icons/svgs/fi-volume.svg deleted file mode 100644 index e435d96..0000000 --- a/client/lib/foundation-icons/svgs/fi-volume.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-web.svg b/client/lib/foundation-icons/svgs/fi-web.svg deleted file mode 100644 index c7a2819..0000000 --- a/client/lib/foundation-icons/svgs/fi-web.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-wheelchair.svg b/client/lib/foundation-icons/svgs/fi-wheelchair.svg deleted file mode 100644 index efecd71..0000000 --- a/client/lib/foundation-icons/svgs/fi-wheelchair.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-widget.svg b/client/lib/foundation-icons/svgs/fi-widget.svg deleted file mode 100644 index 925967f..0000000 --- a/client/lib/foundation-icons/svgs/fi-widget.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-wrench.svg b/client/lib/foundation-icons/svgs/fi-wrench.svg deleted file mode 100644 index cd0bcfc..0000000 --- a/client/lib/foundation-icons/svgs/fi-wrench.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-x-circle.svg b/client/lib/foundation-icons/svgs/fi-x-circle.svg deleted file mode 100644 index c037c71..0000000 --- a/client/lib/foundation-icons/svgs/fi-x-circle.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-x.svg b/client/lib/foundation-icons/svgs/fi-x.svg deleted file mode 100644 index 85398ba..0000000 --- a/client/lib/foundation-icons/svgs/fi-x.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-yen.svg b/client/lib/foundation-icons/svgs/fi-yen.svg deleted file mode 100644 index feffe66..0000000 --- a/client/lib/foundation-icons/svgs/fi-yen.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-zoom-in.svg b/client/lib/foundation-icons/svgs/fi-zoom-in.svg deleted file mode 100644 index 6b4213d..0000000 --- a/client/lib/foundation-icons/svgs/fi-zoom-in.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - diff --git a/client/lib/foundation-icons/svgs/fi-zoom-out.svg b/client/lib/foundation-icons/svgs/fi-zoom-out.svg deleted file mode 100644 index 0c07df7..0000000 --- a/client/lib/foundation-icons/svgs/fi-zoom-out.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - diff --git a/client/lib/foundation/css/foundation.css b/client/lib/foundation/css/foundation.css deleted file mode 100644 index b9d3059..0000000 --- a/client/lib/foundation/css/foundation.css +++ /dev/null @@ -1,5471 +0,0 @@ -meta.foundation-version { - font-family: "/5.3.0/"; } - -meta.foundation-mq-small { - font-family: "/only screen/"; - width: 0em; } - -meta.foundation-mq-medium { - font-family: "/only screen and (min-width:40.063em)/"; - width: 40.063em; } - -meta.foundation-mq-large { - font-family: "/only screen and (min-width:64.063em)/"; - width: 64.063em; } - -meta.foundation-mq-xlarge { - font-family: "/only screen and (min-width:90.063em)/"; - width: 90.063em; } - -meta.foundation-mq-xxlarge { - font-family: "/only screen and (min-width:120.063em)/"; - width: 120.063em; } - -meta.foundation-data-attribute-namespace { - font-family: false; } - -html, body { - height: 100%; } - -*, -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; } - -html, -body { - font-size: 100%; } - -body { - background: white; - color: #222222; - padding: 0; - margin: 0; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; - font-weight: normal; - font-style: normal; - line-height: 1; - position: relative; - cursor: default; } - -a:hover { - cursor: pointer; } - -img { - max-width: 100%; - height: auto; } - -img { - -ms-interpolation-mode: bicubic; } - -#map_canvas img, -#map_canvas embed, -#map_canvas object, -.map_canvas img, -.map_canvas embed, -.map_canvas object { - max-width: none !important; } - -.left { - float: left !important; } - -.right { - float: right !important; } - -.clearfix:before, .clearfix:after { - content: " "; - display: table; } -.clearfix:after { - clear: both; } - -.hide { - display: none; } - -.antialiased { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; } - -img { - display: inline-block; - vertical-align: middle; } - -textarea { - height: auto; - min-height: 50px; } - -select { - width: 100%; } - -.row { - width: 100%; - margin-left: auto; - margin-right: auto; - margin-top: 0; - margin-bottom: 0; - max-width: 62.5rem; } - .row:before, .row:after { - content: " "; - display: table; } - .row:after { - clear: both; } - .row.collapse > .column, - .row.collapse > .columns { - padding-left: 0; - padding-right: 0; } - .row.collapse .row { - margin-left: 0; - margin-right: 0; } - .row .row { - width: auto; - margin-left: -0.9375rem; - margin-right: -0.9375rem; - margin-top: 0; - margin-bottom: 0; - max-width: none; } - .row .row:before, .row .row:after { - content: " "; - display: table; } - .row .row:after { - clear: both; } - .row .row.collapse { - width: auto; - margin: 0; - max-width: none; } - .row .row.collapse:before, .row .row.collapse:after { - content: " "; - display: table; } - .row .row.collapse:after { - clear: both; } - -.column, -.columns { - padding-left: 0.9375rem; - padding-right: 0.9375rem; - width: 100%; - float: left; } - -[class*="column"] + [class*="column"]:last-child { - float: right; } - -[class*="column"] + [class*="column"].end { - float: left; } - -@media only screen { - .small-push-0 { - position: relative; - left: 0%; - right: auto; } - - .small-pull-0 { - position: relative; - right: 0%; - left: auto; } - - .small-push-1 { - position: relative; - left: 8.33333%; - right: auto; } - - .small-pull-1 { - position: relative; - right: 8.33333%; - left: auto; } - - .small-push-2 { - position: relative; - left: 16.66667%; - right: auto; } - - .small-pull-2 { - position: relative; - right: 16.66667%; - left: auto; } - - .small-push-3 { - position: relative; - left: 25%; - right: auto; } - - .small-pull-3 { - position: relative; - right: 25%; - left: auto; } - - .small-push-4 { - position: relative; - left: 33.33333%; - right: auto; } - - .small-pull-4 { - position: relative; - right: 33.33333%; - left: auto; } - - .small-push-5 { - position: relative; - left: 41.66667%; - right: auto; } - - .small-pull-5 { - position: relative; - right: 41.66667%; - left: auto; } - - .small-push-6 { - position: relative; - left: 50%; - right: auto; } - - .small-pull-6 { - position: relative; - right: 50%; - left: auto; } - - .small-push-7 { - position: relative; - left: 58.33333%; - right: auto; } - - .small-pull-7 { - position: relative; - right: 58.33333%; - left: auto; } - - .small-push-8 { - position: relative; - left: 66.66667%; - right: auto; } - - .small-pull-8 { - position: relative; - right: 66.66667%; - left: auto; } - - .small-push-9 { - position: relative; - left: 75%; - right: auto; } - - .small-pull-9 { - position: relative; - right: 75%; - left: auto; } - - .small-push-10 { - position: relative; - left: 83.33333%; - right: auto; } - - .small-pull-10 { - position: relative; - right: 83.33333%; - left: auto; } - - .small-push-11 { - position: relative; - left: 91.66667%; - right: auto; } - - .small-pull-11 { - position: relative; - right: 91.66667%; - left: auto; } - - .column, - .columns { - position: relative; - padding-left: 0.9375rem; - padding-right: 0.9375rem; - float: left; } - - .small-1 { - width: 8.33333%; } - - .small-2 { - width: 16.66667%; } - - .small-3 { - width: 25%; } - - .small-4 { - width: 33.33333%; } - - .small-5 { - width: 41.66667%; } - - .small-6 { - width: 50%; } - - .small-7 { - width: 58.33333%; } - - .small-8 { - width: 66.66667%; } - - .small-9 { - width: 75%; } - - .small-10 { - width: 83.33333%; } - - .small-11 { - width: 91.66667%; } - - .small-12 { - width: 100%; } - - .small-offset-0 { - margin-left: 0% !important; } - - .small-offset-1 { - margin-left: 8.33333% !important; } - - .small-offset-2 { - margin-left: 16.66667% !important; } - - .small-offset-3 { - margin-left: 25% !important; } - - .small-offset-4 { - margin-left: 33.33333% !important; } - - .small-offset-5 { - margin-left: 41.66667% !important; } - - .small-offset-6 { - margin-left: 50% !important; } - - .small-offset-7 { - margin-left: 58.33333% !important; } - - .small-offset-8 { - margin-left: 66.66667% !important; } - - .small-offset-9 { - margin-left: 75% !important; } - - .small-offset-10 { - margin-left: 83.33333% !important; } - - .small-offset-11 { - margin-left: 91.66667% !important; } - - .small-reset-order { - margin-left: 0; - margin-right: 0; - left: auto; - right: auto; - float: left; } - - .column.small-centered, - .columns.small-centered { - margin-left: auto; - margin-right: auto; - float: none; } - - .column.small-uncentered, - .columns.small-uncentered { - margin-left: 0; - margin-right: 0; - float: left; } - - .column.small-centered:last-child, - .columns.small-centered:last-child { - float: none; } - - .column.small-uncentered:last-child, - .columns.small-uncentered:last-child { - float: left; } - - .column.small-uncentered.opposite, - .columns.small-uncentered.opposite { - float: right; } } -@media only screen and (min-width: 40.063em) { - .medium-push-0 { - position: relative; - left: 0%; - right: auto; } - - .medium-pull-0 { - position: relative; - right: 0%; - left: auto; } - - .medium-push-1 { - position: relative; - left: 8.33333%; - right: auto; } - - .medium-pull-1 { - position: relative; - right: 8.33333%; - left: auto; } - - .medium-push-2 { - position: relative; - left: 16.66667%; - right: auto; } - - .medium-pull-2 { - position: relative; - right: 16.66667%; - left: auto; } - - .medium-push-3 { - position: relative; - left: 25%; - right: auto; } - - .medium-pull-3 { - position: relative; - right: 25%; - left: auto; } - - .medium-push-4 { - position: relative; - left: 33.33333%; - right: auto; } - - .medium-pull-4 { - position: relative; - right: 33.33333%; - left: auto; } - - .medium-push-5 { - position: relative; - left: 41.66667%; - right: auto; } - - .medium-pull-5 { - position: relative; - right: 41.66667%; - left: auto; } - - .medium-push-6 { - position: relative; - left: 50%; - right: auto; } - - .medium-pull-6 { - position: relative; - right: 50%; - left: auto; } - - .medium-push-7 { - position: relative; - left: 58.33333%; - right: auto; } - - .medium-pull-7 { - position: relative; - right: 58.33333%; - left: auto; } - - .medium-push-8 { - position: relative; - left: 66.66667%; - right: auto; } - - .medium-pull-8 { - position: relative; - right: 66.66667%; - left: auto; } - - .medium-push-9 { - position: relative; - left: 75%; - right: auto; } - - .medium-pull-9 { - position: relative; - right: 75%; - left: auto; } - - .medium-push-10 { - position: relative; - left: 83.33333%; - right: auto; } - - .medium-pull-10 { - position: relative; - right: 83.33333%; - left: auto; } - - .medium-push-11 { - position: relative; - left: 91.66667%; - right: auto; } - - .medium-pull-11 { - position: relative; - right: 91.66667%; - left: auto; } - - .column, - .columns { - position: relative; - padding-left: 0.9375rem; - padding-right: 0.9375rem; - float: left; } - - .medium-1 { - width: 8.33333%; } - - .medium-2 { - width: 16.66667%; } - - .medium-3 { - width: 25%; } - - .medium-4 { - width: 33.33333%; } - - .medium-5 { - width: 41.66667%; } - - .medium-6 { - width: 50%; } - - .medium-7 { - width: 58.33333%; } - - .medium-8 { - width: 66.66667%; } - - .medium-9 { - width: 75%; } - - .medium-10 { - width: 83.33333%; } - - .medium-11 { - width: 91.66667%; } - - .medium-12 { - width: 100%; } - - .medium-offset-0 { - margin-left: 0% !important; } - - .medium-offset-1 { - margin-left: 8.33333% !important; } - - .medium-offset-2 { - margin-left: 16.66667% !important; } - - .medium-offset-3 { - margin-left: 25% !important; } - - .medium-offset-4 { - margin-left: 33.33333% !important; } - - .medium-offset-5 { - margin-left: 41.66667% !important; } - - .medium-offset-6 { - margin-left: 50% !important; } - - .medium-offset-7 { - margin-left: 58.33333% !important; } - - .medium-offset-8 { - margin-left: 66.66667% !important; } - - .medium-offset-9 { - margin-left: 75% !important; } - - .medium-offset-10 { - margin-left: 83.33333% !important; } - - .medium-offset-11 { - margin-left: 91.66667% !important; } - - .medium-reset-order { - margin-left: 0; - margin-right: 0; - left: auto; - right: auto; - float: left; } - - .column.medium-centered, - .columns.medium-centered { - margin-left: auto; - margin-right: auto; - float: none; } - - .column.medium-uncentered, - .columns.medium-uncentered { - margin-left: 0; - margin-right: 0; - float: left; } - - .column.medium-centered:last-child, - .columns.medium-centered:last-child { - float: none; } - - .column.medium-uncentered:last-child, - .columns.medium-uncentered:last-child { - float: left; } - - .column.medium-uncentered.opposite, - .columns.medium-uncentered.opposite { - float: right; } - - .push-0 { - position: relative; - left: 0%; - right: auto; } - - .pull-0 { - position: relative; - right: 0%; - left: auto; } - - .push-1 { - position: relative; - left: 8.33333%; - right: auto; } - - .pull-1 { - position: relative; - right: 8.33333%; - left: auto; } - - .push-2 { - position: relative; - left: 16.66667%; - right: auto; } - - .pull-2 { - position: relative; - right: 16.66667%; - left: auto; } - - .push-3 { - position: relative; - left: 25%; - right: auto; } - - .pull-3 { - position: relative; - right: 25%; - left: auto; } - - .push-4 { - position: relative; - left: 33.33333%; - right: auto; } - - .pull-4 { - position: relative; - right: 33.33333%; - left: auto; } - - .push-5 { - position: relative; - left: 41.66667%; - right: auto; } - - .pull-5 { - position: relative; - right: 41.66667%; - left: auto; } - - .push-6 { - position: relative; - left: 50%; - right: auto; } - - .pull-6 { - position: relative; - right: 50%; - left: auto; } - - .push-7 { - position: relative; - left: 58.33333%; - right: auto; } - - .pull-7 { - position: relative; - right: 58.33333%; - left: auto; } - - .push-8 { - position: relative; - left: 66.66667%; - right: auto; } - - .pull-8 { - position: relative; - right: 66.66667%; - left: auto; } - - .push-9 { - position: relative; - left: 75%; - right: auto; } - - .pull-9 { - position: relative; - right: 75%; - left: auto; } - - .push-10 { - position: relative; - left: 83.33333%; - right: auto; } - - .pull-10 { - position: relative; - right: 83.33333%; - left: auto; } - - .push-11 { - position: relative; - left: 91.66667%; - right: auto; } - - .pull-11 { - position: relative; - right: 91.66667%; - left: auto; } } -@media only screen and (min-width: 64.063em) { - .large-push-0 { - position: relative; - left: 0%; - right: auto; } - - .large-pull-0 { - position: relative; - right: 0%; - left: auto; } - - .large-push-1 { - position: relative; - left: 8.33333%; - right: auto; } - - .large-pull-1 { - position: relative; - right: 8.33333%; - left: auto; } - - .large-push-2 { - position: relative; - left: 16.66667%; - right: auto; } - - .large-pull-2 { - position: relative; - right: 16.66667%; - left: auto; } - - .large-push-3 { - position: relative; - left: 25%; - right: auto; } - - .large-pull-3 { - position: relative; - right: 25%; - left: auto; } - - .large-push-4 { - position: relative; - left: 33.33333%; - right: auto; } - - .large-pull-4 { - position: relative; - right: 33.33333%; - left: auto; } - - .large-push-5 { - position: relative; - left: 41.66667%; - right: auto; } - - .large-pull-5 { - position: relative; - right: 41.66667%; - left: auto; } - - .large-push-6 { - position: relative; - left: 50%; - right: auto; } - - .large-pull-6 { - position: relative; - right: 50%; - left: auto; } - - .large-push-7 { - position: relative; - left: 58.33333%; - right: auto; } - - .large-pull-7 { - position: relative; - right: 58.33333%; - left: auto; } - - .large-push-8 { - position: relative; - left: 66.66667%; - right: auto; } - - .large-pull-8 { - position: relative; - right: 66.66667%; - left: auto; } - - .large-push-9 { - position: relative; - left: 75%; - right: auto; } - - .large-pull-9 { - position: relative; - right: 75%; - left: auto; } - - .large-push-10 { - position: relative; - left: 83.33333%; - right: auto; } - - .large-pull-10 { - position: relative; - right: 83.33333%; - left: auto; } - - .large-push-11 { - position: relative; - left: 91.66667%; - right: auto; } - - .large-pull-11 { - position: relative; - right: 91.66667%; - left: auto; } - - .column, - .columns { - position: relative; - padding-left: 0.9375rem; - padding-right: 0.9375rem; - float: left; } - - .large-1 { - width: 8.33333%; } - - .large-2 { - width: 16.66667%; } - - .large-3 { - width: 25%; } - - .large-4 { - width: 33.33333%; } - - .large-5 { - width: 41.66667%; } - - .large-6 { - width: 50%; } - - .large-7 { - width: 58.33333%; } - - .large-8 { - width: 66.66667%; } - - .large-9 { - width: 75%; } - - .large-10 { - width: 83.33333%; } - - .large-11 { - width: 91.66667%; } - - .large-12 { - width: 100%; } - - .large-offset-0 { - margin-left: 0% !important; } - - .large-offset-1 { - margin-left: 8.33333% !important; } - - .large-offset-2 { - margin-left: 16.66667% !important; } - - .large-offset-3 { - margin-left: 25% !important; } - - .large-offset-4 { - margin-left: 33.33333% !important; } - - .large-offset-5 { - margin-left: 41.66667% !important; } - - .large-offset-6 { - margin-left: 50% !important; } - - .large-offset-7 { - margin-left: 58.33333% !important; } - - .large-offset-8 { - margin-left: 66.66667% !important; } - - .large-offset-9 { - margin-left: 75% !important; } - - .large-offset-10 { - margin-left: 83.33333% !important; } - - .large-offset-11 { - margin-left: 91.66667% !important; } - - .large-reset-order { - margin-left: 0; - margin-right: 0; - left: auto; - right: auto; - float: left; } - - .column.large-centered, - .columns.large-centered { - margin-left: auto; - margin-right: auto; - float: none; } - - .column.large-uncentered, - .columns.large-uncentered { - margin-left: 0; - margin-right: 0; - float: left; } - - .column.large-centered:last-child, - .columns.large-centered:last-child { - float: none; } - - .column.large-uncentered:last-child, - .columns.large-uncentered:last-child { - float: left; } - - .column.large-uncentered.opposite, - .columns.large-uncentered.opposite { - float: right; } - - .push-0 { - position: relative; - left: 0%; - right: auto; } - - .pull-0 { - position: relative; - right: 0%; - left: auto; } - - .push-1 { - position: relative; - left: 8.33333%; - right: auto; } - - .pull-1 { - position: relative; - right: 8.33333%; - left: auto; } - - .push-2 { - position: relative; - left: 16.66667%; - right: auto; } - - .pull-2 { - position: relative; - right: 16.66667%; - left: auto; } - - .push-3 { - position: relative; - left: 25%; - right: auto; } - - .pull-3 { - position: relative; - right: 25%; - left: auto; } - - .push-4 { - position: relative; - left: 33.33333%; - right: auto; } - - .pull-4 { - position: relative; - right: 33.33333%; - left: auto; } - - .push-5 { - position: relative; - left: 41.66667%; - right: auto; } - - .pull-5 { - position: relative; - right: 41.66667%; - left: auto; } - - .push-6 { - position: relative; - left: 50%; - right: auto; } - - .pull-6 { - position: relative; - right: 50%; - left: auto; } - - .push-7 { - position: relative; - left: 58.33333%; - right: auto; } - - .pull-7 { - position: relative; - right: 58.33333%; - left: auto; } - - .push-8 { - position: relative; - left: 66.66667%; - right: auto; } - - .pull-8 { - position: relative; - right: 66.66667%; - left: auto; } - - .push-9 { - position: relative; - left: 75%; - right: auto; } - - .pull-9 { - position: relative; - right: 75%; - left: auto; } - - .push-10 { - position: relative; - left: 83.33333%; - right: auto; } - - .pull-10 { - position: relative; - right: 83.33333%; - left: auto; } - - .push-11 { - position: relative; - left: 91.66667%; - right: auto; } - - .pull-11 { - position: relative; - right: 91.66667%; - left: auto; } } -button, .button { - border-style: solid; - border-width: 0px; - cursor: pointer; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; - font-weight: normal; - line-height: normal; - margin: 0 0 1.25rem; - position: relative; - text-decoration: none; - text-align: center; - -webkit-appearance: none; - -webkit-border-radius: 0; - display: inline-block; - padding-top: 1rem; - padding-right: 2rem; - padding-bottom: 1.0625rem; - padding-left: 2rem; - font-size: 1rem; - background-color: #008cba; - border-color: #007095; - color: white; - transition: background-color 300ms ease-out; } - button:hover, button:focus, .button:hover, .button:focus { - background-color: #007095; } - button:hover, button:focus, .button:hover, .button:focus { - color: white; } - button.secondary, .button.secondary { - background-color: #e7e7e7; - border-color: #b9b9b9; - color: #333333; } - button.secondary:hover, button.secondary:focus, .button.secondary:hover, .button.secondary:focus { - background-color: #b9b9b9; } - button.secondary:hover, button.secondary:focus, .button.secondary:hover, .button.secondary:focus { - color: #333333; } - button.success, .button.success { - background-color: #43ac6a; - border-color: #368a55; - color: white; } - button.success:hover, button.success:focus, .button.success:hover, .button.success:focus { - background-color: #368a55; } - button.success:hover, button.success:focus, .button.success:hover, .button.success:focus { - color: white; } - button.alert, .button.alert { - background-color: #f04124; - border-color: #cf2a0e; - color: white; } - button.alert:hover, button.alert:focus, .button.alert:hover, .button.alert:focus { - background-color: #cf2a0e; } - button.alert:hover, button.alert:focus, .button.alert:hover, .button.alert:focus { - color: white; } - button.large, .button.large { - padding-top: 1.125rem; - padding-right: 2.25rem; - padding-bottom: 1.1875rem; - padding-left: 2.25rem; - font-size: 1.25rem; } - button.small, .button.small { - padding-top: 0.875rem; - padding-right: 1.75rem; - padding-bottom: 0.9375rem; - padding-left: 1.75rem; - font-size: 0.8125rem; } - button.tiny, .button.tiny { - padding-top: 0.625rem; - padding-right: 1.25rem; - padding-bottom: 0.6875rem; - padding-left: 1.25rem; - font-size: 0.6875rem; } - button.expand, .button.expand { - padding-right: 0; - padding-left: 0; - width: 100%; } - button.left-align, .button.left-align { - text-align: left; - text-indent: 0.75rem; } - button.right-align, .button.right-align { - text-align: right; - padding-right: 0.75rem; } - button.radius, .button.radius { - border-radius: 3px; } - button.round, .button.round { - border-radius: 1000px; } - button.disabled, button[disabled], .button.disabled, .button[disabled] { - background-color: #008cba; - border-color: #007095; - color: white; - cursor: default; - opacity: 0.7; - box-shadow: none; } - button.disabled:hover, button.disabled:focus, button[disabled]:hover, button[disabled]:focus, .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { - background-color: #007095; } - button.disabled:hover, button.disabled:focus, button[disabled]:hover, button[disabled]:focus, .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { - color: white; } - button.disabled:hover, button.disabled:focus, button[disabled]:hover, button[disabled]:focus, .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { - background-color: #008cba; } - button.disabled.secondary, button[disabled].secondary, .button.disabled.secondary, .button[disabled].secondary { - background-color: #e7e7e7; - border-color: #b9b9b9; - color: #333333; - cursor: default; - opacity: 0.7; - box-shadow: none; } - button.disabled.secondary:hover, button.disabled.secondary:focus, button[disabled].secondary:hover, button[disabled].secondary:focus, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary:hover, .button[disabled].secondary:focus { - background-color: #b9b9b9; } - button.disabled.secondary:hover, button.disabled.secondary:focus, button[disabled].secondary:hover, button[disabled].secondary:focus, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary:hover, .button[disabled].secondary:focus { - color: #333333; } - button.disabled.secondary:hover, button.disabled.secondary:focus, button[disabled].secondary:hover, button[disabled].secondary:focus, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary:hover, .button[disabled].secondary:focus { - background-color: #e7e7e7; } - button.disabled.success, button[disabled].success, .button.disabled.success, .button[disabled].success { - background-color: #43ac6a; - border-color: #368a55; - color: white; - cursor: default; - opacity: 0.7; - box-shadow: none; } - button.disabled.success:hover, button.disabled.success:focus, button[disabled].success:hover, button[disabled].success:focus, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success:hover, .button[disabled].success:focus { - background-color: #368a55; } - button.disabled.success:hover, button.disabled.success:focus, button[disabled].success:hover, button[disabled].success:focus, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success:hover, .button[disabled].success:focus { - color: white; } - button.disabled.success:hover, button.disabled.success:focus, button[disabled].success:hover, button[disabled].success:focus, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success:hover, .button[disabled].success:focus { - background-color: #43ac6a; } - button.disabled.alert, button[disabled].alert, .button.disabled.alert, .button[disabled].alert { - background-color: #f04124; - border-color: #cf2a0e; - color: white; - cursor: default; - opacity: 0.7; - box-shadow: none; } - button.disabled.alert:hover, button.disabled.alert:focus, button[disabled].alert:hover, button[disabled].alert:focus, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert:hover, .button[disabled].alert:focus { - background-color: #cf2a0e; } - button.disabled.alert:hover, button.disabled.alert:focus, button[disabled].alert:hover, button[disabled].alert:focus, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert:hover, .button[disabled].alert:focus { - color: white; } - button.disabled.alert:hover, button.disabled.alert:focus, button[disabled].alert:hover, button[disabled].alert:focus, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert:hover, .button[disabled].alert:focus { - background-color: #f04124; } - -@media only screen and (min-width: 40.063em) { - button, .button { - display: inline-block; } } -meta.foundation-mq-topbar { - font-family: "/only screen and (min-width:40.063em)/"; - width: 40.063em; } - -/* Wrapped around .top-bar to contain to grid width */ -.contain-to-grid { - width: 100%; - background: #333333; } - .contain-to-grid .top-bar { - margin-bottom: 0; } - -.fixed { - width: 100%; - left: 0; - position: fixed; - top: 0; - z-index: 99; } - .fixed.expanded:not(.top-bar) { - overflow-y: auto; - height: auto; - width: 100%; - max-height: 100%; } - .fixed.expanded:not(.top-bar) .title-area { - position: fixed; - width: 100%; - z-index: 99; } - .fixed.expanded:not(.top-bar) .top-bar-section { - z-index: 98; - margin-top: 45px; } - -.top-bar { - overflow: hidden; - height: 45px; - line-height: 45px; - position: relative; - background: #333333; - margin-bottom: 0; } - .top-bar ul { - margin-bottom: 0; - list-style: none; } - .top-bar .row { - max-width: none; } - .top-bar form, - .top-bar input { - margin-bottom: 0; } - .top-bar input { - height: auto; - padding-top: .35rem; - padding-bottom: .35rem; - font-size: 0.75rem; } - .top-bar .button, .top-bar button { - padding-top: .45rem; - padding-bottom: .35rem; - margin-bottom: 0; - font-size: 0.75rem; } - .top-bar .title-area { - position: relative; - margin: 0; } - .top-bar .name { - height: 45px; - margin: 0; - font-size: 16px; } - .top-bar .name h1 { - line-height: 45px; - font-size: 1.0625rem; - margin: 0; } - .top-bar .name h1 a { - font-weight: normal; - color: white; - width: 75%; - display: block; - padding: 0 15px; } - .top-bar .toggle-topbar { - position: absolute; - right: 0; - top: 0; } - .top-bar .toggle-topbar a { - color: white; - text-transform: uppercase; - font-size: 0.8125rem; - font-weight: bold; - position: relative; - display: block; - padding: 0 15px; - height: 45px; - line-height: 45px; } - .top-bar .toggle-topbar.menu-icon { - top: 50%; - margin-top: -16px; } - .top-bar .toggle-topbar.menu-icon a { - height: 34px; - line-height: 33px; - padding: 0 40px 0 15px; - color: white; - position: relative; } - .top-bar .toggle-topbar.menu-icon a span::after { - content: ""; - position: absolute; - display: block; - height: 0; - top: 50%; - margin-top: -8px; - right: 15px; - box-shadow: 0 0px 0 1px white, 0 7px 0 1px white, 0 14px 0 1px white; - width: 16px; } - .top-bar .toggle-topbar.menu-icon a span:hover:after { - box-shadow: 0 0px 0 1px white, 0 7px 0 1px white, 0 14px 0 1px white; } - .top-bar.expanded { - height: auto; - background: transparent; } - .top-bar.expanded .title-area { - background: #333333; } - .top-bar.expanded .toggle-topbar a { - color: #888888; } - .top-bar.expanded .toggle-topbar a::after { - box-shadow: 0 10px 0 1px #888888, 0 16px 0 1px #888888, 0 22px 0 1px #888888; } - -.top-bar-section { - left: 0; - position: relative; - width: auto; - transition: left 300ms ease-out; } - .top-bar-section ul { - padding: 0; - width: 100%; - height: auto; - display: block; - font-size: 16px; - margin: 0; } - .top-bar-section .divider, - .top-bar-section [role="separator"] { - border-top: solid 1px #1a1a1a; - clear: both; - height: 1px; - width: 100%; } - .top-bar-section ul li { - background: #333333; } - .top-bar-section ul li > a { - display: block; - width: 100%; - color: white; - padding: 12px 0 12px 0; - padding-left: 15px; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; - font-size: 0.8125rem; - font-weight: normal; - text-transform: none; } - .top-bar-section ul li > a.button { - font-size: 0.8125rem; - padding-right: 15px; - padding-left: 15px; - background-color: #008cba; - border-color: #007095; - color: white; } - .top-bar-section ul li > a.button:hover, .top-bar-section ul li > a.button:focus { - background-color: #007095; } - .top-bar-section ul li > a.button:hover, .top-bar-section ul li > a.button:focus { - color: white; } - .top-bar-section ul li > a.button.secondary { - background-color: #e7e7e7; - border-color: #b9b9b9; - color: #333333; } - .top-bar-section ul li > a.button.secondary:hover, .top-bar-section ul li > a.button.secondary:focus { - background-color: #b9b9b9; } - .top-bar-section ul li > a.button.secondary:hover, .top-bar-section ul li > a.button.secondary:focus { - color: #333333; } - .top-bar-section ul li > a.button.success { - background-color: #43ac6a; - border-color: #368a55; - color: white; } - .top-bar-section ul li > a.button.success:hover, .top-bar-section ul li > a.button.success:focus { - background-color: #368a55; } - .top-bar-section ul li > a.button.success:hover, .top-bar-section ul li > a.button.success:focus { - color: white; } - .top-bar-section ul li > a.button.alert { - background-color: #f04124; - border-color: #cf2a0e; - color: white; } - .top-bar-section ul li > a.button.alert:hover, .top-bar-section ul li > a.button.alert:focus { - background-color: #cf2a0e; } - .top-bar-section ul li > a.button.alert:hover, .top-bar-section ul li > a.button.alert:focus { - color: white; } - .top-bar-section ul li > button { - font-size: 0.8125rem; - padding-right: 15px; - padding-left: 15px; - background-color: #008cba; - border-color: #007095; - color: white; } - .top-bar-section ul li > button:hover, .top-bar-section ul li > button:focus { - background-color: #007095; } - .top-bar-section ul li > button:hover, .top-bar-section ul li > button:focus { - color: white; } - .top-bar-section ul li > button.secondary { - background-color: #e7e7e7; - border-color: #b9b9b9; - color: #333333; } - .top-bar-section ul li > button.secondary:hover, .top-bar-section ul li > button.secondary:focus { - background-color: #b9b9b9; } - .top-bar-section ul li > button.secondary:hover, .top-bar-section ul li > button.secondary:focus { - color: #333333; } - .top-bar-section ul li > button.success { - background-color: #43ac6a; - border-color: #368a55; - color: white; } - .top-bar-section ul li > button.success:hover, .top-bar-section ul li > button.success:focus { - background-color: #368a55; } - .top-bar-section ul li > button.success:hover, .top-bar-section ul li > button.success:focus { - color: white; } - .top-bar-section ul li > button.alert { - background-color: #f04124; - border-color: #cf2a0e; - color: white; } - .top-bar-section ul li > button.alert:hover, .top-bar-section ul li > button.alert:focus { - background-color: #cf2a0e; } - .top-bar-section ul li > button.alert:hover, .top-bar-section ul li > button.alert:focus { - color: white; } - .top-bar-section ul li:hover:not(.has-form) > a { - background-color: #555555; - background: #272727; - color: white; } - .top-bar-section ul li.active > a { - background: #008cba; - color: white; } - .top-bar-section ul li.active > a:hover { - background: #0078a0; - color: white; } - .top-bar-section .has-form { - padding: 15px; } - .top-bar-section .has-dropdown { - position: relative; } - .top-bar-section .has-dropdown > a:after { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 5px; - border-color: transparent transparent transparent rgba(255, 255, 255, 0.4); - border-left-style: solid; - margin-right: 15px; - margin-top: -4.5px; - position: absolute; - top: 50%; - right: 0; } - .top-bar-section .has-dropdown.moved { - position: static; } - .top-bar-section .has-dropdown.moved > .dropdown { - display: block; - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; - position: absolute !important; - width: 100%; } - .top-bar-section .has-dropdown.moved > a:after { - display: none; } - .top-bar-section .dropdown { - padding: 0; - position: absolute; - left: 100%; - top: 0; - z-index: 99; - display: block; - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - .top-bar-section .dropdown li { - width: 100%; - height: auto; } - .top-bar-section .dropdown li a { - font-weight: normal; - padding: 8px 15px; } - .top-bar-section .dropdown li a.parent-link { - font-weight: normal; } - .top-bar-section .dropdown li.title h5 { - margin-bottom: 0; - margin-top: 0; } - .top-bar-section .dropdown li.title h5 a { - color: white; - line-height: 22.5px; - display: block; } - .top-bar-section .dropdown li.has-form { - padding: 8px 15px; } - .top-bar-section .dropdown li .button, .top-bar-section .dropdown li button { - top: auto; } - .top-bar-section .dropdown label { - padding: 8px 15px 2px; - margin-bottom: 0; - text-transform: uppercase; - color: #777777; - font-weight: bold; - font-size: 0.625rem; } - -.js-generated { - display: block; } - -@media only screen and (min-width: 40.063em) { - .top-bar { - background: #333333; - overflow: visible; } - .top-bar:before, .top-bar:after { - content: " "; - display: table; } - .top-bar:after { - clear: both; } - .top-bar .toggle-topbar { - display: none; } - .top-bar .title-area { - float: left; } - .top-bar .name h1 a { - width: auto; } - .top-bar input, - .top-bar .button, - .top-bar button { - font-size: 0.875rem; - position: relative; - top: 7px; } - .top-bar.expanded { - background: #333333; } - - .contain-to-grid .top-bar { - max-width: 62.5rem; - margin: 0 auto; - margin-bottom: 0; } - - .top-bar-section { - transition: none 0 0; - left: 0 !important; } - .top-bar-section ul { - width: auto; - height: auto !important; - display: inline; } - .top-bar-section ul li { - float: left; } - .top-bar-section ul li .js-generated { - display: none; } - .top-bar-section li.hover > a:not(.button) { - background-color: #555555; - background: #272727; - color: white; } - .top-bar-section li:not(.has-form) a:not(.button) { - padding: 0 15px; - line-height: 45px; - background: #333333; } - .top-bar-section li:not(.has-form) a:not(.button):hover { - background-color: #555555; - background: #272727; } - .top-bar-section li.active:not(.has-form) a:not(.button) { - padding: 0 15px; - line-height: 45px; - color: white; - background: #008cba; } - .top-bar-section li.active:not(.has-form) a:not(.button):hover { - background: #0078a0; } - .top-bar-section .has-dropdown > a { - padding-right: 35px !important; } - .top-bar-section .has-dropdown > a:after { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 5px; - border-color: rgba(255, 255, 255, 0.4) transparent transparent transparent; - border-top-style: solid; - margin-top: -2.5px; - top: 22.5px; } - .top-bar-section .has-dropdown.moved { - position: relative; } - .top-bar-section .has-dropdown.moved > .dropdown { - display: block; - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - .top-bar-section .has-dropdown.hover > .dropdown, .top-bar-section .has-dropdown.not-click:hover > .dropdown { - display: block; - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; - position: absolute !important; } - .top-bar-section .has-dropdown .dropdown li.has-dropdown > a:after { - border: none; - content: "\00bb"; - top: 1rem; - margin-top: -1px; - right: 5px; - line-height: 1.2; } - .top-bar-section .dropdown { - left: 0; - top: auto; - background: transparent; - min-width: 100%; } - .top-bar-section .dropdown li a { - color: white; - line-height: 45px; - white-space: nowrap; - padding: 12px 15px; - background: #333333; } - .top-bar-section .dropdown li:not(.has-form) a:not(.button) { - color: white; - background: #333333; } - .top-bar-section .dropdown li:not(.has-form):hover > a:not(.button) { - color: white; - background-color: #555555; - background: #272727; } - .top-bar-section .dropdown li label { - white-space: nowrap; - background: #333333; } - .top-bar-section .dropdown li .dropdown { - left: 100%; - top: 0; } - .top-bar-section > ul > .divider, .top-bar-section > ul > [role="separator"] { - border-bottom: none; - border-top: none; - border-right: solid 1px #4e4e4e; - clear: none; - height: 45px; - width: 0; } - .top-bar-section .has-form { - background: #333333; - padding: 0 15px; - height: 45px; } - .top-bar-section .right li .dropdown { - left: auto; - right: 0; } - .top-bar-section .right li .dropdown li .dropdown { - right: 100%; } - .top-bar-section .left li .dropdown { - right: auto; - left: 0; } - .top-bar-section .left li .dropdown li .dropdown { - left: 100%; } - - .no-js .top-bar-section ul li:hover > a { - background-color: #555555; - background: #272727; - color: white; } - .no-js .top-bar-section ul li:active > a { - background: #008cba; - color: white; } - .no-js .top-bar-section .has-dropdown:hover > .dropdown { - display: block; - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; - position: absolute !important; } } -.breadcrumbs { - display: block; - padding: 0.5625rem 0.875rem 0.5625rem; - overflow: hidden; - margin-left: 0; - list-style: none; - border-style: solid; - border-width: 1px; - background-color: #f4f4f4; - border-color: gainsboro; - border-radius: 3px; } - .breadcrumbs > * { - margin: 0; - float: left; - font-size: 0.6875rem; - line-height: 0.6875rem; - text-transform: uppercase; - color: #008cba; } - .breadcrumbs > *:hover a, .breadcrumbs > *:focus a { - text-decoration: underline; } - .breadcrumbs > * a { - color: #008cba; } - .breadcrumbs > *.current { - cursor: default; - color: #333333; } - .breadcrumbs > *.current a { - cursor: default; - color: #333333; } - .breadcrumbs > *.current:hover, .breadcrumbs > *.current:hover a, .breadcrumbs > *.current:focus, .breadcrumbs > *.current:focus a { - text-decoration: none; } - .breadcrumbs > *.unavailable { - color: #999999; } - .breadcrumbs > *.unavailable a { - color: #999999; } - .breadcrumbs > *.unavailable:hover, .breadcrumbs > *.unavailable:hover a, .breadcrumbs > *.unavailable:focus, - .breadcrumbs > *.unavailable a:focus { - text-decoration: none; - color: #999999; - cursor: default; } - .breadcrumbs > *:before { - content: "/"; - color: #aaaaaa; - margin: 0 0.75rem; - position: relative; - top: 1px; } - .breadcrumbs > *:first-child:before { - content: " "; - margin: 0; } - -.alert-box { - border-style: solid; - border-width: 1px; - display: block; - font-weight: normal; - margin-bottom: 1.25rem; - position: relative; - padding: 0.875rem 1.5rem 0.875rem 0.875rem; - font-size: 0.8125rem; - transition: opacity 300ms ease-out; - background-color: #008cba; - border-color: #0078a0; - color: white; } - .alert-box .close { - font-size: 1.375rem; - padding: 9px 6px 4px; - line-height: 0; - position: absolute; - top: 50%; - margin-top: -0.6875rem; - right: 0.25rem; - color: #333333; - opacity: 0.3; } - .alert-box .close:hover, .alert-box .close:focus { - opacity: 0.5; } - .alert-box.radius { - border-radius: 3px; } - .alert-box.round { - border-radius: 1000px; } - .alert-box.success { - background-color: #43ac6a; - border-color: #3a945b; - color: white; } - .alert-box.alert { - background-color: #f04124; - border-color: #de2d0f; - color: white; } - .alert-box.secondary { - background-color: #e7e7e7; - border-color: #c7c7c7; - color: #4f4f4f; } - .alert-box.warning { - background-color: #f08a24; - border-color: #de770f; - color: white; } - .alert-box.info { - background-color: #a0d3e8; - border-color: #74bfdd; - color: #4f4f4f; } - .alert-box.alert-close { - opacity: 0; } - -.inline-list { - margin: 0 auto 1.0625rem auto; - margin-left: -1.375rem; - margin-right: 0; - padding: 0; - list-style: none; - overflow: hidden; } - .inline-list > li { - list-style: none; - float: left; - margin-left: 1.375rem; - display: block; } - .inline-list > li > * { - display: block; } - -.button-group { - list-style: none; - margin: 0; - left: 0; } - .button-group:before, .button-group:after { - content: " "; - display: table; } - .button-group:after { - clear: both; } - .button-group > li { - margin: 0; - float: left; } - .button-group > li > button, .button-group > li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group > li:first-child button, .button-group > li:first-child .button { - border-left: 0; } - .button-group > li:first-child { - margin-left: 0; } - .button-group.radius > * > button, .button-group.radius > * .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.radius > *:first-child button, .button-group.radius > *:first-child .button { - border-left: 0; } - .button-group.radius > *, .button-group.radius > * > a, .button-group.radius > * > button, .button-group.radius > * > .button { - border-radius: 0; } - .button-group.radius > *:first-child, .button-group.radius > *:first-child > a, .button-group.radius > *:first-child > button, .button-group.radius > *:first-child > .button { - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; } - .button-group.radius > *:last-child, .button-group.radius > *:last-child > a, .button-group.radius > *:last-child > button, .button-group.radius > *:last-child > .button { - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; } - .button-group.round > * > button, .button-group.round > * .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.round > *:first-child button, .button-group.round > *:first-child .button { - border-left: 0; } - .button-group.round > *, .button-group.round > * > a, .button-group.round > * > button, .button-group.round > * > .button { - border-radius: 0; } - .button-group.round > *:first-child, .button-group.round > *:first-child > a, .button-group.round > *:first-child > button, .button-group.round > *:first-child > .button { - border-bottom-left-radius: 1000px; - border-top-left-radius: 1000px; } - .button-group.round > *:last-child, .button-group.round > *:last-child > a, .button-group.round > *:last-child > button, .button-group.round > *:last-child > .button { - border-bottom-right-radius: 1000px; - border-top-right-radius: 1000px; } - .button-group.even-2 li { - width: 50%; } - .button-group.even-2 li > button, .button-group.even-2 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-2 li:first-child button, .button-group.even-2 li:first-child .button { - border-left: 0; } - .button-group.even-2 li button, .button-group.even-2 li .button { - width: 100%; } - .button-group.even-3 li { - width: 33.33333%; } - .button-group.even-3 li > button, .button-group.even-3 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-3 li:first-child button, .button-group.even-3 li:first-child .button { - border-left: 0; } - .button-group.even-3 li button, .button-group.even-3 li .button { - width: 100%; } - .button-group.even-4 li { - width: 25%; } - .button-group.even-4 li > button, .button-group.even-4 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-4 li:first-child button, .button-group.even-4 li:first-child .button { - border-left: 0; } - .button-group.even-4 li button, .button-group.even-4 li .button { - width: 100%; } - .button-group.even-5 li { - width: 20%; } - .button-group.even-5 li > button, .button-group.even-5 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-5 li:first-child button, .button-group.even-5 li:first-child .button { - border-left: 0; } - .button-group.even-5 li button, .button-group.even-5 li .button { - width: 100%; } - .button-group.even-6 li { - width: 16.66667%; } - .button-group.even-6 li > button, .button-group.even-6 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-6 li:first-child button, .button-group.even-6 li:first-child .button { - border-left: 0; } - .button-group.even-6 li button, .button-group.even-6 li .button { - width: 100%; } - .button-group.even-7 li { - width: 14.28571%; } - .button-group.even-7 li > button, .button-group.even-7 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-7 li:first-child button, .button-group.even-7 li:first-child .button { - border-left: 0; } - .button-group.even-7 li button, .button-group.even-7 li .button { - width: 100%; } - .button-group.even-8 li { - width: 12.5%; } - .button-group.even-8 li > button, .button-group.even-8 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-8 li:first-child button, .button-group.even-8 li:first-child .button { - border-left: 0; } - .button-group.even-8 li button, .button-group.even-8 li .button { - width: 100%; } - -.button-bar:before, .button-bar:after { - content: " "; - display: table; } -.button-bar:after { - clear: both; } -.button-bar .button-group { - float: left; - margin-right: 0.625rem; } - .button-bar .button-group div { - overflow: hidden; } - -/* Panels */ -.panel { - border-style: solid; - border-width: 1px; - border-color: #d8d8d8; - margin-bottom: 1.25rem; - padding: 1.25rem; - background: #f2f2f2; } - .panel > :first-child { - margin-top: 0; } - .panel > :last-child { - margin-bottom: 0; } - .panel h1, .panel h2, .panel h3, .panel h4, .panel h5, .panel h6, .panel p, .panel li, .panel dl { - color: #333333; } - .panel h1, .panel h2, .panel h3, .panel h4, .panel h5, .panel h6 { - line-height: 1; - margin-bottom: 0.625rem; } - .panel h1.subheader, .panel h2.subheader, .panel h3.subheader, .panel h4.subheader, .panel h5.subheader, .panel h6.subheader { - line-height: 1.4; } - .panel.callout { - border-style: solid; - border-width: 1px; - border-color: #b6edff; - margin-bottom: 1.25rem; - padding: 1.25rem; - background: #ecfaff; } - .panel.callout > :first-child { - margin-top: 0; } - .panel.callout > :last-child { - margin-bottom: 0; } - .panel.callout h1, .panel.callout h2, .panel.callout h3, .panel.callout h4, .panel.callout h5, .panel.callout h6, .panel.callout p, .panel.callout li, .panel.callout dl { - color: #333333; } - .panel.callout h1, .panel.callout h2, .panel.callout h3, .panel.callout h4, .panel.callout h5, .panel.callout h6 { - line-height: 1; - margin-bottom: 0.625rem; } - .panel.callout h1.subheader, .panel.callout h2.subheader, .panel.callout h3.subheader, .panel.callout h4.subheader, .panel.callout h5.subheader, .panel.callout h6.subheader { - line-height: 1.4; } - .panel.callout a:not(.button) { - color: #008cba; } - .panel.radius { - border-radius: 3px; } - -.dropdown.button, button.dropdown { - position: relative; - padding-right: 3.5625rem; } - .dropdown.button:after, button.dropdown:after { - position: absolute; - content: ""; - width: 0; - height: 0; - display: block; - border-style: solid; - border-color: white transparent transparent transparent; - top: 50%; } - .dropdown.button:after, button.dropdown:after { - border-width: 0.375rem; - right: 1.40625rem; - margin-top: -0.15625rem; } - .dropdown.button:after, button.dropdown:after { - border-color: white transparent transparent transparent; } - .dropdown.button.tiny, button.dropdown.tiny { - padding-right: 2.625rem; } - .dropdown.button.tiny:before, button.dropdown.tiny:before { - border-width: 0.375rem; - right: 1.125rem; - margin-top: -0.125rem; } - .dropdown.button.tiny:after, button.dropdown.tiny:after { - border-color: white transparent transparent transparent; } - .dropdown.button.small, button.dropdown.small { - padding-right: 3.0625rem; } - .dropdown.button.small:after, button.dropdown.small:after { - border-width: 0.4375rem; - right: 1.3125rem; - margin-top: -0.15625rem; } - .dropdown.button.small:after, button.dropdown.small:after { - border-color: white transparent transparent transparent; } - .dropdown.button.large, button.dropdown.large { - padding-right: 3.625rem; } - .dropdown.button.large:after, button.dropdown.large:after { - border-width: 0.3125rem; - right: 1.71875rem; - margin-top: -0.15625rem; } - .dropdown.button.large:after, button.dropdown.large:after { - border-color: white transparent transparent transparent; } - .dropdown.button.secondary:after, button.dropdown.secondary:after { - border-color: #333333 transparent transparent transparent; } - -/* Image Thumbnails */ -.th { - line-height: 0; - display: inline-block; - border: solid 4px white; - max-width: 100%; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); - transition: all 200ms ease-out; } - .th:hover, .th:focus { - box-shadow: 0 0 6px 1px rgba(0, 140, 186, 0.5); } - .th.radius { - border-radius: 3px; } - -/* toolbar styles */ -.toolbar { - background: #333; - width: 100%; - font-size: 0; - display: inline-block; } - .toolbar.label-bottom .tab .tab-content i, .toolbar.label-bottom .tab .tab-content img { - margin-bottom: 10px; } - .toolbar.label-right .tab .tab-content i, .toolbar.label-right .tab .tab-content img { - margin-right: 10px; - display: inline-block; } - .toolbar.label-right .tab .tab-content label { - display: inline-block; } - .toolbar.vertical.label-right .tab .tab-content { - text-align: left; } - .toolbar.vertical { - height: 100%; - width: auto; } - .toolbar.vertical .tab { - width: auto; - margin: auto; - float: none; } - .toolbar .tab { - text-align: center; - width: 25%; - margin: 0 auto; - display: block; - padding: 20px; - float: left; } - .toolbar .tab:hover { - background: rgba(255, 255, 255, 0.1); } - -.toolbar .tab-content { - font-size: 16px; - text-align: center; } - .toolbar .tab-content label { - color: #ccc; } - .toolbar .tab-content i { - font-size: 30px; - display: block; - margin: 0 auto; - color: #ccc; - vertical-align: middle; } - .toolbar .tab-content img { - width: 30px; - height: 30px; - display: block; - margin: 0 auto; } - -/* Pricing Tables */ -.pricing-table { - border: solid 1px #dddddd; - margin-left: 0; - margin-bottom: 1.25rem; } - .pricing-table * { - list-style: none; - line-height: 1; } - .pricing-table .title { - background-color: #333333; - padding: 0.9375rem 1.25rem; - text-align: center; - color: #eeeeee; - font-weight: normal; - font-size: 1rem; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; } - .pricing-table .price { - background-color: #f6f6f6; - padding: 0.9375rem 1.25rem; - text-align: center; - color: #333333; - font-weight: normal; - font-size: 2rem; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; } - .pricing-table .description { - background-color: white; - padding: 0.9375rem; - text-align: center; - color: #777777; - font-size: 0.75rem; - font-weight: normal; - line-height: 1.4; - border-bottom: dotted 1px #dddddd; } - .pricing-table .bullet-item { - background-color: white; - padding: 0.9375rem; - text-align: center; - color: #333333; - font-size: 0.875rem; - font-weight: normal; - border-bottom: dotted 1px #dddddd; } - .pricing-table .cta-button { - background-color: white; - text-align: center; - padding: 1.25rem 1.25rem 0; } - -@-webkit-keyframes rotate { - from { - -webkit-transform: rotate(0deg); } - - to { - -webkit-transform: rotate(360deg); } } - -@-moz-keyframes rotate { - from { - -moz-transform: rotate(0deg); } - - to { - -moz-transform: rotate(360deg); } } - -@-o-keyframes rotate { - from { - -o-transform: rotate(0deg); } - - to { - -o-transform: rotate(360deg); } } - -@keyframes rotate { - from { - transform: rotate(0deg); } - - to { - transform: rotate(360deg); } } - -/* Orbit Graceful Loading */ -.slideshow-wrapper { - position: relative; } - .slideshow-wrapper ul { - list-style-type: none; - margin: 0; } - .slideshow-wrapper ul li, - .slideshow-wrapper ul li .orbit-caption { - display: none; } - .slideshow-wrapper ul li:first-child { - display: block; } - .slideshow-wrapper .orbit-container { - background-color: transparent; } - .slideshow-wrapper .orbit-container li { - display: block; } - .slideshow-wrapper .orbit-container li .orbit-caption { - display: block; } - .slideshow-wrapper .orbit-container .orbit-bullets li { - display: inline-block; } - .slideshow-wrapper .preloader { - display: block; - width: 40px; - height: 40px; - position: absolute; - top: 50%; - left: 50%; - margin-top: -20px; - margin-left: -20px; - border: solid 3px; - border-color: #555555 white; - border-radius: 1000px; - animation-name: rotate; - animation-duration: 1.5s; - animation-iteration-count: infinite; - animation-timing-function: linear; } - -.orbit-container { - overflow: hidden; - width: 100%; - position: relative; - background: none; } - .orbit-container .orbit-slides-container { - list-style: none; - margin: 0; - padding: 0; - position: relative; - -webkit-transform: translateZ(0); } - .orbit-container .orbit-slides-container img { - display: block; - max-width: 100%; } - .orbit-container .orbit-slides-container > * { - position: absolute; - top: 0; - width: 100%; - margin-left: 100%; } - .orbit-container .orbit-slides-container > *:first-child { - margin-left: 0%; } - .orbit-container .orbit-slides-container > * .orbit-caption { - position: absolute; - bottom: 0; - background-color: rgba(51, 51, 51, 0.8); - color: white; - width: 100%; - padding: 0.625rem 0.875rem; - font-size: 0.875rem; } - .orbit-container .orbit-slide-number { - position: absolute; - top: 10px; - left: 10px; - font-size: 12px; - color: white; - background: rgba(0, 0, 0, 0); - z-index: 10; } - .orbit-container .orbit-slide-number span { - font-weight: 700; - padding: 0.3125rem; } - .orbit-container .orbit-timer { - position: absolute; - top: 12px; - right: 10px; - height: 6px; - width: 100px; - z-index: 10; } - .orbit-container .orbit-timer .orbit-progress { - height: 3px; - background-color: rgba(255, 255, 255, 0.3); - display: block; - width: 0%; - position: relative; - right: 20px; - top: 5px; } - .orbit-container .orbit-timer > span { - display: none; - position: absolute; - top: 0px; - right: 0; - width: 11px; - height: 14px; - border: solid 4px white; - border-top: none; - border-bottom: none; } - .orbit-container .orbit-timer.paused > span { - right: -4px; - top: 0px; - width: 11px; - height: 14px; - border: inset 8px; - border-left-style: solid; - border-color: transparent; - border-left-color: #fff; } - .orbit-container .orbit-timer.paused > span.dark { - border-left-color: #333; } - .orbit-container:hover .orbit-timer > span { - display: block; } - .orbit-container .orbit-prev, - .orbit-container .orbit-next { - position: absolute; - top: 45%; - margin-top: -25px; - width: 36px; - height: 60px; - line-height: 50px; - color: white; - background-color: transparent; - text-indent: -9999px !important; - z-index: 10; } - .orbit-container .orbit-prev:hover, - .orbit-container .orbit-next:hover { - background-color: rgba(0, 0, 0, 0.3); } - .orbit-container .orbit-prev > span, - .orbit-container .orbit-next > span { - position: absolute; - top: 50%; - margin-top: -10px; - display: block; - width: 0; - height: 0; - border: inset 10px; } - .orbit-container .orbit-prev { - left: 0; } - .orbit-container .orbit-prev > span { - border-right-style: solid; - border-color: transparent; - border-right-color: white; } - .orbit-container .orbit-prev:hover > span { - border-right-color: white; } - .orbit-container .orbit-next { - right: 0; } - .orbit-container .orbit-next > span { - border-color: transparent; - border-left-style: solid; - border-left-color: white; - left: 50%; - margin-left: -4px; } - .orbit-container .orbit-next:hover > span { - border-left-color: white; } - -.orbit-bullets-container { - text-align: center; } - -.orbit-bullets { - margin: 0 auto 30px auto; - overflow: hidden; - position: relative; - top: 10px; - float: none; - text-align: center; - display: block; } - .orbit-bullets li { - cursor: pointer; - display: inline-block; - width: 0.5625rem; - height: 0.5625rem; - background: #cccccc; - float: none; - margin-right: 6px; - border-radius: 1000px; } - .orbit-bullets li.active { - background: #999999; } - .orbit-bullets li:last-child { - margin-right: 0; } - -.touch .orbit-container .orbit-prev, -.touch .orbit-container .orbit-next { - display: none; } -.touch .orbit-bullets { - display: none; } - -@media only screen and (min-width: 40.063em) { - .touch .orbit-container .orbit-prev, - .touch .orbit-container .orbit-next { - display: inherit; } - .touch .orbit-bullets { - display: block; } } -@media only screen and (max-width: 40em) { - .orbit-stack-on-small .orbit-slides-container { - height: auto !important; } - .orbit-stack-on-small .orbit-slides-container > * { - position: relative; - margin: 0% !important; - opacity: 1 !important; } - .orbit-stack-on-small .orbit-slide-number { - display: none; } - - .orbit-timer { - display: none; } - - .orbit-next, .orbit-prev { - display: none; } - - .orbit-bullets { - display: none; } } -[data-magellan-expedition], [data-magellan-expedition-clone] { - background: white; - z-index: 50; - min-width: 100%; - padding: 10px; } - [data-magellan-expedition] .sub-nav, [data-magellan-expedition-clone] .sub-nav { - margin-bottom: 0; } - [data-magellan-expedition] .sub-nav dd, [data-magellan-expedition-clone] .sub-nav dd { - margin-bottom: 0; } - [data-magellan-expedition] .sub-nav a, [data-magellan-expedition-clone] .sub-nav a { - line-height: 1.8em; } - -div.icon-bar { - width: 100%; - font-size: 0; - display: inline-block; - background: #333333; } - div.icon-bar > * { - text-align: center; - font-size: 1rem; - width: 25%; - margin: 0 auto; - display: block; - padding: 1.25rem; - float: left; } - div.icon-bar > * i, div.icon-bar > * img { - display: block; - margin: 0 auto; } - div.icon-bar > * i + label, div.icon-bar > * img + label { - margin-top: .0625rem; } - div.icon-bar > * i { - font-size: 1.875rem; - vertical-align: middle; } - div.icon-bar > * img { - width: 1.875rem; - height: 1.875rem; } - div.icon-bar.label-right > * i, div.icon-bar.label-right > * img { - margin: 0 0.0625rem 0 0; - display: inline-block; } - div.icon-bar.label-right > * i + label, div.icon-bar.label-right > * img + label { - margin-top: 0; } - div.icon-bar.label-right > * label { - display: inline-block; } - div.icon-bar.vertical.label-right > * { - text-align: left; } - div.icon-bar.vertical { - height: 100%; - width: auto; } - div.icon-bar.vertical .item { - width: auto; - margin: auto; - float: none; } - div.icon-bar > * { - font-size: 1rem; - padding: 1.25rem; } - div.icon-bar > * i + label, div.icon-bar > * img + label { - margin-top: .0625rem; } - div.icon-bar > * i { - font-size: 1.875rem; } - div.icon-bar > * img { - width: 1.875rem; - height: 1.875rem; } - div.icon-bar > *:hover { - background: #008cba; } - div.icon-bar > * label { - color: white; } - div.icon-bar > * i { - color: white; } - -/* toolbar styles */ -.icon-bar.two-up .item { - width: 50%; } -.icon-bar.two-up.vertical .item { - width: auto; } -.icon-bar.three-up .item { - width: 33.3333%; } -.icon-bar.three-up.vertical .item { - width: auto; } -.icon-bar.four-up .item { - width: 25%; } -.icon-bar.four-up.vertical .item { - width: auto; } -.icon-bar.five-up .item { - width: 20%; } -.icon-bar.five-up.vertical .item { - width: auto; } -.icon-bar.six-up .item { - width: 16.66667%; } -.icon-bar.six-up.vertical .item { - width: auto; } - -.text-left { - text-align: left !important; } - -.text-right { - text-align: right !important; } - -.text-center { - text-align: center !important; } - -.text-justify { - text-align: justify !important; } - -@media only screen and (max-width: 40em) { - .small-only-text-left { - text-align: left !important; } - - .small-only-text-right { - text-align: right !important; } - - .small-only-text-center { - text-align: center !important; } - - .small-only-text-justify { - text-align: justify !important; } } -@media only screen { - .small-text-left { - text-align: left !important; } - - .small-text-right { - text-align: right !important; } - - .small-text-center { - text-align: center !important; } - - .small-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 40.063em) and (max-width: 64em) { - .medium-only-text-left { - text-align: left !important; } - - .medium-only-text-right { - text-align: right !important; } - - .medium-only-text-center { - text-align: center !important; } - - .medium-only-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 40.063em) { - .medium-text-left { - text-align: left !important; } - - .medium-text-right { - text-align: right !important; } - - .medium-text-center { - text-align: center !important; } - - .medium-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 64.063em) and (max-width: 90em) { - .large-only-text-left { - text-align: left !important; } - - .large-only-text-right { - text-align: right !important; } - - .large-only-text-center { - text-align: center !important; } - - .large-only-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 64.063em) { - .large-text-left { - text-align: left !important; } - - .large-text-right { - text-align: right !important; } - - .large-text-center { - text-align: center !important; } - - .large-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 90.063em) and (max-width: 120em) { - .xlarge-only-text-left { - text-align: left !important; } - - .xlarge-only-text-right { - text-align: right !important; } - - .xlarge-only-text-center { - text-align: center !important; } - - .xlarge-only-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 90.063em) { - .xlarge-text-left { - text-align: left !important; } - - .xlarge-text-right { - text-align: right !important; } - - .xlarge-text-center { - text-align: center !important; } - - .xlarge-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 120.063em) and (max-width: 99999999em) { - .xxlarge-only-text-left { - text-align: left !important; } - - .xxlarge-only-text-right { - text-align: right !important; } - - .xxlarge-only-text-center { - text-align: center !important; } - - .xxlarge-only-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 120.063em) { - .xxlarge-text-left { - text-align: left !important; } - - .xxlarge-text-right { - text-align: right !important; } - - .xxlarge-text-center { - text-align: center !important; } - - .xxlarge-text-justify { - text-align: justify !important; } } -/* Typography resets */ -div, -dl, -dt, -dd, -ul, -ol, -li, -h1, -h2, -h3, -h4, -h5, -h6, -pre, -form, -p, -blockquote, -th, -td { - margin: 0; - padding: 0; } - -/* Default Link Styles */ -a { - color: #008cba; - text-decoration: none; - line-height: inherit; } - a:hover, a:focus { - color: #0078a0; } - a img { - border: none; } - -/* Default paragraph styles */ -p { - font-family: inherit; - font-weight: normal; - font-size: 1rem; - line-height: 1.6; - margin-bottom: 1.25rem; - text-rendering: optimizeLegibility; } - p.lead { - font-size: 1.21875rem; - line-height: 1.6; } - p aside { - font-size: 0.875rem; - line-height: 1.35; - font-style: italic; } - -/* Default header styles */ -h1, h2, h3, h4, h5, h6 { - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; - font-weight: normal; - font-style: normal; - color: #222222; - text-rendering: optimizeLegibility; - margin-top: 0.2rem; - margin-bottom: 0.5rem; - line-height: 1.4; } - h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { - font-size: 60%; - color: #6f6f6f; - line-height: 0; } - -h1 { - font-size: 2.125rem; } - -h2 { - font-size: 1.6875rem; } - -h3 { - font-size: 1.375rem; } - -h4 { - font-size: 1.125rem; } - -h5 { - font-size: 1.125rem; } - -h6 { - font-size: 1rem; } - -.subheader { - line-height: 1.4; - color: #6f6f6f; - font-weight: normal; - margin-top: 0.2rem; - margin-bottom: 0.5rem; } - -hr { - border: solid #dddddd; - border-width: 1px 0 0; - clear: both; - margin: 1.25rem 0 1.1875rem; - height: 0; } - -/* Helpful Typography Defaults */ -em, -i { - font-style: italic; - line-height: inherit; } - -strong, -b { - font-weight: bold; - line-height: inherit; } - -small { - font-size: 60%; - line-height: inherit; } - -code { - font-family: Consolas, "Liberation Mono", Courier, monospace; - font-weight: bold; - color: #bd260d; } - -/* Lists */ -ul, -ol, -dl { - font-size: 1rem; - line-height: 1.6; - margin-bottom: 1.25rem; - list-style-position: outside; - font-family: inherit; } - -ul { - margin-left: 1.1rem; } - ul.no-bullet { - margin-left: 0; } - ul.no-bullet li ul, - ul.no-bullet li ol { - margin-left: 1.25rem; - margin-bottom: 0; - list-style: none; } - -/* Unordered Lists */ -ul li ul, -ul li ol { - margin-left: 1.25rem; - margin-bottom: 0; } -ul.square li ul, ul.circle li ul, ul.disc li ul { - list-style: inherit; } -ul.square { - list-style-type: square; - margin-left: 1.1rem; } -ul.circle { - list-style-type: circle; - margin-left: 1.1rem; } -ul.disc { - list-style-type: disc; - margin-left: 1.1rem; } -ul.no-bullet { - list-style: none; } - -/* Ordered Lists */ -ol { - margin-left: 1.4rem; } - ol li ul, - ol li ol { - margin-left: 1.25rem; - margin-bottom: 0; } - -/* Definition Lists */ -dl dt { - margin-bottom: 0.3rem; - font-weight: bold; } -dl dd { - margin-bottom: 0.75rem; } - -/* Abbreviations */ -abbr, -acronym { - text-transform: uppercase; - font-size: 90%; - color: #222222; - border-bottom: 1px dotted #dddddd; - cursor: help; } - -abbr { - text-transform: none; } - -/* Blockquotes */ -blockquote { - margin: 0 0 1.25rem; - padding: 0.5625rem 1.25rem 0 1.1875rem; - border-left: 1px solid #dddddd; } - blockquote cite { - display: block; - font-size: 0.8125rem; - color: #555555; } - blockquote cite:before { - content: "\2014 \0020"; } - blockquote cite a, - blockquote cite a:visited { - color: #555555; } - -blockquote, -blockquote p { - line-height: 1.6; - color: #6f6f6f; } - -/* Microformats */ -.vcard { - display: inline-block; - margin: 0 0 1.25rem 0; - border: 1px solid #dddddd; - padding: 0.625rem 0.75rem; } - .vcard li { - margin: 0; - display: block; } - .vcard .fn { - font-weight: bold; - font-size: 0.9375rem; } - -.vevent .summary { - font-weight: bold; } -.vevent abbr { - cursor: default; - text-decoration: none; - font-weight: bold; - border: none; - padding: 0 0.0625rem; } - -@media only screen and (min-width: 40.063em) { - h1, h2, h3, h4, h5, h6 { - line-height: 1.4; } - - h1 { - font-size: 2.75rem; } - - h2 { - font-size: 2.3125rem; } - - h3 { - font-size: 1.6875rem; } - - h4 { - font-size: 1.4375rem; } - - h5 { - font-size: 1.125rem; } - - h6 { - font-size: 1rem; } } -/* - * Print styles. - * - * Inlined to avoid required HTTP connection: www.phpied.com/delay-loading-your-print-css/ - * Credit to Paul Irish and HTML5 Boilerplate (html5boilerplate.com) -*/ -.print-only { - display: none !important; } - -@media print { - * { - background: transparent !important; - color: black !important; - /* Black prints faster: h5bp.com/s */ - box-shadow: none !important; - text-shadow: none !important; } - - a, - a:visited { - text-decoration: underline; } - - a[href]:after { - content: " (" attr(href) ")"; } - - abbr[title]:after { - content: " (" attr(title) ")"; } - - .ir a:after, - a[href^="javascript:"]:after, - a[href^="#"]:after { - content: ""; } - - pre, - blockquote { - border: 1px solid #999999; - page-break-inside: avoid; } - - thead { - display: table-header-group; - /* h5bp.com/t */ } - - tr, - img { - page-break-inside: avoid; } - - img { - max-width: 100% !important; } - - @page { - margin: 0.5cm; } - - p, - h2, - h3 { - orphans: 3; - widows: 3; } - - h2, - h3 { - page-break-after: avoid; } - - .hide-on-print { - display: none !important; } - - .print-only { - display: block !important; } - - .hide-for-print { - display: none !important; } - - .show-for-print { - display: inherit !important; } } -.tabs { - margin-bottom: 0 !important; - margin-left: 0; } - .tabs:before, .tabs:after { - content: " "; - display: table; } - .tabs:after { - clear: both; } - .tabs dd, .tabs .tab-title { - position: relative; - margin-bottom: 0 !important; - list-style: none; - float: left; } - .tabs dd > a, .tabs .tab-title > a { - display: block; - background: #efefef; - color: #222222; - padding: 1rem 2rem; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; - font-size: 1rem; } - .tabs dd > a:hover, .tabs .tab-title > a:hover { - background: #e1e1e1; } - .tabs dd.active a, .tabs .tab-title.active a { - background: white; - color: #222222; } - .tabs.radius dd:first-child a, .tabs.radius .tab:first-child a { - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; } - .tabs.radius dd:last-child a, .tabs.radius .tab:last-child a { - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; } - .tabs.vertical dd, .tabs.vertical .tab-title { - position: inherit; - float: none; - display: block; - top: auto; } - -.tabs-content { - margin-bottom: 1.5rem; - width: 100%; } - .tabs-content:before, .tabs-content:after { - content: " "; - display: table; } - .tabs-content:after { - clear: both; } - .tabs-content > .content { - display: none; - float: left; - padding: 0.9375rem 0; - width: 100%; } - .tabs-content > .content.active { - display: block; - float: none; } - .tabs-content > .content.contained { - padding: 0.9375rem; } - .tabs-content.vertical { - display: block; } - .tabs-content.vertical > .content { - padding: 0 0.9375rem; } - -@media only screen and (min-width: 40.063em) { - .tabs.vertical { - width: 20%; - float: left; - margin-bottom: 1.25rem; } - - .tabs-content.vertical { - width: 80%; - float: left; - margin-left: -1px; } } -.no-js .tabs-content > .content { - display: block; - float: none; } - -ul.pagination { - display: block; - min-height: 1.5rem; - margin-left: -0.3125rem; } - ul.pagination li { - height: 1.5rem; - color: #222222; - font-size: 0.875rem; - margin-left: 0.3125rem; } - ul.pagination li a { - display: block; - padding: 0.0625rem 0.625rem 0.0625rem; - color: #999999; - border-radius: 3px; } - ul.pagination li:hover a, - ul.pagination li a:focus { - background: #e6e6e6; } - ul.pagination li.unavailable a { - cursor: default; - color: #999999; } - ul.pagination li.unavailable:hover a, ul.pagination li.unavailable a:focus { - background: transparent; } - ul.pagination li.current a { - background: #008cba; - color: white; - font-weight: bold; - cursor: default; } - ul.pagination li.current a:hover, ul.pagination li.current a:focus { - background: #008cba; } - ul.pagination li { - float: left; - display: block; } - -/* Pagination centred wrapper */ -.pagination-centered { - text-align: center; } - .pagination-centered ul.pagination li { - float: none; - display: inline-block; } - -.side-nav { - display: block; - margin: 0; - padding: 0.875rem 0; - list-style-type: none; - list-style-position: outside; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; } - .side-nav li { - margin: 0 0 0.4375rem 0; - font-size: 0.875rem; } - .side-nav li a:not(.button) { - display: block; - color: #008cba; - margin: 0; - padding: 0.4375rem 0.875rem; } - .side-nav li a:not(.button):hover, .side-nav li a:not(.button):focus { - background: rgba(0, 0, 0, 0.025); - color: #1cc7ff; } - .side-nav li.active > a:first-child:not(.button) { - color: #1cc7ff; - font-weight: normal; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; } - .side-nav li.divider { - border-top: 1px solid; - height: 0; - padding: 0; - list-style: none; - border-top-color: white; } - .side-nav li.heading { - color: #008cba; - font-size: 0.875rem; - font-weight: bold; - text-transform: uppercase; } - -/* - Mixin: accordion-container() - - Decription: Responsible for the container component of accordions, generating styles relating to a margin of zero and a clearfix - - Explicit Dependencies: a clearfix mixin *is* defined. - - Implicit Dependencies: None - -*/ -/* - Mixin: accordion-navigation( $bg, $hover-bg, $active-bg, $padding, $active_class, $font-color, $font-size, $font-family){ - - @params $bg-color: [ color or string ]: Specify the background color for the navigation element - @params $hover-bg-color [ color or string ]: Specify the background color for the navigation element when hovered - @params $active-bg [ color or string ]: Specify the background color for the navigation element when clicked and not released. - @params $active_class [ string ]: Specify the class name used to keep track of which accordion tab should be visible - @params $font-color [ color or string ]: Color of the font for accordion - @params $font-size [ number ]: Specifiy the font-size of the text inside the navigation element - @params $font-family [ string ]: Specify the font family for the text of the navigation of the accorion -*/ -/* - - Mixin: accordion-content($bg, $padding, $active-class) - @params $padding [ number ]: Padding for the content of the container - @params $bg [ color ]: Background color for the content when it's visible - @params $active_class [ string ]: Class name used to keep track of which accordion tab should be visible. -*/ -.accordion { - margin-bottom: 0; } - .accordion:before, .accordion:after { - content: " "; - display: table; } - .accordion:after { - clear: both; } - .accordion .accordion-navigation, .accordion dd { - display: block; - margin-bottom: 0 !important; } - .accordion .accordion-navigation.active > a, .accordion dd.active > a { - background: #e8e8e8; } - .accordion .accordion-navigation > a, .accordion dd > a { - background: #efefef; - color: #222222; - padding: 1rem; - display: block; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; - font-size: 1rem; } - .accordion .accordion-navigation > a:hover, .accordion dd > a:hover { - background: #e3e3e3; } - .accordion .accordion-navigation > .content, .accordion dd > .content { - display: none; - padding: 0.9375rem; } - .accordion .accordion-navigation > .content.active, .accordion dd > .content.active { - display: block; - background: white; } - -.split.button { - position: relative; - padding-right: 5.0625rem; } - .split.button span { - display: block; - height: 100%; - position: absolute; - right: 0; - top: 0; - border-left: solid 1px; } - .split.button span:after { - position: absolute; - content: ""; - width: 0; - height: 0; - display: block; - border-style: inset; - top: 50%; - left: 50%; } - .split.button span:active { - background-color: rgba(0, 0, 0, 0.1); } - .split.button span { - border-left-color: rgba(255, 255, 255, 0.5); } - .split.button span { - width: 3.09375rem; } - .split.button span:after { - border-top-style: solid; - border-width: 0.375rem; - top: 48%; - margin-left: -0.375rem; } - .split.button span:after { - border-color: white transparent transparent transparent; } - .split.button.secondary span { - border-left-color: rgba(255, 255, 255, 0.5); } - .split.button.secondary span:after { - border-color: white transparent transparent transparent; } - .split.button.alert span { - border-left-color: rgba(255, 255, 255, 0.5); } - .split.button.success span { - border-left-color: rgba(255, 255, 255, 0.5); } - .split.button.tiny { - padding-right: 3.75rem; } - .split.button.tiny span { - width: 2.25rem; } - .split.button.tiny span:after { - border-top-style: solid; - border-width: 0.375rem; - top: 48%; - margin-left: -0.375rem; } - .split.button.small { - padding-right: 4.375rem; } - .split.button.small span { - width: 2.625rem; } - .split.button.small span:after { - border-top-style: solid; - border-width: 0.4375rem; - top: 48%; - margin-left: -0.375rem; } - .split.button.large { - padding-right: 5.5rem; } - .split.button.large span { - width: 3.4375rem; } - .split.button.large span:after { - border-top-style: solid; - border-width: 0.3125rem; - top: 48%; - margin-left: -0.375rem; } - .split.button.expand { - padding-left: 2rem; } - .split.button.secondary span:after { - border-color: #333333 transparent transparent transparent; } - .split.button.radius span { - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; } - .split.button.round span { - border-bottom-right-radius: 1000px; - border-top-right-radius: 1000px; } - -.reveal-modal-bg { - position: fixed; - height: 100%; - width: 100%; - background: black; - background: rgba(0, 0, 0, 0.45); - z-index: 99; - display: none; - top: 0; - left: 0; } - -dialog, .reveal-modal { - visibility: hidden; - display: none; - position: absolute; - z-index: 100; - width: 100vw; - top: 0; - left: 0; - background-color: white; - padding: 1.25rem; - border: solid 1px #666666; - box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); } - @media only screen and (max-width: 40em) { - dialog, .reveal-modal { - min-height: 100vh; } } - @media only screen and (min-width: 40.063em) { - dialog, .reveal-modal { - left: 50%; } } - dialog .column, - dialog .columns, .reveal-modal .column, - .reveal-modal .columns { - min-width: 0; } - dialog > :first-child, .reveal-modal > :first-child { - margin-top: 0; } - dialog > :last-child, .reveal-modal > :last-child { - margin-bottom: 0; } - @media only screen and (min-width: 40.063em) { - dialog, .reveal-modal { - margin-left: -40%; - width: 80%; } } - @media only screen and (min-width: 40.063em) { - dialog, .reveal-modal { - top: 6.25rem; } } - dialog .close-reveal-modal, .reveal-modal .close-reveal-modal { - font-size: 2.5rem; - line-height: 1; - position: absolute; - top: 0.5rem; - right: 0.6875rem; - color: #aaaaaa; - font-weight: bold; - cursor: pointer; } - -dialog[open] { - display: block; - visibility: visible; } - -@media only screen and (min-width: 40.063em) { - dialog, .reveal-modal { - padding: 1.875rem; } - dialog.radius, .reveal-modal.radius { - border-radius: 3px; } - dialog.round, .reveal-modal.round { - border-radius: 1000px; } - dialog.collapse, .reveal-modal.collapse { - padding: 0; } - dialog.full, .reveal-modal.full { - top: 0; - left: 0; - height: 100vh; - min-height: 100vh; - margin-left: 0 !important; } } - @media only screen and (min-width: 40.063em) and (min-width: 40.063em) { - dialog.tiny, .reveal-modal.tiny { - margin-left: -15%; - width: 30%; } } - @media only screen and (min-width: 40.063em) and (min-width: 40.063em) { - dialog.small, .reveal-modal.small { - margin-left: -20%; - width: 40%; } } - @media only screen and (min-width: 40.063em) and (min-width: 40.063em) { - dialog.medium, .reveal-modal.medium { - margin-left: -30%; - width: 60%; } } - @media only screen and (min-width: 40.063em) and (min-width: 40.063em) { - dialog.large, .reveal-modal.large { - margin-left: -35%; - width: 70%; } } - @media only screen and (min-width: 40.063em) and (min-width: 40.063em) { - dialog.xlarge, .reveal-modal.xlarge { - margin-left: -47.5%; - width: 95%; } } - - @media only screen and (min-width: 40.063em) and (min-width: 40.063em) { - dialog.full, .reveal-modal.full { - margin-left: -50vw; - width: 100vw; } } - -@media print { - dialog, .reveal-modal { - background: white !important; } } -/* Tooltips */ -.has-tip { - border-bottom: dotted 1px #cccccc; - cursor: help; - font-weight: bold; - color: #333333; } - .has-tip:hover, .has-tip:focus { - border-bottom: dotted 1px #003f54; - color: #008cba; } - .has-tip.tip-left, .has-tip.tip-right { - float: none !important; } - -.tooltip { - display: none; - position: absolute; - z-index: 999; - font-weight: normal; - font-size: 0.875rem; - line-height: 1.3; - padding: 0.75rem; - max-width: 300px; - left: 50%; - width: 100%; - color: white; - background: #333333; } - .tooltip > .nub { - display: block; - left: 5px; - position: absolute; - width: 0; - height: 0; - border: solid 5px; - border-color: transparent transparent #333333 transparent; - top: -10px; } - .tooltip > .nub.rtl { - left: auto; - right: 5px; } - .tooltip.radius { - border-radius: 3px; } - .tooltip.round { - border-radius: 1000px; } - .tooltip.round > .nub { - left: 2rem; } - .tooltip.opened { - color: #008cba !important; - border-bottom: dotted 1px #003f54 !important; } - -.tap-to-close { - display: block; - font-size: 0.625rem; - color: #777777; - font-weight: normal; } - -@media only screen and (min-width: 40.063em) { - .tooltip > .nub { - border-color: transparent transparent #333333 transparent; - top: -10px; } - .tooltip.tip-top > .nub { - border-color: #333333 transparent transparent transparent; - top: auto; - bottom: -10px; } - .tooltip.tip-left, .tooltip.tip-right { - float: none !important; } - .tooltip.tip-left > .nub { - border-color: transparent transparent transparent #333333; - right: -10px; - left: auto; - top: 50%; - margin-top: -5px; } - .tooltip.tip-right > .nub { - border-color: transparent #333333 transparent transparent; - right: auto; - left: -10px; - top: 50%; - margin-top: -5px; } } -/* Clearing Styles */ -.clearing-thumbs, [data-clearing] { - margin-bottom: 0; - margin-left: 0; - list-style: none; } - .clearing-thumbs:before, .clearing-thumbs:after, [data-clearing]:before, [data-clearing]:after { - content: " "; - display: table; } - .clearing-thumbs:after, [data-clearing]:after { - clear: both; } - .clearing-thumbs li, [data-clearing] li { - float: left; - margin-right: 10px; } - .clearing-thumbs[class*="block-grid-"] li, [data-clearing][class*="block-grid-"] li { - margin-right: 0; } - -.clearing-blackout { - background: #333333; - position: fixed; - width: 100%; - height: 100%; - top: 0; - left: 0; - z-index: 998; } - .clearing-blackout .clearing-close { - display: block; } - -.clearing-container { - position: relative; - z-index: 998; - height: 100%; - overflow: hidden; - margin: 0; } - -.clearing-touch-label { - position: absolute; - top: 50%; - left: 50%; - color: #aaa; - font-size: 0.6em; } - -.visible-img { - height: 95%; - position: relative; } - .visible-img img { - position: absolute; - left: 50%; - top: 50%; - margin-left: -50%; - max-height: 100%; - max-width: 100%; } - -.clearing-caption { - color: #cccccc; - font-size: 0.875em; - line-height: 1.3; - margin-bottom: 0; - text-align: center; - bottom: 0; - background: #333333; - width: 100%; - padding: 10px 30px 20px; - position: absolute; - left: 0; } - -.clearing-close { - z-index: 999; - padding-left: 20px; - padding-top: 10px; - font-size: 30px; - line-height: 1; - color: #cccccc; - display: none; } - .clearing-close:hover, .clearing-close:focus { - color: #ccc; } - -.clearing-assembled .clearing-container { - height: 100%; } - .clearing-assembled .clearing-container .carousel > ul { - display: none; } - -.clearing-feature li { - display: none; } - .clearing-feature li.clearing-featured-img { - display: block; } - -@media only screen and (min-width: 40.063em) { - .clearing-main-prev, - .clearing-main-next { - position: absolute; - height: 100%; - width: 40px; - top: 0; } - .clearing-main-prev > span, - .clearing-main-next > span { - position: absolute; - top: 50%; - display: block; - width: 0; - height: 0; - border: solid 12px; } - .clearing-main-prev > span:hover, - .clearing-main-next > span:hover { - opacity: 0.8; } - - .clearing-main-prev { - left: 0; } - .clearing-main-prev > span { - left: 5px; - border-color: transparent; - border-right-color: #cccccc; } - - .clearing-main-next { - right: 0; } - .clearing-main-next > span { - border-color: transparent; - border-left-color: #cccccc; } - - .clearing-main-prev.disabled, - .clearing-main-next.disabled { - opacity: 0.3; } - - .clearing-assembled .clearing-container .carousel { - background: rgba(51, 51, 51, 0.8); - height: 120px; - margin-top: 10px; - text-align: center; } - .clearing-assembled .clearing-container .carousel > ul { - display: inline-block; - z-index: 999; - height: 100%; - position: relative; - float: none; } - .clearing-assembled .clearing-container .carousel > ul li { - display: block; - width: 120px; - min-height: inherit; - float: left; - overflow: hidden; - margin-right: 0; - padding: 0; - position: relative; - cursor: pointer; - opacity: 0.4; - clear: none; } - .clearing-assembled .clearing-container .carousel > ul li.fix-height img { - height: 100%; - max-width: none; } - .clearing-assembled .clearing-container .carousel > ul li a.th { - border: none; - box-shadow: none; - display: block; } - .clearing-assembled .clearing-container .carousel > ul li img { - cursor: pointer !important; - width: 100% !important; } - .clearing-assembled .clearing-container .carousel > ul li.visible { - opacity: 1; } - .clearing-assembled .clearing-container .carousel > ul li:hover { - opacity: 0.8; } - .clearing-assembled .clearing-container .visible-img { - background: #333333; - overflow: hidden; - height: 85%; } - - .clearing-close { - position: absolute; - top: 10px; - right: 20px; - padding-left: 0; - padding-top: 0; } } -/* Progress Bar */ -.progress { - background-color: #f6f6f6; - height: 1.5625rem; - border: 1px solid white; - padding: 0.125rem; - margin-bottom: 0.625rem; } - .progress .meter { - background: #008cba; - height: 100%; - display: block; } - .progress.secondary .meter { - background: #e7e7e7; - height: 100%; - display: block; } - .progress.success .meter { - background: #43ac6a; - height: 100%; - display: block; } - .progress.alert .meter { - background: #f04124; - height: 100%; - display: block; } - .progress.radius { - border-radius: 3px; } - .progress.radius .meter { - border-radius: 2px; } - .progress.round { - border-radius: 1000px; } - .progress.round .meter { - border-radius: 999px; } - -.sub-nav { - display: block; - width: auto; - overflow: hidden; - margin: -0.25rem 0 1.125rem; - padding-top: 0.25rem; - margin-right: 0; - margin-left: -0.75rem; } - .sub-nav dt { - text-transform: uppercase; } - .sub-nav dt, - .sub-nav dd, - .sub-nav li { - float: left; - display: inline; - margin-left: 1rem; - margin-bottom: 0.625rem; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; - font-weight: normal; - font-size: 0.875rem; - color: #999999; } - .sub-nav dt a, - .sub-nav dd a, - .sub-nav li a { - text-decoration: none; - color: #999999; - padding: 0.1875rem 1rem; } - .sub-nav dt a:hover, - .sub-nav dd a:hover, - .sub-nav li a:hover { - color: #737373; } - .sub-nav dt.active a, - .sub-nav dd.active a, - .sub-nav li.active a { - border-radius: 3px; - font-weight: normal; - background: #008cba; - padding: 0.1875rem 1rem; - cursor: default; - color: white; } - .sub-nav dt.active a:hover, - .sub-nav dd.active a:hover, - .sub-nav li.active a:hover { - background: #0078a0; } - -/* Foundation Joyride */ -.joyride-list { - display: none; } - -/* Default styles for the container */ -.joyride-tip-guide { - display: none; - position: absolute; - background: #333333; - color: white; - z-index: 101; - top: 0; - left: 2.5%; - font-family: inherit; - font-weight: normal; - width: 95%; } - -.lt-ie9 .joyride-tip-guide { - max-width: 800px; - left: 50%; - margin-left: -400px; } - -.joyride-content-wrapper { - width: 100%; - padding: 1.125rem 1.25rem 1.5rem; } - .joyride-content-wrapper .button { - margin-bottom: 0 !important; } - -/* Add a little css triangle pip, older browser just miss out on the fanciness of it */ -.joyride-tip-guide .joyride-nub { - display: block; - position: absolute; - left: 22px; - width: 0; - height: 0; - border: 10px solid #333333; } - .joyride-tip-guide .joyride-nub.top { - border-top-style: solid; - border-color: #333333; - border-top-color: transparent !important; - border-left-color: transparent !important; - border-right-color: transparent !important; - top: -20px; } - .joyride-tip-guide .joyride-nub.bottom { - border-bottom-style: solid; - border-color: #333333 !important; - border-bottom-color: transparent !important; - border-left-color: transparent !important; - border-right-color: transparent !important; - bottom: -20px; } - .joyride-tip-guide .joyride-nub.right { - right: -20px; } - .joyride-tip-guide .joyride-nub.left { - left: -20px; } - -/* Typography */ -.joyride-tip-guide h1, -.joyride-tip-guide h2, -.joyride-tip-guide h3, -.joyride-tip-guide h4, -.joyride-tip-guide h5, -.joyride-tip-guide h6 { - line-height: 1.25; - margin: 0; - font-weight: bold; - color: white; } - -.joyride-tip-guide p { - margin: 0 0 1.125rem 0; - font-size: 0.875rem; - line-height: 1.3; } - -.joyride-timer-indicator-wrap { - width: 50px; - height: 3px; - border: solid 1px #555555; - position: absolute; - right: 1.0625rem; - bottom: 1rem; } - -.joyride-timer-indicator { - display: block; - width: 0; - height: inherit; - background: #666666; } - -.joyride-close-tip { - position: absolute; - right: 12px; - top: 10px; - color: #777777 !important; - text-decoration: none; - font-size: 24px; - font-weight: normal; - line-height: 0.5 !important; } - .joyride-close-tip:hover, .joyride-close-tip:focus { - color: #eeeeee !important; } - -.joyride-modal-bg { - position: fixed; - height: 100%; - width: 100%; - background: transparent; - background: rgba(0, 0, 0, 0.5); - z-index: 100; - display: none; - top: 0; - left: 0; - cursor: pointer; } - -.joyride-expose-wrapper { - background-color: #ffffff; - position: absolute; - border-radius: 3px; - z-index: 102; - box-shadow: 0 0 15px white; } - -.joyride-expose-cover { - background: transparent; - border-radius: 3px; - position: absolute; - z-index: 9999; - top: 0; - left: 0; } - -/* Styles for screens that are at least 768px; */ -@media only screen and (min-width: 40.063em) { - .joyride-tip-guide { - width: 300px; - left: inherit; } - .joyride-tip-guide .joyride-nub.bottom { - border-color: #333333 !important; - border-bottom-color: transparent !important; - border-left-color: transparent !important; - border-right-color: transparent !important; - bottom: -20px; } - .joyride-tip-guide .joyride-nub.right { - border-color: #333333 !important; - border-top-color: transparent !important; - border-right-color: transparent !important; - border-bottom-color: transparent !important; - top: 22px; - left: auto; - right: -20px; } - .joyride-tip-guide .joyride-nub.left { - border-color: #333333 !important; - border-top-color: transparent !important; - border-left-color: transparent !important; - border-bottom-color: transparent !important; - top: 22px; - left: -20px; - right: auto; } } -.label { - font-weight: normal; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; - text-align: center; - text-decoration: none; - line-height: 1; - white-space: nowrap; - display: inline-block; - position: relative; - margin-bottom: inherit; - padding: 0.25rem 0.5rem 0.375rem; - font-size: 0.6875rem; - background-color: #008cba; - color: white; } - .label.radius { - border-radius: 3px; } - .label.round { - border-radius: 1000px; } - .label.alert { - background-color: #f04124; - color: white; } - .label.success { - background-color: #43ac6a; - color: white; } - .label.secondary { - background-color: #e7e7e7; - color: #333333; } - -.off-canvas-wrap { - -webkit-backface-visibility: hidden; - position: relative; - width: 100%; - overflow: hidden; } - .off-canvas-wrap.move-right, .off-canvas-wrap.move-left { - min-height: 100%; - -webkit-overflow-scrolling: touch; } - -.inner-wrap { - -webkit-backface-visibility: hidden; - position: relative; - width: 100%; - -webkit-transition: -webkit-transform 500ms ease; - -moz-transition: -moz-transform 500ms ease; - -ms-transition: -ms-transform 500ms ease; - -o-transition: -o-transform 500ms ease; - transition: transform 500ms ease; } - .inner-wrap:before, .inner-wrap:after { - content: " "; - display: table; } - .inner-wrap:after { - clear: both; } - -.tab-bar { - -webkit-backface-visibility: hidden; - background: #333333; - color: white; - height: 2.8125rem; - line-height: 2.8125rem; - position: relative; } - .tab-bar h1, .tab-bar h2, .tab-bar h3, .tab-bar h4, .tab-bar h5, .tab-bar h6 { - color: white; - font-weight: bold; - line-height: 2.8125rem; - margin: 0; } - .tab-bar h1, .tab-bar h2, .tab-bar h3, .tab-bar h4 { - font-size: 1.125rem; } - -.left-small { - width: 2.8125rem; - height: 2.8125rem; - position: absolute; - top: 0; - border-right: solid 1px #1a1a1a; - left: 0; } - -.right-small { - width: 2.8125rem; - height: 2.8125rem; - position: absolute; - top: 0; - border-left: solid 1px #1a1a1a; - right: 0; } - -.tab-bar-section { - padding: 0 0.625rem; - position: absolute; - text-align: center; - height: 2.8125rem; - top: 0; } - @media only screen and (min-width: 40.063em) { - .tab-bar-section { - text-align: left; } } - .tab-bar-section.left { - left: 0; - right: 2.8125rem; } - .tab-bar-section.right { - left: 2.8125rem; - right: 0; } - .tab-bar-section.middle { - left: 2.8125rem; - right: 2.8125rem; } - -.tab-bar .menu-icon { - text-indent: 2.1875rem; - width: 2.8125rem; - height: 2.8125rem; - display: block; - padding: 0; - color: white; - position: relative; - transform: translate3d(0, 0, 0); } - .tab-bar .menu-icon span::after { - content: ""; - position: absolute; - display: block; - height: 0; - top: 50%; - margin-top: -0.5rem; - left: 0.90625rem; - box-shadow: 0 0px 0 1px white, 0 7px 0 1px white, 0 14px 0 1px white; - width: 1rem; } - .tab-bar .menu-icon span:hover:after { - box-shadow: 0 0px 0 1px #b3b3b3, 0 7px 0 1px #b3b3b3, 0 14px 0 1px #b3b3b3; } - -.left-off-canvas-menu { - -webkit-backface-visibility: hidden; - width: 15.625rem; - top: 0; - bottom: 0; - position: absolute; - overflow-y: auto; - background: #333333; - z-index: 1001; - box-sizing: content-box; - transition: transform 500ms ease 0s; - -webkit-overflow-scrolling: touch; - -ms-transform: translate(-100%, 0); - -webkit-transform: translate3d(-100%, 0, 0); - -moz-transform: translate3d(-100%, 0, 0); - -ms-transform: translate3d(-100%, 0, 0); - -o-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - left: 0; } - .left-off-canvas-menu * { - -webkit-backface-visibility: hidden; } - -.right-off-canvas-menu { - -webkit-backface-visibility: hidden; - width: 15.625rem; - top: 0; - bottom: 0; - position: absolute; - overflow-y: auto; - background: #333333; - z-index: 1001; - box-sizing: content-box; - transition: transform 500ms ease 0s; - -webkit-overflow-scrolling: touch; - -ms-transform: translate(100%, 0); - -webkit-transform: translate3d(100%, 0, 0); - -moz-transform: translate3d(100%, 0, 0); - -ms-transform: translate3d(100%, 0, 0); - -o-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - right: 0; } - .right-off-canvas-menu * { - -webkit-backface-visibility: hidden; } - -ul.off-canvas-list { - list-style-type: none; - padding: 0; - margin: 0; } - ul.off-canvas-list li label { - display: block; - padding: 0.3rem 0.9375rem; - color: #999999; - text-transform: uppercase; - font-size: 0.75rem; - font-weight: bold; - background: #444444; - border-top: 1px solid #5e5e5e; - border-bottom: none; - margin: 0; } - ul.off-canvas-list li a { - display: block; - padding: 0.66667rem; - color: rgba(255, 255, 255, 0.7); - border-bottom: 1px solid #262626; - transition: background 300ms ease; } - ul.off-canvas-list li a:hover { - background: #242424; } - -.move-right > .inner-wrap { - -ms-transform: translate(15.625rem, 0); - -webkit-transform: translate3d(15.625rem, 0, 0); - -moz-transform: translate3d(15.625rem, 0, 0); - -ms-transform: translate3d(15.625rem, 0, 0); - -o-transform: translate3d(15.625rem, 0, 0); - transform: translate3d(15.625rem, 0, 0); } -.move-right .exit-off-canvas { - -webkit-backface-visibility: hidden; - transition: background 300ms ease; - cursor: pointer; - box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); - display: block; - position: absolute; - background: rgba(255, 255, 255, 0.2); - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 1002; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } - @media only screen and (min-width: 40.063em) { - .move-right .exit-off-canvas:hover { - background: rgba(255, 255, 255, 0.05); } } - -.move-left > .inner-wrap { - -ms-transform: translate(-15.625rem, 0); - -webkit-transform: translate3d(-15.625rem, 0, 0); - -moz-transform: translate3d(-15.625rem, 0, 0); - -ms-transform: translate3d(-15.625rem, 0, 0); - -o-transform: translate3d(-15.625rem, 0, 0); - transform: translate3d(-15.625rem, 0, 0); } -.move-left .exit-off-canvas { - -webkit-backface-visibility: hidden; - transition: background 300ms ease; - cursor: pointer; - box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); - display: block; - position: absolute; - background: rgba(255, 255, 255, 0.2); - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 1002; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } - @media only screen and (min-width: 40.063em) { - .move-left .exit-off-canvas:hover { - background: rgba(255, 255, 255, 0.05); } } - -.offcanvas-overlap .left-off-canvas-menu, .offcanvas-overlap .right-off-canvas-menu { - -ms-transform: none; - -webkit-transform: none; - -moz-transform: none; - -o-transform: none; - transform: none; - z-index: 1003; } -.offcanvas-overlap .exit-offcanvas-menu { - -webkit-backface-visibility: hidden; - transition: background 300ms ease; - cursor: pointer; - box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); - display: block; - position: absolute; - background: rgba(255, 255, 255, 0.2); - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 1002; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - z-index: 1002; } - @media only screen and (min-width: 40.063em) { - .offcanvas-overlap .exit-offcanvas-menu:hover { - background: rgba(255, 255, 255, 0.05); } } - -.no-csstransforms .left-off-canvas-menu { - left: -15.625rem; } -.no-csstransforms .right-off-canvas-menu { - right: -15.625rem; } -.no-csstransforms .move-left > .inner-wrap { - right: 15.625rem; } -.no-csstransforms .move-right > .inner-wrap { - left: 15.625rem; } - -/* Foundation Dropdowns */ -.f-dropdown { - position: absolute; - left: -9999px; - list-style: none; - margin-left: 0; - width: 100%; - max-height: none; - height: auto; - background: white; - border: solid 1px #cccccc; - font-size: 0.875rem; - z-index: 99; - margin-top: 2px; - max-width: 200px; } - .f-dropdown > *:first-child { - margin-top: 0; } - .f-dropdown > *:last-child { - margin-bottom: 0; } - .f-dropdown:before { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 6px; - border-color: transparent transparent white transparent; - border-bottom-style: solid; - position: absolute; - top: -12px; - left: 10px; - z-index: 99; } - .f-dropdown:after { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 7px; - border-color: transparent transparent #cccccc transparent; - border-bottom-style: solid; - position: absolute; - top: -14px; - left: 9px; - z-index: 98; } - .f-dropdown.right:before { - left: auto; - right: 10px; } - .f-dropdown.right:after { - left: auto; - right: 9px; } - .f-dropdown.drop-right { - position: absolute; - left: -9999px; - list-style: none; - margin-left: 0; - width: 100%; - max-height: none; - height: auto; - background: white; - border: solid 1px #cccccc; - font-size: 0.875rem; - z-index: 99; - margin-top: 0; - margin-left: 2px; - max-width: 200px; } - .f-dropdown.drop-right > *:first-child { - margin-top: 0; } - .f-dropdown.drop-right > *:last-child { - margin-bottom: 0; } - .f-dropdown.drop-right:before { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 6px; - border-color: transparent white transparent transparent; - border-right-style: solid; - position: absolute; - top: 10px; - left: -12px; - z-index: 99; } - .f-dropdown.drop-right:after { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 7px; - border-color: transparent #cccccc transparent transparent; - border-right-style: solid; - position: absolute; - top: 9px; - left: -14px; - z-index: 98; } - .f-dropdown.drop-left { - position: absolute; - left: -9999px; - list-style: none; - margin-left: 0; - width: 100%; - max-height: none; - height: auto; - background: white; - border: solid 1px #cccccc; - font-size: 0.875rem; - z-index: 99; - margin-top: 0; - margin-left: -2px; - max-width: 200px; } - .f-dropdown.drop-left > *:first-child { - margin-top: 0; } - .f-dropdown.drop-left > *:last-child { - margin-bottom: 0; } - .f-dropdown.drop-left:before { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 6px; - border-color: transparent transparent transparent white; - border-left-style: solid; - position: absolute; - top: 10px; - right: -12px; - left: auto; - z-index: 99; } - .f-dropdown.drop-left:after { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 7px; - border-color: transparent transparent transparent #cccccc; - border-left-style: solid; - position: absolute; - top: 9px; - right: -14px; - left: auto; - z-index: 98; } - .f-dropdown.drop-top { - position: absolute; - left: -9999px; - list-style: none; - margin-left: 0; - width: 100%; - max-height: none; - height: auto; - background: white; - border: solid 1px #cccccc; - font-size: 0.875rem; - z-index: 99; - margin-top: -2px; - margin-left: 0; - max-width: 200px; } - .f-dropdown.drop-top > *:first-child { - margin-top: 0; } - .f-dropdown.drop-top > *:last-child { - margin-bottom: 0; } - .f-dropdown.drop-top:before { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 6px; - border-color: white transparent transparent transparent; - border-top-style: solid; - position: absolute; - top: auto; - bottom: -12px; - left: 10px; - right: auto; - z-index: 99; } - .f-dropdown.drop-top:after { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 7px; - border-color: #cccccc transparent transparent transparent; - border-top-style: solid; - position: absolute; - top: auto; - bottom: -14px; - left: 9px; - right: auto; - z-index: 98; } - .f-dropdown li { - font-size: 0.875rem; - cursor: pointer; - line-height: 1.125rem; - margin: 0; } - .f-dropdown li:hover, .f-dropdown li:focus { - background: #eeeeee; } - .f-dropdown li a { - display: block; - padding: 0.5rem; - color: #555555; } - .f-dropdown.content { - position: absolute; - left: -9999px; - list-style: none; - margin-left: 0; - padding: 1.25rem; - width: 100%; - height: auto; - max-height: none; - background: white; - border: solid 1px #cccccc; - font-size: 0.875rem; - z-index: 99; - max-width: 200px; } - .f-dropdown.content > *:first-child { - margin-top: 0; } - .f-dropdown.content > *:last-child { - margin-bottom: 0; } - .f-dropdown.tiny { - max-width: 200px; } - .f-dropdown.small { - max-width: 300px; } - .f-dropdown.medium { - max-width: 500px; } - .f-dropdown.large { - max-width: 800px; } - -table { - background: white; - margin-bottom: 1.25rem; - border: solid 1px #dddddd; } - table caption { - background: transparent; - color: #222222; - font-size: 1rem; - font-weight: bold; } - table thead { - background: whitesmoke; } - table thead tr th, - table thead tr td { - padding: 0.5rem 0.625rem 0.625rem; - font-size: 0.875rem; - font-weight: bold; - color: #222222; } - table tfoot { - background: whitesmoke; } - table tfoot tr th, - table tfoot tr td { - padding: 0.5rem 0.625rem 0.625rem; - font-size: 0.875rem; - font-weight: bold; - color: #222222; } - table tr th, - table tr td { - padding: 0.5625rem 0.625rem; - font-size: 0.875rem; - color: #222222; - text-align: left; } - table tr.even, table tr.alt, table tr:nth-of-type(even) { - background: #f9f9f9; } - table thead tr th, - table tfoot tr th, - table tfoot tr td, - table tbody tr th, - table tbody tr td, - table tr td { - display: table-cell; - line-height: 1.125rem; } - -/* Standard Forms */ -form { - margin: 0 0 1rem; } - -/* Using forms within rows, we need to set some defaults */ -form .row .row { - margin: 0 -0.5rem; } - form .row .row .column, - form .row .row .columns { - padding: 0 0.5rem; } - form .row .row.collapse { - margin: 0; } - form .row .row.collapse .column, - form .row .row.collapse .columns { - padding: 0; } - form .row .row.collapse input { - border-bottom-right-radius: 0; - border-top-right-radius: 0; } -form .row input.column, -form .row input.columns, -form .row textarea.column, -form .row textarea.columns { - padding-left: 0.5rem; } - -/* Label Styles */ -label { - font-size: 0.875rem; - color: #4d4d4d; - cursor: pointer; - display: block; - font-weight: normal; - line-height: 1.5; - margin-bottom: 0; - /* Styles for required inputs */ } - label.right { - float: none !important; - text-align: right; } - label.inline { - margin: 0 0 1rem 0; - padding: 0.5625rem 0; } - label small { - text-transform: capitalize; - color: #676767; } - -select::-ms-expand { - display: none; } - -/* Attach elements to the beginning or end of an input */ -.prefix, -.postfix { - display: block; - position: relative; - z-index: 2; - text-align: center; - width: 100%; - padding-top: 0; - padding-bottom: 0; - border-style: solid; - border-width: 1px; - overflow: hidden; - font-size: 0.875rem; - height: 2.3125rem; - line-height: 2.3125rem; } - -/* Adjust padding, alignment and radius if pre/post element is a button */ -.postfix.button { - padding-left: 0; - padding-right: 0; - padding-top: 0; - padding-bottom: 0; - text-align: center; - line-height: 2.125rem; - border: none; } - -.prefix.button { - padding-left: 0; - padding-right: 0; - padding-top: 0; - padding-bottom: 0; - text-align: center; - line-height: 2.125rem; - border: none; } - -.prefix.button.radius { - border-radius: 0; - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; } - -.postfix.button.radius { - border-radius: 0; - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; } - -.prefix.button.round { - border-radius: 0; - border-bottom-left-radius: 1000px; - border-top-left-radius: 1000px; } - -.postfix.button.round { - border-radius: 0; - border-bottom-right-radius: 1000px; - border-top-right-radius: 1000px; } - -/* Separate prefix and postfix styles when on span or label so buttons keep their own */ -span.prefix, label.prefix { - background: #f2f2f2; - border-right: none; - color: #333333; - border-color: #cccccc; } - span.prefix.radius, label.prefix.radius { - border-radius: 0; - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; } - -span.postfix, label.postfix { - background: #f2f2f2; - border-left: none; - color: #333333; - border-color: #cccccc; } - span.postfix.radius, label.postfix.radius { - border-radius: 0; - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; } - -/* We use this to get basic styling on all basic form elements */ -input[type="text"], -input[type="password"], -input[type="date"], -input[type="datetime"], -input[type="datetime-local"], -input[type="month"], -input[type="week"], -input[type="email"], -input[type="number"], -input[type="search"], -input[type="tel"], -input[type="time"], -input[type="url"], -textarea { - -webkit-appearance: none; - background-color: white; - font-family: inherit; - border: 1px solid #cccccc; - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - color: rgba(0, 0, 0, 0.75); - display: block; - font-size: 0.875rem; - margin: 0 0 1rem 0; - padding: 0.5rem; - height: 2.3125rem; - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - transition: box-shadow 0.45s, border-color 0.45s ease-in-out; } - input[type="text"]:focus, - input[type="password"]:focus, - input[type="date"]:focus, - input[type="datetime"]:focus, - input[type="datetime-local"]:focus, - input[type="month"]:focus, - input[type="week"]:focus, - input[type="email"]:focus, - input[type="number"]:focus, - input[type="search"]:focus, - input[type="tel"]:focus, - input[type="time"]:focus, - input[type="url"]:focus, - textarea:focus { - box-shadow: 0 0 5px #999999; - border-color: #999999; } - input[type="text"]:focus, - input[type="password"]:focus, - input[type="date"]:focus, - input[type="datetime"]:focus, - input[type="datetime-local"]:focus, - input[type="month"]:focus, - input[type="week"]:focus, - input[type="email"]:focus, - input[type="number"]:focus, - input[type="search"]:focus, - input[type="tel"]:focus, - input[type="time"]:focus, - input[type="url"]:focus, - textarea:focus { - background: #fafafa; - border-color: #999999; - outline: none; } - input[type="text"][disabled], fieldset[disabled] input[type="text"], - input[type="password"][disabled], fieldset[disabled] - input[type="password"], - input[type="date"][disabled], fieldset[disabled] - input[type="date"], - input[type="datetime"][disabled], fieldset[disabled] - input[type="datetime"], - input[type="datetime-local"][disabled], fieldset[disabled] - input[type="datetime-local"], - input[type="month"][disabled], fieldset[disabled] - input[type="month"], - input[type="week"][disabled], fieldset[disabled] - input[type="week"], - input[type="email"][disabled], fieldset[disabled] - input[type="email"], - input[type="number"][disabled], fieldset[disabled] - input[type="number"], - input[type="search"][disabled], fieldset[disabled] - input[type="search"], - input[type="tel"][disabled], fieldset[disabled] - input[type="tel"], - input[type="time"][disabled], fieldset[disabled] - input[type="time"], - input[type="url"][disabled], fieldset[disabled] - input[type="url"], - textarea[disabled], fieldset[disabled] - textarea { - background-color: #dddddd; } - input[type="text"].radius, - input[type="password"].radius, - input[type="date"].radius, - input[type="datetime"].radius, - input[type="datetime-local"].radius, - input[type="month"].radius, - input[type="week"].radius, - input[type="email"].radius, - input[type="number"].radius, - input[type="search"].radius, - input[type="tel"].radius, - input[type="time"].radius, - input[type="url"].radius, - textarea.radius { - border-radius: 3px; } - -input[type="submit"] { - -webkit-appearance: none; } - -/* Respect enforced amount of rows for textarea */ -textarea[rows] { - height: auto; } - -/* Add height value for select elements to match text input height */ -select { - -webkit-appearance: none !important; - background-color: #fafafa; - background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+); - background-position: 100% center; - background-repeat: no-repeat; - border: 1px solid #cccccc; - padding: 0.5rem; - font-size: 0.875rem; - color: rgba(0, 0, 0, 0.75); - line-height: normal; - border-radius: 0; - height: 2.3125rem; } - select.radius { - border-radius: 3px; } - select:hover { - background-color: #f3f3f3; - border-color: #999999; } - -/* Adjust margin for form elements below */ -input[type="file"], -input[type="checkbox"], -input[type="radio"], -select { - margin: 0 0 1rem 0; } - -input[type="checkbox"] + label, -input[type="radio"] + label { - display: inline-block; - margin-left: 0.5rem; - margin-right: 1rem; - margin-bottom: 0; - vertical-align: baseline; } - -/* Normalize file input width */ -input[type="file"] { - width: 100%; } - -/* We add basic fieldset styling */ -fieldset { - border: 1px solid #dddddd; - padding: 1.25rem; - margin: 1.125rem 0; } - fieldset legend { - font-weight: bold; - background: white; - padding: 0 0.1875rem; - margin: 0; - margin-left: -0.1875rem; } - -/* Error Handling */ -[data-abide] .error small.error, [data-abide] span.error, [data-abide] small.error { - display: block; - padding: 0.375rem 0.5625rem 0.5625rem; - margin-top: -1px; - margin-bottom: 1rem; - font-size: 0.75rem; - font-weight: normal; - font-style: italic; - background: #f04124; - color: white; } -[data-abide] span.error, [data-abide] small.error { - display: none; } - -span.error, small.error { - display: block; - padding: 0.375rem 0.5625rem 0.5625rem; - margin-top: -1px; - margin-bottom: 1rem; - font-size: 0.75rem; - font-weight: normal; - font-style: italic; - background: #f04124; - color: white; } - -.error input, -.error textarea, -.error select { - margin-bottom: 0; } -.error input[type="checkbox"], -.error input[type="radio"] { - margin-bottom: 1rem; } -.error label, -.error label.error { - color: #f04124; } -.error small.error { - display: block; - padding: 0.375rem 0.5625rem 0.5625rem; - margin-top: -1px; - margin-bottom: 1rem; - font-size: 0.75rem; - font-weight: normal; - font-style: italic; - background: #f04124; - color: white; } -.error > label > small { - color: #676767; - background: transparent; - padding: 0; - text-transform: capitalize; - font-style: normal; - font-size: 60%; - margin: 0; - display: inline; } -.error span.error-message { - display: block; } - -input.error, -textarea.error { - margin-bottom: 0; } - -label.error { - color: #f04124; } - -.range-slider { - display: block; - position: relative; - width: 100%; - height: 1rem; - border: 1px solid #dddddd; - margin: 1.25rem 0; - -ms-touch-action: none; - touch-action: none; - background: #fafafa; } - .range-slider.vertical-range { - display: block; - position: relative; - width: 100%; - height: 1rem; - border: 1px solid #dddddd; - margin: 1.25rem 0; - -ms-touch-action: none; - touch-action: none; - display: inline-block; - width: 1rem; - height: 12.5rem; } - .range-slider.vertical-range .range-slider-handle { - margin-top: 0; - margin-left: -0.5rem; - position: absolute; - bottom: -10.5rem; } - .range-slider.vertical-range .range-slider-active-segment { - width: 0.875rem; - height: auto; - bottom: 0; } - .range-slider.radius { - background: #fafafa; - border-radius: 3px; } - .range-slider.radius .range-slider-handle { - background: #008cba; - border-radius: 3px; } - .range-slider.radius .range-slider-handle:hover { - background: #007ba4; } - .range-slider.round { - background: #fafafa; - border-radius: 1000px; } - .range-slider.round .range-slider-handle { - background: #008cba; - border-radius: 1000px; } - .range-slider.round .range-slider-handle:hover { - background: #007ba4; } - .range-slider.disabled, .range-slider[disabled] { - background: #fafafa; - cursor: default; - opacity: 0.7; } - .range-slider.disabled .range-slider-handle, .range-slider[disabled] .range-slider-handle { - background: #008cba; - cursor: default; - opacity: 0.7; } - .range-slider.disabled .range-slider-handle:hover, .range-slider[disabled] .range-slider-handle:hover { - background: #007ba4; } - -.range-slider-active-segment { - display: inline-block; - position: absolute; - height: 0.875rem; - background: #e5e5e5; } - -.range-slider-handle { - display: inline-block; - position: absolute; - z-index: 1; - top: -0.3125rem; - width: 2rem; - height: 1.375rem; - border: 1px solid none; - cursor: pointer; - background: #008cba; } - .range-slider-handle:hover { - background: #007ba4; } - -[class*="block-grid-"] { - display: block; - padding: 0; - margin: 0 -0.625rem; } - [class*="block-grid-"]:before, [class*="block-grid-"]:after { - content: " "; - display: table; } - [class*="block-grid-"]:after { - clear: both; } - [class*="block-grid-"] > li { - display: block; - height: auto; - float: left; - padding: 0 0.625rem 1.25rem; } - -@media only screen { - .small-block-grid-1 > li { - width: 100%; - list-style: none; } - .small-block-grid-1 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-1 > li:nth-of-type(1n+1) { - clear: both; } - - .small-block-grid-2 > li { - width: 50%; - list-style: none; } - .small-block-grid-2 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-2 > li:nth-of-type(2n+1) { - clear: both; } - - .small-block-grid-3 > li { - width: 33.33333%; - list-style: none; } - .small-block-grid-3 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-3 > li:nth-of-type(3n+1) { - clear: both; } - - .small-block-grid-4 > li { - width: 25%; - list-style: none; } - .small-block-grid-4 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-4 > li:nth-of-type(4n+1) { - clear: both; } - - .small-block-grid-5 > li { - width: 20%; - list-style: none; } - .small-block-grid-5 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-5 > li:nth-of-type(5n+1) { - clear: both; } - - .small-block-grid-6 > li { - width: 16.66667%; - list-style: none; } - .small-block-grid-6 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-6 > li:nth-of-type(6n+1) { - clear: both; } - - .small-block-grid-7 > li { - width: 14.28571%; - list-style: none; } - .small-block-grid-7 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-7 > li:nth-of-type(7n+1) { - clear: both; } - - .small-block-grid-8 > li { - width: 12.5%; - list-style: none; } - .small-block-grid-8 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-8 > li:nth-of-type(8n+1) { - clear: both; } - - .small-block-grid-9 > li { - width: 11.11111%; - list-style: none; } - .small-block-grid-9 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-9 > li:nth-of-type(9n+1) { - clear: both; } - - .small-block-grid-10 > li { - width: 10%; - list-style: none; } - .small-block-grid-10 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-10 > li:nth-of-type(10n+1) { - clear: both; } - - .small-block-grid-11 > li { - width: 9.09091%; - list-style: none; } - .small-block-grid-11 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-11 > li:nth-of-type(11n+1) { - clear: both; } - - .small-block-grid-12 > li { - width: 8.33333%; - list-style: none; } - .small-block-grid-12 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-12 > li:nth-of-type(12n+1) { - clear: both; } } -@media only screen and (min-width: 40.063em) { - .medium-block-grid-1 > li { - width: 100%; - list-style: none; } - .medium-block-grid-1 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-1 > li:nth-of-type(1n+1) { - clear: both; } - - .medium-block-grid-2 > li { - width: 50%; - list-style: none; } - .medium-block-grid-2 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-2 > li:nth-of-type(2n+1) { - clear: both; } - - .medium-block-grid-3 > li { - width: 33.33333%; - list-style: none; } - .medium-block-grid-3 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-3 > li:nth-of-type(3n+1) { - clear: both; } - - .medium-block-grid-4 > li { - width: 25%; - list-style: none; } - .medium-block-grid-4 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-4 > li:nth-of-type(4n+1) { - clear: both; } - - .medium-block-grid-5 > li { - width: 20%; - list-style: none; } - .medium-block-grid-5 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-5 > li:nth-of-type(5n+1) { - clear: both; } - - .medium-block-grid-6 > li { - width: 16.66667%; - list-style: none; } - .medium-block-grid-6 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-6 > li:nth-of-type(6n+1) { - clear: both; } - - .medium-block-grid-7 > li { - width: 14.28571%; - list-style: none; } - .medium-block-grid-7 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-7 > li:nth-of-type(7n+1) { - clear: both; } - - .medium-block-grid-8 > li { - width: 12.5%; - list-style: none; } - .medium-block-grid-8 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-8 > li:nth-of-type(8n+1) { - clear: both; } - - .medium-block-grid-9 > li { - width: 11.11111%; - list-style: none; } - .medium-block-grid-9 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-9 > li:nth-of-type(9n+1) { - clear: both; } - - .medium-block-grid-10 > li { - width: 10%; - list-style: none; } - .medium-block-grid-10 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-10 > li:nth-of-type(10n+1) { - clear: both; } - - .medium-block-grid-11 > li { - width: 9.09091%; - list-style: none; } - .medium-block-grid-11 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-11 > li:nth-of-type(11n+1) { - clear: both; } - - .medium-block-grid-12 > li { - width: 8.33333%; - list-style: none; } - .medium-block-grid-12 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-12 > li:nth-of-type(12n+1) { - clear: both; } } -@media only screen and (min-width: 64.063em) { - .large-block-grid-1 > li { - width: 100%; - list-style: none; } - .large-block-grid-1 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-1 > li:nth-of-type(1n+1) { - clear: both; } - - .large-block-grid-2 > li { - width: 50%; - list-style: none; } - .large-block-grid-2 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-2 > li:nth-of-type(2n+1) { - clear: both; } - - .large-block-grid-3 > li { - width: 33.33333%; - list-style: none; } - .large-block-grid-3 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-3 > li:nth-of-type(3n+1) { - clear: both; } - - .large-block-grid-4 > li { - width: 25%; - list-style: none; } - .large-block-grid-4 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-4 > li:nth-of-type(4n+1) { - clear: both; } - - .large-block-grid-5 > li { - width: 20%; - list-style: none; } - .large-block-grid-5 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-5 > li:nth-of-type(5n+1) { - clear: both; } - - .large-block-grid-6 > li { - width: 16.66667%; - list-style: none; } - .large-block-grid-6 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-6 > li:nth-of-type(6n+1) { - clear: both; } - - .large-block-grid-7 > li { - width: 14.28571%; - list-style: none; } - .large-block-grid-7 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-7 > li:nth-of-type(7n+1) { - clear: both; } - - .large-block-grid-8 > li { - width: 12.5%; - list-style: none; } - .large-block-grid-8 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-8 > li:nth-of-type(8n+1) { - clear: both; } - - .large-block-grid-9 > li { - width: 11.11111%; - list-style: none; } - .large-block-grid-9 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-9 > li:nth-of-type(9n+1) { - clear: both; } - - .large-block-grid-10 > li { - width: 10%; - list-style: none; } - .large-block-grid-10 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-10 > li:nth-of-type(10n+1) { - clear: both; } - - .large-block-grid-11 > li { - width: 9.09091%; - list-style: none; } - .large-block-grid-11 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-11 > li:nth-of-type(11n+1) { - clear: both; } - - .large-block-grid-12 > li { - width: 8.33333%; - list-style: none; } - .large-block-grid-12 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-12 > li:nth-of-type(12n+1) { - clear: both; } } -.flex-video { - position: relative; - padding-top: 1.5625rem; - padding-bottom: 67.5%; - height: 0; - margin-bottom: 1rem; - overflow: hidden; } - .flex-video.widescreen { - padding-bottom: 56.34%; } - .flex-video.vimeo { - padding-top: 0; } - .flex-video iframe, - .flex-video object, - .flex-video embed, - .flex-video video { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; } - -.keystroke, -kbd { - background-color: #ededed; - border-color: #dddddd; - color: #222222; - border-style: solid; - border-width: 1px; - margin: 0; - font-family: "Consolas", "Menlo", "Courier", monospace; - font-size: inherit; - padding: 0.125rem 0.25rem 0; - border-radius: 3px; } - -div.switch label { - display: block; - margin-bottom: 1rem; - position: relative; - color: transparent; - background: #dddddd; - text-indent: 100%; - width: 4rem; - height: 2rem; - cursor: pointer; - transition: left 0.15s ease-out; } -div.switch input { - display: none; } - div.switch input + label { - margin-left: 0; - margin-right: 0; } -div.switch label:after { - content: ""; - display: block; - background: white; - position: absolute; - top: .25rem; - left: .25rem; - width: 1.5rem; - height: 1.5rem; - -webkit-transition: left 0.15s ease-out; - -moz-transition: left 0.15s ease-out; - transition: left 0.15s ease-out; } -div.switch input:checked + label { - background: #008cba; } -div.switch input:checked + label:after { - left: 2.25rem; } -div.switch label { - width: 4rem; - height: 2rem; } -div.switch label:after { - width: 1.5rem; - height: 1.5rem; } -div.switch input:checked + label:after { - left: 2.25rem; } -div.switch label { - color: transparent; - background: #dddddd; } -div.switch label:after { - background: white; } -div.switch input:checked + label { - background: #008cba; } -div.switch.large label { - width: 5rem; - height: 2.5rem; } -div.switch.large label:after { - width: 2rem; - height: 2rem; } -div.switch.large input:checked + label:after { - left: 2.75rem; } -div.switch.small label { - width: 3.5rem; - height: 1.75rem; } -div.switch.small label:after { - width: 1.25rem; - height: 1.25rem; } -div.switch.small input:checked + label:after { - left: 2rem; } -div.switch.tiny label { - width: 3rem; - height: 1.5rem; } -div.switch.tiny label:after { - width: 1rem; - height: 1rem; } -div.switch.tiny input:checked + label:after { - left: 1.75rem; } -div.switch.radius label { - border-radius: 4px; } -div.switch.radius label:after { - border-radius: 3px; } -div.switch.round { - border-radius: 1000px; } - div.switch.round label { - border-radius: 2rem; } - div.switch.round label:after { - border-radius: 2rem; } - -/* small displays */ -@media only screen { - .show-for-small-only, .show-for-small-up, .show-for-small, .show-for-small-down, .hide-for-medium-only, .hide-for-medium-up, .hide-for-medium, .show-for-medium-down, .hide-for-large-only, .hide-for-large-up, .hide-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xxlarge-only, .hide-for-xxlarge-up { - display: inherit !important; } - - .hide-for-small-only, .hide-for-small-up, .hide-for-small, .hide-for-small-down, .show-for-medium-only, .show-for-medium-up, .show-for-medium, .hide-for-medium-down, .show-for-large-only, .show-for-large-up, .show-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xxlarge-only, .show-for-xxlarge-up { - display: none !important; } - - .visible-for-small-only, .visible-for-small-up, .visible-for-small, .visible-for-small-down, .hidden-for-medium-only, .hidden-for-medium-up, .hidden-for-medium, .visible-for-medium-down, .hidden-for-large-only, .hidden-for-large-up, .hidden-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up { - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; } - - .hidden-for-small-only, .hidden-for-small-up, .hidden-for-small, .hidden-for-small-down, .visible-for-medium-only, .visible-for-medium-up, .visible-for-medium, .hidden-for-medium-down, .visible-for-large-only, .visible-for-large-up, .visible-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xxlarge-only, .visible-for-xxlarge-up { - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - - table.show-for-small-only, table.show-for-small-up, table.show-for-small, table.show-for-small-down, table.hide-for-medium-only, table.hide-for-medium-up, table.hide-for-medium, table.show-for-medium-down, table.hide-for-large-only, table.hide-for-large-up, table.hide-for-large, table.show-for-large-down, table.hide-for-xlarge-only, table.hide-for-xlarge-up, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up { - display: table; } - - thead.show-for-small-only, thead.show-for-small-up, thead.show-for-small, thead.show-for-small-down, thead.hide-for-medium-only, thead.hide-for-medium-up, thead.hide-for-medium, thead.show-for-medium-down, thead.hide-for-large-only, thead.hide-for-large-up, thead.hide-for-large, thead.show-for-large-down, thead.hide-for-xlarge-only, thead.hide-for-xlarge-up, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up { - display: table-header-group !important; } - - tbody.show-for-small-only, tbody.show-for-small-up, tbody.show-for-small, tbody.show-for-small-down, tbody.hide-for-medium-only, tbody.hide-for-medium-up, tbody.hide-for-medium, tbody.show-for-medium-down, tbody.hide-for-large-only, tbody.hide-for-large-up, tbody.hide-for-large, tbody.show-for-large-down, tbody.hide-for-xlarge-only, tbody.hide-for-xlarge-up, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up { - display: table-row-group !important; } - - tr.show-for-small-only, tr.show-for-small-up, tr.show-for-small, tr.show-for-small-down, tr.hide-for-medium-only, tr.hide-for-medium-up, tr.hide-for-medium, tr.show-for-medium-down, tr.hide-for-large-only, tr.hide-for-large-up, tr.hide-for-large, tr.show-for-large-down, tr.hide-for-xlarge-only, tr.hide-for-xlarge-up, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up { - display: table-row !important; } - - th.show-for-small-only, td.show-for-small-only, th.show-for-small-up, td.show-for-small-up, th.show-for-small, td.show-for-small, th.show-for-small-down, td.show-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.hide-for-medium-up, td.hide-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.show-for-medium-down, td.show-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.hide-for-large-up, td.hide-for-large-up, th.hide-for-large, td.hide-for-large, th.show-for-large-down, td.show-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.hide-for-xlarge-up, td.hide-for-xlarge-up, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up { - display: table-cell !important; } } -/* medium displays */ -@media only screen and (min-width: 40.063em) { - .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .show-for-medium-only, .show-for-medium-up, .show-for-medium, .show-for-medium-down, .hide-for-large-only, .hide-for-large-up, .hide-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xxlarge-only, .hide-for-xxlarge-up { - display: inherit !important; } - - .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .hide-for-medium-only, .hide-for-medium-up, .hide-for-medium, .hide-for-medium-down, .show-for-large-only, .show-for-large-up, .show-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xxlarge-only, .show-for-xxlarge-up { - display: none !important; } - - .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .visible-for-medium-only, .visible-for-medium-up, .visible-for-medium, .visible-for-medium-down, .hidden-for-large-only, .hidden-for-large-up, .hidden-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up { - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; } - - .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .hidden-for-medium-only, .hidden-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .visible-for-large-only, .visible-for-large-up, .visible-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xxlarge-only, .visible-for-xxlarge-up { - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - - table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.show-for-medium-only, table.show-for-medium-up, table.show-for-medium, table.show-for-medium-down, table.hide-for-large-only, table.hide-for-large-up, table.hide-for-large, table.show-for-large-down, table.hide-for-xlarge-only, table.hide-for-xlarge-up, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up { - display: table; } - - thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.show-for-medium-only, thead.show-for-medium-up, thead.show-for-medium, thead.show-for-medium-down, thead.hide-for-large-only, thead.hide-for-large-up, thead.hide-for-large, thead.show-for-large-down, thead.hide-for-xlarge-only, thead.hide-for-xlarge-up, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up { - display: table-header-group !important; } - - tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.show-for-medium-only, tbody.show-for-medium-up, tbody.show-for-medium, tbody.show-for-medium-down, tbody.hide-for-large-only, tbody.hide-for-large-up, tbody.hide-for-large, tbody.show-for-large-down, tbody.hide-for-xlarge-only, tbody.hide-for-xlarge-up, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up { - display: table-row-group !important; } - - tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.show-for-medium-only, tr.show-for-medium-up, tr.show-for-medium, tr.show-for-medium-down, tr.hide-for-large-only, tr.hide-for-large-up, tr.hide-for-large, tr.show-for-large-down, tr.hide-for-xlarge-only, tr.hide-for-xlarge-up, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up { - display: table-row !important; } - - th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.show-for-medium-only, td.show-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.show-for-medium, td.show-for-medium, th.show-for-medium-down, td.show-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.hide-for-large-up, td.hide-for-large-up, th.hide-for-large, td.hide-for-large, th.show-for-large-down, td.show-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.hide-for-xlarge-up, td.hide-for-xlarge-up, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up { - display: table-cell !important; } } -/* large displays */ -@media only screen and (min-width: 64.063em) { - .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .hide-for-medium-only, .show-for-medium-up, .hide-for-medium, .hide-for-medium-down, .show-for-large-only, .show-for-large-up, .show-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xxlarge-only, .hide-for-xxlarge-up { - display: inherit !important; } - - .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .show-for-medium-only, .hide-for-medium-up, .show-for-medium, .show-for-medium-down, .hide-for-large-only, .hide-for-large-up, .hide-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xxlarge-only, .show-for-xxlarge-up { - display: none !important; } - - .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .hidden-for-medium-only, .visible-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .visible-for-large-only, .visible-for-large-up, .visible-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up { - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; } - - .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .visible-for-medium-only, .hidden-for-medium-up, .visible-for-medium, .visible-for-medium-down, .hidden-for-large-only, .hidden-for-large-up, .hidden-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xxlarge-only, .visible-for-xxlarge-up { - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - - table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.hide-for-medium-only, table.show-for-medium-up, table.hide-for-medium, table.hide-for-medium-down, table.show-for-large-only, table.show-for-large-up, table.show-for-large, table.show-for-large-down, table.hide-for-xlarge-only, table.hide-for-xlarge-up, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up { - display: table; } - - thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.hide-for-medium, thead.hide-for-medium-down, thead.show-for-large-only, thead.show-for-large-up, thead.show-for-large, thead.show-for-large-down, thead.hide-for-xlarge-only, thead.hide-for-xlarge-up, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up { - display: table-header-group !important; } - - tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.show-for-large-only, tbody.show-for-large-up, tbody.show-for-large, tbody.show-for-large-down, tbody.hide-for-xlarge-only, tbody.hide-for-xlarge-up, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up { - display: table-row-group !important; } - - tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.hide-for-medium, tr.hide-for-medium-down, tr.show-for-large-only, tr.show-for-large-up, tr.show-for-large, tr.show-for-large-down, tr.hide-for-xlarge-only, tr.hide-for-xlarge-up, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up { - display: table-row !important; } - - th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.hide-for-medium-down, td.hide-for-medium-down, th.show-for-large-only, td.show-for-large-only, th.show-for-large-up, td.show-for-large-up, th.show-for-large, td.show-for-large, th.show-for-large-down, td.show-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.hide-for-xlarge-up, td.hide-for-xlarge-up, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up { - display: table-cell !important; } } -/* xlarge displays */ -@media only screen and (min-width: 90.063em) { - .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .hide-for-medium-only, .show-for-medium-up, .hide-for-medium, .hide-for-medium-down, .hide-for-large-only, .show-for-large-up, .hide-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .hide-for-xxlarge-only, .hide-for-xxlarge-up { - display: inherit !important; } - - .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .show-for-medium-only, .hide-for-medium-up, .show-for-medium, .show-for-medium-down, .show-for-large-only, .hide-for-large-up, .show-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .show-for-xxlarge-only, .show-for-xxlarge-up { - display: none !important; } - - .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .hidden-for-medium-only, .visible-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .hidden-for-large-only, .visible-for-large-up, .hidden-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up { - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; } - - .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .visible-for-medium-only, .hidden-for-medium-up, .visible-for-medium, .visible-for-medium-down, .visible-for-large-only, .hidden-for-large-up, .visible-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .visible-for-xxlarge-only, .visible-for-xxlarge-up { - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - - table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.hide-for-medium-only, table.show-for-medium-up, table.hide-for-medium, table.hide-for-medium-down, table.hide-for-large-only, table.show-for-large-up, table.hide-for-large, table.hide-for-large-down, table.show-for-xlarge-only, table.show-for-xlarge-up, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up { - display: table; } - - thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.hide-for-medium, thead.hide-for-medium-down, thead.hide-for-large-only, thead.show-for-large-up, thead.hide-for-large, thead.hide-for-large-down, thead.show-for-xlarge-only, thead.show-for-xlarge-up, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up { - display: table-header-group !important; } - - tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.hide-for-large-only, tbody.show-for-large-up, tbody.hide-for-large, tbody.hide-for-large-down, tbody.show-for-xlarge-only, tbody.show-for-xlarge-up, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up { - display: table-row-group !important; } - - tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.hide-for-medium, tr.hide-for-medium-down, tr.hide-for-large-only, tr.show-for-large-up, tr.hide-for-large, tr.hide-for-large-down, tr.show-for-xlarge-only, tr.show-for-xlarge-up, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up { - display: table-row !important; } - - th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.hide-for-medium-down, td.hide-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.show-for-large-up, td.show-for-large-up, th.hide-for-large, td.hide-for-large, th.hide-for-large-down, td.hide-for-large-down, th.show-for-xlarge-only, td.show-for-xlarge-only, th.show-for-xlarge-up, td.show-for-xlarge-up, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up { - display: table-cell !important; } } -/* xxlarge displays */ -@media only screen and (min-width: 120.063em) { - .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .hide-for-medium-only, .show-for-medium-up, .hide-for-medium, .hide-for-medium-down, .hide-for-large-only, .show-for-large-up, .hide-for-large, .hide-for-large-down, .hide-for-xlarge-only, .show-for-xlarge-up, .show-for-xxlarge-only, .show-for-xxlarge-up { - display: inherit !important; } - - .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .show-for-medium-only, .hide-for-medium-up, .show-for-medium, .show-for-medium-down, .show-for-large-only, .hide-for-large-up, .show-for-large, .show-for-large-down, .show-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xxlarge-only, .hide-for-xxlarge-up { - display: none !important; } - - .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .hidden-for-medium-only, .visible-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .hidden-for-large-only, .visible-for-large-up, .hidden-for-large, .hidden-for-large-down, .hidden-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xxlarge-only, .visible-for-xxlarge-up { - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; } - - .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .visible-for-medium-only, .hidden-for-medium-up, .visible-for-medium, .visible-for-medium-down, .visible-for-large-only, .hidden-for-large-up, .visible-for-large, .visible-for-large-down, .visible-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up { - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - - table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.hide-for-medium-only, table.show-for-medium-up, table.hide-for-medium, table.hide-for-medium-down, table.hide-for-large-only, table.show-for-large-up, table.hide-for-large, table.hide-for-large-down, table.hide-for-xlarge-only, table.show-for-xlarge-up, table.show-for-xxlarge-only, table.show-for-xxlarge-up { - display: table; } - - thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.hide-for-medium, thead.hide-for-medium-down, thead.hide-for-large-only, thead.show-for-large-up, thead.hide-for-large, thead.hide-for-large-down, thead.hide-for-xlarge-only, thead.show-for-xlarge-up, thead.show-for-xxlarge-only, thead.show-for-xxlarge-up { - display: table-header-group !important; } - - tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.hide-for-large-only, tbody.show-for-large-up, tbody.hide-for-large, tbody.hide-for-large-down, tbody.hide-for-xlarge-only, tbody.show-for-xlarge-up, tbody.show-for-xxlarge-only, tbody.show-for-xxlarge-up { - display: table-row-group !important; } - - tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.hide-for-medium, tr.hide-for-medium-down, tr.hide-for-large-only, tr.show-for-large-up, tr.hide-for-large, tr.hide-for-large-down, tr.hide-for-xlarge-only, tr.show-for-xlarge-up, tr.show-for-xxlarge-only, tr.show-for-xxlarge-up { - display: table-row !important; } - - th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.hide-for-medium-down, td.hide-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.show-for-large-up, td.show-for-large-up, th.hide-for-large, td.hide-for-large, th.hide-for-large-down, td.hide-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.show-for-xlarge-up, td.show-for-xlarge-up, th.show-for-xxlarge-only, td.show-for-xxlarge-only, th.show-for-xxlarge-up, td.show-for-xxlarge-up { - display: table-cell !important; } } -/* Orientation targeting */ -.show-for-landscape, -.hide-for-portrait { - display: inherit !important; } - -.hide-for-landscape, -.show-for-portrait { - display: none !important; } - -/* Specific visibility for tables */ -table.hide-for-landscape, table.show-for-portrait { - display: table; } - -thead.hide-for-landscape, thead.show-for-portrait { - display: table-header-group !important; } - -tbody.hide-for-landscape, tbody.show-for-portrait { - display: table-row-group !important; } - -tr.hide-for-landscape, tr.show-for-portrait { - display: table-row !important; } - -td.hide-for-landscape, td.show-for-portrait, -th.hide-for-landscape, -th.show-for-portrait { - display: table-cell !important; } - -@media only screen and (orientation: landscape) { - .show-for-landscape, - .hide-for-portrait { - display: inherit !important; } - - .hide-for-landscape, - .show-for-portrait { - display: none !important; } - - /* Specific visibility for tables */ - table.show-for-landscape, table.hide-for-portrait { - display: table; } - - thead.show-for-landscape, thead.hide-for-portrait { - display: table-header-group !important; } - - tbody.show-for-landscape, tbody.hide-for-portrait { - display: table-row-group !important; } - - tr.show-for-landscape, tr.hide-for-portrait { - display: table-row !important; } - - td.show-for-landscape, td.hide-for-portrait, - th.show-for-landscape, - th.hide-for-portrait { - display: table-cell !important; } } -@media only screen and (orientation: portrait) { - .show-for-portrait, - .hide-for-landscape { - display: inherit !important; } - - .hide-for-portrait, - .show-for-landscape { - display: none !important; } - - /* Specific visibility for tables */ - table.show-for-portrait, table.hide-for-landscape { - display: table; } - - thead.show-for-portrait, thead.hide-for-landscape { - display: table-header-group !important; } - - tbody.show-for-portrait, tbody.hide-for-landscape { - display: table-row-group !important; } - - tr.show-for-portrait, tr.hide-for-landscape { - display: table-row !important; } - - td.show-for-portrait, td.hide-for-landscape, - th.show-for-portrait, - th.hide-for-landscape { - display: table-cell !important; } } -/* Touch-enabled device targeting */ -.show-for-touch { - display: none !important; } - -.hide-for-touch { - display: inherit !important; } - -.touch .show-for-touch { - display: inherit !important; } - -.touch .hide-for-touch { - display: none !important; } - -/* Specific visibility for tables */ -table.hide-for-touch { - display: table; } - -.touch table.show-for-touch { - display: table; } - -thead.hide-for-touch { - display: table-header-group !important; } - -.touch thead.show-for-touch { - display: table-header-group !important; } - -tbody.hide-for-touch { - display: table-row-group !important; } - -.touch tbody.show-for-touch { - display: table-row-group !important; } - -tr.hide-for-touch { - display: table-row !important; } - -.touch tr.show-for-touch { - display: table-row !important; } - -td.hide-for-touch { - display: table-cell !important; } - -.touch td.show-for-touch { - display: table-cell !important; } - -th.hide-for-touch { - display: table-cell !important; } - -.touch th.show-for-touch { - display: table-cell !important; } - -/* Print visibility */ -@media print { - .show-for-print { - display: block; } - - .hide-for-print { - display: none; } - - table.show-for-print { - display: table; } - - thead.show-for-print { - display: table-header-group !important; } - - tbody.show-for-print { - display: table-row-group !important; } - - tr.show-for-print { - display: table-row !important; } - - td.show-for-print { - display: table-cell !important; } - - th.show-for-print { - display: table-cell !important; } } diff --git a/client/lib/foundation/css/foundation.min.css b/client/lib/foundation/css/foundation.min.css deleted file mode 100644 index 0126c2f..0000000 --- a/client/lib/foundation/css/foundation.min.css +++ /dev/null @@ -1 +0,0 @@ -meta.foundation-version{font-family:"/5.3.0/"}meta.foundation-mq-small{font-family:"/only screen/";width:0em}meta.foundation-mq-medium{font-family:"/only screen and (min-width:40.063em)/";width:40.063em}meta.foundation-mq-large{font-family:"/only screen and (min-width:64.063em)/";width:64.063em}meta.foundation-mq-xlarge{font-family:"/only screen and (min-width:90.063em)/";width:90.063em}meta.foundation-mq-xxlarge{font-family:"/only screen and (min-width:120.063em)/";width:120.063em}meta.foundation-data-attribute-namespace{font-family:false}html,body{height:100%}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html,body{font-size:100%}body{background:#fff;color:#222;padding:0;margin:0;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-weight:normal;font-style:normal;line-height:1;position:relative;cursor:default}a:hover{cursor:pointer}img{max-width:100%;height:auto}img{-ms-interpolation-mode:bicubic}#map_canvas img,#map_canvas embed,#map_canvas object,.map_canvas img,.map_canvas embed,.map_canvas object{max-width:none !important}.left{float:left !important}.right{float:right !important}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.hide{display:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:inline-block;vertical-align:middle}textarea{height:auto;min-height:50px}select{width:100%}.row{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5rem}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.row.collapse>.column,.row.collapse>.columns{padding-left:0;padding-right:0}.row.collapse .row{margin-left:0;margin-right:0}.row .row{width:auto;margin-left:-0.9375rem;margin-right:-0.9375rem;margin-top:0;margin-bottom:0;max-width:none}.row .row:before,.row .row:after{content:" ";display:table}.row .row:after{clear:both}.row .row.collapse{width:auto;margin:0;max-width:none}.row .row.collapse:before,.row .row.collapse:after{content:" ";display:table}.row .row.collapse:after{clear:both}.column,.columns{padding-left:0.9375rem;padding-right:0.9375rem;width:100%;float:left}[class*="column"]+[class*="column"]:last-child{float:right}[class*="column"]+[class*="column"].end{float:left}@media only screen{.small-push-0{position:relative;left:0%;right:auto}.small-pull-0{position:relative;right:0%;left:auto}.small-push-1{position:relative;left:8.33333%;right:auto}.small-pull-1{position:relative;right:8.33333%;left:auto}.small-push-2{position:relative;left:16.66667%;right:auto}.small-pull-2{position:relative;right:16.66667%;left:auto}.small-push-3{position:relative;left:25%;right:auto}.small-pull-3{position:relative;right:25%;left:auto}.small-push-4{position:relative;left:33.33333%;right:auto}.small-pull-4{position:relative;right:33.33333%;left:auto}.small-push-5{position:relative;left:41.66667%;right:auto}.small-pull-5{position:relative;right:41.66667%;left:auto}.small-push-6{position:relative;left:50%;right:auto}.small-pull-6{position:relative;right:50%;left:auto}.small-push-7{position:relative;left:58.33333%;right:auto}.small-pull-7{position:relative;right:58.33333%;left:auto}.small-push-8{position:relative;left:66.66667%;right:auto}.small-pull-8{position:relative;right:66.66667%;left:auto}.small-push-9{position:relative;left:75%;right:auto}.small-pull-9{position:relative;right:75%;left:auto}.small-push-10{position:relative;left:83.33333%;right:auto}.small-pull-10{position:relative;right:83.33333%;left:auto}.small-push-11{position:relative;left:91.66667%;right:auto}.small-pull-11{position:relative;right:91.66667%;left:auto}.column,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left}.small-1{width:8.33333%}.small-2{width:16.66667%}.small-3{width:25%}.small-4{width:33.33333%}.small-5{width:41.66667%}.small-6{width:50%}.small-7{width:58.33333%}.small-8{width:66.66667%}.small-9{width:75%}.small-10{width:83.33333%}.small-11{width:91.66667%}.small-12{width:100%}.small-offset-0{margin-left:0% !important}.small-offset-1{margin-left:8.33333% !important}.small-offset-2{margin-left:16.66667% !important}.small-offset-3{margin-left:25% !important}.small-offset-4{margin-left:33.33333% !important}.small-offset-5{margin-left:41.66667% !important}.small-offset-6{margin-left:50% !important}.small-offset-7{margin-left:58.33333% !important}.small-offset-8{margin-left:66.66667% !important}.small-offset-9{margin-left:75% !important}.small-offset-10{margin-left:83.33333% !important}.small-offset-11{margin-left:91.66667% !important}.small-reset-order{margin-left:0;margin-right:0;left:auto;right:auto;float:left}.column.small-centered,.columns.small-centered{margin-left:auto;margin-right:auto;float:none}.column.small-uncentered,.columns.small-uncentered{margin-left:0;margin-right:0;float:left}.column.small-centered:last-child,.columns.small-centered:last-child{float:none}.column.small-uncentered:last-child,.columns.small-uncentered:last-child{float:left}.column.small-uncentered.opposite,.columns.small-uncentered.opposite{float:right}}@media only screen and (min-width: 40.063em){.medium-push-0{position:relative;left:0%;right:auto}.medium-pull-0{position:relative;right:0%;left:auto}.medium-push-1{position:relative;left:8.33333%;right:auto}.medium-pull-1{position:relative;right:8.33333%;left:auto}.medium-push-2{position:relative;left:16.66667%;right:auto}.medium-pull-2{position:relative;right:16.66667%;left:auto}.medium-push-3{position:relative;left:25%;right:auto}.medium-pull-3{position:relative;right:25%;left:auto}.medium-push-4{position:relative;left:33.33333%;right:auto}.medium-pull-4{position:relative;right:33.33333%;left:auto}.medium-push-5{position:relative;left:41.66667%;right:auto}.medium-pull-5{position:relative;right:41.66667%;left:auto}.medium-push-6{position:relative;left:50%;right:auto}.medium-pull-6{position:relative;right:50%;left:auto}.medium-push-7{position:relative;left:58.33333%;right:auto}.medium-pull-7{position:relative;right:58.33333%;left:auto}.medium-push-8{position:relative;left:66.66667%;right:auto}.medium-pull-8{position:relative;right:66.66667%;left:auto}.medium-push-9{position:relative;left:75%;right:auto}.medium-pull-9{position:relative;right:75%;left:auto}.medium-push-10{position:relative;left:83.33333%;right:auto}.medium-pull-10{position:relative;right:83.33333%;left:auto}.medium-push-11{position:relative;left:91.66667%;right:auto}.medium-pull-11{position:relative;right:91.66667%;left:auto}.column,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left}.medium-1{width:8.33333%}.medium-2{width:16.66667%}.medium-3{width:25%}.medium-4{width:33.33333%}.medium-5{width:41.66667%}.medium-6{width:50%}.medium-7{width:58.33333%}.medium-8{width:66.66667%}.medium-9{width:75%}.medium-10{width:83.33333%}.medium-11{width:91.66667%}.medium-12{width:100%}.medium-offset-0{margin-left:0% !important}.medium-offset-1{margin-left:8.33333% !important}.medium-offset-2{margin-left:16.66667% !important}.medium-offset-3{margin-left:25% !important}.medium-offset-4{margin-left:33.33333% !important}.medium-offset-5{margin-left:41.66667% !important}.medium-offset-6{margin-left:50% !important}.medium-offset-7{margin-left:58.33333% !important}.medium-offset-8{margin-left:66.66667% !important}.medium-offset-9{margin-left:75% !important}.medium-offset-10{margin-left:83.33333% !important}.medium-offset-11{margin-left:91.66667% !important}.medium-reset-order{margin-left:0;margin-right:0;left:auto;right:auto;float:left}.column.medium-centered,.columns.medium-centered{margin-left:auto;margin-right:auto;float:none}.column.medium-uncentered,.columns.medium-uncentered{margin-left:0;margin-right:0;float:left}.column.medium-centered:last-child,.columns.medium-centered:last-child{float:none}.column.medium-uncentered:last-child,.columns.medium-uncentered:last-child{float:left}.column.medium-uncentered.opposite,.columns.medium-uncentered.opposite{float:right}.push-0{position:relative;left:0%;right:auto}.pull-0{position:relative;right:0%;left:auto}.push-1{position:relative;left:8.33333%;right:auto}.pull-1{position:relative;right:8.33333%;left:auto}.push-2{position:relative;left:16.66667%;right:auto}.pull-2{position:relative;right:16.66667%;left:auto}.push-3{position:relative;left:25%;right:auto}.pull-3{position:relative;right:25%;left:auto}.push-4{position:relative;left:33.33333%;right:auto}.pull-4{position:relative;right:33.33333%;left:auto}.push-5{position:relative;left:41.66667%;right:auto}.pull-5{position:relative;right:41.66667%;left:auto}.push-6{position:relative;left:50%;right:auto}.pull-6{position:relative;right:50%;left:auto}.push-7{position:relative;left:58.33333%;right:auto}.pull-7{position:relative;right:58.33333%;left:auto}.push-8{position:relative;left:66.66667%;right:auto}.pull-8{position:relative;right:66.66667%;left:auto}.push-9{position:relative;left:75%;right:auto}.pull-9{position:relative;right:75%;left:auto}.push-10{position:relative;left:83.33333%;right:auto}.pull-10{position:relative;right:83.33333%;left:auto}.push-11{position:relative;left:91.66667%;right:auto}.pull-11{position:relative;right:91.66667%;left:auto}}@media only screen and (min-width: 64.063em){.large-push-0{position:relative;left:0%;right:auto}.large-pull-0{position:relative;right:0%;left:auto}.large-push-1{position:relative;left:8.33333%;right:auto}.large-pull-1{position:relative;right:8.33333%;left:auto}.large-push-2{position:relative;left:16.66667%;right:auto}.large-pull-2{position:relative;right:16.66667%;left:auto}.large-push-3{position:relative;left:25%;right:auto}.large-pull-3{position:relative;right:25%;left:auto}.large-push-4{position:relative;left:33.33333%;right:auto}.large-pull-4{position:relative;right:33.33333%;left:auto}.large-push-5{position:relative;left:41.66667%;right:auto}.large-pull-5{position:relative;right:41.66667%;left:auto}.large-push-6{position:relative;left:50%;right:auto}.large-pull-6{position:relative;right:50%;left:auto}.large-push-7{position:relative;left:58.33333%;right:auto}.large-pull-7{position:relative;right:58.33333%;left:auto}.large-push-8{position:relative;left:66.66667%;right:auto}.large-pull-8{position:relative;right:66.66667%;left:auto}.large-push-9{position:relative;left:75%;right:auto}.large-pull-9{position:relative;right:75%;left:auto}.large-push-10{position:relative;left:83.33333%;right:auto}.large-pull-10{position:relative;right:83.33333%;left:auto}.large-push-11{position:relative;left:91.66667%;right:auto}.large-pull-11{position:relative;right:91.66667%;left:auto}.column,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left}.large-1{width:8.33333%}.large-2{width:16.66667%}.large-3{width:25%}.large-4{width:33.33333%}.large-5{width:41.66667%}.large-6{width:50%}.large-7{width:58.33333%}.large-8{width:66.66667%}.large-9{width:75%}.large-10{width:83.33333%}.large-11{width:91.66667%}.large-12{width:100%}.large-offset-0{margin-left:0% !important}.large-offset-1{margin-left:8.33333% !important}.large-offset-2{margin-left:16.66667% !important}.large-offset-3{margin-left:25% !important}.large-offset-4{margin-left:33.33333% !important}.large-offset-5{margin-left:41.66667% !important}.large-offset-6{margin-left:50% !important}.large-offset-7{margin-left:58.33333% !important}.large-offset-8{margin-left:66.66667% !important}.large-offset-9{margin-left:75% !important}.large-offset-10{margin-left:83.33333% !important}.large-offset-11{margin-left:91.66667% !important}.large-reset-order{margin-left:0;margin-right:0;left:auto;right:auto;float:left}.column.large-centered,.columns.large-centered{margin-left:auto;margin-right:auto;float:none}.column.large-uncentered,.columns.large-uncentered{margin-left:0;margin-right:0;float:left}.column.large-centered:last-child,.columns.large-centered:last-child{float:none}.column.large-uncentered:last-child,.columns.large-uncentered:last-child{float:left}.column.large-uncentered.opposite,.columns.large-uncentered.opposite{float:right}.push-0{position:relative;left:0%;right:auto}.pull-0{position:relative;right:0%;left:auto}.push-1{position:relative;left:8.33333%;right:auto}.pull-1{position:relative;right:8.33333%;left:auto}.push-2{position:relative;left:16.66667%;right:auto}.pull-2{position:relative;right:16.66667%;left:auto}.push-3{position:relative;left:25%;right:auto}.pull-3{position:relative;right:25%;left:auto}.push-4{position:relative;left:33.33333%;right:auto}.pull-4{position:relative;right:33.33333%;left:auto}.push-5{position:relative;left:41.66667%;right:auto}.pull-5{position:relative;right:41.66667%;left:auto}.push-6{position:relative;left:50%;right:auto}.pull-6{position:relative;right:50%;left:auto}.push-7{position:relative;left:58.33333%;right:auto}.pull-7{position:relative;right:58.33333%;left:auto}.push-8{position:relative;left:66.66667%;right:auto}.pull-8{position:relative;right:66.66667%;left:auto}.push-9{position:relative;left:75%;right:auto}.pull-9{position:relative;right:75%;left:auto}.push-10{position:relative;left:83.33333%;right:auto}.pull-10{position:relative;right:83.33333%;left:auto}.push-11{position:relative;left:91.66667%;right:auto}.pull-11{position:relative;right:91.66667%;left:auto}}button,.button{border-style:solid;border-width:0px;cursor:pointer;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-weight:normal;line-height:normal;margin:0 0 1.25rem;position:relative;text-decoration:none;text-align:center;-webkit-appearance:none;-webkit-border-radius:0;display:inline-block;padding-top:1rem;padding-right:2rem;padding-bottom:1.0625rem;padding-left:2rem;font-size:1rem;background-color:#008cba;border-color:#007095;color:#fff;transition:background-color 300ms ease-out}button:hover,button:focus,.button:hover,.button:focus{background-color:#007095}button:hover,button:focus,.button:hover,.button:focus{color:#fff}button.secondary,.button.secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333}button.secondary:hover,button.secondary:focus,.button.secondary:hover,.button.secondary:focus{background-color:#b9b9b9}button.secondary:hover,button.secondary:focus,.button.secondary:hover,.button.secondary:focus{color:#333}button.success,.button.success{background-color:#43ac6a;border-color:#368a55;color:#fff}button.success:hover,button.success:focus,.button.success:hover,.button.success:focus{background-color:#368a55}button.success:hover,button.success:focus,.button.success:hover,.button.success:focus{color:#fff}button.alert,.button.alert{background-color:#f04124;border-color:#cf2a0e;color:#fff}button.alert:hover,button.alert:focus,.button.alert:hover,.button.alert:focus{background-color:#cf2a0e}button.alert:hover,button.alert:focus,.button.alert:hover,.button.alert:focus{color:#fff}button.large,.button.large{padding-top:1.125rem;padding-right:2.25rem;padding-bottom:1.1875rem;padding-left:2.25rem;font-size:1.25rem}button.small,.button.small{padding-top:0.875rem;padding-right:1.75rem;padding-bottom:0.9375rem;padding-left:1.75rem;font-size:0.8125rem}button.tiny,.button.tiny{padding-top:0.625rem;padding-right:1.25rem;padding-bottom:0.6875rem;padding-left:1.25rem;font-size:0.6875rem}button.expand,.button.expand{padding-right:0;padding-left:0;width:100%}button.left-align,.button.left-align{text-align:left;text-indent:0.75rem}button.right-align,.button.right-align{text-align:right;padding-right:0.75rem}button.radius,.button.radius{border-radius:3px}button.round,.button.round{border-radius:1000px}button.disabled,button[disabled],.button.disabled,.button[disabled]{background-color:#008cba;border-color:#007095;color:#fff;cursor:default;opacity:0.7;box-shadow:none}button.disabled:hover,button.disabled:focus,button[disabled]:hover,button[disabled]:focus,.button.disabled:hover,.button.disabled:focus,.button[disabled]:hover,.button[disabled]:focus{background-color:#007095}button.disabled:hover,button.disabled:focus,button[disabled]:hover,button[disabled]:focus,.button.disabled:hover,.button.disabled:focus,.button[disabled]:hover,.button[disabled]:focus{color:#fff}button.disabled:hover,button.disabled:focus,button[disabled]:hover,button[disabled]:focus,.button.disabled:hover,.button.disabled:focus,.button[disabled]:hover,.button[disabled]:focus{background-color:#008cba}button.disabled.secondary,button[disabled].secondary,.button.disabled.secondary,.button[disabled].secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333;cursor:default;opacity:0.7;box-shadow:none}button.disabled.secondary:hover,button.disabled.secondary:focus,button[disabled].secondary:hover,button[disabled].secondary:focus,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary:hover,.button[disabled].secondary:focus{background-color:#b9b9b9}button.disabled.secondary:hover,button.disabled.secondary:focus,button[disabled].secondary:hover,button[disabled].secondary:focus,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary:hover,.button[disabled].secondary:focus{color:#333}button.disabled.secondary:hover,button.disabled.secondary:focus,button[disabled].secondary:hover,button[disabled].secondary:focus,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary:hover,.button[disabled].secondary:focus{background-color:#e7e7e7}button.disabled.success,button[disabled].success,.button.disabled.success,.button[disabled].success{background-color:#43ac6a;border-color:#368a55;color:#fff;cursor:default;opacity:0.7;box-shadow:none}button.disabled.success:hover,button.disabled.success:focus,button[disabled].success:hover,button[disabled].success:focus,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success:hover,.button[disabled].success:focus{background-color:#368a55}button.disabled.success:hover,button.disabled.success:focus,button[disabled].success:hover,button[disabled].success:focus,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success:hover,.button[disabled].success:focus{color:#fff}button.disabled.success:hover,button.disabled.success:focus,button[disabled].success:hover,button[disabled].success:focus,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success:hover,.button[disabled].success:focus{background-color:#43ac6a}button.disabled.alert,button[disabled].alert,.button.disabled.alert,.button[disabled].alert{background-color:#f04124;border-color:#cf2a0e;color:#fff;cursor:default;opacity:0.7;box-shadow:none}button.disabled.alert:hover,button.disabled.alert:focus,button[disabled].alert:hover,button[disabled].alert:focus,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert:hover,.button[disabled].alert:focus{background-color:#cf2a0e}button.disabled.alert:hover,button.disabled.alert:focus,button[disabled].alert:hover,button[disabled].alert:focus,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert:hover,.button[disabled].alert:focus{color:#fff}button.disabled.alert:hover,button.disabled.alert:focus,button[disabled].alert:hover,button[disabled].alert:focus,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert:hover,.button[disabled].alert:focus{background-color:#f04124}@media only screen and (min-width: 40.063em){button,.button{display:inline-block}}meta.foundation-mq-topbar{font-family:"/only screen and (min-width:40.063em)/";width:40.063em}.contain-to-grid{width:100%;background:#333}.contain-to-grid .top-bar{margin-bottom:0}.fixed{width:100%;left:0;position:fixed;top:0;z-index:99}.fixed.expanded:not(.top-bar){overflow-y:auto;height:auto;width:100%;max-height:100%}.fixed.expanded:not(.top-bar) .title-area{position:fixed;width:100%;z-index:99}.fixed.expanded:not(.top-bar) .top-bar-section{z-index:98;margin-top:45px}.top-bar{overflow:hidden;height:45px;line-height:45px;position:relative;background:#333;margin-bottom:0}.top-bar ul{margin-bottom:0;list-style:none}.top-bar .row{max-width:none}.top-bar form,.top-bar input{margin-bottom:0}.top-bar input{height:auto;padding-top:.35rem;padding-bottom:.35rem;font-size:0.75rem}.top-bar .button,.top-bar button{padding-top:.45rem;padding-bottom:.35rem;margin-bottom:0;font-size:0.75rem}.top-bar .title-area{position:relative;margin:0}.top-bar .name{height:45px;margin:0;font-size:16px}.top-bar .name h1{line-height:45px;font-size:1.0625rem;margin:0}.top-bar .name h1 a{font-weight:normal;color:#fff;width:75%;display:block;padding:0 15px}.top-bar .toggle-topbar{position:absolute;right:0;top:0}.top-bar .toggle-topbar a{color:#fff;text-transform:uppercase;font-size:0.8125rem;font-weight:bold;position:relative;display:block;padding:0 15px;height:45px;line-height:45px}.top-bar .toggle-topbar.menu-icon{top:50%;margin-top:-16px}.top-bar .toggle-topbar.menu-icon a{height:34px;line-height:33px;padding:0 40px 0 15px;color:#fff;position:relative}.top-bar .toggle-topbar.menu-icon a span::after{content:"";position:absolute;display:block;height:0;top:50%;margin-top:-8px;right:15px;box-shadow:0 0px 0 1px #fff,0 7px 0 1px #fff,0 14px 0 1px #fff;width:16px}.top-bar .toggle-topbar.menu-icon a span:hover:after{box-shadow:0 0px 0 1px #fff,0 7px 0 1px #fff,0 14px 0 1px #fff}.top-bar.expanded{height:auto;background:transparent}.top-bar.expanded .title-area{background:#333}.top-bar.expanded .toggle-topbar a{color:#888}.top-bar.expanded .toggle-topbar a::after{box-shadow:0 10px 0 1px #888,0 16px 0 1px #888,0 22px 0 1px #888}.top-bar-section{left:0;position:relative;width:auto;transition:left 300ms ease-out}.top-bar-section ul{padding:0;width:100%;height:auto;display:block;font-size:16px;margin:0}.top-bar-section .divider,.top-bar-section [role="separator"]{border-top:solid 1px #1a1a1a;clear:both;height:1px;width:100%}.top-bar-section ul li{background:#333}.top-bar-section ul li>a{display:block;width:100%;color:#fff;padding:12px 0 12px 0;padding-left:15px;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-size:0.8125rem;font-weight:normal;text-transform:none}.top-bar-section ul li>a.button{font-size:0.8125rem;padding-right:15px;padding-left:15px;background-color:#008cba;border-color:#007095;color:#fff}.top-bar-section ul li>a.button:hover,.top-bar-section ul li>a.button:focus{background-color:#007095}.top-bar-section ul li>a.button:hover,.top-bar-section ul li>a.button:focus{color:#fff}.top-bar-section ul li>a.button.secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333}.top-bar-section ul li>a.button.secondary:hover,.top-bar-section ul li>a.button.secondary:focus{background-color:#b9b9b9}.top-bar-section ul li>a.button.secondary:hover,.top-bar-section ul li>a.button.secondary:focus{color:#333}.top-bar-section ul li>a.button.success{background-color:#43ac6a;border-color:#368a55;color:#fff}.top-bar-section ul li>a.button.success:hover,.top-bar-section ul li>a.button.success:focus{background-color:#368a55}.top-bar-section ul li>a.button.success:hover,.top-bar-section ul li>a.button.success:focus{color:#fff}.top-bar-section ul li>a.button.alert{background-color:#f04124;border-color:#cf2a0e;color:#fff}.top-bar-section ul li>a.button.alert:hover,.top-bar-section ul li>a.button.alert:focus{background-color:#cf2a0e}.top-bar-section ul li>a.button.alert:hover,.top-bar-section ul li>a.button.alert:focus{color:#fff}.top-bar-section ul li>button{font-size:0.8125rem;padding-right:15px;padding-left:15px;background-color:#008cba;border-color:#007095;color:#fff}.top-bar-section ul li>button:hover,.top-bar-section ul li>button:focus{background-color:#007095}.top-bar-section ul li>button:hover,.top-bar-section ul li>button:focus{color:#fff}.top-bar-section ul li>button.secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333}.top-bar-section ul li>button.secondary:hover,.top-bar-section ul li>button.secondary:focus{background-color:#b9b9b9}.top-bar-section ul li>button.secondary:hover,.top-bar-section ul li>button.secondary:focus{color:#333}.top-bar-section ul li>button.success{background-color:#43ac6a;border-color:#368a55;color:#fff}.top-bar-section ul li>button.success:hover,.top-bar-section ul li>button.success:focus{background-color:#368a55}.top-bar-section ul li>button.success:hover,.top-bar-section ul li>button.success:focus{color:#fff}.top-bar-section ul li>button.alert{background-color:#f04124;border-color:#cf2a0e;color:#fff}.top-bar-section ul li>button.alert:hover,.top-bar-section ul li>button.alert:focus{background-color:#cf2a0e}.top-bar-section ul li>button.alert:hover,.top-bar-section ul li>button.alert:focus{color:#fff}.top-bar-section ul li:hover:not(.has-form)>a{background-color:#555;background:#272727;color:#fff}.top-bar-section ul li.active>a{background:#008cba;color:#fff}.top-bar-section ul li.active>a:hover{background:#0078a0;color:#fff}.top-bar-section .has-form{padding:15px}.top-bar-section .has-dropdown{position:relative}.top-bar-section .has-dropdown>a:after{content:"";display:block;width:0;height:0;border:inset 5px;border-color:transparent transparent transparent rgba(255,255,255,0.4);border-left-style:solid;margin-right:15px;margin-top:-4.5px;position:absolute;top:50%;right:0}.top-bar-section .has-dropdown.moved{position:static}.top-bar-section .has-dropdown.moved>.dropdown{display:block;position:static !important;height:auto;width:auto;overflow:visible;clip:auto;position:absolute !important;width:100%}.top-bar-section .has-dropdown.moved>a:after{display:none}.top-bar-section .dropdown{padding:0;position:absolute;left:100%;top:0;z-index:99;display:block;position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}.top-bar-section .dropdown li{width:100%;height:auto}.top-bar-section .dropdown li a{font-weight:normal;padding:8px 15px}.top-bar-section .dropdown li a.parent-link{font-weight:normal}.top-bar-section .dropdown li.title h5{margin-bottom:0;margin-top:0}.top-bar-section .dropdown li.title h5 a{color:#fff;line-height:22.5px;display:block}.top-bar-section .dropdown li.has-form{padding:8px 15px}.top-bar-section .dropdown li .button,.top-bar-section .dropdown li button{top:auto}.top-bar-section .dropdown label{padding:8px 15px 2px;margin-bottom:0;text-transform:uppercase;color:#777;font-weight:bold;font-size:0.625rem}.js-generated{display:block}@media only screen and (min-width: 40.063em){.top-bar{background:#333;overflow:visible}.top-bar:before,.top-bar:after{content:" ";display:table}.top-bar:after{clear:both}.top-bar .toggle-topbar{display:none}.top-bar .title-area{float:left}.top-bar .name h1 a{width:auto}.top-bar input,.top-bar .button,.top-bar button{font-size:0.875rem;position:relative;top:7px}.top-bar.expanded{background:#333}.contain-to-grid .top-bar{max-width:62.5rem;margin:0 auto;margin-bottom:0}.top-bar-section{transition:none 0 0;left:0 !important}.top-bar-section ul{width:auto;height:auto !important;display:inline}.top-bar-section ul li{float:left}.top-bar-section ul li .js-generated{display:none}.top-bar-section li.hover>a:not(.button){background-color:#555;background:#272727;color:#fff}.top-bar-section li:not(.has-form) a:not(.button){padding:0 15px;line-height:45px;background:#333}.top-bar-section li:not(.has-form) a:not(.button):hover{background-color:#555;background:#272727}.top-bar-section li.active:not(.has-form) a:not(.button){padding:0 15px;line-height:45px;color:#fff;background:#008cba}.top-bar-section li.active:not(.has-form) a:not(.button):hover{background:#0078a0}.top-bar-section .has-dropdown>a{padding-right:35px !important}.top-bar-section .has-dropdown>a:after{content:"";display:block;width:0;height:0;border:inset 5px;border-color:rgba(255,255,255,0.4) transparent transparent transparent;border-top-style:solid;margin-top:-2.5px;top:22.5px}.top-bar-section .has-dropdown.moved{position:relative}.top-bar-section .has-dropdown.moved>.dropdown{display:block;position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}.top-bar-section .has-dropdown.hover>.dropdown,.top-bar-section .has-dropdown.not-click:hover>.dropdown{display:block;position:static !important;height:auto;width:auto;overflow:visible;clip:auto;position:absolute !important}.top-bar-section .has-dropdown .dropdown li.has-dropdown>a:after{border:none;content:"\00bb";top:1rem;margin-top:-1px;right:5px;line-height:1.2}.top-bar-section .dropdown{left:0;top:auto;background:transparent;min-width:100%}.top-bar-section .dropdown li a{color:#fff;line-height:45px;white-space:nowrap;padding:12px 15px;background:#333}.top-bar-section .dropdown li:not(.has-form) a:not(.button){color:#fff;background:#333}.top-bar-section .dropdown li:not(.has-form):hover>a:not(.button){color:#fff;background-color:#555;background:#272727}.top-bar-section .dropdown li label{white-space:nowrap;background:#333}.top-bar-section .dropdown li .dropdown{left:100%;top:0}.top-bar-section>ul>.divider,.top-bar-section>ul>[role="separator"]{border-bottom:none;border-top:none;border-right:solid 1px #4e4e4e;clear:none;height:45px;width:0}.top-bar-section .has-form{background:#333;padding:0 15px;height:45px}.top-bar-section .right li .dropdown{left:auto;right:0}.top-bar-section .right li .dropdown li .dropdown{right:100%}.top-bar-section .left li .dropdown{right:auto;left:0}.top-bar-section .left li .dropdown li .dropdown{left:100%}.no-js .top-bar-section ul li:hover>a{background-color:#555;background:#272727;color:#fff}.no-js .top-bar-section ul li:active>a{background:#008cba;color:#fff}.no-js .top-bar-section .has-dropdown:hover>.dropdown{display:block;position:static !important;height:auto;width:auto;overflow:visible;clip:auto;position:absolute !important}}.breadcrumbs{display:block;padding:0.5625rem 0.875rem 0.5625rem;overflow:hidden;margin-left:0;list-style:none;border-style:solid;border-width:1px;background-color:#f4f4f4;border-color:#dcdcdc;border-radius:3px}.breadcrumbs>*{margin:0;float:left;font-size:0.6875rem;line-height:0.6875rem;text-transform:uppercase;color:#008cba}.breadcrumbs>*:hover a,.breadcrumbs>*:focus a{text-decoration:underline}.breadcrumbs>* a{color:#008cba}.breadcrumbs>*.current{cursor:default;color:#333}.breadcrumbs>*.current a{cursor:default;color:#333}.breadcrumbs>*.current:hover,.breadcrumbs>*.current:hover a,.breadcrumbs>*.current:focus,.breadcrumbs>*.current:focus a{text-decoration:none}.breadcrumbs>*.unavailable{color:#999}.breadcrumbs>*.unavailable a{color:#999}.breadcrumbs>*.unavailable:hover,.breadcrumbs>*.unavailable:hover a,.breadcrumbs>*.unavailable:focus,.breadcrumbs>*.unavailable a:focus{text-decoration:none;color:#999;cursor:default}.breadcrumbs>*:before{content:"/";color:#aaa;margin:0 0.75rem;position:relative;top:1px}.breadcrumbs>*:first-child:before{content:" ";margin:0}.alert-box{border-style:solid;border-width:1px;display:block;font-weight:normal;margin-bottom:1.25rem;position:relative;padding:0.875rem 1.5rem 0.875rem 0.875rem;font-size:0.8125rem;transition:opacity 300ms ease-out;background-color:#008cba;border-color:#0078a0;color:#fff}.alert-box .close{font-size:1.375rem;padding:9px 6px 4px;line-height:0;position:absolute;top:50%;margin-top:-0.6875rem;right:0.25rem;color:#333;opacity:0.3}.alert-box .close:hover,.alert-box .close:focus{opacity:0.5}.alert-box.radius{border-radius:3px}.alert-box.round{border-radius:1000px}.alert-box.success{background-color:#43ac6a;border-color:#3a945b;color:#fff}.alert-box.alert{background-color:#f04124;border-color:#de2d0f;color:#fff}.alert-box.secondary{background-color:#e7e7e7;border-color:#c7c7c7;color:#4f4f4f}.alert-box.warning{background-color:#f08a24;border-color:#de770f;color:#fff}.alert-box.info{background-color:#a0d3e8;border-color:#74bfdd;color:#4f4f4f}.alert-box.alert-close{opacity:0}.inline-list{margin:0 auto 1.0625rem auto;margin-left:-1.375rem;margin-right:0;padding:0;list-style:none;overflow:hidden}.inline-list>li{list-style:none;float:left;margin-left:1.375rem;display:block}.inline-list>li>*{display:block}.button-group{list-style:none;margin:0;left:0}.button-group:before,.button-group:after{content:" ";display:table}.button-group:after{clear:both}.button-group>li{margin:0;float:left}.button-group>li>button,.button-group>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group>li:first-child button,.button-group>li:first-child .button{border-left:0}.button-group>li:first-child{margin-left:0}.button-group.radius>*>button,.button-group.radius>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius>*:first-child button,.button-group.radius>*:first-child .button{border-left:0}.button-group.radius>*,.button-group.radius>*>a,.button-group.radius>*>button,.button-group.radius>*>.button{border-radius:0}.button-group.radius>*:first-child,.button-group.radius>*:first-child>a,.button-group.radius>*:first-child>button,.button-group.radius>*:first-child>.button{border-bottom-left-radius:3px;border-top-left-radius:3px}.button-group.radius>*:last-child,.button-group.radius>*:last-child>a,.button-group.radius>*:last-child>button,.button-group.radius>*:last-child>.button{border-bottom-right-radius:3px;border-top-right-radius:3px}.button-group.round>*>button,.button-group.round>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round>*:first-child button,.button-group.round>*:first-child .button{border-left:0}.button-group.round>*,.button-group.round>*>a,.button-group.round>*>button,.button-group.round>*>.button{border-radius:0}.button-group.round>*:first-child,.button-group.round>*:first-child>a,.button-group.round>*:first-child>button,.button-group.round>*:first-child>.button{border-bottom-left-radius:1000px;border-top-left-radius:1000px}.button-group.round>*:last-child,.button-group.round>*:last-child>a,.button-group.round>*:last-child>button,.button-group.round>*:last-child>.button{border-bottom-right-radius:1000px;border-top-right-radius:1000px}.button-group.even-2 li{width:50%}.button-group.even-2 li>button,.button-group.even-2 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-2 li:first-child button,.button-group.even-2 li:first-child .button{border-left:0}.button-group.even-2 li button,.button-group.even-2 li .button{width:100%}.button-group.even-3 li{width:33.33333%}.button-group.even-3 li>button,.button-group.even-3 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-3 li:first-child button,.button-group.even-3 li:first-child .button{border-left:0}.button-group.even-3 li button,.button-group.even-3 li .button{width:100%}.button-group.even-4 li{width:25%}.button-group.even-4 li>button,.button-group.even-4 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-4 li:first-child button,.button-group.even-4 li:first-child .button{border-left:0}.button-group.even-4 li button,.button-group.even-4 li .button{width:100%}.button-group.even-5 li{width:20%}.button-group.even-5 li>button,.button-group.even-5 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-5 li:first-child button,.button-group.even-5 li:first-child .button{border-left:0}.button-group.even-5 li button,.button-group.even-5 li .button{width:100%}.button-group.even-6 li{width:16.66667%}.button-group.even-6 li>button,.button-group.even-6 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-6 li:first-child button,.button-group.even-6 li:first-child .button{border-left:0}.button-group.even-6 li button,.button-group.even-6 li .button{width:100%}.button-group.even-7 li{width:14.28571%}.button-group.even-7 li>button,.button-group.even-7 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-7 li:first-child button,.button-group.even-7 li:first-child .button{border-left:0}.button-group.even-7 li button,.button-group.even-7 li .button{width:100%}.button-group.even-8 li{width:12.5%}.button-group.even-8 li>button,.button-group.even-8 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-8 li:first-child button,.button-group.even-8 li:first-child .button{border-left:0}.button-group.even-8 li button,.button-group.even-8 li .button{width:100%}.button-bar:before,.button-bar:after{content:" ";display:table}.button-bar:after{clear:both}.button-bar .button-group{float:left;margin-right:0.625rem}.button-bar .button-group div{overflow:hidden}.panel{border-style:solid;border-width:1px;border-color:#d8d8d8;margin-bottom:1.25rem;padding:1.25rem;background:#f2f2f2}.panel>:first-child{margin-top:0}.panel>:last-child{margin-bottom:0}.panel h1,.panel h2,.panel h3,.panel h4,.panel h5,.panel h6,.panel p,.panel li,.panel dl{color:#333}.panel h1,.panel h2,.panel h3,.panel h4,.panel h5,.panel h6{line-height:1;margin-bottom:0.625rem}.panel h1.subheader,.panel h2.subheader,.panel h3.subheader,.panel h4.subheader,.panel h5.subheader,.panel h6.subheader{line-height:1.4}.panel.callout{border-style:solid;border-width:1px;border-color:#b6edff;margin-bottom:1.25rem;padding:1.25rem;background:#ecfaff}.panel.callout>:first-child{margin-top:0}.panel.callout>:last-child{margin-bottom:0}.panel.callout h1,.panel.callout h2,.panel.callout h3,.panel.callout h4,.panel.callout h5,.panel.callout h6,.panel.callout p,.panel.callout li,.panel.callout dl{color:#333}.panel.callout h1,.panel.callout h2,.panel.callout h3,.panel.callout h4,.panel.callout h5,.panel.callout h6{line-height:1;margin-bottom:0.625rem}.panel.callout h1.subheader,.panel.callout h2.subheader,.panel.callout h3.subheader,.panel.callout h4.subheader,.panel.callout h5.subheader,.panel.callout h6.subheader{line-height:1.4}.panel.callout a:not(.button){color:#008cba}.panel.radius{border-radius:3px}.dropdown.button,button.dropdown{position:relative;padding-right:3.5625rem}.dropdown.button:after,button.dropdown:after{position:absolute;content:"";width:0;height:0;display:block;border-style:solid;border-color:#fff transparent transparent transparent;top:50%}.dropdown.button:after,button.dropdown:after{border-width:0.375rem;right:1.40625rem;margin-top:-0.15625rem}.dropdown.button:after,button.dropdown:after{border-color:#fff transparent transparent transparent}.dropdown.button.tiny,button.dropdown.tiny{padding-right:2.625rem}.dropdown.button.tiny:before,button.dropdown.tiny:before{border-width:0.375rem;right:1.125rem;margin-top:-0.125rem}.dropdown.button.tiny:after,button.dropdown.tiny:after{border-color:#fff transparent transparent transparent}.dropdown.button.small,button.dropdown.small{padding-right:3.0625rem}.dropdown.button.small:after,button.dropdown.small:after{border-width:0.4375rem;right:1.3125rem;margin-top:-0.15625rem}.dropdown.button.small:after,button.dropdown.small:after{border-color:#fff transparent transparent transparent}.dropdown.button.large,button.dropdown.large{padding-right:3.625rem}.dropdown.button.large:after,button.dropdown.large:after{border-width:0.3125rem;right:1.71875rem;margin-top:-0.15625rem}.dropdown.button.large:after,button.dropdown.large:after{border-color:#fff transparent transparent transparent}.dropdown.button.secondary:after,button.dropdown.secondary:after{border-color:#333 transparent transparent transparent}.th{line-height:0;display:inline-block;border:solid 4px #fff;max-width:100%;box-shadow:0 0 0 1px rgba(0,0,0,0.2);transition:all 200ms ease-out}.th:hover,.th:focus{box-shadow:0 0 6px 1px rgba(0,140,186,0.5)}.th.radius{border-radius:3px}.toolbar{background:#333;width:100%;font-size:0;display:inline-block}.toolbar.label-bottom .tab .tab-content i,.toolbar.label-bottom .tab .tab-content img{margin-bottom:10px}.toolbar.label-right .tab .tab-content i,.toolbar.label-right .tab .tab-content img{margin-right:10px;display:inline-block}.toolbar.label-right .tab .tab-content label{display:inline-block}.toolbar.vertical.label-right .tab .tab-content{text-align:left}.toolbar.vertical{height:100%;width:auto}.toolbar.vertical .tab{width:auto;margin:auto;float:none}.toolbar .tab{text-align:center;width:25%;margin:0 auto;display:block;padding:20px;float:left}.toolbar .tab:hover{background:rgba(255,255,255,0.1)}.toolbar .tab-content{font-size:16px;text-align:center}.toolbar .tab-content label{color:#ccc}.toolbar .tab-content i{font-size:30px;display:block;margin:0 auto;color:#ccc;vertical-align:middle}.toolbar .tab-content img{width:30px;height:30px;display:block;margin:0 auto}.pricing-table{border:solid 1px #ddd;margin-left:0;margin-bottom:1.25rem}.pricing-table *{list-style:none;line-height:1}.pricing-table .title{background-color:#333;padding:0.9375rem 1.25rem;text-align:center;color:#eee;font-weight:normal;font-size:1rem;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif}.pricing-table .price{background-color:#f6f6f6;padding:0.9375rem 1.25rem;text-align:center;color:#333;font-weight:normal;font-size:2rem;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif}.pricing-table .description{background-color:#fff;padding:0.9375rem;text-align:center;color:#777;font-size:0.75rem;font-weight:normal;line-height:1.4;border-bottom:dotted 1px #ddd}.pricing-table .bullet-item{background-color:#fff;padding:0.9375rem;text-align:center;color:#333;font-size:0.875rem;font-weight:normal;border-bottom:dotted 1px #ddd}.pricing-table .cta-button{background-color:#fff;text-align:center;padding:1.25rem 1.25rem 0}@-webkit-keyframes rotate{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotate{from{-moz-transform:rotate(0deg)}to{-moz-transform:rotate(360deg)}}@-o-keyframes rotate{from{-o-transform:rotate(0deg)}to{-o-transform:rotate(360deg)}}@keyframes rotate{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.slideshow-wrapper{position:relative}.slideshow-wrapper ul{list-style-type:none;margin:0}.slideshow-wrapper ul li,.slideshow-wrapper ul li .orbit-caption{display:none}.slideshow-wrapper ul li:first-child{display:block}.slideshow-wrapper .orbit-container{background-color:transparent}.slideshow-wrapper .orbit-container li{display:block}.slideshow-wrapper .orbit-container li .orbit-caption{display:block}.slideshow-wrapper .orbit-container .orbit-bullets li{display:inline-block}.slideshow-wrapper .preloader{display:block;width:40px;height:40px;position:absolute;top:50%;left:50%;margin-top:-20px;margin-left:-20px;border:solid 3px;border-color:#555 #fff;border-radius:1000px;animation-name:rotate;animation-duration:1.5s;animation-iteration-count:infinite;animation-timing-function:linear}.orbit-container{overflow:hidden;width:100%;position:relative;background:none}.orbit-container .orbit-slides-container{list-style:none;margin:0;padding:0;position:relative;-webkit-transform:translateZ(0)}.orbit-container .orbit-slides-container img{display:block;max-width:100%}.orbit-container .orbit-slides-container>*{position:absolute;top:0;width:100%;margin-left:100%}.orbit-container .orbit-slides-container>*:first-child{margin-left:0%}.orbit-container .orbit-slides-container>* .orbit-caption{position:absolute;bottom:0;background-color:rgba(51,51,51,0.8);color:#fff;width:100%;padding:0.625rem 0.875rem;font-size:0.875rem}.orbit-container .orbit-slide-number{position:absolute;top:10px;left:10px;font-size:12px;color:#fff;background:rgba(0,0,0,0);z-index:10}.orbit-container .orbit-slide-number span{font-weight:700;padding:0.3125rem}.orbit-container .orbit-timer{position:absolute;top:12px;right:10px;height:6px;width:100px;z-index:10}.orbit-container .orbit-timer .orbit-progress{height:3px;background-color:rgba(255,255,255,0.3);display:block;width:0%;position:relative;right:20px;top:5px}.orbit-container .orbit-timer>span{display:none;position:absolute;top:0px;right:0;width:11px;height:14px;border:solid 4px #fff;border-top:none;border-bottom:none}.orbit-container .orbit-timer.paused>span{right:-4px;top:0px;width:11px;height:14px;border:inset 8px;border-left-style:solid;border-color:transparent;border-left-color:#fff}.orbit-container .orbit-timer.paused>span.dark{border-left-color:#333}.orbit-container:hover .orbit-timer>span{display:block}.orbit-container .orbit-prev,.orbit-container .orbit-next{position:absolute;top:45%;margin-top:-25px;width:36px;height:60px;line-height:50px;color:white;background-color:transparent;text-indent:-9999px !important;z-index:10}.orbit-container .orbit-prev:hover,.orbit-container .orbit-next:hover{background-color:rgba(0,0,0,0.3)}.orbit-container .orbit-prev>span,.orbit-container .orbit-next>span{position:absolute;top:50%;margin-top:-10px;display:block;width:0;height:0;border:inset 10px}.orbit-container .orbit-prev{left:0}.orbit-container .orbit-prev>span{border-right-style:solid;border-color:transparent;border-right-color:#fff}.orbit-container .orbit-prev:hover>span{border-right-color:#fff}.orbit-container .orbit-next{right:0}.orbit-container .orbit-next>span{border-color:transparent;border-left-style:solid;border-left-color:#fff;left:50%;margin-left:-4px}.orbit-container .orbit-next:hover>span{border-left-color:#fff}.orbit-bullets-container{text-align:center}.orbit-bullets{margin:0 auto 30px auto;overflow:hidden;position:relative;top:10px;float:none;text-align:center;display:block}.orbit-bullets li{cursor:pointer;display:inline-block;width:0.5625rem;height:0.5625rem;background:#ccc;float:none;margin-right:6px;border-radius:1000px}.orbit-bullets li.active{background:#999}.orbit-bullets li:last-child{margin-right:0}.touch .orbit-container .orbit-prev,.touch .orbit-container .orbit-next{display:none}.touch .orbit-bullets{display:none}@media only screen and (min-width: 40.063em){.touch .orbit-container .orbit-prev,.touch .orbit-container .orbit-next{display:inherit}.touch .orbit-bullets{display:block}}@media only screen and (max-width: 40em){.orbit-stack-on-small .orbit-slides-container{height:auto !important}.orbit-stack-on-small .orbit-slides-container>*{position:relative;margin:0% !important;opacity:1 !important}.orbit-stack-on-small .orbit-slide-number{display:none}.orbit-timer{display:none}.orbit-next,.orbit-prev{display:none}.orbit-bullets{display:none}}[data-magellan-expedition],[data-magellan-expedition-clone]{background:#fff;z-index:50;min-width:100%;padding:10px}[data-magellan-expedition] .sub-nav,[data-magellan-expedition-clone] .sub-nav{margin-bottom:0}[data-magellan-expedition] .sub-nav dd,[data-magellan-expedition-clone] .sub-nav dd{margin-bottom:0}[data-magellan-expedition] .sub-nav a,[data-magellan-expedition-clone] .sub-nav a{line-height:1.8em}div.icon-bar{width:100%;font-size:0;display:inline-block;background:#333}div.icon-bar>*{text-align:center;font-size:1rem;width:25%;margin:0 auto;display:block;padding:1.25rem;float:left}div.icon-bar>* i,div.icon-bar>* img{display:block;margin:0 auto}div.icon-bar>* i+label,div.icon-bar>* img+label{margin-top:.0625rem}div.icon-bar>* i{font-size:1.875rem;vertical-align:middle}div.icon-bar>* img{width:1.875rem;height:1.875rem}div.icon-bar.label-right>* i,div.icon-bar.label-right>* img{margin:0 0.0625rem 0 0;display:inline-block}div.icon-bar.label-right>* i+label,div.icon-bar.label-right>* img+label{margin-top:0}div.icon-bar.label-right>* label{display:inline-block}div.icon-bar.vertical.label-right>*{text-align:left}div.icon-bar.vertical{height:100%;width:auto}div.icon-bar.vertical .item{width:auto;margin:auto;float:none}div.icon-bar>*{font-size:1rem;padding:1.25rem}div.icon-bar>* i+label,div.icon-bar>* img+label{margin-top:.0625rem}div.icon-bar>* i{font-size:1.875rem}div.icon-bar>* img{width:1.875rem;height:1.875rem}div.icon-bar>*:hover{background:#008cba}div.icon-bar>* label{color:#fff}div.icon-bar>* i{color:#fff}.icon-bar.two-up .item{width:50%}.icon-bar.two-up.vertical .item{width:auto}.icon-bar.three-up .item{width:33.3333%}.icon-bar.three-up.vertical .item{width:auto}.icon-bar.four-up .item{width:25%}.icon-bar.four-up.vertical .item{width:auto}.icon-bar.five-up .item{width:20%}.icon-bar.five-up.vertical .item{width:auto}.icon-bar.six-up .item{width:16.66667%}.icon-bar.six-up.vertical .item{width:auto}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}.text-justify{text-align:justify !important}@media only screen and (max-width: 40em){.small-only-text-left{text-align:left !important}.small-only-text-right{text-align:right !important}.small-only-text-center{text-align:center !important}.small-only-text-justify{text-align:justify !important}}@media only screen{.small-text-left{text-align:left !important}.small-text-right{text-align:right !important}.small-text-center{text-align:center !important}.small-text-justify{text-align:justify !important}}@media only screen and (min-width: 40.063em) and (max-width: 64em){.medium-only-text-left{text-align:left !important}.medium-only-text-right{text-align:right !important}.medium-only-text-center{text-align:center !important}.medium-only-text-justify{text-align:justify !important}}@media only screen and (min-width: 40.063em){.medium-text-left{text-align:left !important}.medium-text-right{text-align:right !important}.medium-text-center{text-align:center !important}.medium-text-justify{text-align:justify !important}}@media only screen and (min-width: 64.063em) and (max-width: 90em){.large-only-text-left{text-align:left !important}.large-only-text-right{text-align:right !important}.large-only-text-center{text-align:center !important}.large-only-text-justify{text-align:justify !important}}@media only screen and (min-width: 64.063em){.large-text-left{text-align:left !important}.large-text-right{text-align:right !important}.large-text-center{text-align:center !important}.large-text-justify{text-align:justify !important}}@media only screen and (min-width: 90.063em) and (max-width: 120em){.xlarge-only-text-left{text-align:left !important}.xlarge-only-text-right{text-align:right !important}.xlarge-only-text-center{text-align:center !important}.xlarge-only-text-justify{text-align:justify !important}}@media only screen and (min-width: 90.063em){.xlarge-text-left{text-align:left !important}.xlarge-text-right{text-align:right !important}.xlarge-text-center{text-align:center !important}.xlarge-text-justify{text-align:justify !important}}@media only screen and (min-width: 120.063em) and (max-width: 99999999em){.xxlarge-only-text-left{text-align:left !important}.xxlarge-only-text-right{text-align:right !important}.xxlarge-only-text-center{text-align:center !important}.xxlarge-only-text-justify{text-align:justify !important}}@media only screen and (min-width: 120.063em){.xxlarge-text-left{text-align:left !important}.xxlarge-text-right{text-align:right !important}.xxlarge-text-center{text-align:center !important}.xxlarge-text-justify{text-align:justify !important}}div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}a{color:#008cba;text-decoration:none;line-height:inherit}a:hover,a:focus{color:#0078a0}a img{border:none}p{font-family:inherit;font-weight:normal;font-size:1rem;line-height:1.6;margin-bottom:1.25rem;text-rendering:optimizeLegibility}p.lead{font-size:1.21875rem;line-height:1.6}p aside{font-size:0.875rem;line-height:1.35;font-style:italic}h1,h2,h3,h4,h5,h6{font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-weight:normal;font-style:normal;color:#222;text-rendering:optimizeLegibility;margin-top:0.2rem;margin-bottom:0.5rem;line-height:1.4}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-size:60%;color:#6f6f6f;line-height:0}h1{font-size:2.125rem}h2{font-size:1.6875rem}h3{font-size:1.375rem}h4{font-size:1.125rem}h5{font-size:1.125rem}h6{font-size:1rem}.subheader{line-height:1.4;color:#6f6f6f;font-weight:normal;margin-top:0.2rem;margin-bottom:0.5rem}hr{border:solid #ddd;border-width:1px 0 0;clear:both;margin:1.25rem 0 1.1875rem;height:0}em,i{font-style:italic;line-height:inherit}strong,b{font-weight:bold;line-height:inherit}small{font-size:60%;line-height:inherit}code{font-family:Consolas,"Liberation Mono",Courier,monospace;font-weight:bold;color:#bd260d}ul,ol,dl{font-size:1rem;line-height:1.6;margin-bottom:1.25rem;list-style-position:outside;font-family:inherit}ul{margin-left:1.1rem}ul.no-bullet{margin-left:0}ul.no-bullet li ul,ul.no-bullet li ol{margin-left:1.25rem;margin-bottom:0;list-style:none}ul li ul,ul li ol{margin-left:1.25rem;margin-bottom:0}ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}ul.square{list-style-type:square;margin-left:1.1rem}ul.circle{list-style-type:circle;margin-left:1.1rem}ul.disc{list-style-type:disc;margin-left:1.1rem}ul.no-bullet{list-style:none}ol{margin-left:1.4rem}ol li ul,ol li ol{margin-left:1.25rem;margin-bottom:0}dl dt{margin-bottom:0.3rem;font-weight:bold}dl dd{margin-bottom:0.75rem}abbr,acronym{text-transform:uppercase;font-size:90%;color:#222;border-bottom:1px dotted #ddd;cursor:help}abbr{text-transform:none}blockquote{margin:0 0 1.25rem;padding:0.5625rem 1.25rem 0 1.1875rem;border-left:1px solid #ddd}blockquote cite{display:block;font-size:0.8125rem;color:#555}blockquote cite:before{content:"\2014 \0020"}blockquote cite a,blockquote cite a:visited{color:#555}blockquote,blockquote p{line-height:1.6;color:#6f6f6f}.vcard{display:inline-block;margin:0 0 1.25rem 0;border:1px solid #ddd;padding:0.625rem 0.75rem}.vcard li{margin:0;display:block}.vcard .fn{font-weight:bold;font-size:0.9375rem}.vevent .summary{font-weight:bold}.vevent abbr{cursor:default;text-decoration:none;font-weight:bold;border:none;padding:0 0.0625rem}@media only screen and (min-width: 40.063em){h1,h2,h3,h4,h5,h6{line-height:1.4}h1{font-size:2.75rem}h2{font-size:2.3125rem}h3{font-size:1.6875rem}h4{font-size:1.4375rem}h5{font-size:1.125rem}h6{font-size:1rem}}.print-only{display:none !important}@media print{*{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.hide-on-print{display:none !important}.print-only{display:block !important}.hide-for-print{display:none !important}.show-for-print{display:inherit !important}}.tabs{margin-bottom:0 !important;margin-left:0}.tabs:before,.tabs:after{content:" ";display:table}.tabs:after{clear:both}.tabs dd,.tabs .tab-title{position:relative;margin-bottom:0 !important;list-style:none;float:left}.tabs dd>a,.tabs .tab-title>a{display:block;background:#efefef;color:#222;padding:1rem 2rem;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-size:1rem}.tabs dd>a:hover,.tabs .tab-title>a:hover{background:#e1e1e1}.tabs dd.active a,.tabs .tab-title.active a{background:#fff;color:#222}.tabs.radius dd:first-child a,.tabs.radius .tab:first-child a{border-bottom-left-radius:3px;border-top-left-radius:3px}.tabs.radius dd:last-child a,.tabs.radius .tab:last-child a{border-bottom-right-radius:3px;border-top-right-radius:3px}.tabs.vertical dd,.tabs.vertical .tab-title{position:inherit;float:none;display:block;top:auto}.tabs-content{margin-bottom:1.5rem;width:100%}.tabs-content:before,.tabs-content:after{content:" ";display:table}.tabs-content:after{clear:both}.tabs-content>.content{display:none;float:left;padding:0.9375rem 0;width:100%}.tabs-content>.content.active{display:block;float:none}.tabs-content>.content.contained{padding:0.9375rem}.tabs-content.vertical{display:block}.tabs-content.vertical>.content{padding:0 0.9375rem}@media only screen and (min-width: 40.063em){.tabs.vertical{width:20%;float:left;margin-bottom:1.25rem}.tabs-content.vertical{width:80%;float:left;margin-left:-1px}}.no-js .tabs-content>.content{display:block;float:none}ul.pagination{display:block;min-height:1.5rem;margin-left:-0.3125rem}ul.pagination li{height:1.5rem;color:#222;font-size:0.875rem;margin-left:0.3125rem}ul.pagination li a{display:block;padding:0.0625rem 0.625rem 0.0625rem;color:#999;border-radius:3px}ul.pagination li:hover a,ul.pagination li a:focus{background:#e6e6e6}ul.pagination li.unavailable a{cursor:default;color:#999}ul.pagination li.unavailable:hover a,ul.pagination li.unavailable a:focus{background:transparent}ul.pagination li.current a{background:#008cba;color:#fff;font-weight:bold;cursor:default}ul.pagination li.current a:hover,ul.pagination li.current a:focus{background:#008cba}ul.pagination li{float:left;display:block}.pagination-centered{text-align:center}.pagination-centered ul.pagination li{float:none;display:inline-block}.side-nav{display:block;margin:0;padding:0.875rem 0;list-style-type:none;list-style-position:outside;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif}.side-nav li{margin:0 0 0.4375rem 0;font-size:0.875rem}.side-nav li a:not(.button){display:block;color:#008cba;margin:0;padding:0.4375rem 0.875rem}.side-nav li a:not(.button):hover,.side-nav li a:not(.button):focus{background:rgba(0,0,0,0.025);color:#1cc7ff}.side-nav li.active>a:first-child:not(.button){color:#1cc7ff;font-weight:normal;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif}.side-nav li.divider{border-top:1px solid;height:0;padding:0;list-style:none;border-top-color:#fff}.side-nav li.heading{color:#008cba;font-size:0.875rem;font-weight:bold;text-transform:uppercase}.accordion{margin-bottom:0}.accordion:before,.accordion:after{content:" ";display:table}.accordion:after{clear:both}.accordion .accordion-navigation,.accordion dd{display:block;margin-bottom:0 !important}.accordion .accordion-navigation.active>a,.accordion dd.active>a{background:#e8e8e8}.accordion .accordion-navigation>a,.accordion dd>a{background:#efefef;color:#222;padding:1rem;display:block;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-size:1rem}.accordion .accordion-navigation>a:hover,.accordion dd>a:hover{background:#e3e3e3}.accordion .accordion-navigation>.content,.accordion dd>.content{display:none;padding:0.9375rem}.accordion .accordion-navigation>.content.active,.accordion dd>.content.active{display:block;background:#fff}.split.button{position:relative;padding-right:5.0625rem}.split.button span{display:block;height:100%;position:absolute;right:0;top:0;border-left:solid 1px}.split.button span:after{position:absolute;content:"";width:0;height:0;display:block;border-style:inset;top:50%;left:50%}.split.button span:active{background-color:rgba(0,0,0,0.1)}.split.button span{border-left-color:rgba(255,255,255,0.5)}.split.button span{width:3.09375rem}.split.button span:after{border-top-style:solid;border-width:0.375rem;top:48%;margin-left:-0.375rem}.split.button span:after{border-color:#fff transparent transparent transparent}.split.button.secondary span{border-left-color:rgba(255,255,255,0.5)}.split.button.secondary span:after{border-color:#fff transparent transparent transparent}.split.button.alert span{border-left-color:rgba(255,255,255,0.5)}.split.button.success span{border-left-color:rgba(255,255,255,0.5)}.split.button.tiny{padding-right:3.75rem}.split.button.tiny span{width:2.25rem}.split.button.tiny span:after{border-top-style:solid;border-width:0.375rem;top:48%;margin-left:-0.375rem}.split.button.small{padding-right:4.375rem}.split.button.small span{width:2.625rem}.split.button.small span:after{border-top-style:solid;border-width:0.4375rem;top:48%;margin-left:-0.375rem}.split.button.large{padding-right:5.5rem}.split.button.large span{width:3.4375rem}.split.button.large span:after{border-top-style:solid;border-width:0.3125rem;top:48%;margin-left:-0.375rem}.split.button.expand{padding-left:2rem}.split.button.secondary span:after{border-color:#333 transparent transparent transparent}.split.button.radius span{border-bottom-right-radius:3px;border-top-right-radius:3px}.split.button.round span{border-bottom-right-radius:1000px;border-top-right-radius:1000px}.reveal-modal-bg{position:fixed;height:100%;width:100%;background:#000;background:rgba(0,0,0,0.45);z-index:99;display:none;top:0;left:0}dialog,.reveal-modal{visibility:hidden;display:none;position:absolute;z-index:100;width:100vw;top:0;left:0;background-color:#fff;padding:1.25rem;border:solid 1px #666;box-shadow:0 0 10px rgba(0,0,0,0.4)}@media only screen and (max-width: 40em){dialog,.reveal-modal{min-height:100vh}}@media only screen and (min-width: 40.063em){dialog,.reveal-modal{left:50%}}dialog .column,dialog .columns,.reveal-modal .column,.reveal-modal .columns{min-width:0}dialog>:first-child,.reveal-modal>:first-child{margin-top:0}dialog>:last-child,.reveal-modal>:last-child{margin-bottom:0}@media only screen and (min-width: 40.063em){dialog,.reveal-modal{margin-left:-40%;width:80%}}@media only screen and (min-width: 40.063em){dialog,.reveal-modal{top:6.25rem}}dialog .close-reveal-modal,.reveal-modal .close-reveal-modal{font-size:2.5rem;line-height:1;position:absolute;top:0.5rem;right:0.6875rem;color:#aaa;font-weight:bold;cursor:pointer}dialog[open]{display:block;visibility:visible}@media only screen and (min-width: 40.063em){dialog,.reveal-modal{padding:1.875rem}dialog.radius,.reveal-modal.radius{border-radius:3px}dialog.round,.reveal-modal.round{border-radius:1000px}dialog.collapse,.reveal-modal.collapse{padding:0}dialog.full,.reveal-modal.full{top:0;left:0;height:100vh;min-height:100vh;margin-left:0 !important}}@media only screen and (min-width: 40.063em) and (min-width: 40.063em){dialog.tiny,.reveal-modal.tiny{margin-left:-15%;width:30%}}@media only screen and (min-width: 40.063em) and (min-width: 40.063em){dialog.small,.reveal-modal.small{margin-left:-20%;width:40%}}@media only screen and (min-width: 40.063em) and (min-width: 40.063em){dialog.medium,.reveal-modal.medium{margin-left:-30%;width:60%}}@media only screen and (min-width: 40.063em) and (min-width: 40.063em){dialog.large,.reveal-modal.large{margin-left:-35%;width:70%}}@media only screen and (min-width: 40.063em) and (min-width: 40.063em){dialog.xlarge,.reveal-modal.xlarge{margin-left:-47.5%;width:95%}}@media only screen and (min-width: 40.063em) and (min-width: 40.063em){dialog.full,.reveal-modal.full{margin-left:-50vw;width:100vw}}@media print{dialog,.reveal-modal{background:#fff !important}}.has-tip{border-bottom:dotted 1px #ccc;cursor:help;font-weight:bold;color:#333}.has-tip:hover,.has-tip:focus{border-bottom:dotted 1px #003f54;color:#008cba}.has-tip.tip-left,.has-tip.tip-right{float:none !important}.tooltip{display:none;position:absolute;z-index:999;font-weight:normal;font-size:0.875rem;line-height:1.3;padding:0.75rem;max-width:300px;left:50%;width:100%;color:#fff;background:#333}.tooltip>.nub{display:block;left:5px;position:absolute;width:0;height:0;border:solid 5px;border-color:transparent transparent #333 transparent;top:-10px}.tooltip>.nub.rtl{left:auto;right:5px}.tooltip.radius{border-radius:3px}.tooltip.round{border-radius:1000px}.tooltip.round>.nub{left:2rem}.tooltip.opened{color:#008cba !important;border-bottom:dotted 1px #003f54 !important}.tap-to-close{display:block;font-size:0.625rem;color:#777;font-weight:normal}@media only screen and (min-width: 40.063em){.tooltip>.nub{border-color:transparent transparent #333 transparent;top:-10px}.tooltip.tip-top>.nub{border-color:#333 transparent transparent transparent;top:auto;bottom:-10px}.tooltip.tip-left,.tooltip.tip-right{float:none !important}.tooltip.tip-left>.nub{border-color:transparent transparent transparent #333;right:-10px;left:auto;top:50%;margin-top:-5px}.tooltip.tip-right>.nub{border-color:transparent #333 transparent transparent;right:auto;left:-10px;top:50%;margin-top:-5px}}.clearing-thumbs,[data-clearing]{margin-bottom:0;margin-left:0;list-style:none}.clearing-thumbs:before,.clearing-thumbs:after,[data-clearing]:before,[data-clearing]:after{content:" ";display:table}.clearing-thumbs:after,[data-clearing]:after{clear:both}.clearing-thumbs li,[data-clearing] li{float:left;margin-right:10px}.clearing-thumbs[class*="block-grid-"] li,[data-clearing][class*="block-grid-"] li{margin-right:0}.clearing-blackout{background:#333;position:fixed;width:100%;height:100%;top:0;left:0;z-index:998}.clearing-blackout .clearing-close{display:block}.clearing-container{position:relative;z-index:998;height:100%;overflow:hidden;margin:0}.clearing-touch-label{position:absolute;top:50%;left:50%;color:#aaa;font-size:0.6em}.visible-img{height:95%;position:relative}.visible-img img{position:absolute;left:50%;top:50%;margin-left:-50%;max-height:100%;max-width:100%}.clearing-caption{color:#ccc;font-size:0.875em;line-height:1.3;margin-bottom:0;text-align:center;bottom:0;background:#333;width:100%;padding:10px 30px 20px;position:absolute;left:0}.clearing-close{z-index:999;padding-left:20px;padding-top:10px;font-size:30px;line-height:1;color:#ccc;display:none}.clearing-close:hover,.clearing-close:focus{color:#ccc}.clearing-assembled .clearing-container{height:100%}.clearing-assembled .clearing-container .carousel>ul{display:none}.clearing-feature li{display:none}.clearing-feature li.clearing-featured-img{display:block}@media only screen and (min-width: 40.063em){.clearing-main-prev,.clearing-main-next{position:absolute;height:100%;width:40px;top:0}.clearing-main-prev>span,.clearing-main-next>span{position:absolute;top:50%;display:block;width:0;height:0;border:solid 12px}.clearing-main-prev>span:hover,.clearing-main-next>span:hover{opacity:0.8}.clearing-main-prev{left:0}.clearing-main-prev>span{left:5px;border-color:transparent;border-right-color:#ccc}.clearing-main-next{right:0}.clearing-main-next>span{border-color:transparent;border-left-color:#ccc}.clearing-main-prev.disabled,.clearing-main-next.disabled{opacity:0.3}.clearing-assembled .clearing-container .carousel{background:rgba(51,51,51,0.8);height:120px;margin-top:10px;text-align:center}.clearing-assembled .clearing-container .carousel>ul{display:inline-block;z-index:999;height:100%;position:relative;float:none}.clearing-assembled .clearing-container .carousel>ul li{display:block;width:120px;min-height:inherit;float:left;overflow:hidden;margin-right:0;padding:0;position:relative;cursor:pointer;opacity:0.4;clear:none}.clearing-assembled .clearing-container .carousel>ul li.fix-height img{height:100%;max-width:none}.clearing-assembled .clearing-container .carousel>ul li a.th{border:none;box-shadow:none;display:block}.clearing-assembled .clearing-container .carousel>ul li img{cursor:pointer !important;width:100% !important}.clearing-assembled .clearing-container .carousel>ul li.visible{opacity:1}.clearing-assembled .clearing-container .carousel>ul li:hover{opacity:0.8}.clearing-assembled .clearing-container .visible-img{background:#333;overflow:hidden;height:85%}.clearing-close{position:absolute;top:10px;right:20px;padding-left:0;padding-top:0}}.progress{background-color:#f6f6f6;height:1.5625rem;border:1px solid #fff;padding:0.125rem;margin-bottom:0.625rem}.progress .meter{background:#008cba;height:100%;display:block}.progress.secondary .meter{background:#e7e7e7;height:100%;display:block}.progress.success .meter{background:#43ac6a;height:100%;display:block}.progress.alert .meter{background:#f04124;height:100%;display:block}.progress.radius{border-radius:3px}.progress.radius .meter{border-radius:2px}.progress.round{border-radius:1000px}.progress.round .meter{border-radius:999px}.sub-nav{display:block;width:auto;overflow:hidden;margin:-0.25rem 0 1.125rem;padding-top:0.25rem;margin-right:0;margin-left:-0.75rem}.sub-nav dt{text-transform:uppercase}.sub-nav dt,.sub-nav dd,.sub-nav li{float:left;display:inline;margin-left:1rem;margin-bottom:0.625rem;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-weight:normal;font-size:0.875rem;color:#999}.sub-nav dt a,.sub-nav dd a,.sub-nav li a{text-decoration:none;color:#999;padding:0.1875rem 1rem}.sub-nav dt a:hover,.sub-nav dd a:hover,.sub-nav li a:hover{color:#737373}.sub-nav dt.active a,.sub-nav dd.active a,.sub-nav li.active a{border-radius:3px;font-weight:normal;background:#008cba;padding:0.1875rem 1rem;cursor:default;color:#fff}.sub-nav dt.active a:hover,.sub-nav dd.active a:hover,.sub-nav li.active a:hover{background:#0078a0}.joyride-list{display:none}.joyride-tip-guide{display:none;position:absolute;background:#333;color:#fff;z-index:101;top:0;left:2.5%;font-family:inherit;font-weight:normal;width:95%}.lt-ie9 .joyride-tip-guide{max-width:800px;left:50%;margin-left:-400px}.joyride-content-wrapper{width:100%;padding:1.125rem 1.25rem 1.5rem}.joyride-content-wrapper .button{margin-bottom:0 !important}.joyride-tip-guide .joyride-nub{display:block;position:absolute;left:22px;width:0;height:0;border:10px solid #333}.joyride-tip-guide .joyride-nub.top{border-top-style:solid;border-color:#333;border-top-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;top:-20px}.joyride-tip-guide .joyride-nub.bottom{border-bottom-style:solid;border-color:#333 !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-20px}.joyride-tip-guide .joyride-nub.right{right:-20px}.joyride-tip-guide .joyride-nub.left{left:-20px}.joyride-tip-guide h1,.joyride-tip-guide h2,.joyride-tip-guide h3,.joyride-tip-guide h4,.joyride-tip-guide h5,.joyride-tip-guide h6{line-height:1.25;margin:0;font-weight:bold;color:#fff}.joyride-tip-guide p{margin:0 0 1.125rem 0;font-size:0.875rem;line-height:1.3}.joyride-timer-indicator-wrap{width:50px;height:3px;border:solid 1px #555;position:absolute;right:1.0625rem;bottom:1rem}.joyride-timer-indicator{display:block;width:0;height:inherit;background:#666}.joyride-close-tip{position:absolute;right:12px;top:10px;color:#777 !important;text-decoration:none;font-size:24px;font-weight:normal;line-height:0.5 !important}.joyride-close-tip:hover,.joyride-close-tip:focus{color:#eee !important}.joyride-modal-bg{position:fixed;height:100%;width:100%;background:transparent;background:rgba(0,0,0,0.5);z-index:100;display:none;top:0;left:0;cursor:pointer}.joyride-expose-wrapper{background-color:#ffffff;position:absolute;border-radius:3px;z-index:102;box-shadow:0 0 15px #fff}.joyride-expose-cover{background:transparent;border-radius:3px;position:absolute;z-index:9999;top:0;left:0}@media only screen and (min-width: 40.063em){.joyride-tip-guide{width:300px;left:inherit}.joyride-tip-guide .joyride-nub.bottom{border-color:#333 !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-20px}.joyride-tip-guide .joyride-nub.right{border-color:#333 !important;border-top-color:transparent !important;border-right-color:transparent !important;border-bottom-color:transparent !important;top:22px;left:auto;right:-20px}.joyride-tip-guide .joyride-nub.left{border-color:#333 !important;border-top-color:transparent !important;border-left-color:transparent !important;border-bottom-color:transparent !important;top:22px;left:-20px;right:auto}}.label{font-weight:normal;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;text-align:center;text-decoration:none;line-height:1;white-space:nowrap;display:inline-block;position:relative;margin-bottom:inherit;padding:0.25rem 0.5rem 0.375rem;font-size:0.6875rem;background-color:#008cba;color:#fff}.label.radius{border-radius:3px}.label.round{border-radius:1000px}.label.alert{background-color:#f04124;color:#fff}.label.success{background-color:#43ac6a;color:#fff}.label.secondary{background-color:#e7e7e7;color:#333}.off-canvas-wrap{-webkit-backface-visibility:hidden;position:relative;width:100%;overflow:hidden}.off-canvas-wrap.move-right,.off-canvas-wrap.move-left{min-height:100%;-webkit-overflow-scrolling:touch}.inner-wrap{-webkit-backface-visibility:hidden;position:relative;width:100%;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease}.inner-wrap:before,.inner-wrap:after{content:" ";display:table}.inner-wrap:after{clear:both}.tab-bar{-webkit-backface-visibility:hidden;background:#333;color:#fff;height:2.8125rem;line-height:2.8125rem;position:relative}.tab-bar h1,.tab-bar h2,.tab-bar h3,.tab-bar h4,.tab-bar h5,.tab-bar h6{color:#fff;font-weight:bold;line-height:2.8125rem;margin:0}.tab-bar h1,.tab-bar h2,.tab-bar h3,.tab-bar h4{font-size:1.125rem}.left-small{width:2.8125rem;height:2.8125rem;position:absolute;top:0;border-right:solid 1px #1a1a1a;left:0}.right-small{width:2.8125rem;height:2.8125rem;position:absolute;top:0;border-left:solid 1px #1a1a1a;right:0}.tab-bar-section{padding:0 0.625rem;position:absolute;text-align:center;height:2.8125rem;top:0}@media only screen and (min-width: 40.063em){.tab-bar-section{text-align:left}}.tab-bar-section.left{left:0;right:2.8125rem}.tab-bar-section.right{left:2.8125rem;right:0}.tab-bar-section.middle{left:2.8125rem;right:2.8125rem}.tab-bar .menu-icon{text-indent:2.1875rem;width:2.8125rem;height:2.8125rem;display:block;padding:0;color:#fff;position:relative;transform:translate3d(0, 0, 0)}.tab-bar .menu-icon span::after{content:"";position:absolute;display:block;height:0;top:50%;margin-top:-0.5rem;left:0.90625rem;box-shadow:0 0px 0 1px #fff,0 7px 0 1px #fff,0 14px 0 1px #fff;width:1rem}.tab-bar .menu-icon span:hover:after{box-shadow:0 0px 0 1px #b3b3b3,0 7px 0 1px #b3b3b3,0 14px 0 1px #b3b3b3}.left-off-canvas-menu{-webkit-backface-visibility:hidden;width:15.625rem;top:0;bottom:0;position:absolute;overflow-y:auto;background:#333;z-index:1001;box-sizing:content-box;transition:transform 500ms ease 0s;-webkit-overflow-scrolling:touch;-ms-transform:translate(-100%, 0);-webkit-transform:translate3d(-100%, 0, 0);-moz-transform:translate3d(-100%, 0, 0);-ms-transform:translate3d(-100%, 0, 0);-o-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.left-off-canvas-menu *{-webkit-backface-visibility:hidden}.right-off-canvas-menu{-webkit-backface-visibility:hidden;width:15.625rem;top:0;bottom:0;position:absolute;overflow-y:auto;background:#333;z-index:1001;box-sizing:content-box;transition:transform 500ms ease 0s;-webkit-overflow-scrolling:touch;-ms-transform:translate(100%, 0);-webkit-transform:translate3d(100%, 0, 0);-moz-transform:translate3d(100%, 0, 0);-ms-transform:translate3d(100%, 0, 0);-o-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);right:0}.right-off-canvas-menu *{-webkit-backface-visibility:hidden}ul.off-canvas-list{list-style-type:none;padding:0;margin:0}ul.off-canvas-list li label{display:block;padding:0.3rem 0.9375rem;color:#999;text-transform:uppercase;font-size:0.75rem;font-weight:bold;background:#444;border-top:1px solid #5e5e5e;border-bottom:none;margin:0}ul.off-canvas-list li a{display:block;padding:0.66667rem;color:rgba(255,255,255,0.7);border-bottom:1px solid #262626;transition:background 300ms ease}ul.off-canvas-list li a:hover{background:#242424}.move-right>.inner-wrap{-ms-transform:translate(15.625rem, 0);-webkit-transform:translate3d(15.625rem, 0, 0);-moz-transform:translate3d(15.625rem, 0, 0);-ms-transform:translate3d(15.625rem, 0, 0);-o-transform:translate3d(15.625rem, 0, 0);transform:translate3d(15.625rem, 0, 0)}.move-right .exit-off-canvas{-webkit-backface-visibility:hidden;transition:background 300ms ease;cursor:pointer;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);display:block;position:absolute;background:rgba(255,255,255,0.2);top:0;bottom:0;left:0;right:0;z-index:1002;-webkit-tap-highlight-color:rgba(0,0,0,0)}@media only screen and (min-width: 40.063em){.move-right .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.move-left>.inner-wrap{-ms-transform:translate(-15.625rem, 0);-webkit-transform:translate3d(-15.625rem, 0, 0);-moz-transform:translate3d(-15.625rem, 0, 0);-ms-transform:translate3d(-15.625rem, 0, 0);-o-transform:translate3d(-15.625rem, 0, 0);transform:translate3d(-15.625rem, 0, 0)}.move-left .exit-off-canvas{-webkit-backface-visibility:hidden;transition:background 300ms ease;cursor:pointer;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);display:block;position:absolute;background:rgba(255,255,255,0.2);top:0;bottom:0;left:0;right:0;z-index:1002;-webkit-tap-highlight-color:rgba(0,0,0,0)}@media only screen and (min-width: 40.063em){.move-left .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.offcanvas-overlap .left-off-canvas-menu,.offcanvas-overlap .right-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003}.offcanvas-overlap .exit-offcanvas-menu{-webkit-backface-visibility:hidden;transition:background 300ms ease;cursor:pointer;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);display:block;position:absolute;background:rgba(255,255,255,0.2);top:0;bottom:0;left:0;right:0;z-index:1002;-webkit-tap-highlight-color:rgba(0,0,0,0);z-index:1002}@media only screen and (min-width: 40.063em){.offcanvas-overlap .exit-offcanvas-menu:hover{background:rgba(255,255,255,0.05)}}.no-csstransforms .left-off-canvas-menu{left:-15.625rem}.no-csstransforms .right-off-canvas-menu{right:-15.625rem}.no-csstransforms .move-left>.inner-wrap{right:15.625rem}.no-csstransforms .move-right>.inner-wrap{left:15.625rem}.f-dropdown{position:absolute;left:-9999px;list-style:none;margin-left:0;width:100%;max-height:none;height:auto;background:#fff;border:solid 1px #ccc;font-size:0.875rem;z-index:99;margin-top:2px;max-width:200px}.f-dropdown>*:first-child{margin-top:0}.f-dropdown>*:last-child{margin-bottom:0}.f-dropdown:before{content:"";display:block;width:0;height:0;border:inset 6px;border-color:transparent transparent #fff transparent;border-bottom-style:solid;position:absolute;top:-12px;left:10px;z-index:99}.f-dropdown:after{content:"";display:block;width:0;height:0;border:inset 7px;border-color:transparent transparent #ccc transparent;border-bottom-style:solid;position:absolute;top:-14px;left:9px;z-index:98}.f-dropdown.right:before{left:auto;right:10px}.f-dropdown.right:after{left:auto;right:9px}.f-dropdown.drop-right{position:absolute;left:-9999px;list-style:none;margin-left:0;width:100%;max-height:none;height:auto;background:#fff;border:solid 1px #ccc;font-size:0.875rem;z-index:99;margin-top:0;margin-left:2px;max-width:200px}.f-dropdown.drop-right>*:first-child{margin-top:0}.f-dropdown.drop-right>*:last-child{margin-bottom:0}.f-dropdown.drop-right:before{content:"";display:block;width:0;height:0;border:inset 6px;border-color:transparent #fff transparent transparent;border-right-style:solid;position:absolute;top:10px;left:-12px;z-index:99}.f-dropdown.drop-right:after{content:"";display:block;width:0;height:0;border:inset 7px;border-color:transparent #ccc transparent transparent;border-right-style:solid;position:absolute;top:9px;left:-14px;z-index:98}.f-dropdown.drop-left{position:absolute;left:-9999px;list-style:none;margin-left:0;width:100%;max-height:none;height:auto;background:#fff;border:solid 1px #ccc;font-size:0.875rem;z-index:99;margin-top:0;margin-left:-2px;max-width:200px}.f-dropdown.drop-left>*:first-child{margin-top:0}.f-dropdown.drop-left>*:last-child{margin-bottom:0}.f-dropdown.drop-left:before{content:"";display:block;width:0;height:0;border:inset 6px;border-color:transparent transparent transparent #fff;border-left-style:solid;position:absolute;top:10px;right:-12px;left:auto;z-index:99}.f-dropdown.drop-left:after{content:"";display:block;width:0;height:0;border:inset 7px;border-color:transparent transparent transparent #ccc;border-left-style:solid;position:absolute;top:9px;right:-14px;left:auto;z-index:98}.f-dropdown.drop-top{position:absolute;left:-9999px;list-style:none;margin-left:0;width:100%;max-height:none;height:auto;background:#fff;border:solid 1px #ccc;font-size:0.875rem;z-index:99;margin-top:-2px;margin-left:0;max-width:200px}.f-dropdown.drop-top>*:first-child{margin-top:0}.f-dropdown.drop-top>*:last-child{margin-bottom:0}.f-dropdown.drop-top:before{content:"";display:block;width:0;height:0;border:inset 6px;border-color:#fff transparent transparent transparent;border-top-style:solid;position:absolute;top:auto;bottom:-12px;left:10px;right:auto;z-index:99}.f-dropdown.drop-top:after{content:"";display:block;width:0;height:0;border:inset 7px;border-color:#ccc transparent transparent transparent;border-top-style:solid;position:absolute;top:auto;bottom:-14px;left:9px;right:auto;z-index:98}.f-dropdown li{font-size:0.875rem;cursor:pointer;line-height:1.125rem;margin:0}.f-dropdown li:hover,.f-dropdown li:focus{background:#eee}.f-dropdown li a{display:block;padding:0.5rem;color:#555}.f-dropdown.content{position:absolute;left:-9999px;list-style:none;margin-left:0;padding:1.25rem;width:100%;height:auto;max-height:none;background:#fff;border:solid 1px #ccc;font-size:0.875rem;z-index:99;max-width:200px}.f-dropdown.content>*:first-child{margin-top:0}.f-dropdown.content>*:last-child{margin-bottom:0}.f-dropdown.tiny{max-width:200px}.f-dropdown.small{max-width:300px}.f-dropdown.medium{max-width:500px}.f-dropdown.large{max-width:800px}table{background:#fff;margin-bottom:1.25rem;border:solid 1px #ddd}table caption{background:transparent;color:#222;font-size:1rem;font-weight:bold}table thead{background:#f5f5f5}table thead tr th,table thead tr td{padding:0.5rem 0.625rem 0.625rem;font-size:0.875rem;font-weight:bold;color:#222}table tfoot{background:#f5f5f5}table tfoot tr th,table tfoot tr td{padding:0.5rem 0.625rem 0.625rem;font-size:0.875rem;font-weight:bold;color:#222}table tr th,table tr td{padding:0.5625rem 0.625rem;font-size:0.875rem;color:#222;text-align:left}table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f9f9f9}table thead tr th,table tfoot tr th,table tfoot tr td,table tbody tr th,table tbody tr td,table tr td{display:table-cell;line-height:1.125rem}form{margin:0 0 1rem}form .row .row{margin:0 -0.5rem}form .row .row .column,form .row .row .columns{padding:0 0.5rem}form .row .row.collapse{margin:0}form .row .row.collapse .column,form .row .row.collapse .columns{padding:0}form .row .row.collapse input{border-bottom-right-radius:0;border-top-right-radius:0}form .row input.column,form .row input.columns,form .row textarea.column,form .row textarea.columns{padding-left:0.5rem}label{font-size:0.875rem;color:#4d4d4d;cursor:pointer;display:block;font-weight:normal;line-height:1.5;margin-bottom:0}label.right{float:none !important;text-align:right}label.inline{margin:0 0 1rem 0;padding:0.5625rem 0}label small{text-transform:capitalize;color:#676767}select::-ms-expand{display:none}.prefix,.postfix{display:block;position:relative;z-index:2;text-align:center;width:100%;padding-top:0;padding-bottom:0;border-style:solid;border-width:1px;overflow:hidden;font-size:0.875rem;height:2.3125rem;line-height:2.3125rem}.postfix.button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;text-align:center;line-height:2.125rem;border:none}.prefix.button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;text-align:center;line-height:2.125rem;border:none}.prefix.button.radius{border-radius:0;border-bottom-left-radius:3px;border-top-left-radius:3px}.postfix.button.radius{border-radius:0;border-bottom-right-radius:3px;border-top-right-radius:3px}.prefix.button.round{border-radius:0;border-bottom-left-radius:1000px;border-top-left-radius:1000px}.postfix.button.round{border-radius:0;border-bottom-right-radius:1000px;border-top-right-radius:1000px}span.prefix,label.prefix{background:#f2f2f2;border-right:none;color:#333;border-color:#ccc}span.prefix.radius,label.prefix.radius{border-radius:0;border-bottom-left-radius:3px;border-top-left-radius:3px}span.postfix,label.postfix{background:#f2f2f2;border-left:none;color:#333;border-color:#ccc}span.postfix.radius,label.postfix.radius{border-radius:0;border-bottom-right-radius:3px;border-top-right-radius:3px}input[type="text"],input[type="password"],input[type="date"],input[type="datetime"],input[type="datetime-local"],input[type="month"],input[type="week"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="time"],input[type="url"],textarea{-webkit-appearance:none;background-color:#fff;font-family:inherit;border:1px solid #ccc;box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);color:rgba(0,0,0,0.75);display:block;font-size:0.875rem;margin:0 0 1rem 0;padding:0.5rem;height:2.3125rem;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;transition:box-shadow 0.45s,border-color 0.45s ease-in-out}input[type="text"]:focus,input[type="password"]:focus,input[type="date"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="month"]:focus,input[type="week"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="time"]:focus,input[type="url"]:focus,textarea:focus{box-shadow:0 0 5px #999;border-color:#999}input[type="text"]:focus,input[type="password"]:focus,input[type="date"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="month"]:focus,input[type="week"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="time"]:focus,input[type="url"]:focus,textarea:focus{background:#fafafa;border-color:#999;outline:none}input[type="text"][disabled],fieldset[disabled] input[type="text"],input[type="password"][disabled],fieldset[disabled] input[type="password"],input[type="date"][disabled],fieldset[disabled] input[type="date"],input[type="datetime"][disabled],fieldset[disabled] input[type="datetime"],input[type="datetime-local"][disabled],fieldset[disabled] input[type="datetime-local"],input[type="month"][disabled],fieldset[disabled] input[type="month"],input[type="week"][disabled],fieldset[disabled] input[type="week"],input[type="email"][disabled],fieldset[disabled] input[type="email"],input[type="number"][disabled],fieldset[disabled] input[type="number"],input[type="search"][disabled],fieldset[disabled] input[type="search"],input[type="tel"][disabled],fieldset[disabled] input[type="tel"],input[type="time"][disabled],fieldset[disabled] input[type="time"],input[type="url"][disabled],fieldset[disabled] input[type="url"],textarea[disabled],fieldset[disabled] textarea{background-color:#ddd}input[type="text"].radius,input[type="password"].radius,input[type="date"].radius,input[type="datetime"].radius,input[type="datetime-local"].radius,input[type="month"].radius,input[type="week"].radius,input[type="email"].radius,input[type="number"].radius,input[type="search"].radius,input[type="tel"].radius,input[type="time"].radius,input[type="url"].radius,textarea.radius{border-radius:3px}input[type="submit"]{-webkit-appearance:none}textarea[rows]{height:auto}select{-webkit-appearance:none !important;background-color:#fafafa;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+);background-position:100% center;background-repeat:no-repeat;border:1px solid #ccc;padding:0.5rem;font-size:0.875rem;color:rgba(0,0,0,0.75);line-height:normal;border-radius:0;height:2.3125rem}select.radius{border-radius:3px}select:hover{background-color:#f3f3f3;border-color:#999}input[type="file"],input[type="checkbox"],input[type="radio"],select{margin:0 0 1rem 0}input[type="checkbox"]+label,input[type="radio"]+label{display:inline-block;margin-left:0.5rem;margin-right:1rem;margin-bottom:0;vertical-align:baseline}input[type="file"]{width:100%}fieldset{border:1px solid #ddd;padding:1.25rem;margin:1.125rem 0}fieldset legend{font-weight:bold;background:#fff;padding:0 0.1875rem;margin:0;margin-left:-0.1875rem}[data-abide] .error small.error,[data-abide] span.error,[data-abide] small.error{display:block;padding:0.375rem 0.5625rem 0.5625rem;margin-top:-1px;margin-bottom:1rem;font-size:0.75rem;font-weight:normal;font-style:italic;background:#f04124;color:#fff}[data-abide] span.error,[data-abide] small.error{display:none}span.error,small.error{display:block;padding:0.375rem 0.5625rem 0.5625rem;margin-top:-1px;margin-bottom:1rem;font-size:0.75rem;font-weight:normal;font-style:italic;background:#f04124;color:#fff}.error input,.error textarea,.error select{margin-bottom:0}.error input[type="checkbox"],.error input[type="radio"]{margin-bottom:1rem}.error label,.error label.error{color:#f04124}.error small.error{display:block;padding:0.375rem 0.5625rem 0.5625rem;margin-top:-1px;margin-bottom:1rem;font-size:0.75rem;font-weight:normal;font-style:italic;background:#f04124;color:#fff}.error>label>small{color:#676767;background:transparent;padding:0;text-transform:capitalize;font-style:normal;font-size:60%;margin:0;display:inline}.error span.error-message{display:block}input.error,textarea.error{margin-bottom:0}label.error{color:#f04124}.range-slider{display:block;position:relative;width:100%;height:1rem;border:1px solid #ddd;margin:1.25rem 0;-ms-touch-action:none;touch-action:none;background:#fafafa}.range-slider.vertical-range{display:block;position:relative;width:100%;height:1rem;border:1px solid #ddd;margin:1.25rem 0;-ms-touch-action:none;touch-action:none;display:inline-block;width:1rem;height:12.5rem}.range-slider.vertical-range .range-slider-handle{margin-top:0;margin-left:-0.5rem;position:absolute;bottom:-10.5rem}.range-slider.vertical-range .range-slider-active-segment{width:0.875rem;height:auto;bottom:0}.range-slider.radius{background:#fafafa;border-radius:3px}.range-slider.radius .range-slider-handle{background:#008cba;border-radius:3px}.range-slider.radius .range-slider-handle:hover{background:#007ba4}.range-slider.round{background:#fafafa;border-radius:1000px}.range-slider.round .range-slider-handle{background:#008cba;border-radius:1000px}.range-slider.round .range-slider-handle:hover{background:#007ba4}.range-slider.disabled,.range-slider[disabled]{background:#fafafa;cursor:default;opacity:0.7}.range-slider.disabled .range-slider-handle,.range-slider[disabled] .range-slider-handle{background:#008cba;cursor:default;opacity:0.7}.range-slider.disabled .range-slider-handle:hover,.range-slider[disabled] .range-slider-handle:hover{background:#007ba4}.range-slider-active-segment{display:inline-block;position:absolute;height:0.875rem;background:#e5e5e5}.range-slider-handle{display:inline-block;position:absolute;z-index:1;top:-0.3125rem;width:2rem;height:1.375rem;border:1px solid none;cursor:pointer;background:#008cba}.range-slider-handle:hover{background:#007ba4}[class*="block-grid-"]{display:block;padding:0;margin:0 -0.625rem}[class*="block-grid-"]:before,[class*="block-grid-"]:after{content:" ";display:table}[class*="block-grid-"]:after{clear:both}[class*="block-grid-"]>li{display:block;height:auto;float:left;padding:0 0.625rem 1.25rem}@media only screen{.small-block-grid-1>li{width:100%;list-style:none}.small-block-grid-1>li:nth-of-type(1n){clear:none}.small-block-grid-1>li:nth-of-type(1n+1){clear:both}.small-block-grid-2>li{width:50%;list-style:none}.small-block-grid-2>li:nth-of-type(1n){clear:none}.small-block-grid-2>li:nth-of-type(2n+1){clear:both}.small-block-grid-3>li{width:33.33333%;list-style:none}.small-block-grid-3>li:nth-of-type(1n){clear:none}.small-block-grid-3>li:nth-of-type(3n+1){clear:both}.small-block-grid-4>li{width:25%;list-style:none}.small-block-grid-4>li:nth-of-type(1n){clear:none}.small-block-grid-4>li:nth-of-type(4n+1){clear:both}.small-block-grid-5>li{width:20%;list-style:none}.small-block-grid-5>li:nth-of-type(1n){clear:none}.small-block-grid-5>li:nth-of-type(5n+1){clear:both}.small-block-grid-6>li{width:16.66667%;list-style:none}.small-block-grid-6>li:nth-of-type(1n){clear:none}.small-block-grid-6>li:nth-of-type(6n+1){clear:both}.small-block-grid-7>li{width:14.28571%;list-style:none}.small-block-grid-7>li:nth-of-type(1n){clear:none}.small-block-grid-7>li:nth-of-type(7n+1){clear:both}.small-block-grid-8>li{width:12.5%;list-style:none}.small-block-grid-8>li:nth-of-type(1n){clear:none}.small-block-grid-8>li:nth-of-type(8n+1){clear:both}.small-block-grid-9>li{width:11.11111%;list-style:none}.small-block-grid-9>li:nth-of-type(1n){clear:none}.small-block-grid-9>li:nth-of-type(9n+1){clear:both}.small-block-grid-10>li{width:10%;list-style:none}.small-block-grid-10>li:nth-of-type(1n){clear:none}.small-block-grid-10>li:nth-of-type(10n+1){clear:both}.small-block-grid-11>li{width:9.09091%;list-style:none}.small-block-grid-11>li:nth-of-type(1n){clear:none}.small-block-grid-11>li:nth-of-type(11n+1){clear:both}.small-block-grid-12>li{width:8.33333%;list-style:none}.small-block-grid-12>li:nth-of-type(1n){clear:none}.small-block-grid-12>li:nth-of-type(12n+1){clear:both}}@media only screen and (min-width: 40.063em){.medium-block-grid-1>li{width:100%;list-style:none}.medium-block-grid-1>li:nth-of-type(1n){clear:none}.medium-block-grid-1>li:nth-of-type(1n+1){clear:both}.medium-block-grid-2>li{width:50%;list-style:none}.medium-block-grid-2>li:nth-of-type(1n){clear:none}.medium-block-grid-2>li:nth-of-type(2n+1){clear:both}.medium-block-grid-3>li{width:33.33333%;list-style:none}.medium-block-grid-3>li:nth-of-type(1n){clear:none}.medium-block-grid-3>li:nth-of-type(3n+1){clear:both}.medium-block-grid-4>li{width:25%;list-style:none}.medium-block-grid-4>li:nth-of-type(1n){clear:none}.medium-block-grid-4>li:nth-of-type(4n+1){clear:both}.medium-block-grid-5>li{width:20%;list-style:none}.medium-block-grid-5>li:nth-of-type(1n){clear:none}.medium-block-grid-5>li:nth-of-type(5n+1){clear:both}.medium-block-grid-6>li{width:16.66667%;list-style:none}.medium-block-grid-6>li:nth-of-type(1n){clear:none}.medium-block-grid-6>li:nth-of-type(6n+1){clear:both}.medium-block-grid-7>li{width:14.28571%;list-style:none}.medium-block-grid-7>li:nth-of-type(1n){clear:none}.medium-block-grid-7>li:nth-of-type(7n+1){clear:both}.medium-block-grid-8>li{width:12.5%;list-style:none}.medium-block-grid-8>li:nth-of-type(1n){clear:none}.medium-block-grid-8>li:nth-of-type(8n+1){clear:both}.medium-block-grid-9>li{width:11.11111%;list-style:none}.medium-block-grid-9>li:nth-of-type(1n){clear:none}.medium-block-grid-9>li:nth-of-type(9n+1){clear:both}.medium-block-grid-10>li{width:10%;list-style:none}.medium-block-grid-10>li:nth-of-type(1n){clear:none}.medium-block-grid-10>li:nth-of-type(10n+1){clear:both}.medium-block-grid-11>li{width:9.09091%;list-style:none}.medium-block-grid-11>li:nth-of-type(1n){clear:none}.medium-block-grid-11>li:nth-of-type(11n+1){clear:both}.medium-block-grid-12>li{width:8.33333%;list-style:none}.medium-block-grid-12>li:nth-of-type(1n){clear:none}.medium-block-grid-12>li:nth-of-type(12n+1){clear:both}}@media only screen and (min-width: 64.063em){.large-block-grid-1>li{width:100%;list-style:none}.large-block-grid-1>li:nth-of-type(1n){clear:none}.large-block-grid-1>li:nth-of-type(1n+1){clear:both}.large-block-grid-2>li{width:50%;list-style:none}.large-block-grid-2>li:nth-of-type(1n){clear:none}.large-block-grid-2>li:nth-of-type(2n+1){clear:both}.large-block-grid-3>li{width:33.33333%;list-style:none}.large-block-grid-3>li:nth-of-type(1n){clear:none}.large-block-grid-3>li:nth-of-type(3n+1){clear:both}.large-block-grid-4>li{width:25%;list-style:none}.large-block-grid-4>li:nth-of-type(1n){clear:none}.large-block-grid-4>li:nth-of-type(4n+1){clear:both}.large-block-grid-5>li{width:20%;list-style:none}.large-block-grid-5>li:nth-of-type(1n){clear:none}.large-block-grid-5>li:nth-of-type(5n+1){clear:both}.large-block-grid-6>li{width:16.66667%;list-style:none}.large-block-grid-6>li:nth-of-type(1n){clear:none}.large-block-grid-6>li:nth-of-type(6n+1){clear:both}.large-block-grid-7>li{width:14.28571%;list-style:none}.large-block-grid-7>li:nth-of-type(1n){clear:none}.large-block-grid-7>li:nth-of-type(7n+1){clear:both}.large-block-grid-8>li{width:12.5%;list-style:none}.large-block-grid-8>li:nth-of-type(1n){clear:none}.large-block-grid-8>li:nth-of-type(8n+1){clear:both}.large-block-grid-9>li{width:11.11111%;list-style:none}.large-block-grid-9>li:nth-of-type(1n){clear:none}.large-block-grid-9>li:nth-of-type(9n+1){clear:both}.large-block-grid-10>li{width:10%;list-style:none}.large-block-grid-10>li:nth-of-type(1n){clear:none}.large-block-grid-10>li:nth-of-type(10n+1){clear:both}.large-block-grid-11>li{width:9.09091%;list-style:none}.large-block-grid-11>li:nth-of-type(1n){clear:none}.large-block-grid-11>li:nth-of-type(11n+1){clear:both}.large-block-grid-12>li{width:8.33333%;list-style:none}.large-block-grid-12>li:nth-of-type(1n){clear:none}.large-block-grid-12>li:nth-of-type(12n+1){clear:both}}.flex-video{position:relative;padding-top:1.5625rem;padding-bottom:67.5%;height:0;margin-bottom:1rem;overflow:hidden}.flex-video.widescreen{padding-bottom:56.34%}.flex-video.vimeo{padding-top:0}.flex-video iframe,.flex-video object,.flex-video embed,.flex-video video{position:absolute;top:0;left:0;width:100%;height:100%}.keystroke,kbd{background-color:#ededed;border-color:#ddd;color:#222;border-style:solid;border-width:1px;margin:0;font-family:"Consolas","Menlo","Courier",monospace;font-size:inherit;padding:0.125rem 0.25rem 0;border-radius:3px}div.switch label{display:block;margin-bottom:1rem;position:relative;color:transparent;background:#ddd;text-indent:100%;width:4rem;height:2rem;cursor:pointer;transition:left 0.15s ease-out}div.switch input{display:none}div.switch input+label{margin-left:0;margin-right:0}div.switch label:after{content:"";display:block;background:#fff;position:absolute;top:.25rem;left:.25rem;width:1.5rem;height:1.5rem;-webkit-transition:left 0.15s ease-out;-moz-transition:left 0.15s ease-out;transition:left 0.15s ease-out}div.switch input:checked+label{background:#008cba}div.switch input:checked+label:after{left:2.25rem}div.switch label{width:4rem;height:2rem}div.switch label:after{width:1.5rem;height:1.5rem}div.switch input:checked+label:after{left:2.25rem}div.switch label{color:transparent;background:#ddd}div.switch label:after{background:#fff}div.switch input:checked+label{background:#008cba}div.switch.large label{width:5rem;height:2.5rem}div.switch.large label:after{width:2rem;height:2rem}div.switch.large input:checked+label:after{left:2.75rem}div.switch.small label{width:3.5rem;height:1.75rem}div.switch.small label:after{width:1.25rem;height:1.25rem}div.switch.small input:checked+label:after{left:2rem}div.switch.tiny label{width:3rem;height:1.5rem}div.switch.tiny label:after{width:1rem;height:1rem}div.switch.tiny input:checked+label:after{left:1.75rem}div.switch.radius label{border-radius:4px}div.switch.radius label:after{border-radius:3px}div.switch.round{border-radius:1000px}div.switch.round label{border-radius:2rem}div.switch.round label:after{border-radius:2rem}@media only screen{.show-for-small-only,.show-for-small-up,.show-for-small,.show-for-small-down,.hide-for-medium-only,.hide-for-medium-up,.hide-for-medium,.show-for-medium-down,.hide-for-large-only,.hide-for-large-up,.hide-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xxlarge-only,.hide-for-xxlarge-up{display:inherit !important}.hide-for-small-only,.hide-for-small-up,.hide-for-small,.hide-for-small-down,.show-for-medium-only,.show-for-medium-up,.show-for-medium,.hide-for-medium-down,.show-for-large-only,.show-for-large-up,.show-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xxlarge-only,.show-for-xxlarge-up{display:none !important}.visible-for-small-only,.visible-for-small-up,.visible-for-small,.visible-for-small-down,.hidden-for-medium-only,.hidden-for-medium-up,.hidden-for-medium,.visible-for-medium-down,.hidden-for-large-only,.hidden-for-large-up,.hidden-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.hidden-for-small-only,.hidden-for-small-up,.hidden-for-small,.hidden-for-small-down,.visible-for-medium-only,.visible-for-medium-up,.visible-for-medium,.hidden-for-medium-down,.visible-for-large-only,.visible-for-large-up,.visible-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xxlarge-only,.visible-for-xxlarge-up{position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}table.show-for-small-only,table.show-for-small-up,table.show-for-small,table.show-for-small-down,table.hide-for-medium-only,table.hide-for-medium-up,table.hide-for-medium,table.show-for-medium-down,table.hide-for-large-only,table.hide-for-large-up,table.hide-for-large,table.show-for-large-down,table.hide-for-xlarge-only,table.hide-for-xlarge-up,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up{display:table}thead.show-for-small-only,thead.show-for-small-up,thead.show-for-small,thead.show-for-small-down,thead.hide-for-medium-only,thead.hide-for-medium-up,thead.hide-for-medium,thead.show-for-medium-down,thead.hide-for-large-only,thead.hide-for-large-up,thead.hide-for-large,thead.show-for-large-down,thead.hide-for-xlarge-only,thead.hide-for-xlarge-up,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up{display:table-header-group !important}tbody.show-for-small-only,tbody.show-for-small-up,tbody.show-for-small,tbody.show-for-small-down,tbody.hide-for-medium-only,tbody.hide-for-medium-up,tbody.hide-for-medium,tbody.show-for-medium-down,tbody.hide-for-large-only,tbody.hide-for-large-up,tbody.hide-for-large,tbody.show-for-large-down,tbody.hide-for-xlarge-only,tbody.hide-for-xlarge-up,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up{display:table-row-group !important}tr.show-for-small-only,tr.show-for-small-up,tr.show-for-small,tr.show-for-small-down,tr.hide-for-medium-only,tr.hide-for-medium-up,tr.hide-for-medium,tr.show-for-medium-down,tr.hide-for-large-only,tr.hide-for-large-up,tr.hide-for-large,tr.show-for-large-down,tr.hide-for-xlarge-only,tr.hide-for-xlarge-up,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up{display:table-row !important}th.show-for-small-only,td.show-for-small-only,th.show-for-small-up,td.show-for-small-up,th.show-for-small,td.show-for-small,th.show-for-small-down,td.show-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.hide-for-medium-up,td.hide-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.show-for-medium-down,td.show-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.hide-for-large-up,td.hide-for-large-up,th.hide-for-large,td.hide-for-large,th.show-for-large-down,td.show-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.hide-for-xlarge-up,td.hide-for-xlarge-up,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up{display:table-cell !important}}@media only screen and (min-width: 40.063em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.show-for-medium-only,.show-for-medium-up,.show-for-medium,.show-for-medium-down,.hide-for-large-only,.hide-for-large-up,.hide-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xxlarge-only,.hide-for-xxlarge-up{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.hide-for-medium-only,.hide-for-medium-up,.hide-for-medium,.hide-for-medium-down,.show-for-large-only,.show-for-large-up,.show-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xxlarge-only,.show-for-xxlarge-up{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.visible-for-medium-only,.visible-for-medium-up,.visible-for-medium,.visible-for-medium-down,.hidden-for-large-only,.hidden-for-large-up,.hidden-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.hidden-for-medium-only,.hidden-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.visible-for-large-only,.visible-for-large-up,.visible-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xxlarge-only,.visible-for-xxlarge-up{position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.show-for-medium-only,table.show-for-medium-up,table.show-for-medium,table.show-for-medium-down,table.hide-for-large-only,table.hide-for-large-up,table.hide-for-large,table.show-for-large-down,table.hide-for-xlarge-only,table.hide-for-xlarge-up,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up{display:table}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.show-for-medium-only,thead.show-for-medium-up,thead.show-for-medium,thead.show-for-medium-down,thead.hide-for-large-only,thead.hide-for-large-up,thead.hide-for-large,thead.show-for-large-down,thead.hide-for-xlarge-only,thead.hide-for-xlarge-up,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.show-for-medium-only,tbody.show-for-medium-up,tbody.show-for-medium,tbody.show-for-medium-down,tbody.hide-for-large-only,tbody.hide-for-large-up,tbody.hide-for-large,tbody.show-for-large-down,tbody.hide-for-xlarge-only,tbody.hide-for-xlarge-up,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.show-for-medium-only,tr.show-for-medium-up,tr.show-for-medium,tr.show-for-medium-down,tr.hide-for-large-only,tr.hide-for-large-up,tr.hide-for-large,tr.show-for-large-down,tr.hide-for-xlarge-only,tr.hide-for-xlarge-up,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up{display:table-row !important}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.show-for-medium-only,td.show-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.show-for-medium,td.show-for-medium,th.show-for-medium-down,td.show-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.hide-for-large-up,td.hide-for-large-up,th.hide-for-large,td.hide-for-large,th.show-for-large-down,td.show-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.hide-for-xlarge-up,td.hide-for-xlarge-up,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up{display:table-cell !important}}@media only screen and (min-width: 64.063em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.hide-for-medium-only,.show-for-medium-up,.hide-for-medium,.hide-for-medium-down,.show-for-large-only,.show-for-large-up,.show-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xxlarge-only,.hide-for-xxlarge-up{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.show-for-medium-only,.hide-for-medium-up,.show-for-medium,.show-for-medium-down,.hide-for-large-only,.hide-for-large-up,.hide-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xxlarge-only,.show-for-xxlarge-up{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.hidden-for-medium-only,.visible-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.visible-for-large-only,.visible-for-large-up,.visible-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.visible-for-medium-only,.hidden-for-medium-up,.visible-for-medium,.visible-for-medium-down,.hidden-for-large-only,.hidden-for-large-up,.hidden-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xxlarge-only,.visible-for-xxlarge-up{position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.hide-for-medium-only,table.show-for-medium-up,table.hide-for-medium,table.hide-for-medium-down,table.show-for-large-only,table.show-for-large-up,table.show-for-large,table.show-for-large-down,table.hide-for-xlarge-only,table.hide-for-xlarge-up,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up{display:table}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.hide-for-medium-only,thead.show-for-medium-up,thead.hide-for-medium,thead.hide-for-medium-down,thead.show-for-large-only,thead.show-for-large-up,thead.show-for-large,thead.show-for-large-down,thead.hide-for-xlarge-only,thead.hide-for-xlarge-up,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.hide-for-medium-only,tbody.show-for-medium-up,tbody.hide-for-medium,tbody.hide-for-medium-down,tbody.show-for-large-only,tbody.show-for-large-up,tbody.show-for-large,tbody.show-for-large-down,tbody.hide-for-xlarge-only,tbody.hide-for-xlarge-up,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.hide-for-medium-only,tr.show-for-medium-up,tr.hide-for-medium,tr.hide-for-medium-down,tr.show-for-large-only,tr.show-for-large-up,tr.show-for-large,tr.show-for-large-down,tr.hide-for-xlarge-only,tr.hide-for-xlarge-up,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up{display:table-row !important}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.hide-for-medium-down,td.hide-for-medium-down,th.show-for-large-only,td.show-for-large-only,th.show-for-large-up,td.show-for-large-up,th.show-for-large,td.show-for-large,th.show-for-large-down,td.show-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.hide-for-xlarge-up,td.hide-for-xlarge-up,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up{display:table-cell !important}}@media only screen and (min-width: 90.063em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.hide-for-medium-only,.show-for-medium-up,.hide-for-medium,.hide-for-medium-down,.hide-for-large-only,.show-for-large-up,.hide-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.hide-for-xxlarge-only,.hide-for-xxlarge-up{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.show-for-medium-only,.hide-for-medium-up,.show-for-medium,.show-for-medium-down,.show-for-large-only,.hide-for-large-up,.show-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.show-for-xxlarge-only,.show-for-xxlarge-up{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.hidden-for-medium-only,.visible-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.hidden-for-large-only,.visible-for-large-up,.hidden-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.visible-for-medium-only,.hidden-for-medium-up,.visible-for-medium,.visible-for-medium-down,.visible-for-large-only,.hidden-for-large-up,.visible-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.visible-for-xxlarge-only,.visible-for-xxlarge-up{position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.hide-for-medium-only,table.show-for-medium-up,table.hide-for-medium,table.hide-for-medium-down,table.hide-for-large-only,table.show-for-large-up,table.hide-for-large,table.hide-for-large-down,table.show-for-xlarge-only,table.show-for-xlarge-up,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up{display:table}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.hide-for-medium-only,thead.show-for-medium-up,thead.hide-for-medium,thead.hide-for-medium-down,thead.hide-for-large-only,thead.show-for-large-up,thead.hide-for-large,thead.hide-for-large-down,thead.show-for-xlarge-only,thead.show-for-xlarge-up,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.hide-for-medium-only,tbody.show-for-medium-up,tbody.hide-for-medium,tbody.hide-for-medium-down,tbody.hide-for-large-only,tbody.show-for-large-up,tbody.hide-for-large,tbody.hide-for-large-down,tbody.show-for-xlarge-only,tbody.show-for-xlarge-up,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.hide-for-medium-only,tr.show-for-medium-up,tr.hide-for-medium,tr.hide-for-medium-down,tr.hide-for-large-only,tr.show-for-large-up,tr.hide-for-large,tr.hide-for-large-down,tr.show-for-xlarge-only,tr.show-for-xlarge-up,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up{display:table-row !important}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.hide-for-medium-down,td.hide-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.show-for-large-up,td.show-for-large-up,th.hide-for-large,td.hide-for-large,th.hide-for-large-down,td.hide-for-large-down,th.show-for-xlarge-only,td.show-for-xlarge-only,th.show-for-xlarge-up,td.show-for-xlarge-up,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up{display:table-cell !important}}@media only screen and (min-width: 120.063em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.hide-for-medium-only,.show-for-medium-up,.hide-for-medium,.hide-for-medium-down,.hide-for-large-only,.show-for-large-up,.hide-for-large,.hide-for-large-down,.hide-for-xlarge-only,.show-for-xlarge-up,.show-for-xxlarge-only,.show-for-xxlarge-up{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.show-for-medium-only,.hide-for-medium-up,.show-for-medium,.show-for-medium-down,.show-for-large-only,.hide-for-large-up,.show-for-large,.show-for-large-down,.show-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xxlarge-only,.hide-for-xxlarge-up{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.hidden-for-medium-only,.visible-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.hidden-for-large-only,.visible-for-large-up,.hidden-for-large,.hidden-for-large-down,.hidden-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xxlarge-only,.visible-for-xxlarge-up{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.visible-for-medium-only,.hidden-for-medium-up,.visible-for-medium,.visible-for-medium-down,.visible-for-large-only,.hidden-for-large-up,.visible-for-large,.visible-for-large-down,.visible-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up{position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.hide-for-medium-only,table.show-for-medium-up,table.hide-for-medium,table.hide-for-medium-down,table.hide-for-large-only,table.show-for-large-up,table.hide-for-large,table.hide-for-large-down,table.hide-for-xlarge-only,table.show-for-xlarge-up,table.show-for-xxlarge-only,table.show-for-xxlarge-up{display:table}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.hide-for-medium-only,thead.show-for-medium-up,thead.hide-for-medium,thead.hide-for-medium-down,thead.hide-for-large-only,thead.show-for-large-up,thead.hide-for-large,thead.hide-for-large-down,thead.hide-for-xlarge-only,thead.show-for-xlarge-up,thead.show-for-xxlarge-only,thead.show-for-xxlarge-up{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.hide-for-medium-only,tbody.show-for-medium-up,tbody.hide-for-medium,tbody.hide-for-medium-down,tbody.hide-for-large-only,tbody.show-for-large-up,tbody.hide-for-large,tbody.hide-for-large-down,tbody.hide-for-xlarge-only,tbody.show-for-xlarge-up,tbody.show-for-xxlarge-only,tbody.show-for-xxlarge-up{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.hide-for-medium-only,tr.show-for-medium-up,tr.hide-for-medium,tr.hide-for-medium-down,tr.hide-for-large-only,tr.show-for-large-up,tr.hide-for-large,tr.hide-for-large-down,tr.hide-for-xlarge-only,tr.show-for-xlarge-up,tr.show-for-xxlarge-only,tr.show-for-xxlarge-up{display:table-row !important}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.hide-for-medium-down,td.hide-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.show-for-large-up,td.show-for-large-up,th.hide-for-large,td.hide-for-large,th.hide-for-large-down,td.hide-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.show-for-xlarge-up,td.show-for-xlarge-up,th.show-for-xxlarge-only,td.show-for-xxlarge-only,th.show-for-xxlarge-up,td.show-for-xxlarge-up{display:table-cell !important}}.show-for-landscape,.hide-for-portrait{display:inherit !important}.hide-for-landscape,.show-for-portrait{display:none !important}table.hide-for-landscape,table.show-for-portrait{display:table}thead.hide-for-landscape,thead.show-for-portrait{display:table-header-group !important}tbody.hide-for-landscape,tbody.show-for-portrait{display:table-row-group !important}tr.hide-for-landscape,tr.show-for-portrait{display:table-row !important}td.hide-for-landscape,td.show-for-portrait,th.hide-for-landscape,th.show-for-portrait{display:table-cell !important}@media only screen and (orientation: landscape){.show-for-landscape,.hide-for-portrait{display:inherit !important}.hide-for-landscape,.show-for-portrait{display:none !important}table.show-for-landscape,table.hide-for-portrait{display:table}thead.show-for-landscape,thead.hide-for-portrait{display:table-header-group !important}tbody.show-for-landscape,tbody.hide-for-portrait{display:table-row-group !important}tr.show-for-landscape,tr.hide-for-portrait{display:table-row !important}td.show-for-landscape,td.hide-for-portrait,th.show-for-landscape,th.hide-for-portrait{display:table-cell !important}}@media only screen and (orientation: portrait){.show-for-portrait,.hide-for-landscape{display:inherit !important}.hide-for-portrait,.show-for-landscape{display:none !important}table.show-for-portrait,table.hide-for-landscape{display:table}thead.show-for-portrait,thead.hide-for-landscape{display:table-header-group !important}tbody.show-for-portrait,tbody.hide-for-landscape{display:table-row-group !important}tr.show-for-portrait,tr.hide-for-landscape{display:table-row !important}td.show-for-portrait,td.hide-for-landscape,th.show-for-portrait,th.hide-for-landscape{display:table-cell !important}}.show-for-touch{display:none !important}.hide-for-touch{display:inherit !important}.touch .show-for-touch{display:inherit !important}.touch .hide-for-touch{display:none !important}table.hide-for-touch{display:table}.touch table.show-for-touch{display:table}thead.hide-for-touch{display:table-header-group !important}.touch thead.show-for-touch{display:table-header-group !important}tbody.hide-for-touch{display:table-row-group !important}.touch tbody.show-for-touch{display:table-row-group !important}tr.hide-for-touch{display:table-row !important}.touch tr.show-for-touch{display:table-row !important}td.hide-for-touch{display:table-cell !important}.touch td.show-for-touch{display:table-cell !important}th.hide-for-touch{display:table-cell !important}.touch th.show-for-touch{display:table-cell !important}@media print{.show-for-print{display:block}.hide-for-print{display:none}table.show-for-print{display:table}thead.show-for-print{display:table-header-group !important}tbody.show-for-print{display:table-row-group !important}tr.show-for-print{display:table-row !important}td.show-for-print{display:table-cell !important}th.show-for-print{display:table-cell !important}} diff --git a/client/lib/foundation/css/normalize.css b/client/lib/foundation/css/normalize.css deleted file mode 100644 index 08f8950..0000000 --- a/client/lib/foundation/css/normalize.css +++ /dev/null @@ -1,425 +0,0 @@ -/*! normalize.css v3.0.1 | MIT License | git.io/normalize */ - -/** - * 1. Set default font family to sans-serif. - * 2. Prevent iOS text size adjust after orientation change, without disabling - * user zoom. - */ - -html { - font-family: sans-serif; /* 1 */ - -ms-text-size-adjust: 100%; /* 2 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/** - * Remove default margin. - */ - -body { - margin: 0; -} - -/* HTML5 display definitions - ========================================================================== */ - -/** - * Correct `block` display not defined for any HTML5 element in IE 8/9. - * Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. - * Correct `block` display not defined for `main` in IE 11. - */ - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -nav, -section, -summary { - display: block; -} - -/** - * 1. Correct `inline-block` display not defined in IE 8/9. - * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. - */ - -audio, -canvas, -progress, -video { - display: inline-block; /* 1 */ - vertical-align: baseline; /* 2 */ -} - -/** - * Prevent modern browsers from displaying `audio` without controls. - * Remove excess height in iOS 5 devices. - */ - -audio:not([controls]) { - display: none; - height: 0; -} - -/** - * Address `[hidden]` styling not present in IE 8/9/10. - * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. - */ - -[hidden], -template { - display: none; -} - -/* Links - ========================================================================== */ - -/** - * Remove the gray background color from active links in IE 10. - */ - -a { - background: transparent; -} - -/** - * Improve readability when focused and also mouse hovered in all browsers. - */ - -a:active, -a:hover { - outline: 0; -} - -/* Text-level semantics - ========================================================================== */ - -/** - * Address styling not present in IE 8/9/10/11, Safari, and Chrome. - */ - -abbr[title] { - border-bottom: 1px dotted; -} - -/** - * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. - */ - -b, -strong { - font-weight: bold; -} - -/** - * Address styling not present in Safari and Chrome. - */ - -dfn { - font-style: italic; -} - -/** - * Address variable `h1` font-size and margin within `section` and `article` - * contexts in Firefox 4+, Safari, and Chrome. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/** - * Address styling not present in IE 8/9. - */ - -mark { - background: #ff0; - color: #000; -} - -/** - * Address inconsistent and variable font size in all browsers. - */ - -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` affecting `line-height` in all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -/* Embedded content - ========================================================================== */ - -/** - * Remove border when inside `a` element in IE 8/9/10. - */ - -img { - border: 0; -} - -/** - * Correct overflow not hidden in IE 9/10/11. - */ - -svg:not(:root) { - overflow: hidden; -} - -/* Grouping content - ========================================================================== */ - -/** - * Address margin not present in IE 8/9 and Safari. - */ - -figure { - margin: 1em 40px; -} - -/** - * Address differences between Firefox and other browsers. - */ - -hr { - -moz-box-sizing: content-box; - box-sizing: content-box; - height: 0; -} - -/** - * Contain overflow in all browsers. - */ - -pre { - overflow: auto; -} - -/** - * Address odd `em`-unit font size rendering in all browsers. - */ - -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} - -/* Forms - ========================================================================== */ - -/** - * Known limitation: by default, Chrome and Safari on OS X allow very limited - * styling of `select`, unless a `border` property is set. - */ - -/** - * 1. Correct color not being inherited. - * Known issue: affects color of disabled elements. - * 2. Correct font properties not being inherited. - * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. - */ - -button, -input, -optgroup, -select, -textarea { - color: inherit; /* 1 */ - font: inherit; /* 2 */ - margin: 0; /* 3 */ -} - -/** - * Address `overflow` set to `hidden` in IE 8/9/10/11. - */ - -button { - overflow: visible; -} - -/** - * Address inconsistent `text-transform` inheritance for `button` and `select`. - * All other form control elements do not inherit `text-transform` values. - * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. - * Correct `select` style inheritance in Firefox. - */ - -button, -select { - text-transform: none; -} - -/** - * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` - * and `video` controls. - * 2. Correct inability to style clickable `input` types in iOS. - * 3. Improve usability and consistency of cursor style between image-type - * `input` and others. - */ - -button, -html input[type="button"], /* 1 */ -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; /* 2 */ - cursor: pointer; /* 3 */ -} - -/** - * Re-set default cursor for disabled elements. - */ - -button[disabled], -html input[disabled] { - cursor: default; -} - -/** - * Remove inner padding and border in Firefox 4+. - */ - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -/** - * Address Firefox 4+ setting `line-height` on `input` using `!important` in - * the UA stylesheet. - */ - -input { - line-height: normal; -} - -/** - * It's recommended that you don't attempt to style these elements. - * Firefox's implementation doesn't respect box-sizing, padding, or width. - * - * 1. Address box sizing set to `content-box` in IE 8/9/10. - * 2. Remove excess padding in IE 8/9/10. - */ - -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Fix the cursor style for Chrome's increment/decrement buttons. For certain - * `font-size` values of the `input`, it causes the cursor style of the - * decrement button to change from `default` to `text`. - */ - -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Address `appearance` set to `searchfield` in Safari and Chrome. - * 2. Address `box-sizing` set to `border-box` in Safari and Chrome - * (include `-moz` to future-proof). - */ - -input[type="search"] { - -webkit-appearance: textfield; /* 1 */ - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; /* 2 */ - box-sizing: content-box; -} - -/** - * Remove inner padding and search cancel button in Safari and Chrome on OS X. - * Safari (but not Chrome) clips the cancel button when the search input has - * padding (and `textfield` appearance). - */ - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * Define consistent border, margin, and padding. - */ - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -/** - * 1. Correct `color` not being inherited in IE 8/9/10/11. - * 2. Remove padding so people aren't caught out if they zero out fieldsets. - */ - -legend { - border: 0; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Remove default vertical scrollbar in IE 8/9/10/11. - */ - -textarea { - overflow: auto; -} - -/** - * Don't inherit the `font-weight` (applied by a rule above). - * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. - */ - -optgroup { - font-weight: bold; -} - -/* Tables - ========================================================================== */ - -/** - * Remove most spacing between table cells. - */ - -table { - border-collapse: collapse; - border-spacing: 0; -} - -td, -th { - padding: 0; -} diff --git a/client/lib/simplegrid/simplegrid.css b/client/lib/simplegrid/simplegrid.css deleted file mode 100644 index cf77f00..0000000 --- a/client/lib/simplegrid/simplegrid.css +++ /dev/null @@ -1,289 +0,0 @@ -/* - Simple Grid - Learn More - http://dallasbass.com/simple-grid-a-lightweight-responsive-css-grid/ - Project Page - http://thisisdallas.github.com/Simple-Grid/ - Author - Dallas Bass - Site - dallasbass.com -*/ - -*, *:after, *:before { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -body { - margin: 0px; -} - -[class*='col-'] { - float: left; - padding-right: 20px; /* column-space */ -} - -.grid { - width: 100%; - max-width: 1140px; - min-width: 755px; - margin: 0 auto; - overflow: hidden; -} - -.grid:after { - content: ""; - display: table; - clear: both; -} - -.grid-pad { - padding-top: 20px; - padding-left: 20px; /* grid-space to left */ - padding-right: 0px; /* grid-space to right: (grid-space-left - column-space) e.g. 20px-20px=0 */ -} - -.push-right { - float: right; -} - -/* Content Columns */ - -.col-1-1 { - width: 100%; -} -.col-2-3, .col-8-12 { - width: 66.66%; -} - -.col-1-2, .col-6-12 { - width: 50%; -} - -.col-1-3, .col-4-12 { - width: 33.33%; -} - -.col-1-4, .col-3-12 { - width: 25%; -} - -.col-1-5 { - width: 20%; -} - -.col-1-6, .col-2-12 { - width: 16.667%; -} - -.col-1-7 { - width: 14.28%; -} - -.col-1-8 { - width: 12.5%; -} - -.col-1-9 { - width: 11.1%; -} - -.col-1-10 { - width: 10%; -} - -.col-1-11 { - width: 9.09%; -} - -.col-1-12 { - width: 8.33% -} - -/* Layout Columns */ - -.col-11-12 { - width: 91.66% -} - -.col-10-12 { - width: 83.333%; -} - -.col-9-12 { - width: 75%; -} - -.col-5-12 { - width: 41.66%; -} - -.col-7-12 { - width: 58.33% -} - - - -/* Pushing blocks */ - -.push-2-3, .push-8-12 { - margin-left: 66.66%; -} - -.push-1-2, .push-6-12 { - margin-left: 50%; -} - -.push-1-3, .push-4-12 { - margin-left: 33.33%; -} - -.push-1-4, .push-3-12 { - margin-left: 25%; -} - -.push-1-5 { - margin-left: 20%; -} - -.push-1-6, .push-2-12 { - margin-left: 16.667%; -} - -.push-1-7 { - margin-left: 14.28%; -} - -.push-1-8 { - margin-left: 12.5%; -} - -.push-1-9 { - margin-left: 11.1%; -} - -.push-1-10 { - margin-left: 10%; -} - -.push-1-11 { - margin-left: 9.09%; -} - -.push-1-12 { - margin-left: 8.33% -} - - -@media handheld, only screen and (max-width: 767px) { - .grid { - width: 100%; - min-width: 0; - margin-left: 0px; - margin-right: 0px; - padding-left: 20px; /* grid-space to left */ - padding-right: 10px; /* grid-space to right: (grid-space-left - column-space) e.g. 20px-10px=10px */ - } - - [class*='col-'] { - width: auto; - float: none; - margin-left: 0px; - margin-right: 0px; - margin-top: 10px; - margin-bottom: 10px; - padding-left: 0px; - padding-right: 10px; /* column-space */ - } - - - /* Mobile Layout */ - - [class*='mobile-col-'] { - float: left; - margin-left: 0px; - margin-right: 0px; - margin-top: 0px; - margin-bottom: 10px; - padding-left: 0px; - padding-right: 10px; /* column-space */ - padding-bottom: 0px; - } - - .mobile-col-1-1 { - width: 100%; - } - .mobile-col-2-3, .mobile-col-8-12 { - width: 66.66%; - } - - .mobile-col-1-2, .mobile-col-6-12 { - width: 50%; - } - - .mobile-col-1-3, .mobile-col-4-12 { - width: 33.33%; - } - - .mobile-col-1-4, .mobile-col-3-12 { - width: 25%; - } - - .mobile-col-1-5 { - width: 20%; - } - - .mobile-col-1-6, .mobile-col-2-12 { - width: 16.667%; - } - - .mobile-col-1-7 { - width: 14.28%; - } - - .mobile-col-1-8 { - width: 12.5%; - } - - .mobile-col-1-9 { - width: 11.1%; - } - - .mobile-col-1-10 { - width: 10%; - } - - .mobile-col-1-11 { - width: 9.09%; - } - - .mobile-col-1-12 { - width: 8.33% - } - - /* Layout Columns */ - - .mobile-col-11-12 { - width: 91.66% - } - - .mobile-col-10-12 { - width: 83.333%; - } - - .mobile-col-9-12 { - width: 75%; - } - - .mobile-col-5-12 { - width: 41.66%; - } - - .mobile-col-7-12 { - width: 58.33% - } - - .hide-on-mobile { - display: none !important; - width: 0; - height: 0; - } -} \ No newline at end of file diff --git a/client/scripts/calculator-main.js b/client/scripts/calculator-main.js deleted file mode 100644 index 8b02a02..0000000 --- a/client/scripts/calculator-main.js +++ /dev/null @@ -1,12 +0,0 @@ -define([ - 'lib/react', - 'components2/calculator' -], function(React, Calculator) { - - React.renderComponent( - Calculator(null), - document.getElementById('calculator') - ); - -}); - diff --git a/client/scripts/components2/calculator.js b/client/scripts/components2/calculator.js deleted file mode 100644 index 971eeab..0000000 --- a/client/scripts/components2/calculator.js +++ /dev/null @@ -1,96 +0,0 @@ -define(['lib/react', 'lib/clib'], function(React, Clib) { - var D = React.DOM; - - return React.createClass({ - displayName: 'Calculator', - - getInitialState: function() { - return { - amount: 100, - cashOut: 200, - err: null - }; - }, - - checkErr: function(a, c) { - if (isNaN(a)) - return 'Table amount must be set'; - else if (isNaN(c)) - return 'Cashout amount must be set'; - if (a < 1) - return 'Table amount must be at least 1'; - else if (c < 1) - return 'Cashout amount must be at least 1'; - else if (c < a) - return 'Cashout amount must be equal to or greater than table amount'; - else - return null; - }, - - - render: function() { - var self = this; - - var rows; - - if (this.state.err) { - rows = [D.tr({ key: 'err' }, - D.td(null, 'Error: '), - D.td(null, this.state.err) - )]; - } else { - rows = [ - D.tr({ key: 'winProb' }, - D.th(null, 'Probability of Winning:'), - D.td(null, (Clib.winProb(this.state.amount, this.state.cashOut) * 100), '%') - ), - D.tr({ key: 'winProfit' }, - D.th(null, 'Profit if win:'), - D.td(null, Clib.profit(this.state.amount, this.state.cashOut)) - ), - D.tr({ key: 'houseExpected' }, - D.th(null, 'House Expected Return:'), - D.td(null, Clib.houseExpectedReturn(this.state.amount, this.state.cashOut)) - ), - D.tr({ key: 'houseMargin' }, - D.th(null, 'House Margin:'), - D.td(null, (Clib.houseExpectedReturn(this.state.amount, this.state.cashOut) / this.state.amount * 100), '%') - ) - ]; - } - - - return D.table(null, - D.tbody(null, - D.tr(null, - D.th(null, 'Table Amount (Initial Wager):'), - D.td(null, D.input({ - type: 'number', - value: this.state.amount, - min: 1, - onChange: function(event) { - var n = parseInt(event.target.value); - var e = self.checkErr(n, self.state.cashOut); - self.setState({ amount: n, err: e }); - } - })) - ), - D.tr(null, - D.th(null, 'Intended Cashout:'), - D.td(null, D.input({ - type: 'number', - value: this.state.cashOut, - min: 2, - onChange: function(event) { - var n = parseInt(event.target.value); - var e = self.checkErr(self.state.amount, n); - self.setState({ cashOut: n, err: e }); - } - })) - ), - rows - )); - } - }); - -}); \ No newline at end of file diff --git a/client/scripts/components2/chart.js b/client/scripts/components2/chart.js deleted file mode 100644 index d59367f..0000000 --- a/client/scripts/components2/chart.js +++ /dev/null @@ -1,81 +0,0 @@ -define(['lib/react', 'lib/clib', 'components2/graph'], - - function(React, Clib, Graph) { - var D = React.DOM; - - return React.createClass({ - displayName: 'Chart', - - propType: { - engine: React.PropTypes.object.isRequired - }, - - componentWillMount: function() { - var width; - - window.onresize=function() { - if (window.innerWidth > 767) { - if((window.innerWidth) < 1000) { - width = Math.floor(window.innerWidth * 0.58); - } else { - width = 600; - } - } else { - width = window.innerWidth * 0.9; - } - self.graph = new Graph(width, 300); - }; - - if (window.innerWidth > 767) { - if((window.innerWidth) < 1000) { - width = Math.floor(window.innerWidth * 0.58); - } else { - width = 600; - } - } else { - width = window.innerWidth * 0.9; - } - - this.graph = new Graph(width, 300); - }, - - componentWillUnmount: function() { - this.mounted = false; - }, - - componentDidMount: function() { - this.mounted = true; - this.animRequest = window.requestAnimationFrame(this.draw); - }, - - draw: function() { - if(this.mounted) { - var canvas = this.getDOMNode(); - if (!canvas.getContext) { - console.log('No canvas'); - return; - } - var ctx = canvas.getContext('2d'); - - this.graph.setData(ctx, canvas, this.props.engine); - this.graph.calculatePlotValues(); - this.graph.clean(); - this.graph.drawGraph(); - this.graph.drawAxes(); - this.graph.drawGameData(); - - this.animRequest = window.requestAnimationFrame(this.draw); - } - }, - - render: function() { - return D.canvas({ - width: this.graph.canvasWidth, - height: this.graph.canvasHeight - }); - } - - }); - - } -) diff --git a/client/scripts/components2/chat.js b/client/scripts/components2/chat.js deleted file mode 100644 index cdeb6bc..0000000 --- a/client/scripts/components2/chat.js +++ /dev/null @@ -1,136 +0,0 @@ -define(['lib/react', 'lib/clib'], function(React, Clib) { - var D = React.DOM; - - /* Constants */ - var SCROLL_OFFSET = 120; - - function renderMessage(message, index) { - var pri; - switch(message.type) { - case 'say': - switch(message.role) { - case 'admin': - pri = 'msg-admin-message'; - break; - case 'moderator': - pri = 'msg-moderator-message'; - break; - case 'user': - default: - pri = 'msg-chat-message'; - break; - } - return D.li({ className: pri , key: 'msg' + index }, - D.a({ href: '/user/' + message.username, - target: '_blank' - }, - '<'+message.username+'>'), - ' ' + message.message); - case 'mute': - pri = 'msg-mute-message'; - return D.li({ className: pri , key: 'msg' + index }, - D.a({ href: '/user/' + message.moderator, - target: '_blank' - }, - '*** <'+message.moderator+'>'), - message.shadow ? ' shadow muted ' : ' muted ', - D.a({ href: '/user/' + message.username, - target: '_blank' - }, - '<'+message.username+'>'), - ' for ' + message.timespec); - case 'error': - case 'info': - pri = 'msg-info-message'; - return D.li({ className: pri, key: 'msg' + index }, - D.span(null, ' *** ' + message.message)); - break; - default: - break; - } - }; - - return React.createClass({ - displayName: 'Chat', - - propTypes: { - engine: React.PropTypes.object.isRequired - }, - - getInitialState: function() { - /* Avoid scrolls down if a render is about to occur and it is not caused by the chat */ - this.listLength = this.props.engine.chat.length; - - return {} - }, - - copyGameInfo: function(message) { - return function() { - window.prompt("Copy to clipboard: Ctrl+C, Enter", 'ID: ' + message.game_id + '\n Hash: ' + message.hash + '\n Seed hash: ' + message.seed_hash); - } - }, - - render: function() { - var self = this; - var messages = this.props.engine.chat.map(renderMessage); - var chatInput; - - if(this.props.engine.username) //TODO: Engine should have a variable loggedIn or similar. - chatInput = D.input( - { className: 'chat-input', - onKeyDown: this.sendMessage, - ref: 'input', - placeholder: 'Type here...' - }); - else - chatInput = D.input( - { className: 'chat-input', - onKeyDown: this.sendMessage, - ref: 'input', - placeholder: 'Log in to chat...', - disabled: true - }); - - return D.div({ className: 'messages-container' }, - D.ul({ className: 'messages', ref: 'messages'}, - messages - ), - chatInput - ); - }, - - sendMessage: function(e) { - if(e.keyCode == 13) { - var msg = this.refs.input.getDOMNode().value; - if(msg.length > 1 && msg.length < 500){ - this.props.engine.say(msg, function(error) { - console.log('Error sending message', error); //TODO: handle error. - }); - this.refs.input.getDOMNode().value = ''; - } - } - }, - - shouldComponentUpdate: function(nextProps, nextState) { - if(nextProps.engine.chat.length != this.listLength) { - this.listLength = nextProps.engine.chat.length; - return true; - } - return false; - }, - - componentDidUpdate: function() { - var msgs = this.refs.messages.getDOMNode(); - var scrollBottom = msgs.scrollHeight-msgs.offsetHeight-msgs.scrollTop; - - if(scrollBottom < SCROLL_OFFSET) - msgs.scrollTop = msgs.scrollHeight; - }, - - componentDidMount: function() { - var msgs = this.refs.messages.getDOMNode(); - msgs.scrollTop = msgs.scrollHeight; - } - }); - -}); \ No newline at end of file diff --git a/client/scripts/components2/controls.js b/client/scripts/components2/controls.js deleted file mode 100644 index 5aa22cc..0000000 --- a/client/scripts/components2/controls.js +++ /dev/null @@ -1,317 +0,0 @@ -define(['lib/react', - 'lib/clib', - 'lib/lodash', - 'components2/payout', - 'components2/countdown'], - -function(React, Clib, _, Payout, Countdown) { - var D = React.DOM; - - return React.createClass({ - displayName: 'Controls', - - propTypes: { - engine: React.PropTypes.object.isRequired - }, - - componentWillMount: function() { - var self = this; - self.props.engine.on('cancel_bet', function() { - self.setState({ auto_play: false }); - }); - }, - - getInitialState: function() { - return { - bet_size: '1', // in bits - cash_out: '2.00', // in multiplier - auto_play: false - } - }, - - invalidBet: function() { - - var self = this; - if (self.props.engine.balanceSatoshis < 100) - return 'Not enough bits to play'; - - - if (!/^\d+k*$/.test(self.state.bet_size)) - return 'Bet may only contain digits, and k (to mean 1000)'; - - var bet = parseInt(self.state.bet_size.replace(/k/g, '000')); - - if (bet < 1) - return 'The bet should be at least 1 bit'; - - if (bet > 1e6) - return 'The bet must be less no more than 1,000,000 bits'; - - var co = self.state.cash_out; - - if (!/^\d+(\.\d{1,2})?$/.test(co)) { - return 'Invalid auto cash out amount'; - } - - co = parseFloat(co); - console.assert(!_.isNaN(co)); - - - if (_.isNaN(bet) || co < 1 || Math.floor(bet) !== bet) - return 'The bet should be an integer greater than or equal to one'; - - - if (self.props.engine.balanceSatoshis < bet * 100) - return 'Not enough bits'; - - return null; - - }, - - placeBet: function() { - - var bet = parseInt(this.state.bet_size.replace(/k/g, '000')) * 100; - console.assert(_.isFinite(bet)); - - var cashOut = parseFloat(this.state.cash_out); - console.assert(_.isFinite(cashOut)); - cashOut = Math.round(cashOut * 100); - - console.assert(_.isFinite(cashOut)); - - this.props.engine.bet(bet, cashOut, this.state.auto_play, function (err) { - if (err) { - console.error('Got betting error: ', err); - } - }); - - }, - - cashOut: function() { - this.props.engine.cashOut(function(err) { - if (err) { - console.warn('Got cash out error: ', err); - } - }); - }, - - cancelPlaceBet: function() { - throw new Error('todo cancel place bet!'); - }, - - getStatusMessage: function() { - if (this.props.engine.gameState === 'STARTING') { - console.log('showing starting...'); - return Countdown({ engine: this.props.engine }); - } - - if (this.props.engine.gameState === 'IN_PROGRESS') { - //user is playing - if (this.props.engine.userState === 'PLAYING') { - return D.span(null, 'Currently playing...'); - } else if (this.props.engine.lastGameWonAmount) { // user has cashed out - return D.span(null, 'Cashed Out @ ', - D.b({className: 'green'}, (this.props.engine.lastGameWonAmount / this.props.engine.lastBet), 'x'), - ' / Won: ', - D.b({className: 'green'}, Clib.formatSatoshis(this.props.engine.lastGameWonAmount)), - ' ', grammarBits(this.props.engine.lastGameWonAmount) - ); - - } else { // user still in game - return D.span(null, 'Game in progress..'); - } - } else if (this.props.engine.gameState === 'ENDED') { - console.log('sm: ended'); - - if (this.props.engine.lastBet && this.props.engine.lastGameWonAmount) { // bet and won - console.log('sm: bet and won'); - - var bonus; - if (this.props.engine.lastBonus) { - bonus = D.span(null, D.br(), ' (+', - Clib.formatSatoshis(this.props.engine.lastBonus), ' ', - grammarBits(this.props.engine.lastBonus), ' bonus)' - ); - } - - return D.span(null, 'Cashed Out @ ', - D.b({className: 'green'}, (this.props.engine.lastGameWonAmount / this.props.engine.lastBet), 'x'), - ' / Won: ', - D.b({className: 'green'}, Clib.formatSatoshis(this.props.engine.lastGameWonAmount)), - ' ', grammarBits(this.props.engine.lastGameWonAmount), - bonus - ); - } else if (this.props.engine.lastBet) { // bet and lost - console.log('sm: bet and lost'); - - var bonus; - if (this.props.engine.lastBonus) { - bonus = D.span(null, D.br(), '..but got a ', - Clib.formatSatoshis(this.props.engine.lastBonus), ' ', - grammarBits(this.props.engine.lastBonus), ' bonus' - ); - } - - return D.span(null, - 'Game crashed @ ', D.b({className: 'red'}, this.props.engine.lastGameCrashedAt/100, 'x'), - ' / You lost ', D.b({className: 'red'}, this.props.engine.lastBet/100), ' ', grammarBits(this.props.engine.lastBet), - bonus - ); - } else { // didn't bet - return D.span(null, - 'Game crashed @ ', D.b({className: 'red'}, this.props.engine.lastGameCrashedAt/100, 'x') - ); - } - - } - }, - - getBetter: function() { - var self = this; - - var invalidBet = self.invalidBet(); - - var button; - if (invalidBet) - button = D.a({className: 'big-button-disable unclick unselect' }, 'Place Bet!'); - else - button = D.a({className: 'big-button unselect', onClick: self.placeBet }, 'Place Bet!'); - - var cashOut = D.div(null, - D.div({ className: 'auto-cash-out-span' }, 'Auto Cash Out @ '), - D.input({ - min: 1.1, - value: self.state.cash_out, - type: 'number', - name: 'cash_out', - onChange: function(e) { - self.setState({ cash_out: e.target.value }) - } - }), - D.span({ className: 'sticky' }, 'x') - ); - - - return D.div(null, - D.div({ className: 'col-6-12' }, - D.div({ className: 'left-side unselect' }, - D.span({ className: 'bet-span strong' }, 'Bet'), - D.input({ - type: 'text', - name: 'bet-size', - value: self.state.bet_size, - onChange: function(e) { - self.setState({ bet_size: e.target.value }) - } - }), - D.span({ className: 'sticky' }, 'Bits') - ) - ), - D.div({ className: 'col-6-12 place-bet'}, - button, - (invalidBet ? D.div({className: 'invalid cancel'}, invalidBet) : null) - ), - cashOut - ); - }, - - getSendingBet: function() { - var cancel; - if (this.props.engine.gameState !== 'STARTING') - cancel = D.a({ onClick: this.props.engine.cancelBet.bind(this.props.engine) }, 'cancel'); - - return D.span(null, 'Sending bet...', cancel); - }, - - getBetting: function() { - var bet = this.props.engine.nextBetAmount; - var aco = this.props.engine.nextAutoCashout; - - var msg = ' with auto cash-out at ' + (aco / 100) + 'x'; - - return D.div({ className: 'cash-out' }, - D.a({className: 'big-button-disable unclick' }, - 'Betting ' + Clib.formatSatoshis(bet) + ' ' + grammarBits(bet), msg), - D.div({className: 'cancel'}, this.getSendingBet()) - ); - }, - - getCashOut: function() { - - return D.div({ className: 'cash-out' }, - D.a({className: 'big-button unclick', onClick: this.cashOut }, - 'Cash out at ', Payout({engine: this.props.engine}), ' bits' - ) - ); - }, - - getContents: function() { - if (this.props.engine.gameState === 'IN_PROGRESS' && this.props.engine.userState === 'PLAYING') { - return this.getCashOut(); - } else if (this.props.engine.nextBetAmount || // a bet is queued - (this.props.engine.gameState === 'STARTING' && this.props.engine.userState === 'PLAYING') - ) { - return this.getBetting(); - } else { // user can place a bet - return this.getBetter(); - } - }, - - toggleAutoPlay: function() { - var prev = this.state.auto_play; - if (prev) this.props.engine.cancelAutoPlay(); - this.setState({ auto_play: !prev }); - }, - - render: function() { - console.log(this.props.engine.gameState, ' -> ', this.props.engine.userState); - - var self = this; - - // If they're not logged in, let just show a login to play - if (!this.props.engine.username) - return D.div({ className: 'grid grid-pad' }, - D.div({ className: 'controls'}, - D.div({className: 'login'}, D.a({className: 'big-button unselect', href: '/login' }, 'Login to play'), - D.a({href: '/register', className: 'register'}, 'or register ') - ) - ) - ); - - //finally... the render - return D.div({ className: 'grid grid-pad ' }, - D.div({ className: 'controls'}, - D.h5({ className: 'information'}, - this.getStatusMessage() - ), - this.getContents() - ), - D.div({ className: 'game-hash'}, - 'Hash: ', - D.a({href:"/faq#fair", target: 'blank'}, this.props.engine.hash) - ), - D.div({ className: 'auto-bet' }, - D.label(null, - D.input({ - type: 'checkbox', - name: 'autoplay', - onChange: this.toggleAutoPlay, - checked: this.state.auto_play, - disabled: this.invalidBet() - }), - 'auto bet' - ) - ) - ); - } - }); - - - //Returns plural or singular, for a given amount of bits. - function grammarBits(bits) { - return bits <= 100 ? 'bit' : 'bits'; - } - } - - -); diff --git a/client/scripts/components2/countdown.js b/client/scripts/components2/countdown.js deleted file mode 100644 index b968351..0000000 --- a/client/scripts/components2/countdown.js +++ /dev/null @@ -1,37 +0,0 @@ -define(['lib/react'], function(React) { - var D = React.DOM; - - return React.createClass({ - displayName: 'Timer', - - propTypes: { - engine: React.PropTypes.object.isRequired - }, - - getInitialState: function() { - return { - countdown: 0 - } - }, - - interval: null, - - componentWillMount: function() { - this.interval = setInterval(this.update, 1000); - this.update(); - }, - - componentWillUnmount: function() { - clearInterval(this.interval); - }, - - update: function() { - var countdown = Math.ceil(this.props.engine.nextGameIn() / 1000); - this.setState({ countdown: countdown }); - }, - - render: function() { - return D.span(null, 'The game is starting in ', D.b(null, this.state.countdown), '...'); - } - }); -}); diff --git a/client/scripts/components2/game.js b/client/scripts/components2/game.js deleted file mode 100644 index 75e4fbd..0000000 --- a/client/scripts/components2/game.js +++ /dev/null @@ -1,38 +0,0 @@ -define(['lib/react', 'components2/chart', 'components2/controls', 'components2/log_chat_selector', 'components2/players', 'components2/payout'], - function(React, Chart, Controls, LogChatSelector, Players, Payout) { - var D = React.DOM; - - return React.createClass( { - displayName: 'Game', - - propTypes: { - engine: React.PropTypes.object.isRequired - }, - - render: function() { - if (!this.props.engine.isConnected) - return D.p(null, 'Connecting to server..'); - - - return D.div({ className: 'content' }, - D.div({ className: 'grid grid-pad' }, - D.div({ className: 'col-8-12 game' }, - D.div( { className: 'chart' }, - Chart({ engine: this.props.engine }) - ), - Controls({ engine: this.props.engine }) - ), - D.div({ className: 'col-4-12 tabs' }, - D.div({ className: 'players' }, - Players({ engine: this.props.engine }) - ), - D.div({ className: 'log-chat' }, - LogChatSelector({ engine: this.props.engine }) - ) - ) - ) - ) - } - }); - } -); diff --git a/client/scripts/components2/games_log.js b/client/scripts/components2/games_log.js deleted file mode 100644 index 29d76c1..0000000 --- a/client/scripts/components2/games_log.js +++ /dev/null @@ -1,74 +0,0 @@ -define(['lib/react', 'lib/clib'], function(React, Clib) { - var D = React.DOM; - - var maxGamesShowed = 10; - - return React.createClass({ - displayName: 'gamesLog', - - propTypes: { - engine: React.PropTypes.object.isRequired - }, - - gameDetails: function (gameId) { - return function () { - window.open('/game/' + gameId, '_blank'); - } - }, - - render: function () { - var self = this; - - - - var rows = self.props.engine.tableHistory.slice(0, maxGamesShowed).map(function (game, i) { - var cashed_at, bet, profit; - - var player = game.player_info[self.props.engine.username]; - if (player) { - bet = Clib.formatSatoshis(player.bet); - - if (player.stopped_at) { - profit = Clib.formatSatoshis(((player.stopped_at / 100) * player.bet) - player.bet); - cashed_at = Clib.formatSatoshis(player.stopped_at); - } else { - profit = Clib.formatSatoshis(-player.bet); - cashed_at = '-'; - } - - //If we got a bonus - if (player.bonus) - profit = profit + ' (+' + Clib.formatSatoshis(player.bonus) + ')'; - - //If we did'nt play - } else { - cashed_at = '-'; - bet = '-'; - profit = '-'; - } - - return D.tr({ key: 'game_' + i, onClick: self.gameDetails(game.game_id) }, - D.td(null, Clib.formatSatoshis(game.game_crash), D.i(null, 'x')), - D.td(null, cashed_at), - D.td(null, bet), - D.td(null, profit) - ); - }); - - return D.table({ className: 'games-log' }, - D.thead(null, - D.tr(null, - D.th(null, 'Crash'), - D.th(null, '@'), - D.th(null, 'Bet'), - D.th(null, 'Profit') - ) - ), - D.tbody(null, - rows - ) - ); - } - - }); -}); \ No newline at end of file diff --git a/client/scripts/components2/graph.js b/client/scripts/components2/graph.js deleted file mode 100644 index 983c680..0000000 --- a/client/scripts/components2/graph.js +++ /dev/null @@ -1,256 +0,0 @@ -define(['lib/clib', 'lib/lodash'], function(Clib, _) { - - function Graph(width, height) { - //Canvas settings - console.assert(width && height); - this.canvasWidth = width; - this.canvasHeight = height; - - //Plotting Settings - this.plotWidth = this.canvasWidth - 30; - this.plotHeight = this.canvasHeight - 20; //280 - this.xStart = this.canvasWidth - this.plotWidth; - this.yStart = this.canvasHeight - this.plotHeight; - this.XAxisPlotMinValue = 10000; //10 Seconds - this.YAxisSizeMultiplier = 2; //YAxis is x times - this.YAxisInitialPlotValue = "cero"; //"cero", "betSize" - }; - - Graph.prototype.resize = function(width) { - this.canvasWidth = width; - this.plotWidth = this.canvasWidth - 20; - this.xStart = this.canvasWidth - this.plotWidth; - }; - - Graph.prototype.setData = function(ctx, canvas, engine) { - this.ctx = ctx; - this.canvas = canvas; - this.engine = engine; - this.gameState = engine.gameState; - this.userState = engine.userState; - - this.cashingOut = engine.cashingOut; - //this.lastWinnings = lastWinnings; //The payout of the last game - - //this.lostConnection = lostConnection;//Changed to lag - this.lag = engine.lag; - - //this.crashedAt = crashedAt; //Text displaying the crashed ammount - //this.currentCash = currentCash; // Text displaying the current payout - - //this.playersCashedOut = playersCashedOut; //Array to render circles in the players cashout positions - - this.startTime = engine.startTime; - - if(this.gameState == 'IN_PROGRESS') { - this.lastBalance = engine.getGamePayout(); //Payout in percentage - this.currentTime = engine.getElapsedTime(); - } else { - this.lastBalance = 0; - this.currentTime = 0; - } - }; - - Graph.prototype.calculatePlotValues = function() { - - - //Plot variables - this.YAxisPlotMinValue = this.YAxisSizeMultiplier; - this.YAxisPlotValue = this.YAxisPlotMinValue; - - this.XAxisPlotValue = this.XAxisPlotMinValue; - - - //Adjust X Plot's Axis - if(this.currentTime > this.XAxisPlotMinValue) - this.XAxisPlotValue = this.currentTime; - - //Adjust Y Plot's Axis - if(this.lastBalance > this.YAxisPlotMinValue) - this.YAxisPlotValue = this.lastBalance; - - //We start counting from cero to plot - this.YAxisPlotValue-=1; - - //Graph values - this.widthIncrement = this.plotWidth / this.XAxisPlotValue; - this.heightIncrement = this.plotHeight / (this.YAxisPlotValue); - this.currentX = this.currentTime * this.widthIncrement; - }; - - Graph.prototype.clean = function() { - this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); - }; - - Graph.prototype.drawGraph = function() { - - /* Style the line depending on the game states */ - this.ctx.strokeStyle = "Black"; - //if(this.lastGameWon) { - if(this.userState === 'PLAYING'){ - this.ctx.lineWidth=6; - this.ctx.strokeStyle = '#7cba00'; - } else if(this.cashingOut) { - this.ctx.lineWidth=6; - this.ctx.strokeStyle = "Grey"; - //} else if (this.userState === 'crashing' || this.roomState === 'standby') { - // this.ctx.strokeStyle = "Red"; - // this.ctx.lineWidth=5; - } else { - this.ctx.lineWidth=4; - } - - //var greenSetted = false; - - this.ctx.beginPath(); - //this.ctx.moveTo(this.xStart, this.plotHeight - (this.betSizeAdj * this.heightIncrement)); - Clib.seed(1); - - /* Draw the graph */ - for(var t=0, i=0; t <= this.currentTime; t+= 100, i++) { - - /* Graph */ - var payout = this.engine.calcGamePayout(t)-1; //We start counting from one x - var y = this.plotHeight - (payout * this.heightIncrement); - var x = t * this.widthIncrement; - this.ctx.lineTo(x + this.xStart, y); - - /* Draw green line if last game won */ //TODO: Avoid doing the code above this if it will do this - /*var realPayout = Clib.payout(this.betSize, t); - if(this.lastGameWon && (Clib.payout(this.betSize, t) > this.lastWinnings) && !greenSetted) { - var tempStroke = this.ctx.strokeStyle; - this.ctx.strokeStyle = '#7cba00'; - this.ctx.stroke(); - - this.ctx.beginPath(); - this.ctx.lineWidth=3; - this.ctx.moveTo(x + this.xStart, y); - this.ctx.strokeStyle = tempStroke; - greenSetted = true; - }*/ - - /* Avoid crashing the explorer if the cycle is infinite */ - if(i > 5000) {console.log("For 1 too long!");break;} - } - this.ctx.stroke(); - - /* Draw little circles in the positions where users cash out */ - /*for(var i = 0, length = this.playersCashedOut.length; i < length; i++) { - payout = this.playersCashedOut[i] - var time = Clib.payoutTime(this.betSize, payout); - var payoutNoise = Clib.payoutNoise(this.betSize, time, 3); - var payoutAdj = payoutNoise - this.adjust; - - var y = this.plotHeight - (payoutAdj * this.heightIncrement); - var x = time * this.widthIncrement; - this.ctx.fillStyle = 'black'; - this.ctx.lineWidth = 1; - this.ctx.beginPath(); - this.ctx.arc(x + this.xStart, y, 5, 0, 2 * Math.PI, false); - this.ctx.fill(); - this.ctx.stroke(); - this.ctx.fillStyle = 'white'; - this.ctx.beginPath(); - this.ctx.arc(x + this.xStart, y, 3, 0, 2 * Math.PI, false); - this.ctx.fill(); - this.ctx.stroke(); - //console.log('Circle: ', x, y); - }*/ - }; - - Graph.prototype.drawAxes = function() { - - //Function to calculate the plotting values of the Axes - function stepValues(x) { - console.assert(_.isFinite(x)); - var c = .4; - var r = .1; - while (true) { - - if (x < c) return r; - - c *= 5; - r *= 2; - - if (x < c) return r; - c *= 2; - r *= 5; - } - } - - //Calculate Y Axis - this.YAxisPlotMaxValue = this.YAxisPlotMinValue; - this.payoutSeparation = stepValues(!this.lastBalance ? 1 : this.lastBalance); - - this.ctx.lineWidth=1; - this.ctx.strokeStyle = "Black"; - this.ctx.font="10px Verdana"; - this.ctx.fillStyle = 'black'; - - //Draw Y Axis Values - var heightIncrement = this.plotHeight/(this.YAxisPlotValue); - for(var payout = this.payoutSeparation, i = 0; payout < this.YAxisPlotValue; payout+= this.payoutSeparation, i++) { - var y = this.plotHeight - (payout*heightIncrement); - this.ctx.fillText((payout+1)+'x', 0, y); - - this.ctx.beginPath(); - this.ctx.moveTo(this.xStart, y); - this.ctx.lineTo(this.xStart+5, y); - this.ctx.stroke(); - - if(i > 100) { console.log("For 3 too long"); break; } - } - - //Calculate X Axis - this.milisecondsSeparation = stepValues(this.XAxisPlotValue); - this.XAxisValuesSeparation = this.plotWidth / (this.XAxisPlotValue/this.milisecondsSeparation); - - //Draw X Axis Values - for(var miliseconds = 0, counter = 0, i = 0; miliseconds < this.XAxisPlotValue; miliseconds+=this.milisecondsSeparation, counter++, i++) { - var seconds = miliseconds/1000; - var textWidth = this.ctx.measureText(seconds).width; - var x = (counter*this.XAxisValuesSeparation) + this.xStart; - this.ctx.fillText(seconds, x - textWidth/2, this.plotHeight + 11); - - if(i > 100) { console.log("For 4 too long"); break; } - } - - //Draw background Axis - this.ctx.lineWidth=1; - this.ctx.beginPath(); - this.ctx.moveTo(this.xStart, 0); - this.ctx.lineTo(this.xStart, this.canvasHeight - this.yStart); - this.ctx.lineTo(this.canvasWidth, this.canvasHeight - this.yStart); - this.ctx.stroke(); - }; - - Graph.prototype.drawGameData = function() { - - if(this.engine.gameState === 'IN_PROGRESS') { - if(this.userState === 'PLAYING') - this.ctx.fillStyle = '#7cba00'; - else - this.ctx.fillStyle = "black"; - this.ctx.font="80px Verdana"; - this.ctx.fillText(parseFloat(this.lastBalance).toFixed(2) + 'x', 150, 150); - } - - //If the engine enters in the room @ ENDED it doesnt have the crash value, so we dont display it - if(this.engine.gameState === 'ENDED' && this.engine.lastGameCrashedAt) { - this.ctx.fillStyle = "red"; - this.ctx.font="60px Verdana"; - this.ctx.fillText('Game crashed', 100, 100); - this.ctx.fillText('@ ' + Clib.formatSatoshis(this.engine.lastGameCrashedAt) + 'x', 160, 180); - } - - /*if(this.lostConnection) { - this.ctx.fillStyle = "black"; - this.ctx.font="20px Verdana"; - this.ctx.fillText(this.lostConnection, 250, 250); - }*/ - - }; - - return Graph; - -}); \ No newline at end of file diff --git a/client/scripts/components2/log_chat_selector.js b/client/scripts/components2/log_chat_selector.js deleted file mode 100644 index efe7c67..0000000 --- a/client/scripts/components2/log_chat_selector.js +++ /dev/null @@ -1,48 +0,0 @@ -define(['lib/react', 'components2/chat', 'components2/games_log'], function(React, Chat, GamesLog) { - var D = React.DOM; - - return React.createClass({ - displayName: 'logChatSelector', - - propTypes: { - engine: React.PropTypes.object.isRequired - }, - - getInitialState: function() { - return { - widget: 'gamesLog' //Widgets: chat, gamesLog - } - }, - - selectWidget: function(widget) { - var self = this; - return function() { - self.setState({ widget: widget }); - } - }, - - render: function() { - - return D.div({ className: 'log-chat-tabs-container' }, - D.ul({ className: 'chat-log-tabs unselect' }, - D.li({ - className: 'chat-log-tab ' + ((this.state.widget === 'gamesLog') ? 'tab-active' : ''), - onClick: this.selectWidget('gamesLog') - }, - D.a(null, 'History') - ), - D.li({ - className: 'chat-log-tab ' + ((this.state.widget === 'usersPlaying') ? 'tab-active' : ''), - onClick: this.selectWidget('usersPlaying') - }, - D.a(null, 'Chat') - ) - ), - D.div({ className: 'log-chat-container ' + ((this.state.widget == 'gamesLog')? 'scroll': '') }, - (this.state.widget === 'gamesLog')? GamesLog({ engine: this.props.engine }) : Chat({ engine: this.props.engine }) - ) - ); - - } - }); -}); \ No newline at end of file diff --git a/client/scripts/components2/payout.js b/client/scripts/components2/payout.js deleted file mode 100644 index d25273a..0000000 --- a/client/scripts/components2/payout.js +++ /dev/null @@ -1,41 +0,0 @@ -define(['lib/react', 'lib/clib'], function(React, Clib) { - var D = React.DOM; - - return React.createClass({ - displayName: 'payout', - - propTypes: { - engine: React.PropTypes.object.isRequired - }, - - getInitialState: function() { - return { - payout: 0 - } - }, - - componentDidMount: function() { - window.requestAnimationFrame(this.draw); - }, - - draw: function() { - if (!this.isMounted()) - return; - - var po = this.props.engine.getGamePayout(); - if (po) - this.setState({ payout: po * this.props.engine.lastBet }); - else - this.setState({ payout: null }); - - - window.requestAnimationFrame(this.draw); - }, - - render: function() { - var decimals = this.props.engine.lastBet < 10000 ? 2 : 0; - - return D.span(null, Clib.formatSatoshis(this.state.payout, decimals)); - } - }); -}); \ No newline at end of file diff --git a/client/scripts/components2/players.js b/client/scripts/components2/players.js deleted file mode 100644 index e08b6b0..0000000 --- a/client/scripts/components2/players.js +++ /dev/null @@ -1,142 +0,0 @@ -define(['lib/react', 'lib/clib', 'lib/lodash'], function(React, Clib, _) { - var D = React.DOM; - - return React.createClass({ - displayName: 'usersPlaying', - - propTypes: { - engine: React.PropTypes.object.isRequired - }, - - render: function() { - var self = this; - - var usersWonCashed = []; - var usersLostPlaying = []; - - var trUsersWonCashed; - var trUsersLostPlaying; - var trMe; - - var tHead; - var tBody; - - var containerClass; - var tableClass; - - //In progress: Users with cashed out are users chased - //Ended: Users with cashed are users Won - _.forEach(self.props.engine.playerInfo, function(value, key, collection) { - //if(key == self.props.engine.username) - // return; - if(value.stopped_at) - usersWonCashed.push({ username: key, info: value }); - else - usersLostPlaying.push({ username: key, info: value }); - }); - - var usersWonCashedSorted = _.sortBy(usersWonCashed, function(o) { - return o.info.stopped_at; - }).reverse(); - - var usersLostPlayingSorted = _.sortBy(usersLostPlaying, function(o) { - return o.info.bet; - }).reverse(); - - //Users Playing and users cahed - if(self.props.engine.gameState === 'IN_PROGRESS' || self.props.engine.gameState === 'STARTING') { - - trUsersLostPlaying = []; - for(var i=0, length = usersLostPlayingSorted.length; i < length; i++) { - - trUsersLostPlaying.push( D.tr({ className: 'user-playing', key: 'user' + i }, - D.td(null, usersLostPlayingSorted[i].username), - D.td(null, '-'), - D.td(null, Clib.formatSatoshis(usersLostPlayingSorted[i].info.bet, 0)), - D.td(null, '-') - )); - } - - trUsersWonCashed = []; - for (var i=0, length = usersWonCashedSorted.length; i < length; i++) { - var user = usersWonCashedSorted[i]; - var bet = user.info.bet; - trUsersWonCashed.push( D.tr({ className: 'user-cashed', key: 'user' + i }, - D.td(null, user.username), - D.td(null, user.info.stopped_at/100 + 'x'), - D.td(null, Clib.formatSatoshis(bet, 0)), - D.td(null, Clib.formatSatoshis(((user.info.stopped_at / 100) * bet) - bet)) - )); - } - - tBody = D.tbody({ className: '' }, - trUsersLostPlaying, - trUsersWonCashed - ); - - containerClass = 'users-playing-container'; - tableClass = 'users-playing'; - - //Users Lost and users Won - } else if(self.props.engine.gameState === 'ENDED') { - - trUsersLostPlaying = usersLostPlayingSorted.map(function(entry, i) { - var bonus = entry.info.bonus; - var profit = '-' + Clib.formatSatoshis(entry.info.bet); - - if (bonus) - profit = profit + ' (+' + Clib.formatSatoshis(bonus) + ')'; - - return D.tr({ className: 'user-lost', key: 'user' + i }, - D.td(null, entry.username), - D.td(null, '-'), - D.td(null, Clib.formatSatoshis(entry.info.bet, 0)), - D.td(null, profit) - ); - }); - - trUsersWonCashed = usersWonCashedSorted.map(function(entry, i) { - var bet = entry.info.bet; - var bonus = entry.info.bonus; - var stopped = entry.info.stopped_at; - var profit = Clib.formatSatoshis(bet * (stopped - 100) / 100); - - if (bonus) - profit = profit + ' (+' + Clib.formatSatoshis(bonus) + ')'; - - return D.tr( - { className: 'user-won', key: 'user' + i }, - D.td(null, entry.username), - D.td(null, stopped / 100, 'x'), - D.td(null, Clib.formatSatoshis(bet, 0)), - D.td(null, profit) - ); - }); - - - tBody = D.tbody({ className: '' }, - trUsersLostPlaying, - trUsersWonCashed - ); - - containerClass = 'users-cashed-container'; - tableClass = 'users-summary'; - } - - return D.div({ className: containerClass }, - D.table({ className: tableClass }, - D.thead(null, - D.tr(null, - D.th(null, 'User'), - D.th(null, '@'), - D.th(null, 'Bet'), - D.th(null, 'Profit') - ) - ), - tBody - ) - ); - } - - }); -}); \ No newline at end of file diff --git a/client/scripts/engine.js b/client/scripts/engine.js deleted file mode 100644 index ada4967..0000000 --- a/client/scripts/engine.js +++ /dev/null @@ -1,509 +0,0 @@ -define(['lib/socket.io-1.0.6', 'lib/events', 'lib/lodash'], function(io, Events, _) { - - var defaultHost = window.document.location.host === 'www.moneypot.com' ? 'https://game.moneypot.com' : window.document.location.host; - - var TICK_LAG_LAPSE = 600; - var STOP_PREDICTING_LAPSE = 300; - - //TODOS: - //Lag - - - // Engine inherits from BackBone events: - // http://backbonejs.org/#Events - // which means it has events like .on, off, .trigger, .once, .listenTo, .stopListening - function Engine() { - var self = this; - - _.extend(this, Events); - - self.ws = io(defaultHost); - - /** The engine is connected to the server, if not connected, all fields are unreadable */ - self.isConnected = false; - - /** The username or null if is not logged in */ - self.username = null; - - /** The balance of the user */ - self.balanceSatoshis = null; - - /** Array containing chat history */ - self.chat = null; - - /** Object containig the game history */ - self.tableHistory = null; - - /** Object containing the current game players and their status, this is saved in game history every game crash */ - self.playerInfo = null; - - /** - * The state of the game - * Posible states: IN_PROGRESS, ENDED, STARTING - */ - self.gameState = null; - - /** - * User state - * Posible states: 'WATCHING' || 'PLAYING' - * WATCHING: Just watching the game - * PLAYING: Bet in the current game - */ - self.userState = null; - - self.created = null; // Creation time of current game. This is the server time, not clients.. - - /** The game id of the current game */ - self.gameId = null; - - // if the game is pending, startTime is how long till it starts - // if the game is running, startTime is how long its running for - /// if the game is ended, startTime is how long since the game started - self.startTime = null; - - - /** True if you send place_bet to the server but the server has not yet responded */ - self.placingBet = false; - - self.autoPlay = false; - - /** True if cashing out.. */ - self.cashingOut = false; - - - self.nextBetAmount = null; // If a number, how much to bet next round - self.nextAutoCashout = 0; - - // Terrible prefix name, last means the 'current' game - - /** Player's Last bet in satoshis **/ - self.lastBet = null; - - self.lastGameWonAmount = null; // satoshis won in last game - self.lastGameBonus = null; // satoshis - self.lastGameCrashedAt = false; // The percentage in which the last game crashed at - self.lastBonus = null; // satoshis of the last bonus earned - - /** - * Event called at the moment when the game starts - */ - self.ws.on('game_started', function() { - - self.gameState = 'IN_PROGRESS'; - self.startTime = Date.now(); // TODO: This date will be sent by the server in the near future - self.lastGameTick = self.startTime; - - if (!self.autoPlay) { - self.nextBetAmount = null; - self.nextAutoCashout = null; - } - - self.trigger('game_started'); - }); - - /** - * Event called each 150ms telling the client the game is still alive - * @param {object} data - JSON payload - * @param {number} data.elapsed - Time elapsed since game_started - */ - self.ws.on('game_tick', function(data) { - /** Time of the last tick received */ - self.lastGameTick = Date.now(); //TODO: To use self.startTime + data.elapsed we need to have the startTime from the server - - }); - - self.ws.on('error', function(x) { - console.log('on error: ', x); - self.trigger('error', x); - }); - - /** - * Event called at game crash - * @param {object} data - JSON payload - * @param {number} data.elapsed - Total game elapsed time - * @param {number} data.game_crash - Crash payout quantity in percent eg. 200 = 2x. Use this to calculate payout! - * @param {object} data.bonuses - List of bonuses of each user, in satoshis - * @param {string} data.seed - Revealed seed of the game - */ - self.ws.on('game_crash', function(data) { - - //Add the bonus to each user that wins it - for (var user in data.bonuses) { - console.assert(self.playerInfo[user]); - self.playerInfo[user].bonus = data.bonuses[user]; - if (self.username === user) { - self.balanceSatoshis += data.bonuses[user]; - } - } - - var gameInfo = { - created: self.created, - ended: true, - game_crash: data.game_crash, - game_id: self.gameId, - hash: self.hash, - player_info: self.playerInfo, - seed: data.seed - }; - - //Add the current game info to the game history and if the game history is larger than 40 remove one element - if (self.tableHistory.length >= 40) - self.tableHistory.pop(); - self.tableHistory.unshift(gameInfo); - - //Clear current game properties - self.gameState = 'ENDED'; - self.lastGameCrashedAt = data.game_crash; - self.lastBonus = self.playerInfo[self.username] ? self.playerInfo[self.username].bonus : null; - self.userState = 'WATCHING'; - - self.trigger('game_crash'); - }); - - /** - * Event called before starting the game to let the client know when the game is going to start - * @param {object} info - JSON payload - * @param {number} info.game_id - The next game id - * @param {number} info.hash - Provably predetermined hash - * @param {number} info.time_till_start - Time lapse for the next game to begin - */ - self.ws.on('game_starting', function(info) { - - self.gameState = 'STARTING'; - self.gameId = info.game_id; - self.hash = info.hash; - self.startTime = new Date(Date.now() + info.time_till_start); - - self.lastBet = null; - self.lastGameWonAmount = null; - self.lastGameCrashedAt = null; - self.lastBonus = null; - - /** Clear the users playing object */ - self.playerInfo = {}; - - //Everytime the game starts checks if there is a queue bet and send it - if (self.nextBetAmount) { - - self.doBet(self.nextBetAmount, self.nextAutoCashout, function(err) { - console.log('Response from placing a bet: ', err); - }); - - } - - self.trigger('game_starting', info); - }); - - /** - * Event called every time a user places a bet - * the user that placed the bet could be me so we check for that - * @param {object} resp - JSON payload - * @param {string} resp.username - The player username - * @param {number} resp.bet - The player bet in satoshis - */ - self.ws.on('player_bet', function(data) { - - if (self.username === data.username) { - self.userState = 'PLAYING'; - self.balanceSatoshis -= data.bet; - self.lastBet = data.bet; - self.trigger('user_bet'); - } - - self.playerInfo[data.username] = { bet: data.bet }; - self.trigger('player_bet', data); - }); - - - - /** - * Event called every time the server cash out a user - * if we call cash out the server is going to call this event - * with our name. - * @param {object} resp - JSON payload - * @param {string} resp.username - The player username - * @param {number} resp.amount - The amount the user cashed out - * @param {number} resp.stopped_at -The percentaje at wich the user cashed out - */ - self.ws.on('cashed_out', function(resp) { - if (self.username === resp.username) { - self.lastGameWonAmount = resp.amount; - self.balanceSatoshis += resp.amount; - self.userState = 'WATCHING'; - self.trigger('user_cashed_out'); - } - - //Add the cashout percetage of each user at cash out - if (!self.playerInfo[resp.username]) - return console.warn('Username not found in playerInfo at cashed_out: ', resp.username); - - self.playerInfo[resp.username].stopped_at = resp.stopped_at; - self.playerInfo[resp.username].amount = resp.amount; - - self.trigger('cashed_out', resp); - }); - - - self.ws.on('msg', function(data) { - self.chat.push(data); - - self.trigger('msg', data); - }); - - self.ws.on('update', function() { - alert('Please refresh your browser! We just pushed a new update to the server!'); - }); - - - self.ws.on('connect', function() { - - requestOtt(function(err, ott) { - if (err) { - /* If the error is 401 means the user is not logged in - * This will be fixed in the near future - */ - if (err != 401) { - console.error('request ott error:', err); - if (confirm("An error, click to reload the page: " + err)) - location.reload(); - return; - } - } - - self.ws.emit('join', { ott: ott }, - function(err, resp) { - if (err) { - console.error('Error when joining the game...', err); - return; - } - - self.balanceSatoshis = resp.balance_satoshis; - self.chat = resp.chat; - - /** If username is a falsey value the user is not logged in */ - self.username = resp.username; - - /** Variable to check if we are connected to the server */ - self.isConnected = true; - self.gameState = resp.state; - self.playerInfo = resp.player_info; - self.userState = - self.playerInfo[self.username] && - !self.playerInfo[self.username].stopped_at - ? 'PLAYING' : 'WATCHING'; - - // set current game properties - self.gameId = resp.game_id; - self.hash = resp.hash; - self.created = resp.created; - self.startTime = new Date(Date.now() - resp.elapsed); - - self.tableHistory = resp.table_history; - - if (self.gameState == 'IN_PROGRESS') - self.lastGameTick = Date.now(); - if (self.gameState == 'ENDED') - self.lastGameCrashedAt = resp.crashed_at; - - self.trigger('connected'); - } - ); - }); - }); - - self.ws.on('disconnect', function(data) { - self.isConnected = false; - - console.log('Client disconnected |', data, '|', typeof data); - self.trigger('disconnected'); - }); - } - - /** - * Sends chat message - * @param {string} msg - String containing the message, should be longer than 1 and shorter than 500. - */ - Engine.prototype.say = function(msg) { - console.assert(msg.length > 1 && msg.length < 500); - this.ws.emit('say', msg); - }; - - /** - * Returns the remaining time fot the next game to begin - * Can only be called when the game is STARTING - * - * @return {number} - Estimated miliseconds till game starts - */ - Engine.prototype.nextGameIn = function() { - console.assert(this.gameState === 'STARTING'); - return Math.max(this.startTime - Date.now(), 0); - }; - - /** - * Places a bet with a giving amount. - * @param {number} amount - Bet amount in bits - * @param {number} autoCashOut - Percentage of self cash outf - * @param {function} callback(err, result) - */ - Engine.prototype.bet = function(amount, autoCashOut, autoPlay, callback) { - console.assert(typeof amount == 'number'); - console.assert(!autoCashOut || (typeof autoCashOut === 'number' && autoCashOut >= 101)); - - this.autoPlay = autoPlay; - this.nextBetAmount = amount; - this.nextAutoCashout = autoCashOut; - - if (this.gameState === 'STARTING') - return this.doBet(amount, autoCashOut, callback); - - - // otherwise, lets queue the bet... - callback(null, 'WILL_JOIN_NEXT'); - this.trigger('bet_queued'); - }; - - // Actually bet. Throw the bet at the server. - // autoC - Engine.prototype.doBet = function(amount, autoCashOut, callback) { - var self = this; - this.ws.emit('place_bet', amount, autoCashOut, function(error) { - - if (error) { - console.warn('place_bet error: ', error); - - if (error !== 'GAME_IN_PROGRESS' && error !== 'ALREADY_PLACED_BET') { - alert('There was an error, please reload the window: ' + error); - self.autoPlay = false; - } - - return callback(error); - } - - self.trigger('bet_placed'); - return callback(null); - }); - }; - - Engine.prototype.cancelAutoPlay = function() { - this.autoPlay = false; - }; - - /** - * Cancels a bet, if the game state is able to do it so - */ - Engine.prototype.cancelBet = function() { - this.autoPlay = false; - - if (!this.nextBetAmount) - return console.error('Can not cancel next bet, wasn\'t going to make it...'); - - this.nextBetAmount = null; - - this.trigger('cancel_bet'); - }; - - /** - * Request the server to cash out - * @param {function} callback - The callback to handle cash_out request errors - */ - Engine.prototype.cashOut = function(callback) { - var self = this; - this.cashingOut = true; - this.ws.emit('cash_out', function(error) { - self.cashingOut = false; - if (error) { - console.warn('Cashing out error: ', error); - } - - callback(error); - }); - - }; - - /** - * Returns the game payout as a percentage if game is in progress. - * - * If the last was time exceed the STOP_PREDICTING_LAPSE constant - * It returns the last game tick elpased time + the STOP_PREDICTING_LAPSE - * This will cause the graph or others to stops if there is lag. - * Only call this function if the game is 'IN_PROGRESS'. - * Use it for render, strategy, etc. - * @return {number} - */ - Engine.prototype.getGamePayout = function() { - console.assert(this.gameState === 'IN_PROGRESS'); - - if((Date.now() - this.lastGameTick) < STOP_PREDICTING_LAPSE) { - var elapsed = Date.now() - this.startTime; - } else { - var elapsed = this.lastGameTick - this.startTime + STOP_PREDICTING_LAPSE; - } - var gamePayout = growthFunc(elapsed); - console.assert(isFinite(gamePayout)); - return gamePayout; - }; - - /** - * Calculate and returns the game payout as a percentage given the elapsed time - * Use it for render, strategy, etc. - * @return {number | null} - */ - Engine.prototype.calcGamePayout = function(ms) { - return growthFunc(ms); - }; - - /** - * Returns the elapsed time of the current game - * If the game is not in progress returns null - * Use it for render, strategy, etc. - * @return {number | null} - */ - Engine.prototype.getElapsedTime = function() { - if (this.gameState === 'IN_PROGRESS') { - return Date.now() - this.startTime; - } else { - return null; - } - }; - - /** - * Function to request the one time token to the server - */ - function requestOtt(callback) { - - try { - var ajaxReq = new XMLHttpRequest(); - - if(!ajaxReq) - throw new Error("Your browser doesn't support xhr"); - - ajaxReq.open("POST", "/ott", true); - ajaxReq.setRequestHeader('Accept', 'text/plain'); - ajaxReq.send(); - - } catch(e) { - console.error(e); - alert('Requesting token error: ' + e); - location.reload(); - } - - ajaxReq.onload = function() { - if (ajaxReq.status == 200) { - var response = ajaxReq.responseText; - callback(null, response); - - } else if (ajaxReq.status == 401) { - callback(ajaxReq.status); - } else callback(ajaxReq.responseText); - } - } - - function growthFunc(ms) { - console.assert(typeof ms == 'number' && ms >= 0); - var r = 0.00006; - return Math.floor(100 * Math.pow(Math.E, r * ms)) / 100; - } - - - return Engine; -}); diff --git a/client/scripts/icarus.js b/client/scripts/icarus.js deleted file mode 100644 index 082914f..0000000 --- a/client/scripts/icarus.js +++ /dev/null @@ -1,234 +0,0 @@ -define([ - 'lib/react', - 'lib/clib' -], function(React, Clib) { - - var D = React.DOM; - - function Data() { - this.last = 0; - this.arr = []; - this.length = 25; - - for (var i = 0; i < this.length; ++i) - this.append(); - } - - Data.prototype.append = function() { - var b = Math.random() <= 0.501; - if (b) - this.last++; - else - this.last=0; - this.arr.push(this.last); - - if (this.arr.length > this.length) - this.arr.shift(); - }; - - - var Canvas = React.createClass({ - render: function() { - return D.canvas({ width: this.width, height: this.height}); - }, - - componentDidMount: function() { - this.draw(); - - var self = this; - setInterval(function() { - self.data.append(); - self.draw(); - }, 1000); - }, - - width: 400, - height: 300, - - data: new Data(), - - draw: function() { - var ctx = this.getDOMNode().getContext('2d'); - - this.drawBorder(); - }, - - - drawBorder: function() { - var ctx = this.getDOMNode().getContext('2d'); - - - ctx.fillStyle = 'black'; - ctx.strokeStyle = 'black'; - - - ctx.fillStyle = '#282828'; - ctx.fillRect(0, 0, this.width, this.height); - - - // draw the horizontal lines - ctx.lineWidth = 0.5; - ctx.fillStyle = 'white'; - ctx.strokeStyle = 'grey'; - ctx.textAlign = 'center'; - ctx.textBaseline = 'middle'; - - // draw the vertical lines - - var widthPerData = this.width / this.data.length; - - for (var i = 1; i <= this.data.length; ++i) { - ctx.beginPath(); - var x = i * widthPerData; - ctx.moveTo(x, 0); - ctx.lineTo(x, this.height); - ctx.stroke(); - } - - var levels = 20; - var perLevel = this.height / levels; - for (var i = 1; i <= levels; ++i) { - var y = this.height - perLevel * i; - ctx.fillText(i.toString(), this.width - widthPerData/2, y + perLevel/2); - ctx.beginPath(); - ctx.moveTo(0, y); - ctx.lineTo(this.width, y); - ctx.stroke(); - } - - var x = 0; - var y = this.height; - - // draw the data - - ctx.lineWidth = 5; - ctx.fillStyle = '#6699FF'; // a dark blue - - for (var i = 0; i < this.data.length; ++i) { - ctx.beginPath(); - ctx.moveTo(x, this.height); - ctx.lineTo(x, y); - - x += widthPerData; - var n = this.data.arr[i]; - var y = this.height - n * perLevel; - - ctx.quadraticCurveTo(x - widthPerData, y, x, y); - //ctx.quadraticCurveTo(x, y + perLevel, x, y); - - ctx.lineTo(x, this.height); - ctx.fill(); - } - } - }); - - var Beter = React.createClass({ - - displayName: 'Controls', - - propTypes: { - engine: React.PropTypes.object.isRequired, - tentativeFlightLevel: React.PropTypes.number.isRequired, - setTentativeFlightLevel: React.PropTypes.func.isRequired - }, - - getInitialState: function() { - return { - rewardText: 1 - }; - }, - - setRewardText: function(e) { - this.setState({ rewardText: e.target.value }); - }, - - invalidInputError: function() { - var reward = parseFloat(this.state.rewardText); - if (Number.isNaN(reward)) - return 'Invalid reward amount'; - if (reward <= 0) - return 'Reward must be positive'; - var flight = parseInt(this.props.tentativeFlightLevel); - if (Number.isNaN(flight)) - return 'Invalid flight height'; - return null; - }, - - waveCrashLoss: function() { - var reward = Math.round(parseFloat(this.state.rewardText) * 100); - console.assert(Number.isFinite(reward)); - var level = parseInt(this.props.tentativeFlightLevel); - console.assert(Number.isFinite(level)); - - - return reward * (Math.pow(2, level) - 1); - }, - - render: function () { - - var status = this.invalidInputError(); - if (!status) { - status = D.small(null, - 'You will lose ', D.strong(null, Clib.formatSatoshis(this.waveCrashLoss()), ' bits'), ' if you crash'); - } - - return D.div({ style: { padding: '10px' }}, - 'Reward: ', - D.input({ type: 'number', value: this.state.rewardText, onChange: this.setRewardText, min: 0.01, step: 0.01 }), - ' bits @ flight level: ', - D.input({ type: 'number', value: this.state.flightLevel, onChange: this.tentativeFlightLevel, min: 1, max: 20 }), - D.br(null), - status, D.br() - ); - } - }); - - var Engine = function() { - this.balance = 200; - }; - - // Given the current balance, and reward, what is the max we could bet - Engine.prototype.maxLevel = function(reward) { - return Math.floor( - Math.log((reward + this.balance) / reward) / - Math.log(2) - ); - }; - - var engine = new Engine(); - - var Window = React.createClass({ - - getInitialState: function() { - return { - tentativeFlightLevel: 4 // might also be a string.. - }; - }, - - setTentativeFlightLevel: function(flightLevel) { - this.setState({ tentativeFlightLevel: flightLevel }); - }, - - render: function() { - return D.div(null, - 'Balance: ', engine.balance, D.br(), - Canvas({ - engine: engine, - tentativeFlightLevel: this.state.tentativeFlightLevel - }), - Beter({ - engine: engine, - tentativeFlightLevel: this.state.tentativeFlightLevel, - setTentativeFlightLevel: this.setTentativeFlightLevel - }) - ); - } - }); - - - React.renderComponent( - Window(null), - document.getElementById('game') - ); - -}); \ No newline at end of file diff --git a/client/scripts/lib/almond.js b/client/scripts/lib/almond.js deleted file mode 100644 index c1cd946..0000000 --- a/client/scripts/lib/almond.js +++ /dev/null @@ -1,421 +0,0 @@ -/** - * @license almond 0.2.9 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/almond for details - */ -//Going sloppy to avoid 'use strict' string cost, but strict practices should -//be followed. -/*jslint sloppy: true */ -/*global setTimeout: false */ - -var requirejs, require, define; -(function (undef) { - var main, req, makeMap, handlers, - defined = {}, - waiting = {}, - config = {}, - defining = {}, - hasOwn = Object.prototype.hasOwnProperty, - aps = [].slice, - jsSuffixRegExp = /\.js$/; - - function hasProp(obj, prop) { - return hasOwn.call(obj, prop); - } - - /** - * Given a relative module name, like ./something, normalize it to - * a real name that can be mapped to a path. - * @param {String} name the relative name - * @param {String} baseName a real name that the name arg is relative - * to. - * @returns {String} normalized name - */ - function normalize(name, baseName) { - var nameParts, nameSegment, mapValue, foundMap, lastIndex, - foundI, foundStarMap, starI, i, j, part, - baseParts = baseName && baseName.split("/"), - map = config.map, - starMap = (map && map['*']) || {}; - - //Adjust any relative paths. - if (name && name.charAt(0) === ".") { - //If have a base name, try to normalize against it, - //otherwise, assume it is a top-level require that will - //be relative to baseUrl in the end. - if (baseName) { - //Convert baseName to array, and lop off the last part, - //so that . matches that "directory" and not name of the baseName's - //module. For instance, baseName of "one/two/three", maps to - //"one/two/three.js", but we want the directory, "one/two" for - //this normalization. - baseParts = baseParts.slice(0, baseParts.length - 1); - name = name.split('/'); - lastIndex = name.length - 1; - - // Node .js allowance: - if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) { - name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, ''); - } - - name = baseParts.concat(name); - - //start trimDots - for (i = 0; i < name.length; i += 1) { - part = name[i]; - if (part === ".") { - name.splice(i, 1); - i -= 1; - } else if (part === "..") { - if (i === 1 && (name[2] === '..' || name[0] === '..')) { - //End of the line. Keep at least one non-dot - //path segment at the front so it can be mapped - //correctly to disk. Otherwise, there is likely - //no path mapping for a path starting with '..'. - //This can still fail, but catches the most reasonable - //uses of .. - break; - } else if (i > 0) { - name.splice(i - 1, 2); - i -= 2; - } - } - } - //end trimDots - - name = name.join("/"); - } else if (name.indexOf('./') === 0) { - // No baseName, so this is ID is resolved relative - // to baseUrl, pull off the leading dot. - name = name.substring(2); - } - } - - //Apply map config if available. - if ((baseParts || starMap) && map) { - nameParts = name.split('/'); - - for (i = nameParts.length; i > 0; i -= 1) { - nameSegment = nameParts.slice(0, i).join("/"); - - if (baseParts) { - //Find the longest baseName segment match in the config. - //So, do joins on the biggest to smallest lengths of baseParts. - for (j = baseParts.length; j > 0; j -= 1) { - mapValue = map[baseParts.slice(0, j).join('/')]; - - //baseName segment has config, find if it has one for - //this name. - if (mapValue) { - mapValue = mapValue[nameSegment]; - if (mapValue) { - //Match, update name to the new value. - foundMap = mapValue; - foundI = i; - break; - } - } - } - } - - if (foundMap) { - break; - } - - //Check for a star map match, but just hold on to it, - //if there is a shorter segment match later in a matching - //config, then favor over this star map. - if (!foundStarMap && starMap && starMap[nameSegment]) { - foundStarMap = starMap[nameSegment]; - starI = i; - } - } - - if (!foundMap && foundStarMap) { - foundMap = foundStarMap; - foundI = starI; - } - - if (foundMap) { - nameParts.splice(0, foundI, foundMap); - name = nameParts.join('/'); - } - } - - return name; - } - - function makeRequire(relName, forceSync) { - return function () { - //A version of a require function that passes a moduleName - //value for items that may need to - //look up paths relative to the moduleName - return req.apply(undef, aps.call(arguments, 0).concat([relName, forceSync])); - }; - } - - function makeNormalize(relName) { - return function (name) { - return normalize(name, relName); - }; - } - - function makeLoad(depName) { - return function (value) { - defined[depName] = value; - }; - } - - function callDep(name) { - if (hasProp(waiting, name)) { - var args = waiting[name]; - delete waiting[name]; - defining[name] = true; - main.apply(undef, args); - } - - if (!hasProp(defined, name) && !hasProp(defining, name)) { - throw new Error('No ' + name); - } - return defined[name]; - } - - //Turns a plugin!resource to [plugin, resource] - //with the plugin being undefined if the name - //did not have a plugin prefix. - function splitPrefix(name) { - var prefix, - index = name ? name.indexOf('!') : -1; - if (index > -1) { - prefix = name.substring(0, index); - name = name.substring(index + 1, name.length); - } - return [prefix, name]; - } - - /** - * Makes a name map, normalizing the name, and using a plugin - * for normalization if necessary. Grabs a ref to plugin - * too, as an optimization. - */ - makeMap = function (name, relName) { - var plugin, - parts = splitPrefix(name), - prefix = parts[0]; - - name = parts[1]; - - if (prefix) { - prefix = normalize(prefix, relName); - plugin = callDep(prefix); - } - - //Normalize according - if (prefix) { - if (plugin && plugin.normalize) { - name = plugin.normalize(name, makeNormalize(relName)); - } else { - name = normalize(name, relName); - } - } else { - name = normalize(name, relName); - parts = splitPrefix(name); - prefix = parts[0]; - name = parts[1]; - if (prefix) { - plugin = callDep(prefix); - } - } - - //Using ridiculous property names for space reasons - return { - f: prefix ? prefix + '!' + name : name, //fullName - n: name, - pr: prefix, - p: plugin - }; - }; - - function makeConfig(name) { - return function () { - return (config && config.config && config.config[name]) || {}; - }; - } - - handlers = { - require: function (name) { - return makeRequire(name); - }, - exports: function (name) { - var e = defined[name]; - if (typeof e !== 'undefined') { - return e; - } else { - return (defined[name] = {}); - } - }, - module: function (name) { - return { - id: name, - uri: '', - exports: defined[name], - config: makeConfig(name) - }; - } - }; - - main = function (name, deps, callback, relName) { - var cjsModule, depName, ret, map, i, - args = [], - callbackType = typeof callback, - usingExports; - - //Use name if no relName - relName = relName || name; - - //Call the callback to define the module, if necessary. - if (callbackType === 'undefined' || callbackType === 'function') { - //Pull out the defined dependencies and pass the ordered - //values to the callback. - //Default to [require, exports, module] if no deps - deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps; - for (i = 0; i < deps.length; i += 1) { - map = makeMap(deps[i], relName); - depName = map.f; - - //Fast path CommonJS standard dependencies. - if (depName === "require") { - args[i] = handlers.require(name); - } else if (depName === "exports") { - //CommonJS module spec 1.1 - args[i] = handlers.exports(name); - usingExports = true; - } else if (depName === "module") { - //CommonJS module spec 1.1 - cjsModule = args[i] = handlers.module(name); - } else if (hasProp(defined, depName) || - hasProp(waiting, depName) || - hasProp(defining, depName)) { - args[i] = callDep(depName); - } else if (map.p) { - map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {}); - args[i] = defined[depName]; - } else { - throw new Error(name + ' missing ' + depName); - } - } - - ret = callback ? callback.apply(defined[name], args) : undefined; - - if (name) { - //If setting exports via "module" is in play, - //favor that over return value and exports. After that, - //favor a non-undefined return value over exports use. - if (cjsModule && cjsModule.exports !== undef && - cjsModule.exports !== defined[name]) { - defined[name] = cjsModule.exports; - } else if (ret !== undef || !usingExports) { - //Use the return value from the function. - defined[name] = ret; - } - } - } else if (name) { - //May just be an object definition for the module. Only - //worry about defining if have a module name. - defined[name] = callback; - } - }; - - requirejs = require = req = function (deps, callback, relName, forceSync, alt) { - if (typeof deps === "string") { - if (handlers[deps]) { - //callback in this case is really relName - return handlers[deps](callback); - } - //Just return the module wanted. In this scenario, the - //deps arg is the module name, and second arg (if passed) - //is just the relName. - //Normalize module name, if it contains . or .. - return callDep(makeMap(deps, callback).f); - } else if (!deps.splice) { - //deps is a config object, not an array. - config = deps; - if (config.deps) { - req(config.deps, config.callback); - } - if (!callback) { - return; - } - - if (callback.splice) { - //callback is an array, which means it is a dependency list. - //Adjust args if there are dependencies - deps = callback; - callback = relName; - relName = null; - } else { - deps = undef; - } - } - - //Support require(['a']) - callback = callback || function () {}; - - //If relName is a function, it is an errback handler, - //so remove it. - if (typeof relName === 'function') { - relName = forceSync; - forceSync = alt; - } - - //Simulate async callback; - if (forceSync) { - main(undef, deps, callback, relName); - } else { - //Using a non-zero value because of concern for what old browsers - //do, and latest browsers "upgrade" to 4 if lower value is used: - //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout: - //If want a value immediately, use require('id') instead -- something - //that works in almond on the global level, but not guaranteed and - //unlikely to work in other AMD implementations. - setTimeout(function () { - main(undef, deps, callback, relName); - }, 4); - } - - return req; - }; - - /** - * Just drops the config on the floor, but returns req in case - * the config return value is used. - */ - req.config = function (cfg) { - return req(cfg); - }; - - /** - * Expose module registry for debugging and tooling - */ - requirejs._defined = defined; - - define = function (name, deps, callback) { - - //This module may not have dependencies - if (!deps.splice) { - //deps is not an array, so probably means - //an object literal or factory function for - //the value. Adjust args. - callback = deps; - deps = []; - } - - if (!hasProp(defined, name) && !hasProp(waiting, name)) { - waiting[name] = [name, deps, callback]; - } - }; - - define.amd = { - jQuery: true - }; -}()); diff --git a/client/scripts/lib/chartjs.js b/client/scripts/lib/chartjs.js deleted file mode 100644 index 00575f2..0000000 --- a/client/scripts/lib/chartjs.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * Chart.js - * http://chartjs.org/ - * Version: 1.0.1-beta.3 - * - * Copyright 2014 Nick Downie - * Released under the MIT license - * https://github.com/nnnick/Chart.js/blob/master/LICENSE.md - */ -(function(){"use strict";var t=this,i=t.Chart,e=function(t){this.canvas=t.canvas,this.ctx=t;this.width=t.canvas.width,this.height=t.canvas.height;return this.aspectRatio=this.width/this.height,s.retinaScale(this),this};e.defaults={global:{animation:!0,animationSteps:60,animationEasing:"easeOutQuart",showScale:!0,scaleOverride:!1,scaleSteps:null,scaleStepWidth:null,scaleStartValue:null,scaleLineColor:"rgba(0,0,0,.1)",scaleLineWidth:1,scaleShowLabels:!0,scaleLabel:"<%=value%>",scaleIntegersOnly:!0,scaleBeginAtZero:!1,scaleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",scaleFontSize:12,scaleFontStyle:"normal",scaleFontColor:"#666",responsive:!1,maintainAspectRatio:!0,showTooltips:!0,tooltipEvents:["mousemove","touchstart","touchmove","mouseout"],tooltipFillColor:"rgba(0,0,0,0.8)",tooltipFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",tooltipFontSize:14,tooltipFontStyle:"normal",tooltipFontColor:"#fff",tooltipTitleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",tooltipTitleFontSize:14,tooltipTitleFontStyle:"bold",tooltipTitleFontColor:"#fff",tooltipYPadding:6,tooltipXPadding:6,tooltipCaretSize:8,tooltipCornerRadius:6,tooltipXOffset:10,tooltipTemplate:"<%if (label){%><%=label%>: <%}%><%= value %>",multiTooltipTemplate:"<%= value %>",multiTooltipKeyBackground:"#fff",onAnimationProgress:function(){},onAnimationComplete:function(){}}},e.types={};var s=e.helpers={},n=s.each=function(t,i,e){var s=Array.prototype.slice.call(arguments,3);if(t)if(t.length===+t.length){var n;for(n=0;ni)return i}else if(f(e)&&e>t)return e;return t},s.getDecimalPlaces=function(t){return t%1!==0&&f(t)?t.toString().split(".")[1].length:0}),x=s.radians=function(t){return t*(Math.PI/180)},S=(s.getAngleFromPoint=function(t,i){var e=i.x-t.x,s=i.y-t.y,n=Math.sqrt(e*e+s*s),o=2*Math.PI+Math.atan2(s,e);return 0>e&&0>s&&(o+=2*Math.PI),{angle:o,distance:n}},s.aliasPixel=function(t){return t%2===0?0:.5}),C=(s.splineCurve=function(t,i,e,s){var n=Math.sqrt(Math.pow(i.x-t.x,2)+Math.pow(i.y-t.y,2)),o=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2)),a=s*n/(n+o),h=s*o/(n+o);return{inner:{x:i.x-a*(e.x-t.x),y:i.y-a*(e.y-t.y)},outer:{x:i.x+h*(e.x-t.x),y:i.y+h*(e.y-t.y)}}},s.calculateOrderOfMagnitude=function(t){return Math.floor(Math.log(t)/Math.LN10)}),y=(s.calculateScaleRange=function(t,i,e,s,n){var o=2,a=Math.floor(i/(1.5*e)),h=o>=a,l=g(t),r=m(t);l===r&&(l+=.5,r>=.5&&!s?r-=.5:l+=.5);for(var c=Math.abs(l-r),u=C(c),d=Math.ceil(l/(1*Math.pow(10,u)))*Math.pow(10,u),p=s?0:Math.floor(r/(1*Math.pow(10,u)))*Math.pow(10,u),f=d-p,v=Math.pow(10,u),x=Math.round(f/v);(x>a||a>2*x)&&!h;)if(x>a)v*=2,x=Math.round(f/v),x%1!==0&&(h=!0);else if(n&&u>=0){if(v/2%1!==0)break;v/=2,x=Math.round(f/v)}else v/=2,x=Math.round(f/v);return h&&(x=o,v=f/x),{steps:x,stepValue:v,min:p,max:p+x*v}},s.template=function(t,i){function e(t,i){var e=/\W/.test(t)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+t.replace(/[\r\t\n]/g," ").split("<%").join(" ").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split(" ").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):s[t]=s[t];return i?e(i):e}if(t instanceof Function)return t(i);var s={};return e(t,i)}),b=(s.generateLabels=function(t,i,e,s){var o=new Array(i);return labelTemplateString&&n(o,function(i,n){o[n]=y(t,{value:e+s*(n+1)})}),o},s.easingEffects={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-1*t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-0.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return 1*((t=t/1-1)*t*t+1)},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-1*((t=t/1-1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-0.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return 1*(t/=1)*t*t*t*t},easeOutQuint:function(t){return 1*((t=t/1-1)*t*t*t*t+1)},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return-1*Math.cos(t/1*(Math.PI/2))+1},easeOutSine:function(t){return 1*Math.sin(t/1*(Math.PI/2))},easeInOutSine:function(t){return-0.5*(Math.cos(Math.PI*t/1)-1)},easeInExpo:function(t){return 0===t?1:1*Math.pow(2,10*(t/1-1))},easeOutExpo:function(t){return 1===t?1:1*(-Math.pow(2,-10*t/1)+1)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(-Math.pow(2,-10*--t)+2)},easeInCirc:function(t){return t>=1?t:-1*(Math.sqrt(1-(t/=1)*t)-1)},easeOutCirc:function(t){return 1*Math.sqrt(1-(t=t/1-1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-0.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var i=1.70158,e=0,s=1;return 0===t?0:1==(t/=1)?1:(e||(e=.3),st?-.5*s*Math.pow(2,10*(t-=1))*Math.sin(2*(1*t-i)*Math.PI/e):s*Math.pow(2,-10*(t-=1))*Math.sin(2*(1*t-i)*Math.PI/e)*.5+1)},easeInBack:function(t){var i=1.70158;return 1*(t/=1)*t*((i+1)*t-i)},easeOutBack:function(t){var i=1.70158;return 1*((t=t/1-1)*t*((i+1)*t+i)+1)},easeInOutBack:function(t){var i=1.70158;return(t/=.5)<1?.5*t*t*(((i*=1.525)+1)*t-i):.5*((t-=2)*t*(((i*=1.525)+1)*t+i)+2)},easeInBounce:function(t){return 1-b.easeOutBounce(1-t)},easeOutBounce:function(t){return(t/=1)<1/2.75?7.5625*t*t:2/2.75>t?1*(7.5625*(t-=1.5/2.75)*t+.75):2.5/2.75>t?1*(7.5625*(t-=2.25/2.75)*t+.9375):1*(7.5625*(t-=2.625/2.75)*t+.984375)},easeInOutBounce:function(t){return.5>t?.5*b.easeInBounce(2*t):.5*b.easeOutBounce(2*t-1)+.5}}),w=s.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)}}(),P=(s.cancelAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.oCancelAnimationFrame||window.msCancelAnimationFrame||function(t){return window.clearTimeout(t,1e3/60)}}(),s.animationLoop=function(t,i,e,s,n,o){var a=0,h=b[e]||b.linear,l=function(){a++;var e=a/i,r=h(e);t.call(o,r,e,a),s.call(o,r,e),i>a?o.animationFrame=w(l):n.apply(o)};w(l)},s.getRelativePosition=function(t){var i,e,s=t.originalEvent||t,n=t.currentTarget||t.srcElement,o=n.getBoundingClientRect();return s.touches?(i=s.touches[0].clientX-o.left,e=s.touches[0].clientY-o.top):(i=s.clientX-o.left,e=s.clientY-o.top),{x:i,y:e}},s.addEvent=function(t,i,e){t.addEventListener?t.addEventListener(i,e):t.attachEvent?t.attachEvent("on"+i,e):t["on"+i]=e}),L=s.removeEvent=function(t,i,e){t.removeEventListener?t.removeEventListener(i,e,!1):t.detachEvent?t.detachEvent("on"+i,e):t["on"+i]=c},k=(s.bindEvents=function(t,i,e){t.events||(t.events={}),n(i,function(i){t.events[i]=function(){e.apply(t,arguments)},P(t.chart.canvas,i,t.events[i])})},s.unbindEvents=function(t,i){n(i,function(i,e){L(t.chart.canvas,e,i)})}),F=s.getMaximumWidth=function(t){var i=t.parentNode;return i.clientWidth},R=s.getMaximumHeight=function(t){var i=t.parentNode;return i.clientHeight},A=(s.getMaximumSize=s.getMaximumWidth,s.retinaScale=function(t){var i=t.ctx,e=t.canvas.width,s=t.canvas.height;window.devicePixelRatio&&(i.canvas.style.width=e+"px",i.canvas.style.height=s+"px",i.canvas.height=s*window.devicePixelRatio,i.canvas.width=e*window.devicePixelRatio,i.scale(window.devicePixelRatio,window.devicePixelRatio))}),T=s.clear=function(t){t.ctx.clearRect(0,0,t.width,t.height)},M=s.fontString=function(t,i,e){return i+" "+t+"px "+e},W=s.longestText=function(t,i,e){t.font=i;var s=0;return n(e,function(i){var e=t.measureText(i).width;s=e>s?e:s}),s},z=s.drawRoundedRectangle=function(t,i,e,s,n,o){t.beginPath(),t.moveTo(i+o,e),t.lineTo(i+s-o,e),t.quadraticCurveTo(i+s,e,i+s,e+o),t.lineTo(i+s,e+n-o),t.quadraticCurveTo(i+s,e+n,i+s-o,e+n),t.lineTo(i+o,e+n),t.quadraticCurveTo(i,e+n,i,e+n-o),t.lineTo(i,e+o),t.quadraticCurveTo(i,e,i+o,e),t.closePath()};e.instances={},e.Type=function(t,i,s){this.options=i,this.chart=s,this.id=u(),e.instances[this.id]=this,i.responsive&&this.resize(),this.initialize.call(this,t)},a(e.Type.prototype,{initialize:function(){return this},clear:function(){return T(this.chart),this},stop:function(){return s.cancelAnimFrame.call(t,this.animationFrame),this},resize:function(t){this.stop();var i=this.chart.canvas,e=F(this.chart.canvas),s=this.options.maintainAspectRatio?e/this.chart.aspectRatio:R(this.chart.canvas);return i.width=this.chart.width=e,i.height=this.chart.height=s,A(this.chart),"function"==typeof t&&t.apply(this,Array.prototype.slice.call(arguments,1)),this},reflow:c,render:function(t){return t&&this.reflow(),this.options.animation&&!t?s.animationLoop(this.draw,this.options.animationSteps,this.options.animationEasing,this.options.onAnimationProgress,this.options.onAnimationComplete,this):(this.draw(),this.options.onAnimationComplete.call(this)),this},generateLegend:function(){return y(this.options.legendTemplate,this)},destroy:function(){this.clear(),k(this,this.events),delete e.instances[this.id]},showTooltip:function(t,i){"undefined"==typeof this.activeElements&&(this.activeElements=[]);var o=function(t){var i=!1;return t.length!==this.activeElements.length?i=!0:(n(t,function(t,e){t!==this.activeElements[e]&&(i=!0)},this),i)}.call(this,t);if(o||i){if(this.activeElements=t,this.draw(),t.length>0)if(this.datasets&&this.datasets.length>1){for(var a,h,r=this.datasets.length-1;r>=0&&(a=this.datasets[r].points||this.datasets[r].bars||this.datasets[r].segments,h=l(a,t[0]),-1===h);r--);var c=[],u=[],d=function(){var t,i,e,n,o,a=[],l=[],r=[];return s.each(this.datasets,function(i){t=i.points||i.bars||i.segments,t[h]&&a.push(t[h])}),s.each(a,function(t){l.push(t.x),r.push(t.y),c.push(s.template(this.options.multiTooltipTemplate,t)),u.push({fill:t._saved.fillColor||t.fillColor,stroke:t._saved.strokeColor||t.strokeColor})},this),o=m(r),e=g(r),n=m(l),i=g(l),{x:n>this.chart.width/2?n:i,y:(o+e)/2}}.call(this,h);new e.MultiTooltip({x:d.x,y:d.y,xPadding:this.options.tooltipXPadding,yPadding:this.options.tooltipYPadding,xOffset:this.options.tooltipXOffset,fillColor:this.options.tooltipFillColor,textColor:this.options.tooltipFontColor,fontFamily:this.options.tooltipFontFamily,fontStyle:this.options.tooltipFontStyle,fontSize:this.options.tooltipFontSize,titleTextColor:this.options.tooltipTitleFontColor,titleFontFamily:this.options.tooltipTitleFontFamily,titleFontStyle:this.options.tooltipTitleFontStyle,titleFontSize:this.options.tooltipTitleFontSize,cornerRadius:this.options.tooltipCornerRadius,labels:c,legendColors:u,legendColorBackground:this.options.multiTooltipKeyBackground,title:t[0].label,chart:this.chart,ctx:this.chart.ctx}).draw()}else n(t,function(t){var i=t.tooltipPosition();new e.Tooltip({x:Math.round(i.x),y:Math.round(i.y),xPadding:this.options.tooltipXPadding,yPadding:this.options.tooltipYPadding,fillColor:this.options.tooltipFillColor,textColor:this.options.tooltipFontColor,fontFamily:this.options.tooltipFontFamily,fontStyle:this.options.tooltipFontStyle,fontSize:this.options.tooltipFontSize,caretHeight:this.options.tooltipCaretSize,cornerRadius:this.options.tooltipCornerRadius,text:y(this.options.tooltipTemplate,t),chart:this.chart}).draw()},this);return this}},toBase64Image:function(){return this.chart.canvas.toDataURL.apply(this.chart.canvas,arguments)}}),e.Type.extend=function(t){var i=this,s=function(){return i.apply(this,arguments)};if(s.prototype=o(i.prototype),a(s.prototype,t),s.extend=e.Type.extend,t.name||i.prototype.name){var n=t.name||i.prototype.name,l=e.defaults[i.prototype.name]?o(e.defaults[i.prototype.name]):{};e.defaults[n]=a(l,t.defaults),e.types[n]=s,e.prototype[n]=function(t,i){var o=h(e.defaults.global,e.defaults[n],i||{});return new s(t,o,this)}}else d("Name not provided for this chart, so it hasn't been registered");return i},e.Element=function(t){a(this,t),this.initialize.apply(this,arguments),this.save()},a(e.Element.prototype,{initialize:function(){},restore:function(t){return t?n(t,function(t){this[t]=this._saved[t]},this):a(this,this._saved),this},save:function(){return this._saved=o(this),delete this._saved._saved,this},update:function(t){return n(t,function(t,i){this._saved[i]=this[i],this[i]=t},this),this},transition:function(t,i){return n(t,function(t,e){this[e]=(t-this._saved[e])*i+this._saved[e]},this),this},tooltipPosition:function(){return{x:this.x,y:this.y}}}),e.Element.extend=r,e.Point=e.Element.extend({display:!0,inRange:function(t,i){var e=this.hitDetectionRadius+this.radius;return Math.pow(t-this.x,2)+Math.pow(i-this.y,2)=this.startAngle&&e.angle<=this.endAngle,o=e.distance>=this.innerRadius&&e.distance<=this.outerRadius;return n&&o},tooltipPosition:function(){var t=this.startAngle+(this.endAngle-this.startAngle)/2,i=(this.outerRadius-this.innerRadius)/2+this.innerRadius;return{x:this.x+Math.cos(t)*i,y:this.y+Math.sin(t)*i}},draw:function(t){var i=this.ctx;i.beginPath(),i.arc(this.x,this.y,this.outerRadius,this.startAngle,this.endAngle),i.arc(this.x,this.y,this.innerRadius,this.endAngle,this.startAngle,!0),i.closePath(),i.strokeStyle=this.strokeColor,i.lineWidth=this.strokeWidth,i.fillStyle=this.fillColor,i.fill(),i.lineJoin="bevel",this.showStroke&&i.stroke()}}),e.Rectangle=e.Element.extend({draw:function(){var t=this.ctx,i=this.width/2,e=this.x-i,s=this.x+i,n=this.base-(this.base-this.y),o=this.strokeWidth/2;this.showStroke&&(e+=o,s-=o,n+=o),t.beginPath(),t.fillStyle=this.fillColor,t.strokeStyle=this.strokeColor,t.lineWidth=this.strokeWidth,t.moveTo(e,this.base),t.lineTo(e,n),t.lineTo(s,n),t.lineTo(s,this.base),t.fill(),this.showStroke&&t.stroke()},height:function(){return this.base-this.y},inRange:function(t,i){return t>=this.x-this.width/2&&t<=this.x+this.width/2&&i>=this.y&&i<=this.base}}),e.Tooltip=e.Element.extend({draw:function(){var t=this.chart.ctx;t.font=M(this.fontSize,this.fontStyle,this.fontFamily),this.xAlign="center",this.yAlign="above";var i=2,e=t.measureText(this.text).width+2*this.xPadding,s=this.fontSize+2*this.yPadding,n=s+this.caretHeight+i;this.x+e/2>this.chart.width?this.xAlign="left":this.x-e/2<0&&(this.xAlign="right"),this.y-n<0&&(this.yAlign="below");var o=this.x-e/2,a=this.y-n;switch(t.fillStyle=this.fillColor,this.yAlign){case"above":t.beginPath(),t.moveTo(this.x,this.y-i),t.lineTo(this.x+this.caretHeight,this.y-(i+this.caretHeight)),t.lineTo(this.x-this.caretHeight,this.y-(i+this.caretHeight)),t.closePath(),t.fill();break;case"below":a=this.y+i+this.caretHeight,t.beginPath(),t.moveTo(this.x,this.y+i),t.lineTo(this.x+this.caretHeight,this.y+i+this.caretHeight),t.lineTo(this.x-this.caretHeight,this.y+i+this.caretHeight),t.closePath(),t.fill()}switch(this.xAlign){case"left":o=this.x-e+(this.cornerRadius+this.caretHeight);break;case"right":o=this.x-(this.cornerRadius+this.caretHeight)}z(t,o,a,e,s,this.cornerRadius),t.fill(),t.fillStyle=this.textColor,t.textAlign="center",t.textBaseline="middle",t.fillText(this.text,o+e/2,a+s/2)}}),e.MultiTooltip=e.Element.extend({initialize:function(){this.font=M(this.fontSize,this.fontStyle,this.fontFamily),this.titleFont=M(this.titleFontSize,this.titleFontStyle,this.titleFontFamily),this.height=this.labels.length*this.fontSize+(this.labels.length-1)*(this.fontSize/2)+2*this.yPadding+1.5*this.titleFontSize,this.ctx.font=this.titleFont;var t=this.ctx.measureText(this.title).width,i=W(this.ctx,this.font,this.labels)+this.fontSize+3,e=g([i,t]);this.width=e+2*this.xPadding;var s=this.height/2;this.y-s<0?this.y=s:this.y+s>this.chart.height&&(this.y=this.chart.height-s),this.x>this.chart.width/2?this.x-=this.xOffset+this.width:this.x+=this.xOffset},getLineHeight:function(t){var i=this.y-this.height/2+this.yPadding,e=t-1;return 0===t?i+this.titleFontSize/2:i+(1.5*this.fontSize*e+this.fontSize/2)+1.5*this.titleFontSize},draw:function(){z(this.ctx,this.x,this.y-this.height/2,this.width,this.height,this.cornerRadius);var t=this.ctx;t.fillStyle=this.fillColor,t.fill(),t.closePath(),t.textAlign="left",t.textBaseline="middle",t.fillStyle=this.titleTextColor,t.font=this.titleFont,t.fillText(this.title,this.x+this.xPadding,this.getLineHeight(0)),t.font=this.font,s.each(this.labels,function(i,e){t.fillStyle=this.textColor,t.fillText(i,this.x+this.xPadding+this.fontSize+3,this.getLineHeight(e+1)),t.fillStyle=this.legendColorBackground,t.fillRect(this.x+this.xPadding,this.getLineHeight(e+1)-this.fontSize/2,this.fontSize,this.fontSize),t.fillStyle=this.legendColors[e].fill,t.fillRect(this.x+this.xPadding,this.getLineHeight(e+1)-this.fontSize/2,this.fontSize,this.fontSize)},this)}}),e.Scale=e.Element.extend({initialize:function(){this.fit()},buildYLabels:function(){this.yLabels=[];for(var t=v(this.stepValue),i=0;i<=this.steps;i++)this.yLabels.push(y(this.templateString,{value:(this.min+i*this.stepValue).toFixed(t)}));this.yLabelWidth=this.display&&this.showLabels?W(this.ctx,this.font,this.yLabels):0},addXLabel:function(t){this.xLabels.push(t),this.valuesCount++,this.fit()},removeXLabel:function(){this.xLabels.shift(),this.valuesCount--,this.fit()},fit:function(){this.startPoint=this.display?this.fontSize:0,this.endPoint=this.display?this.height-1.5*this.fontSize-5:this.height,this.startPoint+=this.padding,this.endPoint-=this.padding;var t,i=this.endPoint-this.startPoint;for(this.calculateYRange(i),this.buildYLabels(),this.calculateXLabelRotation();i>this.endPoint-this.startPoint;)i=this.endPoint-this.startPoint,t=this.yLabelWidth,this.calculateYRange(i),this.buildYLabels(),tthis.yLabelWidth+10?e/2:this.yLabelWidth+10,this.xLabelRotation=0,this.display){var n,o=W(this.ctx,this.font,this.xLabels);this.xLabelWidth=o;for(var a=Math.floor(this.calculateX(1)-this.calculateX(0))-6;this.xLabelWidth>a&&0===this.xLabelRotation||this.xLabelWidth>a&&this.xLabelRotation<=90&&this.xLabelRotation>0;)n=Math.cos(x(this.xLabelRotation)),t=n*e,i=n*s,t+this.fontSize/2>this.yLabelWidth+8&&(this.xScalePaddingLeft=t+this.fontSize/2),this.xScalePaddingRight=this.fontSize/2,this.xLabelRotation++,this.xLabelWidth=n*o;this.xLabelRotation>0&&(this.endPoint-=Math.sin(x(this.xLabelRotation))*o+3)}else this.xLabelWidth=0,this.xScalePaddingRight=this.padding,this.xScalePaddingLeft=this.padding},calculateYRange:c,drawingArea:function(){return this.startPoint-this.endPoint},calculateY:function(t){var i=this.drawingArea()/(this.min-this.max);return this.endPoint-i*(t-this.min)},calculateX:function(t){var i=(this.xLabelRotation>0,this.width-(this.xScalePaddingLeft+this.xScalePaddingRight)),e=i/(this.valuesCount-(this.offsetGridLines?0:1)),s=e*t+this.xScalePaddingLeft;return this.offsetGridLines&&(s+=e/2),Math.round(s)},update:function(t){s.extend(this,t),this.fit()},draw:function(){var t=this.ctx,i=(this.endPoint-this.startPoint)/this.steps,e=Math.round(this.xScalePaddingLeft);this.display&&(t.fillStyle=this.textColor,t.font=this.font,n(this.yLabels,function(n,o){var a=this.endPoint-i*o,h=Math.round(a);t.textAlign="right",t.textBaseline="middle",this.showLabels&&t.fillText(n,e-10,a),t.beginPath(),o>0?(t.lineWidth=this.gridLineWidth,t.strokeStyle=this.gridLineColor):(t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor),h+=s.aliasPixel(t.lineWidth),t.moveTo(e,h),t.lineTo(this.width,h),t.stroke(),t.closePath(),t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor,t.beginPath(),t.moveTo(e-5,h),t.lineTo(e,h),t.stroke(),t.closePath()},this),n(this.xLabels,function(i,e){var s=this.calculateX(e)+S(this.lineWidth),n=this.calculateX(e-(this.offsetGridLines?.5:0))+S(this.lineWidth),o=this.xLabelRotation>0;t.beginPath(),e>0?(t.lineWidth=this.gridLineWidth,t.strokeStyle=this.gridLineColor):(t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor),t.moveTo(n,this.endPoint),t.lineTo(n,this.startPoint-3),t.stroke(),t.closePath(),t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor,t.beginPath(),t.moveTo(n,this.endPoint),t.lineTo(n,this.endPoint+5),t.stroke(),t.closePath(),t.save(),t.translate(s,o?this.endPoint+12:this.endPoint+8),t.rotate(-1*x(this.xLabelRotation)),t.font=this.font,t.textAlign=o?"right":"center",t.textBaseline=o?"middle":"top",t.fillText(i,0,0),t.restore()},this))}}),e.RadialScale=e.Element.extend({initialize:function(){this.size=m([this.height,this.width]),this.drawingArea=this.display?this.size/2-(this.fontSize/2+this.backdropPaddingY):this.size/2},calculateCenterOffset:function(t){var i=this.drawingArea/(this.max-this.min);return(t-this.min)*i},update:function(){this.lineArc?this.drawingArea=this.display?this.size/2-(this.fontSize/2+this.backdropPaddingY):this.size/2:this.setScaleSize(),this.buildYLabels()},buildYLabels:function(){this.yLabels=[];for(var t=v(this.stepValue),i=0;i<=this.steps;i++)this.yLabels.push(y(this.templateString,{value:(this.min+i*this.stepValue).toFixed(t)}))},getCircumference:function(){return 2*Math.PI/this.valuesCount},setScaleSize:function(){var t,i,e,s,n,o,a,h,l,r,c,u,d=m([this.height/2-this.pointLabelFontSize-5,this.width/2]),p=this.width,g=0;for(this.ctx.font=M(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily),i=0;ip&&(p=t.x+s,n=i),t.x-sp&&(p=t.x+e,n=i):i>this.valuesCount/2&&t.x-e0){var s,n=e*(this.drawingArea/this.steps),o=this.yCenter-n;if(this.lineWidth>0)if(t.strokeStyle=this.lineColor,t.lineWidth=this.lineWidth,this.lineArc)t.beginPath(),t.arc(this.xCenter,this.yCenter,n,0,2*Math.PI),t.closePath(),t.stroke();else{t.beginPath();for(var a=0;a=0;i--){if(this.angleLineWidth>0){var e=this.getPointPosition(i,this.calculateCenterOffset(this.max));t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(e.x,e.y),t.stroke(),t.closePath()}var s=this.getPointPosition(i,this.calculateCenterOffset(this.max)+5);t.font=M(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily),t.fillStyle=this.pointLabelFontColor;var o=this.labels.length,a=this.labels.length/2,h=a/2,l=h>i||i>o-h,r=i===h||i===o-h;t.textAlign=0===i?"center":i===a?"center":a>i?"left":"right",t.textBaseline=r?"middle":l?"bottom":"top",t.fillText(this.labels[i],s.x,s.y)}}}}}),s.addEvent(window,"resize",function(){var t;return function(){clearTimeout(t),t=setTimeout(function(){n(e.instances,function(t){t.options.responsive&&t.resize(t.render,!0)})},50)}}()),p?define(function(){return e}):"object"==typeof module&&module.exports&&(module.exports=e),t.Chart=e,e.noConflict=function(){return t.Chart=i,e}}).call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={scaleBeginAtZero:!0,scaleShowGridLines:!0,scaleGridLineColor:"rgba(0,0,0,.05)",scaleGridLineWidth:1,barShowStroke:!0,barStrokeWidth:2,barValueSpacing:5,barDatasetSpacing:1,legendTemplate:'
    <% for (var i=0; i
  • <%if(datasets[i].label){%><%=datasets[i].label%><%}%>
  • <%}%>
'};i.Type.extend({name:"Bar",defaults:s,initialize:function(t){var s=this.options;this.ScaleClass=i.Scale.extend({offsetGridLines:!0,calculateBarX:function(t,i,e){var n=this.calculateBaseWidth(),o=this.calculateX(e)-n/2,a=this.calculateBarWidth(t);return o+a*i+i*s.barDatasetSpacing+a/2},calculateBaseWidth:function(){return this.calculateX(1)-this.calculateX(0)-2*s.barValueSpacing},calculateBarWidth:function(t){var i=this.calculateBaseWidth()-(t-1)*s.barDatasetSpacing;return i/t}}),this.datasets=[],this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getBarsAtEvent(t):[];this.eachBars(function(t){t.restore(["fillColor","strokeColor"])}),e.each(i,function(t){t.fillColor=t.highlightFill,t.strokeColor=t.highlightStroke}),this.showTooltip(i)}),this.BarClass=i.Rectangle.extend({strokeWidth:this.options.barStrokeWidth,showStroke:this.options.barShowStroke,ctx:this.chart.ctx}),e.each(t.datasets,function(i){var s={label:i.label||null,fillColor:i.fillColor,strokeColor:i.strokeColor,bars:[]};this.datasets.push(s),e.each(i.data,function(n,o){e.isNumber(n)&&s.bars.push(new this.BarClass({value:n,label:t.labels[o],datasetLabel:i.label,strokeColor:i.strokeColor,fillColor:i.fillColor,highlightFill:i.highlightFill||i.fillColor,highlightStroke:i.highlightStroke||i.strokeColor}))},this)},this),this.buildScale(t.labels),this.BarClass.prototype.base=this.scale.endPoint,this.eachBars(function(t,i,s){e.extend(t,{width:this.scale.calculateBarWidth(this.datasets.length),x:this.scale.calculateBarX(this.datasets.length,s,i),y:this.scale.endPoint}),t.save()},this),this.render()},update:function(){this.scale.update(),e.each(this.activeElements,function(t){t.restore(["fillColor","strokeColor"])}),this.eachBars(function(t){t.save()}),this.render()},eachBars:function(t){e.each(this.datasets,function(i,s){e.each(i.bars,t,this,s)},this)},getBarsAtEvent:function(t){for(var i,s=[],n=e.getRelativePosition(t),o=function(t){s.push(t.bars[i])},a=0;a<% for (var i=0; i
  • <%if(segments[i].label){%><%=segments[i].label%><%}%>
  • <%}%>'};i.Type.extend({name:"Doughnut",defaults:s,initialize:function(t){this.segments=[],this.outerRadius=(e.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2,this.SegmentArc=i.Arc.extend({ctx:this.chart.ctx,x:this.chart.width/2,y:this.chart.height/2}),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getSegmentsAtEvent(t):[]; - e.each(this.segments,function(t){t.restore(["fillColor"])}),e.each(i,function(t){t.fillColor=t.highlightColor}),this.showTooltip(i)}),this.calculateTotal(t),e.each(t,function(t,i){this.addData(t,i,!0)},this),this.render()},getSegmentsAtEvent:function(t){var i=[],s=e.getRelativePosition(t);return e.each(this.segments,function(t){t.inRange(s.x,s.y)&&i.push(t)},this),i},addData:function(t,i,e){var s=i||this.segments.length;this.segments.splice(s,0,new this.SegmentArc({value:t.value,outerRadius:this.options.animateScale?0:this.outerRadius,innerRadius:this.options.animateScale?0:this.outerRadius/100*this.options.percentageInnerCutout,fillColor:t.color,highlightColor:t.highlight||t.color,showStroke:this.options.segmentShowStroke,strokeWidth:this.options.segmentStrokeWidth,strokeColor:this.options.segmentStrokeColor,startAngle:1.5*Math.PI,circumference:this.options.animateRotate?0:this.calculateCircumference(t.value),label:t.label})),e||(this.reflow(),this.update())},calculateCircumference:function(t){return 2*Math.PI*(t/this.total)},calculateTotal:function(t){this.total=0,e.each(t,function(t){this.total+=t.value},this)},update:function(){this.calculateTotal(this.segments),e.each(this.activeElements,function(t){t.restore(["fillColor"])}),e.each(this.segments,function(t){t.save()}),this.render()},removeData:function(t){var i=e.isNumber(t)?t:this.segments.length-1;this.segments.splice(i,1),this.reflow(),this.update()},reflow:function(){e.extend(this.SegmentArc.prototype,{x:this.chart.width/2,y:this.chart.height/2}),this.outerRadius=(e.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2,e.each(this.segments,function(t){t.update({outerRadius:this.outerRadius,innerRadius:this.outerRadius/100*this.options.percentageInnerCutout})},this)},draw:function(t){var i=t?t:1;this.clear(),e.each(this.segments,function(t,e){t.transition({circumference:this.calculateCircumference(t.value),outerRadius:this.outerRadius,innerRadius:this.outerRadius/100*this.options.percentageInnerCutout},i),t.endAngle=t.startAngle+t.circumference,t.draw(),0===e&&(t.startAngle=1.5*Math.PI),e<% for (var i=0; i
  • <%if(datasets[i].label){%><%=datasets[i].label%><%}%>
  • <%}%>'};i.Type.extend({name:"Line",defaults:s,initialize:function(t){this.PointClass=i.Point.extend({strokeWidth:this.options.pointDotStrokeWidth,radius:this.options.pointDotRadius,display:this.options.pointDot,hitDetectionRadius:this.options.pointHitDetectionRadius,ctx:this.chart.ctx,inRange:function(t){return Math.pow(t-this.x,2)=t.points.length-1?e.splineCurve(t.points[s-1],i,i,0):e.splineCurve(t.points[s-1],i,t.points[s+1],this.options.bezierCurveTension)},this),s.lineWidth=this.options.datasetStrokeWidth,s.strokeStyle=t.strokeColor,s.beginPath(),e.each(t.points,function(i,e){e>0?this.options.bezierCurve?s.bezierCurveTo(t.points[e-1].controlPoints.outer.x,t.points[e-1].controlPoints.outer.y,i.controlPoints.inner.x,i.controlPoints.inner.y,i.x,i.y):s.lineTo(i.x,i.y):s.moveTo(i.x,i.y)},this),s.stroke(),this.options.datasetFill&&(s.lineTo(t.points[t.points.length-1].x,this.scale.endPoint),s.lineTo(this.scale.calculateX(0),this.scale.endPoint),s.fillStyle=t.fillColor,s.closePath(),s.fill()),e.each(t.points,function(t){t.draw()})},this)}})}.call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={scaleShowLabelBackdrop:!0,scaleBackdropColor:"rgba(255,255,255,0.75)",scaleBeginAtZero:!0,scaleBackdropPaddingY:2,scaleBackdropPaddingX:2,scaleShowLine:!0,segmentShowStroke:!0,segmentStrokeColor:"#fff",segmentStrokeWidth:2,animationSteps:100,animationEasing:"easeOutBounce",animateRotate:!0,animateScale:!1,legendTemplate:'
      <% for (var i=0; i
    • <%if(segments[i].label){%><%=segments[i].label%><%}%>
    • <%}%>
    '};i.Type.extend({name:"PolarArea",defaults:s,initialize:function(t){this.segments=[],this.SegmentArc=i.Arc.extend({showStroke:this.options.segmentShowStroke,strokeWidth:this.options.segmentStrokeWidth,strokeColor:this.options.segmentStrokeColor,ctx:this.chart.ctx,innerRadius:0,x:this.chart.width/2,y:this.chart.height/2}),this.scale=new i.RadialScale({display:this.options.showScale,fontStyle:this.options.scaleFontStyle,fontSize:this.options.scaleFontSize,fontFamily:this.options.scaleFontFamily,fontColor:this.options.scaleFontColor,showLabels:this.options.scaleShowLabels,showLabelBackdrop:this.options.scaleShowLabelBackdrop,backdropColor:this.options.scaleBackdropColor,backdropPaddingY:this.options.scaleBackdropPaddingY,backdropPaddingX:this.options.scaleBackdropPaddingX,lineWidth:this.options.scaleShowLine?this.options.scaleLineWidth:0,lineColor:this.options.scaleLineColor,lineArc:!0,width:this.chart.width,height:this.chart.height,xCenter:this.chart.width/2,yCenter:this.chart.height/2,ctx:this.chart.ctx,templateString:this.options.scaleLabel,valuesCount:t.length}),this.updateScaleRange(t),this.scale.update(),e.each(t,function(t,i){this.addData(t,i,!0)},this),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getSegmentsAtEvent(t):[];e.each(this.segments,function(t){t.restore(["fillColor"])}),e.each(i,function(t){t.fillColor=t.highlightColor}),this.showTooltip(i)}),this.render()},getSegmentsAtEvent:function(t){var i=[],s=e.getRelativePosition(t);return e.each(this.segments,function(t){t.inRange(s.x,s.y)&&i.push(t)},this),i},addData:function(t,i,e){var s=i||this.segments.length;this.segments.splice(s,0,new this.SegmentArc({fillColor:t.color,highlightColor:t.highlight||t.color,label:t.label,value:t.value,outerRadius:this.options.animateScale?0:this.scale.calculateCenterOffset(t.value),circumference:this.options.animateRotate?0:this.scale.getCircumference(),startAngle:1.5*Math.PI})),e||(this.reflow(),this.update())},removeData:function(t){var i=e.isNumber(t)?t:this.segments.length-1;this.segments.splice(i,1),this.reflow(),this.update()},calculateTotal:function(t){this.total=0,e.each(t,function(t){this.total+=t.value},this),this.scale.valuesCount=this.segments.length},updateScaleRange:function(t){var i=[];e.each(t,function(t){i.push(t.value)});var s=this.options.scaleOverride?{steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}:e.calculateScaleRange(i,e.min([this.chart.width,this.chart.height])/2,this.options.scaleFontSize,this.options.scaleBeginAtZero,this.options.scaleIntegersOnly);e.extend(this.scale,s,{size:e.min([this.chart.width,this.chart.height]),xCenter:this.chart.width/2,yCenter:this.chart.height/2})},update:function(){this.calculateTotal(this.segments),e.each(this.segments,function(t){t.save()}),this.render()},reflow:function(){e.extend(this.SegmentArc.prototype,{x:this.chart.width/2,y:this.chart.height/2}),this.updateScaleRange(this.segments),this.scale.update(),e.extend(this.scale,{xCenter:this.chart.width/2,yCenter:this.chart.height/2}),e.each(this.segments,function(t){t.update({outerRadius:this.scale.calculateCenterOffset(t.value)})},this)},draw:function(t){var i=t||1;this.clear(),e.each(this.segments,function(t,e){t.transition({circumference:this.scale.getCircumference(),outerRadius:this.scale.calculateCenterOffset(t.value)},i),t.endAngle=t.startAngle+t.circumference,0===e&&(t.startAngle=1.5*Math.PI),e<% for (var i=0; i
  • <%if(datasets[i].label){%><%=datasets[i].label%><%}%>
  • <%}%>'},initialize:function(t){this.PointClass=i.Point.extend({strokeWidth:this.options.pointDotStrokeWidth,radius:this.options.pointDotRadius,display:this.options.pointDot,hitDetectionRadius:this.options.pointHitDetectionRadius,ctx:this.chart.ctx}),this.datasets=[],this.buildScale(t),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getPointsAtEvent(t):[];this.eachPoints(function(t){t.restore(["fillColor","strokeColor"])}),e.each(i,function(t){t.fillColor=t.highlightFill,t.strokeColor=t.highlightStroke}),this.showTooltip(i)}),e.each(t.datasets,function(i){var s={label:i.label||null,fillColor:i.fillColor,strokeColor:i.strokeColor,pointColor:i.pointColor,pointStrokeColor:i.pointStrokeColor,points:[]};this.datasets.push(s),e.each(i.data,function(n,o){if(e.isNumber(n)){var a;this.scale.animation||(a=this.scale.getPointPosition(o,this.scale.calculateCenterOffset(n))),s.points.push(new this.PointClass({value:n,label:t.labels[o],datasetLabel:i.label,x:this.options.animation?this.scale.xCenter:a.x,y:this.options.animation?this.scale.yCenter:a.y,strokeColor:i.pointStrokeColor,fillColor:i.pointColor,highlightFill:i.pointHighlightFill||i.pointColor,highlightStroke:i.pointHighlightStroke||i.pointStrokeColor}))}},this)},this),this.render()},eachPoints:function(t){e.each(this.datasets,function(i){e.each(i.points,t,this)},this)},getPointsAtEvent:function(t){var i=e.getRelativePosition(t),s=e.getAngleFromPoint({x:this.scale.xCenter,y:this.scale.yCenter},i),n=2*Math.PI/this.scale.valuesCount,o=Math.round((s.angle-1.5*Math.PI)/n),a=[];return(o>=this.scale.valuesCount||0>o)&&(o=0),s.distance<=this.scale.drawingArea&&e.each(this.datasets,function(t){a.push(t.points[o])}),a},buildScale:function(t){this.scale=new i.RadialScale({display:this.options.showScale,fontStyle:this.options.scaleFontStyle,fontSize:this.options.scaleFontSize,fontFamily:this.options.scaleFontFamily,fontColor:this.options.scaleFontColor,showLabels:this.options.scaleShowLabels,showLabelBackdrop:this.options.scaleShowLabelBackdrop,backdropColor:this.options.scaleBackdropColor,backdropPaddingY:this.options.scaleBackdropPaddingY,backdropPaddingX:this.options.scaleBackdropPaddingX,lineWidth:this.options.scaleShowLine?this.options.scaleLineWidth:0,lineColor:this.options.scaleLineColor,angleLineColor:this.options.angleLineColor,angleLineWidth:this.options.angleShowLineOut?this.options.angleLineWidth:0,pointLabelFontColor:this.options.pointLabelFontColor,pointLabelFontSize:this.options.pointLabelFontSize,pointLabelFontFamily:this.options.pointLabelFontFamily,pointLabelFontStyle:this.options.pointLabelFontStyle,height:this.chart.height,width:this.chart.width,xCenter:this.chart.width/2,yCenter:this.chart.height/2,ctx:this.chart.ctx,templateString:this.options.scaleLabel,labels:t.labels,valuesCount:t.datasets[0].data.length}),this.scale.setScaleSize(),this.updateScaleRange(t.datasets),this.scale.buildYLabels()},updateScaleRange:function(t){var i=function(){var i=[];return e.each(t,function(t){t.data?i=i.concat(t.data):e.each(t.points,function(t){i.push(t.value)})}),i}(),s=this.options.scaleOverride?{steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}:e.calculateScaleRange(i,e.min([this.chart.width,this.chart.height])/2,this.options.scaleFontSize,this.options.scaleBeginAtZero,this.options.scaleIntegersOnly);e.extend(this.scale,s)},addData:function(t,i){this.scale.valuesCount++,e.each(t,function(t,s){if(e.isNumber(t)){var n=this.scale.getPointPosition(this.scale.valuesCount,this.scale.calculateCenterOffset(t));this.datasets[s].points.push(new this.PointClass({value:t,label:i,x:n.x,y:n.y,strokeColor:this.datasets[s].pointStrokeColor,fillColor:this.datasets[s].pointColor}))}},this),this.scale.labels.push(i),this.reflow(),this.update()},removeData:function(){this.scale.valuesCount--,this.scale.labels.shift(),e.each(this.datasets,function(t){t.points.shift()},this),this.reflow(),this.update()},update:function(){this.eachPoints(function(t){t.save()}),this.reflow(),this.render()},reflow:function(){e.extend(this.scale,{width:this.chart.width,height:this.chart.height,size:e.min([this.chart.width,this.chart.height]),xCenter:this.chart.width/2,yCenter:this.chart.height/2}),this.updateScaleRange(this.datasets),this.scale.setScaleSize(),this.scale.buildYLabels()},draw:function(t){var i=t||1,s=this.chart.ctx;this.clear(),this.scale.draw(),e.each(this.datasets,function(t){e.each(t.points,function(t,e){t.transition(this.scale.getPointPosition(e,this.scale.calculateCenterOffset(t.value)),i)},this),s.lineWidth=this.options.datasetStrokeWidth,s.strokeStyle=t.strokeColor,s.beginPath(),e.each(t.points,function(t,i){0===i?s.moveTo(t.x,t.y):s.lineTo(t.x,t.y)},this),s.closePath(),s.stroke(),s.fillStyle=t.fillColor,s.fill(),e.each(t.points,function(t){t.draw()})},this)}})}.call(this); \ No newline at end of file diff --git a/client/scripts/lib/clib.js b/client/scripts/lib/clib.js deleted file mode 100644 index 19d7965..0000000 --- a/client/scripts/lib/clib.js +++ /dev/null @@ -1,127 +0,0 @@ -define(['lib/seedrandom', 'lib/lodash'], function(Seedrandom, _) { - - var rng; - var currentTime; - - return { - formatSatoshis: function(n, decimals) { - if (typeof decimals === 'undefined') { - if (n % 100 === 0) - decimals = 0; - else - decimals = 2; - } - - return (n/100).toFixed(decimals).toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,"); - }, - - parseBits: function(text) { - if(typeof text !== 'string') - return null; - - var textNum = text.replace(',', ''); - var bits = parseFloat(textNum); - if (_.isNaN(bits) || bits < 0) - return null; - return bits*100; - }, - - payout: function(betSize, ms) { - return betSize * Math.pow(Math.E, (0.00006*ms)); - }, - - payoutTime: function(betSize, payout) { - return Math.log(payout/betSize)/0.00006; - }, - - seed: function(newSeed) { - rng = Seedrandom(newSeed); - currentTime = 0; - }, - - payoutNoise: function(betSize, ms, type) { - var c1 = 0.00006; - var c2 = 1; - var c3 = 1; - switch(type) { - case 1: - return betSize * Math.pow(Math.E, (c1*ms)) + (Math.sin(ms * c2) * c3); - case 2: - return betSize * Math.pow(Math.E, (c1*ms)) + (Math.sin(Math.random() * c2) * c3); - case 3: - var rand = rng(); - var payout = betSize * Math.pow(Math.E, (c1*ms) + (rand * c2) * c3); - return betSize * Math.pow(Math.E, (c1*ms)) + ((rand * c2) * c3); - } - }, - - isNumber: function(n) { - return !isNaN(parseFloat(n)) && isFinite(n); - }, - - winProb: function(amount, cashOut) { - - // The cashout factor that we need to get the cashOut with our wager. - var factor = Math.ceil(100 * cashOut / amount); - - /* The probability that the second phase of the RNG chooses a lower - crashpoint. This is derived in the following way: - - Let r be a random variable uniformly distributed on [0,1) and let - p be 1/(1-r). Then we need to calculate the probability of - floor(100 * (p - (p - 1)*0.01)) < factor - - Using the fact that factor is integral and solving for r yields - r < 1 - 99 / (f-1) - - Because r is uniformly distributed the probability is identical - to the right hand side. - - Combining with the first phase of the RNG we get the probability - of losing - 0.01 + 0.99 * (1 - 99 / (factor-1)) - and the win probability - 1 - 0.01 - 0.99 * (1 - 99 / (factor-1)). - = 0.99 - 0.99 * (1 - 99 / (factor-1)) - = 0.99 * (1 - (1 - 99 / (factor-1)) - = 0.99 * (99 / (factor-1)) - = 0.99 * (99 / (factor-1)) - = 9801 / (100*(factor-1)) - */ - return 9801 / (100*(factor-1)); - }, - - profit: function(amount, cashOut) { - - // The factor that we need to get the cash out with our wager. - var factor = Math.ceil(100 * cashOut / amount); - - // We calculate the profit with the factor instead of using the - // difference between cash out and wager amount. - return amount * (factor-100) / 100; - }, - - houseExpectedReturn: function(amount, cashOut) { - - var p1,p2,p3; - var v1,v2,v3; - - // Instant crash. - p1 = 0.01; - v1 = amount; - - // Player win. - p2 = this.winProb(amount,cashOut); - v2 = - 0.01 * amount - this.profit(amount,cashOut); - - // Player loss. - p3 = 1 - p1 - p2; - v3 = 0.99 * amount; - - // Expected value. - return p1 * v1 + p2 * v2 + p3 * v3; - } - - } - -}); diff --git a/client/scripts/lib/events.js b/client/scripts/lib/events.js deleted file mode 100644 index c4275b9..0000000 --- a/client/scripts/lib/events.js +++ /dev/null @@ -1,172 +0,0 @@ -// Stolen from backbone 1.1.2 - -define(['lib/lodash'], function(_) { - -var slice = [].slice; - - -// Backbone.Events -// --------------- - -// A module that can be mixed in to *any object* in order to provide it with -// custom events. You may bind with `on` or remove with `off` callback -// functions to an event; `trigger`-ing an event fires all callbacks in -// succession. -// -// var object = {}; -// _.extend(object, Backbone.Events); -// object.on('expand', function(){ alert('expanded'); }); -// object.trigger('expand'); -// -var Events = { - - // Bind an event to a `callback` function. Passing `"all"` will bind - // the callback to all events fired. - on: function(name, callback, context) { - if (!eventsApi(this, 'on', name, [callback, context]) || !callback) return this; - this._events || (this._events = {}); - var events = this._events[name] || (this._events[name] = []); - events.push({callback: callback, context: context, ctx: context || this}); - return this; - }, - - // Bind an event to only be triggered a single time. After the first time - // the callback is invoked, it will be removed. - once: function(name, callback, context) { - if (!eventsApi(this, 'once', name, [callback, context]) || !callback) return this; - var self = this; - var once = _.once(function() { - self.off(name, once); - callback.apply(this, arguments); - }); - once._callback = callback; - return this.on(name, once, context); - }, - - // Remove one or many callbacks. If `context` is null, removes all - // callbacks with that function. If `callback` is null, removes all - // callbacks for the event. If `name` is null, removes all bound - // callbacks for all events. - off: function(name, callback, context) { - var retain, ev, events, names, i, l, j, k; - if (!this._events || !eventsApi(this, 'off', name, [callback, context])) return this; - if (!name && !callback && !context) { - this._events = void 0; - return this; - } - names = name ? [name] : _.keys(this._events); - for (i = 0, l = names.length; i < l; i++) { - name = names[i]; - if (events = this._events[name]) { - this._events[name] = retain = []; - if (callback || context) { - for (j = 0, k = events.length; j < k; j++) { - ev = events[j]; - if ((callback && callback !== ev.callback && callback !== ev.callback._callback) || - (context && context !== ev.context)) { - retain.push(ev); - } - } - } - if (!retain.length) delete this._events[name]; - } - } - - return this; - }, - - // Trigger one or many events, firing all bound callbacks. Callbacks are - // passed the same arguments as `trigger` is, apart from the event name - // (unless you're listening on `"all"`, which will cause your callback to - // receive the true name of the event as the first argument). - trigger: function(name) { - if (!this._events) return this; - var args = slice.call(arguments, 1); - if (!eventsApi(this, 'trigger', name, args)) return this; - var events = this._events[name]; - var allEvents = this._events.all; - if (events) triggerEvents(events, args); - if (allEvents) triggerEvents(allEvents, arguments); - return this; - }, - - // Tell this object to stop listening to either specific events ... or - // to every object it's currently listening to. - stopListening: function(obj, name, callback) { - var listeningTo = this._listeningTo; - if (!listeningTo) return this; - var remove = !name && !callback; - if (!callback && typeof name === 'object') callback = this; - if (obj) (listeningTo = {})[obj._listenId] = obj; - for (var id in listeningTo) { - obj = listeningTo[id]; - obj.off(name, callback, this); - if (remove || _.isEmpty(obj._events)) delete this._listeningTo[id]; - } - return this; - } - -}; - -// Regular expression used to split event strings. -var eventSplitter = /\s+/; - -// Implement fancy features of the Events API such as multiple event -// names `"change blur"` and jQuery-style event maps `{change: action}` -// in terms of the existing API. -var eventsApi = function(obj, action, name, rest) { - if (!name) return true; - - // Handle event maps. - if (typeof name === 'object') { - for (var key in name) { - obj[action].apply(obj, [key, name[key]].concat(rest)); - } - return false; - } - - // Handle space separated event names. - if (eventSplitter.test(name)) { - var names = name.split(eventSplitter); - for (var i = 0, l = names.length; i < l; i++) { - obj[action].apply(obj, [names[i]].concat(rest)); - } - return false; - } - - return true; -}; - -// A difficult-to-believe, but optimized internal dispatch function for -// triggering events. Tries to keep the usual cases speedy (most internal -// Backbone events have 3 arguments). -var triggerEvents = function(events, args) { - var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2]; - switch (args.length) { - case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return; - case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return; - case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return; - case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return; - default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return; - } -}; - -var listenMethods = {listenTo: 'on', listenToOnce: 'once'}; - -// Inversion-of-control versions of `on` and `once`. Tell *this* object to -// listen to an event in another object ... keeping track of what it's -// listening to. -_.each(listenMethods, function(implementation, method) { - Events[method] = function(obj, name, callback) { - var listeningTo = this._listeningTo || (this._listeningTo = {}); - var id = obj._listenId || (obj._listenId = _.uniqueId('l')); - listeningTo[id] = obj; - if (!callback && typeof name === 'object') callback = this; - obj[implementation](name, callback, this); - return this; - }; -}); - -return Events; - -}); \ No newline at end of file diff --git a/client/scripts/lib/lodash.js b/client/scripts/lib/lodash.js deleted file mode 100644 index 5c1e4a5..0000000 --- a/client/scripts/lib/lodash.js +++ /dev/null @@ -1,6785 +0,0 @@ -/** - * @license - * Lo-Dash 2.4.1 (Custom Build) - * Build: `lodash modern -o ./dist/lodash.js` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -;(function() { - - /** Used as a safe reference for `undefined` in pre ES5 environments */ - var undefined; - - /** Used to pool arrays and objects used internally */ - var arrayPool = [], - objectPool = []; - - /** Used to generate unique IDs */ - var idCounter = 0; - - /** Used to prefix keys to avoid issues with `__proto__` and properties on `Object.prototype` */ - var keyPrefix = +new Date + ''; - - /** Used as the size when optimizations are enabled for large arrays */ - var largeArraySize = 75; - - /** Used as the max size of the `arrayPool` and `objectPool` */ - var maxPoolSize = 40; - - /** Used to detect and test whitespace */ - var whitespace = ( - // whitespace - ' \t\x0B\f\xA0\ufeff' + - - // line terminators - '\n\r\u2028\u2029' + - - // unicode category "Zs" space separators - '\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000' - ); - - /** Used to match empty string literals in compiled template source */ - var reEmptyStringLeading = /\b__p \+= '';/g, - reEmptyStringMiddle = /\b(__p \+=) '' \+/g, - reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; - - /** - * Used to match ES6 template delimiters - * http://people.mozilla.org/~jorendorff/es6-draft.html#sec-literals-string-literals - */ - var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; - - /** Used to match regexp flags from their coerced string values */ - var reFlags = /\w*$/; - - /** Used to detected named functions */ - var reFuncName = /^\s*function[ \n\r\t]+\w/; - - /** Used to match "interpolate" template delimiters */ - var reInterpolate = /<%=([\s\S]+?)%>/g; - - /** Used to match leading whitespace and zeros to be removed */ - var reLeadingSpacesAndZeros = RegExp('^[' + whitespace + ']*0+(?=.$)'); - - /** Used to ensure capturing order of template delimiters */ - var reNoMatch = /($^)/; - - /** Used to detect functions containing a `this` reference */ - var reThis = /\bthis\b/; - - /** Used to match unescaped characters in compiled string literals */ - var reUnescapedString = /['\n\r\t\u2028\u2029\\]/g; - - /** Used to assign default `context` object properties */ - var contextProps = [ - 'Array', 'Boolean', 'Date', 'Function', 'Math', 'Number', 'Object', - 'RegExp', 'String', '_', 'attachEvent', 'clearTimeout', 'isFinite', 'isNaN', - 'parseInt', 'setTimeout' - ]; - - /** Used to make template sourceURLs easier to identify */ - var templateCounter = 0; - - /** `Object#toString` result shortcuts */ - var argsClass = '[object Arguments]', - arrayClass = '[object Array]', - boolClass = '[object Boolean]', - dateClass = '[object Date]', - funcClass = '[object Function]', - numberClass = '[object Number]', - objectClass = '[object Object]', - regexpClass = '[object RegExp]', - stringClass = '[object String]'; - - /** Used to identify object classifications that `_.clone` supports */ - var cloneableClasses = {}; - cloneableClasses[funcClass] = false; - cloneableClasses[argsClass] = cloneableClasses[arrayClass] = - cloneableClasses[boolClass] = cloneableClasses[dateClass] = - cloneableClasses[numberClass] = cloneableClasses[objectClass] = - cloneableClasses[regexpClass] = cloneableClasses[stringClass] = true; - - /** Used as an internal `_.debounce` options object */ - var debounceOptions = { - 'leading': false, - 'maxWait': 0, - 'trailing': false - }; - - /** Used as the property descriptor for `__bindData__` */ - var descriptor = { - 'configurable': false, - 'enumerable': false, - 'value': null, - 'writable': false - }; - - /** Used to determine if values are of the language type Object */ - var objectTypes = { - 'boolean': false, - 'function': true, - 'object': true, - 'number': false, - 'string': false, - 'undefined': false - }; - - /** Used to escape characters for inclusion in compiled string literals */ - var stringEscapes = { - '\\': '\\', - "'": "'", - '\n': 'n', - '\r': 'r', - '\t': 't', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; - - /** Used as a reference to the global object */ - var root = (objectTypes[typeof window] && window) || this; - - /** Detect free variable `exports` */ - var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports; - - /** Detect free variable `module` */ - var freeModule = objectTypes[typeof module] && module && !module.nodeType && module; - - /** Detect the popular CommonJS extension `module.exports` */ - var moduleExports = freeModule && freeModule.exports === freeExports && freeExports; - - /** Detect free variable `global` from Node.js or Browserified code and use it as `root` */ - var freeGlobal = objectTypes[typeof global] && global; - if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal)) { - root = freeGlobal; - } - - /*--------------------------------------------------------------------------*/ - - /** - * The base implementation of `_.indexOf` without support for binary searches - * or `fromIndex` constraints. - * - * @private - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the matched value or `-1`. - */ - function baseIndexOf(array, value, fromIndex) { - var index = (fromIndex || 0) - 1, - length = array ? array.length : 0; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * An implementation of `_.contains` for cache objects that mimics the return - * signature of `_.indexOf` by returning `0` if the value is found, else `-1`. - * - * @private - * @param {Object} cache The cache object to inspect. - * @param {*} value The value to search for. - * @returns {number} Returns `0` if `value` is found, else `-1`. - */ - function cacheIndexOf(cache, value) { - var type = typeof value; - cache = cache.cache; - - if (type == 'boolean' || value == null) { - return cache[value] ? 0 : -1; - } - if (type != 'number' && type != 'string') { - type = 'object'; - } - var key = type == 'number' ? value : keyPrefix + value; - cache = (cache = cache[type]) && cache[key]; - - return type == 'object' - ? (cache && baseIndexOf(cache, value) > -1 ? 0 : -1) - : (cache ? 0 : -1); - } - - /** - * Adds a given value to the corresponding cache object. - * - * @private - * @param {*} value The value to add to the cache. - */ - function cachePush(value) { - var cache = this.cache, - type = typeof value; - - if (type == 'boolean' || value == null) { - cache[value] = true; - } else { - if (type != 'number' && type != 'string') { - type = 'object'; - } - var key = type == 'number' ? value : keyPrefix + value, - typeCache = cache[type] || (cache[type] = {}); - - if (type == 'object') { - (typeCache[key] || (typeCache[key] = [])).push(value); - } else { - typeCache[key] = true; - } - } - } - - /** - * Used by `_.max` and `_.min` as the default callback when a given - * collection is a string value. - * - * @private - * @param {string} value The character to inspect. - * @returns {number} Returns the code unit of given character. - */ - function charAtCallback(value) { - return value.charCodeAt(0); - } - - /** - * Used by `sortBy` to compare transformed `collection` elements, stable sorting - * them in ascending order. - * - * @private - * @param {Object} a The object to compare to `b`. - * @param {Object} b The object to compare to `a`. - * @returns {number} Returns the sort order indicator of `1` or `-1`. - */ - function compareAscending(a, b) { - var ac = a.criteria, - bc = b.criteria, - index = -1, - length = ac.length; - - while (++index < length) { - var value = ac[index], - other = bc[index]; - - if (value !== other) { - if (value > other || typeof value == 'undefined') { - return 1; - } - if (value < other || typeof other == 'undefined') { - return -1; - } - } - } - // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications - // that causes it, under certain circumstances, to return the same value for - // `a` and `b`. See https://github.com/jashkenas/underscore/pull/1247 - // - // This also ensures a stable sort in V8 and other engines. - // See http://code.google.com/p/v8/issues/detail?id=90 - return a.index - b.index; - } - - /** - * Creates a cache object to optimize linear searches of large arrays. - * - * @private - * @param {Array} [array=[]] The array to search. - * @returns {null|Object} Returns the cache object or `null` if caching should not be used. - */ - function createCache(array) { - var index = -1, - length = array.length, - first = array[0], - mid = array[(length / 2) | 0], - last = array[length - 1]; - - if (first && typeof first == 'object' && - mid && typeof mid == 'object' && last && typeof last == 'object') { - return false; - } - var cache = getObject(); - cache['false'] = cache['null'] = cache['true'] = cache['undefined'] = false; - - var result = getObject(); - result.array = array; - result.cache = cache; - result.push = cachePush; - - while (++index < length) { - result.push(array[index]); - } - return result; - } - - /** - * Used by `template` to escape characters for inclusion in compiled - * string literals. - * - * @private - * @param {string} match The matched character to escape. - * @returns {string} Returns the escaped character. - */ - function escapeStringChar(match) { - return '\\' + stringEscapes[match]; - } - - /** - * Gets an array from the array pool or creates a new one if the pool is empty. - * - * @private - * @returns {Array} The array from the pool. - */ - function getArray() { - return arrayPool.pop() || []; - } - - /** - * Gets an object from the object pool or creates a new one if the pool is empty. - * - * @private - * @returns {Object} The object from the pool. - */ - function getObject() { - return objectPool.pop() || { - 'array': null, - 'cache': null, - 'criteria': null, - 'false': false, - 'index': 0, - 'null': false, - 'number': null, - 'object': null, - 'push': null, - 'string': null, - 'true': false, - 'undefined': false, - 'value': null - }; - } - - /** - * Releases the given array back to the array pool. - * - * @private - * @param {Array} [array] The array to release. - */ - function releaseArray(array) { - array.length = 0; - if (arrayPool.length < maxPoolSize) { - arrayPool.push(array); - } - } - - /** - * Releases the given object back to the object pool. - * - * @private - * @param {Object} [object] The object to release. - */ - function releaseObject(object) { - var cache = object.cache; - if (cache) { - releaseObject(cache); - } - object.array = object.cache = object.criteria = object.object = object.number = object.string = object.value = null; - if (objectPool.length < maxPoolSize) { - objectPool.push(object); - } - } - - /** - * Slices the `collection` from the `start` index up to, but not including, - * the `end` index. - * - * Note: This function is used instead of `Array#slice` to support node lists - * in IE < 9 and to ensure dense arrays are returned. - * - * @private - * @param {Array|Object|string} collection The collection to slice. - * @param {number} start The start index. - * @param {number} end The end index. - * @returns {Array} Returns the new array. - */ - function slice(array, start, end) { - start || (start = 0); - if (typeof end == 'undefined') { - end = array ? array.length : 0; - } - var index = -1, - length = end - start || 0, - result = Array(length < 0 ? 0 : length); - - while (++index < length) { - result[index] = array[start + index]; - } - return result; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Create a new `lodash` function using the given context object. - * - * @static - * @memberOf _ - * @category Utilities - * @param {Object} [context=root] The context object. - * @returns {Function} Returns the `lodash` function. - */ - function runInContext(context) { - // Avoid issues with some ES3 environments that attempt to use values, named - // after built-in constructors like `Object`, for the creation of literals. - // ES5 clears this up by stating that literals must use built-in constructors. - // See http://es5.github.io/#x11.1.5. - context = context ? _.defaults(root.Object(), context, _.pick(root, contextProps)) : root; - - /** Native constructor references */ - var Array = context.Array, - Boolean = context.Boolean, - Date = context.Date, - Function = context.Function, - Math = context.Math, - Number = context.Number, - Object = context.Object, - RegExp = context.RegExp, - String = context.String, - TypeError = context.TypeError; - - /** - * Used for `Array` method references. - * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. - */ - var arrayRef = []; - - /** Used for native method references */ - var objectProto = Object.prototype; - - /** Used to restore the original `_` reference in `noConflict` */ - var oldDash = context._; - - /** Used to resolve the internal [[Class]] of values */ - var toString = objectProto.toString; - - /** Used to detect if a method is native */ - var reNative = RegExp('^' + - String(toString) - .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') - .replace(/toString| for [^\]]+/g, '.*?') + '$' - ); - - /** Native method shortcuts */ - var ceil = Math.ceil, - clearTimeout = context.clearTimeout, - floor = Math.floor, - fnToString = Function.prototype.toString, - getPrototypeOf = isNative(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf, - hasOwnProperty = objectProto.hasOwnProperty, - push = arrayRef.push, - setTimeout = context.setTimeout, - splice = arrayRef.splice, - unshift = arrayRef.unshift; - - /** Used to set meta data on functions */ - var defineProperty = (function() { - // IE 8 only accepts DOM elements - try { - var o = {}, - func = isNative(func = Object.defineProperty) && func, - result = func(o, o, o) && func; - } catch(e) { } - return result; - }()); - - /* Native method shortcuts for methods with the same name as other `lodash` methods */ - var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate, - nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray, - nativeIsFinite = context.isFinite, - nativeIsNaN = context.isNaN, - nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys, - nativeMax = Math.max, - nativeMin = Math.min, - nativeParseInt = context.parseInt, - nativeRandom = Math.random; - - /** Used to lookup a built-in constructor by [[Class]] */ - var ctorByClass = {}; - ctorByClass[arrayClass] = Array; - ctorByClass[boolClass] = Boolean; - ctorByClass[dateClass] = Date; - ctorByClass[funcClass] = Function; - ctorByClass[objectClass] = Object; - ctorByClass[numberClass] = Number; - ctorByClass[regexpClass] = RegExp; - ctorByClass[stringClass] = String; - - /*--------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` object which wraps the given value to enable intuitive - * method chaining. - * - * In addition to Lo-Dash methods, wrappers also have the following `Array` methods: - * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, `splice`, - * and `unshift` - * - * Chaining is supported in custom builds as long as the `value` method is - * implicitly or explicitly included in the build. - * - * The chainable wrapper functions are: - * `after`, `assign`, `bind`, `bindAll`, `bindKey`, `chain`, `compact`, - * `compose`, `concat`, `countBy`, `create`, `createCallback`, `curry`, - * `debounce`, `defaults`, `defer`, `delay`, `difference`, `filter`, `flatten`, - * `forEach`, `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, - * `functions`, `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, - * `invoke`, `keys`, `map`, `max`, `memoize`, `merge`, `min`, `object`, `omit`, - * `once`, `pairs`, `partial`, `partialRight`, `pick`, `pluck`, `pull`, `push`, - * `range`, `reject`, `remove`, `rest`, `reverse`, `shuffle`, `slice`, `sort`, - * `sortBy`, `splice`, `tap`, `throttle`, `times`, `toArray`, `transform`, - * `union`, `uniq`, `unshift`, `unzip`, `values`, `where`, `without`, `wrap`, - * and `zip` - * - * The non-chainable wrapper functions are: - * `clone`, `cloneDeep`, `contains`, `escape`, `every`, `find`, `findIndex`, - * `findKey`, `findLast`, `findLastIndex`, `findLastKey`, `has`, `identity`, - * `indexOf`, `isArguments`, `isArray`, `isBoolean`, `isDate`, `isElement`, - * `isEmpty`, `isEqual`, `isFinite`, `isFunction`, `isNaN`, `isNull`, `isNumber`, - * `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`, `join`, - * `lastIndexOf`, `mixin`, `noConflict`, `parseInt`, `pop`, `random`, `reduce`, - * `reduceRight`, `result`, `shift`, `size`, `some`, `sortedIndex`, `runInContext`, - * `template`, `unescape`, `uniqueId`, and `value` - * - * The wrapper functions `first` and `last` return wrapped values when `n` is - * provided, otherwise they return unwrapped values. - * - * Explicit chaining can be enabled by using the `_.chain` method. - * - * @name _ - * @constructor - * @category Chaining - * @param {*} value The value to wrap in a `lodash` instance. - * @returns {Object} Returns a `lodash` instance. - * @example - * - * var wrapped = _([1, 2, 3]); - * - * // returns an unwrapped value - * wrapped.reduce(function(sum, num) { - * return sum + num; - * }); - * // => 6 - * - * // returns a wrapped value - * var squares = wrapped.map(function(num) { - * return num * num; - * }); - * - * _.isArray(squares); - * // => false - * - * _.isArray(squares.value()); - * // => true - */ - function lodash(value) { - // don't wrap if already wrapped, even if wrapped by a different `lodash` constructor - return (value && typeof value == 'object' && !isArray(value) && hasOwnProperty.call(value, '__wrapped__')) - ? value - : new lodashWrapper(value); - } - - /** - * A fast path for creating `lodash` wrapper objects. - * - * @private - * @param {*} value The value to wrap in a `lodash` instance. - * @param {boolean} chainAll A flag to enable chaining for all methods - * @returns {Object} Returns a `lodash` instance. - */ - function lodashWrapper(value, chainAll) { - this.__chain__ = !!chainAll; - this.__wrapped__ = value; - } - // ensure `new lodashWrapper` is an instance of `lodash` - lodashWrapper.prototype = lodash.prototype; - - /** - * An object used to flag environments features. - * - * @static - * @memberOf _ - * @type Object - */ - var support = lodash.support = {}; - - /** - * Detect if functions can be decompiled by `Function#toString` - * (all but PS3 and older Opera mobile browsers & avoided in Windows 8 apps). - * - * @memberOf _.support - * @type boolean - */ - support.funcDecomp = !isNative(context.WinRTError) && reThis.test(runInContext); - - /** - * Detect if `Function#name` is supported (all but IE). - * - * @memberOf _.support - * @type boolean - */ - support.funcNames = typeof Function.name == 'string'; - - /** - * By default, the template delimiters used by Lo-Dash are similar to those in - * embedded Ruby (ERB). Change the following template settings to use alternative - * delimiters. - * - * @static - * @memberOf _ - * @type Object - */ - lodash.templateSettings = { - - /** - * Used to detect `data` property values to be HTML-escaped. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'escape': /<%-([\s\S]+?)%>/g, - - /** - * Used to detect code to be evaluated. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'evaluate': /<%([\s\S]+?)%>/g, - - /** - * Used to detect `data` property values to inject. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'interpolate': reInterpolate, - - /** - * Used to reference the data object in the template text. - * - * @memberOf _.templateSettings - * @type string - */ - 'variable': '', - - /** - * Used to import variables into the compiled template. - * - * @memberOf _.templateSettings - * @type Object - */ - 'imports': { - - /** - * A reference to the `lodash` function. - * - * @memberOf _.templateSettings.imports - * @type Function - */ - '_': lodash - } - }; - - /*--------------------------------------------------------------------------*/ - - /** - * The base implementation of `_.bind` that creates the bound function and - * sets its meta data. - * - * @private - * @param {Array} bindData The bind data array. - * @returns {Function} Returns the new bound function. - */ - function baseBind(bindData) { - var func = bindData[0], - partialArgs = bindData[2], - thisArg = bindData[4]; - - function bound() { - // `Function#bind` spec - // http://es5.github.io/#x15.3.4.5 - if (partialArgs) { - // avoid `arguments` object deoptimizations by using `slice` instead - // of `Array.prototype.slice.call` and not assigning `arguments` to a - // variable as a ternary expression - var args = slice(partialArgs); - push.apply(args, arguments); - } - // mimic the constructor's `return` behavior - // http://es5.github.io/#x13.2.2 - if (this instanceof bound) { - // ensure `new bound` is an instance of `func` - var thisBinding = baseCreate(func.prototype), - result = func.apply(thisBinding, args || arguments); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisArg, args || arguments); - } - setBindData(bound, bindData); - return bound; - } - - /** - * The base implementation of `_.clone` without argument juggling or support - * for `thisArg` binding. - * - * @private - * @param {*} value The value to clone. - * @param {boolean} [isDeep=false] Specify a deep clone. - * @param {Function} [callback] The function to customize cloning values. - * @param {Array} [stackA=[]] Tracks traversed source objects. - * @param {Array} [stackB=[]] Associates clones with source counterparts. - * @returns {*} Returns the cloned value. - */ - function baseClone(value, isDeep, callback, stackA, stackB) { - if (callback) { - var result = callback(value); - if (typeof result != 'undefined') { - return result; - } - } - // inspect [[Class]] - var isObj = isObject(value); - if (isObj) { - var className = toString.call(value); - if (!cloneableClasses[className]) { - return value; - } - var ctor = ctorByClass[className]; - switch (className) { - case boolClass: - case dateClass: - return new ctor(+value); - - case numberClass: - case stringClass: - return new ctor(value); - - case regexpClass: - result = ctor(value.source, reFlags.exec(value)); - result.lastIndex = value.lastIndex; - return result; - } - } else { - return value; - } - var isArr = isArray(value); - if (isDeep) { - // check for circular references and return corresponding clone - var initedStack = !stackA; - stackA || (stackA = getArray()); - stackB || (stackB = getArray()); - - var length = stackA.length; - while (length--) { - if (stackA[length] == value) { - return stackB[length]; - } - } - result = isArr ? ctor(value.length) : {}; - } - else { - result = isArr ? slice(value) : assign({}, value); - } - // add array properties assigned by `RegExp#exec` - if (isArr) { - if (hasOwnProperty.call(value, 'index')) { - result.index = value.index; - } - if (hasOwnProperty.call(value, 'input')) { - result.input = value.input; - } - } - // exit for shallow clone - if (!isDeep) { - return result; - } - // add the source value to the stack of traversed objects - // and associate it with its clone - stackA.push(value); - stackB.push(result); - - // recursively populate clone (susceptible to call stack limits) - (isArr ? forEach : forOwn)(value, function(objValue, key) { - result[key] = baseClone(objValue, isDeep, callback, stackA, stackB); - }); - - if (initedStack) { - releaseArray(stackA); - releaseArray(stackB); - } - return result; - } - - /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} prototype The object to inherit from. - * @returns {Object} Returns the new object. - */ - function baseCreate(prototype, properties) { - return isObject(prototype) ? nativeCreate(prototype) : {}; - } - // fallback for browsers without `Object.create` - if (!nativeCreate) { - baseCreate = (function() { - function Object() {} - return function(prototype) { - if (isObject(prototype)) { - Object.prototype = prototype; - var result = new Object; - Object.prototype = null; - } - return result || context.Object(); - }; - }()); - } - - /** - * The base implementation of `_.createCallback` without support for creating - * "_.pluck" or "_.where" style callbacks. - * - * @private - * @param {*} [func=identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of the created callback. - * @param {number} [argCount] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. - */ - function baseCreateCallback(func, thisArg, argCount) { - if (typeof func != 'function') { - return identity; - } - // exit early for no `thisArg` or already bound by `Function#bind` - if (typeof thisArg == 'undefined' || !('prototype' in func)) { - return func; - } - var bindData = func.__bindData__; - if (typeof bindData == 'undefined') { - if (support.funcNames) { - bindData = !func.name; - } - bindData = bindData || !support.funcDecomp; - if (!bindData) { - var source = fnToString.call(func); - if (!support.funcNames) { - bindData = !reFuncName.test(source); - } - if (!bindData) { - // checks if `func` references the `this` keyword and stores the result - bindData = reThis.test(source); - setBindData(func, bindData); - } - } - } - // exit early if there are no `this` references or `func` is bound - if (bindData === false || (bindData !== true && bindData[1] & 1)) { - return func; - } - switch (argCount) { - case 1: return function(value) { - return func.call(thisArg, value); - }; - case 2: return function(a, b) { - return func.call(thisArg, a, b); - }; - case 3: return function(value, index, collection) { - return func.call(thisArg, value, index, collection); - }; - case 4: return function(accumulator, value, index, collection) { - return func.call(thisArg, accumulator, value, index, collection); - }; - } - return bind(func, thisArg); - } - - /** - * The base implementation of `createWrapper` that creates the wrapper and - * sets its meta data. - * - * @private - * @param {Array} bindData The bind data array. - * @returns {Function} Returns the new function. - */ - function baseCreateWrapper(bindData) { - var func = bindData[0], - bitmask = bindData[1], - partialArgs = bindData[2], - partialRightArgs = bindData[3], - thisArg = bindData[4], - arity = bindData[5]; - - var isBind = bitmask & 1, - isBindKey = bitmask & 2, - isCurry = bitmask & 4, - isCurryBound = bitmask & 8, - key = func; - - function bound() { - var thisBinding = isBind ? thisArg : this; - if (partialArgs) { - var args = slice(partialArgs); - push.apply(args, arguments); - } - if (partialRightArgs || isCurry) { - args || (args = slice(arguments)); - if (partialRightArgs) { - push.apply(args, partialRightArgs); - } - if (isCurry && args.length < arity) { - bitmask |= 16 & ~32; - return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]); - } - } - args || (args = arguments); - if (isBindKey) { - func = thisBinding[key]; - } - if (this instanceof bound) { - thisBinding = baseCreate(func.prototype); - var result = func.apply(thisBinding, args); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisBinding, args); - } - setBindData(bound, bindData); - return bound; - } - - /** - * The base implementation of `_.difference` that accepts a single array - * of values to exclude. - * - * @private - * @param {Array} array The array to process. - * @param {Array} [values] The array of values to exclude. - * @returns {Array} Returns a new array of filtered values. - */ - function baseDifference(array, values) { - var index = -1, - indexOf = getIndexOf(), - length = array ? array.length : 0, - isLarge = length >= largeArraySize && indexOf === baseIndexOf, - result = []; - - if (isLarge) { - var cache = createCache(values); - if (cache) { - indexOf = cacheIndexOf; - values = cache; - } else { - isLarge = false; - } - } - while (++index < length) { - var value = array[index]; - if (indexOf(values, value) < 0) { - result.push(value); - } - } - if (isLarge) { - releaseObject(values); - } - return result; - } - - /** - * The base implementation of `_.flatten` without support for callback - * shorthands or `thisArg` binding. - * - * @private - * @param {Array} array The array to flatten. - * @param {boolean} [isShallow=false] A flag to restrict flattening to a single level. - * @param {boolean} [isStrict=false] A flag to restrict flattening to arrays and `arguments` objects. - * @param {number} [fromIndex=0] The index to start from. - * @returns {Array} Returns a new flattened array. - */ - function baseFlatten(array, isShallow, isStrict, fromIndex) { - var index = (fromIndex || 0) - 1, - length = array ? array.length : 0, - result = []; - - while (++index < length) { - var value = array[index]; - - if (value && typeof value == 'object' && typeof value.length == 'number' - && (isArray(value) || isArguments(value))) { - // recursively flatten arrays (susceptible to call stack limits) - if (!isShallow) { - value = baseFlatten(value, isShallow, isStrict); - } - var valIndex = -1, - valLength = value.length, - resIndex = result.length; - - result.length += valLength; - while (++valIndex < valLength) { - result[resIndex++] = value[valIndex]; - } - } else if (!isStrict) { - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.isEqual`, without support for `thisArg` binding, - * that allows partial "_.where" style comparisons. - * - * @private - * @param {*} a The value to compare. - * @param {*} b The other value to compare. - * @param {Function} [callback] The function to customize comparing values. - * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons. - * @param {Array} [stackA=[]] Tracks traversed `a` objects. - * @param {Array} [stackB=[]] Tracks traversed `b` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ - function baseIsEqual(a, b, callback, isWhere, stackA, stackB) { - // used to indicate that when comparing objects, `a` has at least the properties of `b` - if (callback) { - var result = callback(a, b); - if (typeof result != 'undefined') { - return !!result; - } - } - // exit early for identical values - if (a === b) { - // treat `+0` vs. `-0` as not equal - return a !== 0 || (1 / a == 1 / b); - } - var type = typeof a, - otherType = typeof b; - - // exit early for unlike primitive values - if (a === a && - !(a && objectTypes[type]) && - !(b && objectTypes[otherType])) { - return false; - } - // exit early for `null` and `undefined` avoiding ES3's Function#call behavior - // http://es5.github.io/#x15.3.4.4 - if (a == null || b == null) { - return a === b; - } - // compare [[Class]] names - var className = toString.call(a), - otherClass = toString.call(b); - - if (className == argsClass) { - className = objectClass; - } - if (otherClass == argsClass) { - otherClass = objectClass; - } - if (className != otherClass) { - return false; - } - switch (className) { - case boolClass: - case dateClass: - // coerce dates and booleans to numbers, dates to milliseconds and booleans - // to `1` or `0` treating invalid dates coerced to `NaN` as not equal - return +a == +b; - - case numberClass: - // treat `NaN` vs. `NaN` as equal - return (a != +a) - ? b != +b - // but treat `+0` vs. `-0` as not equal - : (a == 0 ? (1 / a == 1 / b) : a == +b); - - case regexpClass: - case stringClass: - // coerce regexes to strings (http://es5.github.io/#x15.10.6.4) - // treat string primitives and their corresponding object instances as equal - return a == String(b); - } - var isArr = className == arrayClass; - if (!isArr) { - // unwrap any `lodash` wrapped values - var aWrapped = hasOwnProperty.call(a, '__wrapped__'), - bWrapped = hasOwnProperty.call(b, '__wrapped__'); - - if (aWrapped || bWrapped) { - return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB); - } - // exit for functions and DOM nodes - if (className != objectClass) { - return false; - } - // in older versions of Opera, `arguments` objects have `Array` constructors - var ctorA = a.constructor, - ctorB = b.constructor; - - // non `Object` object instances with different constructors are not equal - if (ctorA != ctorB && - !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) && - ('constructor' in a && 'constructor' in b) - ) { - return false; - } - } - // assume cyclic structures are equal - // the algorithm for detecting cyclic structures is adapted from ES 5.1 - // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3) - var initedStack = !stackA; - stackA || (stackA = getArray()); - stackB || (stackB = getArray()); - - var length = stackA.length; - while (length--) { - if (stackA[length] == a) { - return stackB[length] == b; - } - } - var size = 0; - result = true; - - // add `a` and `b` to the stack of traversed objects - stackA.push(a); - stackB.push(b); - - // recursively compare objects and arrays (susceptible to call stack limits) - if (isArr) { - // compare lengths to determine if a deep comparison is necessary - length = a.length; - size = b.length; - result = size == length; - - if (result || isWhere) { - // deep compare the contents, ignoring non-numeric properties - while (size--) { - var index = length, - value = b[size]; - - if (isWhere) { - while (index--) { - if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) { - break; - } - } - } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) { - break; - } - } - } - } - else { - // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys` - // which, in this case, is more costly - forIn(b, function(value, key, b) { - if (hasOwnProperty.call(b, key)) { - // count the number of properties. - size++; - // deep compare each property value. - return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB)); - } - }); - - if (result && !isWhere) { - // ensure both objects have the same number of properties - forIn(a, function(value, key, a) { - if (hasOwnProperty.call(a, key)) { - // `size` will be `-1` if `a` has more properties than `b` - return (result = --size > -1); - } - }); - } - } - stackA.pop(); - stackB.pop(); - - if (initedStack) { - releaseArray(stackA); - releaseArray(stackB); - } - return result; - } - - /** - * The base implementation of `_.merge` without argument juggling or support - * for `thisArg` binding. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {Function} [callback] The function to customize merging properties. - * @param {Array} [stackA=[]] Tracks traversed source objects. - * @param {Array} [stackB=[]] Associates values with source counterparts. - */ - function baseMerge(object, source, callback, stackA, stackB) { - (isArray(source) ? forEach : forOwn)(source, function(source, key) { - var found, - isArr, - result = source, - value = object[key]; - - if (source && ((isArr = isArray(source)) || isPlainObject(source))) { - // avoid merging previously merged cyclic sources - var stackLength = stackA.length; - while (stackLength--) { - if ((found = stackA[stackLength] == source)) { - value = stackB[stackLength]; - break; - } - } - if (!found) { - var isShallow; - if (callback) { - result = callback(value, source); - if ((isShallow = typeof result != 'undefined')) { - value = result; - } - } - if (!isShallow) { - value = isArr - ? (isArray(value) ? value : []) - : (isPlainObject(value) ? value : {}); - } - // add `source` and associated `value` to the stack of traversed objects - stackA.push(source); - stackB.push(value); - - // recursively merge objects and arrays (susceptible to call stack limits) - if (!isShallow) { - baseMerge(value, source, callback, stackA, stackB); - } - } - } - else { - if (callback) { - result = callback(value, source); - if (typeof result == 'undefined') { - result = source; - } - } - if (typeof result != 'undefined') { - value = result; - } - } - object[key] = value; - }); - } - - /** - * The base implementation of `_.random` without argument juggling or support - * for returning floating-point numbers. - * - * @private - * @param {number} min The minimum possible value. - * @param {number} max The maximum possible value. - * @returns {number} Returns a random number. - */ - function baseRandom(min, max) { - return min + floor(nativeRandom() * (max - min + 1)); - } - - /** - * The base implementation of `_.uniq` without support for callback shorthands - * or `thisArg` binding. - * - * @private - * @param {Array} array The array to process. - * @param {boolean} [isSorted=false] A flag to indicate that `array` is sorted. - * @param {Function} [callback] The function called per iteration. - * @returns {Array} Returns a duplicate-value-free array. - */ - function baseUniq(array, isSorted, callback) { - var index = -1, - indexOf = getIndexOf(), - length = array ? array.length : 0, - result = []; - - var isLarge = !isSorted && length >= largeArraySize && indexOf === baseIndexOf, - seen = (callback || isLarge) ? getArray() : result; - - if (isLarge) { - var cache = createCache(seen); - indexOf = cacheIndexOf; - seen = cache; - } - while (++index < length) { - var value = array[index], - computed = callback ? callback(value, index, array) : value; - - if (isSorted - ? !index || seen[seen.length - 1] !== computed - : indexOf(seen, computed) < 0 - ) { - if (callback || isLarge) { - seen.push(computed); - } - result.push(value); - } - } - if (isLarge) { - releaseArray(seen.array); - releaseObject(seen); - } else if (callback) { - releaseArray(seen); - } - return result; - } - - /** - * Creates a function that aggregates a collection, creating an object composed - * of keys generated from the results of running each element of the collection - * through a callback. The given `setter` function sets the keys and values - * of the composed object. - * - * @private - * @param {Function} setter The setter function. - * @returns {Function} Returns the new aggregator function. - */ - function createAggregator(setter) { - return function(collection, callback, thisArg) { - var result = {}; - callback = lodash.createCallback(callback, thisArg, 3); - - var index = -1, - length = collection ? collection.length : 0; - - if (typeof length == 'number') { - while (++index < length) { - var value = collection[index]; - setter(result, value, callback(value, index, collection), collection); - } - } else { - forOwn(collection, function(value, key, collection) { - setter(result, value, callback(value, key, collection), collection); - }); - } - return result; - }; - } - - /** - * Creates a function that, when called, either curries or invokes `func` - * with an optional `this` binding and partially applied arguments. - * - * @private - * @param {Function|string} func The function or method name to reference. - * @param {number} bitmask The bitmask of method flags to compose. - * The bitmask may be composed of the following flags: - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` - * 8 - `_.curry` (bound) - * 16 - `_.partial` - * 32 - `_.partialRight` - * @param {Array} [partialArgs] An array of arguments to prepend to those - * provided to the new function. - * @param {Array} [partialRightArgs] An array of arguments to append to those - * provided to the new function. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new function. - */ - function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) { - var isBind = bitmask & 1, - isBindKey = bitmask & 2, - isCurry = bitmask & 4, - isCurryBound = bitmask & 8, - isPartial = bitmask & 16, - isPartialRight = bitmask & 32; - - if (!isBindKey && !isFunction(func)) { - throw new TypeError; - } - if (isPartial && !partialArgs.length) { - bitmask &= ~16; - isPartial = partialArgs = false; - } - if (isPartialRight && !partialRightArgs.length) { - bitmask &= ~32; - isPartialRight = partialRightArgs = false; - } - var bindData = func && func.__bindData__; - if (bindData && bindData !== true) { - // clone `bindData` - bindData = slice(bindData); - if (bindData[2]) { - bindData[2] = slice(bindData[2]); - } - if (bindData[3]) { - bindData[3] = slice(bindData[3]); - } - // set `thisBinding` is not previously bound - if (isBind && !(bindData[1] & 1)) { - bindData[4] = thisArg; - } - // set if previously bound but not currently (subsequent curried functions) - if (!isBind && bindData[1] & 1) { - bitmask |= 8; - } - // set curried arity if not yet set - if (isCurry && !(bindData[1] & 4)) { - bindData[5] = arity; - } - // append partial left arguments - if (isPartial) { - push.apply(bindData[2] || (bindData[2] = []), partialArgs); - } - // append partial right arguments - if (isPartialRight) { - unshift.apply(bindData[3] || (bindData[3] = []), partialRightArgs); - } - // merge flags - bindData[1] |= bitmask; - return createWrapper.apply(null, bindData); - } - // fast path for `_.bind` - var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper; - return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]); - } - - /** - * Used by `escape` to convert characters to HTML entities. - * - * @private - * @param {string} match The matched character to escape. - * @returns {string} Returns the escaped character. - */ - function escapeHtmlChar(match) { - return htmlEscapes[match]; - } - - /** - * Gets the appropriate "indexOf" function. If the `_.indexOf` method is - * customized, this method returns the custom method, otherwise it returns - * the `baseIndexOf` function. - * - * @private - * @returns {Function} Returns the "indexOf" function. - */ - function getIndexOf() { - var result = (result = lodash.indexOf) === indexOf ? baseIndexOf : result; - return result; - } - - /** - * Checks if `value` is a native function. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a native function, else `false`. - */ - function isNative(value) { - return typeof value == 'function' && reNative.test(value); - } - - /** - * Sets `this` binding data on a given function. - * - * @private - * @param {Function} func The function to set data on. - * @param {Array} value The data array to set. - */ - var setBindData = !defineProperty ? noop : function(func, value) { - descriptor.value = value; - defineProperty(func, '__bindData__', descriptor); - }; - - /** - * A fallback implementation of `isPlainObject` which checks if a given value - * is an object created by the `Object` constructor, assuming objects created - * by the `Object` constructor have no inherited enumerable properties and that - * there are no `Object.prototype` extensions. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - */ - function shimIsPlainObject(value) { - var ctor, - result; - - // avoid non Object objects, `arguments` objects, and DOM elements - if (!(value && toString.call(value) == objectClass) || - (ctor = value.constructor, isFunction(ctor) && !(ctor instanceof ctor))) { - return false; - } - // In most environments an object's own properties are iterated before - // its inherited properties. If the last iterated property is an object's - // own property then there are no inherited enumerable properties. - forIn(value, function(value, key) { - result = key; - }); - return typeof result == 'undefined' || hasOwnProperty.call(value, result); - } - - /** - * Used by `unescape` to convert HTML entities to characters. - * - * @private - * @param {string} match The matched character to unescape. - * @returns {string} Returns the unescaped character. - */ - function unescapeHtmlChar(match) { - return htmlUnescapes[match]; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Checks if `value` is an `arguments` object. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is an `arguments` object, else `false`. - * @example - * - * (function() { return _.isArguments(arguments); })(1, 2, 3); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ - function isArguments(value) { - return value && typeof value == 'object' && typeof value.length == 'number' && - toString.call(value) == argsClass || false; - } - - /** - * Checks if `value` is an array. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is an array, else `false`. - * @example - * - * (function() { return _.isArray(arguments); })(); - * // => false - * - * _.isArray([1, 2, 3]); - * // => true - */ - var isArray = nativeIsArray || function(value) { - return value && typeof value == 'object' && typeof value.length == 'number' && - toString.call(value) == arrayClass || false; - }; - - /** - * A fallback implementation of `Object.keys` which produces an array of the - * given object's own enumerable property names. - * - * @private - * @type Function - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property names. - */ - var shimKeys = function(object) { - var index, iterable = object, result = []; - if (!iterable) return result; - if (!(objectTypes[typeof object])) return result; - for (index in iterable) { - if (hasOwnProperty.call(iterable, index)) { - result.push(index); - } - } - return result - }; - - /** - * Creates an array composed of the own enumerable property names of an object. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property names. - * @example - * - * _.keys({ 'one': 1, 'two': 2, 'three': 3 }); - * // => ['one', 'two', 'three'] (property order is not guaranteed across environments) - */ - var keys = !nativeKeys ? shimKeys : function(object) { - if (!isObject(object)) { - return []; - } - return nativeKeys(object); - }; - - /** - * Used to convert characters to HTML entities: - * - * Though the `>` character is escaped for symmetry, characters like `>` and `/` - * don't require escaping in HTML and have no special meaning unless they're part - * of a tag or an unquoted attribute value. - * http://mathiasbynens.be/notes/ambiguous-ampersands (under "semi-related fun fact") - */ - var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' - }; - - /** Used to convert HTML entities to characters */ - var htmlUnescapes = invert(htmlEscapes); - - /** Used to match HTML entities and HTML characters */ - var reEscapedHtml = RegExp('(' + keys(htmlUnescapes).join('|') + ')', 'g'), - reUnescapedHtml = RegExp('[' + keys(htmlEscapes).join('') + ']', 'g'); - - /*--------------------------------------------------------------------------*/ - - /** - * Assigns own enumerable properties of source object(s) to the destination - * object. Subsequent sources will overwrite property assignments of previous - * sources. If a callback is provided it will be executed to produce the - * assigned values. The callback is bound to `thisArg` and invoked with two - * arguments; (objectValue, sourceValue). - * - * @static - * @memberOf _ - * @type Function - * @alias extend - * @category Objects - * @param {Object} object The destination object. - * @param {...Object} [source] The source objects. - * @param {Function} [callback] The function to customize assigning values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the destination object. - * @example - * - * _.assign({ 'name': 'fred' }, { 'employer': 'slate' }); - * // => { 'name': 'fred', 'employer': 'slate' } - * - * var defaults = _.partialRight(_.assign, function(a, b) { - * return typeof a == 'undefined' ? b : a; - * }); - * - * var object = { 'name': 'barney' }; - * defaults(object, { 'name': 'fred', 'employer': 'slate' }); - * // => { 'name': 'barney', 'employer': 'slate' } - */ - var assign = function(object, source, guard) { - var index, iterable = object, result = iterable; - if (!iterable) return result; - var args = arguments, - argsIndex = 0, - argsLength = typeof guard == 'number' ? 2 : args.length; - if (argsLength > 3 && typeof args[argsLength - 2] == 'function') { - var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2); - } else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') { - callback = args[--argsLength]; - } - while (++argsIndex < argsLength) { - iterable = args[argsIndex]; - if (iterable && objectTypes[typeof iterable]) { - var ownIndex = -1, - ownProps = objectTypes[typeof iterable] && keys(iterable), - length = ownProps ? ownProps.length : 0; - - while (++ownIndex < length) { - index = ownProps[ownIndex]; - result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]; - } - } - } - return result - }; - - /** - * Creates a clone of `value`. If `isDeep` is `true` nested objects will also - * be cloned, otherwise they will be assigned by reference. If a callback - * is provided it will be executed to produce the cloned values. If the - * callback returns `undefined` cloning will be handled by the method instead. - * The callback is bound to `thisArg` and invoked with one argument; (value). - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to clone. - * @param {boolean} [isDeep=false] Specify a deep clone. - * @param {Function} [callback] The function to customize cloning values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the cloned value. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * var shallow = _.clone(characters); - * shallow[0] === characters[0]; - * // => true - * - * var deep = _.clone(characters, true); - * deep[0] === characters[0]; - * // => false - * - * _.mixin({ - * 'clone': _.partialRight(_.clone, function(value) { - * return _.isElement(value) ? value.cloneNode(false) : undefined; - * }) - * }); - * - * var clone = _.clone(document.body); - * clone.childNodes.length; - * // => 0 - */ - function clone(value, isDeep, callback, thisArg) { - // allows working with "Collections" methods without using their `index` - // and `collection` arguments for `isDeep` and `callback` - if (typeof isDeep != 'boolean' && isDeep != null) { - thisArg = callback; - callback = isDeep; - isDeep = false; - } - return baseClone(value, isDeep, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 1)); - } - - /** - * Creates a deep clone of `value`. If a callback is provided it will be - * executed to produce the cloned values. If the callback returns `undefined` - * cloning will be handled by the method instead. The callback is bound to - * `thisArg` and invoked with one argument; (value). - * - * Note: This method is loosely based on the structured clone algorithm. Functions - * and DOM nodes are **not** cloned. The enumerable properties of `arguments` objects and - * objects created by constructors other than `Object` are cloned to plain `Object` objects. - * See http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to deep clone. - * @param {Function} [callback] The function to customize cloning values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the deep cloned value. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * var deep = _.cloneDeep(characters); - * deep[0] === characters[0]; - * // => false - * - * var view = { - * 'label': 'docs', - * 'node': element - * }; - * - * var clone = _.cloneDeep(view, function(value) { - * return _.isElement(value) ? value.cloneNode(true) : undefined; - * }); - * - * clone.node == view.node; - * // => false - */ - function cloneDeep(value, callback, thisArg) { - return baseClone(value, true, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 1)); - } - - /** - * Creates an object that inherits from the given `prototype` object. If a - * `properties` object is provided its own enumerable properties are assigned - * to the created object. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} prototype The object to inherit from. - * @param {Object} [properties] The properties to assign to the object. - * @returns {Object} Returns the new object. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * function Circle() { - * Shape.call(this); - * } - * - * Circle.prototype = _.create(Shape.prototype, { 'constructor': Circle }); - * - * var circle = new Circle; - * circle instanceof Circle; - * // => true - * - * circle instanceof Shape; - * // => true - */ - function create(prototype, properties) { - var result = baseCreate(prototype); - return properties ? assign(result, properties) : result; - } - - /** - * Assigns own enumerable properties of source object(s) to the destination - * object for all destination properties that resolve to `undefined`. Once a - * property is set, additional defaults of the same property will be ignored. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The destination object. - * @param {...Object} [source] The source objects. - * @param- {Object} [guard] Allows working with `_.reduce` without using its - * `key` and `object` arguments as sources. - * @returns {Object} Returns the destination object. - * @example - * - * var object = { 'name': 'barney' }; - * _.defaults(object, { 'name': 'fred', 'employer': 'slate' }); - * // => { 'name': 'barney', 'employer': 'slate' } - */ - var defaults = function(object, source, guard) { - var index, iterable = object, result = iterable; - if (!iterable) return result; - var args = arguments, - argsIndex = 0, - argsLength = typeof guard == 'number' ? 2 : args.length; - while (++argsIndex < argsLength) { - iterable = args[argsIndex]; - if (iterable && objectTypes[typeof iterable]) { - var ownIndex = -1, - ownProps = objectTypes[typeof iterable] && keys(iterable), - length = ownProps ? ownProps.length : 0; - - while (++ownIndex < length) { - index = ownProps[ownIndex]; - if (typeof result[index] == 'undefined') result[index] = iterable[index]; - } - } - } - return result - }; - - /** - * This method is like `_.findIndex` except that it returns the key of the - * first element that passes the callback check, instead of the element itself. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to search. - * @param {Function|Object|string} [callback=identity] The function called per - * iteration. If a property name or object is provided it will be used to - * create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {string|undefined} Returns the key of the found element, else `undefined`. - * @example - * - * var characters = { - * 'barney': { 'age': 36, 'blocked': false }, - * 'fred': { 'age': 40, 'blocked': true }, - * 'pebbles': { 'age': 1, 'blocked': false } - * }; - * - * _.findKey(characters, function(chr) { - * return chr.age < 40; - * }); - * // => 'barney' (property order is not guaranteed across environments) - * - * // using "_.where" callback shorthand - * _.findKey(characters, { 'age': 1 }); - * // => 'pebbles' - * - * // using "_.pluck" callback shorthand - * _.findKey(characters, 'blocked'); - * // => 'fred' - */ - function findKey(object, callback, thisArg) { - var result; - callback = lodash.createCallback(callback, thisArg, 3); - forOwn(object, function(value, key, object) { - if (callback(value, key, object)) { - result = key; - return false; - } - }); - return result; - } - - /** - * This method is like `_.findKey` except that it iterates over elements - * of a `collection` in the opposite order. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to search. - * @param {Function|Object|string} [callback=identity] The function called per - * iteration. If a property name or object is provided it will be used to - * create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {string|undefined} Returns the key of the found element, else `undefined`. - * @example - * - * var characters = { - * 'barney': { 'age': 36, 'blocked': true }, - * 'fred': { 'age': 40, 'blocked': false }, - * 'pebbles': { 'age': 1, 'blocked': true } - * }; - * - * _.findLastKey(characters, function(chr) { - * return chr.age < 40; - * }); - * // => returns `pebbles`, assuming `_.findKey` returns `barney` - * - * // using "_.where" callback shorthand - * _.findLastKey(characters, { 'age': 40 }); - * // => 'fred' - * - * // using "_.pluck" callback shorthand - * _.findLastKey(characters, 'blocked'); - * // => 'pebbles' - */ - function findLastKey(object, callback, thisArg) { - var result; - callback = lodash.createCallback(callback, thisArg, 3); - forOwnRight(object, function(value, key, object) { - if (callback(value, key, object)) { - result = key; - return false; - } - }); - return result; - } - - /** - * Iterates over own and inherited enumerable properties of an object, - * executing the callback for each property. The callback is bound to `thisArg` - * and invoked with three arguments; (value, key, object). Callbacks may exit - * iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * Shape.prototype.move = function(x, y) { - * this.x += x; - * this.y += y; - * }; - * - * _.forIn(new Shape, function(value, key) { - * console.log(key); - * }); - * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments) - */ - var forIn = function(collection, callback, thisArg) { - var index, iterable = collection, result = iterable; - if (!iterable) return result; - if (!objectTypes[typeof iterable]) return result; - callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); - for (index in iterable) { - if (callback(iterable[index], index, collection) === false) return result; - } - return result - }; - - /** - * This method is like `_.forIn` except that it iterates over elements - * of a `collection` in the opposite order. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * Shape.prototype.move = function(x, y) { - * this.x += x; - * this.y += y; - * }; - * - * _.forInRight(new Shape, function(value, key) { - * console.log(key); - * }); - * // => logs 'move', 'y', and 'x' assuming `_.forIn ` logs 'x', 'y', and 'move' - */ - function forInRight(object, callback, thisArg) { - var pairs = []; - - forIn(object, function(value, key) { - pairs.push(key, value); - }); - - var length = pairs.length; - callback = baseCreateCallback(callback, thisArg, 3); - while (length--) { - if (callback(pairs[length--], pairs[length], object) === false) { - break; - } - } - return object; - } - - /** - * Iterates over own enumerable properties of an object, executing the callback - * for each property. The callback is bound to `thisArg` and invoked with three - * arguments; (value, key, object). Callbacks may exit iteration early by - * explicitly returning `false`. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { - * console.log(key); - * }); - * // => logs '0', '1', and 'length' (property order is not guaranteed across environments) - */ - var forOwn = function(collection, callback, thisArg) { - var index, iterable = collection, result = iterable; - if (!iterable) return result; - if (!objectTypes[typeof iterable]) return result; - callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); - var ownIndex = -1, - ownProps = objectTypes[typeof iterable] && keys(iterable), - length = ownProps ? ownProps.length : 0; - - while (++ownIndex < length) { - index = ownProps[ownIndex]; - if (callback(iterable[index], index, collection) === false) return result; - } - return result - }; - - /** - * This method is like `_.forOwn` except that it iterates over elements - * of a `collection` in the opposite order. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * _.forOwnRight({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { - * console.log(key); - * }); - * // => logs 'length', '1', and '0' assuming `_.forOwn` logs '0', '1', and 'length' - */ - function forOwnRight(object, callback, thisArg) { - var props = keys(object), - length = props.length; - - callback = baseCreateCallback(callback, thisArg, 3); - while (length--) { - var key = props[length]; - if (callback(object[key], key, object) === false) { - break; - } - } - return object; - } - - /** - * Creates a sorted array of property names of all enumerable properties, - * own and inherited, of `object` that have function values. - * - * @static - * @memberOf _ - * @alias methods - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property names that have function values. - * @example - * - * _.functions(_); - * // => ['all', 'any', 'bind', 'bindAll', 'clone', 'compact', 'compose', ...] - */ - function functions(object) { - var result = []; - forIn(object, function(value, key) { - if (isFunction(value)) { - result.push(key); - } - }); - return result.sort(); - } - - /** - * Checks if the specified property name exists as a direct property of `object`, - * instead of an inherited property. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @param {string} key The name of the property to check. - * @returns {boolean} Returns `true` if key is a direct property, else `false`. - * @example - * - * _.has({ 'a': 1, 'b': 2, 'c': 3 }, 'b'); - * // => true - */ - function has(object, key) { - return object ? hasOwnProperty.call(object, key) : false; - } - - /** - * Creates an object composed of the inverted keys and values of the given object. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to invert. - * @returns {Object} Returns the created inverted object. - * @example - * - * _.invert({ 'first': 'fred', 'second': 'barney' }); - * // => { 'fred': 'first', 'barney': 'second' } - */ - function invert(object) { - var index = -1, - props = keys(object), - length = props.length, - result = {}; - - while (++index < length) { - var key = props[index]; - result[object[key]] = key; - } - return result; - } - - /** - * Checks if `value` is a boolean value. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a boolean value, else `false`. - * @example - * - * _.isBoolean(null); - * // => false - */ - function isBoolean(value) { - return value === true || value === false || - value && typeof value == 'object' && toString.call(value) == boolClass || false; - } - - /** - * Checks if `value` is a date. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a date, else `false`. - * @example - * - * _.isDate(new Date); - * // => true - */ - function isDate(value) { - return value && typeof value == 'object' && toString.call(value) == dateClass || false; - } - - /** - * Checks if `value` is a DOM element. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a DOM element, else `false`. - * @example - * - * _.isElement(document.body); - * // => true - */ - function isElement(value) { - return value && value.nodeType === 1 || false; - } - - /** - * Checks if `value` is empty. Arrays, strings, or `arguments` objects with a - * length of `0` and objects with no own enumerable properties are considered - * "empty". - * - * @static - * @memberOf _ - * @category Objects - * @param {Array|Object|string} value The value to inspect. - * @returns {boolean} Returns `true` if the `value` is empty, else `false`. - * @example - * - * _.isEmpty([1, 2, 3]); - * // => false - * - * _.isEmpty({}); - * // => true - * - * _.isEmpty(''); - * // => true - */ - function isEmpty(value) { - var result = true; - if (!value) { - return result; - } - var className = toString.call(value), - length = value.length; - - if ((className == arrayClass || className == stringClass || className == argsClass ) || - (className == objectClass && typeof length == 'number' && isFunction(value.splice))) { - return !length; - } - forOwn(value, function() { - return (result = false); - }); - return result; - } - - /** - * Performs a deep comparison between two values to determine if they are - * equivalent to each other. If a callback is provided it will be executed - * to compare values. If the callback returns `undefined` comparisons will - * be handled by the method instead. The callback is bound to `thisArg` and - * invoked with two arguments; (a, b). - * - * @static - * @memberOf _ - * @category Objects - * @param {*} a The value to compare. - * @param {*} b The other value to compare. - * @param {Function} [callback] The function to customize comparing values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'name': 'fred' }; - * var copy = { 'name': 'fred' }; - * - * object == copy; - * // => false - * - * _.isEqual(object, copy); - * // => true - * - * var words = ['hello', 'goodbye']; - * var otherWords = ['hi', 'goodbye']; - * - * _.isEqual(words, otherWords, function(a, b) { - * var reGreet = /^(?:hello|hi)$/i, - * aGreet = _.isString(a) && reGreet.test(a), - * bGreet = _.isString(b) && reGreet.test(b); - * - * return (aGreet || bGreet) ? (aGreet == bGreet) : undefined; - * }); - * // => true - */ - function isEqual(a, b, callback, thisArg) { - return baseIsEqual(a, b, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 2)); - } - - /** - * Checks if `value` is, or can be coerced to, a finite number. - * - * Note: This is not the same as native `isFinite` which will return true for - * booleans and empty strings. See http://es5.github.io/#x15.1.2.5. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is finite, else `false`. - * @example - * - * _.isFinite(-101); - * // => true - * - * _.isFinite('10'); - * // => true - * - * _.isFinite(true); - * // => false - * - * _.isFinite(''); - * // => false - * - * _.isFinite(Infinity); - * // => false - */ - function isFinite(value) { - return nativeIsFinite(value) && !nativeIsNaN(parseFloat(value)); - } - - /** - * Checks if `value` is a function. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - */ - function isFunction(value) { - return typeof value == 'function'; - } - - /** - * Checks if `value` is the language type of Object. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(1); - * // => false - */ - function isObject(value) { - // check if the value is the ECMAScript language type of Object - // http://es5.github.io/#x8 - // and avoid a V8 bug - // http://code.google.com/p/v8/issues/detail?id=2291 - return !!(value && objectTypes[typeof value]); - } - - /** - * Checks if `value` is `NaN`. - * - * Note: This is not the same as native `isNaN` which will return `true` for - * `undefined` and other non-numeric values. See http://es5.github.io/#x15.1.2.4. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is `NaN`, else `false`. - * @example - * - * _.isNaN(NaN); - * // => true - * - * _.isNaN(new Number(NaN)); - * // => true - * - * isNaN(undefined); - * // => true - * - * _.isNaN(undefined); - * // => false - */ - function isNaN(value) { - // `NaN` as a primitive is the only value that is not equal to itself - // (perform the [[Class]] check first to avoid errors with some host objects in IE) - return isNumber(value) && value != +value; - } - - /** - * Checks if `value` is `null`. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is `null`, else `false`. - * @example - * - * _.isNull(null); - * // => true - * - * _.isNull(undefined); - * // => false - */ - function isNull(value) { - return value === null; - } - - /** - * Checks if `value` is a number. - * - * Note: `NaN` is considered a number. See http://es5.github.io/#x8.5. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a number, else `false`. - * @example - * - * _.isNumber(8.4 * 5); - * // => true - */ - function isNumber(value) { - return typeof value == 'number' || - value && typeof value == 'object' && toString.call(value) == numberClass || false; - } - - /** - * Checks if `value` is an object created by the `Object` constructor. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * _.isPlainObject(new Shape); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - */ - var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) { - if (!(value && toString.call(value) == objectClass)) { - return false; - } - var valueOf = value.valueOf, - objProto = isNative(valueOf) && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto); - - return objProto - ? (value == objProto || getPrototypeOf(value) == objProto) - : shimIsPlainObject(value); - }; - - /** - * Checks if `value` is a regular expression. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a regular expression, else `false`. - * @example - * - * _.isRegExp(/fred/); - * // => true - */ - function isRegExp(value) { - return value && typeof value == 'object' && toString.call(value) == regexpClass || false; - } - - /** - * Checks if `value` is a string. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a string, else `false`. - * @example - * - * _.isString('fred'); - * // => true - */ - function isString(value) { - return typeof value == 'string' || - value && typeof value == 'object' && toString.call(value) == stringClass || false; - } - - /** - * Checks if `value` is `undefined`. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - */ - function isUndefined(value) { - return typeof value == 'undefined'; - } - - /** - * Creates an object with the same keys as `object` and values generated by - * running each own enumerable property of `object` through the callback. - * The callback is bound to `thisArg` and invoked with three arguments; - * (value, key, object). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new object with values of the results of each `callback` execution. - * @example - * - * _.mapValues({ 'a': 1, 'b': 2, 'c': 3} , function(num) { return num * 3; }); - * // => { 'a': 3, 'b': 6, 'c': 9 } - * - * var characters = { - * 'fred': { 'name': 'fred', 'age': 40 }, - * 'pebbles': { 'name': 'pebbles', 'age': 1 } - * }; - * - * // using "_.pluck" callback shorthand - * _.mapValues(characters, 'age'); - * // => { 'fred': 40, 'pebbles': 1 } - */ - function mapValues(object, callback, thisArg) { - var result = {}; - callback = lodash.createCallback(callback, thisArg, 3); - - forOwn(object, function(value, key, object) { - result[key] = callback(value, key, object); - }); - return result; - } - - /** - * Recursively merges own enumerable properties of the source object(s), that - * don't resolve to `undefined` into the destination object. Subsequent sources - * will overwrite property assignments of previous sources. If a callback is - * provided it will be executed to produce the merged values of the destination - * and source properties. If the callback returns `undefined` merging will - * be handled by the method instead. The callback is bound to `thisArg` and - * invoked with two arguments; (objectValue, sourceValue). - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The destination object. - * @param {...Object} [source] The source objects. - * @param {Function} [callback] The function to customize merging properties. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the destination object. - * @example - * - * var names = { - * 'characters': [ - * { 'name': 'barney' }, - * { 'name': 'fred' } - * ] - * }; - * - * var ages = { - * 'characters': [ - * { 'age': 36 }, - * { 'age': 40 } - * ] - * }; - * - * _.merge(names, ages); - * // => { 'characters': [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] } - * - * var food = { - * 'fruits': ['apple'], - * 'vegetables': ['beet'] - * }; - * - * var otherFood = { - * 'fruits': ['banana'], - * 'vegetables': ['carrot'] - * }; - * - * _.merge(food, otherFood, function(a, b) { - * return _.isArray(a) ? a.concat(b) : undefined; - * }); - * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot] } - */ - function merge(object) { - var args = arguments, - length = 2; - - if (!isObject(object)) { - return object; - } - // allows working with `_.reduce` and `_.reduceRight` without using - // their `index` and `collection` arguments - if (typeof args[2] != 'number') { - length = args.length; - } - if (length > 3 && typeof args[length - 2] == 'function') { - var callback = baseCreateCallback(args[--length - 1], args[length--], 2); - } else if (length > 2 && typeof args[length - 1] == 'function') { - callback = args[--length]; - } - var sources = slice(arguments, 1, length), - index = -1, - stackA = getArray(), - stackB = getArray(); - - while (++index < length) { - baseMerge(object, sources[index], callback, stackA, stackB); - } - releaseArray(stackA); - releaseArray(stackB); - return object; - } - - /** - * Creates a shallow clone of `object` excluding the specified properties. - * Property names may be specified as individual arguments or as arrays of - * property names. If a callback is provided it will be executed for each - * property of `object` omitting the properties the callback returns truey - * for. The callback is bound to `thisArg` and invoked with three arguments; - * (value, key, object). - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The source object. - * @param {Function|...string|string[]} [callback] The properties to omit or the - * function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns an object without the omitted properties. - * @example - * - * _.omit({ 'name': 'fred', 'age': 40 }, 'age'); - * // => { 'name': 'fred' } - * - * _.omit({ 'name': 'fred', 'age': 40 }, function(value) { - * return typeof value == 'number'; - * }); - * // => { 'name': 'fred' } - */ - function omit(object, callback, thisArg) { - var result = {}; - if (typeof callback != 'function') { - var props = []; - forIn(object, function(value, key) { - props.push(key); - }); - props = baseDifference(props, baseFlatten(arguments, true, false, 1)); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - result[key] = object[key]; - } - } else { - callback = lodash.createCallback(callback, thisArg, 3); - forIn(object, function(value, key, object) { - if (!callback(value, key, object)) { - result[key] = value; - } - }); - } - return result; - } - - /** - * Creates a two dimensional array of an object's key-value pairs, - * i.e. `[[key1, value1], [key2, value2]]`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns new array of key-value pairs. - * @example - * - * _.pairs({ 'barney': 36, 'fred': 40 }); - * // => [['barney', 36], ['fred', 40]] (property order is not guaranteed across environments) - */ - function pairs(object) { - var index = -1, - props = keys(object), - length = props.length, - result = Array(length); - - while (++index < length) { - var key = props[index]; - result[index] = [key, object[key]]; - } - return result; - } - - /** - * Creates a shallow clone of `object` composed of the specified properties. - * Property names may be specified as individual arguments or as arrays of - * property names. If a callback is provided it will be executed for each - * property of `object` picking the properties the callback returns truey - * for. The callback is bound to `thisArg` and invoked with three arguments; - * (value, key, object). - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The source object. - * @param {Function|...string|string[]} [callback] The function called per - * iteration or property names to pick, specified as individual property - * names or arrays of property names. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns an object composed of the picked properties. - * @example - * - * _.pick({ 'name': 'fred', '_userid': 'fred1' }, 'name'); - * // => { 'name': 'fred' } - * - * _.pick({ 'name': 'fred', '_userid': 'fred1' }, function(value, key) { - * return key.charAt(0) != '_'; - * }); - * // => { 'name': 'fred' } - */ - function pick(object, callback, thisArg) { - var result = {}; - if (typeof callback != 'function') { - var index = -1, - props = baseFlatten(arguments, true, false, 1), - length = isObject(object) ? props.length : 0; - - while (++index < length) { - var key = props[index]; - if (key in object) { - result[key] = object[key]; - } - } - } else { - callback = lodash.createCallback(callback, thisArg, 3); - forIn(object, function(value, key, object) { - if (callback(value, key, object)) { - result[key] = value; - } - }); - } - return result; - } - - /** - * An alternative to `_.reduce` this method transforms `object` to a new - * `accumulator` object which is the result of running each of its own - * enumerable properties through a callback, with each callback execution - * potentially mutating the `accumulator` object. The callback is bound to - * `thisArg` and invoked with four arguments; (accumulator, value, key, object). - * Callbacks may exit iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Array|Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [accumulator] The custom accumulator value. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the accumulated value. - * @example - * - * var squares = _.transform([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], function(result, num) { - * num *= num; - * if (num % 2) { - * return result.push(num) < 3; - * } - * }); - * // => [1, 9, 25] - * - * var mapped = _.transform({ 'a': 1, 'b': 2, 'c': 3 }, function(result, num, key) { - * result[key] = num * 3; - * }); - * // => { 'a': 3, 'b': 6, 'c': 9 } - */ - function transform(object, callback, accumulator, thisArg) { - var isArr = isArray(object); - if (accumulator == null) { - if (isArr) { - accumulator = []; - } else { - var ctor = object && object.constructor, - proto = ctor && ctor.prototype; - - accumulator = baseCreate(proto); - } - } - if (callback) { - callback = lodash.createCallback(callback, thisArg, 4); - (isArr ? forEach : forOwn)(object, function(value, index, object) { - return callback(accumulator, value, index, object); - }); - } - return accumulator; - } - - /** - * Creates an array composed of the own enumerable property values of `object`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property values. - * @example - * - * _.values({ 'one': 1, 'two': 2, 'three': 3 }); - * // => [1, 2, 3] (property order is not guaranteed across environments) - */ - function values(object) { - var index = -1, - props = keys(object), - length = props.length, - result = Array(length); - - while (++index < length) { - result[index] = object[props[index]]; - } - return result; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Creates an array of elements from the specified indexes, or keys, of the - * `collection`. Indexes may be specified as individual arguments or as arrays - * of indexes. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {...(number|number[]|string|string[])} [index] The indexes of `collection` - * to retrieve, specified as individual indexes or arrays of indexes. - * @returns {Array} Returns a new array of elements corresponding to the - * provided indexes. - * @example - * - * _.at(['a', 'b', 'c', 'd', 'e'], [0, 2, 4]); - * // => ['a', 'c', 'e'] - * - * _.at(['fred', 'barney', 'pebbles'], 0, 2); - * // => ['fred', 'pebbles'] - */ - function at(collection) { - var args = arguments, - index = -1, - props = baseFlatten(args, true, false, 1), - length = (args[2] && args[2][args[1]] === collection) ? 1 : props.length, - result = Array(length); - - while(++index < length) { - result[index] = collection[props[index]]; - } - return result; - } - - /** - * Checks if a given value is present in a collection using strict equality - * for comparisons, i.e. `===`. If `fromIndex` is negative, it is used as the - * offset from the end of the collection. - * - * @static - * @memberOf _ - * @alias include - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {*} target The value to check for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {boolean} Returns `true` if the `target` element is found, else `false`. - * @example - * - * _.contains([1, 2, 3], 1); - * // => true - * - * _.contains([1, 2, 3], 1, 2); - * // => false - * - * _.contains({ 'name': 'fred', 'age': 40 }, 'fred'); - * // => true - * - * _.contains('pebbles', 'eb'); - * // => true - */ - function contains(collection, target, fromIndex) { - var index = -1, - indexOf = getIndexOf(), - length = collection ? collection.length : 0, - result = false; - - fromIndex = (fromIndex < 0 ? nativeMax(0, length + fromIndex) : fromIndex) || 0; - if (isArray(collection)) { - result = indexOf(collection, target, fromIndex) > -1; - } else if (typeof length == 'number') { - result = (isString(collection) ? collection.indexOf(target, fromIndex) : indexOf(collection, target, fromIndex)) > -1; - } else { - forOwn(collection, function(value) { - if (++index >= fromIndex) { - return !(result = value === target); - } - }); - } - return result; - } - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` through the callback. The corresponding value - * of each key is the number of times the key was returned by the callback. - * The callback is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.countBy([4.3, 6.1, 6.4], function(num) { return Math.floor(num); }); - * // => { '4': 1, '6': 2 } - * - * _.countBy([4.3, 6.1, 6.4], function(num) { return this.floor(num); }, Math); - * // => { '4': 1, '6': 2 } - * - * _.countBy(['one', 'two', 'three'], 'length'); - * // => { '3': 2, '5': 1 } - */ - var countBy = createAggregator(function(result, value, key) { - (hasOwnProperty.call(result, key) ? result[key]++ : result[key] = 1); - }); - - /** - * Checks if the given callback returns truey value for **all** elements of - * a collection. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias all - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {boolean} Returns `true` if all elements passed the callback check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes']); - * // => false - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.every(characters, 'age'); - * // => true - * - * // using "_.where" callback shorthand - * _.every(characters, { 'age': 36 }); - * // => false - */ - function every(collection, callback, thisArg) { - var result = true; - callback = lodash.createCallback(callback, thisArg, 3); - - var index = -1, - length = collection ? collection.length : 0; - - if (typeof length == 'number') { - while (++index < length) { - if (!(result = !!callback(collection[index], index, collection))) { - break; - } - } - } else { - forOwn(collection, function(value, index, collection) { - return (result = !!callback(value, index, collection)); - }); - } - return result; - } - - /** - * Iterates over elements of a collection, returning an array of all elements - * the callback returns truey for. The callback is bound to `thisArg` and - * invoked with three arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias select - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of elements that passed the callback check. - * @example - * - * var evens = _.filter([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; }); - * // => [2, 4, 6] - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': false }, - * { 'name': 'fred', 'age': 40, 'blocked': true } - * ]; - * - * // using "_.pluck" callback shorthand - * _.filter(characters, 'blocked'); - * // => [{ 'name': 'fred', 'age': 40, 'blocked': true }] - * - * // using "_.where" callback shorthand - * _.filter(characters, { 'age': 36 }); - * // => [{ 'name': 'barney', 'age': 36, 'blocked': false }] - */ - function filter(collection, callback, thisArg) { - var result = []; - callback = lodash.createCallback(callback, thisArg, 3); - - var index = -1, - length = collection ? collection.length : 0; - - if (typeof length == 'number') { - while (++index < length) { - var value = collection[index]; - if (callback(value, index, collection)) { - result.push(value); - } - } - } else { - forOwn(collection, function(value, index, collection) { - if (callback(value, index, collection)) { - result.push(value); - } - }); - } - return result; - } - - /** - * Iterates over elements of a collection, returning the first element that - * the callback returns truey for. The callback is bound to `thisArg` and - * invoked with three arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias detect, findWhere - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the found element, else `undefined`. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': false }, - * { 'name': 'fred', 'age': 40, 'blocked': true }, - * { 'name': 'pebbles', 'age': 1, 'blocked': false } - * ]; - * - * _.find(characters, function(chr) { - * return chr.age < 40; - * }); - * // => { 'name': 'barney', 'age': 36, 'blocked': false } - * - * // using "_.where" callback shorthand - * _.find(characters, { 'age': 1 }); - * // => { 'name': 'pebbles', 'age': 1, 'blocked': false } - * - * // using "_.pluck" callback shorthand - * _.find(characters, 'blocked'); - * // => { 'name': 'fred', 'age': 40, 'blocked': true } - */ - function find(collection, callback, thisArg) { - callback = lodash.createCallback(callback, thisArg, 3); - - var index = -1, - length = collection ? collection.length : 0; - - if (typeof length == 'number') { - while (++index < length) { - var value = collection[index]; - if (callback(value, index, collection)) { - return value; - } - } - } else { - var result; - forOwn(collection, function(value, index, collection) { - if (callback(value, index, collection)) { - result = value; - return false; - } - }); - return result; - } - } - - /** - * This method is like `_.find` except that it iterates over elements - * of a `collection` from right to left. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the found element, else `undefined`. - * @example - * - * _.findLast([1, 2, 3, 4], function(num) { - * return num % 2 == 1; - * }); - * // => 3 - */ - function findLast(collection, callback, thisArg) { - var result; - callback = lodash.createCallback(callback, thisArg, 3); - forEachRight(collection, function(value, index, collection) { - if (callback(value, index, collection)) { - result = value; - return false; - } - }); - return result; - } - - /** - * Iterates over elements of a collection, executing the callback for each - * element. The callback is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). Callbacks may exit iteration early by - * explicitly returning `false`. - * - * Note: As with other "Collections" methods, objects with a `length` property - * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn` - * may be used for object iteration. - * - * @static - * @memberOf _ - * @alias each - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array|Object|string} Returns `collection`. - * @example - * - * _([1, 2, 3]).forEach(function(num) { console.log(num); }).join(','); - * // => logs each number and returns '1,2,3' - * - * _.forEach({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { console.log(num); }); - * // => logs each number and returns the object (property order is not guaranteed across environments) - */ - function forEach(collection, callback, thisArg) { - var index = -1, - length = collection ? collection.length : 0; - - callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); - if (typeof length == 'number') { - while (++index < length) { - if (callback(collection[index], index, collection) === false) { - break; - } - } - } else { - forOwn(collection, callback); - } - return collection; - } - - /** - * This method is like `_.forEach` except that it iterates over elements - * of a `collection` from right to left. - * - * @static - * @memberOf _ - * @alias eachRight - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array|Object|string} Returns `collection`. - * @example - * - * _([1, 2, 3]).forEachRight(function(num) { console.log(num); }).join(','); - * // => logs each number from right to left and returns '3,2,1' - */ - function forEachRight(collection, callback, thisArg) { - var length = collection ? collection.length : 0; - callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); - if (typeof length == 'number') { - while (length--) { - if (callback(collection[length], length, collection) === false) { - break; - } - } - } else { - var props = keys(collection); - length = props.length; - forOwn(collection, function(value, key, collection) { - key = props ? props[--length] : --length; - return callback(collection[key], key, collection); - }); - } - return collection; - } - - /** - * Creates an object composed of keys generated from the results of running - * each element of a collection through the callback. The corresponding value - * of each key is an array of the elements responsible for generating the key. - * The callback is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false` - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.groupBy([4.2, 6.1, 6.4], function(num) { return Math.floor(num); }); - * // => { '4': [4.2], '6': [6.1, 6.4] } - * - * _.groupBy([4.2, 6.1, 6.4], function(num) { return this.floor(num); }, Math); - * // => { '4': [4.2], '6': [6.1, 6.4] } - * - * // using "_.pluck" callback shorthand - * _.groupBy(['one', 'two', 'three'], 'length'); - * // => { '3': ['one', 'two'], '5': ['three'] } - */ - var groupBy = createAggregator(function(result, value, key) { - (hasOwnProperty.call(result, key) ? result[key] : result[key] = []).push(value); - }); - - /** - * Creates an object composed of keys generated from the results of running - * each element of the collection through the given callback. The corresponding - * value of each key is the last element responsible for generating the key. - * The callback is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * var keys = [ - * { 'dir': 'left', 'code': 97 }, - * { 'dir': 'right', 'code': 100 } - * ]; - * - * _.indexBy(keys, 'dir'); - * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } - * - * _.indexBy(keys, function(key) { return String.fromCharCode(key.code); }); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } - * - * _.indexBy(characters, function(key) { this.fromCharCode(key.code); }, String); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } - */ - var indexBy = createAggregator(function(result, value, key) { - result[key] = value; - }); - - /** - * Invokes the method named by `methodName` on each element in the `collection` - * returning an array of the results of each invoked method. Additional arguments - * will be provided to each invoked method. If `methodName` is a function it - * will be invoked for, and `this` bound to, each element in the `collection`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|string} methodName The name of the method to invoke or - * the function invoked per iteration. - * @param {...*} [arg] Arguments to invoke the method with. - * @returns {Array} Returns a new array of the results of each invoked method. - * @example - * - * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort'); - * // => [[1, 5, 7], [1, 2, 3]] - * - * _.invoke([123, 456], String.prototype.split, ''); - * // => [['1', '2', '3'], ['4', '5', '6']] - */ - function invoke(collection, methodName) { - var args = slice(arguments, 2), - index = -1, - isFunc = typeof methodName == 'function', - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - forEach(collection, function(value) { - result[++index] = (isFunc ? methodName : value[methodName]).apply(value, args); - }); - return result; - } - - /** - * Creates an array of values by running each element in the collection - * through the callback. The callback is bound to `thisArg` and invoked with - * three arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias collect - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of the results of each `callback` execution. - * @example - * - * _.map([1, 2, 3], function(num) { return num * 3; }); - * // => [3, 6, 9] - * - * _.map({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { return num * 3; }); - * // => [3, 6, 9] (property order is not guaranteed across environments) - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.map(characters, 'name'); - * // => ['barney', 'fred'] - */ - function map(collection, callback, thisArg) { - var index = -1, - length = collection ? collection.length : 0; - - callback = lodash.createCallback(callback, thisArg, 3); - if (typeof length == 'number') { - var result = Array(length); - while (++index < length) { - result[index] = callback(collection[index], index, collection); - } - } else { - result = []; - forOwn(collection, function(value, key, collection) { - result[++index] = callback(value, key, collection); - }); - } - return result; - } - - /** - * Retrieves the maximum value of a collection. If the collection is empty or - * falsey `-Infinity` is returned. If a callback is provided it will be executed - * for each value in the collection to generate the criterion by which the value - * is ranked. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the maximum value. - * @example - * - * _.max([4, 2, 8, 6]); - * // => 8 - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * _.max(characters, function(chr) { return chr.age; }); - * // => { 'name': 'fred', 'age': 40 }; - * - * // using "_.pluck" callback shorthand - * _.max(characters, 'age'); - * // => { 'name': 'fred', 'age': 40 }; - */ - function max(collection, callback, thisArg) { - var computed = -Infinity, - result = computed; - - // allows working with functions like `_.map` without using - // their `index` argument as a callback - if (typeof callback != 'function' && thisArg && thisArg[callback] === collection) { - callback = null; - } - if (callback == null && isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (value > result) { - result = value; - } - } - } else { - callback = (callback == null && isString(collection)) - ? charAtCallback - : lodash.createCallback(callback, thisArg, 3); - - forEach(collection, function(value, index, collection) { - var current = callback(value, index, collection); - if (current > computed) { - computed = current; - result = value; - } - }); - } - return result; - } - - /** - * Retrieves the minimum value of a collection. If the collection is empty or - * falsey `Infinity` is returned. If a callback is provided it will be executed - * for each value in the collection to generate the criterion by which the value - * is ranked. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the minimum value. - * @example - * - * _.min([4, 2, 8, 6]); - * // => 2 - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * _.min(characters, function(chr) { return chr.age; }); - * // => { 'name': 'barney', 'age': 36 }; - * - * // using "_.pluck" callback shorthand - * _.min(characters, 'age'); - * // => { 'name': 'barney', 'age': 36 }; - */ - function min(collection, callback, thisArg) { - var computed = Infinity, - result = computed; - - // allows working with functions like `_.map` without using - // their `index` argument as a callback - if (typeof callback != 'function' && thisArg && thisArg[callback] === collection) { - callback = null; - } - if (callback == null && isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (value < result) { - result = value; - } - } - } else { - callback = (callback == null && isString(collection)) - ? charAtCallback - : lodash.createCallback(callback, thisArg, 3); - - forEach(collection, function(value, index, collection) { - var current = callback(value, index, collection); - if (current < computed) { - computed = current; - result = value; - } - }); - } - return result; - } - - /** - * Retrieves the value of a specified property from all elements in the collection. - * - * @static - * @memberOf _ - * @type Function - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {string} property The name of the property to pluck. - * @returns {Array} Returns a new array of property values. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * _.pluck(characters, 'name'); - * // => ['barney', 'fred'] - */ - var pluck = map; - - /** - * Reduces a collection to a value which is the accumulated result of running - * each element in the collection through the callback, where each successive - * callback execution consumes the return value of the previous execution. If - * `accumulator` is not provided the first element of the collection will be - * used as the initial `accumulator` value. The callback is bound to `thisArg` - * and invoked with four arguments; (accumulator, value, index|key, collection). - * - * @static - * @memberOf _ - * @alias foldl, inject - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [accumulator] Initial value of the accumulator. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the accumulated value. - * @example - * - * var sum = _.reduce([1, 2, 3], function(sum, num) { - * return sum + num; - * }); - * // => 6 - * - * var mapped = _.reduce({ 'a': 1, 'b': 2, 'c': 3 }, function(result, num, key) { - * result[key] = num * 3; - * return result; - * }, {}); - * // => { 'a': 3, 'b': 6, 'c': 9 } - */ - function reduce(collection, callback, accumulator, thisArg) { - if (!collection) return accumulator; - var noaccum = arguments.length < 3; - callback = lodash.createCallback(callback, thisArg, 4); - - var index = -1, - length = collection.length; - - if (typeof length == 'number') { - if (noaccum) { - accumulator = collection[++index]; - } - while (++index < length) { - accumulator = callback(accumulator, collection[index], index, collection); - } - } else { - forOwn(collection, function(value, index, collection) { - accumulator = noaccum - ? (noaccum = false, value) - : callback(accumulator, value, index, collection) - }); - } - return accumulator; - } - - /** - * This method is like `_.reduce` except that it iterates over elements - * of a `collection` from right to left. - * - * @static - * @memberOf _ - * @alias foldr - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [accumulator] Initial value of the accumulator. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the accumulated value. - * @example - * - * var list = [[0, 1], [2, 3], [4, 5]]; - * var flat = _.reduceRight(list, function(a, b) { return a.concat(b); }, []); - * // => [4, 5, 2, 3, 0, 1] - */ - function reduceRight(collection, callback, accumulator, thisArg) { - var noaccum = arguments.length < 3; - callback = lodash.createCallback(callback, thisArg, 4); - forEachRight(collection, function(value, index, collection) { - accumulator = noaccum - ? (noaccum = false, value) - : callback(accumulator, value, index, collection); - }); - return accumulator; - } - - /** - * The opposite of `_.filter` this method returns the elements of a - * collection that the callback does **not** return truey for. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of elements that failed the callback check. - * @example - * - * var odds = _.reject([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; }); - * // => [1, 3, 5] - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': false }, - * { 'name': 'fred', 'age': 40, 'blocked': true } - * ]; - * - * // using "_.pluck" callback shorthand - * _.reject(characters, 'blocked'); - * // => [{ 'name': 'barney', 'age': 36, 'blocked': false }] - * - * // using "_.where" callback shorthand - * _.reject(characters, { 'age': 36 }); - * // => [{ 'name': 'fred', 'age': 40, 'blocked': true }] - */ - function reject(collection, callback, thisArg) { - callback = lodash.createCallback(callback, thisArg, 3); - return filter(collection, function(value, index, collection) { - return !callback(value, index, collection); - }); - } - - /** - * Retrieves a random element or `n` random elements from a collection. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to sample. - * @param {number} [n] The number of elements to sample. - * @param- {Object} [guard] Allows working with functions like `_.map` - * without using their `index` arguments as `n`. - * @returns {Array} Returns the random sample(s) of `collection`. - * @example - * - * _.sample([1, 2, 3, 4]); - * // => 2 - * - * _.sample([1, 2, 3, 4], 2); - * // => [3, 1] - */ - function sample(collection, n, guard) { - if (collection && typeof collection.length != 'number') { - collection = values(collection); - } - if (n == null || guard) { - return collection ? collection[baseRandom(0, collection.length - 1)] : undefined; - } - var result = shuffle(collection); - result.length = nativeMin(nativeMax(0, n), result.length); - return result; - } - - /** - * Creates an array of shuffled values, using a version of the Fisher-Yates - * shuffle. See http://en.wikipedia.org/wiki/Fisher-Yates_shuffle. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to shuffle. - * @returns {Array} Returns a new shuffled collection. - * @example - * - * _.shuffle([1, 2, 3, 4, 5, 6]); - * // => [4, 1, 6, 3, 5, 2] - */ - function shuffle(collection) { - var index = -1, - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - forEach(collection, function(value) { - var rand = baseRandom(0, ++index); - result[index] = result[rand]; - result[rand] = value; - }); - return result; - } - - /** - * Gets the size of the `collection` by returning `collection.length` for arrays - * and array-like objects or the number of own enumerable properties for objects. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to inspect. - * @returns {number} Returns `collection.length` or number of own enumerable properties. - * @example - * - * _.size([1, 2]); - * // => 2 - * - * _.size({ 'one': 1, 'two': 2, 'three': 3 }); - * // => 3 - * - * _.size('pebbles'); - * // => 7 - */ - function size(collection) { - var length = collection ? collection.length : 0; - return typeof length == 'number' ? length : keys(collection).length; - } - - /** - * Checks if the callback returns a truey value for **any** element of a - * collection. The function returns as soon as it finds a passing value and - * does not iterate over the entire collection. The callback is bound to - * `thisArg` and invoked with three arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias any - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {boolean} Returns `true` if any element passed the callback check, - * else `false`. - * @example - * - * _.some([null, 0, 'yes', false], Boolean); - * // => true - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': false }, - * { 'name': 'fred', 'age': 40, 'blocked': true } - * ]; - * - * // using "_.pluck" callback shorthand - * _.some(characters, 'blocked'); - * // => true - * - * // using "_.where" callback shorthand - * _.some(characters, { 'age': 1 }); - * // => false - */ - function some(collection, callback, thisArg) { - var result; - callback = lodash.createCallback(callback, thisArg, 3); - - var index = -1, - length = collection ? collection.length : 0; - - if (typeof length == 'number') { - while (++index < length) { - if ((result = callback(collection[index], index, collection))) { - break; - } - } - } else { - forOwn(collection, function(value, index, collection) { - return !(result = callback(value, index, collection)); - }); - } - return !!result; - } - - /** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in a collection through the callback. This method - * performs a stable sort, that is, it will preserve the original sort order - * of equal elements. The callback is bound to `thisArg` and invoked with - * three arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an array of property names is provided for `callback` the collection - * will be sorted by each property value. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Array|Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of sorted elements. - * @example - * - * _.sortBy([1, 2, 3], function(num) { return Math.sin(num); }); - * // => [3, 1, 2] - * - * _.sortBy([1, 2, 3], function(num) { return this.sin(num); }, Math); - * // => [3, 1, 2] - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 }, - * { 'name': 'barney', 'age': 26 }, - * { 'name': 'fred', 'age': 30 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.map(_.sortBy(characters, 'age'), _.values); - * // => [['barney', 26], ['fred', 30], ['barney', 36], ['fred', 40]] - * - * // sorting by multiple properties - * _.map(_.sortBy(characters, ['name', 'age']), _.values); - * // = > [['barney', 26], ['barney', 36], ['fred', 30], ['fred', 40]] - */ - function sortBy(collection, callback, thisArg) { - var index = -1, - isArr = isArray(callback), - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - if (!isArr) { - callback = lodash.createCallback(callback, thisArg, 3); - } - forEach(collection, function(value, key, collection) { - var object = result[++index] = getObject(); - if (isArr) { - object.criteria = map(callback, function(key) { return value[key]; }); - } else { - (object.criteria = getArray())[0] = callback(value, key, collection); - } - object.index = index; - object.value = value; - }); - - length = result.length; - result.sort(compareAscending); - while (length--) { - var object = result[length]; - result[length] = object.value; - if (!isArr) { - releaseArray(object.criteria); - } - releaseObject(object); - } - return result; - } - - /** - * Converts the `collection` to an array. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to convert. - * @returns {Array} Returns the new converted array. - * @example - * - * (function() { return _.toArray(arguments).slice(1); })(1, 2, 3, 4); - * // => [2, 3, 4] - */ - function toArray(collection) { - if (collection && typeof collection.length == 'number') { - return slice(collection); - } - return values(collection); - } - - /** - * Performs a deep comparison of each element in a `collection` to the given - * `properties` object, returning an array of all elements that have equivalent - * property values. - * - * @static - * @memberOf _ - * @type Function - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Object} props The object of property values to filter by. - * @returns {Array} Returns a new array of elements that have the given properties. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'pets': ['hoppy'] }, - * { 'name': 'fred', 'age': 40, 'pets': ['baby puss', 'dino'] } - * ]; - * - * _.where(characters, { 'age': 36 }); - * // => [{ 'name': 'barney', 'age': 36, 'pets': ['hoppy'] }] - * - * _.where(characters, { 'pets': ['dino'] }); - * // => [{ 'name': 'fred', 'age': 40, 'pets': ['baby puss', 'dino'] }] - */ - var where = filter; - - /*--------------------------------------------------------------------------*/ - - /** - * Creates an array with all falsey values removed. The values `false`, `null`, - * `0`, `""`, `undefined`, and `NaN` are all falsey. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to compact. - * @returns {Array} Returns a new array of filtered values. - * @example - * - * _.compact([0, 1, false, 2, '', 3]); - * // => [1, 2, 3] - */ - function compact(array) { - var index = -1, - length = array ? array.length : 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value) { - result.push(value); - } - } - return result; - } - - /** - * Creates an array excluding all values of the provided arrays using strict - * equality for comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to process. - * @param {...Array} [values] The arrays of values to exclude. - * @returns {Array} Returns a new array of filtered values. - * @example - * - * _.difference([1, 2, 3, 4, 5], [5, 2, 10]); - * // => [1, 3, 4] - */ - function difference(array) { - return baseDifference(array, baseFlatten(arguments, true, true, 1)); - } - - /** - * This method is like `_.find` except that it returns the index of the first - * element that passes the callback check, instead of the element itself. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to search. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': false }, - * { 'name': 'fred', 'age': 40, 'blocked': true }, - * { 'name': 'pebbles', 'age': 1, 'blocked': false } - * ]; - * - * _.findIndex(characters, function(chr) { - * return chr.age < 20; - * }); - * // => 2 - * - * // using "_.where" callback shorthand - * _.findIndex(characters, { 'age': 36 }); - * // => 0 - * - * // using "_.pluck" callback shorthand - * _.findIndex(characters, 'blocked'); - * // => 1 - */ - function findIndex(array, callback, thisArg) { - var index = -1, - length = array ? array.length : 0; - - callback = lodash.createCallback(callback, thisArg, 3); - while (++index < length) { - if (callback(array[index], index, array)) { - return index; - } - } - return -1; - } - - /** - * This method is like `_.findIndex` except that it iterates over elements - * of a `collection` from right to left. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to search. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': true }, - * { 'name': 'fred', 'age': 40, 'blocked': false }, - * { 'name': 'pebbles', 'age': 1, 'blocked': true } - * ]; - * - * _.findLastIndex(characters, function(chr) { - * return chr.age > 30; - * }); - * // => 1 - * - * // using "_.where" callback shorthand - * _.findLastIndex(characters, { 'age': 36 }); - * // => 0 - * - * // using "_.pluck" callback shorthand - * _.findLastIndex(characters, 'blocked'); - * // => 2 - */ - function findLastIndex(array, callback, thisArg) { - var length = array ? array.length : 0; - callback = lodash.createCallback(callback, thisArg, 3); - while (length--) { - if (callback(array[length], length, array)) { - return length; - } - } - return -1; - } - - /** - * Gets the first element or first `n` elements of an array. If a callback - * is provided elements at the beginning of the array are returned as long - * as the callback returns truey. The callback is bound to `thisArg` and - * invoked with three arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias head, take - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|number|string} [callback] The function called - * per element or the number of elements to return. If a property name or - * object is provided it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the first element(s) of `array`. - * @example - * - * _.first([1, 2, 3]); - * // => 1 - * - * _.first([1, 2, 3], 2); - * // => [1, 2] - * - * _.first([1, 2, 3], function(num) { - * return num < 3; - * }); - * // => [1, 2] - * - * var characters = [ - * { 'name': 'barney', 'blocked': true, 'employer': 'slate' }, - * { 'name': 'fred', 'blocked': false, 'employer': 'slate' }, - * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.first(characters, 'blocked'); - * // => [{ 'name': 'barney', 'blocked': true, 'employer': 'slate' }] - * - * // using "_.where" callback shorthand - * _.pluck(_.first(characters, { 'employer': 'slate' }), 'name'); - * // => ['barney', 'fred'] - */ - function first(array, callback, thisArg) { - var n = 0, - length = array ? array.length : 0; - - if (typeof callback != 'number' && callback != null) { - var index = -1; - callback = lodash.createCallback(callback, thisArg, 3); - while (++index < length && callback(array[index], index, array)) { - n++; - } - } else { - n = callback; - if (n == null || thisArg) { - return array ? array[0] : undefined; - } - } - return slice(array, 0, nativeMin(nativeMax(0, n), length)); - } - - /** - * Flattens a nested array (the nesting can be to any depth). If `isShallow` - * is truey, the array will only be flattened a single level. If a callback - * is provided each element of the array is passed through the callback before - * flattening. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to flatten. - * @param {boolean} [isShallow=false] A flag to restrict flattening to a single level. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new flattened array. - * @example - * - * _.flatten([1, [2], [3, [[4]]]]); - * // => [1, 2, 3, 4]; - * - * _.flatten([1, [2], [3, [[4]]]], true); - * // => [1, 2, 3, [[4]]]; - * - * var characters = [ - * { 'name': 'barney', 'age': 30, 'pets': ['hoppy'] }, - * { 'name': 'fred', 'age': 40, 'pets': ['baby puss', 'dino'] } - * ]; - * - * // using "_.pluck" callback shorthand - * _.flatten(characters, 'pets'); - * // => ['hoppy', 'baby puss', 'dino'] - */ - function flatten(array, isShallow, callback, thisArg) { - // juggle arguments - if (typeof isShallow != 'boolean' && isShallow != null) { - thisArg = callback; - callback = (typeof isShallow != 'function' && thisArg && thisArg[isShallow] === array) ? null : isShallow; - isShallow = false; - } - if (callback != null) { - array = map(array, callback, thisArg); - } - return baseFlatten(array, isShallow); - } - - /** - * Gets the index at which the first occurrence of `value` is found using - * strict equality for comparisons, i.e. `===`. If the array is already sorted - * providing `true` for `fromIndex` will run a faster binary search. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {boolean|number} [fromIndex=0] The index to search from or `true` - * to perform a binary search on a sorted array. - * @returns {number} Returns the index of the matched value or `-1`. - * @example - * - * _.indexOf([1, 2, 3, 1, 2, 3], 2); - * // => 1 - * - * _.indexOf([1, 2, 3, 1, 2, 3], 2, 3); - * // => 4 - * - * _.indexOf([1, 1, 2, 2, 3, 3], 2, true); - * // => 2 - */ - function indexOf(array, value, fromIndex) { - if (typeof fromIndex == 'number') { - var length = array ? array.length : 0; - fromIndex = (fromIndex < 0 ? nativeMax(0, length + fromIndex) : fromIndex || 0); - } else if (fromIndex) { - var index = sortedIndex(array, value); - return array[index] === value ? index : -1; - } - return baseIndexOf(array, value, fromIndex); - } - - /** - * Gets all but the last element or last `n` elements of an array. If a - * callback is provided elements at the end of the array are excluded from - * the result as long as the callback returns truey. The callback is bound - * to `thisArg` and invoked with three arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|number|string} [callback=1] The function called - * per element or the number of elements to exclude. If a property name or - * object is provided it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a slice of `array`. - * @example - * - * _.initial([1, 2, 3]); - * // => [1, 2] - * - * _.initial([1, 2, 3], 2); - * // => [1] - * - * _.initial([1, 2, 3], function(num) { - * return num > 1; - * }); - * // => [1] - * - * var characters = [ - * { 'name': 'barney', 'blocked': false, 'employer': 'slate' }, - * { 'name': 'fred', 'blocked': true, 'employer': 'slate' }, - * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.initial(characters, 'blocked'); - * // => [{ 'name': 'barney', 'blocked': false, 'employer': 'slate' }] - * - * // using "_.where" callback shorthand - * _.pluck(_.initial(characters, { 'employer': 'na' }), 'name'); - * // => ['barney', 'fred'] - */ - function initial(array, callback, thisArg) { - var n = 0, - length = array ? array.length : 0; - - if (typeof callback != 'number' && callback != null) { - var index = length; - callback = lodash.createCallback(callback, thisArg, 3); - while (index-- && callback(array[index], index, array)) { - n++; - } - } else { - n = (callback == null || thisArg) ? 1 : callback || n; - } - return slice(array, 0, nativeMin(nativeMax(0, length - n), length)); - } - - /** - * Creates an array of unique values present in all provided arrays using - * strict equality for comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {...Array} [array] The arrays to inspect. - * @returns {Array} Returns an array of shared values. - * @example - * - * _.intersection([1, 2, 3], [5, 2, 1, 4], [2, 1]); - * // => [1, 2] - */ - function intersection() { - var args = [], - argsIndex = -1, - argsLength = arguments.length, - caches = getArray(), - indexOf = getIndexOf(), - trustIndexOf = indexOf === baseIndexOf, - seen = getArray(); - - while (++argsIndex < argsLength) { - var value = arguments[argsIndex]; - if (isArray(value) || isArguments(value)) { - args.push(value); - caches.push(trustIndexOf && value.length >= largeArraySize && - createCache(argsIndex ? args[argsIndex] : seen)); - } - } - var array = args[0], - index = -1, - length = array ? array.length : 0, - result = []; - - outer: - while (++index < length) { - var cache = caches[0]; - value = array[index]; - - if ((cache ? cacheIndexOf(cache, value) : indexOf(seen, value)) < 0) { - argsIndex = argsLength; - (cache || seen).push(value); - while (--argsIndex) { - cache = caches[argsIndex]; - if ((cache ? cacheIndexOf(cache, value) : indexOf(args[argsIndex], value)) < 0) { - continue outer; - } - } - result.push(value); - } - } - while (argsLength--) { - cache = caches[argsLength]; - if (cache) { - releaseObject(cache); - } - } - releaseArray(caches); - releaseArray(seen); - return result; - } - - /** - * Gets the last element or last `n` elements of an array. If a callback is - * provided elements at the end of the array are returned as long as the - * callback returns truey. The callback is bound to `thisArg` and invoked - * with three arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|number|string} [callback] The function called - * per element or the number of elements to return. If a property name or - * object is provided it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the last element(s) of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - * - * _.last([1, 2, 3], 2); - * // => [2, 3] - * - * _.last([1, 2, 3], function(num) { - * return num > 1; - * }); - * // => [2, 3] - * - * var characters = [ - * { 'name': 'barney', 'blocked': false, 'employer': 'slate' }, - * { 'name': 'fred', 'blocked': true, 'employer': 'slate' }, - * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.pluck(_.last(characters, 'blocked'), 'name'); - * // => ['fred', 'pebbles'] - * - * // using "_.where" callback shorthand - * _.last(characters, { 'employer': 'na' }); - * // => [{ 'name': 'pebbles', 'blocked': true, 'employer': 'na' }] - */ - function last(array, callback, thisArg) { - var n = 0, - length = array ? array.length : 0; - - if (typeof callback != 'number' && callback != null) { - var index = length; - callback = lodash.createCallback(callback, thisArg, 3); - while (index-- && callback(array[index], index, array)) { - n++; - } - } else { - n = callback; - if (n == null || thisArg) { - return array ? array[length - 1] : undefined; - } - } - return slice(array, nativeMax(0, length - n)); - } - - /** - * Gets the index at which the last occurrence of `value` is found using strict - * equality for comparisons, i.e. `===`. If `fromIndex` is negative, it is used - * as the offset from the end of the collection. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the matched value or `-1`. - * @example - * - * _.lastIndexOf([1, 2, 3, 1, 2, 3], 2); - * // => 4 - * - * _.lastIndexOf([1, 2, 3, 1, 2, 3], 2, 3); - * // => 1 - */ - function lastIndexOf(array, value, fromIndex) { - var index = array ? array.length : 0; - if (typeof fromIndex == 'number') { - index = (fromIndex < 0 ? nativeMax(0, index + fromIndex) : nativeMin(fromIndex, index - 1)) + 1; - } - while (index--) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * Removes all provided values from the given array using strict equality for - * comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to modify. - * @param {...*} [value] The values to remove. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3, 1, 2, 3]; - * _.pull(array, 2, 3); - * console.log(array); - * // => [1, 1] - */ - function pull(array) { - var args = arguments, - argsIndex = 0, - argsLength = args.length, - length = array ? array.length : 0; - - while (++argsIndex < argsLength) { - var index = -1, - value = args[argsIndex]; - while (++index < length) { - if (array[index] === value) { - splice.call(array, index--, 1); - length--; - } - } - } - return array; - } - - /** - * Creates an array of numbers (positive and/or negative) progressing from - * `start` up to but not including `end`. If `start` is less than `stop` a - * zero-length range is created unless a negative `step` is specified. - * - * @static - * @memberOf _ - * @category Arrays - * @param {number} [start=0] The start of the range. - * @param {number} end The end of the range. - * @param {number} [step=1] The value to increment or decrement by. - * @returns {Array} Returns a new range array. - * @example - * - * _.range(4); - * // => [0, 1, 2, 3] - * - * _.range(1, 5); - * // => [1, 2, 3, 4] - * - * _.range(0, 20, 5); - * // => [0, 5, 10, 15] - * - * _.range(0, -4, -1); - * // => [0, -1, -2, -3] - * - * _.range(1, 4, 0); - * // => [1, 1, 1] - * - * _.range(0); - * // => [] - */ - function range(start, end, step) { - start = +start || 0; - step = typeof step == 'number' ? step : (+step || 1); - - if (end == null) { - end = start; - start = 0; - } - // use `Array(length)` so engines like Chakra and V8 avoid slower modes - // http://youtu.be/XAqIpGU8ZZk#t=17m25s - var index = -1, - length = nativeMax(0, ceil((end - start) / (step || 1))), - result = Array(length); - - while (++index < length) { - result[index] = start; - start += step; - } - return result; - } - - /** - * Removes all elements from an array that the callback returns truey for - * and returns an array of removed elements. The callback is bound to `thisArg` - * and invoked with three arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to modify. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of removed elements. - * @example - * - * var array = [1, 2, 3, 4, 5, 6]; - * var evens = _.remove(array, function(num) { return num % 2 == 0; }); - * - * console.log(array); - * // => [1, 3, 5] - * - * console.log(evens); - * // => [2, 4, 6] - */ - function remove(array, callback, thisArg) { - var index = -1, - length = array ? array.length : 0, - result = []; - - callback = lodash.createCallback(callback, thisArg, 3); - while (++index < length) { - var value = array[index]; - if (callback(value, index, array)) { - result.push(value); - splice.call(array, index--, 1); - length--; - } - } - return result; - } - - /** - * The opposite of `_.initial` this method gets all but the first element or - * first `n` elements of an array. If a callback function is provided elements - * at the beginning of the array are excluded from the result as long as the - * callback returns truey. The callback is bound to `thisArg` and invoked - * with three arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias drop, tail - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|number|string} [callback=1] The function called - * per element or the number of elements to exclude. If a property name or - * object is provided it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a slice of `array`. - * @example - * - * _.rest([1, 2, 3]); - * // => [2, 3] - * - * _.rest([1, 2, 3], 2); - * // => [3] - * - * _.rest([1, 2, 3], function(num) { - * return num < 3; - * }); - * // => [3] - * - * var characters = [ - * { 'name': 'barney', 'blocked': true, 'employer': 'slate' }, - * { 'name': 'fred', 'blocked': false, 'employer': 'slate' }, - * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.pluck(_.rest(characters, 'blocked'), 'name'); - * // => ['fred', 'pebbles'] - * - * // using "_.where" callback shorthand - * _.rest(characters, { 'employer': 'slate' }); - * // => [{ 'name': 'pebbles', 'blocked': true, 'employer': 'na' }] - */ - function rest(array, callback, thisArg) { - if (typeof callback != 'number' && callback != null) { - var n = 0, - index = -1, - length = array ? array.length : 0; - - callback = lodash.createCallback(callback, thisArg, 3); - while (++index < length && callback(array[index], index, array)) { - n++; - } - } else { - n = (callback == null || thisArg) ? 1 : nativeMax(0, callback); - } - return slice(array, n); - } - - /** - * Uses a binary search to determine the smallest index at which a value - * should be inserted into a given sorted array in order to maintain the sort - * order of the array. If a callback is provided it will be executed for - * `value` and each element of `array` to compute their sort ranking. The - * callback is bound to `thisArg` and invoked with one argument; (value). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to inspect. - * @param {*} value The value to evaluate. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedIndex([20, 30, 50], 40); - * // => 2 - * - * // using "_.pluck" callback shorthand - * _.sortedIndex([{ 'x': 20 }, { 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x'); - * // => 2 - * - * var dict = { - * 'wordToNumber': { 'twenty': 20, 'thirty': 30, 'fourty': 40, 'fifty': 50 } - * }; - * - * _.sortedIndex(['twenty', 'thirty', 'fifty'], 'fourty', function(word) { - * return dict.wordToNumber[word]; - * }); - * // => 2 - * - * _.sortedIndex(['twenty', 'thirty', 'fifty'], 'fourty', function(word) { - * return this.wordToNumber[word]; - * }, dict); - * // => 2 - */ - function sortedIndex(array, value, callback, thisArg) { - var low = 0, - high = array ? array.length : low; - - // explicitly reference `identity` for better inlining in Firefox - callback = callback ? lodash.createCallback(callback, thisArg, 1) : identity; - value = callback(value); - - while (low < high) { - var mid = (low + high) >>> 1; - (callback(array[mid]) < value) - ? low = mid + 1 - : high = mid; - } - return low; - } - - /** - * Creates an array of unique values, in order, of the provided arrays using - * strict equality for comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {...Array} [array] The arrays to inspect. - * @returns {Array} Returns an array of combined values. - * @example - * - * _.union([1, 2, 3], [5, 2, 1, 4], [2, 1]); - * // => [1, 2, 3, 5, 4] - */ - function union() { - return baseUniq(baseFlatten(arguments, true, true)); - } - - /** - * Creates a duplicate-value-free version of an array using strict equality - * for comparisons, i.e. `===`. If the array is sorted, providing - * `true` for `isSorted` will use a faster algorithm. If a callback is provided - * each element of `array` is passed through the callback before uniqueness - * is computed. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias unique - * @category Arrays - * @param {Array} array The array to process. - * @param {boolean} [isSorted=false] A flag to indicate that `array` is sorted. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a duplicate-value-free array. - * @example - * - * _.uniq([1, 2, 1, 3, 1]); - * // => [1, 2, 3] - * - * _.uniq([1, 1, 2, 2, 3], true); - * // => [1, 2, 3] - * - * _.uniq(['A', 'b', 'C', 'a', 'B', 'c'], function(letter) { return letter.toLowerCase(); }); - * // => ['A', 'b', 'C'] - * - * _.uniq([1, 2.5, 3, 1.5, 2, 3.5], function(num) { return this.floor(num); }, Math); - * // => [1, 2.5, 3] - * - * // using "_.pluck" callback shorthand - * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - function uniq(array, isSorted, callback, thisArg) { - // juggle arguments - if (typeof isSorted != 'boolean' && isSorted != null) { - thisArg = callback; - callback = (typeof isSorted != 'function' && thisArg && thisArg[isSorted] === array) ? null : isSorted; - isSorted = false; - } - if (callback != null) { - callback = lodash.createCallback(callback, thisArg, 3); - } - return baseUniq(array, isSorted, callback); - } - - /** - * Creates an array excluding all provided values using strict equality for - * comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to filter. - * @param {...*} [value] The values to exclude. - * @returns {Array} Returns a new array of filtered values. - * @example - * - * _.without([1, 2, 1, 0, 3, 1, 4], 0, 1); - * // => [2, 3, 4] - */ - function without(array) { - return baseDifference(array, slice(arguments, 1)); - } - - /** - * Creates an array that is the symmetric difference of the provided arrays. - * See http://en.wikipedia.org/wiki/Symmetric_difference. - * - * @static - * @memberOf _ - * @category Arrays - * @param {...Array} [array] The arrays to inspect. - * @returns {Array} Returns an array of values. - * @example - * - * _.xor([1, 2, 3], [5, 2, 1, 4]); - * // => [3, 5, 4] - * - * _.xor([1, 2, 5], [2, 3, 5], [3, 4, 5]); - * // => [1, 4, 5] - */ - function xor() { - var index = -1, - length = arguments.length; - - while (++index < length) { - var array = arguments[index]; - if (isArray(array) || isArguments(array)) { - var result = result - ? baseUniq(baseDifference(result, array).concat(baseDifference(array, result))) - : array; - } - } - return result || []; - } - - /** - * Creates an array of grouped elements, the first of which contains the first - * elements of the given arrays, the second of which contains the second - * elements of the given arrays, and so on. - * - * @static - * @memberOf _ - * @alias unzip - * @category Arrays - * @param {...Array} [array] Arrays to process. - * @returns {Array} Returns a new array of grouped elements. - * @example - * - * _.zip(['fred', 'barney'], [30, 40], [true, false]); - * // => [['fred', 30, true], ['barney', 40, false]] - */ - function zip() { - var array = arguments.length > 1 ? arguments : arguments[0], - index = -1, - length = array ? max(pluck(array, 'length')) : 0, - result = Array(length < 0 ? 0 : length); - - while (++index < length) { - result[index] = pluck(array, index); - } - return result; - } - - /** - * Creates an object composed from arrays of `keys` and `values`. Provide - * either a single two dimensional array, i.e. `[[key1, value1], [key2, value2]]` - * or two arrays, one of `keys` and one of corresponding `values`. - * - * @static - * @memberOf _ - * @alias object - * @category Arrays - * @param {Array} keys The array of keys. - * @param {Array} [values=[]] The array of values. - * @returns {Object} Returns an object composed of the given keys and - * corresponding values. - * @example - * - * _.zipObject(['fred', 'barney'], [30, 40]); - * // => { 'fred': 30, 'barney': 40 } - */ - function zipObject(keys, values) { - var index = -1, - length = keys ? keys.length : 0, - result = {}; - - if (!values && length && !isArray(keys[0])) { - values = []; - } - while (++index < length) { - var key = keys[index]; - if (values) { - result[key] = values[index]; - } else if (key) { - result[key[0]] = key[1]; - } - } - return result; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Creates a function that executes `func`, with the `this` binding and - * arguments of the created function, only after being called `n` times. - * - * @static - * @memberOf _ - * @category Functions - * @param {number} n The number of times the function must be called before - * `func` is executed. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var saves = ['profile', 'settings']; - * - * var done = _.after(saves.length, function() { - * console.log('Done saving!'); - * }); - * - * _.forEach(saves, function(type) { - * asyncSave({ 'type': type, 'complete': done }); - * }); - * // => logs 'Done saving!', after all saves have completed - */ - function after(n, func) { - if (!isFunction(func)) { - throw new TypeError; - } - return function() { - if (--n < 1) { - return func.apply(this, arguments); - } - }; - } - - /** - * Creates a function that, when called, invokes `func` with the `this` - * binding of `thisArg` and prepends any additional `bind` arguments to those - * provided to the bound function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to bind. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {...*} [arg] Arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var func = function(greeting) { - * return greeting + ' ' + this.name; - * }; - * - * func = _.bind(func, { 'name': 'fred' }, 'hi'); - * func(); - * // => 'hi fred' - */ - function bind(func, thisArg) { - return arguments.length > 2 - ? createWrapper(func, 17, slice(arguments, 2), null, thisArg) - : createWrapper(func, 1, null, null, thisArg); - } - - /** - * Binds methods of an object to the object itself, overwriting the existing - * method. Method names may be specified as individual arguments or as arrays - * of method names. If no method names are provided all the function properties - * of `object` will be bound. - * - * @static - * @memberOf _ - * @category Functions - * @param {Object} object The object to bind and assign the bound methods to. - * @param {...string} [methodName] The object method names to - * bind, specified as individual method names or arrays of method names. - * @returns {Object} Returns `object`. - * @example - * - * var view = { - * 'label': 'docs', - * 'onClick': function() { console.log('clicked ' + this.label); } - * }; - * - * _.bindAll(view); - * jQuery('#docs').on('click', view.onClick); - * // => logs 'clicked docs', when the button is clicked - */ - function bindAll(object) { - var funcs = arguments.length > 1 ? baseFlatten(arguments, true, false, 1) : functions(object), - index = -1, - length = funcs.length; - - while (++index < length) { - var key = funcs[index]; - object[key] = createWrapper(object[key], 1, null, null, object); - } - return object; - } - - /** - * Creates a function that, when called, invokes the method at `object[key]` - * and prepends any additional `bindKey` arguments to those provided to the bound - * function. This method differs from `_.bind` by allowing bound functions to - * reference methods that will be redefined or don't yet exist. - * See http://michaux.ca/articles/lazy-function-definition-pattern. - * - * @static - * @memberOf _ - * @category Functions - * @param {Object} object The object the method belongs to. - * @param {string} key The key of the method. - * @param {...*} [arg] Arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var object = { - * 'name': 'fred', - * 'greet': function(greeting) { - * return greeting + ' ' + this.name; - * } - * }; - * - * var func = _.bindKey(object, 'greet', 'hi'); - * func(); - * // => 'hi fred' - * - * object.greet = function(greeting) { - * return greeting + 'ya ' + this.name + '!'; - * }; - * - * func(); - * // => 'hiya fred!' - */ - function bindKey(object, key) { - return arguments.length > 2 - ? createWrapper(key, 19, slice(arguments, 2), null, object) - : createWrapper(key, 3, null, null, object); - } - - /** - * Creates a function that is the composition of the provided functions, - * where each function consumes the return value of the function that follows. - * For example, composing the functions `f()`, `g()`, and `h()` produces `f(g(h()))`. - * Each function is executed with the `this` binding of the composed function. - * - * @static - * @memberOf _ - * @category Functions - * @param {...Function} [func] Functions to compose. - * @returns {Function} Returns the new composed function. - * @example - * - * var realNameMap = { - * 'pebbles': 'penelope' - * }; - * - * var format = function(name) { - * name = realNameMap[name.toLowerCase()] || name; - * return name.charAt(0).toUpperCase() + name.slice(1).toLowerCase(); - * }; - * - * var greet = function(formatted) { - * return 'Hiya ' + formatted + '!'; - * }; - * - * var welcome = _.compose(greet, format); - * welcome('pebbles'); - * // => 'Hiya Penelope!' - */ - function compose() { - var funcs = arguments, - length = funcs.length; - - while (length--) { - if (!isFunction(funcs[length])) { - throw new TypeError; - } - } - return function() { - var args = arguments, - length = funcs.length; - - while (length--) { - args = [funcs[length].apply(this, args)]; - } - return args[0]; - }; - } - - /** - * Creates a function which accepts one or more arguments of `func` that when - * invoked either executes `func` returning its result, if all `func` arguments - * have been provided, or returns a function that accepts one or more of the - * remaining `func` arguments, and so on. The arity of `func` can be specified - * if `func.length` is not sufficient. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @returns {Function} Returns the new curried function. - * @example - * - * var curried = _.curry(function(a, b, c) { - * console.log(a + b + c); - * }); - * - * curried(1)(2)(3); - * // => 6 - * - * curried(1, 2)(3); - * // => 6 - * - * curried(1, 2, 3); - * // => 6 - */ - function curry(func, arity) { - arity = typeof arity == 'number' ? arity : (+arity || func.length); - return createWrapper(func, 4, null, null, null, arity); - } - - /** - * Creates a function that will delay the execution of `func` until after - * `wait` milliseconds have elapsed since the last time it was invoked. - * Provide an options object to indicate that `func` should be invoked on - * the leading and/or trailing edge of the `wait` timeout. Subsequent calls - * to the debounced function will return the result of the last `func` call. - * - * Note: If `leading` and `trailing` options are `true` `func` will be called - * on the trailing edge of the timeout only if the the debounced function is - * invoked more than once during the `wait` timeout. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to debounce. - * @param {number} wait The number of milliseconds to delay. - * @param {Object} [options] The options object. - * @param {boolean} [options.leading=false] Specify execution on the leading edge of the timeout. - * @param {number} [options.maxWait] The maximum time `func` is allowed to be delayed before it's called. - * @param {boolean} [options.trailing=true] Specify execution on the trailing edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * // avoid costly calculations while the window size is in flux - * var lazyLayout = _.debounce(calculateLayout, 150); - * jQuery(window).on('resize', lazyLayout); - * - * // execute `sendMail` when the click event is fired, debouncing subsequent calls - * jQuery('#postbox').on('click', _.debounce(sendMail, 300, { - * 'leading': true, - * 'trailing': false - * }); - * - * // ensure `batchLog` is executed once after 1 second of debounced calls - * var source = new EventSource('/stream'); - * source.addEventListener('message', _.debounce(batchLog, 250, { - * 'maxWait': 1000 - * }, false); - */ - function debounce(func, wait, options) { - var args, - maxTimeoutId, - result, - stamp, - thisArg, - timeoutId, - trailingCall, - lastCalled = 0, - maxWait = false, - trailing = true; - - if (!isFunction(func)) { - throw new TypeError; - } - wait = nativeMax(0, wait) || 0; - if (options === true) { - var leading = true; - trailing = false; - } else if (isObject(options)) { - leading = options.leading; - maxWait = 'maxWait' in options && (nativeMax(wait, options.maxWait) || 0); - trailing = 'trailing' in options ? options.trailing : trailing; - } - var delayed = function() { - var remaining = wait - (now() - stamp); - if (remaining <= 0) { - if (maxTimeoutId) { - clearTimeout(maxTimeoutId); - } - var isCalled = trailingCall; - maxTimeoutId = timeoutId = trailingCall = undefined; - if (isCalled) { - lastCalled = now(); - result = func.apply(thisArg, args); - if (!timeoutId && !maxTimeoutId) { - args = thisArg = null; - } - } - } else { - timeoutId = setTimeout(delayed, remaining); - } - }; - - var maxDelayed = function() { - if (timeoutId) { - clearTimeout(timeoutId); - } - maxTimeoutId = timeoutId = trailingCall = undefined; - if (trailing || (maxWait !== wait)) { - lastCalled = now(); - result = func.apply(thisArg, args); - if (!timeoutId && !maxTimeoutId) { - args = thisArg = null; - } - } - }; - - return function() { - args = arguments; - stamp = now(); - thisArg = this; - trailingCall = trailing && (timeoutId || !leading); - - if (maxWait === false) { - var leadingCall = leading && !timeoutId; - } else { - if (!maxTimeoutId && !leading) { - lastCalled = stamp; - } - var remaining = maxWait - (stamp - lastCalled), - isCalled = remaining <= 0; - - if (isCalled) { - if (maxTimeoutId) { - maxTimeoutId = clearTimeout(maxTimeoutId); - } - lastCalled = stamp; - result = func.apply(thisArg, args); - } - else if (!maxTimeoutId) { - maxTimeoutId = setTimeout(maxDelayed, remaining); - } - } - if (isCalled && timeoutId) { - timeoutId = clearTimeout(timeoutId); - } - else if (!timeoutId && wait !== maxWait) { - timeoutId = setTimeout(delayed, wait); - } - if (leadingCall) { - isCalled = true; - result = func.apply(thisArg, args); - } - if (isCalled && !timeoutId && !maxTimeoutId) { - args = thisArg = null; - } - return result; - }; - } - - /** - * Defers executing the `func` function until the current call stack has cleared. - * Additional arguments will be provided to `func` when it is invoked. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to defer. - * @param {...*} [arg] Arguments to invoke the function with. - * @returns {number} Returns the timer id. - * @example - * - * _.defer(function(text) { console.log(text); }, 'deferred'); - * // logs 'deferred' after one or more milliseconds - */ - function defer(func) { - if (!isFunction(func)) { - throw new TypeError; - } - var args = slice(arguments, 1); - return setTimeout(function() { func.apply(undefined, args); }, 1); - } - - /** - * Executes the `func` function after `wait` milliseconds. Additional arguments - * will be provided to `func` when it is invoked. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay execution. - * @param {...*} [arg] Arguments to invoke the function with. - * @returns {number} Returns the timer id. - * @example - * - * _.delay(function(text) { console.log(text); }, 1000, 'later'); - * // => logs 'later' after one second - */ - function delay(func, wait) { - if (!isFunction(func)) { - throw new TypeError; - } - var args = slice(arguments, 2); - return setTimeout(function() { func.apply(undefined, args); }, wait); - } - - /** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided it will be used to determine the cache key for storing the result - * based on the arguments provided to the memoized function. By default, the - * first argument provided to the memoized function is used as the cache key. - * The `func` is executed with the `this` binding of the memoized function. - * The result cache is exposed as the `cache` property on the memoized function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] A function used to resolve the cache key. - * @returns {Function} Returns the new memoizing function. - * @example - * - * var fibonacci = _.memoize(function(n) { - * return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2); - * }); - * - * fibonacci(9) - * // => 34 - * - * var data = { - * 'fred': { 'name': 'fred', 'age': 40 }, - * 'pebbles': { 'name': 'pebbles', 'age': 1 } - * }; - * - * // modifying the result cache - * var get = _.memoize(function(name) { return data[name]; }, _.identity); - * get('pebbles'); - * // => { 'name': 'pebbles', 'age': 1 } - * - * get.cache.pebbles.name = 'penelope'; - * get('pebbles'); - * // => { 'name': 'penelope', 'age': 1 } - */ - function memoize(func, resolver) { - if (!isFunction(func)) { - throw new TypeError; - } - var memoized = function() { - var cache = memoized.cache, - key = resolver ? resolver.apply(this, arguments) : keyPrefix + arguments[0]; - - return hasOwnProperty.call(cache, key) - ? cache[key] - : (cache[key] = func.apply(this, arguments)); - } - memoized.cache = {}; - return memoized; - } - - /** - * Creates a function that is restricted to execute `func` once. Repeat calls to - * the function will return the value of the first call. The `func` is executed - * with the `this` binding of the created function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var initialize = _.once(createApplication); - * initialize(); - * initialize(); - * // `initialize` executes `createApplication` once - */ - function once(func) { - var ran, - result; - - if (!isFunction(func)) { - throw new TypeError; - } - return function() { - if (ran) { - return result; - } - ran = true; - result = func.apply(this, arguments); - - // clear the `func` variable so the function may be garbage collected - func = null; - return result; - }; - } - - /** - * Creates a function that, when called, invokes `func` with any additional - * `partial` arguments prepended to those provided to the new function. This - * method is similar to `_.bind` except it does **not** alter the `this` binding. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [arg] Arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * var greet = function(greeting, name) { return greeting + ' ' + name; }; - * var hi = _.partial(greet, 'hi'); - * hi('fred'); - * // => 'hi fred' - */ - function partial(func) { - return createWrapper(func, 16, slice(arguments, 1)); - } - - /** - * This method is like `_.partial` except that `partial` arguments are - * appended to those provided to the new function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [arg] Arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * var defaultsDeep = _.partialRight(_.merge, _.defaults); - * - * var options = { - * 'variable': 'data', - * 'imports': { 'jq': $ } - * }; - * - * defaultsDeep(options, _.templateSettings); - * - * options.variable - * // => 'data' - * - * options.imports - * // => { '_': _, 'jq': $ } - */ - function partialRight(func) { - return createWrapper(func, 32, null, slice(arguments, 1)); - } - - /** - * Creates a function that, when executed, will only call the `func` function - * at most once per every `wait` milliseconds. Provide an options object to - * indicate that `func` should be invoked on the leading and/or trailing edge - * of the `wait` timeout. Subsequent calls to the throttled function will - * return the result of the last `func` call. - * - * Note: If `leading` and `trailing` options are `true` `func` will be called - * on the trailing edge of the timeout only if the the throttled function is - * invoked more than once during the `wait` timeout. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to throttle. - * @param {number} wait The number of milliseconds to throttle executions to. - * @param {Object} [options] The options object. - * @param {boolean} [options.leading=true] Specify execution on the leading edge of the timeout. - * @param {boolean} [options.trailing=true] Specify execution on the trailing edge of the timeout. - * @returns {Function} Returns the new throttled function. - * @example - * - * // avoid excessively updating the position while scrolling - * var throttled = _.throttle(updatePosition, 100); - * jQuery(window).on('scroll', throttled); - * - * // execute `renewToken` when the click event is fired, but not more than once every 5 minutes - * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, { - * 'trailing': false - * })); - */ - function throttle(func, wait, options) { - var leading = true, - trailing = true; - - if (!isFunction(func)) { - throw new TypeError; - } - if (options === false) { - leading = false; - } else if (isObject(options)) { - leading = 'leading' in options ? options.leading : leading; - trailing = 'trailing' in options ? options.trailing : trailing; - } - debounceOptions.leading = leading; - debounceOptions.maxWait = wait; - debounceOptions.trailing = trailing; - - return debounce(func, wait, debounceOptions); - } - - /** - * Creates a function that provides `value` to the wrapper function as its - * first argument. Additional arguments provided to the function are appended - * to those provided to the wrapper function. The wrapper is executed with - * the `this` binding of the created function. - * - * @static - * @memberOf _ - * @category Functions - * @param {*} value The value to wrap. - * @param {Function} wrapper The wrapper function. - * @returns {Function} Returns the new function. - * @example - * - * var p = _.wrap(_.escape, function(func, text) { - * return '

    ' + func(text) + '

    '; - * }); - * - * p('Fred, Wilma, & Pebbles'); - * // => '

    Fred, Wilma, & Pebbles

    ' - */ - function wrap(value, wrapper) { - return createWrapper(wrapper, 16, [value]); - } - - /*--------------------------------------------------------------------------*/ - - /** - * Creates a function that returns `value`. - * - * @static - * @memberOf _ - * @category Utilities - * @param {*} value The value to return from the new function. - * @returns {Function} Returns the new function. - * @example - * - * var object = { 'name': 'fred' }; - * var getter = _.constant(object); - * getter() === object; - * // => true - */ - function constant(value) { - return function() { - return value; - }; - } - - /** - * Produces a callback bound to an optional `thisArg`. If `func` is a property - * name the created callback will return the property value for a given element. - * If `func` is an object the created callback will return `true` for elements - * that contain the equivalent object properties, otherwise it will return `false`. - * - * @static - * @memberOf _ - * @category Utilities - * @param {*} [func=identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of the created callback. - * @param {number} [argCount] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // wrap to create custom callback shorthands - * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) { - * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback); - * return !match ? func(callback, thisArg) : function(object) { - * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3]; - * }; - * }); - * - * _.filter(characters, 'age__gt38'); - * // => [{ 'name': 'fred', 'age': 40 }] - */ - function createCallback(func, thisArg, argCount) { - var type = typeof func; - if (func == null || type == 'function') { - return baseCreateCallback(func, thisArg, argCount); - } - // handle "_.pluck" style callback shorthands - if (type != 'object') { - return property(func); - } - var props = keys(func), - key = props[0], - a = func[key]; - - // handle "_.where" style callback shorthands - if (props.length == 1 && a === a && !isObject(a)) { - // fast path the common case of providing an object with a single - // property containing a primitive value - return function(object) { - var b = object[key]; - return a === b && (a !== 0 || (1 / a == 1 / b)); - }; - } - return function(object) { - var length = props.length, - result = false; - - while (length--) { - if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) { - break; - } - } - return result; - }; - } - - /** - * Converts the characters `&`, `<`, `>`, `"`, and `'` in `string` to their - * corresponding HTML entities. - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} string The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escape('Fred, Wilma, & Pebbles'); - * // => 'Fred, Wilma, & Pebbles' - */ - function escape(string) { - return string == null ? '' : String(string).replace(reUnescapedHtml, escapeHtmlChar); - } - - /** - * This method returns the first argument provided to it. - * - * @static - * @memberOf _ - * @category Utilities - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example - * - * var object = { 'name': 'fred' }; - * _.identity(object) === object; - * // => true - */ - function identity(value) { - return value; - } - - /** - * Adds function properties of a source object to the destination object. - * If `object` is a function methods will be added to its prototype as well. - * - * @static - * @memberOf _ - * @category Utilities - * @param {Function|Object} [object=lodash] object The destination object. - * @param {Object} source The object of functions to add. - * @param {Object} [options] The options object. - * @param {boolean} [options.chain=true] Specify whether the functions added are chainable. - * @example - * - * function capitalize(string) { - * return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase(); - * } - * - * _.mixin({ 'capitalize': capitalize }); - * _.capitalize('fred'); - * // => 'Fred' - * - * _('fred').capitalize().value(); - * // => 'Fred' - * - * _.mixin({ 'capitalize': capitalize }, { 'chain': false }); - * _('fred').capitalize(); - * // => 'Fred' - */ - function mixin(object, source, options) { - var chain = true, - methodNames = source && functions(source); - - if (!source || (!options && !methodNames.length)) { - if (options == null) { - options = source; - } - ctor = lodashWrapper; - source = object; - object = lodash; - methodNames = functions(source); - } - if (options === false) { - chain = false; - } else if (isObject(options) && 'chain' in options) { - chain = options.chain; - } - var ctor = object, - isFunc = isFunction(ctor); - - forEach(methodNames, function(methodName) { - var func = object[methodName] = source[methodName]; - if (isFunc) { - ctor.prototype[methodName] = function() { - var chainAll = this.__chain__, - value = this.__wrapped__, - args = [value]; - - push.apply(args, arguments); - var result = func.apply(object, args); - if (chain || chainAll) { - if (value === result && isObject(result)) { - return this; - } - result = new ctor(result); - result.__chain__ = chainAll; - } - return result; - }; - } - }); - } - - /** - * Reverts the '_' variable to its previous value and returns a reference to - * the `lodash` function. - * - * @static - * @memberOf _ - * @category Utilities - * @returns {Function} Returns the `lodash` function. - * @example - * - * var lodash = _.noConflict(); - */ - function noConflict() { - context._ = oldDash; - return this; - } - - /** - * A no-operation function. - * - * @static - * @memberOf _ - * @category Utilities - * @example - * - * var object = { 'name': 'fred' }; - * _.noop(object) === undefined; - * // => true - */ - function noop() { - // no operation performed - } - - /** - * Gets the number of milliseconds that have elapsed since the Unix epoch - * (1 January 1970 00:00:00 UTC). - * - * @static - * @memberOf _ - * @category Utilities - * @example - * - * var stamp = _.now(); - * _.defer(function() { console.log(_.now() - stamp); }); - * // => logs the number of milliseconds it took for the deferred function to be called - */ - var now = isNative(now = Date.now) && now || function() { - return new Date().getTime(); - }; - - /** - * Converts the given value into an integer of the specified radix. - * If `radix` is `undefined` or `0` a `radix` of `10` is used unless the - * `value` is a hexadecimal, in which case a `radix` of `16` is used. - * - * Note: This method avoids differences in native ES3 and ES5 `parseInt` - * implementations. See http://es5.github.io/#E. - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} value The value to parse. - * @param {number} [radix] The radix used to interpret the value to parse. - * @returns {number} Returns the new integer value. - * @example - * - * _.parseInt('08'); - * // => 8 - */ - var parseInt = nativeParseInt(whitespace + '08') == 8 ? nativeParseInt : function(value, radix) { - // Firefox < 21 and Opera < 15 follow the ES3 specified implementation of `parseInt` - return nativeParseInt(isString(value) ? value.replace(reLeadingSpacesAndZeros, '') : value, radix || 0); - }; - - /** - * Creates a "_.pluck" style function, which returns the `key` value of a - * given object. - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} key The name of the property to retrieve. - * @returns {Function} Returns the new function. - * @example - * - * var characters = [ - * { 'name': 'fred', 'age': 40 }, - * { 'name': 'barney', 'age': 36 } - * ]; - * - * var getName = _.property('name'); - * - * _.map(characters, getName); - * // => ['barney', 'fred'] - * - * _.sortBy(characters, getName); - * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] - */ - function property(key) { - return function(object) { - return object[key]; - }; - } - - /** - * Produces a random number between `min` and `max` (inclusive). If only one - * argument is provided a number between `0` and the given number will be - * returned. If `floating` is truey or either `min` or `max` are floats a - * floating-point number will be returned instead of an integer. - * - * @static - * @memberOf _ - * @category Utilities - * @param {number} [min=0] The minimum possible value. - * @param {number} [max=1] The maximum possible value. - * @param {boolean} [floating=false] Specify returning a floating-point number. - * @returns {number} Returns a random number. - * @example - * - * _.random(0, 5); - * // => an integer between 0 and 5 - * - * _.random(5); - * // => also an integer between 0 and 5 - * - * _.random(5, true); - * // => a floating-point number between 0 and 5 - * - * _.random(1.2, 5.2); - * // => a floating-point number between 1.2 and 5.2 - */ - function random(min, max, floating) { - var noMin = min == null, - noMax = max == null; - - if (floating == null) { - if (typeof min == 'boolean' && noMax) { - floating = min; - min = 1; - } - else if (!noMax && typeof max == 'boolean') { - floating = max; - noMax = true; - } - } - if (noMin && noMax) { - max = 1; - } - min = +min || 0; - if (noMax) { - max = min; - min = 0; - } else { - max = +max || 0; - } - if (floating || min % 1 || max % 1) { - var rand = nativeRandom(); - return nativeMin(min + (rand * (max - min + parseFloat('1e-' + ((rand +'').length - 1)))), max); - } - return baseRandom(min, max); - } - - /** - * Resolves the value of property `key` on `object`. If `key` is a function - * it will be invoked with the `this` binding of `object` and its result returned, - * else the property value is returned. If `object` is falsey then `undefined` - * is returned. - * - * @static - * @memberOf _ - * @category Utilities - * @param {Object} object The object to inspect. - * @param {string} key The name of the property to resolve. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { - * 'cheese': 'crumpets', - * 'stuff': function() { - * return 'nonsense'; - * } - * }; - * - * _.result(object, 'cheese'); - * // => 'crumpets' - * - * _.result(object, 'stuff'); - * // => 'nonsense' - */ - function result(object, key) { - if (object) { - var value = object[key]; - return isFunction(value) ? object[key]() : value; - } - } - - /** - * A micro-templating method that handles arbitrary delimiters, preserves - * whitespace, and correctly escapes quotes within interpolated code. - * - * Note: In the development build, `_.template` utilizes sourceURLs for easier - * debugging. See http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl - * - * For more information on precompiling templates see: - * http://lodash.com/custom-builds - * - * For more information on Chrome extension sandboxes see: - * http://developer.chrome.com/stable/extensions/sandboxingEval.html - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} text The template text. - * @param {Object} data The data object used to populate the text. - * @param {Object} [options] The options object. - * @param {RegExp} [options.escape] The "escape" delimiter. - * @param {RegExp} [options.evaluate] The "evaluate" delimiter. - * @param {Object} [options.imports] An object to import into the template as local variables. - * @param {RegExp} [options.interpolate] The "interpolate" delimiter. - * @param {string} [sourceURL] The sourceURL of the template's compiled source. - * @param {string} [variable] The data object variable name. - * @returns {Function|string} Returns a compiled function when no `data` object - * is given, else it returns the interpolated text. - * @example - * - * // using the "interpolate" delimiter to create a compiled template - * var compiled = _.template('hello <%= name %>'); - * compiled({ 'name': 'fred' }); - * // => 'hello fred' - * - * // using the "escape" delimiter to escape HTML in data property values - * _.template('<%- value %>', { 'value': ' - -// Sets Math.random to a PRNG initialized using the given explicit seed. -Math.seedrandom('hello.'); -console.log(Math.random()); // Always 0.9282578795792454 -console.log(Math.random()); // Always 0.3752569768646784 - -// Sets Math.random to an ARC4-based PRNG that is autoseeded using the -// current time, dom state, and other accumulated local entropy. -// The generated seed string is returned. -Math.seedrandom(); -console.log(Math.random()); // Reasonably unpredictable. - -// Seeds using the given explicit seed mixed with accumulated entropy. -Math.seedrandom('added entropy.', { entropy: true }); -console.log(Math.random()); // As unpredictable as added entropy. - -// Use "new" to create a local prng without altering Math.random. -var myrng = new Math.seedrandom('hello.'); -console.log(myrng()); // Always 0.9282578795792454 - - -Node.js usage -------------- - -npm install seedrandom - -// Local PRNG: does not affect Math.random. -var seedrandom = require('seedrandom'); -var rng = seedrandom('hello.'); -console.log(rng()); // Always 0.9282578795792454 - -// Autoseeded ARC4-based PRNG. -rng = seedrandom(); -console.log(rng()); // Reasonably unpredictable. - -// Global PRNG: set Math.random. -seedrandom('hello.', { global: true }); -console.log(Math.random()); // Always 0.9282578795792454 - -// Mixing accumulated entropy. -rng = seedrandom('added entropy.', { entropy: true }); -console.log(rng()); // As unpredictable as added entropy. - - -Require.js usage ----------------- - -Similar to node.js usage: - -bower install seedrandom - -require(['seedrandom'], function(seedrandom) { - var rng = seedrandom('hello.'); - console.log(rng()); // Always 0.9282578795792454 -}); - - -Network seeding via a script tag --------------------------------- - - - - - -Examples of manipulating the seed for various purposes: - -var seed = Math.seedrandom(); // Use prng with an automatic seed. -document.write(Math.random()); // Pretty much unpredictable x. - -var rng = new Math.seedrandom(seed); // A new prng with the same seed. -document.write(rng()); // Repeat the 'unpredictable' x. - -function reseed(event, count) { // Define a custom entropy collector. - var t = []; - function w(e) { - t.push([e.pageX, e.pageY, +new Date]); - if (t.length < count) { return; } - document.removeEventListener(event, w); - Math.seedrandom(t, { entropy: true }); - } - document.addEventListener(event, w); -} -reseed('mousemove', 100); // Reseed after 100 mouse moves. - -The "pass" option can be used to get both the prng and the seed. -The following returns both an autoseeded prng and the seed as an object, -without mutating Math.random: - -var obj = Math.seedrandom(null, { pass: function(prng, seed) { - return { random: prng, seed: seed }; -}}); - - -Version notes -------------- - -The random number sequence is the same as version 1.0 for string seeds. -* Version 2.0 changed the sequence for non-string seeds. -* Version 2.1 speeds seeding and uses window.crypto to autoseed if present. -* Version 2.2 alters non-crypto autoseeding to sweep up entropy from plugins. -* Version 2.3 adds support for "new", module loading, and a null seed arg. -* Version 2.3.1 adds a build environment, module packaging, and tests. -* Version 2.3.4 fixes bugs on IE8, and switches to MIT license. -* Version 2.3.6 adds a readable options object argument. - -The standard ARC4 key scheduler cycles short keys, which means that -seedrandom('ab') is equivalent to seedrandom('abab') and 'ababab'. -Therefore it is a good idea to add a terminator to avoid trivial -equivalences on short string seeds, e.g., Math.seedrandom(str + '\0'). -Starting with version 2.0, a terminator is added automatically for -non-string seeds, so seeding with the number 111 is the same as seeding -with '111\0'. - -When seedrandom() is called with zero args or a null seed, it uses a -seed drawn from the browser crypto object if present. If there is no -crypto support, seedrandom() uses the current time, the native rng, -and a walk of several DOM objects to collect a few bits of entropy. - -Each time the one- or two-argument forms of seedrandom are called, -entropy from the passed seed is accumulated in a pool to help generate -future seeds for the zero- and two-argument forms of seedrandom. - -On speed - This javascript implementation of Math.random() is several -times slower than the built-in Math.random() because it is not native -code, but that is typically fast enough. Some details (timings on -Chrome 25 on a 2010 vintage macbook): - -* seeded Math.random() - avg less than 0.0002 milliseconds per call -* seedrandom('explicit.') - avg less than 0.2 milliseconds per call -* seedrandom('explicit.', true) - avg less than 0.2 milliseconds per call -* seedrandom() with crypto - avg less than 0.2 milliseconds per call - -Autoseeding without crypto is somewhat slower, about 20-30 milliseconds on -a 2012 windows 7 1.5ghz i5 laptop, as seen on Firefox 19, IE 10, and Opera. -Seeded rng calls themselves are fast across these browsers, with slowest -numbers on Opera at about 0.0005 ms per seeded Math.random(). - - -LICENSE (MIT) -------------- - -Copyright (c)2014 David Bau. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -*/ - -/** - * All code is in an anonymous closure to keep the global namespace clean. - */ -(function ( - global, pool, math, width, chunks, digits, module, define, rngname) { - -// -// The following constants are related to IEEE 754 limits. -// -var startdenom = math.pow(width, chunks), - significance = math.pow(2, digits), - overflow = significance * 2, - mask = width - 1, - -// -// seedrandom() -// This is the seedrandom function described above. -// -impl = math['seed' + rngname] = function(seed, options, callback) { - var key = []; - options = (options == true) ? { entropy: true } : (options || {}); - - // Flatten the seed string or build one from local entropy if needed. - var shortseed = mixkey(flatten( - options.entropy ? [seed, tostring(pool)] : - (seed == null) ? autoseed() : seed, 3), key); - - // Use the seed to initialize an ARC4 generator. - var arc4 = new ARC4(key); - - // Mix the randomness into accumulated entropy. - mixkey(tostring(arc4.S), pool); - - // Calling convention: what to return as a function of prng, seed, is_math. - return (options.pass || callback || - // If called as a method of Math (Math.seedrandom()), mutate Math.random - // because that is how seedrandom.js has worked since v1.0. Otherwise, - // it is a newer calling convention, so return the prng directly. - function(prng, seed, is_math_call) { - if (is_math_call) { math[rngname] = prng; return seed; } - else return prng; - })( - - // This function returns a random double in [0, 1) that contains - // randomness in every bit of the mantissa of the IEEE 754 value. - function() { - var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48 - d = startdenom, // and denominator d = 2 ^ 48. - x = 0; // and no 'extra last byte'. - while (n < significance) { // Fill up all significant digits by - n = (n + x) * width; // shifting numerator and - d *= width; // denominator and generating a - x = arc4.g(1); // new least-significant-byte. - } - while (n >= overflow) { // To avoid rounding up, before adding - n /= 2; // last byte, shift everything - d /= 2; // right using integer math until - x >>>= 1; // we have exactly the desired bits. - } - return (n + x) / d; // Form the number within [0, 1). - }, shortseed, 'global' in options ? options.global : (this == math)); -}; - -// -// ARC4 -// -// An ARC4 implementation. The constructor takes a key in the form of -// an array of at most (width) integers that should be 0 <= x < (width). -// -// The g(count) method returns a pseudorandom integer that concatenates -// the next (count) outputs from ARC4. Its return value is a number x -// that is in the range 0 <= x < (width ^ count). -// -/** @constructor */ -function ARC4(key) { - var t, keylen = key.length, - me = this, i = 0, j = me.i = me.j = 0, s = me.S = []; - - // The empty key [] is treated as [0]. - if (!keylen) { key = [keylen++]; } - - // Set up S using the standard key scheduling algorithm. - while (i < width) { - s[i] = i++; - } - for (i = 0; i < width; i++) { - s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))]; - s[j] = t; - } - - // The "g" method returns the next (count) outputs as one number. - (me.g = function(count) { - // Using instance members instead of closure state nearly doubles speed. - var t, r = 0, - i = me.i, j = me.j, s = me.S; - while (count--) { - t = s[i = mask & (i + 1)]; - r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))]; - } - me.i = i; me.j = j; - return r; - // For robust unpredictability discard an initial batch of values. - // See http://www.rsa.com/rsalabs/node.asp?id=2009 - })(width); -} - -// -// flatten() -// Converts an object tree to nested arrays of strings. -// -function flatten(obj, depth) { - var result = [], typ = (typeof obj), prop; - if (depth && typ == 'object') { - for (prop in obj) { - try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {} - } - } - return (result.length ? result : typ == 'string' ? obj : obj + '\0'); -} - -// -// mixkey() -// Mixes a string seed into a key that is an array of integers, and -// returns a shortened string seed that is equivalent to the result key. -// -function mixkey(seed, key) { - var stringseed = seed + '', smear, j = 0; - while (j < stringseed.length) { - key[mask & j] = - mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++)); - } - return tostring(key); -} - -// -// autoseed() -// Returns an object for autoseeding, using window.crypto if available. -// -/** @param {Uint8Array|Navigator=} seed */ -function autoseed(seed) { - try { - global.crypto.getRandomValues(seed = new Uint8Array(width)); - return tostring(seed); - } catch (e) { - return [+new Date, global, (seed = global.navigator) && seed.plugins, - global.screen, tostring(pool)]; - } -} - -// -// tostring() -// Converts an array of charcodes to a string -// -function tostring(a) { - return String.fromCharCode.apply(0, a); -} - -// -// When seedrandom.js is loaded, we immediately mix a few bits -// from the built-in RNG into the entropy pool. Because we do -// not want to intefere with determinstic PRNG state later, -// seedrandom will not call math.random on its own again after -// initialization. -// -mixkey(math[rngname](), pool); - -// -// Nodejs and AMD support: export the implemenation as a module using -// either convention. -// -if (module && module.exports) { - module.exports = impl; -} else if (define && define.amd) { - define(function() { return impl; }); -} - -// End anonymous scope, and pass initial values. -})( - this, // global window object - [], // pool: entropy pool starts empty - Math, // math: package containing random, pow, and seedrandom - 256, // width: each RC4 output is 0 <= x < 256 - 6, // chunks: at least six RC4 outputs for each double - 52, // digits: there are 52 significant digits in a double - (typeof module) == 'object' && module, // present in node.js - (typeof define) == 'function' && define, // present with an AMD loader - 'random'// rngname: name for Math.random and Math.seedrandom -); diff --git a/client/scripts/lib/socket.io-1.0.6.js b/client/scripts/lib/socket.io-1.0.6.js deleted file mode 100644 index 3cfdaa8..0000000 --- a/client/scripts/lib/socket.io-1.0.6.js +++ /dev/null @@ -1,6172 +0,0 @@ -!function(e){"object"==typeof exports?module.exports=e():"function"==typeof define&&define.amd?define(e):"undefined"!=typeof window?window.io=e():"undefined"!=typeof global?global.io=e():"undefined"!=typeof self&&(self.io=e())}(function(){var define,module,exports; - return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0 && !this.encoding) { - var pack = this.packetBuffer.shift(); - this.packet(pack); - } - }; - - /** - * Clean up transport subscriptions and packet buffer. - * - * @api private - */ - - Manager.prototype.cleanup = function(){ - var sub; - while (sub = this.subs.shift()) sub.destroy(); - - this.packetBuffer = []; - this.encoding = false; - - this.decoder.destroy(); - }; - - /** - * Close the current socket. - * - * @api private - */ - - Manager.prototype.close = - Manager.prototype.disconnect = function(){ - this.skipReconnect = true; - this.engine.close(); - }; - - /** - * Called upon engine close. - * - * @api private - */ - - Manager.prototype.onclose = function(reason){ - debug('close'); - this.cleanup(); - this.readyState = 'closed'; - this.emit('close', reason); - if (this._reconnection && !this.skipReconnect) { - this.reconnect(); - } - }; - - /** - * Attempt a reconnection. - * - * @api private - */ - - Manager.prototype.reconnect = function(){ - if (this.reconnecting) return this; - - var self = this; - this.attempts++; - - if (this.attempts > this._reconnectionAttempts) { - debug('reconnect failed'); - this.emitAll('reconnect_failed'); - this.reconnecting = false; - } else { - var delay = this.attempts * this.reconnectionDelay(); - delay = Math.min(delay, this.reconnectionDelayMax()); - debug('will wait %dms before reconnect attempt', delay); - - this.reconnecting = true; - var timer = setTimeout(function(){ - debug('attempting reconnect'); - self.emitAll('reconnect_attempt', self.attempts); - self.emitAll('reconnecting', self.attempts); - self.open(function(err){ - if (err) { - debug('reconnect attempt error'); - self.reconnecting = false; - self.reconnect(); - self.emitAll('reconnect_error', err.data); - } else { - debug('reconnect success'); - self.onreconnect(); - } - }); - }, delay); - - this.subs.push({ - destroy: function(){ - clearTimeout(timer); - } - }); - } - }; - - /** - * Called upon successful reconnect. - * - * @api private - */ - - Manager.prototype.onreconnect = function(){ - var attempt = this.attempts; - this.attempts = 0; - this.reconnecting = false; - this.emitAll('reconnect', attempt); - }; - - },{"./on":4,"./socket":5,"./url":6,"component-bind":7,"component-emitter":8,"debug":9,"engine.io-client":11,"object-component":37,"socket.io-parser":40}],4:[function(require,module,exports){ - - /** - * Module exports. - */ - - module.exports = on; - - /** - * Helper for subscriptions. - * - * @param {Object|EventEmitter} obj with `Emitter` mixin or `EventEmitter` - * @param {String} event name - * @param {Function} callback - * @api public - */ - - function on(obj, ev, fn) { - obj.on(ev, fn); - return { - destroy: function(){ - obj.removeListener(ev, fn); - } - }; - } - - },{}],5:[function(require,module,exports){ - - /** - * Module dependencies. - */ - - var parser = require('socket.io-parser'); - var Emitter = require('component-emitter'); - var toArray = require('to-array'); - var on = require('./on'); - var bind = require('component-bind'); - var debug = require('debug')('socket.io-client:socket'); - var hasBin = require('has-binary-data'); - var indexOf = require('indexof'); - - /** - * Module exports. - */ - - module.exports = exports = Socket; - - /** - * Internal events (blacklisted). - * These events can't be emitted by the user. - * - * @api private - */ - - var events = { - connect: 1, - connect_error: 1, - connect_timeout: 1, - disconnect: 1, - error: 1, - reconnect: 1, - reconnect_attempt: 1, - reconnect_failed: 1, - reconnect_error: 1, - reconnecting: 1 - }; - - /** - * Shortcut to `Emitter#emit`. - */ - - var emit = Emitter.prototype.emit; - - /** - * `Socket` constructor. - * - * @api public - */ - - function Socket(io, nsp){ - this.io = io; - this.nsp = nsp; - this.json = this; // compat - this.ids = 0; - this.acks = {}; - this.open(); - this.receiveBuffer = []; - this.sendBuffer = []; - this.connected = false; - this.disconnected = true; - this.subEvents(); - } - - /** - * Mix in `Emitter`. - */ - - Emitter(Socket.prototype); - - /** - * Subscribe to open, close and packet events - * - * @api private - */ - - Socket.prototype.subEvents = function() { - var io = this.io; - this.subs = [ - on(io, 'open', bind(this, 'onopen')), - on(io, 'packet', bind(this, 'onpacket')), - on(io, 'close', bind(this, 'onclose')) - ]; - }; - - /** - * Called upon engine `open`. - * - * @api private - */ - - Socket.prototype.open = - Socket.prototype.connect = function(){ - if (this.connected) return this; - - this.io.open(); // ensure open - if ('open' == this.io.readyState) this.onopen(); - return this; - }; - - /** - * Sends a `message` event. - * - * @return {Socket} self - * @api public - */ - - Socket.prototype.send = function(){ - var args = toArray(arguments); - args.unshift('message'); - this.emit.apply(this, args); - return this; - }; - - /** - * Override `emit`. - * If the event is in `events`, it's emitted normally. - * - * @param {String} event name - * @return {Socket} self - * @api public - */ - - Socket.prototype.emit = function(ev){ - if (events.hasOwnProperty(ev)) { - emit.apply(this, arguments); - return this; - } - - var args = toArray(arguments); - var parserType = parser.EVENT; // default - if (hasBin(args)) { parserType = parser.BINARY_EVENT; } // binary - var packet = { type: parserType, data: args }; - - // event ack callback - if ('function' == typeof args[args.length - 1]) { - debug('emitting packet with ack id %d', this.ids); - this.acks[this.ids] = args.pop(); - packet.id = this.ids++; - } - - if (this.connected) { - this.packet(packet); - } else { - this.sendBuffer.push(packet); - } - - return this; - }; - - /** - * Sends a packet. - * - * @param {Object} packet - * @api private - */ - - Socket.prototype.packet = function(packet){ - packet.nsp = this.nsp; - this.io.packet(packet); - }; - - /** - * "Opens" the socket. - * - * @api private - */ - - Socket.prototype.onopen = function(){ - debug('transport is open - connecting'); - - // write connect packet if necessary - if ('/' != this.nsp) { - this.packet({ type: parser.CONNECT }); - } - }; - - /** - * Called upon engine `close`. - * - * @param {String} reason - * @api private - */ - - Socket.prototype.onclose = function(reason){ - debug('close (%s)', reason); - this.connected = false; - this.disconnected = true; - this.emit('disconnect', reason); - }; - - /** - * Called with socket packet. - * - * @param {Object} packet - * @api private - */ - - Socket.prototype.onpacket = function(packet){ - if (packet.nsp != this.nsp) return; - - switch (packet.type) { - case parser.CONNECT: - this.onconnect(); - break; - - case parser.EVENT: - this.onevent(packet); - break; - - case parser.BINARY_EVENT: - this.onevent(packet); - break; - - case parser.ACK: - this.onack(packet); - break; - - case parser.BINARY_ACK: - this.onack(packet); - break; - - case parser.DISCONNECT: - this.ondisconnect(); - break; - - case parser.ERROR: - this.emit('error', packet.data); - break; - } - }; - - /** - * Called upon a server event. - * - * @param {Object} packet - * @api private - */ - - Socket.prototype.onevent = function(packet){ - var args = packet.data || []; - debug('emitting event %j', args); - - if (null != packet.id) { - debug('attaching ack callback to event'); - args.push(this.ack(packet.id)); - } - - if (this.connected) { - emit.apply(this, args); - } else { - this.receiveBuffer.push(args); - } - }; - - /** - * Produces an ack callback to emit with an event. - * - * @api private - */ - - Socket.prototype.ack = function(id){ - var self = this; - var sent = false; - return function(){ - // prevent double callbacks - if (sent) return; - sent = true; - var args = toArray(arguments); - debug('sending ack %j', args); - - var type = hasBin(args) ? parser.BINARY_ACK : parser.ACK; - self.packet({ - type: type, - id: id, - data: args - }); - }; - }; - - /** - * Called upon a server acknowlegement. - * - * @param {Object} packet - * @api private - */ - - Socket.prototype.onack = function(packet){ - debug('calling ack %s with %j', packet.id, packet.data); - var fn = this.acks[packet.id]; - fn.apply(this, packet.data); - delete this.acks[packet.id]; - }; - - /** - * Called upon server connect. - * - * @api private - */ - - Socket.prototype.onconnect = function(){ - this.connected = true; - this.disconnected = false; - this.emit('connect'); - this.emitBuffered(); - }; - - /** - * Emit buffered events (received and emitted). - * - * @api private - */ - - Socket.prototype.emitBuffered = function(){ - var i; - for (i = 0; i < this.receiveBuffer.length; i++) { - emit.apply(this, this.receiveBuffer[i]); - } - this.receiveBuffer = []; - - for (i = 0; i < this.sendBuffer.length; i++) { - this.packet(this.sendBuffer[i]); - } - this.sendBuffer = []; - }; - - /** - * Called upon server disconnect. - * - * @api private - */ - - Socket.prototype.ondisconnect = function(){ - debug('server disconnect (%s)', this.nsp); - this.destroy(); - this.onclose('io server disconnect'); - }; - - /** - * Called upon forced client/server side disconnections, - * this method ensures the manager stops tracking us and - * that reconnections don't get triggered for this. - * - * @api private. - */ - - Socket.prototype.destroy = function(){ - // clean subscriptions to avoid reconnections - for (var i = 0; i < this.subs.length; i++) { - this.subs[i].destroy(); - } - - this.io.destroy(this); - }; - - /** - * Disconnects the socket manually. - * - * @return {Socket} self - * @api public - */ - - Socket.prototype.close = - Socket.prototype.disconnect = function(){ - if (!this.connected) return this; - - debug('performing disconnect (%s)', this.nsp); - this.packet({ type: parser.DISCONNECT }); - - // remove socket from pool - this.destroy(); - - // fire events - this.onclose('io client disconnect'); - return this; - }; - - },{"./on":4,"component-bind":7,"component-emitter":8,"debug":9,"has-binary-data":32,"indexof":36,"socket.io-parser":40,"to-array":43}],6:[function(require,module,exports){ - var global=typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}; - /** - * Module dependencies. - */ - - var parseuri = require('parseuri'); - var debug = require('debug')('socket.io-client:url'); - - /** - * Module exports. - */ - - module.exports = url; - - /** - * URL parser. - * - * @param {String} url - * @param {Object} An object meant to mimic window.location. - * Defaults to window.location. - * @api public - */ - - function url(uri, loc){ - var obj = uri; - - // default to window.location - var loc = loc || global.location; - if (null == uri) uri = loc.protocol + '//' + loc.hostname; - - // relative path support - if ('string' == typeof uri) { - if ('/' == uri.charAt(0)) { - if ('undefined' != typeof loc) { - uri = loc.hostname + uri; - } - } - - if (!/^(https?|wss?):\/\//.test(uri)) { - debug('protocol-less url %s', uri); - if ('undefined' != typeof loc) { - uri = loc.protocol + '//' + uri; - } else { - uri = 'https://' + uri; - } - } - - // parse - debug('parse %s', uri); - obj = parseuri(uri); - } - - // make sure we treat `localhost:80` and `localhost` equally - if (!obj.port) { - if (/^(http|ws)$/.test(obj.protocol)) { - obj.port = '80'; - } - else if (/^(http|ws)s$/.test(obj.protocol)) { - obj.port = '443'; - } - } - - obj.path = obj.path || '/'; - - // define unique id - obj.id = obj.protocol + '://' + obj.host + ':' + obj.port; - // define href - obj.href = obj.protocol + '://' + obj.host + (loc && loc.port == obj.port ? '' : (':' + obj.port)); - - return obj; - } - - },{"debug":9,"parseuri":38}],7:[function(require,module,exports){ - /** - * Slice reference. - */ - - var slice = [].slice; - - /** - * Bind `obj` to `fn`. - * - * @param {Object} obj - * @param {Function|String} fn or string - * @return {Function} - * @api public - */ - - module.exports = function(obj, fn){ - if ('string' == typeof fn) fn = obj[fn]; - if ('function' != typeof fn) throw new Error('bind() requires a function'); - var args = slice.call(arguments, 2); - return function(){ - return fn.apply(obj, args.concat(slice.call(arguments))); - } - }; - - },{}],8:[function(require,module,exports){ - - /** - * Expose `Emitter`. - */ - - module.exports = Emitter; - - /** - * Initialize a new `Emitter`. - * - * @api public - */ - - function Emitter(obj) { - if (obj) return mixin(obj); - }; - - /** - * Mixin the emitter properties. - * - * @param {Object} obj - * @return {Object} - * @api private - */ - - function mixin(obj) { - for (var key in Emitter.prototype) { - obj[key] = Emitter.prototype[key]; - } - return obj; - } - - /** - * Listen on the given `event` with `fn`. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - - Emitter.prototype.on = - Emitter.prototype.addEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - (this._callbacks[event] = this._callbacks[event] || []) - .push(fn); - return this; - }; - - /** - * Adds an `event` listener that will be invoked a single - * time then automatically removed. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - - Emitter.prototype.once = function(event, fn){ - var self = this; - this._callbacks = this._callbacks || {}; - - function on() { - self.off(event, on); - fn.apply(this, arguments); - } - - on.fn = fn; - this.on(event, on); - return this; - }; - - /** - * Remove the given callback for `event` or all - * registered callbacks. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - - Emitter.prototype.off = - Emitter.prototype.removeListener = - Emitter.prototype.removeAllListeners = - Emitter.prototype.removeEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - - // all - if (0 == arguments.length) { - this._callbacks = {}; - return this; - } - - // specific event - var callbacks = this._callbacks[event]; - if (!callbacks) return this; - - // remove all handlers - if (1 == arguments.length) { - delete this._callbacks[event]; - return this; - } - - // remove specific handler - var cb; - for (var i = 0; i < callbacks.length; i++) { - cb = callbacks[i]; - if (cb === fn || cb.fn === fn) { - callbacks.splice(i, 1); - break; - } - } - return this; - }; - - /** - * Emit `event` with the given args. - * - * @param {String} event - * @param {Mixed} ... - * @return {Emitter} - */ - - Emitter.prototype.emit = function(event){ - this._callbacks = this._callbacks || {}; - var args = [].slice.call(arguments, 1) - , callbacks = this._callbacks[event]; - - if (callbacks) { - callbacks = callbacks.slice(0); - for (var i = 0, len = callbacks.length; i < len; ++i) { - callbacks[i].apply(this, args); - } - } - - return this; - }; - - /** - * Return array of callbacks for `event`. - * - * @param {String} event - * @return {Array} - * @api public - */ - - Emitter.prototype.listeners = function(event){ - this._callbacks = this._callbacks || {}; - return this._callbacks[event] || []; - }; - - /** - * Check if this emitter has `event` handlers. - * - * @param {String} event - * @return {Boolean} - * @api public - */ - - Emitter.prototype.hasListeners = function(event){ - return !! this.listeners(event).length; - }; - - },{}],9:[function(require,module,exports){ - - /** - * Expose `debug()` as the module. - */ - - module.exports = debug; - - /** - * Create a debugger with the given `name`. - * - * @param {String} name - * @return {Type} - * @api public - */ - - function debug(name) { - if (!debug.enabled(name)) return function(){}; - - return function(fmt){ - fmt = coerce(fmt); - - var curr = new Date; - var ms = curr - (debug[name] || curr); - debug[name] = curr; - - fmt = name - + ' ' - + fmt - + ' +' + debug.humanize(ms); - - // This hackery is required for IE8 - // where `console.log` doesn't have 'apply' - window.console - && console.log - && Function.prototype.apply.call(console.log, console, arguments); - } - } - - /** - * The currently active debug mode names. - */ - - debug.names = []; - debug.skips = []; - - /** - * Enables a debug mode by name. This can include modes - * separated by a colon and wildcards. - * - * @param {String} name - * @api public - */ - - debug.enable = function(name) { - try { - localStorage.debug = name; - } catch(e){} - - var split = (name || '').split(/[\s,]+/) - , len = split.length; - - for (var i = 0; i < len; i++) { - name = split[i].replace('*', '.*?'); - if (name[0] === '-') { - debug.skips.push(new RegExp('^' + name.substr(1) + '$')); - } - else { - debug.names.push(new RegExp('^' + name + '$')); - } - } - }; - - /** - * Disable debug output. - * - * @api public - */ - - debug.disable = function(){ - debug.enable(''); - }; - - /** - * Humanize the given `ms`. - * - * @param {Number} m - * @return {String} - * @api private - */ - - debug.humanize = function(ms) { - var sec = 1000 - , min = 60 * 1000 - , hour = 60 * min; - - if (ms >= hour) return (ms / hour).toFixed(1) + 'h'; - if (ms >= min) return (ms / min).toFixed(1) + 'm'; - if (ms >= sec) return (ms / sec | 0) + 's'; - return ms + 'ms'; - }; - - /** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - - debug.enabled = function(name) { - for (var i = 0, len = debug.skips.length; i < len; i++) { - if (debug.skips[i].test(name)) { - return false; - } - } - for (var i = 0, len = debug.names.length; i < len; i++) { - if (debug.names[i].test(name)) { - return true; - } - } - return false; - }; - - /** - * Coerce `val`. - */ - - function coerce(val) { - if (val instanceof Error) return val.stack || val.message; - return val; - } - -// persist - - try { - if (window.localStorage) debug.enable(localStorage.debug); - } catch(e){} - - },{}],10:[function(require,module,exports){ - - /** - * Module dependencies. - */ - - var index = require('indexof'); - - /** - * Expose `Emitter`. - */ - - module.exports = Emitter; - - /** - * Initialize a new `Emitter`. - * - * @api public - */ - - function Emitter(obj) { - if (obj) return mixin(obj); - }; - - /** - * Mixin the emitter properties. - * - * @param {Object} obj - * @return {Object} - * @api private - */ - - function mixin(obj) { - for (var key in Emitter.prototype) { - obj[key] = Emitter.prototype[key]; - } - return obj; - } - - /** - * Listen on the given `event` with `fn`. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - - Emitter.prototype.on = function(event, fn){ - this._callbacks = this._callbacks || {}; - (this._callbacks[event] = this._callbacks[event] || []) - .push(fn); - return this; - }; - - /** - * Adds an `event` listener that will be invoked a single - * time then automatically removed. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - - Emitter.prototype.once = function(event, fn){ - var self = this; - this._callbacks = this._callbacks || {}; - - function on() { - self.off(event, on); - fn.apply(this, arguments); - } - - fn._off = on; - this.on(event, on); - return this; - }; - - /** - * Remove the given callback for `event` or all - * registered callbacks. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - - Emitter.prototype.off = - Emitter.prototype.removeListener = - Emitter.prototype.removeAllListeners = function(event, fn){ - this._callbacks = this._callbacks || {}; - - // all - if (0 == arguments.length) { - this._callbacks = {}; - return this; - } - - // specific event - var callbacks = this._callbacks[event]; - if (!callbacks) return this; - - // remove all handlers - if (1 == arguments.length) { - delete this._callbacks[event]; - return this; - } - - // remove specific handler - var i = index(callbacks, fn._off || fn); - if (~i) callbacks.splice(i, 1); - return this; - }; - - /** - * Emit `event` with the given args. - * - * @param {String} event - * @param {Mixed} ... - * @return {Emitter} - */ - - Emitter.prototype.emit = function(event){ - this._callbacks = this._callbacks || {}; - var args = [].slice.call(arguments, 1) - , callbacks = this._callbacks[event]; - - if (callbacks) { - callbacks = callbacks.slice(0); - for (var i = 0, len = callbacks.length; i < len; ++i) { - callbacks[i].apply(this, args); - } - } - - return this; - }; - - /** - * Return array of callbacks for `event`. - * - * @param {String} event - * @return {Array} - * @api public - */ - - Emitter.prototype.listeners = function(event){ - this._callbacks = this._callbacks || {}; - return this._callbacks[event] || []; - }; - - /** - * Check if this emitter has `event` handlers. - * - * @param {String} event - * @return {Boolean} - * @api public - */ - - Emitter.prototype.hasListeners = function(event){ - return !! this.listeners(event).length; - }; - - },{"indexof":36}],11:[function(require,module,exports){ - - module.exports = require('./lib/'); - - },{"./lib/":12}],12:[function(require,module,exports){ - - module.exports = require('./socket'); - - /** - * Exports parser - * - * @api public - * - */ - module.exports.parser = require('engine.io-parser'); - - },{"./socket":13,"engine.io-parser":22}],13:[function(require,module,exports){ - var global=typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {};/** - * Module dependencies. - */ - - var transports = require('./transports'); - var Emitter = require('component-emitter'); - var debug = require('debug')('engine.io-client:socket'); - var index = require('indexof'); - var parser = require('engine.io-parser'); - var parseuri = require('parseuri'); - var parsejson = require('parsejson'); - var parseqs = require('parseqs'); - - /** - * Module exports. - */ - - module.exports = Socket; - - /** - * Noop function. - * - * @api private - */ - - function noop(){} - - /** - * Socket constructor. - * - * @param {String|Object} uri or options - * @param {Object} options - * @api public - */ - - function Socket(uri, opts){ - if (!(this instanceof Socket)) return new Socket(uri, opts); - - opts = opts || {}; - - if (uri && 'object' == typeof uri) { - opts = uri; - uri = null; - } - - if (uri) { - uri = parseuri(uri); - opts.host = uri.host; - opts.secure = uri.protocol == 'https' || uri.protocol == 'wss'; - opts.port = uri.port; - if (uri.query) opts.query = uri.query; - } - - this.secure = null != opts.secure ? opts.secure : - (global.location && 'https:' == location.protocol); - - if (opts.host) { - var pieces = opts.host.split(':'); - opts.hostname = pieces.shift(); - if (pieces.length) opts.port = pieces.pop(); - } - - this.agent = opts.agent || false; - this.hostname = opts.hostname || - (global.location ? location.hostname : 'localhost'); - this.port = opts.port || (global.location && location.port ? - location.port : - (this.secure ? 443 : 80)); - this.query = opts.query || {}; - if ('string' == typeof this.query) this.query = parseqs.decode(this.query); - this.upgrade = false !== opts.upgrade; - this.path = (opts.path || '/engine.io').replace(/\/$/, '') + '/'; - this.forceJSONP = !!opts.forceJSONP; - this.forceBase64 = !!opts.forceBase64; - this.timestampParam = opts.timestampParam || 't'; - this.timestampRequests = opts.timestampRequests; - this.transports = opts.transports || ['polling', 'websocket']; - this.readyState = ''; - this.writeBuffer = []; - this.callbackBuffer = []; - this.policyPort = opts.policyPort || 843; - this.rememberUpgrade = opts.rememberUpgrade || false; - this.open(); - this.binaryType = null; - this.onlyBinaryUpgrades = opts.onlyBinaryUpgrades; - } - - Socket.priorWebsocketSuccess = false; - - /** - * Mix in `Emitter`. - */ - - Emitter(Socket.prototype); - - /** - * Protocol version. - * - * @api public - */ - - Socket.protocol = parser.protocol; // this is an int - - /** - * Expose deps for legacy compatibility - * and standalone browser access. - */ - - Socket.Socket = Socket; - Socket.Transport = require('./transport'); - Socket.transports = require('./transports'); - Socket.parser = require('engine.io-parser'); - - /** - * Creates transport of the given type. - * - * @param {String} transport name - * @return {Transport} - * @api private - */ - - Socket.prototype.createTransport = function (name) { - debug('creating transport "%s"', name); - var query = clone(this.query); - - // append engine.io protocol identifier - query.EIO = parser.protocol; - - // transport name - query.transport = name; - - // session id if we already have one - if (this.id) query.sid = this.id; - - var transport = new transports[name]({ - agent: this.agent, - hostname: this.hostname, - port: this.port, - secure: this.secure, - path: this.path, - query: query, - forceJSONP: this.forceJSONP, - forceBase64: this.forceBase64, - timestampRequests: this.timestampRequests, - timestampParam: this.timestampParam, - policyPort: this.policyPort, - socket: this - }); - - return transport; - }; - - function clone (obj) { - var o = {}; - for (var i in obj) { - if (obj.hasOwnProperty(i)) { - o[i] = obj[i]; - } - } - return o; - } - - /** - * Initializes transport to use and starts probe. - * - * @api private - */ - Socket.prototype.open = function () { - var transport; - if (this.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf('websocket') != -1) { - transport = 'websocket'; - } else { - transport = this.transports[0]; - } - this.readyState = 'opening'; - var transport = this.createTransport(transport); - transport.open(); - this.setTransport(transport); - }; - - /** - * Sets the current transport. Disables the existing one (if any). - * - * @api private - */ - - Socket.prototype.setTransport = function(transport){ - debug('setting transport %s', transport.name); - var self = this; - - if (this.transport) { - debug('clearing existing transport %s', this.transport.name); - this.transport.removeAllListeners(); - } - - // set up transport - this.transport = transport; - - // set up transport listeners - transport - .on('drain', function(){ - self.onDrain(); - }) - .on('packet', function(packet){ - self.onPacket(packet); - }) - .on('error', function(e){ - self.onError(e); - }) - .on('close', function(){ - self.onClose('transport close'); - }); - }; - - /** - * Probes a transport. - * - * @param {String} transport name - * @api private - */ - - Socket.prototype.probe = function (name) { - debug('probing transport "%s"', name); - var transport = this.createTransport(name, { probe: 1 }) - , failed = false - , self = this; - - Socket.priorWebsocketSuccess = false; - - function onTransportOpen(){ - if (self.onlyBinaryUpgrades) { - var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary; - failed = failed || upgradeLosesBinary; - } - if (failed) return; - - debug('probe transport "%s" opened', name); - transport.send([{ type: 'ping', data: 'probe' }]); - transport.once('packet', function (msg) { - if (failed) return; - if ('pong' == msg.type && 'probe' == msg.data) { - debug('probe transport "%s" pong', name); - self.upgrading = true; - self.emit('upgrading', transport); - Socket.priorWebsocketSuccess = 'websocket' == transport.name; - - debug('pausing current transport "%s"', self.transport.name); - self.transport.pause(function () { - if (failed) return; - if ('closed' == self.readyState || 'closing' == self.readyState) { - return; - } - debug('changing transport and sending upgrade packet'); - - cleanup(); - - self.setTransport(transport); - transport.send([{ type: 'upgrade' }]); - self.emit('upgrade', transport); - transport = null; - self.upgrading = false; - self.flush(); - }); - } else { - debug('probe transport "%s" failed', name); - var err = new Error('probe error'); - err.transport = transport.name; - self.emit('upgradeError', err); - } - }); - } - - function freezeTransport() { - if (failed) return; - - // Any callback called by transport should be ignored since now - failed = true; - - cleanup(); - - transport.close(); - transport = null; - } - - //Handle any error that happens while probing - function onerror(err) { - var error = new Error('probe error: ' + err); - error.transport = transport.name; - - freezeTransport(); - - debug('probe transport "%s" failed because of error: %s', name, err); - - self.emit('upgradeError', error); - } - - function onTransportClose(){ - onerror("transport closed"); - } - - //When the socket is closed while we're probing - function onclose(){ - onerror("socket closed"); - } - - //When the socket is upgraded while we're probing - function onupgrade(to){ - if (transport && to.name != transport.name) { - debug('"%s" works - aborting "%s"', to.name, transport.name); - freezeTransport(); - } - } - - //Remove all listeners on the transport and on self - function cleanup(){ - transport.removeListener('open', onTransportOpen); - transport.removeListener('error', onerror); - transport.removeListener('close', onTransportClose); - self.removeListener('close', onclose); - self.removeListener('upgrading', onupgrade); - } - - transport.once('open', onTransportOpen); - transport.once('error', onerror); - transport.once('close', onTransportClose); - - this.once('close', onclose); - this.once('upgrading', onupgrade); - - transport.open(); - - }; - - /** - * Called when connection is deemed open. - * - * @api public - */ - - Socket.prototype.onOpen = function () { - debug('socket open'); - this.readyState = 'open'; - Socket.priorWebsocketSuccess = 'websocket' == this.transport.name; - this.emit('open'); - this.flush(); - - // we check for `readyState` in case an `open` - // listener already closed the socket - if ('open' == this.readyState && this.upgrade && this.transport.pause) { - debug('starting upgrade probes'); - for (var i = 0, l = this.upgrades.length; i < l; i++) { - this.probe(this.upgrades[i]); - } - } - }; - - /** - * Handles a packet. - * - * @api private - */ - - Socket.prototype.onPacket = function (packet) { - if ('opening' == this.readyState || 'open' == this.readyState) { - debug('socket receive: type "%s", data "%s"', packet.type, packet.data); - - this.emit('packet', packet); - - // Socket is live - any packet counts - this.emit('heartbeat'); - - switch (packet.type) { - case 'open': - this.onHandshake(parsejson(packet.data)); - break; - - case 'pong': - this.setPing(); - break; - - case 'error': - var err = new Error('server error'); - err.code = packet.data; - this.emit('error', err); - break; - - case 'message': - this.emit('data', packet.data); - this.emit('message', packet.data); - break; - } - } else { - debug('packet received with socket readyState "%s"', this.readyState); - } - }; - - /** - * Called upon handshake completion. - * - * @param {Object} handshake obj - * @api private - */ - - Socket.prototype.onHandshake = function (data) { - this.emit('handshake', data); - this.id = data.sid; - this.transport.query.sid = data.sid; - this.upgrades = this.filterUpgrades(data.upgrades); - this.pingInterval = data.pingInterval; - this.pingTimeout = data.pingTimeout; - this.onOpen(); - // In case open handler closes socket - if ('closed' == this.readyState) return; - this.setPing(); - - // Prolong liveness of socket on heartbeat - this.removeListener('heartbeat', this.onHeartbeat); - this.on('heartbeat', this.onHeartbeat); - }; - - /** - * Resets ping timeout. - * - * @api private - */ - - Socket.prototype.onHeartbeat = function (timeout) { - clearTimeout(this.pingTimeoutTimer); - var self = this; - self.pingTimeoutTimer = setTimeout(function () { - if ('closed' == self.readyState) return; - self.onClose('ping timeout'); - }, timeout || (self.pingInterval + self.pingTimeout)); - }; - - /** - * Pings server every `this.pingInterval` and expects response - * within `this.pingTimeout` or closes connection. - * - * @api private - */ - - Socket.prototype.setPing = function () { - var self = this; - clearTimeout(self.pingIntervalTimer); - self.pingIntervalTimer = setTimeout(function () { - debug('writing ping packet - expecting pong within %sms', self.pingTimeout); - self.ping(); - self.onHeartbeat(self.pingTimeout); - }, self.pingInterval); - }; - - /** - * Sends a ping packet. - * - * @api public - */ - - Socket.prototype.ping = function () { - this.sendPacket('ping'); - }; - - /** - * Called on `drain` event - * - * @api private - */ - - Socket.prototype.onDrain = function() { - for (var i = 0; i < this.prevBufferLen; i++) { - if (this.callbackBuffer[i]) { - this.callbackBuffer[i](); - } - } - - this.writeBuffer.splice(0, this.prevBufferLen); - this.callbackBuffer.splice(0, this.prevBufferLen); - - // setting prevBufferLen = 0 is very important - // for example, when upgrading, upgrade packet is sent over, - // and a nonzero prevBufferLen could cause problems on `drain` - this.prevBufferLen = 0; - - if (this.writeBuffer.length == 0) { - this.emit('drain'); - } else { - this.flush(); - } - }; - - /** - * Flush write buffers. - * - * @api private - */ - - Socket.prototype.flush = function () { - if ('closed' != this.readyState && this.transport.writable && - !this.upgrading && this.writeBuffer.length) { - debug('flushing %d packets in socket', this.writeBuffer.length); - this.transport.send(this.writeBuffer); - // keep track of current length of writeBuffer - // splice writeBuffer and callbackBuffer on `drain` - this.prevBufferLen = this.writeBuffer.length; - this.emit('flush'); - } - }; - - /** - * Sends a message. - * - * @param {String} message. - * @param {Function} callback function. - * @return {Socket} for chaining. - * @api public - */ - - Socket.prototype.write = - Socket.prototype.send = function (msg, fn) { - this.sendPacket('message', msg, fn); - return this; - }; - - /** - * Sends a packet. - * - * @param {String} packet type. - * @param {String} data. - * @param {Function} callback function. - * @api private - */ - - Socket.prototype.sendPacket = function (type, data, fn) { - var packet = { type: type, data: data }; - this.emit('packetCreate', packet); - this.writeBuffer.push(packet); - this.callbackBuffer.push(fn); - this.flush(); - }; - - /** - * Closes the connection. - * - * @api private - */ - - Socket.prototype.close = function () { - if ('opening' == this.readyState || 'open' == this.readyState) { - this.onClose('forced close'); - debug('socket closing - telling transport to close'); - this.transport.close(); - } - - return this; - }; - - /** - * Called upon transport error - * - * @api private - */ - - Socket.prototype.onError = function (err) { - debug('socket error %j', err); - Socket.priorWebsocketSuccess = false; - this.emit('error', err); - this.onClose('transport error', err); - }; - - /** - * Called upon transport close. - * - * @api private - */ - - Socket.prototype.onClose = function (reason, desc) { - if ('opening' == this.readyState || 'open' == this.readyState) { - debug('socket close with reason: "%s"', reason); - var self = this; - - // clear timers - clearTimeout(this.pingIntervalTimer); - clearTimeout(this.pingTimeoutTimer); - - // clean buffers in next tick, so developers can still - // grab the buffers on `close` event - setTimeout(function() { - self.writeBuffer = []; - self.callbackBuffer = []; - self.prevBufferLen = 0; - }, 0); - - // stop event from firing again for transport - this.transport.removeAllListeners('close'); - - // ensure transport won't stay open - this.transport.close(); - - // ignore further transport communication - this.transport.removeAllListeners(); - - // set ready state - this.readyState = 'closed'; - - // clear session id - this.id = null; - - // emit close event - this.emit('close', reason, desc); - } - }; - - /** - * Filters upgrades, returning only those matching client transports. - * - * @param {Array} server upgrades - * @api private - * - */ - - Socket.prototype.filterUpgrades = function (upgrades) { - var filteredUpgrades = []; - for (var i = 0, j = upgrades.length; i