2047?3:2;return b=t.substring(p,p+n),p+=n+2,b},r=function(){var e=t.charAt(p);return p+=2,e},O=function(){var t=r();switch(t){case"i":return n();case"s":return z();default:throw{name:"Parse Error",message:"Unknown key type '"+t+"' at position "+(p-2)}}},c=function(t,e){var p,b,o;return"\0"!==t.charAt(0)?t:(o=t.indexOf("\0",1))>0?(p=t.substring(1,o),b=t.substr(o+1),"*"===p?b:e===p?b:p+"::"+b):void 0};return(e=function(){var i,a,A,s,d=r();switch(d){case"i":return s=n(),b[o++]=s,s;case"d":return function(){var e=t.indexOf(";",p),M=t.substring(p,e);return p=e+1,M=parseFloat(M),b[o++]=M,M}();case"b":return function(){var e=t.indexOf(";",p),M=t.substring(p,e);return p=e+1,M="1"===M,b[o++]=M,M}();case"s":return function(){var t=z();return b[o++]=t,t}();case"a":return function(){var t,n,z,r,c,i=M(),a=[],A={},s=a,d=o++;for(b[d]=s,z=0;zt?1:-1,M=1,n=r.borderSkipped||"left"):(t=r.x-r.width/2,e=r.x+r.width/2,p=r.y,o=1,M=(b=r.base)>p?1:-1,n=r.borderSkipped||"bottom"),O){var c=Math.min(Math.abs(t-e),Math.abs(p-b)),i=(O=O>c?c:O)/2,a=t+("left"!==n?i*o:0),A=e+("right"!==n?-i*o:0),s=p+("top"!==n?i*M:0),d=b+("bottom"!==n?-i*M:0);a!==A&&(p=s,b=d),s!==d&&(t=a,e=A)}z.beginPath(),z.fillStyle=r.backgroundColor,z.strokeStyle=r.borderColor,z.lineWidth=O;var q=[[t,b],[t,p],[e,p],[e,b]],l=["bottom","left","top","right"].indexOf(n,0);function u(t){return q[(l+t)%4]}-1===l&&(l=0);var f=u(0);z.moveTo(f[0],f[1]);for(var W=1;W<4;W++)f=u(W),z.lineTo(f[0],f[1]);z.fill(),O&&z.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var p=!1;if(this._view){var b=n(this);p=t>=b.left&&t<=b.right&&e>=b.top&&e<=b.bottom}return p},inLabelRange:function(t,e){if(!this._view)return!1;var p=n(this);return M(this)?t>=p.left&&t<=p.right:e>=p.top&&e<=p.bottom},inXRange:function(t){var e=n(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=n(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,e,p=this._view;return M(this)?(t=p.x,e=(p.y+p.base)/2):(t=(p.x+p.base)/2,e=p.y),{x:t,y:e}},getArea:function(){var t=this._view;return t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})},"35yf":function(t,e,p){"use strict";p("CDJp")._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},showLines:!1,tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}}),t.exports=function(t){t.controllers.scatter=t.controllers.line}},"3Irt":function(t,e,p){"use strict";p.r(e);var b=p("LvDl"),o=p.n(b),M=p("wd/R"),n=p.n(M),z={components:{},data:function(){return{stats:{},workers:[],workload:[],ready:!1}},mounted:function(){document.title="Horizon - Dashboard",this.refreshStatsPeriodically()},destroyed:function(){clearTimeout(this.timeout)},computed:{recentJobsPeriod:function(){return this.ready?"Jobs past ".concat(this.determinePeriod(this.stats.periods.recentJobs)):"Jobs past hour"},failedJobsPeriod:function(){return this.ready?"Failed jobs past ".concat(this.determinePeriod(this.stats.periods.failedJobs)):"Failed jobs past 7 days"}},methods:{loadStats:function(){var t=this;return this.$http.get("/"+Horizon.path+"/api/stats").then(function(e){t.stats=e.data,o.a.values(e.data.wait)[0]&&(t.stats.max_wait_time=o.a.values(e.data.wait)[0],t.stats.max_wait_queue=o.a.keys(e.data.wait)[0].split(":")[1])})},loadWorkers:function(){var t=this;return this.$http.get("/"+Horizon.path+"/api/masters").then(function(e){t.workers=e.data})},loadWorkload:function(){var t=this;return this.$http.get("/"+Horizon.path+"/api/workload").then(function(e){t.workload=e.data})},refreshStatsPeriodically:function(){var t=this;Promise.all([this.loadStats(),this.loadWorkers(),this.loadWorkload()]).then(function(){t.ready=!0,t.timeout=setTimeout(function(){t.refreshStatsPeriodically(!1)},5e3)})},countProcesses:function(t){return o.a.chain(t).values().sum().value().toLocaleString()},superVisorDisplayName:function(t,e){return o.a.replace(t,e+":","")},humanTime:function(t){return n.a.duration(t,"seconds").humanize().replace(/^(.)|\s+(.)/g,function(t){return t.toUpperCase()})},determinePeriod:function(t){return n.a.duration(n()().diff(n()().subtract(t,"minutes"))).humanize().replace(/^An?/i,"")}}},r=p("KHd+"),O=Object(r.a)(z,function(){var t=this,e=t.$createElement,p=t._self._c||e;return p("div",[p("div",{staticClass:"card"},[t._m(0),t._v(" "),p("div",{staticClass:"card-bg-secondary"},[p("div",{staticClass:"d-flex"},[p("div",{staticClass:"w-25 border-right border-bottom"},[p("div",{staticClass:"p-4"},[p("small",{staticClass:"text-uppercase"},[t._v("Jobs Per Minute")]),t._v(" "),p("h4",{staticClass:"mt-4 mb-0"},[t._v("\n "+t._s(t.stats.jobsPerMinute?t.stats.jobsPerMinute.toLocaleString():0)+"\n ")])])]),t._v(" "),p("div",{staticClass:"w-25 border-right border-bottom"},[p("div",{staticClass:"p-4"},[p("small",{staticClass:"text-uppercase",domProps:{textContent:t._s(t.recentJobsPeriod)}}),t._v(" "),p("h4",{staticClass:"mt-4 mb-0"},[t._v("\n "+t._s(t.stats.recentJobs?t.stats.recentJobs.toLocaleString():0)+"\n ")])])]),t._v(" "),p("div",{staticClass:"w-25 border-right border-bottom"},[p("div",{staticClass:"p-4"},[p("small",{staticClass:"text-uppercase",domProps:{textContent:t._s(t.failedJobsPeriod)}}),t._v(" "),p("h4",{staticClass:"mt-4 mb-0"},[t._v("\n "+t._s(t.stats.failedJobs?t.stats.failedJobs.toLocaleString():0)+"\n ")])])]),t._v(" "),p("div",{staticClass:"w-25 border-bottom"},[p("div",{staticClass:"p-4"},[p("small",{staticClass:"text-uppercase"},[t._v("Status")]),t._v(" "),p("div",{staticClass:"d-flex align-items-center mt-4"},["running"==t.stats.status?p("svg",{staticClass:"fill-success",staticStyle:{width:"1.5rem",height:"1.5rem"},attrs:{viewBox:"0 0 20 20"}},[p("path",{attrs:{d:"M2.93 17.07A10 10 0 1 1 17.07 2.93 10 10 0 0 1 2.93 17.07zm12.73-1.41A8 8 0 1 0 4.34 4.34a8 8 0 0 0 11.32 11.32zM6.7 9.29L9 11.6l4.3-4.3 1.4 1.42L9 14.4l-3.7-3.7 1.4-1.42z"}})]):t._e(),t._v(" "),"paused"==t.stats.status?p("svg",{staticClass:"fill-warning",staticStyle:{width:"1.5rem",height:"1.5rem"},attrs:{viewBox:"0 0 20 20"}},[p("path",{attrs:{d:"M2.93 17.07A10 10 0 1 1 17.07 2.93 10 10 0 0 1 2.93 17.07zm12.73-1.41A8 8 0 1 0 4.34 4.34a8 8 0 0 0 11.32 11.32zM7 6h2v8H7V6zm4 0h2v8h-2V6z"}})]):t._e(),t._v(" "),"inactive"==t.stats.status?p("svg",{staticClass:"fill-danger",staticStyle:{width:"1.5rem",height:"1.5rem"},attrs:{viewBox:"0 0 20 20"}},[p("path",{attrs:{d:"M2.93 17.07A10 10 0 1 1 17.07 2.93 10 10 0 0 1 2.93 17.07zm1.41-1.41A8 8 0 1 0 15.66 4.34 8 8 0 0 0 4.34 15.66zm9.9-8.49L11.41 10l2.83 2.83-1.41 1.41L10 11.41l-2.83 2.83-1.41-1.41L8.59 10 5.76 7.17l1.41-1.41L10 8.59l2.83-2.83 1.41 1.41z"}})]):t._e(),t._v(" "),p("h4",{staticClass:"mb-0 ml-2"},[t._v(t._s({running:"Active",paused:"Paused",inactive:"Inactive"}[t.stats.status]))])])])])]),t._v(" "),p("div",{staticClass:"d-flex"},[p("div",{staticClass:"w-25 border-right"},[p("div",{staticClass:"p-4 mb-0"},[p("small",{staticClass:"text-uppercase"},[t._v("TOTAL PROCESSES")]),t._v(" "),p("h4",{staticClass:"mt-4"},[t._v("\n "+t._s(t.stats.processes?t.stats.processes.toLocaleString():0)+"\n ")])])]),t._v(" "),p("div",{staticClass:"w-25 border-right"},[p("div",{staticClass:"p-4 mb-0"},[p("small",{staticClass:"text-uppercase"},[t._v("MAX WAIT TIME")]),t._v(" "),t.stats.max_wait_queue?p("small",[t._v("("+t._s(t.stats.max_wait_queue)+")")]):t._e(),t._v(" "),p("h4",{staticClass:"mt-4"},[t._v("\n "+t._s(t.stats.max_wait_time?t.humanTime(t.stats.max_wait_time):"-")+"\n ")])])]),t._v(" "),p("div",{staticClass:"w-25 border-right"},[p("div",{staticClass:"p-4 mb-0"},[p("small",{staticClass:"text-uppercase"},[t._v("MAX RUNTIME")]),t._v(" "),p("h4",{staticClass:"mt-4"},[t._v("\n "+t._s(t.stats.queueWithMaxRuntime?t.stats.queueWithMaxRuntime:"-")+"\n ")])])]),t._v(" "),p("div",{staticClass:"w-25"},[p("div",{staticClass:"p-4 mb-0"},[p("small",{staticClass:"text-uppercase"},[t._v("MAX THROUGHPUT")]),t._v(" "),p("h4",{staticClass:"mt-4"},[t._v("\n "+t._s(t.stats.queueWithMaxThroughput?t.stats.queueWithMaxThroughput:"-")+"\n ")])])])])])]),t._v(" "),t.workload.length?p("div",{staticClass:"card mt-4"},[t._m(1),t._v(" "),p("table",{staticClass:"table table-hover table-sm mb-0"},[t._m(2),t._v(" "),p("tbody",t._l(t.workload,function(e){return p("tr",[p("td",[p("span",[t._v(t._s(e.name.replace(/,/g,", ")))])]),t._v(" "),p("td",[t._v(t._s(e.processes?e.processes.toLocaleString():0))]),t._v(" "),p("td",[t._v(t._s(e.length?e.length.toLocaleString():0))]),t._v(" "),p("td",{staticClass:"text-right"},[t._v(t._s(t.humanTime(e.wait)))])])}),0)])]):t._e(),t._v(" "),t._l(t.workers,function(e){return p("div",{key:e.name,staticClass:"card mt-4"},[p("div",{staticClass:"card-header d-flex align-items-center justify-content-between"},[p("h5",[t._v(t._s(e.name))])]),t._v(" "),p("table",{staticClass:"table table-hover table-sm mb-0"},[t._m(3,!0),t._v(" "),p("tbody",t._l(e.supervisors,function(b){return p("tr",[p("td",[t._v(t._s(t.superVisorDisplayName(b.name,e.name)))]),t._v(" "),p("td",[t._v(t._s(t.countProcesses(b.processes)))]),t._v(" "),p("td",[t._v(t._s(b.options.queue.replace(/,/g,", ")))]),t._v(" "),p("td",{staticClass:"text-right"},[t._v("\n ("+t._s(b.options.balance.charAt(0).toUpperCase()+b.options.balance.slice(1))+")\n ")])])}),0)])])})],2)},[function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"card-header d-flex align-items-center justify-content-between"},[e("h5",[this._v("Overview")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"card-header d-flex align-items-center justify-content-between"},[e("h5",[this._v("Current Workload")])])},function(){var t=this.$createElement,e=this._self._c||t;return e("thead",[e("tr",[e("th",[this._v("Queue")]),this._v(" "),e("th",[this._v("Processes")]),this._v(" "),e("th",[this._v("Jobs")]),this._v(" "),e("th",{staticClass:"text-right"},[this._v("Wait")])])])},function(){var t=this.$createElement,e=this._self._c||t;return e("thead",[e("tr",[e("th",[this._v("Supervisor")]),this._v(" "),e("th",[this._v("Processes")]),this._v(" "),e("th",[this._v("Queues")]),this._v(" "),e("th",{staticClass:"text-right"},[this._v("Balancing")])])])}],!1,null,null,null);e.default=O.exports},"5ZZ7":function(t,e,p){"use strict";var b=p("CDJp"),o=p("vvH+"),M=p("RDha");b._set("polarArea",{scale:{type:"radialLinear",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,legendCallback:function(t){var e=[];e.push('');var p=t.data,b=p.datasets,o=p.labels;if(b.length)for(var M=0;M '),o[M]&&e.push(o[M]),e.push("");return e.push(" "),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(p,b){var o=t.getDatasetMeta(0),n=e.datasets[0],z=o.data[b].custom||{},r=M.valueAtIndexOrDefault,O=t.options.elements.arc;return{text:p,fillStyle:z.backgroundColor?z.backgroundColor:r(n.backgroundColor,b,O.backgroundColor),strokeStyle:z.borderColor?z.borderColor:r(n.borderColor,b,O.borderColor),lineWidth:z.borderWidth?z.borderWidth:r(n.borderWidth,b,O.borderWidth),hidden:isNaN(n.data[b])||o.data[b].hidden,index:b}}):[]}},onClick:function(t,e){var p,b,o,M=e.index,n=this.chart;for(p=0,b=(n.data.datasets||[]).length;p=0;--p)e.isDatasetVisible(p)&&e.drawDataset(p,t);c.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var p=this.getDatasetMeta(t),b={meta:p,index:t,easingValue:e};!1!==c.notify(this,"beforeDatasetDraw",[b])&&(p.controller.draw(e),c.notify(this,"afterDatasetDraw",[b]))},_drawTooltip:function(t){var e=this.tooltip,p={tooltip:e,easingValue:t};!1!==c.notify(this,"beforeTooltipDraw",[p])&&(e.draw(),c.notify(this,"afterTooltipDraw",[p]))},getElementAtEvent:function(t){return z.modes.single(this,t)},getElementsAtEvent:function(t){return z.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return z.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,p){var b=z.modes[e];return"function"==typeof b?b(this,t,p):[]},getDatasetAtEvent:function(t){return z.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var p=e._meta[this.id];return p||(p=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),p},getVisibleDatasetCount:function(){for(var t=0,e=0,p=this.data.datasets.length;e p?(e+.05)/(p+.05):(p+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,p=(e[0]+t)%360;return e[0]=p<0?360+p:p,this.setValues("hsl",e),this},mix:function(t,e){var p=t,b=void 0===e?.5:e,o=2*b-1,M=this.alpha()-p.alpha(),n=((o*M==-1?o:(o+M)/(1+o*M))+1)/2,z=1-n;return this.rgb(n*this.red()+z*p.red(),n*this.green()+z*p.green(),n*this.blue()+z*p.blue()).alpha(this.alpha()*b+p.alpha()*(1-b))},toJSON:function(){return this.rgb()},clone:function(){var t,e,p=new M,b=this.values,o=p.values;for(var n in b)b.hasOwnProperty(n)&&(t=b[n],"[object Array]"===(e={}.toString.call(t))?o[n]=t.slice(0):"[object Number]"===e?o[n]=t:console.error("unexpected color value:",t));return p}},M.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},M.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},M.prototype.getValues=function(t){for(var e=this.values,p={},b=0;bo?{start:e-p-5,end:e}:{start:e,end:e+p+5}}function c(t){return 0===t||180===t?"center":t<180?"left":"right"}function i(t,e,p,b){if(o.isArray(e))for(var M=p.y,n=1.5*b,z=0;z270||t<90)&&(p.y-=e.h)}function A(t){return o.isNumber(t)?t:0}var s=t.LinearScaleBase.extend({setDimensions:function(){var t=this,p=t.options,b=p.ticks;t.width=t.maxWidth,t.height=t.maxHeight,t.xCenter=Math.round(t.width/2),t.yCenter=Math.round(t.height/2);var M=o.min([t.height,t.width]),n=o.valueOrDefault(b.fontSize,e.defaultFontSize);t.drawingArea=p.display?M/2-(n/2+b.backdropPaddingY):M/2},determineDataLimits:function(){var t=this,e=t.chart,p=Number.POSITIVE_INFINITY,b=Number.NEGATIVE_INFINITY;o.each(e.data.datasets,function(M,n){if(e.isDatasetVisible(n)){var z=e.getDatasetMeta(n);o.each(M.data,function(e,o){var M=+t.getRightValue(e);isNaN(M)||z.data[o].hidden||(p=Math.min(M,p),b=Math.max(M,b))})}}),t.min=p===Number.POSITIVE_INFINITY?0:p,t.max=b===Number.NEGATIVE_INFINITY?0:b,t.handleTickRangeOptions()},getTickLimit:function(){var t=this.options.ticks,p=o.valueOrDefault(t.fontSize,e.defaultFontSize);return Math.min(t.maxTicksLimit?t.maxTicksLimit:11,Math.ceil(this.drawingArea/(1.5*p)))},convertTicksToLabels:function(){var e=this;t.LinearScaleBase.prototype.convertTicksToLabels.call(e),e.pointLabels=e.chart.data.labels.map(e.options.pointLabels.callback,e)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t,e;this.options.pointLabels.display?function(t){var e,p,b,M=r(t),n=Math.min(t.height/2,t.width/2),c={r:t.width,l:0,t:t.height,b:0},i={};t.ctx.font=M.font,t._pointLabelSizes=[];var a,A,s,d=z(t);for(e=0;ec.r&&(c.r=u.end,i.r=q),f.startc.b&&(c.b=f.end,i.b=q)}t.setReductions(n,c,i)}(this):(t=this,e=Math.min(t.height/2,t.width/2),t.drawingArea=Math.round(e),t.setCenterPoint(0,0,0,0))},setReductions:function(t,e,p){var b=e.l/Math.sin(p.l),o=Math.max(e.r-this.width,0)/Math.sin(p.r),M=-e.t/Math.cos(p.t),n=-Math.max(e.b-this.height,0)/Math.cos(p.b);b=A(b),o=A(o),M=A(M),n=A(n),this.drawingArea=Math.min(Math.round(t-(b+o)/2),Math.round(t-(M+n)/2)),this.setCenterPoint(b,o,M,n)},setCenterPoint:function(t,e,p,b){var o=this,M=o.width-e-o.drawingArea,n=t+o.drawingArea,z=p+o.drawingArea,r=o.height-b-o.drawingArea;o.xCenter=Math.round((n+M)/2+o.left),o.yCenter=Math.round((z+r)/2+o.top)},getIndexAngle:function(t){return t*(2*Math.PI/z(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var p=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*p:(t-e.min)*p},getPointPosition:function(t,e){var p=this.getIndexAngle(t)-Math.PI/2;return{x:Math.round(Math.cos(p)*e)+this.xCenter,y:Math.round(Math.sin(p)*e)+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this.min,e=this.max;return this.getPointPositionForValue(0,this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0)},draw:function(){var t=this,p=t.options,b=p.gridLines,M=p.ticks,n=o.valueOrDefault;if(p.display){var O=t.ctx,A=this.getIndexAngle(0),s=n(M.fontSize,e.defaultFontSize),d=n(M.fontStyle,e.defaultFontStyle),q=n(M.fontFamily,e.defaultFontFamily),l=o.fontString(s,d,q);o.each(t.ticks,function(p,r){if(r>0||M.reverse){var c=t.getDistanceFromCenterForValue(t.ticksAsNumbers[r]);if(b.display&&0!==r&&function(t,e,p,b){var M=t.ctx;if(M.strokeStyle=o.valueAtIndexOrDefault(e.color,b-1),M.lineWidth=o.valueAtIndexOrDefault(e.lineWidth,b-1),t.options.gridLines.circular)M.beginPath(),M.arc(t.xCenter,t.yCenter,p,0,2*Math.PI),M.closePath(),M.stroke();else{var n=z(t);if(0===n)return;M.beginPath();var r=t.getPointPosition(0,p);M.moveTo(r.x,r.y);for(var O=1;O=0;s--){if(M.display){var d=t.getPointPosition(s,O);p.beginPath(),p.moveTo(t.xCenter,t.yCenter),p.lineTo(d.x,d.y),p.stroke(),p.closePath()}if(n.display){var q=t.getPointPosition(s,O+5),l=o.valueAtIndexOrDefault(n.fontColor,s,e.defaultFontColor);p.font=A.font,p.fillStyle=l;var u=t.getIndexAngle(s),f=o.toDegrees(u);p.textAlign=c(f),a(f,t._pointLabelSizes[s],q),i(p,t.pointLabels[s]||"",q,A.size)}}}(t)}}});M.registerScaleType("radialLinear",s,p)}},"8L3F":function(t,e,p){"use strict";p.r(e),function(t){for(var p="undefined"!=typeof window&&"undefined"!=typeof document,b=["Edge","Trident","Firefox"],o=0,M=0;M=0){o=1;break}var n=p&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},o))}};function z(t){return t&&"[object Function]"==={}.toString.call(t)}function r(t,e){if(1!==t.nodeType)return[];var p=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?p[e]:p}function O(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function c(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=r(t),p=e.overflow,b=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(p+o+b)?t:c(O(t))}var i=p&&!(!window.MSInputMethodContext||!document.documentMode),a=p&&/MSIE 10/.test(navigator.userAgent);function A(t){return 11===t?i:10===t?a:i||a}function s(t){if(!t)return document.documentElement;for(var e=A(10)?document.body:null,p=t.offsetParent||null;p===e&&t.nextElementSibling;)p=(t=t.nextElementSibling).offsetParent;var b=p&&p.nodeName;return b&&"BODY"!==b&&"HTML"!==b?-1!==["TH","TD","TABLE"].indexOf(p.nodeName)&&"static"===r(p,"position")?s(p):p:t?t.ownerDocument.documentElement:document.documentElement}function d(t){return null!==t.parentNode?d(t.parentNode):t}function q(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var p=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,b=p?t:e,o=p?e:t,M=document.createRange();M.setStart(b,0),M.setEnd(o,0);var n,z,r=M.commonAncestorContainer;if(t!==r&&e!==r||b.contains(o))return"BODY"===(z=(n=r).nodeName)||"HTML"!==z&&s(n.firstElementChild)!==n?s(r):r;var O=d(t);return O.host?q(O.host,e):q(t,d(e).host)}function l(t){var e="top"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",p=t.nodeName;if("BODY"===p||"HTML"===p){var b=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||b)[e]}return t[e]}function u(t,e){var p="x"===e?"Left":"Top",b="Left"===p?"Right":"Bottom";return parseFloat(t["border"+p+"Width"],10)+parseFloat(t["border"+b+"Width"],10)}function f(t,e,p,b){return Math.max(e["offset"+t],e["scroll"+t],p["client"+t],p["offset"+t],p["scroll"+t],A(10)?parseInt(p["offset"+t])+parseInt(b["margin"+("Height"===t?"Top":"Left")])+parseInt(b["margin"+("Height"===t?"Bottom":"Right")]):0)}function W(t){var e=t.body,p=t.documentElement,b=A(10)&&getComputedStyle(p);return{height:f("Height",e,p,b),width:f("Width",e,p,b)}}var h=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},R=function(){function t(t,e){for(var p=0;p2&&void 0!==arguments[2]&&arguments[2],b=A(10),o="HTML"===e.nodeName,M=B(t),n=B(e),z=c(t),O=r(e),i=parseFloat(O.borderTopWidth,10),a=parseFloat(O.borderLeftWidth,10);p&&o&&(n.top=Math.max(n.top,0),n.left=Math.max(n.left,0));var s=g({top:M.top-n.top-i,left:M.left-n.left-a,width:M.width,height:M.height});if(s.marginTop=0,s.marginLeft=0,!b&&o){var d=parseFloat(O.marginTop,10),q=parseFloat(O.marginLeft,10);s.top-=i-d,s.bottom-=i-d,s.left-=a-q,s.right-=a-q,s.marginTop=d,s.marginLeft=q}return(b&&!p?e.contains(z):e===z&&"BODY"!==z.nodeName)&&(s=function(t,e){var p=arguments.length>2&&void 0!==arguments[2]&&arguments[2],b=l(e,"top"),o=l(e,"left"),M=p?-1:1;return t.top+=b*M,t.bottom+=b*M,t.left+=o*M,t.right+=o*M,t}(s,e)),s}function X(t){if(!t||!t.parentElement||A())return document.documentElement;for(var e=t.parentElement;e&&"none"===r(e,"transform");)e=e.parentElement;return e||document.documentElement}function y(t,e,p,b){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],M={top:0,left:0},n=o?X(t):q(t,e);if("viewport"===b)M=function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],p=t.ownerDocument.documentElement,b=L(t,p),o=Math.max(p.clientWidth,window.innerWidth||0),M=Math.max(p.clientHeight,window.innerHeight||0),n=e?0:l(p),z=e?0:l(p,"left");return g({top:n-b.top+b.marginTop,left:z-b.left+b.marginLeft,width:o,height:M})}(n,o);else{var z=void 0;"scrollParent"===b?"BODY"===(z=c(O(e))).nodeName&&(z=t.ownerDocument.documentElement):z="window"===b?t.ownerDocument.documentElement:b;var i=L(z,n,o);if("HTML"!==z.nodeName||function t(e){var p=e.nodeName;if("BODY"===p||"HTML"===p)return!1;if("fixed"===r(e,"position"))return!0;var b=O(e);return!!b&&t(b)}(n))M=i;else{var a=W(t.ownerDocument),A=a.height,s=a.width;M.top+=i.top-i.marginTop,M.bottom=A+i.top,M.left+=i.left-i.marginLeft,M.right=s+i.left}}var d="number"==typeof(p=p||0);return M.left+=d?p:p.left||0,M.top+=d?p:p.top||0,M.right-=d?p:p.right||0,M.bottom-=d?p:p.bottom||0,M}function N(t,e,p,b,o){var M=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var n=y(p,b,M,o),z={top:{width:n.width,height:e.top-n.top},right:{width:n.right-e.right,height:n.height},bottom:{width:n.width,height:n.bottom-e.bottom},left:{width:e.left-n.left,height:n.height}},r=Object.keys(z).map(function(t){return m({key:t},z[t],{area:(e=z[t],e.width*e.height)});var e}).sort(function(t,e){return e.area-t.area}),O=r.filter(function(t){var e=t.width,b=t.height;return e>=p.clientWidth&&b>=p.clientHeight}),c=O.length>0?O[0].key:r[0].key,i=t.split("-")[1];return c+(i?"-"+i:"")}function _(t,e,p){var b=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return L(p,b?X(e):q(e,p),b)}function T(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),p=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),b=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+b,height:t.offsetHeight+p}}function x(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(t){return e[t]})}function w(t,e,p){p=p.split("-")[0];var b=T(t),o={width:b.width,height:b.height},M=-1!==["right","left"].indexOf(p),n=M?"top":"left",z=M?"left":"top",r=M?"height":"width",O=M?"width":"height";return o[n]=e[n]+e[r]/2-b[r]/2,o[z]=p===z?e[z]-b[O]:e[x(z)],o}function C(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function S(t,e,p){return(void 0===p?t:t.slice(0,function(t,e,p){if(Array.prototype.findIndex)return t.findIndex(function(t){return t[e]===p});var b=C(t,function(t){return t[e]===p});return t.indexOf(b)}(t,"name",p))).forEach(function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var p=t.function||t.fn;t.enabled&&z(p)&&(e.offsets.popper=g(e.offsets.popper),e.offsets.reference=g(e.offsets.reference),e=p(e,t))}),e}function H(t,e){return t.some(function(t){var p=t.name;return t.enabled&&p===e})}function E(t){for(var e=[!1,"ms","Webkit","Moz","O"],p=t.charAt(0).toUpperCase()+t.slice(1),b=0;b1&&void 0!==arguments[1]&&arguments[1],p=$.indexOf(t),b=$.slice(p+1).concat($.slice(0,p));return e?b.reverse():b}var K={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function G(t,e,p,b){var o=[0,0],M=-1!==["right","left"].indexOf(b),n=t.split(/(\+|\-)/).map(function(t){return t.trim()}),z=n.indexOf(C(n,function(t){return-1!==t.search(/,|\s/)}));n[z]&&-1===n[z].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var r=/\s*,\s*|\s+/,O=-1!==z?[n.slice(0,z).concat([n[z].split(r)[0]]),[n[z].split(r)[1]].concat(n.slice(z+1))]:[n];return(O=O.map(function(t,b){var o=(1===b?!M:M)?"height":"width",n=!1;return t.reduce(function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,n=!0,t):n?(t[t.length-1]+=e,n=!1,t):t.concat(e)},[]).map(function(t){return function(t,e,p,b){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),M=+o[1],n=o[2];if(!M)return t;if(0===n.indexOf("%")){var z=void 0;switch(n){case"%p":z=p;break;case"%":case"%r":default:z=b}return g(z)[e]/100*M}if("vh"===n||"vw"===n)return("vh"===n?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*M;return M}(t,o,e,p)})})).forEach(function(t,e){t.forEach(function(p,b){I(p)&&(o[e]+=p*("-"===t[b-1]?-1:1))})}),o}var J={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,p=e.split("-")[0],b=e.split("-")[1];if(b){var o=t.offsets,M=o.reference,n=o.popper,z=-1!==["bottom","top"].indexOf(p),r=z?"left":"top",O=z?"width":"height",c={start:v({},r,M[r]),end:v({},r,M[r]+M[O]-n[O])};t.offsets.popper=m({},n,c[b])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var p=e.offset,b=t.placement,o=t.offsets,M=o.popper,n=o.reference,z=b.split("-")[0],r=void 0;return r=I(+p)?[+p,0]:G(p,M,n,z),"left"===z?(M.top+=r[0],M.left-=r[1]):"right"===z?(M.top+=r[0],M.left+=r[1]):"top"===z?(M.left+=r[0],M.top-=r[1]):"bottom"===z&&(M.left+=r[0],M.top+=r[1]),t.popper=M,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var p=e.boundariesElement||s(t.instance.popper);t.instance.reference===p&&(p=s(p));var b=E("transform"),o=t.instance.popper.style,M=o.top,n=o.left,z=o[b];o.top="",o.left="",o[b]="";var r=y(t.instance.popper,t.instance.reference,e.padding,p,t.positionFixed);o.top=M,o.left=n,o[b]=z,e.boundaries=r;var O=e.priority,c=t.offsets.popper,i={primary:function(t){var p=c[t];return c[t]r[t]&&!e.escapeWithReference&&(b=Math.min(c[p],r[t]-("right"===t?c.width:c.height))),v({},p,b)}};return O.forEach(function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";c=m({},c,i[e](t))}),t.offsets.popper=c,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,p=e.popper,b=e.reference,o=t.placement.split("-")[0],M=Math.floor,n=-1!==["top","bottom"].indexOf(o),z=n?"right":"bottom",r=n?"left":"top",O=n?"width":"height";return p[z]M(b[z])&&(t.offsets.popper[r]=M(b[z])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var p;if(!V(t.instance.modifiers,"arrow","keepTogether"))return t;var b=e.element;if("string"==typeof b){if(!(b=t.instance.popper.querySelector(b)))return t}else if(!t.instance.popper.contains(b))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],M=t.offsets,n=M.popper,z=M.reference,O=-1!==["left","right"].indexOf(o),c=O?"height":"width",i=O?"Top":"Left",a=i.toLowerCase(),A=O?"left":"top",s=O?"bottom":"right",d=T(b)[c];z[s]-dn[s]&&(t.offsets.popper[a]+=z[a]+d-n[s]),t.offsets.popper=g(t.offsets.popper);var q=z[a]+z[c]/2-d/2,l=r(t.instance.popper),u=parseFloat(l["margin"+i],10),f=parseFloat(l["border"+i+"Width"],10),W=q-t.offsets.popper[a]-u-f;return W=Math.max(Math.min(n[c]-d,W),0),t.arrowElement=b,t.offsets.arrow=(v(p={},a,Math.round(W)),v(p,A,""),p),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(H(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var p=y(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),b=t.placement.split("-")[0],o=x(b),M=t.placement.split("-")[1]||"",n=[];switch(e.behavior){case K.FLIP:n=[b,o];break;case K.CLOCKWISE:n=Y(b);break;case K.COUNTERCLOCKWISE:n=Y(b,!0);break;default:n=e.behavior}return n.forEach(function(z,r){if(b!==z||n.length===r+1)return t;b=t.placement.split("-")[0],o=x(b);var O=t.offsets.popper,c=t.offsets.reference,i=Math.floor,a="left"===b&&i(O.right)>i(c.left)||"right"===b&&i(O.left)i(c.top)||"bottom"===b&&i(O.top)i(p.right),d=i(O.top)i(p.bottom),l="left"===b&&A||"right"===b&&s||"top"===b&&d||"bottom"===b&&q,u=-1!==["top","bottom"].indexOf(b),f=!!e.flipVariations&&(u&&"start"===M&&A||u&&"end"===M&&s||!u&&"start"===M&&d||!u&&"end"===M&&q);(a||l||f)&&(t.flipped=!0,(a||l)&&(b=n[r+1]),f&&(M=function(t){return"end"===t?"start":"start"===t?"end":t}(M)),t.placement=b+(M?"-"+M:""),t.offsets.popper=m({},t.offsets.popper,w(t.instance.popper,t.offsets.reference,t.placement)),t=S(t.instance.modifiers,t,"flip"))}),t},behavior:"flip",padding:5,boundariesElement:"viewport"},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,p=e.split("-")[0],b=t.offsets,o=b.popper,M=b.reference,n=-1!==["left","right"].indexOf(p),z=-1===["top","left"].indexOf(p);return o[n?"left":"top"]=M[p]-(z?o[n?"width":"height"]:0),t.placement=x(e),t.offsets.popper=g(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!V(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,p=C(t.instance.modifiers,function(t){return"preventOverflow"===t.name}).boundaries;if(e.bottom p.right||e.top>p.bottom||e.right2&&void 0!==arguments[2]?arguments[2]:{};h(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(b.update)},this.update=n(this.update.bind(this)),this.options=m({},t.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=p&&p.jquery?p[0]:p,this.options.modifiers={},Object.keys(m({},t.Defaults.modifiers,o.modifiers)).forEach(function(e){b.options.modifiers[e]=m({},t.Defaults.modifiers[e]||{},o.modifiers?o.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(t){return m({name:t},b.options.modifiers[t])}).sort(function(t,e){return t.order-e.order}),this.modifiers.forEach(function(t){t.enabled&&z(t.onLoad)&&t.onLoad(b.reference,b.popper,b.options,t,b.state)}),this.update();var M=this.options.eventsEnabled;M&&this.enableEventListeners(),this.state.eventsEnabled=M}return R(t,[{key:"update",value:function(){return function(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=_(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=N(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=w(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=S(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,H(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[E("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=k(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return D.call(this)}}]),t}();Q.Utils=("undefined"!=typeof window?window:t).PopperUtils,Q.placements=U,Q.Defaults=J,e.default=Q}.call(this,p("yLpj"))},"8TtQ":function(t,e,p){"use strict";var b=p("cdu6"),o=p("tjFV");t.exports=function(){var t=b.extend({getLabels:function(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t,e=this,p=e.getLabels();e.minIndex=0,e.maxIndex=p.length-1,void 0!==e.options.ticks.min&&(t=p.indexOf(e.options.ticks.min),e.minIndex=-1!==t?t:e.minIndex),void 0!==e.options.ticks.max&&(t=p.indexOf(e.options.ticks.max),e.maxIndex=-1!==t?t:e.maxIndex),e.min=p[e.minIndex],e.max=p[e.maxIndex]},buildTicks:function(){var t=this,e=t.getLabels();t.ticks=0===t.minIndex&&t.maxIndex===e.length-1?e:e.slice(t.minIndex,t.maxIndex+1)},getLabelForIndex:function(t,e){var p=this,b=p.chart.data,o=p.isHorizontal();return b.yLabels&&!o?p.getRightValue(b.datasets[e].data[t]):p.ticks[t-p.minIndex]},getPixelForValue:function(t,e){var p,b=this,o=b.options.offset,M=Math.max(b.maxIndex+1-b.minIndex-(o?0:1),1);if(null!=t&&(p=b.isHorizontal()?t.x:t.y),void 0!==p||void 0!==t&&isNaN(e)){t=p||t;var n=b.getLabels().indexOf(t);e=-1!==n?n:e}if(b.isHorizontal()){var z=b.width/M,r=z*(e-b.minIndex);return o&&(r+=z/2),b.left+Math.round(r)}var O=b.height/M,c=O*(e-b.minIndex);return o&&(c+=O/2),b.top+Math.round(c)},getPixelForTick:function(t){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null)},getValueForPixel:function(t){var e=this,p=e.options.offset,b=Math.max(e._ticks.length-(p?0:1),1),o=e.isHorizontal(),M=(o?e.width:e.height)/b;return t-=o?e.left:e.top,p&&(t-=M/2),(t<=0?0:Math.round(t/M))+e.minIndex},getBasePixel:function(){return this.bottom}});o.registerScaleType("category",t,{position:"bottom"})}},"8oxB":function(t,e){var p,b,o=t.exports={};function M(){throw new Error("setTimeout has not been defined")}function n(){throw new Error("clearTimeout has not been defined")}function z(t){if(p===setTimeout)return setTimeout(t,0);if((p===M||!p)&&setTimeout)return p=setTimeout,setTimeout(t,0);try{return p(t,0)}catch(e){try{return p.call(null,t,0)}catch(e){return p.call(this,t,0)}}}!function(){try{p="function"==typeof setTimeout?setTimeout:M}catch(t){p=M}try{b="function"==typeof clearTimeout?clearTimeout:n}catch(t){b=n}}();var r,O=[],c=!1,i=-1;function a(){c&&r&&(c=!1,r.length?O=r.concat(O):i=-1,O.length&&A())}function A(){if(!c){var t=z(a);c=!0;for(var e=O.length;e;){for(r=O,O=[];++i1)for(var p=1;p');for(var p=0;p '),t.data.datasets[p].label&&e.push(t.data.datasets[p].label),e.push("");return e.push(""),e.join("")}});var O=o.extend({initialize:function(t){M.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:z,update:function(t,e,p){var b=this;return b.beforeUpdate(),b.maxWidth=t,b.maxHeight=e,b.margins=p,b.beforeSetDimensions(),b.setDimensions(),b.afterSetDimensions(),b.beforeBuildLabels(),b.buildLabels(),b.afterBuildLabels(),b.beforeFit(),b.fit(),b.afterFit(),b.afterUpdate(),b.minSize},afterUpdate:z,beforeSetDimensions:z,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:z,beforeBuildLabels:z,buildLabels:function(){var t=this,e=t.options.labels||{},p=M.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(p=p.filter(function(p){return e.filter(p,t.chart.data)})),t.options.reverse&&p.reverse(),t.legendItems=p},afterBuildLabels:z,beforeFit:z,fit:function(){var t=this,e=t.options,p=e.labels,o=e.display,n=t.ctx,z=b.global,O=M.valueOrDefault,c=O(p.fontSize,z.defaultFontSize),i=O(p.fontStyle,z.defaultFontStyle),a=O(p.fontFamily,z.defaultFontFamily),A=M.fontString(c,i,a),s=t.legendHitBoxes=[],d=t.minSize,q=t.isHorizontal();if(q?(d.width=t.maxWidth,d.height=o?10:0):(d.width=o?10:0,d.height=t.maxHeight),o)if(n.font=A,q){var l=t.lineWidths=[0],u=t.legendItems.length?c+p.padding:0;n.textAlign="left",n.textBaseline="top",M.each(t.legendItems,function(e,b){var o=r(p,c)+c/2+n.measureText(e.text).width;l[l.length-1]+o+p.padding>=t.width&&(u+=c+p.padding,l[l.length]=t.left),s[b]={left:0,top:0,width:o,height:c},l[l.length-1]+=o+p.padding}),d.height+=u}else{var f=p.padding,W=t.columnWidths=[],h=p.padding,R=0,v=0,m=c+f;M.each(t.legendItems,function(t,e){var b=r(p,c)+c/2+n.measureText(t.text).width;v+m>d.height&&(h+=R+p.padding,W.push(R),R=0,v=0),R=Math.max(R,b),v+=m,s[e]={left:0,top:0,width:b,height:c}}),h+=R,W.push(R),d.width+=h}t.width=d.width,t.height=d.height},afterFit:z,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,p=e.labels,o=b.global,n=o.elements.line,z=t.width,O=t.lineWidths;if(e.display){var c,i=t.ctx,a=M.valueOrDefault,A=a(p.fontColor,o.defaultFontColor),s=a(p.fontSize,o.defaultFontSize),d=a(p.fontStyle,o.defaultFontStyle),q=a(p.fontFamily,o.defaultFontFamily),l=M.fontString(s,d,q);i.textAlign="left",i.textBaseline="middle",i.lineWidth=.5,i.strokeStyle=A,i.fillStyle=A,i.font=l;var u=r(p,s),f=t.legendHitBoxes,W=t.isHorizontal();c=W?{x:t.left+(z-O[0])/2,y:t.top+p.padding,line:0}:{x:t.left+p.padding,y:t.top+p.padding,line:0};var h=s+p.padding;M.each(t.legendItems,function(b,r){var A=i.measureText(b.text).width,d=u+s/2+A,q=c.x,l=c.y;W?q+d>=z&&(l=c.y+=h,c.line++,q=c.x=t.left+(z-O[c.line])/2):l+h>t.bottom&&(q=c.x=q+t.columnWidths[c.line]+p.padding,l=c.y=t.top+p.padding,c.line++),function(t,p,b){if(!(isNaN(u)||u<=0)){i.save(),i.fillStyle=a(b.fillStyle,o.defaultColor),i.lineCap=a(b.lineCap,n.borderCapStyle),i.lineDashOffset=a(b.lineDashOffset,n.borderDashOffset),i.lineJoin=a(b.lineJoin,n.borderJoinStyle),i.lineWidth=a(b.lineWidth,n.borderWidth),i.strokeStyle=a(b.strokeStyle,o.defaultColor);var z=0===a(b.lineWidth,n.borderWidth);if(i.setLineDash&&i.setLineDash(a(b.lineDash,n.borderDash)),e.labels&&e.labels.usePointStyle){var r=s*Math.SQRT2/2,O=r/Math.SQRT2,c=t+O,A=p+O;M.canvas.drawPoint(i,b.pointStyle,r,c,A)}else z||i.strokeRect(t,p,u,s),i.fillRect(t,p,u,s);i.restore()}}(q,l,b),f[r].left=q,f[r].top=l,function(t,e,p,b){var o=s/2,M=u+o+t,n=e+o;i.fillText(p.text,M,n),p.hidden&&(i.beginPath(),i.lineWidth=2,i.moveTo(M,n),i.lineTo(M+b,n),i.stroke())}(q,l,b,A),W?c.x+=d+p.padding:c.y+=h})}},handleEvent:function(t){var e=this,p=e.options,b="mouseup"===t.type?"click":t.type,o=!1;if("mousemove"===b){if(!p.onHover)return}else{if("click"!==b)return;if(!p.onClick)return}var M=t.x,n=t.y;if(M>=e.left&&M<=e.right&&n>=e.top&&n<=e.bottom)for(var z=e.legendHitBoxes,r=0;r=O.left&&M<=O.left+O.width&&n>=O.top&&n<=O.top+O.height){if("click"===b){p.onClick.call(e,t.native,e.legendItems[r]),o=!0;break}if("mousemove"===b){p.onHover.call(e,t.native,e.legendItems[r]),o=!0;break}}}return o}});function c(t,e){var p=new O({ctx:t.ctx,options:e,chart:t});n.configure(t,p,e),n.addBox(t,p),t.legend=p}t.exports={id:"legend",_element:O,beforeInit:function(t){var e=t.options.legend;e&&c(t,e)},beforeUpdate:function(t){var e=t.options.legend,p=t.legend;e?(M.mergeIf(e,b.global.legend),p?(n.configure(t,p,e),p.options=e):c(t,e)):p&&(n.removeBox(t,p),delete t.legend)},afterEvent:function(t,e){var p=t.legend;p&&p.handleEvent(e)}}},As3K:function(t,e,p){"use strict";var b=p("TC34");t.exports={toLineHeight:function(t,e){var p=(""+t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!p||"normal"===p[1])return 1.2*e;switch(t=+p[2],p[3]){case"px":return t;case"%":t/=100}return e*t},toPadding:function(t){var e,p,o,M;return b.isObject(t)?(e=+t.top||0,p=+t.right||0,o=+t.bottom||0,M=+t.left||0):e=p=o=M=+t||0,{top:e,right:p,bottom:o,left:M,height:e+o,width:M+p}},resolve:function(t,e,p){var o,M,n;for(o=0,M=t.length;o96?t-87:t>64?t-29:t-48}function c(t){var e=0,p=t.split("."),b=p[0],o=p[1]||"",M=1,n=0,z=1;for(45===t.charCodeAt(0)&&(e=1,z=-1);e3){var e=o[R(t)];if(e)return e;L("Moment Timezone found "+t+" from the Intl api, but did not have that data loaded.")}}catch(t){}var p,b,M,n=function(){var t,e,p,b=(new Date).getFullYear()-2,o=new d(new Date(b,0,1)),M=[o];for(p=1;p<48;p++)(e=new d(new Date(b,p,1))).offset!==o.offset&&(t=l(o,e),M.push(t),M.push(new d(new Date(t.at+6e4)))),o=e;for(p=0;p<4;p++)M.push(new d(new Date(b+p,0,1))),M.push(new d(new Date(b+p,6,1)));return M}(),z=n.length,r=W(n),O=[];for(b=0;b0?O[0].zone.name:void 0}function R(t){return(t||"").toLowerCase().replace(/\//g,"_")}function v(t){var e,b,M,n;for("string"==typeof t&&(t=[t]),e=0;e= 2.6.0. You are using Moment.js "+t.version+". See momentjs.com"),s.prototype={_set:function(t){this.name=t.name,this.abbrs=t.abbrs,this.untils=t.untils,this.offsets=t.offsets,this.population=t.population},_index:function(t){var e,p=+t,b=this.untils;for(e=0;eb&&X.moveInvalidForward&&(e=b),M= 2.9.0. You are using Moment.js "+t.version+"."),t.defaultZone=e?m(e):null,t};var T=t.momentProperties;return"[object Array]"===Object.prototype.toString.call(T)?(T.push("_z"),T.push("_a")):T&&(T._z=null),t})},EVdn:function(t,e,p){var b;!function(e,p){"use strict";"object"==typeof t.exports?t.exports=e.document?p(e,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return p(t)}:p(e)}("undefined"!=typeof window?window:this,function(p,o){"use strict";var M=[],n=p.document,z=Object.getPrototypeOf,r=M.slice,O=M.concat,c=M.push,i=M.indexOf,a={},A=a.toString,s=a.hasOwnProperty,d=s.toString,q=d.call(Object),l={},u=function(t){return"function"==typeof t&&"number"!=typeof t.nodeType},f=function(t){return null!=t&&t===t.window},W={type:!0,src:!0,nonce:!0,noModule:!0};function h(t,e,p){var b,o,M=(p=p||n).createElement("script");if(M.text=t,e)for(b in W)(o=e[b]||e.getAttribute&&e.getAttribute(b))&&M.setAttribute(b,o);p.head.appendChild(M).parentNode.removeChild(M)}function R(t){return null==t?t+"":"object"==typeof t||"function"==typeof t?a[A.call(t)]||"object":typeof t}var v=function(t,e){return new v.fn.init(t,e)},m=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function g(t){var e=!!t&&"length"in t&&t.length,p=R(t);return!u(t)&&!f(t)&&("array"===p||0===e||"number"==typeof e&&e>0&&e-1 in t)}v.fn=v.prototype={jquery:"3.4.1",constructor:v,length:0,toArray:function(){return r.call(this)},get:function(t){return null==t?r.call(this):t<0?this[t+this.length]:this[t]},pushStack:function(t){var e=v.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return v.each(this,t)},map:function(t){return this.pushStack(v.map(this,function(e,p){return t.call(e,p,e)}))},slice:function(){return this.pushStack(r.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(t){var e=this.length,p=+t+(t<0?e:0);return this.pushStack(p>=0&&p+~]|"+H+")"+H+"*"),V=new RegExp(H+"|>"),U=new RegExp(k),$=new RegExp("^"+E+"$"),Y={ID:new RegExp("^#("+E+")"),CLASS:new RegExp("^\\.("+E+")"),TAG:new RegExp("^("+E+"|[*])"),ATTR:new RegExp("^"+F),PSEUDO:new RegExp("^"+k),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+H+"*(even|odd|(([+-]|)(\\d*)n|)"+H+"*(?:([+-]|)"+H+"*(\\d+)|))"+H+"*\\)|)","i"),bool:new RegExp("^(?:"+S+")$","i"),needsContext:new RegExp("^"+H+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+H+"*((?:-\\d)?\\d*)"+H+"*\\)|)(?=[^-]|$)","i")},K=/HTML$/i,G=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,tt=/[+~]/,et=new RegExp("\\\\([\\da-f]{1,6}"+H+"?|("+H+")|.)","ig"),pt=function(t,e,p){var b="0x"+e-65536;return b!=b||p?e:b<0?String.fromCharCode(b+65536):String.fromCharCode(b>>10|55296,1023&b|56320)},bt=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ot=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},Mt=function(){a()},nt=Wt(function(t){return!0===t.disabled&&"fieldset"===t.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{x.apply(N=w.call(h.childNodes),h.childNodes),N[h.childNodes.length].nodeType}catch(t){x={apply:N.length?function(t,e){T.apply(t,w.call(e))}:function(t,e){for(var p=t.length,b=0;t[p++]=e[b++];);t.length=p-1}}}function zt(t,e,b,o){var M,z,O,c,i,s,l,u=e&&e.ownerDocument,R=e?e.nodeType:9;if(b=b||[],"string"!=typeof t||!t||1!==R&&9!==R&&11!==R)return b;if(!o&&((e?e.ownerDocument||e:h)!==A&&a(e),e=e||A,d)){if(11!==R&&(i=Z.exec(t)))if(M=i[1]){if(9===R){if(!(O=e.getElementById(M)))return b;if(O.id===M)return b.push(O),b}else if(u&&(O=u.getElementById(M))&&f(e,O)&&O.id===M)return b.push(O),b}else{if(i[2])return x.apply(b,e.getElementsByTagName(t)),b;if((M=i[3])&&p.getElementsByClassName&&e.getElementsByClassName)return x.apply(b,e.getElementsByClassName(M)),b}if(p.qsa&&!L[t+" "]&&(!q||!q.test(t))&&(1!==R||"object"!==e.nodeName.toLowerCase())){if(l=t,u=e,1===R&&V.test(t)){for((c=e.getAttribute("id"))?c=c.replace(bt,ot):e.setAttribute("id",c=W),z=(s=n(t)).length;z--;)s[z]="#"+c+" "+ft(s[z]);l=s.join(","),u=tt.test(t)&<(e.parentNode)||e}try{return x.apply(b,u.querySelectorAll(l)),b}catch(e){L(t,!0)}finally{c===W&&e.removeAttribute("id")}}}return r(t.replace(I,"$1"),e,b,o)}function rt(){var t=[];return function e(p,o){return t.push(p+" ")>b.cacheLength&&delete e[t.shift()],e[p+" "]=o}}function Ot(t){return t[W]=!0,t}function ct(t){var e=A.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function it(t,e){for(var p=t.split("|"),o=p.length;o--;)b.attrHandle[p[o]]=e}function at(t,e){var p=e&&t,b=p&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(b)return b;if(p)for(;p=p.nextSibling;)if(p===e)return-1;return t?1:-1}function At(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function st(t){return function(e){var p=e.nodeName.toLowerCase();return("input"===p||"button"===p)&&e.type===t}}function dt(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&nt(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function qt(t){return Ot(function(e){return e=+e,Ot(function(p,b){for(var o,M=t([],p.length,e),n=M.length;n--;)p[o=M[n]]&&(p[o]=!(b[o]=p[o]))})})}function lt(t){return t&&void 0!==t.getElementsByTagName&&t}for(e in p=zt.support={},M=zt.isXML=function(t){var e=t.namespaceURI,p=(t.ownerDocument||t).documentElement;return!K.test(e||p&&p.nodeName||"HTML")},a=zt.setDocument=function(t){var e,o,n=t?t.ownerDocument||t:h;return n!==A&&9===n.nodeType&&n.documentElement?(s=(A=n).documentElement,d=!M(A),h!==A&&(o=A.defaultView)&&o.top!==o&&(o.addEventListener?o.addEventListener("unload",Mt,!1):o.attachEvent&&o.attachEvent("onunload",Mt)),p.attributes=ct(function(t){return t.className="i",!t.getAttribute("className")}),p.getElementsByTagName=ct(function(t){return t.appendChild(A.createComment("")),!t.getElementsByTagName("*").length}),p.getElementsByClassName=Q.test(A.getElementsByClassName),p.getById=ct(function(t){return s.appendChild(t).id=W,!A.getElementsByName||!A.getElementsByName(W).length}),p.getById?(b.filter.ID=function(t){var e=t.replace(et,pt);return function(t){return t.getAttribute("id")===e}},b.find.ID=function(t,e){if(void 0!==e.getElementById&&d){var p=e.getElementById(t);return p?[p]:[]}}):(b.filter.ID=function(t){var e=t.replace(et,pt);return function(t){var p=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return p&&p.value===e}},b.find.ID=function(t,e){if(void 0!==e.getElementById&&d){var p,b,o,M=e.getElementById(t);if(M){if((p=M.getAttributeNode("id"))&&p.value===t)return[M];for(o=e.getElementsByName(t),b=0;M=o[b++];)if((p=M.getAttributeNode("id"))&&p.value===t)return[M]}return[]}}),b.find.TAG=p.getElementsByTagName?function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):p.qsa?e.querySelectorAll(t):void 0}:function(t,e){var p,b=[],o=0,M=e.getElementsByTagName(t);if("*"===t){for(;p=M[o++];)1===p.nodeType&&b.push(p);return b}return M},b.find.CLASS=p.getElementsByClassName&&function(t,e){if(void 0!==e.getElementsByClassName&&d)return e.getElementsByClassName(t)},l=[],q=[],(p.qsa=Q.test(A.querySelectorAll))&&(ct(function(t){s.appendChild(t).innerHTML=" ",t.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+H+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||q.push("\\["+H+"*(?:value|"+S+")"),t.querySelectorAll("[id~="+W+"-]").length||q.push("~="),t.querySelectorAll(":checked").length||q.push(":checked"),t.querySelectorAll("a#"+W+"+*").length||q.push(".#.+[+~]")}),ct(function(t){t.innerHTML=" ";var e=A.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&q.push("name"+H+"*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),s.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),q.push(",.*:")})),(p.matchesSelector=Q.test(u=s.matches||s.webkitMatchesSelector||s.mozMatchesSelector||s.oMatchesSelector||s.msMatchesSelector))&&ct(function(t){p.disconnectedMatch=u.call(t,"*"),u.call(t,"[s!='']:x"),l.push("!=",k)}),q=q.length&&new RegExp(q.join("|")),l=l.length&&new RegExp(l.join("|")),e=Q.test(s.compareDocumentPosition),f=e||Q.test(s.contains)?function(t,e){var p=9===t.nodeType?t.documentElement:t,b=e&&e.parentNode;return t===b||!(!b||1!==b.nodeType||!(p.contains?p.contains(b):t.compareDocumentPosition&&16&t.compareDocumentPosition(b)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},X=e?function(t,e){if(t===e)return i=!0,0;var b=!t.compareDocumentPosition-!e.compareDocumentPosition;return b||(1&(b=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!p.sortDetached&&e.compareDocumentPosition(t)===b?t===A||t.ownerDocument===h&&f(h,t)?-1:e===A||e.ownerDocument===h&&f(h,e)?1:c?C(c,t)-C(c,e):0:4&b?-1:1)}:function(t,e){if(t===e)return i=!0,0;var p,b=0,o=t.parentNode,M=e.parentNode,n=[t],z=[e];if(!o||!M)return t===A?-1:e===A?1:o?-1:M?1:c?C(c,t)-C(c,e):0;if(o===M)return at(t,e);for(p=t;p=p.parentNode;)n.unshift(p);for(p=e;p=p.parentNode;)z.unshift(p);for(;n[b]===z[b];)b++;return b?at(n[b],z[b]):n[b]===h?-1:z[b]===h?1:0},A):A},zt.matches=function(t,e){return zt(t,null,null,e)},zt.matchesSelector=function(t,e){if((t.ownerDocument||t)!==A&&a(t),p.matchesSelector&&d&&!L[e+" "]&&(!l||!l.test(e))&&(!q||!q.test(e)))try{var b=u.call(t,e);if(b||p.disconnectedMatch||t.document&&11!==t.document.nodeType)return b}catch(t){L(e,!0)}return zt(e,A,null,[t]).length>0},zt.contains=function(t,e){return(t.ownerDocument||t)!==A&&a(t),f(t,e)},zt.attr=function(t,e){(t.ownerDocument||t)!==A&&a(t);var o=b.attrHandle[e.toLowerCase()],M=o&&y.call(b.attrHandle,e.toLowerCase())?o(t,e,!d):void 0;return void 0!==M?M:p.attributes||!d?t.getAttribute(e):(M=t.getAttributeNode(e))&&M.specified?M.value:null},zt.escape=function(t){return(t+"").replace(bt,ot)},zt.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},zt.uniqueSort=function(t){var e,b=[],o=0,M=0;if(i=!p.detectDuplicates,c=!p.sortStable&&t.slice(0),t.sort(X),i){for(;e=t[M++];)e===t[M]&&(o=b.push(M));for(;o--;)t.splice(b[o],1)}return c=null,t},o=zt.getText=function(t){var e,p="",b=0,M=t.nodeType;if(M){if(1===M||9===M||11===M){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)p+=o(t)}else if(3===M||4===M)return t.nodeValue}else for(;e=t[b++];)p+=o(e);return p},(b=zt.selectors={cacheLength:50,createPseudo:Ot,match:Y,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(et,pt),t[3]=(t[3]||t[4]||t[5]||"").replace(et,pt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||zt.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&zt.error(t[0]),t},PSEUDO:function(t){var e,p=!t[6]&&t[2];return Y.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":p&&U.test(p)&&(e=n(p,!0))&&(e=p.indexOf(")",p.length-e)-p.length)&&(t[0]=t[0].slice(0,e),t[2]=p.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(et,pt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=m[t+" "];return e||(e=new RegExp("(^|"+H+")"+t+"("+H+"|$)"))&&m(t,function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(t,e,p){return function(b){var o=zt.attr(b,t);return null==o?"!="===e:!e||(o+="","="===e?o===p:"!="===e?o!==p:"^="===e?p&&0===o.indexOf(p):"*="===e?p&&o.indexOf(p)>-1:"$="===e?p&&o.slice(-p.length)===p:"~="===e?(" "+o.replace(D," ")+" ").indexOf(p)>-1:"|="===e&&(o===p||o.slice(0,p.length+1)===p+"-"))}},CHILD:function(t,e,p,b,o){var M="nth"!==t.slice(0,3),n="last"!==t.slice(-4),z="of-type"===e;return 1===b&&0===o?function(t){return!!t.parentNode}:function(e,p,r){var O,c,i,a,A,s,d=M!==n?"nextSibling":"previousSibling",q=e.parentNode,l=z&&e.nodeName.toLowerCase(),u=!r&&!z,f=!1;if(q){if(M){for(;d;){for(a=e;a=a[d];)if(z?a.nodeName.toLowerCase()===l:1===a.nodeType)return!1;s=d="only"===t&&!s&&"nextSibling"}return!0}if(s=[n?q.firstChild:q.lastChild],n&&u){for(f=(A=(O=(c=(i=(a=q)[W]||(a[W]={}))[a.uniqueID]||(i[a.uniqueID]={}))[t]||[])[0]===R&&O[1])&&O[2],a=A&&q.childNodes[A];a=++A&&a&&a[d]||(f=A=0)||s.pop();)if(1===a.nodeType&&++f&&a===e){c[t]=[R,A,f];break}}else if(u&&(f=A=(O=(c=(i=(a=e)[W]||(a[W]={}))[a.uniqueID]||(i[a.uniqueID]={}))[t]||[])[0]===R&&O[1]),!1===f)for(;(a=++A&&a&&a[d]||(f=A=0)||s.pop())&&((z?a.nodeName.toLowerCase()!==l:1!==a.nodeType)||!++f||(u&&((c=(i=a[W]||(a[W]={}))[a.uniqueID]||(i[a.uniqueID]={}))[t]=[R,f]),a!==e)););return(f-=o)===b||f%b==0&&f/b>=0}}},PSEUDO:function(t,e){var p,o=b.pseudos[t]||b.setFilters[t.toLowerCase()]||zt.error("unsupported pseudo: "+t);return o[W]?o(e):o.length>1?(p=[t,t,"",e],b.setFilters.hasOwnProperty(t.toLowerCase())?Ot(function(t,p){for(var b,M=o(t,e),n=M.length;n--;)t[b=C(t,M[n])]=!(p[b]=M[n])}):function(t){return o(t,0,p)}):o}},pseudos:{not:Ot(function(t){var e=[],p=[],b=z(t.replace(I,"$1"));return b[W]?Ot(function(t,e,p,o){for(var M,n=b(t,null,o,[]),z=t.length;z--;)(M=n[z])&&(t[z]=!(e[z]=M))}):function(t,o,M){return e[0]=t,b(e,null,M,p),e[0]=null,!p.pop()}}),has:Ot(function(t){return function(e){return zt(t,e).length>0}}),contains:Ot(function(t){return t=t.replace(et,pt),function(e){return(e.textContent||o(e)).indexOf(t)>-1}}),lang:Ot(function(t){return $.test(t||"")||zt.error("unsupported lang: "+t),t=t.replace(et,pt).toLowerCase(),function(e){var p;do{if(p=d?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(p=p.toLowerCase())===t||0===p.indexOf(t+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var p=t.location&&t.location.hash;return p&&p.slice(1)===e.id},root:function(t){return t===s},focus:function(t){return t===A.activeElement&&(!A.hasFocus||A.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:dt(!1),disabled:dt(!0),checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!b.pseudos.empty(t)},header:function(t){return J.test(t.nodeName)},input:function(t){return G.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:qt(function(){return[0]}),last:qt(function(t,e){return[e-1]}),eq:qt(function(t,e,p){return[p<0?p+e:p]}),even:qt(function(t,e){for(var p=0;pe?e:p;--b>=0;)t.push(b);return t}),gt:qt(function(t,e,p){for(var b=p<0?p+e:p;++b1?function(e,p,b){for(var o=t.length;o--;)if(!t[o](e,p,b))return!1;return!0}:t[0]}function Rt(t,e,p,b,o){for(var M,n=[],z=0,r=t.length,O=null!=e;z-1&&(M[O]=!(n[O]=i))}}else l=Rt(l===n?l.splice(s,l.length):l),o?o(null,n,l,r):x.apply(n,l)})}function mt(t){for(var e,p,o,M=t.length,n=b.relative[t[0].type],z=n||b.relative[" "],r=n?1:0,c=Wt(function(t){return t===e},z,!0),i=Wt(function(t){return C(e,t)>-1},z,!0),a=[function(t,p,b){var o=!n&&(b||p!==O)||((e=p).nodeType?c(t,p,b):i(t,p,b));return e=null,o}];r1&&ht(a),r>1&&ft(t.slice(0,r-1).concat({value:" "===t[r-2].type?"*":""})).replace(I,"$1"),p,r0,o=t.length>0,M=function(M,n,z,r,c){var i,s,q,l=0,u="0",f=M&&[],W=[],h=O,v=M||o&&b.find.TAG("*",c),m=R+=null==h?1:Math.random()||.1,g=v.length;for(c&&(O=n===A||n||c);u!==g&&null!=(i=v[u]);u++){if(o&&i){for(s=0,n||i.ownerDocument===A||(a(i),z=!d);q=t[s++];)if(q(i,n||A,z)){r.push(i);break}c&&(R=m)}p&&((i=!q&&i)&&l--,M&&f.push(i))}if(l+=u,p&&u!==l){for(s=0;q=e[s++];)q(f,W,n,z);if(M){if(l>0)for(;u--;)f[u]||W[u]||(W[u]=_.call(r));W=Rt(W)}x.apply(r,W),c&&!M&&W.length>0&&l+e.length>1&&zt.uniqueSort(r)}return c&&(R=m,O=h),f};return p?Ot(M):M}(M,o))).selector=t}return z},r=zt.select=function(t,e,p,o){var M,r,O,c,i,a="function"==typeof t&&t,A=!o&&n(t=a.selector||t);if(p=p||[],1===A.length){if((r=A[0]=A[0].slice(0)).length>2&&"ID"===(O=r[0]).type&&9===e.nodeType&&d&&b.relative[r[1].type]){if(!(e=(b.find.ID(O.matches[0].replace(et,pt),e)||[])[0]))return p;a&&(e=e.parentNode),t=t.slice(r.shift().value.length)}for(M=Y.needsContext.test(t)?0:r.length;M--&&(O=r[M],!b.relative[c=O.type]);)if((i=b.find[c])&&(o=i(O.matches[0].replace(et,pt),tt.test(r[0].type)&<(e.parentNode)||e))){if(r.splice(M,1),!(t=o.length&&ft(r)))return x.apply(p,o),p;break}}return(a||z(t,A))(o,e,!d,p,!e||tt.test(t)&<(e.parentNode)||e),p},p.sortStable=W.split("").sort(X).join("")===W,p.detectDuplicates=!!i,a(),p.sortDetached=ct(function(t){return 1&t.compareDocumentPosition(A.createElement("fieldset"))}),ct(function(t){return t.innerHTML=" ","#"===t.firstChild.getAttribute("href")})||it("type|href|height|width",function(t,e,p){if(!p)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)}),p.attributes&&ct(function(t){return t.innerHTML=" ",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")})||it("value",function(t,e,p){if(!p&&"input"===t.nodeName.toLowerCase())return t.defaultValue}),ct(function(t){return null==t.getAttribute("disabled")})||it(S,function(t,e,p){var b;if(!p)return!0===t[e]?e.toLowerCase():(b=t.getAttributeNode(e))&&b.specified?b.value:null}),zt}(p);v.find=B,v.expr=B.selectors,v.expr[":"]=v.expr.pseudos,v.uniqueSort=v.unique=B.uniqueSort,v.text=B.getText,v.isXMLDoc=B.isXML,v.contains=B.contains,v.escapeSelector=B.escape;var L=function(t,e,p){for(var b=[],o=void 0!==p;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(o&&v(t).is(p))break;b.push(t)}return b},X=function(t,e){for(var p=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&p.push(t);return p},y=v.expr.match.needsContext;function N(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}var _=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(t,e,p){return u(e)?v.grep(t,function(t,b){return!!e.call(t,b,t)!==p}):e.nodeType?v.grep(t,function(t){return t===e!==p}):"string"!=typeof e?v.grep(t,function(t){return i.call(e,t)>-1!==p}):v.filter(e,t,p)}v.filter=function(t,e,p){var b=e[0];return p&&(t=":not("+t+")"),1===e.length&&1===b.nodeType?v.find.matchesSelector(b,t)?[b]:[]:v.find.matches(t,v.grep(e,function(t){return 1===t.nodeType}))},v.fn.extend({find:function(t){var e,p,b=this.length,o=this;if("string"!=typeof t)return this.pushStack(v(t).filter(function(){for(e=0;e1?v.uniqueSort(p):p},filter:function(t){return this.pushStack(T(this,t||[],!1))},not:function(t){return this.pushStack(T(this,t||[],!0))},is:function(t){return!!T(this,"string"==typeof t&&y.test(t)?v(t):t||[],!1).length}});var x,w=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(v.fn.init=function(t,e,p){var b,o;if(!t)return this;if(p=p||x,"string"==typeof t){if(!(b="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:w.exec(t))||!b[1]&&e)return!e||e.jquery?(e||p).find(t):this.constructor(e).find(t);if(b[1]){if(e=e instanceof v?e[0]:e,v.merge(this,v.parseHTML(b[1],e&&e.nodeType?e.ownerDocument||e:n,!0)),_.test(b[1])&&v.isPlainObject(e))for(b in e)u(this[b])?this[b](e[b]):this.attr(b,e[b]);return this}return(o=n.getElementById(b[2]))&&(this[0]=o,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):u(t)?void 0!==p.ready?p.ready(t):t(v):v.makeArray(t,this)}).prototype=v.fn,x=v(n);var C=/^(?:parents|prev(?:Until|All))/,S={children:!0,contents:!0,next:!0,prev:!0};function H(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}v.fn.extend({has:function(t){var e=v(t,this),p=e.length;return this.filter(function(){for(var t=0;t -1:1===p.nodeType&&v.find.matchesSelector(p,t))){M.push(p);break}return this.pushStack(M.length>1?v.uniqueSort(M):M)},index:function(t){return t?"string"==typeof t?i.call(v(t),this[0]):i.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(v.uniqueSort(v.merge(this.get(),v(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),v.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return L(t,"parentNode")},parentsUntil:function(t,e,p){return L(t,"parentNode",p)},next:function(t){return H(t,"nextSibling")},prev:function(t){return H(t,"previousSibling")},nextAll:function(t){return L(t,"nextSibling")},prevAll:function(t){return L(t,"previousSibling")},nextUntil:function(t,e,p){return L(t,"nextSibling",p)},prevUntil:function(t,e,p){return L(t,"previousSibling",p)},siblings:function(t){return X((t.parentNode||{}).firstChild,t)},children:function(t){return X(t.firstChild)},contents:function(t){return void 0!==t.contentDocument?t.contentDocument:(N(t,"template")&&(t=t.content||t),v.merge([],t.childNodes))}},function(t,e){v.fn[t]=function(p,b){var o=v.map(this,e,p);return"Until"!==t.slice(-5)&&(b=p),b&&"string"==typeof b&&(o=v.filter(b,o)),this.length>1&&(S[t]||v.uniqueSort(o),C.test(t)&&o.reverse()),this.pushStack(o)}});var E=/[^\x20\t\r\n\f]+/g;function F(t){return t}function k(t){throw t}function D(t,e,p,b){var o;try{t&&u(o=t.promise)?o.call(t).done(e).fail(p):t&&u(o=t.then)?o.call(t,e,p):e.apply(void 0,[t].slice(b))}catch(t){p.apply(void 0,[t])}}v.Callbacks=function(t){t="string"==typeof t?function(t){var e={};return v.each(t.match(E)||[],function(t,p){e[p]=!0}),e}(t):v.extend({},t);var e,p,b,o,M=[],n=[],z=-1,r=function(){for(o=o||t.once,b=e=!0;n.length;z=-1)for(p=n.shift();++z-1;)M.splice(p,1),p<=z&&z--}),this},has:function(t){return t?v.inArray(t,M)>-1:M.length>0},empty:function(){return M&&(M=[]),this},disable:function(){return o=n=[],M=p="",this},disabled:function(){return!M},lock:function(){return o=n=[],p||e||(M=p=""),this},locked:function(){return!!o},fireWith:function(t,p){return o||(p=[t,(p=p||[]).slice?p.slice():p],n.push(p),e||r()),this},fire:function(){return O.fireWith(this,arguments),this},fired:function(){return!!b}};return O},v.extend({Deferred:function(t){var e=[["notify","progress",v.Callbacks("memory"),v.Callbacks("memory"),2],["resolve","done",v.Callbacks("once memory"),v.Callbacks("once memory"),0,"resolved"],["reject","fail",v.Callbacks("once memory"),v.Callbacks("once memory"),1,"rejected"]],b="pending",o={state:function(){return b},always:function(){return M.done(arguments).fail(arguments),this},catch:function(t){return o.then(null,t)},pipe:function(){var t=arguments;return v.Deferred(function(p){v.each(e,function(e,b){var o=u(t[b[4]])&&t[b[4]];M[b[1]](function(){var t=o&&o.apply(this,arguments);t&&u(t.promise)?t.promise().progress(p.notify).done(p.resolve).fail(p.reject):p[b[0]+"With"](this,o?[t]:arguments)})}),t=null}).promise()},then:function(t,b,o){var M=0;function n(t,e,b,o){return function(){var z=this,r=arguments,O=function(){var p,O;if(!(t=M&&(b!==k&&(z=void 0,r=[p]),e.rejectWith(z,r))}};t?c():(v.Deferred.getStackHook&&(c.stackTrace=v.Deferred.getStackHook()),p.setTimeout(c))}}return v.Deferred(function(p){e[0][3].add(n(0,p,u(o)?o:F,p.notifyWith)),e[1][3].add(n(0,p,u(t)?t:F)),e[2][3].add(n(0,p,u(b)?b:k))}).promise()},promise:function(t){return null!=t?v.extend(t,o):o}},M={};return v.each(e,function(t,p){var n=p[2],z=p[5];o[p[1]]=n.add,z&&n.add(function(){b=z},e[3-t][2].disable,e[3-t][3].disable,e[0][2].lock,e[0][3].lock),n.add(p[3].fire),M[p[0]]=function(){return M[p[0]+"With"](this===M?void 0:this,arguments),this},M[p[0]+"With"]=n.fireWith}),o.promise(M),t&&t.call(M,M),M},when:function(t){var e=arguments.length,p=e,b=Array(p),o=r.call(arguments),M=v.Deferred(),n=function(t){return function(p){b[t]=this,o[t]=arguments.length>1?r.call(arguments):p,--e||M.resolveWith(b,o)}};if(e<=1&&(D(t,M.done(n(p)).resolve,M.reject,!e),"pending"===M.state()||u(o[p]&&o[p].then)))return M.then();for(;p--;)D(o[p],n(p),M.reject);return M.promise()}});var I=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;v.Deferred.exceptionHook=function(t,e){p.console&&p.console.warn&&t&&I.test(t.name)&&p.console.warn("jQuery.Deferred exception: "+t.message,t.stack,e)},v.readyException=function(t){p.setTimeout(function(){throw t})};var P=v.Deferred();function j(){n.removeEventListener("DOMContentLoaded",j),p.removeEventListener("load",j),v.ready()}v.fn.ready=function(t){return P.then(t).catch(function(t){v.readyException(t)}),this},v.extend({isReady:!1,readyWait:1,ready:function(t){(!0===t?--v.readyWait:v.isReady)||(v.isReady=!0,!0!==t&&--v.readyWait>0||P.resolveWith(n,[v]))}}),v.ready.then=P.then,"complete"===n.readyState||"loading"!==n.readyState&&!n.documentElement.doScroll?p.setTimeout(v.ready):(n.addEventListener("DOMContentLoaded",j),p.addEventListener("load",j));var V=function(t,e,p,b,o,M,n){var z=0,r=t.length,O=null==p;if("object"===R(p))for(z in o=!0,p)V(t,e,z,p[z],!0,M,n);else if(void 0!==b&&(o=!0,u(b)||(n=!0),O&&(n?(e.call(t,b),e=null):(O=e,e=function(t,e,p){return O.call(v(t),p)})),e))for(;z1,null,!0)},removeData:function(t){return this.each(function(){Z.remove(this,t)})}}),v.extend({queue:function(t,e,p){var b;if(t)return e=(e||"fx")+"queue",b=Q.get(t,e),p&&(!b||Array.isArray(p)?b=Q.access(t,e,v.makeArray(p)):b.push(p)),b||[]},dequeue:function(t,e){e=e||"fx";var p=v.queue(t,e),b=p.length,o=p.shift(),M=v._queueHooks(t,e);"inprogress"===o&&(o=p.shift(),b--),o&&("fx"===e&&p.unshift("inprogress"),delete M.stop,o.call(t,function(){v.dequeue(t,e)},M)),!b&&M&&M.empty.fire()},_queueHooks:function(t,e){var p=e+"queueHooks";return Q.get(t,p)||Q.access(t,p,{empty:v.Callbacks("once memory").add(function(){Q.remove(t,[e+"queue",p])})})}}),v.fn.extend({queue:function(t,e){var p=2;return"string"!=typeof t&&(e=t,t="fx",p--),arguments.length\x20\t\r\n\f]*)/i,lt=/^$|^module$|\/(?:java|ecma)script/i,ut={option:[1,""," "],thead:[1,"
"],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ft(t,e){var p;return p=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&N(t,e)?v.merge([t],p):p}function Wt(t,e){for(var p=0,b=t.length;p-1)o&&o.push(M);else if(O=zt(M),n=ft(i.appendChild(M),"script"),O&&Wt(n),p)for(c=0;M=n[c++];)lt.test(M.type||"")&&p.push(M);return i}ht=n.createDocumentFragment().appendChild(n.createElement("div")),(Rt=n.createElement("input")).setAttribute("type","radio"),Rt.setAttribute("checked","checked"),Rt.setAttribute("name","t"),ht.appendChild(Rt),l.checkClone=ht.cloneNode(!0).cloneNode(!0).lastChild.checked,ht.innerHTML="",l.noCloneChecked=!!ht.cloneNode(!0).lastChild.defaultValue;var gt=/^key/,Bt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Lt=/^([^.]*)(?:\.(.+)|)/;function Xt(){return!0}function yt(){return!1}function Nt(t,e){return t===function(){try{return n.activeElement}catch(t){}}()==("focus"===e)}function _t(t,e,p,b,o,M){var n,z;if("object"==typeof e){for(z in"string"!=typeof p&&(b=b||p,p=void 0),e)_t(t,z,p,b,e[z],M);return t}if(null==b&&null==o?(o=p,b=p=void 0):null==o&&("string"==typeof p?(o=b,b=void 0):(o=b,b=p,p=void 0)),!1===o)o=yt;else if(!o)return t;return 1===M&&(n=o,(o=function(t){return v().off(t),n.apply(this,arguments)}).guid=n.guid||(n.guid=v.guid++)),t.each(function(){v.event.add(this,e,o,b,p)})}function Tt(t,e,p){p?(Q.set(t,e,!1),v.event.add(t,e,{namespace:!1,handler:function(t){var b,o,M=Q.get(this,e);if(1&t.isTrigger&&this[e]){if(M.length)(v.event.special[e]||{}).delegateType&&t.stopPropagation();else if(M=r.call(arguments),Q.set(this,e,M),b=p(this,e),this[e](),M!==(o=Q.get(this,e))||b?Q.set(this,e,!1):o={},M!==o)return t.stopImmediatePropagation(),t.preventDefault(),o.value}else M.length&&(Q.set(this,e,{value:v.event.trigger(v.extend(M[0],v.Event.prototype),M.slice(1),this)}),t.stopImmediatePropagation())}})):void 0===Q.get(t,e)&&v.event.add(t,e,Xt)}v.event={global:{},add:function(t,e,p,b,o){var M,n,z,r,O,c,i,a,A,s,d,q=Q.get(t);if(q)for(p.handler&&(p=(M=p).handler,o=M.selector),o&&v.find.matchesSelector(nt,o),p.guid||(p.guid=v.guid++),(r=q.events)||(r=q.events={}),(n=q.handle)||(n=q.handle=function(e){return void 0!==v&&v.event.triggered!==e.type?v.event.dispatch.apply(t,arguments):void 0}),O=(e=(e||"").match(E)||[""]).length;O--;)A=d=(z=Lt.exec(e[O])||[])[1],s=(z[2]||"").split(".").sort(),A&&(i=v.event.special[A]||{},A=(o?i.delegateType:i.bindType)||A,i=v.event.special[A]||{},c=v.extend({type:A,origType:d,data:b,handler:p,guid:p.guid,selector:o,needsContext:o&&v.expr.match.needsContext.test(o),namespace:s.join(".")},M),(a=r[A])||((a=r[A]=[]).delegateCount=0,i.setup&&!1!==i.setup.call(t,b,s,n)||t.addEventListener&&t.addEventListener(A,n)),i.add&&(i.add.call(t,c),c.handler.guid||(c.handler.guid=p.guid)),o?a.splice(a.delegateCount++,0,c):a.push(c),v.event.global[A]=!0)},remove:function(t,e,p,b,o){var M,n,z,r,O,c,i,a,A,s,d,q=Q.hasData(t)&&Q.get(t);if(q&&(r=q.events)){for(O=(e=(e||"").match(E)||[""]).length;O--;)if(A=d=(z=Lt.exec(e[O])||[])[1],s=(z[2]||"").split(".").sort(),A){for(i=v.event.special[A]||{},a=r[A=(b?i.delegateType:i.bindType)||A]||[],z=z[2]&&new RegExp("(^|\\.)"+s.join("\\.(?:.*\\.|)")+"(\\.|$)"),n=M=a.length;M--;)c=a[M],!o&&d!==c.origType||p&&p.guid!==c.guid||z&&!z.test(c.namespace)||b&&b!==c.selector&&("**"!==b||!c.selector)||(a.splice(M,1),c.selector&&a.delegateCount--,i.remove&&i.remove.call(t,c));n&&!a.length&&(i.teardown&&!1!==i.teardown.call(t,s,q.handle)||v.removeEvent(t,A,q.handle),delete r[A])}else for(A in r)v.event.remove(t,A+e[O],p,b,!0);v.isEmptyObject(r)&&Q.remove(t,"handle events")}},dispatch:function(t){var e,p,b,o,M,n,z=v.event.fix(t),r=new Array(arguments.length),O=(Q.get(this,"events")||{})[z.type]||[],c=v.event.special[z.type]||{};for(r[0]=z,e=1;e=1))for(;O!==this;O=O.parentNode||this)if(1===O.nodeType&&("click"!==t.type||!0!==O.disabled)){for(M=[],n={},p=0;p-1:v.find(o,this,null,[O]).length),n[o]&&M.push(b);M.length&&z.push({elem:O,handlers:M})}return O=this,r\x20\t\r\n\f]*)[^>]*)\/>/gi,wt=/
-
-@endif
\ No newline at end of file
diff --git a/resources/views/layouts/_ads/_banner.blade.php b/resources/views/layouts/_ads/_banner.blade.php
index 143349655..9e741c0aa 100644
--- a/resources/views/layouts/_ads/_banner.blade.php
+++ b/resources/views/layouts/_ads/_banner.blade.php
@@ -1,7 +1,5 @@
-
-
+
diff --git a/resources/views/layouts/_ads/_cta.blade.php b/resources/views/layouts/_ads/_cta.blade.php
new file mode 100644
index 000000000..cb7567a5d
--- /dev/null
+++ b/resources/views/layouts/_ads/_cta.blade.php
@@ -0,0 +1,6 @@
+
+
+ {{ $text }}
+
+
diff --git a/resources/views/layouts/_ads/_footer.blade.php b/resources/views/layouts/_ads/_footer.blade.php
index bf00dbb53..c787fc106 100644
--- a/resources/views/layouts/_ads/_footer.blade.php
+++ b/resources/views/layouts/_ads/_footer.blade.php
@@ -1,11 +1,25 @@
-@if ($adSenseClient = config('services.google.ad_sense.client'))
-
-
-
-
-@endif
+@php($banner = Illuminate\Support\Arr::random(config('lio.ads')))
+
+
+
+{{-- Show the banner on bigger displays. --}}
+
+
+{{-- Show the square on mobile. --}}
+
+
+
+ Your banner here too?
+
diff --git a/resources/views/layouts/_ads/_forum_sidebar.blade.php b/resources/views/layouts/_ads/_forum_sidebar.blade.php
index 518371bfd..6910e6a8c 100644
--- a/resources/views/layouts/_ads/_forum_sidebar.blade.php
+++ b/resources/views/layouts/_ads/_forum_sidebar.blade.php
@@ -1,12 +1,14 @@
-@if ($adSenseClient = config('services.google.ad_sense.client'))
-
-
-
-
-@endif
+@php($banner = Illuminate\Support\Arr::random(config('lio.ads')))
+
+
+
+
+
+
+
+
+ Your banner here too?
+
diff --git a/resources/views/layouts/_alerts.blade.php b/resources/views/layouts/_alerts.blade.php
index 78061c831..4669d237b 100644
--- a/resources/views/layouts/_alerts.blade.php
+++ b/resources/views/layouts/_alerts.blade.php
@@ -1,13 +1,13 @@
@if (session()->has('error'))
-
+
{!! session()->pull('error') !!}
-
×
@@ -16,18 +16,23 @@ class="close"
@endif
@if (session()->has('success'))
-
-
+
+
{!! session()->pull('success') !!}
- has('api_token'))
+
+ @endif
+
+
×
-@endif
\ No newline at end of file
+@endif
diff --git a/resources/views/layouts/_fathom.blade.php b/resources/views/layouts/_fathom.blade.php
index 670681353..c7b749df6 100644
--- a/resources/views/layouts/_fathom.blade.php
+++ b/resources/views/layouts/_fathom.blade.php
@@ -1,15 +1,5 @@
-@if (App::environment('production'))
-
-@endif
+@production
+
+
+
+@endproduction
diff --git a/resources/views/layouts/_footer.blade.php b/resources/views/layouts/_footer.blade.php
index 15d448b16..48f7886b3 100644
--- a/resources/views/layouts/_footer.blade.php
+++ b/resources/views/layouts/_footer.blade.php
@@ -1,49 +1,90 @@
-@unless($disableFooterAds ?? false)
-
- @include('layouts._ads._footer')
-
-@endif
+
+ @include('layouts._sponsors')
+
-@include('layouts._sponsors')
+
+
+
+
+
+
-
-
-
-
-
-
- Privacy
-
+
+ The Laravel portal for problem solving, knowledge sharing and community building.
+
+
+
+
-
-
- Cookies
-
+
+
+
+ © {{ date('Y') }} Laravel.io - All rights reserved.
+
+
+
-
-
-
-
- © {{ date('Y') }} Laravel.io - All rights reserved.
-
diff --git a/resources/views/layouts/_google_analytics.blade.php b/resources/views/layouts/_google_analytics.blade.php
deleted file mode 100644
index b780b7b42..000000000
--- a/resources/views/layouts/_google_analytics.blade.php
+++ /dev/null
@@ -1,11 +0,0 @@
-@if (App::environment('production'))
-
-@endif
diff --git a/resources/views/layouts/_metomic.blade.php b/resources/views/layouts/_metomic.blade.php
deleted file mode 100644
index b1979e73d..000000000
--- a/resources/views/layouts/_metomic.blade.php
+++ /dev/null
@@ -1,4 +0,0 @@
-@if (App::environment('production'))
-
-
-@endif
diff --git a/resources/views/layouts/_nav.blade.php b/resources/views/layouts/_nav.blade.php
index a033e4a3f..05c549540 100644
--- a/resources/views/layouts/_nav.blade.php
+++ b/resources/views/layouts/_nav.blade.php
@@ -1,179 +1,161 @@
-
-
-
-
-
-
-
- Forum
-
-
- Pastebin
-
-
-
-
- Chat
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
- Events
-
-
-
-
- Community
-
-
-
-
+
+
+
-
-
-
-
-
-
- @include('_partials._search')
-
-
-
-
-
-
-
-
- @if (Auth::guest())
-
- @else
-
-
-
-
-
-
{{ Auth::user()->name() }}
-
{{ '@'.Auth::user()->username() }}
+
+
+
+
+
+
+ @include('_partials._search')
+
+
+ @if (Auth::guest())
+
+
+ Register
+
+
+
+
+
+
+
+
+ Login
+
+
+
+
+
+ Login
+
+
+ @else
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ Auth::user()->username() }}
+
+
+
+
+
+
+
+
+ @endif
+
-
- @endif
+
+
+ @yield('subnav')
diff --git a/resources/views/layouts/_social.blade.php b/resources/views/layouts/_social.blade.php
index 5f0426420..7b20bed88 100644
--- a/resources/views/layouts/_social.blade.php
+++ b/resources/views/layouts/_social.blade.php
@@ -1,11 +1,16 @@
-
+
-
-
-
\ No newline at end of file
+
+
+@if (isset($shareImage))
+
+@else
+
+@endif
+
diff --git a/resources/views/layouts/_sponsors.blade.php b/resources/views/layouts/_sponsors.blade.php
index 7550d9431..b923d93d9 100644
--- a/resources/views/layouts/_sponsors.blade.php
+++ b/resources/views/layouts/_sponsors.blade.php
@@ -1,34 +1,51 @@
-
-
-
- We'd like to thank these amazing companies for supporting us
+
+
+
+ We'd like to thank these amazing companies for supporting us
-
-
-
-
-
-
-
-
-
+
+ {{--
+
+
--}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Your logo here?
+
diff --git a/resources/views/layouts/base.blade.php b/resources/views/layouts/base.blade.php
index 30e320f35..d2c52b1b1 100644
--- a/resources/views/layouts/base.blade.php
+++ b/resources/views/layouts/base.blade.php
@@ -1,8 +1,6 @@
- @include('layouts._metomic')
-
@@ -10,15 +8,21 @@
-
{{ isset($title) ? $title.' | ' : '' }} {{ config('app.name') }}
+
+ {{ isset($title) ? $title.' | ' : '' }}
+ {{ config('app.name') }}
+ {{ is_active('home') ? '- The Laravel Community Portal' : '' }}
+
+
+
+
+
+
+
-
-
+ @vite(['resources/css/app.css'])
-
-
-
-
+ @stack('meta')
+
+
Privacy Policy of Laravel.io
+
+
This Website collects some Personal Data from its Users.
+
This document can be printed for reference by using the print command in the settings of any browser.
+
+
+ Owner and Data Controller
+
+
Dries Vints
+
Owner contact email: hello@laravel.io
+
+
+
+ Types of Data collected
+
+
+
+ Among the types of Personal Data that this Website collects, by itself or through third parties, there are:
+ email address; username; password; Cookies.
+
+
+
Complete details on each type of Personal Data collected are provided in the dedicated sections of this privacy
+ policy or by specific explanation texts displayed prior to the Data collection. Personal Data may be freely
+ provided by the User, or, in case of Usage Data, collected automatically when using this Website. Unless
+ specified otherwise, all Data requested by this Website is mandatory and failure to provide this Data may make
+ it impossible for this Website to provide its services. In cases where this Website specifically states that
+ some Data is not mandatory, Users are free not to communicate this Data without consequences to the availability
+ or the functioning of the Service. Users who are uncertain about which Personal Data is mandatory are welcome
+ to contact the Owner. Any use of Cookies – or of other tracking tools — by this Website or by the owners of
+ third-party services used by this Website serves the purpose of providing the Service required by the User, in
+ addition to any other purposes described in the present document and in the Cookie Policy.
+
Users are responsible for any third-party Personal Data obtained, published or shared through this Website.
+
+
+
Mode and place of processing the Data
+
+ Methods of processing
+
+
The Owner takes appropriate security measures to prevent unauthorized access, disclosure, modification, or
+ unauthorized destruction of the Data. The Data processing is carried out using computers and/or IT enabled
+ tools, following organizational procedures and modes strictly related to the purposes indicated. In addition to
+ the Owner, in some cases, the Data may be accessible to certain types of persons in charge, involved with the
+ operation of this Website (administration, sales, marketing, legal, system administration) or external parties
+ (such as third-party technical service providers, mail carriers, hosting providers, IT companies, communications
+ agencies) appointed, if necessary, as Data Processors by the Owner. The updated list of these parties may be
+ requested from the Owner at any time.
+
+
+ Place
+
+
The Data is processed at the Owner's operating offices and in any other places where the parties involved in the
+ processing are located.
+ Depending on the User's location, data transfers may involve transferring the User's Data to a country other
+ than their own. To find out more about the place of processing of such transferred Data, Users can check the
+ section containing details about the processing of Personal Data.
+
+
+ Retention time
+
+
Unless specified otherwise in this document, Personal Data shall be processed and stored for as long as required
+ by the purpose they have been collected for and may be retained for longer due to applicable legal obligation or
+ based on the Users’ consent.
+
+
+
+
The purposes of processing
+
+ The Data concerning the User is collected to allow the Owner to provide its Service, comply with its legal
+ obligations, respond to enforcement requests, protect its rights and interests (or those of its Users or third
+ parties), detect any malicious or fraudulent activity, as well as the following:
+ Hosting and backend infrastructure, Registration and authentication, Registration and authentication provided
+ directly by this Website, Traffic optimization and distribution and Managing contacts and sending messages.
+
+
+
For specific information about the Personal Data used for each purpose, the User may refer to the section
+ “Detailed information on the processing of Personal Data”.
+
+
+
Detailed information on the processing of Personal Data
+
Personal Data is collected for the following purposes and using the following services:
+
+
+ Hosting and backend infrastructure
+
+
This type of service has the purpose of hosting Data and files that enable this Website to run and be distributed
+ as well as to provide a ready-made infrastructure to run specific features or parts of this Website.
+ Some of these services work through geographically distributed servers, making it difficult to determine the
+ actual location where the Personal Data are stored.
+
+
+
+ DigitalOcean (DigitalOcean Inc.)
+
+
DigitalOcean is a hosting service provided by DigitalOcean Inc.
+
+
Personal Data processed: various types of Data as specified in the privacy policy of the service.
+
+
+
Place of processing: US – Privacy Policy .
+
+
+
+ Managing contacts and sending messages
+
+
This type of service makes it possible to manage a database of email contacts, phone contacts or any other
+ contact information to communicate with the User.
+ These services may also collect data concerning the date and time when the message was viewed by the User, as
+ well as when the User interacted with it, such as by clicking on links included in the message.
+
+
+
+ Mailgun (Mailgun Technologies, Inc.)
+
+
Mailgun is an email address management and message sending service provided by Mailgun Technologies, Inc.
+
+
Personal Data processed: email address.
+
+
+
Place of processing: United States – Privacy Policy .
+
+
+
+ Registration and authentication
+
+
By registering or authenticating, Users allow this Website to identify them and give them access to dedicated
+ services.
+ Depending on what is described below, third parties may provide registration and authentication services. In
+ this case, this Website will be able to access some Data, stored by these third-party services, for registration
+ or identification purposes.
+
+
+
+ GitHub OAuth (GitHub Inc.)
+
+
GitHub OAuth is a registration and authentication service provided by GitHub Inc. and is connected to the GitHub
+ network.
+
+
Personal Data processed: various types of Data as specified in the privacy policy of the service.
+
+
+
Place of processing: US – Privacy Policy .
+
+
+
+ Registration and authentication provided directly by this Website
+
+
By registering or authenticating, Users allow this Website to identify them and give them access to dedicated
+ services. The Personal Data is collected and stored for registration or identification purposes only. The Data
+ collected are only those necessary for the provision of the service requested by the Users.
+
+
+
+ Direct registration (this Website)
+
+
The User registers by filling out the registration form and providing the Personal Data directly to this Website.
+
+
+
Personal Data processed: email address; password; username.
+
+
+
+
+ Traffic optimization and distribution
+
+
This type of service allows this Website to distribute their content using servers located across different
+ countries and to optimize their performance.
+ Which Personal Data are processed depends on the characteristics and the way these services are implemented.
+ Their function is to filter communications between this Website and the User's browser.
+ Considering the widespread distribution of this system, it is difficult to determine the locations to which the
+ contents that may contain Personal Information of the User are transferred.
+
+
+
+ Cloudflare (Cloudflare)
+
+
Cloudflare is a traffic optimization and distribution service provided by Cloudflare Inc.
+ The way Cloudflare is integrated means that it filters all the traffic through this Website, i.e., communication
+ between this Website and the User's browser, while also allowing analytical data from this Website to be
+ collected.
+
+
Personal Data processed: Cookies; various types of Data as specified in the privacy policy of the service.
+
+
+
Place of processing: US – Privacy Policy .
+
+
+
Cookie Policy
+
This Website uses Trackers.
+
+
+
+ Further Information for Users
+
+
+
+
+ Legal basis of processing
+
+
The Owner may process Personal Data relating to Users if one of the following applies:
+
+ Users have given their consent for one or more specific purposes.
+ provision of Data is necessary for the performance of an agreement with the User and/or for any
+ pre-contractual obligations thereof;
+ processing is necessary for compliance with a legal obligation to which the Owner is subject;
+ processing is related to a task that is carried out in the public interest or in the exercise of official
+ authority vested in the Owner;
+ processing is necessary for the purposes of the legitimate interests pursued by the Owner or by a third
+ party.
+
+
In any case, the Owner will gladly help to clarify the specific legal basis that applies to the processing, and
+ in particular whether the provision of Personal Data is a statutory or contractual requirement, or a requirement
+ necessary to enter into a contract.
+
+
+
+ Further information about retention time
+
+
+
Unless specified otherwise in this document, Personal Data shall be processed and stored for as long as required
+ by the purpose they have been collected for and may be retained for longer due to applicable legal obligation or
+ based on the Users’ consent.
+
Therefore:
+
+ Personal Data collected for purposes related to the performance of a contract between the Owner and the User
+ shall be retained until such contract has been fully performed.
+ Personal Data collected for the purposes of the Owner’s legitimate interests shall be retained as long as
+ needed to fulfill such purposes. Users may find specific information regarding the legitimate interests
+ pursued by the Owner within the relevant sections of this document or by contacting the Owner.
+
+
The Owner may be allowed to retain Personal Data for a longer period whenever the User has given consent to such
+ processing, as long as such consent is not withdrawn. Furthermore, the Owner may be obliged to retain Personal
+ Data for a longer period whenever required to fulfil a legal obligation or upon order of an authority.
+ Once the retention period expires, Personal Data shall be deleted. Therefore, the right of access, the right to
+ erasure, the right to rectification and the right to data portability cannot be enforced after expiration of the
+ retention period.
+
+
+
The rights of Users based on the General Data Protection Regulation (GDPR)
+
Users may exercise certain rights regarding their Data processed by the Owner.
+
+
In particular, Users have the right to do the following, to the extent permitted by law:
+
+
+ Withdraw their consent at any time. Users have the right to withdraw consent where they
+ have previously given their consent to the processing of their Personal Data.
+ Object to processing of their Data. Users have the right to object to the processing of
+ their Data if the processing is carried out on a legal basis other than consent.
+ Access their Data. Users have the right to learn if Data is being processed by the Owner,
+ obtain disclosure regarding certain aspects of the processing and obtain a copy of the Data undergoing
+ processing.
+ Verify and seek rectification. Users have the right to verify the accuracy of their Data
+ and ask for it to be updated or corrected.
+ Restrict the processing of their Data. Users have the right to restrict the processing of
+ their Data. In this case, the Owner will not process their Data for any purpose other than storing it.
+
+ Have their Personal Data deleted or otherwise removed. Users have the right to obtain the
+ erasure of their Data from the Owner.
+ Receive their Data and have it transferred to another controller. Users have the right to
+ receive their Data in a structured, commonly used and machine readable format and, if technically feasible,
+ to have it transmitted to another controller without any hindrance.
+ Lodge a complaint. Users have the right to bring a claim before their competent data
+ protection authority.
+
+
+
+ Users are also entitled to learn about the legal basis for Data transfers abroad including to any international
+ organization governed by public international law or set up by two or more countries, such as the UN, and about
+ the security measures taken by the Owner to safeguard their Data.
+
+
+
+ Details about the right to object to processing
+
+
Where Personal Data is processed for a public interest, in the exercise of an official authority vested
+ in the Owner or for the purposes of the legitimate interests pursued by the Owner, Users may object to such
+ processing by providing a ground related to their particular situation to justify the objection.
+
+
Users must know that, however, should their Personal Data be processed for direct marketing purposes,
+ they can object to that processing at any time, free of charge and without providing any justification.
+ Where the User objects to processing for direct marketing purposes, the Personal Data will no longer be
+ processed for such purposes. To learn whether the Owner is processing Personal Data for direct marketing
+ purposes, Users may refer to the relevant sections of this document.
+
+
+ How to exercise these rights
+
+
Any requests to exercise User rights can be directed to the Owner through the contact details provided in this
+ document. Such requests are free of charge and will be answered by the Owner as early as possible and always
+ within one month, providing Users with the information required by law. Any rectification or erasure of Personal
+ Data or restriction of processing will be communicated by the Owner to each recipient, if any, to whom the
+ Personal Data has been disclosed unless this proves impossible or involves disproportionate effort. At the
+ Users’ request, the Owner will inform them about those recipients.
+
+
+
Additional information about Data collection and processing
+
+ Legal action
+
+
The User's Personal Data may be used for legal purposes by the Owner in Court or in the stages leading to
+ possible legal action arising from improper use of this Website or the related Services. The User declares to
+ be aware that the Owner may be required to reveal personal data upon request of public authorities.
+
+ Additional information about User's Personal Data
+
+
In addition to the information contained in this privacy policy, this Website may provide the User with
+ additional and contextual information concerning particular Services or the collection and processing of
+ Personal Data upon request.
+
+ System logs and maintenance
+
+
For operation and maintenance purposes, this Website and any third-party services may collect files that record
+ interaction with this Website (System logs) or use other Personal Data (such as the IP Address) for this
+ purpose.
+
+ Information not contained in this policy
+
+
More details concerning the collection or processing of Personal Data may be requested from the Owner at any
+ time. Please see the contact information at the beginning of this document.
+
+
Changes to this privacy policy
+
The Owner reserves the right to make changes to this privacy policy at any time by notifying its Users on this
+ page and possibly within this Website and/or - as far as technically and legally feasible - sending a notice to
+ Users via any contact information available to the Owner. It is strongly recommended to check this page often,
+ referring to the date of the last modification listed at the bottom.
+ Should the changes affect processing activities performed on the basis of the User’s consent, the Owner shall
+ collect new consent from the User, where required.
+
+
+
+
+
+ Definitions and legal references
+
+
Personal Data (or Data)
+
Any information that directly, indirectly, or in connection with other information — including a personal
+ identification number — allows for the identification or identifiability of a natural person.
+
Usage Data
+
Information collected automatically through this Website (or third-party services employed in this Website),
+ which can include: the IP addresses or domain names of the computers utilized by the Users who use this Website,
+ the URI addresses (Uniform Resource Identifier), the time of the request, the method utilized to submit the
+ request to the server, the size of the file received in response, the numerical code indicating the status of
+ the server's answer (successful outcome, error, etc.), the country of origin, the features of the browser and
+ the operating system utilized by the User, the various time details per visit (e.g., the time spent on each page
+ within the Application) and the details about the path followed within the Application with special reference to
+ the sequence of pages visited, and other parameters about the device operating system and/or the User's IT
+ environment.
+
User
+
The individual using this Website who, unless otherwise specified, coincides with the Data Subject.
+
Data Subject
+
The natural person to whom the Personal Data refers.
+
Data Processor (or Processor)
+
The natural or legal person, public authority, agency or other body which processes Personal Data on behalf of
+ the Controller, as described in this privacy policy.
+
Data Controller (or Owner)
+
The natural or legal person, public authority, agency or other body which, alone or jointly with others,
+ determines the purposes and means of the processing of Personal Data, including the security measures concerning
+ the operation and use of this Website. The Data Controller, unless otherwise specified, is the Owner of this
+ Website.
+
This Website (or this Application)
+
The means by which the Personal Data of the User is collected and processed.
+
Service
+
The service provided by this Website as described in the relative terms (if available) and on this
+ site/application.
+
+
European Union (or EU)
+
Unless otherwise specified, all references made within this document to the European Union include all current
+ member states to the European Union and the European Economic Area.
+
+
Cookie
+
Cookies are Trackers consisting of small sets of data stored in the User's browser.
+
+
Tracker
+
Tracker indicates any technology - e.g Cookies, unique identifiers, web beacons, embedded scripts, e-tags and
+ fingerprinting - that enables the tracking of Users, for example by accessing or storing information on the
+ User’s device.
+
Legal information
+
This privacy policy relates solely to this Website, if not stated otherwise within this document.
+
+ Latest update: January 06, 2023
+
@endsection
diff --git a/resources/views/replies/edit.blade.php b/resources/views/replies/edit.blade.php
deleted file mode 100644
index b82cfd790..000000000
--- a/resources/views/replies/edit.blade.php
+++ /dev/null
@@ -1,38 +0,0 @@
-@title('Edit your reply')
-
-@extends('layouts.default')
-
-@section('subnav')
-
-@endsection
-
-@section('content')
-
-@endsection
diff --git a/resources/views/rules.blade.php b/resources/views/rules.blade.php
index cae43a337..fa8605ba9 100644
--- a/resources/views/rules.blade.php
+++ b/resources/views/rules.blade.php
@@ -1,15 +1,16 @@
-@title('Forum Rules')
+@title('Portal Rules')
@extends('layouts.small')
@section('small-content')
-
-
By posting to the forum and replying to threads you agree to:
-
- Follow our Code of Conduct
+
+
By posting to the forum, writing articles and replying to threads you agree to:
+
+ Follow our Code of Conduct
+ Post and reply in English
Not spam
Not advertise commercial content, products or services in any way. You may offer your services or suggest products when asked for but you cannot start threads for them.
- Not recruit for your own or other companies
+ Not recruit for your own or other companies or start threads to look for a job or offer your services.
Not following these rules may result in the banning or deletion of your profile and/or content.
Moderators and admins may remove or modify your content at any time they seem necessary without notice.
diff --git a/resources/views/terms.blade.php b/resources/views/terms.blade.php
index 4a5d13275..e3f5799e5 100644
--- a/resources/views/terms.blade.php
+++ b/resources/views/terms.blade.php
@@ -3,11 +3,11 @@
@extends('layouts.default')
@section('content')
-
+
Terms and Conditions
-
- Last updated: May 22, 2018
+
+ Last updated: May 22, 2018
These Terms and Conditions ("Terms", "Terms and Conditions") govern your relationship with https://laravel.io website (the "Service") operated by Laravel.io ("us", "we", or "our").
diff --git a/resources/views/users/_latest_replies.blade.php b/resources/views/users/_latest_replies.blade.php
index 01058c10f..8afb00762 100644
--- a/resources/views/users/_latest_replies.blade.php
+++ b/resources/views/users/_latest_replies.blade.php
@@ -1,47 +1,7 @@
-
-
- @forelse ($user->latestReplies() as $reply)
-
-
-
-
-
-
-
- Posted {{ $reply->createdAt()->diffForHumans() }}
-
-
-
-
- @if ($reply->replyAble()->isSolutionReply($reply))
-
-
- Solution
-
- @endif
-
-
- @empty
-
- {{ $user->name() }} has not posted any replies yet
-
- @endforelse
-
+
+ @forelse ($user->latestReplies(5) as $reply)
+
+ @empty
+
+ @endforelse
diff --git a/resources/views/users/_latest_threads.blade.php b/resources/views/users/_latest_threads.blade.php
index 0370cb9d8..d1ba1931c 100644
--- a/resources/views/users/_latest_threads.blade.php
+++ b/resources/views/users/_latest_threads.blade.php
@@ -1,72 +1,7 @@
-
-
- @forelse ($user->latestThreads() as $thread)
-
-
-
-
-
-
-
- @include('forum.threads.info.tags')
-
-
- @if ($thread->isSolved())
-
-
- View solution
-
- @endif
-
-
- @empty
-
- {{ $user->name() }} has not posted any threads yet
-
- @endforelse
-
+
+ @forelse ($user->latestThreads() as $thread)
+
+ @empty
+
+ @endforelse
diff --git a/resources/views/users/_metrics.blade.php b/resources/views/users/_metrics.blade.php
deleted file mode 100644
index 870e7a4d7..000000000
--- a/resources/views/users/_metrics.blade.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
{{ $user->countThreads() }} {{ Str::plural('thread', $user->countThreads()) }}
-
-
-
-
-
{{ $user->countReplies() }} {{ Str::plural('reply', $user->countReplies()) }}
-
-
-
-
-
{{ $user->countSolutions() }} {{ Str::plural('solution', $user->countSolutions()) }}
-
\ No newline at end of file
diff --git a/resources/views/users/_user_info.blade.php b/resources/views/users/_user_info.blade.php
deleted file mode 100644
index ca1aa5915..000000000
--- a/resources/views/users/_user_info.blade.php
+++ /dev/null
@@ -1,91 +0,0 @@
-
-
-
-
{{ $user->name() }}
-
- @if ($user->isLoggedInUser())
-
- Edit profile
-
- @endif
-
- @can(App\Policies\UserPolicy::BAN, $user)
- @if ($user->isBanned())
-
Unban User
- @else
-
Ban User
- @endif
- @endcan
-
- @if (Auth::check() && Auth::user()->isAdmin())
- @can(App\Policies\UserPolicy::DELETE, $user)
-
Delete User
- @endcan
- @endif
-
- @if ($bio = $user->bio())
-
- {{ $bio }}
-
- @endif
-
-
- Joined {{ $user->created_at->format('j M Y') }}
-
-
- @if ($user->isAdmin())
-
-
- Admin
-
-
- @elseif ($user->isModerator())
-
- Moderator
-
- @endif
-
-
-
-
-{{-- The reason why we put the modals here is because otherwise UI gets broken --}}
-@can(App\Policies\UserPolicy::BAN, $user)
- @if ($user->isBanned())
- @include('_partials._update_modal', [
- 'identifier' => 'unbanUser',
- 'route' => ['admin.users.unban', $user->username()],
- 'title' => "Unban {$user->name()}",
- 'body' => '
Unbanning this user will allow them to login again and post content.
',
- ])
- @else
- @include('_partials._update_modal', [
- 'identifier' => 'banUser',
- 'route' => ['admin.users.ban', $user->username()],
- 'title' => "Ban {$user->name()}",
- 'body' => '
Banning this user will prevent them from logging in, posting threads and replying to threads.
',
- ])
- @endif
-@endcan
-
-@can(App\Policies\UserPolicy::DELETE, $user)
- @include('_partials._delete_modal', [
- 'identifier' => 'deleteUser',
- 'route' => ['admin.users.delete', $user->username()],
- 'title' => "Delete {$user->name()}",
- 'body' => '
Deleting this user will remove their account and any related content like threads & replies. This cannot be undone.
',
- ])
-@endcan
diff --git a/resources/views/users/articles.blade.php b/resources/views/users/articles.blade.php
new file mode 100644
index 000000000..813f316fa
--- /dev/null
+++ b/resources/views/users/articles.blade.php
@@ -0,0 +1,41 @@
+@title('Your Articles')
+
+@extends('layouts.default')
+
+@section('subnav')
+
+
+
+ {{ $title }}
+
+
+
+
+ Create Article
+
+
+
+
+@endsection
+
+@section('content')
+
+ @unless(Auth::user()->hasTwitterAccount() && Auth::user()->hasBlueskyAccount())
+
+ Set your X (Twitter) and/or Bluesky handles so we can link to your profiles when we tweet out your article.
+
+ @endunless
+
+
+ @forelse($articles as $article)
+
+ @empty
+
+ You haven't created any articles yet
+
+ @endforelse
+
+
+ {{ $articles->links() }}
+
+@endsection
diff --git a/resources/views/users/dashboard.blade.php b/resources/views/users/dashboard.blade.php
deleted file mode 100644
index 07997bb83..000000000
--- a/resources/views/users/dashboard.blade.php
+++ /dev/null
@@ -1,47 +0,0 @@
-@title('Dashboard')
-
-@extends('layouts.default')
-
-@section('content')
-
-
-
- @include('users._metrics', ['user' => Auth::user()])
-
-
-
-
-
-
-
-
-
-
-
- @include('users._latest_threads', ['user' => Auth::user()])
-
-
-
- @include('users._latest_replies', ['user' => Auth::user()])
-
-
-
-
-
-@endsection
diff --git a/resources/views/users/notifications.blade.php b/resources/views/users/notifications.blade.php
new file mode 100644
index 000000000..3a2eb9a30
--- /dev/null
+++ b/resources/views/users/notifications.blade.php
@@ -0,0 +1,9 @@
+@title('Users')
+
+@extends('layouts.default')
+
+@section('content')
+
+
+
+@endsection
diff --git a/resources/views/users/profile.blade.php b/resources/views/users/profile.blade.php
index 9c089b39b..304b07ea1 100644
--- a/resources/views/users/profile.blade.php
+++ b/resources/views/users/profile.blade.php
@@ -1,46 +1,256 @@
-@title($user->name())
+@title("{$user->username()} ({$user->name()})")
+@canonical(route('profile', $user->username()))
@extends('layouts.default')
@section('content')
-
-
-
-
- @include('users._user_info')
-
+
+
+
+
+
+
-
-
- @include('users._metrics')
-
+
+
+
+
+
{{ $user->name() }}
-
-
-
+
+
+ Joined {{ $user->createdAt()->format('j M Y') }}
+
-
-
- @include('users._latest_threads')
+
+
+ {{ $user->bio() }}
+
+
+
+
+ @if ($user->githubUsername())
+
+
+
+ @endif
+
+ @if ($user->hasTwitterAccount())
+
+ @endif
+
+ @if ($user->hasBlueskyAccount())
+
+ @endif
+
+ @if ($user->hasWebsite())
+
+
+
+ @endif
+
+
+
+ @if ($user->isLoggedInUser())
+
+
+
+ Edit profile
+
+
+ @endif
+
+ @can(App\Policies\UserPolicy::BLOCK, $user)
+ @if (Auth::user()->hasBlocked($user))
+
+
+
+ Unblock User
+
+
+ @else
+
+
+
+ Block User
+
+
+ @endif
+ @endcan
+
+ @can(App\Policies\UserPolicy::BAN, $user)
+ @if ($user->isBanned())
+
+
+
+ Unban User
+
+
+ @else
+
+
+
+ Ban User
+
+
+ @endif
+ @endcan
+
+ @if ($user->bannedReason())
+ @can(App\Policies\UserPolicy::BAN, $user)
+
+
Banned reason:
+
+ {{ $user->bannedReason() }}
+
+
+ @endcan
+ @endif
+
+
+
+
+
+ Statistics
+
+
+
+
+ Threads
+
+ {{ number_format($user->countThreads()) }}
+
-
- @include('users._latest_replies')
+
+ Replies
+
+ {{ number_format($user->countReplies()) }}
+
+
+
+ Solutions
+
+ {{ number_format($user->countSolutions()) }}
+
+
+
+
+ Articles
+
+ {{ number_format($user->countArticles()) }}
+
+
+
+
+
+
+ @if ($articles->count() > 0)
+
+
+ Articles
+
+
+
+ @foreach ($articles as $article)
+
+
+
+ @endforeach
+
+
+ @endif
+
+
+
+
+
+
+ Threads posted
+
+
+ Replies posted
+
+
+
+
+
+
+
+ @include('users._latest_threads')
+
+
+
+ @include('users._latest_replies')
-
+
+
+ @can(App\Policies\UserPolicy::BLOCK, $user)
+ @if (Auth::user()->hasBlocked($user))
+
+ Unblocking this user will allow them to mention you again in threads and replies.
+
+ @else
+
+ Blocking this user will prevent them from mentioning you in threads and replies. The user will not be notified that you blocked them.
+
+ @endif
+ @endcan
+
+ @can(App\Policies\UserPolicy::BAN, $user)
+ @if ($user->isBanned())
+
+ Unbanning this user will allow them to login again and post content.
+
+ @else
+
+ Banning this user will prevent them from logging in, posting threads and replying to threads.
+
+
+
+ Delete threads
+
+
+
+ @endif
+ @endcan
@endsection
diff --git a/resources/views/users/settings/api_tokens.blade.php b/resources/views/users/settings/api_tokens.blade.php
new file mode 100644
index 000000000..962631633
--- /dev/null
+++ b/resources/views/users/settings/api_tokens.blade.php
@@ -0,0 +1,57 @@
+@title('API Tokens')
+
+
+
+
+
+
+ API Tokens
+
+
+
+ Create API tokens to access your account over our REST API.
+
+
+
+
+
+
+
+
+
+
+
+ Generate New Token
+
+
+
+
+
diff --git a/resources/views/users/settings/blocked.blade.php b/resources/views/users/settings/blocked.blade.php
new file mode 100644
index 000000000..dbdd863d7
--- /dev/null
+++ b/resources/views/users/settings/blocked.blade.php
@@ -0,0 +1,42 @@
+@title('Password')
+
+
+
+
+
+
+ Blocked Users
+
+
+ The users below will not be able to mention you in their forum threads or replies. You can block additional users from their profile. Or you can unblock users below.
+
+
+
+
+ @forelse (Auth::user()->blockedUsers as $user)
+
+
+
+
+
+
+
+ @empty
+
+ Currently, you've not blocked anyone.
+
+ @endforelse
+
+
+
+
diff --git a/resources/views/users/settings/github.blade.php b/resources/views/users/settings/github.blade.php
new file mode 100644
index 000000000..bbe4f3523
--- /dev/null
+++ b/resources/views/users/settings/github.blade.php
@@ -0,0 +1,61 @@
+@title('GitHub')
+
+
+
+
+
+
+ GitHub Account
+
+
+
+ Connect your GitHub account to keep your profile for easy login and avatar sync.
+
+
+
+ @if (Auth::user()->hasConnectedGitHubAccount())
+
+
+
+ @if (Auth::user()->password)
+
+
+ Disconnect GitHub
+
+
+ @else
+
+ You must set a password before disconnecting your GitHub account, otherwise, you will not be able to log in again.
+
+ @endif
+
+ @else
+
+
+ Connecting your GitHub account will automatically populate your GitHub username and use your
+ GitHub profile image.
+
+
+ @endif
+
+
+ @unless (Auth::user()->hasConnectedGitHubAccount())
+
+
+
+ Connect GitHub
+
+
+
+ @endunless
+
+
diff --git a/resources/views/users/settings/notification_settings.blade.php b/resources/views/users/settings/notification_settings.blade.php
new file mode 100644
index 000000000..3b917afa3
--- /dev/null
+++ b/resources/views/users/settings/notification_settings.blade.php
@@ -0,0 +1,46 @@
+@title('Notification settings')
+
+
+
+
+
+
+
+ Notification settings
+
+
+
+ Enable or disable specific notification types.
+
+
+
+
+ @foreach (App\Enums\NotificationType::getTypes() as $notificationType)
+
+
+
+ @php($checked = auth()->user()->isNotificationAllowed($notificationType->getClass()))
+
+
+ {{ $notificationType->label() }}
+
+
+
+
+ @endforeach
+
+
+
+
+
+ Save notification settings
+
+
+
+
+
diff --git a/resources/views/users/settings/password.blade.php b/resources/views/users/settings/password.blade.php
index 7c7c0d363..8c1f3b0cb 100644
--- a/resources/views/users/settings/password.blade.php
+++ b/resources/views/users/settings/password.blade.php
@@ -1,35 +1,46 @@
@title('Password')
-@extends('layouts.settings')
-
-@section('content')
-