From 6dde3a0a547a0ea6baf01c2cab4d52c243fff91c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=B3nica=20Pastor?= Date: Sun, 14 Mar 2021 18:14:22 +0100 Subject: [PATCH] Evolution chart of the findings in app --- README.md | 3 + app/static/app.png | Bin 0 -> 60545 bytes app/static/chartjs/Chart.min.css | 1 + app/static/chartjs/Chart.min.js | 7 +++ app/templates/app.html | 104 ++++++++++++++++++++++++------- app/views.py | 6 ++ 6 files changed, 98 insertions(+), 23 deletions(-) create mode 100644 app/static/app.png create mode 100644 app/static/chartjs/Chart.min.css create mode 100644 app/static/chartjs/Chart.min.js diff --git a/README.md b/README.md index cd51e4c..afa7d60 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,8 @@ Django Web application for performing Static Analysis and detecting malware in Android APKs +![App](app/static/app.png) + ### Components ![Schema](app/static/schema.png) @@ -39,6 +41,7 @@ Image is based on python buster. Link to [Docker Hub image](https://hub.docker.c | Image | Tags | Base | |--------------------|-------|---------------------| +| mpast/mobile_audit | 1.3.6 | python:3.9.2-buster | | mpast/mobile_audit | 1.3.0 | python:3.9.1-buster | | mpast/mobile_audit | 1.2.0 | python:3.9.1-buster | | mpast/mobile_audit | 1.1.0 | python:3.9.0-buster | diff --git a/app/static/app.png b/app/static/app.png new file mode 100644 index 0000000000000000000000000000000000000000..2a22959c62c248356241e7c5c90bd710d79a9304 GIT binary patch literal 60545 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%0AiP5z{U95 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 literal 0 HcmV?d00001 diff --git a/app/static/chartjs/Chart.min.css b/app/static/chartjs/Chart.min.css new file mode 100644 index 0000000..9dc5ac2 --- /dev/null +++ b/app/static/chartjs/Chart.min.css @@ -0,0 +1 @@ +@keyframes chartjs-render-animation{from{opacity:.99}to{opacity:1}}.chartjs-render-monitor{animation:chartjs-render-animation 1ms}.chartjs-size-monitor,.chartjs-size-monitor-expand,.chartjs-size-monitor-shrink{position:absolute;direction:ltr;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1}.chartjs-size-monitor-expand>div{position:absolute;width:1000000px;height:1000000px;left:0;top:0}.chartjs-size-monitor-shrink>div{position:absolute;width:200%;height:200%;left:0;top:0} \ No newline at end of file diff --git a/app/static/chartjs/Chart.min.js b/app/static/chartjs/Chart.min.js new file mode 100644 index 0000000..a87f614 --- /dev/null +++ b/app/static/chartjs/Chart.min.js @@ -0,0 +1,7 @@ +/*! + * Chart.js v2.9.4 + * https://www.chartjs.org + * (c) 2020 Chart.js Contributors + * Released under the MIT License + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(function(){try{return require("moment")}catch(t){}}()):"function"==typeof define&&define.amd?define(["require"],(function(t){return e(function(){try{return t("moment")}catch(t){}}())})):(t=t||self).Chart=e(t.moment)}(this,(function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var e={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},n=function(t,e){return t(e={exports:{}},e.exports),e.exports}((function(t){var n={};for(var i in e)e.hasOwnProperty(i)&&(n[e[i]]=i);var a=t.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var r in a)if(a.hasOwnProperty(r)){if(!("channels"in a[r]))throw new Error("missing channels property: "+r);if(!("labels"in a[r]))throw new Error("missing channel labels property: "+r);if(a[r].labels.length!==a[r].channels)throw new Error("channel and label counts mismatch: "+r);var o=a[r].channels,s=a[r].labels;delete a[r].channels,delete a[r].labels,Object.defineProperty(a[r],"channels",{value:o}),Object.defineProperty(a[r],"labels",{value:s})}a.rgb.hsl=function(t){var e,n,i=t[0]/255,a=t[1]/255,r=t[2]/255,o=Math.min(i,a,r),s=Math.max(i,a,r),l=s-o;return s===o?e=0:i===s?e=(a-r)/l:a===s?e=2+(r-i)/l:r===s&&(e=4+(i-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),n=(o+s)/2,[e,100*(s===o?0:n<=.5?l/(s+o):l/(2-s-o)),100*n]},a.rgb.hsv=function(t){var e,n,i,a,r,o=t[0]/255,s=t[1]/255,l=t[2]/255,u=Math.max(o,s,l),d=u-Math.min(o,s,l),h=function(t){return(u-t)/6/d+.5};return 0===d?a=r=0:(r=d/u,e=h(o),n=h(s),i=h(l),o===u?a=i-n:s===u?a=1/3+e-i:l===u&&(a=2/3+n-e),a<0?a+=1:a>1&&(a-=1)),[360*a,100*r,100*u]},a.rgb.hwb=function(t){var e=t[0],n=t[1],i=t[2];return[a.rgb.hsl(t)[0],100*(1/255*Math.min(e,Math.min(n,i))),100*(i=1-1/255*Math.max(e,Math.max(n,i)))]},a.rgb.cmyk=function(t){var e,n=t[0]/255,i=t[1]/255,a=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-i,1-a)))/(1-e)||0),100*((1-i-e)/(1-e)||0),100*((1-a-e)/(1-e)||0),100*e]},a.rgb.keyword=function(t){var i=n[t];if(i)return i;var a,r,o,s=1/0;for(var l in e)if(e.hasOwnProperty(l)){var u=e[l],d=(r=t,o=u,Math.pow(r[0]-o[0],2)+Math.pow(r[1]-o[1],2)+Math.pow(r[2]-o[2],2));d.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)),100*(.2126*e+.7152*n+.0722*i),100*(.0193*e+.1192*n+.9505*i)]},a.rgb.lab=function(t){var e=a.rgb.xyz(t),n=e[0],i=e[1],r=e[2];return i/=100,r/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(n-i),200*(i-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]},a.hsl.rgb=function(t){var e,n,i,a,r,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0===s)return[r=255*l,r,r];e=2*l-(n=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var u=0;u<3;u++)(i=o+1/3*-(u-1))<0&&i++,i>1&&i--,r=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+(n-e)*(2/3-i)*6:e,a[u]=255*r;return a},a.hsl.hsv=function(t){var e=t[0],n=t[1]/100,i=t[2]/100,a=n,r=Math.max(i,.01);return n*=(i*=2)<=1?i:2-i,a*=r<=1?r:2-r,[e,100*(0===i?2*a/(r+a):2*n/(i+n)),100*((i+n)/2)]},a.hsv.rgb=function(t){var e=t[0]/60,n=t[1]/100,i=t[2]/100,a=Math.floor(e)%6,r=e-Math.floor(e),o=255*i*(1-n),s=255*i*(1-n*r),l=255*i*(1-n*(1-r));switch(i*=255,a){case 0:return[i,l,o];case 1:return[s,i,o];case 2:return[o,i,l];case 3:return[o,s,i];case 4:return[l,o,i];case 5:return[i,o,s]}},a.hsv.hsl=function(t){var e,n,i,a=t[0],r=t[1]/100,o=t[2]/100,s=Math.max(o,.01);return i=(2-r)*o,n=r*s,[a,100*(n=(n/=(e=(2-r)*s)<=1?e:2-e)||0),100*(i/=2)]},a.hwb.rgb=function(t){var e,n,i,a,r,o,s,l=t[0]/360,u=t[1]/100,d=t[2]/100,h=u+d;switch(h>1&&(u/=h,d/=h),i=6*l-(e=Math.floor(6*l)),0!=(1&e)&&(i=1-i),a=u+i*((n=1-d)-u),e){default:case 6:case 0:r=n,o=a,s=u;break;case 1:r=a,o=n,s=u;break;case 2:r=u,o=n,s=a;break;case 3:r=u,o=a,s=n;break;case 4:r=a,o=u,s=n;break;case 5:r=n,o=u,s=a}return[255*r,255*o,255*s]},a.cmyk.rgb=function(t){var e=t[0]/100,n=t[1]/100,i=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a)),255*(1-Math.min(1,i*(1-a)+a))]},a.xyz.rgb=function(t){var e,n,i,a=t[0]/100,r=t[1]/100,o=t[2]/100;return n=-.9689*a+1.8758*r+.0415*o,i=.0557*a+-.204*r+1.057*o,e=(e=3.2406*a+-1.5372*r+-.4986*o)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:12.92*i,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(i=Math.min(Math.max(0,i),1))]},a.xyz.lab=function(t){var e=t[0],n=t[1],i=t[2];return n/=100,i/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(e-n),200*(n-(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116))]},a.lab.xyz=function(t){var e,n,i,a=t[0];e=t[1]/500+(n=(a+16)/116),i=n-t[2]/200;var r=Math.pow(n,3),o=Math.pow(e,3),s=Math.pow(i,3);return n=r>.008856?r:(n-16/116)/7.787,e=o>.008856?o:(e-16/116)/7.787,i=s>.008856?s:(i-16/116)/7.787,[e*=95.047,n*=100,i*=108.883]},a.lab.lch=function(t){var e,n=t[0],i=t[1],a=t[2];return(e=360*Math.atan2(a,i)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(i*i+a*a),e]},a.lch.lab=function(t){var e,n=t[0],i=t[1];return e=t[2]/360*2*Math.PI,[n,i*Math.cos(e),i*Math.sin(e)]},a.rgb.ansi16=function(t){var e=t[0],n=t[1],i=t[2],r=1 in arguments?arguments[1]:a.rgb.hsv(t)[2];if(0===(r=Math.round(r/50)))return 30;var o=30+(Math.round(i/255)<<2|Math.round(n/255)<<1|Math.round(e/255));return 2===r&&(o+=60),o},a.hsv.ansi16=function(t){return a.rgb.ansi16(a.hsv.rgb(t),t[2])},a.rgb.ansi256=function(t){var e=t[0],n=t[1],i=t[2];return e===n&&n===i?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(i/255*5)},a.ansi16.rgb=function(t){var e=t%10;if(0===e||7===e)return t>50&&(e+=3.5),[e=e/10.5*255,e,e];var n=.5*(1+~~(t>50));return[(1&e)*n*255,(e>>1&1)*n*255,(e>>2&1)*n*255]},a.ansi256.rgb=function(t){if(t>=232){var e=10*(t-232)+8;return[e,e,e]}var n;return t-=16,[Math.floor(t/36)/5*255,Math.floor((n=t%36)/6)/5*255,n%6/5*255]},a.rgb.hex=function(t){var e=(((255&Math.round(t[0]))<<16)+((255&Math.round(t[1]))<<8)+(255&Math.round(t[2]))).toString(16).toUpperCase();return"000000".substring(e.length)+e},a.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var n=e[0];3===e[0].length&&(n=n.split("").map((function(t){return t+t})).join(""));var i=parseInt(n,16);return[i>>16&255,i>>8&255,255&i]},a.rgb.hcg=function(t){var e,n=t[0]/255,i=t[1]/255,a=t[2]/255,r=Math.max(Math.max(n,i),a),o=Math.min(Math.min(n,i),a),s=r-o;return e=s<=0?0:r===n?(i-a)/s%6:r===i?2+(a-n)/s:4+(n-i)/s+4,e/=6,[360*(e%=1),100*s,100*(s<1?o/(1-s):0)]},a.hsl.hcg=function(t){var e=t[1]/100,n=t[2]/100,i=1,a=0;return(i=n<.5?2*e*n:2*e*(1-n))<1&&(a=(n-.5*i)/(1-i)),[t[0],100*i,100*a]},a.hsv.hcg=function(t){var e=t[1]/100,n=t[2]/100,i=e*n,a=0;return i<1&&(a=(n-i)/(1-i)),[t[0],100*i,100*a]},a.hcg.rgb=function(t){var e=t[0]/360,n=t[1]/100,i=t[2]/100;if(0===n)return[255*i,255*i,255*i];var a,r=[0,0,0],o=e%1*6,s=o%1,l=1-s;switch(Math.floor(o)){case 0:r[0]=1,r[1]=s,r[2]=0;break;case 1:r[0]=l,r[1]=1,r[2]=0;break;case 2:r[0]=0,r[1]=1,r[2]=s;break;case 3:r[0]=0,r[1]=l,r[2]=1;break;case 4:r[0]=s,r[1]=0,r[2]=1;break;default:r[0]=1,r[1]=0,r[2]=l}return a=(1-n)*i,[255*(n*r[0]+a),255*(n*r[1]+a),255*(n*r[2]+a)]},a.hcg.hsv=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e),i=0;return n>0&&(i=e/n),[t[0],100*i,100*n]},a.hcg.hsl=function(t){var e=t[1]/100,n=t[2]/100*(1-e)+.5*e,i=0;return n>0&&n<.5?i=e/(2*n):n>=.5&&n<1&&(i=e/(2*(1-n))),[t[0],100*i,100*n]},a.hcg.hwb=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e);return[t[0],100*(n-e),100*(1-n)]},a.hwb.hcg=function(t){var e=t[1]/100,n=1-t[2]/100,i=n-e,a=0;return i<1&&(a=(n-i)/(1-i)),[t[0],100*i,100*a]},a.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]},a.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]},a.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]},a.gray.hsl=a.gray.hsv=function(t){return[0,0,t[0]]},a.gray.hwb=function(t){return[0,100,t[0]]},a.gray.cmyk=function(t){return[0,0,0,t[0]]},a.gray.lab=function(t){return[t[0],0,0]},a.gray.hex=function(t){var e=255&Math.round(t[0]/100*255),n=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(n.length)+n},a.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}}));n.rgb,n.hsl,n.hsv,n.hwb,n.cmyk,n.xyz,n.lab,n.lch,n.hex,n.keyword,n.ansi16,n.ansi256,n.hcg,n.apple,n.gray;function i(t){var e=function(){for(var t={},e=Object.keys(n),i=e.length,a=0;a1&&(e=Array.prototype.slice.call(arguments));var n=t(e);if("object"==typeof n)for(var i=n.length,a=0;a1&&(e=Array.prototype.slice.call(arguments)),t(e))};return"conversion"in t&&(e.conversion=t.conversion),e}(i)}))}));var s=o,l={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},u={getRgba:d,getHsla:h,getRgb:function(t){var e=d(t);return e&&e.slice(0,3)},getHsl:function(t){var e=h(t);return e&&e.slice(0,3)},getHwb:c,getAlpha:function(t){var e=d(t);if(e)return e[3];if(e=h(t))return e[3];if(e=c(t))return e[3]},hexString:function(t,e){e=void 0!==e&&3===t.length?e:t[3];return"#"+v(t[0])+v(t[1])+v(t[2])+(e>=0&&e<1?v(Math.round(255*e)):"")},rgbString:function(t,e){if(e<1||t[3]&&t[3]<1)return f(t,e);return"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:f,percentString:function(t,e){if(e<1||t[3]&&t[3]<1)return g(t,e);var n=Math.round(t[0]/255*100),i=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return"rgb("+n+"%, "+i+"%, "+a+"%)"},percentaString:g,hslString:function(t,e){if(e<1||t[3]&&t[3]<1)return p(t,e);return"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:p,hwbString:function(t,e){void 0===e&&(e=void 0!==t[3]?t[3]:1);return"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return b[t.slice(0,3)]}};function d(t){if(t){var e=[0,0,0],n=1,i=t.match(/^#([a-fA-F0-9]{3,4})$/i),a="";if(i){a=(i=i[1])[3];for(var r=0;rn?(e+.05)/(n+.05):(n+.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,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues("hsl",e),this},mix:function(t,e){var n=t,i=void 0===e?.5:e,a=2*i-1,r=this.alpha()-n.alpha(),o=((a*r==-1?a:(a+r)/(1+a*r))+1)/2,s=1-o;return this.rgb(o*this.red()+s*n.red(),o*this.green()+s*n.green(),o*this.blue()+s*n.blue()).alpha(this.alpha()*i+n.alpha()*(1-i))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new y,i=this.values,a=n.values;for(var r in i)i.hasOwnProperty(r)&&(t=i[r],"[object Array]"===(e={}.toString.call(t))?a[r]=t.slice(0):"[object Number]"===e?a[r]=t:console.error("unexpected color value:",t));return n}},y.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},y.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},y.prototype.getValues=function(t){for(var e=this.values,n={},i=0;i=0;a--)e.call(n,t[a],a);else for(a=0;a=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),t<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-C.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*C.easeInBounce(2*t):.5*C.easeOutBounce(2*t-1)+.5}},P={effects:C};S.easingEffects=C;var A=Math.PI,D=A/180,T=2*A,I=A/2,F=A/4,O=2*A/3,L={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,i,a,r){if(r){var o=Math.min(r,a/2,i/2),s=e+o,l=n+o,u=e+i-o,d=n+a-o;t.moveTo(e,l),se.left-1e-6&&t.xe.top-1e-6&&t.y0&&this.requestAnimationFrame()},advance:function(){for(var t,e,n,i,a=this.animations,r=0;r=n?(H.callback(t.onAnimationComplete,[t],e),e.animating=!1,a.splice(r,1)):++r}},Q=H.options.resolve,tt=["push","pop","shift","splice","unshift"];function et(t,e){var n=t._chartjs;if(n){var i=n.listeners,a=i.indexOf(e);-1!==a&&i.splice(a,1),i.length>0||(tt.forEach((function(e){delete t[e]})),delete t._chartjs)}}var nt=function(t,e){this.initialize(t,e)};H.extend(nt.prototype,{datasetElementType:null,dataElementType:null,_datasetElementOptions:["backgroundColor","borderCapStyle","borderColor","borderDash","borderDashOffset","borderJoinStyle","borderWidth"],_dataElementOptions:["backgroundColor","borderColor","borderWidth","pointStyle"],initialize:function(t,e){var n=this;n.chart=t,n.index=e,n.linkScales(),n.addElements(),n._type=n.getMeta().type},updateIndex:function(t){this.index=t},linkScales:function(){var t=this.getMeta(),e=this.chart,n=e.scales,i=this.getDataset(),a=e.options.scales;null!==t.xAxisID&&t.xAxisID in n&&!i.xAxisID||(t.xAxisID=i.xAxisID||a.xAxes[0].id),null!==t.yAxisID&&t.yAxisID in n&&!i.yAxisID||(t.yAxisID=i.yAxisID||a.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this._update(!0)},destroy:function(){this._data&&et(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,n=this.getMeta(),i=this.getDataset().data||[],a=n.data;for(t=0,e=i.length;tn&&this.insertElements(n,i-n)},insertElements:function(t,e){for(var n=0;na?(r=a/e.innerRadius,t.arc(o,s,e.innerRadius-a,i+r,n-r,!0)):t.arc(o,s,a,i+Math.PI/2,n-Math.PI/2),t.closePath(),t.clip()}function ot(t,e,n){var i="inner"===e.borderAlign;i?(t.lineWidth=2*e.borderWidth,t.lineJoin="round"):(t.lineWidth=e.borderWidth,t.lineJoin="bevel"),n.fullCircles&&function(t,e,n,i){var a,r=n.endAngle;for(i&&(n.endAngle=n.startAngle+at,rt(t,n),n.endAngle=r,n.endAngle===n.startAngle&&n.fullCircles&&(n.endAngle+=at,n.fullCircles--)),t.beginPath(),t.arc(n.x,n.y,n.innerRadius,n.startAngle+at,n.startAngle,!0),a=0;as;)a-=at;for(;a=o&&a<=s,u=r>=n.innerRadius&&r<=n.outerRadius;return l&&u}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t,e=this._chart.ctx,n=this._view,i="inner"===n.borderAlign?.33:0,a={x:n.x,y:n.y,innerRadius:n.innerRadius,outerRadius:Math.max(n.outerRadius-i,0),pixelMargin:i,startAngle:n.startAngle,endAngle:n.endAngle,fullCircles:Math.floor(n.circumference/at)};if(e.save(),e.fillStyle=n.backgroundColor,e.strokeStyle=n.borderColor,a.fullCircles){for(a.endAngle=a.startAngle+at,e.beginPath(),e.arc(a.x,a.y,a.outerRadius,a.startAngle,a.endAngle),e.arc(a.x,a.y,a.innerRadius,a.endAngle,a.startAngle,!0),e.closePath(),t=0;tt.x&&(e=bt(e,"left","right")):t.basen?n:i,r:l.right||a<0?0:a>e?e:a,b:l.bottom||r<0?0:r>n?n:r,l:l.left||o<0?0:o>e?e:o}}function yt(t,e,n){var i=null===e,a=null===n,r=!(!t||i&&a)&&vt(t);return r&&(i||e>=r.left&&e<=r.right)&&(a||n>=r.top&&n<=r.bottom)}N._set("global",{elements:{rectangle:{backgroundColor:pt,borderColor:pt,borderSkipped:"bottom",borderWidth:0}}});var _t=K.extend({_type:"rectangle",draw:function(){var t=this._chart.ctx,e=this._view,n=function(t){var e=vt(t),n=e.right-e.left,i=e.bottom-e.top,a=xt(t,n/2,i/2);return{outer:{x:e.left,y:e.top,w:n,h:i},inner:{x:e.left+a.l,y:e.top+a.t,w:n-a.l-a.r,h:i-a.t-a.b}}}(e),i=n.outer,a=n.inner;t.fillStyle=e.backgroundColor,t.fillRect(i.x,i.y,i.w,i.h),i.w===a.w&&i.h===a.h||(t.save(),t.beginPath(),t.rect(i.x,i.y,i.w,i.h),t.clip(),t.fillStyle=e.borderColor,t.rect(a.x,a.y,a.w,a.h),t.fill("evenodd"),t.restore())},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){return yt(this._view,t,e)},inLabelRange:function(t,e){var n=this._view;return mt(n)?yt(n,t,null):yt(n,null,e)},inXRange:function(t){return yt(this._view,t,null)},inYRange:function(t){return yt(this._view,null,t)},getCenterPoint:function(){var t,e,n=this._view;return mt(n)?(t=n.x,e=(n.y+n.base)/2):(t=(n.x+n.base)/2,e=n.y),{x:t,y:e}},getArea:function(){var t=this._view;return mt(t)?t.width*Math.abs(t.y-t.base):t.height*Math.abs(t.x-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}}),kt={},wt=st,Mt=dt,St=gt,Ct=_t;kt.Arc=wt,kt.Line=Mt,kt.Point=St,kt.Rectangle=Ct;var Pt=H._deprecated,At=H.valueOrDefault;function Dt(t,e,n){var i,a,r=n.barThickness,o=e.stackCount,s=e.pixels[t],l=H.isNullOrUndef(r)?function(t,e){var n,i,a,r,o=t._length;for(a=1,r=e.length;a0?Math.min(o,Math.abs(i-n)):o,n=i;return o}(e.scale,e.pixels):-1;return H.isNullOrUndef(r)?(i=l*n.categoryPercentage,a=n.barPercentage):(i=r*o,a=1),{chunk:i/o,ratio:a,start:s-i/2}}N._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),N._set("global",{datasets:{bar:{categoryPercentage:.8,barPercentage:.9}}});var Tt=it.extend({dataElementType:kt.Rectangle,_dataElementOptions:["backgroundColor","borderColor","borderSkipped","borderWidth","barPercentage","barThickness","categoryPercentage","maxBarThickness","minBarLength"],initialize:function(){var t,e,n=this;it.prototype.initialize.apply(n,arguments),(t=n.getMeta()).stack=n.getDataset().stack,t.bar=!0,e=n._getIndexScale().options,Pt("bar chart",e.barPercentage,"scales.[x/y]Axes.barPercentage","dataset.barPercentage"),Pt("bar chart",e.barThickness,"scales.[x/y]Axes.barThickness","dataset.barThickness"),Pt("bar chart",e.categoryPercentage,"scales.[x/y]Axes.categoryPercentage","dataset.categoryPercentage"),Pt("bar chart",n._getValueScale().options.minBarLength,"scales.[x/y]Axes.minBarLength","dataset.minBarLength"),Pt("bar chart",e.maxBarThickness,"scales.[x/y]Axes.maxBarThickness","dataset.maxBarThickness")},update:function(t){var e,n,i=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,n=i.length;e=0&&p.min>=0?p.min:p.max,y=void 0===p.start?p.end:p.max>=0&&p.min>=0?p.max-p.min:p.min-p.max,_=g.length;if(v||void 0===v&&void 0!==b)for(i=0;i<_&&(a=g[i]).index!==t;++i)a.stack===b&&(r=void 0===(u=h._parseValue(f[a.index].data[e])).start?u.end:u.min>=0&&u.max>=0?u.max:u.min,(p.min<0&&r<0||p.max>=0&&r>0)&&(x+=r));return o=h.getPixelForValue(x),l=(s=h.getPixelForValue(x+y))-o,void 0!==m&&Math.abs(l)=0&&!c||y<0&&c?o-m:o+m),{size:l,base:o,head:s,center:s+l/2}},calculateBarIndexPixels:function(t,e,n,i){var a="flex"===i.barThickness?function(t,e,n){var i,a=e.pixels,r=a[t],o=t>0?a[t-1]:null,s=t=Rt?-zt:b<-Rt?zt:0)+m,y=Math.cos(b),_=Math.sin(b),k=Math.cos(x),w=Math.sin(x),M=b<=0&&x>=0||x>=zt,S=b<=Nt&&x>=Nt||x>=zt+Nt,C=b<=-Nt&&x>=-Nt||x>=Rt+Nt,P=b===-Rt||x>=Rt?-1:Math.min(y,y*p,k,k*p),A=C?-1:Math.min(_,_*p,w,w*p),D=M?1:Math.max(y,y*p,k,k*p),T=S?1:Math.max(_,_*p,w,w*p);u=(D-P)/2,d=(T-A)/2,h=-(D+P)/2,c=-(T+A)/2}for(i=0,a=g.length;i0&&!isNaN(t)?zt*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){var e,n,i,a,r,o,s,l,u=0,d=this.chart;if(!t)for(e=0,n=d.data.datasets.length;e(u=s>u?s:u)?l:u);return u},setHoverStyle:function(t){var e=t._model,n=t._options,i=H.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=Lt(n.hoverBackgroundColor,i(n.backgroundColor)),e.borderColor=Lt(n.hoverBorderColor,i(n.borderColor)),e.borderWidth=Lt(n.hoverBorderWidth,n.borderWidth)},_getRingWeightOffset:function(t){for(var e=0,n=0;n0&&Ht(l[t-1]._model,s)&&(n.controlPointPreviousX=u(n.controlPointPreviousX,s.left,s.right),n.controlPointPreviousY=u(n.controlPointPreviousY,s.top,s.bottom)),t0&&(r=t.getDatasetMeta(r[0]._datasetIndex).data),r},"x-axis":function(t,e){return ae(t,e,{intersect:!1})},point:function(t,e){return ee(t,Qt(e,t))},nearest:function(t,e,n){var i=Qt(e,t);n.axis=n.axis||"xy";var a=ie(n.axis);return ne(t,i,n.intersect,a)},x:function(t,e,n){var i=Qt(e,t),a=[],r=!1;return te(t,(function(t){t.inXRange(i.x)&&a.push(t),t.inRange(i.x,i.y)&&(r=!0)})),n.intersect&&!r&&(a=[]),a},y:function(t,e,n){var i=Qt(e,t),a=[],r=!1;return te(t,(function(t){t.inYRange(i.y)&&a.push(t),t.inRange(i.x,i.y)&&(r=!0)})),n.intersect&&!r&&(a=[]),a}}},oe=H.extend;function se(t,e){return H.where(t,(function(t){return t.pos===e}))}function le(t,e){return t.sort((function(t,n){var i=e?n:t,a=e?t:n;return i.weight===a.weight?i.index-a.index:i.weight-a.weight}))}function ue(t,e,n,i){return Math.max(t[n],e[n])+Math.max(t[i],e[i])}function de(t,e,n){var i,a,r=n.box,o=t.maxPadding;if(n.size&&(t[n.pos]-=n.size),n.size=n.horizontal?r.height:r.width,t[n.pos]+=n.size,r.getPadding){var s=r.getPadding();o.top=Math.max(o.top,s.top),o.left=Math.max(o.left,s.left),o.bottom=Math.max(o.bottom,s.bottom),o.right=Math.max(o.right,s.right)}if(i=e.outerWidth-ue(o,t,"left","right"),a=e.outerHeight-ue(o,t,"top","bottom"),i!==t.w||a!==t.h){t.w=i,t.h=a;var l=n.horizontal?[i,t.w]:[a,t.h];return!(l[0]===l[1]||isNaN(l[0])&&isNaN(l[1]))}}function he(t,e){var n=e.maxPadding;function i(t){var i={left:0,top:0,right:0,bottom:0};return t.forEach((function(t){i[t]=Math.max(e[t],n[t])})),i}return i(t?["left","right"]:["top","bottom"])}function ce(t,e,n){var i,a,r,o,s,l,u=[];for(i=0,a=t.length;idiv{position:absolute;width:1000000px;height:1000000px;left:0;top:0}.chartjs-size-monitor-shrink>div{position:absolute;width:200%;height:200%;left:0;top:0}"}))&&ge.default||ge,ve="$chartjs",be="chartjs-size-monitor",xe="chartjs-render-monitor",ye="chartjs-render-animation",_e=["animationstart","webkitAnimationStart"],ke={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function we(t,e){var n=H.getStyle(t,e),i=n&&n.match(/^(\d+)(\.\d+)?px$/);return i?Number(i[1]):void 0}var Me=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(t){}return t}()&&{passive:!0};function Se(t,e,n){t.addEventListener(e,n,Me)}function Ce(t,e,n){t.removeEventListener(e,n,Me)}function Pe(t,e,n,i,a){return{type:t,chart:e,native:a||null,x:void 0!==n?n:null,y:void 0!==i?i:null}}function Ae(t){var e=document.createElement("div");return e.className=t||"",e}function De(t,e,n){var i,a,r,o,s=t[ve]||(t[ve]={}),l=s.resizer=function(t){var e=Ae(be),n=Ae(be+"-expand"),i=Ae(be+"-shrink");n.appendChild(Ae()),i.appendChild(Ae()),e.appendChild(n),e.appendChild(i),e._reset=function(){n.scrollLeft=1e6,n.scrollTop=1e6,i.scrollLeft=1e6,i.scrollTop=1e6};var a=function(){e._reset(),t()};return Se(n,"scroll",a.bind(n,"expand")),Se(i,"scroll",a.bind(i,"shrink")),e}((i=function(){if(s.resizer){var i=n.options.maintainAspectRatio&&t.parentNode,a=i?i.clientWidth:0;e(Pe("resize",n)),i&&i.clientWidth0){var r=t[0];r.label?n=r.label:r.xLabel?n=r.xLabel:a>0&&r.index-1?t.split("\n"):t}function Ve(t){var e=N.global;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,rtl:t.rtl,textDirection:t.textDirection,bodyFontColor:t.bodyFontColor,_bodyFontFamily:ze(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:ze(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:ze(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:ze(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:ze(t.titleFontStyle,e.defaultFontStyle),titleFontSize:ze(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:ze(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:ze(t.footerFontStyle,e.defaultFontStyle),footerFontSize:ze(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function He(t,e){return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-t.xPadding:t.x+t.xPadding}function je(t){return Ee([],We(t))}var qe=K.extend({initialize:function(){this._model=Ve(this._options),this._lastActive=[]},getTitle:function(){var t=this,e=t._options,n=e.callbacks,i=n.beforeTitle.apply(t,arguments),a=n.title.apply(t,arguments),r=n.afterTitle.apply(t,arguments),o=[];return o=Ee(o,We(i)),o=Ee(o,We(a)),o=Ee(o,We(r))},getBeforeBody:function(){return je(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var n=this,i=n._options.callbacks,a=[];return H.each(t,(function(t){var r={before:[],lines:[],after:[]};Ee(r.before,We(i.beforeLabel.call(n,t,e))),Ee(r.lines,i.label.call(n,t,e)),Ee(r.after,We(i.afterLabel.call(n,t,e))),a.push(r)})),a},getAfterBody:function(){return je(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this,e=t._options.callbacks,n=e.beforeFooter.apply(t,arguments),i=e.footer.apply(t,arguments),a=e.afterFooter.apply(t,arguments),r=[];return r=Ee(r,We(n)),r=Ee(r,We(i)),r=Ee(r,We(a))},update:function(t){var e,n,i,a,r,o,s,l,u,d,h=this,c=h._options,f=h._model,g=h._model=Ve(c),p=h._active,m=h._data,v={xAlign:f.xAlign,yAlign:f.yAlign},b={x:f.x,y:f.y},x={width:f.width,height:f.height},y={x:f.caretX,y:f.caretY};if(p.length){g.opacity=1;var _=[],k=[];y=Be[c.position].call(h,p,h._eventPosition);var w=[];for(e=0,n=p.length;ei.width&&(a=i.width-e.width),a<0&&(a=0)),"top"===d?r+=h:r-="bottom"===d?e.height+h:e.height/2,"center"===d?"left"===u?a+=h:"right"===u&&(a-=h):"left"===u?a-=c:"right"===u&&(a+=c),{x:a,y:r}}(g,x,v=function(t,e){var n,i,a,r,o,s=t._model,l=t._chart,u=t._chart.chartArea,d="center",h="center";s.yl.height-e.height&&(h="bottom");var c=(u.left+u.right)/2,f=(u.top+u.bottom)/2;"center"===h?(n=function(t){return t<=c},i=function(t){return t>c}):(n=function(t){return t<=e.width/2},i=function(t){return t>=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},r=function(t){return t-e.width-s.caretSize-s.caretPadding<0},o=function(t){return t<=f?"top":"bottom"},n(s.x)?(d="left",a(s.x)&&(d="center",h=o(s.y))):i(s.x)&&(d="right",r(s.x)&&(d="center",h=o(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:h}}(this,x),h._chart)}else g.opacity=0;return g.xAlign=v.xAlign,g.yAlign=v.yAlign,g.x=b.x,g.y=b.y,g.width=x.width,g.height=x.height,g.caretX=y.x,g.caretY=y.y,h._model=g,t&&c.custom&&c.custom.call(h,g),h},drawCaret:function(t,e){var n=this._chart.ctx,i=this._view,a=this.getCaretPosition(t,e,i);n.lineTo(a.x1,a.y1),n.lineTo(a.x2,a.y2),n.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,n){var i,a,r,o,s,l,u=n.caretSize,d=n.cornerRadius,h=n.xAlign,c=n.yAlign,f=t.x,g=t.y,p=e.width,m=e.height;if("center"===c)s=g+m/2,"left"===h?(a=(i=f)-u,r=i,o=s+u,l=s-u):(a=(i=f+p)+u,r=i,o=s-u,l=s+u);else if("left"===h?(i=(a=f+d+u)-u,r=a+u):"right"===h?(i=(a=f+p-d-u)-u,r=a+u):(i=(a=n.caretX)-u,r=a+u),"top"===c)s=(o=g)-u,l=o;else{s=(o=g+m)+u,l=o;var v=r;r=i,i=v}return{x1:i,x2:a,x3:r,y1:o,y2:s,y3:l}},drawTitle:function(t,e,n){var i,a,r,o=e.title,s=o.length;if(s){var l=Ne(e.rtl,e.x,e.width);for(t.x=He(e,e._titleAlign),n.textAlign=l.textAlign(e._titleAlign),n.textBaseline="middle",i=e.titleFontSize,a=e.titleSpacing,n.fillStyle=e.titleFontColor,n.font=H.fontString(i,e._titleFontStyle,e._titleFontFamily),r=0;r0&&n.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},i={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,r=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&r&&(t.save(),t.globalAlpha=a,this.drawBackground(i,e,t,n),i.y+=e.yPadding,H.rtl.overrideTextDirection(t,e.textDirection),this.drawTitle(i,e,t),this.drawBody(i,e,t),this.drawFooter(i,e,t),H.rtl.restoreTextDirection(t,e.textDirection),t.restore())}},handleEvent:function(t){var e,n=this,i=n._options;return n._lastActive=n._lastActive||[],"mouseout"===t.type?n._active=[]:(n._active=n._chart.getElementsAtEventForMode(t,i.mode,i),i.reverse&&n._active.reverse()),(e=!H.arrayEquals(n._active,n._lastActive))&&(n._lastActive=n._active,(i.enabled||i.custom)&&(n._eventPosition={x:t.x,y:t.y},n.update(!0),n.pivot())),e}}),Ue=Be,Ye=qe;Ye.positioners=Ue;var Ge=H.valueOrDefault;function Xe(){return H.merge(Object.create(null),[].slice.call(arguments),{merger:function(t,e,n,i){if("xAxes"===t||"yAxes"===t){var a,r,o,s=n[t].length;for(e[t]||(e[t]=[]),a=0;a=e[t].length&&e[t].push({}),!e[t][a].type||o.type&&o.type!==e[t][a].type?H.merge(e[t][a],[Re.getScaleDefaults(r),o]):H.merge(e[t][a],o)}else H._merger(t,e,n,i)}})}function Ke(){return H.merge(Object.create(null),[].slice.call(arguments),{merger:function(t,e,n,i){var a=e[t]||Object.create(null),r=n[t];"scales"===t?e[t]=Xe(a,r):"scale"===t?e[t]=H.merge(a,[Re.getScaleDefaults(r.type),r]):H._merger(t,e,n,i)}})}function Ze(t){var e=t.options;H.each(t.scales,(function(e){pe.removeBox(t,e)})),e=Ke(N.global,N[t.config.type],e),t.options=t.config.options=e,t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.tooltip._options=e.tooltips,t.tooltip.initialize()}function $e(t,e,n){var i,a=function(t){return t.id===i};do{i=e+n++}while(H.findIndex(t,a)>=0);return i}function Je(t){return"top"===t||"bottom"===t}function Qe(t,e){return function(n,i){return n[t]===i[t]?n[e]-i[e]:n[t]-i[t]}}N._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var tn=function(t,e){return this.construct(t,e),this};H.extend(tn.prototype,{construct:function(t,e){var n=this;e=function(t){var e=(t=t||Object.create(null)).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=Ke(N.global,N[t.type],t.options||{}),t}(e);var i=Oe.acquireContext(t,e),a=i&&i.canvas,r=a&&a.height,o=a&&a.width;n.id=H.uid(),n.ctx=i,n.canvas=a,n.config=e,n.width=o,n.height=r,n.aspectRatio=r?o/r:null,n.options=e.options,n._bufferedRender=!1,n._layers=[],n.chart=n,n.controller=n,tn.instances[n.id]=n,Object.defineProperty(n,"data",{get:function(){return n.config.data},set:function(t){n.config.data=t}}),i&&a?(n.initialize(),n.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return Le.notify(t,"beforeInit"),H.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.initToolTip(),Le.notify(t,"afterInit"),t},clear:function(){return H.canvas.clear(this),this},stop:function(){return J.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,i=e.canvas,a=n.maintainAspectRatio&&e.aspectRatio||null,r=Math.max(0,Math.floor(H.getMaximumWidth(i))),o=Math.max(0,Math.floor(a?r/a:H.getMaximumHeight(i)));if((e.width!==r||e.height!==o)&&(i.width=e.width=r,i.height=e.height=o,i.style.width=r+"px",i.style.height=o+"px",H.retinaScale(e,n.devicePixelRatio),!t)){var s={width:r,height:o};Le.notify(e,"resize",[s]),n.onResize&&n.onResize(e,s),e.stop(),e.update({duration:n.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;H.each(e.xAxes,(function(t,n){t.id||(t.id=$e(e.xAxes,"x-axis-",n))})),H.each(e.yAxes,(function(t,n){t.id||(t.id=$e(e.yAxes,"y-axis-",n))})),n&&(n.id=n.id||"scale")},buildOrUpdateScales:function(){var t=this,e=t.options,n=t.scales||{},i=[],a=Object.keys(n).reduce((function(t,e){return t[e]=!1,t}),{});e.scales&&(i=i.concat((e.scales.xAxes||[]).map((function(t){return{options:t,dtype:"category",dposition:"bottom"}})),(e.scales.yAxes||[]).map((function(t){return{options:t,dtype:"linear",dposition:"left"}})))),e.scale&&i.push({options:e.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),H.each(i,(function(e){var i=e.options,r=i.id,o=Ge(i.type,e.dtype);Je(i.position)!==Je(e.dposition)&&(i.position=e.dposition),a[r]=!0;var s=null;if(r in n&&n[r].type===o)(s=n[r]).options=i,s.ctx=t.ctx,s.chart=t;else{var l=Re.getScaleConstructor(o);if(!l)return;s=new l({id:r,type:o,options:i,ctx:t.ctx,chart:t}),n[s.id]=s}s.mergeTicksOptions(),e.isDefault&&(t.scale=s)})),H.each(a,(function(t,e){t||delete n[e]})),t.scales=n,Re.addScalesToLayout(this)},buildOrUpdateControllers:function(){var t,e,n=this,i=[],a=n.data.datasets;for(t=0,e=a.length;t=0;--n)this.drawDataset(e[n],t);Le.notify(this,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n={meta:t,index:t.index,easingValue:e};!1!==Le.notify(this,"beforeDatasetDraw",[n])&&(t.controller.draw(e),Le.notify(this,"afterDatasetDraw",[n]))},_drawTooltip:function(t){var e=this.tooltip,n={tooltip:e,easingValue:t};!1!==Le.notify(this,"beforeTooltipDraw",[n])&&(e.draw(),Le.notify(this,"afterTooltipDraw",[n]))},getElementAtEvent:function(t){return re.modes.single(this,t)},getElementsAtEvent:function(t){return re.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return re.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var i=re.modes[e];return"function"==typeof i?i(this,t,n):[]},getDatasetAtEvent:function(t){return re.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var n=e._meta[this.id];return n||(n=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e.order||0,index:t}),n},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e3?n[2]-n[1]:n[1]-n[0];Math.abs(i)>1&&t!==Math.floor(t)&&(i=t-Math.floor(t));var a=H.log10(Math.abs(i)),r="";if(0!==t)if(Math.max(Math.abs(n[0]),Math.abs(n[n.length-1]))<1e-4){var o=H.log10(Math.abs(t)),s=Math.floor(o)-Math.floor(a);s=Math.max(Math.min(s,20),0),r=t.toExponential(s)}else{var l=-1*Math.floor(a);l=Math.max(Math.min(l,20),0),r=t.toFixed(l)}else r="0";return r},logarithmic:function(t,e,n){var i=t/Math.pow(10,Math.floor(H.log10(t)));return 0===t?"0":1===i||2===i||5===i||0===e||e===n.length-1?t.toExponential():""}}},sn=H.isArray,ln=H.isNullOrUndef,un=H.valueOrDefault,dn=H.valueAtIndexOrDefault;function hn(t,e,n){var i,a=t.getTicks().length,r=Math.min(e,a-1),o=t.getPixelForTick(r),s=t._startPixel,l=t._endPixel;if(!(n&&(i=1===a?Math.max(o-s,l-o):0===e?(t.getPixelForTick(1)-o)/2:(o-t.getPixelForTick(r-1))/2,(o+=rl+1e-6)))return o}function cn(t,e,n,i){var a,r,o,s,l,u,d,h,c,f,g,p,m,v=n.length,b=[],x=[],y=[],_=0,k=0;for(a=0;ae){for(n=0;n=c||d<=1||!s.isHorizontal()?s.labelRotation=h:(e=(t=s._getLabelSizes()).widest.width,n=t.highest.height-t.highest.offset,i=Math.min(s.maxWidth,s.chart.width-e),e+6>(a=l.offset?s.maxWidth/d:i/(d-1))&&(a=i/(d-(l.offset?.5:1)),r=s.maxHeight-fn(l.gridLines)-u.padding-gn(l.scaleLabel),o=Math.sqrt(e*e+n*n),f=H.toDegrees(Math.min(Math.asin(Math.min((t.highest.height+6)/a,1)),Math.asin(Math.min(r/o,1))-Math.asin(n/o))),f=Math.max(h,Math.min(c,f))),s.labelRotation=f)},afterCalculateTickRotation:function(){H.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){H.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},n=t.chart,i=t.options,a=i.ticks,r=i.scaleLabel,o=i.gridLines,s=t._isVisible(),l="bottom"===i.position,u=t.isHorizontal();if(u?e.width=t.maxWidth:s&&(e.width=fn(o)+gn(r)),u?s&&(e.height=fn(o)+gn(r)):e.height=t.maxHeight,a.display&&s){var d=mn(a),h=t._getLabelSizes(),c=h.first,f=h.last,g=h.widest,p=h.highest,m=.4*d.minor.lineHeight,v=a.padding;if(u){var b=0!==t.labelRotation,x=H.toRadians(t.labelRotation),y=Math.cos(x),_=Math.sin(x),k=_*g.width+y*(p.height-(b?p.offset:0))+(b?0:m);e.height=Math.min(t.maxHeight,e.height+k+v);var w,M,S=t.getPixelForTick(0)-t.left,C=t.right-t.getPixelForTick(t.getTicks().length-1);b?(w=l?y*c.width+_*c.offset:_*(c.height-c.offset),M=l?_*(f.height-f.offset):y*f.width+_*f.offset):(w=c.width/2,M=f.width/2),t.paddingLeft=Math.max((w-S)*t.width/(t.width-S),0)+3,t.paddingRight=Math.max((M-C)*t.width/(t.width-C),0)+3}else{var P=a.mirror?0:g.width+v+m;e.width=Math.min(t.maxWidth,e.width+P),t.paddingTop=c.height/2,t.paddingBottom=f.height/2}}t.handleMargins(),u?(t.width=t._length=n.width-t.margins.left-t.margins.right,t.height=e.height):(t.width=e.width,t.height=t._length=n.height-t.margins.top-t.margins.bottom)},handleMargins:function(){var t=this;t.margins&&(t.margins.left=Math.max(t.paddingLeft,t.margins.left),t.margins.top=Math.max(t.paddingTop,t.margins.top),t.margins.right=Math.max(t.paddingRight,t.margins.right),t.margins.bottom=Math.max(t.paddingBottom,t.margins.bottom))},afterFit:function(){H.callback(this.options.afterFit,[this])},isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(ln(t))return NaN;if(("number"==typeof t||t instanceof Number)&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},_convertTicksToLabels:function(t){var e,n,i,a=this;for(a.ticks=t.map((function(t){return t.value})),a.beforeTickToLabelConversion(),e=a.convertTicksToLabels(t)||a.ticks,a.afterTickToLabelConversion(),n=0,i=t.length;nn-1?null:this.getPixelForDecimal(t*i+(e?i/2:0))},getPixelForDecimal:function(t){return this._reversePixels&&(t=1-t),this._startPixel+t*this._length},getDecimalForPixel:function(t){var e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,n,i,a,r=this.options.ticks,o=this._length,s=r.maxTicksLimit||o/this._tickSize()+1,l=r.major.enabled?function(t){var e,n,i=[];for(e=0,n=t.length;es)return function(t,e,n){var i,a,r=0,o=e[0];for(n=Math.ceil(n),i=0;iu)return r;return Math.max(u,1)}(l,t,0,s),u>0){for(e=0,n=u-1;e1?(h-d)/(u-1):null,bn(t,i,H.isNullOrUndef(a)?0:d-a,d),bn(t,i,h,H.isNullOrUndef(a)?t.length:h+a),vn(t)}return bn(t,i),vn(t)},_tickSize:function(){var t=this.options.ticks,e=H.toRadians(this.labelRotation),n=Math.abs(Math.cos(e)),i=Math.abs(Math.sin(e)),a=this._getLabelSizes(),r=t.autoSkipPadding||0,o=a?a.widest.width+r:0,s=a?a.highest.height+r:0;return this.isHorizontal()?s*n>o*i?o/n:s/i:s*i=0&&(o=t),void 0!==r&&(t=n.indexOf(r))>=0&&(s=t),e.minIndex=o,e.maxIndex=s,e.min=n[o],e.max=n[s]},buildTicks:function(){var t=this._getLabels(),e=this.minIndex,n=this.maxIndex;this.ticks=0===e&&n===t.length-1?t:t.slice(e,n+1)},getLabelForIndex:function(t,e){var n=this.chart;return n.getDatasetMeta(e).controller._getValueScaleId()===this.id?this.getRightValue(n.data.datasets[e].data[t]):this._getLabels()[t]},_configure:function(){var t=this,e=t.options.offset,n=t.ticks;yn.prototype._configure.call(t),t.isHorizontal()||(t._reversePixels=!t._reversePixels),n&&(t._startValue=t.minIndex-(e?.5:0),t._valueRange=Math.max(n.length-(e?0:1),1))},getPixelForValue:function(t,e,n){var i,a,r,o=this;return _n(e)||_n(n)||(t=o.chart.data.datasets[n].data[e]),_n(t)||(i=o.isHorizontal()?t.x:t.y),(void 0!==i||void 0!==t&&isNaN(e))&&(a=o._getLabels(),t=H.valueOrDefault(i,t),e=-1!==(r=a.indexOf(t))?r:e,isNaN(e)&&(e=t)),o.getPixelForDecimal((e-o._startValue)/o._valueRange)},getPixelForTick:function(t){var e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t],t+this.minIndex)},getValueForPixel:function(t){var e=Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange);return Math.min(Math.max(e,0),this.ticks.length-1)},getBasePixel:function(){return this.bottom}}),wn={position:"bottom"};kn._defaults=wn;var Mn=H.noop,Sn=H.isNullOrUndef;var Cn=yn.extend({getRightValue:function(t){return"string"==typeof t?+t:yn.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=H.sign(t.min),i=H.sign(t.max);n<0&&i<0?t.max=0:n>0&&i>0&&(t.min=0)}var a=void 0!==e.min||void 0!==e.suggestedMin,r=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),a!==r&&t.min>=t.max&&(a?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:function(){var t,e=this.options.ticks,n=e.stepSize,i=e.maxTicksLimit;return n?t=Math.ceil(this.max/n)-Math.floor(this.min/n)+1:(t=this._computeTickLimit(),i=i||11),i&&(t=Math.min(i,t)),t},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:Mn,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),i={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,precision:e.precision,stepSize:H.valueOrDefault(e.fixedStepSize,e.stepSize)},a=t.ticks=function(t,e){var n,i,a,r,o=[],s=t.stepSize,l=s||1,u=t.maxTicks-1,d=t.min,h=t.max,c=t.precision,f=e.min,g=e.max,p=H.niceNum((g-f)/u/l)*l;if(p<1e-14&&Sn(d)&&Sn(h))return[f,g];(r=Math.ceil(g/p)-Math.floor(f/p))>u&&(p=H.niceNum(r*p/u/l)*l),s||Sn(c)?n=Math.pow(10,H._decimalPlaces(p)):(n=Math.pow(10,c),p=Math.ceil(p*n)/n),i=Math.floor(f/p)*p,a=Math.ceil(g/p)*p,s&&(!Sn(d)&&H.almostWhole(d/p,p/1e3)&&(i=d),!Sn(h)&&H.almostWhole(h/p,p/1e3)&&(a=h)),r=(a-i)/p,r=H.almostEquals(r,Math.round(r),p/1e3)?Math.round(r):Math.ceil(r),i=Math.round(i*n)/n,a=Math.round(a*n)/n,o.push(Sn(d)?i:d);for(var m=1;me.length-1?null:this.getPixelForValue(e[t])}}),In=Pn;Tn._defaults=In;var Fn=H.valueOrDefault,On=H.math.log10;var Ln={position:"left",ticks:{callback:on.formatters.logarithmic}};function Rn(t,e){return H.isFinite(t)&&t>=0?t:e}var zn=yn.extend({determineDataLimits:function(){var t,e,n,i,a,r,o=this,s=o.options,l=o.chart,u=l.data.datasets,d=o.isHorizontal();function h(t){return d?t.xAxisID===o.id:t.yAxisID===o.id}o.min=Number.POSITIVE_INFINITY,o.max=Number.NEGATIVE_INFINITY,o.minNotZero=Number.POSITIVE_INFINITY;var c=s.stacked;if(void 0===c)for(t=0;t0){var e=H.min(t),n=H.max(t);o.min=Math.min(o.min,e),o.max=Math.max(o.max,n)}}))}else for(t=0;t0?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(On(t.max))):t.minNotZero=1)},buildTicks:function(){var t=this,e=t.options.ticks,n=!t.isHorizontal(),i={min:Rn(e.min),max:Rn(e.max)},a=t.ticks=function(t,e){var n,i,a=[],r=Fn(t.min,Math.pow(10,Math.floor(On(e.min)))),o=Math.floor(On(e.max)),s=Math.ceil(e.max/Math.pow(10,o));0===r?(n=Math.floor(On(e.minNotZero)),i=Math.floor(e.minNotZero/Math.pow(10,n)),a.push(r),r=i*Math.pow(10,n)):(n=Math.floor(On(r)),i=Math.floor(r/Math.pow(10,n)));var l=n<0?Math.pow(10,Math.abs(n)):1;do{a.push(r),10===++i&&(i=1,l=++n>=0?1:l),r=Math.round(i*Math.pow(10,n)*l)/l}while(ne.length-1?null:this.getPixelForValue(e[t])},_getFirstTickValue:function(t){var e=Math.floor(On(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},_configure:function(){var t=this,e=t.min,n=0;yn.prototype._configure.call(t),0===e&&(e=t._getFirstTickValue(t.minNotZero),n=Fn(t.options.ticks.fontSize,N.global.defaultFontSize)/t._length),t._startValue=On(e),t._valueOffset=n,t._valueRange=(On(t.max)-On(e))/(1-n)},getPixelForValue:function(t){var e=this,n=0;return(t=+e.getRightValue(t))>e.min&&t>0&&(n=(On(t)-e._startValue)/e._valueRange+e._valueOffset),e.getPixelForDecimal(n)},getValueForPixel:function(t){var e=this,n=e.getDecimalForPixel(t);return 0===n&&0===e.min?0:Math.pow(10,e._startValue+(n-e._valueOffset)*e._valueRange)}}),Nn=Ln;zn._defaults=Nn;var Bn=H.valueOrDefault,En=H.valueAtIndexOrDefault,Wn=H.options.resolve,Vn={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0,0,0,0.1)",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:on.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function Hn(t){var e=t.ticks;return e.display&&t.display?Bn(e.fontSize,N.global.defaultFontSize)+2*e.backdropPaddingY:0}function jn(t,e,n,i,a){return t===i||t===a?{start:e-n/2,end:e+n/2}:ta?{start:e-n,end:e}:{start:e,end:e+n}}function qn(t){return 0===t||180===t?"center":t<180?"left":"right"}function Un(t,e,n,i){var a,r,o=n.y+i/2;if(H.isArray(e))for(a=0,r=e.length;a270||t<90)&&(n.y-=e.h)}function Gn(t){return H.isNumber(t)?t:0}var Xn=Cn.extend({setDimensions:function(){var t=this;t.width=t.maxWidth,t.height=t.maxHeight,t.paddingTop=Hn(t.options)/2,t.xCenter=Math.floor(t.width/2),t.yCenter=Math.floor((t.height-t.paddingTop)/2),t.drawingArea=Math.min(t.height-t.paddingTop,t.width)/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;H.each(e.data.datasets,(function(a,r){if(e.isDatasetVisible(r)){var o=e.getDatasetMeta(r);H.each(a.data,(function(e,a){var r=+t.getRightValue(e);isNaN(r)||o.data[a].hidden||(n=Math.min(r,n),i=Math.max(r,i))}))}})),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=i===Number.NEGATIVE_INFINITY?0:i,t.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/Hn(this.options))},convertTicksToLabels:function(){var t=this;Cn.prototype.convertTicksToLabels.call(t),t.pointLabels=t.chart.data.labels.map((function(){var e=H.callback(t.options.pointLabels.callback,arguments,t);return e||0===e?e:""}))},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t=this.options;t.display&&t.pointLabels.display?function(t){var e,n,i,a=H.options._parseFont(t.options.pointLabels),r={l:0,r:t.width,t:0,b:t.height-t.paddingTop},o={};t.ctx.font=a.string,t._pointLabelSizes=[];var s,l,u,d=t.chart.data.labels.length;for(e=0;er.r&&(r.r=f.end,o.r=h),g.startr.b&&(r.b=g.end,o.b=h)}t.setReductions(t.drawingArea,r,o)}(this):this.setCenterPoint(0,0,0,0)},setReductions:function(t,e,n){var i=this,a=e.l/Math.sin(n.l),r=Math.max(e.r-i.width,0)/Math.sin(n.r),o=-e.t/Math.cos(n.t),s=-Math.max(e.b-(i.height-i.paddingTop),0)/Math.cos(n.b);a=Gn(a),r=Gn(r),o=Gn(o),s=Gn(s),i.drawingArea=Math.min(Math.floor(t-(a+r)/2),Math.floor(t-(o+s)/2)),i.setCenterPoint(a,r,o,s)},setCenterPoint:function(t,e,n,i){var a=this,r=a.width-e-a.drawingArea,o=t+a.drawingArea,s=n+a.drawingArea,l=a.height-a.paddingTop-i-a.drawingArea;a.xCenter=Math.floor((o+r)/2+a.left),a.yCenter=Math.floor((s+l)/2+a.top+a.paddingTop)},getIndexAngle:function(t){var e=this.chart,n=(t*(360/e.data.labels.length)+((e.options||{}).startAngle||0))%360;return(n<0?n+360:n)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(H.isNullOrUndef(t))return NaN;var n=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*n:(t-e.min)*n},getPointPosition:function(t,e){var n=this.getIndexAngle(t)-Math.PI/2;return{x:Math.cos(n)*e+this.xCenter,y:Math.sin(n)*e+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(t){var e=this.min,n=this.max;return this.getPointPositionForValue(t||0,this.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0)},_drawGrid:function(){var t,e,n,i=this,a=i.ctx,r=i.options,o=r.gridLines,s=r.angleLines,l=Bn(s.lineWidth,o.lineWidth),u=Bn(s.color,o.color);if(r.pointLabels.display&&function(t){var e=t.ctx,n=t.options,i=n.pointLabels,a=Hn(n),r=t.getDistanceFromCenterForValue(n.ticks.reverse?t.min:t.max),o=H.options._parseFont(i);e.save(),e.font=o.string,e.textBaseline="middle";for(var s=t.chart.data.labels.length-1;s>=0;s--){var l=0===s?a/2:0,u=t.getPointPosition(s,r+l+5),d=En(i.fontColor,s,N.global.defaultFontColor);e.fillStyle=d;var h=t.getIndexAngle(s),c=H.toDegrees(h);e.textAlign=qn(c),Yn(c,t._pointLabelSizes[s],u),Un(e,t.pointLabels[s],u,o.lineHeight)}e.restore()}(i),o.display&&H.each(i.ticks,(function(t,n){0!==n&&(e=i.getDistanceFromCenterForValue(i.ticksAsNumbers[n]),function(t,e,n,i){var a,r=t.ctx,o=e.circular,s=t.chart.data.labels.length,l=En(e.color,i-1),u=En(e.lineWidth,i-1);if((o||s)&&l&&u){if(r.save(),r.strokeStyle=l,r.lineWidth=u,r.setLineDash&&(r.setLineDash(e.borderDash||[]),r.lineDashOffset=e.borderDashOffset||0),r.beginPath(),o)r.arc(t.xCenter,t.yCenter,n,0,2*Math.PI);else{a=t.getPointPosition(0,n),r.moveTo(a.x,a.y);for(var d=1;d=0;t--)e=i.getDistanceFromCenterForValue(r.ticks.reverse?i.min:i.max),n=i.getPointPosition(t,e),a.beginPath(),a.moveTo(i.xCenter,i.yCenter),a.lineTo(n.x,n.y),a.stroke();a.restore()}},_drawLabels:function(){var t=this,e=t.ctx,n=t.options.ticks;if(n.display){var i,a,r=t.getIndexAngle(0),o=H.options._parseFont(n),s=Bn(n.fontColor,N.global.defaultFontColor);e.save(),e.font=o.string,e.translate(t.xCenter,t.yCenter),e.rotate(r),e.textAlign="center",e.textBaseline="middle",H.each(t.ticks,(function(r,l){(0!==l||n.reverse)&&(i=t.getDistanceFromCenterForValue(t.ticksAsNumbers[l]),n.showLabelBackdrop&&(a=e.measureText(r).width,e.fillStyle=n.backdropColor,e.fillRect(-a/2-n.backdropPaddingX,-i-o.size/2-n.backdropPaddingY,a+2*n.backdropPaddingX,o.size+2*n.backdropPaddingY)),e.fillStyle=s,e.fillText(r,0,-i))})),e.restore()}},_drawTitle:H.noop}),Kn=Vn;Xn._defaults=Kn;var Zn=H._deprecated,$n=H.options.resolve,Jn=H.valueOrDefault,Qn=Number.MIN_SAFE_INTEGER||-9007199254740991,ti=Number.MAX_SAFE_INTEGER||9007199254740991,ei={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ni=Object.keys(ei);function ii(t,e){return t-e}function ai(t){return H.valueOrDefault(t.time.min,t.ticks.min)}function ri(t){return H.valueOrDefault(t.time.max,t.ticks.max)}function oi(t,e,n,i){var a=function(t,e,n){for(var i,a,r,o=0,s=t.length-1;o>=0&&o<=s;){if(a=t[(i=o+s>>1)-1]||null,r=t[i],!a)return{lo:null,hi:r};if(r[e]n))return{lo:a,hi:r};s=i-1}}return{lo:r,hi:null}}(t,e,n),r=a.lo?a.hi?a.lo:t[t.length-2]:t[0],o=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=o[e]-r[e],l=s?(n-r[e])/s:0,u=(o[i]-r[i])*l;return r[i]+u}function si(t,e){var n=t._adapter,i=t.options.time,a=i.parser,r=a||i.format,o=e;return"function"==typeof a&&(o=a(o)),H.isFinite(o)||(o="string"==typeof r?n.parse(o,r):n.parse(o)),null!==o?+o:(a||"function"!=typeof r||(o=r(e),H.isFinite(o)||(o=n.parse(o))),o)}function li(t,e){if(H.isNullOrUndef(e))return null;var n=t.options.time,i=si(t,t.getRightValue(e));return null===i?i:(n.round&&(i=+t._adapter.startOf(i,n.round)),i)}function ui(t,e,n,i){var a,r,o,s=ni.length;for(a=ni.indexOf(t);a=0&&(e[r].major=!0);return e}(t,r,o,n):r}var hi=yn.extend({initialize:function(){this.mergeTicksOptions(),yn.prototype.initialize.call(this)},update:function(){var t=this,e=t.options,n=e.time||(e.time={}),i=t._adapter=new rn._date(e.adapters.date);return Zn("time scale",n.format,"time.format","time.parser"),Zn("time scale",n.min,"time.min","ticks.min"),Zn("time scale",n.max,"time.max","ticks.max"),H.mergeIf(n.displayFormats,i.formats()),yn.prototype.update.apply(t,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),yn.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,n,i,a,r,o,s=this,l=s.chart,u=s._adapter,d=s.options,h=d.time.unit||"day",c=ti,f=Qn,g=[],p=[],m=[],v=s._getLabels();for(t=0,n=v.length;t1?function(t){var e,n,i,a={},r=[];for(e=0,n=t.length;e1e5*u)throw e+" and "+n+" are too far apart with stepSize of "+u+" "+l;for(a=h;a=a&&n<=r&&d.push(n);return i.min=a,i.max=r,i._unit=l.unit||(s.autoSkip?ui(l.minUnit,i.min,i.max,h):function(t,e,n,i,a){var r,o;for(r=ni.length-1;r>=ni.indexOf(n);r--)if(o=ni[r],ei[o].common&&t._adapter.diff(a,i,o)>=e-1)return o;return ni[n?ni.indexOf(n):0]}(i,d.length,l.minUnit,i.min,i.max)),i._majorUnit=s.major.enabled&&"year"!==i._unit?function(t){for(var e=ni.indexOf(t)+1,n=ni.length;ee&&s=0&&t0?s:1}}),ci={position:"bottom",distribution:"linear",bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}};hi._defaults=ci;var fi={category:kn,linear:Tn,logarithmic:zn,radialLinear:Xn,time:hi},gi={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};rn._date.override("function"==typeof t?{_id:"moment",formats:function(){return gi},parse:function(e,n){return"string"==typeof e&&"string"==typeof n?e=t(e,n):e instanceof t||(e=t(e)),e.isValid()?e.valueOf():null},format:function(e,n){return t(e).format(n)},add:function(e,n,i){return t(e).add(n,i).valueOf()},diff:function(e,n,i){return t(e).diff(t(n),i)},startOf:function(e,n,i){return e=t(e),"isoWeek"===n?e.isoWeekday(i).valueOf():e.startOf(n).valueOf()},endOf:function(e,n){return t(e).endOf(n).valueOf()},_create:function(e){return t(e)}}:{}),N._set("global",{plugins:{filler:{propagate:!0}}});var pi={dataset:function(t){var e=t.fill,n=t.chart,i=n.getDatasetMeta(e),a=i&&n.isDatasetVisible(e)&&i.dataset._children||[],r=a.length||0;return r?function(t,e){return e=n)&&i;switch(r){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return r;default:return!1}}function vi(t){return(t.el._scale||{}).getPointPositionForValue?function(t){var e,n,i,a,r,o=t.el._scale,s=o.options,l=o.chart.data.labels.length,u=t.fill,d=[];if(!l)return null;for(e=s.ticks.reverse?o.max:o.min,n=s.ticks.reverse?o.min:o.max,i=o.getPointPositionForValue(0,e),a=0;a0;--r)H.canvas.lineTo(t,n[r],n[r-1],!0);else for(o=n[0].cx,s=n[0].cy,l=Math.sqrt(Math.pow(n[0].x-o,2)+Math.pow(n[0].y-s,2)),r=a-1;r>0;--r)t.arc(o,s,l,n[r].angle,n[r-1].angle,!0)}}function ki(t,e,n,i,a,r){var o,s,l,u,d,h,c,f,g=e.length,p=i.spanGaps,m=[],v=[],b=0,x=0;for(t.beginPath(),o=0,s=g;o=0;--n)(e=l[n].$filler)&&e.visible&&(a=(i=e.el)._view,r=i._children||[],o=e.mapper,s=a.backgroundColor||N.global.defaultColor,o&&s&&r.length&&(H.canvas.clipArea(u,t.chartArea),ki(u,r,o,a,s,i._loop),H.canvas.unclipArea(u)))}},Mi=H.rtl.getRtlAdapter,Si=H.noop,Ci=H.valueOrDefault;function Pi(t,e){return t.usePointStyle&&t.boxWidth>e?e:t.boxWidth}N._set("global",{legend:{display:!0,position:"top",align:"center",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,i=this.chart,a=i.getDatasetMeta(n);a.hidden=null===a.hidden?!i.data.datasets[n].hidden:null,i.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data.datasets,n=t.options.legend||{},i=n.labels&&n.labels.usePointStyle;return t._getSortedDatasetMetas().map((function(n){var a=n.controller.getStyle(i?0:void 0);return{text:e[n.index].label,fillStyle:a.backgroundColor,hidden:!t.isDatasetVisible(n.index),lineCap:a.borderCapStyle,lineDash:a.borderDash,lineDashOffset:a.borderDashOffset,lineJoin:a.borderJoinStyle,lineWidth:a.borderWidth,strokeStyle:a.borderColor,pointStyle:a.pointStyle,rotation:a.rotation,datasetIndex:n.index}}),this)}}},legendCallback:function(t){var e,n,i,a=document.createElement("ul"),r=t.data.datasets;for(a.setAttribute("class",t.id+"-legend"),e=0,n=r.length;el.width)&&(h+=o+n.padding,d[d.length-(e>0?0:1)]=0),s[e]={left:0,top:0,width:i,height:o},d[d.length-1]+=i+n.padding})),l.height+=h}else{var c=n.padding,f=t.columnWidths=[],g=t.columnHeights=[],p=n.padding,m=0,v=0;H.each(t.legendItems,(function(t,e){var i=Pi(n,o)+o/2+a.measureText(t.text).width;e>0&&v+o+2*c>l.height&&(p+=m+n.padding,f.push(m),g.push(v),m=0,v=0),m=Math.max(m,i),v+=o+c,s[e]={left:0,top:0,width:i,height:o}})),p+=m,f.push(m),g.push(v),l.width+=p}t.width=l.width,t.height=l.height}else t.width=l.width=t.height=l.height=0},afterFit:Si,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,n=e.labels,i=N.global,a=i.defaultColor,r=i.elements.line,o=t.height,s=t.columnHeights,l=t.width,u=t.lineWidths;if(e.display){var d,h=Mi(e.rtl,t.left,t.minSize.width),c=t.ctx,f=Ci(n.fontColor,i.defaultFontColor),g=H.options._parseFont(n),p=g.size;c.textAlign=h.textAlign("left"),c.textBaseline="middle",c.lineWidth=.5,c.strokeStyle=f,c.fillStyle=f,c.font=g.string;var m=Pi(n,p),v=t.legendHitBoxes,b=function(t,i){switch(e.align){case"start":return n.padding;case"end":return t-i;default:return(t-i+n.padding)/2}},x=t.isHorizontal();d=x?{x:t.left+b(l,u[0]),y:t.top+n.padding,line:0}:{x:t.left+n.padding,y:t.top+b(o,s[0]),line:0},H.rtl.overrideTextDirection(t.ctx,e.textDirection);var y=p+n.padding;H.each(t.legendItems,(function(e,i){var f=c.measureText(e.text).width,g=m+p/2+f,_=d.x,k=d.y;h.setWidth(t.minSize.width),x?i>0&&_+g+n.padding>t.left+t.minSize.width&&(k=d.y+=y,d.line++,_=d.x=t.left+b(l,u[d.line])):i>0&&k+y>t.top+t.minSize.height&&(_=d.x=_+t.columnWidths[d.line]+n.padding,d.line++,k=d.y=t.top+b(o,s[d.line]));var w=h.x(_);!function(t,e,i){if(!(isNaN(m)||m<=0)){c.save();var o=Ci(i.lineWidth,r.borderWidth);if(c.fillStyle=Ci(i.fillStyle,a),c.lineCap=Ci(i.lineCap,r.borderCapStyle),c.lineDashOffset=Ci(i.lineDashOffset,r.borderDashOffset),c.lineJoin=Ci(i.lineJoin,r.borderJoinStyle),c.lineWidth=o,c.strokeStyle=Ci(i.strokeStyle,a),c.setLineDash&&c.setLineDash(Ci(i.lineDash,r.borderDash)),n&&n.usePointStyle){var s=m*Math.SQRT2/2,l=h.xPlus(t,m/2),u=e+p/2;H.canvas.drawPoint(c,i.pointStyle,s,l,u,i.rotation)}else c.fillRect(h.leftForLtr(t,m),e,m,p),0!==o&&c.strokeRect(h.leftForLtr(t,m),e,m,p);c.restore()}}(w,k,e),v[i].left=h.leftForLtr(w,v[i].width),v[i].top=k,function(t,e,n,i){var a=p/2,r=h.xPlus(t,m+a),o=e+a;c.fillText(n.text,r,o),n.hidden&&(c.beginPath(),c.lineWidth=2,c.moveTo(r,o),c.lineTo(h.xPlus(r,i),o),c.stroke())}(w,k,e,f),x?d.x+=g+n.padding:d.y+=y})),H.rtl.restoreTextDirection(t.ctx,e.textDirection)}},_getLegendItemAt:function(t,e){var n,i,a,r=this;if(t>=r.left&&t<=r.right&&e>=r.top&&e<=r.bottom)for(a=r.legendHitBoxes,n=0;n=(i=a[n]).left&&t<=i.left+i.width&&e>=i.top&&e<=i.top+i.height)return r.legendItems[n];return null},handleEvent:function(t){var e,n=this,i=n.options,a="mouseup"===t.type?"click":t.type;if("mousemove"===a){if(!i.onHover&&!i.onLeave)return}else{if("click"!==a)return;if(!i.onClick)return}e=n._getLegendItemAt(t.x,t.y),"click"===a?e&&i.onClick&&i.onClick.call(n,t.native,e):(i.onLeave&&e!==n._hoveredItem&&(n._hoveredItem&&i.onLeave.call(n,t.native,n._hoveredItem),n._hoveredItem=e),i.onHover&&e&&i.onHover.call(n,t.native,e))}});function Di(t,e){var n=new Ai({ctx:t.ctx,options:e,chart:t});pe.configure(t,n,e),pe.addBox(t,n),t.legend=n}var Ti={id:"legend",_element:Ai,beforeInit:function(t){var e=t.options.legend;e&&Di(t,e)},beforeUpdate:function(t){var e=t.options.legend,n=t.legend;e?(H.mergeIf(e,N.global.legend),n?(pe.configure(t,n,e),n.options=e):Di(t,e)):n&&(pe.removeBox(t,n),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}},Ii=H.noop;N._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var Fi=K.extend({initialize:function(t){H.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:Ii,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:Ii,beforeSetDimensions:Ii,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:Ii,beforeBuildLabels:Ii,buildLabels:Ii,afterBuildLabels:Ii,beforeFit:Ii,fit:function(){var t,e=this,n=e.options,i=e.minSize={},a=e.isHorizontal();n.display?(t=(H.isArray(n.text)?n.text.length:1)*H.options._parseFont(n).lineHeight+2*n.padding,e.width=i.width=a?e.maxWidth:t,e.height=i.height=a?t:e.maxHeight):e.width=i.width=e.height=i.height=0},afterFit:Ii,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=t.options;if(n.display){var i,a,r,o=H.options._parseFont(n),s=o.lineHeight,l=s/2+n.padding,u=0,d=t.top,h=t.left,c=t.bottom,f=t.right;e.fillStyle=H.valueOrDefault(n.fontColor,N.global.defaultFontColor),e.font=o.string,t.isHorizontal()?(a=h+(f-h)/2,r=d+l,i=f-h):(a="left"===n.position?h+l:f-l,r=d+(c-d)/2,i=c-d,u=Math.PI*("left"===n.position?-.5:.5)),e.save(),e.translate(a,r),e.rotate(u),e.textAlign="center",e.textBaseline="middle";var g=n.text;if(H.isArray(g))for(var p=0,m=0;m=0;i--){var a=t[i];if(e(a))return a}},H.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},H.almostEquals=function(t,e,n){return Math.abs(t-e)=t},H.max=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.max(t,e)}),Number.NEGATIVE_INFINITY)},H.min=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.min(t,e)}),Number.POSITIVE_INFINITY)},H.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0===(t=+t)||isNaN(t)?t:t>0?1:-1},H.toRadians=function(t){return t*(Math.PI/180)},H.toDegrees=function(t){return t*(180/Math.PI)},H._decimalPlaces=function(t){if(H.isFinite(t)){for(var e=1,n=0;Math.round(t*e)/e!==t;)e*=10,n++;return n}},H.getAngleFromPoint=function(t,e){var n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),r=Math.atan2(i,n);return r<-.5*Math.PI&&(r+=2*Math.PI),{angle:r,distance:a}},H.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},H.aliasPixel=function(t){return t%2==0?0:.5},H._alignPixel=function(t,e,n){var i=t.currentDevicePixelRatio,a=n/2;return Math.round((e-a)*i)/i+a},H.splineCurve=function(t,e,n,i){var a=t.skip?e:t,r=e,o=n.skip?e:n,s=Math.sqrt(Math.pow(r.x-a.x,2)+Math.pow(r.y-a.y,2)),l=Math.sqrt(Math.pow(o.x-r.x,2)+Math.pow(o.y-r.y,2)),u=s/(s+l),d=l/(s+l),h=i*(u=isNaN(u)?0:u),c=i*(d=isNaN(d)?0:d);return{previous:{x:r.x-h*(o.x-a.x),y:r.y-h*(o.y-a.y)},next:{x:r.x+c*(o.x-a.x),y:r.y+c*(o.y-a.y)}}},H.EPSILON=Number.EPSILON||1e-14,H.splineCurveMonotone=function(t){var e,n,i,a,r,o,s,l,u,d=(t||[]).map((function(t){return{model:t._model,deltaK:0,mK:0}})),h=d.length;for(e=0;e0?d[e-1]:null,(a=e0?d[e-1]:null,a=e=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},H.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},H.niceNum=function(t,e){var n=Math.floor(H.log10(t)),i=t/Math.pow(10,n);return(e?i<1.5?1:i<3?2:i<7?5:10:i<=1?1:i<=2?2:i<=5?5:10)*Math.pow(10,n)},H.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},H.getRelativePosition=function(t,e){var n,i,a=t.originalEvent||t,r=t.target||t.srcElement,o=r.getBoundingClientRect(),s=a.touches;s&&s.length>0?(n=s[0].clientX,i=s[0].clientY):(n=a.clientX,i=a.clientY);var l=parseFloat(H.getStyle(r,"padding-left")),u=parseFloat(H.getStyle(r,"padding-top")),d=parseFloat(H.getStyle(r,"padding-right")),h=parseFloat(H.getStyle(r,"padding-bottom")),c=o.right-o.left-l-d,f=o.bottom-o.top-u-h;return{x:n=Math.round((n-o.left-l)/c*r.width/e.currentDevicePixelRatio),y:i=Math.round((i-o.top-u)/f*r.height/e.currentDevicePixelRatio)}},H.getConstraintWidth=function(t){return n(t,"max-width","clientWidth")},H.getConstraintHeight=function(t){return n(t,"max-height","clientHeight")},H._calculatePadding=function(t,e,n){return(e=H.getStyle(t,e)).indexOf("%")>-1?n*parseInt(e,10)/100:parseInt(e,10)},H._getParentNode=function(t){var e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e},H.getMaximumWidth=function(t){var e=H._getParentNode(t);if(!e)return t.clientWidth;var n=e.clientWidth,i=n-H._calculatePadding(e,"padding-left",n)-H._calculatePadding(e,"padding-right",n),a=H.getConstraintWidth(t);return isNaN(a)?i:Math.min(i,a)},H.getMaximumHeight=function(t){var e=H._getParentNode(t);if(!e)return t.clientHeight;var n=e.clientHeight,i=n-H._calculatePadding(e,"padding-top",n)-H._calculatePadding(e,"padding-bottom",n),a=H.getConstraintHeight(t);return isNaN(a)?i:Math.min(i,a)},H.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},H.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==n){var i=t.canvas,a=t.height,r=t.width;i.height=a*n,i.width=r*n,t.ctx.scale(n,n),i.style.height||i.style.width||(i.style.height=a+"px",i.style.width=r+"px")}},H.fontString=function(t,e,n){return e+" "+t+"px "+n},H.longestText=function(t,e,n,i){var a=(i=i||{}).data=i.data||{},r=i.garbageCollect=i.garbageCollect||[];i.font!==e&&(a=i.data={},r=i.garbageCollect=[],i.font=e),t.font=e;var o,s,l,u,d,h=0,c=n.length;for(o=0;on.length){for(o=0;oi&&(i=r),i},H.numberOfLabelLines=function(t){var e=1;return H.each(t,(function(t){H.isArray(t)&&t.length>e&&(e=t.length)})),e},H.color=_?function(t){return t instanceof CanvasGradient&&(t=N.global.defaultColor),_(t)}:function(t){return console.error("Color.js not found!"),t},H.getHoverColor=function(t){return t instanceof CanvasPattern||t instanceof CanvasGradient?t:H.color(t).saturate(.5).darken(.1).rgbString()}}(),en._adapters=rn,en.Animation=$,en.animationService=J,en.controllers=Jt,en.DatasetController=it,en.defaults=N,en.Element=K,en.elements=kt,en.Interaction=re,en.layouts=pe,en.platform=Oe,en.plugins=Le,en.Scale=yn,en.scaleService=Re,en.Ticks=on,en.Tooltip=Ye,en.helpers.each(fi,(function(t,e){en.scaleService.registerScaleType(e,t,t._defaults)})),Li)Li.hasOwnProperty(Bi)&&en.plugins.register(Li[Bi]);en.platform.initialize();var Ei=en;return"undefined"!=typeof window&&(window.Chart=en),en.Chart=en,en.Legend=Li.legend._element,en.Title=Li.title._element,en.pluginService=en.plugins,en.PluginBase=en.Element.extend({}),en.canvasHelpers=en.helpers.canvas,en.layoutService=en.layouts,en.LinearScaleBase=Cn,en.helpers.each(["Bar","Bubble","Doughnut","Line","PolarArea","Radar","Scatter"],(function(t){en[t]=function(e,n){return new en(e,en.helpers.merge(n||{},{type:t.charAt(0).toLowerCase()+t.slice(1)}))}})),Ei})); diff --git a/app/templates/app.html b/app/templates/app.html index 77bb2dd..b83d532 100755 --- a/app/templates/app.html +++ b/app/templates/app.html @@ -1,27 +1,31 @@ -{% extends 'base.html' %} {% load fontawesome_5 %} {% block content %} -

App

+{% extends 'base.html' %} {% load fontawesome_5 %} {% load static %} {% block content %} {% if app %} -
    - {% for message in messages %} -
    - {{ message | escape }} +
    +
    +

    App

    + + + + + + + + + + + + + +
    App name{{ app.name }}
    Description{{ app.description }}
    Created by{{ app.user }}
    - {% endfor %} -
- - - - - - - - - - - - - -
App name{{ app.name }}
Description{{ app.description }}
Created by{{ app.user }}
+ +
+
+
Evolution
+ + +
+
Scans
New Scan {% if scans %} @@ -116,4 +120,58 @@
Scans
}); -{% endif %} {% endif %} {% endblock %} \ No newline at end of file +{% endif %} + + +{% endif %} {% endblock %} diff --git a/app/views.py b/app/views.py index e1627de..4d04df7 100755 --- a/app/views.py +++ b/app/views.py @@ -211,11 +211,15 @@ def app(request, id): app = Application.objects.get(pk=id) scans = Scan.objects.filter(app=app.id).order_by('id') scans_data = {} + chart_labels = [] + chart_data = [] for scan in scans: scans_data[scan.id] = { 'findings': get_findings_by_severity(scan.id), 'antivirus' : '' } + chart_labels.append("Scan #" + str(scan.id) + " - " + scan.description) + chart_data.append(scan.findings) try: scans_data[scan.id]['antivirus'] = VirusTotalScan.objects.filter(scan=scan.id).latest('created_on') except Exception as e: @@ -224,6 +228,8 @@ def app(request, id): 'app': app, 'scans': scans, 'scans_data': scans_data, + 'chart_data': chart_data, + 'chart_labels': chart_labels, 'settings': settings, })