diff --git a/static/web/404.html b/static/web/404.html index 11f16383f..ebb9879f8 100644 --- a/static/web/404.html +++ b/static/web/404.html @@ -1,4 +1,4 @@ -404: This page could not be found

404

This page could not be found.

\ No newline at end of file + }

404

This page could not be found.

\ No newline at end of file diff --git a/static/web/404/index.html b/static/web/404/index.html index 11f16383f..ebb9879f8 100644 --- a/static/web/404/index.html +++ b/static/web/404/index.html @@ -1,4 +1,4 @@ -404: This page could not be found

404

This page could not be found.

\ No newline at end of file + }

404

This page could not be found.

\ No newline at end of file diff --git a/static/web/_next/static/362jkpa0IfsRZ-M1PH23v/_buildManifest.js b/static/web/_next/static/KIc48SSbyD_47A8SAit-G/_buildManifest.js similarity index 98% rename from static/web/_next/static/362jkpa0IfsRZ-M1PH23v/_buildManifest.js rename to static/web/_next/static/KIc48SSbyD_47A8SAit-G/_buildManifest.js index e8c719215..3ee464ab9 100644 --- a/static/web/_next/static/362jkpa0IfsRZ-M1PH23v/_buildManifest.js +++ b/static/web/_next/static/KIc48SSbyD_47A8SAit-G/_buildManifest.js @@ -1 +1 @@ -self.__BUILD_MANIFEST=function(s,a,c,e,i,n,t,d,f,h,g,o,b,r,u,k,m,j,l,p,v,E,S,C,_,w,I,y,A,D,L,T,B,F,P,G,K,M,N,U,x,q,z,H,J,O,Q,R,V,W,X,Y,Z,$){return{__rewrites:{beforeFiles:[],afterFiles:[{source:"/api/:path*"},{source:"/hls/:path*"},{source:"/img/:path*"},{source:"/logo"},{source:"/thumbnail.jpg"}],fallback:[]},"/":[e,s,a,c,i,d,h,o,m,j,l,v,w,I,B,q,z,"static/chunks/2051-652a469c3b2f7c3b.js",y,H,"static/css/e41ac78618ab0ea7.css","static/chunks/pages/index-41d83ce8d3d61e94.js"],"/_error":["static/chunks/pages/_error-173a35eca8c80b7b.js"],"/admin":[e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,m,j,p,l,E,v,S,_,A,B,"static/chunks/3638-0902f95a9342bb88.js","static/css/e867652ad65748d1.css","static/chunks/pages/admin-3d66f138e9ea0109.js"],"/admin/access-tokens":[e,n,s,t,a,c,i,f,d,h,r,o,u,k,m,j,p,"static/chunks/2209-33624763d9632efd.js","static/chunks/pages/admin/access-tokens-2095dfb9627ea3c6.js"],"/admin/actions":[F,e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,m,j,P,b,"static/chunks/pages/admin/actions-14c6ecc153eea62b.js"],"/admin/chat/emojis":[e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,C,D,b,"static/chunks/pages/admin/chat/emojis-a02ea4e3a27d698d.js"],"/admin/chat/messages":[F,e,n,s,t,a,c,i,f,d,h,r,o,u,k,m,j,p,E,v,J,"static/chunks/9411-153454e714b83f20.js","static/chunks/pages/admin/chat/messages-919538e72316e914.js"],"/admin/chat/users":[F,e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,m,j,p,l,E,v,J,b,"static/chunks/pages/admin/chat/users-73393d294a8bd3d7.js"],"/admin/config/general":[L,e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,m,j,l,C,T,I,D,G,K,M,O,Q,"static/chunks/pages/admin/config/general-d97e49e8da13d368.js"],"/admin/config/general/AppearanceConfig":[L,e,n,s,t,a,c,i,f,d,g,m,T,I,K,M,b,Q,"static/chunks/pages/admin/config/general/AppearanceConfig-384a0cbfd79324c1.js"],"/admin/config/general/EditInstanceDetails":[e,n,s,t,a,c,i,f,d,g,C,D,"static/chunks/457-92cc7cc2579b98d5.js",b,"static/chunks/pages/admin/config/general/EditInstanceDetails-1637d730ccf1834d.js"],"/admin/config/general/EditInstanceTags":[e,n,s,t,a,c,i,f,d,g,"static/chunks/6427-71a44201150b2c03.js",b,"static/chunks/pages/admin/config/general/EditInstanceTags-cd813b4e20e91dbb.js"],"/admin/config/general/EditPageContent":[L,e,n,s,t,a,c,i,f,d,g,T,G,b,"static/chunks/pages/admin/config/general/EditPageContent-ed79db8c5613cf30.js"],"/admin/config/general/EditSocialLinks":[e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,m,j,b,R,"static/chunks/pages/admin/config/general/EditSocialLinks-815005b5c300027c.js"],"/admin/config/general/GeneralConfig":[L,e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,m,j,C,T,D,G,"static/chunks/7291-467e7d410b3ac9d3.js",b,O,"static/chunks/pages/admin/config/general/GeneralConfig-7056ab100a596adc.js"],"/admin/config/server":[e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,l,S,P,V,"static/chunks/7662-ac993a759584baac.js",b,N,"static/chunks/pages/admin/config/server-8871b47332a83c3f.js"],"/admin/config/server/EditStorage":[e,n,s,t,a,c,g,S,"static/chunks/832-f42e7735d0c54d83.js",b,N,"static/chunks/pages/admin/config/server/EditStorage-578a52499326c58e.js"],"/admin/config/server/ServerConfig":[e,n,s,t,a,c,i,f,d,g,S,"static/chunks/2445-3ef0033db702aa2e.js",b,"static/chunks/pages/admin/config/server/ServerConfig-47d4bd13c5a82912.js"],"/admin/config/server/StorageConfig":[e,n,s,t,a,c,g,S,"static/chunks/7720-aef6668135bedda0.js",b,N,"static/chunks/pages/admin/config/server/StorageConfig-5bbf59d8cd5e973f.js"],"/admin/config/server/StreamKeys":[e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,P,V,b,"static/chunks/pages/admin/config/server/StreamKeys-5993467b43432353.js"],"/admin/config-chat":[e,n,s,t,a,c,i,f,d,g,"static/chunks/252-221098a3bb13db2f.js",b,"static/chunks/pages/admin/config-chat-47c0ea0b9aea8632.js"],"/admin/config-federation":[e,n,s,t,a,c,i,f,d,g,m,j,"static/chunks/3816-215a802827e48d18.js",b,"static/chunks/pages/admin/config-federation-36edf672d8ad719d.js"],"/admin/config-notify":[e,n,s,t,a,c,i,f,d,g,W,"static/chunks/9639-ea49af016f644b06.js",b,"static/chunks/pages/admin/config-notify-d028586eaae455e9.js"],"/admin/config-social-items":[e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,m,j,b,R,"static/chunks/pages/admin/config-social-items-94d0c72ce07e59f7.js"],"/admin/config-video":[e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,m,j,S,M,"static/chunks/9422-3686b297c2706b1a.js",b,"static/chunks/pages/admin/config-video-70ff8809d5483448.js"],"/admin/federation/actions":[e,n,s,t,a,c,i,f,d,h,r,o,u,k,p,E,"static/chunks/pages/admin/federation/actions-1917daa9fec821d1.js"],"/admin/federation/followers":[e,n,s,t,a,c,i,h,g,r,o,u,k,p,l,E,"static/chunks/5936-3ae72758d9d38af7.js",b,"static/chunks/pages/admin/federation/followers-b686c3f6d4e3ad88.js"],"/admin/hardware-info":[U,e,n,s,t,a,i,f,d,h,p,l,C,_,A,x,"static/chunks/pages/admin/hardware-info-633c66547acd9358.js"],"/admin/help":[e,n,s,a,c,i,h,m,l,_,I,K,"static/chunks/7405-660ffbde8f91eb05.js","static/chunks/pages/admin/help-006a54263ad4bf9b.js"],"/admin/logs":[e,n,s,t,a,c,i,f,d,h,r,o,u,k,p,B,"static/chunks/pages/admin/logs-bc9b79b40158a99e.js"],"/admin/stream-health":[U,e,n,s,t,a,c,i,f,d,h,g,p,l,_,A,x,W,"static/chunks/8143-8a7c177a95a7512c.js",b,"static/chunks/pages/admin/stream-health-948c84a14752caeb.js"],"/admin/upgrade":[e,n,s,t,a,c,i,f,d,h,r,o,u,k,"static/chunks/5349-e1cf2eb0426838e0.js","static/chunks/pages/admin/upgrade-f9dc28769ce21c44.js"],"/admin/viewer-info":[U,e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,p,l,E,C,v,_,A,x,"static/chunks/pages/admin/viewer-info-7c07347ef1c0a287.js"],"/admin/webhooks":[e,n,s,t,a,c,i,f,d,h,r,o,u,k,m,j,"static/chunks/3731-4a514de52c37618a.js","static/chunks/pages/admin/webhooks-df4a780571d889b3.js"],"/embed/chat/readonly":[X,Y,s,a,c,i,w,Z,y,$,"static/css/058258085fdf4dd8.css","static/chunks/pages/embed/chat/readonly-2a8e4a2d1c4d3af1.js"],"/embed/chat/readwrite":[X,Y,s,a,c,i,d,h,o,w,Z,z,y,$,H,"static/css/f341f535ed79dbfd.css","static/chunks/pages/embed/chat/readwrite-b36c54137868b1bf.js"],"/embed/video":["static/chunks/d6e1aeb5-eff6e062cc9809b0.js",s,v,w,"static/css/726eb804d4057c2a.css","static/chunks/7902-4bdf9183b66f7c01.js",q,y,"static/chunks/2239-5dd7fafbcaa5439d.js","static/css/6037fa87da2bd61f.css","static/chunks/pages/embed/video-b23c1c86a0694c10.js"],sortedPages:["/","/_app","/_error","/admin","/admin/access-tokens","/admin/actions","/admin/chat/emojis","/admin/chat/messages","/admin/chat/users","/admin/config/general","/admin/config/general/AppearanceConfig","/admin/config/general/EditInstanceDetails","/admin/config/general/EditInstanceTags","/admin/config/general/EditPageContent","/admin/config/general/EditSocialLinks","/admin/config/general/GeneralConfig","/admin/config/server","/admin/config/server/EditStorage","/admin/config/server/ServerConfig","/admin/config/server/StorageConfig","/admin/config/server/StreamKeys","/admin/config-chat","/admin/config-federation","/admin/config-notify","/admin/config-social-items","/admin/config-video","/admin/federation/actions","/admin/federation/followers","/admin/hardware-info","/admin/help","/admin/logs","/admin/stream-health","/admin/upgrade","/admin/viewer-info","/admin/webhooks","/embed/chat/readonly","/embed/chat/readwrite","/embed/video"]}}("static/chunks/1407-559a76b4e60afb83.js","static/chunks/611-6662db09b309896c.js","static/chunks/1577-8292091d0aab9761.js","static/chunks/481-0ac29e7d1a80a156.js","static/chunks/3763-f4076e86be871940.js","static/chunks/5596-993a89308a275b83.js","static/chunks/173-047624672b6febad.js","static/chunks/5212-8485cafd45fac151.js","static/chunks/4485-1ab91f2746088c33.js","static/chunks/4759-236ea584d35f617f.js","static/chunks/7033-b00d572ac63daee0.js","static/chunks/3903-845534d4734499d9.js","static/chunks/745-9267bdf0bc6bdec4.js","static/chunks/8909-76ec61e4c0fbbbd6.js","static/chunks/3698-710368294804b227.js","static/chunks/3461-f99434dad26fbfea.js","static/chunks/6754-4866d130f609e37f.js","static/chunks/878-7039ae1c1aad4bf2.js","static/chunks/575-b22f2e9da72ef285.js","static/chunks/8091-f0f937fd41fd4b5c.js","static/chunks/5938-7b04008793cccd9a.js","static/chunks/2238-99a564e5cbc0cf16.js","static/chunks/2610-2002cda2c3c4f29d.js","static/chunks/7910-f7484eb6c70bd1b2.js","static/chunks/5101-9bf412b01e2c7c59.js","static/chunks/6395-ceb42db9637da589.js","static/chunks/1082-4e57683913bf8b36.js","static/chunks/7466-6d4cc500623f7034.js","static/chunks/4763-6443a4a29a1a2dad.js","static/chunks/7916-7a7e3e3bec0a7601.js","static/chunks/4ad82c5e-6dc0896ff091a49a.js","static/chunks/2792-2f6dacb716e5b0d3.js","static/chunks/5360-a3b34929effb2024.js","static/chunks/29107295-c6268410185fa188.js","static/chunks/8119-5c41ed68492da384.js","static/chunks/6538-7df59493cdff29ae.js","static/chunks/1700-d05d2d4d0dd8753d.js","static/chunks/9722-139ea7558347584f.js","static/chunks/8097-6820286859c6fff3.js","static/chunks/ee8b1517-d8b698f377abd86b.js","static/chunks/6851-ba5548953f2f5e4f.js","static/chunks/8245-fecc28ad9ee52f13.js","static/chunks/8006-af25d652fba1fe04.js","static/chunks/7527-1b97a8820f3de6b7.js","static/chunks/9550-0806c7539b0840e1.js","static/chunks/8645-c37f30a6f611f9e7.js","static/css/d142c7cbd497f653.css","static/chunks/1353-e346498e0c585011.js","static/chunks/5317-a66fa8f91f698ed7.js","static/chunks/6586-445df4e91a350339.js","static/chunks/d3048c20-344c0427131d0038.js","static/chunks/d2094a0f-5a1d6dfe5ccc37f5.js","static/chunks/411-efdce2fbfde31e96.js","static/chunks/4977-b082b9f53608705f.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file +self.__BUILD_MANIFEST=function(s,a,c,e,i,n,t,d,f,h,g,o,b,r,u,k,m,j,l,p,v,E,S,C,_,w,I,y,A,D,L,T,B,F,P,G,K,M,N,U,x,q,z,H,J,O,Q,R,V,W,X,Y,Z,$){return{__rewrites:{beforeFiles:[],afterFiles:[{source:"/api/:path*"},{source:"/hls/:path*"},{source:"/img/:path*"},{source:"/logo"},{source:"/thumbnail.jpg"}],fallback:[]},"/":[e,s,a,c,i,d,h,o,m,j,l,v,w,I,B,q,z,"static/chunks/2051-652a469c3b2f7c3b.js",y,H,"static/css/e41ac78618ab0ea7.css","static/chunks/pages/index-41d83ce8d3d61e94.js"],"/_error":["static/chunks/pages/_error-173a35eca8c80b7b.js"],"/admin":[e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,m,j,p,l,E,v,S,_,A,B,"static/chunks/3638-0902f95a9342bb88.js","static/css/e867652ad65748d1.css","static/chunks/pages/admin-3d66f138e9ea0109.js"],"/admin/access-tokens":[e,n,s,t,a,c,i,f,d,h,r,o,u,k,m,j,p,"static/chunks/2209-33624763d9632efd.js","static/chunks/pages/admin/access-tokens-2095dfb9627ea3c6.js"],"/admin/actions":[F,e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,m,j,P,b,"static/chunks/pages/admin/actions-14c6ecc153eea62b.js"],"/admin/chat/emojis":[e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,C,D,b,"static/chunks/pages/admin/chat/emojis-a02ea4e3a27d698d.js"],"/admin/chat/messages":[F,e,n,s,t,a,c,i,f,d,h,r,o,u,k,m,j,p,E,v,J,"static/chunks/9411-153454e714b83f20.js","static/chunks/pages/admin/chat/messages-919538e72316e914.js"],"/admin/chat/users":[F,e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,m,j,p,l,E,v,J,b,"static/chunks/pages/admin/chat/users-73393d294a8bd3d7.js"],"/admin/config/general":[L,e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,m,j,l,C,T,I,D,G,K,M,O,Q,"static/chunks/pages/admin/config/general-d97e49e8da13d368.js"],"/admin/config/general/AppearanceConfig":[L,e,n,s,t,a,c,i,f,d,g,m,T,I,K,M,b,Q,"static/chunks/pages/admin/config/general/AppearanceConfig-384a0cbfd79324c1.js"],"/admin/config/general/EditInstanceDetails":[e,n,s,t,a,c,i,f,d,g,C,D,"static/chunks/457-92cc7cc2579b98d5.js",b,"static/chunks/pages/admin/config/general/EditInstanceDetails-1637d730ccf1834d.js"],"/admin/config/general/EditInstanceTags":[e,n,s,t,a,c,i,f,d,g,"static/chunks/6427-71a44201150b2c03.js",b,"static/chunks/pages/admin/config/general/EditInstanceTags-cd813b4e20e91dbb.js"],"/admin/config/general/EditPageContent":[L,e,n,s,t,a,c,i,f,d,g,T,G,b,"static/chunks/pages/admin/config/general/EditPageContent-ed79db8c5613cf30.js"],"/admin/config/general/EditSocialLinks":[e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,m,j,b,R,"static/chunks/pages/admin/config/general/EditSocialLinks-815005b5c300027c.js"],"/admin/config/general/GeneralConfig":[L,e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,m,j,C,T,D,G,"static/chunks/7291-467e7d410b3ac9d3.js",b,O,"static/chunks/pages/admin/config/general/GeneralConfig-7056ab100a596adc.js"],"/admin/config/server":[e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,l,S,P,V,"static/chunks/7662-ac993a759584baac.js",b,N,"static/chunks/pages/admin/config/server-8871b47332a83c3f.js"],"/admin/config/server/EditStorage":[e,n,s,t,a,c,g,S,"static/chunks/832-f42e7735d0c54d83.js",b,N,"static/chunks/pages/admin/config/server/EditStorage-578a52499326c58e.js"],"/admin/config/server/ServerConfig":[e,n,s,t,a,c,i,f,d,g,S,"static/chunks/2445-3ef0033db702aa2e.js",b,"static/chunks/pages/admin/config/server/ServerConfig-47d4bd13c5a82912.js"],"/admin/config/server/StorageConfig":[e,n,s,t,a,c,g,S,"static/chunks/7720-aef6668135bedda0.js",b,N,"static/chunks/pages/admin/config/server/StorageConfig-5bbf59d8cd5e973f.js"],"/admin/config/server/StreamKeys":[e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,P,V,b,"static/chunks/pages/admin/config/server/StreamKeys-5993467b43432353.js"],"/admin/config-chat":[e,n,s,t,a,c,i,f,d,g,"static/chunks/252-221098a3bb13db2f.js",b,"static/chunks/pages/admin/config-chat-47c0ea0b9aea8632.js"],"/admin/config-federation":[e,n,s,t,a,c,i,f,d,g,m,j,"static/chunks/3816-215a802827e48d18.js",b,"static/chunks/pages/admin/config-federation-36edf672d8ad719d.js"],"/admin/config-notify":[e,n,s,t,a,c,i,f,d,g,W,"static/chunks/9639-ea49af016f644b06.js",b,"static/chunks/pages/admin/config-notify-d028586eaae455e9.js"],"/admin/config-social-items":[e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,m,j,b,R,"static/chunks/pages/admin/config-social-items-94d0c72ce07e59f7.js"],"/admin/config-video":[e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,m,j,S,M,"static/chunks/9422-3686b297c2706b1a.js",b,"static/chunks/pages/admin/config-video-70ff8809d5483448.js"],"/admin/federation/actions":[e,n,s,t,a,c,i,f,d,h,r,o,u,k,p,E,"static/chunks/pages/admin/federation/actions-1917daa9fec821d1.js"],"/admin/federation/followers":[e,n,s,t,a,c,i,h,g,r,o,u,k,p,l,E,"static/chunks/5936-3ae72758d9d38af7.js",b,"static/chunks/pages/admin/federation/followers-b686c3f6d4e3ad88.js"],"/admin/hardware-info":[U,e,n,s,t,a,i,f,d,h,p,l,C,_,A,x,"static/chunks/pages/admin/hardware-info-633c66547acd9358.js"],"/admin/help":[e,n,s,a,c,i,h,m,l,_,I,K,"static/chunks/7405-660ffbde8f91eb05.js","static/chunks/pages/admin/help-006a54263ad4bf9b.js"],"/admin/logs":[e,n,s,t,a,c,i,f,d,h,r,o,u,k,p,B,"static/chunks/pages/admin/logs-bc9b79b40158a99e.js"],"/admin/stream-health":[U,e,n,s,t,a,c,i,f,d,h,g,p,l,_,A,x,W,"static/chunks/8143-8a7c177a95a7512c.js",b,"static/chunks/pages/admin/stream-health-948c84a14752caeb.js"],"/admin/upgrade":[e,n,s,t,a,c,i,f,d,h,r,o,u,k,"static/chunks/5349-e1cf2eb0426838e0.js","static/chunks/pages/admin/upgrade-f9dc28769ce21c44.js"],"/admin/viewer-info":[U,e,n,s,t,a,c,i,f,d,h,g,r,o,u,k,p,l,E,C,v,_,A,x,"static/chunks/pages/admin/viewer-info-7c07347ef1c0a287.js"],"/admin/webhooks":[e,n,s,t,a,c,i,f,d,h,r,o,u,k,m,j,"static/chunks/3731-4a514de52c37618a.js","static/chunks/pages/admin/webhooks-df4a780571d889b3.js"],"/embed/chat/readonly":[X,Y,s,a,c,i,w,Z,y,$,"static/css/058258085fdf4dd8.css","static/chunks/pages/embed/chat/readonly-2a8e4a2d1c4d3af1.js"],"/embed/chat/readwrite":[X,Y,s,a,c,i,d,h,o,w,Z,z,y,$,H,"static/css/f341f535ed79dbfd.css","static/chunks/pages/embed/chat/readwrite-b36c54137868b1bf.js"],"/embed/video":["static/chunks/d6e1aeb5-eff6e062cc9809b0.js",s,v,w,"static/css/726eb804d4057c2a.css","static/chunks/7902-4bdf9183b66f7c01.js",q,y,"static/chunks/2239-5dd7fafbcaa5439d.js","static/css/6037fa87da2bd61f.css","static/chunks/pages/embed/video-b23c1c86a0694c10.js"],sortedPages:["/","/_app","/_error","/admin","/admin/access-tokens","/admin/actions","/admin/chat/emojis","/admin/chat/messages","/admin/chat/users","/admin/config/general","/admin/config/general/AppearanceConfig","/admin/config/general/EditInstanceDetails","/admin/config/general/EditInstanceTags","/admin/config/general/EditPageContent","/admin/config/general/EditSocialLinks","/admin/config/general/GeneralConfig","/admin/config/server","/admin/config/server/EditStorage","/admin/config/server/ServerConfig","/admin/config/server/StorageConfig","/admin/config/server/StreamKeys","/admin/config-chat","/admin/config-federation","/admin/config-notify","/admin/config-social-items","/admin/config-video","/admin/federation/actions","/admin/federation/followers","/admin/hardware-info","/admin/help","/admin/logs","/admin/stream-health","/admin/upgrade","/admin/viewer-info","/admin/webhooks","/embed/chat/readonly","/embed/chat/readwrite","/embed/video"]}}("static/chunks/1407-559a76b4e60afb83.js","static/chunks/611-6662db09b309896c.js","static/chunks/1577-8292091d0aab9761.js","static/chunks/481-0ac29e7d1a80a156.js","static/chunks/3763-f4076e86be871940.js","static/chunks/5596-993a89308a275b83.js","static/chunks/173-047624672b6febad.js","static/chunks/5212-8485cafd45fac151.js","static/chunks/4485-1ab91f2746088c33.js","static/chunks/4759-236ea584d35f617f.js","static/chunks/7033-b00d572ac63daee0.js","static/chunks/3903-845534d4734499d9.js","static/chunks/745-9267bdf0bc6bdec4.js","static/chunks/8909-76ec61e4c0fbbbd6.js","static/chunks/3698-710368294804b227.js","static/chunks/3461-f99434dad26fbfea.js","static/chunks/6754-4866d130f609e37f.js","static/chunks/878-7039ae1c1aad4bf2.js","static/chunks/575-b22f2e9da72ef285.js","static/chunks/8091-f0f937fd41fd4b5c.js","static/chunks/5938-7b04008793cccd9a.js","static/chunks/2238-99a564e5cbc0cf16.js","static/chunks/2610-2002cda2c3c4f29d.js","static/chunks/7910-f7484eb6c70bd1b2.js","static/chunks/5101-9bf412b01e2c7c59.js","static/chunks/6395-ceb42db9637da589.js","static/chunks/1082-4e57683913bf8b36.js","static/chunks/7466-6d4cc500623f7034.js","static/chunks/4763-6443a4a29a1a2dad.js","static/chunks/7916-7a7e3e3bec0a7601.js","static/chunks/4ad82c5e-6dc0896ff091a49a.js","static/chunks/2792-2f6dacb716e5b0d3.js","static/chunks/5360-a3b34929effb2024.js","static/chunks/29107295-c6268410185fa188.js","static/chunks/8119-5c41ed68492da384.js","static/chunks/6538-7df59493cdff29ae.js","static/chunks/1700-d05d2d4d0dd8753d.js","static/chunks/9722-139ea7558347584f.js","static/chunks/8097-6820286859c6fff3.js","static/chunks/ee8b1517-2d287d36db8884e0.js","static/chunks/6851-28d01fed3536bf9a.js","static/chunks/8245-fecc28ad9ee52f13.js","static/chunks/8006-af25d652fba1fe04.js","static/chunks/7527-1b97a8820f3de6b7.js","static/chunks/9550-0806c7539b0840e1.js","static/chunks/8645-c37f30a6f611f9e7.js","static/css/d142c7cbd497f653.css","static/chunks/1353-e346498e0c585011.js","static/chunks/5317-a66fa8f91f698ed7.js","static/chunks/6586-445df4e91a350339.js","static/chunks/d3048c20-344c0427131d0038.js","static/chunks/d2094a0f-5a1d6dfe5ccc37f5.js","static/chunks/411-efdce2fbfde31e96.js","static/chunks/4977-b082b9f53608705f.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file diff --git a/static/web/_next/static/362jkpa0IfsRZ-M1PH23v/_ssgManifest.js b/static/web/_next/static/KIc48SSbyD_47A8SAit-G/_ssgManifest.js similarity index 100% rename from static/web/_next/static/362jkpa0IfsRZ-M1PH23v/_ssgManifest.js rename to static/web/_next/static/KIc48SSbyD_47A8SAit-G/_ssgManifest.js diff --git a/static/web/_next/static/chunks/6851-ba5548953f2f5e4f.js b/static/web/_next/static/chunks/6851-28d01fed3536bf9a.js similarity index 99% rename from static/web/_next/static/chunks/6851-ba5548953f2f5e4f.js rename to static/web/_next/static/chunks/6851-28d01fed3536bf9a.js index 903d273d2..d42615b69 100644 --- a/static/web/_next/static/chunks/6851-ba5548953f2f5e4f.js +++ b/static/web/_next/static/chunks/6851-28d01fed3536bf9a.js @@ -10,9 +10,9 @@ * (c) 2022 Jukka Kurkela * Released under the MIT License */function i(t){return t+.5|0}n.d(e,{$:function(){return ef},A:function(){return tR},B:function(){return tj},C:function(){return ec},D:function(){return tC},E:function(){return ew},F:function(){return V},G:function(){return eK},H:function(){return tf},I:function(){return eU},J:function(){return e1},K:function(){return e0},L:function(){return tH},M:function(){return eY},N:function(){return tm},O:function(){return N},P:function(){return ta},Q:function(){return U},R:function(){return eC},S:function(){return tS},T:function(){return ts},U:function(){return tz},V:function(){return er},W:function(){return tE},X:function(){return ei},Y:function(){return eu},Z:function(){return ed},_:function(){return tN},a:function(){return e_},a0:function(){return ez},a1:function(){return tU},a2:function(){return tV},a3:function(){return t9},a4:function(){return J},a5:function(){return te},a6:function(){return t7},a7:function(){return tr},a8:function(){return function t(e,n,r,o){let i={_cacheable:!1,_proxy:e,_context:n,_subProxy:r,_stack:new Set,_descriptors:eO(e,o),setContext:n=>t(e,n,r,o),override:i=>t(e.override(i),n,r,o)};return new Proxy(i,{deleteProperty:(t,n)=>(delete t[n],delete e[n],!0),get:(e,n,r)=>eE(e,n,()=>(function(e,n,r){let{_proxy:o,_context:i,_subProxy:a,_descriptors:s}=e,l=o[n];return tr(l)&&s.isScriptable(n)&&(l=function(t,e,n,r){let{_proxy:o,_context:i,_subProxy:a,_stack:s}=n;if(s.has(t))throw Error("Recursion detected: "+Array.from(s).join("->")+"->"+t);return s.add(t),e=e(i,a||r),s.delete(t),eS(t,e)&&(e=eD(o._scopes,o,t,e)),e}(n,l,e,r)),F(l)&&l.length&&(l=function(e,n,r,o){let{_proxy:i,_context:a,_subProxy:s,_descriptors:l}=r;if(tn(a.index)&&o(e))n=n[a.index%n.length];else if(B(n[0])){let c=n,u=i._scopes.filter(t=>t!==c);for(let f of(n=[],c)){let h=eD(u,i,e,f);n.push(t(h,a,s&&s[e],l))}}return n}(n,l,e,s.isIndexable)),eS(n,l)&&(l=t(l,i,a&&a[n],s)),l})(e,n,r)),getOwnPropertyDescriptor:(t,n)=>t._descriptors.allKeys?Reflect.has(e,n)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(e,n),getPrototypeOf:()=>Reflect.getPrototypeOf(e),has:(t,n)=>Reflect.has(e,n),ownKeys:()=>Reflect.ownKeys(e),set:(t,n,r)=>(e[n]=r,delete t[n],!0)})}},a9:function(){return eA},aA:function(){return e3},aB:function(){return tQ},aC:function(){return e8},aD:function(){return el},aE:function(){return tk},aF:function(){return j},aG:function(){return tM},aH:function(){return tb},aI:function(){return tv},aJ:function(){return ty},aK:function(){return t_},aL:function(){return t8},aM:function(){return td},aN:function(){return eo},aO:function(){return tL},aP:function(){return tD},aa:function(){return eO},ab:function(){return q},ac:function(){return R},ad:function(){return tY},ae:function(){return eG},af:function(){return ea},ag:function(){return to},ah:function(){return Q},ai:function(){return ti},aj:function(){return tP},ak:function(){return ex},al:function(){return eH},am:function(){return nn},an:function(){return ne},ao:function(){return e5},ap:function(){return e6},aq:function(){return e2},ar:function(){return eh},as:function(){return ep},at:function(){return es},au:function(){return eg},av:function(){return ev},aw:function(){return eM},ax:function(){return nt},ay:function(){return tO},az:function(){return e4},b:function(){return F},c:function(){return t0},d:function(){return en},e:function(){return tK},f:function(){return tt},g:function(){return I},h:function(){return tn},i:function(){return B},j:function(){return ek},k:function(){return L},l:function(){return tB},m:function(){return H},n:function(){return Y},o:function(){return t4},p:function(){return tT},q:function(){return tX},r:function(){return tW},s:function(){return tg},t:function(){return tw},u:function(){return tI},v:function(){return W},w:function(){return tZ},x:function(){return tx},y:function(){return eF},z:function(){return eJ}});let a=(t,e,n)=>Math.max(Math.min(t,n),e);function s(t){return a(i(2.55*t),0,255)}function l(t){return a(i(255*t),0,255)}function c(t){return a(i(t/2.55)/100,0,1)}function u(t){return a(i(100*t),0,100)}let f={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},h=[..."0123456789ABCDEF"],p=t=>h[15&t],d=t=>h[(240&t)>>4]+h[15&t],g=t=>(240&t)>>4==(15&t),y=t=>g(t.r)&&g(t.g)&&g(t.b)&&g(t.a),b=(t,e)=>t<255?e(t):"",m=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function x(t,e,n){let r=e*Math.min(n,1-n),o=(e,o=(e+t/30)%12)=>n-r*Math.max(Math.min(o-3,9-o,1),-1);return[o(0),o(8),o(4)]}function v(t,e,n){let r=(r,o=(r+t/60)%6)=>n-n*e*Math.max(Math.min(o,4-o,1),0);return[r(5),r(3),r(1)]}function M(t,e,n){let r;let o=x(t,1,.5);for(e+n>1&&(r=1/(e+n),e*=r,n*=r),r=0;r<3;r++)o[r]*=1-e-n,o[r]+=e;return o}function w(t){let e,n,r;let o=t.r/255,i=t.g/255,a=t.b/255,s=Math.max(o,i,a),l=Math.min(o,i,a),c=(s+l)/2;return s!==l&&(r=s-l,n=c>.5?r/(2-s-l):r/(s+l),e=60*(e=o===s?(i-a)/r+(it<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,T=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function S(t,e,n){if(t){let r=w(t);r[e]=Math.max(0,Math.min(r[e]+r[e]*n,0===e?360:1)),r=z(x,r,void 0,void 0),t.r=r[0],t.g=r[1],t.b=r[2]}}function E(t,e){return t?Object.assign(e||{},t):t}function P(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=l(t[3]))):(e=E(t,{r:0,g:0,b:0,a:1})).a=l(e.a),e}class D{constructor(t){let e;if(t instanceof D)return t;let n=typeof t;if("object"===n)e=P(t);else if("string"===n){var o,i;i=t.length,"#"===t[0]&&(4===i||5===i?o={r:255&17*f[t[1]],g:255&17*f[t[2]],b:255&17*f[t[3]],a:5===i?17*f[t[4]]:255}:(7===i||9===i)&&(o={r:f[t[1]]<<4|f[t[2]],g:f[t[3]]<<4|f[t[4]],b:f[t[5]]<<4|f[t[6]],a:9===i?f[t[7]]<<4|f[t[8]]:255})),e=o||function(t){r||((r=function(){let t,e,n,r,o;let i={},a=Object.keys(k),s=Object.keys(C);for(t=0;t>16&255,n>>8&255,255&n]}return i}()).transparent=[0,0,0,0]);let e=r[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}(t)||("r"===t.charAt(0)?function(t){let e,n,r;let o=A.exec(t),i=255;if(o){if(o[7]!==e){let l=+o[7];i=o[8]?s(l):a(255*l,0,255)}return e=+o[1],n=+o[3],r=+o[5],{r:e=255&(o[2]?s(e):a(e,0,255)),g:n=255&(o[4]?s(n):a(n,0,255)),b:r=255&(o[6]?s(r):a(r,0,255)),a:i}}}(t):function(t){let e;let n=m.exec(t),r=255;if(!n)return;n[5]!==e&&(r=n[6]?s(+n[5]):l(+n[5]));let o=_(+n[2]),i=+n[3]/100,a=+n[4]/100;return{r:(e="hwb"===n[1]?z(M,o,i,a):"hsv"===n[1]?z(v,o,i,a):z(x,o,i,a))[0],g:e[1],b:e[2],a:r}}(t))}this._rgb=e,this._valid=!!e}get valid(){return this._valid}get rgb(){var t=E(this._rgb);return t&&(t.a=c(t.a)),t}set rgb(t){this._rgb=P(t)}rgbString(){var t;return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${c(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):void 0}hexString(){var t,e;return this._valid?(e=y(t=this._rgb)?p:d,t?"#"+e(t.r)+e(t.g)+e(t.b)+b(t.a,e):void 0):void 0}hslString(){return this._valid?function(t){if(!t)return;let e=w(t),n=e[0],r=u(e[1]),o=u(e[2]);return t.a<255?`hsla(${n}, ${r}%, ${o}%, ${c(t.a)})`:`hsl(${n}, ${r}%, ${o}%)`}(this._rgb):void 0}mix(t,e){if(t){let n;let r=this.rgb,o=t.rgb,i=e===n?.5:e,a=2*i-1,s=r.a-o.a,l=((a*s==-1?a:(a+s)/(1+a*s))+1)/2;n=1-l,r.r=255&l*r.r+n*o.r+.5,r.g=255&l*r.g+n*o.g+.5,r.b=255&l*r.b+n*o.b+.5,r.a=i*r.a+(1-i)*o.a,this.rgb=r}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,n){let r=T(c(t.r)),o=T(c(t.g)),i=T(c(t.b));return{r:l(O(r+n*(T(c(e.r))-r))),g:l(O(o+n*(T(c(e.g))-o))),b:l(O(i+n*(T(c(e.b))-i))),a:t.a+n*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new D(this.rgb)}alpha(t){return this._rgb.a=l(t),this}clearer(t){let e=this._rgb;return e.a*=1-t,this}greyscale(){let t=this._rgb,e=i(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){let e=this._rgb;return e.a*=1+t,this}negate(){let t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return S(this._rgb,2,t),this}darken(t){return S(this._rgb,2,-t),this}saturate(t){return S(this._rgb,1,t),this}desaturate(t){return S(this._rgb,1,-t),this}rotate(t){var e,n;return(n=w(e=this._rgb))[0]=_(n[0]+t),n=z(x,n,void 0,void 0),e.r=n[0],e.g=n[1],e.b=n[2],this}}/*! - * Chart.js v4.1.1 + * Chart.js v4.1.2 * https://www.chartjs.org - * (c) 2022 Chart.js Contributors + * (c) 2023 Chart.js Contributors * Released under the MIT License */function j(){}let R=(o=0,()=>o++);function L(t){return null==t}function F(t){if(Array.isArray&&Array.isArray(t))return!0;let e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function B(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function I(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function N(t,e){return I(t)?t:e}function W(t,e){return void 0===t?e:t}let H=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:+t/e,Y=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function U(t,e,n){if(t&&"function"==typeof t.call)return t.apply(n,e)}function V(t,e,n,r){let o,i,a;if(F(t)){if(i=t.length,r)for(o=i-1;o>=0;o--)e.call(n,t[o],o);else for(o=0;ot,x:t=>t.x,y:t=>t.y};function tt(t,e){let n=G[e]||(G[e]=function(t){let e=function(t){let e=t.split("."),n=[],r="";for(let o of e)(r+=o).endsWith("\\")?r=r.slice(0,-1)+".":(n.push(r),r="");return n}(t);return t=>{for(let n of e){if(""===n)break;t=t&&t[n]}return t}}(e));return n(t)}function te(t){return t.charAt(0).toUpperCase()+t.slice(1)}let tn=t=>void 0!==t,tr=t=>"function"==typeof t,to=(t,e)=>{if(t.size!==e.size)return!1;for(let n of t)if(!e.has(n))return!1;return!0};function ti(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}let ta=Math.PI,ts=2*ta,tl=ts+ta,tc=Number.POSITIVE_INFINITY,tu=ta/180,tf=ta/2,th=ta/4,tp=2*ta/3,td=Math.log10,tg=Math.sign;function ty(t,e,n){return Math.abs(t-e)t-e).pop(),n}function tx(t){return!isNaN(parseFloat(t))&&isFinite(t)}function tv(t,e){let n=Math.round(t);return n-e<=t&&n+e>=t}function tM(t,e,n){let r,o,i;for(r=0,o=t.length;rl&&c=Math.min(e,n)-r&&t<=Math.max(e,n)+r}function tD(t,e,n){let r;n=n||(n=>t[n]1;)n(r=i+o>>1)?i=r:o=r;return{lo:i,hi:o}}let tj=(t,e,n,r)=>tD(t,n,r?r=>{let o=t[r][e];return ot[r][e]tD(t,n,r=>t[r][e]>=n);function tL(t,e,n){let r=0,o=t.length;for(;rr&&t[o-1]>n;)o--;return r>0||o{let n="_onData"+te(e),r=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){let o=r.apply(this,e);return t._chartjs.listeners.forEach(t=>{"function"==typeof t[n]&&t[n](...e)}),o}})})}function tI(t,e){let n=t._chartjs;if(!n)return;let r=n.listeners,o=r.indexOf(e);-1!==o&&r.splice(o,1),r.length>0||(tF.forEach(e=>{delete t[e]}),delete t._chartjs)}function tN(t){let e,n;let r=new Set;for(e=0,n=t.length;e{r=!1,t.apply(e,n)}))}}function tY(t,e){let n;return function(...r){return e?(clearTimeout(n),n=setTimeout(t,e,r)):t.apply(this,r),e}}let tU=t=>"start"===t?"left":"end"===t?"right":"center",tV=(t,e,n)=>"start"===t?e:"end"===t?n:(e+n)/2,tQ=(t,e,n,r)=>t===(r?"left":"right")?n:"center"===t?(e+n)/2:e;function tX(t,e,n){let r=e.length,o=0,i=r;if(t._sorted){let{iScale:a,_parsed:s}=t,l=a.axis,{min:c,max:u,minDefined:f,maxDefined:h}=a.getUserBounds();f&&(o=tS(Math.min(tj(s,a.axis,c).lo,n?r:tj(e,l,a.getPixelForValue(c)).lo),0,r-1)),i=h?tS(Math.max(tj(s,a.axis,u,!0).hi+1,n?0:tj(e,l,a.getPixelForValue(u),!0).hi+1),o,r)-o:r-o}return{start:o,count:i}}function tZ(t){let{xScale:e,yScale:n,_scaleRanges:r}=t,o={xmin:e.min,xmax:e.max,ymin:n.min,ymax:n.max};if(!r)return t._scaleRanges=o,!0;let i=r.xmin!==e.min||r.xmax!==e.max||r.ymin!==n.min||r.ymax!==n.max;return Object.assign(r,o),i}let t$=t=>0===t||1===t,tJ=(t,e,n)=>-(Math.pow(2,10*(t-=1))*Math.sin((t-e)*ts/n)),tq=(t,e,n)=>Math.pow(2,-10*t)*Math.sin((t-e)*ts/n)+1,tK={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>-Math.cos(t*tf)+1,easeOutSine:t=>Math.sin(t*tf),easeInOutSine:t=>-.5*(Math.cos(ta*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:-Math.pow(2,-10*t)+1,easeInOutExpo:t=>t$(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(-Math.pow(2,-10*(2*t-1))+2),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>t$(t)?t:tJ(t,.075,.3),easeOutElastic:t=>t$(t)?t:tq(t,.075,.3),easeInOutElastic:t=>t$(t)?t:t<.5?.5*tJ(2*t,.1125,.45):.5+.5*tq(2*t-1,.1125,.45),easeInBack:t=>t*t*(2.70158*t-1.70158),easeOutBack:t=>(t-=1)*t*(2.70158*t+1.70158)+1,easeInOutBack(t){let e=1.70158;return(t/=.5)<1?.5*(t*t*(((e*=1.525)+1)*t-e)):.5*((t-=2)*t*(((e*=1.525)+1)*t+e)+2)},easeInBounce:t=>1-tK.easeOutBounce(1-t),easeOutBounce:t=>t<.36363636363636365?7.5625*t*t:t<.7272727272727273?7.5625*(t-=.5454545454545454)*t+.75:t<.9090909090909091?7.5625*(t-=.8181818181818182)*t+.9375:7.5625*(t-=.9545454545454546)*t+.984375,easeInOutBounce:t=>t<.5?.5*tK.easeInBounce(2*t):.5*tK.easeOutBounce(2*t-1)+.5};function tG(t){if(t&&"object"==typeof t){let e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function t0(t){return tG(t)?t:new D(t)}function t1(t){return tG(t)?t:new D(t).saturate(.5).darken(.1).hexString()}let t2=["x","y","borderWidth","radius","tension"],t5=["color","borderColor","backgroundColor"],t6=new Map;function t4(t,e,n){return(function(t,e){e=e||{};let n=t+JSON.stringify(e),r=t6.get(n);return r||(r=new Intl.NumberFormat(t,e),t6.set(n,r)),r})(e,n).format(t)}let t3={values:t=>F(t)?t:""+t,numeric(t,e,n){let r;if(0===t)return"0";let o=this.chart.options.locale,i=t;if(n.length>1){let a;let s=Math.max(Math.abs(n[0].value),Math.abs(n[n.length-1].value));(s<1e-4||s>1e15)&&(r="scientific"),Math.abs(a=n.length>3?n[2].value-n[1].value:n[1].value-n[0].value)>=1&&t!==Math.floor(t)&&(a=t-Math.floor(t)),i=a}let l=td(Math.abs(i)),c=Math.max(Math.min(-1*Math.floor(l),20),0),u={notation:r,minimumFractionDigits:c,maximumFractionDigits:c};return Object.assign(u,this.options.ticks.format),t4(t,o,u)},logarithmic(t,e,n){if(0===t)return"0";let r=n[e].significand||t/Math.pow(10,Math.floor(td(t)));return[1,2,3,5,10,15].includes(r)||e>.8*n.length?t3.numeric.call(this,t,e,n):""}};var t8={formatters:t3};let t9=Object.create(null),t7=Object.create(null);function et(t,e){if(!e)return t;let n=e.split(".");for(let r=0,o=n.length;rt.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>t1(e.backgroundColor),this.hoverBorderColor=(t,e)=>t1(e.borderColor),this.hoverColor=(t,e)=>t1(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return ee(this,t,e)}get(t){return et(this,t)}describe(t,e){return ee(t7,t,e)}override(t,e){return ee(t9,t,e)}route(t,e,n,r){let o=et(this,t),i=et(this,n),a="_"+e;Object.defineProperties(o,{[a]:{value:o[e],writable:!0},[e]:{enumerable:!0,get(){let t=this[a],e=i[r];return B(t)?Object.assign({},e,t):W(t,e)},set(t){this[a]=t}}})}apply(t){t.forEach(t=>t(this))}}({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:t5},numbers:{type:"number",properties:t2}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})},function(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:t8.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}]);function er(t,e,n,r,o){let i=e[o];return i||(i=e[o]=t.measureText(o).width,n.push(o)),i>r&&(r=i),r}function eo(t,e,n,r){let o,i,a,s,l;let c=(r=r||{}).data=r.data||{},u=r.garbageCollect=r.garbageCollect||[];r.font!==e&&(c=r.data={},u=r.garbageCollect=[],r.font=e),t.save(),t.font=e;let f=0,h=n.length;for(o=0;on.length){for(o=0;o0&&t.stroke()}}function ec(t,e,n){return n=n||.5,!e||t&&t.x>e.left-n&&t.xe.top-n&&t.y0&&""!==i.strokeColor;for(t.save(),t.font=o.string,a=t,i.translation&&a.translate(i.translation[0],i.translation[1]),L(i.rotation)||a.rotate(i.rotation),i.color&&(a.fillStyle=i.color),i.textAlign&&(a.textAlign=i.textAlign),i.textBaseline&&(a.textBaseline=i.textBaseline),s=0;s+t||0;function ex(t,e){let n={},r=B(e),o=r?Object.keys(e):e,i=B(t)?r?n=>W(t[n],t[e[n]]):e=>t[e]:()=>t;for(let a of o)n[a]=em(i(a));return n}function ev(t){return ex(t,{top:"y",right:"x",bottom:"y",left:"x"})}function eM(t){return ex(t,["topLeft","topRight","bottomLeft","bottomRight"])}function ew(t){let e=ev(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function ez(t,e){t=t||{},e=e||en.font;let n=W(t.size,e.size);"string"==typeof n&&(n=parseInt(n,10));let r=W(t.style,e.style);r&&!(""+r).match(eb)&&(console.warn('Invalid font style specified: "'+r+'"'),r=void 0);let o={family:W(t.family,e.family),lineHeight:function(t,e){let n=(""+t).match(ey);if(!n||"normal"===n[1])return 1.2*e;switch(t=+n[2],n[3]){case"px":return t;case"%":t/=100}return e*t}(W(t.lineHeight,e.lineHeight),n),size:n,style:r,weight:W(t.weight,e.weight),string:""};return o.string=!o||L(o.size)||L(o.family)?null:(o.style?o.style+" ":"")+(o.weight?o.weight+" ":"")+o.size+"px "+o.family,o}function e_(t,e,n,r){let o,i,a,s=!0;for(o=0,i=t.length;on&&0===t?0:t+e;return{min:a(r,-Math.abs(i)),max:a(o,i)}}function ek(t,e){return Object.assign(Object.create(t),e)}function eA(t,e=[""],n=t,r,o=()=>t[0]){tn(r)||(r=eR("_fallback",t));let i={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:n,_fallback:r,_getTarget:o,override:o=>eA([o,...t],e,n,r)};return new Proxy(i,{deleteProperty:(e,n)=>(delete e[n],delete e._keys,delete t[0][n],!0),get:(n,r)=>eE(n,r,()=>(function(t,e,n,r){let o;for(let i of e)if(tn(o=eR(eT(i,t),n)))return eS(t,o)?eD(n,r,t,o):o})(r,e,t,n)),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>eL(t).includes(e),ownKeys:t=>eL(t),set(t,e,n){let r=t._storage||(t._storage=o());return t[e]=r[e]=n,delete t._keys,!0}})}function eO(t,e={scriptable:!0,indexable:!0}){let{_scriptable:n=e.scriptable,_indexable:r=e.indexable,_allKeys:o=e.allKeys}=t;return{allKeys:o,scriptable:n,indexable:r,isScriptable:tr(n)?n:()=>n,isIndexable:tr(r)?r:()=>r}}let eT=(t,e)=>t?t+te(e):e,eS=(t,e)=>B(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function eE(t,e,n){if(Object.prototype.hasOwnProperty.call(t,e))return t[e];let r=n();return t[e]=r,r}let eP=(t,e)=>!0===t?e:"string"==typeof t?tt(e,t):void 0;function eD(t,e,n,r){var o;let i=e._rootScopes,a=tr(o=e._fallback)?o(n,r):o,s=[...t,...i],l=new Set;l.add(r);let c=ej(l,s,n,a||n,r);return!(null===c||tn(a)&&a!==n&&null===(c=ej(l,s,a,c,r)))&&eA(Array.from(l),[""],i,a,()=>(function(t,e,n){let r=t._getTarget();e in r||(r[e]={});let o=r[e];return F(o)&&B(n)?n:o||{}})(e,n,r))}function ej(t,e,n,r,o){for(;n;)n=function(t,e,n,r,o){for(let i of e){let a=eP(n,i);if(a){var s;t.add(a);let l=tr(s=a._fallback)?s(n,o):s;if(tn(l)&&l!==n&&l!==r)return l}else if(!1===a&&tn(r)&&n!==r)return null}return!1}(t,e,n,r,o);return n}function eR(t,e){for(let n of e){if(!n)continue;let r=n[t];if(tn(r))return r}}function eL(t){let e=t._keys;return e||(e=t._keys=function(t){let e=new Set;for(let n of t)for(let r of Object.keys(n).filter(t=>!t.startsWith("_")))e.add(r);return Array.from(e)}(t._scopes)),e}function eF(t,e,n,r){let o,i,a;let{iScale:s}=t,{key:l="r"}=this._parsing,c=Array(r);for(o=0;oe"x"===t?"y":"x";function eW(t,e,n){return Math.max(Math.min(t,n),e)}function eH(t,e,n,r,o){let i,a,s,l;if(e.spanGaps&&(t=t.filter(t=>!t.skip)),"monotone"===e.cubicInterpolationMode)!function(t,e="x"){let n,r,o;let i=eN(e),a=t.length,s=Array(a).fill(0),l=Array(a),c=eI(t,0);for(n=0;nt.ownerDocument.defaultView.getComputedStyle(t,null),eX=["top","right","bottom","left"];function eZ(t,e,n){let r={};n=n?"-"+n:"";for(let o=0;o<4;o++){let i=eX[o];r[i]=parseFloat(t[e+"-"+i+n])||0}return r.width=r.left+r.right,r.height=r.top+r.bottom,r}let e$=(t,e,n)=>(t>0||e>0)&&(!n||!n.shadowRoot);function eJ(t,e){if("native"in t)return t;let{canvas:n,currentDevicePixelRatio:r}=e,o=eQ(n),i="border-box"===o.boxSizing,a=eZ(o,"padding"),s=eZ(o,"border","width"),{x:l,y:c,box:u}=function(t,e){let n,r;let o=t.touches,i=o&&o.length?o[0]:t,{offsetX:a,offsetY:s}=i,l=!1;if(e$(a,s,t.target))n=a,r=s;else{let c=e.getBoundingClientRect();n=i.clientX-c.left,r=i.clientY-c.top,l=!0}return{x:n,y:r,box:l}}(t,n),f=a.left+(u&&s.left),h=a.top+(u&&s.top),{width:p,height:d}=e;return i&&(p-=a.width+s.width,d-=a.height+s.height),{x:Math.round((l-f)/p*n.width/r),y:Math.round((c-h)/d*n.height/r)}}let eq=t=>Math.round(10*t)/10;function eK(t,e,n,r){let o=eQ(t),i=eZ(o,"margin"),a=eV(o.maxWidth,t,"clientWidth")||tc,s=eV(o.maxHeight,t,"clientHeight")||tc,l=function(t,e,n){let r,o;if(void 0===e||void 0===n){let i=eU(t);if(i){let a=i.getBoundingClientRect(),s=eQ(i),l=eZ(s,"border","width"),c=eZ(s,"padding");e=a.width-c.width-l.width,n=a.height-c.height-l.height,r=eV(s.maxWidth,i,"clientWidth"),o=eV(s.maxHeight,i,"clientHeight")}else e=t.clientWidth,n=t.clientHeight}return{width:e,height:n,maxWidth:r||tc,maxHeight:o||tc}}(t,e,n),{width:c,height:u}=l;if("content-box"===o.boxSizing){let f=eZ(o,"border","width"),h=eZ(o,"padding");c-=h.width+f.width,u-=h.height+f.height}return c=Math.max(0,c-i.width),u=Math.max(0,r?c/r:u-i.height),c=eq(Math.min(c,a,l.maxWidth)),u=eq(Math.min(u,s,l.maxHeight)),c&&!u&&(u=eq(c/2)),(void 0!==e||void 0!==n)&&r&&l.height&&u>l.height&&(c=eq(Math.floor((u=l.height)*r))),{width:c,height:u}}function eG(t,e,n){let r=e||1,o=Math.floor(t.height*r),i=Math.floor(t.width*r);t.height=Math.floor(t.height),t.width=Math.floor(t.width);let a=t.canvas;return a.style&&(n||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==r||a.height!==o||a.width!==i)&&(t.currentDevicePixelRatio=r,a.height=o,a.width=i,t.ctx.setTransform(r,0,0,r,0,0),!0)}let e0=function(){let t=!1;try{let e={get passive(){return t=!0,!1}};window.addEventListener("test",null,e),window.removeEventListener("test",null,e)}catch(n){}return t}();function e1(t,e){let n=eQ(t).getPropertyValue(e),r=n&&n.match(/^(\d+)(\.\d+)?px$/);return r?+r[1]:void 0}function e2(t,e,n,r){return{x:t.x+n*(e.x-t.x),y:t.y+n*(e.y-t.y)}}function e5(t,e,n,r){return{x:t.x+n*(e.x-t.x),y:"middle"===r?n<.5?t.y:e.y:"after"===r?n<1?t.y:e.y:n>0?e.y:t.y}}function e6(t,e,n,r){let o={x:t.cp2x,y:t.cp2y},i={x:e.cp1x,y:e.cp1y},a=e2(t,o,n),s=e2(o,i,n),l=e2(i,e,n),c=e2(a,s,n),u=e2(s,l,n);return e2(c,u,n)}function e4(t,e,n){var r;return t?(r=n,{x:t=>e+e+r-t,setWidth(t){r=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function e3(t,e){let n,r;("ltr"===e||"rtl"===e)&&(r=[(n=t.canvas.style).getPropertyValue("direction"),n.getPropertyPriority("direction")],n.setProperty("direction",e,"important"),t.prevTextDirection=r)}function e8(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function e9(t){return"angle"===t?{between:tT,compare:tA,normalize:tO}:{between:tP,compare:(t,e)=>t-e,normalize:t=>t}}function e7({start:t,end:e,count:n,loop:r,style:o}){return{start:t%n,end:e%n,loop:r&&(e-t+1)%n==0,style:o}}function nt(t,e,n){let r,o,i;if(!n)return[t];let{property:a,start:s,end:l}=n,c=e.length,{compare:u,between:f,normalize:h}=e9(a),{start:p,end:d,loop:g,style:y}=function(t,e,n){let r;let{property:o,start:i,end:a}=n,{between:s,normalize:l}=e9(o),c=e.length,{start:u,end:f,loop:h}=t;if(h){for(u+=c,f+=c,r=0;rf(s,i,r)&&0!==u(s,i),M=()=>0===u(l,r)||f(l,i,r),w=()=>m||v(),z=()=>!m||M();for(let _=p,C=p;_<=d;++_)(o=e[_%c]).skip||(r=h(o[a]))===i||(m=f(r,s,l),null===x&&w()&&(x=0===u(r,s)?_:C),null!==x&&z()&&(b.push(e7({start:x,end:_,loop:g,count:c,style:y})),x=null),C=_,i=r);return null!==x&&b.push(e7({start:x,end:d,loop:g,count:c,style:y})),b}function ne(t,e){let n=[],r=t.segments;for(let o=0;oo&&t[i%e].skip;)i--;return i%=e,{start:o,end:i}}(n,o,i,r);if(!0===r)return nr(t,[{start:a,end:s,loop:i}],n,e);let l=!!t._fullLoop&&0===a&&s===o-1;return nr(t,function(t,e,n,r){let o;let i=t.length,a=[],s=e,l=t[e];for(o=e+1;o<=n;++o){let c=t[o%i];c.skip||c.stop?l.skip||(r=!1,a.push({start:e%i,end:(o-1)%i,loop:r}),e=s=c.stop?o:null):(s=o,l.skip&&(e=o)),l=c}return null!==s&&a.push({start:e%i,end:s%i,loop:r}),a}(n,a,s"],"sourcesContent":["// This icon file is generated automatically.\nvar CheckCircleFilled = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z\" } }] }, \"name\": \"check-circle\", \"theme\": \"filled\" };\nexport default CheckCircleFilled;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport CheckCircleFilledSvg from \"@ant-design/icons-svg/es/asn/CheckCircleFilled\";\nimport AntdIcon from '../components/AntdIcon';\nvar CheckCircleFilled = function CheckCircleFilled(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: CheckCircleFilledSvg\n }));\n};\nCheckCircleFilled.displayName = 'CheckCircleFilled';\nexport default /*#__PURE__*/React.forwardRef(CheckCircleFilled);","/*!\n * Chartkick.js\n * Create beautiful charts with one line of JavaScript\n * https://github.com/ankane/chartkick.js\n * v4.2.0\n * MIT License\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Chartkick = factory());\n})(this, (function () { 'use strict';\n\n function isArray(variable) {\n return Object.prototype.toString.call(variable) === \"[object Array]\";\n }\n\n function isFunction(variable) {\n return variable instanceof Function;\n }\n\n function isPlainObject(variable) {\n // protect against prototype pollution, defense 2\n return Object.prototype.toString.call(variable) === \"[object Object]\" && !isFunction(variable) && variable instanceof Object;\n }\n\n // https://github.com/madrobby/zepto/blob/master/src/zepto.js\n function extend(target, source) {\n var key;\n for (key in source) {\n // protect against prototype pollution, defense 1\n if (key === \"__proto__\") { continue; }\n\n if (isPlainObject(source[key]) || isArray(source[key])) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key])) {\n target[key] = {};\n }\n if (isArray(source[key]) && !isArray(target[key])) {\n target[key] = [];\n }\n extend(target[key], source[key]);\n } else if (source[key] !== undefined) {\n target[key] = source[key];\n }\n }\n }\n\n function merge(obj1, obj2) {\n var target = {};\n extend(target, obj1);\n extend(target, obj2);\n return target;\n }\n\n var DATE_PATTERN = /^(\\d\\d\\d\\d)(-)?(\\d\\d)(-)?(\\d\\d)$/i;\n\n function negativeValues(series) {\n var i, j, data;\n for (i = 0; i < series.length; i++) {\n data = series[i].data;\n for (j = 0; j < data.length; j++) {\n if (data[j][1] < 0) {\n return true;\n }\n }\n }\n return false;\n }\n\n function toStr(n) {\n return \"\" + n;\n }\n\n function toFloat(n) {\n return parseFloat(n);\n }\n\n function toDate(n) {\n var matches, year, month, day;\n if (typeof n !== \"object\") {\n if (typeof n === \"number\") {\n n = new Date(n * 1000); // ms\n } else {\n n = toStr(n);\n if ((matches = n.match(DATE_PATTERN))) {\n year = parseInt(matches[1], 10);\n month = parseInt(matches[3], 10) - 1;\n day = parseInt(matches[5], 10);\n return new Date(year, month, day);\n } else {\n // try our best to get the str into iso8601\n // TODO be smarter about this\n var str = n.replace(/ /, \"T\").replace(\" \", \"\").replace(\"UTC\", \"Z\");\n // Date.parse returns milliseconds if valid and NaN if invalid\n n = new Date(Date.parse(str) || n);\n }\n }\n }\n return n;\n }\n\n function toArr(n) {\n if (!isArray(n)) {\n var arr = [], i;\n for (i in n) {\n if (n.hasOwnProperty(i)) {\n arr.push([i, n[i]]);\n }\n }\n n = arr;\n }\n return n;\n }\n\n function jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle) {\n return function (chart, opts, chartOptions) {\n var series = chart.data;\n var options = merge({}, defaultOptions);\n options = merge(options, chartOptions || {});\n\n if (chart.singleSeriesFormat || \"legend\" in opts) {\n hideLegend(options, opts.legend, chart.singleSeriesFormat);\n }\n\n if (opts.title) {\n setTitle(options, opts.title);\n }\n\n // min\n if (\"min\" in opts) {\n setMin(options, opts.min);\n } else if (!negativeValues(series)) {\n setMin(options, 0);\n }\n\n // max\n if (opts.max) {\n setMax(options, opts.max);\n }\n\n if (\"stacked\" in opts) {\n setStacked(options, opts.stacked);\n }\n\n if (opts.colors) {\n options.colors = opts.colors;\n }\n\n if (opts.xtitle) {\n setXtitle(options, opts.xtitle);\n }\n\n if (opts.ytitle) {\n setYtitle(options, opts.ytitle);\n }\n\n // merge library last\n options = merge(options, opts.library || {});\n\n return options;\n };\n }\n\n function sortByTime(a, b) {\n return a[0].getTime() - b[0].getTime();\n }\n\n function sortByNumberSeries(a, b) {\n return a[0] - b[0];\n }\n\n function sortByNumber(a, b) {\n return a - b;\n }\n\n function isMinute(d) {\n return d.getMilliseconds() === 0 && d.getSeconds() === 0;\n }\n\n function isHour(d) {\n return isMinute(d) && d.getMinutes() === 0;\n }\n\n function isDay(d) {\n return isHour(d) && d.getHours() === 0;\n }\n\n function isWeek(d, dayOfWeek) {\n return isDay(d) && d.getDay() === dayOfWeek;\n }\n\n function isMonth(d) {\n return isDay(d) && d.getDate() === 1;\n }\n\n function isYear(d) {\n return isMonth(d) && d.getMonth() === 0;\n }\n\n function isDate(obj) {\n return !isNaN(toDate(obj)) && toStr(obj).length >= 6;\n }\n\n function isNumber(obj) {\n return typeof obj === \"number\";\n }\n\n var byteSuffixes = [\"bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\"];\n\n function formatValue(pre, value, options, axis) {\n pre = pre || \"\";\n if (options.prefix) {\n if (value < 0) {\n value = value * -1;\n pre += \"-\";\n }\n pre += options.prefix;\n }\n\n var suffix = options.suffix || \"\";\n var precision = options.precision;\n var round = options.round;\n\n if (options.byteScale) {\n var suffixIdx;\n var baseValue = axis ? options.byteScale : value;\n\n if (baseValue >= 1152921504606846976) {\n value /= 1152921504606846976;\n suffixIdx = 6;\n } else if (baseValue >= 1125899906842624) {\n value /= 1125899906842624;\n suffixIdx = 5;\n } else if (baseValue >= 1099511627776) {\n value /= 1099511627776;\n suffixIdx = 4;\n } else if (baseValue >= 1073741824) {\n value /= 1073741824;\n suffixIdx = 3;\n } else if (baseValue >= 1048576) {\n value /= 1048576;\n suffixIdx = 2;\n } else if (baseValue >= 1024) {\n value /= 1024;\n suffixIdx = 1;\n } else {\n suffixIdx = 0;\n }\n\n // TODO handle manual precision case\n if (precision === undefined && round === undefined) {\n if (value >= 1023.5) {\n if (suffixIdx < byteSuffixes.length - 1) {\n value = 1.0;\n suffixIdx += 1;\n }\n }\n precision = value >= 1000 ? 4 : 3;\n }\n suffix = \" \" + byteSuffixes[suffixIdx];\n }\n\n if (precision !== undefined && round !== undefined) {\n throw Error(\"Use either round or precision, not both\");\n }\n\n if (!axis) {\n if (precision !== undefined) {\n value = value.toPrecision(precision);\n if (!options.zeros) {\n value = parseFloat(value);\n }\n }\n\n if (round !== undefined) {\n if (round < 0) {\n var num = Math.pow(10, -1 * round);\n value = parseInt((1.0 * value / num).toFixed(0)) * num;\n } else {\n value = value.toFixed(round);\n if (!options.zeros) {\n value = parseFloat(value);\n }\n }\n }\n }\n\n if (options.thousands || options.decimal) {\n value = toStr(value);\n var parts = value.split(\".\");\n value = parts[0];\n if (options.thousands) {\n value = value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, options.thousands);\n }\n if (parts.length > 1) {\n value += (options.decimal || \".\") + parts[1];\n }\n }\n\n return pre + value + suffix;\n }\n\n function seriesOption(chart, series, option) {\n if (option in series) {\n return series[option];\n } else if (option in chart.options) {\n return chart.options[option];\n }\n return null;\n }\n\n function allZeros(data) {\n var i, j, d;\n for (i = 0; i < data.length; i++) {\n d = data[i].data;\n for (j = 0; j < d.length; j++) {\n if (d[j][1] != 0) {\n return false;\n }\n }\n }\n return true;\n }\n\n var baseOptions = {\n maintainAspectRatio: false,\n animation: false,\n plugins: {\n legend: {},\n tooltip: {\n displayColors: false,\n callbacks: {}\n },\n title: {\n font: {\n size: 20\n },\n color: \"#333\"\n }\n },\n interaction: {}\n };\n\n var defaultOptions$2 = {\n scales: {\n y: {\n ticks: {\n maxTicksLimit: 4\n },\n title: {\n font: {\n size: 16\n },\n color: \"#333\"\n },\n grid: {}\n },\n x: {\n grid: {\n drawOnChartArea: false\n },\n title: {\n font: {\n size: 16\n },\n color: \"#333\"\n },\n time: {},\n ticks: {}\n }\n }\n };\n\n // http://there4.io/2012/05/02/google-chart-color-list/\n var defaultColors = [\n \"#3366CC\", \"#DC3912\", \"#FF9900\", \"#109618\", \"#990099\", \"#3B3EAC\", \"#0099C6\",\n \"#DD4477\", \"#66AA00\", \"#B82E2E\", \"#316395\", \"#994499\", \"#22AA99\", \"#AAAA11\",\n \"#6633CC\", \"#E67300\", \"#8B0707\", \"#329262\", \"#5574A6\", \"#651067\"\n ];\n\n var hideLegend$2 = function (options, legend, hideLegend) {\n if (legend !== undefined) {\n options.plugins.legend.display = !!legend;\n if (legend && legend !== true) {\n options.plugins.legend.position = legend;\n }\n } else if (hideLegend) {\n options.plugins.legend.display = false;\n }\n };\n\n var setTitle$2 = function (options, title) {\n options.plugins.title.display = true;\n options.plugins.title.text = title;\n };\n\n var setMin$2 = function (options, min) {\n if (min !== null) {\n options.scales.y.min = toFloat(min);\n }\n };\n\n var setMax$2 = function (options, max) {\n options.scales.y.max = toFloat(max);\n };\n\n var setBarMin$1 = function (options, min) {\n if (min !== null) {\n options.scales.x.min = toFloat(min);\n }\n };\n\n var setBarMax$1 = function (options, max) {\n options.scales.x.max = toFloat(max);\n };\n\n var setStacked$2 = function (options, stacked) {\n options.scales.x.stacked = !!stacked;\n options.scales.y.stacked = !!stacked;\n };\n\n var setXtitle$2 = function (options, title) {\n options.scales.x.title.display = true;\n options.scales.x.title.text = title;\n };\n\n var setYtitle$2 = function (options, title) {\n options.scales.y.title.display = true;\n options.scales.y.title.text = title;\n };\n\n // https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb\n var addOpacity = function (hex, opacity) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? \"rgba(\" + parseInt(result[1], 16) + \", \" + parseInt(result[2], 16) + \", \" + parseInt(result[3], 16) + \", \" + opacity + \")\" : hex;\n };\n\n // check if not null or undefined\n // https://stackoverflow.com/a/27757708/1177228\n var notnull = function (x) {\n return x != null;\n };\n\n var setLabelSize = function (chart, data, options) {\n var maxLabelSize = Math.ceil(chart.element.offsetWidth / 4.0 / data.labels.length);\n if (maxLabelSize > 25) {\n maxLabelSize = 25;\n } else if (maxLabelSize < 10) {\n maxLabelSize = 10;\n }\n if (!options.scales.x.ticks.callback) {\n options.scales.x.ticks.callback = function (value) {\n value = toStr(this.getLabelForValue(value));\n if (value.length > maxLabelSize) {\n return value.substring(0, maxLabelSize - 2) + \"...\";\n } else {\n return value;\n }\n };\n }\n };\n\n var setFormatOptions$1 = function (chart, options, chartType) {\n var formatOptions = {\n prefix: chart.options.prefix,\n suffix: chart.options.suffix,\n thousands: chart.options.thousands,\n decimal: chart.options.decimal,\n precision: chart.options.precision,\n round: chart.options.round,\n zeros: chart.options.zeros\n };\n\n if (chart.options.bytes) {\n var series = chart.data;\n if (chartType === \"pie\") {\n series = [{data: series}];\n }\n\n // calculate max\n var max = 0;\n for (var i = 0; i < series.length; i++) {\n var s = series[i];\n for (var j = 0; j < s.data.length; j++) {\n if (s.data[j][1] > max) {\n max = s.data[j][1];\n }\n }\n }\n\n // calculate scale\n var scale = 1;\n while (max >= 1024) {\n scale *= 1024;\n max /= 1024;\n }\n\n // set step size\n formatOptions.byteScale = scale;\n }\n\n if (chartType !== \"pie\") {\n var axis = options.scales.y;\n if (chartType === \"bar\") {\n axis = options.scales.x;\n }\n\n if (formatOptions.byteScale) {\n if (!axis.ticks.stepSize) {\n axis.ticks.stepSize = formatOptions.byteScale / 2;\n }\n if (!axis.ticks.maxTicksLimit) {\n axis.ticks.maxTicksLimit = 4;\n }\n }\n\n if (!axis.ticks.callback) {\n axis.ticks.callback = function (value) {\n return formatValue(\"\", value, formatOptions, true);\n };\n }\n }\n\n if (!options.plugins.tooltip.callbacks.label) {\n if (chartType === \"scatter\") {\n options.plugins.tooltip.callbacks.label = function (context) {\n var label = context.dataset.label || '';\n if (label) {\n label += ': ';\n }\n return label + '(' + context.label + ', ' + context.formattedValue + ')';\n };\n } else if (chartType === \"bubble\") {\n options.plugins.tooltip.callbacks.label = function (context) {\n var label = context.dataset.label || '';\n if (label) {\n label += ': ';\n }\n var dataPoint = context.raw;\n return label + '(' + dataPoint.x + ', ' + dataPoint.y + ', ' + dataPoint.v + ')';\n };\n } else if (chartType === \"pie\") {\n // need to use separate label for pie charts\n options.plugins.tooltip.callbacks.label = function (context) {\n var dataLabel = context.label;\n var value = ': ';\n\n if (isArray(dataLabel)) {\n // show value on first line of multiline label\n // need to clone because we are changing the value\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n\n return formatValue(dataLabel, context.parsed, formatOptions);\n };\n } else {\n var valueLabel = chartType === \"bar\" ? \"x\" : \"y\";\n options.plugins.tooltip.callbacks.label = function (context) {\n // don't show null values for stacked charts\n if (context.parsed[valueLabel] === null) {\n return;\n }\n\n var label = context.dataset.label || '';\n if (label) {\n label += ': ';\n }\n return formatValue(label, context.parsed[valueLabel], formatOptions);\n };\n }\n }\n };\n\n var jsOptions$2 = jsOptionsFunc(merge(baseOptions, defaultOptions$2), hideLegend$2, setTitle$2, setMin$2, setMax$2, setStacked$2, setXtitle$2, setYtitle$2);\n\n var createDataTable = function (chart, options, chartType) {\n var datasets = [];\n var labels = [];\n\n var colors = chart.options.colors || defaultColors;\n\n var day = true;\n var week = true;\n var dayOfWeek;\n var month = true;\n var year = true;\n var hour = true;\n var minute = true;\n\n var series = chart.data;\n\n var max = 0;\n if (chartType === \"bubble\") {\n for (var i$1 = 0; i$1 < series.length; i$1++) {\n var s$1 = series[i$1];\n for (var j$1 = 0; j$1 < s$1.data.length; j$1++) {\n if (s$1.data[j$1][2] > max) {\n max = s$1.data[j$1][2];\n }\n }\n }\n }\n\n var i, j, s, d, key, rows = [], rows2 = [];\n\n if (chartType === \"bar\" || chartType === \"column\" || (chart.xtype !== \"number\" && chart.xtype !== \"bubble\")) {\n var sortedLabels = [];\n\n for (i = 0; i < series.length; i++) {\n s = series[i];\n\n for (j = 0; j < s.data.length; j++) {\n d = s.data[j];\n key = chart.xtype == \"datetime\" ? d[0].getTime() : d[0];\n if (!rows[key]) {\n rows[key] = new Array(series.length);\n }\n rows[key][i] = toFloat(d[1]);\n if (sortedLabels.indexOf(key) === -1) {\n sortedLabels.push(key);\n }\n }\n }\n\n if (chart.xtype === \"datetime\" || chart.xtype === \"number\") {\n sortedLabels.sort(sortByNumber);\n }\n\n for (j = 0; j < series.length; j++) {\n rows2.push([]);\n }\n\n var value;\n var k;\n for (k = 0; k < sortedLabels.length; k++) {\n i = sortedLabels[k];\n if (chart.xtype === \"datetime\") {\n value = new Date(toFloat(i));\n // TODO make this efficient\n day = day && isDay(value);\n if (!dayOfWeek) {\n dayOfWeek = value.getDay();\n }\n week = week && isWeek(value, dayOfWeek);\n month = month && isMonth(value);\n year = year && isYear(value);\n hour = hour && isHour(value);\n minute = minute && isMinute(value);\n } else {\n value = i;\n }\n labels.push(value);\n for (j = 0; j < series.length; j++) {\n // Chart.js doesn't like undefined\n rows2[j].push(rows[i][j] === undefined ? null : rows[i][j]);\n }\n }\n } else {\n for (var i$2 = 0; i$2 < series.length; i$2++) {\n var s$2 = series[i$2];\n var d$1 = [];\n for (var j$2 = 0; j$2 < s$2.data.length; j$2++) {\n var point = {\n x: toFloat(s$2.data[j$2][0]),\n y: toFloat(s$2.data[j$2][1])\n };\n if (chartType === \"bubble\") {\n point.r = toFloat(s$2.data[j$2][2]) * 20 / max;\n // custom attribute, for tooltip\n point.v = s$2.data[j$2][2];\n }\n d$1.push(point);\n }\n rows2.push(d$1);\n }\n }\n\n var color;\n var backgroundColor;\n\n for (i = 0; i < series.length; i++) {\n s = series[i];\n\n // use colors for each bar for single series format\n if (chart.options.colors && chart.singleSeriesFormat && (chartType === \"bar\" || chartType === \"column\") && !s.color && isArray(chart.options.colors) && !isArray(chart.options.colors[0])) {\n color = colors;\n backgroundColor = [];\n for (var j$3 = 0; j$3 < colors.length; j$3++) {\n backgroundColor[j$3] = addOpacity(color[j$3], 0.5);\n }\n } else {\n color = s.color || colors[i];\n backgroundColor = chartType !== \"line\" ? addOpacity(color, 0.5) : color;\n }\n\n var dataset = {\n label: s.name || \"\",\n data: rows2[i],\n fill: chartType === \"area\",\n borderColor: color,\n backgroundColor: backgroundColor,\n borderWidth: 2\n };\n\n var pointChart = chartType === \"line\" || chartType === \"area\" || chartType === \"scatter\" || chartType === \"bubble\";\n if (pointChart) {\n dataset.pointBackgroundColor = color;\n dataset.pointHoverBackgroundColor = color;\n dataset.pointHitRadius = 50;\n }\n\n if (chartType === \"bubble\") {\n dataset.pointBackgroundColor = backgroundColor;\n dataset.pointHoverBackgroundColor = backgroundColor;\n dataset.pointHoverBorderWidth = 2;\n }\n\n if (s.stack) {\n dataset.stack = s.stack;\n }\n\n var curve = seriesOption(chart, s, \"curve\");\n if (curve === false) {\n dataset.tension = 0;\n } else if (pointChart) {\n dataset.tension = 0.4;\n }\n\n var points = seriesOption(chart, s, \"points\");\n if (points === false) {\n dataset.pointRadius = 0;\n dataset.pointHoverRadius = 0;\n }\n\n dataset = merge(dataset, chart.options.dataset || {});\n dataset = merge(dataset, s.library || {});\n dataset = merge(dataset, s.dataset || {});\n\n datasets.push(dataset);\n }\n\n var xmin = chart.options.xmin;\n var xmax = chart.options.xmax;\n\n if (chart.xtype === \"datetime\") {\n if (notnull(xmin)) {\n options.scales.x.min = toDate(xmin).getTime();\n }\n if (notnull(xmax)) {\n options.scales.x.max = toDate(xmax).getTime();\n }\n } else if (chart.xtype === \"number\") {\n if (notnull(xmin)) {\n options.scales.x.min = xmin;\n }\n if (notnull(xmax)) {\n options.scales.x.max = xmax;\n }\n }\n\n // for empty datetime chart\n if (chart.xtype === \"datetime\" && labels.length === 0) {\n if (notnull(xmin)) {\n labels.push(toDate(xmin));\n }\n if (notnull(xmax)) {\n labels.push(toDate(xmax));\n }\n day = false;\n week = false;\n month = false;\n year = false;\n hour = false;\n minute = false;\n }\n\n if (chart.xtype === \"datetime\" && labels.length > 0) {\n var minTime = (notnull(xmin) ? toDate(xmin) : labels[0]).getTime();\n var maxTime = (notnull(xmax) ? toDate(xmax) : labels[0]).getTime();\n\n for (i = 1; i < labels.length; i++) {\n var value$1 = labels[i].getTime();\n if (value$1 < minTime) {\n minTime = value$1;\n }\n if (value$1 > maxTime) {\n maxTime = value$1;\n }\n }\n\n var timeDiff = (maxTime - minTime) / (86400 * 1000.0);\n\n if (!options.scales.x.time.unit) {\n var step;\n if (year || timeDiff > 365 * 10) {\n options.scales.x.time.unit = \"year\";\n step = 365;\n } else if (month || timeDiff > 30 * 10) {\n options.scales.x.time.unit = \"month\";\n step = 30;\n } else if (day || timeDiff > 10) {\n options.scales.x.time.unit = \"day\";\n step = 1;\n } else if (hour || timeDiff > 0.5) {\n options.scales.x.time.displayFormats = {hour: \"MMM d, h a\"};\n options.scales.x.time.unit = \"hour\";\n step = 1 / 24.0;\n } else if (minute) {\n options.scales.x.time.displayFormats = {minute: \"h:mm a\"};\n options.scales.x.time.unit = \"minute\";\n step = 1 / 24.0 / 60.0;\n }\n\n if (step && timeDiff > 0) {\n // width not available for hidden elements\n var width = chart.element.offsetWidth;\n if (width > 0) {\n var unitStepSize = Math.ceil(timeDiff / step / (width / 100.0));\n if (week && step === 1) {\n unitStepSize = Math.ceil(unitStepSize / 7.0) * 7;\n }\n options.scales.x.time.stepSize = unitStepSize;\n }\n }\n }\n\n if (!options.scales.x.time.tooltipFormat) {\n if (day) {\n options.scales.x.time.tooltipFormat = \"PP\";\n } else if (hour) {\n options.scales.x.time.tooltipFormat = \"MMM d, h a\";\n } else if (minute) {\n options.scales.x.time.tooltipFormat = \"h:mm a\";\n }\n }\n }\n\n var data = {\n labels: labels,\n datasets: datasets\n };\n\n return data;\n };\n\n var defaultExport$2 = function defaultExport(library) {\n this.name = \"chartjs\";\n this.library = library;\n };\n\n defaultExport$2.prototype.renderLineChart = function renderLineChart (chart, chartType) {\n var chartOptions = {};\n // fix for https://github.com/chartjs/Chart.js/issues/2441\n if (!chart.options.max && allZeros(chart.data)) {\n chartOptions.max = 1;\n }\n\n var options = jsOptions$2(chart, merge(chartOptions, chart.options));\n setFormatOptions$1(chart, options, chartType);\n\n var data = createDataTable(chart, options, chartType || \"line\");\n\n if (chart.xtype === \"number\") {\n options.scales.x.type = options.scales.x.type || \"linear\";\n options.scales.x.position = options.scales.x.position ||\"bottom\";\n } else {\n options.scales.x.type = chart.xtype === \"string\" ? \"category\" : \"time\";\n }\n\n this.drawChart(chart, \"line\", data, options);\n };\n\n defaultExport$2.prototype.renderPieChart = function renderPieChart (chart) {\n var options = merge({}, baseOptions);\n if (chart.options.donut) {\n options.cutout = \"50%\";\n }\n\n if (\"legend\" in chart.options) {\n hideLegend$2(options, chart.options.legend);\n }\n\n if (chart.options.title) {\n setTitle$2(options, chart.options.title);\n }\n\n options = merge(options, chart.options.library || {});\n setFormatOptions$1(chart, options, \"pie\");\n\n var labels = [];\n var values = [];\n for (var i = 0; i < chart.data.length; i++) {\n var point = chart.data[i];\n labels.push(point[0]);\n values.push(point[1]);\n }\n\n var dataset = {\n data: values,\n backgroundColor: chart.options.colors || defaultColors\n };\n dataset = merge(dataset, chart.options.dataset || {});\n\n var data = {\n labels: labels,\n datasets: [dataset]\n };\n\n this.drawChart(chart, \"pie\", data, options);\n };\n\n defaultExport$2.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {\n var options;\n if (chartType === \"bar\") {\n var barOptions = merge(baseOptions, defaultOptions$2);\n barOptions.indexAxis = \"y\";\n\n // ensure gridlines have proper orientation\n barOptions.scales.x.grid.drawOnChartArea = true;\n barOptions.scales.y.grid.drawOnChartArea = false;\n delete barOptions.scales.y.ticks.maxTicksLimit;\n\n options = jsOptionsFunc(barOptions, hideLegend$2, setTitle$2, setBarMin$1, setBarMax$1, setStacked$2, setXtitle$2, setYtitle$2)(chart, chart.options);\n } else {\n options = jsOptions$2(chart, chart.options);\n }\n setFormatOptions$1(chart, options, chartType);\n var data = createDataTable(chart, options, \"column\");\n if (chartType !== \"bar\") {\n setLabelSize(chart, data, options);\n }\n this.drawChart(chart, \"bar\", data, options);\n };\n\n defaultExport$2.prototype.renderAreaChart = function renderAreaChart (chart) {\n this.renderLineChart(chart, \"area\");\n };\n\n defaultExport$2.prototype.renderBarChart = function renderBarChart (chart) {\n this.renderColumnChart(chart, \"bar\");\n };\n\n defaultExport$2.prototype.renderScatterChart = function renderScatterChart (chart, chartType) {\n chartType = chartType || \"scatter\";\n\n var options = jsOptions$2(chart, chart.options);\n setFormatOptions$1(chart, options, chartType);\n\n if (!(\"showLine\" in options)) {\n options.showLine = false;\n }\n\n var data = createDataTable(chart, options, chartType);\n\n options.scales.x.type = options.scales.x.type || \"linear\";\n options.scales.x.position = options.scales.x.position || \"bottom\";\n\n // prevent grouping hover and tooltips\n if (!(\"mode\" in options.interaction)) {\n options.interaction.mode = \"nearest\";\n }\n\n this.drawChart(chart, chartType, data, options);\n };\n\n defaultExport$2.prototype.renderBubbleChart = function renderBubbleChart (chart) {\n this.renderScatterChart(chart, \"bubble\");\n };\n\n defaultExport$2.prototype.destroy = function destroy (chart) {\n if (chart.chart) {\n chart.chart.destroy();\n }\n };\n\n defaultExport$2.prototype.drawChart = function drawChart (chart, type, data, options) {\n this.destroy(chart);\n if (chart.destroyed) { return; }\n\n var chartOptions = {\n type: type,\n data: data,\n options: options\n };\n\n if (chart.options.code) {\n window.console.log(\"new Chart(ctx, \" + JSON.stringify(chartOptions) + \");\");\n }\n\n chart.element.innerHTML = \"\";\n var ctx = chart.element.getElementsByTagName(\"CANVAS\")[0];\n chart.chart = new this.library(ctx, chartOptions);\n };\n\n var defaultOptions$1 = {\n chart: {},\n xAxis: {\n title: {\n text: null\n },\n labels: {\n style: {\n fontSize: \"12px\"\n }\n }\n },\n yAxis: {\n title: {\n text: null\n },\n labels: {\n style: {\n fontSize: \"12px\"\n }\n }\n },\n title: {\n text: null\n },\n credits: {\n enabled: false\n },\n legend: {\n borderWidth: 0\n },\n tooltip: {\n style: {\n fontSize: \"12px\"\n }\n },\n plotOptions: {\n areaspline: {},\n area: {},\n series: {\n marker: {}\n }\n },\n time: {\n useUTC: false\n }\n };\n\n var hideLegend$1 = function (options, legend, hideLegend) {\n if (legend !== undefined) {\n options.legend.enabled = !!legend;\n if (legend && legend !== true) {\n if (legend === \"top\" || legend === \"bottom\") {\n options.legend.verticalAlign = legend;\n } else {\n options.legend.layout = \"vertical\";\n options.legend.verticalAlign = \"middle\";\n options.legend.align = legend;\n }\n }\n } else if (hideLegend) {\n options.legend.enabled = false;\n }\n };\n\n var setTitle$1 = function (options, title) {\n options.title.text = title;\n };\n\n var setMin$1 = function (options, min) {\n options.yAxis.min = min;\n };\n\n var setMax$1 = function (options, max) {\n options.yAxis.max = max;\n };\n\n var setStacked$1 = function (options, stacked) {\n var stackedValue = stacked ? (stacked === true ? \"normal\" : stacked) : null;\n options.plotOptions.series.stacking = stackedValue;\n options.plotOptions.area.stacking = stackedValue;\n options.plotOptions.areaspline.stacking = stackedValue;\n };\n\n var setXtitle$1 = function (options, title) {\n options.xAxis.title.text = title;\n };\n\n var setYtitle$1 = function (options, title) {\n options.yAxis.title.text = title;\n };\n\n var jsOptions$1 = jsOptionsFunc(defaultOptions$1, hideLegend$1, setTitle$1, setMin$1, setMax$1, setStacked$1, setXtitle$1, setYtitle$1);\n\n var setFormatOptions = function(chart, options, chartType) {\n var formatOptions = {\n prefix: chart.options.prefix,\n suffix: chart.options.suffix,\n thousands: chart.options.thousands,\n decimal: chart.options.decimal,\n precision: chart.options.precision,\n round: chart.options.round,\n zeros: chart.options.zeros\n };\n\n // skip when axis is an array (like with min/max)\n if (chartType !== \"pie\" && !isArray(options.yAxis) && !options.yAxis.labels.formatter) {\n options.yAxis.labels.formatter = function () {\n return formatValue(\"\", this.value, formatOptions);\n };\n }\n\n if (!options.tooltip.pointFormatter && !options.tooltip.pointFormat) {\n options.tooltip.pointFormatter = function () {\n return '\\u25CF ' + formatValue(this.series.name + ': ', this.y, formatOptions) + '
';\n };\n }\n };\n\n var defaultExport$1 = function defaultExport(library) {\n this.name = \"highcharts\";\n this.library = library;\n };\n\n defaultExport$1.prototype.renderLineChart = function renderLineChart (chart, chartType) {\n chartType = chartType || \"spline\";\n var chartOptions = {};\n if (chartType === \"areaspline\") {\n chartOptions = {\n plotOptions: {\n areaspline: {\n stacking: \"normal\"\n },\n area: {\n stacking: \"normal\"\n },\n series: {\n marker: {\n enabled: false\n }\n }\n }\n };\n }\n\n if (chart.options.curve === false) {\n if (chartType === \"areaspline\") {\n chartType = \"area\";\n } else if (chartType === \"spline\") {\n chartType = \"line\";\n }\n }\n\n var options = jsOptions$1(chart, chart.options, chartOptions), data, i, j;\n if (chart.xtype === \"number\") {\n options.xAxis.type = options.xAxis.type || \"linear\";\n } else {\n options.xAxis.type = chart.xtype === \"string\" ? \"category\" : \"datetime\";\n }\n if (!options.chart.type) {\n options.chart.type = chartType;\n }\n setFormatOptions(chart, options, chartType);\n\n var series = chart.data;\n for (i = 0; i < series.length; i++) {\n series[i].name = series[i].name || \"Value\";\n data = series[i].data;\n if (chart.xtype === \"datetime\") {\n for (j = 0; j < data.length; j++) {\n data[j][0] = data[j][0].getTime();\n }\n }\n series[i].marker = {symbol: \"circle\"};\n if (chart.options.points === false) {\n series[i].marker.enabled = false;\n }\n }\n\n this.drawChart(chart, series, options);\n };\n\n defaultExport$1.prototype.renderScatterChart = function renderScatterChart (chart) {\n var options = jsOptions$1(chart, chart.options, {});\n options.chart.type = \"scatter\";\n this.drawChart(chart, chart.data, options);\n };\n\n defaultExport$1.prototype.renderPieChart = function renderPieChart (chart) {\n var chartOptions = merge(defaultOptions$1, {});\n\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n if (chart.options.donut) {\n chartOptions.plotOptions = {pie: {innerSize: \"50%\"}};\n }\n\n if (\"legend\" in chart.options) {\n hideLegend$1(chartOptions, chart.options.legend);\n }\n\n if (chart.options.title) {\n setTitle$1(chartOptions, chart.options.title);\n }\n\n var options = merge(chartOptions, chart.options.library || {});\n setFormatOptions(chart, options, \"pie\");\n var series = [{\n type: \"pie\",\n name: chart.options.label || \"Value\",\n data: chart.data\n }];\n\n this.drawChart(chart, series, options);\n };\n\n defaultExport$1.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {\n chartType = chartType || \"column\";\n var series = chart.data;\n var options = jsOptions$1(chart, chart.options), i, j, s, d, rows = [], categories = [];\n options.chart.type = chartType;\n setFormatOptions(chart, options, chartType);\n\n for (i = 0; i < series.length; i++) {\n s = series[i];\n\n for (j = 0; j < s.data.length; j++) {\n d = s.data[j];\n if (!rows[d[0]]) {\n rows[d[0]] = new Array(series.length);\n categories.push(d[0]);\n }\n rows[d[0]][i] = d[1];\n }\n }\n\n if (chart.xtype === \"number\") {\n categories.sort(sortByNumber);\n }\n\n options.xAxis.categories = categories;\n\n var newSeries = [], d2;\n for (i = 0; i < series.length; i++) {\n d = [];\n for (j = 0; j < categories.length; j++) {\n d.push(rows[categories[j]][i] || 0);\n }\n\n d2 = {\n name: series[i].name || \"Value\",\n data: d\n };\n if (series[i].stack) {\n d2.stack = series[i].stack;\n }\n\n newSeries.push(d2);\n }\n\n this.drawChart(chart, newSeries, options);\n };\n\n defaultExport$1.prototype.renderBarChart = function renderBarChart (chart) {\n this.renderColumnChart(chart, \"bar\");\n };\n\n defaultExport$1.prototype.renderAreaChart = function renderAreaChart (chart) {\n this.renderLineChart(chart, \"areaspline\");\n };\n\n defaultExport$1.prototype.destroy = function destroy (chart) {\n if (chart.chart) {\n chart.chart.destroy();\n }\n };\n\n defaultExport$1.prototype.drawChart = function drawChart (chart, data, options) {\n this.destroy(chart);\n if (chart.destroyed) { return; }\n\n options.chart.renderTo = chart.element.id;\n options.series = data;\n\n if (chart.options.code) {\n window.console.log(\"new Highcharts.Chart(\" + JSON.stringify(options) + \");\");\n }\n\n chart.chart = new this.library.Chart(options);\n };\n\n var loaded = {};\n var callbacks = [];\n\n // Set chart options\n var defaultOptions = {\n chartArea: {},\n fontName: \"'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif\",\n pointSize: 6,\n legend: {\n textStyle: {\n fontSize: 12,\n color: \"#444\"\n },\n alignment: \"center\",\n position: \"right\"\n },\n curveType: \"function\",\n hAxis: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n },\n titleTextStyle: {},\n gridlines: {\n color: \"transparent\"\n },\n baselineColor: \"#ccc\",\n viewWindow: {}\n },\n vAxis: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n },\n titleTextStyle: {},\n baselineColor: \"#ccc\",\n viewWindow: {}\n },\n tooltip: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n }\n }\n };\n\n var hideLegend = function (options, legend, hideLegend) {\n if (legend !== undefined) {\n var position;\n if (!legend) {\n position = \"none\";\n } else if (legend === true) {\n position = \"right\";\n } else {\n position = legend;\n }\n options.legend.position = position;\n } else if (hideLegend) {\n options.legend.position = \"none\";\n }\n };\n\n var setTitle = function (options, title) {\n options.title = title;\n options.titleTextStyle = {color: \"#333\", fontSize: \"20px\"};\n };\n\n var setMin = function (options, min) {\n options.vAxis.viewWindow.min = min;\n };\n\n var setMax = function (options, max) {\n options.vAxis.viewWindow.max = max;\n };\n\n var setBarMin = function (options, min) {\n options.hAxis.viewWindow.min = min;\n };\n\n var setBarMax = function (options, max) {\n options.hAxis.viewWindow.max = max;\n };\n\n var setStacked = function (options, stacked) {\n options.isStacked = stacked ? stacked : false;\n };\n\n var setXtitle = function (options, title) {\n options.hAxis.title = title;\n options.hAxis.titleTextStyle.italic = false;\n };\n\n var setYtitle = function (options, title) {\n options.vAxis.title = title;\n options.vAxis.titleTextStyle.italic = false;\n };\n\n var jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle);\n\n var resize = function (callback) {\n if (window.attachEvent) {\n window.attachEvent(\"onresize\", callback);\n } else if (window.addEventListener) {\n window.addEventListener(\"resize\", callback, true);\n }\n callback();\n };\n\n var defaultExport = function defaultExport(library) {\n this.name = \"google\";\n this.library = library;\n };\n\n defaultExport.prototype.renderLineChart = function renderLineChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {};\n\n if (chart.options.curve === false) {\n chartOptions.curveType = \"none\";\n }\n\n if (chart.options.points === false) {\n chartOptions.pointSize = 0;\n }\n\n var options = jsOptions(chart, chart.options, chartOptions);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n this$1$1.drawChart(chart, \"LineChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderPieChart = function renderPieChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n chartArea: {\n top: \"10%\",\n height: \"80%\"\n },\n legend: {}\n };\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n if (chart.options.donut) {\n chartOptions.pieHole = 0.5;\n }\n if (\"legend\" in chart.options) {\n hideLegend(chartOptions, chart.options.legend);\n }\n if (chart.options.title) {\n setTitle(chartOptions, chart.options.title);\n }\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n var data = new this$1$1.library.visualization.DataTable();\n data.addColumn(\"string\", \"\");\n data.addColumn(\"number\", \"Value\");\n data.addRows(chart.data);\n\n this$1$1.drawChart(chart, \"PieChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderColumnChart = function renderColumnChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var options = jsOptions(chart, chart.options);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n this$1$1.drawChart(chart, \"ColumnChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderBarChart = function renderBarChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n hAxis: {\n gridlines: {\n color: \"#ccc\"\n }\n }\n };\n var options = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setBarMin, setBarMax, setStacked, setXtitle, setYtitle)(chart, chart.options, chartOptions);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n this$1$1.drawChart(chart, \"BarChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderAreaChart = function renderAreaChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n isStacked: true,\n pointSize: 0,\n areaOpacity: 0.5\n };\n\n var options = jsOptions(chart, chart.options, chartOptions);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n this$1$1.drawChart(chart, \"AreaChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderGeoChart = function renderGeoChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, \"geochart\", function () {\n var chartOptions = {\n legend: \"none\",\n colorAxis: {\n colors: chart.options.colors || [\"#f6c7b6\", \"#ce502d\"]\n }\n };\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n var data = new this$1$1.library.visualization.DataTable();\n data.addColumn(\"string\", \"\");\n data.addColumn(\"number\", chart.options.label || \"Value\");\n data.addRows(chart.data);\n\n this$1$1.drawChart(chart, \"GeoChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderScatterChart = function renderScatterChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {};\n var options = jsOptions(chart, chart.options, chartOptions);\n\n var series = chart.data, rows2 = [], i, j, data, d;\n for (i = 0; i < series.length; i++) {\n series[i].name = series[i].name || \"Value\";\n d = series[i].data;\n for (j = 0; j < d.length; j++) {\n var row = new Array(series.length + 1);\n row[0] = d[j][0];\n row[i + 1] = d[j][1];\n rows2.push(row);\n }\n }\n\n data = new this$1$1.library.visualization.DataTable();\n data.addColumn(\"number\", \"\");\n for (i = 0; i < series.length; i++) {\n data.addColumn(\"number\", series[i].name);\n }\n data.addRows(rows2);\n\n this$1$1.drawChart(chart, \"ScatterChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderTimeline = function renderTimeline (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, \"timeline\", function () {\n var chartOptions = {\n legend: \"none\"\n };\n\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n var data = new this$1$1.library.visualization.DataTable();\n data.addColumn({type: \"string\", id: \"Name\"});\n data.addColumn({type: \"date\", id: \"Start\"});\n data.addColumn({type: \"date\", id: \"End\"});\n data.addRows(chart.data);\n\n chart.element.style.lineHeight = \"normal\";\n\n this$1$1.drawChart(chart, \"Timeline\", data, options);\n });\n };\n\n // TODO remove resize events\n defaultExport.prototype.destroy = function destroy (chart) {\n if (chart.chart) {\n chart.chart.clearChart();\n }\n };\n\n defaultExport.prototype.drawChart = function drawChart (chart, type, data, options) {\n this.destroy(chart);\n if (chart.destroyed) { return; }\n\n if (chart.options.code) {\n window.console.log(\"var data = new google.visualization.DataTable(\" + data.toJSON() + \");\\nvar chart = new google.visualization.\" + type + \"(element);\\nchart.draw(data, \" + JSON.stringify(options) + \");\");\n }\n\n chart.chart = new this.library.visualization[type](chart.element);\n resize(function () {\n chart.chart.draw(data, options);\n });\n };\n\n defaultExport.prototype.waitForLoaded = function waitForLoaded (chart, pack, callback) {\n var this$1$1 = this;\n\n if (!callback) {\n callback = pack;\n pack = \"corechart\";\n }\n\n callbacks.push({pack: pack, callback: callback});\n\n if (loaded[pack]) {\n this.runCallbacks();\n } else {\n loaded[pack] = true;\n\n // https://groups.google.com/forum/#!topic/google-visualization-api/fMKJcyA2yyI\n var loadOptions = {\n packages: [pack],\n callback: function () { this$1$1.runCallbacks(); }\n };\n var config = chart.__config();\n if (config.language) {\n loadOptions.language = config.language;\n }\n if (pack === \"geochart\" && config.mapsApiKey) {\n loadOptions.mapsApiKey = config.mapsApiKey;\n }\n\n this.library.charts.load(\"current\", loadOptions);\n }\n };\n\n defaultExport.prototype.runCallbacks = function runCallbacks () {\n var cb, call;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n call = this.library.visualization && ((cb.pack === \"corechart\" && this.library.visualization.LineChart) || (cb.pack === \"timeline\" && this.library.visualization.Timeline) || (cb.pack === \"geochart\" && this.library.visualization.GeoChart));\n if (call) {\n cb.callback();\n callbacks.splice(i, 1);\n i--;\n }\n }\n };\n\n // cant use object as key\n defaultExport.prototype.createDataTable = function createDataTable (series, columnType) {\n var i, j, s, d, key, rows = [], sortedLabels = [];\n for (i = 0; i < series.length; i++) {\n s = series[i];\n series[i].name = series[i].name || \"Value\";\n\n for (j = 0; j < s.data.length; j++) {\n d = s.data[j];\n key = (columnType === \"datetime\") ? d[0].getTime() : d[0];\n if (!rows[key]) {\n rows[key] = new Array(series.length);\n sortedLabels.push(key);\n }\n rows[key][i] = toFloat(d[1]);\n }\n }\n\n var rows2 = [];\n var day = true;\n var value;\n for (j = 0; j < sortedLabels.length; j++) {\n i = sortedLabels[j];\n if (columnType === \"datetime\") {\n value = new Date(toFloat(i));\n day = day && isDay(value);\n } else if (columnType === \"number\") {\n value = toFloat(i);\n } else {\n value = i;\n }\n rows2.push([value].concat(rows[i]));\n }\n if (columnType === \"datetime\") {\n rows2.sort(sortByTime);\n } else if (columnType === \"number\") {\n rows2.sort(sortByNumberSeries);\n\n for (i = 0; i < rows2.length; i++) {\n rows2[i][0] = toStr(rows2[i][0]);\n }\n\n columnType = \"string\";\n }\n\n // create datatable\n var data = new this.library.visualization.DataTable();\n columnType = columnType === \"datetime\" && day ? \"date\" : columnType;\n data.addColumn(columnType, \"\");\n for (i = 0; i < series.length; i++) {\n data.addColumn(\"number\", series[i].name);\n }\n data.addRows(rows2);\n\n return data;\n };\n\n function formatSeriesData(data, keyType) {\n var r = [], j, keyFunc;\n\n if (keyType === \"number\") {\n keyFunc = toFloat;\n } else if (keyType === \"datetime\") {\n keyFunc = toDate;\n } else {\n keyFunc = toStr;\n }\n\n if (keyType === \"bubble\") {\n for (j = 0; j < data.length; j++) {\n r.push([toFloat(data[j][0]), toFloat(data[j][1]), toFloat(data[j][2])]);\n }\n } else {\n for (j = 0; j < data.length; j++) {\n r.push([keyFunc(data[j][0]), toFloat(data[j][1])]);\n }\n }\n\n if (keyType === \"datetime\") {\n r.sort(sortByTime);\n } else if (keyType === \"number\") {\n r.sort(sortByNumberSeries);\n }\n\n return r;\n }\n\n function detectXType(series, noDatetime, options) {\n if (dataEmpty(series)) {\n if ((options.xmin || options.xmax) && (!options.xmin || isDate(options.xmin)) && (!options.xmax || isDate(options.xmax))) {\n return \"datetime\";\n } else {\n return \"number\";\n }\n } else if (detectXTypeWithFunction(series, isNumber)) {\n return \"number\";\n } else if (!noDatetime && detectXTypeWithFunction(series, isDate)) {\n return \"datetime\";\n } else {\n return \"string\";\n }\n }\n\n function detectXTypeWithFunction(series, func) {\n var i, j, data;\n for (i = 0; i < series.length; i++) {\n data = toArr(series[i].data);\n for (j = 0; j < data.length; j++) {\n if (!func(data[j][0])) {\n return false;\n }\n }\n }\n return true;\n }\n\n // creates a shallow copy of each element of the array\n // elements are expected to be objects\n function copySeries(series) {\n var newSeries = [], i, j;\n for (i = 0; i < series.length; i++) {\n var copy = {};\n for (j in series[i]) {\n if (series[i].hasOwnProperty(j)) {\n copy[j] = series[i][j];\n }\n }\n newSeries.push(copy);\n }\n return newSeries;\n }\n\n function processSeries(chart, keyType, noDatetime) {\n var i;\n\n var opts = chart.options;\n var series = chart.rawData;\n\n // see if one series or multiple\n chart.singleSeriesFormat = (!isArray(series) || typeof series[0] !== \"object\" || isArray(series[0]));\n if (chart.singleSeriesFormat) {\n series = [{name: opts.label, data: series}];\n }\n\n // convert to array\n // must come before dataEmpty check\n series = copySeries(series);\n for (i = 0; i < series.length; i++) {\n series[i].data = toArr(series[i].data);\n }\n\n chart.xtype = keyType ? keyType : (opts.discrete ? \"string\" : detectXType(series, noDatetime, opts));\n\n // right format\n for (i = 0; i < series.length; i++) {\n series[i].data = formatSeriesData(series[i].data, chart.xtype);\n }\n\n return series;\n }\n\n function processSimple(chart) {\n var perfectData = toArr(chart.rawData), i;\n for (i = 0; i < perfectData.length; i++) {\n perfectData[i] = [toStr(perfectData[i][0]), toFloat(perfectData[i][1])];\n }\n return perfectData;\n }\n\n function dataEmpty(data, chartType) {\n if (chartType === \"PieChart\" || chartType === \"GeoChart\" || chartType === \"Timeline\") {\n return data.length === 0;\n } else {\n for (var i = 0; i < data.length; i++) {\n if (data[i].data.length > 0) {\n return false;\n }\n }\n return true;\n }\n }\n\n function addDownloadButton(chart) {\n var element = chart.element;\n var link = document.createElement(\"a\");\n\n var download = chart.options.download;\n if (download === true) {\n download = {};\n } else if (typeof download === \"string\") {\n download = {filename: download};\n }\n link.download = download.filename || \"chart.png\"; // https://caniuse.com/download\n\n link.style.position = \"absolute\";\n link.style.top = \"20px\";\n link.style.right = \"20px\";\n link.style.zIndex = 1000;\n link.style.lineHeight = \"20px\";\n link.target = \"_blank\"; // for safari\n var image = document.createElement(\"img\");\n image.alt = \"Download\";\n image.style.border = \"none\";\n // icon from font-awesome\n // http://fa2png.io/\n image.src = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAABCFBMVEUAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMywEsqxAAAAV3RSTlMAAQIDBggJCgsMDQ4PERQaHB0eISIjJCouLzE0OTo/QUJHSUpLTU5PUllhYmltcHh5foWLjI+SlaCio6atr7S1t7m6vsHHyM7R2tze5Obo7fHz9ff5+/1hlxK2AAAA30lEQVQYGUXBhVYCQQBA0TdYWAt2d3d3YWAHyur7/z9xgD16Lw0DW+XKx+1GgX+FRzM3HWQWrHl5N/oapW5RPe0PkBu+UYeICvozTWZVK23Ao04B79oJrOsJDOoxkZoQPWgX29pHpCZEk7rEvQYiNSFq1UMqvlCjJkRBS1R8hb00Vb/TajtBL7nTHE1X1vyMQF732dQhyF2o6SAwrzP06iUQzvwsArlnzcOdrgBhJyHa1QOgO9U1GsKuvjUTjavliZYQ8nNPapG6sap/3nrIdJ6bOWzmX/fy0XVpfzZP3S8OJT3g9EEiJwAAAABJRU5ErkJggg==\";\n link.appendChild(image);\n element.style.position = \"relative\";\n\n chart.__downloadAttached = true;\n\n // mouseenter\n chart.__enterEvent = addEvent(element, \"mouseover\", function(e) {\n var related = e.relatedTarget;\n // check download option again to ensure it wasn't changed\n if ((!related || (related !== this && !childOf(this, related))) && chart.options.download) {\n link.href = chart.toImage(download);\n element.appendChild(link);\n }\n });\n\n // mouseleave\n chart.__leaveEvent = addEvent(element, \"mouseout\", function(e) {\n var related = e.relatedTarget;\n if (!related || (related !== this && !childOf(this, related))) {\n if (link.parentNode) {\n link.parentNode.removeChild(link);\n }\n }\n });\n }\n\n // https://stackoverflow.com/questions/10149963/adding-event-listener-cross-browser\n function addEvent(elem, event, fn) {\n if (elem.addEventListener) {\n elem.addEventListener(event, fn, false);\n return fn;\n } else {\n var fn2 = function() {\n // set the this pointer same as addEventListener when fn is called\n return(fn.call(elem, window.event));\n };\n elem.attachEvent(\"on\" + event, fn2);\n return fn2;\n }\n }\n\n function removeEvent(elem, event, fn) {\n if (elem.removeEventListener) {\n elem.removeEventListener(event, fn, false);\n } else {\n elem.detachEvent(\"on\" + event, fn);\n }\n }\n\n // https://gist.github.com/shawnbot/4166283\n function childOf(p, c) {\n if (p === c) { return false; }\n while (c && c !== p) { c = c.parentNode; }\n return c === p;\n }\n\n var pendingRequests = [], runningRequests = 0, maxRequests = 4;\n\n function pushRequest(url, success, error) {\n pendingRequests.push([url, success, error]);\n runNext();\n }\n\n function runNext() {\n if (runningRequests < maxRequests) {\n var request = pendingRequests.shift();\n if (request) {\n runningRequests++;\n getJSON(request[0], request[1], request[2]);\n runNext();\n }\n }\n }\n\n function requestComplete() {\n runningRequests--;\n runNext();\n }\n\n function getJSON(url, success, error) {\n ajaxCall(url, success, function (jqXHR, textStatus, errorThrown) {\n var message = (typeof errorThrown === \"string\") ? errorThrown : errorThrown.message;\n error(message);\n });\n }\n\n function ajaxCall(url, success, error) {\n var $ = window.jQuery || window.Zepto || window.$;\n\n if ($ && $.ajax) {\n $.ajax({\n dataType: \"json\",\n url: url,\n success: success,\n error: error,\n complete: requestComplete\n });\n } else {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n xhr.onload = function () {\n requestComplete();\n if (xhr.status === 200) {\n success(JSON.parse(xhr.responseText), xhr.statusText, xhr);\n } else {\n error(xhr, \"error\", xhr.statusText);\n }\n };\n xhr.send();\n }\n }\n\n var config = {};\n var adapters = [];\n\n // helpers\n\n function setText(element, text) {\n if (document.body.innerText) {\n element.innerText = text;\n } else {\n element.textContent = text;\n }\n }\n\n // TODO remove prefix for all messages\n function chartError(element, message, noPrefix) {\n if (!noPrefix) {\n message = \"Error Loading Chart: \" + message;\n }\n setText(element, message);\n element.style.color = \"#ff0000\";\n }\n\n function errorCatcher(chart) {\n try {\n chart.__render();\n } catch (err) {\n chartError(chart.element, err.message);\n throw err;\n }\n }\n\n function fetchDataSource(chart, dataSource, showLoading) {\n // only show loading message for urls and callbacks\n if (showLoading && chart.options.loading && (typeof dataSource === \"string\" || typeof dataSource === \"function\")) {\n setText(chart.element, chart.options.loading);\n }\n\n if (typeof dataSource === \"string\") {\n pushRequest(dataSource, function (data) {\n chart.rawData = data;\n errorCatcher(chart);\n }, function (message) {\n chartError(chart.element, message);\n });\n } else if (typeof dataSource === \"function\") {\n try {\n dataSource(function (data) {\n chart.rawData = data;\n errorCatcher(chart);\n }, function (message) {\n chartError(chart.element, message, true);\n });\n } catch (err) {\n chartError(chart.element, err, true);\n }\n } else {\n chart.rawData = dataSource;\n errorCatcher(chart);\n }\n }\n\n function getAdapterType(library) {\n if (library) {\n if (library.product === \"Highcharts\") {\n return defaultExport$1;\n } else if (library.charts) {\n return defaultExport;\n } else if (isFunction(library)) {\n return defaultExport$2;\n }\n }\n throw new Error(\"Unknown adapter\");\n }\n\n function addAdapter(library) {\n var adapterType = getAdapterType(library);\n var adapter = new adapterType(library);\n\n if (adapters.indexOf(adapter) === -1) {\n adapters.push(adapter);\n }\n }\n\n function loadAdapters() {\n if (\"Chart\" in window) {\n addAdapter(window.Chart);\n }\n\n if (\"Highcharts\" in window) {\n addAdapter(window.Highcharts);\n }\n\n if (window.google && window.google.charts) {\n addAdapter(window.google);\n }\n }\n\n function renderChart(chartType, chart) {\n if (dataEmpty(chart.data, chartType)) {\n var message = chart.options.empty || (chart.options.messages && chart.options.messages.empty) || \"No data\";\n setText(chart.element, message);\n } else {\n callAdapter(chartType, chart);\n if (chart.options.download && !chart.__downloadAttached && chart.adapter === \"chartjs\") {\n addDownloadButton(chart);\n }\n }\n }\n\n // TODO remove chartType if cross-browser way\n // to get the name of the chart class\n function callAdapter(chartType, chart) {\n var i, adapter, fnName, adapterName;\n fnName = \"render\" + chartType;\n adapterName = chart.options.adapter;\n\n loadAdapters();\n\n for (i = 0; i < adapters.length; i++) {\n adapter = adapters[i];\n if ((!adapterName || adapterName === adapter.name) && isFunction(adapter[fnName])) {\n chart.adapter = adapter.name;\n chart.__adapterObject = adapter;\n return adapter[fnName](chart);\n }\n }\n\n if (adapters.length > 0) {\n throw new Error(\"No charting library found for \" + chartType);\n } else {\n throw new Error(\"No charting libraries found - be sure to include one before your charts\");\n }\n }\n\n // define classes\n\n var Chart = function Chart(element, dataSource, options) {\n var elementId;\n if (typeof element === \"string\") {\n elementId = element;\n element = document.getElementById(element);\n if (!element) {\n throw new Error(\"No element with id \" + elementId);\n }\n }\n this.element = element;\n this.options = merge(Chartkick.options, options || {});\n this.dataSource = dataSource;\n\n Chartkick.charts[element.id] = this;\n\n fetchDataSource(this, dataSource, true);\n\n if (this.options.refresh) {\n this.startRefresh();\n }\n };\n\n Chart.prototype.getElement = function getElement () {\n return this.element;\n };\n\n Chart.prototype.getDataSource = function getDataSource () {\n return this.dataSource;\n };\n\n Chart.prototype.getData = function getData () {\n return this.data;\n };\n\n Chart.prototype.getOptions = function getOptions () {\n return this.options;\n };\n\n Chart.prototype.getChartObject = function getChartObject () {\n return this.chart;\n };\n\n Chart.prototype.getAdapter = function getAdapter () {\n return this.adapter;\n };\n\n Chart.prototype.updateData = function updateData (dataSource, options) {\n this.dataSource = dataSource;\n if (options) {\n this.__updateOptions(options);\n }\n fetchDataSource(this, dataSource, true);\n };\n\n Chart.prototype.setOptions = function setOptions (options) {\n this.__updateOptions(options);\n this.redraw();\n };\n\n Chart.prototype.redraw = function redraw () {\n fetchDataSource(this, this.rawData);\n };\n\n Chart.prototype.refreshData = function refreshData () {\n if (typeof this.dataSource === \"string\") {\n // prevent browser from caching\n var sep = this.dataSource.indexOf(\"?\") === -1 ? \"?\" : \"&\";\n var url = this.dataSource + sep + \"_=\" + (new Date()).getTime();\n fetchDataSource(this, url);\n } else if (typeof this.dataSource === \"function\") {\n fetchDataSource(this, this.dataSource);\n }\n };\n\n Chart.prototype.startRefresh = function startRefresh () {\n var this$1$1 = this;\n\n var refresh = this.options.refresh;\n\n if (refresh && typeof this.dataSource !== \"string\" && typeof this.dataSource !== \"function\") {\n throw new Error(\"Data source must be a URL or callback for refresh\");\n }\n\n if (!this.intervalId) {\n if (refresh) {\n this.intervalId = setInterval( function () {\n this$1$1.refreshData();\n }, refresh * 1000);\n } else {\n throw new Error(\"No refresh interval\");\n }\n }\n };\n\n Chart.prototype.stopRefresh = function stopRefresh () {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n };\n\n Chart.prototype.toImage = function toImage (download) {\n if (this.adapter === \"chartjs\") {\n if (download && download.background && download.background !== \"transparent\") {\n // https://stackoverflow.com/questions/30464750/chartjs-line-chart-set-background-color\n var canvas = this.chart.canvas;\n var ctx = this.chart.ctx;\n var tmpCanvas = document.createElement(\"canvas\");\n var tmpCtx = tmpCanvas.getContext(\"2d\");\n tmpCanvas.width = ctx.canvas.width;\n tmpCanvas.height = ctx.canvas.height;\n tmpCtx.fillStyle = download.background;\n tmpCtx.fillRect(0, 0, tmpCanvas.width, tmpCanvas.height);\n tmpCtx.drawImage(canvas, 0, 0);\n return tmpCanvas.toDataURL(\"image/png\");\n } else {\n return this.chart.toBase64Image();\n }\n } else {\n throw new Error(\"Feature only available for Chart.js\");\n }\n };\n\n Chart.prototype.destroy = function destroy () {\n this.destroyed = true;\n this.stopRefresh();\n\n if (this.__adapterObject) {\n this.__adapterObject.destroy(this);\n }\n\n if (this.__enterEvent) {\n removeEvent(this.element, \"mouseover\", this.__enterEvent);\n }\n\n if (this.__leaveEvent) {\n removeEvent(this.element, \"mouseout\", this.__leaveEvent);\n }\n };\n\n Chart.prototype.__updateOptions = function __updateOptions (options) {\n var updateRefresh = options.refresh && options.refresh !== this.options.refresh;\n this.options = merge(Chartkick.options, options);\n if (updateRefresh) {\n this.stopRefresh();\n this.startRefresh();\n }\n };\n\n Chart.prototype.__render = function __render () {\n this.data = this.__processData();\n renderChart(this.__chartName(), this);\n };\n\n Chart.prototype.__config = function __config () {\n return config;\n };\n\n var LineChart = /*@__PURE__*/(function (Chart) {\n function LineChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) LineChart.__proto__ = Chart;\n LineChart.prototype = Object.create( Chart && Chart.prototype );\n LineChart.prototype.constructor = LineChart;\n\n LineChart.prototype.__processData = function __processData () {\n return processSeries(this);\n };\n\n LineChart.prototype.__chartName = function __chartName () {\n return \"LineChart\";\n };\n\n return LineChart;\n }(Chart));\n\n var PieChart = /*@__PURE__*/(function (Chart) {\n function PieChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) PieChart.__proto__ = Chart;\n PieChart.prototype = Object.create( Chart && Chart.prototype );\n PieChart.prototype.constructor = PieChart;\n\n PieChart.prototype.__processData = function __processData () {\n return processSimple(this);\n };\n\n PieChart.prototype.__chartName = function __chartName () {\n return \"PieChart\";\n };\n\n return PieChart;\n }(Chart));\n\n var ColumnChart = /*@__PURE__*/(function (Chart) {\n function ColumnChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) ColumnChart.__proto__ = Chart;\n ColumnChart.prototype = Object.create( Chart && Chart.prototype );\n ColumnChart.prototype.constructor = ColumnChart;\n\n ColumnChart.prototype.__processData = function __processData () {\n return processSeries(this, null, true);\n };\n\n ColumnChart.prototype.__chartName = function __chartName () {\n return \"ColumnChart\";\n };\n\n return ColumnChart;\n }(Chart));\n\n var BarChart = /*@__PURE__*/(function (Chart) {\n function BarChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) BarChart.__proto__ = Chart;\n BarChart.prototype = Object.create( Chart && Chart.prototype );\n BarChart.prototype.constructor = BarChart;\n\n BarChart.prototype.__processData = function __processData () {\n return processSeries(this, null, true);\n };\n\n BarChart.prototype.__chartName = function __chartName () {\n return \"BarChart\";\n };\n\n return BarChart;\n }(Chart));\n\n var AreaChart = /*@__PURE__*/(function (Chart) {\n function AreaChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) AreaChart.__proto__ = Chart;\n AreaChart.prototype = Object.create( Chart && Chart.prototype );\n AreaChart.prototype.constructor = AreaChart;\n\n AreaChart.prototype.__processData = function __processData () {\n return processSeries(this);\n };\n\n AreaChart.prototype.__chartName = function __chartName () {\n return \"AreaChart\";\n };\n\n return AreaChart;\n }(Chart));\n\n var GeoChart = /*@__PURE__*/(function (Chart) {\n function GeoChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) GeoChart.__proto__ = Chart;\n GeoChart.prototype = Object.create( Chart && Chart.prototype );\n GeoChart.prototype.constructor = GeoChart;\n\n GeoChart.prototype.__processData = function __processData () {\n return processSimple(this);\n };\n\n GeoChart.prototype.__chartName = function __chartName () {\n return \"GeoChart\";\n };\n\n return GeoChart;\n }(Chart));\n\n var ScatterChart = /*@__PURE__*/(function (Chart) {\n function ScatterChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) ScatterChart.__proto__ = Chart;\n ScatterChart.prototype = Object.create( Chart && Chart.prototype );\n ScatterChart.prototype.constructor = ScatterChart;\n\n ScatterChart.prototype.__processData = function __processData () {\n return processSeries(this, \"number\");\n };\n\n ScatterChart.prototype.__chartName = function __chartName () {\n return \"ScatterChart\";\n };\n\n return ScatterChart;\n }(Chart));\n\n var BubbleChart = /*@__PURE__*/(function (Chart) {\n function BubbleChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) BubbleChart.__proto__ = Chart;\n BubbleChart.prototype = Object.create( Chart && Chart.prototype );\n BubbleChart.prototype.constructor = BubbleChart;\n\n BubbleChart.prototype.__processData = function __processData () {\n return processSeries(this, \"bubble\");\n };\n\n BubbleChart.prototype.__chartName = function __chartName () {\n return \"BubbleChart\";\n };\n\n return BubbleChart;\n }(Chart));\n\n var Timeline = /*@__PURE__*/(function (Chart) {\n function Timeline () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) Timeline.__proto__ = Chart;\n Timeline.prototype = Object.create( Chart && Chart.prototype );\n Timeline.prototype.constructor = Timeline;\n\n Timeline.prototype.__processData = function __processData () {\n var i, data = this.rawData;\n for (i = 0; i < data.length; i++) {\n data[i][1] = toDate(data[i][1]);\n data[i][2] = toDate(data[i][2]);\n }\n return data;\n };\n\n Timeline.prototype.__chartName = function __chartName () {\n return \"Timeline\";\n };\n\n return Timeline;\n }(Chart));\n\n var Chartkick = {\n LineChart: LineChart,\n PieChart: PieChart,\n ColumnChart: ColumnChart,\n BarChart: BarChart,\n AreaChart: AreaChart,\n GeoChart: GeoChart,\n ScatterChart: ScatterChart,\n BubbleChart: BubbleChart,\n Timeline: Timeline,\n charts: {},\n configure: function (options) {\n for (var key in options) {\n if (options.hasOwnProperty(key)) {\n config[key] = options[key];\n }\n }\n },\n setDefaultOptions: function (opts) {\n Chartkick.options = opts;\n },\n eachChart: function (callback) {\n for (var chartId in Chartkick.charts) {\n if (Chartkick.charts.hasOwnProperty(chartId)) {\n callback(Chartkick.charts[chartId]);\n }\n }\n },\n destroyAll: function() {\n for (var chartId in Chartkick.charts) {\n if (Chartkick.charts.hasOwnProperty(chartId)) {\n Chartkick.charts[chartId].destroy();\n delete Chartkick.charts[chartId];\n }\n }\n },\n config: config,\n options: {},\n adapters: adapters,\n addAdapter: addAdapter,\n use: function(adapter) {\n addAdapter(adapter);\n return Chartkick;\n }\n };\n\n // not ideal, but allows for simpler integration\n if (typeof window !== \"undefined\" && !window.Chartkick) {\n window.Chartkick = Chartkick;\n\n // clean up previous charts before Turbolinks loads new page\n document.addEventListener(\"turbolinks:before-render\", function() {\n if (config.autoDestroy !== false) {\n Chartkick.destroyAll();\n }\n });\n document.addEventListener(\"turbo:before-render\", function() {\n if (config.autoDestroy !== false) {\n Chartkick.destroyAll();\n }\n });\n\n // use setTimeout so charting library can come later in same JS file\n setTimeout(function() {\n window.dispatchEvent(new Event(\"chartkick:load\"));\n }, 0);\n }\n\n // backwards compatibility for esm require\n Chartkick.default = Chartkick;\n\n return Chartkick;\n\n}));\n","/*!\n * React Chartkick\n * Create beautiful JavaScript charts with one line of React\n * https://github.com/ankane/react-chartkick\n * v0.5.3\n * MIT License\n */\n\nimport React from 'react';\nimport Chartkick from 'chartkick';\nexport { default } from 'chartkick';\n\nfunction objectWithoutProperties (obj, exclude) { var target = {}; for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k]; return target; }\n\nvar chartId = 1;\n\nvar ChartComponent = /*@__PURE__*/(function (superclass) {\n function ChartComponent () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) ChartComponent.__proto__ = superclass;\n ChartComponent.prototype = Object.create( superclass && superclass.prototype );\n ChartComponent.prototype.constructor = ChartComponent;\n\n ChartComponent.prototype.newChartType = function newChartType (props) {\n var data = props.data;\n var options = {};\n for (var prop in props) {\n if (props.hasOwnProperty(prop) && prop !== \"data\" && prop !== \"id\" && prop !== \"height\" && prop !== \"width\") {\n options[prop] = props[prop];\n }\n }\n if (this.element) {\n if (this.chart) {\n this.chart.updateData(data, options);\n } else {\n this.chart = new props.chartType(this.element, data, options);\n }\n }\n };\n\n ChartComponent.prototype.componentDidMount = function componentDidMount () {\n this.newChartType(this.props);\n };\n\n ChartComponent.prototype.componentDidUpdate = function componentDidUpdate () {\n this.newChartType(this.props);\n };\n\n ChartComponent.prototype.componentWillUnmount = function componentWillUnmount () {\n if (this.chart) {\n this.chart.destroy();\n this.chart = undefined;\n }\n };\n\n ChartComponent.prototype.render = function render () {\n var this$1$1 = this;\n\n var props = this.props;\n var style = {\n height: props.height || \"300px\",\n lineHeight: props.height || \"300px\",\n width: props.width || \"100%\",\n textAlign: \"center\",\n color: \"#999\",\n fontSize: \"14px\",\n fontFamily: \"'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif\"\n };\n this.chartId = props.id || this.chartId || (\"chart-\" + chartId++);\n\n // check if undefined so works with empty string\n var loading = props.loading !== undefined ? props.loading : \"Loading...\";\n\n // createElement accepts React children,\n // but limit to string since it may be used by Chartkick.js\n if (typeof loading !== \"string\") {\n throw new Error(\"loading must be a string\");\n }\n\n return (\n React.createElement(\"div\", {id: this.chartId, style: style, ref: function (element) { return this$1$1.element = element; }},\n loading\n )\n )\n };\n\n return ChartComponent;\n}(React.Component));\n\nvar createComponent = function (chartType) {\n var ChartkickComponent = function (ref) {\n var innerRef = ref.innerRef;\n var rest = objectWithoutProperties( ref, [\"innerRef\"] );\n var props = rest;\n\n // props cloned when split from innerRef, so we can modify directly\n props.chartType = chartType;\n props.ref = innerRef;\n return React.createElement(ChartComponent, props)\n };\n ChartkickComponent.displayName = chartType.name;\n return ChartkickComponent\n};\n\nvar LineChart = createComponent(Chartkick.LineChart);\nvar PieChart = createComponent(Chartkick.PieChart);\nvar ColumnChart = createComponent(Chartkick.ColumnChart);\nvar BarChart = createComponent(Chartkick.BarChart);\nvar AreaChart = createComponent(Chartkick.AreaChart);\nvar ScatterChart = createComponent(Chartkick.ScatterChart);\nvar GeoChart = createComponent(Chartkick.GeoChart);\nvar Timeline = createComponent(Chartkick.Timeline);\n\nexport { AreaChart, BarChart, ColumnChart, GeoChart, LineChart, PieChart, ScatterChart, Timeline };\n","import {Chart, registerables} from '../dist/chart.js';\n\nChart.register(...registerables);\n\nexport * from '../dist/chart.js';\nexport default Chart;\n","/*!\n * @kurkle/color v0.3.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\n\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\n","/*!\n * Chart.js v4.1.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { Color } from '@kurkle/color';\n\n/**\n * @namespace Chart.helpers\n */ /**\n * An empty function that can be used, for example, for optional callback.\n */ function noop() {\n/* noop */ }\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */ const uid = (()=>{\n let id = 0;\n return ()=>id++;\n})();\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */ function isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */ function isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */ function isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value - The value to test.\n */ function isNumberFinite(value) {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */ function finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */ function valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension)=>typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 : +value / dimension;\nconst toDimension = (value, dimension)=>typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 * dimension : +value;\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */ function callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for(i = len - 1; i >= 0; i--){\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for(i = 0; i < len; i++){\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for(i = 0; i < len; i++){\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */ function _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for(i = 0, ilen = a0.length; i < ilen; ++i){\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */ function clone(source) {\n if (isArray(source)) {\n return source.map(clone);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for(; k < klen; ++k){\n target[keys[k]] = clone(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return [\n '__proto__',\n 'prototype',\n 'constructor'\n ].indexOf(key) === -1;\n}\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */ function _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n merge(tval, sval, options);\n } else {\n target[key] = clone(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [\n source\n ];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n let current;\n for(let i = 0; i < ilen; ++i){\n current = sources[i];\n if (!isObject(current)) {\n continue;\n }\n const keys = Object.keys(current);\n for(let k = 0, klen = keys.length; k < klen; ++k){\n merger(keys[k], target, current, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return merge(target, source, {\n merger: _mergerIf\n });\n}\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */ function _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone(sval);\n }\n}\n/**\n * @private\n */ function _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n '': (v)=>v,\n // default resolvers\n x: (o)=>o.x,\n y: (o)=>o.y\n};\n/**\n * @private\n */ function _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts){\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return (obj)=>{\n for (const k of keys){\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\n/**\n * @private\n */ function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value)=>typeof value !== 'undefined';\nconst isFunction = (value)=>typeof value === 'function';\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nconst setsEqual = (a, b)=>{\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a){\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\n/**\n * @param e - The event\n * @private\n */ function _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */ const PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */ function niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */ function _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for(i = 1; i < sqrt; i++){\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b)=>a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return rounded - epsilon <= x && rounded + epsilon >= x;\n}\n/**\n * @private\n */ function _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for(i = 0, ilen = array.length; i < ilen; i++){\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */ function _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while(Math.round(x * e) / e !== x){\n e *= 10;\n p++;\n }\n return p;\n}\n// Gets the angle from vertical upright to the point about a centre.\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < -0.5 * PI) {\n angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */ function _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */ function _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\n/**\n * @private\n */ function _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || sameAngleIsFullCircle && s === e || angleToStart > angleToEnd && startToAngle < endToAngle;\n}\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */ function _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n/**\n * @param {number} value\n * @private\n */ function _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */ function _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index)=>table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while(hi - lo > 1){\n mid = lo + hi >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {\n lo,\n hi\n };\n}\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */ const _lookupByKey = (table, key, value, last)=>_lookup(table, value, last ? (index)=>{\n const ti = table[index][key];\n return ti < value || ti === value && table[index + 1][key] === value;\n } : (index)=>table[index][key] < value);\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */ const _rlookupByKey = (table, key, value)=>_lookup(table, value, (index)=>table[index][key] >= value);\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */ function _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while(start < end && values[start] < min){\n start++;\n }\n while(end > start && values[end - 1] > max){\n end--;\n }\n return start > 0 || end < values.length ? values.slice(start, end) : values;\n}\nconst arrayEvents = [\n 'push',\n 'pop',\n 'shift',\n 'splice',\n 'unshift'\n];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [\n listener\n ]\n }\n });\n arrayEvents.forEach((key)=>{\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value (...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object)=>{\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key)=>{\n delete array[key];\n });\n delete array._chartjs;\n}\n/**\n * @param items\n */ function _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for(i = 0, ilen = items.length; i < ilen; ++i){\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n/**\n* Request animation polyfill\n*/ const requestAnimFrame = function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}();\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */ function throttled(fn, thisArg) {\n let argsToUse = [];\n let ticking = false;\n return function(...args) {\n // Save the args for use later\n argsToUse = args;\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, ()=>{\n ticking = false;\n fn.apply(thisArg, argsToUse);\n });\n }\n };\n}\n/**\n * Debounces calling `fn` for `delay` ms\n */ function debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */ const _toLeftRightCenter = (align)=>align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */ const _alignStartEnd = (align, start, end)=>align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */ const _textX = (align, left, right, rtl)=>{\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n/**\n * Return start and count of visible points.\n * @private\n */ function _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const { iScale , _parsed } = meta;\n const axis = iScale.axis;\n const { min , max , minDefined , maxDefined } = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(// @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, min).lo, // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo), 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(// @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1, // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1), start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {\n start,\n count\n };\n}\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */ function _scaleRangesChanged(meta) {\n const { xScale , yScale , _scaleRanges } = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min || _scaleRanges.xmax !== xScale.max || _scaleRanges.ymin !== yScale.min || _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nconst atEdge = (t)=>t === 0 || t === 1;\nconst elasticIn = (t, s, p)=>-(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p)=>Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */ const effects = {\n linear: (t)=>t,\n easeInQuad: (t)=>t * t,\n easeOutQuad: (t)=>-t * (t - 2),\n easeInOutQuad: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t : -0.5 * (--t * (t - 2) - 1),\n easeInCubic: (t)=>t * t * t,\n easeOutCubic: (t)=>(t -= 1) * t * t + 1,\n easeInOutCubic: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: (t)=>t * t * t * t,\n easeOutQuart: (t)=>-((t -= 1) * t * t * t - 1),\n easeInOutQuart: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: (t)=>t * t * t * t * t,\n easeOutQuint: (t)=>(t -= 1) * t * t * t * t + 1,\n easeInOutQuint: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t * t * t : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: (t)=>-Math.cos(t * HALF_PI) + 1,\n easeOutSine: (t)=>Math.sin(t * HALF_PI),\n easeInOutSine: (t)=>-0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: (t)=>t === 0 ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: (t)=>t === 1 ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: (t)=>atEdge(t) ? t : t < 0.5 ? 0.5 * Math.pow(2, 10 * (t * 2 - 1)) : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: (t)=>t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: (t)=>Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: (t)=>(t /= 0.5) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: (t)=>atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: (t)=>atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic (t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t : t < 0.5 ? 0.5 * elasticIn(t * 2, s, p) : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack (t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack (t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack (t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2);\n },\n easeInBounce: (t)=>1 - effects.easeOutBounce(1 - t),\n easeOutBounce (t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < 1 / d) {\n return m * t * t;\n }\n if (t < 2 / d) {\n return m * (t -= 1.5 / d) * t + 0.75;\n }\n if (t < 2.5 / d) {\n return m * (t -= 2.25 / d) * t + 0.9375;\n }\n return m * (t -= 2.625 / d) * t + 0.984375;\n },\n easeInOutBounce: (t)=>t < 0.5 ? effects.easeInBounce(t * 2) * 0.5 : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5\n};\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : new Color(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value) ? value : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst numbers = [\n 'x',\n 'y',\n 'borderWidth',\n 'radius',\n 'tension'\n];\nconst colors = [\n 'color',\n 'borderColor',\n 'backgroundColor'\n];\nfunction applyAnimationsDefaults(defaults) {\n defaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined\n });\n defaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name)=>name !== 'onProgress' && name !== 'onComplete' && name !== 'fn'\n });\n defaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n }\n });\n defaults.describe('animations', {\n _fallback: 'animation'\n });\n defaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n }\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: (v)=>v | 0\n }\n }\n }\n });\n}\n\nfunction applyLayoutsDefaults(defaults) {\n defaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n });\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst formatters = {\n values (value) {\n return isArray(value) ? value : '' + value;\n },\n numeric (tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {\n notation,\n minimumFractionDigits: numDecimal,\n maximumFractionDigits: numDecimal\n };\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic (tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = ticks[index].significand || tickValue / Math.pow(10, Math.floor(log10(tickValue)));\n if ([\n 1,\n 2,\n 3,\n 5,\n 10,\n 15\n ].includes(remain) || index > 0.8 * ticks.length) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\n var Ticks = {\n formatters\n};\n\nfunction applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options)=>options.lineWidth,\n tickColor: (_ctx, options)=>options.color,\n offset: false\n },\n border: {\n display: true,\n dash: [],\n dashOffset: 0.0,\n width: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2\n }\n });\n defaults.route('scale.ticks', 'color', '', 'color');\n defaults.route('scale.grid', 'color', '', 'borderColor');\n defaults.route('scale.border', 'color', '', 'borderColor');\n defaults.route('scale.title', 'color', '', 'color');\n defaults.describe('scale', {\n _fallback: false,\n _scriptable: (name)=>!name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name)=>name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash'\n });\n defaults.describe('scales', {\n _fallback: 'scale'\n });\n defaults.describe('scale.ticks', {\n _scriptable: (name)=>name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name)=>name !== 'backdropPadding'\n });\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\n function getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for(let i = 0, n = keys.length; i < n; ++i){\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\n class Defaults {\n constructor(_descriptors, _appliers){\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context)=>context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options)=>getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options)=>getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options)=>getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n this.apply(_appliers);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get () {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set (value) {\n this[privateName] = value;\n }\n }\n });\n }\n apply(appliers) {\n appliers.forEach((apply)=>apply(this));\n }\n}\nvar defaults = /* #__PURE__ */ new Defaults({\n _scriptable: (name)=>!name.startsWith('on'),\n _indexable: (name)=>name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false\n }\n}, [\n applyAnimationsDefaults,\n applyLayoutsDefaults,\n applyScaleDefaults\n]);\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family;\n}\n function _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\n function _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for(i = 0; i < ilen; i++){\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for(j = 0, jlen = thing.length; j < jlen; j++){\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for(i = 0; i < gcLen; i++){\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\n function _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n function clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width, xOffsetW, yOffsetW;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch(style){\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n case false:\n ctx.closePath();\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n function _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || point && point.x > area.left - margin && point.x < area.right + margin && point.y > area.top - margin && point.y < area.bottom + margin;\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\n function _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\n function _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(flip ? previous.cp1x : previous.cp2x, flip ? previous.cp1y : previous.cp2y, flip ? target.cp2x : target.cp1x, flip ? target.cp2y : target.cp1y, target.x, target.y);\n}\n function renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [\n text\n ];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for(i = 0; i < lines.length; ++i){\n line = lines[i];\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction drawBackdrop(ctx, opts) {\n const oldColor = ctx.fillStyle;\n ctx.fillStyle = opts.color;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n function addRoundedRectPath(ctx, rect) {\n const { x , y , w , h , radius } = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n/**\n * @alias Chart.helpers.options\n * @namespace\n */ /**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */ function toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch(matches[3]){\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = (v)=>+v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value) ? objProps ? (prop)=>valueOrDefault(value[prop], value[props[prop]]) : (prop)=>value[prop] : ()=>value;\n for (const prop of keys){\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */ function toTRBL(value) {\n return _readValueToProps(value, {\n top: 'y',\n right: 'x',\n bottom: 'y',\n left: 'x'\n });\n}\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */ function toTRBLCorners(value) {\n return _readValueToProps(value, [\n 'topLeft',\n 'topRight',\n 'bottomLeft',\n 'bottomRight'\n ]);\n}\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */ function toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */ function toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */ function resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for(i = 0, ilen = inputs.length; i < ilen; ++i){\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */ function _addGrace(minmax, grace, beginAtZero) {\n const { min , max } = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add)=>beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _createResolver(scopes, prefixes = [\n ''\n], rootScopes = scopes, fallback, getTarget = ()=>scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope)=>_createResolver([\n scope,\n ...scopes\n ], prefixes, rootScopes, fallback)\n };\n return new Proxy(cache, {\n deleteProperty (target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get (target, prop) {\n return _cached(target, prop, ()=>_resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor (target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf () {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has (target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys (target) {\n return getKeysFromAllScopes(target);\n },\n set (target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\n function _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx)=>_attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope)=>_attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty (target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get (target, prop, receiver) {\n return _cached(target, prop, ()=>_resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor (target, prop) {\n return target._descriptors.allKeys ? Reflect.has(proxy, prop) ? {\n enumerable: true,\n configurable: true\n } : undefined : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf () {\n return Reflect.getPrototypeOf(proxy);\n },\n has (target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys () {\n return Reflect.ownKeys(proxy);\n },\n set (target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\n function _descriptors(proxy, defaults = {\n scriptable: true,\n indexable: true\n}) {\n const { _scriptable =defaults.scriptable , _indexable =defaults.indexable , _allKeys =defaults.allKeys } = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : ()=>_scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : ()=>_indexable\n };\n}\nconst readKey = (prefix, name)=>prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value)=>isObject(value) && prop !== 'adapters' && (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const { _proxy , _context , _subProxy , _descriptors: descriptors } = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const { _proxy , _context , _subProxy , _stack } = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const { _proxy , _context , _subProxy , _descriptors: descriptors } = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter((s)=>s !== arr);\n value = [];\n for (const item of arr){\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent)=>key === true ? parent : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes){\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [\n ...parentScopes,\n ...rootScopes\n ];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [\n ''\n ], rootScopes, fallback, ()=>subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while(key){\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target || {};\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes){\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value) ? createSubResolver(scopes, proxy, prop, value) : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes){\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes){\n for (const key of Object.keys(scope).filter((k)=>!k.startsWith('_'))){\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const { iScale } = meta;\n const { key ='r' } = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i)=>i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis)=>indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n // This function must also respect \"skipped\" points\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01; // scaling factor for triangle Ta\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n/**\n * Adjust tangents to ensure monotonic properties\n */ function monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(let i = 0; i < pointsLen - 1; ++i){\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(let i = 0; i < pointsLen; ++i){\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */ function splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n // Calculate slopes (deltaK) and initialize tangents (mK)\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(i = 0; i < pointsLen; ++i){\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i] : !pointAfter ? deltaK[i - 1] : sign(deltaK[i - 1]) !== sign(deltaK[i]) ? 0 : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for(i = 0, ilen = points.length; i < ilen; ++i){\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n/**\n * @private\n */ function _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter((pt)=>!pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for(i = 0, ilen = points.length; i < ilen; ++i){\n point = points[i];\n controlPoints = splineCurve(prev, point, points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen], options.tension);\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\n/**\n * Note: typedefs are auto-exported, so use a made-up `dom` namespace where\n * necessary to avoid duplicates with `export * from './helpers`; see\n * https://github.com/microsoft/TypeScript/issues/46011\n * @typedef { import('../core/core.controller.js').default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */ /**\n * @private\n */ function _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * @private\n */ function _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */ function parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element)=>element.ownerDocument.defaultView.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = [\n 'top',\n 'right',\n 'bottom',\n 'left'\n];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for(let i = 0; i < 4; i++){\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target)=>(x > 0 || y > 0) && (!target || !target.shadowRoot);\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */ function getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const { offsetX , offsetY } = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {\n x,\n y,\n box\n };\n}\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */ function getRelativePosition(event, chart) {\n if ('native' in event) {\n return event;\n }\n const { canvas , currentDevicePixelRatio } = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const { x , y , box } = getCanvasPosition(event, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let { width , height } = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect(); // this is the border box of the container\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = (v)=>Math.round(v * 10) / 10;\n// eslint-disable-next-line complexity\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let { width , height } = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n return {\n width,\n height\n };\n}\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */ function retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = Math.floor(chart.height);\n chart.width = Math.floor(chart.width);\n const canvas = chart.canvas;\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (canvas.style && (forceStyle || !canvas.style.height && !canvas.style.width)) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio || canvas.height !== deviceHeight || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */ const supportsEventListenerOptions = function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive () {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n // continue regardless of error\n }\n return passiveSupported;\n}();\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */ function readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\n/**\n * @private\n */ function _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n/**\n * @private\n */ function _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y : mode === 'after' ? t < 1 ? p1.y : p2.y : t > 0 ? p2.y : p1.y\n };\n}\n/**\n * @private\n */ function _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {\n x: p1.cp2x,\n y: p1.cp2y\n };\n const cp2 = {\n x: p2.cp1x,\n y: p2.cp1y\n };\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x (x) {\n return rectX + rectX + width - x;\n },\n setWidth (w) {\n width = w;\n },\n textAlign (align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus (x, value) {\n return x - value;\n },\n leftForLtr (x, itemWidth) {\n return x - itemWidth;\n }\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x (x) {\n return x;\n },\n setWidth (w) {},\n textAlign (align) {\n return align;\n },\n xPlus (x, value) {\n return x + value;\n },\n leftForLtr (x, _itemWidth) {\n return x;\n }\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction')\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle\n };\n }\n return {\n between: _isBetween,\n compare: (a, b)=>a - b,\n normalize: (x)=>x\n };\n}\nfunction normalizeSegment({ start , end , count , loop , style }) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const { property , start: startBound , end: endBound } = bounds;\n const { between , normalize } = propertyFn(property);\n const count = points.length;\n let { start , end , loop } = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for(i = 0, ilen = count; i < ilen; ++i){\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {\n start,\n end,\n loop,\n style: segment.style\n };\n}\n function _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [\n segment\n ];\n }\n const { property , start: startBound , end: endBound } = bounds;\n const count = points.length;\n const { compare , between , normalize } = propertyFn(property);\n const { start , end , loop , style } = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = ()=>between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = ()=>compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = ()=>inside || startIsBefore();\n const shouldStop = ()=>!inside || endIsBefore();\n for(let i = start, prev = start; i <= end; ++i){\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({\n start: subStart,\n end: i,\n loop,\n count,\n style\n }));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({\n start: subStart,\n end,\n loop,\n count,\n style\n }));\n }\n return result;\n}\n function _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for(let i = 0; i < segments.length; i++){\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\n function findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while(start < count && !points[start].skip){\n start++;\n }\n }\n while(start < count && points[start].skip){\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while(end > start && points[end % count].skip){\n end--;\n }\n end %= count;\n return {\n start,\n end\n };\n}\n function solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for(end = start + 1; end <= max; ++end){\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({\n start: start % count,\n end: (end - 1) % count,\n loop\n });\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({\n start: start % count,\n end: last % count,\n loop\n });\n }\n return result;\n}\n function _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const { start , end } = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [\n {\n start,\n end,\n loop\n }\n ], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n function splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\n function doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const { _datasetIndex: datasetIndex , options: { spanGaps } } = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while(points[s % count].skip){\n s -= dir;\n }\n while(points[e % count].skip){\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({\n start: s % count,\n end: e % count,\n loop: l,\n style: st\n });\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments){\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for(i = start + 1; i <= segment.end; i++){\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { unclipArea as $, _rlookupByKey as A, _lookupByKey as B, _isPointInArea as C, getAngleFromPoint as D, toPadding as E, each as F, getMaximumSize as G, HALF_PI as H, _getParentNode as I, readUsedSize as J, supportsEventListenerOptions as K, throttled as L, _isDomSupported as M, _factorize as N, finiteOrDefault as O, PI as P, callback as Q, _addGrace as R, _limitValue as S, TAU as T, toDegrees as U, _measureText as V, _int16Range as W, _alignPixel as X, clipArea as Y, renderText as Z, _arrayUnique as _, resolve as a, fontString as a$, toFont as a0, _toLeftRightCenter as a1, _alignStartEnd as a2, overrides as a3, merge as a4, _capitalize as a5, descriptors as a6, isFunction as a7, _attachContext as a8, _createResolver as a9, overrideTextDirection as aA, _textX as aB, restoreTextDirection as aC, drawPointLegend as aD, distanceBetweenPoints as aE, noop as aF, _setMinAndMaxByKey as aG, niceNum as aH, almostWhole as aI, almostEquals as aJ, _decimalPlaces as aK, Ticks as aL, log10 as aM, _longestText as aN, _filterBetween as aO, _lookup as aP, isPatternOrGradient as aQ, getHoverColor as aR, clone as aS, _merger as aT, _mergerIf as aU, _deprecated as aV, _splitKey as aW, toFontString as aX, splineCurve as aY, splineCurveMonotone as aZ, getStyle as a_, _descriptors as aa, mergeIf as ab, uid as ac, debounce as ad, retinaScale as ae, clearCanvas as af, setsEqual as ag, _elementsEqual as ah, _isClickEvent as ai, _isBetween as aj, _readValueToProps as ak, _updateBezierControlPoints as al, _computeSegments as am, _boundSegments as an, _steppedInterpolation as ao, _bezierInterpolation as ap, _pointInLine as aq, _steppedLineTo as ar, _bezierCurveTo as as, drawPoint as at, addRoundedRectPath as au, toTRBL as av, toTRBLCorners as aw, _boundSegment as ax, _normalizeAngle as ay, getRtlAdapter as az, isArray as b, toLineHeight as b0, PITAU as b1, INFINITY as b2, RAD_PER_DEG as b3, QUARTER_PI as b4, TWO_THIRDS_PI as b5, _angleDiff as b6, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, defined as h, isObject as i, createContext as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, getRelativePosition as z };\n//# sourceMappingURL=helpers.segment.js.map\n"],"names":["asn_CheckCircleFilled","CheckCircleFilled_CheckCircleFilled","props","ref","react","createElement","AntdIcon","Z","objectSpread2","icon","displayName","icons_CheckCircleFilled","forwardRef","module","exports","factory","isArray","variable","Object","prototype","toString","call","isFunction","Function","isPlainObject","extend","target","source","key","undefined","merge","obj1","obj2","DATE_PATTERN","toStr","n","toFloat","parseFloat","toDate","matches","year","month","day","Date","match","parseInt","str","replace","parse","toArr","i","arr","hasOwnProperty","push","jsOptionsFunc","defaultOptions","hideLegend","setTitle","setMin","setMax","setStacked","setXtitle","setYtitle","chart","opts","chartOptions","series","data","options","singleSeriesFormat","legend","title","min","negativeValues","j","length","max","stacked","colors","xtitle","ytitle","library","sortByTime","a","b","getTime","sortByNumberSeries","sortByNumber","isMinute","d","getMilliseconds","getSeconds","isHour","getMinutes","isDay","getHours","isMonth","getDate","isDate","obj","isNaN","isNumber","byteSuffixes","formatValue","pre","value","axis","prefix","suffix","precision","round","byteScale","suffixIdx","baseValue","Error","toPrecision","zeros","num","Math","pow","toFixed","thousands","decimal","parts","split","seriesOption","option","baseOptions","maintainAspectRatio","animation","plugins","tooltip","displayColors","callbacks","font","size","color","interaction","defaultOptions$2","scales","y","ticks","maxTicksLimit","grid","x","drawOnChartArea","time","defaultColors","hideLegend$2","display","position","setTitle$2","text","setBarMin$1","setBarMax$1","setStacked$2","setXtitle$2","setYtitle$2","addOpacity","hex","opacity","result","exec","notnull","setLabelSize","maxLabelSize","ceil","element","offsetWidth","labels","callback","getLabelForValue","substring","setFormatOptions$1","chartType","formatOptions","bytes","s","scale","stepSize","label","context","dataset","formattedValue","dataPoint","raw","v","dataLabel","slice","parsed","valueLabel","jsOptions$2","createDataTable","datasets","week","hour","minute","i$1","s$1","j$1","dayOfWeek","rows","rows2","xtype","k","sortedLabels","indexOf","sort","getDay","getMonth","i$2","s$2","d$1","j$2","point","r","backgroundColor","j$3","name","fill","borderColor","borderWidth","pointChart","pointBackgroundColor","pointHoverBackgroundColor","pointHitRadius","pointHoverBorderWidth","stack","curve","tension","pointRadius","pointHoverRadius","xmin","xmax","step","minTime","maxTime","value$1","timeDiff","unit","displayFormats","width","unitStepSize","tooltipFormat","defaultExport$2","renderLineChart","allZeros","type","drawChart","renderPieChart","donut","cutout","values","renderColumnChart","barOptions","indexAxis","renderAreaChart","renderBarChart","renderScatterChart","showLine","mode","renderBubbleChart","destroy","destroyed","code","window","console","log","JSON","stringify","innerHTML","ctx","getElementsByTagName","defaultOptions$1","xAxis","style","fontSize","yAxis","credits","enabled","plotOptions","areaspline","area","marker","useUTC","hideLegend$1","verticalAlign","layout","align","setTitle$1","jsOptions$1","stackedValue","stacking","setFormatOptions","formatter","pointFormatter","pointFormat","defaultExport$1","symbol","points","pie","innerSize","categories","d2","newSeries","renderTo","id","Chart","loaded","chartArea","fontName","pointSize","textStyle","alignment","curveType","hAxis","titleTextStyle","gridlines","baselineColor","viewWindow","vAxis","setBarMin","setBarMax","isStacked","italic","jsOptions","resize","attachEvent","addEventListener","defaultExport","detectXTypeWithFunction","func","processSeries","keyType","noDatetime","rawData","copySeries","copy","discrete","formatSeriesData","keyFunc","processSimple","perfectData","dataEmpty","addEvent","elem","event","fn","fn2","removeEvent","removeEventListener","detachEvent","childOf","p","c","parentNode","this$1$1","waitForLoaded","top","height","pieHole","visualization","DataTable","addColumn","addRows","areaOpacity","renderGeoChart","colorAxis","row","renderTimeline","lineHeight","clearChart","toJSON","draw","pack","runCallbacks","loadOptions","packages","config","__config","language","mapsApiKey","charts","load","cb","LineChart","Timeline","GeoChart","splice","columnType","concat","pendingRequests","runningRequests","runNext","url","success","error","request","shift","ajaxCall","$","jQuery","Zepto","ajax","dataType","complete","requestComplete","xhr","XMLHttpRequest","open","setRequestHeader","onload","status","responseText","statusText","send","jqXHR","textStatus","errorThrown","message","adapters","setText","document","body","innerText","textContent","chartError","noPrefix","errorCatcher","__render","err","fetchDataSource","dataSource","showLoading","loading","addAdapter","adapter","getAdapterType","product","elementId","getElementById","Chartkick","refresh","startRefresh","getElement","getDataSource","getData","getOptions","getChartObject","getAdapter","updateData","__updateOptions","setOptions","redraw","refreshData","sep","intervalId","setInterval","stopRefresh","clearInterval","toImage","download","background","toBase64Image","canvas","tmpCanvas","tmpCtx","getContext","fillStyle","fillRect","drawImage","toDataURL","__adapterObject","__enterEvent","__leaveEvent","updateRefresh","__processData","renderChart","link","image","empty","messages","callAdapter","fnName","adapterName","Highcharts","google","__downloadAttached","filename","right","zIndex","alt","border","src","appendChild","e","related","relatedTarget","href","removeChild","__chartName","apply","arguments","__proto__","create","constructor","PieChart","ColumnChart","BarChart","AreaChart","ScatterChart","BubbleChart","configure","setDefaultOptions","eachChart","chartId","destroyAll","use","autoDestroy","setTimeout","dispatchEvent","Event","default","ChartComponent","superclass","newChartType","prop","componentDidMount","componentDidUpdate","componentWillUnmount","render","textAlign","fontFamily","react__WEBPACK_IMPORTED_MODULE_0__","Component","createComponent","ChartkickComponent","innerRef","objectWithoutProperties","exclude","chartkick__WEBPACK_IMPORTED_MODULE_1___default","_dist_chart_js__WEBPACK_IMPORTED_MODULE_0__","kL","register","zX","__webpack_exports__","names","_attachContext","proxy","subProxy","descriptorDefaults","cache","_cacheable","_proxy","_context","_subProxy","_stack","Set","_descriptors","setContext","override","scope","Proxy","deleteProperty","get","receiver","_cached","_resolveWithContext","descriptors","isScriptable","_resolveScriptable","has","Array","from","join","add","delete","needsSubResolver","createSubResolver","_scopes","_resolveArray","isIndexable","defined","index","isObject","scopes","filter","item","resolver","getOwnPropertyDescriptor","allKeys","Reflect","enumerable","configurable","getPrototypeOf","ownKeys","set","lim","l","h","p2b","n2b","b2n","n2p","map$1","A","B","C","D","E","F","f","h1","h2","eq","isShort","g","alpha","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","w","rgb","rgb2hsl","calln","map","hue","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","G","H","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","RGB_RE","to","modHSL","ratio","tmp","clone","proto","assign","fromObject","input","Color","ret","len","hexParse","nameParse","unpack","ok","nk","unpacked","keys","tkeys","transparent","toLowerCase","charAt","rgbParse","m","hueParse","p1","p2","_rgb","_valid","valid","rgbString","hexString","hslString","mix","weight","w2","c1","c2","w1","interpolate","t","rgb1","rgb2","clearer","greyscale","val","opaquer","negate","lighten","darken","saturate","desaturate","rotate","deg","noop","uid","isNullOrUndef","isNumberFinite","Number","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toPercentage","dimension","endsWith","toDimension","args","thisArg","each","loopable","reverse","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","helpers_segment_clone","klen","isValidKey","_merger","tval","sval","current","sources","merger","mergeIf","_mergerIf","keyResolvers","o","resolveObjectKey","_getKeyResolver","_splitKey","part","_capitalize","toUpperCase","setsEqual","_isClickEvent","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","almostEquals","epsilon","abs","niceNum","range","roundedRange","niceRange","floor","fraction","niceFraction","_factorize","sqrt","pop","almostWhole","rounded","_setMinAndMaxByKey","array","property","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","start","end","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","_lookup","table","cmp","mid","hi","lo","_lookupByKey","last","ti","_rlookupByKey","_filterBetween","arrayEvents","listenArrayEvents","listener","_chartjs","listeners","defineProperty","forEach","method","base","res","object","unlistenArrayEvents","stub","_arrayUnique","items","requestAnimFrame","requestAnimationFrame","throttled","argsToUse","ticking","debounce","delay","timeout","clearTimeout","_toLeftRightCenter","_alignStartEnd","_textX","left","rtl","_getStartAndCountOfVisiblePoints","meta","animationsDisabled","pointCount","count","_sorted","iScale","_parsed","minDefined","maxDefined","getUserBounds","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","ymin","ymax","changed","atEdge","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","isPatternOrGradient","getHoverColor","numbers","intlCache","Map","formatNumber","locale","getNumberFormat","cacheKey","Intl","NumberFormat","format","formatters","numeric","tickValue","notation","delta","maxTick","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","remain","significand","includes","Ticks","overrides","getScope$1","node","root","defaults","_appliers","devicePixelRatio","platform","getDevicePixelRatio","elements","events","family","hover","hoverBackgroundColor","hoverBorderColor","hoverColor","intersect","includeInvisible","onHover","onClick","parsing","responsive","drawActiveElementsOnTop","describe","route","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","writable","local","appliers","_scriptable","startsWith","_indexable","_fallback","duration","easing","loop","properties","active","show","animations","visible","hide","autoPadding","padding","bottom","offset","beginAtZero","bounds","grace","lineWidth","drawTicks","tickLength","tickWidth","_ctx","tickColor","dash","dashOffset","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","minor","major","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","_measureText","gc","longest","string","textWidth","measureText","_longestText","arrayOfThings","jlen","thing","nestedThing","garbageCollect","save","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","resetTransform","clearRect","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","xOffsetW","yOffsetW","pointStyle","rotation","radius","rad","translate","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","stroke","_isPointInArea","margin","clipArea","clip","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","line","lines","strokeWidth","strokeColor","translation","textBaseline","backdrop","drawBackdrop","oldColor","strokeStyle","strokeText","maxWidth","fillText","decorateText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","numberOrZero","_readValueToProps","objProps","read","toTRBL","toTRBLCorners","toPadding","toFont","fallback","warn","toLineHeight","resolve","inputs","info","cacheable","_addGrace","minmax","change","keepZero","createContext","parentContext","_createResolver","prefixes","rootScopes","getTarget","_resolve","Symbol","toStringTag","_rootScopes","_getTarget","_keys","_resolveWithPrefixes","readKey","getKeysFromAllScopes","storage","_storage","scriptable","indexable","_allKeys","getScope","parent","parentScopes","allScopes","addScopesFromKey","subGetTarget","addScopes","parentFallback","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","EPSILON","getPoint","skip","getValueAxis","capControlPoint","pt","_updateBezierControlPoints","controlPoints","spanGaps","cubicInterpolationMode","splineCurveMonotone","pointBefore","pointCurrent","valueAxis","pointsLen","deltaK","mK","pointAfter","slopeDelta","monotoneAdjust","alphaK","betaK","tauK","squaredMagnitude","monotoneCompute","iPixel","vPixel","prev","splineCurve","firstPoint","middlePoint","afterPoint","next","d01","d12","s01","s12","fa","fb","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","ownerDocument","defaultView","positions","getPositionedStyle","styles","pos","useOffsetPos","shadowRoot","getRelativePosition","borderBox","boxSizing","paddings","borders","box","getCanvasPosition","touches","offsetX","offsetY","getBoundingClientRect","clientX","clientY","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","maxHeight","containerSize","getContainerSize","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","passive","readUsedSize","getPropertyValue","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","getRtlAdapter","rectX","setWidth","xPlus","leftForLtr","itemWidth","_itemWidth","overrideTextDirection","direction","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","_boundSegment","segment","prevValue","startBound","endBound","getSegment","inside","subStart","startIsBefore","endIsBefore","shouldStart","shouldStop","_boundSegments","segments","sub","_computeSegments","segmentOptions","_loop","findStartAndEnd","splitByStyles","completeLoop","_fullLoop","solidSegments","cur","stop","doSplitByStyles","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","dir","p0","p0DataIndex","p1DataIndex","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/chunks/6851-28d01fed3536bf9a.js","mappings":"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CAk2B,EAAAxe,GAAA,eACAtgB,OAAA,CACAyK,KAAA,QACA02B,WAAAnhC,EACA,EACAi9B,QAAA,CACAxyB,KAAA,SACA02B,WAAAlE,EACA,CACA,GACA6B,EAAAmB,QAAA,eACAc,UAAA,WACA,GACAjC,EAAAxe,GAAA,gBACA8gB,OAAA,CACAj+B,UAAA,CACA69B,SAAA,GACA,CACA,EACAxxB,OAAA,CACArM,UAAA,CACA69B,SAAA,CACA,CACA,EACAK,KAAA,CACAC,WAAA,CACAthC,OAAA,CACA+e,KAAA,aACA,EACAwiB,QAAA,CACA92B,KAAA,UACAu2B,SAAA,CACA,CACA,CACA,EACAQ,KAAA,CACAF,WAAA,CACAthC,OAAA,CACA+sB,GAAA,aACA,EACAwU,QAAA,CACA92B,KAAA,UACAw2B,OAAA,SACApwB,GAAA,GAAAjK,EAAAA,CACA,CACA,CACA,CACA,EACA,EAEA,SAAAk4B,CAAA,EACAA,EAAAxe,GAAA,WACAmhB,YAAA,GACAC,QAAA,CACAlwB,IAAA,EACAmI,MAAA,EACAgoB,OAAA,EACAvI,KAAA,CACA,CACA,EACA,EA0EA,SAAA0F,CAAA,EACAA,EAAAxe,GAAA,UACA/b,QAAA,GACAq9B,OAAA,GACArQ,QAAA,GACAsQ,YAAA,GACAC,OAAA,QACAC,MAAA,EACA99B,KAAA,CACAM,QAAA,GACAy9B,UAAA,EACA79B,gBAAA,GACA89B,UAAA,GACAC,WAAA,EACAC,UAAA,CAAAC,EAAA9iC,IAAAA,EAAA0iC,SAAA,CACAK,UAAA,CAAAD,EAAA9iC,IAAAA,EAAAoE,KAAA,CACAk+B,OAAA,EACA,EACA9nB,OAAA,CACAvV,QAAA,GACA+9B,KAAA,GACAC,WAAA,EACAp4B,MAAA,CACA,EACA1K,MAAA,CACA8E,QAAA,GACAG,KAAA,GACAg9B,QAAA,CACAlwB,IAAA,EACAmwB,OAAA,CACA,CACA,EACA59B,MAAA,CACAy+B,YAAA,EACAC,YAAA,GACAC,OAAA,GACAC,gBAAA,EACAC,gBAAA,GACAlB,QAAA,EACAn9B,QAAA,GACAs+B,SAAA,GACAC,gBAAA,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","sources":["webpack://_N_E/./node_modules/@ant-design/icons-svg/es/asn/CheckCircleFilled.js","webpack://_N_E/./node_modules/@ant-design/icons/es/icons/CheckCircleFilled.js","webpack://_N_E/./node_modules/chartkick/dist/chartkick.js","webpack://_N_E/./node_modules/react-chartkick/dist/react-chartkick.esm.js","webpack://_N_E/./node_modules/chart.js/auto/auto.js","webpack://_N_E/./node_modules/@kurkle/color/dist/color.esm.js","webpack://_N_E/./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack://_N_E/"],"sourcesContent":["// This icon file is generated automatically.\nvar CheckCircleFilled = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 01-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z\" } }] }, \"name\": \"check-circle\", \"theme\": \"filled\" };\nexport default CheckCircleFilled;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport CheckCircleFilledSvg from \"@ant-design/icons-svg/es/asn/CheckCircleFilled\";\nimport AntdIcon from '../components/AntdIcon';\nvar CheckCircleFilled = function CheckCircleFilled(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: CheckCircleFilledSvg\n }));\n};\nCheckCircleFilled.displayName = 'CheckCircleFilled';\nexport default /*#__PURE__*/React.forwardRef(CheckCircleFilled);","/*!\n * Chartkick.js\n * Create beautiful charts with one line of JavaScript\n * https://github.com/ankane/chartkick.js\n * v4.2.0\n * MIT License\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Chartkick = factory());\n})(this, (function () { 'use strict';\n\n function isArray(variable) {\n return Object.prototype.toString.call(variable) === \"[object Array]\";\n }\n\n function isFunction(variable) {\n return variable instanceof Function;\n }\n\n function isPlainObject(variable) {\n // protect against prototype pollution, defense 2\n return Object.prototype.toString.call(variable) === \"[object Object]\" && !isFunction(variable) && variable instanceof Object;\n }\n\n // https://github.com/madrobby/zepto/blob/master/src/zepto.js\n function extend(target, source) {\n var key;\n for (key in source) {\n // protect against prototype pollution, defense 1\n if (key === \"__proto__\") { continue; }\n\n if (isPlainObject(source[key]) || isArray(source[key])) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key])) {\n target[key] = {};\n }\n if (isArray(source[key]) && !isArray(target[key])) {\n target[key] = [];\n }\n extend(target[key], source[key]);\n } else if (source[key] !== undefined) {\n target[key] = source[key];\n }\n }\n }\n\n function merge(obj1, obj2) {\n var target = {};\n extend(target, obj1);\n extend(target, obj2);\n return target;\n }\n\n var DATE_PATTERN = /^(\\d\\d\\d\\d)(-)?(\\d\\d)(-)?(\\d\\d)$/i;\n\n function negativeValues(series) {\n var i, j, data;\n for (i = 0; i < series.length; i++) {\n data = series[i].data;\n for (j = 0; j < data.length; j++) {\n if (data[j][1] < 0) {\n return true;\n }\n }\n }\n return false;\n }\n\n function toStr(n) {\n return \"\" + n;\n }\n\n function toFloat(n) {\n return parseFloat(n);\n }\n\n function toDate(n) {\n var matches, year, month, day;\n if (typeof n !== \"object\") {\n if (typeof n === \"number\") {\n n = new Date(n * 1000); // ms\n } else {\n n = toStr(n);\n if ((matches = n.match(DATE_PATTERN))) {\n year = parseInt(matches[1], 10);\n month = parseInt(matches[3], 10) - 1;\n day = parseInt(matches[5], 10);\n return new Date(year, month, day);\n } else {\n // try our best to get the str into iso8601\n // TODO be smarter about this\n var str = n.replace(/ /, \"T\").replace(\" \", \"\").replace(\"UTC\", \"Z\");\n // Date.parse returns milliseconds if valid and NaN if invalid\n n = new Date(Date.parse(str) || n);\n }\n }\n }\n return n;\n }\n\n function toArr(n) {\n if (!isArray(n)) {\n var arr = [], i;\n for (i in n) {\n if (n.hasOwnProperty(i)) {\n arr.push([i, n[i]]);\n }\n }\n n = arr;\n }\n return n;\n }\n\n function jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle) {\n return function (chart, opts, chartOptions) {\n var series = chart.data;\n var options = merge({}, defaultOptions);\n options = merge(options, chartOptions || {});\n\n if (chart.singleSeriesFormat || \"legend\" in opts) {\n hideLegend(options, opts.legend, chart.singleSeriesFormat);\n }\n\n if (opts.title) {\n setTitle(options, opts.title);\n }\n\n // min\n if (\"min\" in opts) {\n setMin(options, opts.min);\n } else if (!negativeValues(series)) {\n setMin(options, 0);\n }\n\n // max\n if (opts.max) {\n setMax(options, opts.max);\n }\n\n if (\"stacked\" in opts) {\n setStacked(options, opts.stacked);\n }\n\n if (opts.colors) {\n options.colors = opts.colors;\n }\n\n if (opts.xtitle) {\n setXtitle(options, opts.xtitle);\n }\n\n if (opts.ytitle) {\n setYtitle(options, opts.ytitle);\n }\n\n // merge library last\n options = merge(options, opts.library || {});\n\n return options;\n };\n }\n\n function sortByTime(a, b) {\n return a[0].getTime() - b[0].getTime();\n }\n\n function sortByNumberSeries(a, b) {\n return a[0] - b[0];\n }\n\n function sortByNumber(a, b) {\n return a - b;\n }\n\n function isMinute(d) {\n return d.getMilliseconds() === 0 && d.getSeconds() === 0;\n }\n\n function isHour(d) {\n return isMinute(d) && d.getMinutes() === 0;\n }\n\n function isDay(d) {\n return isHour(d) && d.getHours() === 0;\n }\n\n function isWeek(d, dayOfWeek) {\n return isDay(d) && d.getDay() === dayOfWeek;\n }\n\n function isMonth(d) {\n return isDay(d) && d.getDate() === 1;\n }\n\n function isYear(d) {\n return isMonth(d) && d.getMonth() === 0;\n }\n\n function isDate(obj) {\n return !isNaN(toDate(obj)) && toStr(obj).length >= 6;\n }\n\n function isNumber(obj) {\n return typeof obj === \"number\";\n }\n\n var byteSuffixes = [\"bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\"];\n\n function formatValue(pre, value, options, axis) {\n pre = pre || \"\";\n if (options.prefix) {\n if (value < 0) {\n value = value * -1;\n pre += \"-\";\n }\n pre += options.prefix;\n }\n\n var suffix = options.suffix || \"\";\n var precision = options.precision;\n var round = options.round;\n\n if (options.byteScale) {\n var suffixIdx;\n var baseValue = axis ? options.byteScale : value;\n\n if (baseValue >= 1152921504606846976) {\n value /= 1152921504606846976;\n suffixIdx = 6;\n } else if (baseValue >= 1125899906842624) {\n value /= 1125899906842624;\n suffixIdx = 5;\n } else if (baseValue >= 1099511627776) {\n value /= 1099511627776;\n suffixIdx = 4;\n } else if (baseValue >= 1073741824) {\n value /= 1073741824;\n suffixIdx = 3;\n } else if (baseValue >= 1048576) {\n value /= 1048576;\n suffixIdx = 2;\n } else if (baseValue >= 1024) {\n value /= 1024;\n suffixIdx = 1;\n } else {\n suffixIdx = 0;\n }\n\n // TODO handle manual precision case\n if (precision === undefined && round === undefined) {\n if (value >= 1023.5) {\n if (suffixIdx < byteSuffixes.length - 1) {\n value = 1.0;\n suffixIdx += 1;\n }\n }\n precision = value >= 1000 ? 4 : 3;\n }\n suffix = \" \" + byteSuffixes[suffixIdx];\n }\n\n if (precision !== undefined && round !== undefined) {\n throw Error(\"Use either round or precision, not both\");\n }\n\n if (!axis) {\n if (precision !== undefined) {\n value = value.toPrecision(precision);\n if (!options.zeros) {\n value = parseFloat(value);\n }\n }\n\n if (round !== undefined) {\n if (round < 0) {\n var num = Math.pow(10, -1 * round);\n value = parseInt((1.0 * value / num).toFixed(0)) * num;\n } else {\n value = value.toFixed(round);\n if (!options.zeros) {\n value = parseFloat(value);\n }\n }\n }\n }\n\n if (options.thousands || options.decimal) {\n value = toStr(value);\n var parts = value.split(\".\");\n value = parts[0];\n if (options.thousands) {\n value = value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, options.thousands);\n }\n if (parts.length > 1) {\n value += (options.decimal || \".\") + parts[1];\n }\n }\n\n return pre + value + suffix;\n }\n\n function seriesOption(chart, series, option) {\n if (option in series) {\n return series[option];\n } else if (option in chart.options) {\n return chart.options[option];\n }\n return null;\n }\n\n function allZeros(data) {\n var i, j, d;\n for (i = 0; i < data.length; i++) {\n d = data[i].data;\n for (j = 0; j < d.length; j++) {\n if (d[j][1] != 0) {\n return false;\n }\n }\n }\n return true;\n }\n\n var baseOptions = {\n maintainAspectRatio: false,\n animation: false,\n plugins: {\n legend: {},\n tooltip: {\n displayColors: false,\n callbacks: {}\n },\n title: {\n font: {\n size: 20\n },\n color: \"#333\"\n }\n },\n interaction: {}\n };\n\n var defaultOptions$2 = {\n scales: {\n y: {\n ticks: {\n maxTicksLimit: 4\n },\n title: {\n font: {\n size: 16\n },\n color: \"#333\"\n },\n grid: {}\n },\n x: {\n grid: {\n drawOnChartArea: false\n },\n title: {\n font: {\n size: 16\n },\n color: \"#333\"\n },\n time: {},\n ticks: {}\n }\n }\n };\n\n // http://there4.io/2012/05/02/google-chart-color-list/\n var defaultColors = [\n \"#3366CC\", \"#DC3912\", \"#FF9900\", \"#109618\", \"#990099\", \"#3B3EAC\", \"#0099C6\",\n \"#DD4477\", \"#66AA00\", \"#B82E2E\", \"#316395\", \"#994499\", \"#22AA99\", \"#AAAA11\",\n \"#6633CC\", \"#E67300\", \"#8B0707\", \"#329262\", \"#5574A6\", \"#651067\"\n ];\n\n var hideLegend$2 = function (options, legend, hideLegend) {\n if (legend !== undefined) {\n options.plugins.legend.display = !!legend;\n if (legend && legend !== true) {\n options.plugins.legend.position = legend;\n }\n } else if (hideLegend) {\n options.plugins.legend.display = false;\n }\n };\n\n var setTitle$2 = function (options, title) {\n options.plugins.title.display = true;\n options.plugins.title.text = title;\n };\n\n var setMin$2 = function (options, min) {\n if (min !== null) {\n options.scales.y.min = toFloat(min);\n }\n };\n\n var setMax$2 = function (options, max) {\n options.scales.y.max = toFloat(max);\n };\n\n var setBarMin$1 = function (options, min) {\n if (min !== null) {\n options.scales.x.min = toFloat(min);\n }\n };\n\n var setBarMax$1 = function (options, max) {\n options.scales.x.max = toFloat(max);\n };\n\n var setStacked$2 = function (options, stacked) {\n options.scales.x.stacked = !!stacked;\n options.scales.y.stacked = !!stacked;\n };\n\n var setXtitle$2 = function (options, title) {\n options.scales.x.title.display = true;\n options.scales.x.title.text = title;\n };\n\n var setYtitle$2 = function (options, title) {\n options.scales.y.title.display = true;\n options.scales.y.title.text = title;\n };\n\n // https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb\n var addOpacity = function (hex, opacity) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? \"rgba(\" + parseInt(result[1], 16) + \", \" + parseInt(result[2], 16) + \", \" + parseInt(result[3], 16) + \", \" + opacity + \")\" : hex;\n };\n\n // check if not null or undefined\n // https://stackoverflow.com/a/27757708/1177228\n var notnull = function (x) {\n return x != null;\n };\n\n var setLabelSize = function (chart, data, options) {\n var maxLabelSize = Math.ceil(chart.element.offsetWidth / 4.0 / data.labels.length);\n if (maxLabelSize > 25) {\n maxLabelSize = 25;\n } else if (maxLabelSize < 10) {\n maxLabelSize = 10;\n }\n if (!options.scales.x.ticks.callback) {\n options.scales.x.ticks.callback = function (value) {\n value = toStr(this.getLabelForValue(value));\n if (value.length > maxLabelSize) {\n return value.substring(0, maxLabelSize - 2) + \"...\";\n } else {\n return value;\n }\n };\n }\n };\n\n var setFormatOptions$1 = function (chart, options, chartType) {\n var formatOptions = {\n prefix: chart.options.prefix,\n suffix: chart.options.suffix,\n thousands: chart.options.thousands,\n decimal: chart.options.decimal,\n precision: chart.options.precision,\n round: chart.options.round,\n zeros: chart.options.zeros\n };\n\n if (chart.options.bytes) {\n var series = chart.data;\n if (chartType === \"pie\") {\n series = [{data: series}];\n }\n\n // calculate max\n var max = 0;\n for (var i = 0; i < series.length; i++) {\n var s = series[i];\n for (var j = 0; j < s.data.length; j++) {\n if (s.data[j][1] > max) {\n max = s.data[j][1];\n }\n }\n }\n\n // calculate scale\n var scale = 1;\n while (max >= 1024) {\n scale *= 1024;\n max /= 1024;\n }\n\n // set step size\n formatOptions.byteScale = scale;\n }\n\n if (chartType !== \"pie\") {\n var axis = options.scales.y;\n if (chartType === \"bar\") {\n axis = options.scales.x;\n }\n\n if (formatOptions.byteScale) {\n if (!axis.ticks.stepSize) {\n axis.ticks.stepSize = formatOptions.byteScale / 2;\n }\n if (!axis.ticks.maxTicksLimit) {\n axis.ticks.maxTicksLimit = 4;\n }\n }\n\n if (!axis.ticks.callback) {\n axis.ticks.callback = function (value) {\n return formatValue(\"\", value, formatOptions, true);\n };\n }\n }\n\n if (!options.plugins.tooltip.callbacks.label) {\n if (chartType === \"scatter\") {\n options.plugins.tooltip.callbacks.label = function (context) {\n var label = context.dataset.label || '';\n if (label) {\n label += ': ';\n }\n return label + '(' + context.label + ', ' + context.formattedValue + ')';\n };\n } else if (chartType === \"bubble\") {\n options.plugins.tooltip.callbacks.label = function (context) {\n var label = context.dataset.label || '';\n if (label) {\n label += ': ';\n }\n var dataPoint = context.raw;\n return label + '(' + dataPoint.x + ', ' + dataPoint.y + ', ' + dataPoint.v + ')';\n };\n } else if (chartType === \"pie\") {\n // need to use separate label for pie charts\n options.plugins.tooltip.callbacks.label = function (context) {\n var dataLabel = context.label;\n var value = ': ';\n\n if (isArray(dataLabel)) {\n // show value on first line of multiline label\n // need to clone because we are changing the value\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n\n return formatValue(dataLabel, context.parsed, formatOptions);\n };\n } else {\n var valueLabel = chartType === \"bar\" ? \"x\" : \"y\";\n options.plugins.tooltip.callbacks.label = function (context) {\n // don't show null values for stacked charts\n if (context.parsed[valueLabel] === null) {\n return;\n }\n\n var label = context.dataset.label || '';\n if (label) {\n label += ': ';\n }\n return formatValue(label, context.parsed[valueLabel], formatOptions);\n };\n }\n }\n };\n\n var jsOptions$2 = jsOptionsFunc(merge(baseOptions, defaultOptions$2), hideLegend$2, setTitle$2, setMin$2, setMax$2, setStacked$2, setXtitle$2, setYtitle$2);\n\n var createDataTable = function (chart, options, chartType) {\n var datasets = [];\n var labels = [];\n\n var colors = chart.options.colors || defaultColors;\n\n var day = true;\n var week = true;\n var dayOfWeek;\n var month = true;\n var year = true;\n var hour = true;\n var minute = true;\n\n var series = chart.data;\n\n var max = 0;\n if (chartType === \"bubble\") {\n for (var i$1 = 0; i$1 < series.length; i$1++) {\n var s$1 = series[i$1];\n for (var j$1 = 0; j$1 < s$1.data.length; j$1++) {\n if (s$1.data[j$1][2] > max) {\n max = s$1.data[j$1][2];\n }\n }\n }\n }\n\n var i, j, s, d, key, rows = [], rows2 = [];\n\n if (chartType === \"bar\" || chartType === \"column\" || (chart.xtype !== \"number\" && chart.xtype !== \"bubble\")) {\n var sortedLabels = [];\n\n for (i = 0; i < series.length; i++) {\n s = series[i];\n\n for (j = 0; j < s.data.length; j++) {\n d = s.data[j];\n key = chart.xtype == \"datetime\" ? d[0].getTime() : d[0];\n if (!rows[key]) {\n rows[key] = new Array(series.length);\n }\n rows[key][i] = toFloat(d[1]);\n if (sortedLabels.indexOf(key) === -1) {\n sortedLabels.push(key);\n }\n }\n }\n\n if (chart.xtype === \"datetime\" || chart.xtype === \"number\") {\n sortedLabels.sort(sortByNumber);\n }\n\n for (j = 0; j < series.length; j++) {\n rows2.push([]);\n }\n\n var value;\n var k;\n for (k = 0; k < sortedLabels.length; k++) {\n i = sortedLabels[k];\n if (chart.xtype === \"datetime\") {\n value = new Date(toFloat(i));\n // TODO make this efficient\n day = day && isDay(value);\n if (!dayOfWeek) {\n dayOfWeek = value.getDay();\n }\n week = week && isWeek(value, dayOfWeek);\n month = month && isMonth(value);\n year = year && isYear(value);\n hour = hour && isHour(value);\n minute = minute && isMinute(value);\n } else {\n value = i;\n }\n labels.push(value);\n for (j = 0; j < series.length; j++) {\n // Chart.js doesn't like undefined\n rows2[j].push(rows[i][j] === undefined ? null : rows[i][j]);\n }\n }\n } else {\n for (var i$2 = 0; i$2 < series.length; i$2++) {\n var s$2 = series[i$2];\n var d$1 = [];\n for (var j$2 = 0; j$2 < s$2.data.length; j$2++) {\n var point = {\n x: toFloat(s$2.data[j$2][0]),\n y: toFloat(s$2.data[j$2][1])\n };\n if (chartType === \"bubble\") {\n point.r = toFloat(s$2.data[j$2][2]) * 20 / max;\n // custom attribute, for tooltip\n point.v = s$2.data[j$2][2];\n }\n d$1.push(point);\n }\n rows2.push(d$1);\n }\n }\n\n var color;\n var backgroundColor;\n\n for (i = 0; i < series.length; i++) {\n s = series[i];\n\n // use colors for each bar for single series format\n if (chart.options.colors && chart.singleSeriesFormat && (chartType === \"bar\" || chartType === \"column\") && !s.color && isArray(chart.options.colors) && !isArray(chart.options.colors[0])) {\n color = colors;\n backgroundColor = [];\n for (var j$3 = 0; j$3 < colors.length; j$3++) {\n backgroundColor[j$3] = addOpacity(color[j$3], 0.5);\n }\n } else {\n color = s.color || colors[i];\n backgroundColor = chartType !== \"line\" ? addOpacity(color, 0.5) : color;\n }\n\n var dataset = {\n label: s.name || \"\",\n data: rows2[i],\n fill: chartType === \"area\",\n borderColor: color,\n backgroundColor: backgroundColor,\n borderWidth: 2\n };\n\n var pointChart = chartType === \"line\" || chartType === \"area\" || chartType === \"scatter\" || chartType === \"bubble\";\n if (pointChart) {\n dataset.pointBackgroundColor = color;\n dataset.pointHoverBackgroundColor = color;\n dataset.pointHitRadius = 50;\n }\n\n if (chartType === \"bubble\") {\n dataset.pointBackgroundColor = backgroundColor;\n dataset.pointHoverBackgroundColor = backgroundColor;\n dataset.pointHoverBorderWidth = 2;\n }\n\n if (s.stack) {\n dataset.stack = s.stack;\n }\n\n var curve = seriesOption(chart, s, \"curve\");\n if (curve === false) {\n dataset.tension = 0;\n } else if (pointChart) {\n dataset.tension = 0.4;\n }\n\n var points = seriesOption(chart, s, \"points\");\n if (points === false) {\n dataset.pointRadius = 0;\n dataset.pointHoverRadius = 0;\n }\n\n dataset = merge(dataset, chart.options.dataset || {});\n dataset = merge(dataset, s.library || {});\n dataset = merge(dataset, s.dataset || {});\n\n datasets.push(dataset);\n }\n\n var xmin = chart.options.xmin;\n var xmax = chart.options.xmax;\n\n if (chart.xtype === \"datetime\") {\n if (notnull(xmin)) {\n options.scales.x.min = toDate(xmin).getTime();\n }\n if (notnull(xmax)) {\n options.scales.x.max = toDate(xmax).getTime();\n }\n } else if (chart.xtype === \"number\") {\n if (notnull(xmin)) {\n options.scales.x.min = xmin;\n }\n if (notnull(xmax)) {\n options.scales.x.max = xmax;\n }\n }\n\n // for empty datetime chart\n if (chart.xtype === \"datetime\" && labels.length === 0) {\n if (notnull(xmin)) {\n labels.push(toDate(xmin));\n }\n if (notnull(xmax)) {\n labels.push(toDate(xmax));\n }\n day = false;\n week = false;\n month = false;\n year = false;\n hour = false;\n minute = false;\n }\n\n if (chart.xtype === \"datetime\" && labels.length > 0) {\n var minTime = (notnull(xmin) ? toDate(xmin) : labels[0]).getTime();\n var maxTime = (notnull(xmax) ? toDate(xmax) : labels[0]).getTime();\n\n for (i = 1; i < labels.length; i++) {\n var value$1 = labels[i].getTime();\n if (value$1 < minTime) {\n minTime = value$1;\n }\n if (value$1 > maxTime) {\n maxTime = value$1;\n }\n }\n\n var timeDiff = (maxTime - minTime) / (86400 * 1000.0);\n\n if (!options.scales.x.time.unit) {\n var step;\n if (year || timeDiff > 365 * 10) {\n options.scales.x.time.unit = \"year\";\n step = 365;\n } else if (month || timeDiff > 30 * 10) {\n options.scales.x.time.unit = \"month\";\n step = 30;\n } else if (day || timeDiff > 10) {\n options.scales.x.time.unit = \"day\";\n step = 1;\n } else if (hour || timeDiff > 0.5) {\n options.scales.x.time.displayFormats = {hour: \"MMM d, h a\"};\n options.scales.x.time.unit = \"hour\";\n step = 1 / 24.0;\n } else if (minute) {\n options.scales.x.time.displayFormats = {minute: \"h:mm a\"};\n options.scales.x.time.unit = \"minute\";\n step = 1 / 24.0 / 60.0;\n }\n\n if (step && timeDiff > 0) {\n // width not available for hidden elements\n var width = chart.element.offsetWidth;\n if (width > 0) {\n var unitStepSize = Math.ceil(timeDiff / step / (width / 100.0));\n if (week && step === 1) {\n unitStepSize = Math.ceil(unitStepSize / 7.0) * 7;\n }\n options.scales.x.time.stepSize = unitStepSize;\n }\n }\n }\n\n if (!options.scales.x.time.tooltipFormat) {\n if (day) {\n options.scales.x.time.tooltipFormat = \"PP\";\n } else if (hour) {\n options.scales.x.time.tooltipFormat = \"MMM d, h a\";\n } else if (minute) {\n options.scales.x.time.tooltipFormat = \"h:mm a\";\n }\n }\n }\n\n var data = {\n labels: labels,\n datasets: datasets\n };\n\n return data;\n };\n\n var defaultExport$2 = function defaultExport(library) {\n this.name = \"chartjs\";\n this.library = library;\n };\n\n defaultExport$2.prototype.renderLineChart = function renderLineChart (chart, chartType) {\n var chartOptions = {};\n // fix for https://github.com/chartjs/Chart.js/issues/2441\n if (!chart.options.max && allZeros(chart.data)) {\n chartOptions.max = 1;\n }\n\n var options = jsOptions$2(chart, merge(chartOptions, chart.options));\n setFormatOptions$1(chart, options, chartType);\n\n var data = createDataTable(chart, options, chartType || \"line\");\n\n if (chart.xtype === \"number\") {\n options.scales.x.type = options.scales.x.type || \"linear\";\n options.scales.x.position = options.scales.x.position ||\"bottom\";\n } else {\n options.scales.x.type = chart.xtype === \"string\" ? \"category\" : \"time\";\n }\n\n this.drawChart(chart, \"line\", data, options);\n };\n\n defaultExport$2.prototype.renderPieChart = function renderPieChart (chart) {\n var options = merge({}, baseOptions);\n if (chart.options.donut) {\n options.cutout = \"50%\";\n }\n\n if (\"legend\" in chart.options) {\n hideLegend$2(options, chart.options.legend);\n }\n\n if (chart.options.title) {\n setTitle$2(options, chart.options.title);\n }\n\n options = merge(options, chart.options.library || {});\n setFormatOptions$1(chart, options, \"pie\");\n\n var labels = [];\n var values = [];\n for (var i = 0; i < chart.data.length; i++) {\n var point = chart.data[i];\n labels.push(point[0]);\n values.push(point[1]);\n }\n\n var dataset = {\n data: values,\n backgroundColor: chart.options.colors || defaultColors\n };\n dataset = merge(dataset, chart.options.dataset || {});\n\n var data = {\n labels: labels,\n datasets: [dataset]\n };\n\n this.drawChart(chart, \"pie\", data, options);\n };\n\n defaultExport$2.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {\n var options;\n if (chartType === \"bar\") {\n var barOptions = merge(baseOptions, defaultOptions$2);\n barOptions.indexAxis = \"y\";\n\n // ensure gridlines have proper orientation\n barOptions.scales.x.grid.drawOnChartArea = true;\n barOptions.scales.y.grid.drawOnChartArea = false;\n delete barOptions.scales.y.ticks.maxTicksLimit;\n\n options = jsOptionsFunc(barOptions, hideLegend$2, setTitle$2, setBarMin$1, setBarMax$1, setStacked$2, setXtitle$2, setYtitle$2)(chart, chart.options);\n } else {\n options = jsOptions$2(chart, chart.options);\n }\n setFormatOptions$1(chart, options, chartType);\n var data = createDataTable(chart, options, \"column\");\n if (chartType !== \"bar\") {\n setLabelSize(chart, data, options);\n }\n this.drawChart(chart, \"bar\", data, options);\n };\n\n defaultExport$2.prototype.renderAreaChart = function renderAreaChart (chart) {\n this.renderLineChart(chart, \"area\");\n };\n\n defaultExport$2.prototype.renderBarChart = function renderBarChart (chart) {\n this.renderColumnChart(chart, \"bar\");\n };\n\n defaultExport$2.prototype.renderScatterChart = function renderScatterChart (chart, chartType) {\n chartType = chartType || \"scatter\";\n\n var options = jsOptions$2(chart, chart.options);\n setFormatOptions$1(chart, options, chartType);\n\n if (!(\"showLine\" in options)) {\n options.showLine = false;\n }\n\n var data = createDataTable(chart, options, chartType);\n\n options.scales.x.type = options.scales.x.type || \"linear\";\n options.scales.x.position = options.scales.x.position || \"bottom\";\n\n // prevent grouping hover and tooltips\n if (!(\"mode\" in options.interaction)) {\n options.interaction.mode = \"nearest\";\n }\n\n this.drawChart(chart, chartType, data, options);\n };\n\n defaultExport$2.prototype.renderBubbleChart = function renderBubbleChart (chart) {\n this.renderScatterChart(chart, \"bubble\");\n };\n\n defaultExport$2.prototype.destroy = function destroy (chart) {\n if (chart.chart) {\n chart.chart.destroy();\n }\n };\n\n defaultExport$2.prototype.drawChart = function drawChart (chart, type, data, options) {\n this.destroy(chart);\n if (chart.destroyed) { return; }\n\n var chartOptions = {\n type: type,\n data: data,\n options: options\n };\n\n if (chart.options.code) {\n window.console.log(\"new Chart(ctx, \" + JSON.stringify(chartOptions) + \");\");\n }\n\n chart.element.innerHTML = \"\";\n var ctx = chart.element.getElementsByTagName(\"CANVAS\")[0];\n chart.chart = new this.library(ctx, chartOptions);\n };\n\n var defaultOptions$1 = {\n chart: {},\n xAxis: {\n title: {\n text: null\n },\n labels: {\n style: {\n fontSize: \"12px\"\n }\n }\n },\n yAxis: {\n title: {\n text: null\n },\n labels: {\n style: {\n fontSize: \"12px\"\n }\n }\n },\n title: {\n text: null\n },\n credits: {\n enabled: false\n },\n legend: {\n borderWidth: 0\n },\n tooltip: {\n style: {\n fontSize: \"12px\"\n }\n },\n plotOptions: {\n areaspline: {},\n area: {},\n series: {\n marker: {}\n }\n },\n time: {\n useUTC: false\n }\n };\n\n var hideLegend$1 = function (options, legend, hideLegend) {\n if (legend !== undefined) {\n options.legend.enabled = !!legend;\n if (legend && legend !== true) {\n if (legend === \"top\" || legend === \"bottom\") {\n options.legend.verticalAlign = legend;\n } else {\n options.legend.layout = \"vertical\";\n options.legend.verticalAlign = \"middle\";\n options.legend.align = legend;\n }\n }\n } else if (hideLegend) {\n options.legend.enabled = false;\n }\n };\n\n var setTitle$1 = function (options, title) {\n options.title.text = title;\n };\n\n var setMin$1 = function (options, min) {\n options.yAxis.min = min;\n };\n\n var setMax$1 = function (options, max) {\n options.yAxis.max = max;\n };\n\n var setStacked$1 = function (options, stacked) {\n var stackedValue = stacked ? (stacked === true ? \"normal\" : stacked) : null;\n options.plotOptions.series.stacking = stackedValue;\n options.plotOptions.area.stacking = stackedValue;\n options.plotOptions.areaspline.stacking = stackedValue;\n };\n\n var setXtitle$1 = function (options, title) {\n options.xAxis.title.text = title;\n };\n\n var setYtitle$1 = function (options, title) {\n options.yAxis.title.text = title;\n };\n\n var jsOptions$1 = jsOptionsFunc(defaultOptions$1, hideLegend$1, setTitle$1, setMin$1, setMax$1, setStacked$1, setXtitle$1, setYtitle$1);\n\n var setFormatOptions = function(chart, options, chartType) {\n var formatOptions = {\n prefix: chart.options.prefix,\n suffix: chart.options.suffix,\n thousands: chart.options.thousands,\n decimal: chart.options.decimal,\n precision: chart.options.precision,\n round: chart.options.round,\n zeros: chart.options.zeros\n };\n\n // skip when axis is an array (like with min/max)\n if (chartType !== \"pie\" && !isArray(options.yAxis) && !options.yAxis.labels.formatter) {\n options.yAxis.labels.formatter = function () {\n return formatValue(\"\", this.value, formatOptions);\n };\n }\n\n if (!options.tooltip.pointFormatter && !options.tooltip.pointFormat) {\n options.tooltip.pointFormatter = function () {\n return '\\u25CF ' + formatValue(this.series.name + ': ', this.y, formatOptions) + '
';\n };\n }\n };\n\n var defaultExport$1 = function defaultExport(library) {\n this.name = \"highcharts\";\n this.library = library;\n };\n\n defaultExport$1.prototype.renderLineChart = function renderLineChart (chart, chartType) {\n chartType = chartType || \"spline\";\n var chartOptions = {};\n if (chartType === \"areaspline\") {\n chartOptions = {\n plotOptions: {\n areaspline: {\n stacking: \"normal\"\n },\n area: {\n stacking: \"normal\"\n },\n series: {\n marker: {\n enabled: false\n }\n }\n }\n };\n }\n\n if (chart.options.curve === false) {\n if (chartType === \"areaspline\") {\n chartType = \"area\";\n } else if (chartType === \"spline\") {\n chartType = \"line\";\n }\n }\n\n var options = jsOptions$1(chart, chart.options, chartOptions), data, i, j;\n if (chart.xtype === \"number\") {\n options.xAxis.type = options.xAxis.type || \"linear\";\n } else {\n options.xAxis.type = chart.xtype === \"string\" ? \"category\" : \"datetime\";\n }\n if (!options.chart.type) {\n options.chart.type = chartType;\n }\n setFormatOptions(chart, options, chartType);\n\n var series = chart.data;\n for (i = 0; i < series.length; i++) {\n series[i].name = series[i].name || \"Value\";\n data = series[i].data;\n if (chart.xtype === \"datetime\") {\n for (j = 0; j < data.length; j++) {\n data[j][0] = data[j][0].getTime();\n }\n }\n series[i].marker = {symbol: \"circle\"};\n if (chart.options.points === false) {\n series[i].marker.enabled = false;\n }\n }\n\n this.drawChart(chart, series, options);\n };\n\n defaultExport$1.prototype.renderScatterChart = function renderScatterChart (chart) {\n var options = jsOptions$1(chart, chart.options, {});\n options.chart.type = \"scatter\";\n this.drawChart(chart, chart.data, options);\n };\n\n defaultExport$1.prototype.renderPieChart = function renderPieChart (chart) {\n var chartOptions = merge(defaultOptions$1, {});\n\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n if (chart.options.donut) {\n chartOptions.plotOptions = {pie: {innerSize: \"50%\"}};\n }\n\n if (\"legend\" in chart.options) {\n hideLegend$1(chartOptions, chart.options.legend);\n }\n\n if (chart.options.title) {\n setTitle$1(chartOptions, chart.options.title);\n }\n\n var options = merge(chartOptions, chart.options.library || {});\n setFormatOptions(chart, options, \"pie\");\n var series = [{\n type: \"pie\",\n name: chart.options.label || \"Value\",\n data: chart.data\n }];\n\n this.drawChart(chart, series, options);\n };\n\n defaultExport$1.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {\n chartType = chartType || \"column\";\n var series = chart.data;\n var options = jsOptions$1(chart, chart.options), i, j, s, d, rows = [], categories = [];\n options.chart.type = chartType;\n setFormatOptions(chart, options, chartType);\n\n for (i = 0; i < series.length; i++) {\n s = series[i];\n\n for (j = 0; j < s.data.length; j++) {\n d = s.data[j];\n if (!rows[d[0]]) {\n rows[d[0]] = new Array(series.length);\n categories.push(d[0]);\n }\n rows[d[0]][i] = d[1];\n }\n }\n\n if (chart.xtype === \"number\") {\n categories.sort(sortByNumber);\n }\n\n options.xAxis.categories = categories;\n\n var newSeries = [], d2;\n for (i = 0; i < series.length; i++) {\n d = [];\n for (j = 0; j < categories.length; j++) {\n d.push(rows[categories[j]][i] || 0);\n }\n\n d2 = {\n name: series[i].name || \"Value\",\n data: d\n };\n if (series[i].stack) {\n d2.stack = series[i].stack;\n }\n\n newSeries.push(d2);\n }\n\n this.drawChart(chart, newSeries, options);\n };\n\n defaultExport$1.prototype.renderBarChart = function renderBarChart (chart) {\n this.renderColumnChart(chart, \"bar\");\n };\n\n defaultExport$1.prototype.renderAreaChart = function renderAreaChart (chart) {\n this.renderLineChart(chart, \"areaspline\");\n };\n\n defaultExport$1.prototype.destroy = function destroy (chart) {\n if (chart.chart) {\n chart.chart.destroy();\n }\n };\n\n defaultExport$1.prototype.drawChart = function drawChart (chart, data, options) {\n this.destroy(chart);\n if (chart.destroyed) { return; }\n\n options.chart.renderTo = chart.element.id;\n options.series = data;\n\n if (chart.options.code) {\n window.console.log(\"new Highcharts.Chart(\" + JSON.stringify(options) + \");\");\n }\n\n chart.chart = new this.library.Chart(options);\n };\n\n var loaded = {};\n var callbacks = [];\n\n // Set chart options\n var defaultOptions = {\n chartArea: {},\n fontName: \"'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif\",\n pointSize: 6,\n legend: {\n textStyle: {\n fontSize: 12,\n color: \"#444\"\n },\n alignment: \"center\",\n position: \"right\"\n },\n curveType: \"function\",\n hAxis: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n },\n titleTextStyle: {},\n gridlines: {\n color: \"transparent\"\n },\n baselineColor: \"#ccc\",\n viewWindow: {}\n },\n vAxis: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n },\n titleTextStyle: {},\n baselineColor: \"#ccc\",\n viewWindow: {}\n },\n tooltip: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n }\n }\n };\n\n var hideLegend = function (options, legend, hideLegend) {\n if (legend !== undefined) {\n var position;\n if (!legend) {\n position = \"none\";\n } else if (legend === true) {\n position = \"right\";\n } else {\n position = legend;\n }\n options.legend.position = position;\n } else if (hideLegend) {\n options.legend.position = \"none\";\n }\n };\n\n var setTitle = function (options, title) {\n options.title = title;\n options.titleTextStyle = {color: \"#333\", fontSize: \"20px\"};\n };\n\n var setMin = function (options, min) {\n options.vAxis.viewWindow.min = min;\n };\n\n var setMax = function (options, max) {\n options.vAxis.viewWindow.max = max;\n };\n\n var setBarMin = function (options, min) {\n options.hAxis.viewWindow.min = min;\n };\n\n var setBarMax = function (options, max) {\n options.hAxis.viewWindow.max = max;\n };\n\n var setStacked = function (options, stacked) {\n options.isStacked = stacked ? stacked : false;\n };\n\n var setXtitle = function (options, title) {\n options.hAxis.title = title;\n options.hAxis.titleTextStyle.italic = false;\n };\n\n var setYtitle = function (options, title) {\n options.vAxis.title = title;\n options.vAxis.titleTextStyle.italic = false;\n };\n\n var jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle);\n\n var resize = function (callback) {\n if (window.attachEvent) {\n window.attachEvent(\"onresize\", callback);\n } else if (window.addEventListener) {\n window.addEventListener(\"resize\", callback, true);\n }\n callback();\n };\n\n var defaultExport = function defaultExport(library) {\n this.name = \"google\";\n this.library = library;\n };\n\n defaultExport.prototype.renderLineChart = function renderLineChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {};\n\n if (chart.options.curve === false) {\n chartOptions.curveType = \"none\";\n }\n\n if (chart.options.points === false) {\n chartOptions.pointSize = 0;\n }\n\n var options = jsOptions(chart, chart.options, chartOptions);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n this$1$1.drawChart(chart, \"LineChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderPieChart = function renderPieChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n chartArea: {\n top: \"10%\",\n height: \"80%\"\n },\n legend: {}\n };\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n if (chart.options.donut) {\n chartOptions.pieHole = 0.5;\n }\n if (\"legend\" in chart.options) {\n hideLegend(chartOptions, chart.options.legend);\n }\n if (chart.options.title) {\n setTitle(chartOptions, chart.options.title);\n }\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n var data = new this$1$1.library.visualization.DataTable();\n data.addColumn(\"string\", \"\");\n data.addColumn(\"number\", \"Value\");\n data.addRows(chart.data);\n\n this$1$1.drawChart(chart, \"PieChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderColumnChart = function renderColumnChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var options = jsOptions(chart, chart.options);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n this$1$1.drawChart(chart, \"ColumnChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderBarChart = function renderBarChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n hAxis: {\n gridlines: {\n color: \"#ccc\"\n }\n }\n };\n var options = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setBarMin, setBarMax, setStacked, setXtitle, setYtitle)(chart, chart.options, chartOptions);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n this$1$1.drawChart(chart, \"BarChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderAreaChart = function renderAreaChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n isStacked: true,\n pointSize: 0,\n areaOpacity: 0.5\n };\n\n var options = jsOptions(chart, chart.options, chartOptions);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n this$1$1.drawChart(chart, \"AreaChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderGeoChart = function renderGeoChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, \"geochart\", function () {\n var chartOptions = {\n legend: \"none\",\n colorAxis: {\n colors: chart.options.colors || [\"#f6c7b6\", \"#ce502d\"]\n }\n };\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n var data = new this$1$1.library.visualization.DataTable();\n data.addColumn(\"string\", \"\");\n data.addColumn(\"number\", chart.options.label || \"Value\");\n data.addRows(chart.data);\n\n this$1$1.drawChart(chart, \"GeoChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderScatterChart = function renderScatterChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {};\n var options = jsOptions(chart, chart.options, chartOptions);\n\n var series = chart.data, rows2 = [], i, j, data, d;\n for (i = 0; i < series.length; i++) {\n series[i].name = series[i].name || \"Value\";\n d = series[i].data;\n for (j = 0; j < d.length; j++) {\n var row = new Array(series.length + 1);\n row[0] = d[j][0];\n row[i + 1] = d[j][1];\n rows2.push(row);\n }\n }\n\n data = new this$1$1.library.visualization.DataTable();\n data.addColumn(\"number\", \"\");\n for (i = 0; i < series.length; i++) {\n data.addColumn(\"number\", series[i].name);\n }\n data.addRows(rows2);\n\n this$1$1.drawChart(chart, \"ScatterChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderTimeline = function renderTimeline (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, \"timeline\", function () {\n var chartOptions = {\n legend: \"none\"\n };\n\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n var data = new this$1$1.library.visualization.DataTable();\n data.addColumn({type: \"string\", id: \"Name\"});\n data.addColumn({type: \"date\", id: \"Start\"});\n data.addColumn({type: \"date\", id: \"End\"});\n data.addRows(chart.data);\n\n chart.element.style.lineHeight = \"normal\";\n\n this$1$1.drawChart(chart, \"Timeline\", data, options);\n });\n };\n\n // TODO remove resize events\n defaultExport.prototype.destroy = function destroy (chart) {\n if (chart.chart) {\n chart.chart.clearChart();\n }\n };\n\n defaultExport.prototype.drawChart = function drawChart (chart, type, data, options) {\n this.destroy(chart);\n if (chart.destroyed) { return; }\n\n if (chart.options.code) {\n window.console.log(\"var data = new google.visualization.DataTable(\" + data.toJSON() + \");\\nvar chart = new google.visualization.\" + type + \"(element);\\nchart.draw(data, \" + JSON.stringify(options) + \");\");\n }\n\n chart.chart = new this.library.visualization[type](chart.element);\n resize(function () {\n chart.chart.draw(data, options);\n });\n };\n\n defaultExport.prototype.waitForLoaded = function waitForLoaded (chart, pack, callback) {\n var this$1$1 = this;\n\n if (!callback) {\n callback = pack;\n pack = \"corechart\";\n }\n\n callbacks.push({pack: pack, callback: callback});\n\n if (loaded[pack]) {\n this.runCallbacks();\n } else {\n loaded[pack] = true;\n\n // https://groups.google.com/forum/#!topic/google-visualization-api/fMKJcyA2yyI\n var loadOptions = {\n packages: [pack],\n callback: function () { this$1$1.runCallbacks(); }\n };\n var config = chart.__config();\n if (config.language) {\n loadOptions.language = config.language;\n }\n if (pack === \"geochart\" && config.mapsApiKey) {\n loadOptions.mapsApiKey = config.mapsApiKey;\n }\n\n this.library.charts.load(\"current\", loadOptions);\n }\n };\n\n defaultExport.prototype.runCallbacks = function runCallbacks () {\n var cb, call;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n call = this.library.visualization && ((cb.pack === \"corechart\" && this.library.visualization.LineChart) || (cb.pack === \"timeline\" && this.library.visualization.Timeline) || (cb.pack === \"geochart\" && this.library.visualization.GeoChart));\n if (call) {\n cb.callback();\n callbacks.splice(i, 1);\n i--;\n }\n }\n };\n\n // cant use object as key\n defaultExport.prototype.createDataTable = function createDataTable (series, columnType) {\n var i, j, s, d, key, rows = [], sortedLabels = [];\n for (i = 0; i < series.length; i++) {\n s = series[i];\n series[i].name = series[i].name || \"Value\";\n\n for (j = 0; j < s.data.length; j++) {\n d = s.data[j];\n key = (columnType === \"datetime\") ? d[0].getTime() : d[0];\n if (!rows[key]) {\n rows[key] = new Array(series.length);\n sortedLabels.push(key);\n }\n rows[key][i] = toFloat(d[1]);\n }\n }\n\n var rows2 = [];\n var day = true;\n var value;\n for (j = 0; j < sortedLabels.length; j++) {\n i = sortedLabels[j];\n if (columnType === \"datetime\") {\n value = new Date(toFloat(i));\n day = day && isDay(value);\n } else if (columnType === \"number\") {\n value = toFloat(i);\n } else {\n value = i;\n }\n rows2.push([value].concat(rows[i]));\n }\n if (columnType === \"datetime\") {\n rows2.sort(sortByTime);\n } else if (columnType === \"number\") {\n rows2.sort(sortByNumberSeries);\n\n for (i = 0; i < rows2.length; i++) {\n rows2[i][0] = toStr(rows2[i][0]);\n }\n\n columnType = \"string\";\n }\n\n // create datatable\n var data = new this.library.visualization.DataTable();\n columnType = columnType === \"datetime\" && day ? \"date\" : columnType;\n data.addColumn(columnType, \"\");\n for (i = 0; i < series.length; i++) {\n data.addColumn(\"number\", series[i].name);\n }\n data.addRows(rows2);\n\n return data;\n };\n\n function formatSeriesData(data, keyType) {\n var r = [], j, keyFunc;\n\n if (keyType === \"number\") {\n keyFunc = toFloat;\n } else if (keyType === \"datetime\") {\n keyFunc = toDate;\n } else {\n keyFunc = toStr;\n }\n\n if (keyType === \"bubble\") {\n for (j = 0; j < data.length; j++) {\n r.push([toFloat(data[j][0]), toFloat(data[j][1]), toFloat(data[j][2])]);\n }\n } else {\n for (j = 0; j < data.length; j++) {\n r.push([keyFunc(data[j][0]), toFloat(data[j][1])]);\n }\n }\n\n if (keyType === \"datetime\") {\n r.sort(sortByTime);\n } else if (keyType === \"number\") {\n r.sort(sortByNumberSeries);\n }\n\n return r;\n }\n\n function detectXType(series, noDatetime, options) {\n if (dataEmpty(series)) {\n if ((options.xmin || options.xmax) && (!options.xmin || isDate(options.xmin)) && (!options.xmax || isDate(options.xmax))) {\n return \"datetime\";\n } else {\n return \"number\";\n }\n } else if (detectXTypeWithFunction(series, isNumber)) {\n return \"number\";\n } else if (!noDatetime && detectXTypeWithFunction(series, isDate)) {\n return \"datetime\";\n } else {\n return \"string\";\n }\n }\n\n function detectXTypeWithFunction(series, func) {\n var i, j, data;\n for (i = 0; i < series.length; i++) {\n data = toArr(series[i].data);\n for (j = 0; j < data.length; j++) {\n if (!func(data[j][0])) {\n return false;\n }\n }\n }\n return true;\n }\n\n // creates a shallow copy of each element of the array\n // elements are expected to be objects\n function copySeries(series) {\n var newSeries = [], i, j;\n for (i = 0; i < series.length; i++) {\n var copy = {};\n for (j in series[i]) {\n if (series[i].hasOwnProperty(j)) {\n copy[j] = series[i][j];\n }\n }\n newSeries.push(copy);\n }\n return newSeries;\n }\n\n function processSeries(chart, keyType, noDatetime) {\n var i;\n\n var opts = chart.options;\n var series = chart.rawData;\n\n // see if one series or multiple\n chart.singleSeriesFormat = (!isArray(series) || typeof series[0] !== \"object\" || isArray(series[0]));\n if (chart.singleSeriesFormat) {\n series = [{name: opts.label, data: series}];\n }\n\n // convert to array\n // must come before dataEmpty check\n series = copySeries(series);\n for (i = 0; i < series.length; i++) {\n series[i].data = toArr(series[i].data);\n }\n\n chart.xtype = keyType ? keyType : (opts.discrete ? \"string\" : detectXType(series, noDatetime, opts));\n\n // right format\n for (i = 0; i < series.length; i++) {\n series[i].data = formatSeriesData(series[i].data, chart.xtype);\n }\n\n return series;\n }\n\n function processSimple(chart) {\n var perfectData = toArr(chart.rawData), i;\n for (i = 0; i < perfectData.length; i++) {\n perfectData[i] = [toStr(perfectData[i][0]), toFloat(perfectData[i][1])];\n }\n return perfectData;\n }\n\n function dataEmpty(data, chartType) {\n if (chartType === \"PieChart\" || chartType === \"GeoChart\" || chartType === \"Timeline\") {\n return data.length === 0;\n } else {\n for (var i = 0; i < data.length; i++) {\n if (data[i].data.length > 0) {\n return false;\n }\n }\n return true;\n }\n }\n\n function addDownloadButton(chart) {\n var element = chart.element;\n var link = document.createElement(\"a\");\n\n var download = chart.options.download;\n if (download === true) {\n download = {};\n } else if (typeof download === \"string\") {\n download = {filename: download};\n }\n link.download = download.filename || \"chart.png\"; // https://caniuse.com/download\n\n link.style.position = \"absolute\";\n link.style.top = \"20px\";\n link.style.right = \"20px\";\n link.style.zIndex = 1000;\n link.style.lineHeight = \"20px\";\n link.target = \"_blank\"; // for safari\n var image = document.createElement(\"img\");\n image.alt = \"Download\";\n image.style.border = \"none\";\n // icon from font-awesome\n // http://fa2png.io/\n image.src = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAABCFBMVEUAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMywEsqxAAAAV3RSTlMAAQIDBggJCgsMDQ4PERQaHB0eISIjJCouLzE0OTo/QUJHSUpLTU5PUllhYmltcHh5foWLjI+SlaCio6atr7S1t7m6vsHHyM7R2tze5Obo7fHz9ff5+/1hlxK2AAAA30lEQVQYGUXBhVYCQQBA0TdYWAt2d3d3YWAHyur7/z9xgD16Lw0DW+XKx+1GgX+FRzM3HWQWrHl5N/oapW5RPe0PkBu+UYeICvozTWZVK23Ao04B79oJrOsJDOoxkZoQPWgX29pHpCZEk7rEvQYiNSFq1UMqvlCjJkRBS1R8hb00Vb/TajtBL7nTHE1X1vyMQF732dQhyF2o6SAwrzP06iUQzvwsArlnzcOdrgBhJyHa1QOgO9U1GsKuvjUTjavliZYQ8nNPapG6sap/3nrIdJ6bOWzmX/fy0XVpfzZP3S8OJT3g9EEiJwAAAABJRU5ErkJggg==\";\n link.appendChild(image);\n element.style.position = \"relative\";\n\n chart.__downloadAttached = true;\n\n // mouseenter\n chart.__enterEvent = addEvent(element, \"mouseover\", function(e) {\n var related = e.relatedTarget;\n // check download option again to ensure it wasn't changed\n if ((!related || (related !== this && !childOf(this, related))) && chart.options.download) {\n link.href = chart.toImage(download);\n element.appendChild(link);\n }\n });\n\n // mouseleave\n chart.__leaveEvent = addEvent(element, \"mouseout\", function(e) {\n var related = e.relatedTarget;\n if (!related || (related !== this && !childOf(this, related))) {\n if (link.parentNode) {\n link.parentNode.removeChild(link);\n }\n }\n });\n }\n\n // https://stackoverflow.com/questions/10149963/adding-event-listener-cross-browser\n function addEvent(elem, event, fn) {\n if (elem.addEventListener) {\n elem.addEventListener(event, fn, false);\n return fn;\n } else {\n var fn2 = function() {\n // set the this pointer same as addEventListener when fn is called\n return(fn.call(elem, window.event));\n };\n elem.attachEvent(\"on\" + event, fn2);\n return fn2;\n }\n }\n\n function removeEvent(elem, event, fn) {\n if (elem.removeEventListener) {\n elem.removeEventListener(event, fn, false);\n } else {\n elem.detachEvent(\"on\" + event, fn);\n }\n }\n\n // https://gist.github.com/shawnbot/4166283\n function childOf(p, c) {\n if (p === c) { return false; }\n while (c && c !== p) { c = c.parentNode; }\n return c === p;\n }\n\n var pendingRequests = [], runningRequests = 0, maxRequests = 4;\n\n function pushRequest(url, success, error) {\n pendingRequests.push([url, success, error]);\n runNext();\n }\n\n function runNext() {\n if (runningRequests < maxRequests) {\n var request = pendingRequests.shift();\n if (request) {\n runningRequests++;\n getJSON(request[0], request[1], request[2]);\n runNext();\n }\n }\n }\n\n function requestComplete() {\n runningRequests--;\n runNext();\n }\n\n function getJSON(url, success, error) {\n ajaxCall(url, success, function (jqXHR, textStatus, errorThrown) {\n var message = (typeof errorThrown === \"string\") ? errorThrown : errorThrown.message;\n error(message);\n });\n }\n\n function ajaxCall(url, success, error) {\n var $ = window.jQuery || window.Zepto || window.$;\n\n if ($ && $.ajax) {\n $.ajax({\n dataType: \"json\",\n url: url,\n success: success,\n error: error,\n complete: requestComplete\n });\n } else {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n xhr.onload = function () {\n requestComplete();\n if (xhr.status === 200) {\n success(JSON.parse(xhr.responseText), xhr.statusText, xhr);\n } else {\n error(xhr, \"error\", xhr.statusText);\n }\n };\n xhr.send();\n }\n }\n\n var config = {};\n var adapters = [];\n\n // helpers\n\n function setText(element, text) {\n if (document.body.innerText) {\n element.innerText = text;\n } else {\n element.textContent = text;\n }\n }\n\n // TODO remove prefix for all messages\n function chartError(element, message, noPrefix) {\n if (!noPrefix) {\n message = \"Error Loading Chart: \" + message;\n }\n setText(element, message);\n element.style.color = \"#ff0000\";\n }\n\n function errorCatcher(chart) {\n try {\n chart.__render();\n } catch (err) {\n chartError(chart.element, err.message);\n throw err;\n }\n }\n\n function fetchDataSource(chart, dataSource, showLoading) {\n // only show loading message for urls and callbacks\n if (showLoading && chart.options.loading && (typeof dataSource === \"string\" || typeof dataSource === \"function\")) {\n setText(chart.element, chart.options.loading);\n }\n\n if (typeof dataSource === \"string\") {\n pushRequest(dataSource, function (data) {\n chart.rawData = data;\n errorCatcher(chart);\n }, function (message) {\n chartError(chart.element, message);\n });\n } else if (typeof dataSource === \"function\") {\n try {\n dataSource(function (data) {\n chart.rawData = data;\n errorCatcher(chart);\n }, function (message) {\n chartError(chart.element, message, true);\n });\n } catch (err) {\n chartError(chart.element, err, true);\n }\n } else {\n chart.rawData = dataSource;\n errorCatcher(chart);\n }\n }\n\n function getAdapterType(library) {\n if (library) {\n if (library.product === \"Highcharts\") {\n return defaultExport$1;\n } else if (library.charts) {\n return defaultExport;\n } else if (isFunction(library)) {\n return defaultExport$2;\n }\n }\n throw new Error(\"Unknown adapter\");\n }\n\n function addAdapter(library) {\n var adapterType = getAdapterType(library);\n var adapter = new adapterType(library);\n\n if (adapters.indexOf(adapter) === -1) {\n adapters.push(adapter);\n }\n }\n\n function loadAdapters() {\n if (\"Chart\" in window) {\n addAdapter(window.Chart);\n }\n\n if (\"Highcharts\" in window) {\n addAdapter(window.Highcharts);\n }\n\n if (window.google && window.google.charts) {\n addAdapter(window.google);\n }\n }\n\n function renderChart(chartType, chart) {\n if (dataEmpty(chart.data, chartType)) {\n var message = chart.options.empty || (chart.options.messages && chart.options.messages.empty) || \"No data\";\n setText(chart.element, message);\n } else {\n callAdapter(chartType, chart);\n if (chart.options.download && !chart.__downloadAttached && chart.adapter === \"chartjs\") {\n addDownloadButton(chart);\n }\n }\n }\n\n // TODO remove chartType if cross-browser way\n // to get the name of the chart class\n function callAdapter(chartType, chart) {\n var i, adapter, fnName, adapterName;\n fnName = \"render\" + chartType;\n adapterName = chart.options.adapter;\n\n loadAdapters();\n\n for (i = 0; i < adapters.length; i++) {\n adapter = adapters[i];\n if ((!adapterName || adapterName === adapter.name) && isFunction(adapter[fnName])) {\n chart.adapter = adapter.name;\n chart.__adapterObject = adapter;\n return adapter[fnName](chart);\n }\n }\n\n if (adapters.length > 0) {\n throw new Error(\"No charting library found for \" + chartType);\n } else {\n throw new Error(\"No charting libraries found - be sure to include one before your charts\");\n }\n }\n\n // define classes\n\n var Chart = function Chart(element, dataSource, options) {\n var elementId;\n if (typeof element === \"string\") {\n elementId = element;\n element = document.getElementById(element);\n if (!element) {\n throw new Error(\"No element with id \" + elementId);\n }\n }\n this.element = element;\n this.options = merge(Chartkick.options, options || {});\n this.dataSource = dataSource;\n\n Chartkick.charts[element.id] = this;\n\n fetchDataSource(this, dataSource, true);\n\n if (this.options.refresh) {\n this.startRefresh();\n }\n };\n\n Chart.prototype.getElement = function getElement () {\n return this.element;\n };\n\n Chart.prototype.getDataSource = function getDataSource () {\n return this.dataSource;\n };\n\n Chart.prototype.getData = function getData () {\n return this.data;\n };\n\n Chart.prototype.getOptions = function getOptions () {\n return this.options;\n };\n\n Chart.prototype.getChartObject = function getChartObject () {\n return this.chart;\n };\n\n Chart.prototype.getAdapter = function getAdapter () {\n return this.adapter;\n };\n\n Chart.prototype.updateData = function updateData (dataSource, options) {\n this.dataSource = dataSource;\n if (options) {\n this.__updateOptions(options);\n }\n fetchDataSource(this, dataSource, true);\n };\n\n Chart.prototype.setOptions = function setOptions (options) {\n this.__updateOptions(options);\n this.redraw();\n };\n\n Chart.prototype.redraw = function redraw () {\n fetchDataSource(this, this.rawData);\n };\n\n Chart.prototype.refreshData = function refreshData () {\n if (typeof this.dataSource === \"string\") {\n // prevent browser from caching\n var sep = this.dataSource.indexOf(\"?\") === -1 ? \"?\" : \"&\";\n var url = this.dataSource + sep + \"_=\" + (new Date()).getTime();\n fetchDataSource(this, url);\n } else if (typeof this.dataSource === \"function\") {\n fetchDataSource(this, this.dataSource);\n }\n };\n\n Chart.prototype.startRefresh = function startRefresh () {\n var this$1$1 = this;\n\n var refresh = this.options.refresh;\n\n if (refresh && typeof this.dataSource !== \"string\" && typeof this.dataSource !== \"function\") {\n throw new Error(\"Data source must be a URL or callback for refresh\");\n }\n\n if (!this.intervalId) {\n if (refresh) {\n this.intervalId = setInterval( function () {\n this$1$1.refreshData();\n }, refresh * 1000);\n } else {\n throw new Error(\"No refresh interval\");\n }\n }\n };\n\n Chart.prototype.stopRefresh = function stopRefresh () {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n };\n\n Chart.prototype.toImage = function toImage (download) {\n if (this.adapter === \"chartjs\") {\n if (download && download.background && download.background !== \"transparent\") {\n // https://stackoverflow.com/questions/30464750/chartjs-line-chart-set-background-color\n var canvas = this.chart.canvas;\n var ctx = this.chart.ctx;\n var tmpCanvas = document.createElement(\"canvas\");\n var tmpCtx = tmpCanvas.getContext(\"2d\");\n tmpCanvas.width = ctx.canvas.width;\n tmpCanvas.height = ctx.canvas.height;\n tmpCtx.fillStyle = download.background;\n tmpCtx.fillRect(0, 0, tmpCanvas.width, tmpCanvas.height);\n tmpCtx.drawImage(canvas, 0, 0);\n return tmpCanvas.toDataURL(\"image/png\");\n } else {\n return this.chart.toBase64Image();\n }\n } else {\n throw new Error(\"Feature only available for Chart.js\");\n }\n };\n\n Chart.prototype.destroy = function destroy () {\n this.destroyed = true;\n this.stopRefresh();\n\n if (this.__adapterObject) {\n this.__adapterObject.destroy(this);\n }\n\n if (this.__enterEvent) {\n removeEvent(this.element, \"mouseover\", this.__enterEvent);\n }\n\n if (this.__leaveEvent) {\n removeEvent(this.element, \"mouseout\", this.__leaveEvent);\n }\n };\n\n Chart.prototype.__updateOptions = function __updateOptions (options) {\n var updateRefresh = options.refresh && options.refresh !== this.options.refresh;\n this.options = merge(Chartkick.options, options);\n if (updateRefresh) {\n this.stopRefresh();\n this.startRefresh();\n }\n };\n\n Chart.prototype.__render = function __render () {\n this.data = this.__processData();\n renderChart(this.__chartName(), this);\n };\n\n Chart.prototype.__config = function __config () {\n return config;\n };\n\n var LineChart = /*@__PURE__*/(function (Chart) {\n function LineChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) LineChart.__proto__ = Chart;\n LineChart.prototype = Object.create( Chart && Chart.prototype );\n LineChart.prototype.constructor = LineChart;\n\n LineChart.prototype.__processData = function __processData () {\n return processSeries(this);\n };\n\n LineChart.prototype.__chartName = function __chartName () {\n return \"LineChart\";\n };\n\n return LineChart;\n }(Chart));\n\n var PieChart = /*@__PURE__*/(function (Chart) {\n function PieChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) PieChart.__proto__ = Chart;\n PieChart.prototype = Object.create( Chart && Chart.prototype );\n PieChart.prototype.constructor = PieChart;\n\n PieChart.prototype.__processData = function __processData () {\n return processSimple(this);\n };\n\n PieChart.prototype.__chartName = function __chartName () {\n return \"PieChart\";\n };\n\n return PieChart;\n }(Chart));\n\n var ColumnChart = /*@__PURE__*/(function (Chart) {\n function ColumnChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) ColumnChart.__proto__ = Chart;\n ColumnChart.prototype = Object.create( Chart && Chart.prototype );\n ColumnChart.prototype.constructor = ColumnChart;\n\n ColumnChart.prototype.__processData = function __processData () {\n return processSeries(this, null, true);\n };\n\n ColumnChart.prototype.__chartName = function __chartName () {\n return \"ColumnChart\";\n };\n\n return ColumnChart;\n }(Chart));\n\n var BarChart = /*@__PURE__*/(function (Chart) {\n function BarChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) BarChart.__proto__ = Chart;\n BarChart.prototype = Object.create( Chart && Chart.prototype );\n BarChart.prototype.constructor = BarChart;\n\n BarChart.prototype.__processData = function __processData () {\n return processSeries(this, null, true);\n };\n\n BarChart.prototype.__chartName = function __chartName () {\n return \"BarChart\";\n };\n\n return BarChart;\n }(Chart));\n\n var AreaChart = /*@__PURE__*/(function (Chart) {\n function AreaChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) AreaChart.__proto__ = Chart;\n AreaChart.prototype = Object.create( Chart && Chart.prototype );\n AreaChart.prototype.constructor = AreaChart;\n\n AreaChart.prototype.__processData = function __processData () {\n return processSeries(this);\n };\n\n AreaChart.prototype.__chartName = function __chartName () {\n return \"AreaChart\";\n };\n\n return AreaChart;\n }(Chart));\n\n var GeoChart = /*@__PURE__*/(function (Chart) {\n function GeoChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) GeoChart.__proto__ = Chart;\n GeoChart.prototype = Object.create( Chart && Chart.prototype );\n GeoChart.prototype.constructor = GeoChart;\n\n GeoChart.prototype.__processData = function __processData () {\n return processSimple(this);\n };\n\n GeoChart.prototype.__chartName = function __chartName () {\n return \"GeoChart\";\n };\n\n return GeoChart;\n }(Chart));\n\n var ScatterChart = /*@__PURE__*/(function (Chart) {\n function ScatterChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) ScatterChart.__proto__ = Chart;\n ScatterChart.prototype = Object.create( Chart && Chart.prototype );\n ScatterChart.prototype.constructor = ScatterChart;\n\n ScatterChart.prototype.__processData = function __processData () {\n return processSeries(this, \"number\");\n };\n\n ScatterChart.prototype.__chartName = function __chartName () {\n return \"ScatterChart\";\n };\n\n return ScatterChart;\n }(Chart));\n\n var BubbleChart = /*@__PURE__*/(function (Chart) {\n function BubbleChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) BubbleChart.__proto__ = Chart;\n BubbleChart.prototype = Object.create( Chart && Chart.prototype );\n BubbleChart.prototype.constructor = BubbleChart;\n\n BubbleChart.prototype.__processData = function __processData () {\n return processSeries(this, \"bubble\");\n };\n\n BubbleChart.prototype.__chartName = function __chartName () {\n return \"BubbleChart\";\n };\n\n return BubbleChart;\n }(Chart));\n\n var Timeline = /*@__PURE__*/(function (Chart) {\n function Timeline () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) Timeline.__proto__ = Chart;\n Timeline.prototype = Object.create( Chart && Chart.prototype );\n Timeline.prototype.constructor = Timeline;\n\n Timeline.prototype.__processData = function __processData () {\n var i, data = this.rawData;\n for (i = 0; i < data.length; i++) {\n data[i][1] = toDate(data[i][1]);\n data[i][2] = toDate(data[i][2]);\n }\n return data;\n };\n\n Timeline.prototype.__chartName = function __chartName () {\n return \"Timeline\";\n };\n\n return Timeline;\n }(Chart));\n\n var Chartkick = {\n LineChart: LineChart,\n PieChart: PieChart,\n ColumnChart: ColumnChart,\n BarChart: BarChart,\n AreaChart: AreaChart,\n GeoChart: GeoChart,\n ScatterChart: ScatterChart,\n BubbleChart: BubbleChart,\n Timeline: Timeline,\n charts: {},\n configure: function (options) {\n for (var key in options) {\n if (options.hasOwnProperty(key)) {\n config[key] = options[key];\n }\n }\n },\n setDefaultOptions: function (opts) {\n Chartkick.options = opts;\n },\n eachChart: function (callback) {\n for (var chartId in Chartkick.charts) {\n if (Chartkick.charts.hasOwnProperty(chartId)) {\n callback(Chartkick.charts[chartId]);\n }\n }\n },\n destroyAll: function() {\n for (var chartId in Chartkick.charts) {\n if (Chartkick.charts.hasOwnProperty(chartId)) {\n Chartkick.charts[chartId].destroy();\n delete Chartkick.charts[chartId];\n }\n }\n },\n config: config,\n options: {},\n adapters: adapters,\n addAdapter: addAdapter,\n use: function(adapter) {\n addAdapter(adapter);\n return Chartkick;\n }\n };\n\n // not ideal, but allows for simpler integration\n if (typeof window !== \"undefined\" && !window.Chartkick) {\n window.Chartkick = Chartkick;\n\n // clean up previous charts before Turbolinks loads new page\n document.addEventListener(\"turbolinks:before-render\", function() {\n if (config.autoDestroy !== false) {\n Chartkick.destroyAll();\n }\n });\n document.addEventListener(\"turbo:before-render\", function() {\n if (config.autoDestroy !== false) {\n Chartkick.destroyAll();\n }\n });\n\n // use setTimeout so charting library can come later in same JS file\n setTimeout(function() {\n window.dispatchEvent(new Event(\"chartkick:load\"));\n }, 0);\n }\n\n // backwards compatibility for esm require\n Chartkick.default = Chartkick;\n\n return Chartkick;\n\n}));\n","/*!\n * React Chartkick\n * Create beautiful JavaScript charts with one line of React\n * https://github.com/ankane/react-chartkick\n * v0.5.3\n * MIT License\n */\n\nimport React from 'react';\nimport Chartkick from 'chartkick';\nexport { default } from 'chartkick';\n\nfunction objectWithoutProperties (obj, exclude) { var target = {}; for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k]; return target; }\n\nvar chartId = 1;\n\nvar ChartComponent = /*@__PURE__*/(function (superclass) {\n function ChartComponent () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) ChartComponent.__proto__ = superclass;\n ChartComponent.prototype = Object.create( superclass && superclass.prototype );\n ChartComponent.prototype.constructor = ChartComponent;\n\n ChartComponent.prototype.newChartType = function newChartType (props) {\n var data = props.data;\n var options = {};\n for (var prop in props) {\n if (props.hasOwnProperty(prop) && prop !== \"data\" && prop !== \"id\" && prop !== \"height\" && prop !== \"width\") {\n options[prop] = props[prop];\n }\n }\n if (this.element) {\n if (this.chart) {\n this.chart.updateData(data, options);\n } else {\n this.chart = new props.chartType(this.element, data, options);\n }\n }\n };\n\n ChartComponent.prototype.componentDidMount = function componentDidMount () {\n this.newChartType(this.props);\n };\n\n ChartComponent.prototype.componentDidUpdate = function componentDidUpdate () {\n this.newChartType(this.props);\n };\n\n ChartComponent.prototype.componentWillUnmount = function componentWillUnmount () {\n if (this.chart) {\n this.chart.destroy();\n this.chart = undefined;\n }\n };\n\n ChartComponent.prototype.render = function render () {\n var this$1$1 = this;\n\n var props = this.props;\n var style = {\n height: props.height || \"300px\",\n lineHeight: props.height || \"300px\",\n width: props.width || \"100%\",\n textAlign: \"center\",\n color: \"#999\",\n fontSize: \"14px\",\n fontFamily: \"'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif\"\n };\n this.chartId = props.id || this.chartId || (\"chart-\" + chartId++);\n\n // check if undefined so works with empty string\n var loading = props.loading !== undefined ? props.loading : \"Loading...\";\n\n // createElement accepts React children,\n // but limit to string since it may be used by Chartkick.js\n if (typeof loading !== \"string\") {\n throw new Error(\"loading must be a string\");\n }\n\n return (\n React.createElement(\"div\", {id: this.chartId, style: style, ref: function (element) { return this$1$1.element = element; }},\n loading\n )\n )\n };\n\n return ChartComponent;\n}(React.Component));\n\nvar createComponent = function (chartType) {\n var ChartkickComponent = function (ref) {\n var innerRef = ref.innerRef;\n var rest = objectWithoutProperties( ref, [\"innerRef\"] );\n var props = rest;\n\n // props cloned when split from innerRef, so we can modify directly\n props.chartType = chartType;\n props.ref = innerRef;\n return React.createElement(ChartComponent, props)\n };\n ChartkickComponent.displayName = chartType.name;\n return ChartkickComponent\n};\n\nvar LineChart = createComponent(Chartkick.LineChart);\nvar PieChart = createComponent(Chartkick.PieChart);\nvar ColumnChart = createComponent(Chartkick.ColumnChart);\nvar BarChart = createComponent(Chartkick.BarChart);\nvar AreaChart = createComponent(Chartkick.AreaChart);\nvar ScatterChart = createComponent(Chartkick.ScatterChart);\nvar GeoChart = createComponent(Chartkick.GeoChart);\nvar Timeline = createComponent(Chartkick.Timeline);\n\nexport { AreaChart, BarChart, ColumnChart, GeoChart, LineChart, PieChart, ScatterChart, Timeline };\n","import {Chart, registerables} from '../dist/chart.js';\n\nChart.register(...registerables);\n\nexport * from '../dist/chart.js';\nexport default Chart;\n","/*!\n * @kurkle/color v0.3.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\n\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\n","/*!\n * Chart.js v4.1.2\n * https://www.chartjs.org\n * (c) 2023 Chart.js Contributors\n * Released under the MIT License\n */\nimport { Color } from '@kurkle/color';\n\n/**\n * @namespace Chart.helpers\n */ /**\n * An empty function that can be used, for example, for optional callback.\n */ function noop() {\n/* noop */ }\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */ const uid = (()=>{\n let id = 0;\n return ()=>id++;\n})();\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */ function isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */ function isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */ function isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value - The value to test.\n */ function isNumberFinite(value) {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */ function finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */ function valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension)=>typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 : +value / dimension;\nconst toDimension = (value, dimension)=>typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 * dimension : +value;\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */ function callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for(i = len - 1; i >= 0; i--){\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for(i = 0; i < len; i++){\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for(i = 0; i < len; i++){\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */ function _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for(i = 0, ilen = a0.length; i < ilen; ++i){\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */ function clone(source) {\n if (isArray(source)) {\n return source.map(clone);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for(; k < klen; ++k){\n target[keys[k]] = clone(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return [\n '__proto__',\n 'prototype',\n 'constructor'\n ].indexOf(key) === -1;\n}\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */ function _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n merge(tval, sval, options);\n } else {\n target[key] = clone(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [\n source\n ];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n let current;\n for(let i = 0; i < ilen; ++i){\n current = sources[i];\n if (!isObject(current)) {\n continue;\n }\n const keys = Object.keys(current);\n for(let k = 0, klen = keys.length; k < klen; ++k){\n merger(keys[k], target, current, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return merge(target, source, {\n merger: _mergerIf\n });\n}\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */ function _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone(sval);\n }\n}\n/**\n * @private\n */ function _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n '': (v)=>v,\n // default resolvers\n x: (o)=>o.x,\n y: (o)=>o.y\n};\n/**\n * @private\n */ function _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts){\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return (obj)=>{\n for (const k of keys){\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\n/**\n * @private\n */ function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value)=>typeof value !== 'undefined';\nconst isFunction = (value)=>typeof value === 'function';\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nconst setsEqual = (a, b)=>{\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a){\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\n/**\n * @param e - The event\n * @private\n */ function _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */ const PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */ function niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */ function _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for(i = 1; i < sqrt; i++){\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b)=>a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return rounded - epsilon <= x && rounded + epsilon >= x;\n}\n/**\n * @private\n */ function _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for(i = 0, ilen = array.length; i < ilen; i++){\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */ function _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while(Math.round(x * e) / e !== x){\n e *= 10;\n p++;\n }\n return p;\n}\n// Gets the angle from vertical upright to the point about a centre.\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < -0.5 * PI) {\n angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */ function _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */ function _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\n/**\n * @private\n */ function _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || sameAngleIsFullCircle && s === e || angleToStart > angleToEnd && startToAngle < endToAngle;\n}\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */ function _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n/**\n * @param {number} value\n * @private\n */ function _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */ function _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index)=>table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while(hi - lo > 1){\n mid = lo + hi >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {\n lo,\n hi\n };\n}\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */ const _lookupByKey = (table, key, value, last)=>_lookup(table, value, last ? (index)=>{\n const ti = table[index][key];\n return ti < value || ti === value && table[index + 1][key] === value;\n } : (index)=>table[index][key] < value);\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */ const _rlookupByKey = (table, key, value)=>_lookup(table, value, (index)=>table[index][key] >= value);\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */ function _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while(start < end && values[start] < min){\n start++;\n }\n while(end > start && values[end - 1] > max){\n end--;\n }\n return start > 0 || end < values.length ? values.slice(start, end) : values;\n}\nconst arrayEvents = [\n 'push',\n 'pop',\n 'shift',\n 'splice',\n 'unshift'\n];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [\n listener\n ]\n }\n });\n arrayEvents.forEach((key)=>{\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value (...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object)=>{\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key)=>{\n delete array[key];\n });\n delete array._chartjs;\n}\n/**\n * @param items\n */ function _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for(i = 0, ilen = items.length; i < ilen; ++i){\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n/**\n* Request animation polyfill\n*/ const requestAnimFrame = function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}();\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */ function throttled(fn, thisArg) {\n let argsToUse = [];\n let ticking = false;\n return function(...args) {\n // Save the args for use later\n argsToUse = args;\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, ()=>{\n ticking = false;\n fn.apply(thisArg, argsToUse);\n });\n }\n };\n}\n/**\n * Debounces calling `fn` for `delay` ms\n */ function debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */ const _toLeftRightCenter = (align)=>align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */ const _alignStartEnd = (align, start, end)=>align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */ const _textX = (align, left, right, rtl)=>{\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n/**\n * Return start and count of visible points.\n * @private\n */ function _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const { iScale , _parsed } = meta;\n const axis = iScale.axis;\n const { min , max , minDefined , maxDefined } = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(// @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, min).lo, // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo), 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(// @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1, // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1), start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {\n start,\n count\n };\n}\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */ function _scaleRangesChanged(meta) {\n const { xScale , yScale , _scaleRanges } = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min || _scaleRanges.xmax !== xScale.max || _scaleRanges.ymin !== yScale.min || _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nconst atEdge = (t)=>t === 0 || t === 1;\nconst elasticIn = (t, s, p)=>-(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p)=>Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */ const effects = {\n linear: (t)=>t,\n easeInQuad: (t)=>t * t,\n easeOutQuad: (t)=>-t * (t - 2),\n easeInOutQuad: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t : -0.5 * (--t * (t - 2) - 1),\n easeInCubic: (t)=>t * t * t,\n easeOutCubic: (t)=>(t -= 1) * t * t + 1,\n easeInOutCubic: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: (t)=>t * t * t * t,\n easeOutQuart: (t)=>-((t -= 1) * t * t * t - 1),\n easeInOutQuart: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: (t)=>t * t * t * t * t,\n easeOutQuint: (t)=>(t -= 1) * t * t * t * t + 1,\n easeInOutQuint: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t * t * t : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: (t)=>-Math.cos(t * HALF_PI) + 1,\n easeOutSine: (t)=>Math.sin(t * HALF_PI),\n easeInOutSine: (t)=>-0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: (t)=>t === 0 ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: (t)=>t === 1 ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: (t)=>atEdge(t) ? t : t < 0.5 ? 0.5 * Math.pow(2, 10 * (t * 2 - 1)) : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: (t)=>t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: (t)=>Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: (t)=>(t /= 0.5) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: (t)=>atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: (t)=>atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic (t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t : t < 0.5 ? 0.5 * elasticIn(t * 2, s, p) : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack (t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack (t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack (t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2);\n },\n easeInBounce: (t)=>1 - effects.easeOutBounce(1 - t),\n easeOutBounce (t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < 1 / d) {\n return m * t * t;\n }\n if (t < 2 / d) {\n return m * (t -= 1.5 / d) * t + 0.75;\n }\n if (t < 2.5 / d) {\n return m * (t -= 2.25 / d) * t + 0.9375;\n }\n return m * (t -= 2.625 / d) * t + 0.984375;\n },\n easeInOutBounce: (t)=>t < 0.5 ? effects.easeInBounce(t * 2) * 0.5 : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5\n};\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : new Color(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value) ? value : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst numbers = [\n 'x',\n 'y',\n 'borderWidth',\n 'radius',\n 'tension'\n];\nconst colors = [\n 'color',\n 'borderColor',\n 'backgroundColor'\n];\nfunction applyAnimationsDefaults(defaults) {\n defaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined\n });\n defaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name)=>name !== 'onProgress' && name !== 'onComplete' && name !== 'fn'\n });\n defaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n }\n });\n defaults.describe('animations', {\n _fallback: 'animation'\n });\n defaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n }\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: (v)=>v | 0\n }\n }\n }\n });\n}\n\nfunction applyLayoutsDefaults(defaults) {\n defaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n });\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst formatters = {\n values (value) {\n return isArray(value) ? value : '' + value;\n },\n numeric (tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {\n notation,\n minimumFractionDigits: numDecimal,\n maximumFractionDigits: numDecimal\n };\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic (tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = ticks[index].significand || tickValue / Math.pow(10, Math.floor(log10(tickValue)));\n if ([\n 1,\n 2,\n 3,\n 5,\n 10,\n 15\n ].includes(remain) || index > 0.8 * ticks.length) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\n var Ticks = {\n formatters\n};\n\nfunction applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options)=>options.lineWidth,\n tickColor: (_ctx, options)=>options.color,\n offset: false\n },\n border: {\n display: true,\n dash: [],\n dashOffset: 0.0,\n width: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2\n }\n });\n defaults.route('scale.ticks', 'color', '', 'color');\n defaults.route('scale.grid', 'color', '', 'borderColor');\n defaults.route('scale.border', 'color', '', 'borderColor');\n defaults.route('scale.title', 'color', '', 'color');\n defaults.describe('scale', {\n _fallback: false,\n _scriptable: (name)=>!name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name)=>name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash'\n });\n defaults.describe('scales', {\n _fallback: 'scale'\n });\n defaults.describe('scale.ticks', {\n _scriptable: (name)=>name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name)=>name !== 'backdropPadding'\n });\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\n function getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for(let i = 0, n = keys.length; i < n; ++i){\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\n class Defaults {\n constructor(_descriptors, _appliers){\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context)=>context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options)=>getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options)=>getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options)=>getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n this.apply(_appliers);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get () {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set (value) {\n this[privateName] = value;\n }\n }\n });\n }\n apply(appliers) {\n appliers.forEach((apply)=>apply(this));\n }\n}\nvar defaults = /* #__PURE__ */ new Defaults({\n _scriptable: (name)=>!name.startsWith('on'),\n _indexable: (name)=>name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false\n }\n}, [\n applyAnimationsDefaults,\n applyLayoutsDefaults,\n applyScaleDefaults\n]);\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family;\n}\n function _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\n function _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for(i = 0; i < ilen; i++){\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for(j = 0, jlen = thing.length; j < jlen; j++){\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for(i = 0; i < gcLen; i++){\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\n function _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n function clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width, xOffsetW, yOffsetW;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch(style){\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n case false:\n ctx.closePath();\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n function _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || point && point.x > area.left - margin && point.x < area.right + margin && point.y > area.top - margin && point.y < area.bottom + margin;\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\n function _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\n function _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(flip ? previous.cp1x : previous.cp2x, flip ? previous.cp1y : previous.cp2y, flip ? target.cp2x : target.cp1x, flip ? target.cp2y : target.cp1y, target.x, target.y);\n}\n function renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [\n text\n ];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for(i = 0; i < lines.length; ++i){\n line = lines[i];\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction drawBackdrop(ctx, opts) {\n const oldColor = ctx.fillStyle;\n ctx.fillStyle = opts.color;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n function addRoundedRectPath(ctx, rect) {\n const { x , y , w , h , radius } = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n/**\n * @alias Chart.helpers.options\n * @namespace\n */ /**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */ function toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch(matches[3]){\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = (v)=>+v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value) ? objProps ? (prop)=>valueOrDefault(value[prop], value[props[prop]]) : (prop)=>value[prop] : ()=>value;\n for (const prop of keys){\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */ function toTRBL(value) {\n return _readValueToProps(value, {\n top: 'y',\n right: 'x',\n bottom: 'y',\n left: 'x'\n });\n}\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */ function toTRBLCorners(value) {\n return _readValueToProps(value, [\n 'topLeft',\n 'topRight',\n 'bottomLeft',\n 'bottomRight'\n ]);\n}\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */ function toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */ function toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */ function resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for(i = 0, ilen = inputs.length; i < ilen; ++i){\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */ function _addGrace(minmax, grace, beginAtZero) {\n const { min , max } = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add)=>beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _createResolver(scopes, prefixes = [\n ''\n], rootScopes = scopes, fallback, getTarget = ()=>scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope)=>_createResolver([\n scope,\n ...scopes\n ], prefixes, rootScopes, fallback)\n };\n return new Proxy(cache, {\n deleteProperty (target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get (target, prop) {\n return _cached(target, prop, ()=>_resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor (target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf () {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has (target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys (target) {\n return getKeysFromAllScopes(target);\n },\n set (target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\n function _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx)=>_attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope)=>_attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty (target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get (target, prop, receiver) {\n return _cached(target, prop, ()=>_resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor (target, prop) {\n return target._descriptors.allKeys ? Reflect.has(proxy, prop) ? {\n enumerable: true,\n configurable: true\n } : undefined : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf () {\n return Reflect.getPrototypeOf(proxy);\n },\n has (target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys () {\n return Reflect.ownKeys(proxy);\n },\n set (target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\n function _descriptors(proxy, defaults = {\n scriptable: true,\n indexable: true\n}) {\n const { _scriptable =defaults.scriptable , _indexable =defaults.indexable , _allKeys =defaults.allKeys } = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : ()=>_scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : ()=>_indexable\n };\n}\nconst readKey = (prefix, name)=>prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value)=>isObject(value) && prop !== 'adapters' && (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const { _proxy , _context , _subProxy , _descriptors: descriptors } = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const { _proxy , _context , _subProxy , _stack } = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const { _proxy , _context , _subProxy , _descriptors: descriptors } = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter((s)=>s !== arr);\n value = [];\n for (const item of arr){\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent)=>key === true ? parent : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes){\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [\n ...parentScopes,\n ...rootScopes\n ];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [\n ''\n ], rootScopes, fallback, ()=>subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while(key){\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target || {};\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes){\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value) ? createSubResolver(scopes, proxy, prop, value) : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes){\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes){\n for (const key of Object.keys(scope).filter((k)=>!k.startsWith('_'))){\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const { iScale } = meta;\n const { key ='r' } = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i)=>i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis)=>indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n // This function must also respect \"skipped\" points\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01; // scaling factor for triangle Ta\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n/**\n * Adjust tangents to ensure monotonic properties\n */ function monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(let i = 0; i < pointsLen - 1; ++i){\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(let i = 0; i < pointsLen; ++i){\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */ function splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n // Calculate slopes (deltaK) and initialize tangents (mK)\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(i = 0; i < pointsLen; ++i){\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i] : !pointAfter ? deltaK[i - 1] : sign(deltaK[i - 1]) !== sign(deltaK[i]) ? 0 : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for(i = 0, ilen = points.length; i < ilen; ++i){\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n/**\n * @private\n */ function _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter((pt)=>!pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for(i = 0, ilen = points.length; i < ilen; ++i){\n point = points[i];\n controlPoints = splineCurve(prev, point, points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen], options.tension);\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\n/**\n * Note: typedefs are auto-exported, so use a made-up `dom` namespace where\n * necessary to avoid duplicates with `export * from './helpers`; see\n * https://github.com/microsoft/TypeScript/issues/46011\n * @typedef { import('../core/core.controller.js').default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */ /**\n * @private\n */ function _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * @private\n */ function _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */ function parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element)=>element.ownerDocument.defaultView.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = [\n 'top',\n 'right',\n 'bottom',\n 'left'\n];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for(let i = 0; i < 4; i++){\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target)=>(x > 0 || y > 0) && (!target || !target.shadowRoot);\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */ function getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const { offsetX , offsetY } = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {\n x,\n y,\n box\n };\n}\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */ function getRelativePosition(event, chart) {\n if ('native' in event) {\n return event;\n }\n const { canvas , currentDevicePixelRatio } = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const { x , y , box } = getCanvasPosition(event, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let { width , height } = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect(); // this is the border box of the container\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = (v)=>Math.round(v * 10) / 10;\n// eslint-disable-next-line complexity\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let { width , height } = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n return {\n width,\n height\n };\n}\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */ function retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = Math.floor(chart.height);\n chart.width = Math.floor(chart.width);\n const canvas = chart.canvas;\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (canvas.style && (forceStyle || !canvas.style.height && !canvas.style.width)) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio || canvas.height !== deviceHeight || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */ const supportsEventListenerOptions = function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive () {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n // continue regardless of error\n }\n return passiveSupported;\n}();\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */ function readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\n/**\n * @private\n */ function _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n/**\n * @private\n */ function _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y : mode === 'after' ? t < 1 ? p1.y : p2.y : t > 0 ? p2.y : p1.y\n };\n}\n/**\n * @private\n */ function _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {\n x: p1.cp2x,\n y: p1.cp2y\n };\n const cp2 = {\n x: p2.cp1x,\n y: p2.cp1y\n };\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x (x) {\n return rectX + rectX + width - x;\n },\n setWidth (w) {\n width = w;\n },\n textAlign (align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus (x, value) {\n return x - value;\n },\n leftForLtr (x, itemWidth) {\n return x - itemWidth;\n }\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x (x) {\n return x;\n },\n setWidth (w) {},\n textAlign (align) {\n return align;\n },\n xPlus (x, value) {\n return x + value;\n },\n leftForLtr (x, _itemWidth) {\n return x;\n }\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction')\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle\n };\n }\n return {\n between: _isBetween,\n compare: (a, b)=>a - b,\n normalize: (x)=>x\n };\n}\nfunction normalizeSegment({ start , end , count , loop , style }) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const { property , start: startBound , end: endBound } = bounds;\n const { between , normalize } = propertyFn(property);\n const count = points.length;\n let { start , end , loop } = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for(i = 0, ilen = count; i < ilen; ++i){\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {\n start,\n end,\n loop,\n style: segment.style\n };\n}\n function _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [\n segment\n ];\n }\n const { property , start: startBound , end: endBound } = bounds;\n const count = points.length;\n const { compare , between , normalize } = propertyFn(property);\n const { start , end , loop , style } = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = ()=>between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = ()=>compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = ()=>inside || startIsBefore();\n const shouldStop = ()=>!inside || endIsBefore();\n for(let i = start, prev = start; i <= end; ++i){\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({\n start: subStart,\n end: i,\n loop,\n count,\n style\n }));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({\n start: subStart,\n end,\n loop,\n count,\n style\n }));\n }\n return result;\n}\n function _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for(let i = 0; i < segments.length; i++){\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\n function findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while(start < count && !points[start].skip){\n start++;\n }\n }\n while(start < count && points[start].skip){\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while(end > start && points[end % count].skip){\n end--;\n }\n end %= count;\n return {\n start,\n end\n };\n}\n function solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for(end = start + 1; end <= max; ++end){\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({\n start: start % count,\n end: (end - 1) % count,\n loop\n });\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({\n start: start % count,\n end: last % count,\n loop\n });\n }\n return result;\n}\n function _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const { start , end } = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [\n {\n start,\n end,\n loop\n }\n ], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n function splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\n function doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const { _datasetIndex: datasetIndex , options: { spanGaps } } = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while(points[s % count].skip){\n s -= dir;\n }\n while(points[e % count].skip){\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({\n start: s % count,\n end: e % count,\n loop: l,\n style: st\n });\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments){\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for(i = start + 1; i <= segment.end; i++){\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { unclipArea as $, _rlookupByKey as A, _lookupByKey as B, _isPointInArea as C, getAngleFromPoint as D, toPadding as E, each as F, getMaximumSize as G, HALF_PI as H, _getParentNode as I, readUsedSize as J, supportsEventListenerOptions as K, throttled as L, _isDomSupported as M, _factorize as N, finiteOrDefault as O, PI as P, callback as Q, _addGrace as R, _limitValue as S, TAU as T, toDegrees as U, _measureText as V, _int16Range as W, _alignPixel as X, clipArea as Y, renderText as Z, _arrayUnique as _, resolve as a, fontString as a$, toFont as a0, _toLeftRightCenter as a1, _alignStartEnd as a2, overrides as a3, merge as a4, _capitalize as a5, descriptors as a6, isFunction as a7, _attachContext as a8, _createResolver as a9, overrideTextDirection as aA, _textX as aB, restoreTextDirection as aC, drawPointLegend as aD, distanceBetweenPoints as aE, noop as aF, _setMinAndMaxByKey as aG, niceNum as aH, almostWhole as aI, almostEquals as aJ, _decimalPlaces as aK, Ticks as aL, log10 as aM, _longestText as aN, _filterBetween as aO, _lookup as aP, isPatternOrGradient as aQ, getHoverColor as aR, clone as aS, _merger as aT, _mergerIf as aU, _deprecated as aV, _splitKey as aW, toFontString as aX, splineCurve as aY, splineCurveMonotone as aZ, getStyle as a_, _descriptors as aa, mergeIf as ab, uid as ac, debounce as ad, retinaScale as ae, clearCanvas as af, setsEqual as ag, _elementsEqual as ah, _isClickEvent as ai, _isBetween as aj, _readValueToProps as ak, _updateBezierControlPoints as al, _computeSegments as am, _boundSegments as an, _steppedInterpolation as ao, _bezierInterpolation as ap, _pointInLine as aq, _steppedLineTo as ar, _bezierCurveTo as as, drawPoint as at, addRoundedRectPath as au, toTRBL as av, toTRBLCorners as aw, _boundSegment as ax, _normalizeAngle as ay, getRtlAdapter as az, isArray as b, toLineHeight as b0, PITAU as b1, INFINITY as b2, RAD_PER_DEG as b3, QUARTER_PI as b4, TWO_THIRDS_PI as b5, _angleDiff as b6, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, defined as h, isObject as i, createContext as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, getRelativePosition as z };\n//# sourceMappingURL=helpers.segment.js.map\n"],"names":["asn_CheckCircleFilled","CheckCircleFilled_CheckCircleFilled","props","ref","react","createElement","AntdIcon","Z","objectSpread2","icon","displayName","icons_CheckCircleFilled","forwardRef","module","exports","factory","isArray","variable","Object","prototype","toString","call","isFunction","Function","isPlainObject","extend","target","source","key","undefined","merge","obj1","obj2","DATE_PATTERN","toStr","n","toFloat","parseFloat","toDate","matches","year","month","day","Date","match","parseInt","str","replace","parse","toArr","i","arr","hasOwnProperty","push","jsOptionsFunc","defaultOptions","hideLegend","setTitle","setMin","setMax","setStacked","setXtitle","setYtitle","chart","opts","chartOptions","series","data","options","singleSeriesFormat","legend","title","min","negativeValues","j","length","max","stacked","colors","xtitle","ytitle","library","sortByTime","a","b","getTime","sortByNumberSeries","sortByNumber","isMinute","d","getMilliseconds","getSeconds","isHour","getMinutes","isDay","getHours","isMonth","getDate","isDate","obj","isNaN","isNumber","byteSuffixes","formatValue","pre","value","axis","prefix","suffix","precision","round","byteScale","suffixIdx","baseValue","Error","toPrecision","zeros","num","Math","pow","toFixed","thousands","decimal","parts","split","seriesOption","option","baseOptions","maintainAspectRatio","animation","plugins","tooltip","displayColors","callbacks","font","size","color","interaction","defaultOptions$2","scales","y","ticks","maxTicksLimit","grid","x","drawOnChartArea","time","defaultColors","hideLegend$2","display","position","setTitle$2","text","setBarMin$1","setBarMax$1","setStacked$2","setXtitle$2","setYtitle$2","addOpacity","hex","opacity","result","exec","notnull","setLabelSize","maxLabelSize","ceil","element","offsetWidth","labels","callback","getLabelForValue","substring","setFormatOptions$1","chartType","formatOptions","bytes","s","scale","stepSize","label","context","dataset","formattedValue","dataPoint","raw","v","dataLabel","slice","parsed","valueLabel","jsOptions$2","createDataTable","datasets","week","hour","minute","i$1","s$1","j$1","dayOfWeek","rows","rows2","xtype","k","sortedLabels","indexOf","sort","getDay","getMonth","i$2","s$2","d$1","j$2","point","r","backgroundColor","j$3","name","fill","borderColor","borderWidth","pointChart","pointBackgroundColor","pointHoverBackgroundColor","pointHitRadius","pointHoverBorderWidth","stack","curve","tension","pointRadius","pointHoverRadius","xmin","xmax","step","minTime","maxTime","value$1","timeDiff","unit","displayFormats","width","unitStepSize","tooltipFormat","defaultExport$2","renderLineChart","allZeros","type","drawChart","renderPieChart","donut","cutout","values","renderColumnChart","barOptions","indexAxis","renderAreaChart","renderBarChart","renderScatterChart","showLine","mode","renderBubbleChart","destroy","destroyed","code","window","console","log","JSON","stringify","innerHTML","ctx","getElementsByTagName","defaultOptions$1","xAxis","style","fontSize","yAxis","credits","enabled","plotOptions","areaspline","area","marker","useUTC","hideLegend$1","verticalAlign","layout","align","setTitle$1","jsOptions$1","stackedValue","stacking","setFormatOptions","formatter","pointFormatter","pointFormat","defaultExport$1","symbol","points","pie","innerSize","categories","d2","newSeries","renderTo","id","Chart","loaded","chartArea","fontName","pointSize","textStyle","alignment","curveType","hAxis","titleTextStyle","gridlines","baselineColor","viewWindow","vAxis","setBarMin","setBarMax","isStacked","italic","jsOptions","resize","attachEvent","addEventListener","defaultExport","detectXTypeWithFunction","func","processSeries","keyType","noDatetime","rawData","copySeries","copy","discrete","formatSeriesData","keyFunc","processSimple","perfectData","dataEmpty","addEvent","elem","event","fn","fn2","removeEvent","removeEventListener","detachEvent","childOf","p","c","parentNode","this$1$1","waitForLoaded","top","height","pieHole","visualization","DataTable","addColumn","addRows","areaOpacity","renderGeoChart","colorAxis","row","renderTimeline","lineHeight","clearChart","toJSON","draw","pack","runCallbacks","loadOptions","packages","config","__config","language","mapsApiKey","charts","load","cb","LineChart","Timeline","GeoChart","splice","columnType","concat","pendingRequests","runningRequests","runNext","url","success","error","request","shift","ajaxCall","$","jQuery","Zepto","ajax","dataType","complete","requestComplete","xhr","XMLHttpRequest","open","setRequestHeader","onload","status","responseText","statusText","send","jqXHR","textStatus","errorThrown","message","adapters","setText","document","body","innerText","textContent","chartError","noPrefix","errorCatcher","__render","err","fetchDataSource","dataSource","showLoading","loading","addAdapter","adapter","getAdapterType","product","elementId","getElementById","Chartkick","refresh","startRefresh","getElement","getDataSource","getData","getOptions","getChartObject","getAdapter","updateData","__updateOptions","setOptions","redraw","refreshData","sep","intervalId","setInterval","stopRefresh","clearInterval","toImage","download","background","toBase64Image","canvas","tmpCanvas","tmpCtx","getContext","fillStyle","fillRect","drawImage","toDataURL","__adapterObject","__enterEvent","__leaveEvent","updateRefresh","__processData","renderChart","link","image","empty","messages","callAdapter","fnName","adapterName","Highcharts","google","__downloadAttached","filename","right","zIndex","alt","border","src","appendChild","e","related","relatedTarget","href","removeChild","__chartName","apply","arguments","__proto__","create","constructor","PieChart","ColumnChart","BarChart","AreaChart","ScatterChart","BubbleChart","configure","setDefaultOptions","eachChart","chartId","destroyAll","use","autoDestroy","setTimeout","dispatchEvent","Event","default","ChartComponent","superclass","newChartType","prop","componentDidMount","componentDidUpdate","componentWillUnmount","render","textAlign","fontFamily","react__WEBPACK_IMPORTED_MODULE_0__","Component","createComponent","ChartkickComponent","innerRef","objectWithoutProperties","exclude","chartkick__WEBPACK_IMPORTED_MODULE_1___default","_dist_chart_js__WEBPACK_IMPORTED_MODULE_0__","kL","register","zX","__webpack_exports__","names","_attachContext","proxy","subProxy","descriptorDefaults","cache","_cacheable","_proxy","_context","_subProxy","_stack","Set","_descriptors","setContext","override","scope","Proxy","deleteProperty","get","receiver","_cached","_resolveWithContext","descriptors","isScriptable","_resolveScriptable","has","Array","from","join","add","delete","needsSubResolver","createSubResolver","_scopes","_resolveArray","isIndexable","defined","index","isObject","scopes","filter","item","resolver","getOwnPropertyDescriptor","allKeys","Reflect","enumerable","configurable","getPrototypeOf","ownKeys","set","lim","l","h","p2b","n2b","b2n","n2p","map$1","A","B","C","D","E","F","f","h1","h2","eq","isShort","g","alpha","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","w","rgb","rgb2hsl","calln","map","hue","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","G","H","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","RGB_RE","to","modHSL","ratio","tmp","clone","proto","assign","fromObject","input","Color","ret","len","hexParse","nameParse","unpack","ok","nk","unpacked","keys","tkeys","transparent","toLowerCase","charAt","rgbParse","m","hueParse","p1","p2","_rgb","_valid","valid","rgbString","hexString","hslString","mix","weight","w2","c1","c2","w1","interpolate","t","rgb1","rgb2","clearer","greyscale","val","opaquer","negate","lighten","darken","saturate","desaturate","rotate","deg","noop","uid","isNullOrUndef","isNumberFinite","Number","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toPercentage","dimension","endsWith","toDimension","args","thisArg","each","loopable","reverse","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","helpers_segment_clone","klen","isValidKey","_merger","tval","sval","current","sources","merger","mergeIf","_mergerIf","keyResolvers","o","resolveObjectKey","_getKeyResolver","_splitKey","part","_capitalize","toUpperCase","setsEqual","_isClickEvent","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","almostEquals","epsilon","abs","niceNum","range","roundedRange","niceRange","floor","fraction","niceFraction","_factorize","sqrt","pop","almostWhole","rounded","_setMinAndMaxByKey","array","property","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","start","end","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","_lookup","table","cmp","mid","hi","lo","_lookupByKey","last","ti","_rlookupByKey","_filterBetween","arrayEvents","listenArrayEvents","listener","_chartjs","listeners","defineProperty","forEach","method","base","res","object","unlistenArrayEvents","stub","_arrayUnique","items","requestAnimFrame","requestAnimationFrame","throttled","argsToUse","ticking","debounce","delay","timeout","clearTimeout","_toLeftRightCenter","_alignStartEnd","_textX","left","rtl","_getStartAndCountOfVisiblePoints","meta","animationsDisabled","pointCount","count","_sorted","iScale","_parsed","minDefined","maxDefined","getUserBounds","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","ymin","ymax","changed","atEdge","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","isPatternOrGradient","getHoverColor","numbers","intlCache","Map","formatNumber","locale","getNumberFormat","cacheKey","Intl","NumberFormat","format","formatters","numeric","tickValue","notation","delta","maxTick","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","remain","significand","includes","Ticks","overrides","getScope$1","node","root","defaults","_appliers","devicePixelRatio","platform","getDevicePixelRatio","elements","events","family","hover","hoverBackgroundColor","hoverBorderColor","hoverColor","intersect","includeInvisible","onHover","onClick","parsing","responsive","drawActiveElementsOnTop","describe","route","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","writable","local","appliers","_scriptable","startsWith","_indexable","_fallback","duration","easing","loop","properties","active","show","animations","visible","hide","autoPadding","padding","bottom","offset","beginAtZero","bounds","grace","lineWidth","drawTicks","tickLength","tickWidth","_ctx","tickColor","dash","dashOffset","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","minor","major","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","_measureText","gc","longest","string","textWidth","measureText","_longestText","arrayOfThings","jlen","thing","nestedThing","garbageCollect","save","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","resetTransform","clearRect","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","xOffsetW","yOffsetW","pointStyle","rotation","radius","rad","translate","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","stroke","_isPointInArea","margin","clipArea","clip","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","line","lines","strokeWidth","strokeColor","translation","textBaseline","backdrop","drawBackdrop","oldColor","strokeStyle","strokeText","maxWidth","fillText","decorateText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","numberOrZero","_readValueToProps","objProps","read","toTRBL","toTRBLCorners","toPadding","toFont","fallback","warn","toLineHeight","resolve","inputs","info","cacheable","_addGrace","minmax","change","keepZero","createContext","parentContext","_createResolver","prefixes","rootScopes","getTarget","_resolve","Symbol","toStringTag","_rootScopes","_getTarget","_keys","_resolveWithPrefixes","readKey","getKeysFromAllScopes","storage","_storage","scriptable","indexable","_allKeys","getScope","parent","parentScopes","allScopes","addScopesFromKey","subGetTarget","addScopes","parentFallback","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","EPSILON","getPoint","skip","getValueAxis","capControlPoint","pt","_updateBezierControlPoints","controlPoints","spanGaps","cubicInterpolationMode","splineCurveMonotone","pointBefore","pointCurrent","valueAxis","pointsLen","deltaK","mK","pointAfter","slopeDelta","monotoneAdjust","alphaK","betaK","tauK","squaredMagnitude","monotoneCompute","iPixel","vPixel","prev","splineCurve","firstPoint","middlePoint","afterPoint","next","d01","d12","s01","s12","fa","fb","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","ownerDocument","defaultView","positions","getPositionedStyle","styles","pos","useOffsetPos","shadowRoot","getRelativePosition","borderBox","boxSizing","paddings","borders","box","getCanvasPosition","touches","offsetX","offsetY","getBoundingClientRect","clientX","clientY","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","maxHeight","containerSize","getContainerSize","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","passive","readUsedSize","getPropertyValue","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","getRtlAdapter","rectX","setWidth","xPlus","leftForLtr","itemWidth","_itemWidth","overrideTextDirection","direction","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","_boundSegment","segment","prevValue","startBound","endBound","getSegment","inside","subStart","startIsBefore","endIsBefore","shouldStart","shouldStop","_boundSegments","segments","sub","_computeSegments","segmentOptions","_loop","findStartAndEnd","splitByStyles","completeLoop","_fullLoop","solidSegments","cur","stop","doSplitByStyles","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","dir","p0","p0DataIndex","p1DataIndex","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle"],"sourceRoot":""} \ No newline at end of file diff --git a/static/web/_next/static/chunks/ee8b1517-d8b698f377abd86b.js b/static/web/_next/static/chunks/ee8b1517-2d287d36db8884e0.js similarity index 99% rename from static/web/_next/static/chunks/ee8b1517-d8b698f377abd86b.js rename to static/web/_next/static/chunks/ee8b1517-2d287d36db8884e0.js index 2af8ffdcb..2f1cb318e 100644 --- a/static/web/_next/static/chunks/ee8b1517-d8b698f377abd86b.js +++ b/static/web/_next/static/chunks/ee8b1517-2d287d36db8884e0.js @@ -1,7 +1,7 @@ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2196],{23148:function(t,e,i){i.d(e,{kL:function(){return tN},zX:function(){return e2}});var s=i(9676),a=new /*! - * Chart.js v4.1.1 + * Chart.js v4.1.2 * https://www.chartjs.org - * (c) 2022 Chart.js Contributors + * (c) 2023 Chart.js Contributors * Released under the MIT License - */class{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){let a=e.listeners[s],n=e.duration;a.forEach(s=>s({chart:t,initial:e.initial,numSteps:n,currentStep:Math.min(i-e.start,n)}))}_refresh(){this._request||(this._running=!0,this._request=s.r.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(t=Date.now()){let e=0;this._charts.forEach((i,s)=>{let a;if(!i.running||!i.items.length)return;let n=i.items,r=n.length-1,o=!1;for(;r>=0;--r)(a=n[r])._active?(a._total>i.duration&&(i.duration=a._total),a.tick(t),o=!0):(n[r]=n[n.length-1],n.pop());o&&(s.draw(),this._notify(s,i,t,"progress")),n.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=n.length}),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){let e=this._charts,i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){let e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce((t,e)=>Math.max(t,e._duration),0),this._refresh())}running(t){if(!this._running)return!1;let e=this._charts.get(t);return!!e&&!!e.running&&!!e.items.length}stop(t){let e=this._charts.get(t);if(!e||!e.items.length)return;let i=e.items,s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}};let n="transparent",r={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){let a=(0,s.c)(t||n),r=a.valid&&(0,s.c)(e||n);return r&&r.valid?r.mix(a,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class o{constructor(t,e,i,a){let n=e[i];a=(0,s.a)([t.to,a,n,t.from]);let o=(0,s.a)([t.from,n,a]);this._active=!0,this._fn=t.fn||r[t.type||typeof o],this._easing=s.e[t.easing]||s.e.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=a,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);let a=this._target[this._prop],n=i-this._start,r=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(r,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=(0,s.a)([t.to,e,a,t.from]),this._from=(0,s.a)([t.from,a,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){let e;let i=t-this._start,s=this._duration,a=this._prop,n=this._from,r=this._loop,o=this._to;if(this._active=n!==o&&(r||i1?2-e:e,e=this._easing(Math.min(1,Math.max(0,e))),this._target[a]=this._fn(n,o,e)}wait(){let t=this._promises||(this._promises=[]);return new Promise((e,i)=>{t.push({res:e,rej:i})})}_notify(t){let e=t?"res":"rej",i=this._promises||[];for(let s=0;s{let n=t[a];if(!(0,s.i)(n))return;let r={};for(let o of e)r[o]=n[o];((0,s.b)(n.properties)&&n.properties||[a]).forEach(t=>{t!==a&&i.has(t)||i.set(t,r)})})}_animateOptions(t,e){let i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i){t.options=e;return}return i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}})),i}(t,i);if(!s)return[];let a=this._createAnimations(s,i);return i.$shared&&(function(t,e){let i=[],s=Object.keys(e);for(let a=0;a{t.options=i},()=>{}),a}_createAnimations(t,e){let i;let s=this._properties,a=[],n=t.$animations||(t.$animations={}),r=Object.keys(e),l=Date.now();for(i=r.length-1;i>=0;--i){let h=r[i];if("$"===h.charAt(0))continue;if("options"===h){a.push(...this._animateOptions(t,e));continue}let d=e[h],c=n[h],u=s.get(h);if(c){if(u&&c.active()){c.update(u,d,l);continue}c.cancel()}if(!u||!u.duration){t[h]=d;continue}n[h]=c=new o(u,t,h,d),a.push(c)}return a}update(t,e){if(0===this._properties.size){Object.assign(t,e);return}let i=this._createAnimations(t,e);if(i.length)return a.add(this._chart,i),!0}}function h(t,e){let i=t&&t.options||{},s=i.reverse,a=void 0===i.min?e:0,n=void 0===i.max?e:0;return{start:s?n:a,end:s?a:n}}function d(t,e){let i,s;let a=[],n=t._getSortedDatasetMetas(e);for(i=0,s=n.length;i0||!i&&n<0)return a.index}return null}function p(t,e){let i;let{chart:s,_cachedMeta:a}=t,n=s._stacks||(s._stacks={}),{iScale:r,vScale:o,index:l}=a,h=r.axis,d=o.axis,c=`${r.id}.${o.id}.${a.stack||a.type}`,u=e.length;for(let p=0;pi[t].axis===e).shift()}function m(t,e){let i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s)for(let a of e=e||t._parsed){let n=a._stacks;if(!n||void 0===n[s]||void 0===n[s][i])return;delete n[s][i],void 0!==n[s]._visualValues&&void 0!==n[s]._visualValues[i]&&delete n[s]._visualValues[i]}}let b=t=>"reset"===t||"none"===t,x=(t,e)=>e?t:Object.assign({},t),_=(t,e,i)=>t&&!e.hidden&&e._stacked&&{keys:d(i,!0),values:null};class v{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){let t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=u(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&m(this._cachedMeta),this.index=t}linkScales(){let t=this.chart,e=this._cachedMeta,i=this.getDataset(),a=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,n=e.xAxisID=(0,s.v)(i.xAxisID,f(t,"x")),r=e.yAxisID=(0,s.v)(i.yAxisID,f(t,"y")),o=e.rAxisID=(0,s.v)(i.rAxisID,f(t,"r")),l=e.indexAxis,h=e.iAxisID=a(l,n,r,o),d=e.vAxisID=a(l,r,n,o);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(r),e.rScale=this.getScaleForId(o),e.iScale=this.getScaleForId(h),e.vScale=this.getScaleForId(d)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){let e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){let t=this._cachedMeta;this._data&&(0,s.u)(this._data,this),t._stacked&&m(t)}_dataCheck(){let t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if((0,s.i)(e))this._data=function(t){let e,i,s;let a=Object.keys(t),n=Array(a.length);for(e=0,i=a.length;e0&&r._parsed[t-1];if(!1===this._parsing)r._parsed=o,r._sorted=!0,n=o;else{n=(0,s.b)(o[t])?this.parseArrayData(r,o,t,e):(0,s.i)(o[t])?this.parseObjectData(r,o,t,e):this.parsePrimitiveData(r,o,t,e);let g=()=>null===a[d]||u&&a[d]e||g=0;--i)if(!p()){this.updateRangeFromParsed(c,t,a,d);break}}return c}getAllParsedValues(t){let e,i,a;let n=this._cachedMeta._parsed,r=[];for(e=0,i=n.length;e=0&&tthis.getContext(i,a,e),f=h.resolveNamedOptions(u,g,p,c);return f.$shared&&(f.$shared=l,n[r]=Object.freeze(x(f,l))),f}_resolveAnimations(t,e,i){let s;let a=this.chart,n=this._cachedDataOpts,r=`animation-${e}`,o=n[r];if(o)return o;if(!1!==a.options.animation){let h=this.chart.config,d=h.datasetAnimationScopeKeys(this._type,e),c=h.getOptionScopes(this.getDataset(),d);s=h.createResolver(c,this.getContext(t,i,e))}let u=new l(a,s&&s.animations);return s&&s._cacheable&&(n[r]=Object.freeze(u)),u}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||b(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){let i=this.resolveDataElementOptions(t,e),s=this._sharedOptions,a=this.getSharedOptions(i),n=this.includeOptions(e,a)||a!==s;return this.updateSharedOptions(a,e,i),{sharedOptions:a,includeOptions:n}}updateElement(t,e,i,s){b(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!b(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;let a=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(a)||a})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){let t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){let t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){let e=this._data,i=this._cachedMeta.data;for(let[s,a,n]of this._syncList)this[s](a,n);this._syncList=[];let r=i.length,o=e.length,l=Math.min(o,r);l&&this.parse(0,l),o>r?this._insertElements(r,o-r,t):o{for(t.length+=e,s=t.length-1;s>=r;s--)t[s]=t[s-e]};for(o(n),s=t;sMath.abs(o)&&(l=o,h=r),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:a,end:n,min:r,max:o}}(t,e,i,a):e[i.axis]=i.parse(t,a),e}function M(t,e,i,s){let a,n,r,o;let l=t.iScale,h=t.vScale,d=l.getLabels(),c=l===h,u=[];for(a=i,n=i+s;a"spacing"!==t,_indexable:t=>"spacing"!==t};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){let e=t.data;if(e.labels.length&&e.datasets.length){let{labels:{pointStyle:i,color:s}}=t.legend.options;return e.labels.map((e,a)=>{let n=t.getDatasetMeta(0),r=n.controller.getStyle(a);return{text:e,fillStyle:r.backgroundColor,strokeStyle:r.borderColor,fontColor:s,lineWidth:r.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(a),index:a}})}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}}};constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){let i=this.getDataset().data,a=this._cachedMeta;if(!1===this._parsing)a._parsed=i;else{let n,r,o=t=>+i[t];if((0,s.i)(i[t])){let{key:l="value"}=this._parsing;o=t=>+(0,s.f)(i[t],l)}for(n=t,r=t+e;n(0,s.p)(e,t,l,!0)?1:Math.max(a,a*i,n,n*i),p=(e,a,n)=>(0,s.p)(e,t,l,!0)?-1:Math.min(a,a*i,n,n*i),f=g(0,h,c),m=g(s.H,d,u),b=p(s.P,h,c),x=p(s.P+s.H,d,u);a=(f-b)/2,n=(m-x)/2,r=-(f+b)/2,o=-(m+x)/2}return{ratioX:a,ratioY:n,offsetX:r,offsetY:o}}(c,d,l),m=(i.width-r)/u,b=(i.height-r)/g,x=(0,s.n)(this.options.radius,Math.max(Math.min(m,b)/2,0)),_=(x-Math.max(x*l,0))/this._getVisibleDatasetWeightTotal();this.offsetX=p*x,this.offsetY=f*x,a.total=this.calculateTotal(),this.outerRadius=x-_*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-_*h,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){let i=this.options,a=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===a._parsed[t]||a.data[t].hidden?0:this.calculateCircumference(a._parsed[t]*n/s.T)}updateElements(t,e,i,s){let a;let n="reset"===s,r=this.chart,o=r.chartArea,l=r.options,h=l.animation,d=(o.left+o.right)/2,c=(o.top+o.bottom)/2,u=n&&h.animateScale,g=u?0:this.innerRadius,p=u?0:this.outerRadius,{sharedOptions:f,includeOptions:m}=this._getSharedOptions(e,s),b=this._getRotation();for(a=0;a0&&!isNaN(t)?s.T*(Math.abs(t)/e):0}getLabelAndValue(t){let e=this._cachedMeta,i=this.chart,a=i.data.labels||[],n=(0,s.o)(e._parsed[t],i.options.locale);return{label:a[t]||"",value:n}}getMaxBorderWidth(t){let e,i,s,a,n,r=0,o=this.chart;if(!t){for(e=0,i=o.data.datasets.length;e{let n=t.getDatasetMeta(0),r=n.controller.getStyle(a);return{text:e,fillStyle:r.backgroundColor,strokeStyle:r.borderColor,fontColor:s,lineWidth:r.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(a),index:a}})}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){let e=this._cachedMeta,i=this.chart,a=i.data.labels||[],n=(0,s.o)(e._parsed[t].r,i.options.locale);return{label:a[t]||"",value:n}}parseObjectData(t,e,i,a){return s.y.bind(this)(t,e,i,a)}update(t){let e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){let t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach((t,i)=>{let s=this.getParsed(i).r;!isNaN(s)&&this.chart.getDataVisibility(i)&&(se.max&&(e.max=s))}),e}_updateRadius(){let t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),a=Math.max(s/2,0),n=Math.max(i.cutoutPercentage?a/100*i.cutoutPercentage:1,0),r=(a-n)/t.getVisibleDatasetCount();this.outerRadius=a-r*this.index,this.innerRadius=this.outerRadius-r}updateElements(t,e,i,a){let n;let r="reset"===a,o=this.chart,l=o.options,h=l.animation,d=this._cachedMeta.rScale,c=d.xCenter,u=d.yCenter,g=d.getIndexAngle(0)-.5*s.P,p=g,f=360/this.countVisibleElements();for(n=0;n{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++}),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?(0,s.t)(this.resolveDataElementOptions(t,e).angle||i):0}}var C=Object.freeze({__proto__:null,BarController:class extends v{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(t,e,i,s){return M(t,e,i,s)}parseArrayData(t,e,i,s){return M(t,e,i,s)}parseObjectData(t,e,i,a){let n,r,o,l;let{iScale:h,vScale:d}=t,{xAxisKey:c="x",yAxisKey:u="y"}=this._parsing,g="x"===h.axis?c:u,p="x"===d.axis?c:u,f=[];for(n=i,r=i+a;nt.x,n="left",r="right"):(a=t.baset.controller.options.grouped),n=i.options.stacked,r=[],o=t=>{let i=t.controller.getParsed(e),a=i&&i[t.vScale.axis];if((0,s.k)(a)||isNaN(a))return!0};for(let l of a)if(!(void 0!==e&&o(l))&&((!1===n||-1===r.indexOf(l.stack)||void 0===n&&void 0===l.stack)&&r.push(l.stack),l.index===t))break;return r.length||r.push(void 0),r}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,i){let s=this._getStacks(t,i),a=void 0!==e?s.indexOf(e):-1;return -1===a?s.length-1:a}_getRuler(){let t,e;let i=this.options,a=this._cachedMeta,n=a.iScale,r=[];for(t=0,e=a.data.length;tt-e))}return t._cache.$bar}(r,t.type),l=r._length,h=()=>{32767!==a&&-32768!==a&&((0,s.h)(n)&&(l=Math.min(l,Math.abs(a-n)||l)),n=a)};for(e=0,i=o.length;e=h?1:-1))*l,g===h&&(b-=i/2);let _=a.getPixelForDecimal(0),v=a.getPixelForDecimal(1);e=(b=Math.max(Math.min(b,Math.max(_,v)),Math.min(_,v)))+i,n&&!u&&(d._stacks[a.axis]._visualValues[r]=a.getValueForPixel(e)-a.getValueForPixel(b))}if(b===a.getPixelForValue(h)){let y=(0,s.s)(i)*a.getLineWidthForValue(h)/2;b+=y,i-=y}return{size:i,base:b,head:e,center:e+i/2}}_calculateBarIndexPixels(t,e){let i,a;let n=e.scale,r=this.options,o=r.skipNull,l=(0,s.v)(r.maxBarThickness,1/0);if(e.grouped){let h=o?this._getStackCount(t):e.stackCount,d="flex"===r.barThickness?function(t,e,i,s){let a=e.pixels,n=a[t],r=t>0?a[t-1]:null,o=t=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){let e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:a}=e,n=this.getParsed(t),r=s.getLabelForValue(n.x),o=a.getLabelForValue(n.y),l=n._custom;return{label:i[t]||"",value:"("+r+", "+o+(l?", "+l:"")+")"}}update(t){let e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){let a="reset"===s,{iScale:n,vScale:r}=this._cachedMeta,{sharedOptions:o,includeOptions:l}=this._getSharedOptions(e,s),h=n.axis,d=r.axis;for(let c=e;c0&&this.getParsed(e-1);for(let y=0;y<_;++y){let M=t[y],w=b?M:{};if(y=x){w.skip=!0;continue}let k=this.getParsed(y),S=(0,s.k)(k[g]),P=w[u]=r.getPixelForValue(k[u],y),D=w[g]=n||S?o.getBasePixel():o.getPixelForValue(l?this.applyStack(o,k,l):k[g],y);w.skip=isNaN(P)||isNaN(D)||S,w.stop=y>0&&Math.abs(k[u]-v[u])>m,f&&(w.parsed=k,w.raw=h.data[y]),c&&(w.options=d||this.resolveDataElementOptions(y,M.active?"active":a)),b||this.updateElement(M,y,w,a),v=k}}getMaxOverflow(){let t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;let a=s[0].size(this.resolveDataElementOptions(0)),n=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,a,n)/2}draw(){let t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PolarAreaController:D,PieController:class extends P{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}},RadarController:class extends v{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(t){let e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,a){return s.y.bind(this)(t,e,i,a)}update(t){let e=this._cachedMeta,i=e.dataset,s=e.data||[],a=e.iScale.getLabels();if(i.points=s,"resize"!==t){let n=this.resolveDatasetElementOptions(t);this.options.showLine||(n.borderWidth=0);let r={_loop:!0,_fullLoop:a.length===s.length,options:n};this.updateElement(i,void 0,r,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){let a=this._cachedMeta.rScale,n="reset"===s;for(let r=e;r0&&this.getParsed(e-1);for(let v=e;v0&&Math.abs(M[g]-_[g])>b,m&&(w.parsed=M,w.raw=h.data[v]),u&&(w.options=c||this.resolveDataElementOptions(v,y.active?"active":a)),x||this.updateElement(y,v,w,a),_=M}this.updateSharedOptions(c,a,d)}getMaxOverflow(){let t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let i=0;for(let s=e.length-1;s>=0;--s)i=Math.max(i,e[s].size(this.resolveDataElementOptions(s))/2);return i>0&&i}let a=t.dataset,n=a.options&&a.options.borderWidth||0;if(!e.length)return n;let r=e[0].size(this.resolveDataElementOptions(0)),o=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(n,r,o)/2}}});function L(){throw Error("This method is not implemented: Check that a complete date adapter is provided.")}class E{static override(t){Object.assign(E.prototype,t)}constructor(t){this.options=t||{}}init(){}formats(){return L()}parse(){return L()}format(){return L()}add(){return L()}diff(){return L()}startOf(){return L()}endOf(){return L()}}var O={_date:E};function A(t,e,i,a,n){let r=t.getSortedVisibleDatasetMetas(),o=i[e];for(let l=0,h=r.length;l{t[r](e[i],a)&&(n.push({element:t,datasetIndex:s,index:l}),o=o||t.inRange(e.x,e.y,a))}),s&&!o)?[]:n}var R={evaluateInteractionItems:A,modes:{index(t,e,i,a){let n=(0,s.z)(e,t),r=i.axis||"x",o=i.includeInvisible||!1,l=i.intersect?T(t,n,r,a,o):F(t,n,r,!1,a,o),h=[];return l.length?(t.getSortedVisibleDatasetMetas().forEach(t=>{let e=l[0].index,i=t.data[e];i&&!i.skip&&h.push({element:i,datasetIndex:t.index,index:e})}),h):[]},dataset(t,e,i,a){let n=(0,s.z)(e,t),r=i.axis||"xy",o=i.includeInvisible||!1,l=i.intersect?T(t,n,r,a,o):F(t,n,r,!1,a,o);if(l.length>0){let h=l[0].datasetIndex,d=t.getDatasetMeta(h).data;l=[];for(let c=0;ct.pos===e)}function B(t,e){return t.filter(t=>-1===I.indexOf(t.pos)&&t.box.axis===e)}function N(t,e){return t.sort((t,i)=>{let s=e?i:t,a=e?t:i;return s.weight===a.weight?s.index-a.index:s.weight-a.weight})}function H(t,e,i,s){return Math.max(t[i],e[i])+Math.max(t[s],e[s])}function j(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function W(t,e,i,a){let n,r,o,l,h,d;let c=[];for(n=0,r=t.length,h=0;n{s[t]=Math.max(e[t],i[t])}),s}(t?["left","right"]:["top","bottom"])}(o.horizontal,e));let{same:u,other:g}=function(t,e,i,a){let{pos:n,box:r}=i,o=t.maxPadding;if(!(0,s.i)(n)){i.size&&(t[n]-=i.size);let l=a[i.stack]||{size:0,count:1};l.size=Math.max(l.size,i.horizontal?r.height:r.width),i.size=l.size/l.count,t[n]+=i.size}r.getPadding&&j(o,r.getPadding());let h=Math.max(0,e.outerWidth-H(o,t,"left","right")),d=Math.max(0,e.outerHeight-H(o,t,"top","bottom")),c=h!==t.w,u=d!==t.h;return t.w=h,t.h=d,i.horizontal?{same:c,other:u}:{same:u,other:c}}(e,i,o,a);h|=u&&c.length,d=d||g,l.fullSize||c.push(o)}return h&&W(c,e,i,a)||d}function $(t,e,i,s,a){t.top=i,t.left=e,t.right=e+s,t.bottom=i+a,t.width=s,t.height=a}function U(t,e,i,a){let n=i.padding,{x:r,y:o}=e;for(let l of t){let h=l.box,d=a[l.stack]||{count:1,placed:0,weight:1},c=l.stackWeight/d.weight||1;if(l.horizontal){let u=e.w*c,g=d.size||h.height;(0,s.h)(d.start)&&(o=d.start),h.fullSize?$(h,n.left,o,i.outerWidth-n.right-n.left,g):$(h,e.left+d.placed,o,u,g),d.start=o,d.placed+=u,o=h.bottom}else{let p=e.h*c,f=d.size||h.width;(0,s.h)(d.start)&&(r=d.start),h.fullSize?$(h,r,n.top,f,i.outerHeight-n.bottom-n.top):$(h,r,e.top+d.placed,f,p),d.start=r,d.placed+=p,r=h.right}}e.x=r,e.y=o}var Y={addBox(t,e){t.boxes||(t.boxes=[]),e.fullSize=e.fullSize||!1,e.position=e.position||"top",e.weight=e.weight||0,e._layers=e._layers||function(){return[{z:0,draw(t){e.draw(t)}}]},t.boxes.push(e)},removeBox(t,e){let i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure(t,e,i){e.fullSize=i.fullSize,e.position=i.position,e.weight=i.weight},update(t,e,i,a){if(!t)return;let n=(0,s.E)(t.options.layout.padding),r=Math.max(e-n.width,0),o=Math.max(i-n.height,0),l=function(t){let e=function(t){let e,i,s,a,n,r;let o=[];for(e=0,i=(t||[]).length;et.box.fullSize),!0),s=N(V(e,"left"),!0),a=N(V(e,"right")),n=N(V(e,"top"),!0),r=N(V(e,"bottom")),o=B(e,"x"),l=B(e,"y");return{fullSize:i,leftAndTop:s.concat(n),rightAndBottom:a.concat(l).concat(r).concat(o),chartArea:V(e,"chartArea"),vertical:s.concat(a).concat(l),horizontal:n.concat(r).concat(o)}}(t.boxes),h=l.vertical,d=l.horizontal;(0,s.F)(t.boxes,t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()});let c=h.reduce((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1,0)||1,u=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:r,availableHeight:o,vBoxMaxWidth:r/2/c,hBoxMaxHeight:o/2}),g=Object.assign({},n);j(g,(0,s.E)(a));let p=Object.assign({maxPadding:g,w:r,h:o,x:n.left,y:n.top},n),f=function(t,e){let i,s,a;let n=function(t){let e={};for(let i of t){let{stack:s,pos:a,stackWeight:n}=i;if(!s||!I.includes(a))continue;let r=e[s]||(e[s]={count:0,placed:0,weight:0,size:0});r.count++,r.weight+=n}return e}(t),{vBoxMaxWidth:r,hBoxMaxHeight:o}=e;for(i=0,s=t.length;i{let i=e.box;Object.assign(i,t.chartArea),i.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})})}};class Q{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):i)}}isAttached(t){return!0}updateConfig(t){}}class X extends Q{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}let q="$chartjs",G={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},K=t=>null===t||""===t,J=!!s.K&&{passive:!0};function Z(t,e,i){t.canvas.removeEventListener(e,i,J)}function tt(t,e){for(let i of t)if(i===e||i.contains(e))return!0}function te(t,e,i){let s=t.canvas,a=new MutationObserver(t=>{let e=!1;for(let a of t)e=(e=e||tt(a.addedNodes,s))&&!tt(a.removedNodes,s);e&&i()});return a.observe(document,{childList:!0,subtree:!0}),a}function ti(t,e,i){let s=t.canvas,a=new MutationObserver(t=>{let e=!1;for(let a of t)e=(e=e||tt(a.removedNodes,s))&&!tt(a.addedNodes,s);e&&i()});return a.observe(document,{childList:!0,subtree:!0}),a}let ts=new Map,ta=0;function tn(){let t=window.devicePixelRatio;t!==ta&&(ta=t,ts.forEach((e,i)=>{i.currentDevicePixelRatio!==t&&e()}))}function tr(t,e,i){let a=t.canvas,n=a&&(0,s.I)(a);if(!n)return;let r=(0,s.L)((t,e)=>{let s=n.clientWidth;i(t,e),s{let e=t[0],i=e.contentRect.width,s=e.contentRect.height;(0!==i||0!==s)&&r(i,s)});return o.observe(n),ts.size||window.addEventListener("resize",tn),ts.set(t,r),o}function to(t,e,i){i&&i.disconnect(),"resize"===e&&(ts.delete(t),ts.size||window.removeEventListener("resize",tn))}function tl(t,e,i){let a=t.canvas,n=(0,s.L)(e=>{null!==t.ctx&&i(function(t,e){let i=G[t.type]||t.type,{x:a,y:n}=(0,s.z)(t,e);return{type:i,chart:e,native:t,x:void 0!==a?a:null,y:void 0!==n?n:null}}(e,t))},t);return!function(t,e,i){t.addEventListener(e,i,J)}(a,e,n),n}class th extends Q{acquireContext(t,e){let i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(!function(t,e){let i=t.style,a=t.getAttribute("height"),n=t.getAttribute("width");if(t[q]={initial:{height:a,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",K(n)){let r=(0,s.J)(t,"width");void 0!==r&&(t.width=r)}if(K(a)){if(""===t.style.height)t.height=t.width/(e||2);else{let o=(0,s.J)(t,"height");void 0!==o&&(t.height=o)}}}(t,e),i):null}releaseContext(t){let e=t.canvas;if(!e[q])return!1;let i=e[q].initial;["height","width"].forEach(t=>{let a=i[t];(0,s.k)(a)?e.removeAttribute(t):e.setAttribute(t,a)});let a=i.style||{};return Object.keys(a).forEach(t=>{e.style[t]=a[t]}),e.width=e.width,delete e[q],!0}addEventListener(t,e,i){this.removeEventListener(t,e);let s=t.$proxies||(t.$proxies={});s[e]=(({attach:te,detach:ti,resize:tr})[e]||tl)(t,e,i)}removeEventListener(t,e){let i=t.$proxies||(t.$proxies={}),s=i[e];s&&((({attach:to,detach:to,resize:to})[e]||Z)(t,e,s),i[e]=void 0)}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,a){return(0,s.G)(t,e,i,a)}isAttached(t){let e=(0,s.I)(t);return!!(e&&e.isConnected)}}class td{static defaults={};static defaultRoutes=void 0;active=!1;tooltipPosition(t){let{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}hasValue(){return(0,s.x)(this.x)&&(0,s.x)(this.y)}getProps(t,e){let i=this.$animations;if(!e||!i)return this;let s={};return t.forEach(t=>{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]}),s}}function tc(t,e,i,a,n){let r,o,l;let h=(0,s.v)(a,0),d=Math.min((0,s.v)(n,t.length),t.length),c=0;for(i=Math.ceil(i),n&&(i=(r=n-a)/Math.floor(r/i)),l=h;l<0;)l=Math.round(h+ ++c*i);for(o=Math.max(h,0);o"left"===t?"right":"right"===t?"left":t,tg=(t,e,i)=>"top"===e||"left"===e?t[e]+i:t[e]-i;function tp(t,e){let i=[],s=t.length/e,a=t.length,n=0;for(;na?a:i,a=n&&i>a?i:a,{min:(0,s.O)(i,(0,s.O)(a,i)),max:(0,s.O)(a,(0,s.O)(i,a))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){let t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){let e=this._labelItems||(this._labelItems=this._computeLabelItems(t));return e}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){(0,s.Q)(this.options.beforeUpdate,[this])}update(t,e,i){let{beginAtZero:a,grace:n,ticks:r}=this.options,o=r.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=(0,s.R)(this,n,a),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();let l=on)return function(t,e,i,s){let a,n=0,r=i[0];for(a=0,s=Math.ceil(s);an)return h}return Math.max(n,1)}(r,e,n);if(o>0){let u,g;let p=o>1?Math.round((h-l)/(o-1)):null;for(tc(e,d,c,(0,s.k)(p)?0:l-p,l),u=0,g=o-1;u=l||r<=1||!this.isHorizontal()){this.labelRotation=o;return}let d=this._getLabelSizes(),c=d.widest.width,u=d.highest.height,g=(0,s.S)(this.chart.width-c,0,this.maxWidth);c+6>(t=a.offset?this.maxWidth/r:g/(r-1))&&(t=g/(r-(a.offset?.5:1)),e=this.maxHeight-tf(a.grid)-n.padding-tm(a.title,this.chart.options.font),i=Math.sqrt(c*c+u*u),h=Math.max(o,Math.min(l,h=(0,s.U)(Math.min(Math.asin((0,s.S)((d.highest.height+6)/t,-1,1)),Math.asin((0,s.S)(e/i,-1,1))-Math.asin((0,s.S)(u/i,-1,1))))))),this.labelRotation=h}afterCalculateLabelRotation(){(0,s.Q)(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){(0,s.Q)(this.options.beforeFit,[this])}fit(){let t={width:0,height:0},{chart:e,options:{ticks:i,title:a,grid:n}}=this,r=this._isVisible(),o=this.isHorizontal();if(r){let l=tm(a,e.options.font);if(o?(t.width=this.maxWidth,t.height=tf(n)+l):(t.height=this.maxHeight,t.width=tf(n)+l),i.display&&this.ticks.length){let{first:h,last:d,widest:c,highest:u}=this._getLabelSizes(),g=2*i.padding,p=(0,s.t)(this.labelRotation),f=Math.cos(p),m=Math.sin(p);if(o){let b=i.mirror?0:m*c.width+f*u.height;t.height=Math.min(this.maxHeight,t.height+b+g)}else{let x=i.mirror?0:f*c.width+m*u.height;t.width=Math.min(this.maxWidth,t.width+x+g)}this._calculatePadding(h,d,m,f)}}this._handleMargins(),o?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){let{ticks:{align:a,padding:n},position:r}=this.options,o=0!==this.labelRotation,l="top"!==r&&"x"===this.axis;if(this.isHorizontal()){let h=this.getPixelForTick(0)-this.left,d=this.right-this.getPixelForTick(this.ticks.length-1),c=0,u=0;o?l?(c=s*t.width,u=i*e.height):(c=i*t.height,u=s*e.width):"start"===a?u=e.width:"end"===a?c=t.width:"inner"!==a&&(c=t.width/2,u=e.width/2),this.paddingLeft=Math.max((c-h+n)*this.width/(this.width-h),0),this.paddingRight=Math.max((u-d+n)*this.width/(this.width-d),0)}else{let g=e.height/2,p=t.height/2;"start"===a?(g=0,p=t.height):"end"===a&&(g=e.height,p=0),this.paddingTop=g+n,this.paddingBottom=p+n}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){(0,s.Q)(this.options.afterFit,[this])}isHorizontal(){let{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e{let i;let s=t.gc,a=s.length/2;if(a>e){for(i=0;i({width:m[t]||0,height:b[t]||0});return{first:M(0),last:M(e-1),widest:M(v),highest:M(y),widths:m,heights:b}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){let e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);let e=this._startPixel+t*this._length;return(0,s.W)(this._alignToPixels?(0,s.X)(this.chart,e,0):e)}getDecimalForPixel(t){let e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){let{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){var e,i;let a=this.ticks||[];if(t>=0&&to*a?o/i:l/a:l*a0}_computeGridLineItems(t){let e,i,a,n,r,o,l,h,d,c,u,g;let p=this.axis,f=this.chart,m=this.options,{grid:b,position:x,border:_}=m,v=b.offset,y=this.isHorizontal(),M=this.ticks,w=M.length+(v?1:0),k=tf(b),S=[],P=_.setContext(this.getContext()),D=P.display?P.width:0,C=D/2,L=function(t){return(0,s.X)(f,t,D)};if("top"===x)e=L(this.bottom),o=this.bottom-k,h=e-C,c=L(t.top)+C,g=t.bottom;else if("bottom"===x)e=L(this.top),c=t.top,g=L(t.bottom)-C,o=e+C,h=this.top+k;else if("left"===x)e=L(this.right),r=this.right-k,l=e-C,d=L(t.left)+C,u=t.right;else if("right"===x)e=L(this.left),d=t.left,u=L(t.right)-C,r=e+C,l=this.left+k;else if("x"===p){if("center"===x)e=L((t.top+t.bottom)/2+.5);else if((0,s.i)(x)){let E=Object.keys(x)[0],O=x[E];e=L(this.chart.scales[E].getPixelForValue(O))}c=t.top,g=t.bottom,h=(o=e+C)+k}else if("y"===p){if("center"===x)e=L((t.left+t.right)/2);else if((0,s.i)(x)){let A=Object.keys(x)[0],T=x[A];e=L(this.chart.scales[A].getPixelForValue(T))}l=(r=e-C)-k,d=t.left,u=t.right}let F=(0,s.v)(m.ticks.maxTicksLimit,w),z=Math.max(1,Math.ceil(w/F));for(i=0;io+1e-6)))return l}(this,i,v))&&(n=(0,s.X)(f,a,B),y?r=l=d=u=n:o=h=c=g=n,S.push({tx1:r,ty1:o,tx2:l,ty2:h,x1:d,y1:c,x2:u,y2:g,width:B,color:N,borderDash:H,borderDashOffset:j,tickWidth:W,tickColor:$,tickBorderDash:U,tickBorderDashOffset:Y}))}return this._ticksLength=w,this._borderValue=e,S}_computeLabelItems(t){let e,i,a,n,r,o,l,h,d,c,u;let g=this.axis,p=this.options,{position:f,ticks:m}=p,b=this.isHorizontal(),x=this.ticks,{align:_,crossAlign:v,padding:y,mirror:M}=m,w=tf(p.grid),k=w+y,S=M?-y:k,P=-(0,s.t)(this.labelRotation),D=[],C="middle";if("top"===f)r=this.bottom-S,o=this._getXAxisLabelAlignment();else if("bottom"===f)r=this.top+S,o=this._getXAxisLabelAlignment();else if("left"===f){let L=this._getYAxisLabelAlignment(w);o=L.textAlign,n=L.x}else if("right"===f){let E=this._getYAxisLabelAlignment(w);o=E.textAlign,n=E.x}else if("x"===g){if("center"===f)r=(t.top+t.bottom)/2+k;else if((0,s.i)(f)){let O=Object.keys(f)[0],A=f[O];r=this.chart.scales[O].getPixelForValue(A)+k}o=this._getXAxisLabelAlignment()}else if("y"===g){if("center"===f)n=(t.left+t.right)/2-k;else if((0,s.i)(f)){let T=Object.keys(f)[0],F=f[T];n=this.chart.scales[T].getPixelForValue(F)}o=this._getYAxisLabelAlignment(w).textAlign}"y"===g&&("start"===_?C="top":"end"===_&&(C="bottom"));let z=this._getLabelSizes();for(e=0,i=x.length;ee.value===t);if(s>=0){let a=e.setContext(this.getContext(s));return a.lineWidth}return 0}drawGrid(t){let e,i;let s=this.options.grid,a=this.ctx,n=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t)),r=(t,e,i)=>{i.width&&i.color&&(a.save(),a.lineWidth=i.width,a.strokeStyle=i.color,a.setLineDash(i.borderDash||[]),a.lineDashOffset=i.borderDashOffset,a.beginPath(),a.moveTo(t.x,t.y),a.lineTo(e.x,e.y),a.stroke(),a.restore())};if(s.display)for(e=0,i=n.length;e{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:a,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){let e,i;let s=this.chart.getSortedVisibleDatasetMetas(),a=this.axis+"AxisID",n=[];for(e=0,i=s.length;e{let a=i.split("."),n=a.pop(),r=[t].concat(a).join("."),o=e[i].split("."),l=o.pop(),h=o.join(".");s.d.route(r,n,h,l)})}(e,t.defaultRoutes),t.descriptors&&s.d.describe(e,t.descriptors)}(t,r,e),this.override&&s.d.override(t.id,t.overrides)),r}get(t){return this.items[t]}unregister(t){let e=this.items,i=t.id,a=this.scope;i in e&&delete e[i],a&&i in s.d[a]&&(delete s.d[a][i],this.override&&delete s.a3[i])}}var t_=new class{constructor(){this.controllers=new tx(v,"datasets",!0),this.elements=new tx(td,"elements"),this.plugins=new tx(Object,"plugins"),this.scales=new tx(tb,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach(e=>{let a=i||this._getRegistryForType(e);i||a.isForType(e)||a===this.plugins&&e.id?this._exec(t,a,e):(0,s.F)(e,e=>{let s=i||this._getRegistryForType(e);this._exec(t,s,e)})})}_exec(t,e,i){let a=(0,s.a5)(t);(0,s.Q)(i["before"+a],[],i),e[t](i),(0,s.Q)(i["after"+a],[],i)}_getRegistryForType(t){for(let e=0;et.filter(t=>!e.some(e=>t.plugin.id===e.plugin.id));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}}function ty(t,e){let i=s.d.datasets[t]||{},a=(e.datasets||{})[t]||{};return a.indexAxis||e.indexAxis||i.indexAxis||"x"}function tM(t,e){var i;if("x"===t||"y"===t||"r"===t||(t=e.axis||("top"===(i=e.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.length>1&&tM(t[0].toLowerCase(),e)))return t;throw Error(`Cannot determine type of '${name}' axis. Please provide 'axis' or 'position' option.`)}function tw(t){let e=t.options||(t.options={});e.plugins=(0,s.v)(e.plugins,{}),e.scales=function(t,e){let i=s.a3[t.type]||{scales:{}},a=e.scales||{},n=ty(t.type,e),r=Object.create(null);return Object.keys(a).forEach(t=>{let e=a[t];if(!(0,s.i)(e))return console.error(`Invalid scale configuration for scale: ${t}`);if(e._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);let o=tM(t,e),l=i.scales||{};r[t]=(0,s.ab)(Object.create(null),[{axis:o},e,l[o],l[o===n?"_index_":"_value_"]])}),t.data.datasets.forEach(i=>{let n=i.type||t.type,o=i.indexAxis||ty(n,e),l=s.a3[n]||{},h=l.scales||{};Object.keys(h).forEach(t=>{let e;let n=(e=t,"_index_"===t?e=o:"_value_"===t&&(e="x"===o?"y":"x"),e),l=i[n+"AxisID"]||n;r[l]=r[l]||Object.create(null),(0,s.ab)(r[l],[{axis:n},a[l],h[t]])})}),Object.keys(r).forEach(t=>{let e=r[t];(0,s.ab)(e,[s.d.scales[e.type],s.d.scale])}),r}(t,e)}function tk(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}let tS=new Map,tP=new Set;function tD(t,e){let i=tS.get(t);return i||(i=e(),tS.set(t,i),tP.add(i)),i}let tC=(t,e,i)=>{let a=(0,s.f)(e,i);void 0!==a&&t.add(a)};class tL{constructor(t){var e;this._config=((e=(e=t)||{}).data=tk(e.data),tw(e),e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=tk(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){let t=this._config;this.clearCache(),tw(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return tD(t,()=>[[`datasets.${t}`,""]])}datasetAnimationScopeKeys(t,e){return tD(`${t}.transition.${e}`,()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]])}datasetElementScopeKeys(t,e){return tD(`${t}-${e}`,()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]])}pluginScopeKeys(t){let e=t.id,i=this.type;return tD(`${i}-plugin-${e}`,()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]])}_cachedScopes(t,e){let i=this._scopeCache,s=i.get(t);return(!s||e)&&(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){let{options:a,type:n}=this,r=this._cachedScopes(t,i),o=r.get(e);if(o)return o;let l=new Set;e.forEach(e=>{t&&(l.add(t),e.forEach(e=>tC(l,t,e))),e.forEach(t=>tC(l,a,t)),e.forEach(t=>tC(l,s.a3[n]||{},t)),e.forEach(t=>tC(l,s.d,t)),e.forEach(t=>tC(l,s.a6,t))});let h=Array.from(l);return 0===h.length&&h.push(Object.create(null)),tP.has(e)&&r.set(e,h),h}chartOptionScopes(){let{options:t,type:e}=this;return[t,s.a3[e]||{},s.d.datasets[e]||{},{type:e},s.d,s.a6]}resolveNamedOptions(t,e,i,a=[""]){let n={$shared:!0},{resolver:r,subPrefixes:o}=tE(this._resolverCache,t,a),l=r;if(function(t,e){let{isScriptable:i,isIndexable:a}=(0,s.aa)(t);for(let n of e){let r=i(n),o=a(n),l=(o||r)&&t[n];if(r&&((0,s.a7)(l)||tO(l))||o&&(0,s.b)(l))return!0}return!1}(r,e)){n.$shared=!1,i=(0,s.a7)(i)?i():i;let h=this.createResolver(t,i,o);l=(0,s.a8)(r,i,h)}for(let d of e)n[d]=l[d];return n}createResolver(t,e,i=[""],a){let{resolver:n}=tE(this._resolverCache,t,i);return(0,s.i)(e)?(0,s.a8)(n,e,void 0,a):n}}function tE(t,e,i){let a=t.get(e);a||(a=new Map,t.set(e,a));let n=i.join(),r=a.get(n);if(!r){let o=(0,s.a9)(e,i);r={resolver:o,subPrefixes:i.filter(t=>!t.toLowerCase().includes("hover"))},a.set(n,r)}return r}let tO=t=>(0,s.i)(t)&&Object.getOwnPropertyNames(t).reduce((e,i)=>e||(0,s.a7)(t[i]),!1),tA=["top","bottom","left","right","chartArea"];function tT(t,e){return"top"===t||"bottom"===t||-1===tA.indexOf(t)&&"x"===e}function tF(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function tz(t){let e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),(0,s.Q)(i&&i.onComplete,[t],e)}function tR(t){let e=t.chart,i=e.options.animation;(0,s.Q)(i&&i.onProgress,[t],e)}function tI(t){return(0,s.M)()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}let tV={},tB=t=>{let e=tI(t);return Object.values(tV).filter(t=>t.canvas===e).pop()};class tN{static defaults=s.d;static instances=tV;static overrides=s.a3;static registry=t_;static version="4.1.1";static getChart=tB;static register(...t){t_.add(...t),tH()}static unregister(...t){t_.remove(...t),tH()}constructor(t,e){let i=this.config=new tL(e),n=tI(t),r=tB(n);if(r)throw Error("Canvas is already in use. Chart with ID '"+r.id+"' must be destroyed before the canvas with ID '"+r.canvas.id+"' can be reused.");let o=i.createResolver(i.chartOptionScopes(),this.getContext());this.platform=new(i.platform||(!(0,s.M)()||"undefined"!=typeof OffscreenCanvas&&n instanceof OffscreenCanvas?X:th)),this.platform.updateConfig(i);let l=this.platform.acquireContext(n,o.aspectRatio),h=l&&l.canvas,d=h&&h.height,c=h&&h.width;if(this.id=(0,s.ac)(),this.ctx=l,this.canvas=h,this.width=c,this.height=d,this._options=o,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new tv,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=(0,s.ad)(t=>this.update(t),o.resizeDelay||0),this._dataChanges=[],tV[this.id]=this,!l||!h){console.error("Failed to create chart: can't acquire context from the given item");return}a.listen(this,"complete",tz),a.listen(this,"progress",tR),this._initialize(),this.attached&&this.update()}get aspectRatio(){let{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:a,_aspectRatio:n}=this;return(0,s.k)(t)?e&&n?n:a?i/a:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return t_}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():(0,s.ae)(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return(0,s.af)(this.canvas,this.ctx),this}stop(){return a.stop(this),this}resize(t,e){a.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){let i=this.options,a=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,r=this.platform.getMaximumSize(a,t,e,n),o=i.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=r.width,this.height=r.height,this._aspectRatio=this.aspectRatio,(0,s.ae)(this,o,!0)&&(this.notifyPlugins("resize",{size:r}),(0,s.Q)(i.onResize,[this,r],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){let t=this.options,e=t.scales||{};(0,s.F)(e,(t,e)=>{t.id=e})}buildOrUpdateScales(){let t=this.options,e=t.scales,i=this.scales,a=Object.keys(i).reduce((t,e)=>(t[e]=!1,t),{}),n=[];e&&(n=n.concat(Object.keys(e).map(t=>{let i=e[t],s=tM(t,i),a="r"===s,n="x"===s;return{options:i,dposition:a?"chartArea":n?"bottom":"left",dtype:a?"radialLinear":n?"category":"linear"}}))),(0,s.F)(n,e=>{let n=e.options,r=n.id,o=tM(r,n),l=(0,s.v)(n.type,e.dtype);(void 0===n.position||tT(n.position,o)!==tT(e.dposition))&&(n.position=e.dposition),a[r]=!0;let h=null;if(r in i&&i[r].type===l)h=i[r];else{let d=t_.getScale(l);i[(h=new d({id:r,type:l,ctx:this.ctx,chart:this})).id]=h}h.init(n,t)}),(0,s.F)(a,(t,e)=>{t||delete i[e]}),(0,s.F)(i,t=>{Y.configure(this,t,t.options),Y.addBox(this,t)})}_updateMetasets(){let t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort((t,e)=>t.index-e.index),i>e){for(let s=e;se.length&&delete this._stacks,t.forEach((t,i)=>{0===e.filter(e=>e===t._dataset).length&&this._destroyDatasetMeta(i)})}buildOrUpdateControllers(){let t,e;let i=[],a=this.data.datasets;for(this._removeUnreferencedMetasets(),t=0,e=a.length;t{this.getDatasetMeta(e).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){let e=this.config;e.update();let i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),a=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;let n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let r=0;for(let o=0,l=this.data.datasets.length;o{t.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(tF("z","_idx"));let{_active:c,_lastEvent:u}=this;u?this._eventHandler(u,!0):c.length&&this._updateHoverStyles(c,c,!0),this.render()}_updateScales(){(0,s.F)(this.scales,t=>{Y.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){let t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);(0,s.ag)(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){let{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(let{method:i,start:s,count:a}of e){let n="_removeElements"===i?-a:a;!function(t,e,i){let s=Object.keys(t);for(let a of s){let n=+a;if(n>=e){let r=t[a];delete t[a],(i>0||n>e)&&(t[n+i]=r)}}}(t,s,n)}}_getUniformDataChanges(){let t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];let e=this.data.datasets.length,i=e=>new Set(t.filter(t=>t[0]===e).map((t,e)=>e+","+t.splice(1).join(","))),a=i(0);for(let n=1;nt.split(",")).map(t=>({method:t[1],start:+t[2],count:+t[3]}))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;Y.update(this,this.width,this.height,t);let e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],(0,s.F)(this.boxes,t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))},this),this._layers.forEach((t,e)=>{t._idx=e}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let e=0,i=this.data.datasets.length;e=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){let e=this.ctx,i=t._clip,a=!i.disabled,n=function(t){let{xScale:e,yScale:i}=t;if(e&&i)return{left:e.left,right:e.right,top:i.top,bottom:i.bottom}}(t)||this.chartArea,r={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetDraw",r)&&(a&&(0,s.Y)(e,{left:!1===i.left?0:n.left-i.left,right:!1===i.right?this.width:n.right+i.right,top:!1===i.top?0:n.top-i.top,bottom:!1===i.bottom?this.height:n.bottom+i.bottom}),t.controller.draw(),a&&(0,s.$)(e),r.cancelable=!1,this.notifyPlugins("afterDatasetDraw",r))}isPointInArea(t){return(0,s.C)(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,s){let a=R.modes[e];return"function"==typeof a?a(this,t,i,s):[]}getDatasetMeta(t){let e=this.data.datasets[t],i=this._metasets,s=i.filter(t=>t&&t._dataset===e).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=(0,s.j)(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){let e=this.data.datasets[t];if(!e)return!1;let i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){let i=this.getDatasetMeta(t);i.hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){let a=i?"show":"hide",n=this.getDatasetMeta(t),r=n.controller._resolveAnimations(void 0,a);(0,s.h)(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),r.update(n,{visible:i}),this.update(e=>e.datasetIndex===t?a:void 0))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){let e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),a.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,i,s),t[i]=s},a=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};(0,s.F)(this.options.events,t=>i(t,a))}bindResponsiveEvents(){let t;this._responsiveListeners||(this._responsiveListeners={});let e=this._responsiveListeners,i=this.platform,s=(t,s)=>{i.addEventListener(this,t,s),e[t]=s},a=(t,s)=>{e[t]&&(i.removeEventListener(this,t,s),delete e[t])},n=(t,e)=>{this.canvas&&this.resize(t,e)},r=()=>{a("attach",r),this.attached=!0,this.resize(),s("resize",n),s("detach",t)};t=()=>{this.attached=!1,a("resize",n),this._stop(),this._resize(0,0),s("attach",r)},i.isAttached(this.canvas)?r():t()}unbindEvents(){(0,s.F)(this._listeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._listeners={},(0,s.F)(this._responsiveListeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){let s,a,n;let r=i?"set":"remove";for("dataset"===e&&this.getDatasetMeta(t[0].datasetIndex).controller["_"+r+"DatasetHoverStyle"](),a=0,n=t.length;a{let i=this.getDatasetMeta(t);if(!i)throw Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}),a=!(0,s.ah)(i,e);a&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}isPluginEnabled(t){return 1===this._plugins._cache.filter(e=>e.plugin.id===t).length}_updateHoverStyles(t,e,i){let s=this.options.hover,a=(t,e)=>t.filter(t=>!e.some(e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)),n=a(e,t),r=i?t:a(t,e);n.length&&this.updateHoverStyle(n,s.mode,!1),r.length&&s.mode&&this.updateHoverStyle(r,s.mode,!0)}_eventHandler(t,e){let i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,s))return;let a=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(a||i.changed)&&this.render(),this}_handleEvent(t,e,i){var a;let{_active:n=[],options:r}=this,o=this._getActiveElements(t,n,i,e),l=(0,s.ai)(t),h=(a=this._lastEvent,i&&"mouseout"!==t.type?l?a:t:null);i&&(this._lastEvent=null,(0,s.Q)(r.onHover,[t,o,this],this),l&&(0,s.Q)(r.onClick,[t,o,this],this));let d=!(0,s.ah)(o,n);return(d||e)&&(this._active=o,this._updateHoverStyles(o,n,e)),this._lastEvent=h,d}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;let a=this.options.hover;return this.getElementsAtEventForMode(t,a.mode,a,s)}}function tH(){return(0,s.F)(tN.instances,t=>t._plugins.invalidate())}function tj(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function tW(t,e,i,a,n,r){let{x:o,y:l,startAngle:h,pixelMargin:d,innerRadius:c}=e,u=Math.max(e.outerRadius+a+i-d,0),g=c>0?c+a+i+d:0,p=0,f=n-h;if(a){let m=((c>0?c-a:0)+(u>0?u-a:0))/2;p=(f-(0!==m?f*m/(m+a):f))/2}let b=Math.max(.001,f*u-i/s.P)/u,x=(f-b)/2,_=h+x+p,v=n-x-p,{outerStart:y,outerEnd:M,innerStart:w,innerEnd:k}=function(t,e,i,a){var n;let r=(n=t.options.borderRadius,(0,s.ak)(n,["outerStart","outerEnd","innerStart","innerEnd"])),o=(i-e)/2,l=Math.min(o,a*e/2),h=t=>(0,s.S)(t,0,Math.min(o,(i-Math.min(o,t))*a/2));return{outerStart:h(r.outerStart),outerEnd:h(r.outerEnd),innerStart:(0,s.S)(r.innerStart,0,l),innerEnd:(0,s.S)(r.innerEnd,0,l)}}(e,g,u,v-_),S=u-y,P=u-M,D=_+y/S,C=v-M/P,L=g+w,E=g+k,O=_+w/L,A=v-k/E;if(t.beginPath(),r){let T=(D+C)/2;if(t.arc(o,l,u,D,T),t.arc(o,l,u,T,C),M>0){let F=tj(P,C,o,l);t.arc(F.x,F.y,M,C,v+s.H)}let z=tj(E,v,o,l);if(t.lineTo(z.x,z.y),k>0){let R=tj(E,A,o,l);t.arc(R.x,R.y,k,v+s.H,A+Math.PI)}let I=(v-k/g+(_+w/g))/2;if(t.arc(o,l,g,v-k/g,I,!0),t.arc(o,l,g,I,_+w/g,!0),w>0){let V=tj(L,O,o,l);t.arc(V.x,V.y,w,O+Math.PI,_-s.H)}let B=tj(S,_,o,l);if(t.lineTo(B.x,B.y),y>0){let N=tj(S,D,o,l);t.arc(N.x,N.y,y,_-s.H,D)}}else t.moveTo(o,l),t.lineTo(Math.cos(D)*u+o,Math.sin(D)*u+l),t.lineTo(Math.cos(C)*u+o,Math.sin(C)*u+l);t.closePath()}function t$(t,e,i=e){t.lineCap=(0,s.v)(i.borderCapStyle,e.borderCapStyle),t.setLineDash((0,s.v)(i.borderDash,e.borderDash)),t.lineDashOffset=(0,s.v)(i.borderDashOffset,e.borderDashOffset),t.lineJoin=(0,s.v)(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=(0,s.v)(i.borderWidth,e.borderWidth),t.strokeStyle=(0,s.v)(i.borderColor,e.borderColor)}function tU(t,e,i){t.lineTo(i.x,i.y)}function tY(t,e,i={}){let s=t.length,{start:a=0,end:n=s-1}=i,{start:r,end:o}=e,l=Math.max(a,r),h=Math.min(n,o);return{count:s,start:l,loop:e.loop,ilen:ho&&n>o)?s+h-l:h-l}}function tQ(t,e,i,a){let n,r,o;let{points:l,options:h}=e,{count:d,start:c,loop:u,ilen:g}=tY(l,i,a),p=h.stepped?s.ar:h.tension||"monotone"===h.cubicInterpolationMode?s.as:tU,{move:f=!0,reverse:m}=a||{};for(n=0;n<=g;++n)(r=l[(c+(m?g-n:n))%d]).skip||(f?(t.moveTo(r.x,r.y),f=!1):p(t,o,r,m,h.stepped),o=r);return u&&p(t,o,r=l[(c+(m?g:0))%d],m,h.stepped),!!u}function tX(t,e,i,s){let a,n,r,o,l,h;let d=e.points,{count:c,start:u,ilen:g}=tY(d,i,s),{move:p=!0,reverse:f}=s||{},m=0,b=0,x=t=>(u+(f?g-t:t))%c,_=()=>{o!==l&&(t.lineTo(m,l),t.lineTo(m,o),t.lineTo(m,h))};for(p&&(n=d[x(0)],t.moveTo(n.x,n.y)),a=0;a<=g;++a){if((n=d[x(a)]).skip)continue;let v=n.x,y=n.y,M=0|v;M===r?(yl&&(l=y),m=(b*m+v)/++b):(_(),t.lineTo(v,y),r=M,b=0,o=l=y),h=y}_()}function tq(t){let e=t.options,i=e.borderDash&&e.borderDash.length,s=!t._decimated&&!t._loop&&!e.tension&&"monotone"!==e.cubicInterpolationMode&&!e.stepped&&!i;return s?tX:tQ}let tG="function"==typeof Path2D;class tK extends td{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){let i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){let a=i.spanGaps?this._loop:this._fullLoop;(0,s.al)(this._points,i,t,a,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=(0,s.am)(this,this.options.segment))}first(){let t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){let t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){let i,a;let n=this.options,r=t[e],o=this.points,l=(0,s.an)(this,{property:e,start:r,end:r});if(!l.length)return;let h=[],d=n.stepped?s.ao:n.tension||"monotone"===n.cubicInterpolationMode?s.ap:s.aq;for(i=0,a=l.length;i=s.T||(0,s.p)(n,o,l),f=(0,s.aj)(r,h+u,d+u);return p&&f}getCenterPoint(t){let{x:e,y:i,startAngle:s,endAngle:a,innerRadius:n,outerRadius:r}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius","circumference"],t),{offset:o,spacing:l}=this.options,h=(s+a)/2,d=(n+r+l+o)/2;return{x:e+Math.cos(h)*d,y:i+Math.sin(h)*d}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){let{options:e,circumference:i}=this,a=(e.offset||0)/4,n=(e.spacing||0)/2,r=e.circular;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>s.T?Math.floor(i/s.T):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();let o=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(o)*a,Math.sin(o)*a);let l=1-Math.sin(Math.min(s.P,i||0)),h=a*l;t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,function(t,e,i,a,n){let{fullCircles:r,startAngle:o,circumference:l}=e,h=e.endAngle;if(r){tW(t,e,i,a,h,n);for(let d=0;dn?(d=n/h,t.arc(r,o,h,i+d,a-d,!0)):t.arc(r,o,n,i+s.H,a-s.H),t.closePath(),t.clip()}(t,e,g),r||(tW(t,e,i,a,g,n),t.stroke())}(t,this,h,n,r),t.restore()}},LineElement:tK,PointElement:class extends td{static id="point";static defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,e,i){let s=this.options,{x:a,y:n}=this.getProps(["x","y"],i);return Math.pow(t-a,2)+Math.pow(e-n,2)t.replace("rgb(","rgba(").replace(")",", 0.5)"));function t7(t){return t6[t%t6.length]}function t8(t){return t4[t%t4.length]}function t9(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}function et(t){if(t._decimated){let e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{value:e})}}function ee(t){t.data.datasets.forEach(t=>{et(t)})}function ei(t,e,i,a){if(a)return;let n=e[t],r=i[t];return"angle"===t&&(n=(0,s.ay)(n),r=(0,s.ay)(r)),{property:t,start:n,end:r}}function es(t,e,i){for(;e>t;e--){let s=i[e];if(!isNaN(s.x)&&!isNaN(s.y))break}return e}function ea(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function en(t,e){let i=[],a=!1;return(0,s.b)(t)?(a=!0,i=t):i=function(t,e){let{x:i=null,y:s=null}=t||{},a=e.points,n=[];return e.segments.forEach(({start:t,end:e})=>{e=es(t,e,a);let r=a[t],o=a[e];null!==s?(n.push({x:r.x,y:s}),n.push({x:o.x,y:s})):null!==i&&(n.push({x:i,y:r.y}),n.push({x:i,y:o.y}))}),n}(t,e),i.length?new tK({points:i,options:{tension:0},_loop:a,_fullLoop:a}):null}function er(t){return t&&!1!==t.fill}class eo{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){let{x:a,y:n,radius:r}=this;return e=e||{start:0,end:s.T},t.arc(a,n,r,e.end,e.start,!0),!i.bounds}interpolate(t){let{x:e,y:i,radius:s}=this,a=t.angle;return{x:e+Math.cos(a)*s,y:i+Math.sin(a)*s,angle:a}}}function el(t,e,i){let a=function(t){let{chart:e,fill:i,line:a}=t;if((0,s.g)(i))return function(t,e){let i=t.getDatasetMeta(e),s=i&&t.isDatasetVisible(e);return s?i.dataset:null}(e,i);if("stack"===i)return function(t){let{scale:e,index:i,line:a}=t,n=[],r=a.segments,o=a.points,l=function(t,e){let i=[],s=t.getMatchingVisibleMetas("line");for(let a=0;a{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=t.pointStyleWidth||Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}},eg=(t,e)=>null!==t&&null!==e&&t.datasetIndex===e.datasetIndex&&t.index===e.index;class ep extends td{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){let t=this.options.labels||{},e=(0,s.Q)(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter(e=>t.filter(e,this.chart.data))),t.sort&&(e=e.sort((e,i)=>t.sort(e,i,this.chart.data))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){let t,e;let{options:i,ctx:a}=this;if(!i.display){this.width=this.height=0;return}let n=i.labels,r=(0,s.a0)(n.font),o=r.size,l=this._computeTitleHeight(),{boxWidth:h,itemHeight:d}=eu(n,o);a.font=r.string,this.isHorizontal()?(t=this.maxWidth,e=this._fitRows(l,o,h,d)+10):(e=this.maxHeight,t=this._fitCols(l,r,h,d)+10),this.width=Math.min(t,i.maxWidth||this.maxWidth),this.height=Math.min(e,i.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){let{ctx:a,maxWidth:n,options:{labels:{padding:r}}}=this,o=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+r,d=t;a.textAlign="left",a.textBaseline="middle";let c=-1,u=-h;return this.legendItems.forEach((t,g)=>{let p=i+e/2+a.measureText(t.text).width;(0===g||l[l.length-1]+p+2*r>n)&&(d+=h,l[l.length-(g>0?0:1)]=0,u+=h,c++),o[g]={left:0,top:u,row:c,width:p,height:s},l[l.length-1]+=p+r}),d}_fitCols(t,e,i,s){let{ctx:a,maxHeight:n,options:{labels:{padding:r}}}=this,o=this.legendHitBoxes=[],l=this.columnSizes=[],h=n-t,d=r,c=0,u=0,g=0,p=0;return this.legendItems.forEach((t,n)=>{let{itemWidth:f,itemHeight:m}=function(t,e,i,s,a){var n;let r,o;let l=((r=s.text)&&"string"!=typeof r&&(r=r.reduce((t,e)=>t.length>e.length?t:e)),t+e.size/2+i.measureText(r).width),h=(n=e.lineHeight,o=a,"string"!=typeof s.text&&(o=ef(s,n)),o);return{itemWidth:l,itemHeight:h}}(i,e,a,t,s);n>0&&u+m+2*r>h&&(d+=c+r,l.push({width:c,height:u}),g+=c+r,p++,c=u=0),o[n]={left:g,top:u,col:p,width:f,height:m},c=Math.max(c,f),u+=m+r}),d+=c,l.push({width:c,height:u}),d}adjustHitBoxes(){if(!this.options.display)return;let t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:a},rtl:n}}=this,r=(0,s.az)(n,this.left,this.width);if(this.isHorizontal()){let o=0,l=(0,s.a2)(i,this.left+a,this.right-this.lineWidths[o]);for(let h of e)o!==h.row&&(o=h.row,l=(0,s.a2)(i,this.left+a,this.right-this.lineWidths[o])),h.top+=this.top+t+a,h.left=r.leftForLtr(r.x(l),h.width),l+=h.width+a}else{let d=0,c=(0,s.a2)(i,this.top+t+a,this.bottom-this.columnSizes[d].height);for(let u of e)u.col!==d&&(d=u.col,c=(0,s.a2)(i,this.top+t+a,this.bottom-this.columnSizes[d].height)),u.top=c,u.left+=this.left+a,u.left=r.leftForLtr(r.x(u.left),u.width),c+=u.height+a}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){let t=this.ctx;(0,s.Y)(t,this),this._draw(),(0,s.$)(t)}}_draw(){let t;let{options:e,columnSizes:i,lineWidths:a,ctx:n}=this,{align:r,labels:o}=e,l=s.d.color,h=(0,s.az)(e.rtl,this.left,this.width),d=(0,s.a0)(o.font),{padding:c}=o,u=d.size,g=u/2;this.drawTitle(),n.textAlign=h.textAlign("left"),n.textBaseline="middle",n.lineWidth=.5,n.font=d.string;let{boxWidth:p,boxHeight:f,itemHeight:m}=eu(o,u),b=function(t,e,i){if(isNaN(p)||p<=0||isNaN(f)||f<0)return;n.save();let a=(0,s.v)(i.lineWidth,1);if(n.fillStyle=(0,s.v)(i.fillStyle,l),n.lineCap=(0,s.v)(i.lineCap,"butt"),n.lineDashOffset=(0,s.v)(i.lineDashOffset,0),n.lineJoin=(0,s.v)(i.lineJoin,"miter"),n.lineWidth=a,n.strokeStyle=(0,s.v)(i.strokeStyle,l),n.setLineDash((0,s.v)(i.lineDash,[])),o.usePointStyle){let r={radius:f*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:a},d=h.xPlus(t,p/2);(0,s.aD)(n,r,d,e+g,o.pointStyleWidth&&p)}else{let c=e+Math.max((u-f)/2,0),m=h.leftForLtr(t,p),b=(0,s.aw)(i.borderRadius);n.beginPath(),Object.values(b).some(t=>0!==t)?(0,s.au)(n,{x:m,y:c,w:p,h:f,radius:b}):n.rect(m,c,p,f),n.fill(),0!==a&&n.stroke()}n.restore()},x=function(t,e,i){(0,s.Z)(n,i.text,t,e+m/2,d,{strikethrough:i.hidden,textAlign:h.textAlign(i.textAlign)})},_=this.isHorizontal(),v=this._computeTitleHeight();t=_?{x:(0,s.a2)(r,this.left+c,this.right-a[0]),y:this.top+c+v,line:0}:{x:this.left+c,y:(0,s.a2)(r,this.top+v+c,this.bottom-i[0].height),line:0},(0,s.aA)(this.ctx,e.textDirection);let y=m+c;this.legendItems.forEach((l,u)=>{n.strokeStyle=l.fontColor,n.fillStyle=l.fontColor;let f=n.measureText(l.text).width,m=h.textAlign(l.textAlign||(l.textAlign=o.textAlign)),M=p+g+f,w=t.x,k=t.y;h.setWidth(this.width),_?u>0&&w+M+c>this.right&&(k=t.y+=y,t.line++,w=t.x=(0,s.a2)(r,this.left+c,this.right-a[t.line])):u>0&&k+y>this.bottom&&(w=t.x=w+i[t.line].width+c,t.line++,k=t.y=(0,s.a2)(r,this.top+v+c,this.bottom-i[t.line].height));let S=h.x(w);if(b(S,k,l),w=(0,s.aB)(m,w+p+g,_?w+M:this.right,e.rtl),x(h.x(w),k,l),_)t.x+=M+c;else if("string"!=typeof l.text){let P=d.lineHeight;t.y+=ef(l,P)}else t.y+=y}),(0,s.aC)(this.ctx,e.textDirection)}drawTitle(){let t;let e=this.options,i=e.title,a=(0,s.a0)(i.font),n=(0,s.E)(i.padding);if(!i.display)return;let r=(0,s.az)(e.rtl,this.left,this.width),o=this.ctx,l=i.position,h=a.size/2,d=n.top+h,c=this.left,u=this.width;if(this.isHorizontal())u=Math.max(...this.lineWidths),t=this.top+d,c=(0,s.a2)(e.align,c,this.right-u);else{let g=this.columnSizes.reduce((t,e)=>Math.max(t,e.height),0);t=d+(0,s.a2)(e.align,this.top,this.bottom-g-e.labels.padding-this._computeTitleHeight())}let p=(0,s.a2)(l,c,c+u);o.textAlign=r.textAlign((0,s.a1)(l)),o.textBaseline="middle",o.strokeStyle=i.color,o.fillStyle=i.color,o.font=a.string,(0,s.Z)(o,i.text,p,t,a)}_computeTitleHeight(){let t=this.options.title,e=(0,s.a0)(t.font),i=(0,s.E)(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,a,n;if((0,s.aj)(t,this.left,this.right)&&(0,s.aj)(e,this.top,this.bottom)){for(i=0,n=this.legendHitBoxes;i-1?t.split("\n"):t}function ey(t,e){let i=t.chart.ctx,{body:a,footer:n,title:r}=t,{boxWidth:o,boxHeight:l}=e,h=(0,s.a0)(e.bodyFont),d=(0,s.a0)(e.titleFont),c=(0,s.a0)(e.footerFont),u=r.length,g=n.length,p=a.length,f=(0,s.E)(e.padding),m=f.height,b=0,x=a.reduce((t,e)=>t+e.before.length+e.lines.length+e.after.length,0);if(x+=t.beforeBody.length+t.afterBody.length,u&&(m+=u*d.lineHeight+(u-1)*e.titleSpacing+e.titleMarginBottom),x){let _=e.displayColors?Math.max(l,h.lineHeight):h.lineHeight;m+=p*_+(x-p)*h.lineHeight+(x-1)*e.bodySpacing}g&&(m+=e.footerMarginTop+g*c.lineHeight+(g-1)*e.footerSpacing);let v=0,y=function(t){b=Math.max(b,i.measureText(t).width+v)};return i.save(),i.font=d.string,(0,s.F)(t.title,y),i.font=h.string,(0,s.F)(t.beforeBody.concat(t.afterBody),y),v=e.displayColors?o+2+e.boxPadding:0,(0,s.F)(a,t=>{(0,s.F)(t.before,y),(0,s.F)(t.lines,y),(0,s.F)(t.after,y)}),v=0,i.font=c.string,(0,s.F)(t.footer,y),i.restore(),b+=f.width,{width:b,height:m}}function eM(t,e,i){let s=i.yAlign||e.yAlign||function(t,e){let{y:i,height:s}=e;return it.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||function(t,e,i,s){let{x:a,width:n}=i,{width:r,chartArea:{left:o,right:l}}=t,h="center";return"center"===s?h=a<=(o+l)/2?"left":"right":a<=n/2?h="left":a>=r-n/2&&(h="right"),function(t,e,i,s){let{x:a,width:n}=s,r=i.caretSize+i.caretPadding;if("left"===t&&a+n+r>e.width||"right"===t&&a-n-r<0)return!0}(h,t,e,i)&&(h="center"),h}(t,e,i,s),yAlign:s}}function ew(t,e,i,a){let{caretSize:n,caretPadding:r,cornerRadius:o}=t,{xAlign:l,yAlign:h}=i,d=n+r,{topLeft:c,topRight:u,bottomLeft:g,bottomRight:p}=(0,s.aw)(o),f=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,l),m=function(t,e,i){let{y:s,height:a}=t;return"top"===e?s+=i:"bottom"===e?s-=a+i:s-=a/2,s}(e,h,d);return"center"===h?"left"===l?f+=d:"right"===l&&(f-=d):"left"===l?f-=Math.max(c,g)+n:"right"===l&&(f+=Math.max(u,p)+n),{x:(0,s.S)(f,0,a.width-e.width),y:(0,s.S)(m,0,a.height-e.height)}}function ek(t,e,i){let a=(0,s.E)(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-a.right:t.x+a.left}function eS(t,e){let i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}let eP={beforeTitle:s.aF,title(t){if(t.length>0){let e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(s>0&&e.dataIndex{let e={before:[],lines:[],after:[]},s=eS(i,t);e_(e.before,ev(eD(s,"beforeLabel",this,t))),e_(e.lines,eD(s,"label",this,t)),e_(e.after,ev(eD(s,"afterLabel",this,t))),a.push(e)}),a}getAfterBody(t,e){return e_([],ev(eD(e.callbacks,"afterBody",this,t)))}getFooter(t,e){let{callbacks:i}=e,s=eD(i,"beforeFooter",this,t),a=eD(i,"footer",this,t),n=eD(i,"afterFooter",this,t),r=[];return r=e_(r,ev(s)),r=e_(r,ev(a)),r=e_(r,ev(n))}_createItems(t){let e,i;let a=this._active,n=this.chart.data,r=[],o=[],l=[],h=[];for(e=0,i=a.length;et.filter(e,i,s,n))),t.itemSort&&(h=h.sort((e,i)=>t.itemSort(e,i,n))),(0,s.F)(h,e=>{let i=eS(t.callbacks,e);r.push(eD(i,"labelColor",this,e)),o.push(eD(i,"labelPointStyle",this,e)),l.push(eD(i,"labelTextColor",this,e))}),this.labelColors=r,this.labelPointStyles=o,this.labelTextColors=l,this.dataPoints=h,h}update(t,e){let i;let s=this.options.setContext(this.getContext()),a=this._active,n=[];if(a.length){let r=ex[s.position].call(this,a,this._eventPosition);n=this._createItems(s),this.title=this.getTitle(n,s),this.beforeBody=this.getBeforeBody(n,s),this.body=this.getBody(n,s),this.afterBody=this.getAfterBody(n,s),this.footer=this.getFooter(n,s);let o=this._size=ey(this,s),l=Object.assign({},r,o),h=eM(this.chart,s,l),d=ew(s,l,h,this.chart);this.xAlign=h.xAlign,this.yAlign=h.yAlign,i={opacity:1,x:d.x,y:d.y,width:o.width,height:o.height,caretX:r.x,caretY:r.y}}else 0!==this.opacity&&(i={opacity:0});this._tooltipItems=n,this.$context=void 0,i&&this._resolveAnimations().update(this,i),t&&s.external&&s.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){let a=this.getCaretPosition(t,i,s);e.lineTo(a.x1,a.y1),e.lineTo(a.x2,a.y2),e.lineTo(a.x3,a.y3)}getCaretPosition(t,e,i){let a,n,r,o,l,h;let{xAlign:d,yAlign:c}=this,{caretSize:u,cornerRadius:g}=i,{topLeft:p,topRight:f,bottomLeft:m,bottomRight:b}=(0,s.aw)(g),{x:x,y:_}=t,{width:v,height:y}=e;return"center"===c?(l=_+y/2,"left"===d?(n=(a=x)-u,o=l+u,h=l-u):(n=(a=x+v)+u,o=l-u,h=l+u),r=a):(n="left"===d?x+Math.max(p,m)+u:"right"===d?x+v-Math.max(f,b)-u:this.caretX,"top"===c?(l=(o=_)-u,a=n-u,r=n+u):(l=(o=_+y)+u,a=n+u,r=n-u),h=o),{x1:a,x2:n,x3:r,y1:o,y2:l,y3:h}}drawTitle(t,e,i){let a,n,r;let o=this.title,l=o.length;if(l){let h=(0,s.az)(i.rtl,this.x,this.width);for(r=0,t.x=ek(this,i.titleAlign,i),e.textAlign=h.textAlign(i.titleAlign),e.textBaseline="middle",a=(0,s.a0)(i.titleFont),n=i.titleSpacing,e.fillStyle=i.titleColor,e.font=a.string;r0!==t)?(t.beginPath(),t.fillStyle=n.multiKeyBackground,(0,s.au)(t,{x:_,y:f,w:h,h:l,radius:y}),t.fill(),t.stroke(),t.fillStyle=r.backgroundColor,t.beginPath(),(0,s.au)(t,{x:v,y:f+1,w:h-2,h:l-2,radius:y}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(_,f,h,l),t.strokeRect(_,f,h,l),t.fillStyle=r.backgroundColor,t.fillRect(v,f+1,h-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){let a,n,r,o,l,h,d;let{body:c}=this,{bodySpacing:u,bodyAlign:g,displayColors:p,boxHeight:f,boxWidth:m,boxPadding:b}=i,x=(0,s.a0)(i.bodyFont),_=x.lineHeight,v=0,y=(0,s.az)(i.rtl,this.x,this.width),M=function(i){e.fillText(i,y.x(t.x+v),t.y+_/2),t.y+=_+u},w=y.textAlign(g);for(e.textAlign=g,e.textBaseline="middle",e.font=x.string,t.x=ek(this,w,i),e.fillStyle=i.bodyColor,(0,s.F)(this.beforeBody,M),v=p&&"right"!==w?"center"===g?m/2+b:m+2+b:0,o=0,h=c.length;o0&&e.stroke()}_updateAnimationTarget(t){let e=this.chart,i=this.$animations,s=i&&i.x,a=i&&i.y;if(s||a){let n=ex[t.position].call(this,this._active,this._eventPosition);if(!n)return;let r=this._size=ey(this,t),o=Object.assign({},n,this._size),l=eM(e,t,o),h=ew(t,o,l,e);(s._to!==h.x||a._to!==h.y)&&(this.xAlign=l.xAlign,this.yAlign=l.yAlign,this.width=r.width,this.height=r.height,this.caretX=n.x,this.caretY=n.y,this._resolveAnimations().update(this,h))}}_willRender(){return!!this.opacity}draw(t){let e=this.options.setContext(this.getContext()),i=this.opacity;if(!i)return;this._updateAnimationTarget(e);let a={width:this.width,height:this.height},n={x:this.x,y:this.y};i=.001>Math.abs(i)?0:i;let r=(0,s.E)(e.padding),o=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&o&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,a,e),(0,s.aA)(t,e.textDirection),n.y+=r.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),(0,s.aC)(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){let i=this._active,a=t.map(({datasetIndex:t,index:e})=>{let i=this.chart.getDatasetMeta(t);if(!i)throw Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}),n=!(0,s.ah)(i,a),r=this._positionChanged(a,e);(n||r)&&(this._active=a,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;let a=this.options,n=this._active||[],r=this._getActiveElements(t,n,e,i),o=this._positionChanged(r,t),l=e||!(0,s.ah)(r,n)||o;return l&&(this._active=r,(a.enabled||a.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),l}_getActiveElements(t,e,i,s){let a=this.options;if("mouseout"===t.type)return[];if(!s)return e;let n=this.chart.getElementsAtEventForMode(t,a.mode,a,i);return a.reverse&&n.reverse(),n}_positionChanged(t,e){let{caretX:i,caretY:s,options:a}=this,n=ex[a.position].call(this,t,e);return!1!==n&&(i!==n.x||s!==n.y)}}var eL=Object.freeze({__proto__:null,Colors:{id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){let s;if(!i.enabled)return;let{options:{elements:a},data:{datasets:n}}=t.config;if(!i.forceOverride&&(t9(n)||a&&t9(a)))return;let r=(s=0,(e,i)=>{var a,n,r,o,l,h;let d=t.getDatasetMeta(i).controller;d instanceof P?(a=e,n=s,a.backgroundColor=a.data.map(()=>t7(n++)),s=n):d instanceof D?(r=e,o=s,r.backgroundColor=r.data.map(()=>t8(o++)),s=o):d&&(l=e,h=s,l.borderColor=t7(h),l.backgroundColor=t8(h),s=++h)});n.forEach(r)}},Decimation:{id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled){ee(t);return}let a=t.width;t.data.datasets.forEach((e,n)=>{let r;let{_data:o,indexAxis:l}=e,h=t.getDatasetMeta(n),d=o||e.data;if("y"===(0,s.a)([l,t.options.indexAxis])||!h.controller.supportsDecimation)return;let c=t.scales[h.xAxisID];if("linear"!==c.type&&"time"!==c.type||t.options.parsing)return;let{start:u,count:g}=function(t,e){let i;let a=e.length,n=0,{iScale:r}=t,{min:o,max:l,minDefined:h,maxDefined:d}=r.getUserBounds();return h&&(n=(0,s.S)((0,s.B)(e,r.axis,o).lo,0,a-1)),i=d?(0,s.S)((0,s.B)(e,r.axis,l).hi+1,n,a)-n:a-n,{start:n,count:i}}(h,d),p=i.threshold||4*a;if(g<=p){et(e);return}switch((0,s.k)(o)&&(e._data=d,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":r=function(t,e,i,s,a){let n,r,o,l,h;let d=a.samples||s;if(d>=i)return t.slice(e,e+i);let c=[],u=(i-2)/(d-2),g=0,p=e;for(n=0,c[g++]=t[p];no&&(o=l,r=t[f],h=f);c[g++]=r,p=h}return c[g++]=t[e+i-1],c}(d,u,g,a,i);break;case"min-max":r=function(t,e,i,a){let n,r,o,l,h,d,c,u,g,p,f=0,m=0,b=[],x=t[e].x,_=t[e+i-1].x,v=_-x;for(n=e;np&&(p=l,c=n),f=(m*f+r.x)/++m;else{let M=n-1;if(!(0,s.k)(d)&&!(0,s.k)(c)){let w=Math.min(d,c),k=Math.max(d,c);w!==u&&w!==M&&b.push({...t[w],x:f}),k!==u&&k!==M&&b.push({...t[k],x:f})}n>0&&M!==u&&b.push(t[M]),b.push(r),h=y,m=0,g=p=l,d=c=u=n}}return b}(d,u,g,a);break;default:throw Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=r})},destroy(t){ee(t)}},Filler:{id:"filler",afterDatasetsUpdate(t,e,i){let a,n,r,o;let l=(t.data.datasets||[]).length,h=[];for(n=0;n=i)&&n):["origin","start","end","stack","shape"].indexOf(r)>=0&&r}(r,n,l),chart:t,axis:a.controller.options.indexAxis,scale:a.vScale,line:r}),a.$filler=o,h.push(o);for(n=0;n=0;--r){let o=a[r].$filler;o&&(o.line.updateControlPoints(n,o.axis),s&&o.fill&&el(t.ctx,o,n))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;let s=t.getSortedVisibleDatasetMetas();for(let a=s.length-1;a>=0;--a){let n=s[a].$filler;er(n)&&el(t.ctx,n,t.chartArea)}},beforeDatasetDraw(t,e,i){let s=e.meta.$filler;er(s)&&"beforeDatasetDraw"===i.drawTime&&el(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}},Legend:{id:"legend",_element:ep,start(t,e,i){let s=t.legend=new ep({ctx:t.ctx,options:i,chart:t});Y.configure(t,s,i),Y.addBox(t,s)},stop(t){Y.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,i){let s=t.legend;Y.configure(t,s,i),s.options=i},afterUpdate(t){let e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,i){let s=e.datasetIndex,a=i.chart;a.isDatasetVisible(s)?(a.hide(s),e.hidden=!0):(a.show(s),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){let e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:a,textAlign:n,color:r,useBorderRadius:o,borderRadius:l}}=t.legend.options;return t._getSortedDatasetMetas().map(t=>{let h=t.controller.getStyle(i?0:void 0),d=(0,s.E)(h.borderWidth);return{text:e[t.index].label,fillStyle:h.backgroundColor,fontColor:r,hidden:!t.visible,lineCap:h.borderCapStyle,lineDash:h.borderDash,lineDashOffset:h.borderDashOffset,lineJoin:h.borderJoinStyle,lineWidth:(d.width+d.height)/4,strokeStyle:h.borderColor,pointStyle:a||h.pointStyle,rotation:h.rotation,textAlign:n||h.textAlign,borderRadius:o&&(l||h.borderRadius),datasetIndex:t.index}},this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}},SubTitle:{id:"subtitle",start(t,e,i){let s=new em({ctx:t.ctx,options:i,chart:t});Y.configure(t,s,i),Y.addBox(t,s),eb.set(t,s)},stop(t){Y.removeBox(t,eb.get(t)),eb.delete(t)},beforeUpdate(t,e,i){let s=eb.get(t);Y.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}},Title:{id:"title",_element:em,start(t,e,i){!function(t,e){let i=new em({ctx:t.ctx,options:e,chart:t});Y.configure(t,i,e),Y.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){let e=t.titleBlock;Y.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){let s=t.titleBlock;Y.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}},Tooltip:{id:"tooltip",_element:eC,positioners:ex,afterInit(t,e,i){i&&(t.tooltip=new eC({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){let e=t.tooltip;if(e&&e._willRender()){let i={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i)}},afterEvent(t,e){if(t.tooltip){let i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:eP},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]}});let eE=(t,e,i,s)=>("string"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i),eO=(t,e)=>null===t?null:(0,s.S)(Math.round(t),0,e);function eA(t){let e=this.getLabels();return t>=0&&ta=e?a:t,o=t=>n=i?n:t;if(t){let l=(0,s.s)(a),h=(0,s.s)(n);l<0&&h<0?o(0):l>0&&h>0&&r(0)}if(a===n){let d=0===n?1:Math.abs(.05*n);o(n+d),t||r(a-d)}this.min=a,this.max=n}getTickLimit(){let t;let e=this.options.ticks,{maxTicksLimit:i,stepSize:s}=e;return s?(t=Math.ceil(this.max/s)-Math.floor(this.min/s)+1)>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${t} ticks. Limiting to 1000.`),t=1e3):(t=this.computeTickLimit(),i=i||11),i&&(t=Math.min(i,t)),t}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){let t=this.options,e=t.ticks,i=this.getTickLimit();i=Math.max(2,i);let a={maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},n=this._range||this,r=function(t,e){let i,a,n,r;let o=[],{bounds:l,step:h,min:d,max:c,precision:u,count:g,maxTicks:p,maxDigits:f,includeBounds:m}=t,b=h||1,x=p-1,{min:_,max:v}=e,y=!(0,s.k)(d),M=!(0,s.k)(c),w=!(0,s.k)(g),k=(v-_)/(f+1),S=(0,s.aH)((v-_)/x/b)*b;if(S<1e-14&&!y&&!M)return[{value:_},{value:v}];(r=Math.ceil(v/S)-Math.floor(_/S))>x&&(S=(0,s.aH)(r*S/x/b)*b),(0,s.k)(u)||(S=Math.ceil(S*(i=Math.pow(10,u)))/i),"ticks"===l?(a=Math.floor(_/S)*S,n=Math.ceil(v/S)*S):(a=_,n=v),y&&M&&h&&(0,s.aI)((c-d)/h,S/1e3)?(r=Math.round(Math.min((c-d)/S,p)),S=(c-d)/r,a=d,n=c):w?(a=y?d:a,S=((n=M?c:n)-a)/(r=g-1)):(r=(n-a)/S,r=(0,s.aJ)(r,Math.round(r),S/1e3)?Math.round(r):Math.ceil(r));let P=Math.max((0,s.aK)(S),(0,s.aK)(a));i=Math.pow(10,(0,s.k)(u)?P:u),a=Math.round(a*i)/i,n=Math.round(n*i)/i;let D=0;for(y&&(m&&a!==d?(o.push({value:d}),aMath.floor((0,s.aM)(t)),eI=(t,e)=>Math.pow(10,eR(t)+e);function eV(t){let e=t/Math.pow(10,eR(t));return 1===e}function eB(t,e,i){let s=Math.pow(10,i);return Math.ceil(e/s)-Math.floor(t/s)}class eN extends tb{static id="logarithmic";static defaults={ticks:{callback:s.aL.formatters.logarithmic,major:{enabled:!0}}};constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){let i=eF.prototype.parse.apply(this,[t,e]);if(0===i){this._zero=!0;return}return(0,s.g)(i)&&i>0?i:null}determineDataLimits(){let{min:t,max:e}=this.getMinMax(!0);this.min=(0,s.g)(t)?Math.max(0,t):null,this.max=(0,s.g)(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!(0,s.g)(this._userMin)&&(this.min=t===eI(this.min,0)?eI(this.min,-1):eI(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){let{minDefined:t,maxDefined:e}=this.getUserBounds(),i=this.min,s=this.max,a=e=>i=t?i:e,n=t=>s=e?s:t;i===s&&(i<=0?(a(1),n(10)):(a(eI(i,-1)),n(eI(s,1)))),i<=0&&a(eI(s,-1)),s<=0&&n(eI(i,1)),this.min=i,this.max=s}buildTicks(){let t=this.options,e={min:this._userMin,max:this._userMax},i=function(t,{min:e,max:i}){e=(0,s.O)(t.min,e);let a=[],n=eR(e),r=function(t,e){let i=eR(e-t);for(;eB(t,e,i)>10;)i++;for(;10>eB(t,e,i);)i--;return Math.min(i,eR(t))}(e,i),o=r<0?Math.pow(10,Math.abs(r)):1,l=Math.pow(10,r),h=n>r?Math.pow(10,n):0,d=Math.round((e-h)*o)/o,c=Math.floor((e-h)/l/10)*l*10,u=Math.floor((d-c)/Math.pow(10,r)),g=(0,s.O)(t.min,Math.round((h+c+u*Math.pow(10,r))*o)/o);for(;g=10?u=u<15?15:20:u++,u>=20&&(u=2,o=++r>=0?1:o),g=Math.round((h+c+u*Math.pow(10,r))*o)/o;let p=(0,s.O)(t.max,g);return a.push({value:p,major:eV(p),significand:u}),a}(e,this);return"ticks"===t.bounds&&(0,s.aG)(i,this,"value"),t.reverse?(i.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),i}getLabelForValue(t){return void 0===t?"0":(0,s.o)(t,this.chart.options.locale,this.options.ticks.format)}configure(){let t=this.min;super.configure(),this._startValue=(0,s.aM)(t),this._valueRange=(0,s.aM)(this.max)-(0,s.aM)(t)}getPixelForValue(t){return((void 0===t||0===t)&&(t=this.min),null===t||isNaN(t))?NaN:this.getPixelForDecimal(t===this.min?0:((0,s.aM)(t)-this._startValue)/this._valueRange)}getValueForPixel(t){let e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function eH(t){let e=t.ticks;if(e.display&&t.display){let i=(0,s.E)(e.backdropPadding);return(0,s.v)(e.font&&e.font.size,s.d.font.size)+i.height}return 0}function ej(t,e,i,s,a){return t===s||t===a?{start:e-i/2,end:e+i/2}:ta?{start:e-i,end:e}:{start:e,end:e+i}}function eW(t,e,i,a){let{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,s.T);else{let r=t.getPointPosition(0,e);n.moveTo(r.x,r.y);for(let o=1;ot,padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){let t=this._padding=(0,s.E)(eH(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){let{min:t,max:e}=this.getMinMax(!1);this.min=(0,s.g)(t)&&!isNaN(t)?t:0,this.max=(0,s.g)(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/eH(this.options))}generateTickLabels(t){eF.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map((t,e)=>{let i=(0,s.Q)(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""}).filter((t,e)=>this.chart.getDataVisibility(e))}fit(){let t=this.options;t.display&&t.pointLabels.display?function(t){let e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),a=[],n=[],r=t._pointLabels.length,o=t.options.pointLabels,l=o.centerPointLabels?s.P/r:0;for(let h=0;he.r&&(o=(s.end-e.r)/n,t.r=Math.max(t.r,e.r+o)),a.starte.b&&(l=(a.end-e.b)/r,t.b=Math.max(t.b,e.b+l))}(i,e,m,x,_)}t.setCenterPoint(e.l-i.l,i.r-e.r,e.t-i.t,i.b-e.b),t._pointLabelItems=function(t,e,i){let a=[],n=t._pointLabels.length,r=t.options,o=eH(r)/2,l=t.drawingArea,h=r.pointLabels.centerPointLabels?s.P/n:0;for(let d=0;d270||m<90)&&(c-=u),c),_=0===m||180===m?"center":m<180?"left":"right",v=(g=f.x,p=b.w,"right"===_?g-=p:"center"===_&&(g-=p/2),g);a.push({x:f.x,y:x,textAlign:_,left:v,top:x,right:v+b.w,bottom:x+b.h})}return a}(t,a,n)}(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){let e=s.T/(this._pointLabels.length||1),i=this.options.startAngle||0;return(0,s.ay)(t*e+(0,s.t)(i))}getDistanceFromCenterForValue(t){if((0,s.k)(t))return NaN;let e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if((0,s.k)(t))return NaN;let e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){let e=this._pointLabels||[];if(t>=0&&t=0;n--){let r=a.setContext(t.getPointLabelContext(n)),o=(0,s.a0)(r.font),{x:l,y:h,textAlign:d,left:c,top:u,right:g,bottom:p}=t._pointLabelItems[n],{backdropColor:f}=r;if(!(0,s.k)(f)){let m=(0,s.aw)(r.borderRadius),b=(0,s.E)(r.backdropPadding);i.fillStyle=f;let x=c-b.left,_=u-b.top,v=g-c+b.width,y=p-u+b.height;Object.values(m).some(t=>0!==t)?(i.beginPath(),(0,s.au)(i,{x:x,y:_,w:v,h:y,radius:m}),i.fill()):i.fillRect(x,_,v,y)}(0,s.Z)(i,t._pointLabels[n],l,h+o.lineHeight/2,o,{color:r.color,textAlign:d,textBaseline:"middle"})}}(this,h),o.display&&this.ticks.forEach((t,i)=>{if(0!==i){e=this.getDistanceFromCenterForValue(t.value);let s=this.getContext(i),a=o.setContext(s),n=l.setContext(s);!function(t,e,i,s,a){let n=t.ctx,r=e.circular,{color:o,lineWidth:l}=e;(r||s)&&o&&l&&!(i<0)&&(n.save(),n.strokeStyle=o,n.lineWidth=l,n.setLineDash(a.dash),n.lineDashOffset=a.dashOffset,n.beginPath(),eW(t,i,r,s),n.closePath(),n.stroke(),n.restore())}(this,a,e,h,n)}}),r.display){for(a.save(),t=h-1;t>=0;t--){let d=r.setContext(this.getPointLabelContext(t)),{color:c,lineWidth:u}=d;u&&c&&(a.lineWidth=u,a.strokeStyle=c,a.setLineDash(d.borderDash),a.lineDashOffset=d.borderDashOffset,e=this.getDistanceFromCenterForValue(n.ticks.reverse?this.min:this.max),i=this.getPointPosition(t,e),a.beginPath(),a.moveTo(this.xCenter,this.yCenter),a.lineTo(i.x,i.y),a.stroke())}a.restore()}}drawBorder(){}drawLabels(){let t,e;let i=this.ctx,a=this.options,n=a.ticks;if(!n.display)return;let r=this.getIndexAngle(0);i.save(),i.translate(this.xCenter,this.yCenter),i.rotate(r),i.textAlign="center",i.textBaseline="middle",this.ticks.forEach((r,o)=>{if(0===o&&!a.reverse)return;let l=n.setContext(this.getContext(o)),h=(0,s.a0)(l.font);if(t=this.getDistanceFromCenterForValue(this.ticks[o].value),l.showLabelBackdrop){i.font=h.string,e=i.measureText(r.label).width,i.fillStyle=l.backdropColor;let d=(0,s.E)(l.backdropPadding);i.fillRect(-e/2-d.left,-t-h.size/2-d.top,e+d.width,h.size+d.height)}(0,s.Z)(i,r.label,0,-t,h,{color:l.color})}),i.restore()}drawTitle(){}}let eU={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}},eY=Object.keys(eU);function eQ(t,e){return t-e}function eX(t,e){if((0,s.k)(e))return null;let i=t._adapter,{parser:a,round:n,isoWeekday:r}=t._parseOpts,o=e;return("function"==typeof a&&(o=a(o)),(0,s.g)(o)||(o="string"==typeof a?i.parse(o,a):i.parse(o)),null===o)?null:(n&&(o="week"===n&&((0,s.x)(r)||!0===r)?i.startOf(o,"isoWeek",r):i.startOf(o,n)),+o)}function eq(t,e,i,s){let a=eY.length;for(let n=eY.indexOf(t);n=e?i[a]:i[n];t[r]=!0}}else t[e]=!0}function eK(t,e,i){let s,a;let n=[],r={},o=e.length;for(s=0;s=0&&(e[n].major=!0);return e}(t,n,r,i):n}class eJ extends tb{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){let i=t.time||(t.time={}),a=this._adapter=new O._date(t.adapters.date);a.init(e),(0,s.ab)(i.displayFormats,a.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:eX(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){let t=this.options,e=this._adapter,i=t.time.unit||"day",{min:a,max:n,minDefined:r,maxDefined:o}=this.getUserBounds();function l(t){r||isNaN(t.min)||(a=Math.min(a,t.min)),o||isNaN(t.max)||(n=Math.max(n,t.max))}r&&o||(l(this._getLabelBounds()),("ticks"!==t.bounds||"labels"!==t.ticks.source)&&l(this.getMinMax(!1))),a=(0,s.g)(a)&&!isNaN(a)?a:+e.startOf(Date.now(),i),n=(0,s.g)(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(a,n-1),this.max=Math.max(a+1,n)}_getLabelBounds(){let t=this.getLabelTimestamps(),e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){let t=this.options,e=t.time,i=t.ticks,a="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&a.length&&(this.min=this._userMin||a[0],this.max=this._userMax||a[a.length-1]);let n=this.min,r=this.max,o=(0,s.aO)(a,n,r);return this._unit=e.unit||(i.autoSkip?eq(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,a){for(let n=eY.length-1;n>=eY.indexOf(i);n--){let r=eY[n];if(eU[r].common&&t._adapter.diff(a,s,r)>=e-1)return r}return eY[i?eY.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=eY.indexOf(t)+1,i=eY.length;e+t.value))}initOffsets(t=[]){let e,i,a=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),a=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);let r=t.length<3?.5:.25;a=(0,s.S)(a,0,r),n=(0,s.S)(n,0,r),this._offsets={start:a,end:n,factor:1/(a+1+n)}}_generate(){let t,e;let i=this._adapter,a=this.min,n=this.max,r=this.options,o=r.time,l=o.unit||eq(o.minUnit,a,n,this._getLabelCapacity(a)),h=(0,s.v)(r.ticks.stepSize,1),d="week"===l&&o.isoWeekday,c=(0,s.x)(d)||!0===d,u={},g=a;if(c&&(g=+i.startOf(g,"isoWeek",d)),g=+i.startOf(g,c?"day":l),i.diff(n,a,l)>1e5*h)throw Error(a+" and "+n+" are too far apart with stepSize of "+h+" "+l);let p="data"===r.ticks.source&&this.getDataTimestamps();for(t=g,e=0;tt-e).map(t=>+t)}getLabelForValue(t){let e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}_tickFormatFunction(t,e,i,a){let n=this.options,r=n.ticks.callback;if(r)return(0,s.Q)(r,[t,e,i],this);let o=n.time.displayFormats,l=this._unit,h=this._majorUnit,d=l&&o[l],c=h&&o[h],u=i[e],g=h&&c&&u&&u.major;return this._adapter.format(t,a||(g?c:d))}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e0?r:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;let s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t=t[l].pos&&e<=t[h].pos&&({lo:l,hi:h}=(0,s.B)(t,"pos",e)),{pos:a,time:r}=t[l],{pos:n,time:o}=t[h]):(e>=t[l].time&&e<=t[h].time&&({lo:l,hi:h}=(0,s.B)(t,"time",e)),{time:a,pos:r}=t[l],{time:n,pos:o}=t[h]);let d=n-a;return d?r+(o-r)*(e-a)/d:r}class e0 extends eJ{static id="timeseries";static defaults=eJ.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){let t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=eZ(e,this.min),this._tableRange=eZ(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){let e,i,s;let{min:a,max:n}=this,r=[],o=[];for(e=0,i=t.length;e=a&&s<=n&&r.push(s);if(r.length<2)return[{time:a,pos:0},{time:n,pos:1}];for(e=0,i=r.length;ee.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}},LinearScale:ez,LogarithmicScale:eN,RadialLinearScale:e$,TimeScale:eJ,TimeSeriesScale:e0});let e2=[C,t3,eL,e1]}}]); -//# sourceMappingURL=ee8b1517-d8b698f377abd86b.js.map \ No newline at end of file + */class{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){let a=e.listeners[s],n=e.duration;a.forEach(s=>s({chart:t,initial:e.initial,numSteps:n,currentStep:Math.min(i-e.start,n)}))}_refresh(){this._request||(this._running=!0,this._request=s.r.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(t=Date.now()){let e=0;this._charts.forEach((i,s)=>{let a;if(!i.running||!i.items.length)return;let n=i.items,r=n.length-1,o=!1;for(;r>=0;--r)(a=n[r])._active?(a._total>i.duration&&(i.duration=a._total),a.tick(t),o=!0):(n[r]=n[n.length-1],n.pop());o&&(s.draw(),this._notify(s,i,t,"progress")),n.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=n.length}),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){let e=this._charts,i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){let e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce((t,e)=>Math.max(t,e._duration),0),this._refresh())}running(t){if(!this._running)return!1;let e=this._charts.get(t);return!!e&&!!e.running&&!!e.items.length}stop(t){let e=this._charts.get(t);if(!e||!e.items.length)return;let i=e.items,s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}};let n="transparent",r={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){let a=(0,s.c)(t||n),r=a.valid&&(0,s.c)(e||n);return r&&r.valid?r.mix(a,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class o{constructor(t,e,i,a){let n=e[i];a=(0,s.a)([t.to,a,n,t.from]);let o=(0,s.a)([t.from,n,a]);this._active=!0,this._fn=t.fn||r[t.type||typeof o],this._easing=s.e[t.easing]||s.e.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=a,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);let a=this._target[this._prop],n=i-this._start,r=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(r,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=(0,s.a)([t.to,e,a,t.from]),this._from=(0,s.a)([t.from,a,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){let e;let i=t-this._start,s=this._duration,a=this._prop,n=this._from,r=this._loop,o=this._to;if(this._active=n!==o&&(r||i1?2-e:e,e=this._easing(Math.min(1,Math.max(0,e))),this._target[a]=this._fn(n,o,e)}wait(){let t=this._promises||(this._promises=[]);return new Promise((e,i)=>{t.push({res:e,rej:i})})}_notify(t){let e=t?"res":"rej",i=this._promises||[];for(let s=0;s{let n=t[a];if(!(0,s.i)(n))return;let r={};for(let o of e)r[o]=n[o];((0,s.b)(n.properties)&&n.properties||[a]).forEach(t=>{t!==a&&i.has(t)||i.set(t,r)})})}_animateOptions(t,e){let i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i){t.options=e;return}return i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}})),i}(t,i);if(!s)return[];let a=this._createAnimations(s,i);return i.$shared&&(function(t,e){let i=[],s=Object.keys(e);for(let a=0;a{t.options=i},()=>{}),a}_createAnimations(t,e){let i;let s=this._properties,a=[],n=t.$animations||(t.$animations={}),r=Object.keys(e),l=Date.now();for(i=r.length-1;i>=0;--i){let h=r[i];if("$"===h.charAt(0))continue;if("options"===h){a.push(...this._animateOptions(t,e));continue}let d=e[h],c=n[h],u=s.get(h);if(c){if(u&&c.active()){c.update(u,d,l);continue}c.cancel()}if(!u||!u.duration){t[h]=d;continue}n[h]=c=new o(u,t,h,d),a.push(c)}return a}update(t,e){if(0===this._properties.size){Object.assign(t,e);return}let i=this._createAnimations(t,e);if(i.length)return a.add(this._chart,i),!0}}function h(t,e){let i=t&&t.options||{},s=i.reverse,a=void 0===i.min?e:0,n=void 0===i.max?e:0;return{start:s?n:a,end:s?a:n}}function d(t,e){let i,s;let a=[],n=t._getSortedDatasetMetas(e);for(i=0,s=n.length;i0||!i&&n<0)return a.index}return null}function p(t,e){let i;let{chart:s,_cachedMeta:a}=t,n=s._stacks||(s._stacks={}),{iScale:r,vScale:o,index:l}=a,h=r.axis,d=o.axis,c=`${r.id}.${o.id}.${a.stack||a.type}`,u=e.length;for(let p=0;pi[t].axis===e).shift()}function m(t,e){let i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s)for(let a of e=e||t._parsed){let n=a._stacks;if(!n||void 0===n[s]||void 0===n[s][i])return;delete n[s][i],void 0!==n[s]._visualValues&&void 0!==n[s]._visualValues[i]&&delete n[s]._visualValues[i]}}let b=t=>"reset"===t||"none"===t,x=(t,e)=>e?t:Object.assign({},t),_=(t,e,i)=>t&&!e.hidden&&e._stacked&&{keys:d(i,!0),values:null};class v{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){let t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=u(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&m(this._cachedMeta),this.index=t}linkScales(){let t=this.chart,e=this._cachedMeta,i=this.getDataset(),a=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,n=e.xAxisID=(0,s.v)(i.xAxisID,f(t,"x")),r=e.yAxisID=(0,s.v)(i.yAxisID,f(t,"y")),o=e.rAxisID=(0,s.v)(i.rAxisID,f(t,"r")),l=e.indexAxis,h=e.iAxisID=a(l,n,r,o),d=e.vAxisID=a(l,r,n,o);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(r),e.rScale=this.getScaleForId(o),e.iScale=this.getScaleForId(h),e.vScale=this.getScaleForId(d)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){let e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){let t=this._cachedMeta;this._data&&(0,s.u)(this._data,this),t._stacked&&m(t)}_dataCheck(){let t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if((0,s.i)(e))this._data=function(t){let e,i,s;let a=Object.keys(t),n=Array(a.length);for(e=0,i=a.length;e0&&r._parsed[t-1];if(!1===this._parsing)r._parsed=o,r._sorted=!0,n=o;else{n=(0,s.b)(o[t])?this.parseArrayData(r,o,t,e):(0,s.i)(o[t])?this.parseObjectData(r,o,t,e):this.parsePrimitiveData(r,o,t,e);let g=()=>null===a[d]||u&&a[d]e||g=0;--i)if(!p()){this.updateRangeFromParsed(c,t,a,d);break}}return c}getAllParsedValues(t){let e,i,a;let n=this._cachedMeta._parsed,r=[];for(e=0,i=n.length;e=0&&tthis.getContext(i,a,e),f=h.resolveNamedOptions(u,g,p,c);return f.$shared&&(f.$shared=l,n[r]=Object.freeze(x(f,l))),f}_resolveAnimations(t,e,i){let s;let a=this.chart,n=this._cachedDataOpts,r=`animation-${e}`,o=n[r];if(o)return o;if(!1!==a.options.animation){let h=this.chart.config,d=h.datasetAnimationScopeKeys(this._type,e),c=h.getOptionScopes(this.getDataset(),d);s=h.createResolver(c,this.getContext(t,i,e))}let u=new l(a,s&&s.animations);return s&&s._cacheable&&(n[r]=Object.freeze(u)),u}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||b(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){let i=this.resolveDataElementOptions(t,e),s=this._sharedOptions,a=this.getSharedOptions(i),n=this.includeOptions(e,a)||a!==s;return this.updateSharedOptions(a,e,i),{sharedOptions:a,includeOptions:n}}updateElement(t,e,i,s){b(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!b(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;let a=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(a)||a})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){let t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){let t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){let e=this._data,i=this._cachedMeta.data;for(let[s,a,n]of this._syncList)this[s](a,n);this._syncList=[];let r=i.length,o=e.length,l=Math.min(o,r);l&&this.parse(0,l),o>r?this._insertElements(r,o-r,t):o{for(t.length+=e,s=t.length-1;s>=r;s--)t[s]=t[s-e]};for(o(n),s=t;sMath.abs(o)&&(l=o,h=r),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:a,end:n,min:r,max:o}}(t,e,i,a):e[i.axis]=i.parse(t,a),e}function M(t,e,i,s){let a,n,r,o;let l=t.iScale,h=t.vScale,d=l.getLabels(),c=l===h,u=[];for(a=i,n=i+s;a"spacing"!==t,_indexable:t=>"spacing"!==t};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){let e=t.data;if(e.labels.length&&e.datasets.length){let{labels:{pointStyle:i,color:s}}=t.legend.options;return e.labels.map((e,a)=>{let n=t.getDatasetMeta(0),r=n.controller.getStyle(a);return{text:e,fillStyle:r.backgroundColor,strokeStyle:r.borderColor,fontColor:s,lineWidth:r.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(a),index:a}})}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}}};constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){let i=this.getDataset().data,a=this._cachedMeta;if(!1===this._parsing)a._parsed=i;else{let n,r,o=t=>+i[t];if((0,s.i)(i[t])){let{key:l="value"}=this._parsing;o=t=>+(0,s.f)(i[t],l)}for(n=t,r=t+e;n(0,s.p)(e,t,l,!0)?1:Math.max(a,a*i,n,n*i),p=(e,a,n)=>(0,s.p)(e,t,l,!0)?-1:Math.min(a,a*i,n,n*i),f=g(0,h,c),m=g(s.H,d,u),b=p(s.P,h,c),x=p(s.P+s.H,d,u);a=(f-b)/2,n=(m-x)/2,r=-(f+b)/2,o=-(m+x)/2}return{ratioX:a,ratioY:n,offsetX:r,offsetY:o}}(c,d,l),m=(i.width-r)/u,b=(i.height-r)/g,x=(0,s.n)(this.options.radius,Math.max(Math.min(m,b)/2,0)),_=(x-Math.max(x*l,0))/this._getVisibleDatasetWeightTotal();this.offsetX=p*x,this.offsetY=f*x,a.total=this.calculateTotal(),this.outerRadius=x-_*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-_*h,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){let i=this.options,a=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===a._parsed[t]||a.data[t].hidden?0:this.calculateCircumference(a._parsed[t]*n/s.T)}updateElements(t,e,i,s){let a;let n="reset"===s,r=this.chart,o=r.chartArea,l=r.options,h=l.animation,d=(o.left+o.right)/2,c=(o.top+o.bottom)/2,u=n&&h.animateScale,g=u?0:this.innerRadius,p=u?0:this.outerRadius,{sharedOptions:f,includeOptions:m}=this._getSharedOptions(e,s),b=this._getRotation();for(a=0;a0&&!isNaN(t)?s.T*(Math.abs(t)/e):0}getLabelAndValue(t){let e=this._cachedMeta,i=this.chart,a=i.data.labels||[],n=(0,s.o)(e._parsed[t],i.options.locale);return{label:a[t]||"",value:n}}getMaxBorderWidth(t){let e,i,s,a,n,r=0,o=this.chart;if(!t){for(e=0,i=o.data.datasets.length;e{let n=t.getDatasetMeta(0),r=n.controller.getStyle(a);return{text:e,fillStyle:r.backgroundColor,strokeStyle:r.borderColor,fontColor:s,lineWidth:r.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(a),index:a}})}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){let e=this._cachedMeta,i=this.chart,a=i.data.labels||[],n=(0,s.o)(e._parsed[t].r,i.options.locale);return{label:a[t]||"",value:n}}parseObjectData(t,e,i,a){return s.y.bind(this)(t,e,i,a)}update(t){let e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){let t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach((t,i)=>{let s=this.getParsed(i).r;!isNaN(s)&&this.chart.getDataVisibility(i)&&(se.max&&(e.max=s))}),e}_updateRadius(){let t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),a=Math.max(s/2,0),n=Math.max(i.cutoutPercentage?a/100*i.cutoutPercentage:1,0),r=(a-n)/t.getVisibleDatasetCount();this.outerRadius=a-r*this.index,this.innerRadius=this.outerRadius-r}updateElements(t,e,i,a){let n;let r="reset"===a,o=this.chart,l=o.options,h=l.animation,d=this._cachedMeta.rScale,c=d.xCenter,u=d.yCenter,g=d.getIndexAngle(0)-.5*s.P,p=g,f=360/this.countVisibleElements();for(n=0;n{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++}),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?(0,s.t)(this.resolveDataElementOptions(t,e).angle||i):0}}var C=Object.freeze({__proto__:null,BarController:class extends v{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(t,e,i,s){return M(t,e,i,s)}parseArrayData(t,e,i,s){return M(t,e,i,s)}parseObjectData(t,e,i,a){let n,r,o,l;let{iScale:h,vScale:d}=t,{xAxisKey:c="x",yAxisKey:u="y"}=this._parsing,g="x"===h.axis?c:u,p="x"===d.axis?c:u,f=[];for(n=i,r=i+a;nt.x,n="left",r="right"):(a=t.baset.controller.options.grouped),n=i.options.stacked,r=[],o=t=>{let i=t.controller.getParsed(e),a=i&&i[t.vScale.axis];if((0,s.k)(a)||isNaN(a))return!0};for(let l of a)if(!(void 0!==e&&o(l))&&((!1===n||-1===r.indexOf(l.stack)||void 0===n&&void 0===l.stack)&&r.push(l.stack),l.index===t))break;return r.length||r.push(void 0),r}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,i){let s=this._getStacks(t,i),a=void 0!==e?s.indexOf(e):-1;return -1===a?s.length-1:a}_getRuler(){let t,e;let i=this.options,a=this._cachedMeta,n=a.iScale,r=[];for(t=0,e=a.data.length;tt-e))}return t._cache.$bar}(r,t.type),l=r._length,h=()=>{32767!==a&&-32768!==a&&((0,s.h)(n)&&(l=Math.min(l,Math.abs(a-n)||l)),n=a)};for(e=0,i=o.length;e=h?1:-1))*l,g===h&&(b-=i/2);let _=a.getPixelForDecimal(0),v=a.getPixelForDecimal(1);e=(b=Math.max(Math.min(b,Math.max(_,v)),Math.min(_,v)))+i,n&&!u&&(d._stacks[a.axis]._visualValues[r]=a.getValueForPixel(e)-a.getValueForPixel(b))}if(b===a.getPixelForValue(h)){let y=(0,s.s)(i)*a.getLineWidthForValue(h)/2;b+=y,i-=y}return{size:i,base:b,head:e,center:e+i/2}}_calculateBarIndexPixels(t,e){let i,a;let n=e.scale,r=this.options,o=r.skipNull,l=(0,s.v)(r.maxBarThickness,1/0);if(e.grouped){let h=o?this._getStackCount(t):e.stackCount,d="flex"===r.barThickness?function(t,e,i,s){let a=e.pixels,n=a[t],r=t>0?a[t-1]:null,o=t=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){let e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:a}=e,n=this.getParsed(t),r=s.getLabelForValue(n.x),o=a.getLabelForValue(n.y),l=n._custom;return{label:i[t]||"",value:"("+r+", "+o+(l?", "+l:"")+")"}}update(t){let e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){let a="reset"===s,{iScale:n,vScale:r}=this._cachedMeta,{sharedOptions:o,includeOptions:l}=this._getSharedOptions(e,s),h=n.axis,d=r.axis;for(let c=e;c0&&this.getParsed(e-1);for(let y=0;y<_;++y){let M=t[y],w=b?M:{};if(y=x){w.skip=!0;continue}let k=this.getParsed(y),S=(0,s.k)(k[g]),P=w[u]=r.getPixelForValue(k[u],y),D=w[g]=n||S?o.getBasePixel():o.getPixelForValue(l?this.applyStack(o,k,l):k[g],y);w.skip=isNaN(P)||isNaN(D)||S,w.stop=y>0&&Math.abs(k[u]-v[u])>m,f&&(w.parsed=k,w.raw=h.data[y]),c&&(w.options=d||this.resolveDataElementOptions(y,M.active?"active":a)),b||this.updateElement(M,y,w,a),v=k}}getMaxOverflow(){let t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;let a=s[0].size(this.resolveDataElementOptions(0)),n=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,a,n)/2}draw(){let t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PolarAreaController:D,PieController:class extends P{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}},RadarController:class extends v{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(t){let e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,a){return s.y.bind(this)(t,e,i,a)}update(t){let e=this._cachedMeta,i=e.dataset,s=e.data||[],a=e.iScale.getLabels();if(i.points=s,"resize"!==t){let n=this.resolveDatasetElementOptions(t);this.options.showLine||(n.borderWidth=0);let r={_loop:!0,_fullLoop:a.length===s.length,options:n};this.updateElement(i,void 0,r,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){let a=this._cachedMeta.rScale,n="reset"===s;for(let r=e;r0&&this.getParsed(e-1);for(let v=e;v0&&Math.abs(M[g]-_[g])>b,m&&(w.parsed=M,w.raw=h.data[v]),u&&(w.options=c||this.resolveDataElementOptions(v,y.active?"active":a)),x||this.updateElement(y,v,w,a),_=M}this.updateSharedOptions(c,a,d)}getMaxOverflow(){let t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let i=0;for(let s=e.length-1;s>=0;--s)i=Math.max(i,e[s].size(this.resolveDataElementOptions(s))/2);return i>0&&i}let a=t.dataset,n=a.options&&a.options.borderWidth||0;if(!e.length)return n;let r=e[0].size(this.resolveDataElementOptions(0)),o=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(n,r,o)/2}}});function L(){throw Error("This method is not implemented: Check that a complete date adapter is provided.")}class E{static override(t){Object.assign(E.prototype,t)}constructor(t){this.options=t||{}}init(){}formats(){return L()}parse(){return L()}format(){return L()}add(){return L()}diff(){return L()}startOf(){return L()}endOf(){return L()}}var O={_date:E};function A(t,e,i,a,n){let r=t.getSortedVisibleDatasetMetas(),o=i[e];for(let l=0,h=r.length;l{t[r](e[i],a)&&(n.push({element:t,datasetIndex:s,index:l}),o=o||t.inRange(e.x,e.y,a))}),s&&!o)?[]:n}var R={evaluateInteractionItems:A,modes:{index(t,e,i,a){let n=(0,s.z)(e,t),r=i.axis||"x",o=i.includeInvisible||!1,l=i.intersect?T(t,n,r,a,o):F(t,n,r,!1,a,o),h=[];return l.length?(t.getSortedVisibleDatasetMetas().forEach(t=>{let e=l[0].index,i=t.data[e];i&&!i.skip&&h.push({element:i,datasetIndex:t.index,index:e})}),h):[]},dataset(t,e,i,a){let n=(0,s.z)(e,t),r=i.axis||"xy",o=i.includeInvisible||!1,l=i.intersect?T(t,n,r,a,o):F(t,n,r,!1,a,o);if(l.length>0){let h=l[0].datasetIndex,d=t.getDatasetMeta(h).data;l=[];for(let c=0;ct.pos===e)}function B(t,e){return t.filter(t=>-1===I.indexOf(t.pos)&&t.box.axis===e)}function N(t,e){return t.sort((t,i)=>{let s=e?i:t,a=e?t:i;return s.weight===a.weight?s.index-a.index:s.weight-a.weight})}function H(t,e,i,s){return Math.max(t[i],e[i])+Math.max(t[s],e[s])}function j(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function W(t,e,i,a){let n,r,o,l,h,d;let c=[];for(n=0,r=t.length,h=0;n{s[t]=Math.max(e[t],i[t])}),s}(t?["left","right"]:["top","bottom"])}(o.horizontal,e));let{same:u,other:g}=function(t,e,i,a){let{pos:n,box:r}=i,o=t.maxPadding;if(!(0,s.i)(n)){i.size&&(t[n]-=i.size);let l=a[i.stack]||{size:0,count:1};l.size=Math.max(l.size,i.horizontal?r.height:r.width),i.size=l.size/l.count,t[n]+=i.size}r.getPadding&&j(o,r.getPadding());let h=Math.max(0,e.outerWidth-H(o,t,"left","right")),d=Math.max(0,e.outerHeight-H(o,t,"top","bottom")),c=h!==t.w,u=d!==t.h;return t.w=h,t.h=d,i.horizontal?{same:c,other:u}:{same:u,other:c}}(e,i,o,a);h|=u&&c.length,d=d||g,l.fullSize||c.push(o)}return h&&W(c,e,i,a)||d}function $(t,e,i,s,a){t.top=i,t.left=e,t.right=e+s,t.bottom=i+a,t.width=s,t.height=a}function U(t,e,i,a){let n=i.padding,{x:r,y:o}=e;for(let l of t){let h=l.box,d=a[l.stack]||{count:1,placed:0,weight:1},c=l.stackWeight/d.weight||1;if(l.horizontal){let u=e.w*c,g=d.size||h.height;(0,s.h)(d.start)&&(o=d.start),h.fullSize?$(h,n.left,o,i.outerWidth-n.right-n.left,g):$(h,e.left+d.placed,o,u,g),d.start=o,d.placed+=u,o=h.bottom}else{let p=e.h*c,f=d.size||h.width;(0,s.h)(d.start)&&(r=d.start),h.fullSize?$(h,r,n.top,f,i.outerHeight-n.bottom-n.top):$(h,r,e.top+d.placed,f,p),d.start=r,d.placed+=p,r=h.right}}e.x=r,e.y=o}var Y={addBox(t,e){t.boxes||(t.boxes=[]),e.fullSize=e.fullSize||!1,e.position=e.position||"top",e.weight=e.weight||0,e._layers=e._layers||function(){return[{z:0,draw(t){e.draw(t)}}]},t.boxes.push(e)},removeBox(t,e){let i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure(t,e,i){e.fullSize=i.fullSize,e.position=i.position,e.weight=i.weight},update(t,e,i,a){if(!t)return;let n=(0,s.E)(t.options.layout.padding),r=Math.max(e-n.width,0),o=Math.max(i-n.height,0),l=function(t){let e=function(t){let e,i,s,a,n,r;let o=[];for(e=0,i=(t||[]).length;et.box.fullSize),!0),s=N(V(e,"left"),!0),a=N(V(e,"right")),n=N(V(e,"top"),!0),r=N(V(e,"bottom")),o=B(e,"x"),l=B(e,"y");return{fullSize:i,leftAndTop:s.concat(n),rightAndBottom:a.concat(l).concat(r).concat(o),chartArea:V(e,"chartArea"),vertical:s.concat(a).concat(l),horizontal:n.concat(r).concat(o)}}(t.boxes),h=l.vertical,d=l.horizontal;(0,s.F)(t.boxes,t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()});let c=h.reduce((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1,0)||1,u=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:r,availableHeight:o,vBoxMaxWidth:r/2/c,hBoxMaxHeight:o/2}),g=Object.assign({},n);j(g,(0,s.E)(a));let p=Object.assign({maxPadding:g,w:r,h:o,x:n.left,y:n.top},n),f=function(t,e){let i,s,a;let n=function(t){let e={};for(let i of t){let{stack:s,pos:a,stackWeight:n}=i;if(!s||!I.includes(a))continue;let r=e[s]||(e[s]={count:0,placed:0,weight:0,size:0});r.count++,r.weight+=n}return e}(t),{vBoxMaxWidth:r,hBoxMaxHeight:o}=e;for(i=0,s=t.length;i{let i=e.box;Object.assign(i,t.chartArea),i.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})})}};class Q{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):i)}}isAttached(t){return!0}updateConfig(t){}}class X extends Q{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}let q="$chartjs",G={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},K=t=>null===t||""===t,J=!!s.K&&{passive:!0};function Z(t,e,i){t.canvas.removeEventListener(e,i,J)}function tt(t,e){for(let i of t)if(i===e||i.contains(e))return!0}function te(t,e,i){let s=t.canvas,a=new MutationObserver(t=>{let e=!1;for(let a of t)e=(e=e||tt(a.addedNodes,s))&&!tt(a.removedNodes,s);e&&i()});return a.observe(document,{childList:!0,subtree:!0}),a}function ti(t,e,i){let s=t.canvas,a=new MutationObserver(t=>{let e=!1;for(let a of t)e=(e=e||tt(a.removedNodes,s))&&!tt(a.addedNodes,s);e&&i()});return a.observe(document,{childList:!0,subtree:!0}),a}let ts=new Map,ta=0;function tn(){let t=window.devicePixelRatio;t!==ta&&(ta=t,ts.forEach((e,i)=>{i.currentDevicePixelRatio!==t&&e()}))}function tr(t,e,i){let a=t.canvas,n=a&&(0,s.I)(a);if(!n)return;let r=(0,s.L)((t,e)=>{let s=n.clientWidth;i(t,e),s{let e=t[0],i=e.contentRect.width,s=e.contentRect.height;(0!==i||0!==s)&&r(i,s)});return o.observe(n),ts.size||window.addEventListener("resize",tn),ts.set(t,r),o}function to(t,e,i){i&&i.disconnect(),"resize"===e&&(ts.delete(t),ts.size||window.removeEventListener("resize",tn))}function tl(t,e,i){let a=t.canvas,n=(0,s.L)(e=>{null!==t.ctx&&i(function(t,e){let i=G[t.type]||t.type,{x:a,y:n}=(0,s.z)(t,e);return{type:i,chart:e,native:t,x:void 0!==a?a:null,y:void 0!==n?n:null}}(e,t))},t);return!function(t,e,i){t.addEventListener(e,i,J)}(a,e,n),n}class th extends Q{acquireContext(t,e){let i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(!function(t,e){let i=t.style,a=t.getAttribute("height"),n=t.getAttribute("width");if(t[q]={initial:{height:a,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",K(n)){let r=(0,s.J)(t,"width");void 0!==r&&(t.width=r)}if(K(a)){if(""===t.style.height)t.height=t.width/(e||2);else{let o=(0,s.J)(t,"height");void 0!==o&&(t.height=o)}}}(t,e),i):null}releaseContext(t){let e=t.canvas;if(!e[q])return!1;let i=e[q].initial;["height","width"].forEach(t=>{let a=i[t];(0,s.k)(a)?e.removeAttribute(t):e.setAttribute(t,a)});let a=i.style||{};return Object.keys(a).forEach(t=>{e.style[t]=a[t]}),e.width=e.width,delete e[q],!0}addEventListener(t,e,i){this.removeEventListener(t,e);let s=t.$proxies||(t.$proxies={});s[e]=(({attach:te,detach:ti,resize:tr})[e]||tl)(t,e,i)}removeEventListener(t,e){let i=t.$proxies||(t.$proxies={}),s=i[e];s&&((({attach:to,detach:to,resize:to})[e]||Z)(t,e,s),i[e]=void 0)}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,a){return(0,s.G)(t,e,i,a)}isAttached(t){let e=(0,s.I)(t);return!!(e&&e.isConnected)}}class td{static defaults={};static defaultRoutes=void 0;active=!1;tooltipPosition(t){let{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}hasValue(){return(0,s.x)(this.x)&&(0,s.x)(this.y)}getProps(t,e){let i=this.$animations;if(!e||!i)return this;let s={};return t.forEach(t=>{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]}),s}}function tc(t,e,i,a,n){let r,o,l;let h=(0,s.v)(a,0),d=Math.min((0,s.v)(n,t.length),t.length),c=0;for(i=Math.ceil(i),n&&(i=(r=n-a)/Math.floor(r/i)),l=h;l<0;)l=Math.round(h+ ++c*i);for(o=Math.max(h,0);o"left"===t?"right":"right"===t?"left":t,tg=(t,e,i)=>"top"===e||"left"===e?t[e]+i:t[e]-i;function tp(t,e){let i=[],s=t.length/e,a=t.length,n=0;for(;na?a:i,a=n&&i>a?i:a,{min:(0,s.O)(i,(0,s.O)(a,i)),max:(0,s.O)(a,(0,s.O)(i,a))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){let t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){let e=this._labelItems||(this._labelItems=this._computeLabelItems(t));return e}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){(0,s.Q)(this.options.beforeUpdate,[this])}update(t,e,i){let{beginAtZero:a,grace:n,ticks:r}=this.options,o=r.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=(0,s.R)(this,n,a),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();let l=on)return function(t,e,i,s){let a,n=0,r=i[0];for(a=0,s=Math.ceil(s);an)return h}return Math.max(n,1)}(r,e,n);if(o>0){let u,g;let p=o>1?Math.round((h-l)/(o-1)):null;for(tc(e,d,c,(0,s.k)(p)?0:l-p,l),u=0,g=o-1;u=l||r<=1||!this.isHorizontal()){this.labelRotation=o;return}let d=this._getLabelSizes(),c=d.widest.width,u=d.highest.height,g=(0,s.S)(this.chart.width-c,0,this.maxWidth);c+6>(t=a.offset?this.maxWidth/r:g/(r-1))&&(t=g/(r-(a.offset?.5:1)),e=this.maxHeight-tf(a.grid)-n.padding-tm(a.title,this.chart.options.font),i=Math.sqrt(c*c+u*u),h=Math.max(o,Math.min(l,h=(0,s.U)(Math.min(Math.asin((0,s.S)((d.highest.height+6)/t,-1,1)),Math.asin((0,s.S)(e/i,-1,1))-Math.asin((0,s.S)(u/i,-1,1))))))),this.labelRotation=h}afterCalculateLabelRotation(){(0,s.Q)(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){(0,s.Q)(this.options.beforeFit,[this])}fit(){let t={width:0,height:0},{chart:e,options:{ticks:i,title:a,grid:n}}=this,r=this._isVisible(),o=this.isHorizontal();if(r){let l=tm(a,e.options.font);if(o?(t.width=this.maxWidth,t.height=tf(n)+l):(t.height=this.maxHeight,t.width=tf(n)+l),i.display&&this.ticks.length){let{first:h,last:d,widest:c,highest:u}=this._getLabelSizes(),g=2*i.padding,p=(0,s.t)(this.labelRotation),f=Math.cos(p),m=Math.sin(p);if(o){let b=i.mirror?0:m*c.width+f*u.height;t.height=Math.min(this.maxHeight,t.height+b+g)}else{let x=i.mirror?0:f*c.width+m*u.height;t.width=Math.min(this.maxWidth,t.width+x+g)}this._calculatePadding(h,d,m,f)}}this._handleMargins(),o?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){let{ticks:{align:a,padding:n},position:r}=this.options,o=0!==this.labelRotation,l="top"!==r&&"x"===this.axis;if(this.isHorizontal()){let h=this.getPixelForTick(0)-this.left,d=this.right-this.getPixelForTick(this.ticks.length-1),c=0,u=0;o?l?(c=s*t.width,u=i*e.height):(c=i*t.height,u=s*e.width):"start"===a?u=e.width:"end"===a?c=t.width:"inner"!==a&&(c=t.width/2,u=e.width/2),this.paddingLeft=Math.max((c-h+n)*this.width/(this.width-h),0),this.paddingRight=Math.max((u-d+n)*this.width/(this.width-d),0)}else{let g=e.height/2,p=t.height/2;"start"===a?(g=0,p=t.height):"end"===a&&(g=e.height,p=0),this.paddingTop=g+n,this.paddingBottom=p+n}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){(0,s.Q)(this.options.afterFit,[this])}isHorizontal(){let{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e{let i;let s=t.gc,a=s.length/2;if(a>e){for(i=0;i({width:m[t]||0,height:b[t]||0});return{first:M(0),last:M(e-1),widest:M(v),highest:M(y),widths:m,heights:b}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){let e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);let e=this._startPixel+t*this._length;return(0,s.W)(this._alignToPixels?(0,s.X)(this.chart,e,0):e)}getDecimalForPixel(t){let e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){let{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){var e,i;let a=this.ticks||[];if(t>=0&&to*a?o/i:l/a:l*a0}_computeGridLineItems(t){let e,i,a,n,r,o,l,h,d,c,u,g;let p=this.axis,f=this.chart,m=this.options,{grid:b,position:x,border:_}=m,v=b.offset,y=this.isHorizontal(),M=this.ticks,w=M.length+(v?1:0),k=tf(b),S=[],P=_.setContext(this.getContext()),D=P.display?P.width:0,C=D/2,L=function(t){return(0,s.X)(f,t,D)};if("top"===x)e=L(this.bottom),o=this.bottom-k,h=e-C,c=L(t.top)+C,g=t.bottom;else if("bottom"===x)e=L(this.top),c=t.top,g=L(t.bottom)-C,o=e+C,h=this.top+k;else if("left"===x)e=L(this.right),r=this.right-k,l=e-C,d=L(t.left)+C,u=t.right;else if("right"===x)e=L(this.left),d=t.left,u=L(t.right)-C,r=e+C,l=this.left+k;else if("x"===p){if("center"===x)e=L((t.top+t.bottom)/2+.5);else if((0,s.i)(x)){let E=Object.keys(x)[0],O=x[E];e=L(this.chart.scales[E].getPixelForValue(O))}c=t.top,g=t.bottom,h=(o=e+C)+k}else if("y"===p){if("center"===x)e=L((t.left+t.right)/2);else if((0,s.i)(x)){let A=Object.keys(x)[0],T=x[A];e=L(this.chart.scales[A].getPixelForValue(T))}l=(r=e-C)-k,d=t.left,u=t.right}let F=(0,s.v)(m.ticks.maxTicksLimit,w),z=Math.max(1,Math.ceil(w/F));for(i=0;io+1e-6)))return l}(this,i,v))&&(n=(0,s.X)(f,a,B),y?r=l=d=u=n:o=h=c=g=n,S.push({tx1:r,ty1:o,tx2:l,ty2:h,x1:d,y1:c,x2:u,y2:g,width:B,color:N,borderDash:H,borderDashOffset:j,tickWidth:W,tickColor:$,tickBorderDash:U,tickBorderDashOffset:Y}))}return this._ticksLength=w,this._borderValue=e,S}_computeLabelItems(t){let e,i,a,n,r,o,l,h,d,c,u;let g=this.axis,p=this.options,{position:f,ticks:m}=p,b=this.isHorizontal(),x=this.ticks,{align:_,crossAlign:v,padding:y,mirror:M}=m,w=tf(p.grid),k=w+y,S=M?-y:k,P=-(0,s.t)(this.labelRotation),D=[],C="middle";if("top"===f)r=this.bottom-S,o=this._getXAxisLabelAlignment();else if("bottom"===f)r=this.top+S,o=this._getXAxisLabelAlignment();else if("left"===f){let L=this._getYAxisLabelAlignment(w);o=L.textAlign,n=L.x}else if("right"===f){let E=this._getYAxisLabelAlignment(w);o=E.textAlign,n=E.x}else if("x"===g){if("center"===f)r=(t.top+t.bottom)/2+k;else if((0,s.i)(f)){let O=Object.keys(f)[0],A=f[O];r=this.chart.scales[O].getPixelForValue(A)+k}o=this._getXAxisLabelAlignment()}else if("y"===g){if("center"===f)n=(t.left+t.right)/2-k;else if((0,s.i)(f)){let T=Object.keys(f)[0],F=f[T];n=this.chart.scales[T].getPixelForValue(F)}o=this._getYAxisLabelAlignment(w).textAlign}"y"===g&&("start"===_?C="top":"end"===_&&(C="bottom"));let z=this._getLabelSizes();for(e=0,i=x.length;ee.value===t);if(s>=0){let a=e.setContext(this.getContext(s));return a.lineWidth}return 0}drawGrid(t){let e,i;let s=this.options.grid,a=this.ctx,n=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t)),r=(t,e,i)=>{i.width&&i.color&&(a.save(),a.lineWidth=i.width,a.strokeStyle=i.color,a.setLineDash(i.borderDash||[]),a.lineDashOffset=i.borderDashOffset,a.beginPath(),a.moveTo(t.x,t.y),a.lineTo(e.x,e.y),a.stroke(),a.restore())};if(s.display)for(e=0,i=n.length;e{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:a,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){let e,i;let s=this.chart.getSortedVisibleDatasetMetas(),a=this.axis+"AxisID",n=[];for(e=0,i=s.length;e{let a=i.split("."),n=a.pop(),r=[t].concat(a).join("."),o=e[i].split("."),l=o.pop(),h=o.join(".");s.d.route(r,n,h,l)})}(e,t.defaultRoutes),t.descriptors&&s.d.describe(e,t.descriptors)}(t,r,e),this.override&&s.d.override(t.id,t.overrides)),r}get(t){return this.items[t]}unregister(t){let e=this.items,i=t.id,a=this.scope;i in e&&delete e[i],a&&i in s.d[a]&&(delete s.d[a][i],this.override&&delete s.a3[i])}}var t_=new class{constructor(){this.controllers=new tx(v,"datasets",!0),this.elements=new tx(td,"elements"),this.plugins=new tx(Object,"plugins"),this.scales=new tx(tb,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach(e=>{let a=i||this._getRegistryForType(e);i||a.isForType(e)||a===this.plugins&&e.id?this._exec(t,a,e):(0,s.F)(e,e=>{let s=i||this._getRegistryForType(e);this._exec(t,s,e)})})}_exec(t,e,i){let a=(0,s.a5)(t);(0,s.Q)(i["before"+a],[],i),e[t](i),(0,s.Q)(i["after"+a],[],i)}_getRegistryForType(t){for(let e=0;et.filter(t=>!e.some(e=>t.plugin.id===e.plugin.id));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}}function ty(t,e){let i=s.d.datasets[t]||{},a=(e.datasets||{})[t]||{};return a.indexAxis||e.indexAxis||i.indexAxis||"x"}function tM(t,e){var i;if("x"===t||"y"===t||"r"===t||(t=e.axis||("top"===(i=e.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.length>1&&tM(t[0].toLowerCase(),e)))return t;throw Error(`Cannot determine type of '${name}' axis. Please provide 'axis' or 'position' option.`)}function tw(t){let e=t.options||(t.options={});e.plugins=(0,s.v)(e.plugins,{}),e.scales=function(t,e){let i=s.a3[t.type]||{scales:{}},a=e.scales||{},n=ty(t.type,e),r=Object.create(null);return Object.keys(a).forEach(t=>{let e=a[t];if(!(0,s.i)(e))return console.error(`Invalid scale configuration for scale: ${t}`);if(e._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);let o=tM(t,e),l=i.scales||{};r[t]=(0,s.ab)(Object.create(null),[{axis:o},e,l[o],l[o===n?"_index_":"_value_"]])}),t.data.datasets.forEach(i=>{let n=i.type||t.type,o=i.indexAxis||ty(n,e),l=s.a3[n]||{},h=l.scales||{};Object.keys(h).forEach(t=>{let e;let n=(e=t,"_index_"===t?e=o:"_value_"===t&&(e="x"===o?"y":"x"),e),l=i[n+"AxisID"]||n;r[l]=r[l]||Object.create(null),(0,s.ab)(r[l],[{axis:n},a[l],h[t]])})}),Object.keys(r).forEach(t=>{let e=r[t];(0,s.ab)(e,[s.d.scales[e.type],s.d.scale])}),r}(t,e)}function tk(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}let tS=new Map,tP=new Set;function tD(t,e){let i=tS.get(t);return i||(i=e(),tS.set(t,i),tP.add(i)),i}let tC=(t,e,i)=>{let a=(0,s.f)(e,i);void 0!==a&&t.add(a)};class tL{constructor(t){var e;this._config=((e=(e=t)||{}).data=tk(e.data),tw(e),e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=tk(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){let t=this._config;this.clearCache(),tw(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return tD(t,()=>[[`datasets.${t}`,""]])}datasetAnimationScopeKeys(t,e){return tD(`${t}.transition.${e}`,()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]])}datasetElementScopeKeys(t,e){return tD(`${t}-${e}`,()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]])}pluginScopeKeys(t){let e=t.id,i=this.type;return tD(`${i}-plugin-${e}`,()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]])}_cachedScopes(t,e){let i=this._scopeCache,s=i.get(t);return(!s||e)&&(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){let{options:a,type:n}=this,r=this._cachedScopes(t,i),o=r.get(e);if(o)return o;let l=new Set;e.forEach(e=>{t&&(l.add(t),e.forEach(e=>tC(l,t,e))),e.forEach(t=>tC(l,a,t)),e.forEach(t=>tC(l,s.a3[n]||{},t)),e.forEach(t=>tC(l,s.d,t)),e.forEach(t=>tC(l,s.a6,t))});let h=Array.from(l);return 0===h.length&&h.push(Object.create(null)),tP.has(e)&&r.set(e,h),h}chartOptionScopes(){let{options:t,type:e}=this;return[t,s.a3[e]||{},s.d.datasets[e]||{},{type:e},s.d,s.a6]}resolveNamedOptions(t,e,i,a=[""]){let n={$shared:!0},{resolver:r,subPrefixes:o}=tE(this._resolverCache,t,a),l=r;if(function(t,e){let{isScriptable:i,isIndexable:a}=(0,s.aa)(t);for(let n of e){let r=i(n),o=a(n),l=(o||r)&&t[n];if(r&&((0,s.a7)(l)||tO(l))||o&&(0,s.b)(l))return!0}return!1}(r,e)){n.$shared=!1,i=(0,s.a7)(i)?i():i;let h=this.createResolver(t,i,o);l=(0,s.a8)(r,i,h)}for(let d of e)n[d]=l[d];return n}createResolver(t,e,i=[""],a){let{resolver:n}=tE(this._resolverCache,t,i);return(0,s.i)(e)?(0,s.a8)(n,e,void 0,a):n}}function tE(t,e,i){let a=t.get(e);a||(a=new Map,t.set(e,a));let n=i.join(),r=a.get(n);if(!r){let o=(0,s.a9)(e,i);r={resolver:o,subPrefixes:i.filter(t=>!t.toLowerCase().includes("hover"))},a.set(n,r)}return r}let tO=t=>(0,s.i)(t)&&Object.getOwnPropertyNames(t).reduce((e,i)=>e||(0,s.a7)(t[i]),!1),tA=["top","bottom","left","right","chartArea"];function tT(t,e){return"top"===t||"bottom"===t||-1===tA.indexOf(t)&&"x"===e}function tF(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function tz(t){let e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),(0,s.Q)(i&&i.onComplete,[t],e)}function tR(t){let e=t.chart,i=e.options.animation;(0,s.Q)(i&&i.onProgress,[t],e)}function tI(t){return(0,s.M)()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}let tV={},tB=t=>{let e=tI(t);return Object.values(tV).filter(t=>t.canvas===e).pop()};class tN{static defaults=s.d;static instances=tV;static overrides=s.a3;static registry=t_;static version="4.1.2";static getChart=tB;static register(...t){t_.add(...t),tH()}static unregister(...t){t_.remove(...t),tH()}constructor(t,e){let i=this.config=new tL(e),n=tI(t),r=tB(n);if(r)throw Error("Canvas is already in use. Chart with ID '"+r.id+"' must be destroyed before the canvas with ID '"+r.canvas.id+"' can be reused.");let o=i.createResolver(i.chartOptionScopes(),this.getContext());this.platform=new(i.platform||(!(0,s.M)()||"undefined"!=typeof OffscreenCanvas&&n instanceof OffscreenCanvas?X:th)),this.platform.updateConfig(i);let l=this.platform.acquireContext(n,o.aspectRatio),h=l&&l.canvas,d=h&&h.height,c=h&&h.width;if(this.id=(0,s.ac)(),this.ctx=l,this.canvas=h,this.width=c,this.height=d,this._options=o,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new tv,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=(0,s.ad)(t=>this.update(t),o.resizeDelay||0),this._dataChanges=[],tV[this.id]=this,!l||!h){console.error("Failed to create chart: can't acquire context from the given item");return}a.listen(this,"complete",tz),a.listen(this,"progress",tR),this._initialize(),this.attached&&this.update()}get aspectRatio(){let{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:a,_aspectRatio:n}=this;return(0,s.k)(t)?e&&n?n:a?i/a:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return t_}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():(0,s.ae)(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return(0,s.af)(this.canvas,this.ctx),this}stop(){return a.stop(this),this}resize(t,e){a.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){let i=this.options,a=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,r=this.platform.getMaximumSize(a,t,e,n),o=i.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=r.width,this.height=r.height,this._aspectRatio=this.aspectRatio,(0,s.ae)(this,o,!0)&&(this.notifyPlugins("resize",{size:r}),(0,s.Q)(i.onResize,[this,r],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){let t=this.options,e=t.scales||{};(0,s.F)(e,(t,e)=>{t.id=e})}buildOrUpdateScales(){let t=this.options,e=t.scales,i=this.scales,a=Object.keys(i).reduce((t,e)=>(t[e]=!1,t),{}),n=[];e&&(n=n.concat(Object.keys(e).map(t=>{let i=e[t],s=tM(t,i),a="r"===s,n="x"===s;return{options:i,dposition:a?"chartArea":n?"bottom":"left",dtype:a?"radialLinear":n?"category":"linear"}}))),(0,s.F)(n,e=>{let n=e.options,r=n.id,o=tM(r,n),l=(0,s.v)(n.type,e.dtype);(void 0===n.position||tT(n.position,o)!==tT(e.dposition))&&(n.position=e.dposition),a[r]=!0;let h=null;if(r in i&&i[r].type===l)h=i[r];else{let d=t_.getScale(l);i[(h=new d({id:r,type:l,ctx:this.ctx,chart:this})).id]=h}h.init(n,t)}),(0,s.F)(a,(t,e)=>{t||delete i[e]}),(0,s.F)(i,t=>{Y.configure(this,t,t.options),Y.addBox(this,t)})}_updateMetasets(){let t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort((t,e)=>t.index-e.index),i>e){for(let s=e;se.length&&delete this._stacks,t.forEach((t,i)=>{0===e.filter(e=>e===t._dataset).length&&this._destroyDatasetMeta(i)})}buildOrUpdateControllers(){let t,e;let i=[],a=this.data.datasets;for(this._removeUnreferencedMetasets(),t=0,e=a.length;t{this.getDatasetMeta(e).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){let e=this.config;e.update();let i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),a=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;let n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let r=0;for(let o=0,l=this.data.datasets.length;o{t.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(tF("z","_idx"));let{_active:c,_lastEvent:u}=this;u?this._eventHandler(u,!0):c.length&&this._updateHoverStyles(c,c,!0),this.render()}_updateScales(){(0,s.F)(this.scales,t=>{Y.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){let t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);(0,s.ag)(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){let{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(let{method:i,start:s,count:a}of e){let n="_removeElements"===i?-a:a;!function(t,e,i){let s=Object.keys(t);for(let a of s){let n=+a;if(n>=e){let r=t[a];delete t[a],(i>0||n>e)&&(t[n+i]=r)}}}(t,s,n)}}_getUniformDataChanges(){let t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];let e=this.data.datasets.length,i=e=>new Set(t.filter(t=>t[0]===e).map((t,e)=>e+","+t.splice(1).join(","))),a=i(0);for(let n=1;nt.split(",")).map(t=>({method:t[1],start:+t[2],count:+t[3]}))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;Y.update(this,this.width,this.height,t);let e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],(0,s.F)(this.boxes,t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))},this),this._layers.forEach((t,e)=>{t._idx=e}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let e=0,i=this.data.datasets.length;e=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){let e=this.ctx,i=t._clip,a=!i.disabled,n=function(t){let{xScale:e,yScale:i}=t;if(e&&i)return{left:e.left,right:e.right,top:i.top,bottom:i.bottom}}(t)||this.chartArea,r={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetDraw",r)&&(a&&(0,s.Y)(e,{left:!1===i.left?0:n.left-i.left,right:!1===i.right?this.width:n.right+i.right,top:!1===i.top?0:n.top-i.top,bottom:!1===i.bottom?this.height:n.bottom+i.bottom}),t.controller.draw(),a&&(0,s.$)(e),r.cancelable=!1,this.notifyPlugins("afterDatasetDraw",r))}isPointInArea(t){return(0,s.C)(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,s){let a=R.modes[e];return"function"==typeof a?a(this,t,i,s):[]}getDatasetMeta(t){let e=this.data.datasets[t],i=this._metasets,s=i.filter(t=>t&&t._dataset===e).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=(0,s.j)(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){let e=this.data.datasets[t];if(!e)return!1;let i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){let i=this.getDatasetMeta(t);i.hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){let a=i?"show":"hide",n=this.getDatasetMeta(t),r=n.controller._resolveAnimations(void 0,a);(0,s.h)(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),r.update(n,{visible:i}),this.update(e=>e.datasetIndex===t?a:void 0))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){let e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),a.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,i,s),t[i]=s},a=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};(0,s.F)(this.options.events,t=>i(t,a))}bindResponsiveEvents(){let t;this._responsiveListeners||(this._responsiveListeners={});let e=this._responsiveListeners,i=this.platform,s=(t,s)=>{i.addEventListener(this,t,s),e[t]=s},a=(t,s)=>{e[t]&&(i.removeEventListener(this,t,s),delete e[t])},n=(t,e)=>{this.canvas&&this.resize(t,e)},r=()=>{a("attach",r),this.attached=!0,this.resize(),s("resize",n),s("detach",t)};t=()=>{this.attached=!1,a("resize",n),this._stop(),this._resize(0,0),s("attach",r)},i.isAttached(this.canvas)?r():t()}unbindEvents(){(0,s.F)(this._listeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._listeners={},(0,s.F)(this._responsiveListeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){let s,a,n;let r=i?"set":"remove";for("dataset"===e&&this.getDatasetMeta(t[0].datasetIndex).controller["_"+r+"DatasetHoverStyle"](),a=0,n=t.length;a{let i=this.getDatasetMeta(t);if(!i)throw Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}),a=!(0,s.ah)(i,e);a&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}isPluginEnabled(t){return 1===this._plugins._cache.filter(e=>e.plugin.id===t).length}_updateHoverStyles(t,e,i){let s=this.options.hover,a=(t,e)=>t.filter(t=>!e.some(e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)),n=a(e,t),r=i?t:a(t,e);n.length&&this.updateHoverStyle(n,s.mode,!1),r.length&&s.mode&&this.updateHoverStyle(r,s.mode,!0)}_eventHandler(t,e){let i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,s))return;let a=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(a||i.changed)&&this.render(),this}_handleEvent(t,e,i){var a;let{_active:n=[],options:r}=this,o=this._getActiveElements(t,n,i,e),l=(0,s.ai)(t),h=(a=this._lastEvent,i&&"mouseout"!==t.type?l?a:t:null);i&&(this._lastEvent=null,(0,s.Q)(r.onHover,[t,o,this],this),l&&(0,s.Q)(r.onClick,[t,o,this],this));let d=!(0,s.ah)(o,n);return(d||e)&&(this._active=o,this._updateHoverStyles(o,n,e)),this._lastEvent=h,d}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;let a=this.options.hover;return this.getElementsAtEventForMode(t,a.mode,a,s)}}function tH(){return(0,s.F)(tN.instances,t=>t._plugins.invalidate())}function tj(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function tW(t,e,i,a,n,r){let{x:o,y:l,startAngle:h,pixelMargin:d,innerRadius:c}=e,u=Math.max(e.outerRadius+a+i-d,0),g=c>0?c+a+i+d:0,p=0,f=n-h;if(a){let m=((c>0?c-a:0)+(u>0?u-a:0))/2;p=(f-(0!==m?f*m/(m+a):f))/2}let b=Math.max(.001,f*u-i/s.P)/u,x=(f-b)/2,_=h+x+p,v=n-x-p,{outerStart:y,outerEnd:M,innerStart:w,innerEnd:k}=function(t,e,i,a){var n;let r=(n=t.options.borderRadius,(0,s.ak)(n,["outerStart","outerEnd","innerStart","innerEnd"])),o=(i-e)/2,l=Math.min(o,a*e/2),h=t=>(0,s.S)(t,0,Math.min(o,(i-Math.min(o,t))*a/2));return{outerStart:h(r.outerStart),outerEnd:h(r.outerEnd),innerStart:(0,s.S)(r.innerStart,0,l),innerEnd:(0,s.S)(r.innerEnd,0,l)}}(e,g,u,v-_),S=u-y,P=u-M,D=_+y/S,C=v-M/P,L=g+w,E=g+k,O=_+w/L,A=v-k/E;if(t.beginPath(),r){let T=(D+C)/2;if(t.arc(o,l,u,D,T),t.arc(o,l,u,T,C),M>0){let F=tj(P,C,o,l);t.arc(F.x,F.y,M,C,v+s.H)}let z=tj(E,v,o,l);if(t.lineTo(z.x,z.y),k>0){let R=tj(E,A,o,l);t.arc(R.x,R.y,k,v+s.H,A+Math.PI)}let I=(v-k/g+(_+w/g))/2;if(t.arc(o,l,g,v-k/g,I,!0),t.arc(o,l,g,I,_+w/g,!0),w>0){let V=tj(L,O,o,l);t.arc(V.x,V.y,w,O+Math.PI,_-s.H)}let B=tj(S,_,o,l);if(t.lineTo(B.x,B.y),y>0){let N=tj(S,D,o,l);t.arc(N.x,N.y,y,_-s.H,D)}}else t.moveTo(o,l),t.lineTo(Math.cos(D)*u+o,Math.sin(D)*u+l),t.lineTo(Math.cos(C)*u+o,Math.sin(C)*u+l);t.closePath()}function t$(t,e,i=e){t.lineCap=(0,s.v)(i.borderCapStyle,e.borderCapStyle),t.setLineDash((0,s.v)(i.borderDash,e.borderDash)),t.lineDashOffset=(0,s.v)(i.borderDashOffset,e.borderDashOffset),t.lineJoin=(0,s.v)(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=(0,s.v)(i.borderWidth,e.borderWidth),t.strokeStyle=(0,s.v)(i.borderColor,e.borderColor)}function tU(t,e,i){t.lineTo(i.x,i.y)}function tY(t,e,i={}){let s=t.length,{start:a=0,end:n=s-1}=i,{start:r,end:o}=e,l=Math.max(a,r),h=Math.min(n,o);return{count:s,start:l,loop:e.loop,ilen:ho&&n>o)?s+h-l:h-l}}function tQ(t,e,i,a){let n,r,o;let{points:l,options:h}=e,{count:d,start:c,loop:u,ilen:g}=tY(l,i,a),p=h.stepped?s.ar:h.tension||"monotone"===h.cubicInterpolationMode?s.as:tU,{move:f=!0,reverse:m}=a||{};for(n=0;n<=g;++n)(r=l[(c+(m?g-n:n))%d]).skip||(f?(t.moveTo(r.x,r.y),f=!1):p(t,o,r,m,h.stepped),o=r);return u&&p(t,o,r=l[(c+(m?g:0))%d],m,h.stepped),!!u}function tX(t,e,i,s){let a,n,r,o,l,h;let d=e.points,{count:c,start:u,ilen:g}=tY(d,i,s),{move:p=!0,reverse:f}=s||{},m=0,b=0,x=t=>(u+(f?g-t:t))%c,_=()=>{o!==l&&(t.lineTo(m,l),t.lineTo(m,o),t.lineTo(m,h))};for(p&&(n=d[x(0)],t.moveTo(n.x,n.y)),a=0;a<=g;++a){if((n=d[x(a)]).skip)continue;let v=n.x,y=n.y,M=0|v;M===r?(yl&&(l=y),m=(b*m+v)/++b):(_(),t.lineTo(v,y),r=M,b=0,o=l=y),h=y}_()}function tq(t){let e=t.options,i=e.borderDash&&e.borderDash.length,s=!t._decimated&&!t._loop&&!e.tension&&"monotone"!==e.cubicInterpolationMode&&!e.stepped&&!i;return s?tX:tQ}let tG="function"==typeof Path2D;class tK extends td{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){let i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){let a=i.spanGaps?this._loop:this._fullLoop;(0,s.al)(this._points,i,t,a,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=(0,s.am)(this,this.options.segment))}first(){let t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){let t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){let i,a;let n=this.options,r=t[e],o=this.points,l=(0,s.an)(this,{property:e,start:r,end:r});if(!l.length)return;let h=[],d=n.stepped?s.ao:n.tension||"monotone"===n.cubicInterpolationMode?s.ap:s.aq;for(i=0,a=l.length;i=s.T||(0,s.p)(n,o,l),f=(0,s.aj)(r,h+u,d+u);return p&&f}getCenterPoint(t){let{x:e,y:i,startAngle:s,endAngle:a,innerRadius:n,outerRadius:r}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius","circumference"],t),{offset:o,spacing:l}=this.options,h=(s+a)/2,d=(n+r+l+o)/2;return{x:e+Math.cos(h)*d,y:i+Math.sin(h)*d}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){let{options:e,circumference:i}=this,a=(e.offset||0)/4,n=(e.spacing||0)/2,r=e.circular;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>s.T?Math.floor(i/s.T):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();let o=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(o)*a,Math.sin(o)*a);let l=1-Math.sin(Math.min(s.P,i||0)),h=a*l;t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,function(t,e,i,a,n){let{fullCircles:r,startAngle:o,circumference:l}=e,h=e.endAngle;if(r){tW(t,e,i,a,h,n);for(let d=0;dn?(d=n/h,t.arc(r,o,h,i+d,a-d,!0)):t.arc(r,o,n,i+s.H,a-s.H),t.closePath(),t.clip()}(t,e,g),r||(tW(t,e,i,a,g,n),t.stroke())}(t,this,h,n,r),t.restore()}},LineElement:tK,PointElement:class extends td{static id="point";static defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,e,i){let s=this.options,{x:a,y:n}=this.getProps(["x","y"],i);return Math.pow(t-a,2)+Math.pow(e-n,2)t.replace("rgb(","rgba(").replace(")",", 0.5)"));function t7(t){return t6[t%t6.length]}function t8(t){return t4[t%t4.length]}function t9(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}function et(t){if(t._decimated){let e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{value:e})}}function ee(t){t.data.datasets.forEach(t=>{et(t)})}function ei(t,e,i,a){if(a)return;let n=e[t],r=i[t];return"angle"===t&&(n=(0,s.ay)(n),r=(0,s.ay)(r)),{property:t,start:n,end:r}}function es(t,e,i){for(;e>t;e--){let s=i[e];if(!isNaN(s.x)&&!isNaN(s.y))break}return e}function ea(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function en(t,e){let i=[],a=!1;return(0,s.b)(t)?(a=!0,i=t):i=function(t,e){let{x:i=null,y:s=null}=t||{},a=e.points,n=[];return e.segments.forEach(({start:t,end:e})=>{e=es(t,e,a);let r=a[t],o=a[e];null!==s?(n.push({x:r.x,y:s}),n.push({x:o.x,y:s})):null!==i&&(n.push({x:i,y:r.y}),n.push({x:i,y:o.y}))}),n}(t,e),i.length?new tK({points:i,options:{tension:0},_loop:a,_fullLoop:a}):null}function er(t){return t&&!1!==t.fill}class eo{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){let{x:a,y:n,radius:r}=this;return e=e||{start:0,end:s.T},t.arc(a,n,r,e.end,e.start,!0),!i.bounds}interpolate(t){let{x:e,y:i,radius:s}=this,a=t.angle;return{x:e+Math.cos(a)*s,y:i+Math.sin(a)*s,angle:a}}}function el(t,e,i){let a=function(t){let{chart:e,fill:i,line:a}=t;if((0,s.g)(i))return function(t,e){let i=t.getDatasetMeta(e),s=i&&t.isDatasetVisible(e);return s?i.dataset:null}(e,i);if("stack"===i)return function(t){let{scale:e,index:i,line:a}=t,n=[],r=a.segments,o=a.points,l=function(t,e){let i=[],s=t.getMatchingVisibleMetas("line");for(let a=0;a{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=t.pointStyleWidth||Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}},eg=(t,e)=>null!==t&&null!==e&&t.datasetIndex===e.datasetIndex&&t.index===e.index;class ep extends td{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){let t=this.options.labels||{},e=(0,s.Q)(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter(e=>t.filter(e,this.chart.data))),t.sort&&(e=e.sort((e,i)=>t.sort(e,i,this.chart.data))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){let t,e;let{options:i,ctx:a}=this;if(!i.display){this.width=this.height=0;return}let n=i.labels,r=(0,s.a0)(n.font),o=r.size,l=this._computeTitleHeight(),{boxWidth:h,itemHeight:d}=eu(n,o);a.font=r.string,this.isHorizontal()?(t=this.maxWidth,e=this._fitRows(l,o,h,d)+10):(e=this.maxHeight,t=this._fitCols(l,r,h,d)+10),this.width=Math.min(t,i.maxWidth||this.maxWidth),this.height=Math.min(e,i.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){let{ctx:a,maxWidth:n,options:{labels:{padding:r}}}=this,o=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+r,d=t;a.textAlign="left",a.textBaseline="middle";let c=-1,u=-h;return this.legendItems.forEach((t,g)=>{let p=i+e/2+a.measureText(t.text).width;(0===g||l[l.length-1]+p+2*r>n)&&(d+=h,l[l.length-(g>0?0:1)]=0,u+=h,c++),o[g]={left:0,top:u,row:c,width:p,height:s},l[l.length-1]+=p+r}),d}_fitCols(t,e,i,s){let{ctx:a,maxHeight:n,options:{labels:{padding:r}}}=this,o=this.legendHitBoxes=[],l=this.columnSizes=[],h=n-t,d=r,c=0,u=0,g=0,p=0;return this.legendItems.forEach((t,n)=>{let{itemWidth:f,itemHeight:m}=function(t,e,i,s,a){var n;let r,o;let l=((r=s.text)&&"string"!=typeof r&&(r=r.reduce((t,e)=>t.length>e.length?t:e)),t+e.size/2+i.measureText(r).width),h=(n=e.lineHeight,o=a,"string"!=typeof s.text&&(o=ef(s,n)),o);return{itemWidth:l,itemHeight:h}}(i,e,a,t,s);n>0&&u+m+2*r>h&&(d+=c+r,l.push({width:c,height:u}),g+=c+r,p++,c=u=0),o[n]={left:g,top:u,col:p,width:f,height:m},c=Math.max(c,f),u+=m+r}),d+=c,l.push({width:c,height:u}),d}adjustHitBoxes(){if(!this.options.display)return;let t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:a},rtl:n}}=this,r=(0,s.az)(n,this.left,this.width);if(this.isHorizontal()){let o=0,l=(0,s.a2)(i,this.left+a,this.right-this.lineWidths[o]);for(let h of e)o!==h.row&&(o=h.row,l=(0,s.a2)(i,this.left+a,this.right-this.lineWidths[o])),h.top+=this.top+t+a,h.left=r.leftForLtr(r.x(l),h.width),l+=h.width+a}else{let d=0,c=(0,s.a2)(i,this.top+t+a,this.bottom-this.columnSizes[d].height);for(let u of e)u.col!==d&&(d=u.col,c=(0,s.a2)(i,this.top+t+a,this.bottom-this.columnSizes[d].height)),u.top=c,u.left+=this.left+a,u.left=r.leftForLtr(r.x(u.left),u.width),c+=u.height+a}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){let t=this.ctx;(0,s.Y)(t,this),this._draw(),(0,s.$)(t)}}_draw(){let t;let{options:e,columnSizes:i,lineWidths:a,ctx:n}=this,{align:r,labels:o}=e,l=s.d.color,h=(0,s.az)(e.rtl,this.left,this.width),d=(0,s.a0)(o.font),{padding:c}=o,u=d.size,g=u/2;this.drawTitle(),n.textAlign=h.textAlign("left"),n.textBaseline="middle",n.lineWidth=.5,n.font=d.string;let{boxWidth:p,boxHeight:f,itemHeight:m}=eu(o,u),b=function(t,e,i){if(isNaN(p)||p<=0||isNaN(f)||f<0)return;n.save();let a=(0,s.v)(i.lineWidth,1);if(n.fillStyle=(0,s.v)(i.fillStyle,l),n.lineCap=(0,s.v)(i.lineCap,"butt"),n.lineDashOffset=(0,s.v)(i.lineDashOffset,0),n.lineJoin=(0,s.v)(i.lineJoin,"miter"),n.lineWidth=a,n.strokeStyle=(0,s.v)(i.strokeStyle,l),n.setLineDash((0,s.v)(i.lineDash,[])),o.usePointStyle){let r={radius:f*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:a},d=h.xPlus(t,p/2);(0,s.aD)(n,r,d,e+g,o.pointStyleWidth&&p)}else{let c=e+Math.max((u-f)/2,0),m=h.leftForLtr(t,p),b=(0,s.aw)(i.borderRadius);n.beginPath(),Object.values(b).some(t=>0!==t)?(0,s.au)(n,{x:m,y:c,w:p,h:f,radius:b}):n.rect(m,c,p,f),n.fill(),0!==a&&n.stroke()}n.restore()},x=function(t,e,i){(0,s.Z)(n,i.text,t,e+m/2,d,{strikethrough:i.hidden,textAlign:h.textAlign(i.textAlign)})},_=this.isHorizontal(),v=this._computeTitleHeight();t=_?{x:(0,s.a2)(r,this.left+c,this.right-a[0]),y:this.top+c+v,line:0}:{x:this.left+c,y:(0,s.a2)(r,this.top+v+c,this.bottom-i[0].height),line:0},(0,s.aA)(this.ctx,e.textDirection);let y=m+c;this.legendItems.forEach((l,u)=>{n.strokeStyle=l.fontColor,n.fillStyle=l.fontColor;let f=n.measureText(l.text).width,m=h.textAlign(l.textAlign||(l.textAlign=o.textAlign)),M=p+g+f,w=t.x,k=t.y;h.setWidth(this.width),_?u>0&&w+M+c>this.right&&(k=t.y+=y,t.line++,w=t.x=(0,s.a2)(r,this.left+c,this.right-a[t.line])):u>0&&k+y>this.bottom&&(w=t.x=w+i[t.line].width+c,t.line++,k=t.y=(0,s.a2)(r,this.top+v+c,this.bottom-i[t.line].height));let S=h.x(w);if(b(S,k,l),w=(0,s.aB)(m,w+p+g,_?w+M:this.right,e.rtl),x(h.x(w),k,l),_)t.x+=M+c;else if("string"!=typeof l.text){let P=d.lineHeight;t.y+=ef(l,P)}else t.y+=y}),(0,s.aC)(this.ctx,e.textDirection)}drawTitle(){let t;let e=this.options,i=e.title,a=(0,s.a0)(i.font),n=(0,s.E)(i.padding);if(!i.display)return;let r=(0,s.az)(e.rtl,this.left,this.width),o=this.ctx,l=i.position,h=a.size/2,d=n.top+h,c=this.left,u=this.width;if(this.isHorizontal())u=Math.max(...this.lineWidths),t=this.top+d,c=(0,s.a2)(e.align,c,this.right-u);else{let g=this.columnSizes.reduce((t,e)=>Math.max(t,e.height),0);t=d+(0,s.a2)(e.align,this.top,this.bottom-g-e.labels.padding-this._computeTitleHeight())}let p=(0,s.a2)(l,c,c+u);o.textAlign=r.textAlign((0,s.a1)(l)),o.textBaseline="middle",o.strokeStyle=i.color,o.fillStyle=i.color,o.font=a.string,(0,s.Z)(o,i.text,p,t,a)}_computeTitleHeight(){let t=this.options.title,e=(0,s.a0)(t.font),i=(0,s.E)(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,a,n;if((0,s.aj)(t,this.left,this.right)&&(0,s.aj)(e,this.top,this.bottom)){for(i=0,n=this.legendHitBoxes;i-1?t.split("\n"):t}function ey(t,e){let i=t.chart.ctx,{body:a,footer:n,title:r}=t,{boxWidth:o,boxHeight:l}=e,h=(0,s.a0)(e.bodyFont),d=(0,s.a0)(e.titleFont),c=(0,s.a0)(e.footerFont),u=r.length,g=n.length,p=a.length,f=(0,s.E)(e.padding),m=f.height,b=0,x=a.reduce((t,e)=>t+e.before.length+e.lines.length+e.after.length,0);if(x+=t.beforeBody.length+t.afterBody.length,u&&(m+=u*d.lineHeight+(u-1)*e.titleSpacing+e.titleMarginBottom),x){let _=e.displayColors?Math.max(l,h.lineHeight):h.lineHeight;m+=p*_+(x-p)*h.lineHeight+(x-1)*e.bodySpacing}g&&(m+=e.footerMarginTop+g*c.lineHeight+(g-1)*e.footerSpacing);let v=0,y=function(t){b=Math.max(b,i.measureText(t).width+v)};return i.save(),i.font=d.string,(0,s.F)(t.title,y),i.font=h.string,(0,s.F)(t.beforeBody.concat(t.afterBody),y),v=e.displayColors?o+2+e.boxPadding:0,(0,s.F)(a,t=>{(0,s.F)(t.before,y),(0,s.F)(t.lines,y),(0,s.F)(t.after,y)}),v=0,i.font=c.string,(0,s.F)(t.footer,y),i.restore(),b+=f.width,{width:b,height:m}}function eM(t,e,i){let s=i.yAlign||e.yAlign||function(t,e){let{y:i,height:s}=e;return it.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||function(t,e,i,s){let{x:a,width:n}=i,{width:r,chartArea:{left:o,right:l}}=t,h="center";return"center"===s?h=a<=(o+l)/2?"left":"right":a<=n/2?h="left":a>=r-n/2&&(h="right"),function(t,e,i,s){let{x:a,width:n}=s,r=i.caretSize+i.caretPadding;if("left"===t&&a+n+r>e.width||"right"===t&&a-n-r<0)return!0}(h,t,e,i)&&(h="center"),h}(t,e,i,s),yAlign:s}}function ew(t,e,i,a){let{caretSize:n,caretPadding:r,cornerRadius:o}=t,{xAlign:l,yAlign:h}=i,d=n+r,{topLeft:c,topRight:u,bottomLeft:g,bottomRight:p}=(0,s.aw)(o),f=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,l),m=function(t,e,i){let{y:s,height:a}=t;return"top"===e?s+=i:"bottom"===e?s-=a+i:s-=a/2,s}(e,h,d);return"center"===h?"left"===l?f+=d:"right"===l&&(f-=d):"left"===l?f-=Math.max(c,g)+n:"right"===l&&(f+=Math.max(u,p)+n),{x:(0,s.S)(f,0,a.width-e.width),y:(0,s.S)(m,0,a.height-e.height)}}function ek(t,e,i){let a=(0,s.E)(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-a.right:t.x+a.left}function eS(t,e){let i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}let eP={beforeTitle:s.aF,title(t){if(t.length>0){let e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(s>0&&e.dataIndex{let e={before:[],lines:[],after:[]},s=eS(i,t);e_(e.before,ev(eD(s,"beforeLabel",this,t))),e_(e.lines,eD(s,"label",this,t)),e_(e.after,ev(eD(s,"afterLabel",this,t))),a.push(e)}),a}getAfterBody(t,e){return e_([],ev(eD(e.callbacks,"afterBody",this,t)))}getFooter(t,e){let{callbacks:i}=e,s=eD(i,"beforeFooter",this,t),a=eD(i,"footer",this,t),n=eD(i,"afterFooter",this,t),r=[];return r=e_(r,ev(s)),r=e_(r,ev(a)),r=e_(r,ev(n))}_createItems(t){let e,i;let a=this._active,n=this.chart.data,r=[],o=[],l=[],h=[];for(e=0,i=a.length;et.filter(e,i,s,n))),t.itemSort&&(h=h.sort((e,i)=>t.itemSort(e,i,n))),(0,s.F)(h,e=>{let i=eS(t.callbacks,e);r.push(eD(i,"labelColor",this,e)),o.push(eD(i,"labelPointStyle",this,e)),l.push(eD(i,"labelTextColor",this,e))}),this.labelColors=r,this.labelPointStyles=o,this.labelTextColors=l,this.dataPoints=h,h}update(t,e){let i;let s=this.options.setContext(this.getContext()),a=this._active,n=[];if(a.length){let r=ex[s.position].call(this,a,this._eventPosition);n=this._createItems(s),this.title=this.getTitle(n,s),this.beforeBody=this.getBeforeBody(n,s),this.body=this.getBody(n,s),this.afterBody=this.getAfterBody(n,s),this.footer=this.getFooter(n,s);let o=this._size=ey(this,s),l=Object.assign({},r,o),h=eM(this.chart,s,l),d=ew(s,l,h,this.chart);this.xAlign=h.xAlign,this.yAlign=h.yAlign,i={opacity:1,x:d.x,y:d.y,width:o.width,height:o.height,caretX:r.x,caretY:r.y}}else 0!==this.opacity&&(i={opacity:0});this._tooltipItems=n,this.$context=void 0,i&&this._resolveAnimations().update(this,i),t&&s.external&&s.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){let a=this.getCaretPosition(t,i,s);e.lineTo(a.x1,a.y1),e.lineTo(a.x2,a.y2),e.lineTo(a.x3,a.y3)}getCaretPosition(t,e,i){let a,n,r,o,l,h;let{xAlign:d,yAlign:c}=this,{caretSize:u,cornerRadius:g}=i,{topLeft:p,topRight:f,bottomLeft:m,bottomRight:b}=(0,s.aw)(g),{x:x,y:_}=t,{width:v,height:y}=e;return"center"===c?(l=_+y/2,"left"===d?(n=(a=x)-u,o=l+u,h=l-u):(n=(a=x+v)+u,o=l-u,h=l+u),r=a):(n="left"===d?x+Math.max(p,m)+u:"right"===d?x+v-Math.max(f,b)-u:this.caretX,"top"===c?(l=(o=_)-u,a=n-u,r=n+u):(l=(o=_+y)+u,a=n+u,r=n-u),h=o),{x1:a,x2:n,x3:r,y1:o,y2:l,y3:h}}drawTitle(t,e,i){let a,n,r;let o=this.title,l=o.length;if(l){let h=(0,s.az)(i.rtl,this.x,this.width);for(r=0,t.x=ek(this,i.titleAlign,i),e.textAlign=h.textAlign(i.titleAlign),e.textBaseline="middle",a=(0,s.a0)(i.titleFont),n=i.titleSpacing,e.fillStyle=i.titleColor,e.font=a.string;r0!==t)?(t.beginPath(),t.fillStyle=n.multiKeyBackground,(0,s.au)(t,{x:_,y:f,w:h,h:l,radius:y}),t.fill(),t.stroke(),t.fillStyle=r.backgroundColor,t.beginPath(),(0,s.au)(t,{x:v,y:f+1,w:h-2,h:l-2,radius:y}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(_,f,h,l),t.strokeRect(_,f,h,l),t.fillStyle=r.backgroundColor,t.fillRect(v,f+1,h-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){let a,n,r,o,l,h,d;let{body:c}=this,{bodySpacing:u,bodyAlign:g,displayColors:p,boxHeight:f,boxWidth:m,boxPadding:b}=i,x=(0,s.a0)(i.bodyFont),_=x.lineHeight,v=0,y=(0,s.az)(i.rtl,this.x,this.width),M=function(i){e.fillText(i,y.x(t.x+v),t.y+_/2),t.y+=_+u},w=y.textAlign(g);for(e.textAlign=g,e.textBaseline="middle",e.font=x.string,t.x=ek(this,w,i),e.fillStyle=i.bodyColor,(0,s.F)(this.beforeBody,M),v=p&&"right"!==w?"center"===g?m/2+b:m+2+b:0,o=0,h=c.length;o0&&e.stroke()}_updateAnimationTarget(t){let e=this.chart,i=this.$animations,s=i&&i.x,a=i&&i.y;if(s||a){let n=ex[t.position].call(this,this._active,this._eventPosition);if(!n)return;let r=this._size=ey(this,t),o=Object.assign({},n,this._size),l=eM(e,t,o),h=ew(t,o,l,e);(s._to!==h.x||a._to!==h.y)&&(this.xAlign=l.xAlign,this.yAlign=l.yAlign,this.width=r.width,this.height=r.height,this.caretX=n.x,this.caretY=n.y,this._resolveAnimations().update(this,h))}}_willRender(){return!!this.opacity}draw(t){let e=this.options.setContext(this.getContext()),i=this.opacity;if(!i)return;this._updateAnimationTarget(e);let a={width:this.width,height:this.height},n={x:this.x,y:this.y};i=.001>Math.abs(i)?0:i;let r=(0,s.E)(e.padding),o=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&o&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,a,e),(0,s.aA)(t,e.textDirection),n.y+=r.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),(0,s.aC)(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){let i=this._active,a=t.map(({datasetIndex:t,index:e})=>{let i=this.chart.getDatasetMeta(t);if(!i)throw Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}),n=!(0,s.ah)(i,a),r=this._positionChanged(a,e);(n||r)&&(this._active=a,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;let a=this.options,n=this._active||[],r=this._getActiveElements(t,n,e,i),o=this._positionChanged(r,t),l=e||!(0,s.ah)(r,n)||o;return l&&(this._active=r,(a.enabled||a.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),l}_getActiveElements(t,e,i,s){let a=this.options;if("mouseout"===t.type)return[];if(!s)return e;let n=this.chart.getElementsAtEventForMode(t,a.mode,a,i);return a.reverse&&n.reverse(),n}_positionChanged(t,e){let{caretX:i,caretY:s,options:a}=this,n=ex[a.position].call(this,t,e);return!1!==n&&(i!==n.x||s!==n.y)}}var eL=Object.freeze({__proto__:null,Colors:{id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){let s;if(!i.enabled)return;let{options:{elements:a},data:{datasets:n}}=t.config;if(!i.forceOverride&&(t9(n)||a&&t9(a)))return;let r=(s=0,(e,i)=>{var a,n,r,o,l,h;let d=t.getDatasetMeta(i).controller;d instanceof P?(a=e,n=s,a.backgroundColor=a.data.map(()=>t7(n++)),s=n):d instanceof D?(r=e,o=s,r.backgroundColor=r.data.map(()=>t8(o++)),s=o):d&&(l=e,h=s,l.borderColor=t7(h),l.backgroundColor=t8(h),s=++h)});n.forEach(r)}},Decimation:{id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled){ee(t);return}let a=t.width;t.data.datasets.forEach((e,n)=>{let r;let{_data:o,indexAxis:l}=e,h=t.getDatasetMeta(n),d=o||e.data;if("y"===(0,s.a)([l,t.options.indexAxis])||!h.controller.supportsDecimation)return;let c=t.scales[h.xAxisID];if("linear"!==c.type&&"time"!==c.type||t.options.parsing)return;let{start:u,count:g}=function(t,e){let i;let a=e.length,n=0,{iScale:r}=t,{min:o,max:l,minDefined:h,maxDefined:d}=r.getUserBounds();return h&&(n=(0,s.S)((0,s.B)(e,r.axis,o).lo,0,a-1)),i=d?(0,s.S)((0,s.B)(e,r.axis,l).hi+1,n,a)-n:a-n,{start:n,count:i}}(h,d),p=i.threshold||4*a;if(g<=p){et(e);return}switch((0,s.k)(o)&&(e._data=d,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":r=function(t,e,i,s,a){let n,r,o,l,h;let d=a.samples||s;if(d>=i)return t.slice(e,e+i);let c=[],u=(i-2)/(d-2),g=0,p=e;for(n=0,c[g++]=t[p];no&&(o=l,r=t[f],h=f);c[g++]=r,p=h}return c[g++]=t[e+i-1],c}(d,u,g,a,i);break;case"min-max":r=function(t,e,i,a){let n,r,o,l,h,d,c,u,g,p,f=0,m=0,b=[],x=t[e].x,_=t[e+i-1].x,v=_-x;for(n=e;np&&(p=l,c=n),f=(m*f+r.x)/++m;else{let M=n-1;if(!(0,s.k)(d)&&!(0,s.k)(c)){let w=Math.min(d,c),k=Math.max(d,c);w!==u&&w!==M&&b.push({...t[w],x:f}),k!==u&&k!==M&&b.push({...t[k],x:f})}n>0&&M!==u&&b.push(t[M]),b.push(r),h=y,m=0,g=p=l,d=c=u=n}}return b}(d,u,g,a);break;default:throw Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=r})},destroy(t){ee(t)}},Filler:{id:"filler",afterDatasetsUpdate(t,e,i){let a,n,r,o;let l=(t.data.datasets||[]).length,h=[];for(n=0;n=i)&&n):["origin","start","end","stack","shape"].indexOf(r)>=0&&r}(r,n,l),chart:t,axis:a.controller.options.indexAxis,scale:a.vScale,line:r}),a.$filler=o,h.push(o);for(n=0;n=0;--r){let o=a[r].$filler;o&&(o.line.updateControlPoints(n,o.axis),s&&o.fill&&el(t.ctx,o,n))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;let s=t.getSortedVisibleDatasetMetas();for(let a=s.length-1;a>=0;--a){let n=s[a].$filler;er(n)&&el(t.ctx,n,t.chartArea)}},beforeDatasetDraw(t,e,i){let s=e.meta.$filler;er(s)&&"beforeDatasetDraw"===i.drawTime&&el(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}},Legend:{id:"legend",_element:ep,start(t,e,i){let s=t.legend=new ep({ctx:t.ctx,options:i,chart:t});Y.configure(t,s,i),Y.addBox(t,s)},stop(t){Y.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,i){let s=t.legend;Y.configure(t,s,i),s.options=i},afterUpdate(t){let e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,i){let s=e.datasetIndex,a=i.chart;a.isDatasetVisible(s)?(a.hide(s),e.hidden=!0):(a.show(s),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){let e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:a,textAlign:n,color:r,useBorderRadius:o,borderRadius:l}}=t.legend.options;return t._getSortedDatasetMetas().map(t=>{let h=t.controller.getStyle(i?0:void 0),d=(0,s.E)(h.borderWidth);return{text:e[t.index].label,fillStyle:h.backgroundColor,fontColor:r,hidden:!t.visible,lineCap:h.borderCapStyle,lineDash:h.borderDash,lineDashOffset:h.borderDashOffset,lineJoin:h.borderJoinStyle,lineWidth:(d.width+d.height)/4,strokeStyle:h.borderColor,pointStyle:a||h.pointStyle,rotation:h.rotation,textAlign:n||h.textAlign,borderRadius:o&&(l||h.borderRadius),datasetIndex:t.index}},this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}},SubTitle:{id:"subtitle",start(t,e,i){let s=new em({ctx:t.ctx,options:i,chart:t});Y.configure(t,s,i),Y.addBox(t,s),eb.set(t,s)},stop(t){Y.removeBox(t,eb.get(t)),eb.delete(t)},beforeUpdate(t,e,i){let s=eb.get(t);Y.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}},Title:{id:"title",_element:em,start(t,e,i){!function(t,e){let i=new em({ctx:t.ctx,options:e,chart:t});Y.configure(t,i,e),Y.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){let e=t.titleBlock;Y.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){let s=t.titleBlock;Y.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}},Tooltip:{id:"tooltip",_element:eC,positioners:ex,afterInit(t,e,i){i&&(t.tooltip=new eC({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){let e=t.tooltip;if(e&&e._willRender()){let i={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i)}},afterEvent(t,e){if(t.tooltip){let i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:eP},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]}});let eE=(t,e,i,s)=>("string"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i),eO=(t,e)=>null===t?null:(0,s.S)(Math.round(t),0,e);function eA(t){let e=this.getLabels();return t>=0&&ta=e?a:t,o=t=>n=i?n:t;if(t){let l=(0,s.s)(a),h=(0,s.s)(n);l<0&&h<0?o(0):l>0&&h>0&&r(0)}if(a===n){let d=0===n?1:Math.abs(.05*n);o(n+d),t||r(a-d)}this.min=a,this.max=n}getTickLimit(){let t;let e=this.options.ticks,{maxTicksLimit:i,stepSize:s}=e;return s?(t=Math.ceil(this.max/s)-Math.floor(this.min/s)+1)>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${t} ticks. Limiting to 1000.`),t=1e3):(t=this.computeTickLimit(),i=i||11),i&&(t=Math.min(i,t)),t}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){let t=this.options,e=t.ticks,i=this.getTickLimit();i=Math.max(2,i);let a={maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},n=this._range||this,r=function(t,e){let i,a,n,r;let o=[],{bounds:l,step:h,min:d,max:c,precision:u,count:g,maxTicks:p,maxDigits:f,includeBounds:m}=t,b=h||1,x=p-1,{min:_,max:v}=e,y=!(0,s.k)(d),M=!(0,s.k)(c),w=!(0,s.k)(g),k=(v-_)/(f+1),S=(0,s.aH)((v-_)/x/b)*b;if(S<1e-14&&!y&&!M)return[{value:_},{value:v}];(r=Math.ceil(v/S)-Math.floor(_/S))>x&&(S=(0,s.aH)(r*S/x/b)*b),(0,s.k)(u)||(S=Math.ceil(S*(i=Math.pow(10,u)))/i),"ticks"===l?(a=Math.floor(_/S)*S,n=Math.ceil(v/S)*S):(a=_,n=v),y&&M&&h&&(0,s.aI)((c-d)/h,S/1e3)?(r=Math.round(Math.min((c-d)/S,p)),S=(c-d)/r,a=d,n=c):w?(a=y?d:a,S=((n=M?c:n)-a)/(r=g-1)):(r=(n-a)/S,r=(0,s.aJ)(r,Math.round(r),S/1e3)?Math.round(r):Math.ceil(r));let P=Math.max((0,s.aK)(S),(0,s.aK)(a));i=Math.pow(10,(0,s.k)(u)?P:u),a=Math.round(a*i)/i,n=Math.round(n*i)/i;let D=0;for(y&&(m&&a!==d?(o.push({value:d}),aMath.floor((0,s.aM)(t)),eI=(t,e)=>Math.pow(10,eR(t)+e);function eV(t){let e=t/Math.pow(10,eR(t));return 1===e}function eB(t,e,i){let s=Math.pow(10,i);return Math.ceil(e/s)-Math.floor(t/s)}class eN extends tb{static id="logarithmic";static defaults={ticks:{callback:s.aL.formatters.logarithmic,major:{enabled:!0}}};constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){let i=eF.prototype.parse.apply(this,[t,e]);if(0===i){this._zero=!0;return}return(0,s.g)(i)&&i>0?i:null}determineDataLimits(){let{min:t,max:e}=this.getMinMax(!0);this.min=(0,s.g)(t)?Math.max(0,t):null,this.max=(0,s.g)(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!(0,s.g)(this._userMin)&&(this.min=t===eI(this.min,0)?eI(this.min,-1):eI(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){let{minDefined:t,maxDefined:e}=this.getUserBounds(),i=this.min,s=this.max,a=e=>i=t?i:e,n=t=>s=e?s:t;i===s&&(i<=0?(a(1),n(10)):(a(eI(i,-1)),n(eI(s,1)))),i<=0&&a(eI(s,-1)),s<=0&&n(eI(i,1)),this.min=i,this.max=s}buildTicks(){let t=this.options,e={min:this._userMin,max:this._userMax},i=function(t,{min:e,max:i}){e=(0,s.O)(t.min,e);let a=[],n=eR(e),r=function(t,e){let i=eR(e-t);for(;eB(t,e,i)>10;)i++;for(;10>eB(t,e,i);)i--;return Math.min(i,eR(t))}(e,i),o=r<0?Math.pow(10,Math.abs(r)):1,l=Math.pow(10,r),h=n>r?Math.pow(10,n):0,d=Math.round((e-h)*o)/o,c=Math.floor((e-h)/l/10)*l*10,u=Math.floor((d-c)/Math.pow(10,r)),g=(0,s.O)(t.min,Math.round((h+c+u*Math.pow(10,r))*o)/o);for(;g=10?u=u<15?15:20:u++,u>=20&&(u=2,o=++r>=0?1:o),g=Math.round((h+c+u*Math.pow(10,r))*o)/o;let p=(0,s.O)(t.max,g);return a.push({value:p,major:eV(p),significand:u}),a}(e,this);return"ticks"===t.bounds&&(0,s.aG)(i,this,"value"),t.reverse?(i.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),i}getLabelForValue(t){return void 0===t?"0":(0,s.o)(t,this.chart.options.locale,this.options.ticks.format)}configure(){let t=this.min;super.configure(),this._startValue=(0,s.aM)(t),this._valueRange=(0,s.aM)(this.max)-(0,s.aM)(t)}getPixelForValue(t){return((void 0===t||0===t)&&(t=this.min),null===t||isNaN(t))?NaN:this.getPixelForDecimal(t===this.min?0:((0,s.aM)(t)-this._startValue)/this._valueRange)}getValueForPixel(t){let e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function eH(t){let e=t.ticks;if(e.display&&t.display){let i=(0,s.E)(e.backdropPadding);return(0,s.v)(e.font&&e.font.size,s.d.font.size)+i.height}return 0}function ej(t,e,i,s,a){return t===s||t===a?{start:e-i/2,end:e+i/2}:ta?{start:e-i,end:e}:{start:e,end:e+i}}function eW(t,e,i,a){let{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,s.T);else{let r=t.getPointPosition(0,e);n.moveTo(r.x,r.y);for(let o=1;ot,padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){let t=this._padding=(0,s.E)(eH(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){let{min:t,max:e}=this.getMinMax(!1);this.min=(0,s.g)(t)&&!isNaN(t)?t:0,this.max=(0,s.g)(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/eH(this.options))}generateTickLabels(t){eF.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map((t,e)=>{let i=(0,s.Q)(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""}).filter((t,e)=>this.chart.getDataVisibility(e))}fit(){let t=this.options;t.display&&t.pointLabels.display?function(t){let e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),a=[],n=[],r=t._pointLabels.length,o=t.options.pointLabels,l=o.centerPointLabels?s.P/r:0;for(let h=0;he.r&&(o=(s.end-e.r)/n,t.r=Math.max(t.r,e.r+o)),a.starte.b&&(l=(a.end-e.b)/r,t.b=Math.max(t.b,e.b+l))}(i,e,m,x,_)}t.setCenterPoint(e.l-i.l,i.r-e.r,e.t-i.t,i.b-e.b),t._pointLabelItems=function(t,e,i){let a=[],n=t._pointLabels.length,r=t.options,o=eH(r)/2,l=t.drawingArea,h=r.pointLabels.centerPointLabels?s.P/n:0;for(let d=0;d270||m<90)&&(c-=u),c),_=0===m||180===m?"center":m<180?"left":"right",v=(g=f.x,p=b.w,"right"===_?g-=p:"center"===_&&(g-=p/2),g);a.push({x:f.x,y:x,textAlign:_,left:v,top:x,right:v+b.w,bottom:x+b.h})}return a}(t,a,n)}(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){let e=s.T/(this._pointLabels.length||1),i=this.options.startAngle||0;return(0,s.ay)(t*e+(0,s.t)(i))}getDistanceFromCenterForValue(t){if((0,s.k)(t))return NaN;let e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if((0,s.k)(t))return NaN;let e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){let e=this._pointLabels||[];if(t>=0&&t=0;n--){let r=a.setContext(t.getPointLabelContext(n)),o=(0,s.a0)(r.font),{x:l,y:h,textAlign:d,left:c,top:u,right:g,bottom:p}=t._pointLabelItems[n],{backdropColor:f}=r;if(!(0,s.k)(f)){let m=(0,s.aw)(r.borderRadius),b=(0,s.E)(r.backdropPadding);i.fillStyle=f;let x=c-b.left,_=u-b.top,v=g-c+b.width,y=p-u+b.height;Object.values(m).some(t=>0!==t)?(i.beginPath(),(0,s.au)(i,{x:x,y:_,w:v,h:y,radius:m}),i.fill()):i.fillRect(x,_,v,y)}(0,s.Z)(i,t._pointLabels[n],l,h+o.lineHeight/2,o,{color:r.color,textAlign:d,textBaseline:"middle"})}}(this,h),o.display&&this.ticks.forEach((t,i)=>{if(0!==i){e=this.getDistanceFromCenterForValue(t.value);let s=this.getContext(i),a=o.setContext(s),n=l.setContext(s);!function(t,e,i,s,a){let n=t.ctx,r=e.circular,{color:o,lineWidth:l}=e;(r||s)&&o&&l&&!(i<0)&&(n.save(),n.strokeStyle=o,n.lineWidth=l,n.setLineDash(a.dash),n.lineDashOffset=a.dashOffset,n.beginPath(),eW(t,i,r,s),n.closePath(),n.stroke(),n.restore())}(this,a,e,h,n)}}),r.display){for(a.save(),t=h-1;t>=0;t--){let d=r.setContext(this.getPointLabelContext(t)),{color:c,lineWidth:u}=d;u&&c&&(a.lineWidth=u,a.strokeStyle=c,a.setLineDash(d.borderDash),a.lineDashOffset=d.borderDashOffset,e=this.getDistanceFromCenterForValue(n.ticks.reverse?this.min:this.max),i=this.getPointPosition(t,e),a.beginPath(),a.moveTo(this.xCenter,this.yCenter),a.lineTo(i.x,i.y),a.stroke())}a.restore()}}drawBorder(){}drawLabels(){let t,e;let i=this.ctx,a=this.options,n=a.ticks;if(!n.display)return;let r=this.getIndexAngle(0);i.save(),i.translate(this.xCenter,this.yCenter),i.rotate(r),i.textAlign="center",i.textBaseline="middle",this.ticks.forEach((r,o)=>{if(0===o&&!a.reverse)return;let l=n.setContext(this.getContext(o)),h=(0,s.a0)(l.font);if(t=this.getDistanceFromCenterForValue(this.ticks[o].value),l.showLabelBackdrop){i.font=h.string,e=i.measureText(r.label).width,i.fillStyle=l.backdropColor;let d=(0,s.E)(l.backdropPadding);i.fillRect(-e/2-d.left,-t-h.size/2-d.top,e+d.width,h.size+d.height)}(0,s.Z)(i,r.label,0,-t,h,{color:l.color})}),i.restore()}drawTitle(){}}let eU={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}},eY=Object.keys(eU);function eQ(t,e){return t-e}function eX(t,e){if((0,s.k)(e))return null;let i=t._adapter,{parser:a,round:n,isoWeekday:r}=t._parseOpts,o=e;return("function"==typeof a&&(o=a(o)),(0,s.g)(o)||(o="string"==typeof a?i.parse(o,a):i.parse(o)),null===o)?null:(n&&(o="week"===n&&((0,s.x)(r)||!0===r)?i.startOf(o,"isoWeek",r):i.startOf(o,n)),+o)}function eq(t,e,i,s){let a=eY.length;for(let n=eY.indexOf(t);n=e?i[a]:i[n];t[r]=!0}}else t[e]=!0}function eK(t,e,i){let s,a;let n=[],r={},o=e.length;for(s=0;s=0&&(e[n].major=!0);return e}(t,n,r,i):n}class eJ extends tb{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){let i=t.time||(t.time={}),a=this._adapter=new O._date(t.adapters.date);a.init(e),(0,s.ab)(i.displayFormats,a.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:eX(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){let t=this.options,e=this._adapter,i=t.time.unit||"day",{min:a,max:n,minDefined:r,maxDefined:o}=this.getUserBounds();function l(t){r||isNaN(t.min)||(a=Math.min(a,t.min)),o||isNaN(t.max)||(n=Math.max(n,t.max))}r&&o||(l(this._getLabelBounds()),("ticks"!==t.bounds||"labels"!==t.ticks.source)&&l(this.getMinMax(!1))),a=(0,s.g)(a)&&!isNaN(a)?a:+e.startOf(Date.now(),i),n=(0,s.g)(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(a,n-1),this.max=Math.max(a+1,n)}_getLabelBounds(){let t=this.getLabelTimestamps(),e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){let t=this.options,e=t.time,i=t.ticks,a="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&a.length&&(this.min=this._userMin||a[0],this.max=this._userMax||a[a.length-1]);let n=this.min,r=this.max,o=(0,s.aO)(a,n,r);return this._unit=e.unit||(i.autoSkip?eq(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,a){for(let n=eY.length-1;n>=eY.indexOf(i);n--){let r=eY[n];if(eU[r].common&&t._adapter.diff(a,s,r)>=e-1)return r}return eY[i?eY.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=eY.indexOf(t)+1,i=eY.length;e+t.value))}initOffsets(t=[]){let e,i,a=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),a=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);let r=t.length<3?.5:.25;a=(0,s.S)(a,0,r),n=(0,s.S)(n,0,r),this._offsets={start:a,end:n,factor:1/(a+1+n)}}_generate(){let t,e;let i=this._adapter,a=this.min,n=this.max,r=this.options,o=r.time,l=o.unit||eq(o.minUnit,a,n,this._getLabelCapacity(a)),h=(0,s.v)(r.ticks.stepSize,1),d="week"===l&&o.isoWeekday,c=(0,s.x)(d)||!0===d,u={},g=a;if(c&&(g=+i.startOf(g,"isoWeek",d)),g=+i.startOf(g,c?"day":l),i.diff(n,a,l)>1e5*h)throw Error(a+" and "+n+" are too far apart with stepSize of "+h+" "+l);let p="data"===r.ticks.source&&this.getDataTimestamps();for(t=g,e=0;tt-e).map(t=>+t)}getLabelForValue(t){let e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}_tickFormatFunction(t,e,i,a){let n=this.options,r=n.ticks.callback;if(r)return(0,s.Q)(r,[t,e,i],this);let o=n.time.displayFormats,l=this._unit,h=this._majorUnit,d=l&&o[l],c=h&&o[h],u=i[e],g=h&&c&&u&&u.major;return this._adapter.format(t,a||(g?c:d))}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e0?r:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;let s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t=t[l].pos&&e<=t[h].pos&&({lo:l,hi:h}=(0,s.B)(t,"pos",e)),{pos:a,time:r}=t[l],{pos:n,time:o}=t[h]):(e>=t[l].time&&e<=t[h].time&&({lo:l,hi:h}=(0,s.B)(t,"time",e)),{time:a,pos:r}=t[l],{time:n,pos:o}=t[h]);let d=n-a;return d?r+(o-r)*(e-a)/d:r}class e0 extends eJ{static id="timeseries";static defaults=eJ.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){let t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=eZ(e,this.min),this._tableRange=eZ(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){let e,i,s;let{min:a,max:n}=this,r=[],o=[];for(e=0,i=t.length;e=a&&s<=n&&r.push(s);if(r.length<2)return[{time:a,pos:0},{time:n,pos:1}];for(e=0,i=r.length;ee.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}},LinearScale:ez,LogarithmicScale:eN,RadialLinearScale:e$,TimeScale:eJ,TimeSeriesScale:e0});let e2=[C,t3,eL,e1]}}]); +//# sourceMappingURL=ee8b1517-2d287d36db8884e0.js.map \ No newline at end of file diff --git a/static/web/_next/static/chunks/ee8b1517-d8b698f377abd86b.js.map b/static/web/_next/static/chunks/ee8b1517-2d287d36db8884e0.js.map similarity index 99% rename from static/web/_next/static/chunks/ee8b1517-d8b698f377abd86b.js.map rename to static/web/_next/static/chunks/ee8b1517-2d287d36db8884e0.js.map index 44df45166..d95cea896 100644 --- a/static/web/_next/static/chunks/ee8b1517-d8b698f377abd86b.js.map +++ b/static/web/_next/static/chunks/ee8b1517-2d287d36db8884e0.js.map @@ -1 +1 @@ -{"version":3,"file":"static/chunks/ee8b1517-d8b698f377abd86b.js","mappings":"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","sources":["webpack://_N_E/./node_modules/chart.js/dist/chart.js","webpack://_N_E/"],"sourcesContent":["/*!\n * Chart.js v4.1.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, i as isObject, d as defaults, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as defined, s as sign, j as createContext, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as getRelativePosition, A as _rlookupByKey, B as _lookupByKey, C as _isPointInArea, D as getAngleFromPoint, E as toPadding, F as each, G as getMaximumSize, I as _getParentNode, J as readUsedSize, K as supportsEventListenerOptions, L as throttled, M as _isDomSupported, N as _factorize, O as finiteOrDefault, Q as callback, R as _addGrace, S as _limitValue, U as toDegrees, V as _measureText, W as _int16Range, X as _alignPixel, Y as clipArea, Z as renderText, $ as unclipArea, a0 as toFont, a1 as _toLeftRightCenter, a2 as _alignStartEnd, a3 as overrides, a4 as merge, a5 as _capitalize, a6 as descriptors, a7 as isFunction, a8 as _attachContext, a9 as _createResolver, aa as _descriptors, ab as mergeIf, ac as uid, ad as debounce, ae as retinaScale, af as clearCanvas, ag as setsEqual, ah as _elementsEqual, ai as _isClickEvent, aj as _isBetween, ak as _readValueToProps, al as _updateBezierControlPoints, am as _computeSegments, an as _boundSegments, ao as _steppedInterpolation, ap as _bezierInterpolation, aq as _pointInLine, ar as _steppedLineTo, as as _bezierCurveTo, at as drawPoint, au as addRoundedRectPath, av as toTRBL, aw as toTRBLCorners, ax as _boundSegment, ay as _normalizeAngle, az as getRtlAdapter, aA as overrideTextDirection, aB as _textX, aC as restoreTextDirection, aD as drawPointLegend, aE as distanceBetweenPoints, aF as noop, aG as _setMinAndMaxByKey, aH as niceNum, aI as almostWhole, aJ as almostEquals, aK as _decimalPlaces, aL as Ticks, aM as log10, aN as _longestText, aO as _filterBetween, aP as _lookup } from './chunks/helpers.segment.js';\nexport { aL as Ticks, d as defaults } from './chunks/helpers.segment.js';\nimport '@kurkle/color';\n\nclass Animator {\n constructor(){\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach((fn)=>fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, ()=>{\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart)=>{\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for(; i >= 0; --i){\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur)=>Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for(; i >= 0; --i){\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = /* #__PURE__ */ new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean (from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color (from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid ? c1.mix(c0, factor).hexString() : to;\n },\n number (from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to){\n const currentValue = target[prop];\n to = resolve([\n cfg.to,\n to,\n currentValue,\n cfg.from\n ]);\n const from = resolve([\n cfg.from,\n currentValue,\n to\n ]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([\n cfg.to,\n to,\n currentValue,\n cfg.from\n ]);\n this._from = resolve([\n cfg.from,\n currentValue,\n to\n ]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || elapsed < duration);\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = elapsed / duration % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej)=>{\n promises.push({\n res,\n rej\n });\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for(let i = 0; i < promises.length; i++){\n promises[i][method]();\n }\n }\n}\n\nclass Animations {\n constructor(chart, config){\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach((key)=>{\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions){\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [\n key\n ]).forEach((prop)=>{\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(()=>{\n target.options = newOptions;\n }, ()=>{\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for(i = props.length - 1; i >= 0; --i){\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for(let i = 0; i < keys.length; i++){\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {\n $shared: false,\n $animations: {}\n });\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for(i = 0, ilen = metasets.length; i < ilen; ++i){\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for(i = 0, ilen = keys.length; i < ilen; ++i){\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || value === 0 || sign(value) === sign(otherValue))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for(i = 0, ilen = keys.length; i < ilen; ++i){\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || stacked === undefined && meta.stack !== undefined;\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const { min , max , minDefined , maxDefined } = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()){\n const value = stack[meta.index];\n if (positive && value > 0 || !positive && value < 0) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const { chart , _cachedMeta: meta } = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const { iScale , vScale , index: datasetIndex } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for(let i = 0; i < ilen; ++i){\n const item = parsed[i];\n const { [iAxis]: index , [vAxis]: value } = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter((key)=>scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent, {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n });\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items){\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\nconst isDirectUpdateMode = (mode)=>mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared)=>shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart)=>canStack && !meta.hidden && meta._stacked && {\n keys: getSortedDatasetIndices(chart, true),\n values: null\n };\nclass DatasetController {\n static defaults = {};\n static datasetElementType = null;\n static dataElementType = null;\n constructor(chart, datasetIndex){\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r)=>axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale ? meta.vScale : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const { _cachedMeta: meta , _data: data } = this;\n const { iScale , _stacked } = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = ()=>cur[iAxis] === null || prev && cur[iAxis] < prev[iAxis];\n for(i = 0; i < count; ++i){\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const { iScale , vScale } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const { xScale , yScale } = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const { xScale , yScale } = meta;\n const { xAxisKey ='x' , yAxisKey ='y' } = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return applyStack(stack, value, meta.index, {\n mode\n });\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n const { min: otherMin , max: otherMax } = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for(i = 0; i < ilen; ++i){\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for(i = ilen - 1; i >= 0; --i){\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for(i = 0, ilen = parsed.length; i < ilen; ++i){\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || elements.length - start;\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for(i = start; i < start + count; ++i){\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for(i = 0; i < active.length; ++i){\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset ? this.resolveDatasetElementOptions(mode) : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context || (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context || (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [\n `${elementType}Hover`,\n 'hover',\n elementType,\n ''\n ] : [\n elementType,\n ''\n ];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = ()=>this.getContext(index, active, mode);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || sharedOptions !== previouslySharedOptions;\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {\n sharedOptions,\n includeOptions\n };\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: !active && this.getSharedOptions(options) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList){\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr)=>{\n arr.length += count;\n for(i = arr.length - 1; i >= end; i--){\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for(i = start; i < end; ++i){\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([\n this.index,\n ...args\n ]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync([\n '_insertElements',\n this.getDataset().data.length - count,\n count\n ]);\n }\n _onDataPop() {\n this._sync([\n '_removeElements',\n this._cachedMeta.data.length - 1,\n 1\n ]);\n }\n _onDataShift() {\n this._sync([\n '_removeElements',\n 0,\n 1\n ]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync([\n '_removeElements',\n start,\n count\n ]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync([\n '_insertElements',\n start,\n newCount\n ]);\n }\n }\n _onDataUnshift() {\n this._sync([\n '_insertElements',\n 0,\n arguments.length\n ]);\n }\n}\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for(let i = 0, ilen = visibleMetas.length; i < ilen; i++){\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b)=>a - b));\n }\n return scale._cache.$bar;\n}\n function computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = ()=>{\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for(i = 0, ilen = values.length; i < ilen; ++i){\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for(i = 0, ilen = scale.ticks.length; i < ilen; ++i){\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\n function computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - size / 2\n };\n}\n function computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for(i = start, ilen = start + count; i < ilen; ++i){\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {\n start,\n end,\n reverse,\n top,\n bottom\n };\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {\n top: true,\n right: true,\n bottom: true,\n left: true\n };\n return;\n }\n const { start , end , reverse , top , bottom } = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, { inflateAmount }, ratio) {\n properties.inflateAmount = inflateAmount === 'auto' ? ratio === 1 ? 0.33 : 0 : inflateAmount;\n}\nclass BarController extends DatasetController {\n static id = 'bar';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'base',\n 'width',\n 'height'\n ]\n }\n }\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true\n }\n }\n };\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const { iScale , vScale } = meta;\n const { xAxisKey ='x' , yAxisKey ='y' } = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for(i = start, ilen = start + count; i < ilen; ++i){\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const { iScale , vScale } = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom) ? '[' + custom.start + ', ' + custom.end + ']' : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const { index , _cachedMeta: { vScale } } = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n for(let i = start; i < start + count; i++){\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {\n base,\n head: base\n } : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || index === stack._top || index === stack._bottom,\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const { iScale } = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type).filter((meta)=>meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = (meta)=>{\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets){\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === undefined && meta.stack === undefined) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = name !== undefined ? stacks.indexOf(name) : -1;\n return index === -1 ? stacks.length - 1 : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for(i = 0, ilen = meta.data.length; i < ilen; ++i){\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const { _cachedMeta: { vScale , _stacked , index: datasetIndex } , options: { base: baseValue , minBarLength } } = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n if (_stacked && !floating) {\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options, stackCount) : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + range.chunk * stackIndex + range.chunk / 2;\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for(; i < ilen; ++i){\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\n\nclass BubbleController extends DatasetController {\n static id = 'bubble';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'borderWidth',\n 'radius'\n ]\n }\n }\n };\n static overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for(let i = data.length - 1; i >= 0; --i){\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const { xScale , yScale } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale } = this._cachedMeta;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for(let i = start; i < start + count; i++){\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {\n $shared: false\n });\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b)=>_angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b)=>_angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {\n ratioX,\n ratioY,\n offsetX,\n offsetY\n };\n}\nclass DoughnutController extends DatasetController {\n static id = 'doughnut';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'circumference',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'startAngle',\n 'x',\n 'y',\n 'offset',\n 'borderWidth',\n 'spacing'\n ]\n }\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r'\n };\n static descriptors = {\n _scriptable: (name)=>name !== 'spacing',\n _indexable: (name)=>name !== 'spacing'\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels (chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const { labels: { pointStyle , color } } = chart.legend.options;\n return data.labels.map((label, i)=>{\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick (e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n };\n constructor(chart, datasetIndex){\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i)=>+data[i];\n if (isObject(data[start])) {\n const { key ='value' } = this._parsing;\n getter = (i)=>+resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for(i = start, ilen = start + count; i < ilen; ++i){\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for(let i = 0; i < this.chart.data.datasets.length; ++i){\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min\n };\n }\n update(mode) {\n const chart = this.chart;\n const { chartArea } = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const { circumference , rotation } = this._getRotationExtents();\n const { ratioX , ratioY , offsetX , offsetY } = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if (reset && opts.animation.animateRotate || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for(i = 0; i < start; ++i){\n startAngle += this._circumference(i, reset);\n }\n for(i = start; i < start + count; ++i){\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for(i = 0; i < metaData.length; i++){\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for(i = 0, ilen = chart.data.datasets.length; i < ilen; ++i){\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for(i = 0, ilen = arcs.length; i < ilen; ++i){\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for(let i = 0, ilen = arcs.length; i < ilen; ++i){\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for(let i = 0; i < datasetIndex; ++i){\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\n\nclass LineController extends DatasetController {\n static id = 'line';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category'\n },\n _value_: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const { dataset: line , data: points = [] , _dataset } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let { start , count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale , _stacked , _dataset } = this._cachedMeta;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const { spanGaps , segment } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n const end = start + count;\n const pointsCount = points.length;\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for(let i = 0; i < pointsCount; ++i){\n const point = points[i];\n const properties = directUpdate ? point : {};\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n const parsed = this.getParsed(i);\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\n\nclass PolarAreaController extends DatasetController {\n static id = 'polarArea';\n static defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ]\n }\n },\n indexAxis: 'r',\n startAngle: 0\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels (chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const { labels: { pointStyle , color } } = chart.legend.options;\n return data.labels.map((label, i)=>{\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick (e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n };\n constructor(chart, datasetIndex){\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n meta.data.forEach((element, index)=>{\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? outerRadius / 100 * opts.cutoutPercentage : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - radiusLength * this.index;\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for(i = 0; i < start; ++i){\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for(i = start; i < start + count; i++){\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index)=>{\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index) ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle) : 0;\n }\n}\n\nclass PieController extends DoughnutController {\n static id = 'pie';\n static defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n };\n}\n\nclass RadarController extends DatasetController {\n static id = 'radar';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n }\n };\n static overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear'\n }\n }\n };\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for(let i = start; i < start + count; i++){\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\n\nclass ScatterController extends DatasetController {\n static id = 'scatter';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n };\n static overrides = {\n interaction: {\n mode: 'point'\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const { xScale , yScale } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n update(mode) {\n const meta = this._cachedMeta;\n const { data: points = [] } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let { start , count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n const { dataset: line , _dataset } = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const { showLine } = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale , _stacked , _dataset } = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const { spanGaps , segment } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for(let i = start; i < start + count; ++i){\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for(let i = data.length - 1; i >= 0; --i){\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\n/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */ function abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */ class DateAdapterBase {\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */ static override(members) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n constructor(options){\n this.options = options || {};\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n formats() {\n return abstract();\n }\n parse() {\n return abstract();\n }\n format() {\n return abstract();\n }\n add() {\n return abstract();\n }\n diff() {\n return abstract();\n }\n startOf() {\n return abstract();\n }\n endOf() {\n return abstract();\n }\n}\nvar adapters = {\n _date: DateAdapterBase\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const { controller , data , _sorted } = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {\n lo: start.lo,\n hi: end.hi\n };\n }\n }\n }\n return {\n lo: 0,\n hi: data.length - 1\n };\n}\n function evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for(let i = 0, ilen = metasets.length; i < ilen; ++i){\n const { index , data } = metasets[i];\n const { lo , hi } = binarySearch(metasets[i], axis, value, intersect);\n for(let j = lo; j <= hi; ++j){\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\n function getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\n function getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n function getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const { startAngle , endAngle } = element.getProps([\n 'startAngle',\n 'endAngle'\n ], useFinalPosition);\n const { angle } = getAngleFromPoint(element, {\n x: position.x,\n y: position.y\n });\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n function getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [\n {\n element,\n datasetIndex,\n index\n }\n ];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n function getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n function getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index)=>{\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\n var Interaction = {\n evaluateInteractionItems,\n modes: {\n index (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta)=>{\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({\n element,\n datasetIndex: meta.index,\n index\n });\n }\n });\n return elements;\n },\n dataset (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for(let i = 0; i < data.length; ++i){\n items.push({\n element: data[i],\n datasetIndex,\n index: i\n });\n }\n }\n return items;\n },\n point (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = [\n 'left',\n 'top',\n 'right',\n 'bottom'\n];\nfunction filterByPosition(array, position) {\n return array.filter((v)=>v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter((v)=>STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b)=>{\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for(i = 0, ilen = (boxes || []).length; i < ilen; ++i){\n box = boxes[i];\n ({ position: pos , options: { stack , stackWeight =1 } } = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && pos + stack,\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts){\n const { stack , pos , stackWeight } = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {\n count: 0,\n placed: 0,\n weight: 0,\n size: 0\n });\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\n function setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const { vBoxMaxWidth , hBoxMaxHeight } = params;\n let i, ilen, layout;\n for(i = 0, ilen = layouts.length; i < ilen; ++i){\n layout = layouts[i];\n const { fullSize } = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter((wrap)=>wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const { pos , box } = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {\n size: 0,\n count: 1\n };\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal ? {\n same: widthChanged,\n other: heightChanged\n } : {\n same: heightChanged,\n other: widthChanged\n };\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n positions.forEach((pos)=>{\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal ? marginForPositions([\n 'left',\n 'right'\n ]) : marginForPositions([\n 'top',\n 'bottom'\n ]);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for(i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i){\n layout = boxes[i];\n box = layout.box;\n box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea));\n const { same , other } = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let { x , y } = chartArea;\n for (const layout of boxes){\n const box = layout.box;\n const stack = stacks[layout.stack] || {\n count: 1,\n placed: 0,\n weight: 1\n };\n const weight = layout.stackWeight / stack.weight || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height1 = chartArea.h * weight;\n const width1 = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width1, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width1, height1);\n }\n stack.start = x;\n stack.placed += height1;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\nvar layouts = {\n addBox (chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [\n {\n z: 0,\n draw (chartArea) {\n item.draw(chartArea);\n }\n }\n ];\n };\n chart.boxes.push(item);\n },\n removeBox (chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure (chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update (chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, (box)=>{\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap)=>wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w\n };\n each(boxes.chartArea, (layout)=>{\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n });\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\n const EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = (value)=>value === null || value === '';\n function initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {\n passive: true\n} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const { x , y } = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList){\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver((entries)=>{\n let trigger = false;\n for (const entry of entries){\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver((entries)=>{\n let trigger = false;\n for (const entry of entries){\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart)=>{\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height)=>{\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver((entries)=>{\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event)=>{\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n addListener(canvas, type, proxy);\n return proxy;\n}\n class DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n [\n 'height',\n 'width'\n ].forEach((prop)=>{\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key)=>{\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass Element {\n static defaults = {};\n static defaultRoutes = undefined;\n active = false;\n tooltipPosition(useFinalPosition) {\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return {\n x,\n y\n };\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this;\n }\n const ret = {};\n props.forEach((prop)=>{\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for(i = 0, ilen = numMajorIndices - 1; i < ilen; i++){\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n function calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for(let i = 0, ilen = factors.length - 1; i < ilen; i++){\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\n function getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\n function skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for(i = 0; i < ticks.length; i++){\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n function skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while(next < 0){\n count++;\n next = Math.round(start + count * spacing);\n }\n for(i = Math.max(start, 0); i < end; i++){\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n function getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for(diff = arr[0], i = 1; i < len; ++i){\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align)=>align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset)=>edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\n function sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for(; i < len; i += increment){\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\n function getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\n function garbageCollect(caches, length) {\n each(caches, (cache)=>{\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for(i = 0; i < gcLen; ++i){\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\n function getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n function getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return lines * font.lineHeight + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if (reverse && position !== 'right' || !reverse && position === 'right') {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const { top , left , bottom , right , chart } = scale;\n const { chartArea , scales } = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID1 = Object.keys(position)[0];\n const value1 = position[positionAxisID1];\n titleX = scales[positionAxisID1].getPixelForValue(value1) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n}\nclass Scale extends Element {\n constructor(cfg){\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let { _userMin , _userMax , _suggestedMin , _suggestedMax } = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let { min , max , minDefined , maxDefined } = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {\n min,\n max\n };\n }\n const metas = this.getMatchingVisibleMetas();\n for(let i = 0, ilen = metas.length; i < ilen; ++i){\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n getLabelItems(chartArea = this.chart.chartArea) {\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [\n this\n ]);\n }\n update(maxWidth, maxHeight, margins) {\n const { beginAtZero , grace , ticks: tickOpts } = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal() ? this.width + margins.left + margins.right : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [\n this\n ]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [\n this\n ]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [\n this\n ]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [\n this\n ]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [\n this\n ]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [\n tick.value,\n i,\n ticks\n ], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [\n this\n ]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [\n this\n ]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid) - tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)), Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [\n this\n ]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [\n this\n ]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const { chart , options: { ticks: tickOpts , title: titleOpts , grid: gridOpts } } = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const { first , last , widest , highest } = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const { ticks: { align , padding } , position } = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [\n this\n ]);\n }\n isHorizontal() {\n const { axis , position } = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const { ctx , _longestTextCache: caches } = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for(i = 0; i < length; ++i){\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {\n data: {},\n gc: []\n };\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for(j = 0, jlen = label.length; j < jlen; ++j){\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx)=>({\n width: widths[idx] || 0,\n height: heights[idx] || 0\n });\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const { min , max } = this;\n return min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context || (tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context || (this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const { grid , position , border } = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID1 = Object.keys(position)[0];\n const value1 = position[positionAxisID1];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID1].getPixelForValue(value1));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for(i = 0; i < ticksLength; i += step){\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const { position , ticks: optionTicks } = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const { align , crossAlign , padding , mirror } = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret1 = this._getYAxisLabelAlignment(tl);\n textAlign = ret1.textAlign;\n x = ret1.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = (chartArea.top + chartArea.bottom) / 2 + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = (chartArea.left + chartArea.right) / 2 - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID1 = Object.keys(position)[0];\n const value1 = position[positionAxisID1];\n x = this.chart.scales[positionAxisID1].getPixelForValue(value1);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for(i = 0, ilen = ticks.length; i < ilen; ++i){\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += lineHeight / 2 * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n switch(textBaseline){\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch(textAlign){\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor\n };\n }\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [\n x,\n y\n ],\n backdrop\n }\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const { position , ticks } = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const { position , ticks: { crossAlign , mirror , padding } } = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {\n textAlign,\n x\n };\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {\n top: 0,\n left: this.left,\n bottom: chart.height,\n right: this.right\n };\n }\n if (position === 'top' || position === 'bottom') {\n return {\n top: this.top,\n left: 0,\n bottom: this.bottom,\n right: chart.width\n };\n }\n }\n drawBackground() {\n const { ctx , options: { backgroundColor } , left , top , width , height } = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex((t)=>t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style)=>{\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for(i = 0, ilen = items.length; i < ilen; ++i){\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine({\n x: item.x1,\n y: item.y1\n }, {\n x: item.x2,\n y: item.y2\n }, item);\n }\n if (grid.drawTicks) {\n drawLine({\n x: item.tx1,\n y: item.ty1\n }, {\n x: item.tx2,\n y: item.ty2\n }, {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n });\n }\n }\n }\n }\n drawBorder() {\n const { chart , ctx , options: { border , grid } } = this;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this.getLabelItems(chartArea);\n for (const item of items){\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const { ctx , options: { position , title , reverse } } = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const { titleX , titleY , maxWidth , rotation } = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [\n titleX,\n titleY\n ]\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [\n {\n z: tz,\n draw: (chartArea)=>{\n this.draw(chartArea);\n }\n }\n ];\n }\n return [\n {\n z: gz,\n draw: (chartArea)=>{\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n },\n {\n z: bz,\n draw: ()=>{\n this.drawBorder();\n }\n },\n {\n z: tz,\n draw: (chartArea)=>{\n this.drawLabels(chartArea);\n }\n }\n ];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for(i = 0, ilen = metas.length; i < ilen; ++i){\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override){\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach((property)=>{\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [\n scope\n ].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor(){\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [\n this.controllers,\n this.scales,\n this.elements\n ];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [\n ...args\n ].forEach((arg)=>{\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || reg === this.plugins && arg.id) {\n this._exec(method, reg, arg);\n } else {\n each(arg, (item)=>{\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for(let i = 0; i < this._typedRegistries.length; i++){\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = /* #__PURE__ */ new Registry();\n\nclass PluginService {\n constructor(){\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors){\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [\n chart,\n args,\n descriptor.options\n ];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b)=>a.filter((x)=>!b.some((y)=>x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\n function allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for(let i = 0; i < keys.length; i++){\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for(let i1 = 0; i1 < local.length; i1++){\n const plugin = local[i1];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {\n plugins,\n localIds\n };\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, { plugins , localIds }, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins){\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {\n plugin,\n local: localIds[id]\n }, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, { plugin , local }, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [\n ''\n ], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n id = scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.length > 1 && determineAxis(id[0].toLowerCase(), scaleOptions);\n if (id) {\n return id;\n }\n throw new Error(`Cannot determine type of '${name}' axis. Please provide 'axis' or 'position' option.`);\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {\n scales: {}\n };\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n Object.keys(configScales).forEach((id)=>{\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [\n {\n axis\n },\n scaleConf,\n defaultScaleOptions[axis],\n defaultScaleOptions[defaultId]\n ]);\n });\n config.data.datasets.forEach((dataset)=>{\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach((defaultID)=>{\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [\n {\n axis\n },\n configScales[id],\n defaultScaleOptions[defaultID]\n ]);\n });\n });\n Object.keys(scales).forEach((key)=>{\n const scale = scales[key];\n mergeIf(scale, [\n defaults.scales[scale.type],\n defaults.scale\n ]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key)=>{\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config){\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType, ()=>[\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`, ()=>[\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`, ()=>[\n [\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]\n ]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`, ()=>[\n [\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || []\n ]\n ]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const { options , type } = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach((keys)=>{\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach((key)=>addIfFound(scopes, mainScope, key));\n }\n keys.forEach((key)=>addIfFound(scopes, options, key));\n keys.forEach((key)=>addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach((key)=>addIfFound(scopes, defaults, key));\n keys.forEach((key)=>addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const { options , type } = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {\n type\n },\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = [\n ''\n ]) {\n const result = {\n $shared: true\n };\n const { resolver , subPrefixes } = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names){\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [\n ''\n ], descriptorDefaults) {\n const { resolver } = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context) ? _attachContext(resolver, context, undefined, descriptorDefaults) : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter((p)=>!p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = (value)=>isObject(value) && Object.getOwnPropertyNames(value).reduce((acc, key)=>acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const { isScriptable , isIndexable } = _descriptors(proxy);\n for (const prop of names){\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if (scriptable && (isFunction(value) || hasFunction(value)) || indexable && isArray(value)) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"4.1.1\";\n\nconst KNOWN_POSITIONS = [\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'chartArea'\n];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x';\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [\n context\n ], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [\n context\n ], chart);\n}\n function getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key)=>{\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c)=>c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys){\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\n function determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nfunction getDatasetArea(meta) {\n const { xScale , yScale } = meta;\n if (xScale && yScale) {\n return {\n left: xScale.left,\n right: xScale.right,\n top: yScale.top,\n bottom: yScale.bottom\n };\n }\n}\nclass Chart {\n static defaults = defaults;\n static instances = instances;\n static overrides = overrides;\n static registry = registry;\n static version = version;\n static getChart = getChart;\n static register(...items) {\n registry.add(...items);\n invalidatePlugins();\n }\n static unregister(...items) {\n registry.remove(...items);\n invalidatePlugins();\n }\n constructor(item, userConfig){\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error('Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' + ' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.');\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce((mode)=>this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const { options: { aspectRatio , maintainAspectRatio } , width , height , _aspectRatio } = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n get registry() {\n return registry;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {\n width,\n height\n };\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {\n size: newSize\n });\n callback(options.onResize, [\n this,\n newSize\n ], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID)=>{\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id)=>{\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(Object.keys(scaleOpts).map((id)=>{\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n }));\n }\n each(items, (item)=>{\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id)=>{\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale)=>{\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b)=>a.index - b.index);\n if (numMeta > numData) {\n for(let i = numData; i < numMeta; ++i){\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const { _metasets: metasets , data: { datasets } } = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index)=>{\n if (datasets.filter((x)=>x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for(i = 0, ilen = datasets.length; i < ilen; i++){\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const { datasetElementType , dataElementType } = defaults.datasets[type];\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex)=>{\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; i++){\n const { controller } = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller)=>{\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {\n mode\n });\n this._layers.sort(compare2Level('z', '_idx'));\n const { _active , _lastEvent } = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale)=>{\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const { _hiddenIndices } = this;\n const changes = this._getUniformDataChanges() || [];\n for (const { method , start , count } of changes){\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx)=>new Set(_dataChanges.filter((c)=>c[0] === idx).map((c, i)=>i + ',' + c.splice(1).join(',')));\n const changeSet = makeSet(0);\n for(let i = 1; i < datasetCount; i++){\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet).map((c)=>c.split(',')).map((a)=>({\n method: a[1],\n start: +a[2],\n count: +a[3]\n }));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {\n cancelable: true\n }) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box)=>{\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index)=>{\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this.getDatasetMeta(i).controller.configure();\n }\n for(let i1 = 0, ilen1 = this.data.datasets.length; i1 < ilen1; ++i1){\n this._updateDataset(i1, isFunction(mode) ? mode({\n datasetIndex: i1\n }) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {\n mode\n });\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {\n meta,\n index,\n mode,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {\n cancelable: true\n }) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({\n chart: this\n });\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const { width , height } = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const layers = this._layers;\n for(i = 0; i < layers.length && layers[i].z <= 0; ++i){\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for(; i < layers.length; ++i){\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for(i = 0, ilen = metasets.length; i < ilen; ++i){\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for(let i = metasets.length - 1; i >= 0; --i){\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = getDatasetArea(meta) || this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter((x)=>x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {\n chart: this,\n type: 'chart'\n }));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {\n visible\n });\n this.update((ctx)=>ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for(i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const { canvas , ctx } = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener)=>{\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y)=>{\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type)=>_add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener)=>{\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener)=>{\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height)=>{\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = ()=>{\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = ()=>{\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type)=>{\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type)=>{\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for(i = 0, ilen = items.length; i < ilen; ++i){\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({ datasetIndex , index })=>{\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n isPluginEnabled(pluginId) {\n return this._plugins._cache.filter((p)=>p.plugin.id === pluginId).length === 1;\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b)=>a.filter((x)=>!b.some((y)=>x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin)=>(plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const { _active: lastActive = [] , options } = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [\n e,\n active,\n this\n ], this);\n if (isClick) {\n callback(options.onClick, [\n e,\n active,\n this\n ], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nfunction invalidatePlugins() {\n return each(Chart.instances, (chart)=>chart._plugins.invalidate());\n}\n\nfunction clipArc(ctx, element, endAngle) {\n const { startAngle , pixelMargin , x , y , outerRadius , innerRadius } = element;\n let angleMargin = pixelMargin / outerRadius;\n // Draw an inner border by clipping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, [\n 'outerStart',\n 'outerEnd',\n 'innerStart',\n 'innerEnd'\n ]);\n}\n/**\n * Parse border radius from the provided options\n */ function parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n // Outer limits are complicated. We want to compute the available angular distance at\n // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n //\n // If the borderRadius is large, that value can become negative.\n // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n // we know that the thickness term will dominate and compute the limits at that point\n const computeOuterLimit = (val)=>{\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit)\n };\n}\n/**\n * Convert (r, 𝜃) to (x, y)\n */ function rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta)\n };\n}\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n * Start End\n *\n * 1--->a--->2 Outer\n * / \\\n * 8 3\n * | |\n * | |\n * 7 4\n * \\ /\n * 6<---b<---5 Inner\n */ function pathArc(ctx, element, offset, spacing, end, circular) {\n const { x , y , startAngle: start , pixelMargin , innerRadius: innerR } = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n // When spacing is present, it is the same for all items\n // So we adjust the start and end angle of the arc such that\n // the distance is the same as it would be without the spacing\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? alpha * avNogSpacingRadius / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const { outerStart , outerEnd , innerStart , innerEnd } = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n // The first arc segments from point 1 to point a to point 2\n const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n // The corner segment from point 2 to point 3\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n // The line from point 3 to point 4\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n // The corner segment from point 4 to point 5\n if (innerEnd > 0) {\n const pCenter1 = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter1.x, pCenter1.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n // The inner arc from point 5 to point b to point 6\n const innerMidAdjustedAngle = (endAngle - innerEnd / innerRadius + (startAngle + innerStart / innerRadius)) / 2;\n ctx.arc(x, y, innerRadius, endAngle - innerEnd / innerRadius, innerMidAdjustedAngle, true);\n ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + innerStart / innerRadius, true);\n // The corner segment from point 6 to point 7\n if (innerStart > 0) {\n const pCenter2 = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter2.x, pCenter2.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n // The line from point 7 to point 8\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n // The corner segment from point 8 to point 1\n if (outerStart > 0) {\n const pCenter3 = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter3.x, pCenter3.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const { fullCircles , startAngle , circumference } = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for(let i = 0; i < fullCircles; ++i){\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawBorder(ctx, element, offset, spacing, circular) {\n const { fullCircles , startAngle , circumference , options } = element;\n const { borderWidth , borderJoinStyle } = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for(let i = 0; i < fullCircles; ++i){\n ctx.stroke();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\nclass ArcElement extends Element {\n static id = 'arc';\n static defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n const { angle , distance } = getAngleFromPoint(point, {\n x: chartX,\n y: chartY\n });\n const { startAngle , endAngle , innerRadius , outerRadius , circumference } = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return betweenAngles && withinRadius;\n }\n getCenterPoint(useFinalPosition) {\n const { x , y , startAngle , endAngle , innerRadius , outerRadius } = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const { offset , spacing } = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const { options , circumference } = this;\n const offset = (options.offset || 0) / 4;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = options.borderAlign === 'inner' ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n const radiusOffset = offset * fix;\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, circular);\n ctx.restore();\n }\n}\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const { start: paramsStart = 0 , end: paramsEnd = count - 1 } = params;\n const { start: segmentStart , end: segmentEnd } = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\n function pathSegment(ctx, line, segment, params) {\n const { points , options } = line;\n const { count , start , loop , ilen } = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let { move =true , reverse } = params || {};\n let i, point, prev;\n for(i = 0; i <= ilen; ++i){\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\n function fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const { count , start , ilen } = pathVars(points, segment, params);\n const { move =true , reverse } = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index)=>(start + (reverse ? ilen - index : index)) % count;\n const drawX = ()=>{\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for(i = 0; i <= ilen; ++i){\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\n function _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\n function _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const { segments , options } = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments){\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {\n start,\n end: start + count - 1\n })) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n static id = 'line';\n static defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n static descriptors = {\n _scriptable: true,\n _indexable: (name)=>name !== 'borderDash' && name !== 'fill'\n };\n constructor(cfg){\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {\n property,\n start: value,\n end: value\n });\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for(i = 0, ilen = segments.length; i < ilen; ++i){\n const { start , end } = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || this.points.length - start;\n for (const segment of segments){\n loop &= segmentMethod(ctx, this, segment, {\n start,\n end: start + count - 1\n });\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const { [axis]: value } = el.getProps([\n axis\n ], useFinalPosition);\n return Math.abs(pos - value) < options.radius + options.hitRadius;\n}\nclass PointElement extends Element {\n static id = 'point';\n /**\n * @type {any}\n */ static defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n };\n /**\n * @type {any}\n */ static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2) < Math.pow(options.hitRadius + options.radius, 2);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return {\n x,\n y\n };\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n // @ts-expect-error Fallbacks should never be hit in practice\n return options.radius + options.hitRadius;\n }\n}\n\nfunction getBarBounds(bar, useFinalPosition) {\n const { x , y , base , width , height } = bar.getProps([\n 'x',\n 'y',\n 'base',\n 'width',\n 'height'\n ], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {\n left,\n top,\n right,\n bottom\n };\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const { enableBorderRadius } = bar.getProps([\n 'enableBorderRadius'\n ]);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r))\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds && (skipX || _isBetween(x, bounds.left, bounds.right)) && (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n function addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n static id = 'bar';\n static defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const { inflateAmount , options: { borderColor , backgroundColor } } = this;\n const { inner , outer } = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const { x , y , base , horizontal } = this.getProps([\n 'x',\n 'y',\n 'base',\n 'horizontal'\n ], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nconst BORDER_COLORS = [\n 'rgb(54, 162, 235)',\n 'rgb(255, 99, 132)',\n 'rgb(255, 159, 64)',\n 'rgb(255, 205, 86)',\n 'rgb(75, 192, 192)',\n 'rgb(153, 102, 255)',\n 'rgb(201, 203, 207)' // grey\n];\n// Border colors with 50% transparency\nconst BACKGROUND_COLORS = /* #__PURE__ */ BORDER_COLORS.map((color)=>color.replace('rgb(', 'rgba(').replace(')', ', 0.5)'));\nfunction getBorderColor(i) {\n return BORDER_COLORS[i % BORDER_COLORS.length];\n}\nfunction getBackgroundColor(i) {\n return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length];\n}\nfunction colorizeDefaultDataset(dataset, i) {\n dataset.borderColor = getBorderColor(i);\n dataset.backgroundColor = getBackgroundColor(i);\n return ++i;\n}\nfunction colorizeDoughnutDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(()=>getBorderColor(i++));\n return i;\n}\nfunction colorizePolarAreaDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(()=>getBackgroundColor(i++));\n return i;\n}\nfunction getColorizer(chart) {\n let i = 0;\n return (dataset, datasetIndex)=>{\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n if (controller instanceof DoughnutController) {\n i = colorizeDoughnutDataset(dataset, i);\n } else if (controller instanceof PolarAreaController) {\n i = colorizePolarAreaDataset(dataset, i);\n } else if (controller) {\n i = colorizeDefaultDataset(dataset, i);\n }\n };\n}\nfunction containsColorsDefinitions(descriptors) {\n let k;\n for(k in descriptors){\n if (descriptors[k].borderColor || descriptors[k].backgroundColor) {\n return true;\n }\n }\n return false;\n}\nvar plugin_colors = {\n id: 'colors',\n defaults: {\n enabled: true,\n forceOverride: false\n },\n beforeLayout (chart, _args, options) {\n if (!options.enabled) {\n return;\n }\n const { options: { elements } , data: { datasets } } = chart.config;\n if (!options.forceOverride && (containsColorsDefinitions(datasets) || elements && containsColorsDefinitions(elements))) {\n return;\n }\n const colorizer = getColorizer(chart);\n datasets.forEach(colorizer);\n }\n};\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for(i = 0; i < samples - 2; i++){\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for(j = avgRangeStart; j < avgRangeEnd; j++){\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const { x: pointAx , y: pointAy } = data[a];\n maxArea = area = -1;\n for(j = rangeOffs; j < rangeTo; j++){\n area = 0.5 * Math.abs((pointAx - avgX) * (data[j].y - pointAy) - (pointAx - data[j].x) * (avgY - pointAy));\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for(i = start; i < start + count; ++i){\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {\n value: data\n });\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset)=>{\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const { iScale } = meta;\n const { min , max , minDefined , maxDefined } = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {\n start,\n count\n };\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false\n },\n beforeElementsUpdate: (chart, args, options)=>{\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex)=>{\n const { _data , indexAxis } = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([\n indexAxis,\n chart.options.indexAxis\n ]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let { start , count } = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch(options.algorithm){\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy (chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments){\n let { start , end } = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments){\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources){\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {\n property,\n start,\n end\n };\n}\nfunction _pointsFromSegments(boundary, line) {\n const { x =null , y =null } = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({ start , end })=>{\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({\n x: first.x,\n y\n });\n points.push({\n x: last.x,\n y\n });\n } else if (x !== null) {\n points.push({\n x,\n y: first.y\n });\n points.push({\n x,\n y: last.y\n });\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for(; end > start; end--){\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {\n tension: 0\n },\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [\n index\n ];\n let target;\n if (!propagate) {\n return fill;\n }\n while(fill !== false && visited.indexOf(fill) === -1){\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\n function _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return [\n 'origin',\n 'start',\n 'end',\n 'stack',\n 'shape'\n ].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\n function _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\n function _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\n function parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const { scale , index , line } = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({\n x: null,\n y: scale.bottom\n }, line));\n for(let i = 0; i < segments.length; i++){\n const segment = segments[i];\n for(let j = segment.start; j <= segment.end; j++){\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({\n points,\n options: {}\n });\n}\n function getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for(let i = 0; i < metas.length; i++){\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\n function addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for(let j = 0; j < linesBelow.length; j++){\n const line = linesBelow[j];\n const { first , last , point } = findPoint(line, sourcePoint, 'x');\n if (!point || first && last) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\n function findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for(let i = 0; i < segments.length; i++){\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {\n first,\n last,\n point\n };\n}\n\nclass simpleArc {\n constructor(opts){\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const { x , y , radius } = this;\n bounds = bounds || {\n start: 0,\n end: TAU\n };\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const { x , y , radius } = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n\nfunction _getTarget(source) {\n const { chart , fill , line } = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\n function getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const { scale ={} , fill } = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const { scale , fill } = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for(let i = 0; i < length; ++i){\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const { line , scale , axis } = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const { above =color , below =color } = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {\n line,\n target,\n above,\n below,\n area,\n scale,\n axis\n });\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const { line , target , above , below , area , scale } = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {\n line,\n target,\n color: above,\n scale,\n property\n });\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {\n line,\n target,\n color: below,\n scale,\n property\n });\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const { segments , points } = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments){\n const { start , end } = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {\n move: lineLoop\n });\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const { line , target , property , color , scale } = cfg;\n const segments = _segments(line, target, property);\n for (const { source: src , target: tgt , start , end } of segments){\n const { style: { backgroundColor =color } = {} } = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {\n move: lineLoop,\n reverse: true\n });\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const { top , bottom } = scale.chart.chartArea;\n const { property , start , end } = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate (chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for(i = 0; i < count; ++i){\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for(i = 0; i < count; ++i){\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw (chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for(let i = metasets.length - 1; i >= 0; --i){\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw (chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for(let i = metasets.length - 1; i >= 0; --i){\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw (chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize)=>{\n let { boxHeight =fontSize , boxWidth =fontSize } = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b)=>a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config){\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [\n this.chart\n ], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item)=>labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b)=>labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const { options , ctx } = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const { boxWidth , itemHeight } = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const { ctx , maxWidth , options: { labels: { padding } } } = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [\n 0\n ];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i)=>{\n const itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {\n left: 0,\n top,\n row,\n width: itemWidth,\n height: itemHeight\n };\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n const { ctx , maxHeight , options: { labels: { padding } } } = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i)=>{\n const { itemWidth , itemHeight } = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {\n left,\n top: currentColHeight,\n col,\n width: itemWidth,\n height: itemHeight\n };\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const { legendHitBoxes: hitboxes , options: { align , labels: { padding } , rtl } } = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes){\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox1 of hitboxes){\n if (hitbox1.col !== col) {\n col = hitbox1.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox1.top = top;\n hitbox1.left += this.left + padding;\n hitbox1.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox1.left), hitbox1.width);\n top += hitbox1.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const { options: opts , columnSizes , lineWidths , ctx } = this;\n const { align , labels: labelOpts } = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const { padding } = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const { boxWidth , boxHeight , itemHeight } = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + itemHeight / 2, labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i)=>{\n ctx.strokeStyle = legendItem.fontColor;\n ctx.fillStyle = legendItem.fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n const fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight);\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size)=>Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right) && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for(i = 0; i < lh.length; ++i){\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width) && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [\n e,\n previous,\n this\n ], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [\n e,\n hoveredItem,\n this\n ], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [\n e,\n hoveredItem,\n this\n ], this);\n }\n }\n}\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {\n itemWidth,\n itemHeight\n };\n}\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n let legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce((a, b)=>a.length > b.length ? a : b);\n }\n return boxWidth + labelFont.size / 2 + ctx.measureText(legendItemText).width;\n}\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n let itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n const labelHeight = legendItem.text ? legendItem.text.length + 0.5 : 0;\n return fontLineHeight * labelHeight;\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start (chart, _args, options) {\n const legend = chart.legend = new Legend({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop (chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate (chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate (chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent (chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick (e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx)=>ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels (chart) {\n const datasets = chart.data.datasets;\n const { labels: { usePointStyle , pointStyle , textAlign , color , useBorderRadius , borderRadius } } = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta)=>{\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx)=>ctx.chart.options.color,\n display: false,\n position: 'center',\n text: ''\n }\n },\n descriptors: {\n _scriptable: (name)=>!name.startsWith('on'),\n labels: {\n _scriptable: (name)=>![\n 'generateLabels',\n 'filter',\n 'sort'\n ].includes(name)\n }\n }\n};\n\nclass Title extends Element {\n constructor(config){\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const { top , left , bottom , right , options } = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const { titleX , titleY , maxWidth , rotation } = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [\n titleX,\n titleY\n ]\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start (chart, _args, options) {\n createTitle(chart, options);\n },\n stop (chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate (chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold'\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start (chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop (chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate (chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal'\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\n\nconst positioners = {\n average (items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for(i = 0, len = items.length; i < len; ++i){\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest (items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for(i = 0, len = items.length; i < len; ++i){\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\n function splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\n function createTooltipItem(chart, item) {\n const { element , datasetIndex , index } = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const { label , value } = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\n function getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const { body , footer , title } = tooltip;\n const { boxWidth , boxHeight } = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem)=>count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight + (titleLineCount - 1) * options.titleSpacing + options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight + (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight + (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop + footerLineCount * footerFont.lineHeight + (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? boxWidth + 2 + options.boxPadding : 0;\n each(body, (bodyItem)=>{\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {\n width,\n height\n };\n}\nfunction determineYAlign(chart, size) {\n const { y , height } = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > chart.height - height / 2) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const { x , width } = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const { x , width } = size;\n const { width: chartWidth , chartArea: { left , right } } = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\n function determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let { x , width } = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= width / 2;\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let { y , height } = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= height / 2;\n }\n return y;\n}\n function getBackgroundPoint(options, size, alignment, chart) {\n const { caretSize , caretPadding , cornerRadius } = options;\n const { xAlign , yAlign } = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center' ? tooltip.x + tooltip.width / 2 : align === 'right' ? tooltip.x + tooltip.width - padding.right : tooltip.x + padding.left;\n}\n function getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nconst defaultCallbacks = {\n beforeTitle: noop,\n title (tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label (tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor (tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0\n };\n },\n labelTextColor () {\n return this.options.bodyColor;\n },\n labelPointStyle (tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\n function invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n return result;\n}\nclass Tooltip extends Element {\n static positioners = positioners;\n constructor(config){\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context || (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const { callbacks } = options;\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems));\n }\n getBody(tooltipItems, options) {\n const { callbacks } = options;\n const bodyItems = [];\n each(tooltipItems, (context)=>{\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems));\n }\n getFooter(tooltipItems, options) {\n const { callbacks } = options;\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for(i = 0, len = active.length; i < len; ++i){\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array)=>options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b)=>options.itemSort(a, b, data));\n }\n each(tooltipItems, (context)=>{\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {\n chart: this.chart,\n tooltip: this,\n replay\n });\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const { xAlign , yAlign } = this;\n const { caretSize , cornerRadius } = options;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(cornerRadius);\n const { x: ptX , y: ptY } = tooltipPoint;\n const { width , height } = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + height / 2;\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {\n x1,\n x2,\n x3,\n y1,\n y2,\n y3\n };\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for(i = 0; i < length; ++i){\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const { boxHeight , boxWidth , boxPadding } = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : labelColors.borderWidth || 1;\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const { body } = this;\n const { bodySpacing , bodyAlign , displayColors , boxHeight , boxWidth , boxPadding } = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right' ? bodyAlign === 'center' ? boxWidth / 2 + boxPadding : boxWidth + 2 + boxPadding : 0;\n for(i = 0, ilen = body.length; i < ilen; ++i){\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for(j = 0, jlen = lines.length; j < jlen; ++j){\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for(i = 0; i < length; ++i){\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const { xAlign , yAlign } = this;\n const { x , y } = pt;\n const { width , height } = tooltipSize;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({ datasetIndex , index })=>{\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const { caretX , caretY , options } = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit (chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({\n chart,\n options\n });\n }\n },\n beforeUpdate (chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset (chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw (chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', {\n ...args,\n cancelable: true\n }) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent (chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold'\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {},\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold'\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts)=>opts.bodyFont.size,\n boxWidth: (ctx, opts)=>opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart'\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'width',\n 'height',\n 'caretX',\n 'caretY'\n ]\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name)=>name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: [\n 'interaction'\n ]\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nColors: plugin_colors,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels)=>{\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({\n index,\n label: raw\n });\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max)=>index === null ? null : _limitValue(Math.round(index), 0, max);\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\nclass CategoryScale extends Scale {\n static id = 'category';\n static defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n };\n constructor(cfg){\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const { index , label } of added){\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const { minDefined , maxDefined } = this.getUserBounds();\n let { min , max } = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = min === 0 && max === labels.length - 1 ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for(let value = min; value <= max; value++){\n ticks.push({\n value\n });\n }\n return ticks;\n }\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const { bounds , step , min , max , precision , count , maxTicks , maxDigits , includeBounds } = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const { min: rmin , max: rmax } = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [\n {\n value: rmin\n },\n {\n value: rmax\n }\n ];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(_decimalPlaces(spacing), _decimalPlaces(niceMin));\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({\n value: min\n });\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for(; j < numSpaces; ++j){\n ticks.push({\n value: Math.round((niceMin + j * spacing) * factor) / factor\n });\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({\n value: max\n });\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({\n value: niceMax\n });\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, { horizontal , minRotation }) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg){\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const { beginAtZero } = this.options;\n const { minDefined , maxDefined } = this.getUserBounds();\n let { min , max } = this;\n const setMin = (v)=>min = minDefined ? min : v;\n const setMax = (v)=>max = maxDefined ? max : v;\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let { maxTicksLimit , stepSize } = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n static id = 'linear';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n };\n determineDataLimits() {\n const { min , max } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\n\nconst log10Floor = (v)=>Math.floor(log10(v));\nconst changeExponent = (v, m)=>Math.pow(10, log10Floor(v) + m);\nfunction isMajor(tickVal) {\n const remain = tickVal / Math.pow(10, log10Floor(tickVal));\n return remain === 1;\n}\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while(steps(min, max, rangeExp) > 10){\n rangeExp++;\n }\n while(steps(min, max, rangeExp) < 10){\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\n function generateTicks(generationOptions, { min , max }) {\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while(value < max){\n ticks.push({\n value,\n major: isMajor(value),\n significand\n });\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({\n value: lastTick,\n major: isMajor(lastTick),\n significand\n });\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n static id = 'logarithmic';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n };\n constructor(cfg){\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [\n raw,\n index\n ]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const { min , max } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n if (this._zero && this.min !== this._suggestedMin && !isNumberFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const { minDefined , maxDefined } = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = (v)=>min = minDefined ? min : v;\n const setMax = (v)=>max = maxDefined ? max : v;\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n setMax(changeExponent(min, +1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined ? '0' : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min ? 0 : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [\n label\n ];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - size / 2,\n end: pos + size / 2\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\n function fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for(let i = 0; i < valueCount; i++){\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(orig.l - limits.l, limits.r - orig.r, orig.t - limits.t, limits.b - orig.b);\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for(let i = 0; i < valueCount; i++){\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= w / 2;\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= h / 2;\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const { ctx , options: { pointLabels } } = scale;\n for(let i = labelCount - 1; i >= 0; i--){\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const { x , y , textAlign , left , top , right , bottom } = scale._pointLabelItems[i];\n const { backdropColor } = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n renderText(ctx, scale._pointLabels[i], x, y + plFont.lineHeight / 2, plFont, {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n });\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const { ctx } = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for(let i = 1; i < labelCount; i++){\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const { color , lineWidth } = gridLineOpts;\n if (!circular && !labelCount || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash);\n ctx.lineDashOffset = borderOpts.dashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n static id = 'radialLinear';\n static defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback (label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n };\n static defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n };\n static descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n };\n constructor(cfg){\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const { min , max } = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels().map((value, index)=>{\n const label = callback(this.options.pointLabels.callback, [\n value,\n index\n ], this);\n return label || label === 0 ? label : '';\n }).filter((v, i)=>this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const { left , top , right , bottom } = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom\n };\n }\n drawBackground() {\n const { backgroundColor , grid: { circular } } = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const { angleLines , grid , border } = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index)=>{\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for(i = labelCount - 1; i >= 0; i--){\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const { color , lineWidth } = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index)=>{\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(-width / 2 - padding.left, -offset - tickFont.size / 2 - padding.top, width + padding.width, tickFont.size + padding.height);\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\n\nconst INTERVALS = {\n millisecond: {\n common: true,\n size: 1,\n steps: 1000\n },\n second: {\n common: true,\n size: 1000,\n steps: 60\n },\n minute: {\n common: true,\n size: 60000,\n steps: 60\n },\n hour: {\n common: true,\n size: 3600000,\n steps: 24\n },\n day: {\n common: true,\n size: 86400000,\n steps: 30\n },\n week: {\n common: false,\n size: 604800000,\n steps: 4\n },\n month: {\n common: true,\n size: 2.628e9,\n steps: 12\n },\n quarter: {\n common: false,\n size: 7.884e9,\n steps: 4\n },\n year: {\n common: true,\n size: 3.154e10\n }\n};\n const UNITS = /* #__PURE__ */ Object.keys(INTERVALS);\n function sorter(a, b) {\n return a - b;\n}\n function parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const { parser , round , isoWeekday } = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string' ? adapter.parse(value, parser) : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true) ? adapter.startOf(value, 'isoWeek', isoWeekday) : adapter.startOf(value, round);\n }\n return +value;\n}\n function determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for(let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i){\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\n function determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for(let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--){\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n function determineMajorUnit(unit) {\n for(let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i){\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\n function addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const { lo , hi } = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\n function setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for(major = first; major <= last; major = +adapter.add(major, 1, majorUnit)){\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\n function ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for(i = 0; i < ilen; ++i){\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n static id = 'time';\n static defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n callback: false,\n major: {\n enabled: false\n }\n }\n };\n constructor(props){\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts = {}) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let { min , max , minDefined , maxDefined } = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {\n min,\n max\n };\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min)) : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map((tick)=>+tick.value));\n }\n }\n initOffsets(timestamps = []) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {\n start,\n end,\n factor: 1 / (start + 1 + end)\n };\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for(time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++){\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b)=>a - b).map((x)=>+x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n if (formatter) {\n return callback(formatter, [\n time,\n index,\n ticks\n ], this);\n }\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for(i = 0, ilen = ticks.length; i < ilen; ++i){\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: tickLabelWidth * cosRotation + tickFontSize * sinRotation,\n h: tickLabelWidth * sinRotation + tickFontSize * cosRotation\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [\n exampleTime\n ], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return this._cache.data = metas[0].controller.getAllParsedValues(this);\n }\n for(i = 0, ilen = metas.length; i < ilen; ++i){\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return this._cache.data = this.normalize(timestamps);\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for(i = 0, ilen = labels.length; i < ilen; ++i){\n timestamps.push(parse(this, labels[i]));\n }\n return this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps);\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({ lo , hi } = _lookupByKey(table, 'pos', val));\n }\n ({ pos: prevSource , time: prevTarget } = table[lo]);\n ({ pos: nextSource , time: nextTarget } = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({ lo , hi } = _lookupByKey(table, 'time', val));\n }\n ({ time: prevSource , pos: prevTarget } = table[lo]);\n ({ time: nextSource , pos: nextTarget } = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n static id = 'timeseries';\n static defaults = TimeScale.defaults;\n constructor(props){\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const { min , max } = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for(i = 0, ilen = timestamps.length; i < ilen; ++i){\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {\n time: min,\n pos: 0\n },\n {\n time: max,\n pos: 1\n }\n ];\n }\n for(i = 0, ilen = items.length; i < ilen; ++i){\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({\n time: curr,\n pos: i / (ilen - 1)\n });\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, plugin_colors as Colors, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n//# sourceMappingURL=chart.js.map\n"],"names":["animator","constructor","_request","_charts","Map","_running","_lastDate","undefined","_notify","chart","anims","date","type","callbacks","listeners","numSteps","duration","forEach","fn","initial","currentStep","Math","min","start","_refresh","_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__","r","call","window","_update","Date","now","remaining","item","running","items","length","i","draw","_active","_total","tick","pop","_getAnims","charts","get","complete","progress","set","listen","event","cb","push","add","has","reduce","acc","cur","max","_duration","stop","cancel","remove","delete","transparent","interpolators","boolean","from","to","factor","color","c0","c","c1","valid","mix","hexString","number","Animation","cfg","target","prop","currentValue","a","_fn","_easing","e","easing","linear","_start","floor","delay","_loop","loop","_target","_prop","_from","_to","_promises","active","update","elapsed","remain","wait","promises","Promise","res","rej","resolved","method","Animations","config","_chart","_properties","configure","animationOptions","Object","keys","d","animation","animatedProps","getOwnPropertyNames","key","option","b","properties","_animateOptions","values","newOptions","options","resolveTargetOptions","$shared","assign","$animations","animations","_createAnimations","awaitAll","anim","all","then","props","charAt","value","size","scaleClip","scale","allowedOverflow","opts","reverse","end","getSortedDatasetIndices","filterVisible","ilen","metasets","_getSortedDatasetMetas","index","applyStack","stack","dsIndex","datasetIndex","otherValue","singleMode","mode","g","s","isStacked","meta","stacked","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","parsed","_cachedMeta","stacks","_stacks","iScale","iAxis","axis","vAxis","indexScale","id","valueScale","itemStacks","getOrCreateStack","stackKey","indexValue","subStack","_top","_bottom","visualValues","_visualValues","getFirstScaleId","scales","filter","shift","clearStacks","_parsed","isDirectUpdateMode","cloneIfNotShared","cached","shared","createStack","canStack","hidden","_stacked","DatasetController","defaults","datasetElementType","dataElementType","_ctx","ctx","_cachedDataOpts","getMeta","_type","_parsing","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","initialize","linkScales","addElements","fill","isPluginEnabled","console","warn","updateIndex","dataset","getDataset","chooseId","x","y","xid","xAxisID","v","yid","yAxisID","rid","rAxisID","indexAxis","iid","iAxisID","vid","vAxisID","xScale","getScaleForId","yScale","rScale","data","datasets","getDatasetMeta","scaleID","_getOtherScale","reset","_destroy","u","_dataCheck","convertObjectDataToArray","adata","isExtensible","l","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","scopes","getOptionScopes","createResolver","getContext","parsing","parse","count","sorted","_sorted","prev","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","xAxisKey","yAxisKey","f","getParsed","getDataElement","updateRangeFromParsed","range","parsedValue","NaN","getMinMax","otherScale","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","otherMin","otherMax","getUserBounds","minDefined","maxDefined","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","label","getLabelForValue","t","_clip","clip","defaultClip","top","right","bottom","left","disabled","elements","area","chartArea","drawActiveElementsOnTop","element","getStyle","resolveDatasetElementOptions","resolveDataElementOptions","parent","context","j","dataIndex","raw","_resolveElementOptions","elementType","cache","cacheKey","sharing","h","datasetElementScopeKeys","prefixes","names","resolveNamedOptions","freeze","_resolveAnimations","transition","datasetAnimationScopeKeys","_cacheable","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","arr","updateElements","removed","splice","_sync","args","_dataChanges","_onDataPush","arguments","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","parseValue","entry","parseFloatBar","startValue","endValue","barStart","barEnd","abs","_custom","parseArrayOrPrimitive","isFloatBar","custom","parseEdge","edge","orig","startEnd","DoughnutController","animateRotate","animateScale","numbers","cutout","rotation","circumference","radius","spacing","descriptors","_scriptable","name","_indexable","overrides","aspectRatio","plugins","legend","generateLabels","pointStyle","map","style","text","fillStyle","backgroundColor","strokeStyle","borderColor","fontColor","lineWidth","borderWidth","getDataVisibility","onClick","legendItem","toggleDataVisibility","innerRadius","outerRadius","offsetX","offsetY","getter","_getRotation","_getCircumference","_getRotationExtents","T","isDatasetVisible","arcs","getMaxBorderWidth","getMaxOffset","maxSize","width","height","m","chartWeight","_getRingWeight","ratioX","ratioY","getRatioAndOffset","endAngle","startAngle","startX","cos","startY","sin","endX","endY","calcMax","angle","p","calcMin","maxX","maxY","H","minX","P","minY","maxWidth","maxHeight","n","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","_circumference","calculateCircumference","animationOpts","centerX","centerY","arc","metaData","isNaN","o","locale","borderAlign","hoverBorderWidth","offset","hoverOffset","ringWeightOffset","weight","PolarAreaController","angleLines","display","beginAtZero","grid","circular","pointLabels","bind","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","controllers","__proto__","BarController","categoryPercentage","barPercentage","grouped","_index_","_value_","obj","iAxisKey","vAxisKey","bars","base","getBasePixel","horizontal","isHorizontal","ruler","_getRuler","vpixels","k","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","enableBorderRadius","center","setBorderSkipped","borderSkipped","setInflateAmount","inflateAmount","ratio","_getStacks","last","skipNull","val","indexOf","_getStackCount","_getStackIndex","pixels","getPixelForValue","barThickness","computeMinSampleSize","curr","getAllScaleValues","_cache","$bar","visibleMetas","concat","_","sort","_length","updateMinAndPrev","ticks","getPixelForTick","_startPixel","_endPixel","stackCount","baseValue","minBarLength","actualBase","floating","startPixel","getPixelForDecimal","endPixel","getValueForPixel","halfGrid","getLineWidthForValue","maxBarThickness","Infinity","computeFlexCategoryTraits","next","percent","chunk","computeFitCategoryTraits","thickness","stackIndex","rects","BubbleController","points","point","iPixel","vPixel","skip","LineController","showLine","spanGaps","line","_dataset","animationsDisabled","q","w","_datasetIndex","_decimated","segment","animated","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","border","firstPoint","lastPoint","updateControlPoints","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","ScatterController","interaction","registry","getElement","abstract","DateAdapterBase","override","members","prototype","init","formats","format","diff","startOf","endOf","adapters","_date","evaluateInteractionItems","position","handler","intersect","getSortedVisibleDatasetMetas","lo","hi","binarySearch","metaset","lookupMethod","_reversePixels","A","B","el","getRange","getIntersectItems","useFinalPosition","includeInvisible","isPointInArea","C","inRange","getNearestItems","getNearestCartesianItems","distanceMetric","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","sqrt","pow","minDistance","getCenterPoint","pointInArea","distance","getProps","D","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","z","nearest","STATIC_POSITIONS","filterByPosition","array","pos","filterDynamicPositionByAxis","box","sortByWeight","v0","v1","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","fitBoxes","boxes","params","layout","refit","changed","refitBoxes","getMargins","positions","margin","same","other","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","fullSize","setBoxDims","placeBoxes","userPadding","padding","placed","stackWeight","height1","width1","layouts","addBox","_layers","removeBox","layoutItem","minPadding","E","availableWidth","availableHeight","buildLayoutBoxes","layoutBoxes","wrapBoxes","wrap","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","verticalBoxes","horizontalBoxes","F","beforeLayout","visibleVerticalBoxCount","vBoxMaxWidth","hBoxMaxHeight","setLayoutDims","buildStacks","includes","_stack","handleMaxPadding","updatePos","change","BasePlatform","acquireContext","canvas","releaseContext","addEventListener","listener","removeEventListener","getDevicePixelRatio","getMaximumSize","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","K","passive","removeListener","nodeListContains","nodeList","node","contains","createAttachObserver","observer","MutationObserver","trigger","entries","addedNodes","removedNodes","observe","document","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","devicePixelRatio","resize","currentDevicePixelRatio","createResizeObserver","container","I","L","clientWidth","ResizeObserver","contentRect","releaseObserver","disconnect","createProxyAndListen","proxy","fromNativeEvent","native","addListener","DomPlatform","initCanvas","renderHeight","getAttribute","renderWidth","boxSizing","displayWidth","J","displayHeight","removeAttribute","setAttribute","proxies","$proxies","handlers","attach","detach","G","isConnected","Element","defaultRoutes","tooltipPosition","hasValue","final","ret","newTicks","majorStart","majorEnd","ceil","round","reverseAlign","align","offsetFromEdge","sample","numItems","result","increment","len","getTickMarkLength","drawTicks","tickLength","getTitleHeight","fallback","font","a0","lines","lineHeight","Scale","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_maxLength","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","setContext","suggestedMin","suggestedMax","O","metas","getTicks","xLabels","yLabels","getLabelItems","_computeLabelItems","beforeUpdate","Q","margins","grace","tickOpts","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","R","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","autoSkip","source","determinedMaxTicks","determineMaxTicks","_tickSize","maxScale","maxChart","ticksLimit","maxTicksLimit","majorIndices","major","enabled","getMajorIndices","numMajorIndices","first","skipMajors","calculateSpacing","evenMajorSpacing","getEvenSpacing","factors","N","avgMajorSpacing","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","callback","afterTickToLabelConversion","tickWidth","maxLabelDiagonal","numTicks","minRotation","maxRotation","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","S","title","U","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","mirror","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","isFullSize","_computeLabelSizes","jlen","tickFont","fontString","nestedLabel","caches","widths","heights","widestLabelSize","highestLabelSize","_resolveTickFontOptions","string","gc","V","gcLen","valueAt","idx","pixel","decimal","W","X","getDecimalForPixel","getBaseValue","optionTicks","rot","autoSkipPadding","_computeGridLineItems","borderValue","lineValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","positionAxisID","positionAxisID1","value1","limit","step","optsAtIndex","optsAtIndexBorder","lineColor","borderDash","dash","borderDashOffset","dashOffset","tickColor","tickBorderDash","tickBorderDashOffset","getPixelForGridLine","offsetGridLines","validIndex","textAlign","lineCount","textOffset","crossAlign","tickAndPadding","hTickAndPadding","textBaseline","_getXAxisLabelAlignment","_getYAxisLabelAlignment","ret1","backdrop","labelOffset","halfCount","strokeColor","textStrokeColor","strokeWidth","textStrokeWidth","tickTextAlign","showLabelBackdrop","labelPadding","backdropPadding","backdropColor","translation","_computeLabelArea","drawBackground","save","fillRect","restore","findIndex","drawGrid","drawLine","p1","p2","setLineDash","lineDashOffset","beginPath","moveTo","lineTo","stroke","drawOnChartArea","drawBorder","lastLineWidth","drawLabels","Y","renderTextOptions","Z","$","drawTitle","titleX","titleY","titleArgs","a2","a1","tz","gz","bz","axisID","_maxDigits","fontSize","TypedRegistry","scope","create","isForType","isPrototypeOf","register","parentScope","proto","getPrototypeOf","registerDefaults","itemDefaults","a4","routeDefaults","routes","propertyParts","property","split","sourceName","sourceScope","join","parts","targetName","targetScope","route","describe","unregister","a3","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","_get","getPlugin","getScale","removeControllers","removeElements","removePlugins","removeScales","typedRegistry","reg","_getRegistryForType","arg","_exec","itemReg","component","camelMethod","a5","PluginService","_init","notify","hook","_createDescriptors","_descriptors","descriptor","plugin","cancelable","invalidate","_oldCache","_notifyStateChanges","allPlugins","localIds","local","i1","createDescriptors","pluginOpts","pluginScopeKeys","scriptable","indexable","allKeys","previousDescriptors","some","getIndexAxis","datasetDefaults","datasetOptions","determineAxis","scaleOptions","toLowerCase","initOptions","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","scaleConf","error","_proxy","defaultScaleOptions","ab","defaultID","initData","keyCache","keysCached","Set","cachedKeys","generate","addIfFound","Config","_config","_scopeCache","_resolverCache","platform","clearCache","clear","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","a6","Array","chartOptionScopes","resolver","subPrefixes","getResolver","needContext","isScriptable","isIndexable","aa","a7","hasFunction","subResolver","a8","descriptorDefaults","resolverCache","a9","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","M","getElementById","instances","getChart","Chart","version","invalidatePlugins","userConfig","initialCanvas","existingChart","OffscreenCanvas","ac","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","ad","resizeDelay","_initialize","maintainAspectRatio","responsive","ae","bindEvents","af","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","render","ensureScalesHaveIDs","scalesOptions","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","scaleClass","hasUpdated","_updateMetasets","_destroyDatasetMeta","slice","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","order","visible","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","autoPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","events","ag","unbindEvents","changes","_getUniformDataChanges","moveNumericKeys","intKey","datasetCount","makeSet","changeSet","noArea","_idx","ilen1","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getDatasetArea","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","hide","show","_stop","destroy","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","detached","_remove","updateHoverStyle","prefix","getActiveElements","setActiveElements","activeElements","lastActive","ah","pluginId","replay","hoverOptions","hover","deactivated","activated","inChartArea","eventFilter","_handleEvent","lastEvent","_getActiveElements","isClick","ai","onHover","rThetaToXY","theta","pathArc","pixelMargin","innerR","spacingOffset","alpha","avNogSpacingRadius","noSpacingInnerRadius","beta","angleOffset","outerStart","outerEnd","innerStart","innerEnd","parseBorderRadius$1","angleDelta","borderRadius","ak","halfThickness","innerLimit","computeOuterLimit","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","outerMidAdjustedAngle","pCenter","p4","pCenter1","PI","innerMidAdjustedAngle","pCenter2","p8","pCenter3","closePath","setStyle","lineCap","borderCapStyle","lineJoin","borderJoinStyle","previous","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","pathSegment","lineMethod","stepped","ar","tension","cubicInterpolationMode","as","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","useFastPath","usePath2D","Path2D","LineElement","capBezierPoints","_path","_points","_segments","_pointsUpdated","al","segments","am","interpolate","an","_interpolate","ao","ap","aq","interpolated","segmentMethod","path","strokePathDirect","inRange$1","hitRadius","getBarBounds","bar","half","skipOrLimit","skipX","skipY","bounds","aj","addNormalRectPath","rect","inflateRect","amount","refRect","ArcElement","fullCircles","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","translate","fix","radiusOffset","drawArc","inner","clipArc","angleMargin","PointElement","hoverRadius","mouseX","mouseY","inXRange","inYRange","at","BarElement","outer","boundingRects","parseBorderWidth","maxW","maxH","av","parseBorderRadius","aw","maxR","enableBorder","topLeft","topRight","bottomLeft","bottomRight","addRectPath","hasRadius","au","BORDER_COLORS","BACKGROUND_COLORS","replace","getBorderColor","getBackgroundColor","containsColorsDefinitions","cleanDecimatedDataset","defineProperty","cleanDecimatedData","_getBounds","ay","_findSegmentEnd","_getEdge","_createBoundaryLine","boundary","_pointsFromSegments","linePoints","_shouldApplyFill","simpleArc","_drawfill","_getTarget","getLineByIndex","_buildStackLine","sourcePoints","linesBelow","getLinesBelow","below","unshift","addPointsBelow","sourcePoint","postponed","findPoint","pointValue","firstValue","lastValue","computeBoundary","computeCircularBoundary","computeLinearBoundary","lineOpts","fillOption","above","doFill","clipVertical","clipY","lineLoop","tpoints","targetSegments","tgt","subBounds","fillSources","ax","fillSource","src","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","itemsEqual","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","itemWidth","measureText","_itemHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","col","calculateItemSize","fontLineHeight","legendItemText","calculateLegendItemHeight","adjustHitBoxes","rtl","rtlHelper","az","hitbox","leftForLtr","hitbox1","_draw","cursor","defaultColor","halfFontSize","drawLegendBox","lineDash","drawOptions","SQRT2","xPlus","aD","yBoxTop","xBoxLeft","fillText","strikethrough","aA","textDirection","textWidth","setWidth","realX","aB","aC","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","handleEvent","onLeave","hoveredItem","sameItem","Title","_padding","textSize","_drawArgs","fontOpts","WeakMap","positioners","average","eventPosition","nearestElement","aE","tp","pushOrConcat","toPush","apply","splitNewlines","str","String","getTooltipSize","tooltip","body","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","bodyLineHeight","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineAlignment","yAlign","determineYAlign","xAlign","determineXAlign","chartWidth","doesNotFitWithAlign","caret","caretSize","caretPadding","getBackgroundPoint","alignment","cornerRadius","paddingAndSize","alignX","alignY","getAlignedX","overrideCallbacks","defaultCallbacks","beforeTitle","aF","tooltipItems","labelCount","afterTitle","beforeLabel","tooltipItem","formattedValue","labelColor","labelTextColor","bodyColor","labelPointStyle","afterLabel","beforeFooter","afterFooter","invokeCallbackWithFallback","Tooltip","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","getTitle","getBeforeBody","getBody","bodyItems","scoped","getAfterBody","getFooter","_createItems","createTooltipItem","itemSort","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","pt","titleAlign","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","textColor","bodyAlign","xLinePadding","fillLineOfText","bodyAlignForCalculation","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","hasTooltipContent","globalAlpha","positionChanged","_positionChanged","_ignoreReplayEvents","Colors","forceOverride","_args","colorizer","Decimation","algorithm","beforeElementsUpdate","decimated","xAxis","getStartAndCountOfVisiblePointsSimplified","pointCount","threshold","configurable","enumerable","lttbDecimation","maxAreaPoint","maxArea","nextA","samples","bucketWidth","sampledIndex","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAx","pointAy","minMaxDecimation","minIndex","maxIndex","startIndex","xMin","xMax","dx","lastIndex","intermediateIndex1","intermediateIndex2","Filler","afterDatasetsUpdate","sources","_decodeFill","firstCh","parseFillOption","parseFloat","$filler","_resolveTarget","propagate","visited","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","_element","afterEvent","ci","useBorderRadius","startsWith","SubTitle","createTitle","titleBlock","afterInit","afterDraw","_fallback","addIfString","addedLabels","_getLabelForValue","relativeLabelSize","minSpacing","rad","LinearScaleBase","_startValue","_endValue","_valueRange","isFinite","handleTickRangeOptions","setMin","setMax","minSign","maxSign","getTickLimit","maxTicks","stepSize","computeTickLimit","numericGeneratorOptions","precision","maxDigits","includeBounds","dataRange","generateTicks$1","generationOptions","niceMin","niceMax","numSpaces","unit","maxSpaces","rmin","rmax","countDefined","aH","aI","aJ","decimalPlaces","aK","aG","LinearScale","aL","formatters","numeric","log10Floor","aM","changeExponent","isMajor","tickVal","steps","rangeExp","rangeStep","LogarithmicScale","logarithmic","_zero","generateTicks","minExp","exp","startExp","significand","lastTick","getTickBackdropHeight","determineLimits","pathRadiusLine","getPointPosition","RadialLinearScale","animate","centerPointLabels","drawingArea","_pointLabels","_pointLabelItems","fitWithPointLabels","limits","valueCount","pointLabelOpts","additionalAngle","getPointLabelContext","plFont","aN","hLimits","vLimits","updateLimits","setCenterPoint","buildPointLabelItems","extra","outerDistance","pointLabelPosition","leftMovement","rightMovement","topMovement","bottomMovement","angleMultiplier","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","distanceFromCenter","getBasePosition","getPointLabelPosition","drawPointLabels","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawRadiusLine","gridLineOpts","rotate","INTERVALS","millisecond","common","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","input","adapter","_adapter","parser","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","interval","MAX_SAFE_INTEGER","addTick","time","timestamps","aP","timestamp","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","displayFormats","_unit","_majorUnit","_offsets","_normalized","normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","aO","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","minor","weekday","hasWeekday","getDataTimestamps","tooltipFormat","datetime","_tickFormatFunction","formatter","minorFormat","majorFormat","offsets","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","normalize","table","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","CategoryScale","_addedLabels","added","findOrAddLabel","lastIndexOf","registerables"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/chunks/ee8b1517-2d287d36db8884e0.js","mappings":"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","sources":["webpack://_N_E/./node_modules/chart.js/dist/chart.js","webpack://_N_E/"],"sourcesContent":["/*!\n * Chart.js v4.1.2\n * https://www.chartjs.org\n * (c) 2023 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, i as isObject, d as defaults, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as defined, s as sign, j as createContext, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as getRelativePosition, A as _rlookupByKey, B as _lookupByKey, C as _isPointInArea, D as getAngleFromPoint, E as toPadding, F as each, G as getMaximumSize, I as _getParentNode, J as readUsedSize, K as supportsEventListenerOptions, L as throttled, M as _isDomSupported, N as _factorize, O as finiteOrDefault, Q as callback, R as _addGrace, S as _limitValue, U as toDegrees, V as _measureText, W as _int16Range, X as _alignPixel, Y as clipArea, Z as renderText, $ as unclipArea, a0 as toFont, a1 as _toLeftRightCenter, a2 as _alignStartEnd, a3 as overrides, a4 as merge, a5 as _capitalize, a6 as descriptors, a7 as isFunction, a8 as _attachContext, a9 as _createResolver, aa as _descriptors, ab as mergeIf, ac as uid, ad as debounce, ae as retinaScale, af as clearCanvas, ag as setsEqual, ah as _elementsEqual, ai as _isClickEvent, aj as _isBetween, ak as _readValueToProps, al as _updateBezierControlPoints, am as _computeSegments, an as _boundSegments, ao as _steppedInterpolation, ap as _bezierInterpolation, aq as _pointInLine, ar as _steppedLineTo, as as _bezierCurveTo, at as drawPoint, au as addRoundedRectPath, av as toTRBL, aw as toTRBLCorners, ax as _boundSegment, ay as _normalizeAngle, az as getRtlAdapter, aA as overrideTextDirection, aB as _textX, aC as restoreTextDirection, aD as drawPointLegend, aE as distanceBetweenPoints, aF as noop, aG as _setMinAndMaxByKey, aH as niceNum, aI as almostWhole, aJ as almostEquals, aK as _decimalPlaces, aL as Ticks, aM as log10, aN as _longestText, aO as _filterBetween, aP as _lookup } from './chunks/helpers.segment.js';\nexport { aL as Ticks, d as defaults } from './chunks/helpers.segment.js';\nimport '@kurkle/color';\n\nclass Animator {\n constructor(){\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach((fn)=>fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, ()=>{\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart)=>{\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for(; i >= 0; --i){\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur)=>Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for(; i >= 0; --i){\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = /* #__PURE__ */ new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean (from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color (from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid ? c1.mix(c0, factor).hexString() : to;\n },\n number (from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to){\n const currentValue = target[prop];\n to = resolve([\n cfg.to,\n to,\n currentValue,\n cfg.from\n ]);\n const from = resolve([\n cfg.from,\n currentValue,\n to\n ]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([\n cfg.to,\n to,\n currentValue,\n cfg.from\n ]);\n this._from = resolve([\n cfg.from,\n currentValue,\n to\n ]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || elapsed < duration);\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = elapsed / duration % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej)=>{\n promises.push({\n res,\n rej\n });\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for(let i = 0; i < promises.length; i++){\n promises[i][method]();\n }\n }\n}\n\nclass Animations {\n constructor(chart, config){\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach((key)=>{\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions){\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [\n key\n ]).forEach((prop)=>{\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(()=>{\n target.options = newOptions;\n }, ()=>{\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for(i = props.length - 1; i >= 0; --i){\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for(let i = 0; i < keys.length; i++){\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {\n $shared: false,\n $animations: {}\n });\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for(i = 0, ilen = metasets.length; i < ilen; ++i){\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for(i = 0, ilen = keys.length; i < ilen; ++i){\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || value === 0 || sign(value) === sign(otherValue))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for(i = 0, ilen = keys.length; i < ilen; ++i){\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || stacked === undefined && meta.stack !== undefined;\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const { min , max , minDefined , maxDefined } = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()){\n const value = stack[meta.index];\n if (positive && value > 0 || !positive && value < 0) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const { chart , _cachedMeta: meta } = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const { iScale , vScale , index: datasetIndex } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for(let i = 0; i < ilen; ++i){\n const item = parsed[i];\n const { [iAxis]: index , [vAxis]: value } = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter((key)=>scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent, {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n });\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items){\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\nconst isDirectUpdateMode = (mode)=>mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared)=>shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart)=>canStack && !meta.hidden && meta._stacked && {\n keys: getSortedDatasetIndices(chart, true),\n values: null\n };\nclass DatasetController {\n static defaults = {};\n static datasetElementType = null;\n static dataElementType = null;\n constructor(chart, datasetIndex){\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r)=>axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale ? meta.vScale : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const { _cachedMeta: meta , _data: data } = this;\n const { iScale , _stacked } = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = ()=>cur[iAxis] === null || prev && cur[iAxis] < prev[iAxis];\n for(i = 0; i < count; ++i){\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const { iScale , vScale } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const { xScale , yScale } = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const { xScale , yScale } = meta;\n const { xAxisKey ='x' , yAxisKey ='y' } = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return applyStack(stack, value, meta.index, {\n mode\n });\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n const { min: otherMin , max: otherMax } = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for(i = 0; i < ilen; ++i){\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for(i = ilen - 1; i >= 0; --i){\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for(i = 0, ilen = parsed.length; i < ilen; ++i){\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || elements.length - start;\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for(i = start; i < start + count; ++i){\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for(i = 0; i < active.length; ++i){\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset ? this.resolveDatasetElementOptions(mode) : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context || (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context || (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [\n `${elementType}Hover`,\n 'hover',\n elementType,\n ''\n ] : [\n elementType,\n ''\n ];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = ()=>this.getContext(index, active, mode);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || sharedOptions !== previouslySharedOptions;\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {\n sharedOptions,\n includeOptions\n };\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: !active && this.getSharedOptions(options) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList){\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr)=>{\n arr.length += count;\n for(i = arr.length - 1; i >= end; i--){\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for(i = start; i < end; ++i){\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([\n this.index,\n ...args\n ]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync([\n '_insertElements',\n this.getDataset().data.length - count,\n count\n ]);\n }\n _onDataPop() {\n this._sync([\n '_removeElements',\n this._cachedMeta.data.length - 1,\n 1\n ]);\n }\n _onDataShift() {\n this._sync([\n '_removeElements',\n 0,\n 1\n ]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync([\n '_removeElements',\n start,\n count\n ]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync([\n '_insertElements',\n start,\n newCount\n ]);\n }\n }\n _onDataUnshift() {\n this._sync([\n '_insertElements',\n 0,\n arguments.length\n ]);\n }\n}\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for(let i = 0, ilen = visibleMetas.length; i < ilen; i++){\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b)=>a - b));\n }\n return scale._cache.$bar;\n}\n function computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = ()=>{\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for(i = 0, ilen = values.length; i < ilen; ++i){\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for(i = 0, ilen = scale.ticks.length; i < ilen; ++i){\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\n function computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - size / 2\n };\n}\n function computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for(i = start, ilen = start + count; i < ilen; ++i){\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {\n start,\n end,\n reverse,\n top,\n bottom\n };\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {\n top: true,\n right: true,\n bottom: true,\n left: true\n };\n return;\n }\n const { start , end , reverse , top , bottom } = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, { inflateAmount }, ratio) {\n properties.inflateAmount = inflateAmount === 'auto' ? ratio === 1 ? 0.33 : 0 : inflateAmount;\n}\nclass BarController extends DatasetController {\n static id = 'bar';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'base',\n 'width',\n 'height'\n ]\n }\n }\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true\n }\n }\n };\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const { iScale , vScale } = meta;\n const { xAxisKey ='x' , yAxisKey ='y' } = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for(i = start, ilen = start + count; i < ilen; ++i){\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const { iScale , vScale } = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom) ? '[' + custom.start + ', ' + custom.end + ']' : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const { index , _cachedMeta: { vScale } } = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n for(let i = start; i < start + count; i++){\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {\n base,\n head: base\n } : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || index === stack._top || index === stack._bottom,\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const { iScale } = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type).filter((meta)=>meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = (meta)=>{\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets){\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === undefined && meta.stack === undefined) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = name !== undefined ? stacks.indexOf(name) : -1;\n return index === -1 ? stacks.length - 1 : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for(i = 0, ilen = meta.data.length; i < ilen; ++i){\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const { _cachedMeta: { vScale , _stacked , index: datasetIndex } , options: { base: baseValue , minBarLength } } = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n if (_stacked && !floating) {\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options, stackCount) : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + range.chunk * stackIndex + range.chunk / 2;\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for(; i < ilen; ++i){\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\n\nclass BubbleController extends DatasetController {\n static id = 'bubble';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'borderWidth',\n 'radius'\n ]\n }\n }\n };\n static overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for(let i = data.length - 1; i >= 0; --i){\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const { xScale , yScale } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale } = this._cachedMeta;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for(let i = start; i < start + count; i++){\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {\n $shared: false\n });\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b)=>_angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b)=>_angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {\n ratioX,\n ratioY,\n offsetX,\n offsetY\n };\n}\nclass DoughnutController extends DatasetController {\n static id = 'doughnut';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'circumference',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'startAngle',\n 'x',\n 'y',\n 'offset',\n 'borderWidth',\n 'spacing'\n ]\n }\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r'\n };\n static descriptors = {\n _scriptable: (name)=>name !== 'spacing',\n _indexable: (name)=>name !== 'spacing'\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels (chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const { labels: { pointStyle , color } } = chart.legend.options;\n return data.labels.map((label, i)=>{\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick (e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n };\n constructor(chart, datasetIndex){\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i)=>+data[i];\n if (isObject(data[start])) {\n const { key ='value' } = this._parsing;\n getter = (i)=>+resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for(i = start, ilen = start + count; i < ilen; ++i){\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for(let i = 0; i < this.chart.data.datasets.length; ++i){\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min\n };\n }\n update(mode) {\n const chart = this.chart;\n const { chartArea } = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const { circumference , rotation } = this._getRotationExtents();\n const { ratioX , ratioY , offsetX , offsetY } = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if (reset && opts.animation.animateRotate || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for(i = 0; i < start; ++i){\n startAngle += this._circumference(i, reset);\n }\n for(i = start; i < start + count; ++i){\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for(i = 0; i < metaData.length; i++){\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for(i = 0, ilen = chart.data.datasets.length; i < ilen; ++i){\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for(i = 0, ilen = arcs.length; i < ilen; ++i){\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for(let i = 0, ilen = arcs.length; i < ilen; ++i){\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for(let i = 0; i < datasetIndex; ++i){\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\n\nclass LineController extends DatasetController {\n static id = 'line';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category'\n },\n _value_: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const { dataset: line , data: points = [] , _dataset } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let { start , count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale , _stacked , _dataset } = this._cachedMeta;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const { spanGaps , segment } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n const end = start + count;\n const pointsCount = points.length;\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for(let i = 0; i < pointsCount; ++i){\n const point = points[i];\n const properties = directUpdate ? point : {};\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n const parsed = this.getParsed(i);\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\n\nclass PolarAreaController extends DatasetController {\n static id = 'polarArea';\n static defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ]\n }\n },\n indexAxis: 'r',\n startAngle: 0\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels (chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const { labels: { pointStyle , color } } = chart.legend.options;\n return data.labels.map((label, i)=>{\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick (e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n };\n constructor(chart, datasetIndex){\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n meta.data.forEach((element, index)=>{\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? outerRadius / 100 * opts.cutoutPercentage : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - radiusLength * this.index;\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for(i = 0; i < start; ++i){\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for(i = start; i < start + count; i++){\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index)=>{\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index) ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle) : 0;\n }\n}\n\nclass PieController extends DoughnutController {\n static id = 'pie';\n static defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n };\n}\n\nclass RadarController extends DatasetController {\n static id = 'radar';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n }\n };\n static overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear'\n }\n }\n };\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for(let i = start; i < start + count; i++){\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\n\nclass ScatterController extends DatasetController {\n static id = 'scatter';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n };\n static overrides = {\n interaction: {\n mode: 'point'\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const { xScale , yScale } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n update(mode) {\n const meta = this._cachedMeta;\n const { data: points = [] } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let { start , count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n const { dataset: line , _dataset } = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const { showLine } = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale , _stacked , _dataset } = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const { spanGaps , segment } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for(let i = start; i < start + count; ++i){\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for(let i = data.length - 1; i >= 0; --i){\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\n/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */ function abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */ class DateAdapterBase {\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */ static override(members) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n constructor(options){\n this.options = options || {};\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n formats() {\n return abstract();\n }\n parse() {\n return abstract();\n }\n format() {\n return abstract();\n }\n add() {\n return abstract();\n }\n diff() {\n return abstract();\n }\n startOf() {\n return abstract();\n }\n endOf() {\n return abstract();\n }\n}\nvar adapters = {\n _date: DateAdapterBase\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const { controller , data , _sorted } = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {\n lo: start.lo,\n hi: end.hi\n };\n }\n }\n }\n return {\n lo: 0,\n hi: data.length - 1\n };\n}\n function evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for(let i = 0, ilen = metasets.length; i < ilen; ++i){\n const { index , data } = metasets[i];\n const { lo , hi } = binarySearch(metasets[i], axis, value, intersect);\n for(let j = lo; j <= hi; ++j){\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\n function getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\n function getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n function getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const { startAngle , endAngle } = element.getProps([\n 'startAngle',\n 'endAngle'\n ], useFinalPosition);\n const { angle } = getAngleFromPoint(element, {\n x: position.x,\n y: position.y\n });\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n function getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [\n {\n element,\n datasetIndex,\n index\n }\n ];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n function getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n function getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index)=>{\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\n var Interaction = {\n evaluateInteractionItems,\n modes: {\n index (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta)=>{\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({\n element,\n datasetIndex: meta.index,\n index\n });\n }\n });\n return elements;\n },\n dataset (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for(let i = 0; i < data.length; ++i){\n items.push({\n element: data[i],\n datasetIndex,\n index: i\n });\n }\n }\n return items;\n },\n point (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = [\n 'left',\n 'top',\n 'right',\n 'bottom'\n];\nfunction filterByPosition(array, position) {\n return array.filter((v)=>v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter((v)=>STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b)=>{\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for(i = 0, ilen = (boxes || []).length; i < ilen; ++i){\n box = boxes[i];\n ({ position: pos , options: { stack , stackWeight =1 } } = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && pos + stack,\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts){\n const { stack , pos , stackWeight } = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {\n count: 0,\n placed: 0,\n weight: 0,\n size: 0\n });\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\n function setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const { vBoxMaxWidth , hBoxMaxHeight } = params;\n let i, ilen, layout;\n for(i = 0, ilen = layouts.length; i < ilen; ++i){\n layout = layouts[i];\n const { fullSize } = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter((wrap)=>wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const { pos , box } = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {\n size: 0,\n count: 1\n };\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal ? {\n same: widthChanged,\n other: heightChanged\n } : {\n same: heightChanged,\n other: widthChanged\n };\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n positions.forEach((pos)=>{\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal ? marginForPositions([\n 'left',\n 'right'\n ]) : marginForPositions([\n 'top',\n 'bottom'\n ]);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for(i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i){\n layout = boxes[i];\n box = layout.box;\n box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea));\n const { same , other } = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let { x , y } = chartArea;\n for (const layout of boxes){\n const box = layout.box;\n const stack = stacks[layout.stack] || {\n count: 1,\n placed: 0,\n weight: 1\n };\n const weight = layout.stackWeight / stack.weight || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height1 = chartArea.h * weight;\n const width1 = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width1, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width1, height1);\n }\n stack.start = x;\n stack.placed += height1;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\nvar layouts = {\n addBox (chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [\n {\n z: 0,\n draw (chartArea) {\n item.draw(chartArea);\n }\n }\n ];\n };\n chart.boxes.push(item);\n },\n removeBox (chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure (chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update (chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, (box)=>{\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap)=>wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w\n };\n each(boxes.chartArea, (layout)=>{\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n });\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\n const EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = (value)=>value === null || value === '';\n function initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {\n passive: true\n} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const { x , y } = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList){\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver((entries)=>{\n let trigger = false;\n for (const entry of entries){\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver((entries)=>{\n let trigger = false;\n for (const entry of entries){\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart)=>{\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height)=>{\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver((entries)=>{\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event)=>{\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n addListener(canvas, type, proxy);\n return proxy;\n}\n class DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n [\n 'height',\n 'width'\n ].forEach((prop)=>{\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key)=>{\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass Element {\n static defaults = {};\n static defaultRoutes = undefined;\n active = false;\n tooltipPosition(useFinalPosition) {\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return {\n x,\n y\n };\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this;\n }\n const ret = {};\n props.forEach((prop)=>{\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for(i = 0, ilen = numMajorIndices - 1; i < ilen; i++){\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n function calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for(let i = 0, ilen = factors.length - 1; i < ilen; i++){\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\n function getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\n function skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for(i = 0; i < ticks.length; i++){\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n function skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while(next < 0){\n count++;\n next = Math.round(start + count * spacing);\n }\n for(i = Math.max(start, 0); i < end; i++){\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n function getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for(diff = arr[0], i = 1; i < len; ++i){\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align)=>align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset)=>edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\n function sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for(; i < len; i += increment){\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\n function getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\n function garbageCollect(caches, length) {\n each(caches, (cache)=>{\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for(i = 0; i < gcLen; ++i){\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\n function getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n function getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return lines * font.lineHeight + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if (reverse && position !== 'right' || !reverse && position === 'right') {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const { top , left , bottom , right , chart } = scale;\n const { chartArea , scales } = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID1 = Object.keys(position)[0];\n const value1 = position[positionAxisID1];\n titleX = scales[positionAxisID1].getPixelForValue(value1) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n}\nclass Scale extends Element {\n constructor(cfg){\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let { _userMin , _userMax , _suggestedMin , _suggestedMax } = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let { min , max , minDefined , maxDefined } = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {\n min,\n max\n };\n }\n const metas = this.getMatchingVisibleMetas();\n for(let i = 0, ilen = metas.length; i < ilen; ++i){\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n getLabelItems(chartArea = this.chart.chartArea) {\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [\n this\n ]);\n }\n update(maxWidth, maxHeight, margins) {\n const { beginAtZero , grace , ticks: tickOpts } = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal() ? this.width + margins.left + margins.right : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [\n this\n ]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [\n this\n ]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [\n this\n ]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [\n this\n ]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [\n this\n ]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [\n tick.value,\n i,\n ticks\n ], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [\n this\n ]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [\n this\n ]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid) - tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)), Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [\n this\n ]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [\n this\n ]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const { chart , options: { ticks: tickOpts , title: titleOpts , grid: gridOpts } } = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const { first , last , widest , highest } = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const { ticks: { align , padding } , position } = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [\n this\n ]);\n }\n isHorizontal() {\n const { axis , position } = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const { ctx , _longestTextCache: caches } = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for(i = 0; i < length; ++i){\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {\n data: {},\n gc: []\n };\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for(j = 0, jlen = label.length; j < jlen; ++j){\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx)=>({\n width: widths[idx] || 0,\n height: heights[idx] || 0\n });\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const { min , max } = this;\n return min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context || (tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context || (this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const { grid , position , border } = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID1 = Object.keys(position)[0];\n const value1 = position[positionAxisID1];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID1].getPixelForValue(value1));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for(i = 0; i < ticksLength; i += step){\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const { position , ticks: optionTicks } = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const { align , crossAlign , padding , mirror } = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret1 = this._getYAxisLabelAlignment(tl);\n textAlign = ret1.textAlign;\n x = ret1.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = (chartArea.top + chartArea.bottom) / 2 + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = (chartArea.left + chartArea.right) / 2 - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID1 = Object.keys(position)[0];\n const value1 = position[positionAxisID1];\n x = this.chart.scales[positionAxisID1].getPixelForValue(value1);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for(i = 0, ilen = ticks.length; i < ilen; ++i){\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += lineHeight / 2 * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n switch(textBaseline){\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch(textAlign){\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor\n };\n }\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [\n x,\n y\n ],\n backdrop\n }\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const { position , ticks } = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const { position , ticks: { crossAlign , mirror , padding } } = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {\n textAlign,\n x\n };\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {\n top: 0,\n left: this.left,\n bottom: chart.height,\n right: this.right\n };\n }\n if (position === 'top' || position === 'bottom') {\n return {\n top: this.top,\n left: 0,\n bottom: this.bottom,\n right: chart.width\n };\n }\n }\n drawBackground() {\n const { ctx , options: { backgroundColor } , left , top , width , height } = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex((t)=>t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style)=>{\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for(i = 0, ilen = items.length; i < ilen; ++i){\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine({\n x: item.x1,\n y: item.y1\n }, {\n x: item.x2,\n y: item.y2\n }, item);\n }\n if (grid.drawTicks) {\n drawLine({\n x: item.tx1,\n y: item.ty1\n }, {\n x: item.tx2,\n y: item.ty2\n }, {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n });\n }\n }\n }\n }\n drawBorder() {\n const { chart , ctx , options: { border , grid } } = this;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this.getLabelItems(chartArea);\n for (const item of items){\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const { ctx , options: { position , title , reverse } } = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const { titleX , titleY , maxWidth , rotation } = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [\n titleX,\n titleY\n ]\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [\n {\n z: tz,\n draw: (chartArea)=>{\n this.draw(chartArea);\n }\n }\n ];\n }\n return [\n {\n z: gz,\n draw: (chartArea)=>{\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n },\n {\n z: bz,\n draw: ()=>{\n this.drawBorder();\n }\n },\n {\n z: tz,\n draw: (chartArea)=>{\n this.drawLabels(chartArea);\n }\n }\n ];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for(i = 0, ilen = metas.length; i < ilen; ++i){\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override){\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach((property)=>{\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [\n scope\n ].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor(){\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [\n this.controllers,\n this.scales,\n this.elements\n ];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [\n ...args\n ].forEach((arg)=>{\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || reg === this.plugins && arg.id) {\n this._exec(method, reg, arg);\n } else {\n each(arg, (item)=>{\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for(let i = 0; i < this._typedRegistries.length; i++){\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = /* #__PURE__ */ new Registry();\n\nclass PluginService {\n constructor(){\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors){\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [\n chart,\n args,\n descriptor.options\n ];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b)=>a.filter((x)=>!b.some((y)=>x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\n function allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for(let i = 0; i < keys.length; i++){\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for(let i1 = 0; i1 < local.length; i1++){\n const plugin = local[i1];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {\n plugins,\n localIds\n };\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, { plugins , localIds }, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins){\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {\n plugin,\n local: localIds[id]\n }, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, { plugin , local }, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [\n ''\n ], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n id = scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.length > 1 && determineAxis(id[0].toLowerCase(), scaleOptions);\n if (id) {\n return id;\n }\n throw new Error(`Cannot determine type of '${name}' axis. Please provide 'axis' or 'position' option.`);\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {\n scales: {}\n };\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n Object.keys(configScales).forEach((id)=>{\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [\n {\n axis\n },\n scaleConf,\n defaultScaleOptions[axis],\n defaultScaleOptions[defaultId]\n ]);\n });\n config.data.datasets.forEach((dataset)=>{\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach((defaultID)=>{\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [\n {\n axis\n },\n configScales[id],\n defaultScaleOptions[defaultID]\n ]);\n });\n });\n Object.keys(scales).forEach((key)=>{\n const scale = scales[key];\n mergeIf(scale, [\n defaults.scales[scale.type],\n defaults.scale\n ]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key)=>{\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config){\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType, ()=>[\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`, ()=>[\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`, ()=>[\n [\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]\n ]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`, ()=>[\n [\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || []\n ]\n ]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const { options , type } = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach((keys)=>{\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach((key)=>addIfFound(scopes, mainScope, key));\n }\n keys.forEach((key)=>addIfFound(scopes, options, key));\n keys.forEach((key)=>addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach((key)=>addIfFound(scopes, defaults, key));\n keys.forEach((key)=>addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const { options , type } = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {\n type\n },\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = [\n ''\n ]) {\n const result = {\n $shared: true\n };\n const { resolver , subPrefixes } = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names){\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [\n ''\n ], descriptorDefaults) {\n const { resolver } = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context) ? _attachContext(resolver, context, undefined, descriptorDefaults) : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter((p)=>!p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = (value)=>isObject(value) && Object.getOwnPropertyNames(value).reduce((acc, key)=>acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const { isScriptable , isIndexable } = _descriptors(proxy);\n for (const prop of names){\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if (scriptable && (isFunction(value) || hasFunction(value)) || indexable && isArray(value)) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"4.1.2\";\n\nconst KNOWN_POSITIONS = [\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'chartArea'\n];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x';\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [\n context\n ], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [\n context\n ], chart);\n}\n function getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key)=>{\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c)=>c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys){\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\n function determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nfunction getDatasetArea(meta) {\n const { xScale , yScale } = meta;\n if (xScale && yScale) {\n return {\n left: xScale.left,\n right: xScale.right,\n top: yScale.top,\n bottom: yScale.bottom\n };\n }\n}\nclass Chart {\n static defaults = defaults;\n static instances = instances;\n static overrides = overrides;\n static registry = registry;\n static version = version;\n static getChart = getChart;\n static register(...items) {\n registry.add(...items);\n invalidatePlugins();\n }\n static unregister(...items) {\n registry.remove(...items);\n invalidatePlugins();\n }\n constructor(item, userConfig){\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error('Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' + ' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.');\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce((mode)=>this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const { options: { aspectRatio , maintainAspectRatio } , width , height , _aspectRatio } = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n get registry() {\n return registry;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {\n width,\n height\n };\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {\n size: newSize\n });\n callback(options.onResize, [\n this,\n newSize\n ], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID)=>{\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id)=>{\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(Object.keys(scaleOpts).map((id)=>{\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n }));\n }\n each(items, (item)=>{\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id)=>{\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale)=>{\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b)=>a.index - b.index);\n if (numMeta > numData) {\n for(let i = numData; i < numMeta; ++i){\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const { _metasets: metasets , data: { datasets } } = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index)=>{\n if (datasets.filter((x)=>x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for(i = 0, ilen = datasets.length; i < ilen; i++){\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const { datasetElementType , dataElementType } = defaults.datasets[type];\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex)=>{\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; i++){\n const { controller } = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller)=>{\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {\n mode\n });\n this._layers.sort(compare2Level('z', '_idx'));\n const { _active , _lastEvent } = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale)=>{\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const { _hiddenIndices } = this;\n const changes = this._getUniformDataChanges() || [];\n for (const { method , start , count } of changes){\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx)=>new Set(_dataChanges.filter((c)=>c[0] === idx).map((c, i)=>i + ',' + c.splice(1).join(',')));\n const changeSet = makeSet(0);\n for(let i = 1; i < datasetCount; i++){\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet).map((c)=>c.split(',')).map((a)=>({\n method: a[1],\n start: +a[2],\n count: +a[3]\n }));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {\n cancelable: true\n }) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box)=>{\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index)=>{\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this.getDatasetMeta(i).controller.configure();\n }\n for(let i1 = 0, ilen1 = this.data.datasets.length; i1 < ilen1; ++i1){\n this._updateDataset(i1, isFunction(mode) ? mode({\n datasetIndex: i1\n }) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {\n mode\n });\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {\n meta,\n index,\n mode,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {\n cancelable: true\n }) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({\n chart: this\n });\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const { width , height } = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const layers = this._layers;\n for(i = 0; i < layers.length && layers[i].z <= 0; ++i){\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for(; i < layers.length; ++i){\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for(i = 0, ilen = metasets.length; i < ilen; ++i){\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for(let i = metasets.length - 1; i >= 0; --i){\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = getDatasetArea(meta) || this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter((x)=>x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {\n chart: this,\n type: 'chart'\n }));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {\n visible\n });\n this.update((ctx)=>ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for(i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const { canvas , ctx } = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener)=>{\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y)=>{\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type)=>_add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener)=>{\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener)=>{\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height)=>{\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = ()=>{\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = ()=>{\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type)=>{\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type)=>{\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for(i = 0, ilen = items.length; i < ilen; ++i){\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({ datasetIndex , index })=>{\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n isPluginEnabled(pluginId) {\n return this._plugins._cache.filter((p)=>p.plugin.id === pluginId).length === 1;\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b)=>a.filter((x)=>!b.some((y)=>x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin)=>(plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const { _active: lastActive = [] , options } = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [\n e,\n active,\n this\n ], this);\n if (isClick) {\n callback(options.onClick, [\n e,\n active,\n this\n ], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nfunction invalidatePlugins() {\n return each(Chart.instances, (chart)=>chart._plugins.invalidate());\n}\n\nfunction clipArc(ctx, element, endAngle) {\n const { startAngle , pixelMargin , x , y , outerRadius , innerRadius } = element;\n let angleMargin = pixelMargin / outerRadius;\n // Draw an inner border by clipping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, [\n 'outerStart',\n 'outerEnd',\n 'innerStart',\n 'innerEnd'\n ]);\n}\n/**\n * Parse border radius from the provided options\n */ function parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n // Outer limits are complicated. We want to compute the available angular distance at\n // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n //\n // If the borderRadius is large, that value can become negative.\n // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n // we know that the thickness term will dominate and compute the limits at that point\n const computeOuterLimit = (val)=>{\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit)\n };\n}\n/**\n * Convert (r, 𝜃) to (x, y)\n */ function rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta)\n };\n}\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n * Start End\n *\n * 1--->a--->2 Outer\n * / \\\n * 8 3\n * | |\n * | |\n * 7 4\n * \\ /\n * 6<---b<---5 Inner\n */ function pathArc(ctx, element, offset, spacing, end, circular) {\n const { x , y , startAngle: start , pixelMargin , innerRadius: innerR } = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n // When spacing is present, it is the same for all items\n // So we adjust the start and end angle of the arc such that\n // the distance is the same as it would be without the spacing\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? alpha * avNogSpacingRadius / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const { outerStart , outerEnd , innerStart , innerEnd } = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n // The first arc segments from point 1 to point a to point 2\n const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n // The corner segment from point 2 to point 3\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n // The line from point 3 to point 4\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n // The corner segment from point 4 to point 5\n if (innerEnd > 0) {\n const pCenter1 = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter1.x, pCenter1.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n // The inner arc from point 5 to point b to point 6\n const innerMidAdjustedAngle = (endAngle - innerEnd / innerRadius + (startAngle + innerStart / innerRadius)) / 2;\n ctx.arc(x, y, innerRadius, endAngle - innerEnd / innerRadius, innerMidAdjustedAngle, true);\n ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + innerStart / innerRadius, true);\n // The corner segment from point 6 to point 7\n if (innerStart > 0) {\n const pCenter2 = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter2.x, pCenter2.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n // The line from point 7 to point 8\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n // The corner segment from point 8 to point 1\n if (outerStart > 0) {\n const pCenter3 = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter3.x, pCenter3.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const { fullCircles , startAngle , circumference } = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for(let i = 0; i < fullCircles; ++i){\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawBorder(ctx, element, offset, spacing, circular) {\n const { fullCircles , startAngle , circumference , options } = element;\n const { borderWidth , borderJoinStyle } = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for(let i = 0; i < fullCircles; ++i){\n ctx.stroke();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\nclass ArcElement extends Element {\n static id = 'arc';\n static defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n const { angle , distance } = getAngleFromPoint(point, {\n x: chartX,\n y: chartY\n });\n const { startAngle , endAngle , innerRadius , outerRadius , circumference } = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return betweenAngles && withinRadius;\n }\n getCenterPoint(useFinalPosition) {\n const { x , y , startAngle , endAngle , innerRadius , outerRadius } = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const { offset , spacing } = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const { options , circumference } = this;\n const offset = (options.offset || 0) / 4;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = options.borderAlign === 'inner' ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n const radiusOffset = offset * fix;\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, circular);\n ctx.restore();\n }\n}\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const { start: paramsStart = 0 , end: paramsEnd = count - 1 } = params;\n const { start: segmentStart , end: segmentEnd } = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\n function pathSegment(ctx, line, segment, params) {\n const { points , options } = line;\n const { count , start , loop , ilen } = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let { move =true , reverse } = params || {};\n let i, point, prev;\n for(i = 0; i <= ilen; ++i){\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\n function fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const { count , start , ilen } = pathVars(points, segment, params);\n const { move =true , reverse } = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index)=>(start + (reverse ? ilen - index : index)) % count;\n const drawX = ()=>{\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for(i = 0; i <= ilen; ++i){\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\n function _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\n function _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const { segments , options } = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments){\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {\n start,\n end: start + count - 1\n })) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n static id = 'line';\n static defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n static descriptors = {\n _scriptable: true,\n _indexable: (name)=>name !== 'borderDash' && name !== 'fill'\n };\n constructor(cfg){\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {\n property,\n start: value,\n end: value\n });\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for(i = 0, ilen = segments.length; i < ilen; ++i){\n const { start , end } = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || this.points.length - start;\n for (const segment of segments){\n loop &= segmentMethod(ctx, this, segment, {\n start,\n end: start + count - 1\n });\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const { [axis]: value } = el.getProps([\n axis\n ], useFinalPosition);\n return Math.abs(pos - value) < options.radius + options.hitRadius;\n}\nclass PointElement extends Element {\n static id = 'point';\n /**\n * @type {any}\n */ static defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n };\n /**\n * @type {any}\n */ static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2) < Math.pow(options.hitRadius + options.radius, 2);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return {\n x,\n y\n };\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n // @ts-expect-error Fallbacks should never be hit in practice\n return options.radius + options.hitRadius;\n }\n}\n\nfunction getBarBounds(bar, useFinalPosition) {\n const { x , y , base , width , height } = bar.getProps([\n 'x',\n 'y',\n 'base',\n 'width',\n 'height'\n ], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {\n left,\n top,\n right,\n bottom\n };\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const { enableBorderRadius } = bar.getProps([\n 'enableBorderRadius'\n ]);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r))\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds && (skipX || _isBetween(x, bounds.left, bounds.right)) && (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n function addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n static id = 'bar';\n static defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const { inflateAmount , options: { borderColor , backgroundColor } } = this;\n const { inner , outer } = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const { x , y , base , horizontal } = this.getProps([\n 'x',\n 'y',\n 'base',\n 'horizontal'\n ], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nconst BORDER_COLORS = [\n 'rgb(54, 162, 235)',\n 'rgb(255, 99, 132)',\n 'rgb(255, 159, 64)',\n 'rgb(255, 205, 86)',\n 'rgb(75, 192, 192)',\n 'rgb(153, 102, 255)',\n 'rgb(201, 203, 207)' // grey\n];\n// Border colors with 50% transparency\nconst BACKGROUND_COLORS = /* #__PURE__ */ BORDER_COLORS.map((color)=>color.replace('rgb(', 'rgba(').replace(')', ', 0.5)'));\nfunction getBorderColor(i) {\n return BORDER_COLORS[i % BORDER_COLORS.length];\n}\nfunction getBackgroundColor(i) {\n return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length];\n}\nfunction colorizeDefaultDataset(dataset, i) {\n dataset.borderColor = getBorderColor(i);\n dataset.backgroundColor = getBackgroundColor(i);\n return ++i;\n}\nfunction colorizeDoughnutDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(()=>getBorderColor(i++));\n return i;\n}\nfunction colorizePolarAreaDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(()=>getBackgroundColor(i++));\n return i;\n}\nfunction getColorizer(chart) {\n let i = 0;\n return (dataset, datasetIndex)=>{\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n if (controller instanceof DoughnutController) {\n i = colorizeDoughnutDataset(dataset, i);\n } else if (controller instanceof PolarAreaController) {\n i = colorizePolarAreaDataset(dataset, i);\n } else if (controller) {\n i = colorizeDefaultDataset(dataset, i);\n }\n };\n}\nfunction containsColorsDefinitions(descriptors) {\n let k;\n for(k in descriptors){\n if (descriptors[k].borderColor || descriptors[k].backgroundColor) {\n return true;\n }\n }\n return false;\n}\nvar plugin_colors = {\n id: 'colors',\n defaults: {\n enabled: true,\n forceOverride: false\n },\n beforeLayout (chart, _args, options) {\n if (!options.enabled) {\n return;\n }\n const { options: { elements } , data: { datasets } } = chart.config;\n if (!options.forceOverride && (containsColorsDefinitions(datasets) || elements && containsColorsDefinitions(elements))) {\n return;\n }\n const colorizer = getColorizer(chart);\n datasets.forEach(colorizer);\n }\n};\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for(i = 0; i < samples - 2; i++){\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for(j = avgRangeStart; j < avgRangeEnd; j++){\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const { x: pointAx , y: pointAy } = data[a];\n maxArea = area = -1;\n for(j = rangeOffs; j < rangeTo; j++){\n area = 0.5 * Math.abs((pointAx - avgX) * (data[j].y - pointAy) - (pointAx - data[j].x) * (avgY - pointAy));\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for(i = start; i < start + count; ++i){\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {\n value: data\n });\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset)=>{\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const { iScale } = meta;\n const { min , max , minDefined , maxDefined } = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {\n start,\n count\n };\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false\n },\n beforeElementsUpdate: (chart, args, options)=>{\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex)=>{\n const { _data , indexAxis } = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([\n indexAxis,\n chart.options.indexAxis\n ]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let { start , count } = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch(options.algorithm){\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy (chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments){\n let { start , end } = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments){\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources){\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {\n property,\n start,\n end\n };\n}\nfunction _pointsFromSegments(boundary, line) {\n const { x =null , y =null } = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({ start , end })=>{\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({\n x: first.x,\n y\n });\n points.push({\n x: last.x,\n y\n });\n } else if (x !== null) {\n points.push({\n x,\n y: first.y\n });\n points.push({\n x,\n y: last.y\n });\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for(; end > start; end--){\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {\n tension: 0\n },\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [\n index\n ];\n let target;\n if (!propagate) {\n return fill;\n }\n while(fill !== false && visited.indexOf(fill) === -1){\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\n function _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return [\n 'origin',\n 'start',\n 'end',\n 'stack',\n 'shape'\n ].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\n function _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\n function _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\n function parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const { scale , index , line } = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({\n x: null,\n y: scale.bottom\n }, line));\n for(let i = 0; i < segments.length; i++){\n const segment = segments[i];\n for(let j = segment.start; j <= segment.end; j++){\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({\n points,\n options: {}\n });\n}\n function getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for(let i = 0; i < metas.length; i++){\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\n function addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for(let j = 0; j < linesBelow.length; j++){\n const line = linesBelow[j];\n const { first , last , point } = findPoint(line, sourcePoint, 'x');\n if (!point || first && last) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\n function findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for(let i = 0; i < segments.length; i++){\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {\n first,\n last,\n point\n };\n}\n\nclass simpleArc {\n constructor(opts){\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const { x , y , radius } = this;\n bounds = bounds || {\n start: 0,\n end: TAU\n };\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const { x , y , radius } = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n\nfunction _getTarget(source) {\n const { chart , fill , line } = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\n function getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const { scale ={} , fill } = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const { scale , fill } = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for(let i = 0; i < length; ++i){\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const { line , scale , axis } = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const { above =color , below =color } = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {\n line,\n target,\n above,\n below,\n area,\n scale,\n axis\n });\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const { line , target , above , below , area , scale } = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {\n line,\n target,\n color: above,\n scale,\n property\n });\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {\n line,\n target,\n color: below,\n scale,\n property\n });\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const { segments , points } = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments){\n const { start , end } = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {\n move: lineLoop\n });\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const { line , target , property , color , scale } = cfg;\n const segments = _segments(line, target, property);\n for (const { source: src , target: tgt , start , end } of segments){\n const { style: { backgroundColor =color } = {} } = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {\n move: lineLoop,\n reverse: true\n });\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const { top , bottom } = scale.chart.chartArea;\n const { property , start , end } = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate (chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for(i = 0; i < count; ++i){\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for(i = 0; i < count; ++i){\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw (chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for(let i = metasets.length - 1; i >= 0; --i){\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw (chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for(let i = metasets.length - 1; i >= 0; --i){\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw (chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize)=>{\n let { boxHeight =fontSize , boxWidth =fontSize } = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b)=>a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config){\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [\n this.chart\n ], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item)=>labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b)=>labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const { options , ctx } = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const { boxWidth , itemHeight } = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const { ctx , maxWidth , options: { labels: { padding } } } = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [\n 0\n ];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i)=>{\n const itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {\n left: 0,\n top,\n row,\n width: itemWidth,\n height: itemHeight\n };\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n const { ctx , maxHeight , options: { labels: { padding } } } = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i)=>{\n const { itemWidth , itemHeight } = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {\n left,\n top: currentColHeight,\n col,\n width: itemWidth,\n height: itemHeight\n };\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const { legendHitBoxes: hitboxes , options: { align , labels: { padding } , rtl } } = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes){\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox1 of hitboxes){\n if (hitbox1.col !== col) {\n col = hitbox1.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox1.top = top;\n hitbox1.left += this.left + padding;\n hitbox1.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox1.left), hitbox1.width);\n top += hitbox1.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const { options: opts , columnSizes , lineWidths , ctx } = this;\n const { align , labels: labelOpts } = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const { padding } = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const { boxWidth , boxHeight , itemHeight } = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + itemHeight / 2, labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i)=>{\n ctx.strokeStyle = legendItem.fontColor;\n ctx.fillStyle = legendItem.fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n const fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight);\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size)=>Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right) && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for(i = 0; i < lh.length; ++i){\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width) && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [\n e,\n previous,\n this\n ], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [\n e,\n hoveredItem,\n this\n ], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [\n e,\n hoveredItem,\n this\n ], this);\n }\n }\n}\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {\n itemWidth,\n itemHeight\n };\n}\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n let legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce((a, b)=>a.length > b.length ? a : b);\n }\n return boxWidth + labelFont.size / 2 + ctx.measureText(legendItemText).width;\n}\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n let itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n const labelHeight = legendItem.text ? legendItem.text.length + 0.5 : 0;\n return fontLineHeight * labelHeight;\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start (chart, _args, options) {\n const legend = chart.legend = new Legend({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop (chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate (chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate (chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent (chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick (e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx)=>ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels (chart) {\n const datasets = chart.data.datasets;\n const { labels: { usePointStyle , pointStyle , textAlign , color , useBorderRadius , borderRadius } } = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta)=>{\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx)=>ctx.chart.options.color,\n display: false,\n position: 'center',\n text: ''\n }\n },\n descriptors: {\n _scriptable: (name)=>!name.startsWith('on'),\n labels: {\n _scriptable: (name)=>![\n 'generateLabels',\n 'filter',\n 'sort'\n ].includes(name)\n }\n }\n};\n\nclass Title extends Element {\n constructor(config){\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const { top , left , bottom , right , options } = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const { titleX , titleY , maxWidth , rotation } = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [\n titleX,\n titleY\n ]\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start (chart, _args, options) {\n createTitle(chart, options);\n },\n stop (chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate (chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold'\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start (chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop (chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate (chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal'\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\n\nconst positioners = {\n average (items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for(i = 0, len = items.length; i < len; ++i){\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest (items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for(i = 0, len = items.length; i < len; ++i){\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\n function splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\n function createTooltipItem(chart, item) {\n const { element , datasetIndex , index } = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const { label , value } = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\n function getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const { body , footer , title } = tooltip;\n const { boxWidth , boxHeight } = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem)=>count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight + (titleLineCount - 1) * options.titleSpacing + options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight + (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight + (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop + footerLineCount * footerFont.lineHeight + (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? boxWidth + 2 + options.boxPadding : 0;\n each(body, (bodyItem)=>{\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {\n width,\n height\n };\n}\nfunction determineYAlign(chart, size) {\n const { y , height } = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > chart.height - height / 2) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const { x , width } = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const { x , width } = size;\n const { width: chartWidth , chartArea: { left , right } } = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\n function determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let { x , width } = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= width / 2;\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let { y , height } = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= height / 2;\n }\n return y;\n}\n function getBackgroundPoint(options, size, alignment, chart) {\n const { caretSize , caretPadding , cornerRadius } = options;\n const { xAlign , yAlign } = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center' ? tooltip.x + tooltip.width / 2 : align === 'right' ? tooltip.x + tooltip.width - padding.right : tooltip.x + padding.left;\n}\n function getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nconst defaultCallbacks = {\n beforeTitle: noop,\n title (tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label (tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor (tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0\n };\n },\n labelTextColor () {\n return this.options.bodyColor;\n },\n labelPointStyle (tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\n function invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n return result;\n}\nclass Tooltip extends Element {\n static positioners = positioners;\n constructor(config){\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context || (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const { callbacks } = options;\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems));\n }\n getBody(tooltipItems, options) {\n const { callbacks } = options;\n const bodyItems = [];\n each(tooltipItems, (context)=>{\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems));\n }\n getFooter(tooltipItems, options) {\n const { callbacks } = options;\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for(i = 0, len = active.length; i < len; ++i){\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array)=>options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b)=>options.itemSort(a, b, data));\n }\n each(tooltipItems, (context)=>{\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {\n chart: this.chart,\n tooltip: this,\n replay\n });\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const { xAlign , yAlign } = this;\n const { caretSize , cornerRadius } = options;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(cornerRadius);\n const { x: ptX , y: ptY } = tooltipPoint;\n const { width , height } = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + height / 2;\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {\n x1,\n x2,\n x3,\n y1,\n y2,\n y3\n };\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for(i = 0; i < length; ++i){\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const { boxHeight , boxWidth , boxPadding } = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : labelColors.borderWidth || 1;\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const { body } = this;\n const { bodySpacing , bodyAlign , displayColors , boxHeight , boxWidth , boxPadding } = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right' ? bodyAlign === 'center' ? boxWidth / 2 + boxPadding : boxWidth + 2 + boxPadding : 0;\n for(i = 0, ilen = body.length; i < ilen; ++i){\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for(j = 0, jlen = lines.length; j < jlen; ++j){\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for(i = 0; i < length; ++i){\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const { xAlign , yAlign } = this;\n const { x , y } = pt;\n const { width , height } = tooltipSize;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({ datasetIndex , index })=>{\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const { caretX , caretY , options } = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit (chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({\n chart,\n options\n });\n }\n },\n beforeUpdate (chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset (chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw (chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', {\n ...args,\n cancelable: true\n }) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent (chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold'\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {},\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold'\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts)=>opts.bodyFont.size,\n boxWidth: (ctx, opts)=>opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart'\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'width',\n 'height',\n 'caretX',\n 'caretY'\n ]\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name)=>name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: [\n 'interaction'\n ]\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nColors: plugin_colors,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels)=>{\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({\n index,\n label: raw\n });\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max)=>index === null ? null : _limitValue(Math.round(index), 0, max);\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\nclass CategoryScale extends Scale {\n static id = 'category';\n static defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n };\n constructor(cfg){\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const { index , label } of added){\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const { minDefined , maxDefined } = this.getUserBounds();\n let { min , max } = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = min === 0 && max === labels.length - 1 ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for(let value = min; value <= max; value++){\n ticks.push({\n value\n });\n }\n return ticks;\n }\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const { bounds , step , min , max , precision , count , maxTicks , maxDigits , includeBounds } = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const { min: rmin , max: rmax } = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [\n {\n value: rmin\n },\n {\n value: rmax\n }\n ];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(_decimalPlaces(spacing), _decimalPlaces(niceMin));\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({\n value: min\n });\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for(; j < numSpaces; ++j){\n ticks.push({\n value: Math.round((niceMin + j * spacing) * factor) / factor\n });\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({\n value: max\n });\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({\n value: niceMax\n });\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, { horizontal , minRotation }) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg){\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const { beginAtZero } = this.options;\n const { minDefined , maxDefined } = this.getUserBounds();\n let { min , max } = this;\n const setMin = (v)=>min = minDefined ? min : v;\n const setMax = (v)=>max = maxDefined ? max : v;\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let { maxTicksLimit , stepSize } = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n static id = 'linear';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n };\n determineDataLimits() {\n const { min , max } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\n\nconst log10Floor = (v)=>Math.floor(log10(v));\nconst changeExponent = (v, m)=>Math.pow(10, log10Floor(v) + m);\nfunction isMajor(tickVal) {\n const remain = tickVal / Math.pow(10, log10Floor(tickVal));\n return remain === 1;\n}\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while(steps(min, max, rangeExp) > 10){\n rangeExp++;\n }\n while(steps(min, max, rangeExp) < 10){\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\n function generateTicks(generationOptions, { min , max }) {\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while(value < max){\n ticks.push({\n value,\n major: isMajor(value),\n significand\n });\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({\n value: lastTick,\n major: isMajor(lastTick),\n significand\n });\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n static id = 'logarithmic';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n };\n constructor(cfg){\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [\n raw,\n index\n ]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const { min , max } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n if (this._zero && this.min !== this._suggestedMin && !isNumberFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const { minDefined , maxDefined } = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = (v)=>min = minDefined ? min : v;\n const setMax = (v)=>max = maxDefined ? max : v;\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n setMax(changeExponent(min, +1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined ? '0' : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min ? 0 : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [\n label\n ];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - size / 2,\n end: pos + size / 2\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\n function fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for(let i = 0; i < valueCount; i++){\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(orig.l - limits.l, limits.r - orig.r, orig.t - limits.t, limits.b - orig.b);\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for(let i = 0; i < valueCount; i++){\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= w / 2;\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= h / 2;\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const { ctx , options: { pointLabels } } = scale;\n for(let i = labelCount - 1; i >= 0; i--){\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const { x , y , textAlign , left , top , right , bottom } = scale._pointLabelItems[i];\n const { backdropColor } = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n renderText(ctx, scale._pointLabels[i], x, y + plFont.lineHeight / 2, plFont, {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n });\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const { ctx } = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for(let i = 1; i < labelCount; i++){\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const { color , lineWidth } = gridLineOpts;\n if (!circular && !labelCount || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash);\n ctx.lineDashOffset = borderOpts.dashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n static id = 'radialLinear';\n static defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback (label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n };\n static defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n };\n static descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n };\n constructor(cfg){\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const { min , max } = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels().map((value, index)=>{\n const label = callback(this.options.pointLabels.callback, [\n value,\n index\n ], this);\n return label || label === 0 ? label : '';\n }).filter((v, i)=>this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const { left , top , right , bottom } = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom\n };\n }\n drawBackground() {\n const { backgroundColor , grid: { circular } } = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const { angleLines , grid , border } = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index)=>{\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for(i = labelCount - 1; i >= 0; i--){\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const { color , lineWidth } = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index)=>{\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(-width / 2 - padding.left, -offset - tickFont.size / 2 - padding.top, width + padding.width, tickFont.size + padding.height);\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\n\nconst INTERVALS = {\n millisecond: {\n common: true,\n size: 1,\n steps: 1000\n },\n second: {\n common: true,\n size: 1000,\n steps: 60\n },\n minute: {\n common: true,\n size: 60000,\n steps: 60\n },\n hour: {\n common: true,\n size: 3600000,\n steps: 24\n },\n day: {\n common: true,\n size: 86400000,\n steps: 30\n },\n week: {\n common: false,\n size: 604800000,\n steps: 4\n },\n month: {\n common: true,\n size: 2.628e9,\n steps: 12\n },\n quarter: {\n common: false,\n size: 7.884e9,\n steps: 4\n },\n year: {\n common: true,\n size: 3.154e10\n }\n};\n const UNITS = /* #__PURE__ */ Object.keys(INTERVALS);\n function sorter(a, b) {\n return a - b;\n}\n function parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const { parser , round , isoWeekday } = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string' ? adapter.parse(value, parser) : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true) ? adapter.startOf(value, 'isoWeek', isoWeekday) : adapter.startOf(value, round);\n }\n return +value;\n}\n function determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for(let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i){\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\n function determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for(let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--){\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n function determineMajorUnit(unit) {\n for(let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i){\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\n function addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const { lo , hi } = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\n function setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for(major = first; major <= last; major = +adapter.add(major, 1, majorUnit)){\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\n function ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for(i = 0; i < ilen; ++i){\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n static id = 'time';\n static defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n callback: false,\n major: {\n enabled: false\n }\n }\n };\n constructor(props){\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts = {}) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let { min , max , minDefined , maxDefined } = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {\n min,\n max\n };\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min)) : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map((tick)=>+tick.value));\n }\n }\n initOffsets(timestamps = []) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {\n start,\n end,\n factor: 1 / (start + 1 + end)\n };\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for(time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++){\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b)=>a - b).map((x)=>+x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n if (formatter) {\n return callback(formatter, [\n time,\n index,\n ticks\n ], this);\n }\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for(i = 0, ilen = ticks.length; i < ilen; ++i){\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: tickLabelWidth * cosRotation + tickFontSize * sinRotation,\n h: tickLabelWidth * sinRotation + tickFontSize * cosRotation\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [\n exampleTime\n ], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return this._cache.data = metas[0].controller.getAllParsedValues(this);\n }\n for(i = 0, ilen = metas.length; i < ilen; ++i){\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return this._cache.data = this.normalize(timestamps);\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for(i = 0, ilen = labels.length; i < ilen; ++i){\n timestamps.push(parse(this, labels[i]));\n }\n return this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps);\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({ lo , hi } = _lookupByKey(table, 'pos', val));\n }\n ({ pos: prevSource , time: prevTarget } = table[lo]);\n ({ pos: nextSource , time: nextTarget } = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({ lo , hi } = _lookupByKey(table, 'time', val));\n }\n ({ time: prevSource , pos: prevTarget } = table[lo]);\n ({ time: nextSource , pos: nextTarget } = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n static id = 'timeseries';\n static defaults = TimeScale.defaults;\n constructor(props){\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const { min , max } = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for(i = 0, ilen = timestamps.length; i < ilen; ++i){\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {\n time: min,\n pos: 0\n },\n {\n time: max,\n pos: 1\n }\n ];\n }\n for(i = 0, ilen = items.length; i < ilen; ++i){\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({\n time: curr,\n pos: i / (ilen - 1)\n });\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, plugin_colors as Colors, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n//# sourceMappingURL=chart.js.map\n"],"names":["animator","constructor","_request","_charts","Map","_running","_lastDate","undefined","_notify","chart","anims","date","type","callbacks","listeners","numSteps","duration","forEach","fn","initial","currentStep","Math","min","start","_refresh","_chunks_helpers_segment_js__WEBPACK_IMPORTED_MODULE_0__","r","call","window","_update","Date","now","remaining","item","running","items","length","i","draw","_active","_total","tick","pop","_getAnims","charts","get","complete","progress","set","listen","event","cb","push","add","has","reduce","acc","cur","max","_duration","stop","cancel","remove","delete","transparent","interpolators","boolean","from","to","factor","color","c0","c","c1","valid","mix","hexString","number","Animation","cfg","target","prop","currentValue","a","_fn","_easing","e","easing","linear","_start","floor","delay","_loop","loop","_target","_prop","_from","_to","_promises","active","update","elapsed","remain","wait","promises","Promise","res","rej","resolved","method","Animations","config","_chart","_properties","configure","animationOptions","Object","keys","d","animation","animatedProps","getOwnPropertyNames","key","option","b","properties","_animateOptions","values","newOptions","options","resolveTargetOptions","$shared","assign","$animations","animations","_createAnimations","awaitAll","anim","all","then","props","charAt","value","size","scaleClip","scale","allowedOverflow","opts","reverse","end","getSortedDatasetIndices","filterVisible","ilen","metasets","_getSortedDatasetMetas","index","applyStack","stack","dsIndex","datasetIndex","otherValue","singleMode","mode","g","s","isStacked","meta","stacked","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","parsed","_cachedMeta","stacks","_stacks","iScale","iAxis","axis","vAxis","indexScale","id","valueScale","itemStacks","getOrCreateStack","stackKey","indexValue","subStack","_top","_bottom","visualValues","_visualValues","getFirstScaleId","scales","filter","shift","clearStacks","_parsed","isDirectUpdateMode","cloneIfNotShared","cached","shared","createStack","canStack","hidden","_stacked","DatasetController","defaults","datasetElementType","dataElementType","_ctx","ctx","_cachedDataOpts","getMeta","_type","_parsing","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","initialize","linkScales","addElements","fill","isPluginEnabled","console","warn","updateIndex","dataset","getDataset","chooseId","x","y","xid","xAxisID","v","yid","yAxisID","rid","rAxisID","indexAxis","iid","iAxisID","vid","vAxisID","xScale","getScaleForId","yScale","rScale","data","datasets","getDatasetMeta","scaleID","_getOtherScale","reset","_destroy","u","_dataCheck","convertObjectDataToArray","adata","isExtensible","l","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","scopes","getOptionScopes","createResolver","getContext","parsing","parse","count","sorted","_sorted","prev","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","xAxisKey","yAxisKey","f","getParsed","getDataElement","updateRangeFromParsed","range","parsedValue","NaN","getMinMax","otherScale","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","otherMin","otherMax","getUserBounds","minDefined","maxDefined","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","label","getLabelForValue","t","_clip","clip","defaultClip","top","right","bottom","left","disabled","elements","area","chartArea","drawActiveElementsOnTop","element","getStyle","resolveDatasetElementOptions","resolveDataElementOptions","parent","context","j","dataIndex","raw","_resolveElementOptions","elementType","cache","cacheKey","sharing","h","datasetElementScopeKeys","prefixes","names","resolveNamedOptions","freeze","_resolveAnimations","transition","datasetAnimationScopeKeys","_cacheable","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","arr","updateElements","removed","splice","_sync","args","_dataChanges","_onDataPush","arguments","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","parseValue","entry","parseFloatBar","startValue","endValue","barStart","barEnd","abs","_custom","parseArrayOrPrimitive","isFloatBar","custom","parseEdge","edge","orig","startEnd","DoughnutController","animateRotate","animateScale","numbers","cutout","rotation","circumference","radius","spacing","descriptors","_scriptable","name","_indexable","overrides","aspectRatio","plugins","legend","generateLabels","pointStyle","map","style","text","fillStyle","backgroundColor","strokeStyle","borderColor","fontColor","lineWidth","borderWidth","getDataVisibility","onClick","legendItem","toggleDataVisibility","innerRadius","outerRadius","offsetX","offsetY","getter","_getRotation","_getCircumference","_getRotationExtents","T","isDatasetVisible","arcs","getMaxBorderWidth","getMaxOffset","maxSize","width","height","m","chartWeight","_getRingWeight","ratioX","ratioY","getRatioAndOffset","endAngle","startAngle","startX","cos","startY","sin","endX","endY","calcMax","angle","p","calcMin","maxX","maxY","H","minX","P","minY","maxWidth","maxHeight","n","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","_circumference","calculateCircumference","animationOpts","centerX","centerY","arc","metaData","isNaN","o","locale","borderAlign","hoverBorderWidth","offset","hoverOffset","ringWeightOffset","weight","PolarAreaController","angleLines","display","beginAtZero","grid","circular","pointLabels","bind","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","controllers","__proto__","BarController","categoryPercentage","barPercentage","grouped","_index_","_value_","obj","iAxisKey","vAxisKey","bars","base","getBasePixel","horizontal","isHorizontal","ruler","_getRuler","vpixels","k","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","enableBorderRadius","center","setBorderSkipped","borderSkipped","setInflateAmount","inflateAmount","ratio","_getStacks","last","skipNull","val","indexOf","_getStackCount","_getStackIndex","pixels","getPixelForValue","barThickness","computeMinSampleSize","curr","getAllScaleValues","_cache","$bar","visibleMetas","concat","_","sort","_length","updateMinAndPrev","ticks","getPixelForTick","_startPixel","_endPixel","stackCount","baseValue","minBarLength","actualBase","floating","startPixel","getPixelForDecimal","endPixel","getValueForPixel","halfGrid","getLineWidthForValue","maxBarThickness","Infinity","computeFlexCategoryTraits","next","percent","chunk","computeFitCategoryTraits","thickness","stackIndex","rects","BubbleController","points","point","iPixel","vPixel","skip","LineController","showLine","spanGaps","line","_dataset","animationsDisabled","q","w","_datasetIndex","_decimated","segment","animated","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","border","firstPoint","lastPoint","updateControlPoints","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","ScatterController","interaction","registry","getElement","abstract","DateAdapterBase","override","members","prototype","init","formats","format","diff","startOf","endOf","adapters","_date","evaluateInteractionItems","position","handler","intersect","getSortedVisibleDatasetMetas","lo","hi","binarySearch","metaset","lookupMethod","_reversePixels","A","B","el","getRange","getIntersectItems","useFinalPosition","includeInvisible","isPointInArea","C","inRange","getNearestItems","getNearestCartesianItems","distanceMetric","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","sqrt","pow","minDistance","getCenterPoint","pointInArea","distance","getProps","D","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","z","nearest","STATIC_POSITIONS","filterByPosition","array","pos","filterDynamicPositionByAxis","box","sortByWeight","v0","v1","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","fitBoxes","boxes","params","layout","refit","changed","refitBoxes","getMargins","positions","margin","same","other","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","fullSize","setBoxDims","placeBoxes","userPadding","padding","placed","stackWeight","height1","width1","layouts","addBox","_layers","removeBox","layoutItem","minPadding","E","availableWidth","availableHeight","buildLayoutBoxes","layoutBoxes","wrapBoxes","wrap","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","verticalBoxes","horizontalBoxes","F","beforeLayout","visibleVerticalBoxCount","vBoxMaxWidth","hBoxMaxHeight","setLayoutDims","buildStacks","includes","_stack","handleMaxPadding","updatePos","change","BasePlatform","acquireContext","canvas","releaseContext","addEventListener","listener","removeEventListener","getDevicePixelRatio","getMaximumSize","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","K","passive","removeListener","nodeListContains","nodeList","node","contains","createAttachObserver","observer","MutationObserver","trigger","entries","addedNodes","removedNodes","observe","document","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","devicePixelRatio","resize","currentDevicePixelRatio","createResizeObserver","container","I","L","clientWidth","ResizeObserver","contentRect","releaseObserver","disconnect","createProxyAndListen","proxy","fromNativeEvent","native","addListener","DomPlatform","initCanvas","renderHeight","getAttribute","renderWidth","boxSizing","displayWidth","J","displayHeight","removeAttribute","setAttribute","proxies","$proxies","handlers","attach","detach","G","isConnected","Element","defaultRoutes","tooltipPosition","hasValue","final","ret","newTicks","majorStart","majorEnd","ceil","round","reverseAlign","align","offsetFromEdge","sample","numItems","result","increment","len","getTickMarkLength","drawTicks","tickLength","getTitleHeight","fallback","font","a0","lines","lineHeight","Scale","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_maxLength","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","setContext","suggestedMin","suggestedMax","O","metas","getTicks","xLabels","yLabels","getLabelItems","_computeLabelItems","beforeUpdate","Q","margins","grace","tickOpts","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","R","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","autoSkip","source","determinedMaxTicks","determineMaxTicks","_tickSize","maxScale","maxChart","ticksLimit","maxTicksLimit","majorIndices","major","enabled","getMajorIndices","numMajorIndices","first","skipMajors","calculateSpacing","evenMajorSpacing","getEvenSpacing","factors","N","avgMajorSpacing","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","callback","afterTickToLabelConversion","tickWidth","maxLabelDiagonal","numTicks","minRotation","maxRotation","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","S","title","U","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","mirror","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","isFullSize","_computeLabelSizes","jlen","tickFont","fontString","nestedLabel","caches","widths","heights","widestLabelSize","highestLabelSize","_resolveTickFontOptions","string","gc","V","gcLen","valueAt","idx","pixel","decimal","W","X","getDecimalForPixel","getBaseValue","optionTicks","rot","autoSkipPadding","_computeGridLineItems","borderValue","lineValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","positionAxisID","positionAxisID1","value1","limit","step","optsAtIndex","optsAtIndexBorder","lineColor","borderDash","dash","borderDashOffset","dashOffset","tickColor","tickBorderDash","tickBorderDashOffset","getPixelForGridLine","offsetGridLines","validIndex","textAlign","lineCount","textOffset","crossAlign","tickAndPadding","hTickAndPadding","textBaseline","_getXAxisLabelAlignment","_getYAxisLabelAlignment","ret1","backdrop","labelOffset","halfCount","strokeColor","textStrokeColor","strokeWidth","textStrokeWidth","tickTextAlign","showLabelBackdrop","labelPadding","backdropPadding","backdropColor","translation","_computeLabelArea","drawBackground","save","fillRect","restore","findIndex","drawGrid","drawLine","p1","p2","setLineDash","lineDashOffset","beginPath","moveTo","lineTo","stroke","drawOnChartArea","drawBorder","lastLineWidth","drawLabels","Y","renderTextOptions","Z","$","drawTitle","titleX","titleY","titleArgs","a2","a1","tz","gz","bz","axisID","_maxDigits","fontSize","TypedRegistry","scope","create","isForType","isPrototypeOf","register","parentScope","proto","getPrototypeOf","registerDefaults","itemDefaults","a4","routeDefaults","routes","propertyParts","property","split","sourceName","sourceScope","join","parts","targetName","targetScope","route","describe","unregister","a3","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","_get","getPlugin","getScale","removeControllers","removeElements","removePlugins","removeScales","typedRegistry","reg","_getRegistryForType","arg","_exec","itemReg","component","camelMethod","a5","PluginService","_init","notify","hook","_createDescriptors","_descriptors","descriptor","plugin","cancelable","invalidate","_oldCache","_notifyStateChanges","allPlugins","localIds","local","i1","createDescriptors","pluginOpts","pluginScopeKeys","scriptable","indexable","allKeys","previousDescriptors","some","getIndexAxis","datasetDefaults","datasetOptions","determineAxis","scaleOptions","toLowerCase","initOptions","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","scaleConf","error","_proxy","defaultScaleOptions","ab","defaultID","initData","keyCache","keysCached","Set","cachedKeys","generate","addIfFound","Config","_config","_scopeCache","_resolverCache","platform","clearCache","clear","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","a6","Array","chartOptionScopes","resolver","subPrefixes","getResolver","needContext","isScriptable","isIndexable","aa","a7","hasFunction","subResolver","a8","descriptorDefaults","resolverCache","a9","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","M","getElementById","instances","getChart","Chart","version","invalidatePlugins","userConfig","initialCanvas","existingChart","OffscreenCanvas","ac","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","ad","resizeDelay","_initialize","maintainAspectRatio","responsive","ae","bindEvents","af","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","render","ensureScalesHaveIDs","scalesOptions","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","scaleClass","hasUpdated","_updateMetasets","_destroyDatasetMeta","slice","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","order","visible","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","autoPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","events","ag","unbindEvents","changes","_getUniformDataChanges","moveNumericKeys","intKey","datasetCount","makeSet","changeSet","noArea","_idx","ilen1","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getDatasetArea","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","hide","show","_stop","destroy","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","detached","_remove","updateHoverStyle","prefix","getActiveElements","setActiveElements","activeElements","lastActive","ah","pluginId","replay","hoverOptions","hover","deactivated","activated","inChartArea","eventFilter","_handleEvent","lastEvent","_getActiveElements","isClick","ai","onHover","rThetaToXY","theta","pathArc","pixelMargin","innerR","spacingOffset","alpha","avNogSpacingRadius","noSpacingInnerRadius","beta","angleOffset","outerStart","outerEnd","innerStart","innerEnd","parseBorderRadius$1","angleDelta","borderRadius","ak","halfThickness","innerLimit","computeOuterLimit","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","outerMidAdjustedAngle","pCenter","p4","pCenter1","PI","innerMidAdjustedAngle","pCenter2","p8","pCenter3","closePath","setStyle","lineCap","borderCapStyle","lineJoin","borderJoinStyle","previous","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","pathSegment","lineMethod","stepped","ar","tension","cubicInterpolationMode","as","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","useFastPath","usePath2D","Path2D","LineElement","capBezierPoints","_path","_points","_segments","_pointsUpdated","al","segments","am","interpolate","an","_interpolate","ao","ap","aq","interpolated","segmentMethod","path","strokePathDirect","inRange$1","hitRadius","getBarBounds","bar","half","skipOrLimit","skipX","skipY","bounds","aj","addNormalRectPath","rect","inflateRect","amount","refRect","ArcElement","fullCircles","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","translate","fix","radiusOffset","drawArc","inner","clipArc","angleMargin","PointElement","hoverRadius","mouseX","mouseY","inXRange","inYRange","at","BarElement","outer","boundingRects","parseBorderWidth","maxW","maxH","av","parseBorderRadius","aw","maxR","enableBorder","topLeft","topRight","bottomLeft","bottomRight","addRectPath","hasRadius","au","BORDER_COLORS","BACKGROUND_COLORS","replace","getBorderColor","getBackgroundColor","containsColorsDefinitions","cleanDecimatedDataset","defineProperty","cleanDecimatedData","_getBounds","ay","_findSegmentEnd","_getEdge","_createBoundaryLine","boundary","_pointsFromSegments","linePoints","_shouldApplyFill","simpleArc","_drawfill","_getTarget","getLineByIndex","_buildStackLine","sourcePoints","linesBelow","getLinesBelow","below","unshift","addPointsBelow","sourcePoint","postponed","findPoint","pointValue","firstValue","lastValue","computeBoundary","computeCircularBoundary","computeLinearBoundary","lineOpts","fillOption","above","doFill","clipVertical","clipY","lineLoop","tpoints","targetSegments","tgt","subBounds","fillSources","ax","fillSource","src","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","itemsEqual","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","itemWidth","measureText","_itemHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","col","calculateItemSize","fontLineHeight","legendItemText","calculateLegendItemHeight","adjustHitBoxes","rtl","rtlHelper","az","hitbox","leftForLtr","hitbox1","_draw","cursor","defaultColor","halfFontSize","drawLegendBox","lineDash","drawOptions","SQRT2","xPlus","aD","yBoxTop","xBoxLeft","fillText","strikethrough","aA","textDirection","textWidth","setWidth","realX","aB","aC","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","handleEvent","onLeave","hoveredItem","sameItem","Title","_padding","textSize","_drawArgs","fontOpts","WeakMap","positioners","average","eventPosition","nearestElement","aE","tp","pushOrConcat","toPush","apply","splitNewlines","str","String","getTooltipSize","tooltip","body","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","bodyLineHeight","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineAlignment","yAlign","determineYAlign","xAlign","determineXAlign","chartWidth","doesNotFitWithAlign","caret","caretSize","caretPadding","getBackgroundPoint","alignment","cornerRadius","paddingAndSize","alignX","alignY","getAlignedX","overrideCallbacks","defaultCallbacks","beforeTitle","aF","tooltipItems","labelCount","afterTitle","beforeLabel","tooltipItem","formattedValue","labelColor","labelTextColor","bodyColor","labelPointStyle","afterLabel","beforeFooter","afterFooter","invokeCallbackWithFallback","Tooltip","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","getTitle","getBeforeBody","getBody","bodyItems","scoped","getAfterBody","getFooter","_createItems","createTooltipItem","itemSort","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","pt","titleAlign","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","textColor","bodyAlign","xLinePadding","fillLineOfText","bodyAlignForCalculation","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","hasTooltipContent","globalAlpha","positionChanged","_positionChanged","_ignoreReplayEvents","Colors","forceOverride","_args","colorizer","Decimation","algorithm","beforeElementsUpdate","decimated","xAxis","getStartAndCountOfVisiblePointsSimplified","pointCount","threshold","configurable","enumerable","lttbDecimation","maxAreaPoint","maxArea","nextA","samples","bucketWidth","sampledIndex","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAx","pointAy","minMaxDecimation","minIndex","maxIndex","startIndex","xMin","xMax","dx","lastIndex","intermediateIndex1","intermediateIndex2","Filler","afterDatasetsUpdate","sources","_decodeFill","firstCh","parseFillOption","parseFloat","$filler","_resolveTarget","propagate","visited","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","_element","afterEvent","ci","useBorderRadius","startsWith","SubTitle","createTitle","titleBlock","afterInit","afterDraw","_fallback","addIfString","addedLabels","_getLabelForValue","relativeLabelSize","minSpacing","rad","LinearScaleBase","_startValue","_endValue","_valueRange","isFinite","handleTickRangeOptions","setMin","setMax","minSign","maxSign","getTickLimit","maxTicks","stepSize","computeTickLimit","numericGeneratorOptions","precision","maxDigits","includeBounds","dataRange","generateTicks$1","generationOptions","niceMin","niceMax","numSpaces","unit","maxSpaces","rmin","rmax","countDefined","aH","aI","aJ","decimalPlaces","aK","aG","LinearScale","aL","formatters","numeric","log10Floor","aM","changeExponent","isMajor","tickVal","steps","rangeExp","rangeStep","LogarithmicScale","logarithmic","_zero","generateTicks","minExp","exp","startExp","significand","lastTick","getTickBackdropHeight","determineLimits","pathRadiusLine","getPointPosition","RadialLinearScale","animate","centerPointLabels","drawingArea","_pointLabels","_pointLabelItems","fitWithPointLabels","limits","valueCount","pointLabelOpts","additionalAngle","getPointLabelContext","plFont","aN","hLimits","vLimits","updateLimits","setCenterPoint","buildPointLabelItems","extra","outerDistance","pointLabelPosition","leftMovement","rightMovement","topMovement","bottomMovement","angleMultiplier","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","distanceFromCenter","getBasePosition","getPointLabelPosition","drawPointLabels","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawRadiusLine","gridLineOpts","rotate","INTERVALS","millisecond","common","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","input","adapter","_adapter","parser","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","interval","MAX_SAFE_INTEGER","addTick","time","timestamps","aP","timestamp","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","displayFormats","_unit","_majorUnit","_offsets","_normalized","normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","aO","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","minor","weekday","hasWeekday","getDataTimestamps","tooltipFormat","datetime","_tickFormatFunction","formatter","minorFormat","majorFormat","offsets","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","normalize","table","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","CategoryScale","_addedLabels","added","findOrAddLabel","lastIndexOf","registerables"],"sourceRoot":""} \ No newline at end of file diff --git a/static/web/admin/access-tokens/index.html b/static/web/admin/access-tokens/index.html index ed6138454..686f40db8 100644 --- a/static/web/admin/access-tokens/index.html +++ b/static/web/admin/access-tokens/index.html @@ -1 +1 @@ -

Access Tokens

Access tokens are used to allow external, 3rd party tools to perform specific actions on your Owncast server. They should be kept secure and never included in client code, instead they should be kept on a server that you control.
Read more about how to use these tokens, with examples, at our documentation.
NameTokenScopesLast Used
No data

\ No newline at end of file +

Access Tokens

Access tokens are used to allow external, 3rd party tools to perform specific actions on your Owncast server. They should be kept secure and never included in client code, instead they should be kept on a server that you control.
Read more about how to use these tokens, with examples, at our documentation.
NameTokenScopesLast Used
No data

\ No newline at end of file diff --git a/static/web/admin/actions/index.html b/static/web/admin/actions/index.html index 3091a4895..c78ae2a5e 100644 --- a/static/web/admin/actions/index.html +++ b/static/web/admin/actions/index.html @@ -1 +1 @@ -

External Actions

External action URLs are 3rd party UI you can display, embedded, into your Owncast page when a user clicks on a button to launch your action.
Read more about how to use actions, with examples, at our documentation.
NameDescriptionURLIconColorOpens
No data

\ No newline at end of file +

External Actions

External action URLs are 3rd party UI you can display, embedded, into your Owncast page when a user clicks on a button to launch your action.
Read more about how to use actions, with examples, at our documentation.
NameDescriptionURLIconColorOpens
No data

\ No newline at end of file diff --git a/static/web/admin/chat/emojis/index.html b/static/web/admin/chat/emojis/index.html index ccb4bbdff..2e323fcde 100644 --- a/static/web/admin/chat/emojis/index.html +++ b/static/web/admin/chat/emojis/index.html @@ -1 +1 @@ -

Emojis

Here you can upload new custom emojis for usage in the chat. When uploading a new emoji, the filename will be used as emoji name.
NameEmoji
No data

\ No newline at end of file +

Emojis

Here you can upload new custom emojis for usage in the chat. When uploading a new emoji, the filename will be used as emoji name.
NameEmoji
No data

\ No newline at end of file diff --git a/static/web/admin/chat/messages/index.html b/static/web/admin/chat/messages/index.html index 767427e18..d82604097 100644 --- a/static/web/admin/chat/messages/index.html +++ b/static/web/admin/chat/messages/index.html @@ -1 +1 @@ -

Chat Messages

Manage the messages from viewers that show up on your stream.

Check multiple messages to change their visibility to:
Time
User
Message
No data
\ No newline at end of file +

Chat Messages

Manage the messages from viewers that show up on your stream.

Check multiple messages to change their visibility to:
Time
User
Message
No data
\ No newline at end of file diff --git a/static/web/admin/chat/users/index.html b/static/web/admin/chat/users/index.html index f3709c71a..8eba76fb3 100644 --- a/static/web/admin/chat/users/index.html +++ b/static/web/admin/chat/users/index.html @@ -1 +1 @@ -

When a stream is active and chat is enabled, connected chat clients will be displayed here.

\ No newline at end of file +

When a stream is active and chat is enabled, connected chat clients will be displayed here.

\ No newline at end of file diff --git a/static/web/admin/config-chat/index.html b/static/web/admin/config-chat/index.html index e551b062a..027efdb16 100644 --- a/static/web/admin/config-chat/index.html +++ b/static/web/admin/config-chat/index.html @@ -1 +1 @@ -
\ No newline at end of file +
\ No newline at end of file diff --git a/static/web/admin/config-federation/index.html b/static/web/admin/config-federation/index.html index 02498ec4b..ef7a626de 100644 --- a/static/web/admin/config-federation/index.html +++ b/static/web/admin/config-federation/index.html @@ -1 +1 @@ -
\ No newline at end of file +
\ No newline at end of file diff --git a/static/web/admin/config-notify/index.html b/static/web/admin/config-notify/index.html index e35f0210e..2f7edfccd 100644 --- a/static/web/admin/config-notify/index.html +++ b/static/web/admin/config-notify/index.html @@ -1 +1 @@ -

Notifications

Let your viewers know when you go live by supporting any of the below notification channels. Learn more about live notifications.


The full url to your Owncast server is required to enable social features. Must use SSL (https). Once people start following your instance you should not change this.

The full url to your Owncast server is required to enable social features. Must use SSL (https). Once people start following your instance you should not change this.

Browser Alerts

Viewers can opt into being notified when you go live with their browser.

Not all browsers support this.

Enable browser notifications

The text to send when you go live.

Twitter

Let your Twitter followers know each time you go live.

Enable Twitter

The text to send when you go live.

Discord

Let your Discord channel know each time you go live.

Create a webhook under Edit Channel / Integrations on your Discord channel and provide it below.

Enable Discord

The webhook assigned to your channel.

The text to send when you go live.

Fediverse Social

Enabling the Fediverse social features will not just alert people to when you go live, but also enable other functionality.

Fediverse social features: Disabled

Custom

Build your own notifications by using custom webhooks.

\ No newline at end of file +

Notifications

Let your viewers know when you go live by supporting any of the below notification channels. Learn more about live notifications.


The full url to your Owncast server is required to enable social features. Must use SSL (https). Once people start following your instance you should not change this.

The full url to your Owncast server is required to enable social features. Must use SSL (https). Once people start following your instance you should not change this.

Browser Alerts

Viewers can opt into being notified when you go live with their browser.

Not all browsers support this.

Enable browser notifications

The text to send when you go live.

Twitter

Let your Twitter followers know each time you go live.

Enable Twitter

The text to send when you go live.

Discord

Let your Discord channel know each time you go live.

Create a webhook under Edit Channel / Integrations on your Discord channel and provide it below.

Enable Discord

The webhook assigned to your channel.

The text to send when you go live.

Fediverse Social

Enabling the Fediverse social features will not just alert people to when you go live, but also enable other functionality.

Fediverse social features: Disabled

Custom

Build your own notifications by using custom webhooks.

\ No newline at end of file diff --git a/static/web/admin/config-social-items/index.html b/static/web/admin/config-social-items/index.html index 0cc69cc1b..b0ddbb859 100644 --- a/static/web/admin/config-social-items/index.html +++ b/static/web/admin/config-social-items/index.html @@ -1 +1 @@ -

Social Items

\ No newline at end of file +

Social Items

\ No newline at end of file diff --git a/static/web/admin/config-video/index.html b/static/web/admin/config-video/index.html index 2eb8c7ad8..5704f5bd8 100644 --- a/static/web/admin/config-video/index.html +++ b/static/web/admin/config-video/index.html @@ -1 +1 @@ -

Video configuration

Before changing your video configuration visit the video documentation to learn how it impacts your stream performance. The general rule is to start conservatively by having one middle quality stream output variant and experiment with adding more of varied qualities.

Stream output

NameVideo bitrateCPU Usage
No name800 kbpsMedium

Latency Buffer

While it's natural to want to keep your latency as low as possible, you may experience reduced error tolerance and stability the lower you go. The lowest setting is not recommended.

For interactive live streams you may want to experiment with a lower latency, for non-interactive broadcasts you may want to increase it. Read to learn more.

LowestHighest

\ No newline at end of file +

Video configuration

Before changing your video configuration visit the video documentation to learn how it impacts your stream performance. The general rule is to start conservatively by having one middle quality stream output variant and experiment with adding more of varied qualities.

Stream output

NameVideo bitrateCPU Usage
No name800 kbpsMedium

Latency Buffer

While it's natural to want to keep your latency as low as possible, you may experience reduced error tolerance and stability the lower you go. The lowest setting is not recommended.

For interactive live streams you may want to experiment with a lower latency, for non-interactive broadcasts you may want to increase it. Read to learn more.

LowestHighest

\ No newline at end of file diff --git a/static/web/admin/config/general/AppearanceConfig/index.html b/static/web/admin/config/general/AppearanceConfig/index.html index a5b558037..37293638c 100644 --- a/static/web/admin/config/general/AppearanceConfig/index.html +++ b/static/web/admin/config/general/AppearanceConfig/index.html @@ -1 +1 @@ -
Loading...
\ No newline at end of file +
Loading...
\ No newline at end of file diff --git a/static/web/admin/config/general/EditInstanceDetails/index.html b/static/web/admin/config/general/EditInstanceDetails/index.html index fb4bfea7a..a47e51399 100644 --- a/static/web/admin/config/general/EditInstanceDetails/index.html +++ b/static/web/admin/config/general/EditInstanceDetails/index.html @@ -1 +1 @@ -
\ No newline at end of file +
\ No newline at end of file diff --git a/static/web/admin/config/general/EditInstanceTags/index.html b/static/web/admin/config/general/EditInstanceTags/index.html index 2a2855c4d..f200aea7a 100644 --- a/static/web/admin/config/general/EditInstanceTags/index.html +++ b/static/web/admin/config/general/EditInstanceTags/index.html @@ -1 +1 @@ -

Add Tags

This is a great way to categorize your Owncast server on the Directory!

\ No newline at end of file +

Add Tags

This is a great way to categorize your Owncast server on the Directory!

\ No newline at end of file diff --git a/static/web/admin/config/general/EditPageContent/index.html b/static/web/admin/config/general/EditPageContent/index.html index 1fe741795..427b23a1b 100644 --- a/static/web/admin/config/general/EditPageContent/index.html +++ b/static/web/admin/config/general/EditPageContent/index.html @@ -1 +1 @@ -

Custom Page Content

Edit the content of your page by using simple Markdown syntax.


\ No newline at end of file +

Custom Page Content

Edit the content of your page by using simple Markdown syntax.


\ No newline at end of file diff --git a/static/web/admin/config/general/EditSocialLinks/index.html b/static/web/admin/config/general/EditSocialLinks/index.html index fa6b56c27..9ce32daaa 100644 --- a/static/web/admin/config/general/EditSocialLinks/index.html +++ b/static/web/admin/config/general/EditSocialLinks/index.html @@ -1 +1 @@ -
\ No newline at end of file +
\ No newline at end of file diff --git a/static/web/admin/config/general/GeneralConfig/index.html b/static/web/admin/config/general/GeneralConfig/index.html index 1c6122bd0..6d12d0f65 100644 --- a/static/web/admin/config/general/GeneralConfig/index.html +++ b/static/web/admin/config/general/GeneralConfig/index.html @@ -1 +1 @@ -

The following are displayed on your site to describe your stream and its content. Learn more.

Custom Page Content

Edit the content of your page by using simple Markdown syntax.


\ No newline at end of file +

The following are displayed on your site to describe your stream and its content. Learn more.

Custom Page Content

Edit the content of your page by using simple Markdown syntax.


\ No newline at end of file diff --git a/static/web/admin/config/general/index.html b/static/web/admin/config/general/index.html index 749cb04ef..388455f2f 100644 --- a/static/web/admin/config/general/index.html +++ b/static/web/admin/config/general/index.html @@ -1 +1 @@ -

The following are displayed on your site to describe your stream and its content. Learn more.

Custom Page Content

Edit the content of your page by using simple Markdown syntax.


\ No newline at end of file +

The following are displayed on your site to describe your stream and its content. Learn more.

Custom Page Content

Edit the content of your page by using simple Markdown syntax.


\ No newline at end of file diff --git a/static/web/admin/config/server/EditStorage/index.html b/static/web/admin/config/server/EditStorage/index.html index dff10eb8b..5e2a2ae2e 100644 --- a/static/web/admin/config/server/EditStorage/index.html +++ b/static/web/admin/config/server/EditStorage/index.html @@ -1 +1 @@ -
\ No newline at end of file +
\ No newline at end of file diff --git a/static/web/admin/config/server/ServerConfig/index.html b/static/web/admin/config/server/ServerConfig/index.html index 067c7172f..eaff90fb2 100644 --- a/static/web/admin/config/server/ServerConfig/index.html +++ b/static/web/admin/config/server/ServerConfig/index.html @@ -1 +1 @@ -

You should change your admin password from the default and keep it safe. For most people it's likely the other settings will not need to be changed.

\ No newline at end of file +

You should change your admin password from the default and keep it safe. For most people it's likely the other settings will not need to be changed.

\ No newline at end of file diff --git a/static/web/admin/config/server/StorageConfig/index.html b/static/web/admin/config/server/StorageConfig/index.html index a304e519c..02b26199c 100644 --- a/static/web/admin/config/server/StorageConfig/index.html +++ b/static/web/admin/config/server/StorageConfig/index.html @@ -1 +1 @@ -

Owncast supports optionally using external storage providers to stream your video. Learn more about this by visiting our Storage Documentation.

Configuring this incorrectly will likely cause your video to be unplayable. Double check the documentation for your storage provider on how to configure the bucket you created for Owncast.

Keep in mind this is for live streaming, not for archival, recording or VOD purposes.

\ No newline at end of file +

Owncast supports optionally using external storage providers to stream your video. Learn more about this by visiting our Storage Documentation.

Configuring this incorrectly will likely cause your video to be unplayable. Double check the documentation for your storage provider on how to configure the bucket you created for Owncast.

Keep in mind this is for live streaming, not for archival, recording or VOD purposes.

\ No newline at end of file diff --git a/static/web/admin/config/server/StreamKeys/index.html b/static/web/admin/config/server/StreamKeys/index.html index 07cd3059d..8132b3ce6 100644 --- a/static/web/admin/config/server/StreamKeys/index.html +++ b/static/web/admin/config/server/StreamKeys/index.html @@ -1 +1 @@ -
A streaming key is used with your broadcasting software to authenticate itself to Owncast. Most people will only need one. However, if you share a server with others or you want different keys for different broadcasting sources you can add more here.
These keys are unrelated to the admin password and will not grant you access to make changes to Owncast's configuration.
Read more about broadcasting at the documentation.
KeyComment
No data

\ No newline at end of file +
A streaming key is used with your broadcasting software to authenticate itself to Owncast. Most people will only need one. However, if you share a server with others or you want different keys for different broadcasting sources you can add more here.
These keys are unrelated to the admin password and will not grant you access to make changes to Owncast's configuration.
Read more about broadcasting at the documentation.
KeyComment
No data

\ No newline at end of file diff --git a/static/web/admin/config/server/index.html b/static/web/admin/config/server/index.html index d642dea5d..a4d95c8b2 100644 --- a/static/web/admin/config/server/index.html +++ b/static/web/admin/config/server/index.html @@ -1 +1 @@ -

You should change your admin password from the default and keep it safe. For most people it's likely the other settings will not need to be changed.

\ No newline at end of file +

You should change your admin password from the default and keep it safe. For most people it's likely the other settings will not need to be changed.

\ No newline at end of file diff --git a/static/web/admin/federation/actions/index.html b/static/web/admin/federation/actions/index.html index 557ec9b0e..8ffc90457 100644 --- a/static/web/admin/federation/actions/index.html +++ b/static/web/admin/federation/actions/index.html @@ -1 +1 @@ -

Fediverse Actions

Below is a list of actions that were taken by others in response to your posts as well as people who requested to follow you.
ActionFromWhen
No data
\ No newline at end of file +

Fediverse Actions

Below is a list of actions that were taken by others in response to your posts as well as people who requested to follow you.
ActionFromWhen
No data
\ No newline at end of file diff --git a/static/web/admin/federation/followers/index.html b/static/web/admin/federation/followers/index.html index 6f603f098..b5839630d 100644 --- a/static/web/admin/federation/followers/index.html +++ b/static/web/admin/federation/followers/index.html @@ -1 +1 @@ -

The following accounts get notified when you go live or send a post.

NameURL
Added
Remove
No data
\ No newline at end of file +

The following accounts get notified when you go live or send a post.

NameURL
Added
Remove
No data
\ No newline at end of file diff --git a/static/web/admin/hardware-info/index.html b/static/web/admin/hardware-info/index.html index 8b7321bd0..d577afe57 100644 --- a/static/web/admin/hardware-info/index.html +++ b/static/web/admin/hardware-info/index.html @@ -1 +1 @@ -

Hardware Info


CPU
0%
Memory
0%
Disk
0%
Loading...
\ No newline at end of file +

Hardware Info


CPU
0%
Memory
0%
Disk
0%
Loading...
\ No newline at end of file diff --git a/static/web/admin/help/index.html b/static/web/admin/help/index.html index 335103793..af0b0fe4f 100644 --- a/static/web/admin/help/index.html +++ b/static/web/admin/help/index.html @@ -1 +1 @@ -

How can we help you?

Troubleshooting

Fix your problems

Documentation

Read the Docs

Common tasks

I want to configure my owncast instance
Help configuring my broadcasting software
I want to embed my stream into another site
I want to customize my website
I want to tweak my video output
I want to use an external storage provider

Other

I found a bug
If you found a bug, then please let us know
I have a general question
Most general questions are answered in our FAQ or exist in our discussions
I want to build add-ons for Owncast
You can build your own bots, overlays, tools and add-ons with our developer APIs. 
\ No newline at end of file +

How can we help you?

Troubleshooting

Fix your problems

Documentation

Read the Docs

Common tasks

I want to configure my owncast instance
Help configuring my broadcasting software
I want to embed my stream into another site
I want to customize my website
I want to tweak my video output
I want to use an external storage provider

Other

I found a bug
If you found a bug, then please let us know
I have a general question
Most general questions are answered in our FAQ or exist in our discussions
I want to build add-ons for Owncast
You can build your own bots, overlays, tools and add-ons with our developer APIs. 
\ No newline at end of file diff --git a/static/web/admin/index.html b/static/web/admin/index.html index 084622940..c2cadb215 100644 --- a/static/web/admin/index.html +++ b/static/web/admin/index.html @@ -1 +1 @@ -Owncast Admin

What is your stream about today?

What is your stream about today?
Offline

No stream is active

You should start one.

Chat is disabled
Chat will continue to be disabled until you begin a live stream.
Find an audience on the Owncast Directory
List yourself in the Owncast Directory and show off your stream. Enable it in settings.
fediverse
Add your Owncast instance to the Fediverse
Enable Owncast social features to have your instance join the Fediverse, allowing people to follow, share and engage with your live stream.

News & Updates from Owncast

\ No newline at end of file +Owncast Admin

What is your stream about today?

What is your stream about today?
Offline

No stream is active

You should start one.

Chat is disabled
Chat will continue to be disabled until you begin a live stream.
Find an audience on the Owncast Directory
List yourself in the Owncast Directory and show off your stream. Enable it in settings.
fediverse
Add your Owncast instance to the Fediverse
Enable Owncast social features to have your instance join the Fediverse, allowing people to follow, share and engage with your live stream.

News & Updates from Owncast

\ No newline at end of file diff --git a/static/web/admin/logs/index.html b/static/web/admin/logs/index.html index c94a8e6ee..2a01134d0 100644 --- a/static/web/admin/logs/index.html +++ b/static/web/admin/logs/index.html @@ -1 +1 @@ -
\ No newline at end of file +
\ No newline at end of file diff --git a/static/web/admin/stream-health/index.html b/static/web/admin/stream-health/index.html index 59690412a..6cefc6e2d 100644 --- a/static/web/admin/stream-health/index.html +++ b/static/web/admin/stream-health/index.html @@ -1 +1 @@ -

Stream Performance

\ No newline at end of file +

Stream Performance

\ No newline at end of file diff --git a/static/web/admin/upgrade/index.html b/static/web/admin/upgrade/index.html index a7ac7bbdc..22c788b8f 100644 --- a/static/web/admin/upgrade/index.html +++ b/static/web/admin/upgrade/index.html @@ -1 +1 @@ -

Thu Jan 01 1970

Downloads

NameSize
No data
\ No newline at end of file +

Thu Jan 01 1970

Downloads

NameSize
No data
\ No newline at end of file diff --git a/static/web/admin/viewer-info/index.html b/static/web/admin/viewer-info/index.html index 8d60c641a..7f9e2b028 100644 --- a/static/web/admin/viewer-info/index.html +++ b/static/web/admin/viewer-info/index.html @@ -1 +1 @@ -

Viewer Info


Max viewers last stream
0
All-time max viewers
0
User AgentLocation
Watch Time
No data
\ No newline at end of file +

Viewer Info


Max viewers last stream
0
All-time max viewers
0
User AgentLocation
Watch Time
No data
\ No newline at end of file diff --git a/static/web/admin/webhooks/index.html b/static/web/admin/webhooks/index.html index 98f54df24..b3c456b82 100644 --- a/static/web/admin/webhooks/index.html +++ b/static/web/admin/webhooks/index.html @@ -1 +1 @@ -

Webhooks

A webhook is a callback made to an external API in response to an event that takes place within Owncast. This can be used to build chat bots or sending automatic notifications that you've started streaming.
Read more about how to use webhooks, with examples, at our documentation.
URLEvents
No data

\ No newline at end of file +

Webhooks

A webhook is a callback made to an external API in response to an event that takes place within Owncast. This can be used to build chat bots or sending automatic notifications that you've started streaming.
Read more about how to use webhooks, with examples, at our documentation.
URLEvents
No data

\ No newline at end of file diff --git a/static/web/embed/chat/readonly/index.html b/static/web/embed/chat/readonly/index.html index 7737b4106..c75edbf1d 100644 --- a/static/web/embed/chat/readonly/index.html +++ b/static/web/embed/chat/readonly/index.html @@ -1 +1 @@ -
\ No newline at end of file +
\ No newline at end of file diff --git a/static/web/embed/chat/readwrite/index.html b/static/web/embed/chat/readwrite/index.html index 7fabe9fb1..36faa351b 100644 --- a/static/web/embed/chat/readwrite/index.html +++ b/static/web/embed/chat/readwrite/index.html @@ -1 +1 @@ -
\ No newline at end of file +
\ No newline at end of file diff --git a/static/web/embed/video/index.html b/static/web/embed/video/index.html index fc4baaa35..826231ee8 100644 --- a/static/web/embed/video/index.html +++ b/static/web/embed/video/index.html @@ -1 +1 @@ -
This stream is offline. Check back soon!
\ No newline at end of file +
This stream is offline. Check back soon!
\ No newline at end of file diff --git a/static/web/index.html b/static/web/index.html index db09063d5..4fff436e6 100644 --- a/static/web/index.html +++ b/static/web/index.html @@ -1,9 +1,9 @@ {{.Name}}
{{.Name}}
\ No newline at end of file +
\ No newline at end of file