정수빈 정수빈 6 days ago
관리자 메인 대시보드
@2019eec73d7dd6993ca3853fdcc6b81a4f474070
src/main/webapp/WEB-INF/jsp/main/EgovMainView.jsp
--- src/main/webapp/WEB-INF/jsp/main/EgovMainView.jsp
+++ src/main/webapp/WEB-INF/jsp/main/EgovMainView.jsp
@@ -101,328 +101,280 @@
 				}
 			}
 		</script>
+		
+	<script src="/publish/adm/script/Chart.js-master/chart.js"></script>
+	<script>
+		$(function () {
+
+			// legend 아래 간격(여백) 추가 플러그인
+			const legendSpacing = {
+				id: "legendSpacing",
+				beforeInit(chart, args, opts) {
+					const originalFit = chart.legend.fit;
+					chart.legend.fit = function fit() {
+						originalFit.bind(chart.legend)();
+						this.height += (opts && opts.paddingBottom) ? opts.paddingBottom : 16; // 기본 16px
+					};
+				}
+			};
+
+			Chart.register(legendSpacing);
+
+			const canvas = document.getElementById("visitorChart");
+			if (!canvas) return;
+
+			const ctx = canvas.getContext("2d");
+
+			/* ===============================
+			   데이터
+			=============================== */
+			const labels = ["01/28", "01/29", "01/30", "01/31", "02/01", "02/02", "02/03"];
+			const pcVisits = [10, 15, 12, 20, 5, 1, 2];
+			const mobileVisits = [8, 7, 15, 11, 10, 15, 2];
+			const totalVisits = [18, 22, 27, 22, 15, 16, 4];
+
+			/* ===============================
+			   그라데이션 
+			=============================== */
+
+			const h = canvas.clientHeight || 200;
+
+			// PC
+			const gradientPC = ctx.createLinearGradient(0, 0, 0, h);
+			gradientPC.addColorStop(0, "rgba(252, 109, 56, 0.38)");
+			gradientPC.addColorStop(1, "rgba(252, 109, 56, 0)");
+
+			// 모바일 
+			const gradientMobile = ctx.createLinearGradient(0, 0, 0, h);
+			gradientMobile.addColorStop(0, "rgba(57, 92, 158, 0.38)");
+			gradientMobile.addColorStop(1, "rgba(57, 92, 158, 0)");
+
+			// 전체
+			const gradientTotal = ctx.createLinearGradient(0, 0, 0, h);
+			gradientTotal.addColorStop(0, "rgba(210, 216, 229, 0.38)");
+			gradientTotal.addColorStop(1, "rgba(210, 216, 229, 0)");
+
+			/* ===============================
+			   차트 생성
+			=============================== */
+			new Chart(ctx, {
+				type: "line",
+				data: {
+					labels,
+					datasets: [{
+							label: "PC",
+							data: pcVisits,
+							borderColor: "#FC6D38",
+							backgroundColor: gradientPC,
+							clip: false,
+							fill: {
+								target: "origin"
+							},
+							tension: 0.45,
+							pointRadius: 0,
+							borderWidth: 2.5,
+						},
+						{
+							label: "모바일",
+							data: mobileVisits,
+							borderColor: "#395C9E",
+							backgroundColor: gradientMobile,
+							clip: false,
+							fill: {
+								target: "origin"
+							},
+							tension: 0.45,
+							pointRadius: 0,
+							borderWidth: 2.5,
+						},
+						{
+							label: "전체",
+							data: totalVisits,
+							borderColor: "#D2D8E5",
+							backgroundColor: gradientTotal,
+							clip: false,
+							fill: {
+								target: "origin"
+							},
+							tension: 0.45,
+							pointRadius: 0,
+							borderWidth: 2.5,
+						}
+					]
+				},
+				options: {
+					animation: false,
+					maintainAspectRatio: false,
+					interaction: {
+						intersect: false,
+						mode: "index"
+					},
+					plugins: {
+						legendSpacing: {
+							paddingBottom: 16
+						},
+						legend: {
+							display: true,
+							position: "top",
+							align: "end",
+							labels: {
+								boxWidth: 8,
+								boxHeight: 8,
+								padding: 20,
+								color: "#000",
+								usePointStyle: true,
+								pointStyle: "circle",
+								font: {
+									size: 15,
+									weight: "400",
+									family: 'Pretendard'
+								},
+								generateLabels(chart) {
+									const datasets = chart.data.datasets;
+
+									return datasets.map((dataset, i) => ({
+										text: dataset.label,
+										fillStyle: dataset.borderColor,
+										strokeStyle: dataset.borderColor,
+										lineWidth: 0,
+										fontColor: "#000",
+										hidden: !chart.isDatasetVisible(i),
+										index: i
+									}));
+								}
+							}
+						},
+						tooltip: {
+							backgroundColor: "rgba(0,0,0,0.85)",
+							titleColor: "#fff",
+							bodyColor: "#fff",
+							cornerRadius: 8,
+							titleMarginBottom: 8,
+							bodySpacing: 6,
+							padding: {
+								top: 16,
+								right: 16,
+								bottom: 16,
+								left: 16
+							},
+
+							displayColors: true,
+							usePointStyle: true,
+							caretSize: 0,
+							boxWidth: 8,
+							boxHeight: 8,
+							boxPadding: 8,
+
+							titleFont: {
+								family: "Pretendard",
+								size: 16,
+								weight: "600"
+							},
+							bodyFont: {
+								family: "Pretendard",
+								size: 14,
+								weight: "500"
+							},
+
+							callbacks: {
+								title(context) {
+									return context[0].label;
+								},
+
+								label(context) {
+									console.log(context);
+									const label = context.dataset.label;
+									const value = context.raw;
+									return context.dataset.label + "   " + context.formattedValue;
+									
+								},
+								// 아이콘 변경
+								labelPointStyle(context) {
+									return {
+										pointStyle: "circle",
+										rotation: 0
+									};
+								},
+								// 아이콘 백그라운드
+								labelColor(context) {
+									return {
+										borderColor: context.dataset.borderColor,
+										backgroundColor: context.dataset.borderColor
+									};
+								}
+							}
+						}
+					},
+					scales: {
+						y: {
+							beginAtZero: true,
+							suggestedMax: 50,
+							ticks: {
+								padding: 20,
+								stepSize: 5,
+								maxTicksLimit: 12,
+								color: "#81899C",
+								callback: (value) => {
+									if (value === 0) return "";
+									return value.toLocaleString();
+								},
+								font: {
+									size: 15,
+									weight: "500",
+									family: 'Pretendard'
+								},
+							},
+							grid: {
+								color: "#ECE9F1",
+								drawTicks: false
+							},
+							border: {
+								display: false
+							}
+						},
+						x: {
+							ticks: {
+								color: "#81899C",
+								font: {
+									size: 15,
+									weight: "500",
+									family: 'Pretendard'
+								},
+							},
+							grid: {
+								display: false // 세로선 제거
+							},
+							border: {
+								display: false
+							}
+						}
+					}
+				}
+			});
+
+		});
+	</script>
+
+		
+		
 </head>
 <body>
 
-
+	<h2 class="title">DASHBOARD</h2>
       <!-- cont -->
-        <div class="box_wrap">
-          <div class="box">
-            <div class="box_tit">
-              <p>오늘의 교육 진행 현황</p>
-            </div>
-            <div class="box_cont today_box">
-              <div class="today_status status01">
-                <p>교육접수</p>
-                <i></i>
-                <span>18</span>
-              </div>
-              <i class="status_pcs"></i>
-              <div class="today_status status02">
-                <p>교육진행</p>
-                <i></i>
-                <span>18</span>
-              </div>
-              <i class="status_pcs"></i>
-              <div class="today_status status03">
-                <p>교육완료</p>
-                <i></i>
-                <span>18</span>
-              </div>
-            </div>
-          </div>
-          <div class="box">
-            <div class="box_tit">
-              <p>교육관리</p>
-            </div>
-            <div class="box_cont system_box">
-              <a href="#" class="btn_system system01">
-                <p>교육 일정관리</p>
-                <span>바로가기 ></span>
-              </a>
-              <a href="#" class="btn_system system02">
-                <p>고육 종료관리</p>
-                <span>바로가기 ></span>
-              </a>
-              <a href="#" class="btn_system system03">
-                <p>교육 신청관리</p>
-                <span>바로가기 ></span>
-              </a>
-              <a href="#" class="btn_system system04">
-                <p>교육 강사관리</p>
-                <span>바로가기 ></span>
-              </a>
-            </div>
-          </div>
-          <div class="box">
-            <div class="box_tit">
-              <p>교육건수</p>
-            </div>
-            <div class="box_cont ds_box">
-              <ul class="chartType01">
-                <li>
-                  <p>접수</p>
-                  <div class="chart_wrap">
-                    <div></div>
-                  </div>
-                  <p class="case_number"><span>30</span>건</p>
-                </li>
-                <li>
-                  <p>승인</p>
-                  <div class="chart_wrap">
-                    <div></div>
-                  </div>
-                  <p class="case_number"><span>30</span>건</p>
-                </li>
-                <li>
-                  <p>진행</p>
-                  <div class="chart_wrap">
-                    <div></div>
-                  </div>
-                  <p class="case_number"><span>30</span>건</p>
-                </li>
-                <li>
-                  <p>대기</p>
-                  <div class="chart_wrap">
-                    <div></div>
-                  </div>
-                  <p class="case_number"><span>30</span>건</p>
-                </li>
-                <li>
-                  <p>완료</p>
-                  <div class="chart_wrap">
-                    <div></div>
-                  </div>
-                  <p class="case_number"><span>30</span>건</p>
-                </li>
-              </ul>
-
-              <ul class="chart_num">
-                <li>0</li>
-                <li>10</li>
-                <li>20</li>
-                <li>30</li>
-                <li>40</li>
-              </ul>
-
-            </div>
-          </div>
-          <div class="box">
-            <div class="box_tit">
-              <p>교육신청현황</p>
-              <button type="button" class="btn_plus">더보기 <i class="icon plus"></i></button>
-            </div>
-            <div class="box_cont">
-              <ul class="dashboard_list">
-                <li>
-                  <a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
-                  <p class="list_writer">admin</p>
-                  <p class="list_date">2025-08-08</p>
-                </li>
-                <li>
-                  <a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
-                  <p class="list_writer">admin</p>
-                  <p class="list_date">2025-08-08</p>
-                </li>
-                <li>
-                  <a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
-                  <p class="list_writer">admin</p>
-                  <p class="list_date">2025-08-08</p>
-                </li>
-                <li>
-                  <a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
-                  <p class="list_writer">admin</p>
-                  <p class="list_date">2025-08-08</p>
-                </li>
-                <li>
-                  <a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
-                  <p class="list_writer">admin</p>
-                  <p class="list_date">2025-08-08</p>
-                </li>
-            </div>
-          </div>
-          <div class="box">
-            <div class="box_tit">
-              <p>교육진행현황</p>
-              <button type="button" class="btn_plus">더보기 <i class="icon plus"></i></button>
-            </div>
-            <div class="box_cont">
-              <ul class="dashboard_list status">
-                <li>
-                  <a href="#" class="list_tit">· <img src="/publish/adm/images/component/icon_new.png" class="icon_new"> 상표권 교육조건부 기소유예</a>
-                  <p class="list_writer">admin</p>
-                  <p class="status line gray">배정완료</p>
-                </li>
-                <li>
-                  <a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
-                  <p class="list_writer">admin</p>
-                  <p class="status line blue">승인요청</p>
-                </li>
-                <li>
-                  <a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
-                  <p class="list_writer">admin</p>
-                  <p class="status line orange">대기중</p>
-                </li>
-                <li>
-                  <a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
-                  <p class="list_writer">admin</p>
-                  <p class="status line gray">배정완료</p>
-                </li>
-                <li>
-                  <a href="#" class="list_tit">· 상표권 교육조건부 기소유예</a>
-                  <p class="list_writer">admin</p>
-                  <p class="status line gray">배정완료</p>
-                </li>
-            </div>
-          </div>
-          <div class="box">
-            <div class="box_tit">
-              <p>교육종료현황</p>
-              <button type="button" class="btn_plus">더보기 <i class="icon plus"></i></button>
-            </div>
-            <div class="box_cont">
-              <ul class="dashboard_list status">
-                <li>
-                  <a href="#" class="list_tit">· 인사교육 프로그램 교재의 저작물</a>
-                  <p class="list_writer">admin</p>
-                  <p class="status fill gray">보고완료</p>
-                </li>
-                <li>
-                  <a href="#" class="list_tit">· 음악저작물 제작 및 이용에 따른</a>
-                  <p class="list_writer">admin</p>
-                  <p class="status fill green">설문진행</p>
-                </li>
-                <li>
-                  <a href="#" class="list_tit">· 부주의에 의한 성명표시권 침해</a>
-                  <p class="list_writer">admin</p>
-                  <p class="status fill purple">비용지급</p>
-                </li>
-                <li>
-                  <a href="#" class="list_tit">· 학위논문에서의 정당한 인용의 문제</a>
-                  <p class="list_writer">admin</p>
-                  <p class="status fill gray">보고완료</p>
-                </li>
-                <li>
-                  <a href="#" class="list_tit">· 저작물 이용허락 요청 후 무단이용</a>
-                  <p class="list_writer">admin</p>
-                  <p class="status fill gray">보고완료</p>
-                </li>
-            </div>
-          </div>
-        </div>
-      <!-- //cont -->
-
-
-
-	<!-- 적용 후 삭제 -->
-  <div class="main">
-    <div class="contents">
       <div class="box_wrap">
-        <%-- <div class="box width3">
-          <div class="title">
-            <h2>최근 접수사건 </h2>
-            <button type="button" class="btn_plus" onclick="location.href='/gtm/case/trublreqstmng/administList/AdministPagingList.do'"><i></i></button>
+        <div class="box chart_box">
+          <div class="box_tit">
+            <p>접속통계 <span>30분 단위 업데이트</span></p>
+            <button type="button" class="btn_plus"><i class="icon plus"></i></button>
           </div>
-          <ul class="box_list recent">
-          	<c:forEach var="rceptList" items="${rceptList}" varStatus="sts">
-	            <li>
-	           		<c:set var="newClass" value="new"/>
-	            	<c:if test="${rceptList.viewStatus eq 'Y'}">
-	            		<c:set var="newClass" value=""/>
-	            	</c:if>
-	                <span class="list_title">${rceptList.rceptNo}</span>
-	                <span class="list_writer">${rceptList.applcntCompany}</span>
-	                <span class="list_writer">${rceptList.respondentCompany}</span>
-	                <span class="list_date">${rceptList.regDt}</span>
-	              </a>
-	            </li>
-          	</c:forEach>
-          </ul>
-        </div>
-        <div class="box width3">
-          <div class="title">
-            <h2>진행 중 사건목록 <span>(오래된 순)</span></h2>
-            <button type="button" class="btn_plus" onclick="location.href='/gtm/case/trublprocessmng/trublprocessmngList/TrublprocessmngPagingList.do'"><i></i></button>
+          <div class="box_cont">
+            <canvas id="visitorChart" class="line_chart"></canvas>
           </div>
-          <ul class="box_list">
-          	<c:forEach var="caseList" items="${caseList}" varStatus="sts">
-	            <li>
-	            	<a href="javascript:void(0);" onclick="goPage('TP_RCEPTEDIT', '${caseList.caseNo}', '')">
-	                <span class="list_title">· <c:out value="${caseList.caseNo}"/></span>
-		                <span class="list_writer">
-							<c:out value="${caseList.applcntCompany}"/>
-		               	</span>
-	                <span class="list_date">${caseList.proDate}일</span>
-	              </a>
-	            </li>
-            </c:forEach>
-          </ul>
         </div>
-        <div class="box width3 quick_area">
-          <a href="#" class="bg_7990c3" onclick="location.href='/gtm/case/trublprocessmng/trublprocessmngList/TrublprocessmngPagingList.do'">
-            <span class="quick_title">분쟁사건 처리관리</span>
-            <span class="baro_text">바로가기 <i></i></span>
-          </a>
-          <a href="#" class="bg_474b5e" onclick="location.href='/gtm/case/statsmng/statsList/StatsList.do'">
-            <span class="quick_title">나의사건 통계</span>
-            <span class="baro_text">바로가기 <i></i></span>
-          </a>
-          <a href="#" class="bg_171c70" onclick="location.href='/gtm/case/trublcfrncmng/trublcfrncmngList/TrublcfrncmngPagingList.do'">
-            <span class="quick_title">분쟁조정협의회</span>
-            <span class="baro_text">바로가기 <i></i></span>
-          </a>
-          <a href="#" class="bg_04b5a5" onclick="location.href='/gtm/case/trublend/trublendList/TrublendPagingList.do'">
-            <span class="quick_title">종료사건 조회</span>
-            <span class="baro_text">바로가기 <i></i></span>
-          </a>
-        </div>
-        <div class="box width2">
-          <div class="title">
-            <h2>분쟁조정 게시판</h2>
-            <button type="button" class="btn_plus" onclick="location.href='/gtm/case/team/board/list.do'"><i></i></button>
-          </div>
-          <ul class="box_list">
-          	<c:forEach var="boardList" items="${boardList}" varStatus="sts">
-	            <li>
-<!-- 	              <a href="#"> -->
-					<a href="javascript:goPage('boardView', '${boardList.TEAM_NO}', '');">
-		                <span class="list_title">· ${boardList.TEAM_TITLE}</span>
-		                <span class="list_writer">${boardList.TEAM_REGNM}</span>
-		                <span class="list_date">${boardList.TEAM_REGDATE}</span>
-		            </a>
-	            </li>
-            </c:forEach>
-          </ul>
-        </div>
-        <div class="box width2">
-          <div class="title">
-            <h2>분쟁조정협의회 <span>(예정)</span></h2>
-            <button type="button" class="btn_plus" onclick="location.href='/gtm/case/trublcfrncmng/trublcfrncmngList/TrublcfrncmngPagingList.do'"><i></i></button>
-          </div>
-          <ul class="box_list">
-          	<c:forEach var="trublcfrncmngList" items="${trublcfrncmngList}" varStatus="sts">
-	            <li>
-<!-- 	              <a href="#"> -->
-					<c:choose>																	
-						<c:when test="${ (param.memberId eq trublcfrncmngList.regId or memberPosition eq '0911000000') and 'N' eq trublcfrncmngList.caseEnd}">
-								<a href="javascript:goPage('cfrncmngEdit','${trublcfrncmngList.cfrncNo}', '${trublcfrncmngList.statePro}');">
-						</c:when>
-						<c:otherwise>
-								<a href="javascript:goPage('cfrncmngView','${trublcfrncmngList.cfrncNo}', '${trublcfrncmngList.statePro}');">
-						</c:otherwise>
-					</c:choose>
-	              
-	                <span class="list_title">· ${trublcfrncmngList.conferenceNames}</span>
-	                <span class="list_date">${trublcfrncmngList.fixDay}</span>
-	                <span class="list_writer">${trublcfrncmngList.regName}</span>
-	              </a>
-	            </li>
-          	</c:forEach>
-          </ul>
-        </div> --%>
       </div>
-    </div>
-  </div>
+      <!-- //cont -->
+      
   
   
 	<form:form name="frm" id="frm" action="" method="post" enctype="multipart/form-data">
src/main/webapp/publish/adm/css/dashboard.css
--- src/main/webapp/publish/adm/css/dashboard.css
+++ src/main/webapp/publish/adm/css/dashboard.css
@@ -1,114 +1,22 @@
 /* 공통 */
+
+.dashboard h2.title{font-size:32px;font-weight:700;padding:0 40px;}
+
 .dashboard .box_title{width:100%;font-size:20px;font-weight:700;}
-.dashboard .box_wrap{display:flex;flex-wrap:wrap;justify-content:flex-start;padding:40px;box-sizing:border-box;gap:30px;}
+.dashboard .box_wrap{display:flex;height:calc(100% - 154px);flex-wrap:wrap;justify-content:flex-start;padding:20px 40px 40px;box-sizing:border-box;gap:30px;}
 .dashboard .box{width:calc((100%/3) - 20px);height:auto;border-radius:5px;border:5px solid #EFF2F9;background:#fff;}
 .dashboard .box_tit{display:flex;height:60px;align-items:center;justify-content:space-between;padding:0 25px;border-bottom:1px solid #E6E8EB;box-sizing: border-box;}
 .dashboard .box_tit p{font-size:20px;font-weight:bold;letter-spacing:-0.5px;color:#333;}
+.dashboard .box_tit p span{font-size:16px;font-weight:400;color:#81899C;padding:0 0 0 4px;}
 .dashboard .box_tit .btn_plus{display:flex;font-size:16px;font-weight:300;color:#aaa;letter-spacing:-0.5px;align-items:center;gap:8px;}
 .dashboard .box_tit .btn_plus i{display:inline-block;width:14px;height:14px;background:url(../images/component/icon_plus.png) no-repeat center center;margin:-2px 0 0 0;transition:all .5s;}
 .dashboard .box_tit .btn_plus:hover{color:#666;font-weight:400;}
 .dashboard .box_tit .btn_plus:hover i{transform:rotate(90deg);}
-.dashboard .box_cont{position:relative;height:calc(100% - 60px);padding:20px 25px;box-sizing:border-box;}
+.dashboard .box_cont{position:relative;height:calc(100% - 60px);padding:8px 20px 20px;box-sizing:border-box;}
+
 /* //공통 */
 
-/* 오늘 사용자 현황 */
-.today_box{display: flex; justify-content: space-between; align-items: center;}
-.today_box .today_status{text-align: center; width: calc((100% - 80px)/3);}
-.today_box p{font-size: 16px; font-weight: 300; margin-top: 12px;}
-.today_box .today_status i{display: block; width: 84px; height: 84px; background-color: #E8ECF4; border-radius: 100%; margin: 23px auto; background-repeat: no-repeat; background-position: center;}
-.today_box .status01 i{background-image: url(../image/dashboard/icon_today01.png);}
-.today_box .status02 i{background-image: url(../image/dashboard/icon_today02.png);}
-.today_box .status03 i{background-image: url(../image/dashboard/icon_today03.png);}
-.today_box span{font-size: 24px; font-weight: bold;}
-.today_box .status_pcs{width: 24px; height: 9px; background-image: url(../image/dashboard/icon_today_pcs.png);}
-/* //오늘 사용자 현황 */
-
-/* 시스템관리 */
-.system_box{display: flex; flex-wrap: wrap; justify-content: space-between;}
-.system_box a{position: relative; display: flex; flex-flow: column; width: calc((100% - 10px)/2); height: 90px; justify-content: center; align-items: flex-start; border-radius: 10px; background-color: #666; margin: 5px 0; padding: 0 20px; box-sizing: border-box; background-repeat: no-repeat; background-position: calc(100% - 20px) center; box-shadow: 0 0 5px rgba(0,0,0,0.3); transition: background-color 0.2s ease-in-out;}
-.system_box a:hover{transition: background-color 0.2s ease-in-out;}
-.system_box .system01{background-color: #7991C3; background-image: url(../image/dashboard/icon_system01.png);}
-.system_box .system01:hover{background-color: #6281c4;}
-.system_box .system02{background-color: #2C3B5B; background-image: url(../image/dashboard/icon_system02.png);}
-.system_box .system02:hover{background-color: #1F2D4A;}
-.system_box .system03{background-color: #2557B4; background-image: url(../image/dashboard/icon_system03.png);}
-.system_box .system03:hover{background-color: #18418D;}
-.system_box .system04{background-color: #F86A3C; background-image: url(../image/dashboard/icon_system04.png);}
-.system_box .system04:hover{background-color: rgb(241, 85, 33);}
-.system_box a::before{position: absolute; content: ""; width: 58px; height: 58px; background-color: rgba(255,255,255,0.3); border-radius: 100%; right: -5px; bottom: -5px;}
-.system_box p{font-size: 18px; font-weight: 400; color: #fff; letter-spacing: -0.5px; width: calc(100% - 40px); line-height: 1.3;}
-.system_box span{display: block; font-size: 15px; font-weight: 300; color: #fff; padding-top: 10px;}
-/* //시스템관리 */
-
-/* 2021 신청 처리현황 */
-.dashboard .box_cont.ds_box{padding-top:27px;}
-.ds_box .chartType01 li{display: flex; justify-content: space-between; align-items: center; margin-bottom: 22px;}
-.ds_box .chartType01 li:last-child{margin-bottom: 0;}
-.ds_box .chartType01 p{font-size: 15px; font-weight: 400; width: auto; min-width:30px; text-align: right;}
-.ds_box .chartType01 p:first-child{margin:0 10px 0 0;}
-.ds_box .chartType01 .chart_wrap{width: calc(100% - 100px); height: 15px; background-color: #f1eeed; border-radius: 10px; box-shadow: inset 3px 2px 3px rgba(0,0,0,0.15); overflow: hidden;}
-.ds_box .chartType01 .chart_wrap div{width: 50%; height: 100%; background-color: #3A3C41; border-radius: 10px; box-shadow: inset 3px 2px 3px rgba(0,0,0,0.15);}
-.ds_box .chartType01 li:first-child .chart_wrap div{background-color: #428ef6;}
-.ds_box .chartType01 li:nth-child(2) .chart_wrap div{background-color: #fc6d38;}
-.ds_box .chartType01 li:nth-child(3) .chart_wrap div{background-color: #f7be0f;}
-.ds_box .chartType01 li:nth-child(4) .chart_wrap div{background-color: #ad65eb;}
-.ds_box .chartType01 li:last-child .chart_wrap div{background-color: #41b691;}
-.ds_box .case_number{color:#3A3C41; white-space:nowrap;}
-.ds_box .case_number span{font-weight:600;}
-.ds_box .chart_num{display: flex; width: calc(100% - 100px); justify-content: space-between; margin-left: auto; margin:15px auto 0 auto; color:#666;}
-/* //2021 신청 처리현황 */
-
-/* 대시보드 리스트 */
-.dashboard_list li{display:flex;font-weight:300;letter-spacing:-0.5px;border-bottom:1px solid #e5e5e5;padding:0 0 8px 0;margin:0 0 12px 0;justify-content:space-between;}
-.dashboard_list li:last-child{border-bottom:0;margin:0;padding:0;}
-.dashboard_list li p,.notice_box li a{padding:0 5px;box-sizing:border-box;}
-.dashboard_list li:hover p,.dashboard_list li:hover a{color:#222;font-weight:400;}
-.dashboard_list li a{width:98%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-size:17px;color:#222;}
-.dashboard_list .list_tit{display:inline-block;width:calc(100% - 170px);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}
-.dashboard_list .list_tit img{display:inline-block;vertical-align:text-top;}
-.dashboard_list .list_writer,.dashboard_list .list_date{font-size:16px;color:#777777;}
-.dashboard_list .list_writer{width:60px;max-width:60px;text-align: right;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}
-.dashboard_list .list_date{width: 100px; text-align: right;}
-
-.dashboard_list.status{display:flex;flex-wrap:wrap;}
-.dashboard_list.status li{width:100%;align-items:center;gap:8px;}
-
-.dashboard_list .status{display:flex;min-width:75px;height: 27px;font-size: 14px;font-weight:500;padding:0 12px;border-radius:28px;justify-content:center;align-items:center;transition: all 0.3s;}
-.dashboard_list .line.gray{border:1px solid #c1c5ce;color:#616576;}
-.dashboard_list .line.blue{border:1px solid #2557B4;color:#2557B4;}
-.dashboard_list .line.orange{border:1px solid #F86A3C;color:#F86A3C;}
-.dashboard_list .fill.gray{background:#e4e7ee;color:#616576;}
-.dashboard_list .fill.green{background:#d9f0e9;color:#289c77;}
-.dashboard_list .fill.purple{background:#f3e8fc;color:#ad65eb;}
-
-.dashboard_list li:hover .line.gray{border:1px solid #c1c5ce;background:#F5F6F7;color:#616576;}
-.dashboard_list li:hover .line.blue{border:1px solid #2557B4;background:#F4F7FB;color:#2557B4;}
-.dashboard_list li:hover .line.orange{border:1px solid #F86A3C;background:#FEF0EC;color:#F86A3C;}
-.dashboard_list li:hover .fill.gray{background:#d2d6df;color:#494c59;}
-.dashboard_list li:hover .fill.green{background:#C1E8DC;color:#177C5C;}
-.dashboard_list li:hover .fill.purple{background:#EDD8FE;color:#9747DD;}
-
-/* //대시보드 리스트 */
-
 /* 차트 */
-.chart_box{text-align: center;}
-.chart_box img{box-sizing: border-box; width: 100%; height: 100%;}/* 나중에 차트 추가하고 지울 것 */
+.box.chart_box{width:100%;height:100%;}
+.chart_box canvas{width:100%;height:100%;}
 /* //차트 */
-
-@media all and (max-width:1600px){
-
-	/* 공통 */
-	.dashboard .box{width: calc((100% - 30px)/2);}
-	/* //공통 */
-
-}
-
-@media all and (max-width:1300px){
-
-	/* 시스템관리 */
-	.system_box a{background-size: 35px;}
-	.system_box .system01{background-size: 33px;}
-	.system_box .system04{background-size: 30px;}
-	/* //시스템관리 */
-
-}
(No newline at end of file)
 
src/main/webapp/publish/adm/script/Chart.js-master/.browserslistrc (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/.browserslistrc
@@ -0,0 +1,4 @@
+defaults
+not IE 11
+not IE_Mob 11
+maintained node versions
 
src/main/webapp/publish/adm/script/Chart.js-master/.codeclimate.yml (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/.codeclimate.yml
@@ -0,0 +1,25 @@
+version: "2"
+plugins:
+  duplication:
+    enabled: true
+    config:
+      languages:
+        - javascript
+  fixme:
+    enabled: true
+checks:
+  argument-count:
+    config:
+      threshold: 5
+  method-complexity:
+    config:
+      threshold: 7
+exclude_patterns:
+  - "dist/"
+  - "docs/"
+  - "scripts/"
+  - "test/"
+  - "*.js"
+  - "*.json"
+  - "*.md"
+  - ".*"
 
src/main/webapp/publish/adm/script/Chart.js-master/.editorconfig (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/.editorconfig
@@ -0,0 +1,14 @@
+# https://editorconfig.org
+root = true
+
+[*]
+indent_style = space
+indent_size = 2
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.html]
+indent_style = tab
+indent_size = 4
 
src/main/webapp/publish/adm/script/Chart.js-master/.eslintignore (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/.eslintignore
@@ -0,0 +1,2 @@
+dist/*
+test/integration/react-browser/*
 
src/main/webapp/publish/adm/script/Chart.js-master/.eslintrc.yml (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/.eslintrc.yml
@@ -0,0 +1,61 @@
+extends:
+  - chartjs
+  - plugin:es/restrict-to-es2018
+  - plugin:markdown/recommended
+
+settings:
+  es:
+    aggressive: true
+
+env:
+  es6: true
+  browser: true
+  node: true
+
+parserOptions:
+  ecmaVersion: 2022
+  sourceType: module
+  ecmaFeatures:
+    impliedStrict: true
+    modules: true
+
+plugins: ['html', 'es']
+
+rules:
+  class-methods-use-this: "off"
+  complexity: ["warn", 10]
+  max-statements: ["warn", 30]
+  no-empty-function: "off"
+  no-use-before-define: ["error", { "functions": false }]
+  # disable everything, except Rest/Spread Properties in ES2018
+  es/no-import-meta: "off"
+  es/no-async-iteration: "error"
+  es/no-malformed-template-literals: "error"
+  es/no-regexp-lookbehind-assertions: "error"
+  es/no-regexp-named-capture-groups: "error"
+  es/no-regexp-s-flag: "error"
+  es/no-regexp-unicode-property-escapes: "error"
+  es/no-dynamic-import: "off"
+
+overrides:
+  - files: ['**/*.ts']
+    parser: '@typescript-eslint/parser'
+    plugins:
+      - '@typescript-eslint'
+    extends:
+      - chartjs
+      - plugin:@typescript-eslint/recommended
+
+    rules:
+      complexity: ["warn", 10]
+      max-statements: ["warn", 30]
+      # Replace stock eslint rules with typescript-eslint equivalents for proper
+      # TypeScript support.
+      indent: "off"
+      "@typescript-eslint/indent": ["error", 2]
+      no-use-before-define: "off"
+      '@typescript-eslint/no-use-before-define': "error"
+      no-shadow: "off"
+      '@typescript-eslint/no-shadow': "error"
+      space-before-function-paren: "off"
+      '@typescript-eslint/space-before-function-paren': [2, never]
 
src/main/webapp/publish/adm/script/Chart.js-master/.github/ISSUE_TEMPLATE.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/.github/ISSUE_TEMPLATE.md
@@ -0,0 +1,14 @@
+<!--
+  Need help or support? Don't open an issue!
+  Head to https://stackoverflow.com/questions/tagged/chart.js
+
+  Ahoy!
+
+  You're seeing this because you felt none of the other options fit the type of
+  issue you'd like to create. Please use this opportunity to tell us about the
+  type of issue you were looking for, so we can try to accommodate similar
+  issues in the future.
+
+  If you're using this template to report an issue covered by an existing issue
+  type, we'll close it as invalid faster than you can spell 'Mississippi'.
+-->
 
src/main/webapp/publish/adm/script/Chart.js-master/.github/ISSUE_TEMPLATE/bug.yml (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/.github/ISSUE_TEMPLATE/bug.yml
@@ -0,0 +1,84 @@
+name: Bug Report
+description: Something went awry
+labels: ["type: bug"]
+body:
+  - type: markdown
+    attributes:
+      value: |
+        Need help or support?
+        Please don't open an issue! Head to https://stackoverflow.com/questions/tagged/chart.js.
+  
+  - type: markdown
+    attributes:
+      value: "Bug reports MUST be submitted with an interactive example: https://codepen.io/leelenaleee/pen/WNyJXEe."
+
+  - type: markdown
+    attributes:
+      value: Chart.js versions lower then 4.x are NOT supported anymore, new issues will be disregarded.
+
+  - type: textarea
+    attributes:
+      label: Expected behavior
+      description: Tell us what should happen.
+    validations:
+      required: true
+
+  - type: textarea
+    attributes:
+      label: Current behavior
+      description: Tell us what happens instead of the expected behavior.
+    validations:
+      required: true
+
+  - type: input
+    attributes:
+      label: Reproducible sample
+      description: |
+        Please provide issue reproduction.
+        You can use [this codepen](https://codepen.io/leelenaleee/pen/WNyJXEe) to make a reproducible sample.
+
+        Major framework wrappers for chart.js templates:
+        [vue-chart-3 sandbox (Vue)](https://codesandbox.io/s/vue-chart-3-chart-js-issue-template-bpg7k?file=/src/App.vue)
+        [ng2-charts sandbox (Angular)](https://codesandbox.io/s/ng2charts-chart-js-issue-template-fhezt?file=/src/app/app.component.ts)
+        [react-chartjs-2 sandbox (React)](https://codesandbox.io/p/sandbox/react-chartjs-2-chart-js-issue-template-v4-forked-lqz5tn?file=%2Fsrc%2FApp.tsx)
+
+        For typescript issues you can make use of [this TS Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgYQBYENZwL5wGZQQhwDkAxhrAHQBWAziQNwCwAUGwG6ZxkwAecALxwAJhDIBXEAFMAdjCoBzaTACiAG2kz5AIQCeASREAKAEQg9aTDFMBKOOjpwAEgBUAsgBlk6WVzoaWnIwLKxcUHAWVljCstIA7iiUMMa8fAA0iGxwOXAwemDSAFyk6sBxJOnZuSLoMOglCNW5ueroAEbS6nQlANqmAErSIqaZpjrqEtKjcKYAml3qEPEzpgDiUNJyqwAKElBgmqsA8lC+yqYAulWsLS219XQqPXC9Tbd3n22d6iUkAMRwCB4OAANQgMGkDBun0+DwarwAjAAmTKIgCcmQAzJkAKyZVFwLHXZp3bCXUnYGG5CBgGDACCyF7vT50MjoTTM0ktPiNbl3fk5KmCuB6PkfWFwEXYfkyiU4NjYWyMIA) to make a reproducible sample.
+
+        If filing a bug against `master`, you may reference the latest code via
+        https://www.chartjs.org/dist/master/chart.umd.min.js (changing the filename to
+        point at the file you need as appropriate). Do not rely on these files for
+        production purposes as they may be removed at any time.
+    validations:
+      required: true
+  
+  - type: textarea
+    attributes:
+      label: Optional extra steps/info to reproduce
+
+  - type: textarea
+    attributes:
+      label: Possible solution
+      description: If you have suggestions on a fix for the bug.
+
+  - type: textarea
+    attributes:
+      label: Context
+      description: |
+        How has this issue affected you? What are you trying to accomplish?
+        Providing context helps us come up with a solution that is most useful in the real world.
+
+  - type: input
+    attributes:
+      label: chart.js version
+      description: Which version of `chart.js` are you using?
+      placeholder: "v0.0.0"
+    validations:
+      required: true
+
+  - type: input
+    attributes:
+      label: Browser name and version
+
+  - type: input
+    attributes:
+      label: Link to your project
 
src/main/webapp/publish/adm/script/Chart.js-master/.github/ISSUE_TEMPLATE/config.yml (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,5 @@
+blank_issues_enabled: false
+contact_links:
+  - name: Support, Help, and Advice
+    url: https://stackoverflow.com/questions/tagged/chart.js
+    about: Need help or support? Head to https://stackoverflow.com/questions/tagged/chart.js
 
src/main/webapp/publish/adm/script/Chart.js-master/.github/ISSUE_TEMPLATE/docs.yml (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/.github/ISSUE_TEMPLATE/docs.yml
@@ -0,0 +1,31 @@
+name: Documentation
+description: Are the docs lacking or missing something?
+labels: ["type: documentation"]
+body:
+  - type: checkboxes
+    attributes:
+      label: "Documentation Is:"
+      options:
+        - label: Missing or needed?
+        - label: Confusing
+        - label: Not sure?
+
+  - type: textarea
+    attributes:
+      label: Please Explain in Detail...
+    validations:
+      required: true
+
+  - type: textarea
+    attributes:
+      label: Your Proposal for Changes
+    validations:
+      required: true
+  
+  - type: input
+    attributes:
+      label: Example
+      description: |
+        Provide a link to a live example demonstrating the issue or feature to be documented:
+        Normal: https://codepen.io/pen?template=BapRepQ
+        TS: [TS Playground](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgYQBYENZwL5wGZQQhwDkAxhrAHQBWAziQNwCwAUGwG6ZxkwAecALxwAJhDIBXEAFMAdjCoBzaTACiAG2kz5AIQCeASREAKAEQg9aTDFMBKOOjpwAEgBUAsgBlk6WVzoaWnIwLKxcUHAWVljCstIA7iiUMMa8fAA0iGxwOXAwemDSAFyk6sBxJOnZuSLoMOglCNW5ueroAEbS6nQlANqmAErSIqaZpjrqEtKjcKYAml3qEPEzpgDiUNJyqwAKElBgmqsA8lC+yqYAulWsLS219XQqPXC9Tbd3n22d6iUkAMRwCB4OAANQgMGkDBun0+DwarwAjAAmTKIgCcmQAzJkAKyZVFwLHXZp3bCXUnYGG5CBgGDACCyF7vT50MjoTTM0ktPiNbl3fk5KmCuB6PkfWFwEXYfkyiU4NjYWyMIA)
 
src/main/webapp/publish/adm/script/Chart.js-master/.github/ISSUE_TEMPLATE/feature.yml (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/.github/ISSUE_TEMPLATE/feature.yml
@@ -0,0 +1,28 @@
+name: Feature Request
+description: Suggest an idea
+labels: ["type: enhancement"]
+body:
+  - type: markdown
+    attributes:
+      value: |
+        Most features should start as plugins outside of Chart.js
+        (https://www.chartjs.org/docs/latest/developers/plugins.html).
+        Please consider whether your changes are useful for all users, or if this is
+        specific to your usecase and a Chart.js plugin would be more appropriate.
+
+        Need help or tech support? Please don't open an issue!
+        Head to https://stackoverflow.com/questions/tagged/chart.js
+
+  - type: textarea
+    attributes:
+      label: Feature Proposal
+      description: |
+        What are you trying to accomplish?
+        Providing context helps us come up with a solution that is most useful in the real world
+    validations:
+      required: true
+
+  - type: textarea
+    attributes:
+      label: Possible Implementation
+      description: Not obligatory, but suggest ideas for how to implement the addition or change
 
src/main/webapp/publish/adm/script/Chart.js-master/.github/PULL_REQUEST_TEMPLATE.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,11 @@
+<!--
+Please consider the following before submitting a pull request:
+
+Guidelines for contributing: https://github.com/chartjs/Chart.js/blob/master/docs/developers/contributing.md
+
+Example of changes on an interactive website such as the following:
+- https://jsbin.com/
+- https://jsfiddle.net/
+- https://codepen.io/pen/
+- Premade template: https://codepen.io/pen?template=wvezeOq
+-->
 
src/main/webapp/publish/adm/script/Chart.js-master/.github/dependabot.yml (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/.github/dependabot.yml
@@ -0,0 +1,6 @@
+version: 2
+updates:
+  - package-ecosystem: "github-actions"
+    directory: "/"
+    schedule:
+      interval: "weekly"
 
src/main/webapp/publish/adm/script/Chart.js-master/.github/release-drafter.yml (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/.github/release-drafter.yml
@@ -0,0 +1,54 @@
+name-template: 'v$RESOLVED_VERSION'
+tag-template: 'v$RESOLVED_VERSION'
+categories:
+  - title: 'Breaking Changes'
+    labels:
+        - 'breaking change'
+  - title: 'Enhancements'
+    labels:
+      - 'type: enhancement'
+  - title: 'Performance'
+    labels:
+      - 'type: performance'
+  - title: 'Bugs Fixed'
+    labels:
+      - 'type: bug'
+  - title: 'Types'
+    labels:
+      - 'type: types'
+  - title: 'Documentation'
+    labels:
+      - 'type: documentation'
+  - title: 'Development'
+    labels:
+      - 'type: chore'
+      - 'dependencies'
+exclude-labels:
+  - 'type: infrastructure'
+change-template: '- #$NUMBER $TITLE'
+change-title-escapes: '\<*_&`#@'
+version-resolver:
+  major:
+    labels:
+      - 'breaking change'
+  minor:
+    labels:
+      - 'type: enhancement'
+  patch:
+    labels:
+      - 'type: bug'
+      - 'type: chore'
+      - 'type: types'
+  default: patch
+template: |
+  # Essential Links
+
+  * [npm](https://www.npmjs.com/package/chart.js)
+  * [Migration guide](https://www.chartjs.org/docs/$RESOLVED_VERSION/migration/v4-migration.html)
+  * [Docs](https://www.chartjs.org/docs/$RESOLVED_VERSION/)
+  * [API](https://www.chartjs.org/docs/$RESOLVED_VERSION/api/)
+  * [Samples](https://www.chartjs.org/docs/$RESOLVED_VERSION/samples/information.html)
+
+  $CHANGES
+
+  Thanks to $CONTRIBUTORS
 
src/main/webapp/publish/adm/script/Chart.js-master/.github/workflows/ci.yml (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/.github/workflows/ci.yml
@@ -0,0 +1,114 @@
+name: CI
+
+on:
+  push:
+    branches:
+      - master
+      - "2.9"
+  pull_request:
+    branches:
+      - master
+      - "2.9"
+  workflow_dispatch:
+permissions:
+  contents: read
+
+jobs:
+  build:
+    permissions:
+      checks: write  # for coverallsapp/github-action to create new checks
+      contents: read  # for dorny/paths-filter to fetch a list of changed files
+      pull-requests: read  # for dorny/paths-filter to read pull requests
+    runs-on: ${{ matrix.os }}
+
+    outputs:
+      coveralls: ${{ steps.changes.outputs.src }}
+
+    strategy:
+      matrix:
+        os: [ubuntu-latest, windows-latest]
+      fail-fast: false
+
+    steps:
+      - uses: actions/checkout@v6
+      - uses: pnpm/action-setup@v4.2.0
+      - name: Use Node.js
+        uses: actions/setup-node@v6
+        with:
+          node-version: 16
+          cache: pnpm
+      - uses: dorny/paths-filter@v3
+        id: changes
+        with:
+          filters: |
+            docs:
+              - 'docs/**'
+              - 'package.json'
+              - 'tsconfig.json'
+            src:
+              - 'src/**'
+              - 'package.json'
+            test:
+              - 'test/**'
+              - 'karma.conf.js'
+              - 'package.json'
+            types:
+              - 'package.json'
+              - 'tsconfig.json'
+      - name: Install
+        run: pnpm install
+      - name: Lint
+        run: pnpm run lint
+      - name: Build
+        run: pnpm run build
+      - name: Test
+        if: |
+          (steps.changes.outputs.src == 'true' ||
+          steps.changes.outputs.test == 'true') &&
+          runner.os != 'Windows'
+        run: |
+          pnpm run build
+          if [ "${{ runner.os }}" == "macOS" ]; then
+            pnpm run test-ci --browsers chrome,safari
+          else
+            xvfb-run --auto-servernum pnpm run test-ci
+          fi
+        shell: bash
+      - name: Package
+        if: steps.changes.outputs.docs == 'true'
+        run: |
+          pnpm run docs
+          pnpm pack
+      - name: Coveralls Parallel - Chrome
+        if: |
+          steps.changes.outputs.src == 'true' &&
+          runner.os != 'Windows'
+        uses: coverallsapp/github-action@master
+        with:
+          github-token: ${{ secrets.github_token }}
+          path-to-lcov: './coverage/chrome/lcov.info'
+          flag-name: ${{ matrix.os }}-chrome
+          parallel: true
+      - name: Coveralls Parallel - Firefox
+        if: |
+          steps.changes.outputs.src == 'true' &&
+          runner.os != 'Windows'
+        uses: coverallsapp/github-action@master
+        with:
+          github-token: ${{ secrets.github_token }}
+          path-to-lcov: './coverage/firefox/lcov.info'
+          flag-name: ${{ matrix.os }}-firefox
+          parallel: true
+
+  finish:
+    permissions:
+      checks: write  # for coverallsapp/github-action to create new checks
+    needs: build
+    runs-on: ubuntu-latest
+    steps:
+      - name: Coveralls Finished
+        if: needs.build.outputs.coveralls == 'true'
+        uses: coverallsapp/github-action@master
+        with:
+          github-token: ${{ secrets.github_token }}
+          parallel-finished: true
 
src/main/webapp/publish/adm/script/Chart.js-master/.github/workflows/compressed-size.yml (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/.github/workflows/compressed-size.yml
@@ -0,0 +1,23 @@
+name: Compressed Size
+
+on: [pull_request]
+
+permissions:
+  contents: read
+
+jobs:
+  build:
+
+    permissions:
+      checks: write  # for preactjs/compressed-size-action to create and update the checks
+      contents: read  # for actions/checkout to fetch code
+      issues: write  # for preactjs/compressed-size-action to create comments
+      pull-requests: write  # for preactjs/compressed-size-action to write a PR review
+    runs-on: ubuntu-latest
+
+    steps:
+    - uses: actions/checkout@v6
+    - uses: pnpm/action-setup@v4.2.0
+    - uses: preactjs/compressed-size-action@v2
+      with:
+        repo-token: "${{ secrets.GITHUB_TOKEN }}"
 
src/main/webapp/publish/adm/script/Chart.js-master/.github/workflows/deploy-docs.yml (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/.github/workflows/deploy-docs.yml
@@ -0,0 +1,43 @@
+# This workflow publishes new documentation to https://chartjs.org/docs/master after every commit
+name: Deploy docs
+
+on:
+  push:
+    branches:
+      - master
+
+permissions:
+  contents: read
+
+jobs:
+  correct_repository:
+    permissions:
+      contents: none
+    runs-on: ubuntu-latest
+    steps:
+      - name: fail on fork
+        if: github.repository_owner != 'chartjs'
+        run: exit 1
+
+  build:
+    needs: correct_repository
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v6
+      - uses: pnpm/action-setup@v4.2.0
+      - name: Use Node.js
+        uses: actions/setup-node@v6
+        with:
+          node-version: 16
+          cache: pnpm
+      - name: Package & Deploy Docs
+        run: |
+          pnpm install
+          pnpm run build
+          ./scripts/docs-config.sh "master"
+          pnpm run docs
+          pnpm pack
+          ./scripts/deploy-docs.sh "master"
+        env:
+          GITHUB_TOKEN: ${{ secrets.GH_AUTH_TOKEN }}
+          GH_AUTH_EMAIL: ${{ secrets.GH_AUTH_EMAIL }}
 
src/main/webapp/publish/adm/script/Chart.js-master/.github/workflows/release-drafter.yml (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/.github/workflows/release-drafter.yml
@@ -0,0 +1,31 @@
+name: Release Drafter
+
+on:
+  push:
+    branches:
+      - master
+  workflow_dispatch:
+
+permissions:
+  contents: read
+
+jobs:
+  correct_repository:
+    permissions:
+      contents: none
+    runs-on: ubuntu-latest
+    steps:
+    - name: fail on fork
+      if: github.repository_owner != 'chartjs'
+      run: exit 1
+
+  update_release_draft:
+    permissions:
+      contents: write  # for release-drafter/release-drafter to create a github release
+      pull-requests: write  # for release-drafter/release-drafter to add label to PR
+    needs: correct_repository
+    runs-on: ubuntu-latest
+    steps:
+      - uses: release-drafter/release-drafter@v6
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 
src/main/webapp/publish/adm/script/Chart.js-master/.github/workflows/release.yml (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/.github/workflows/release.yml
@@ -0,0 +1,96 @@
+name: Release
+
+on:
+  release:
+    types: [published]
+
+permissions:
+  contents: read
+
+jobs:
+  setup:
+    permissions:
+      contents: none
+    runs-on: ubuntu-latest
+    outputs:
+      version: ${{ steps.trim.outputs.version }}
+    steps:
+      - id: trim
+        run: echo "version=${TAG:1}" >> $GITHUB_OUTPUT
+        env:
+          TAG: ${{ github.event.release.tag_name }}
+
+  release:
+    permissions:
+      contents: write  # for actions/upload-release-asset to upload release asset
+    needs: setup
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v6
+      - uses: pnpm/action-setup@v4.2.0
+      - uses: actions/setup-node@v6
+        with:
+          registry-url: https://registry.npmjs.org/
+          node-version: 16
+          cache: pnpm
+      - name: Setup and build
+        run: |
+          pnpm install
+          pnpm install -g json
+          json -I -f package.json -e "this.version=\"$VERSION\""
+          pnpm run build
+          ./scripts/docs-config.sh "$VERSION" release
+          pnpm run docs
+          pnpm pack
+        env:
+          VERSION: ${{ needs.setup.outputs.version }}
+      - name: Publish to NPM
+        run: ./scripts/publish.sh
+        env:
+          NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
+          VERSION: ${{ needs.setup.outputs.version }}
+      - name: Deploy Docs
+        run: ./scripts/deploy-docs.sh "$VERSION" release
+        env:
+          GITHUB_TOKEN: ${{ secrets.GH_AUTH_TOKEN }}
+          GH_AUTH_EMAIL: ${{ secrets.GH_AUTH_EMAIL }}
+          VERSION: ${{ needs.setup.outputs.version }}
+      - name: Upload NPM package file
+        id: upload-npm-package-file
+        uses: actions/upload-release-asset@v1
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+          VERSION: ${{ needs.setup.outputs.version }}
+        with:
+          upload_url: ${{ github.event.release.upload_url }}
+          asset_path: ${{ format('chart.js-{0}.tgz', needs.setup.outputs.version) }}
+          asset_name: ${{ format('chart.js-{0}.tgz', needs.setup.outputs.version) }}
+          asset_content_type: application/gzip
+  release-tag:
+    needs: [setup, release]
+    runs-on: ubuntu-latest
+    if: "!github.event.release.prerelease"
+    steps:
+      - uses: actions/checkout@v6
+      - uses: pnpm/action-setup@v4.2.0
+      - uses: actions/setup-node@v6
+        with:
+          registry-url: https://registry.npmjs.org/
+          node-version: 16
+          cache: pnpm
+      - name: Setup and build
+        run: |
+          pnpm install
+          pnpm install -g json
+          json -I -f package.json -e "this.version=\"$VERSION\""
+          pnpm run build
+          ./scripts/docs-config.sh "$VERSION"
+          pnpm run docs
+        env:
+          VERSION: ${{ needs.setup.outputs.version }}
+      - name: Deploy Docs
+        run: ./scripts/deploy-docs.sh "$VERSION"
+        env:
+          GITHUB_TOKEN: ${{ secrets.GH_AUTH_TOKEN }}
+          GH_AUTH_EMAIL: ${{ secrets.GH_AUTH_EMAIL }}
+          VERSION: ${{ needs.setup.outputs.version }}
 
src/main/webapp/publish/adm/script/Chart.js-master/.gitignore (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/.gitignore
@@ -0,0 +1,38 @@
+# Deployment
+/coverage
+/custom
+/dist
+/gh-pages
+
+# Node.js
+node_modules/
+npm-debug.log*
+
+# Docs
+.cache-loader
+build/
+
+# Generated type docs
+docs/api
+docs/.vuepress/dist
+
+# Development
+.DS_Store
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+.idea
+.project
+.settings
+.vscode
+.zed
+*.log
+*.swp
+*.stackdump
+
+# Generated
+/test/types/autogen*.ts
+
+# Eslint
+.eslintcache
 
src/main/webapp/publish/adm/script/Chart.js-master/.htmllintrc (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/.htmllintrc
@@ -0,0 +1,19 @@
+{
+	"indent-style": "tabs",
+	"line-end-style": false,
+	"attr-quote-style": "double",
+	"spec-char-escape": false,
+	"attr-bans": [
+		"align",
+		"background",
+		"bgcolor",
+		"border",
+		"frameborder",
+		"longdesc",
+		"marginwidth",
+		"marginheight",
+		"scrolling"
+	],
+	"tag-bans": [ "b", "i" ],
+	"id-class-style": false
+}
 
src/main/webapp/publish/adm/script/Chart.js-master/LICENSE.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/LICENSE.md
@@ -0,0 +1,9 @@
+The MIT License (MIT)
+
+Copyright (c) 2014-2024 Chart.js Contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
src/main/webapp/publish/adm/script/Chart.js-master/MAINTAINING.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/MAINTAINING.md
@@ -0,0 +1,34 @@
+# Maintaining
+
+## Release Process
+
+Chart.js relies on [Travis CI](https://travis-ci.org/) to automate the library [releases](https://github.com/chartjs/Chart.js/releases).
+
+### Releasing a New Version
+
+1. Update the release version on [GitHub](https://github.com/chartjs/Chart.js/releases/new) for the release drafted by the `release-drafter` tool
+2. Publish the release
+3. follow the build process on [GitHub Actions](https://github.com/chartjs/Chart.js/actions?query=workflow%3A%22Node.js+Package%22)
+
+Creation of this tag triggers a new build:
+
+* `Chart.js.zip` package is generated, containing dist files and examples
+* `dist/*.js`, `types/*.ts`, and `Chart.js.zip` are attached to the GitHub release (downloads)
+* A new npm package is published on [npmjs](https://www.npmjs.com/package/chart.js)
+
+Finally, [cdnjs](https://cdnjs.com/libraries/Chart.js) is automatically updated from the npm release.
+
+### Releasing a patch version
+
+If there is a need to create a patch version for an older release:
+
+1. Create a branch for the patch version (without the `v` prefix)
+2. Cherry pick the needed commit(s) to that new branch from master
+3. Trigger the release-drafter workflow on that branch from the actions.
+4. Follow the procedure for [Releasing a New Version](#releasing-a-new-version)
+
+### Further Reading
+
+* [GitHub Action releases](https://github.com/chartjs/Chart.js/pull/7891)
+* [dist/* files](https://github.com/chartjs/Chart.js/issues/3033)
+* [cdnjs npm auto update](https://github.com/cdnjs/cdnjs/pull/8401)
 
src/main/webapp/publish/adm/script/Chart.js-master/README.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/README.md
@@ -0,0 +1,38 @@
+<p align="center">
+  <a href="https://www.chartjs.org/" target="_blank">
+    <img src="https://www.chartjs.org/media/logo-title.svg" alt="https://www.chartjs.org/"><br/>
+  </a>
+    Simple yet flexible JavaScript charting for designers & developers
+</p>
+
+<p align="center">
+    <a href="https://www.chartjs.org/docs/latest/getting-started/installation.html"><img src="https://img.shields.io/github/release/chartjs/Chart.js.svg?style=flat-square&maxAge=600" alt="Downloads"></a>
+    <a href="https://github.com/chartjs/Chart.js/actions?query=workflow%3ACI+branch%3Amaster"><img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/chartjs/Chart.js/ci.yml?branch=master&style=flat-square"></a>
+    <a href="https://coveralls.io/github/chartjs/Chart.js?branch=master"><img src="https://img.shields.io/coveralls/chartjs/Chart.js.svg?style=flat-square&maxAge=600" alt="Coverage"></a>
+    <a href="https://github.com/chartjs/awesome"><img src="https://awesome.re/badge-flat2.svg" alt="Awesome"></a>
+    <a href="https://discord.gg/HxEguTK6av"><img src="https://img.shields.io/badge/discord-chartjs-blue?style=flat-square&maxAge=3600" alt="Discord"></a>
+</p>
+
+## Documentation
+
+All the links point to the new version 4 of the lib.
+
+* [Introduction](https://www.chartjs.org/docs/latest/)
+* [Getting Started](https://www.chartjs.org/docs/latest/getting-started/index)
+* [General](https://www.chartjs.org/docs/latest/general/data-structures)
+* [Configuration](https://www.chartjs.org/docs/latest/configuration/index)
+* [Charts](https://www.chartjs.org/docs/latest/charts/line)
+* [Axes](https://www.chartjs.org/docs/latest/axes/index)
+* [Developers](https://www.chartjs.org/docs/latest/developers/index)
+* [Popular Extensions](https://github.com/chartjs/awesome)
+* [Samples](https://www.chartjs.org/samples/)
+
+In case you are looking for an older version of the docs, you will have to specify the specific version in the url like this: [https://www.chartjs.org/docs/2.9.4/](https://www.chartjs.org/docs/2.9.4/)
+
+## Contributing
+
+Instructions on building and testing Chart.js can be found in [the documentation](https://www.chartjs.org/docs/master/developers/contributing.html#building-and-testing). Before submitting an issue or a pull request, please take a moment to look over the [contributing guidelines](https://www.chartjs.org/docs/master/developers/contributing) first. For support, please post questions on [Stack Overflow](https://stackoverflow.com/questions/tagged/chart.js) with the `chart.js` tag.
+
+## License
+
+Chart.js is available under the [MIT license](LICENSE.md).
 
src/main/webapp/publish/adm/script/Chart.js-master/auto/auto.cjs (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/auto/auto.cjs
@@ -0,0 +1,6 @@
+const chartjs = require('../dist/chart.cjs');
+const {Chart, registerables} = chartjs;
+
+Chart.register(...registerables);
+
+module.exports = Object.assign(Chart, chartjs);
 
src/main/webapp/publish/adm/script/Chart.js-master/auto/auto.d.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/auto/auto.d.ts
@@ -0,0 +1,4 @@
+import {Chart} from '../dist/types.js';
+
+export * from '../dist/types.js';
+export default Chart;
 
src/main/webapp/publish/adm/script/Chart.js-master/auto/auto.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/auto/auto.js
@@ -0,0 +1,6 @@
+import {Chart, registerables} from '../dist/chart.js';
+
+Chart.register(...registerables);
+
+export * from '../dist/chart.js';
+export default Chart;
 
src/main/webapp/publish/adm/script/Chart.js-master/auto/package.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/auto/package.json
@@ -0,0 +1,14 @@
+{
+    "name": "chart.js-auto",
+    "private": true,
+    "description": "Auto registering package. Exists to support bundlers without exports support such as webpack 4.",
+    "type": "module",
+    "main": "./auto.cjs",
+    "module": "./auto.js",
+    "exports": {
+        "types": "./auto.d.ts",
+        "import": "./auto.js",
+        "require": "./auto.cjs"
+    },
+    "types": "./auto.d.ts"
+}
 
src/main/webapp/publish/adm/script/Chart.js-master/chart.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/chart.js
@@ -0,0 +1,14 @@
+/*!
+ * Chart.js v4.5.1
+ * https://www.chartjs.org
+ * (c) 2025 Chart.js Contributors
+ * Released under the MIT License
+ */
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";var t=Object.freeze({__proto__:null,get Colors(){return Jo},get Decimation(){return ta},get Filler(){return ba},get Legend(){return Ma},get SubTitle(){return Pa},get Title(){return ka},get Tooltip(){return Na}});function e(){}const i=(()=>{let t=0;return()=>t++})();function s(t){return null==t}function n(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function o(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function a(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function r(t,e){return a(t)?t:e}function l(t,e){return void 0===t?e:t}const h=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:+t/e,c=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function d(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function u(t,e,i,s){let a,r,l;if(n(t))if(r=t.length,s)for(a=r-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;a<r;a++)e.call(i,t[a],a);else if(o(t))for(l=Object.keys(t),r=l.length,a=0;a<r;a++)e.call(i,t[l[a]],l[a])}function f(t,e){let i,s,n,o;if(!t||!e||t.length!==e.length)return!1;for(i=0,s=t.length;i<s;++i)if(n=t[i],o=e[i],n.datasetIndex!==o.datasetIndex||n.index!==o.index)return!1;return!0}function g(t){if(n(t))return t.map(g);if(o(t)){const e=Object.create(null),i=Object.keys(t),s=i.length;let n=0;for(;n<s;++n)e[i[n]]=g(t[i[n]]);return e}return t}function p(t){return-1===["__proto__","prototype","constructor"].indexOf(t)}function m(t,e,i,s){if(!p(t))return;const n=e[t],a=i[t];o(n)&&o(a)?x(n,a,s):e[t]=g(a)}function x(t,e,i){const s=n(e)?e:[e],a=s.length;if(!o(t))return t;const r=(i=i||{}).merger||m;let l;for(let e=0;e<a;++e){if(l=s[e],!o(l))continue;const n=Object.keys(l);for(let e=0,s=n.length;e<s;++e)r(n[e],t,l,i)}return t}function b(t,e){return x(t,e,{merger:_})}function _(t,e,i){if(!p(t))return;const s=e[t],n=i[t];o(s)&&o(n)?b(s,n):Object.prototype.hasOwnProperty.call(e,t)||(e[t]=g(n))}const y={"":t=>t,x:t=>t.x,y:t=>t.y};function v(t){const e=t.split("."),i=[];let s="";for(const t of e)s+=t,s.endsWith("\\")?s=s.slice(0,-1)+".":(i.push(s),s="");return i}function M(t,e){const i=y[e]||(y[e]=function(t){const e=v(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}const k=t=>void 0!==t,S=t=>"function"==typeof t,P=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function D(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const C=Math.PI,O=2*C,A=O+C,T=Number.POSITIVE_INFINITY,L=C/180,E=C/2,R=C/4,I=2*C/3,z=Math.log10,F=Math.sign;function V(t,e,i){return Math.abs(t-e)<i}function B(t){const e=Math.round(t);t=V(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor(z(t))),s=t/i;return(s<=1?1:s<=2?2:s<=5?5:10)*i}function W(t){const e=[],i=Math.sqrt(t);let s;for(s=1;s<i;s++)t%s==0&&(e.push(s),e.push(t/s));return i===(0|i)&&e.push(i),e.sort(((t,e)=>t-e)).pop(),e}function N(t){return!function(t){return"symbol"==typeof t||"object"==typeof t&&null!==t&&!(Symbol.toPrimitive in t||"toString"in t||"valueOf"in t)}(t)&&!isNaN(parseFloat(t))&&isFinite(t)}function H(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}function j(t,e,i){let s,n,o;for(s=0,n=t.length;s<n;s++)o=t[s][i],isNaN(o)||(e.min=Math.min(e.min,o),e.max=Math.max(e.max,o))}function $(t){return t*(C/180)}function Y(t){return t*(180/C)}function U(t){if(!a(t))return;let e=1,i=0;for(;Math.round(t*e)/e!==t;)e*=10,i++;return i}function X(t,e){const i=e.x-t.x,s=e.y-t.y,n=Math.sqrt(i*i+s*s);let o=Math.atan2(s,i);return o<-.5*C&&(o+=O),{angle:o,distance:n}}function q(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function K(t,e){return(t-e+A)%O-C}function G(t){return(t%O+O)%O}function J(t,e,i,s){const n=G(t),o=G(e),a=G(i),r=G(o-n),l=G(a-n),h=G(n-o),c=G(n-a);return n===o||n===a||s&&o===a||r>l&&h<c}function Z(t,e,i){return Math.max(e,Math.min(i,t))}function Q(t){return Z(t,-32768,32767)}function tt(t,e,i,s=1e-6){return t>=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function et(t,e,i){i=i||(i=>t[i]<e);let s,n=t.length-1,o=0;for(;n-o>1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const it=(t,e,i,s)=>et(t,i,s?s=>{const n=t[s][e];return n<i||n===i&&t[s+1][e]===i}:s=>t[s][e]<i),st=(t,e,i)=>et(t,i,(s=>t[s][e]>=i));function nt(t,e,i){let s=0,n=t.length;for(;s<n&&t[s]<e;)s++;for(;n>s&&t[n-1]>i;)n--;return s>0||n<t.length?t.slice(s,n):t}const ot=["push","pop","shift","splice","unshift"];function at(t,e){t._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),ot.forEach((e=>{const i="_onData"+w(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),n}})})))}function rt(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(ot.forEach((e=>{delete t[e]})),delete t._chartjs)}function lt(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const ht="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function ct(t,e){let i=[],s=!1;return function(...n){i=n,s||(s=!0,ht.call(window,(()=>{s=!1,t.apply(e,i)})))}}function dt(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const ut=t=>"start"===t?"left":"end"===t?"right":"center",ft=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2,gt=(t,e,i,s)=>t===(s?"left":"right")?i:"center"===t?(e+i)/2:e;function pt(t,e,i){const n=e.length;let o=0,a=n;if(t._sorted){const{iScale:r,vScale:l,_parsed:h}=t,c=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null,d=r.axis,{min:u,max:f,minDefined:g,maxDefined:p}=r.getUserBounds();if(g){if(o=Math.min(it(h,d,u).lo,i?n:it(e,d,r.getPixelForValue(u)).lo),c){const t=h.slice(0,o+1).reverse().findIndex((t=>!s(t[l.axis])));o-=Math.max(0,t)}o=Z(o,0,n-1)}if(p){let t=Math.max(it(h,r.axis,f,!0).hi+1,i?0:it(e,d,r.getPixelForValue(f),!0).hi+1);if(c){const e=h.slice(t-1).findIndex((t=>!s(t[l.axis])));t+=Math.max(0,e)}a=Z(t,o,n)-o}else a=n-o}return{start:o,count:a}}function mt(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}class xt{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=ht.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(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){const e=this._charts;let 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){const 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;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let 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)}}var bt=new xt;
+/*!
+ * @kurkle/color v0.3.2
+ * https://github.com/kurkle/color#readme
+ * (c) 2023 Jukka Kurkela
+ * Released under the MIT License
+ */function _t(t){return t+.5|0}const yt=(t,e,i)=>Math.max(Math.min(t,i),e);function vt(t){return yt(_t(2.55*t),0,255)}function Mt(t){return yt(_t(255*t),0,255)}function wt(t){return yt(_t(t/2.55)/100,0,1)}function kt(t){return yt(_t(100*t),0,100)}const St={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},Pt=[..."0123456789ABCDEF"],Dt=t=>Pt[15&t],Ct=t=>Pt[(240&t)>>4]+Pt[15&t],Ot=t=>(240&t)>>4==(15&t);function At(t){var e=(t=>Ot(t.r)&&Ot(t.g)&&Ot(t.b)&&Ot(t.a))(t)?Dt:Ct;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const Tt=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Lt(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Et(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function Rt(t,e,i){const s=Lt(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function It(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=function(t,e,i,s,n){return t===n?(e-i)/s+(e<i?6:0):e===n?(i-t)/s+2:(t-e)/s+4}(e,i,s,h,n),r=60*r+.5),[0|r,l||0,a]}function zt(t,e,i,s){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,i,s)).map(Mt)}function Ft(t,e,i){return zt(Lt,t,e,i)}function Vt(t){return(t%360+360)%360}function Bt(t){const e=Tt.exec(t);let i,s=255;if(!e)return;e[5]!==i&&(s=e[6]?vt(+e[5]):Mt(+e[5]));const n=Vt(+e[2]),o=+e[3]/100,a=+e[4]/100;return i="hwb"===e[1]?function(t,e,i){return zt(Rt,t,e,i)}(n,o,a):"hsv"===e[1]?function(t,e,i){return zt(Et,t,e,i)}(n,o,a):Ft(n,o,a),{r:i[0],g:i[1],b:i[2],a:s}}const Wt={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Nt={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};let Ht;function jt(t){Ht||(Ht=function(){const t={},e=Object.keys(Nt),i=Object.keys(Wt);let s,n,o,a,r;for(s=0;s<e.length;s++){for(a=r=e[s],n=0;n<i.length;n++)o=i[n],r=r.replace(o,Wt[o]);o=parseInt(Nt[a],16),t[r]=[o>>16&255,o>>8&255,255&o]}return t}(),Ht.transparent=[0,0,0,0]);const e=Ht[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const $t=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const Yt=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Ut=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Xt(t,e,i){if(t){let s=It(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=Ft(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function qt(t,e){return t?Object.assign(e||{},t):t}function Kt(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=Mt(t[3]))):(e=qt(t,{r:0,g:0,b:0,a:1})).a=Mt(e.a),e}function Gt(t){return"r"===t.charAt(0)?function(t){const e=$t.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=e[8]?vt(t):yt(255*t,0,255)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?vt(i):yt(i,0,255)),s=255&(e[4]?vt(s):yt(s,0,255)),n=255&(e[6]?vt(n):yt(n,0,255)),{r:i,g:s,b:n,a:o}}}(t):Bt(t)}class Jt{constructor(t){if(t instanceof Jt)return t;const e=typeof t;let i;var s,n,o;"object"===e?i=Kt(t):"string"===e&&(o=(s=t).length,"#"===s[0]&&(4===o||5===o?n={r:255&17*St[s[1]],g:255&17*St[s[2]],b:255&17*St[s[3]],a:5===o?17*St[s[4]]:255}:7!==o&&9!==o||(n={r:St[s[1]]<<4|St[s[2]],g:St[s[3]]<<4|St[s[4]],b:St[s[5]]<<4|St[s[6]],a:9===o?St[s[7]]<<4|St[s[8]]:255})),i=n||jt(t)||Gt(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=qt(this._rgb);return t&&(t.a=wt(t.a)),t}set rgb(t){this._rgb=Kt(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${wt(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):void 0;var t}hexString(){return this._valid?At(this._rgb):void 0}hslString(){return this._valid?function(t){if(!t)return;const e=It(t),i=e[0],s=kt(e[1]),n=kt(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${wt(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,s=t.rgb;let n;const o=e===n?.5:e,a=2*o-1,r=i.a-s.a,l=((a*r==-1?a:(a+r)/(1+a*r))+1)/2;n=1-l,i.r=255&l*i.r+n*s.r+.5,i.g=255&l*i.g+n*s.g+.5,i.b=255&l*i.b+n*s.b+.5,i.a=o*i.a+(1-o)*s.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,i){const s=Ut(wt(t.r)),n=Ut(wt(t.g)),o=Ut(wt(t.b));return{r:Mt(Yt(s+i*(Ut(wt(e.r))-s))),g:Mt(Yt(n+i*(Ut(wt(e.g))-n))),b:Mt(Yt(o+i*(Ut(wt(e.b))-o))),a:t.a+i*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new Jt(this.rgb)}alpha(t){return this._rgb.a=Mt(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=_t(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Xt(this._rgb,2,t),this}darken(t){return Xt(this._rgb,2,-t),this}saturate(t){return Xt(this._rgb,1,t),this}desaturate(t){return Xt(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=It(t);i[0]=Vt(i[0]+e),i=Ft(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function Zt(t){if(t&&"object"==typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function Qt(t){return Zt(t)?t:new Jt(t)}function te(t){return Zt(t)?t:new Jt(t).saturate(.5).darken(.1).hexString()}const ee=["x","y","borderWidth","radius","tension"],ie=["color","borderColor","backgroundColor"];const se=new Map;function ne(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=se.get(i);return s||(s=new Intl.NumberFormat(t,e),se.set(i,s)),s}(e,i).format(t)}const oe={values:t=>n(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=z(Math.abs(o)),r=isNaN(a)?1:Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),ne(t,s,l)},logarithmic(t,e,i){if(0===t)return"0";const s=i[e].significand||t/Math.pow(10,Math.floor(z(t)));return[1,2,3,5,10,15].includes(s)||e>.8*i.length?oe.numeric.call(this,t,e,i):""}};var ae={formatters:oe};const re=Object.create(null),le=Object.create(null);function he(t,e){if(!e)return t;const i=e.split(".");for(let e=0,s=i.length;e<s;++e){const s=i[e];t=t[s]||(t[s]=Object.create(null))}return t}function ce(t,e,i){return"string"==typeof e?x(he(t,e),i):x(he(t,""),e)}class de{constructor(t,e){this.animation=void 0,this.backgroundColor="rgba(0,0,0,0.1)",this.borderColor="rgba(0,0,0,0.1)",this.color="#666",this.datasets={},this.devicePixelRatio=t=>t.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)=>te(e.backgroundColor),this.hoverBorderColor=(t,e)=>te(e.borderColor),this.hoverColor=(t,e)=>te(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 ce(this,t,e)}get(t){return he(this,t)}describe(t,e){return ce(le,t,e)}override(t,e){return ce(re,t,e)}route(t,e,i,s){const n=he(this,t),a=he(this,i),r="_"+e;Object.defineProperties(n,{[r]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[r],e=a[s];return o(t)?Object.assign({},e,t):l(t,e)},set(t){this[r]=t}}})}apply(t){t.forEach((t=>t(this)))}}var ue=new de({_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:ie},numbers:{type:"number",properties:ee}}),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",clip:!0,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:ae.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 fe(){return"undefined"!=typeof window&&"undefined"!=typeof document}function ge(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function pe(t,e,i){let s;return"string"==typeof t?(s=parseInt(t,10),-1!==t.indexOf("%")&&(s=s/100*e.parentNode[i])):s=t,s}const me=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);function xe(t,e){return me(t).getPropertyValue(e)}const be=["top","right","bottom","left"];function _e(t,e,i){const s={};i=i?"-"+i:"";for(let n=0;n<4;n++){const o=be[n];s[o]=parseFloat(t[e+"-"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}const ye=(t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot);function ve(t,e){if("native"in t)return t;const{canvas:i,currentDevicePixelRatio:s}=e,n=me(i),o="border-box"===n.boxSizing,a=_e(n,"padding"),r=_e(n,"border","width"),{x:l,y:h,box:c}=function(t,e){const i=t.touches,s=i&&i.length?i[0]:t,{offsetX:n,offsetY:o}=s;let a,r,l=!1;if(ye(n,o,t.target))a=n,r=o;else{const t=e.getBoundingClientRect();a=s.clientX-t.left,r=s.clientY-t.top,l=!0}return{x:a,y:r,box:l}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const Me=t=>Math.round(10*t)/10;function we(t,e,i,s){const n=me(t),o=_e(n,"margin"),a=pe(n.maxWidth,t,"clientWidth")||T,r=pe(n.maxHeight,t,"clientHeight")||T,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=t&&ge(t);if(o){const t=o.getBoundingClientRect(),a=me(o),r=_e(a,"border","width"),l=_e(a,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=pe(a.maxWidth,o,"clientWidth"),n=pe(a.maxHeight,o,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||T,maxHeight:n||T}}(t,e,i);let{width:h,height:c}=l;if("content-box"===n.boxSizing){const t=_e(n,"border","width"),e=_e(n,"padding");h-=e.width+t.width,c-=e.height+t.height}h=Math.max(0,h-o.width),c=Math.max(0,s?h/s:c-o.height),h=Me(Math.min(h,a,l.maxWidth)),c=Me(Math.min(c,r,l.maxHeight)),h&&!c&&(c=Me(h/2));return(void 0!==e||void 0!==i)&&s&&l.height&&c>l.height&&(c=l.height,h=Me(Math.floor(c*s))),{width:h,height:c}}function ke(t,e,i){const s=e||1,n=Me(t.height*s),o=Me(t.width*s);t.height=Me(t.height),t.width=Me(t.width);const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const Se=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};fe()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch(t){}return t}();function Pe(t,e){const i=xe(t,e),s=i&&i.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function De(t){return!t||s(t.size)||s(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function Ce(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function Oe(t,e,i,s){let o=(s=s||{}).data=s.data||{},a=s.garbageCollect=s.garbageCollect||[];s.font!==e&&(o=s.data={},a=s.garbageCollect=[],s.font=e),t.save(),t.font=e;let r=0;const l=i.length;let h,c,d,u,f;for(h=0;h<l;h++)if(u=i[h],null==u||n(u)){if(n(u))for(c=0,d=u.length;c<d;c++)f=u[c],null==f||n(f)||(r=Ce(t,o,a,r,f))}else r=Ce(t,o,a,r,u);t.restore();const g=a.length/2;if(g>i.length){for(h=0;h<g;h++)delete o[a[h]];a.splice(0,g)}return r}function Ae(t,e,i){const s=t.currentDevicePixelRatio,n=0!==i?Math.max(i/2,.5):0;return Math.round((e-n)*s)/s+n}function Te(t,e){(e||t)&&((e=e||t.getContext("2d")).save(),e.resetTransform(),e.clearRect(0,0,t.width,t.height),e.restore())}function Le(t,e,i,s){Ee(t,e,i,s,null)}function Ee(t,e,i,s,n){let o,a,r,l,h,c,d,u;const f=e.pointStyle,g=e.rotation,p=e.radius;let m=(g||0)*L;if(f&&"object"==typeof f&&(o=f.toString(),"[object HTMLImageElement]"===o||"[object HTMLCanvasElement]"===o))return t.save(),t.translate(i,s),t.rotate(m),t.drawImage(f,-f.width/2,-f.height/2,f.width,f.height),void t.restore();if(!(isNaN(p)||p<=0)){switch(t.beginPath(),f){default:n?t.ellipse(i,s,n/2,p,0,0,O):t.arc(i,s,p,0,O),t.closePath();break;case"triangle":c=n?n/2:p,t.moveTo(i+Math.sin(m)*c,s-Math.cos(m)*p),m+=I,t.lineTo(i+Math.sin(m)*c,s-Math.cos(m)*p),m+=I,t.lineTo(i+Math.sin(m)*c,s-Math.cos(m)*p),t.closePath();break;case"rectRounded":h=.516*p,l=p-h,a=Math.cos(m+R)*l,d=Math.cos(m+R)*(n?n/2-h:l),r=Math.sin(m+R)*l,u=Math.sin(m+R)*(n?n/2-h:l),t.arc(i-d,s-r,h,m-C,m-E),t.arc(i+u,s-a,h,m-E,m),t.arc(i+d,s+r,h,m,m+E),t.arc(i-u,s+a,h,m+E,m+C),t.closePath();break;case"rect":if(!g){l=Math.SQRT1_2*p,c=n?n/2:l,t.rect(i-c,s-l,2*c,2*l);break}m+=R;case"rectRot":d=Math.cos(m)*(n?n/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n/2:p),t.moveTo(i-d,s-r),t.lineTo(i+u,s-a),t.lineTo(i+d,s+r),t.lineTo(i-u,s+a),t.closePath();break;case"crossRot":m+=R;case"cross":d=Math.cos(m)*(n?n/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n/2:p),t.moveTo(i-d,s-r),t.lineTo(i+d,s+r),t.moveTo(i+u,s-a),t.lineTo(i-u,s+a);break;case"star":d=Math.cos(m)*(n?n/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n/2:p),t.moveTo(i-d,s-r),t.lineTo(i+d,s+r),t.moveTo(i+u,s-a),t.lineTo(i-u,s+a),m+=R,d=Math.cos(m)*(n?n/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n/2:p),t.moveTo(i-d,s-r),t.lineTo(i+d,s+r),t.moveTo(i+u,s-a),t.lineTo(i-u,s+a);break;case"line":a=n?n/2:Math.cos(m)*p,r=Math.sin(m)*p,t.moveTo(i-a,s-r),t.lineTo(i+a,s+r);break;case"dash":t.moveTo(i,s),t.lineTo(i+Math.cos(m)*(n?n/2:p),s+Math.sin(m)*p);break;case!1:t.closePath()}t.fill(),e.borderWidth>0&&t.stroke()}}function Re(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.x<e.right+i&&t.y>e.top-i&&t.y<e.bottom+i}function Ie(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()}function ze(t){t.restore()}function Fe(t,e,i,s,n){if(!e)return t.lineTo(i.x,i.y);if("middle"===n){const s=(e.x+i.x)/2;t.lineTo(s,e.y),t.lineTo(s,i.y)}else"after"===n!=!!s?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y);t.lineTo(i.x,i.y)}function Ve(t,e,i,s){if(!e)return t.lineTo(i.x,i.y);t.bezierCurveTo(s?e.cp1x:e.cp2x,s?e.cp1y:e.cp2y,s?i.cp2x:i.cp1x,s?i.cp2y:i.cp1y,i.x,i.y)}function Be(t,e,i,s,n){if(n.strikethrough||n.underline){const o=t.measureText(s),a=e-o.actualBoundingBoxLeft,r=e+o.actualBoundingBoxRight,l=i-o.actualBoundingBoxAscent,h=i+o.actualBoundingBoxDescent,c=n.strikethrough?(l+h)/2:h;t.strokeStyle=t.fillStyle,t.beginPath(),t.lineWidth=n.decorationWidth||2,t.moveTo(a,c),t.lineTo(r,c),t.stroke()}}function We(t,e){const i=t.fillStyle;t.fillStyle=e.color,t.fillRect(e.left,e.top,e.width,e.height),t.fillStyle=i}function Ne(t,e,i,o,a,r={}){const l=n(e)?e:[e],h=r.strokeWidth>0&&""!==r.strokeColor;let c,d;for(t.save(),t.font=a.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]),s(e.rotation)||t.rotate(e.rotation),e.color&&(t.fillStyle=e.color),e.textAlign&&(t.textAlign=e.textAlign),e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,r),c=0;c<l.length;++c)d=l[c],r.backdrop&&We(t,r.backdrop),h&&(r.strokeColor&&(t.strokeStyle=r.strokeColor),s(r.strokeWidth)||(t.lineWidth=r.strokeWidth),t.strokeText(d,i,o,r.maxWidth)),t.fillText(d,i,o,r.maxWidth),Be(t,i,o,d,r),o+=Number(a.lineHeight);t.restore()}function He(t,e){const{x:i,y:s,w:n,h:o,radius:a}=e;t.arc(i+a.topLeft,s+a.topLeft,a.topLeft,1.5*C,C,!0),t.lineTo(i,s+o-a.bottomLeft),t.arc(i+a.bottomLeft,s+o-a.bottomLeft,a.bottomLeft,C,E,!0),t.lineTo(i+n-a.bottomRight,s+o),t.arc(i+n-a.bottomRight,s+o-a.bottomRight,a.bottomRight,E,0,!0),t.lineTo(i+n,s+a.topRight),t.arc(i+n-a.topRight,s+a.topRight,a.topRight,0,-E,!0),t.lineTo(i+a.topLeft,s)}function je(t,e=[""],i,s,n=(()=>t[0])){const o=i||t;void 0===s&&(s=ti("_fallback",t));const a={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:o,_fallback:s,_getTarget:n,override:i=>je([i,...t],e,o,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>qe(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=ti(Ue(o,t),i),void 0!==n)return Xe(t,n)?Ze(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>ei(t).includes(e),ownKeys:t=>ei(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function $e(t,e,i,s){const a={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:Ye(t,s),setContext:e=>$e(t,e,i,s),override:n=>$e(t.override(n),e,i,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>qe(t,e,(()=>function(t,e,i){const{_proxy:s,_context:a,_subProxy:r,_descriptors:l}=t;let h=s[e];S(h)&&l.isScriptable(e)&&(h=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t);let l=e(o,a||s);r.delete(t),Xe(t,l)&&(l=Ze(n._scopes,n,t,l));return l}(e,h,t,i));n(h)&&h.length&&(h=function(t,e,i,s){const{_proxy:n,_context:a,_subProxy:r,_descriptors:l}=i;if(void 0!==a.index&&s(t))return e[a.index%e.length];if(o(e[0])){const i=e,s=n._scopes.filter((t=>t!==i));e=[];for(const o of i){const i=Ze(s,n,t,o);e.push($e(i,a,r&&r[t],l))}}return e}(e,h,t,l.isIndexable));Xe(e,h)&&(h=$e(h,a,r&&r[e],l));return h}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function Ye(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:S(i)?i:()=>i,isIndexable:S(s)?s:()=>s}}const Ue=(t,e)=>t?t+w(e):e,Xe=(t,e)=>o(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function qe(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e)||"constructor"===e)return t[e];const s=i();return t[e]=s,s}function Ke(t,e,i){return S(t)?t(e,i):t}const Ge=(t,e)=>!0===t?e:"string"==typeof t?M(e,t):void 0;function Je(t,e,i,s,n){for(const o of e){const e=Ge(i,o);if(e){t.add(e);const o=Ke(e._fallback,i,n);if(void 0!==o&&o!==i&&o!==s)return o}else if(!1===e&&void 0!==s&&i!==s)return null}return!1}function Ze(t,e,i,s){const a=e._rootScopes,r=Ke(e._fallback,i,s),l=[...t,...a],h=new Set;h.add(s);let c=Qe(h,l,i,r||i,s);return null!==c&&((void 0===r||r===i||(c=Qe(h,l,r,c,s),null!==c))&&je(Array.from(h),[""],a,r,(()=>function(t,e,i){const s=t._getTarget();e in s||(s[e]={});const a=s[e];if(n(a)&&o(i))return i;return a||{}}(e,i,s))))}function Qe(t,e,i,s,n){for(;i;)i=Je(t,e,i,s,n);return i}function ti(t,e){for(const i of e){if(!i)continue;const e=i[t];if(void 0!==e)return e}}function ei(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}(t._scopes)),e}function ii(t,e,i,s){const{iScale:n}=t,{key:o="r"}=this._parsing,a=new Array(s);let r,l,h,c;for(r=0,l=s;r<l;++r)h=r+i,c=e[h],a[r]={r:n.parse(M(c,o),h)};return a}const si=Number.EPSILON||1e-14,ni=(t,e)=>e<t.length&&!t[e].skip&&t[e],oi=t=>"x"===t?"y":"x";function ai(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=q(o,n),l=q(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function ri(t,e="x"){const i=oi(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=ni(t,0);for(a=0;a<s;++a)if(r=l,l=h,h=ni(t,a+1),l){if(h){const t=h[e]-l[e];n[a]=0!==t?(h[i]-l[i])/t:0}o[a]=r?h?F(n[a-1])!==F(n[a])?0:(n[a-1]+n[a])/2:n[a-1]:n[a]}!function(t,e,i){const s=t.length;let n,o,a,r,l,h=ni(t,0);for(let c=0;c<s-1;++c)l=h,h=ni(t,c+1),l&&h&&(V(e[c],0,si)?i[c]=i[c+1]=0:(n=i[c]/e[c],o=i[c+1]/e[c],r=Math.pow(n,2)+Math.pow(o,2),r<=9||(a=3/Math.sqrt(r),i[c]=n*a*e[c],i[c+1]=o*a*e[c])))}(t,n,o),function(t,e,i="x"){const s=oi(i),n=t.length;let o,a,r,l=ni(t,0);for(let h=0;h<n;++h){if(a=r,r=l,l=ni(t,h+1),!r)continue;const n=r[i],c=r[s];a&&(o=(n-a[i])/3,r[`cp1${i}`]=n-o,r[`cp1${s}`]=c-o*e[h]),l&&(o=(l[i]-n)/3,r[`cp2${i}`]=n+o,r[`cp2${s}`]=c+o*e[h])}}(t,o,e)}function li(t,e,i){return Math.max(Math.min(t,i),e)}function hi(t,e,i,s,n){let o,a,r,l;if(e.spanGaps&&(t=t.filter((t=>!t.skip))),"monotone"===e.cubicInterpolationMode)ri(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o<a;++o)r=t[o],l=ai(i,r,t[Math.min(o+1,a-(s?0:1))%a],e.tension),r.cp1x=l.previous.x,r.cp1y=l.previous.y,r.cp2x=l.next.x,r.cp2y=l.next.y,i=r}e.capBezierPoints&&function(t,e){let i,s,n,o,a,r=Re(t[0],e);for(i=0,s=t.length;i<s;++i)a=o,o=r,r=i<s-1&&Re(t[i+1],e),o&&(n=t[i],a&&(n.cp1x=li(n.cp1x,e.left,e.right),n.cp1y=li(n.cp1y,e.top,e.bottom)),r&&(n.cp2x=li(n.cp2x,e.left,e.right),n.cp2y=li(n.cp2y,e.top,e.bottom)))}(t,i)}const ci=t=>0===t||1===t,di=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*O/i),ui=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*O/i)+1,fi={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=>1-Math.cos(t*E),easeOutSine:t=>Math.sin(t*E),easeInOutSine:t=>-.5*(Math.cos(C*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>ci(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),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=>ci(t)?t:di(t,.075,.3),easeOutElastic:t=>ci(t)?t:ui(t,.075,.3),easeInOutElastic(t){const e=.1125;return ci(t)?t:t<.5?.5*di(2*t,e,.45):.5+.5*ui(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-fi.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*fi.easeInBounce(2*t):.5*fi.easeOutBounce(2*t-1)+.5};function gi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function pi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:"middle"===s?i<.5?t.y:e.y:"after"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function mi(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=gi(t,n,i),r=gi(n,o,i),l=gi(o,e,i),h=gi(a,r,i),c=gi(r,l,i);return gi(h,c,i)}const xi=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,bi=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function _i(t,e){const i=(""+t).match(xi);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}const yi=t=>+t||0;function vi(t,e){const i={},s=o(e),n=s?Object.keys(e):e,a=o(t)?s?i=>l(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=yi(a(t));return i}function Mi(t){return vi(t,{top:"y",right:"x",bottom:"y",left:"x"})}function wi(t){return vi(t,["topLeft","topRight","bottomLeft","bottomRight"])}function ki(t){const e=Mi(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function Si(t,e){t=t||{},e=e||ue.font;let i=l(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let s=l(t.style,e.style);s&&!(""+s).match(bi)&&(console.warn('Invalid font style specified: "'+s+'"'),s=void 0);const n={family:l(t.family,e.family),lineHeight:_i(l(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:l(t.weight,e.weight),string:""};return n.string=De(n),n}function Pi(t,e,i,s){let o,a,r,l=!0;for(o=0,a=t.length;o<a;++o)if(r=t[o],void 0!==r&&(void 0!==e&&"function"==typeof r&&(r=r(e),l=!1),void 0!==i&&n(r)&&(r=r[i%r.length],l=!1),void 0!==r))return s&&!l&&(s.cacheable=!1),r}function Di(t,e,i){const{min:s,max:n}=t,o=c(e,(n-s)/2),a=(t,e)=>i&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function Ci(t,e){return Object.assign(Object.create(t),e)}function Oi(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Ai(t,e){let i,s;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,s=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=s)}function Ti(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Li(t){return"angle"===t?{between:J,compare:K,normalize:G}:{between:tt,compare:(t,e)=>t-e,normalize:t=>t}}function Ei({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Ri(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Li(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Li(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;h<c&&a(r(e[d%l][s]),n,o);++h)d--,u--;d%=l,u%=l}return u<d&&(u+=l),{start:d,end:u,loop:f,style:t.style}}(t,e,i),g=[];let p,m,x,b=!1,_=null;const y=()=>b||l(n,x,p)&&0!==r(n,x),v=()=>!b||0===r(o,p)||l(o,x,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==x&&(b=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(Ei({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,x=p));return null!==_&&g.push(Ei({start:_,end:d,loop:u,count:a,style:f})),g}function Ii(t,e){const i=[],s=t.segments;for(let n=0;n<s.length;n++){const o=Ri(s[n],t.points,e);o.length&&i.push(...o)}return i}function zi(t,e){const i=t.points,s=t.options.spanGaps,n=i.length;if(!n)return[];const o=!!t._loop,{start:a,end:r}=function(t,e,i,s){let n=0,o=e-1;if(i&&!s)for(;n<e&&!t[n].skip;)n++;for(;n<e&&t[n].skip;)n++;for(n%=e,i&&(o+=n);o>n&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Fi(t,[{start:a,end:r,loop:o}],i,e);return Fi(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,r<a?r+n:r,!!t._fullLoop&&0===a&&r===n-1),i,e)}function Fi(t,e,i,s){return s&&s.setContext&&i?function(t,e,i,s){const n=t._chart.getContext(),o=Vi(t.options),{_datasetIndex:a,options:{spanGaps:r}}=t,l=i.length,h=[];let c=o,d=e[0].start,u=d;function f(t,e,s,n){const o=r?-1:1;if(t!==e){for(t+=l;i[t%l].skip;)t-=o;for(;i[e%l].skip;)e+=o;t%l!=e%l&&(h.push({start:t%l,end:e%l,loop:s,style:n}),c=n,d=e%l)}}for(const t of e){d=r?d:t.start;let e,o=i[d%l];for(u=d+1;u<=t.end;u++){const r=i[u%l];e=Vi(s.setContext(Ci(n,{type:"segment",p0:o,p1:r,p0DataIndex:(u-1)%l,p1DataIndex:u%l,datasetIndex:a}))),Bi(e,c)&&f(d,u-1,t.loop,c),o=r,c=e}d<u-1&&f(d,u-1,t.loop,c)}return h}(t,e,i,s):e}function Vi(t){return{backgroundColor:t.backgroundColor,borderCapStyle:t.borderCapStyle,borderDash:t.borderDash,borderDashOffset:t.borderDashOffset,borderJoinStyle:t.borderJoinStyle,borderWidth:t.borderWidth,borderColor:t.borderColor}}function Bi(t,e){if(!e)return!1;const i=[],s=function(t,e){return Zt(e)?(i.includes(e)||i.push(e),i.indexOf(e)):e};return JSON.stringify(t,s)!==JSON.stringify(e,s)}function Wi(t,e,i){return t.options.clip?t[i]:e[i]}function Ni(t,e){const i=e._clip;if(i.disabled)return!1;const s=function(t,e){const{xScale:i,yScale:s}=t;return i&&s?{left:Wi(i,e,"left"),right:Wi(i,e,"right"),top:Wi(s,e,"top"),bottom:Wi(s,e,"bottom")}:e}(e,t.chartArea);return{left:!1===i.left?0:s.left-(!0===i.left?0:i.left),right:!1===i.right?t.width:s.right+(!0===i.right?0:i.right),top:!1===i.top?0:s.top-(!0===i.top?0:i.top),bottom:!1===i.bottom?t.height:s.bottom+(!0===i.bottom?0:i.bottom)}}var Hi=Object.freeze({__proto__:null,HALF_PI:E,INFINITY:T,PI:C,PITAU:A,QUARTER_PI:R,RAD_PER_DEG:L,TAU:O,TWO_THIRDS_PI:I,_addGrace:Di,_alignPixel:Ae,_alignStartEnd:ft,_angleBetween:J,_angleDiff:K,_arrayUnique:lt,_attachContext:$e,_bezierCurveTo:Ve,_bezierInterpolation:mi,_boundSegment:Ri,_boundSegments:Ii,_capitalize:w,_computeSegments:zi,_createResolver:je,_decimalPlaces:U,_deprecated:function(t,e,i,s){void 0!==e&&console.warn(t+': "'+i+'" is deprecated. Please use "'+s+'" instead')},_descriptors:Ye,_elementsEqual:f,_factorize:W,_filterBetween:nt,_getParentNode:ge,_getStartAndCountOfVisiblePoints:pt,_int16Range:Q,_isBetween:tt,_isClickEvent:D,_isDomSupported:fe,_isPointInArea:Re,_limitValue:Z,_longestText:Oe,_lookup:et,_lookupByKey:it,_measureText:Ce,_merger:m,_mergerIf:_,_normalizeAngle:G,_parseObjectDataRadialScale:ii,_pointInLine:gi,_readValueToProps:vi,_rlookupByKey:st,_scaleRangesChanged:mt,_setMinAndMaxByKey:j,_splitKey:v,_steppedInterpolation:pi,_steppedLineTo:Fe,_textX:gt,_toLeftRightCenter:ut,_updateBezierControlPoints:hi,addRoundedRectPath:He,almostEquals:V,almostWhole:H,callback:d,clearCanvas:Te,clipArea:Ie,clone:g,color:Qt,createContext:Ci,debounce:dt,defined:k,distanceBetweenPoints:q,drawPoint:Le,drawPointLegend:Ee,each:u,easingEffects:fi,finiteOrDefault:r,fontString:function(t,e,i){return e+" "+t+"px "+i},formatNumber:ne,getAngleFromPoint:X,getDatasetClipArea:Ni,getHoverColor:te,getMaximumSize:we,getRelativePosition:ve,getRtlAdapter:Oi,getStyle:xe,isArray:n,isFinite:a,isFunction:S,isNullOrUndef:s,isNumber:N,isObject:o,isPatternOrGradient:Zt,listenArrayEvents:at,log10:z,merge:x,mergeIf:b,niceNum:B,noop:e,overrideTextDirection:Ai,readUsedSize:Pe,renderText:Ne,requestAnimFrame:ht,resolve:Pi,resolveObjectKey:M,restoreTextDirection:Ti,retinaScale:ke,setsEqual:P,sign:F,splineCurve:ai,splineCurveMonotone:ri,supportsEventListenerOptions:Se,throttled:ct,toDegrees:Y,toDimension:c,toFont:Si,toFontString:De,toLineHeight:_i,toPadding:ki,toPercentage:h,toRadians:$,toTRBL:Mi,toTRBLCorners:wi,uid:i,unclipArea:ze,unlistenArrayEvents:rt,valueOrDefault:l});function ji(t,e,i,n){const{controller:o,data:a,_sorted:r}=t,l=o._cachedMeta.iScale,h=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null;if(l&&e===l.axis&&"r"!==e&&r&&a.length){const r=l._reversePixels?st:it;if(!n){const n=r(a,e,i);if(h){const{vScale:e}=o._cachedMeta,{_parsed:i}=t,a=i.slice(0,n.lo+1).reverse().findIndex((t=>!s(t[e.axis])));n.lo-=Math.max(0,a);const r=i.slice(n.hi).findIndex((t=>!s(t[e.axis])));n.hi+=Math.max(0,r)}return n}if(o._sharedOptions){const t=a[0],s="function"==typeof t.getRange&&t.getRange(e);if(s){const t=r(a,e,i-s),n=r(a,e,i+s);return{lo:t.lo,hi:n.hi}}}}return{lo:0,hi:a.length-1}}function $i(t,e,i,s,n){const o=t.getSortedVisibleDatasetMetas(),a=i[e];for(let t=0,i=o.length;t<i;++t){const{index:i,data:r}=o[t],{lo:l,hi:h}=ji(o[t],e,a,n);for(let t=l;t<=h;++t){const e=r[t];e.skip||s(e,i,t)}}}function Yi(t,e,i,s,n){const o=[];if(!n&&!t.isPointInArea(e))return o;return $i(t,i,e,(function(i,a,r){(n||Re(i,t.chartArea,0))&&i.inRange(e.x,e.y,s)&&o.push({element:i,datasetIndex:a,index:r})}),!0),o}function Ui(t,e,i,s,n,o){let a=[];const r=function(t){const e=-1!==t.indexOf("x"),i=-1!==t.indexOf("y");return function(t,s){const n=e?Math.abs(t.x-s.x):0,o=i?Math.abs(t.y-s.y):0;return Math.sqrt(Math.pow(n,2)+Math.pow(o,2))}}(i);let l=Number.POSITIVE_INFINITY;return $i(t,i,e,(function(i,h,c){const d=i.inRange(e.x,e.y,n);if(s&&!d)return;const u=i.getCenterPoint(n);if(!(!!o||t.isPointInArea(u))&&!d)return;const f=r(e,u);f<l?(a=[{element:i,datasetIndex:h,index:c}],l=f):f===l&&a.push({element:i,datasetIndex:h,index:c})})),a}function Xi(t,e,i,s,n,o){return o||t.isPointInArea(e)?"r"!==i||s?Ui(t,e,i,s,n,o):function(t,e,i,s){let n=[];return $i(t,i,e,(function(t,i,o){const{startAngle:a,endAngle:r}=t.getProps(["startAngle","endAngle"],s),{angle:l}=X(t,{x:e.x,y:e.y});J(l,a,r)&&n.push({element:t,datasetIndex:i,index:o})})),n}(t,e,i,n):[]}function qi(t,e,i,s,n){const o=[],a="x"===i?"inXRange":"inYRange";let r=!1;return $i(t,i,e,((t,s,l)=>{t[a]&&t[a](e[i],n)&&(o.push({element:t,datasetIndex:s,index:l}),r=r||t.inRange(e.x,e.y,n))})),s&&!r?[]:o}var Ki={evaluateInteractionItems:$i,modes:{index(t,e,i,s){const n=ve(e,t),o=i.axis||"x",a=i.includeInvisible||!1,r=i.intersect?Yi(t,n,o,s,a):Xi(t,n,o,!1,s,a),l=[];return r.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=r[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})})),l):[]},dataset(t,e,i,s){const n=ve(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;let r=i.intersect?Yi(t,n,o,s,a):Xi(t,n,o,!1,s,a);if(r.length>0){const e=r[0].datasetIndex,i=t.getDatasetMeta(e).data;r=[];for(let t=0;t<i.length;++t)r.push({element:i[t],datasetIndex:e,index:t})}return r},point:(t,e,i,s)=>Yi(t,ve(e,t),i.axis||"xy",s,i.includeInvisible||!1),nearest(t,e,i,s){const n=ve(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;return Xi(t,n,o,i.intersect,s,a)},x:(t,e,i,s)=>qi(t,ve(e,t),"x",i.intersect,s),y:(t,e,i,s)=>qi(t,ve(e,t),"y",i.intersect,s)}};const Gi=["left","top","right","bottom"];function Ji(t,e){return t.filter((t=>t.pos===e))}function Zi(t,e){return t.filter((t=>-1===Gi.indexOf(t.pos)&&t.box.axis===e))}function Qi(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function ts(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!Gi.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o<a;++o){r=t[o];const{fullSize:a}=r.box,l=i[r.stack],h=l&&r.stackWeight/l.weight;r.horizontal?(r.width=h?h*s:a&&e.availableWidth,r.height=n):(r.width=s,r.height=h?h*n:a&&e.availableHeight)}return i}function es(t,e,i,s){return Math.max(t[i],e[i])+Math.max(t[s],e[s])}function is(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 ss(t,e,i,s){const{pos:n,box:a}=i,r=t.maxPadding;if(!o(n)){i.size&&(t[n]-=i.size);const e=s[i.stack]||{size:0,count:1};e.size=Math.max(e.size,i.horizontal?a.height:a.width),i.size=e.size/e.count,t[n]+=i.size}a.getPadding&&is(r,a.getPadding());const l=Math.max(0,e.outerWidth-es(r,t,"left","right")),h=Math.max(0,e.outerHeight-es(r,t,"top","bottom")),c=l!==t.w,d=h!==t.h;return t.w=l,t.h=h,i.horizontal?{same:c,other:d}:{same:d,other:c}}function ns(t,e){const i=e.maxPadding;function s(t){const s={left:0,top:0,right:0,bottom:0};return t.forEach((t=>{s[t]=Math.max(e[t],i[t])})),s}return s(t?["left","right"]:["top","bottom"])}function os(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;o<a;++o){r=t[o],l=r.box,l.update(r.width||e.w,r.height||e.h,ns(r.horizontal,e));const{same:a,other:d}=ss(e,i,r,s);h|=a&&n.length,c=c||d,l.fullSize||n.push(r)}return h&&os(n,e,i,s)||c}function as(t,e,i,s,n){t.top=i,t.left=e,t.right=e+s,t.bottom=i+n,t.width=s,t.height=n}function rs(t,e,i,s){const n=i.padding;let{x:o,y:a}=e;for(const r of t){const t=r.box,l=s[r.stack]||{count:1,placed:0,weight:1},h=r.stackWeight/l.weight||1;if(r.horizontal){const s=e.w*h,o=l.size||t.height;k(l.start)&&(a=l.start),t.fullSize?as(t,n.left,a,i.outerWidth-n.right-n.left,o):as(t,e.left+l.placed,a,s,o),l.start=a,l.placed+=s,a=t.bottom}else{const s=e.h*h,a=l.size||t.width;k(l.start)&&(o=l.start),t.fullSize?as(t,o,n.top,a,i.outerHeight-n.bottom-n.top):as(t,o,e.top+l.placed,a,s),l.start=o,l.placed+=s,o=t.right}}e.x=o,e.y=a}var ls={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){const 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,s){if(!t)return;const n=ki(t.options.layout.padding),o=Math.max(e-n.width,0),a=Math.max(i-n.height,0),r=function(t){const e=function(t){const e=[];let i,s,n,o,a,r;for(i=0,s=(t||[]).length;i<s;++i)n=t[i],({position:o,options:{stack:a,stackWeight:r=1}}=n),e.push({index:i,box:n,pos:o,horizontal:n.isHorizontal(),weight:n.weight,stack:a&&o+a,stackWeight:r});return e}(t),i=Qi(e.filter((t=>t.box.fullSize)),!0),s=Qi(Ji(e,"left"),!0),n=Qi(Ji(e,"right")),o=Qi(Ji(e,"top"),!0),a=Qi(Ji(e,"bottom")),r=Zi(e,"x"),l=Zi(e,"y");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Ji(e,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;u(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),f=Object.assign({},n);is(f,ki(s));const g=Object.assign({maxPadding:f,w:o,h:a,x:n.left,y:n.top},n),p=ts(l.concat(h),d);os(r.fullSize,g,d,p),os(l,g,d,p),os(h,g,d,p)&&os(l,g,d,p),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(g),rs(r.leftAndTop,g,d,p),g.x+=g.w,g.y+=g.h,rs(r.rightAndBottom,g,d,p),t.chartArea={left:g.left,top:g.top,right:g.left+g.w,bottom:g.top+g.h,height:g.h,width:g.w},u(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(g.w,g.h,{left:0,top:0,right:0,bottom:0})}))}};class hs{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 cs extends hs{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const ds="$chartjs",us={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},fs=t=>null===t||""===t;const gs=!!Se&&{passive:!0};function ps(t,e,i){t&&t.canvas&&t.canvas.removeEventListener(e,i,gs)}function ms(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function xs(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ms(i.addedNodes,s),e=e&&!ms(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function bs(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ms(i.removedNodes,s),e=e&&!ms(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const _s=new Map;let ys=0;function vs(){const t=window.devicePixelRatio;t!==ys&&(ys=t,_s.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function Ms(t,e,i){const s=t.canvas,n=s&&ge(s);if(!n)return;const o=ct(((t,e)=>{const s=n.clientWidth;i(t,e),s<n.clientWidth&&i()}),window),a=new ResizeObserver((t=>{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||o(i,s)}));return a.observe(n),function(t,e){_s.size||window.addEventListener("resize",vs),_s.set(t,e)}(t,o),a}function ws(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){_s.delete(t),_s.size||window.removeEventListener("resize",vs)}(t)}function ks(t,e,i){const s=t.canvas,n=ct((e=>{null!==t.ctx&&i(function(t,e){const i=us[t.type]||t.type,{x:s,y:n}=ve(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t);return function(t,e,i){t&&t.addEventListener(e,i,gs)}(s,e,n),n}class Ss extends hs{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute("height"),n=t.getAttribute("width");if(t[ds]={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",fs(n)){const e=Pe(t,"width");void 0!==e&&(t.width=e)}if(fs(s))if(""===t.style.height)t.height=t.width/(e||2);else{const e=Pe(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e[ds])return!1;const i=e[ds].initial;["height","width"].forEach((t=>{const n=i[t];s(n)?e.removeAttribute(t):e.setAttribute(t,n)}));const n=i.style||{};return Object.keys(n).forEach((t=>{e.style[t]=n[t]})),e.width=e.width,delete e[ds],!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:xs,detach:bs,resize:Ms}[e]||ks;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:ws,detach:ws,resize:ws}[e]||ps)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return we(t,e,i,s)}isAttached(t){const e=t&&ge(t);return!(!e||!e.isConnected)}}function Ps(t){return!fe()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?cs:Ss}var Ds=Object.freeze({__proto__:null,BasePlatform:hs,BasicPlatform:cs,DomPlatform:Ss,_detectPlatform:Ps});const Cs="transparent",Os={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=Qt(t||Cs),n=s.valid&&Qt(e||Cs);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class As{constructor(t,e,i,s){const n=e[i];s=Pi([t.to,s,n,t.from]);const o=Pi([t.from,n,s]);this._active=!0,this._fn=t.fn||Os[t.type||typeof o],this._easing=fi[t.easing]||fi.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=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=Pi([t.to,e,s,t.from]),this._from=Pi([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e<i),!this._active)return this._target[s]=a,void this._notify(!0);e<0?this._target[s]=n:(r=e/i%2,r=o&&r>1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t<i.length;t++)i[t][e]()}}class Ts{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!o(t))return;const e=Object.keys(ue.animation),i=this._properties;Object.getOwnPropertyNames(t).forEach((s=>{const a=t[s];if(!o(a))return;const r={};for(const t of e)r[t]=a[t];(n(a.properties)&&a.properties||[s]).forEach((t=>{t!==s&&i.has(t)||i.set(t,r)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e<s.length;e++){const n=t[s[e]];n&&n.active()&&i.push(n.wait())}return Promise.all(i)}(t.options.$animations,i).then((()=>{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if("$"===l.charAt(0))continue;if("options"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new As(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(bt.add(this._chart,i),!0):void 0}}function Ls(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function Es(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n<o;++n)i.push(s[n].index);return i}function Rs(t,e,i,s={}){const n=t.keys,o="single"===s.mode;let r,l,h,c;if(null===e)return;let d=!1;for(r=0,l=n.length;r<l;++r){if(h=+n[r],h===i){if(d=!0,s.all)continue;break}c=t.values[h],a(c)&&(o||0===e||F(e)===F(c))&&(e+=c)}return d||s.all?e:0}function Is(t,e){const i=t&&t.options.stacked;return i||void 0===i&&void 0!==e.stack}function zs(t,e,i){const s=t[e]||(t[e]={});return s[i]||(s[i]={})}function Fs(t,e,i,s){for(const n of e.getMatchingVisibleMetas(s).reverse()){const e=t[n.index];if(i&&e>0||!i&&e<0)return n.index}return null}function Vs(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;t<d;++t){const i=e[t],{[l]:o,[h]:d}=i;u=(i._stacks||(i._stacks={}))[h]=zs(n,c,o),u[r]=d,u._top=Fs(u,a,!0,s.type),u._bottom=Fs(u,a,!1,s.type);(u._visualValues||(u._visualValues={}))[r]=d}}function Bs(t,e){const i=t.scales;return Object.keys(i).filter((t=>i[t].axis===e)).shift()}function Ws(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i],void 0!==e[s]._visualValues&&void 0!==e[s]._visualValues[i]&&delete e[s]._visualValues[i]}}}const Ns=t=>"reset"===t||"none"===t,Hs=(t,e)=>e?t:Object.assign({},t);class js{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(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Is(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&&Ws(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,n=e.xAxisID=l(i.xAxisID,Bs(t,"x")),o=e.yAxisID=l(i.yAxisID,Bs(t,"y")),a=e.rAxisID=l(i.rAxisID,Bs(t,"r")),r=e.indexAxis,h=e.iAxisID=s(r,n,o,a),c=e.vAxisID=s(r,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(h),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&rt(this._data,this),t._stacked&&Ws(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(o(e)){const t=this._cachedMeta;this._data=function(t,e){const{iScale:i,vScale:s}=e,n="x"===i.axis?"x":"y",o="x"===s.axis?"x":"y",a=Object.keys(t),r=new Array(a.length);let l,h,c;for(l=0,h=a.length;l<h;++l)c=a[l],r[l]={[n]:c,[o]:t[c]};return r}(e,t)}else if(i!==e){if(i){rt(i,this);const t=this._cachedMeta;Ws(t),t._parsed=[]}e&&Object.isExtensible(e)&&at(e,this),this._syncList=[],this._data=e}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,i=this.getDataset();let s=!1;this._dataCheck();const n=e._stacked;e._stacked=Is(e.vScale,e),e.stack!==i.stack&&(s=!0,Ws(e),e.stack=i.stack),this._resyncElements(t),(s||n!==e._stacked)&&(Vs(this,e._parsed),e._stacked=Is(e.vScale,e))}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:i,_data:s}=this,{iScale:a,_stacked:r}=i,l=a.axis;let h,c,d,u=0===t&&e===s.length||i._sorted,f=t>0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=s,i._sorted=!0,d=s;else{d=n(s[t])?this.parseArrayData(i,s,t,e):o(s[t])?this.parseObjectData(i,s,t,e):this.parsePrimitiveData(i,s,t,e);const a=()=>null===c[l]||f&&c[l]<f[l];for(h=0;h<e;++h)i._parsed[h+t]=c=d[h],u&&(a()&&(u=!1),f=c);i._sorted=u}r&&Vs(this,d)}parsePrimitiveData(t,e,i,s){const{iScale:n,vScale:o}=t,a=n.axis,r=o.axis,l=n.getLabels(),h=n===o,c=new Array(s);let d,u,f;for(d=0,u=s;d<u;++d)f=d+i,c[d]={[a]:h||n.parse(l[f],f),[r]:o.parse(e[f],f)};return c}parseArrayData(t,e,i,s){const{xScale:n,yScale:o}=t,a=new Array(s);let r,l,h,c;for(r=0,l=s;r<l;++r)h=r+i,c=e[h],a[r]={x:n.parse(c[0],h),y:o.parse(c[1],h)};return a}parseObjectData(t,e,i,s){const{xScale:n,yScale:o}=t,{xAxisKey:a="x",yAxisKey:r="y"}=this._parsing,l=new Array(s);let h,c,d,u;for(h=0,c=s;h<c;++h)d=h+i,u=e[d],l[h]={x:n.parse(M(u,a),d),y:o.parse(M(u,r),d)};return l}getParsed(t){return this._cachedMeta._parsed[t]}getDataElement(t){return this._cachedMeta.data[t]}applyStack(t,e,i){const s=this.chart,n=this._cachedMeta,o=e[t.axis];return Rs({keys:Es(s,!0),values:e._stacks[t.axis]._visualValues},o,n.index,{mode:i})}updateRangeFromParsed(t,e,i,s){const n=i[e.axis];let o=null===n?NaN:n;const a=s&&i._stacks[e.axis];s&&a&&(s.values=a,o=Rs(s,n,this._cachedMeta.index)),t.min=Math.min(t.min,o),t.max=Math.max(t.max,o)}getMinMax(t,e){const i=this._cachedMeta,s=i._parsed,n=i._sorted&&t===i.iScale,o=s.length,r=this._getOtherScale(t),l=((t,e,i)=>t&&!e.hidden&&e._stacked&&{keys:Es(i,!0),values:null})(e,i,this.chart),h={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:c,max:d}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(r);let u,f;function g(){f=s[u];const e=f[r.axis];return!a(f[t.axis])||c>e||d<e}for(u=0;u<o&&(g()||(this.updateRangeFromParsed(h,t,f,l),!n));++u);if(n)for(u=o-1;u>=0;--u)if(!g()){this.updateRangeFromParsed(h,t,f,l);break}return h}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,o;for(s=0,n=e.length;s<n;++s)o=e[s][t.axis],a(o)&&i.push(o);return i}getMaxOverflow(){return!1}getLabelAndValue(t){const e=this._cachedMeta,i=e.iScale,s=e.vScale,n=this.getParsed(t);return{label:i?""+i.getLabelForValue(n[i.axis]):"",value:s?""+s.getLabelForValue(n[s.axis]):""}}_update(t){const e=this._cachedMeta;this.update(t||"default"),e._clip=function(t){let e,i,s,n;return o(t)?(e=t.top,i=t.right,s=t.bottom,n=t.left):e=i=s=n=t,{top:e,right:i,bottom:s,left:n,disabled:!1===t}}(l(this.options.clip,function(t,e,i){if(!1===i)return!1;const s=Ls(t,i),n=Ls(e,i);return{top:n.end,right:s.end,bottom:n.start,left:s.start}}(e.xScale,e.yScale,this.getMaxOverflow())))}update(t){}draw(){const t=this._ctx,e=this.chart,i=this._cachedMeta,s=i.data||[],n=e.chartArea,o=[],a=this._drawStart||0,r=this._drawCount||s.length-a,l=this.options.drawActiveElementsOnTop;let h;for(i.dataset&&i.dataset.draw(t,n,a,r),h=a;h<a+r;++h){const e=s[h];e.hidden||(e.active&&l?o.push(e):e.draw(t,n))}for(h=0;h<o.length;++h)o[h].draw(t,n)}getStyle(t,e){const i=e?"active":"default";return void 0===t&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(i):this.resolveDataElementOptions(t||0,i)}getContext(t,e,i){const s=this.getDataset();let n;if(t>=0&&t<this._cachedMeta.data.length){const e=this._cachedMeta.data[t];n=e.$context||(e.$context=function(t,e,i){return Ci(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:i,index:e,mode:"default",type:"data"})}(this.getContext(),t,e)),n.parsed=this.getParsed(t),n.raw=s.data[t],n.index=n.dataIndex=t}else n=this.$context||(this.$context=function(t,e){return Ci(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}(this.chart.getContext(),this.index)),n.dataset=s,n.index=n.datasetIndex=this.index;return n.active=!!e,n.mode=i,n}resolveDatasetElementOptions(t){return this._resolveElementOptions(this.datasetElementType.id,t)}resolveDataElementOptions(t,e){return this._resolveElementOptions(this.dataElementType.id,e,t)}_resolveElementOptions(t,e="default",i){const s="active"===e,n=this._cachedDataOpts,o=t+"-"+e,a=n[o],r=this.enableOptionSharing&&k(i);if(a)return Hs(a,r);const l=this.chart.config,h=l.datasetElementScopeKeys(this._type,t),c=s?[`${t}Hover`,"hover",t,""]:[t,""],d=l.getOptionScopes(this.getDataset(),h),u=Object.keys(ue.elements[t]),f=l.resolveNamedOptions(d,u,(()=>this.getContext(i,s,e)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Hs(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new Ts(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||Ns(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const i=this.resolveDataElementOptions(t,e),s=this._sharedOptions,n=this.getSharedOptions(i),o=this.includeOptions(e,n)||n!==s;return this.updateSharedOptions(n,e,i),{sharedOptions:n,includeOptions:o}}updateElement(t,e,i,s){Ns(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!Ns(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n<s&&this._removeElements(n,s-n)}_insertElements(t,e,i=!0){const s=this._cachedMeta,n=s.data,o=t+e;let a;const r=t=>{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a<o;++a)n[a]=new this.dataElementType;this._parsing&&r(s._parsed),this.parse(t,e),i&&this.updateElements(n,t,e,"reset")}updateElements(t,e,i,s){}_removeElements(t,e){const i=this._cachedMeta;if(this._parsing){const s=i._parsed.splice(t,e);i._stacked&&Ws(i,s)}i.data.splice(t,e)}_sync(t){if(this._parsing)this._syncList.push(t);else{const[e,i,s]=t;this[e](i,s)}this.chart._dataChanges.push([this.index,...t])}_onDataPush(){const t=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-t,t])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(t,e){e&&this._sync(["_removeElements",t,e]);const i=arguments.length-2;i&&this._sync(["_insertElements",t,i])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}class $s{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(t){const{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}hasValue(){return N(this.x)&&N(this.y)}getProps(t,e){const i=this.$animations;if(!e||!i)return this;const s={};return t.forEach((t=>{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}function Ys(t,e){const i=t.options.ticks,n=function(t){const e=t.options.offset,i=t._tickSize(),s=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(s,n))}(t),o=Math.min(i.maxTicksLimit||n,n),a=i.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;i<s;i++)t[i].major&&e.push(i);return e}(e):[],r=a.length,l=a[0],h=a[r-1],c=[];if(r>o)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;n<t.length;n++)n===a&&(e.push(t[n]),o++,a=i[o*s])}(e,c,a,r/o),c;const d=function(t,e,i){const s=function(t){const e=t.length;let i,s;if(e<2)return!1;for(s=t[0],i=1;i<e;++i)if(t[i]-t[i-1]!==s)return!1;return s}(t),n=e.length/i;if(!s)return Math.max(n,1);const o=W(s);for(let t=0,e=o.length-1;t<e;t++){const e=o[t];if(e>n)return e}return Math.max(n,1)}(a,e,o);if(r>0){let t,i;const n=r>1?Math.round((h-l)/(r-1)):null;for(Us(e,c,d,s(n)?0:l-n,l),t=0,i=r-1;t<i;t++)Us(e,c,d,a[t],a[t+1]);return Us(e,c,d,h,s(n)?e.length:h+n),c}return Us(e,c,d),c}function Us(t,e,i,s,n){const o=l(s,0),a=Math.min(l(n,t.length),t.length);let r,h,c,d=0;for(i=Math.ceil(i),n&&(r=n-s,i=r/Math.floor(r/i)),c=o;c<0;)d++,c=Math.round(o+d*i);for(h=Math.max(o,0);h<a;h++)h===c&&(e.push(t[h]),d++,c=Math.round(o+d*i))}const Xs=(t,e,i)=>"top"===e||"left"===e?t[e]+i:t[e]-i,qs=(t,e)=>Math.min(e||t,t);function Ks(t,e){const i=[],s=t.length/e,n=t.length;let o=0;for(;o<n;o+=s)i.push(t[Math.floor(o)]);return i}function Gs(t,e,i){const s=t.ticks.length,n=Math.min(e,s-1),o=t._startPixel,a=t._endPixel,r=1e-6;let l,h=t.getPixelForTick(n);if(!(i&&(l=1===s?Math.max(h-o,a-h):0===e?(t.getPixelForTick(1)-h)/2:(h-t.getPixelForTick(n-1))/2,h+=n<e?l:-l,h<o-r||h>a+r)))return h}function Js(t){return t.drawTicks?t.tickLength:0}function Zs(t,e){if(!t.display)return 0;const i=Si(t.font,e),s=ki(t.padding);return(n(t.text)?t.text.length:1)*i.lineHeight+s.height}function Qs(t,e,i){let s=ut(t);return(i&&"right"!==e||!i&&"right"===e)&&(s=(t=>"left"===t?"right":"right"===t?"left":t)(s)),s}class tn extends $s{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=r(t,Number.POSITIVE_INFINITY),e=r(e,Number.NEGATIVE_INFINITY),i=r(i,Number.POSITIVE_INFINITY),s=r(s,Number.NEGATIVE_INFINITY),{min:r(t,i),max:r(e,s),minDefined:a(t),maxDefined:a(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const a=this.getMatchingVisibleMetas();for(let r=0,l=a.length;r<l;++r)e=a[r].controller.getMinMax(this,t),n||(i=Math.min(i,e.min)),o||(s=Math.max(s,e.max));return i=o&&i>s?s:i,s=n&&i>s?i:s,{min:r(i,r(s,i)),max:r(s,r(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){d(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.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=Di(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a<this.ticks.length;this._convertTicksToLabels(r?Ks(this.ticks,a):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),o.display&&(o.autoSkip||"auto"===o.source)&&(this.ticks=Ys(this,this.ticks),this._labelSizes=null,this.afterAutoSkip()),r&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let t,e,i=this.options.reverse;this.isHorizontal()?(t=this.left,e=this.right):(t=this.top,e=this.bottom,i=!i),this._startPixel=t,this._endPixel=e,this._reversePixels=i,this._length=e-t,this._alignToPixels=this.options.alignToPixels}afterUpdate(){d(this.options.afterUpdate,[this])}beforeSetDimensions(){d(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){d(this.options.afterSetDimensions,[this])}_callHooks(t){this.chart.notifyPlugins(t,this.getContext()),d(this.options[t],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){d(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(t){const e=this.options.ticks;let i,s,n;for(i=0,s=t.length;i<s;i++)n=t[i],n.label=d(e.callback,[n.value,i,t],this)}afterTickToLabelConversion(){d(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){d(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const t=this.options,e=t.ticks,i=qs(this.ticks.length,t.ticks.maxTicksLimit),s=e.minRotation||0,n=e.maxRotation;let o,a,r,l=s;if(!this._isVisible()||!e.display||s>=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=Z(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth/i:u/(i-1),c+6>o&&(o=u/(i-(t.offset?.5:1)),a=this.maxHeight-Js(t.grid)-e.padding-Zs(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=Y(Math.min(Math.asin(Z((h.highest.height+6)/o,-1,1)),Math.asin(Z(a/r,-1,1))-Math.asin(Z(d/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){d(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){d(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=Zs(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Js(n)+o):(t.height=this.maxHeight,t.width=Js(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=$(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(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){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):"start"===n?d=e.width:"end"===n?c=t.width:"inner"!==n&&(c=t.width/2,d=e.width/2),this.paddingLeft=Math.max((c-a+o)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width/(this.width-h),0)}else{let i=e.height/2,s=t.height/2;"start"===n?(i=0,s=t.height):"end"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_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(){d(this.options.afterFit,[this])}isHorizontal(){const{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<i;e++)s(t[e].label)&&(t.splice(e,1),i--,e--);this.afterTickToLabelConversion()}_getLabelSizes(){let t=this._labelSizes;if(!t){const e=this.options.ticks.sampleSize;let i=this.ticks;e<i.length&&(i=Ks(i,e)),this._labelSizes=t=this._computeLabelSizes(i,i.length,this.options.ticks.maxTicksLimit)}return t}_computeLabelSizes(t,e,i){const{ctx:o,_longestTextCache:a}=this,r=[],l=[],h=Math.floor(e/qs(e,i));let c,d,f,g,p,m,x,b,_,y,v,M=0,w=0;for(c=0;c<e;c+=h){if(g=t[c].label,p=this._resolveTickFontOptions(c),o.font=m=p.string,x=a[m]=a[m]||{data:{},gc:[]},b=p.lineHeight,_=y=0,s(g)||n(g)){if(n(g))for(d=0,f=g.length;d<f;++d)v=g[d],s(v)||n(v)||(_=Ce(o,x.data,x.gc,_,v),y+=b)}else _=Ce(o,x.data,x.gc,_,g),y=b;r.push(_),l.push(y),M=Math.max(_,M),w=Math.max(y,w)}!function(t,e){u(t,(t=>{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n<s;++n)delete t.data[i[n]];i.splice(0,s)}}))}(a,e);const k=r.indexOf(M),S=l.indexOf(w),P=t=>({width:r[t]||0,height:l[t]||0});return{first:P(0),last:P(e-1),widest:P(k),highest:P(S),widths:r,heights:l}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return Q(this._alignToPixels?Ae(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&t<e.length){const i=e[t];return i.$context||(i.$context=function(t,e,i){return Ci(t,{tick:i,index:e,type:"tick"})}(this.getContext(),t,i))}return this.$context||(this.$context=Ci(this.chart.getContext(),{scale:this,type:"scale"}))}_tickSize(){const t=this.options.ticks,e=$(this.labelRotation),i=Math.abs(Math.cos(e)),s=Math.abs(Math.sin(e)),n=this._getLabelSizes(),o=t.autoSkipPadding||0,a=n?n.widest.width+o:0,r=n?n.highest.height+o:0;return this.isHorizontal()?r*i>a*s?a/i:r/s:r*s<a*i?r/i:a/s}_isVisible(){const t=this.options.display;return"auto"!==t?!!t:this.getMatchingVisibleMetas().length>0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:n,position:a,border:r}=s,h=n.offset,c=this.isHorizontal(),d=this.ticks.length+(h?1:0),u=Js(n),f=[],g=r.setContext(this.getContext()),p=g.display?g.width:0,m=p/2,x=function(t){return Ae(i,t,p)};let b,_,y,v,M,w,k,S,P,D,C,O;if("top"===a)b=x(this.bottom),w=this.bottom-u,S=b-m,D=x(t.top)+m,O=t.bottom;else if("bottom"===a)b=x(this.top),D=t.top,O=x(t.bottom)-m,w=b+m,S=this.top+u;else if("left"===a)b=x(this.right),M=this.right-u,k=b-m,P=x(t.left)+m,C=t.right;else if("right"===a)b=x(this.left),P=t.left,C=x(t.right)-m,M=b+m,k=this.left+u;else if("x"===e){if("center"===a)b=x((t.top+t.bottom)/2+.5);else if(o(a)){const t=Object.keys(a)[0],e=a[t];b=x(this.chart.scales[t].getPixelForValue(e))}D=t.top,O=t.bottom,w=b+m,S=w+u}else if("y"===e){if("center"===a)b=x((t.left+t.right)/2);else if(o(a)){const t=Object.keys(a)[0],e=a[t];b=x(this.chart.scales[t].getPixelForValue(e))}M=b-m,k=M-u,P=t.left,C=t.right}const A=l(s.ticks.maxTicksLimit,d),T=Math.max(1,Math.ceil(d/A));for(_=0;_<d;_+=T){const t=this.getContext(_),e=n.setContext(t),s=r.setContext(t),o=e.lineWidth,a=e.color,l=s.dash||[],d=s.dashOffset,u=e.tickWidth,g=e.tickColor,p=e.tickBorderDash||[],m=e.tickBorderDashOffset;y=Gs(this,_,h),void 0!==y&&(v=Ae(i,y,o),c?M=k=P=C=v:w=S=D=O=v,f.push({tx1:M,ty1:w,tx2:k,ty2:S,x1:P,y1:D,x2:C,y2:O,width:o,color:a,borderDash:l,borderDashOffset:d,tickWidth:u,tickColor:g,tickBorderDash:p,tickBorderDashOffset:m}))}return this._ticksLength=d,this._borderValue=b,f}_computeLabelItems(t){const e=this.axis,i=this.options,{position:s,ticks:a}=i,r=this.isHorizontal(),l=this.ticks,{align:h,crossAlign:c,padding:d,mirror:u}=a,f=Js(i.grid),g=f+d,p=u?-d:g,m=-$(this.labelRotation),x=[];let b,_,y,v,M,w,k,S,P,D,C,O,A="middle";if("top"===s)w=this.bottom-p,k=this._getXAxisLabelAlignment();else if("bottom"===s)w=this.top+p,k=this._getXAxisLabelAlignment();else if("left"===s){const t=this._getYAxisLabelAlignment(f);k=t.textAlign,M=t.x}else if("right"===s){const t=this._getYAxisLabelAlignment(f);k=t.textAlign,M=t.x}else if("x"===e){if("center"===s)w=(t.top+t.bottom)/2+g;else if(o(s)){const t=Object.keys(s)[0],e=s[t];w=this.chart.scales[t].getPixelForValue(e)+g}k=this._getXAxisLabelAlignment()}else if("y"===e){if("center"===s)M=(t.left+t.right)/2-g;else if(o(s)){const t=Object.keys(s)[0],e=s[t];M=this.chart.scales[t].getPixelForValue(e)}k=this._getYAxisLabelAlignment(f).textAlign}"y"===e&&("start"===h?A="top":"end"===h&&(A="bottom"));const T=this._getLabelSizes();for(b=0,_=l.length;b<_;++b){y=l[b],v=y.label;const t=a.setContext(this.getContext(b));S=this.getPixelForTick(b)+a.labelOffset,P=this._resolveTickFontOptions(b),D=P.lineHeight,C=n(v)?v.length:1;const e=C/2,i=t.color,o=t.textStrokeColor,h=t.textStrokeWidth;let d,f=k;if(r?(M=S,"inner"===k&&(f=b===_-1?this.options.reverse?"left":"right":0===b?this.options.reverse?"right":"left":"center"),O="top"===s?"near"===c||0!==m?-C*D+D/2:"center"===c?-T.highest.height/2-e*D+D:-T.highest.height+D/2:"near"===c||0!==m?D/2:"center"===c?T.highest.height/2-e*D:T.highest.height-C*D,u&&(O*=-1),0===m||t.showLabelBackdrop||(M+=D/2*Math.sin(m))):(w=S,O=(1-C)*D/2),t.showLabelBackdrop){const e=ki(t.backdropPadding),i=T.heights[b],s=T.widths[b];let n=O-e.top,o=0-e.left;switch(A){case"middle":n-=i/2;break;case"bottom":n-=i}switch(k){case"center":o-=s/2;break;case"right":o-=s;break;case"inner":b===_-1?o-=s:b>0&&(o-=s/2)}d={left:o,top:n,width:s+e.width,height:i+e.height,color:t.backdropColor}}x.push({label:v,font:P,textOffset:O,options:{rotation:m,color:i,strokeColor:o,strokeWidth:h,textAlign:f,textBaseline:A,translation:[M,w],backdrop:d}})}return x}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-$(this.labelRotation))return"top"===t?"left":"right";let i="center";return"start"===e.align?i="left":"end"===e.align?i="right":"inner"===e.align&&(i="inner"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:i,mirror:s,padding:n}}=this.options,o=t+n,a=this._getLabelSizes().widest.width;let r,l;return"left"===e?s?(l=this.right+n,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l+=a)):(l=this.right-o,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l=this.left)):"right"===e?s?(l=this.left+n,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l-=a)):(l=this.left+o,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l=this.right)):r="right",{textAlign:r,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:i,top:s,width:n,height:o}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(i,s,n,o),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const i=this.ticks.findIndex((e=>e.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n<o;++n){const t=s[n];e.drawOnChartArea&&a({x:t.x1,y:t.y1},{x:t.x2,y:t.y2},t),e.drawTicks&&a({x:t.tx1,y:t.ty1},{x:t.tx2,y:t.ty2},{color:t.tickColor,width:t.tickWidth,borderDash:t.tickBorderDash,borderDashOffset:t.tickBorderDashOffset})}}drawBorder(){const{chart:t,ctx:e,options:{border:i,grid:s}}=this,n=i.setContext(this.getContext()),o=i.display?n.width:0;if(!o)return;const a=s.setContext(this.getContext(0)).lineWidth,r=this._borderValue;let l,h,c,d;this.isHorizontal()?(l=Ae(t,this.left,o)-o/2,h=Ae(t,this.right,a)+a/2,c=d=r):(c=Ae(t,this.top,o)-o/2,d=Ae(t,this.bottom,a)+a/2,l=h=r),e.save(),e.lineWidth=n.width,e.strokeStyle=n.color,e.beginPath(),e.moveTo(l,c),e.lineTo(h,d),e.stroke(),e.restore()}drawLabels(t){if(!this.options.ticks.display)return;const e=this.ctx,i=this._computeLabelArea();i&&Ie(e,i);const s=this.getLabelItems(t);for(const t of s){const i=t.options,s=t.font;Ne(e,t.label,0,t.textOffset,s,i)}i&&ze(e)}drawTitle(){const{ctx:t,options:{position:e,title:i,reverse:s}}=this;if(!i.display)return;const a=Si(i.font),r=ki(i.padding),l=i.align;let h=a.lineHeight/2;"bottom"===e||"center"===e||o(e)?(h+=r.bottom,n(i.text)&&(h+=a.lineHeight*(i.text.length-1))):h+=r.top;const{titleX:c,titleY:d,maxWidth:u,rotation:f}=function(t,e,i,s){const{top:n,left:a,bottom:r,right:l,chart:h}=t,{chartArea:c,scales:d}=h;let u,f,g,p=0;const m=r-n,x=l-a;if(t.isHorizontal()){if(f=ft(s,a,l),o(i)){const t=Object.keys(i)[0],s=i[t];g=d[t].getPixelForValue(s)+m-e}else g="center"===i?(c.bottom+c.top)/2+m-e:Xs(t,i,e);u=l-a}else{if(o(i)){const t=Object.keys(i)[0],s=i[t];f=d[t].getPixelForValue(s)-x+e}else f="center"===i?(c.left+c.right)/2-x+e:Xs(t,i,e);g=ft(s,r,n),p="left"===i?-E:E}return{titleX:f,titleY:g,maxWidth:u,rotation:p}}(this,h,e,l);Ne(t,i.text,0,0,a,{color:i.color,maxWidth:u,rotation:f,textAlign:Qs(l,e,s),textBaseline:"middle",translation:[c,d]})}draw(t){this._isVisible()&&(this.drawBackground(),this.drawGrid(t),this.drawBorder(),this.drawTitle(),this.drawLabels(t))}_layers(){const t=this.options,e=t.ticks&&t.ticks.z||0,i=l(t.grid&&t.grid.z,-1),s=l(t.border&&t.border.z,0);return this._isVisible()&&this.draw===tn.prototype.draw?[{z:i,draw:t=>{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let n,o;for(n=0,o=e.length;n<o;++n){const o=e[n];o[i]!==this.id||t&&o.type!==t||s.push(o)}return s}_resolveTickFontOptions(t){return Si(this.options.ticks.setContext(this.getContext(t)).font)}_maxDigits(){const t=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/t}}class en{constructor(t,e,i){this.type=t,this.scope=e,this.override=i,this.items=Object.create(null)}isForType(t){return Object.prototype.isPrototypeOf.call(this.type.prototype,t.prototype)}register(t){const e=Object.getPrototypeOf(t);let i;(function(t){return"id"in t&&"defaults"in t})(e)&&(i=this.register(e));const s=this.items,n=t.id,o=this.scope+"."+n;if(!n)throw new Error("class does not have id: "+t);return n in s||(s[n]=t,function(t,e,i){const s=x(Object.create(null),[i?ue.get(i):{},ue.get(e),t.defaults]);ue.set(e,s),t.defaultRoutes&&function(t,e){Object.keys(e).forEach((i=>{const s=i.split("."),n=s.pop(),o=[t].concat(s).join("."),a=e[i].split("."),r=a.pop(),l=a.join(".");ue.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&ue.describe(e,t.descriptors)}(t,o,i),this.override&&ue.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in ue[s]&&(delete ue[s][i],this.override&&delete re[i])}}class sn{constructor(){this.controllers=new en(js,"datasets",!0),this.elements=new en($s,"elements"),this.plugins=new en(Object,"plugins"),this.scales=new en(tn,"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=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):u(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=w(t);d(i["before"+s],[],i),e[t](i),d(i["after"+s],[],i)}_getRegistryForType(t){for(let e=0;e<this._typedRegistries.length;e++){const i=this._typedRegistries[e];if(i.isForType(t))return i}return this.plugins}_get(t,e,i){const s=e.get(t);if(void 0===s)throw new Error('"'+t+'" is not a registered '+i+".");return s}}var nn=new sn;class on{constructor(){this._init=void 0}notify(t,e,i,s){if("beforeInit"===e&&(this._init=this._createDescriptors(t,!0),this._notify(this._init,t,"install")),void 0===this._init)return;const n=s?this._descriptors(t).filter(s):this._descriptors(t),o=this._notify(n,t,e,i);return"afterDestroy"===e&&(this._notify(n,t,"stop"),this._notify(this._init,t,"uninstall"),this._init=void 0),o}_notify(t,e,i,s){s=s||{};for(const n of t){const t=n.plugin;if(!1===d(t[i],[e,s,n.options],t)&&s.cancelable)return!1}return!0}invalidate(){s(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(t){if(this._cache)return this._cache;const e=this._cache=this._createDescriptors(t);return this._notifyStateChanges(t),e}_createDescriptors(t,e){const i=t&&t.config,s=l(i.options&&i.options.plugins,{}),n=function(t){const e={},i=[],s=Object.keys(nn.plugins.items);for(let t=0;t<s.length;t++)i.push(nn.getPlugin(s[t]));const n=t.plugins||[];for(let t=0;t<n.length;t++){const s=n[t];-1===i.indexOf(s)&&(i.push(s),e[s.id]=!0)}return{plugins:i,localIds:e}}(i);return!1!==s||e?function(t,{plugins:e,localIds:i},s,n){const o=[],a=t.getContext();for(const r of e){const e=r.id,l=an(s[e],n);null!==l&&o.push({plugin:r,options:rn(t.config,{plugin:r,local:i[e]},l,a)})}return o}(t,n,s,e):[]}_notifyStateChanges(t){const e=this._oldCache||[],i=this._cache,s=(t,e)=>t.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 an(t,e){return e||!1!==t?!0===t?{}:t:null}function rn(t,{plugin:e,local:i},s,n){const o=t.pluginScopeKeys(e),a=t.getOptionScopes(s,o);return i&&e.defaults&&a.push(e.defaults),t.createResolver(a,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function ln(t,e){const i=ue.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function hn(t){if("x"===t||"y"===t||"r"===t)return t}function cn(t,...e){if(hn(t))return t;for(const s of e){const e=s.axis||("top"===(i=s.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.length>1&&hn(t[0].toLowerCase());if(e)return e}var i;throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function dn(t,e,i){if(i[e+"AxisID"]===t)return{axis:e}}function un(t,e){const i=re[t.type]||{scales:{}},s=e.scales||{},n=ln(t.type,e),a=Object.create(null);return Object.keys(s).forEach((e=>{const r=s[e];if(!o(r))return console.error(`Invalid scale configuration for scale: ${e}`);if(r._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${e}`);const l=cn(e,r,function(t,e){if(e.data&&e.data.datasets){const i=e.data.datasets.filter((e=>e.xAxisID===t||e.yAxisID===t));if(i.length)return dn(t,"x",i[0])||dn(t,"y",i[0])}return{}}(e,t),ue.scales[r.type]),h=function(t,e){return t===e?"_index_":"_value_"}(l,n),c=i.scales||{};a[e]=b(Object.create(null),[{axis:l},r,c[l],c[h]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,o=i.indexAxis||ln(n,e),r=(re[n]||{}).scales||{};Object.keys(r).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,o),n=i[e+"AxisID"]||e;a[n]=a[n]||Object.create(null),b(a[n],[{axis:e},s[n],r[t]])}))})),Object.keys(a).forEach((t=>{const e=a[t];b(e,[ue.scales[e.type],ue.scale])})),a}function fn(t){const e=t.options||(t.options={});e.plugins=l(e.plugins,{}),e.scales=un(t,e)}function gn(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const pn=new Map,mn=new Set;function xn(t,e){let i=pn.get(t);return i||(i=e(),pn.set(t,i),mn.add(i)),i}const bn=(t,e,i)=>{const s=M(e,i);void 0!==s&&t.add(s)};class _n{constructor(t){this._config=function(t){return(t=t||{}).data=gn(t.data),fn(t),t}(t),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=gn(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),fn(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return xn(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return xn(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return xn(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id;return xn(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>bn(r,t,e)))),e.forEach((t=>bn(r,s,t))),e.forEach((t=>bn(r,re[n]||{},t))),e.forEach((t=>bn(r,ue,t))),e.forEach((t=>bn(r,le,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),mn.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,re[e]||{},ue.datasets[e]||{},{type:e},ue,le]}resolveNamedOptions(t,e,i,s=[""]){const o={$shared:!0},{resolver:a,subPrefixes:r}=yn(this._resolverCache,t,s);let l=a;if(function(t,e){const{isScriptable:i,isIndexable:s}=Ye(t);for(const o of e){const e=i(o),a=s(o),r=(a||e)&&t[o];if(e&&(S(r)||vn(r))||a&&n(r))return!0}return!1}(a,e)){o.$shared=!1;l=$e(a,i=S(i)?i():i,this.createResolver(t,i,r))}for(const t of e)o[t]=l[t];return o}createResolver(t,e,i=[""],s){const{resolver:n}=yn(this._resolverCache,t,i);return o(e)?$e(n,e,void 0,s):n}}function yn(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:je(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},s.set(n,o)}return o}const vn=t=>o(t)&&Object.getOwnPropertyNames(t).some((e=>S(t[e])));const Mn=["top","bottom","left","right","chartArea"];function wn(t,e){return"top"===t||"bottom"===t||-1===Mn.indexOf(t)&&"x"===e}function kn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function Sn(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),d(i&&i.onComplete,[t],e)}function Pn(t){const e=t.chart,i=e.options.animation;d(i&&i.onProgress,[t],e)}function Dn(t){return fe()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const Cn={},On=t=>{const e=Dn(t);return Object.values(Cn).filter((t=>t.canvas===e)).pop()};function An(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}class Tn{static defaults=ue;static instances=Cn;static overrides=re;static registry=nn;static version="4.5.1";static getChart=On;static register(...t){nn.add(...t),Ln()}static unregister(...t){nn.remove(...t),Ln()}constructor(t,e){const s=this.config=new _n(e),n=Dn(t),o=On(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const a=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||Ps(n)),this.platform.updateConfig(s);const r=this.platform.acquireContext(n,a.aspectRatio),l=r&&r.canvas,h=l&&l.height,c=l&&l.width;this.id=i(),this.ctx=r,this.canvas=l,this.width=c,this.height=h,this._options=a,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 on,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=dt((t=>this.update(t)),a.resizeDelay||0),this._dataChanges=[],Cn[this.id]=this,r&&l?(bt.listen(this,"complete",Sn),bt.listen(this,"progress",Pn),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:n,_aspectRatio:o}=this;return s(t)?e&&o?o:n?i/n: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 nn}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():ke(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Te(this.canvas,this.ctx),this}stop(){return bt.stop(this),this}resize(t,e){bt.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,ke(this,a,!0)&&(this.notifyPlugins("resize",{size:o}),d(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){u(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=cn(t,i),n="r"===s,o="x"===s;return{options:i,dposition:n?"chartArea":o?"bottom":"left",dtype:n?"radialLinear":o?"category":"linear"}})))),u(n,(e=>{const n=e.options,o=n.id,a=cn(o,n),r=l(n.type,e.dtype);void 0!==n.position&&wn(n.position,a)===wn(e.dposition)||(n.position=e.dposition),s[o]=!0;let h=null;if(o in i&&i[o].type===r)h=i[o];else{h=new(nn.getScale(r))({id:o,type:r,ctx:this.ctx,chart:this}),i[h.id]=h}h.init(n,t)})),u(s,((t,e)=>{t||delete i[e]})),u(i,(t=>{ls.configure(this,t,t.options),ls.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;t<i;++t)this._destroyDatasetMeta(t);t.splice(e,i-e)}this._sortedMetasets=t.slice(0).sort(kn("order","index"))}_removeUnreferencedMetasets(){const{_metasets:t,data:{datasets:e}}=this;t.length>e.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i<s;i++){const s=e[i];let n=this.getDatasetMeta(i);const o=s.type||this.config.type;if(n.type&&n.type!==o&&(this._destroyDatasetMeta(i),n=this.getDatasetMeta(i)),n.type=o,n.indexAxis=s.indexAxis||ln(o,this.options),n.order=s.order||0,n.index=i,n.label=""+s.label,n.visible=this.isDatasetVisible(i),n.controller)n.controller.updateIndex(i),n.controller.linkScales();else{const e=nn.getController(o),{datasetElementType:s,dataElementType:a}=ue.datasets[o];Object.assign(e,{dataElementType:nn.getElement(a),datasetElementType:s&&nn.getElement(s)}),n.controller=new e(this,i),t.push(n.controller)}}return this._updateMetasets(),t}_resetElements(){u(this.data.datasets,((t,e)=>{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let t=0,e=this.data.datasets.length;t<e;t++){const{controller:e}=this.getDatasetMeta(t),i=!s&&-1===n.indexOf(e);e.buildOrUpdateElements(i),o=Math.max(+e.getMaxOverflow(),o)}o=this._minPadding=i.layout.autoPadding?o:0,this._updateLayout(o),s||u(n,(t=>{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(kn("z","_idx"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){u(this.scales,(t=>{ls.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);P(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){An(t,s,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),s=i(0);for(let t=1;t<e;t++)if(!P(s,i(t)))return;return Array.from(s).map((t=>t.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;ls.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],u(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 t=0,e=this.data.datasets.length;t<e;++t)this.getDatasetMeta(t).controller.configure();for(let e=0,i=this.data.datasets.length;e<i;++e)this._updateDataset(e,S(t)?t({datasetIndex:e}):t);this.notifyPlugins("afterDatasetsUpdate",{mode:t})}}_updateDataset(t,e){const i=this.getDatasetMeta(t),s={meta:i,index:t,mode:e,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetUpdate",s)&&(i.controller._update(e),s.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",s))}render(){!1!==this.notifyPlugins("beforeRender",{cancelable:!0})&&(bt.has(this)?this.attached&&!bt.running(this)&&bt.start(this):(this.draw(),Sn({chart:this})))}draw(){let t;if(this._resizeBeforeDraw){const{width:t,height:e}=this._resizeBeforeDraw;this._resizeBeforeDraw=null,this._resize(t,e)}if(this.clear(),this.width<=0||this.height<=0)return;if(!1===this.notifyPlugins("beforeDraw",{cancelable:!0}))return;const e=this._layers;for(t=0;t<e.length&&e[t].z<=0;++t)e[t].draw(this.chartArea);for(this._drawDatasets();t<e.length;++t)e[t].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(t){const e=this._sortedMetasets,i=[];let s,n;for(s=0,n=e.length;s<n;++s){const n=e[s];t&&!n.visible||i.push(n)}return i}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(!1===this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0}))return;const t=this.getSortedVisibleDatasetMetas();for(let e=t.length-1;e>=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i={meta:t,index:t.index,cancelable:!0},s=Ni(this,t);!1!==this.notifyPlugins("beforeDatasetDraw",i)&&(s&&Ie(e,s),t.controller.draw(),s&&ze(e),i.cancelable=!1,this.notifyPlugins("afterDatasetDraw",i))}isPointInArea(t){return Re(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,s){const n=Ki.modes[e];return"function"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let 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=Ci(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?"show":"hide",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);k(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),bt.remove(this),t=0,e=this.data.datasets.length;t<e;++t)this._destroyDatasetMeta(t)}destroy(){this.notifyPlugins("beforeDestroy");const{canvas:t,ctx:e}=this;this._stop(),this.config.clearCache(),t&&(this.unbindEvents(),Te(t,e),this.platform.releaseContext(e),this.canvas=null,this.ctx=null),delete Cn[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...t){return this.canvas.toDataURL(...t)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const t=this._listeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};u(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",n),i("detach",o)};o=()=>{this.attached=!1,s("resize",n),this._stop(),this._resize(0,0),i("attach",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){u(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},u(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?"set":"remove";let n,o,a,r;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+s+"DatasetHoverStyle"]()),a=0,r=t.length;a<r;++a){o=t[a];const e=o&&this.getDatasetMeta(o.datasetIndex).controller;e&&e[s+"HoverStyle"](o.element,o.datasetIndex,o.index)}}getActiveElements(){return this._active||[]}setActiveElements(t){const e=this._active||[],i=t.map((({datasetIndex:t,index:e})=>{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}));!f(i,e)&&(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){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const 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;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=D(t),l=function(t,e,i,s){return i&&"mouseout"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,d(n.onHover,[t,a,this],this),r&&d(n.onClick,[t,a,this],this));const h=!f(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}function Ln(){return u(Tn.instances,(t=>t._plugins.invalidate()))}function En(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class Rn{static override(t){Object.assign(Rn.prototype,t)}options;constructor(t){this.options=t||{}}init(){}formats(){return En()}parse(){return En()}format(){return En()}add(){return En()}diff(){return En()}startOf(){return En()}endOf(){return En()}}var In={_date:Rn};function zn(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;e<n;e++)s=s.concat(i[e].controller.getAllParsedValues(t));t._cache.$bar=lt(s.sort(((t,e)=>t-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(k(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;s<n;++s)o=e.getPixelForValue(i[s]),l();for(a=void 0,s=0,n=e.ticks.length;s<n;++s)o=e.getPixelForTick(s),l();return r}function Fn(t,e,i,s){return n(t)?function(t,e,i,s){const n=i.parse(t[0],s),o=i.parse(t[1],s),a=Math.min(n,o),r=Math.max(n,o);let l=a,h=r;Math.abs(a)>Math.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,s):e[i.axis]=i.parse(t,s),e}function Vn(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;h<c;++h)u=e[h],d={},d[n.axis]=r||n.parse(a[h],h),l.push(Fn(u,d,o,h));return l}function Bn(t){return t&&void 0!==t.barStart&&void 0!==t.barEnd}function Wn(t,e,i,s){let n=e.borderSkipped;const o={};if(!n)return void(t.borderSkipped=o);if(!0===n)return void(t.borderSkipped={top:!0,right:!0,bottom:!0,left:!0});const{start:a,end:r,reverse:l,top:h,bottom:c}=function(t){let e,i,s,n,o;return t.horizontal?(e=t.base>t.x,i="left",s="right"):(e=t.base<t.y,i="bottom",s="top"),e?(n="end",o="start"):(n="start",o="end"),{start:i,end:s,reverse:e,top:n,bottom:o}}(t);"middle"===n&&i&&(t.enableBorderRadius=!0,(i._top||0)===s?n=h:(i._bottom||0)===s?n=c:(o[Nn(c,a,r,l)]=!0,n=h)),o[Nn(n,a,r,l)]=!0,t.borderSkipped=o}function Nn(t,e,i,s){var n,o,a;return s?(a=i,t=Hn(t=(n=t)===(o=e)?a:n===a?o:n,i,e)):t=Hn(t,e,i),t}function Hn(t,e,i){return"start"===t?e:"end"===t?i:t}function jn(t,{inflateAmount:e},i){t.inflateAmount="auto"===e?1===i?.33:0:e}class $n extends js{static id="doughnut";static defaults={datasetElementType:!1,dataElementType:"arc",animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:"number",properties:["circumference","endAngle","innerRadius","outerRadius","startAngle","x","y","offset","borderWidth","spacing"]}},cutout:"50%",rotation:0,circumference:360,radius:"100%",spacing:0,indexAxis:"r"};static descriptors={_scriptable:t=>"spacing"!==t,_indexable:t=>"spacing"!==t&&!t.startsWith("borderDash")&&!t.startsWith("hoverBorderDash")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data,{labels:{pointStyle:i,textAlign:s,color:n,useBorderRadius:o,borderRadius:a}}=t.legend.options;return e.labels.length&&e.datasets.length?e.labels.map(((e,r)=>{const l=t.getDatasetMeta(0).controller.getStyle(r);return{text:e,fillStyle:l.backgroundColor,fontColor:n,hidden:!t.getDataVisibility(r),lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:l.borderWidth,strokeStyle:l.borderColor,textAlign:s,pointStyle:i,borderRadius:o&&(a||l.borderRadius),index:r}})):[]}},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){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let n,a,r=t=>+i[t];if(o(i[t])){const{key:t="value"}=this._parsing;r=e=>+M(i[e],t)}for(n=t,a=t+e;n<a;++n)s._parsed[n]=r(n)}}_getRotation(){return $(this.options.rotation-90)}_getCircumference(){return $(this.options.circumference)}_getRotationExtents(){let t=O,e=-O;for(let i=0;i<this.chart.data.datasets.length;++i)if(this.chart.isDatasetVisible(i)&&this.chart.getDatasetMeta(i).type===this._type){const s=this.chart.getDatasetMeta(i).controller,n=s._getRotation(),o=s._getCircumference();t=Math.min(t,n),e=Math.max(e,n+o)}return{rotation:t,circumference:e-t}}update(t){const e=this.chart,{chartArea:i}=e,s=this._cachedMeta,n=s.data,o=this.getMaxBorderWidth()+this.getMaxOffset(n)+this.options.spacing,a=Math.max((Math.min(i.width,i.height)-o)/2,0),r=Math.min(h(this.options.cutout,a),1),l=this._getRingWeight(this.index),{circumference:d,rotation:u}=this._getRotationExtents(),{ratioX:f,ratioY:g,offsetX:p,offsetY:m}=function(t,e,i){let s=1,n=1,o=0,a=0;if(e<O){const r=t,l=r+e,h=Math.cos(r),c=Math.sin(r),d=Math.cos(l),u=Math.sin(l),f=(t,e,s)=>J(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>J(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(E,c,u),x=g(C,h,d),b=g(C+E,c,u);s=(p-x)/2,n=(m-b)/2,o=-(p+x)/2,a=-(m+b)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(u,d,r),x=(i.width-o)/f,b=(i.height-o)/g,_=Math.max(Math.min(x,b)/2,0),y=c(this.options.radius,_),v=(y-Math.max(y*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=p*y,this.offsetY=m*y,s.total=this.calculateTotal(),this.outerRadius=y-v*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-v*l,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n/O)}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)/2,h=(a.top+a.bottom)/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:f,includeOptions:g}=this._getSharedOptions(e,s);let p,m=this._getRotation();for(p=0;p<e;++p)m+=this._circumference(p,n);for(p=e;p<e+i;++p){const e=this._circumference(p,n),i=t[p],o={x:l+this.offsetX,y:h+this.offsetY,startAngle:m,endAngle:m+e,circumference:e,outerRadius:u,innerRadius:d};g&&(o.options=f||this.resolveDataElementOptions(p,i.active?"active":s)),m+=e,this.updateElement(i,p,o,s)}}calculateTotal(){const t=this._cachedMeta,e=t.data;let i,s=0;for(i=0;i<e.length;i++){const n=t._parsed[i];null===n||isNaN(n)||!this.chart.getDataVisibility(i)||e[i].hidden||(s+=Math.abs(n))}return s}calculateCircumference(t){const e=this._cachedMeta.total;return e>0&&!isNaN(t)?O*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t],i.options.locale);return{label:s[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s<n;++s)if(i.isDatasetVisible(s)){o=i.getDatasetMeta(s),t=o.data,a=o.controller;break}if(!t)return 0;for(s=0,n=t.length;s<n;++s)r=a.resolveDataElementOptions(s),"inner"!==r.borderAlign&&(e=Math.max(e,r.borderWidth||0,r.hoverBorderWidth||0));return e}getMaxOffset(t){let e=0;for(let i=0,s=t.length;i<s;++i){const t=this.resolveDataElementOptions(i);e=Math.max(e,t.offset||0,t.hoverOffset||0)}return e}_getRingWeightOffset(t){let e=0;for(let i=0;i<t;++i)this.chart.isDatasetVisible(i)&&(e+=this._getRingWeight(i));return e}_getRingWeight(t){return Math.max(l(this.chart.data.datasets[t].weight,1),0)}_getVisibleDatasetWeightTotal(){return this._getRingWeightOffset(this.chart.data.datasets.length)||1}}class Yn extends js{static id="polarArea";static defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:s}}=t.legend.options;return e.labels.map(((e,n)=>{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}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){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:n}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach(((t,i)=>{const s=this.getParsed(i).r;!isNaN(s)&&this.chart.getDataVisibility(i)&&(s<e.min&&(e.min=s),s>e.max&&(e.max=s))})),e}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s/2,0),o=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.options.animation,r=this._cachedMeta.rScale,l=r.xCenter,h=r.yCenter,c=r.getIndexAngle(0)-.5*C;let d,u=c;const f=360/this.countVisibleElements();for(d=0;d<e;++d)u+=this._computeAngle(d,s,f);for(d=e;d<e+i;d++){const e=t[d];let i=u,g=u+this._computeAngle(d,s,f),p=o.getDataVisibility(d)?r.getDistanceFromCenterForValue(this.getParsed(d).r):0;u=g,n&&(a.animateScale&&(p=0),a.animateRotate&&(i=g=c));const m={x:l,y:h,innerRadius:0,outerRadius:p,startAngle:i,endAngle:g,options:this.resolveDataElementOptions(d,e.active?"active":s)};this.updateElement(e,d,m,s)}}countVisibleElements(){const t=this._cachedMeta;let e=0;return t.data.forEach(((t,i)=>{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++})),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?$(this.resolveDataElementOptions(t,e).angle||i):0}}var Un=Object.freeze({__proto__:null,BarController:class extends js{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 Vn(t,e,i,s)}parseArrayData(t,e,i,s){return Vn(t,e,i,s)}parseObjectData(t,e,i,s){const{iScale:n,vScale:o}=t,{xAxisKey:a="x",yAxisKey:r="y"}=this._parsing,l="x"===n.axis?a:r,h="x"===o.axis?a:r,c=[];let d,u,f,g;for(d=i,u=i+s;d<u;++d)g=e[d],f={},f[n.axis]=n.parse(M(g,l),d),c.push(Fn(M(g,h),f,o,d));return c}updateRangeFromParsed(t,e,i,s){super.updateRangeFromParsed(t,e,i,s);const n=i._custom;n&&e===this._cachedMeta.vScale&&(t.min=Math.min(t.min,n.min),t.max=Math.max(t.max,n.max))}getMaxOverflow(){return 0}getLabelAndValue(t){const e=this._cachedMeta,{iScale:i,vScale:s}=e,n=this.getParsed(t),o=n._custom,a=Bn(o)?"["+o.start+", "+o.end+"]":""+s.getLabelForValue(n[s.axis]);return{label:""+i.getLabelForValue(n[i.axis]),value:a}}initialize(){this.enableOptionSharing=!0,super.initialize();this._cachedMeta.stack=this.getDataset().stack}update(t){const e=this._cachedMeta;this.updateElements(e.data,0,e.data.length,t)}updateElements(t,e,i,n){const o="reset"===n,{index:a,_cachedMeta:{vScale:r}}=this,l=r.getBasePixel(),h=r.isHorizontal(),c=this._getRuler(),{sharedOptions:d,includeOptions:u}=this._getSharedOptions(e,n);for(let f=e;f<e+i;f++){const e=this.getParsed(f),i=o||s(e[r.axis])?{base:l,head:l}:this._calculateBarValuePixels(f),g=this._calculateBarIndexPixels(f,c),p=(e._stacks||{})[r.axis],m={horizontal:h,base:i.base,enableBorderRadius:!p||Bn(e._custom)||a===p._top||a===p._bottom,x:h?i.head:g.center,y:h?g.center:i.head,height:h?g.size:Math.abs(i.size),width:h?Math.abs(i.size):g.size};u&&(m.options=d||this.resolveDataElementOptions(f,t[f].active?"active":n));const x=m.options||t[f].options;Wn(m,x,p,a),jn(m,x,c.ratio),this.updateElement(t[f],f,m,n)}}_getStacks(t,e){const{iScale:i}=this._cachedMeta,n=i.getMatchingVisibleMetas(this._type).filter((t=>t.controller.options.grouped)),o=i.options.stacked,a=[],r=this._cachedMeta.controller.getParsed(e),l=r&&r[i.axis],h=t=>{const e=t._parsed.find((t=>t[i.axis]===l)),n=e&&e[t.vScale.axis];if(s(n)||isNaN(n))return!0};for(const i of n)if((void 0===e||!h(i))&&((!1===o||-1===a.indexOf(i.stack)||void 0===o&&void 0===i.stack)&&a.push(i.stack),i.index===t))break;return a.length||a.push(void 0),a}_getStackCount(t){return this._getStacks(void 0,t).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){const t=this.chart.scales,e=this.chart.options.indexAxis;return Object.keys(t).filter((i=>t[i].axis===e)).shift()}_getAxis(){const t={},e=this.getFirstScaleIdForIndexAxis();for(const i of this.chart.data.datasets)t[l("x"===this.chart.options.indexAxis?i.xAxisID:i.yAxisID,e)]=!0;return Object.keys(t)}_getStackIndex(t,e,i){const s=this._getStacks(t,i),n=void 0!==e?s.indexOf(e):-1;return-1===n?s.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,s=[];let n,o;for(n=0,o=e.data.length;n<o;++n)s.push(i.getPixelForValue(this.getParsed(n)[i.axis],n));const a=t.barThickness;return{min:a||zn(e),pixels:s,start:i._startPixel,end:i._endPixel,stackCount:this._getStackCount(),scale:i,grouped:t.grouped,ratio:a?1:t.categoryPercentage*t.barPercentage}}_calculateBarValuePixels(t){const{_cachedMeta:{vScale:e,_stacked:i,index:n},options:{base:o,minBarLength:a}}=this,r=o||0,l=this.getParsed(t),h=l._custom,c=Bn(h);let d,u,f=l[e.axis],g=0,p=i?this.applyStack(e,l,i):f;p!==f&&(g=p-f,p=f),c&&(f=h.barStart,p=h.barEnd-h.barStart,0!==f&&F(f)!==F(h.barEnd)&&(g=0),g+=f);const m=s(o)||c?g:o;let x=e.getPixelForValue(m);if(d=this.chart.getDataVisibility(t)?e.getPixelForValue(g+p):x,u=d-x,Math.abs(u)<a){u=function(t,e,i){return 0!==t?F(t):(e.isHorizontal()?1:-1)*(e.min>=i?1:-1)}(u,e,r)*a,f===r&&(x-=u/2);const t=e.getPixelForDecimal(0),s=e.getPixelForDecimal(1),o=Math.min(t,s),h=Math.max(t,s);x=Math.max(Math.min(x,h),o),d=x+u,i&&!c&&(l._stacks[e.axis]._visualValues[n]=e.getValueForPixel(d)-e.getValueForPixel(x))}if(x===e.getPixelForValue(r)){const t=F(u)*e.getLineWidthForValue(r)/2;x+=t,u-=t}return{size:u,base:x,head:d,center:d+u/2}}_calculateBarIndexPixels(t,e){const i=e.scale,n=this.options,o=n.skipNull,a=l(n.maxBarThickness,1/0);let r,h;const c=this._getAxisCount();if(e.grouped){const i=o?this._getStackCount(t):e.stackCount,d="flex"===n.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t<n.length-1?n[t+1]:null;const l=i.categoryPercentage;null===a&&(a=o-(null===r?e.end-e.start:r-o)),null===r&&(r=o+o-a);const h=o-(o-Math.min(a,r))/2*l;return{chunk:Math.abs(r-a)/2*l/s,ratio:i.barPercentage,start:h}}(t,e,n,i*c):function(t,e,i,n){const o=i.barThickness;let a,r;return s(o)?(a=e.min*i.categoryPercentage,r=i.barPercentage):(a=o*n,r=1),{chunk:a/n,ratio:r,start:e.pixels[t]-a/2}}(t,e,n,i*c),u="x"===this.chart.options.indexAxis?this.getDataset().xAxisID:this.getDataset().yAxisID,f=this._getAxis().indexOf(l(u,this.getFirstScaleIdForIndexAxis())),g=this._getStackIndex(this.index,this._cachedMeta.stack,o?t:void 0)+f;r=d.start+d.chunk*g+d.chunk/2,h=Math.min(a,d.chunk*d.ratio)}else r=i.getPixelForValue(this.getParsed(t)[i.axis],t),h=Math.min(a,e.min*e.ratio);return{base:r-h/2,head:r+h/2,center:r,size:h}}draw(){const t=this._cachedMeta,e=t.vScale,i=t.data,s=i.length;let n=0;for(;n<s;++n)null===this.getParsed(n)[e.axis]||i[n].hidden||i[n].draw(this._ctx)}},BubbleController:class extends js{static id="bubble";static defaults={datasetElementType:!1,dataElementType:"point",animations:{numbers:{type:"number",properties:["x","y","borderWidth","radius"]}}};static overrides={scales:{x:{type:"linear"},y:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,super.initialize()}parsePrimitiveData(t,e,i,s){const n=super.parsePrimitiveData(t,e,i,s);for(let t=0;t<n.length;t++)n[t]._custom=this.resolveDataElementOptions(t+i).radius;return n}parseArrayData(t,e,i,s){const n=super.parseArrayData(t,e,i,s);for(let t=0;t<n.length;t++){const s=e[i+t];n[t]._custom=l(s[2],this.resolveDataElementOptions(t+i).radius)}return n}parseObjectData(t,e,i,s){const n=super.parseObjectData(t,e,i,s);for(let t=0;t<n.length;t++){const s=e[i+t];n[t]._custom=l(s&&s.r&&+s.r,this.resolveDataElementOptions(t+i).radius)}return n}getMaxOverflow(){const t=this._cachedMeta.data;let e=0;for(let i=t.length-1;i>=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y),l=o._custom;return{label:i[t]||"",value:"("+a+", "+r+(l?", "+l:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a}=this._cachedMeta,{sharedOptions:r,includeOptions:l}=this._getSharedOptions(e,s),h=o.axis,c=a.axis;for(let d=e;d<e+i;d++){const e=t[d],i=!n&&this.getParsed(d),u={},f=u[h]=n?o.getPixelForDecimal(.5):o.getPixelForValue(i[h]),g=u[c]=n?a.getBasePixel():a.getPixelForValue(i[c]);u.skip=isNaN(f)||isNaN(g),l&&(u.options=r||this.resolveDataElementOptions(d,e.active?"active":s),n&&(u.options.radius=0)),this.updateElement(e,d,u,s)}}resolveDataElementOptions(t,e){const i=this.getParsed(t);let s=super.resolveDataElementOptions(t,e);s.$shared&&(s=Object.assign({},s,{$shared:!1}));const n=s.radius;return"active"!==e&&(s.radius=0),s.radius+=l(i&&i._custom,n),s}},DoughnutController:$n,LineController:class extends js{static id="line";static defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};static overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:i,data:s=[],_dataset:n}=e,o=this.chart._animationsDisabled;let{start:a,count:r}=pt(e,s,o);this._drawStart=a,this._drawCount=r,mt(e)&&(a=0,r=s.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!n._decimated,i.points=s;const l=this.resolveDatasetElementOptions(t);this.options.showLine||(l.borderWidth=0),l.segment=this.options.segment,this.updateElement(i,void 0,{animated:!o,options:l},t),this.updateElements(s,a,r,t)}updateElements(t,e,i,n){const o="reset"===n,{iScale:a,vScale:r,_stacked:l,_dataset:h}=this._cachedMeta,{sharedOptions:c,includeOptions:d}=this._getSharedOptions(e,n),u=a.axis,f=r.axis,{spanGaps:g,segment:p}=this.options,m=N(g)?g:Number.POSITIVE_INFINITY,x=this.chart._animationsDisabled||o||"none"===n,b=e+i,_=t.length;let y=e>0&&this.getParsed(e-1);for(let i=0;i<_;++i){const g=t[i],_=x?g:{};if(i<e||i>=b){_.skip=!0;continue}const v=this.getParsed(i),M=s(v[f]),w=_[u]=a.getPixelForValue(v[u],i),k=_[f]=o||M?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,v,l):v[f],i);_.skip=isNaN(w)||isNaN(k)||M,_.stop=i>0&&Math.abs(v[u]-y[u])>m,p&&(_.parsed=v,_.raw=h.data[i]),d&&(_.options=c||this.resolveDataElementOptions(i,g.active?"active":n)),x||this.updateElement(g,i,_,n),y=v}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PieController:class extends $n{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}},PolarAreaController:Yn,RadarController:class extends js{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){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this._cachedMeta.rScale,o="reset"===s;for(let a=e;a<e+i;a++){const e=t[a],i=this.resolveDataElementOptions(a,e.active?"active":s),r=n.getPointPositionForValue(a,this.getParsed(a).r),l=o?n.xCenter:r.x,h=o?n.yCenter:r.y,c={x:l,y:h,angle:r.angle,skip:isNaN(l)||isNaN(h),options:i};this.updateElement(e,a,c,s)}}},ScatterController:class extends js{static id="scatter";static defaults={datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1};static overrides={interaction:{mode:"point"},scales:{x:{type:"linear"},y:{type:"linear"}}};getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y);return{label:i[t]||"",value:"("+a+", "+r+")"}}update(t){const e=this._cachedMeta,{data:i=[]}=e,s=this.chart._animationsDisabled;let{start:n,count:o}=pt(e,i,s);if(this._drawStart=n,this._drawCount=o,mt(e)&&(n=0,o=i.length),this.options.showLine){this.datasetElementType||this.addElements();const{dataset:n,_dataset:o}=e;n._chart=this.chart,n._datasetIndex=this.index,n._decimated=!!o._decimated,n.points=i;const a=this.resolveDatasetElementOptions(t);a.segment=this.options.segment,this.updateElement(n,void 0,{animated:!s,options:a},t)}else this.datasetElementType&&(delete e.dataset,this.datasetElementType=!1);this.updateElements(i,n,o,t)}addElements(){const{showLine:t}=this.options;!this.datasetElementType&&t&&(this.datasetElementType=this.chart.registry.getElement("line")),super.addElements()}updateElements(t,e,i,n){const o="reset"===n,{iScale:a,vScale:r,_stacked:l,_dataset:h}=this._cachedMeta,c=this.resolveDataElementOptions(e,n),d=this.getSharedOptions(c),u=this.includeOptions(n,d),f=a.axis,g=r.axis,{spanGaps:p,segment:m}=this.options,x=N(p)?p:Number.POSITIVE_INFINITY,b=this.chart._animationsDisabled||o||"none"===n;let _=e>0&&this.getParsed(e-1);for(let c=e;c<e+i;++c){const e=t[c],i=this.getParsed(c),p=b?e:{},y=s(i[g]),v=p[f]=a.getPixelForValue(i[f],c),M=p[g]=o||y?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,i,l):i[g],c);p.skip=isNaN(v)||isNaN(M)||y,p.stop=c>0&&Math.abs(i[f]-_[f])>x,m&&(p.parsed=i,p.raw=h.data[c]),u&&(p.options=d||this.resolveDataElementOptions(c,e.active?"active":n)),b||this.updateElement(e,c,p,n),_=i}this.updateSharedOptions(d,n,c)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let t=0;for(let i=e.length-1;i>=0;--i)t=Math.max(t,e[i].size(this.resolveDataElementOptions(i))/2);return t>0&&t}const i=t.dataset,s=i.options&&i.options.borderWidth||0;if(!e.length)return s;const n=e[0].size(this.resolveDataElementOptions(0)),o=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(s,n,o)/2}}});function Xn(t,e,i,s){const n=vi(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const o=(i-e)/2,a=Math.min(o,s*e/2),r=t=>{const e=(i-Math.min(o,t))*s/2;return Z(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:Z(n.innerStart,0,a),innerEnd:Z(n.innerEnd,0,a)}}function qn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function Kn(t,e,i,s,n,o){const{x:a,y:r,startAngle:l,pixelMargin:h,innerRadius:c}=e,d=Math.max(e.outerRadius+s+i-h,0),u=c>0?c+s+i+h:0;let f=0;const g=n-l;if(s){const t=((c>0?c-s:0)+(d>0?d-s:0))/2;f=(g-(0!==t?g*t/(t+s):g))/2}const p=(g-Math.max(.001,g*d-i/C)/d)/2,m=l+p+f,x=n-p-f,{outerStart:b,outerEnd:_,innerStart:y,innerEnd:v}=Xn(e,u,d,x-m),M=d-b,w=d-_,k=m+b/M,S=x-_/w,P=u+y,D=u+v,O=m+y/P,A=x-v/D;if(t.beginPath(),o){const e=(k+S)/2;if(t.arc(a,r,d,k,e),t.arc(a,r,d,e,S),_>0){const e=qn(w,S,a,r);t.arc(e.x,e.y,_,S,x+E)}const i=qn(D,x,a,r);if(t.lineTo(i.x,i.y),v>0){const e=qn(D,A,a,r);t.arc(e.x,e.y,v,x+E,A+Math.PI)}const s=(x-v/u+(m+y/u))/2;if(t.arc(a,r,u,x-v/u,s,!0),t.arc(a,r,u,s,m+y/u,!0),y>0){const e=qn(P,O,a,r);t.arc(e.x,e.y,y,O+Math.PI,m-E)}const n=qn(M,m,a,r);if(t.lineTo(n.x,n.y),b>0){const e=qn(M,k,a,r);t.arc(e.x,e.y,b,m-E,k)}}else{t.moveTo(a,r);const e=Math.cos(k)*d+a,i=Math.sin(k)*d+r;t.lineTo(e,i);const s=Math.cos(S)*d+a,n=Math.sin(S)*d+r;t.lineTo(s,n)}t.closePath()}function Gn(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r,options:l}=e,{borderWidth:h,borderJoinStyle:c,borderDash:d,borderDashOffset:u,borderRadius:f}=l,g="inner"===l.borderAlign;if(!h)return;t.setLineDash(d||[]),t.lineDashOffset=u,g?(t.lineWidth=2*h,t.lineJoin=c||"round"):(t.lineWidth=h,t.lineJoin=c||"bevel");let p=e.endAngle;if(o){Kn(t,e,i,s,p,n);for(let e=0;e<o;++e)t.stroke();isNaN(r)||(p=a+(r%O||O))}g&&function(t,e,i){const{startAngle:s,pixelMargin:n,x:o,y:a,outerRadius:r,innerRadius:l}=e;let h=n/r;t.beginPath(),t.arc(o,a,r,s-h,i+h),l>n?(h=n/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+E,s-E),t.closePath(),t.clip()}(t,e,p),l.selfJoin&&p-a>=C&&0===f&&"miter"!==c&&function(t,e,i){const{startAngle:s,x:n,y:o,outerRadius:a,innerRadius:r,options:l}=e,{borderWidth:h,borderJoinStyle:c}=l,d=Math.min(h/a,G(s-i));if(t.beginPath(),t.arc(n,o,a-h/2,s+d/2,i-d/2),r>0){const e=Math.min(h/r,G(s-i));t.arc(n,o,r+h/2,i-e/2,s+e/2,!0)}else{const e=Math.min(h/2,a*G(s-i));if("round"===c)t.arc(n,o,e,i-C/2,s+C/2,!0);else if("bevel"===c){const a=2*e*e,r=-a*Math.cos(i+C/2)+n,l=-a*Math.sin(i+C/2)+o,h=a*Math.cos(s+C/2)+n,c=a*Math.sin(s+C/2)+o;t.lineTo(r,l),t.lineTo(h,c)}}t.closePath(),t.moveTo(0,0),t.rect(0,0,t.canvas.width,t.canvas.height),t.clip("evenodd")}(t,e,p),o||(Kn(t,e,i,s,p,n),t.stroke())}function Jn(t,e,i=e){t.lineCap=l(i.borderCapStyle,e.borderCapStyle),t.setLineDash(l(i.borderDash,e.borderDash)),t.lineDashOffset=l(i.borderDashOffset,e.borderDashOffset),t.lineJoin=l(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=l(i.borderWidth,e.borderWidth),t.strokeStyle=l(i.borderColor,e.borderColor)}function Zn(t,e,i){t.lineTo(i.x,i.y)}function Qn(t,e,i={}){const s=t.length,{start:n=0,end:o=s-1}=i,{start:a,end:r}=e,l=Math.max(n,a),h=Math.min(o,r),c=n<a&&o<a||n>r&&o>r;return{count:s,start:l,loop:e.loop,ilen:h<l&&!c?s+h-l:h-l}}function to(t,e,i,s){const{points:n,options:o}=e,{count:a,start:r,loop:l,ilen:h}=Qn(n,i,s),c=function(t){return t.stepped?Fe:t.tension||"monotone"===t.cubicInterpolationMode?Ve:Zn}(o);let d,u,f,{move:g=!0,reverse:p}=s||{};for(d=0;d<=h;++d)u=n[(r+(p?h-d:d))%a],u.skip||(g?(t.moveTo(u.x,u.y),g=!1):c(t,f,u,p,o.stepped),f=u);return l&&(u=n[(r+(p?h:0))%a],c(t,f,u,p,o.stepped)),!!l}function eo(t,e,i,s){const n=e.points,{count:o,start:a,ilen:r}=Qn(n,i,s),{move:l=!0,reverse:h}=s||{};let c,d,u,f,g,p,m=0,x=0;const b=t=>(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[b(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[b(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(i<f?f=i:i>g&&(g=i),m=(x*m+e)/++x):(_(),t.lineTo(e,i),u=s,x=0,f=g=i),p=i}_()}function io(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?eo:to}const so="function"==typeof Path2D;function no(t,e,i,s){so&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),Jn(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=io(e);for(const r of n)Jn(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class oo extends $s{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){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;hi(this._points,i,t,s,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=zi(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Ii(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?pi:t.tension||"monotone"===t.cubicInterpolationMode?mi:gi}(i);let l,h;for(l=0,h=o.length;l<h;++l){const{start:h,end:c}=o[l],d=n[h],u=n[c];if(d===u){a.push(d);continue}const f=r(d,u,Math.abs((s-d[e])/(u[e]-d[e])),i.stepped);f[e]=t[e],a.push(f)}return 1===a.length?a[0]:a}pathSegment(t,e,i){return io(this)(t,this,e,i)}path(t,e,i){const s=this.segments,n=io(this);let o=this._loop;e=e||0,i=i||this.points.length-e;for(const a of s)o&=n(t,this,a,{start:e,end:e+i-1});return!!o}draw(t,e,i,s){const n=this.options||{};(this.points||[]).length&&n.borderWidth&&(t.save(),no(t,this,i,s),t.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}function ao(t,e,i,s){const n=t.options,{[i]:o}=t.getProps([i],s);return Math.abs(e-o)<n.radius+n.hitRadius}function ro(t,e){const{x:i,y:s,base:n,width:o,height:a}=t.getProps(["x","y","base","width","height"],e);let r,l,h,c,d;return t.horizontal?(d=a/2,r=Math.min(i,n),l=Math.max(i,n),h=s-d,c=s+d):(d=o/2,r=i-d,l=i+d,h=Math.min(s,n),c=Math.max(s,n)),{left:r,top:h,right:l,bottom:c}}function lo(t,e,i,s){return t?0:Z(e,i,s)}function ho(t){const e=ro(t),i=e.right-e.left,s=e.bottom-e.top,n=function(t,e,i){const s=t.options.borderWidth,n=t.borderSkipped,o=Mi(s);return{t:lo(n.top,o.top,0,i),r:lo(n.right,o.right,0,e),b:lo(n.bottom,o.bottom,0,i),l:lo(n.left,o.left,0,e)}}(t,i/2,s/2),a=function(t,e,i){const{enableBorderRadius:s}=t.getProps(["enableBorderRadius"]),n=t.options.borderRadius,a=wi(n),r=Math.min(e,i),l=t.borderSkipped,h=s||o(n);return{topLeft:lo(!h||l.top||l.left,a.topLeft,0,r),topRight:lo(!h||l.top||l.right,a.topRight,0,r),bottomLeft:lo(!h||l.bottom||l.left,a.bottomLeft,0,r),bottomRight:lo(!h||l.bottom||l.right,a.bottomRight,0,r)}}(t,i/2,s/2);return{outer:{x:e.left,y:e.top,w:i,h:s,radius:a},inner:{x:e.left+n.l,y:e.top+n.t,w:i-n.l-n.r,h:s-n.t-n.b,radius:{topLeft:Math.max(0,a.topLeft-Math.max(n.t,n.l)),topRight:Math.max(0,a.topRight-Math.max(n.t,n.r)),bottomLeft:Math.max(0,a.bottomLeft-Math.max(n.b,n.l)),bottomRight:Math.max(0,a.bottomRight-Math.max(n.b,n.r))}}}}function co(t,e,i,s){const n=null===e,o=null===i,a=t&&!(n&&o)&&ro(t,s);return a&&(n||tt(e,a.left,a.right))&&(o||tt(i,a.top,a.bottom))}function uo(t,e){t.rect(e.x,e.y,e.w,e.h)}function fo(t,e,i={}){const s=t.x!==i.x?-e:0,n=t.y!==i.y?-e:0,o=(t.x+t.w!==i.x+i.w?e:0)-s,a=(t.y+t.h!==i.y+i.h?e:0)-n;return{x:t.x+s,y:t.y+n,w:t.w+o,h:t.h+a,radius:t.radius}}var go=Object.freeze({__proto__:null,ArcElement:class extends $s{static id="arc";static defaults={borderAlign:"center",borderColor:"#fff",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0,selfJoin:!1};static defaultRoutes={backgroundColor:"backgroundColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.getProps(["x","y"],i),{angle:n,distance:o}=X(s,{x:t,y:e}),{startAngle:a,endAngle:r,innerRadius:h,outerRadius:c,circumference:d}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],i),u=(this.options.spacing+this.options.borderWidth)/2,f=l(d,r-a),g=J(n,a,r)&&a!==r,p=f>=O||g,m=tt(o,h+u,c+u);return p&&m}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),{offset:r,spacing:l}=this.options,h=(s+n)/2,c=(o+a+l+r)/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)/4,n=(e.spacing||0)/2,o=e.circular;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>O?Math.floor(i/O):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();const a=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(a)*s,Math.sin(a)*s);const r=s*(1-Math.sin(Math.min(C,i||0)));t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,function(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r}=e;let l=e.endAngle;if(o){Kn(t,e,i,s,l,n);for(let e=0;e<o;++e)t.fill();isNaN(r)||(l=a+(r%O||O))}Kn(t,e,i,s,l,n),t.fill()}(t,this,r,n,o),Gn(t,this,r,n,o),t.restore()}},BarElement:class extends $s{static id="bar";static defaults={borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,t&&Object.assign(this,t)}draw(t){const{inflateAmount:e,options:{borderColor:i,backgroundColor:s}}=this,{inner:n,outer:o}=ho(this),a=(r=o.radius).topLeft||r.topRight||r.bottomLeft||r.bottomRight?He:uo;var r;t.save(),o.w===n.w&&o.h===n.h||(t.beginPath(),a(t,fo(o,e,n)),t.clip(),a(t,fo(n,-e,o)),t.fillStyle=i,t.fill("evenodd")),t.beginPath(),a(t,fo(n,e)),t.fillStyle=s,t.fill(),t.restore()}inRange(t,e,i){return co(this,t,e,i)}inXRange(t,e){return co(this,t,null,e)}inYRange(t,e){return co(this,null,t,e)}getCenterPoint(t){const{x:e,y:i,base:s,horizontal:n}=this.getProps(["x","y","base","horizontal"],t);return{x:n?(e+s)/2:e,y:n?i:(i+s)/2}}getRange(t){return"x"===t?this.width/2:this.height/2}},LineElement:oo,PointElement:class extends $s{static id="point";parsed;skip;stop;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){const s=this.options,{x:n,y:o}=this.getProps(["x","y"],i);return Math.pow(t-n,2)+Math.pow(e-o,2)<Math.pow(s.hitRadius+s.radius,2)}inXRange(t,e){return ao(this,t,"x",e)}inYRange(t,e){return ao(this,t,"y",e)}getCenterPoint(t){const{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}size(t){let e=(t=t||this.options||{}).radius||0;e=Math.max(e,e&&t.hoverRadius||0);return 2*(e+(e&&t.borderWidth||0))}draw(t,e){const i=this.options;this.skip||i.radius<.1||!Re(this,e,this.size(i)/2)||(t.strokeStyle=i.borderColor,t.lineWidth=i.borderWidth,t.fillStyle=i.backgroundColor,Le(t,i,this.x,this.y))}getRange(){const t=this.options||{};return t.radius+t.hitRadius}}});function po(t,e,i,s){const n=t.indexOf(e);if(-1===n)return((t,e,i,s)=>("string"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}function mo(t){const e=this.getLabels();return t>=0&&t<e.length?e[t]:t}function xo(t,e,{horizontal:i,minRotation:s}){const n=$(s),o=(i?Math.sin(n):Math.cos(n))||.001,a=.75*e*(""+t).length;return Math.min(e/o,a)}class bo extends tn{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return s(t)||("number"==typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:s,max:n}=this;const o=t=>s=e?s:t,a=t=>n=i?n:t;if(t){const t=F(s),e=F(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=0===n?1:Math.abs(.05*n);a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const n=function(t,e){const i=[],{bounds:n,step:o,min:a,max:r,precision:l,count:h,maxTicks:c,maxDigits:d,includeBounds:u}=t,f=o||1,g=c-1,{min:p,max:m}=e,x=!s(a),b=!s(r),_=!s(h),y=(m-p)/(d+1);let v,M,w,k,S=B((m-p)/g/f)*f;if(S<1e-14&&!x&&!b)return[{value:p},{value:m}];k=Math.ceil(m/S)-Math.floor(p/S),k>g&&(S=B(k*S/g/f)*f),s(l)||(v=Math.pow(10,l),S=Math.ceil(S*v)/v),"ticks"===n?(M=Math.floor(p/S)*S,w=Math.ceil(m/S)*S):(M=p,w=m),x&&b&&o&&H((r-a)/o,S/1e3)?(k=Math.round(Math.min((r-a)/S,c)),S=(r-a)/k,M=a,w=r):_?(M=x?a:M,w=b?r:w,k=h-1,S=(w-M)/k):(k=(w-M)/S,k=V(k,Math.round(k),S/1e3)?Math.round(k):Math.ceil(k));const P=Math.max(U(S),U(M));v=Math.pow(10,s(l)?P:l),M=Math.round(M*v)/v,w=Math.round(w*v)/v;let D=0;for(x&&(u&&M!==a?(i.push({value:a}),M<a&&D++,V(Math.round((M+D*S)*v)/v,a,xo(a,y,t))&&D++):M<a&&D++);D<k;++D){const t=Math.round((M+D*S)*v)/v;if(b&&t>r)break;i.push({value:t})}return b&&u&&w!==r?i.length&&V(i[i.length-1].value,r,xo(r,y,t))?i[i.length-1].value=r:i.push({value:r}):b&&w!==r||i.push({value:w}),i}({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},this._range||this);return"ticks"===t.bounds&&j(n,this,"value"),t.reverse?(n.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),n}configure(){const t=this.ticks;let e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const s=(i-e)/Math.max(t.length-1,1)/2;e-=s,i+=s}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return ne(t,this.chart.options.locale,this.options.ticks.format)}}class _o extends bo{static id="linear";static defaults={ticks:{callback:ae.formatters.numeric}};determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?t:0,this.max=a(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,i=$(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,n=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,n.lineHeight/s))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}const yo=t=>Math.floor(z(t)),vo=(t,e)=>Math.pow(10,yo(t)+e);function Mo(t){return 1===t/Math.pow(10,yo(t))}function wo(t,e,i){const s=Math.pow(10,i),n=Math.floor(t/s);return Math.ceil(e/s)-n}function ko(t,{min:e,max:i}){e=r(t.min,e);const s=[],n=yo(e);let o=function(t,e){let i=yo(e-t);for(;wo(t,e,i)>10;)i++;for(;wo(t,e,i)<10;)i--;return Math.min(i,yo(t))}(e,i),a=o<0?Math.pow(10,Math.abs(o)):1;const l=Math.pow(10,o),h=n>o?Math.pow(10,n):0,c=Math.round((e-h)*a)/a,d=Math.floor((e-h)/l/10)*l*10;let u=Math.floor((c-d)/Math.pow(10,o)),f=r(t.min,Math.round((h+d+u*Math.pow(10,o))*a)/a);for(;f<i;)s.push({value:f,major:Mo(f),significand:u}),u>=10?u=u<15?15:20:u++,u>=20&&(o++,u=2,a=o>=0?1:a),f=Math.round((h+d+u*Math.pow(10,o))*a)/a;const g=r(t.max,f);return s.push({value:g,major:Mo(g),significand:u}),s}class So extends tn{static id="logarithmic";static defaults={ticks:{callback:ae.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){const i=bo.prototype.parse.apply(this,[t,e]);if(0!==i)return a(i)&&i>0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?Math.max(0,t):null,this.max=a(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!a(this._userMin)&&(this.min=t===vo(this.min,0)?vo(this.min,-1):vo(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t;i===s&&(i<=0?(n(1),o(10)):(n(vo(i,-1)),o(vo(s,1)))),i<=0&&n(vo(s,-1)),s<=0&&o(vo(i,1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=ko({min:this._userMin,max:this._userMax},this);return"ticks"===t.bounds&&j(e,this,"value"),t.reverse?(e.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),e}getLabelForValue(t){return void 0===t?"0":ne(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=z(t),this._valueRange=z(this.max)-z(t)}getPixelForValue(t){return void 0!==t&&0!==t||(t=this.min),null===t||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(z(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function Po(t){const e=t.ticks;if(e.display&&t.display){const t=ki(e.backdropPadding);return l(e.font&&e.font.size,ue.font.size)+t.height}return 0}function Do(t,e,i,s,n){return t===s||t===n?{start:e-i/2,end:e+i/2}:t<s||t>n?{start:e-i,end:e}:{start:e,end:e+i}}function Co(t){const 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),s=[],o=[],a=t._pointLabels.length,r=t.options.pointLabels,l=r.centerPointLabels?C/a:0;for(let u=0;u<a;u++){const a=r.setContext(t.getPointLabelContext(u));o[u]=a.padding;const f=t.getPointPosition(u,t.drawingArea+o[u],l),g=Si(a.font),p=(h=t.ctx,c=g,d=n(d=t._pointLabels[u])?d:[d],{w:Oe(h,c.string,d),h:d.length*c.lineHeight});s[u]=p;const m=G(t.getIndexAngle(u)+l),x=Math.round(Y(m));Oo(i,e,m,Do(x,f.x,p.w,0,180),Do(x,f.y,p.h,90,270))}var h,c,d;t.setCenterPoint(e.l-i.l,i.r-e.r,e.t-i.t,i.b-e.b),t._pointLabelItems=function(t,e,i){const s=[],n=t._pointLabels.length,o=t.options,{centerPointLabels:a,display:r}=o.pointLabels,l={extra:Po(o)/2,additionalAngle:a?C/n:0};let h;for(let o=0;o<n;o++){l.padding=i[o],l.size=e[o];const n=Ao(t,o,l);s.push(n),"auto"===r&&(n.visible=To(n,h),n.visible&&(h=n))}return s}(t,s,o)}function Oo(t,e,i,s,n){const o=Math.abs(Math.sin(i)),a=Math.abs(Math.cos(i));let r=0,l=0;s.start<e.l?(r=(e.l-s.start)/o,t.l=Math.min(t.l,e.l-r)):s.end>e.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.start<e.t?(l=(e.t-n.start)/a,t.t=Math.min(t.t,e.t-l)):n.end>e.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function Ao(t,e,i){const s=t.drawingArea,{extra:n,additionalAngle:o,padding:a,size:r}=i,l=t.getPointPosition(e,s+n+a,o),h=Math.round(Y(G(l.angle+E))),c=function(t,e,i){90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e);return t}(l.y,r.h,h),d=function(t){if(0===t||180===t)return"center";if(t<180)return"left";return"right"}(h),u=function(t,e,i){"right"===i?t-=e:"center"===i&&(t-=e/2);return t}(l.x,r.w,d);return{visible:!0,x:l.x,y:c,textAlign:d,left:u,top:c,right:u+r.w,bottom:c+r.h}}function To(t,e){if(!e)return!0;const{left:i,top:s,right:n,bottom:o}=t;return!(Re({x:i,y:s},e)||Re({x:i,y:o},e)||Re({x:n,y:s},e)||Re({x:n,y:o},e))}function Lo(t,e,i){const{left:n,top:o,right:a,bottom:r}=i,{backdropColor:l}=e;if(!s(l)){const i=wi(e.borderRadius),s=ki(e.backdropPadding);t.fillStyle=l;const h=n-s.left,c=o-s.top,d=a-n+s.width,u=r-o+s.height;Object.values(i).some((t=>0!==t))?(t.beginPath(),He(t,{x:h,y:c,w:d,h:u,radius:i}),t.fill()):t.fillRect(h,c,d,u)}}function Eo(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,O);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;o<s;o++)i=t.getPointPosition(o,e),n.lineTo(i.x,i.y)}}class Ro extends bo{static id="radialLinear";static defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:ae.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:t=>t,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(){const t=this._padding=ki(Po(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(){const{min:t,max:e}=this.getMinMax(!1);this.min=a(t)&&!isNaN(t)?t:0,this.max=a(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/Po(this.options))}generateTickLabels(t){bo.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map(((t,e)=>{const i=d(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?Co(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){return G(t*(O/(this._pointLabels.length||1))+$(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(s(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(s(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t<e.length){const i=e[t];return function(t,e,i){return Ci(t,{label:i,index:e,type:"pointLabel"})}(this.getContext(),t,i)}}getPointPosition(t,e,i=0){const s=this.getIndexAngle(t)-E+i;return{x:Math.cos(s)*e+this.xCenter,y:Math.sin(s)*e+this.yCenter,angle:s}}getPointPositionForValue(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))}getBasePosition(t){return this.getPointPositionForValue(t||0,this.getBaseValue())}getPointLabelPosition(t){const{left:e,top:i,right:s,bottom:n}=this._pointLabelItems[t];return{left:e,top:i,right:s,bottom:n}}drawBackground(){const{backgroundColor:t,grid:{circular:e}}=this.options;if(t){const i=this.ctx;i.save(),i.beginPath(),Eo(this,this.getDistanceFromCenterForValue(this._endValue),e,this._pointLabels.length),i.closePath(),i.fillStyle=t,i.fill(),i.restore()}}drawGrid(){const t=this.ctx,e=this.options,{angleLines:i,grid:s,border:n}=e,o=this._pointLabels.length;let a,r,l;if(e.pointLabels.display&&function(t,e){const{ctx:i,options:{pointLabels:s}}=t;for(let n=e-1;n>=0;n--){const e=t._pointLabelItems[n];if(!e.visible)continue;const o=s.setContext(t.getPointLabelContext(n));Lo(i,o,e);const a=Si(o.font),{x:r,y:l,textAlign:h}=e;Ne(i,t._pointLabels[n],r,l+a.lineHeight/2,a,{color:o.color,textAlign:h,textBaseline:"middle"})}}(this,o),s.display&&this.ticks.forEach(((t,e)=>{if(0!==e||0===e&&this.min<0){r=this.getDistanceFromCenterForValue(t.value);const i=this.getContext(e),a=s.setContext(i),l=n.setContext(i);!function(t,e,i,s,n){const o=t.ctx,a=e.circular,{color:r,lineWidth:l}=e;!a&&!s||!r||!l||i<0||(o.save(),o.strokeStyle=r,o.lineWidth=l,o.setLineDash(n.dash||[]),o.lineDashOffset=n.dashOffset,o.beginPath(),Eo(t,i,a,s),o.closePath(),o.stroke(),o.restore())}(this,a,r,o,l)}})),i.display){for(t.save(),a=o-1;a>=0;a--){const s=i.setContext(this.getPointLabelContext(a)),{color:n,lineWidth:o}=s;o&&n&&(t.lineWidth=o,t.strokeStyle=n,t.setLineDash(s.borderDash),t.lineDashOffset=s.borderDashOffset,r=this.getDistanceFromCenterForValue(e.reverse?this.min:this.max),l=this.getPointPosition(a,r),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach(((s,a)=>{if(0===a&&this.min>=0&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=Si(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=ki(r.backdropPadding);t.fillRect(-o/2-e.left,-n-l.size/2-e.top,o+e.width,l.size+e.height)}Ne(t,s.label,0,-n,l,{color:r.color,strokeColor:r.textStrokeColor,strokeWidth:r.textStrokeWidth})})),t.restore()}drawTitle(){}}const Io={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}},zo=Object.keys(Io);function Fo(t,e){return t-e}function Vo(t,e){if(s(e))return null;const i=t._adapter,{parser:n,round:o,isoWeekday:r}=t._parseOpts;let l=e;return"function"==typeof n&&(l=n(l)),a(l)||(l="string"==typeof n?i.parse(l,n):i.parse(l)),null===l?null:(o&&(l="week"!==o||!N(r)&&!0!==r?i.startOf(l,o):i.startOf(l,"isoWeek",r)),+l)}function Bo(t,e,i,s){const n=zo.length;for(let o=zo.indexOf(t);o<n-1;++o){const t=Io[zo[o]],n=t.steps?t.steps:Number.MAX_SAFE_INTEGER;if(t.common&&Math.ceil((i-e)/(n*t.size))<=s)return zo[o]}return zo[n-1]}function Wo(t,e,i){if(i){if(i.length){const{lo:s,hi:n}=et(i,e);t[i[s]>=e?i[s]:i[n]]=!0}}else t[e]=!0}function No(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a<o;++a)r=e[a],n[r]=a,s.push({value:r,major:!1});return 0!==o&&i?function(t,e,i,s){const n=t._adapter,o=+n.startOf(e[0].value,s),a=e[e.length-1].value;let r,l;for(r=o;r<=a;r=+n.add(r,1,s))l=i[r],l>=0&&(e[l].major=!0);return e}(t,s,n,i):s}class Ho extends tn{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={}){const i=t.time||(t.time={}),s=this._adapter=new In._date(t.adapters.date);s.init(e),b(i.displayFormats,s.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:Vo(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:s,max:n,minDefined:o,maxDefined:r}=this.getUserBounds();function l(t){o||isNaN(t.min)||(s=Math.min(s,t.min)),r||isNaN(t.max)||(n=Math.max(n,t.max))}o&&r||(l(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||l(this.getMinMax(!1))),s=a(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=a(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=nt(s,n,this.max);return this._unit=e.unit||(i.autoSkip?Bo(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=zo.length-1;o>=zo.indexOf(i);o--){const i=zo[o];if(Io[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return zo[i?zo.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=zo.indexOf(t)+1,i=zo.length;e<i;++e)if(Io[zo[e]].common)return zo[e]}(this._unit):void 0,this.initOffsets(s),t.reverse&&o.reverse(),No(this,o,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map((t=>+t.value)))}initOffsets(t=[]){let e,i,s=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),s=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);const o=t.length<3?.5:.25;s=Z(s,0,o),n=Z(n,0,o),this._offsets={start:s,end:n,factor:1/(s+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,s=this.options,n=s.time,o=n.unit||Bo(n.minUnit,e,i,this._getLabelCapacity(e)),a=l(s.ticks.stepSize,1),r="week"===o&&n.isoWeekday,h=N(r)||!0===r,c={};let d,u,f=e;if(h&&(f=+t.startOf(f,"isoWeek",r)),f=+t.startOf(f,h?"day":o),t.diff(i,e,o)>1e5*a)throw new Error(e+" and "+i+" are too far apart with stepSize of "+a+" "+o);const g="data"===s.ticks.source&&this.getDataTimestamps();for(d=f,u=0;d<i;d=+t.add(d,a,o),u++)Wo(c,d,g);return d!==i&&"ticks"!==s.bounds&&1!==u||Wo(c,d,g),Object.keys(c).sort(Fo).map((t=>+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}format(t,e){const i=this.options.time.displayFormats,s=this._unit,n=e||i[s];return this._adapter.format(t,n)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.ticks.callback;if(o)return d(o,[t,e,i],this);const a=n.time.displayFormats,r=this._unit,l=this._majorUnit,h=r&&a[r],c=l&&a[l],u=i[e],f=l&&c&&u&&u.major;return this._adapter.format(t,s||(f?c:h))}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e<i;++e)s=t[e],s.label=this._tickFormatFunction(s.value,e,t)}getDecimalForValue(t){return null===t?NaN:(t-this.min)/(this.max-this.min)}getPixelForValue(t){const e=this._offsets,i=this.getDecimalForValue(t);return this.getPixelForDecimal((e.start+i)*e.factor)}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return this.min+i*(this.max-this.min)}_getLabelSize(t){const e=this.options.ticks,i=this.ctx.measureText(t).width,s=$(this.isHorizontal()?e.maxRotation:e.minRotation),n=Math.cos(s),o=Math.sin(s),a=this._resolveTickFontOptions(0).size;return{w:i*n+a*o,h:i*o+a*n}}_getLabelCapacity(t){const e=this.options.time,i=e.displayFormats,s=i[e.unit]||i.millisecond,n=this._tickFormatFunction(t,0,No(this,[t],this._majorUnit),s),o=this._getLabelSize(n),a=Math.floor(this.isHorizontal()?this.width/o.w:this.height/o.h)-1;return a>0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t<e;++t)i=i.concat(s[t].controller.getAllParsedValues(this));return this._cache.data=this.normalize(i)}getLabelTimestamps(){const t=this._cache.labels||[];let e,i;if(t.length)return t;const s=this.getLabels();for(e=0,i=s.length;e<i;++e)t.push(Vo(this,s[e]));return this._cache.labels=this._normalized?t:this.normalize(t)}normalize(t){return lt(t.sort(Fo))}}function jo(t,e,i){let s,n,o,a,r=0,l=t.length-1;i?(e>=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=it(t,"pos",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=it(t,"time",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)/h:o}var $o=Object.freeze({__proto__:null,CategoryScale:class extends tn{static id="category";static defaults={ticks:{callback:mo}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(s(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:Z(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:po(i,t,l(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){return mo.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return"number"!=typeof t&&(t=this.parse(t)),null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const e=this.ticks;return t<0||t>e.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:_o,LogarithmicScale:So,RadialLinearScale:Ro,TimeScale:Ho,TimeSeriesScale:class extends Ho{static id="timeseries";static defaults=Ho.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=jo(e,this.min),this._tableRange=jo(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o<a;++o)l=t[o],l>=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;o<a;++o)h=s[o+1],r=s[o-1],l=s[o],Math.round((h+r)/2)!==l&&n.push({time:l,pos:o/(a-1)});return n}_generate(){const t=this.min,e=this.max;let i=super.getDataTimestamps();return i.includes(t)&&i.length||i.splice(0,0,t),i.includes(e)&&1!==i.length||i.push(e),i.sort(((t,e)=>t-e))}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),i=this.getLabelTimestamps();return t=e.length&&i.length?this.normalize(e.concat(i)):e.length?e:i,t=this._cache.all=t,t}getDecimalForValue(t){return(jo(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return jo(this._table,i*this._tableRange+this._minPos,!0)}}});const Yo=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],Uo=Yo.map((t=>t.replace("rgb(","rgba(").replace(")",", 0.5)")));function Xo(t){return Yo[t%Yo.length]}function qo(t){return Uo[t%Uo.length]}function Ko(t){let e=0;return(i,s)=>{const n=t.getDatasetMeta(s).controller;n instanceof $n?e=function(t,e){return t.backgroundColor=t.data.map((()=>Xo(e++))),e}(i,e):n instanceof Yn?e=function(t,e){return t.backgroundColor=t.data.map((()=>qo(e++))),e}(i,e):n&&(e=function(t,e){return t.borderColor=Xo(e),t.backgroundColor=qo(e),++e}(i,e))}}function Go(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}var Jo={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){if(!i.enabled)return;const{data:{datasets:s},options:n}=t.config,{elements:o}=n,a=Go(s)||(r=n)&&(r.borderColor||r.backgroundColor)||o&&Go(o)||"rgba(0,0,0,0.1)"!==ue.borderColor||"rgba(0,0,0,0.1)"!==ue.backgroundColor;var r;if(!i.forceOverride&&a)return;const l=Ko(t);s.forEach(l)}};function Zo(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function Qo(t){t.data.datasets.forEach((t=>{Zo(t)}))}var ta={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void Qo(t);const n=t.width;t.data.datasets.forEach(((e,o)=>{const{_data:a,indexAxis:r}=e,l=t.getDatasetMeta(o),h=a||e.data;if("y"===Pi([r,t.options.indexAxis]))return;if(!l.controller.supportsDecimation)return;const c=t.scales[l.xAxisID];if("linear"!==c.type&&"time"!==c.type)return;if(t.options.parsing)return;let{start:d,count:u}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=Z(it(e,o.axis,a).lo,0,i-1)),s=h?Z(it(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(l,h);if(u<=(i.threshold||4*n))return void Zo(e);let f;switch(s(a)&&(e._data=h,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":f=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;c<o-2;c++){let s,n=0,o=0;const h=Math.floor((c+1)*r)+1+e,m=Math.min(Math.floor((c+2)*r)+1,i)+e,x=m-h;for(s=h;s<m;s++)n+=t[s].x,o+=t[s].y;n/=x,o/=x;const b=Math.floor(c*r)+1+e,_=Math.min(Math.floor((c+1)*r)+1,i)+e,{x:y,y:v}=t[p];for(u=f=-1,s=b;s<_;s++)f=.5*Math.abs((y-n)*(t[s].y-v)-(y-t[s].x)*(o-v)),f>u&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(h,d,u,n,i);break;case"min-max":f=function(t,e,i,n){let o,a,r,l,h,c,d,u,f,g,p=0,m=0;const x=[],b=e+i-1,_=t[e].x,y=t[b].x-_;for(o=e;o<e+i;++o){a=t[o],r=(a.x-_)/y*n,l=a.y;const e=0|r;if(e===h)l<f?(f=l,c=o):l>g&&(g=l,d=o),p=(m*p+a.x)/++m;else{const i=o-1;if(!s(c)&&!s(d)){const e=Math.min(c,d),s=Math.max(c,d);e!==u&&e!==i&&x.push({...t[e],x:p}),s!==u&&s!==i&&x.push({...t[s],x:p})}o>0&&i!==u&&x.push(t[i]),x.push(a),h=e,m=0,f=g=l,c=d=u=o}}return x}(h,d,u,n);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=f}))},destroy(t){Qo(t)}};function ea(t,e,i,s){if(s)return;let n=e[t],o=i[t];return"angle"===t&&(n=G(n),o=G(o)),{property:t,start:n,end:o}}function ia(t,e,i){for(;e>t;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function sa(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function na(t,e){let i=[],s=!1;return n(t)?(s=!0,i=t):i=function(t,e){const{x:i=null,y:s=null}=t||{},n=e.points,o=[];return e.segments.forEach((({start:t,end:e})=>{e=ia(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new oo({points:i,options:{tension:0},_loop:s,_fullLoop:s}):null}function oa(t){return t&&!1!==t.fill}function aa(t,e,i){let s=t[e].fill;const n=[e];let o;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!a(s))return s;if(o=t[s],!o)return!1;if(o.visible)return s;n.push(s),s=o.fill}return!1}function ra(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=l(i&&i.target,i);void 0===s&&(s=!!e.backgroundColor);if(!1===s||null===s)return!1;if(!0===s)return"origin";return s}(t);if(o(s))return!isNaN(s.value)&&s;let n=parseFloat(s);return a(n)&&Math.floor(n)===n?function(t,e,i,s){"-"!==t&&"+"!==t||(i=e+i);if(i===e||i<0||i>=s)return!1;return i}(s[0],e,n,i):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}function la(t,e,i){const s=[];for(let n=0;n<i.length;n++){const o=i[n],{first:a,last:r,point:l}=ha(o,e,"x");if(!(!l||a&&r))if(a)s.unshift(l);else if(t.push(l),!r)break}t.push(...s)}function ha(t,e,i){const s=t.interpolate(e,i);if(!s)return{};const n=s[i],o=t.segments,a=t.points;let r=!1,l=!1;for(let t=0;t<o.length;t++){const e=o[t],s=a[e.start][i],h=a[e.end][i];if(tt(n,s,h)){r=n===s,l=n===h;break}}return{first:r,last:l,point:s}}class ca{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){const{x:s,y:n,radius:o}=this;return e=e||{start:0,end:O},t.arc(s,n,o,e.end,e.start,!0),!i.bounds}interpolate(t){const{x:e,y:i,radius:s}=this,n=t.angle;return{x:e+Math.cos(n)*s,y:i+Math.sin(n)*s,angle:n}}}function da(t){const{chart:e,fill:i,line:s}=t;if(a(i))return function(t,e){const i=t.getDatasetMeta(e),s=i&&t.isDatasetVisible(e);return s?i.dataset:null}(e,i);if("stack"===i)return function(t){const{scale:e,index:i,line:s}=t,n=[],o=s.segments,a=s.points,r=function(t,e){const i=[],s=t.getMatchingVisibleMetas("line");for(let t=0;t<s.length;t++){const n=s[t];if(n.index===e)break;n.hidden||i.unshift(n.dataset)}return i}(e,i);r.push(na({x:null,y:e.bottom},s));for(let t=0;t<o.length;t++){const e=o[t];for(let t=e.start;t<=e.end;t++)la(n,a[t],r)}return new oo({points:n,options:{}})}(t);if("shape"===i)return!0;const n=function(t){const e=t.scale||{};if(e.getPointPositionForValue)return function(t){const{scale:e,fill:i}=t,s=e.options,n=e.getLabels().length,a=s.reverse?e.max:e.min,r=function(t,e,i){let s;return s="start"===t?i:"end"===t?e.options.reverse?e.min:e.max:o(t)?t.value:e.getBaseValue(),s}(i,e,a),l=[];if(s.grid.circular){const t=e.getPointPositionForValue(0,a);return new ca({x:t.x,y:t.y,radius:e.getDistanceFromCenterForValue(r)})}for(let t=0;t<n;++t)l.push(e.getPointPositionForValue(t,r));return l}(t);return function(t){const{scale:e={},fill:i}=t,s=function(t,e){let i=null;return"start"===t?i=e.bottom:"end"===t?i=e.top:o(t)?i=e.getPixelForValue(t.value):e.getBasePixel&&(i=e.getBasePixel()),i}(i,e);if(a(s)){const t=e.isHorizontal();return{x:t?s:null,y:t?null:s}}return null}(t)}(t);return n instanceof ca?n:na(n,s)}function ua(t,e,i){const s=da(e),{chart:n,index:o,line:a,scale:r,axis:l}=e,h=a.options,c=h.fill,d=h.backgroundColor,{above:u=d,below:f=d}=c||{},g=n.getDatasetMeta(o),p=Ni(n,g);s&&a.points.length&&(Ie(t,i),function(t,e){const{line:i,target:s,above:n,below:o,area:a,scale:r,clip:l}=e,h=i._loop?"angle":e.axis;t.save();let c=o;o!==n&&("x"===h?(fa(t,s,a.top),pa(t,{line:i,target:s,color:n,scale:r,property:h,clip:l}),t.restore(),t.save(),fa(t,s,a.bottom)):"y"===h&&(ga(t,s,a.left),pa(t,{line:i,target:s,color:o,scale:r,property:h,clip:l}),t.restore(),t.save(),ga(t,s,a.right),c=n));pa(t,{line:i,target:s,color:c,scale:r,property:h,clip:l}),t.restore()}(t,{line:a,target:s,above:u,below:f,area:i,scale:r,axis:l,clip:p}),ze(t))}function fa(t,e,i){const{segments:s,points:n}=e;let o=!0,a=!1;t.beginPath();for(const r of s){const{start:s,end:l}=r,h=n[s],c=n[ia(s,l,n)];o?(t.moveTo(h.x,h.y),o=!1):(t.lineTo(h.x,i),t.lineTo(h.x,h.y)),a=!!e.pathSegment(t,r,{move:a}),a?t.closePath():t.lineTo(c.x,i)}t.lineTo(e.first().x,i),t.closePath(),t.clip()}function ga(t,e,i){const{segments:s,points:n}=e;let o=!0,a=!1;t.beginPath();for(const r of s){const{start:s,end:l}=r,h=n[s],c=n[ia(s,l,n)];o?(t.moveTo(h.x,h.y),o=!1):(t.lineTo(i,h.y),t.lineTo(h.x,h.y)),a=!!e.pathSegment(t,r,{move:a}),a?t.closePath():t.lineTo(i,c.y)}t.lineTo(i,e.first().y),t.closePath(),t.clip()}function pa(t,e){const{line:i,target:s,property:n,color:o,scale:a,clip:r}=e,l=function(t,e,i){const s=t.segments,n=t.points,o=e.points,a=[];for(const t of s){let{start:s,end:r}=t;r=ia(s,r,n);const l=ea(i,n[s],n[r],t.loop);if(!e.segments){a.push({source:t,target:l,start:n[s],end:n[r]});continue}const h=Ii(e,l);for(const e of h){const s=ea(i,o[e.start],o[e.end],e.loop),r=Ri(t,n,s);for(const t of r)a.push({source:t,target:e,start:{[i]:sa(l,s,"start",Math.max)},end:{[i]:sa(l,s,"end",Math.min)}})}}return a}(i,s,n);for(const{source:e,target:h,start:c,end:d}of l){const{style:{backgroundColor:l=o}={}}=e,u=!0!==s;t.save(),t.fillStyle=l,ma(t,a,r,u&&ea(n,c,d)),t.beginPath();const f=!!i.pathSegment(t,e);let g;if(u){f?t.closePath():xa(t,s,d,n);const e=!!s.pathSegment(t,h,{move:f,reverse:!0});g=f&&e,g||xa(t,s,c,n)}t.closePath(),t.fill(g?"evenodd":"nonzero"),t.restore()}}function ma(t,e,i,s){const n=e.chart.chartArea,{property:o,start:a,end:r}=s||{};if("x"===o||"y"===o){let e,s,l,h;"x"===o?(e=a,s=n.top,l=r,h=n.bottom):(e=n.left,s=a,l=n.right,h=r),t.beginPath(),i&&(e=Math.max(e,i.left),l=Math.min(l,i.right),s=Math.max(s,i.top),h=Math.min(h,i.bottom)),t.rect(e,s,l-e,h-s),t.clip()}}function xa(t,e,i,s){const n=e.interpolate(i,s);n&&t.lineTo(n.x,n.y)}var ba={id:"filler",afterDatasetsUpdate(t,e,i){const s=(t.data.datasets||[]).length,n=[];let o,a,r,l;for(a=0;a<s;++a)o=t.getDatasetMeta(a),r=o.dataset,l=null,r&&r.options&&r instanceof oo&&(l={visible:t.isDatasetVisible(a),index:a,fill:ra(r,a,s),chart:t,axis:o.controller.options.indexAxis,scale:o.vScale,line:r}),o.$filler=l,n.push(l);for(a=0;a<s;++a)l=n[a],l&&!1!==l.fill&&(l.fill=aa(n,a,i.propagate))},beforeDraw(t,e,i){const s="beforeDraw"===i.drawTime,n=t.getSortedVisibleDatasetMetas(),o=t.chartArea;for(let e=n.length-1;e>=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&i.fill&&ua(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;oa(i)&&ua(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;oa(s)&&"beforeDatasetDraw"===i.drawTime&&ua(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const _a=(t,e)=>{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)}};class ya extends $s{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(){const t=this.options.labels||{};let e=d(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(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=Si(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=_a(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,s,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign="left",n.textBaseline="middle";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const{itemWidth:p,itemHeight:m}=function(t,e,i,s,n){const o=function(t,e,i,s){let n=t.text;n&&"string"!=typeof n&&(n=n.reduce(((t,e)=>t.length>e.length?t:e)));return e+i.size/2+s.measureText(n).width}(s,t,e,i),a=function(t,e,i){let s=t;"string"!=typeof e.text&&(s=va(e,i));return s}(n,s,e.lineHeight);return{itemWidth:o,itemHeight:a}}(i,e,n,t,s);o>0&&u+m+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:m},d=Math.max(d,p),u+=m+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:n}}=this,o=Oi(n,this.left,this.width);if(this.isHorizontal()){let n=0,a=ft(i,this.left+s,this.right-this.lineWidths[n]);for(const r of e)n!==r.row&&(n=r.row,a=ft(i,this.left+s,this.right-this.lineWidths[n])),r.top+=this.top+t+s,r.left=o.leftForLtr(o.x(a),r.width),a+=r.width+s}else{let n=0,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height);for(const r of e)r.col!==n&&(n=r.col,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height)),r.top=a,r.left+=this.left+s,r.left=o.leftForLtr(o.x(r.left),r.width),a+=r.height+s}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Ie(t,this),this._draw(),ze(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:n,labels:o}=t,a=ue.color,r=Oi(t.rtl,this.left,this.width),h=Si(o.font),{padding:c}=o,d=h.size,u=d/2;let f;this.drawTitle(),s.textAlign=r.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=h.string;const{boxWidth:g,boxHeight:p,itemHeight:m}=_a(o,d),x=this.isHorizontal(),b=this._computeTitleHeight();f=x?{x:ft(n,this.left+c,this.right-i[0]),y:this.top+c+b,line:0}:{x:this.left+c,y:ft(n,this.top+b+c,this.bottom-e[0].height),line:0},Ai(this.ctx,t.textDirection);const _=m+c;this.legendItems.forEach(((y,v)=>{s.strokeStyle=y.fontColor,s.fillStyle=y.fontColor;const M=s.measureText(y.text).width,w=r.textAlign(y.textAlign||(y.textAlign=o.textAlign)),k=g+u+M;let S=f.x,P=f.y;r.setWidth(this.width),x?v>0&&S+k+c>this.right&&(P=f.y+=_,f.line++,S=f.x=ft(n,this.left+c,this.right-i[f.line])):v>0&&P+_>this.bottom&&(S=f.x=S+e[f.line].width+c,f.line++,P=f.y=ft(n,this.top+b+c,this.bottom-e[f.line].height));if(function(t,e,i){if(isNaN(g)||g<=0||isNaN(p)||p<0)return;s.save();const n=l(i.lineWidth,1);if(s.fillStyle=l(i.fillStyle,a),s.lineCap=l(i.lineCap,"butt"),s.lineDashOffset=l(i.lineDashOffset,0),s.lineJoin=l(i.lineJoin,"miter"),s.lineWidth=n,s.strokeStyle=l(i.strokeStyle,a),s.setLineDash(l(i.lineDash,[])),o.usePointStyle){const a={radius:p*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},l=r.xPlus(t,g/2);Ee(s,a,l,e+u,o.pointStyleWidth&&g)}else{const o=e+Math.max((d-p)/2,0),a=r.leftForLtr(t,g),l=wi(i.borderRadius);s.beginPath(),Object.values(l).some((t=>0!==t))?He(s,{x:a,y:o,w:g,h:p,radius:l}):s.rect(a,o,g,p),s.fill(),0!==n&&s.stroke()}s.restore()}(r.x(S),P,y),S=gt(w,S+g+u,x?S+k:this.right,t.rtl),function(t,e,i){Ne(s,i.text,t,e+m/2,h,{strikethrough:i.hidden,textAlign:r.textAlign(i.textAlign)})}(r.x(S),P,y),x)f.x+=k+c;else if("string"!=typeof y.text){const t=h.lineHeight;f.y+=va(y,t)+c}else f.y+=_})),Ti(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=Si(e.font),s=ki(e.padding);if(!e.display)return;const n=Oi(t.rtl,this.left,this.width),o=this.ctx,a=e.position,r=i.size/2,l=s.top+r;let h,c=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),h=this.top+l,c=ft(t.align,c,this.right-d);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);h=l+ft(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const u=ft(a,c,c+d);o.textAlign=n.textAlign(ut(a)),o.textBaseline="middle",o.strokeStyle=e.color,o.fillStyle=e.color,o.font=i.string,Ne(o,e.text,u,h,i)}_computeTitleHeight(){const t=this.options.title,e=Si(t.font),i=ki(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(tt(t,this.left,this.right)&&tt(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;i<n.length;++i)if(s=n[i],tt(t,s.left,s.left+s.width)&&tt(e,s.top,s.top+s.height))return this.legendItems[i];return null}handleEvent(t){const e=this.options;if(!function(t,e){if(("mousemove"===t||"mouseout"===t)&&(e.onHover||e.onLeave))return!0;if(e.onClick&&("click"===t||"mouseup"===t))return!0;return!1}(t.type,e))return;const i=this._getLegendItemAt(t.x,t.y);if("mousemove"===t.type||"mouseout"===t.type){const o=this._hoveredItem,a=(n=i,null!==(s=o)&&null!==n&&s.datasetIndex===n.datasetIndex&&s.index===n.index);o&&!a&&d(e.onLeave,[t,o,this],this),this._hoveredItem=i,i&&!a&&d(e.onHover,[t,i,this],this)}else i&&d(e.onClick,[t,i,this],this);var s,n}}function va(t,e){return e*(t.text?t.text.length:0)}var Ma={id:"legend",_element:ya,start(t,e,i){const s=t.legend=new ya({ctx:t.ctx,options:i,chart:t});ls.configure(t,s,i),ls.addBox(t,s)},stop(t){ls.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,i){const s=t.legend;ls.configure(t,s,i),s.options=i},afterUpdate(t){const 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){const s=e.datasetIndex,n=i.chart;n.isDatasetVisible(s)?(n.hide(s),e.hidden=!0):(n.show(s),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o,useBorderRadius:a,borderRadius:r}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const l=t.controller.getStyle(i?0:void 0),h=ki(l.borderWidth);return{text:e[t.index].label,fillStyle:l.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(h.width+h.height)/4,strokeStyle:l.borderColor,pointStyle:s||l.pointStyle,rotation:l.rotation,textAlign:n||l.textAlign,borderRadius:a&&(r||l.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)}}};class wa extends $s{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const s=n(i.text)?i.text.length:1;this._padding=ki(i.padding);const o=s*Si(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:n,options:o}=this,a=o.align;let r,l,h,c=0;return this.isHorizontal()?(l=ft(a,i,n),h=e+t,r=n-i):("left"===o.position?(l=i+t,h=ft(a,s,e),c=-.5*C):(l=n-t,h=ft(a,e,s),c=.5*C),r=s-e),{titleX:l,titleY:h,maxWidth:r,rotation:c}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=Si(e.font),s=i.lineHeight/2+this._padding.top,{titleX:n,titleY:o,maxWidth:a,rotation:r}=this._drawArgs(s);Ne(t,e.text,0,0,i,{color:e.color,maxWidth:a,rotation:r,textAlign:ut(e.align),textBaseline:"middle",translation:[n,o]})}}var ka={id:"title",_element:wa,start(t,e,i){!function(t,e){const i=new wa({ctx:t.ctx,options:e,chart:t});ls.configure(t,i,e),ls.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;ls.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;ls.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}};const Sa=new WeakMap;var Pa={id:"subtitle",start(t,e,i){const s=new wa({ctx:t.ctx,options:i,chart:t});ls.configure(t,s,i),ls.addBox(t,s),Sa.set(t,s)},stop(t){ls.removeBox(t,Sa.get(t)),Sa.delete(t)},beforeUpdate(t,e,i){const s=Sa.get(t);ls.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}};const Da={average(t){if(!t.length)return!1;let e,i,s=new Set,n=0,o=0;for(e=0,i=t.length;e<i;++e){const i=t[e].element;if(i&&i.hasValue()){const t=i.tooltipPosition();s.add(t.x),n+=t.y,++o}}if(0===o||0===s.size)return!1;return{x:[...s].reduce(((t,e)=>t+e))/s.size,y:n/o}},nearest(t,e){if(!t.length)return!1;let i,s,n,o=e.x,a=e.y,r=Number.POSITIVE_INFINITY;for(i=0,s=t.length;i<s;++i){const s=t[i].element;if(s&&s.hasValue()){const t=q(e,s.getCenterPoint());t<r&&(r=t,n=s)}}if(n){const t=n.tooltipPosition();o=t.x,a=t.y}return{x:o,y:a}}};function Ca(t,e){return e&&(n(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function Oa(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function Aa(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Ta(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=Si(e.bodyFont),h=Si(e.titleFont),c=Si(e.footerFont),d=o.length,f=n.length,g=s.length,p=ki(e.padding);let m=p.height,x=0,b=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(b+=t.beforeBody.length+t.afterBody.length,d&&(m+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),b){m+=g*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(b-g)*l.lineHeight+(b-1)*e.bodySpacing}f&&(m+=e.footerMarginTop+f*c.lineHeight+(f-1)*e.footerSpacing);let _=0;const y=function(t){x=Math.max(x,i.measureText(t).width+_)};return i.save(),i.font=h.string,u(t.title,y),i.font=l.string,u(t.beforeBody.concat(t.afterBody),y),_=e.displayColors?a+2+e.boxPadding:0,u(s,(t=>{u(t.before,y),u(t.lines,y),u(t.after,y)})),_=0,i.font=c.string,u(t.footer,y),i.restore(),x+=p.width,{width:x,height:m}}function La(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h="center";return"center"===s?h=n<=(r+l)/2?"left":"right":n<=o/2?h="left":n>=a-o/2&&(h="right"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return"left"===t&&n+o+a>e.width||"right"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h="center"),h}function Ea(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return i<s/2?"top":i>t.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||La(t,e,i,s),yAlign:s}}function Ra(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=wi(a);let g=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return"top"===e?s+=i:s-="bottom"===e?n+i:n/2,s}(e,l,h);return"center"===l?"left"===r?g+=h:"right"===r&&(g-=h):"left"===r?g-=Math.max(c,u)+n:"right"===r&&(g+=Math.max(d,f)+n),{x:Z(g,0,s.width-e.width),y:Z(p,0,s.height-e.height)}}function Ia(t,e,i){const s=ki(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-s.right:t.x+s.left}function za(t){return Ca([],Oa(t))}function Fa(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}const Va={beforeTitle:e,title(t){if(t.length>0){const 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<s)return i[e.dataIndex]}return""},afterTitle:e,beforeBody:e,beforeLabel:e,label(t){if(this&&this.options&&"dataset"===this.options.mode)return t.label+": "+t.formattedValue||t.formattedValue;let e=t.dataset.label||"";e&&(e+=": ");const i=t.formattedValue;return s(i)||(e+=i),e},labelColor(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{borderColor:e.borderColor,backgroundColor:e.backgroundColor,borderWidth:e.borderWidth,borderDash:e.borderDash,borderDashOffset:e.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{pointStyle:e.pointStyle,rotation:e.rotation}},afterLabel:e,afterBody:e,beforeFooter:e,footer:e,afterFooter:e};function Ba(t,e,i,s){const n=t[e].call(i,s);return void 0===n?Va[e].call(i,s):n}class Wa extends $s{static positioners=Da;constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,i=this.options.setContext(this.getContext()),s=i.enabled&&e.options.animation&&i.animations,n=new Ts(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(n)),n}getContext(){return this.$context||(this.$context=(t=this.chart.getContext(),e=this,i=this._tooltipItems,Ci(t,{tooltip:e,tooltipItems:i,type:"tooltip"})));var t,e,i}getTitle(t,e){const{callbacks:i}=e,s=Ba(i,"beforeTitle",this,t),n=Ba(i,"title",this,t),o=Ba(i,"afterTitle",this,t);let a=[];return a=Ca(a,Oa(s)),a=Ca(a,Oa(n)),a=Ca(a,Oa(o)),a}getBeforeBody(t,e){return za(Ba(e.callbacks,"beforeBody",this,t))}getBody(t,e){const{callbacks:i}=e,s=[];return u(t,(t=>{const e={before:[],lines:[],after:[]},n=Fa(i,t);Ca(e.before,Oa(Ba(n,"beforeLabel",this,t))),Ca(e.lines,Ba(n,"label",this,t)),Ca(e.after,Oa(Ba(n,"afterLabel",this,t))),s.push(e)})),s}getAfterBody(t,e){return za(Ba(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:i}=e,s=Ba(i,"beforeFooter",this,t),n=Ba(i,"footer",this,t),o=Ba(i,"afterFooter",this,t);let a=[];return a=Ca(a,Oa(s)),a=Ca(a,Oa(n)),a=Ca(a,Oa(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;a<r;++a)l.push(Aa(this.chart,e[a]));return t.filter&&(l=l.filter(((e,s,n)=>t.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),u(l,(e=>{const i=Fa(t.callbacks,e);s.push(Ba(i,"labelColor",this,e)),n.push(Ba(i,"labelPointStyle",this,e)),o.push(Ba(i,"labelTextColor",this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=Da[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Ta(this,i),a=Object.assign({},t,e),r=Ea(this.chart,i,a),l=Ra(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=wi(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,x,b,_,y;return"center"===n?(_=u+g/2,"left"===s?(p=d,m=p-o,b=_+o,y=_-o):(p=d+f,m=p+o,b=_-o,y=_+o),x=p):(m="left"===s?d+Math.max(r,h)+o:"right"===s?d+f-Math.max(l,c)-o:this.caretX,"top"===n?(b=u,_=b-o,p=m-o,x=m+o):(b=u+g,_=b+o,p=m+o,x=m-o),y=b),{x1:p,x2:m,x3:x,y1:b,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=Oi(i.rtl,this.x,this.width);for(t.x=Ia(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",o=Si(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r<n;++r)e.fillText(s[r],l.x(t.x),t.y+o.lineHeight/2),t.y+=o.lineHeight+a,r+1===n&&(t.y+=i.titleMarginBottom-a)}}_drawColorBox(t,e,i,s,n){const a=this.labelColors[i],r=this.labelPointStyles[i],{boxHeight:l,boxWidth:h}=n,c=Si(n.bodyFont),d=Ia(this,"left",n),u=s.x(d),f=l<c.lineHeight?(c.lineHeight-l)/2:0,g=e.y+f;if(n.usePointStyle){const e={radius:Math.min(h,l)/2,pointStyle:r.pointStyle,rotation:r.rotation,borderWidth:1},i=s.leftForLtr(u,h)+h/2,o=g+l/2;t.strokeStyle=n.multiKeyBackground,t.fillStyle=n.multiKeyBackground,Le(t,e,i,o),t.strokeStyle=a.borderColor,t.fillStyle=a.backgroundColor,Le(t,e,i,o)}else{t.lineWidth=o(a.borderWidth)?Math.max(...Object.values(a.borderWidth)):a.borderWidth||1,t.strokeStyle=a.borderColor,t.setLineDash(a.borderDash||[]),t.lineDashOffset=a.borderDashOffset||0;const e=s.leftForLtr(u,h),i=s.leftForLtr(s.xPlus(u,1),h-2),r=wi(a.borderRadius);Object.values(r).some((t=>0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,He(t,{x:e,y:g,w:h,h:l,radius:r}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),He(t,{x:i,y:g+1,w:h-2,h:l-2,radius:r}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,g,h,l),t.strokeRect(e,g,h,l),t.fillStyle=a.backgroundColor,t.fillRect(i,g+1,h-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=Si(i.bodyFont);let d=c.lineHeight,f=0;const g=Oi(i.rtl,this.x,this.width),p=function(i){e.fillText(i,g.x(t.x+f),t.y+d/2),t.y+=d+n},m=g.textAlign(o);let x,b,_,y,v,M,w;for(e.textAlign=o,e.textBaseline="middle",e.font=c.string,t.x=Ia(this,m,i),e.fillStyle=i.bodyColor,u(this.beforeBody,p),f=a&&"right"!==m?"center"===o?l/2+h:l+2+h:0,y=0,M=s.length;y<M;++y){for(x=s[y],b=this.labelTextColors[y],e.fillStyle=b,u(x.before,p),_=x.lines,a&&_.length&&(this._drawColorBox(e,t,y,g,i),d=Math.max(c.lineHeight,r)),v=0,w=_.length;v<w;++v)p(_[v]),d=c.lineHeight;u(x.after,p)}f=0,d=c.lineHeight,u(this.afterBody,p),t.y-=n}drawFooter(t,e,i){const s=this.footer,n=s.length;let o,a;if(n){const r=Oi(i.rtl,this.x,this.width);for(t.x=Ia(this,i.footerAlign,i),t.y+=i.footerMarginTop,e.textAlign=r.textAlign(i.footerAlign),e.textBaseline="middle",o=Si(i.footerFont),e.fillStyle=i.footerColor,e.font=o.string,a=0;a<n;++a)e.fillText(s[a],r.x(t.x),t.y+o.lineHeight/2),t.y+=o.lineHeight+i.footerSpacing}}drawBackground(t,e,i,s){const{xAlign:n,yAlign:o}=this,{x:a,y:r}=t,{width:l,height:h}=i,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=wi(s.cornerRadius);e.fillStyle=s.backgroundColor,e.strokeStyle=s.borderColor,e.lineWidth=s.borderWidth,e.beginPath(),e.moveTo(a+c,r),"top"===o&&this.drawCaret(t,e,i,s),e.lineTo(a+l-d,r),e.quadraticCurveTo(a+l,r,a+l,r+d),"center"===o&&"right"===n&&this.drawCaret(t,e,i,s),e.lineTo(a+l,r+h-f),e.quadraticCurveTo(a+l,r+h,a+l-f,r+h),"bottom"===o&&this.drawCaret(t,e,i,s),e.lineTo(a+u,r+h),e.quadraticCurveTo(a,r+h,a,r+h-u),"center"===o&&"left"===n&&this.drawCaret(t,e,i,s),e.lineTo(a,r+c),e.quadraticCurveTo(a,r,a+c,r),e.closePath(),e.fill(),s.borderWidth>0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=Da[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Ta(this,t),a=Object.assign({},i,this._size),r=Ea(e,t,a),l=Ra(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=ki(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),Ai(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),Ti(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!f(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!f(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if("mouseout"===t.type)return[];if(!s)return e.filter((t=>this.chart.data.datasets[t.datasetIndex]&&void 0!==this.chart.getDatasetMeta(t.datasetIndex).controller.getParsed(t.index)));const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=Da[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}var Na={id:"tooltip",_element:Wa,positioners:Da,afterInit(t,e,i){i&&(t.tooltip=new Wa({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){const e=t.tooltip;if(e&&e._willRender()){const 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){const 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:Va},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"]};return Tn.register(Un,$o,go,t),Tn.helpers={...Hi},Tn._adapters=In,Tn.Animation=As,Tn.Animations=Ts,Tn.animator=bt,Tn.controllers=nn.controllers.items,Tn.DatasetController=js,Tn.Element=$s,Tn.elements=go,Tn.Interaction=Ki,Tn.layouts=ls,Tn.platforms=Ds,Tn.Scale=tn,Tn.Ticks=ae,Object.assign(Tn,Un,$o,go,t,Ds),Tn.Chart=Tn,"undefined"!=typeof window&&(window.Chart=Tn),Tn}));
+//# sourceMappingURL=chart.umd.min.js.map(No newline at end of file)
 
src/main/webapp/publish/adm/script/Chart.js-master/composer.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/composer.json
@@ -0,0 +1,26 @@
+{
+    "name": "nnnick/chartjs",
+    "type": "library",
+    "description": "Simple HTML5 charts using the canvas element.",
+    "keywords": [
+        "chart",
+        "js"
+    ],
+    "homepage": "https://www.chartjs.org/",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "NICK DOWNIE",
+            "email": "hello@nickdownie.com"
+        }
+    ],
+    "require": {
+        "php": ">=5.3.3"
+    },
+    "minimum-stability": "stable",
+    "extra": {
+        "branch-alias": {
+            "release/2.0": "v2.0-dev"
+        }
+    }
+}
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/.vuepress/config.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/.vuepress/config.ts
@@ -0,0 +1,395 @@
+import * as path from 'path';
+import markdownItInclude from 'markdown-it-include';
+import { DefaultThemeConfig, defineConfig, PluginTuple } from 'vuepress/config';
+
+const docsVersion = "VERSION";
+const base: `/${string}/` = process.env.NODE_ENV === "development" ? '/docs/master/' : `/docs/${docsVersion}/`;
+
+export default defineConfig({
+  title: 'Chart.js',
+  description: 'Open source HTML5 Charts for your website',
+  theme: 'chartjs',
+  base,
+  dest: path.resolve(__dirname, '../../dist/docs'),
+  head: [
+    ['link', {rel: 'icon', href: '/favicon.ico'}],
+  ],
+  plugins: [
+    'tabs',
+    ['flexsearch'],
+    ['@vuepress/html-redirect', {
+      countdown: 0,
+    }],
+    [
+      '@vuepress/google-analytics',
+      {
+        'ga': 'UA-28909194-3'
+      }
+    ],
+    ['redirect', {
+      redirectors: [
+        // Default sample page when accessing /samples.
+        {base: '/samples', alternative: ['information']},
+      ],
+    }],
+    ['vuepress-plugin-code-copy', true],
+    ['vuepress-plugin-typedoc', {
+        entryPoints: ['../../src/types/index.d.ts'],
+        hideInPageTOC: true,
+        tsconfig: path.resolve(__dirname, '../../tsconfig.json'),
+      },
+    ],
+    ['@simonbrunel/vuepress-plugin-versions', {
+      filters: {
+        suffix: (tag) => tag ? ` (${tag})` : '',
+        title: (v, vars) => {
+          return window.location.href.includes('master') ? 'Development (master)' :
+                 vars.tag === 'latest' ? 'Latest (' + v + ')' :
+                 v + (vars.tag ? ` (${vars.tag})` : '') + ' (outdated)';
+        },
+      },
+      menu: {
+        text: '{{version|title}}',
+        items: [
+          {
+            text: 'Documentation',
+            items: [
+              {
+                text: 'Development (master)',
+                link: '/docs/master/',
+              },
+              {
+                text: 'Latest version',
+                link: '/docs/latest/',
+              },
+              {
+                type: 'versions',
+                text: '{{version}}{{tag|suffix}}',
+                link: '/docs/{{version}}/',
+                exclude: /^[01]\.|2\.[0-5]\./,
+                group: 'minor',
+              }
+            ]
+          },
+          {
+            text: 'Release notes (5 latest)',
+            items: [
+              {
+                type: 'versions',
+                limit: 5,
+                target: '_blank',
+                group: 'patch',
+                link: 'https://github.com/chartjs/Chart.js/releases/tag/v{{version}}'
+              }
+            ]
+          }
+        ]
+      },
+    }],
+  ] as PluginTuple[],
+  chainWebpack(config) {
+    config.merge({
+      resolve: {
+        alias: {
+          'chart.js': path.resolve(__dirname, '../../dist/chart.js'),
+        }
+      }
+    })
+
+    config.module.rule('images').use('url-loader').tap(options => ({
+      ...options,
+      esModule: false
+    }))
+  },
+  markdown: {
+    extendMarkdown: md => {
+      md.use(markdownItInclude, path.resolve(__dirname, '../'));
+    }
+  },
+  themeConfig: {
+    repo: 'chartjs/Chart.js',
+    logo: '/favicon.ico',
+    lastUpdated: 'Last Updated',
+    searchPlaceholder: 'Search...',
+    editLinks: false,
+    docsDir: 'docs',
+    chart: {
+      imports: [
+        ['scripts/register.js'],
+        ['scripts/utils.js', 'Utils'],
+        ['scripts/helpers.js', 'helpers'],
+        ['scripts/components.js', 'components']
+      ]
+    },
+    nav: [
+      {text: 'Home', link: '/'},
+      {text: 'API', link: '/api/'},
+      {text: 'Samples', link: `/samples/`},
+      {
+        text: 'Ecosystem',
+        ariaLabel: 'Community Menu',
+        items: [
+          { text: 'Awesome', link: 'https://github.com/chartjs/awesome' },
+          { text: 'Discord', link: 'https://discord.gg/HxEguTK6av' },
+          { text: 'Stack Overflow', link: 'https://stackoverflow.com/questions/tagged/chart.js' }
+        ]
+      }
+    ],
+    sidebar: {
+      '/api/': 'API',
+      '/samples/': [
+        'information',
+        {
+          title: 'Bar Charts',
+          children: [
+            'bar/border-radius',
+            'bar/floating',
+            'bar/horizontal',
+            'bar/stacked',
+            'bar/stacked-groups',
+            'bar/vertical',
+          ]
+        },
+        {
+          title: 'Line Charts',
+          children: [
+            'line/interpolation',
+            'line/line',
+            'line/multi-axis',
+            'line/point-styling',
+            'line/segments',
+            'line/stepped',
+            'line/styling',
+          ]
+        },
+        {
+          title: 'Other charts',
+          children: [
+            'other-charts/bubble',
+            'other-charts/combo-bar-line',
+            'other-charts/doughnut',
+            'other-charts/multi-series-pie',
+            'other-charts/pie',
+            'other-charts/polar-area',
+            'other-charts/polar-area-center-labels',
+            'other-charts/radar',
+            'other-charts/radar-skip-points',
+            'other-charts/scatter',
+            'other-charts/scatter-multi-axis',
+            'other-charts/stacked-bar-line',
+          ]
+        },
+        {
+          title: 'Area charts',
+          children: [
+            'area/line-boundaries',
+            'area/line-datasets',
+            'area/line-drawtime',
+            'area/line-stacked',
+            'area/radar'
+          ]
+        },
+        {
+          title: 'Scales',
+          children: [
+            'scales/linear-min-max',
+            'scales/linear-min-max-suggested',
+            'scales/linear-step-size',
+            'scales/log',
+            'scales/stacked',
+            'scales/time-line',
+            'scales/time-max-span',
+            'scales/time-combo',
+          ]
+        },
+        {
+          title: 'Scale Options',
+          children: [
+            'scale-options/center',
+            'scale-options/grid',
+            'scale-options/ticks',
+            'scale-options/titles',
+          ]
+        },
+        {
+          title: 'Legend',
+          children: [
+            'legend/events',
+            'legend/html',
+            'legend/point-style',
+            'legend/position',
+            'legend/title',
+          ]
+        },
+        {
+          title: 'Title',
+          children: [
+            'title/alignment',
+          ]
+        },
+        {
+          title: 'Subtitle',
+          children: [
+            'subtitle/basic',
+          ]
+        },        {
+          title: 'Tooltip',
+          children: [
+            'tooltip/content',
+            'tooltip/html',
+            'tooltip/interactions',
+            'tooltip/point-style',
+            'tooltip/position',
+          ]
+        },
+        {
+          title: 'Scriptable Options',
+          children: [
+            'scriptable/bar',
+            'scriptable/bubble',
+            'scriptable/line',
+            'scriptable/pie',
+            'scriptable/polar',
+            'scriptable/radar',
+          ]
+        },
+        {
+          title: 'Animations',
+          children: [
+            'animations/delay',
+            'animations/drop',
+            'animations/loop',
+            'animations/progressive-line',
+            'animations/progressive-line-easing',
+          ]
+        },
+        {
+          title: 'Advanced',
+          children: [
+            'advanced/data-decimation',
+            'advanced/derived-axis-type',
+            'advanced/derived-chart-type',
+            'advanced/linear-gradient',
+            'advanced/programmatic-events',
+            'advanced/progress-bar',
+            'advanced/radial-gradient',
+          ]
+        },
+        {
+          title: 'Plugins',
+          children: [
+            'plugins/chart-area-border',
+            'plugins/doughnut-empty-state',
+            'plugins/quadrants',
+          ]
+        },
+        'utils'
+      ],
+      '/': [
+        '',
+        {
+          title: 'Getting Started',
+          children: [
+            'getting-started/',
+            'getting-started/installation',
+            'getting-started/integration',
+            'getting-started/usage',
+            'getting-started/using-from-node-js',
+          ]
+        },
+        {
+          title: 'General',
+          children: [
+            'general/accessibility',
+            'general/colors',
+            'general/data-structures',
+            'general/fonts',
+            'general/options',
+            'general/padding',
+            'general/performance'
+          ]
+        },
+        {
+          title: 'Configuration',
+          children: [
+            'configuration/',
+            'configuration/animations',
+            'configuration/canvas-background',
+            'configuration/decimation',
+            'configuration/device-pixel-ratio',
+            'configuration/elements',
+            'configuration/interactions',
+            'configuration/layout',
+            'configuration/legend',
+            'configuration/locale',
+            'configuration/responsive',
+            'configuration/subtitle',
+            'configuration/title',
+            'configuration/tooltip',
+          ]
+        },
+        {
+          title: 'Chart Types',
+          children: [
+            'charts/area',
+            'charts/bar',
+            'charts/bubble',
+            'charts/doughnut',
+            'charts/line',
+            'charts/mixed',
+            'charts/polar',
+            'charts/radar',
+            'charts/scatter',
+          ]
+        },
+        {
+          title: 'Axes',
+          children: [
+            'axes/',
+            {
+              title: 'Cartesian',
+              children: [
+                'axes/cartesian/',
+                'axes/cartesian/category',
+                'axes/cartesian/linear',
+                'axes/cartesian/logarithmic',
+                'axes/cartesian/time',
+                'axes/cartesian/timeseries'
+              ],
+            },
+            {
+              title: 'Radial',
+              children: [
+                'axes/radial/',
+                'axes/radial/linear'
+              ],
+            },
+            'axes/labelling',
+            'axes/styling'
+          ]
+        },
+        {
+          title: 'Developers',
+          children: [
+            'developers/',
+            'developers/api',
+            'developers/axes',
+            'developers/charts',
+            'developers/contributing',
+            'developers/plugins',
+            'developers/publishing',
+            ['api/', 'TypeDoc'],
+            'developers/updates',
+          ]
+        },
+        {
+          title: 'Migration',
+          children: [
+            'migration/v4-migration',
+            'migration/v3-migration',
+          ]
+        },
+      ],
+    } as any
+  } as DefaultThemeConfig
+});
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/.vuepress/public/favicon.ico (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/.vuepress/public/favicon.ico
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/.vuepress/public/logo.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/.vuepress/public/logo.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/.vuepress/public/logo.svg (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/.vuepress/public/logo.svg
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="192px" height="192px" viewBox="0 0 192 192" enable-background="new 0 0 192 192" xml:space="preserve">
+<path fill="#36A2EB" d="M161.271,96.556c-22.368,0.439-17.709,14.599-33.473,18.18c-16.014,3.638-18.542-39.111-34.552-39.111
+	c-16.012,0-19.559,41.526-39.608,70.034l-0.572,0.807l42.985,24.813l65.22-37.651V96.556z"/>
+<path fill="#FFCE56" d="M161.271,95.267c-7.488-9.61-12.567-20.658-23.494-20.658c-19.337,0-14.249,31.545-35.62,31.545
+	c-21.373,0-23.62-33.931-47.832-2.035c-7.715,10.163-13.925,21.495-18.803,32.218l60.529,34.943l65.22-37.651V95.267z"/>
+<path opacity="0.8" fill="#FE6184" d="M30.829,108.334c7.338-20.321,10.505-36.779,24.514-36.779
+	c21.371,0,26.458,60.039,44.779,53.931c18.318-6.105,16.282-38.669,44.779-38.669c5.424,0,10.962,3.323,16.371,8.698v38.113
+	l-65.22,37.651l-65.222-37.651V108.334z"/>
+<path fill="#E7E9ED" d="M96,176l-69.292-39.999V56L96,16l69.292,40v80L96,176z M34.849,131.301L96,166.602l61.151-35.301V60.7
+	L96,25.399L34.849,60.7V131.301z"/>
+</svg>
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/.vuepress/redirects (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/.vuepress/redirects
@@ -0,0 +1,4 @@
+/charts/ /charts/line.html
+/general/ /general/data-structures.html
+/samples/ /samples/information.html
+/getting-started/v3-migration/ /migration/v3-migration.html
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/.vuepress/styles/index.styl (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/.vuepress/styles/index.styl
@@ -0,0 +1,43 @@
+@require '~vuepress-plugin-tabs/dist/themes/default.styl'
+
+.theme-default-content
+  &:not(.custom)
+    max-width: unset
+  
+  .chart-view
+    max-width 800px
+
+.sidebar-group.is-sub-group.depth-1
+  > .sidebar-group-items
+    border-left 1px solid rgba($accentColor, 0.25)
+
+  > .sidebar-heading:not(.open)
+    border-left 1px solid rgba($accentColor, 0.25)
+    margin-left: 0
+
+  > .sidebar-heading
+    padding-left calc(1.475rem - 1px)
+    transition border-color .25s
+    padding 0.35rem 1.475rem
+    border-left-width 3px
+    margin-left -1px
+    font-size 1em
+    line-height 1.4
+    opacity 1 !important
+
+    &.active, &.open
+      border-left-color $accentColor
+      color $accentColor
+      font-weight bold
+
+    >.arrow
+      display none
+
+    >.sidebar-group-items
+      padding-left: 0
+
+.sidebar-group.is-sub-group.depth-1:hover .sidebar-heading:not(.open)
+  color $accentColor
+  margin-left -1px
+  border-left 3px solid rgba($accentColor, 0.25)
+  padding-left calc(1.475rem - 1px)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/_common.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/_common.md
@@ -0,0 +1,20 @@
+### Common options to all axes
+
+Namespace: `options.scales[scaleId]`
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `type` | `string` | | Type of scale being employed. Custom scales can be created and registered with a string key. This allows changing the type of an axis for a chart.
+| `alignToPixels` | `boolean` | `false` | Align pixel values to device pixels.
+| `backgroundColor` | [`Color`](/general/colors.md) | | Background color of the scale area.
+| `border` | `object` | | Border configuration. [more...](/axes/styling.md#border-configuration)
+| `display` | `boolean`\|`string` | `true` | Controls the axis global visibility (visible when `true`, hidden when `false`). When `display: 'auto'`, the axis is visible only if at least one associated dataset is visible.
+| `grid` | `object` | | Grid line configuration. [more...](/axes/styling.md#grid-line-configuration)
+| `min` | `number` | | User defined minimum number for the scale, overrides minimum value from data. [more...](/axes/index.md#axis-range-settings)
+| `max` | `number` | | User defined maximum number for the scale, overrides maximum value from data. [more...](/axes/index.md#axis-range-settings)
+| `reverse` | `boolean` | `false` | Reverse the scale.
+| `stacked` | `boolean`\|`string` | `false` | Should the data be stacked. [more...](/axes/index.md#stacking)
+| `suggestedMax` | `number` | | Adjustment used when calculating the maximum data value. [more...](/axes/index.md#axis-range-settings)
+| `suggestedMin` | `number` | | Adjustment used when calculating the minimum data value. [more...](/axes/index.md#axis-range-settings)
+| `ticks` | `object` | | Tick configuration. [more...](/axes/index.md#tick-configuration)
+| `weight` | `number` | `0` | The weight used to sort the axis. Higher weights are further away from the chart area.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/_common_ticks.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/_common_ticks.md
@@ -0,0 +1,18 @@
+### Common tick options to all axes
+
+Namespace: `options.scales[scaleId].ticks`
+
+| Name | Type | Scriptable | Default | Description
+| ---- | ---- | :-------------------------------: | ------- | -----------
+| `backdropColor` | [`Color`](../../general/colors.md) | Yes | `'rgba(255, 255, 255, 0.75)'` | Color of label backdrops.
+| `backdropPadding` | [`Padding`](../../general/padding.md) | | `2` | Padding of label backdrop.
+| `callback` | `function` | | | Returns the string representation of the tick value as it should be displayed on the chart. See [callback](/axes/labelling.md#creating-custom-tick-formats).
+| `display` | `boolean` | | `true` | If true, show tick labels.
+| `color` | [`Color`](/general/colors.md) | Yes | `Chart.defaults.color` | Color of ticks.
+| `font` | `Font` | Yes | `Chart.defaults.font` | See [Fonts](/general/fonts.md)
+| `major` | `object` | | `{}` | [Major ticks configuration](/axes/styling.md#major-tick-configuration).
+| `padding` | `number` | | `3` | Sets the offset of the tick labels from the axis
+| `showLabelBackdrop` | `boolean` | Yes | `true` for radial scale, `false` otherwise | If true, draw a background behind the tick labels.
+| `textStrokeColor` | [`Color`](/general/colors.md) | Yes | `` | The color of the stroke around the text.
+| `textStrokeWidth` | `number` | Yes | `0` | Stroke width around the text.
+| `z` | `number` | | `0` | z-index of tick layer. Useful when ticks are drawn on chart area. Values &lt;= 0 are drawn under datasets, &gt; 0 on top.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/cartesian/_common.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/cartesian/_common.md
@@ -0,0 +1,14 @@
+### Common options to all cartesian axes
+
+Namespace: `options.scales[scaleId]`
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `bounds` | `string` | `'ticks'` | Determines the scale bounds. [more...](./index.md#scale-bounds)
+| `clip` | `boolean` | `true` | If true, clip the dataset drawing against the size of the scale instead of chart area
+| `position` | `string` \| `object` | | Position of the axis. [more...](./index.md#axis-position)
+| `stack` | `string` | | Stack group. Axes at the same `position` with same `stack` are stacked.
+| `stackWeight` | `number` | 1 | Weight of the scale in stack group. Used to determine the amount of allocated space for the scale within the group.
+| `axis` | `string` | | Which type of axis this is. Possible values are: `'x'`, `'y'`. If not set, this is inferred from the first character of the ID which should be `'x'` or `'y'`.
+| `offset` | `boolean` | `false` | If true, extra space is added to the both edges and the axis is scaled to fit into the chart area. This is set to `true` for a bar chart by default.
+| `title` | `object` | | Scale title configuration. [more...](../labelling.md#scale-title-configuration)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/cartesian/_common_ticks.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/cartesian/_common_ticks.md
@@ -0,0 +1,18 @@
+### Common tick options to all cartesian axes
+
+Namespace: `options.scales[scaleId].ticks`
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `align` | `string` | `'center'` | The tick alignment along the axis. Can be `'start'`, `'center'`, `'end'`, or `'inner'`. `inner` alignment means align `start` for first tick and `end` for the last tick of horizontal axis
+| `crossAlign` | `string` | `'near'` | The tick alignment perpendicular to the axis. Can be `'near'`, `'center'`, or `'far'`. See [Tick Alignment](/axes/cartesian/#tick-alignment)
+| `sampleSize` | `number` | `ticks.length` | The number of ticks to examine when deciding how many labels will fit. Setting a smaller value will be faster, but may be less accurate when there is large variability in label length.
+| `autoSkip` | `boolean` | `true` | If true, automatically calculates how many labels can be shown and hides labels accordingly. Labels will be rotated up to `maxRotation` before skipping any. Turn `autoSkip` off to show all labels no matter what.
+| `autoSkipPadding` | `number` | `3` | Padding between the ticks on the horizontal axis when `autoSkip` is enabled.
+| `includeBounds` | `boolean` | `true` | Should the defined `min` and `max` values be presented as ticks even if they are not "nice".
+| `labelOffset` | `number` | `0` | Distance in pixels to offset the label from the centre point of the tick (in the x-direction for the x-axis, and the y-direction for the y-axis). *Note: this can cause labels at the edges to be cropped by the edge of the canvas*
+| `maxRotation` | `number` | `50` | Maximum rotation for tick labels when rotating to condense labels. Note: Rotation doesn't occur until necessary. *Note: Only applicable to horizontal scales.*
+| `minRotation` | `number` | `0` | Minimum rotation for tick labels. *Note: Only applicable to horizontal scales.*
+| `mirror` | `boolean` | `false` | Flips tick labels around axis, displaying the labels inside the chart instead of outside. *Note: Only applicable to vertical scales.*
+| `padding` | `number` | `0` | Padding between the tick label and the axis. When set on a vertical axis, this applies in the horizontal (X) direction. When set on a horizontal axis, this applies in the vertical (Y) direction.
+| `maxTicksLimit` | `number` | `11` | Maximum number of ticks and gridlines to show.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/cartesian/category.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/cartesian/category.md
@@ -0,0 +1,85 @@
+# Category Axis
+
+If the global configuration is used, labels are drawn from one of the label arrays included in the chart data. If only `data.labels` is defined, this will be used. If `data.xLabels` is defined and the axis is horizontal, this will be used. Similarly, if `data.yLabels` is defined and the axis is vertical, this property will be used. Using both `xLabels` and `yLabels` together can create a chart that uses strings for both the X and Y axes.
+
+Specifying any of the settings above defines the x-axis as `type: 'category'` if not defined otherwise. For more fine-grained control of category labels, it is also possible to add `labels` as part of the category axis definition. Doing so does not apply the global defaults.
+
+## Category Axis Definition
+
+Globally:
+
+```javascript
+let chart = new Chart(ctx, {
+    type: ...
+    data: {
+        labels: ['January', 'February', 'March', 'April', 'May', 'June'],
+        datasets: ...
+    }
+});
+```
+
+As part of axis definition:
+
+```javascript
+let chart = new Chart(ctx, {
+    type: ...
+    data: ...
+    options: {
+        scales: {
+            x: {
+                type: 'category',
+                labels: ['January', 'February', 'March', 'April', 'May', 'June']
+            }
+        }
+    }
+});
+```
+
+## Configuration Options
+
+### Category Axis specific options
+
+Namespace: `options.scales[scaleId]`
+
+| Name | Type | Description
+| ---- | ---- | -----------
+| `min` | `string`\|`number` | The minimum item to display. [more...](#min-max-configuration)
+| `max` | `string`\|`number` | The maximum item to display. [more...](#min-max-configuration)
+| `labels` | `string[]`\|`string[][]` | An array of labels to display. When an individual label is an array of strings, each item is rendered on a new line.
+
+!!!include(axes/cartesian/_common.md)!!!
+
+!!!include(axes/_common.md)!!!
+
+## Tick Configuration
+
+!!!include(axes/cartesian/_common_ticks.md)!!!
+
+!!!include(axes/_common_ticks.md)!!!
+
+## Min Max Configuration
+
+For both the `min` and `max` properties, the value must be `string` in the `labels` array or `numeric` value as an index of a label in that array. In the example below, the x axis would only display "March" through "June".
+
+```javascript
+let chart = new Chart(ctx, {
+    type: 'line',
+    data: {
+        datasets: [{
+            data: [10, 20, 30, 40, 50, 60]
+        }],
+        labels: ['January', 'February', 'March', 'April', 'May', 'June']
+    },
+    options: {
+        scales: {
+            x: {
+                min: 'March'
+            }
+        }
+    }
+});
+```
+
+## Internal data format
+
+Internally category scale uses label indices
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/cartesian/index.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/cartesian/index.md
@@ -0,0 +1,368 @@
+# Cartesian Axes
+
+Axes that follow a cartesian grid are known as 'Cartesian Axes'. Cartesian axes are used for line, bar, and bubble charts. Five cartesian axes are included in Chart.js by default.
+
+* [linear](./linear.md)
+* [logarithmic](./logarithmic.md)
+* [category](./category.md)
+* [time](./time.md)
+* [timeseries](./timeseries.md)
+
+## Visual Components
+
+A cartesian axis is composed of visual components that can be individually configured. These components are:
+
+* [border](#border)
+* [grid lines](#grid-lines)
+* [tick](#ticks-and-tick-marks)
+* [tick mark](#ticks-and-tick-marks)
+* [title](#title)
+
+### Border
+
+The axis border is drawn at the edge of the axis, beside the chart area. In the image below, it is drawn in red.
+
+```js chart-editor
+// <block:setup:1>
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [{
+    label: 'My First dataset',
+    backgroundColor: 'rgba(54, 162, 235, 0.5)',
+    borderColor: 'rgb(54, 162, 235)',
+    borderWidth: 1,
+    data: [10, 20, 30, 40, 50, 0, 5],
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data,
+  options: {
+    scales: {
+      x: {
+        border: {
+          color: 'red'
+        }
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+### Grid lines
+
+The grid lines for an axis are drawn on the chart area. In the image below, they are red.
+
+```js chart-editor
+// <block:setup:1>
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [{
+    label: 'My First dataset',
+    backgroundColor: 'rgba(54, 162, 235, 0.5)',
+    borderColor: 'rgb(54, 162, 235)',
+    borderWidth: 1,
+    data: [10, 20, 30, 40, 50, 0, 5],
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data,
+  options: {
+    scales: {
+      x: {
+        grid: {
+          color: 'red',
+          borderColor: 'grey',
+          tickColor: 'grey'
+        }
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+### Ticks and Tick Marks
+
+Ticks represent data values on the axis that appear as labels. The tick mark is the extension of the grid line from the axis border to the label.
+In this example, the tick mark is drawn in red while the tick label is drawn in blue.
+
+```js chart-editor
+// <block:setup:1>
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [{
+    label: 'My First dataset',
+    backgroundColor: 'rgba(54, 162, 235, 0.5)',
+    borderColor: 'rgb(54, 162, 235)',
+    borderWidth: 1,
+    data: [10, 20, 30, 40, 50, 0, 5],
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data,
+  options: {
+    scales: {
+      x: {
+        grid: {
+          tickColor: 'red'
+        },
+        ticks: {
+          color: 'blue',
+        }
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+### Title
+
+The title component of the axis is used to label the data. In the example below, it is shown in red.
+
+```js chart-editor
+// <block:setup:1>
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [{
+    label: 'My First dataset',
+    backgroundColor: 'rgba(54, 162, 235, 0.5)',
+    borderColor: 'rgb(54, 162, 235)',
+    borderWidth: 1,
+    data: [10, 20, 30, 40, 50, 0, 5],
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data,
+  options: {
+    scales: {
+      x: {
+        title: {
+          color: 'red',
+          display: true,
+          text: 'Month'
+        }
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+## Common Configuration
+
+:::tip Note
+These are only the common options supported by all cartesian axes. Please see the specific axis documentation for all the available options for that axis.
+:::
+
+!!!include(axes/cartesian/_common.md)!!!
+
+!!!include(axes/_common.md)!!!
+
+### Axis Position
+
+An axis can either be positioned at the edge of the chart, at the center of the chart area, or dynamically with respect to a data value.
+
+To position the axis at the edge of the chart, set the `position` option to one of: `'top'`, `'left'`, `'bottom'`, `'right'`.
+To position the axis at the center of the chart area, set the `position` option to `'center'`. In this mode, either the `axis` option must be specified or the axis ID has to start with the letter 'x' or 'y'. This is so chart.js knows what kind of axis (horizontal or vertical) it is.
+To position the axis with respect to a data value, set the `position` option to an object such as:
+
+```javascript
+{
+    x: -20
+}
+```
+
+This will position the axis at a value of -20 on the axis with ID "x". For cartesian axes, only 1 axis may be specified.
+
+### Scale Bounds
+
+The `bounds` property controls the scale boundary strategy (bypassed by `min`/`max` options).
+
+* `'data'`: makes sure data are fully visible, labels outside are removed
+* `'ticks'`: makes sure ticks are fully visible, data outside are truncated
+
+### Tick Configuration
+
+:::tip Note
+These are only the common tick options supported by all cartesian axes. Please see specific axis documentation for all of the available options for that axis.
+:::
+
+!!!include(axes/cartesian/_common_ticks.md)!!!
+
+!!!include(axes/_common_ticks.md)!!!
+
+### Tick Alignment
+
+The alignment of ticks is primarily controlled using two settings on the tick configuration object: `align` and `crossAlign`. The `align` setting configures how labels align with the tick mark along the axis direction (i.e. horizontal for a horizontal axis and vertical for a vertical axis). The `crossAlign` setting configures how labels align with the tick mark in the perpendicular direction (i.e. vertical for a horizontal axis and horizontal for a vertical axis). In the example below, the `crossAlign` setting is used to left align the labels on the Y axis.
+
+```js chart-editor
+// <block:setup:1>
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [{
+    label: 'My First dataset',
+    backgroundColor: [
+      'rgba(255, 99, 132, 0.2)',
+      'rgba(255, 159, 64, 0.2)',
+      'rgba(255, 205, 86, 0.2)',
+      'rgba(75, 192, 192, 0.2)',
+      'rgba(54, 162, 235, 0.2)',
+      'rgba(153, 102, 255, 0.2)',
+      'rgba(201, 203, 207, 0.2)'
+    ],
+    borderColor: [
+      'rgb(255, 99, 132)',
+      'rgb(255, 159, 64)',
+      'rgb(255, 205, 86)',
+      'rgb(75, 192, 192)',
+      'rgb(54, 162, 235)',
+      'rgb(153, 102, 255)',
+      'rgb(201, 203, 207)'
+    ],
+    borderWidth: 1,
+    data: [65, 59, 80, 81, 56, 55, 40],
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'bar',
+  data,
+  options: {
+    indexAxis: 'y',
+    scales: {
+      y: {
+        ticks: {
+          crossAlign: 'far',
+        }
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+:::tip Note
+The `crossAlign` setting is only effective when these preconditions are met:
+
+* tick rotation is `0`
+* axis position is `'top'`, '`left'`, `'bottom'` or `'right'`
+:::
+
+### Axis ID
+
+The properties `dataset.xAxisID` or `dataset.yAxisID` have to match to `scales` property. This is especially needed if multi-axes charts are used.
+
+```javascript
+const myChart = new Chart(ctx, {
+    type: 'line',
+    data: {
+        datasets: [{
+            // This dataset appears on the first axis
+            yAxisID: 'first-y-axis'
+        }, {
+            // This dataset appears on the second axis
+            yAxisID: 'second-y-axis'
+        }]
+    },
+    options: {
+        scales: {
+            'first-y-axis': {
+                type: 'linear'
+            },
+            'second-y-axis': {
+                type: 'linear'
+            }
+        }
+    }
+});
+```
+
+## Creating Multiple Axes
+
+With cartesian axes, it is possible to create multiple X and Y axes. To do so, you can add multiple configuration objects to the `xAxes` and `yAxes` properties. When adding new axes, it is important to ensure that you specify the type of the new axes as default types are **not** used in this case.
+
+In the example below, we are creating two Y axes. We then use the `yAxisID` property to map the datasets to their correct axes.
+
+```javascript
+const myChart = new Chart(ctx, {
+    type: 'line',
+    data: {
+        datasets: [{
+            data: [20, 50, 100, 75, 25, 0],
+            label: 'Left dataset',
+
+            // This binds the dataset to the left y axis
+            yAxisID: 'left-y-axis'
+        }, {
+            data: [0.1, 0.5, 1.0, 2.0, 1.5, 0],
+            label: 'Right dataset',
+
+            // This binds the dataset to the right y axis
+            yAxisID: 'right-y-axis'
+        }],
+        labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']
+    },
+    options: {
+        scales: {
+            'left-y-axis': {
+                type: 'linear',
+                position: 'left'
+            },
+            'right-y-axis': {
+                type: 'linear',
+                position: 'right'
+            }
+        }
+    }
+});
+```
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/cartesian/linear.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/cartesian/linear.md
@@ -0,0 +1,100 @@
+# Linear Axis
+
+The linear scale is used to chart numerical data. It can be placed on either the x or y-axis. The scatter chart type automatically configures a line chart to use one of these scales for the x-axis. As the name suggests, linear interpolation is used to determine where a value lies on the axis.
+
+## Configuration Options
+
+### Linear Axis specific options
+
+Namespace: `options.scales[scaleId]`
+
+| Name | Type | Description
+| ---- | ---- | -----------
+| `beginAtZero` | `boolean` | if true, scale will include 0 if it is not already included.
+| `grace` | `number`\|`string` | Percentage (string ending with `%`) or amount (number) for added room in the scale range above and below data. [more...](#grace)
+
+!!!include(axes/cartesian/_common.md)!!!
+
+!!!include(axes/_common.md)!!!
+
+## Tick Configuration
+
+### Linear Axis specific tick options
+
+Namespace: `options.scales[scaleId].ticks`
+
+| Name | Type | Scriptable | Default | Description
+| ---- | ---- | ------- | ------- | -----------
+| `count` | `number` | Yes | `undefined` | The number of ticks to generate. If specified, this overrides the automatic generation.
+| `format` | `object` | Yes | | The [`Intl.NumberFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat) options used by the default label formatter
+| `precision` | `number` | Yes | | if defined and `stepSize` is not specified, the step size will be rounded to this many decimal places.
+| `stepSize` | `number` | Yes | | User-defined fixed step size for the scale. [more...](#step-size)
+
+!!!include(axes/cartesian/_common_ticks.md)!!!
+
+!!!include(axes/_common_ticks.md)!!!
+
+## Step Size
+
+If set, the scale ticks will be enumerated by multiple of `stepSize`, having one tick per increment. If not set, the ticks are labeled automatically using the nice numbers algorithm.
+
+This example sets up a chart with a y-axis that creates ticks at `0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5`.
+
+```javascript
+let options = {
+    scales: {
+        y: {
+            max: 5,
+            min: 0,
+            ticks: {
+                stepSize: 0.5
+            }
+        }
+    }
+};
+```
+
+## Grace
+
+If the value is a string ending with `%`, it's treated as a percentage. If a number, it's treated as a value.
+The value is added to the maximum data value and subtracted from the minimum data. This extends the scale range as if the data values were that much greater.
+
+```js chart-editor
+// <block:setup:1>
+const labels = Utils.months({count: 7});
+const data = {
+  labels: ['Positive', 'Negative'],
+  datasets: [{
+    data: [100, -50],
+    backgroundColor: 'rgb(255, 99, 132)'
+  }],
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'bar',
+  data,
+  options: {
+    scales: {
+      y: {
+        type: 'linear',
+        grace: '5%'
+      }
+    },
+    plugins: {
+      legend: false
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+## Internal data format
+
+Internally, the linear scale uses numeric data.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/cartesian/logarithmic.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/cartesian/logarithmic.md
@@ -0,0 +1,27 @@
+# Logarithmic Axis
+
+The logarithmic scale is used to chart numerical data. It can be placed on either the x or y-axis. As the name suggests, logarithmic interpolation is used to determine where a value lies on the axis.
+
+## Configuration Options
+
+!!!include(axes/cartesian/_common.md)!!!
+
+!!!include(axes/_common.md)!!!
+
+## Tick Configuration
+
+### Logarithmic Axis specific options
+
+Namespace: `options.scales[scaleId].ticks`
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `format` | `object` | | The [`Intl.NumberFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat) options used by the default label formatter
+
+!!!include(axes/cartesian/_common_ticks.md)!!!
+
+!!!include(axes/_common_ticks.md)!!!
+
+## Internal data format
+
+Internally, the logarithmic scale uses numeric data.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/cartesian/time.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/cartesian/time.md
@@ -0,0 +1,194 @@
+# Time Cartesian Axis
+
+The time scale is used to display times and dates. Data are spread according to the amount of time between data points. When building its ticks, it will automatically calculate the most comfortable unit based on the size of the scale.
+
+## Date Adapters
+
+The time scale **requires** both a date library and a corresponding adapter to be present. Please choose from the [available adapters](https://github.com/chartjs/awesome#adapters).
+
+## Data Sets
+
+### Input Data
+
+See [data structures](../../general/data-structures.md).
+
+### Date Formats
+
+When providing data for the time scale, Chart.js uses timestamps defined as milliseconds since the epoch (midnight January 1, 1970, UTC) internally. However, Chart.js also supports all of the formats that your chosen date adapter accepts. You should use timestamps if you'd like to set `parsing: false` for better performance.
+
+## Configuration Options
+
+### Time Axis specific options
+
+Namespace: `options.scales[scaleId]`
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `min` | `number`\|`string` | | The minimum item to display. [more...](#min-max-configuration)
+| `max` | `number`\|`string` | | The maximum item to display. [more...](#min-max-configuration)
+| `suggestedMin` | `number`\|`string` | | The minimum item to display if there is no datapoint before it. [more...](../index.md#axis-range-settings)
+| `suggestedMax` | `number`\|`string` | | The maximum item to display if there is no datapoint behind it. [more...](../index.md#axis-range-settings)
+| `adapters.date` | `object` | `{}` | Options for adapter for external date library if that adapter needs or supports options
+| `bounds` | `string` | `'data'` | Determines the scale bounds. [more...](./index.md#scale-bounds)
+| `offsetAfterAutoskip` | `boolean` | `false` | If true, bar chart offsets are computed with auto skipped ticks.
+| `ticks.source` | `string` | `'auto'` | How ticks are generated. [more...](#ticks-source)
+| `time.displayFormats` | `object` | | Sets how different time units are displayed. [more...](#display-formats)
+| `time.isoWeekday` | `boolean`\|`number` | `false` | If `boolean` and true and the unit is set to 'week', then the first day of the week will be Monday. Otherwise, it will be Sunday. If `number`, the index of the first day of the week (0 - Sunday, 6 - Saturday)
+| `time.parser` | `string`\|`function` | | Custom parser for dates. [more...](#parser)
+| `time.round` | `string` | `false` | If defined, dates will be rounded to the start of this unit. See [Time Units](#time-units) below for the allowed units.
+| `time.tooltipFormat` | `string` | | The format string to use for the tooltip.
+| `time.unit` | `string` | `false` | If defined, will force the unit to be a certain type. See [Time Units](#time-units) section below for details.
+| `time.minUnit` | `string` | `'millisecond'` | The minimum display format to be used for a time unit.
+
+!!!include(axes/cartesian/_common.md)!!!
+
+!!!include(axes/_common.md)!!!
+
+#### Time Units
+
+The following time measurements are supported. The names can be passed as strings to the `time.unit` config option to force a certain unit.
+
+* `'millisecond'`
+* `'second'`
+* `'minute'`
+* `'hour'`
+* `'day'`
+* `'week'`
+* `'month'`
+* `'quarter'`
+* `'year'`
+
+For example, to create a chart with a time scale that always displayed units per month, the following config could be used.
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        scales: {
+            x: {
+                type: 'time',
+                time: {
+                    unit: 'month'
+                }
+            }
+        }
+    }
+});
+```
+
+#### Display Formats
+
+You may specify a map of display formats with a key for each unit:
+
+* `millisecond`
+* `second`
+* `minute`
+* `hour`
+* `day`
+* `week`
+* `month`
+* `quarter`
+* `year`
+
+The format string used as a value depends on the date adapter you chose to use.
+
+For example, to set the display format for the `quarter` unit to show the month and year, the following config might be passed to the chart constructor.
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        scales: {
+            x: {
+                type: 'time',
+                time: {
+                    displayFormats: {
+                        quarter: 'MMM YYYY'
+                    }
+                }
+            }
+        }
+    }
+});
+```
+
+#### Ticks Source
+
+The `ticks.source` property controls the ticks generation.
+
+* `'auto'`: generates "optimal" ticks based on scale size and time options
+* `'data'`: generates ticks from data (including labels from data `{x|y}` objects)
+* `'labels'`: generates ticks from user given `labels` ONLY
+
+#### Parser
+
+If this property is defined as a string, it is interpreted as a custom format to be used by the date adapter to parse the date.
+
+If this is a function, it must return a type that can be handled by your date adapter's `parse` method.
+
+## Min Max Configuration
+
+For both the `min` and `max` properties, the value must be `string` that is parsable by your date adapter or a number with the amount of milliseconds that have elapsed since UNIX epoch.
+In the example below the x axis will start at 7 November 2021.
+
+```javascript
+let chart = new Chart(ctx, {
+    type: 'line',
+    data: {
+        datasets: [{
+            data: [{
+                x: '2021-11-06 23:39:30',
+                y: 50
+            }, {
+                x: '2021-11-07 01:00:28',
+                y: 60
+            }, {
+                x: '2021-11-07 09:00:28',
+                y: 20
+            }]
+        }],
+    },
+    options: {
+        scales: {
+            x: {
+                min: '2021-11-07 00:00:00',
+            }
+        }
+    }
+});
+```
+
+## Changing the scale type from Time scale to Logarithmic/Linear scale.
+
+When changing the scale type from Time scale to Logarithmic/Linear scale, you need to add `bounds: 'ticks'` to the scale options. Changing the `bounds` parameter is necessary because its default value is the `'data'` for the Time scale.
+
+Initial config:
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        scales: {
+            x: {
+                type: 'time',
+            }
+        }
+    }
+});
+```
+
+Scale update:
+
+```javascript
+chart.options.scales.x = {
+    type: 'logarithmic',
+    bounds: 'ticks'
+};
+```
+
+## Internal data format
+
+Internally time scale uses milliseconds since epoch
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/cartesian/timeseries.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/cartesian/timeseries.md
@@ -0,0 +1,23 @@
+# Time Series Axis
+
+The time series scale extends from the time scale and supports all the same options. However, for the time series scale, each data point is spread equidistant.
+
+## Example
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        scales: {
+            x: {
+                type: 'timeseries',
+            }
+        }
+    }
+});
+```
+
+## More details
+
+Please see [the time scale documentation](./time.md) for all other details.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/index.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/index.md
@@ -0,0 +1,186 @@
+# Axes
+
+Axes are an integral part of a chart. They are used to determine how data maps to a pixel value on the chart. In a cartesian chart, there is 1 or more X-axis and 1 or more Y-axis to map points onto the 2-dimensional canvas. These axes are known as ['cartesian axes'](./cartesian/).
+
+In a radial chart, such as a radar chart or a polar area chart, there is a single axis that maps points in the angular and radial directions. These are known as ['radial axes'](./radial/).
+
+Scales in Chart.js >v2.0 are significantly more powerful, but also different from those of v1.0.
+
+* Multiple X & Y axes are supported.
+* A built-in label auto-skip feature detects would-be overlapping ticks and labels and removes every nth label to keep things displayed normally.
+* Scale titles are supported.
+* New scale types can be extended without writing an entirely new chart type.
+
+## Default scales
+
+The default `scaleId`'s for cartesian charts are `'x'` and `'y'`. For radial charts: `'r'`.
+Each dataset is mapped to a scale for each axis (x, y or r) it requires. The scaleId's that a dataset is mapped to is determined by the `xAxisID`, `yAxisID` or `rAxisID`.
+If the ID for an axis is not specified, the first scale for that axis is used. If no scale for an axis is found, a new scale is created.
+
+Some examples:
+
+The following chart will have `'x'` and `'y'` scales:
+
+```js
+let chart = new Chart(ctx, {
+  type: 'line'
+});
+```
+
+The following chart will have scales `'x'` and `'myScale'`:
+
+```js
+let chart = new Chart(ctx, {
+  type: 'bar',
+  data: {
+    datasets: [{
+      data: [1, 2, 3]
+    }]
+  },
+  options: {
+    scales: {
+      myScale: {
+        type: 'logarithmic',
+        position: 'right', // `axis` is determined by the position as `'y'`
+      }
+    }
+  }
+});
+```
+
+The following chart will have scales `'xAxis'` and `'yAxis'`:
+
+```js
+let chart = new Chart(ctx, {
+  type: 'bar',
+  data: {
+    datasets: [{
+      yAxisID: 'yAxis'
+    }]
+  },
+  options: {
+    scales: {
+      xAxis: {
+        // The axis for this scale is determined from the first letter of the id as `'x'`
+        // It is recommended to specify `position` and / or `axis` explicitly.
+        type: 'time',
+      }
+    }
+  }
+});
+```
+
+The following chart will have `'r'` scale:
+
+```js
+let chart = new Chart(ctx, {
+  type: 'radar'
+});
+```
+
+The following chart will have `'myScale'` scale:
+
+```js
+let chart = new Chart(ctx, {
+  type: 'radar',
+  scales: {
+    myScale: {
+      axis: 'r'
+    }
+  }
+});
+```
+
+## Common Configuration
+
+:::tip Note
+These are only the common options supported by all axes. Please see specific axis documentation for all the available options for that axis.
+:::
+
+!!!include(axes/_common.md)!!!
+
+## Tick Configuration
+
+:::tip Note
+These are only the common tick options supported by all axes. Please see specific axis documentation for all the available tick options for that axis.
+:::
+
+!!!include(axes/_common_ticks.md)!!!
+
+## Axis Range Settings
+
+Given the number of axis range settings, it is important to understand how they all interact with each other.
+
+The `suggestedMax` and `suggestedMin` settings only change the data values that are used to scale the axis. These are useful for extending the range of the axis while maintaining the auto-fit behaviour.
+
+```javascript
+let minDataValue = Math.min(mostNegativeValue, options.suggestedMin);
+let maxDataValue = Math.max(mostPositiveValue, options.suggestedMax);
+```
+
+In this example, the largest positive value is 50, but the data maximum is expanded out to 100. However, because the lowest data value is below the `suggestedMin` setting, it is ignored.
+
+```javascript
+let chart = new Chart(ctx, {
+    type: 'line',
+    data: {
+        datasets: [{
+            label: 'First dataset',
+            data: [0, 20, 40, 50]
+        }],
+        labels: ['January', 'February', 'March', 'April']
+    },
+    options: {
+        scales: {
+            y: {
+                suggestedMin: 50,
+                suggestedMax: 100
+            }
+        }
+    }
+});
+```
+
+In contrast to the `suggested*` settings, the `min` and `max` settings set explicit ends to the axes. When these are set, some data points may not be visible.
+
+## Stacking
+
+By default, data is not stacked. If the `stacked` option of the value scale (y-axis on horizontal chart) is `true`, positive and negative values are stacked separately. Additionally, a `stack` option can be defined per dataset to further divide into stack groups [more...](../general/data-structures/#dataset-configuration).
+For some charts, you might want to stack positive and negative values together. That can be achieved by specifying `stacked: 'single'`.
+
+## Callbacks
+
+There are a number of config callbacks that can be used to change parameters in the scale at different points in the update process. The options are supplied at the top level of the axis options.
+
+Namespace: `options.scales[scaleId]`
+
+| Name | Arguments | Description
+| ---- | --------- | -----------
+| `beforeUpdate` | `axis` | Callback called before the update process starts.
+| `beforeSetDimensions` | `axis` | Callback that runs before dimensions are set.
+| `afterSetDimensions` | `axis` | Callback that runs after dimensions are set.
+| `beforeDataLimits` | `axis` | Callback that runs before data limits are determined.
+| `afterDataLimits` | `axis` | Callback that runs after data limits are determined.
+| `beforeBuildTicks` | `axis` | Callback that runs before ticks are created.
+| `afterBuildTicks` | `axis` | Callback that runs after ticks are created. Useful for filtering ticks.
+| `beforeTickToLabelConversion` | `axis` | Callback that runs before ticks are converted into strings.
+| `afterTickToLabelConversion` | `axis` | Callback that runs after ticks are converted into strings.
+| `beforeCalculateLabelRotation` | `axis` | Callback that runs before tick rotation is determined.
+| `afterCalculateLabelRotation` | `axis` | Callback that runs after tick rotation is determined.
+| `beforeFit` | `axis` | Callback that runs before the scale fits to the canvas.
+| `afterFit` | `axis` | Callback that runs after the scale fits to the canvas.
+| `afterUpdate` | `axis` | Callback that runs at the end of the update process.
+
+### Updating Axis Defaults
+
+The default configuration for a scale can be easily changed. All you need to do is set the new options to `Chart.defaults.scales[type]`.
+
+For example, to set the minimum value of 0 for all linear scales, you would do the following. Any linear scales created after this time would now have a minimum of 0.
+
+```javascript
+Chart.defaults.scales.linear.min = 0;
+```
+
+## Creating New Axes
+
+To create a new axis, see the [developer docs](../developers/axes.md).
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/labelling.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/labelling.md
@@ -0,0 +1,69 @@
+# Labeling Axes
+
+When creating a chart, you want to tell the viewer what data they are viewing. To do this, you need to label the axis.
+
+## Scale Title Configuration
+
+Namespace: `options.scales[scaleId].title`, it defines options for the scale title. Note that this only applies to cartesian axes.
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `display` | `boolean` | `false` | If true, display the axis title.
+| `align` | `string` | `'center'` | Alignment of the axis title. Possible options are `'start'`, `'center'` and `'end'`
+| `text` | `string`\|`string[]` | `''` | The text for the title. (i.e. "# of People" or "Response Choices").
+| `color` | [`Color`](../general/colors.md) | `Chart.defaults.color` | Color of label.
+| `strokeColor` | [`Color`](../general/colors.md) |  | Color of text stroke.
+| `strokeWidth` | `number` |  | Size of stroke width, in pixels.
+| `font` | `Font` | `Chart.defaults.font` | See [Fonts](../general/fonts.md)
+| `padding` | [`Padding`](../general/padding.md) | `4` | Padding to apply around scale labels. Only `top`, `bottom` and `y` are implemented.
+
+## Creating Custom Tick Formats
+
+It is also common to want to change the tick marks to include information about the data type. For example, adding a dollar sign ('$').
+To do this, you need to override the `ticks.callback` method in the axis configuration.
+
+The method receives 3 arguments:
+
+* `value` - the tick value in the **internal data format** of the associated scale. For time scale, it is a timestamp.
+* `index` - the tick index in the ticks array.
+* `ticks` - the array containing all of the [tick objects](../api/interfaces/Tick).
+
+The call to the method is scoped to the scale. `this` inside the method is the scale object.
+
+If the callback returns `null` or `undefined` the associated grid line will be hidden.
+
+:::tip
+The [category axis](../axes/cartesian/category), which is the default x-axis for line and bar charts, uses the `index` as internal data format. For accessing the label, use `this.getLabelForValue(value)`. [API: getLabelForValue](../api/classes/Scale.md#getlabelforvalue)
+:::
+
+In the following example, every label of the Y-axis would be displayed with a dollar sign at the front.
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        scales: {
+            y: {
+                ticks: {
+                    // Include a dollar sign in the ticks
+                    callback: function(value, index, ticks) {
+                        return '$' + value;
+                    }
+                }
+            }
+        }
+    }
+});
+```
+
+Keep in mind that overriding `ticks.callback` means that you are responsible for all formatting of the label. Depending on your use case, you may want to call the default formatter and then modify its output. In the example above, that would look like:
+
+```javascript
+                        // call the default formatter, forwarding `this`
+                        return '$' + Chart.Ticks.formatters.numeric.apply(this, [value, index, ticks]);
+```
+
+Related samples:
+
+* [Tick configuration sample](../samples/scale-options/ticks)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/radial/index.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/radial/index.md
@@ -0,0 +1,178 @@
+# Radial Axes
+
+Radial axes are used specifically for the radar and polar area chart types. These axes overlay the chart area, rather than being positioned on one of the edges. One radial axis is included by default in Chart.js.
+
+* [radialLinear](./linear.md)
+
+## Visual Components
+
+A radial axis is composed of visual components that can be individually configured. These components are:
+
+* [angle lines](#angle-lines)
+* [grid lines](#grid-lines)
+* [point labels](#point-labels)
+* [ticks](#ticks)
+
+### Angle Lines
+
+The grid lines for an axis are drawn on the chart area. They stretch out from the center towards the edge of the canvas. In the example below, they are red.
+
+```js chart-editor
+// <block:setup:1>
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [{
+    label: 'My First dataset',
+    backgroundColor: 'rgba(54, 162, 235, 0.5)',
+    borderColor: 'rgb(54, 162, 235)',
+    borderWidth: 1,
+    data: [10, 20, 30, 40, 50, 0, 5],
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'radar',
+  data,
+  options: {
+    scales: {
+      r: {
+        angleLines: {
+          color: 'red'
+        }
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+### Grid Lines
+
+The grid lines for an axis are drawn on the chart area. In the example below, they are red.
+
+```js chart-editor
+// <block:setup:1>
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [{
+    label: 'My First dataset',
+    backgroundColor: 'rgba(54, 162, 235, 0.5)',
+    borderColor: 'rgb(54, 162, 235)',
+    borderWidth: 1,
+    data: [10, 20, 30, 40, 50, 0, 5],
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'radar',
+  data,
+  options: {
+    scales: {
+      r: {
+        grid: {
+          color: 'red'
+        }
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+### Point Labels
+
+The point labels indicate the value for each angle line. In the example below, they are red.
+
+```js chart-editor
+// <block:setup:1>
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [{
+    label: 'My First dataset',
+    backgroundColor: 'rgba(54, 162, 235, 0.5)',
+    borderColor: 'rgb(54, 162, 235)',
+    borderWidth: 1,
+    data: [10, 20, 30, 40, 50, 0, 5],
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'radar',
+  data,
+  options: {
+    scales: {
+      r: {
+        pointLabels: {
+          color: 'red'
+        }
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+### Ticks
+
+The ticks are used to label values based on how far they are from the center of the axis. In the example below, they are red.
+
+```js chart-editor
+// <block:setup:1>
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [{
+    label: 'My First dataset',
+    backgroundColor: 'rgba(54, 162, 235, 0.5)',
+    borderColor: 'rgb(54, 162, 235)',
+    borderWidth: 1,
+    data: [10, 20, 30, 40, 50, 0, 5],
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'radar',
+  data,
+  options: {
+    scales: {
+      r: {
+        ticks: {
+          color: 'red'
+        }
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/radial/linear.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/radial/linear.md
@@ -0,0 +1,168 @@
+# Linear Radial Axis
+
+The linear radial scale is used to chart numerical data. As the name suggests, linear interpolation is used to determine where a value lies in relation to the center of the axis.
+
+The following additional configuration options are provided by the radial linear scale.
+
+## Configuration Options
+
+### Linear Radial Axis specific options
+
+Namespace: `options.scales[scaleId]`
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `animate` | `boolean` | `true` | Whether to animate scaling the chart from the centre
+| `angleLines` | `object` | | Angle line configuration. [more...](#angle-line-options)
+| `beginAtZero` | `boolean` | `false` | If true, scale will include 0 if it is not already included.
+| `pointLabels` | `object` | | Point label configuration. [more...](#point-label-options)
+| `startAngle` | `number` | `0` | Starting angle of the scale. In degrees, 0 is at top.
+
+### Common options for all axes
+
+Namespace: `options.scales[scaleId]`
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `type` | `string` | | Type of scale being employed. Custom scales can be created and registered with a string key. This allows changing the type of an axis for a chart.
+| `alignToPixels` | `boolean` | `false` | Align pixel values to device pixels.
+| `backgroundColor` | [`Color`](/general/colors.md) | | Background color of the scale area.
+| `display` | `boolean`\|`string` | `true` | Controls the axis global visibility (visible when `true`, hidden when `false`). When `display: 'auto'`, the axis is visible only if at least one associated dataset is visible.
+| `grid` | `object` | | Grid line configuration. [more...](#grid-line-configuration)
+| `min` | `number` | | User defined minimum number for the scale, overrides minimum value from data. [more...](/axes/index.md#axis-range-settings)
+| `max` | `number` | | User defined maximum number for the scale, overrides maximum value from data. [more...](/axes/index.md#axis-range-settings)
+| `reverse` | `boolean` | `false` | Reverse the scale.
+| `stacked` | `boolean`\|`string` | `false` | Should the data be stacked. [more...](/axes/index.md#stacking)
+| `suggestedMax` | `number` | | Adjustment used when calculating the maximum data value. [more...](/axes/index.md#axis-range-settings)
+| `suggestedMin` | `number` | | Adjustment used when calculating the minimum data value. [more...](/axes/index.md#axis-range-settings)
+| `ticks` | `object` | | Tick configuration. [more...](/axes/index.md#tick-configuration)
+| `weight` | `number` | `0` | The weight used to sort the axis. Higher weights are further away from the chart area.
+
+## Tick Configuration
+
+### Linear Radial Axis specific tick options
+
+Namespace: `options.scales[scaleId].ticks`
+
+| Name | Type | Scriptable | Default | Description
+| ---- | ---- | ------- | ------- | -----------
+| `count` | `number` | Yes | `undefined` | The number of ticks to generate. If specified, this overrides the automatic generation.
+| `format` | `object` | Yes | | The [`Intl.NumberFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat) options used by the default label formatter
+| `maxTicksLimit` | `number` | Yes | `11` | Maximum number of ticks and gridlines to show.
+| `precision` | `number` | Yes | | If defined and `stepSize` is not specified, the step size will be rounded to this many decimal places.
+| `stepSize` | `number` | Yes | | User defined fixed step size for the scale. [more...](#step-size)
+
+!!!include(axes/_common_ticks.md)!!!
+
+The scriptable context is described in [Options](../../general/options.md#tick) section.
+
+## Grid Line Configuration
+
+Namespace: `options.scales[scaleId].grid`, it defines options for the grid lines of the axis.
+
+| Name | Type | Scriptable | Indexable | Default | Description
+| ---- | ---- | :-------------------------------: | :-----------------------------: | ------- | -----------
+| `borderDash` | `number[]` | | | `[]` | Length and spacing of dashes on grid lines. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash).
+| `borderDashOffset` | `number` | Yes | | `0.0` | Offset for line dashes. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset).
+| `circular` | `boolean` | | | `false` | If true, gridlines are circular (on radar and polar area charts only).
+| `color` | [`Color`](../general/colors.md)  | Yes | Yes | `Chart.defaults.borderColor` | The color of the grid lines. If specified as an array, the first color applies to the first grid line, the second to the second grid line, and so on.
+| `display` | `boolean` | | | `true` | If false, do not display grid lines for this axis.
+| `lineWidth` | `number` | Yes | Yes | `1` | Stroke width of grid lines.
+
+The scriptable context is described in [Options](../general/options.md#tick) section.
+
+## Axis Range Settings
+
+Given the number of axis range settings, it is important to understand how they all interact with each other.
+
+The `suggestedMax` and `suggestedMin` settings only change the data values that are used to scale the axis. These are useful for extending the range of the axis while maintaining the auto-fit behaviour.
+
+```javascript
+let minDataValue = Math.min(mostNegativeValue, options.ticks.suggestedMin);
+let maxDataValue = Math.max(mostPositiveValue, options.ticks.suggestedMax);
+```
+
+In this example, the largest positive value is 50, but the data maximum is expanded out to 100. However, because the lowest data value is below the `suggestedMin` setting, it is ignored.
+
+```javascript
+let chart = new Chart(ctx, {
+    type: 'radar',
+    data: {
+        datasets: [{
+            label: 'First dataset',
+            data: [0, 20, 40, 50]
+        }],
+        labels: ['January', 'February', 'March', 'April']
+    },
+    options: {
+        scales: {
+            r: {
+                suggestedMin: 50,
+                suggestedMax: 100
+            }
+        }
+    }
+});
+```
+
+In contrast to the `suggested*` settings, the `min` and `max` settings set explicit ends to the axes. When these are set, some data points may not be visible.
+
+## Step Size
+
+If set, the scale ticks will be enumerated by multiple of `stepSize`, having one tick per increment. If not set, the ticks are labeled automatically using the nice numbers algorithm.
+
+This example sets up a chart with a y axis that creates ticks at `0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5`.
+
+```javascript
+let options = {
+    scales: {
+        r: {
+            max: 5,
+            min: 0,
+            ticks: {
+                stepSize: 0.5
+            }
+        }
+    }
+};
+```
+
+## Angle Line Options
+
+The following options are used to configure angled lines that radiate from the center of the chart to the point labels.
+Namespace: `options.scales[scaleId].angleLines`
+
+| Name | Type | Scriptable | Default | Description
+| ---- | ---- | ------- | ------- | -----------
+| `display` | `boolean` | | `true` | If true, angle lines are shown.
+| `color` | [`Color`](../../general/colors.md) | Yes | `Chart.defaults.borderColor` | Color of angled lines.
+| `lineWidth` | `number` | Yes | `1` | Width of angled lines.
+| `borderDash` | `number[]` | Yes<sup>1</sup> | `[]` | Length and spacing of dashes on angled lines. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash).
+| `borderDashOffset` | `number` | Yes | `0.0` | Offset for line dashes. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset).
+
+  1. the `borderDash` setting only accepts a static value or a function. Passing an array of arrays is not supported.
+
+The scriptable context is described in [Options](../../general/options.md#pointLabel) section.
+
+## Point Label Options
+
+The following options are used to configure the point labels that are shown on the perimeter of the scale.
+Namespace: `options.scales[scaleId].pointLabels`
+
+| Name | Type | Scriptable | Default | Description
+| ---- | ---- | ------- | ------- | -----------
+| `backdropColor` | [`Color`](../../general/colors.md) | `true` | `undefined` | Background color of the point label.
+| `backdropPadding` | [`Padding`](../../general/padding.md) | | `2` | Padding of label backdrop.
+| `borderRadius` | `number`\|`object` | `true` | `0` | Border radius of the point label
+| `display` | `boolean`\|`string` | | `true` | If true, point labels are shown.  When `display: 'auto'`, the label is hidden if it overlaps with another label.
+| `callback` | `function` | | | Callback function to transform data labels to point labels. The default implementation simply returns the current string.
+| `color` | [`Color`](../../general/colors.md) | Yes | `Chart.defaults.color` | Color of label.
+| `font` | `Font` | Yes | `Chart.defaults.font` | See [Fonts](../../general/fonts.md)
+| `padding` | `number` | Yes | 5 | Padding between chart and point labels.
+| [`centerPointLabels`](../../samples/other-charts/polar-area-center-labels.md) | `boolean` | | `false` | If true, point labels are centered.
+
+The scriptable context is described in [Options](../../general/options.md#pointLabel) section.
+
+## Internal data format
+
+Internally, the linear radial scale uses numeric data
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/styling.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/axes/styling.md
@@ -0,0 +1,52 @@
+# Styling
+
+There are a number of options to allow styling an axis. There are settings to control [grid lines](#grid-line-configuration) and [ticks](#tick-configuration).
+
+## Grid Line Configuration
+
+Namespace: `options.scales[scaleId].grid`, it defines options for the grid lines that run perpendicular to the axis.
+
+| Name | Type | Scriptable | Indexable | Default | Description
+| ---- | ---- | :-------------------------------: | :-----------------------------: | ------- | -----------
+| `circular` | `boolean` | | | `false` | If true, gridlines are circular (on radar and polar area charts only).
+| `color` | [`Color`](../general/colors.md)  | Yes | Yes | `Chart.defaults.borderColor` | The color of the grid lines. If specified as an array, the first color applies to the first grid line, the second to the second grid line, and so on.
+| `display` | `boolean` | | | `true` | If false, do not display grid lines for this axis.
+| `drawOnChartArea` | `boolean` | | | `true` | If true, draw lines on the chart area inside the axis lines. This is useful when there are multiple axes and you need to control which grid lines are drawn.
+| `drawTicks` | `boolean` | | | `true` | If true, draw lines beside the ticks in the axis area beside the chart.
+| `lineWidth` | `number` | Yes | Yes | `1` | Stroke width of grid lines.
+| `offset` | `boolean` | | | `false` | If true, grid lines will be shifted to be between labels. This is set to `true` for a bar chart by default.
+| `tickBorderDash` | `number[]` | Yes | Yes | `[]` | Length and spacing of the tick mark line. If not set, defaults to the grid line `borderDash` value.
+| `tickBorderDashOffset` | `number` | Yes | Yes |  | Offset for the line dash of the tick mark. If unset, defaults to the grid line `borderDashOffset` value
+| `tickColor` | [`Color`](../general/colors.md) | Yes | Yes | | Color of the tick line. If unset, defaults to the grid line color.
+| `tickLength` | `number` | | | `8` | Length in pixels that the grid lines will draw into the axis area.
+| `tickWidth` | `number` | Yes | Yes | | Width of the tick mark in pixels. If unset, defaults to the grid line width.
+| `z` | `number` | | | `-1` | z-index of the gridline layer. Values &lt;= 0 are drawn under datasets, &gt; 0 on top.
+
+The scriptable context is described in [Options](../general/options.md#tick) section.
+
+## Tick Configuration
+
+!!!include(axes/_common_ticks.md)!!!
+
+The scriptable context is described in [Options](../general/options.md#tick) section.
+
+## Major Tick Configuration
+
+Namespace: `options.scales[scaleId].ticks.major`, it defines options for the major tick marks that are generated by the axis.
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `enabled` | `boolean` | `false` | If true, major ticks are generated. A major tick will affect autoskipping and `major` will be defined on ticks in the scriptable options context.
+
+## Border Configuration
+
+Namespace: `options.scales[scaleId].border`, it defines options for the border that run perpendicular to the axis.
+
+| Name | Type | Scriptable | Indexable | Default | Description
+| ---- | ---- | :-------------------------------: | :-----------------------------: | ------- | -----------
+| `display` | `boolean` | | | `true` | If true, draw a border at the edge between the axis and the chart area.
+| `color` | [`Color`](../general/colors.md) | | | `Chart.defaults.borderColor` | The color of the border line.
+| `width` | `number` | | | `1` | The width of the border line.
+| `dash` | `number[]` | Yes | | `[]` | Length and spacing of dashes on grid lines. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash).
+| `dashOffset` | `number` | Yes | | `0.0` | Offset for line dashes. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset).
+| `z` | `number` | | | `0` | z-index of the border layer. Values &lt;= 0 are drawn under datasets, &gt; 0 on top.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/charts/area.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/charts/area.md
@@ -0,0 +1,109 @@
+# Area Chart
+
+Both [line](./line.md) and [radar](./radar.md) charts support a `fill` option on the dataset object which can be used to create space between two datasets or a dataset and a boundary, i.e. the scale `origin`, `start,` or `end` (see [filling modes](#filling-modes)).
+
+:::tip Note
+This feature is implemented by the [`filler` plugin](https://github.com/chartjs/Chart.js/blob/master/src/plugins/plugin.filler/index.js).
+:::
+
+## Filling modes
+
+| Mode | Type | Values |
+| :--- | :--- | :--- |
+| Absolute dataset index | `number` | `1`, `2`, `3`, ... |
+| Relative dataset index | `string` | `'-1'`, `'-2'`, `'+1'`, ... |
+| Boundary | `string` | `'start'`, `'end'`, `'origin'` |
+| Disabled <sup>1</sup> | `boolean` | `false` |
+| Stacked value below | `string` | `'stack'` |
+| Axis value | `object` | `{ value: number; }` |
+| Shape (fill inside line) | `string` | `'shape'` |
+
+> <sup>1</sup> for backward compatibility, `fill: true` is equivalent to `fill: 'origin'`<br/>
+
+### Example
+
+```javascript
+new Chart(ctx, {
+    data: {
+        datasets: [
+            {fill: 'origin'},      // 0: fill to 'origin'
+            {fill: '+2'},          // 1: fill to dataset 3
+            {fill: 1},             // 2: fill to dataset 1
+            {fill: false},         // 3: no fill
+            {fill: '-2'},          // 4: fill to dataset 2
+            {fill: {value: 25}}    // 5: fill to axis value 25
+        ]
+    }
+});
+```
+
+If you need to support multiple colors when filling from one dataset to another, you may specify an object with the following option :
+
+| Param | Type | Description |
+| :--- | :--- | :--- |
+| `target` | `number`, `string`, `boolean`, `object` | The accepted values are the same as the filling mode values, so you may use absolute and relative dataset indexes and/or boundaries. |
+| `above` | `Color` | If no color is set, the default color will be the background color of the chart. |
+| `below` | `Color` | Same as the above. |
+
+### Example with multiple colors
+
+```javascript
+new Chart(ctx, {
+    data: {
+        datasets: [
+            {
+              fill: {
+                target: 'origin',
+                above: 'rgb(255, 0, 0)',   // Area will be red above the origin
+                below: 'rgb(0, 0, 255)'    // And blue below the origin
+              }
+            }
+        ]
+    }
+});
+```
+
+## Configuration
+
+Namespace: `options.plugins.filler`
+
+| Option | Type | Default | Description |
+| :--- | :--- | :--- | :--- |
+| `drawTime` | `string` | `beforeDatasetDraw` | Filler draw time. Supported values: `'beforeDraw'`, `'beforeDatasetDraw'`, `'beforeDatasetsDraw'`
+| [`propagate`](#propagate) | `boolean` | `true` | Fill propagation when target is hidden.
+
+### propagate
+
+`propagate` takes a `boolean` value (default: `true`).
+
+If `true`, the fill area will be recursively extended to the visible target defined by the `fill` value of hidden dataset targets:
+
+#### Example using propagate
+
+```javascript
+new Chart(ctx, {
+    data: {
+        datasets: [
+            {fill: 'origin'},   // 0: fill to 'origin'
+            {fill: '-1'},       // 1: fill to dataset 0
+            {fill: 1},          // 2: fill to dataset 1
+            {fill: false},      // 3: no fill
+            {fill: '-2'}        // 4: fill to dataset 2
+        ]
+    },
+    options: {
+        plugins: {
+            filler: {
+                propagate: true
+            }
+        }
+    }
+});
+```
+
+`propagate: true`:
+-if dataset 2 is hidden, dataset 4 will fill to dataset 1
+-if dataset 2 and 1 are hidden, dataset 4 will fill to `'origin'`
+
+`propagate: false`:
+-if dataset 2 and/or 4 are hidden, dataset 4 will not be filled
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/charts/bar.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/charts/bar.md
@@ -0,0 +1,359 @@
+# Bar Chart
+
+A bar chart provides a way of showing data values represented as vertical bars. It is sometimes used to show trend data, and the comparison of multiple data sets side by side.
+
+```js chart-editor
+// <block:setup:1>
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [{
+    label: 'My First Dataset',
+    data: [65, 59, 80, 81, 56, 55, 40],
+    backgroundColor: [
+      'rgba(255, 99, 132, 0.2)',
+      'rgba(255, 159, 64, 0.2)',
+      'rgba(255, 205, 86, 0.2)',
+      'rgba(75, 192, 192, 0.2)',
+      'rgba(54, 162, 235, 0.2)',
+      'rgba(153, 102, 255, 0.2)',
+      'rgba(201, 203, 207, 0.2)'
+    ],
+    borderColor: [
+      'rgb(255, 99, 132)',
+      'rgb(255, 159, 64)',
+      'rgb(255, 205, 86)',
+      'rgb(75, 192, 192)',
+      'rgb(54, 162, 235)',
+      'rgb(153, 102, 255)',
+      'rgb(201, 203, 207)'
+    ],
+    borderWidth: 1
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'bar',
+  data: data,
+  options: {
+    scales: {
+      y: {
+        beginAtZero: true
+      }
+    }
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+## Dataset Properties
+
+Namespaces:
+
+* `data.datasets[index]` - options for this dataset only
+* `options.datasets.bar` - options for all bar datasets
+* `options.elements.bar` - options for all [bar elements](../configuration/elements.md#bar-configuration)
+* `options` - options for the whole chart
+
+The bar chart allows a number of properties to be specified for each dataset.
+These are used to set display properties for a specific dataset. For example,
+the color of the bars is generally set this way.
+Only the `data` option needs to be specified in the dataset namespace.
+
+| Name | Type | [Scriptable](../general/options.md#scriptable-options) | [Indexable](../general/options.md#indexable-options) | Default
+| ---- | ---- | :----: | :----: | ----
+| [`backgroundColor`](#styling) | [`Color`](../general/colors.md) | Yes | Yes | `'rgba(0, 0, 0, 0.1)'`
+| [`base`](#general) | `number` | Yes | Yes |
+| [`barPercentage`](#barpercentage) | `number` | - | - | `0.9` |
+| [`barThickness`](#barthickness) | `number`\|`string` | - | - | |
+| [`borderColor`](#styling) | [`Color`](../general/colors.md) | Yes | Yes | `'rgba(0, 0, 0, 0.1)'`
+| [`borderSkipped`](#borderskipped) | `string`\|`boolean` | Yes | Yes | `'start'`
+| [`borderWidth`](#borderwidth) | `number`\|`object` | Yes | Yes | `0`
+| [`borderRadius`](#borderradius) | `number`\|`object` | Yes | Yes | `0`
+| [`categoryPercentage`](#categorypercentage) | `number` | - | - | `0.8` |
+| [`clip`](#general) | `number`\|`object`\|`false` | - | - |
+| [`data`](#data-structure) | `object`\|`object[]`\| `number[]`\|`string[]` | - | - | **required**
+| [`grouped`](#general) | `boolean` | - | - | `true` |
+| [`hoverBackgroundColor`](#interactions) | [`Color`](../general/colors.md) | Yes | Yes |
+| [`hoverBorderColor`](#interactions) | [`Color`](../general/colors.md) | Yes | Yes |
+| [`hoverBorderWidth`](#interactions) | `number` | Yes | Yes | `1`
+| [`hoverBorderRadius`](#interactions) | `number` | Yes | Yes | `0`
+| [`indexAxis`](#general) | `string` | - | - | `'x'`
+| [`inflateAmount`](#inflateamount) | `number`\|`'auto'` | Yes | Yes | `'auto'`
+| [`maxBarThickness`](#maxbarthickness) | `number` | - | - | |
+| [`minBarLength`](#styling) | `number` | - | - | |
+| [`label`](#general) | `string` | - | - | `''`
+| [`order`](#general) | `number` | - | - | `0`
+| [`pointStyle`](../configuration/elements.md#point-styles) | [`pointStyle`](../configuration/elements.md#types) | Yes | - | `'circle'`
+| [`skipNull`](#general) | `boolean` | - | - | |
+| [`stack`](#general) | `string` | - | - | `'bar'` |
+| [`xAxisID`](#general) | `string` | - | - | first x axis
+| [`yAxisID`](#general) | `string` | - | - | first y axis
+
+All these values, if `undefined`, fallback to the scopes described in [option resolution](../general/options)
+
+### Example dataset configuration
+
+```javascript
+data: {
+    datasets: [{
+        barPercentage: 0.5,
+        barThickness: 6,
+        maxBarThickness: 8,
+        minBarLength: 2,
+        data: [10, 20, 30, 40, 50, 60, 70]
+    }]
+};
+```
+
+### General
+
+| Name | Description
+| ---- | ----
+| `base` | Base value for the bar in data units along the value axis. If not set, defaults to the value axis base value.
+| `clip` | How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. `0` = clip at chartArea. Clipping can also be configured per side: `clip: {left: 5, top: false, right: -2, bottom: 0}`
+| `grouped` | Should the bars be grouped on index axis. When `true`, all the datasets at same index value will be placed next to each other centering on that index value. When `false`, each bar is placed on its actual index-axis value.
+| `indexAxis` | The base axis of the dataset. `'x'` for vertical bars and `'y'` for horizontal bars.
+| `label` | The label for the dataset which appears in the legend and tooltips.
+| `order` | The drawing order of dataset. Also affects order for stacking, tooltip and legend. [more](mixed.md#drawing-order)
+| `skipNull` | If `true`, null or undefined values will not be used for spacing calculations when determining bar size.
+| `stack` | The ID of the group to which this dataset belongs to (when stacked, each group will be a separate stack). [more](#stacked-bar-chart)
+| `xAxisID` | The ID of the x-axis to plot this dataset on.
+| `yAxisID` | The ID of the y-axis to plot this dataset on.
+
+### Styling
+
+The style of each bar can be controlled with the following properties:
+
+| Name | Description
+| ---- | ----
+| `backgroundColor` | The bar background color.
+| `borderColor` | The bar border color.
+| [`borderSkipped`](#borderskipped) | The edge to skip when drawing bar.
+| [`borderWidth`](#borderwidth) | The bar border width (in pixels).
+| [`borderRadius`](#borderradius) | The bar border radius (in pixels).
+| `minBarLength` | Set this to ensure that bars have a minimum length in pixels.
+| `pointStyle` | Style of the point for legend. [more...](../configuration/elements.md#point-styles)
+
+All these values, if `undefined`, fallback to the associated [`elements.bar.*`](../configuration/elements.md#bar-configuration) options.
+
+#### borderSkipped
+
+This setting is used to avoid drawing the bar stroke at the base of the fill, or disable the border radius.
+In general, this does not need to be changed except when creating chart types
+that derive from a bar chart.
+
+:::tip Note
+For negative bars in a vertical chart, `top` and `bottom` are flipped. Same goes for `left` and `right` in a horizontal chart.
+:::
+
+Options are:
+
+* `'start'`
+* `'end'`
+* `'middle'` (only valid on stacked bars: the borders between bars are skipped)
+* `'bottom'`
+* `'left'`
+* `'top'`
+* `'right'`
+* `false` (don't skip any borders)
+* `true` (skip all borders)
+
+#### borderWidth
+
+If this value is a number, it is applied to all sides of the rectangle (left, top, right, bottom), except [`borderSkipped`](#borderskipped). If this value is an object, the `left` property defines the left border width. Similarly, the `right`, `top`, and `bottom` properties can also be specified. Omitted borders and [`borderSkipped`](#borderskipped) are skipped.
+
+#### borderRadius
+
+If this value is a number, it is applied to all corners of the rectangle (topLeft, topRight, bottomLeft, bottomRight), except corners touching the [`borderSkipped`](#borderskipped). If this value is an object, the `topLeft` property defines the top-left corners border radius. Similarly, the `topRight`, `bottomLeft`, and `bottomRight` properties can also be specified. Omitted corners and those touching the [`borderSkipped`](#borderskipped) are skipped. For example if the `top` border is skipped, the border radius for the corners `topLeft` and `topRight` will be skipped as well.
+
+:::tip Stacked Charts
+When the border radius is supplied as a number and the chart is stacked, the radius will only be applied to the bars that are at the edges of the stack or where the bar is floating. The object syntax can be used to override this behavior.
+:::
+
+#### inflateAmount
+
+This option can be used to inflate the rects that are used to draw the bars. This can be used to hide artifacts between bars when [`barPercentage`](#barpercentage) * [`categoryPercentage`](#categorypercentage) is 1. The default value `'auto'` should work in most cases.
+
+### Interactions
+
+The interaction with each bar can be controlled with the following properties:
+
+| Name | Description
+| ---- | -----------
+| `hoverBackgroundColor` | The bar background color when hovered.
+| `hoverBorderColor` | The bar border color when hovered.
+| `hoverBorderWidth` | The bar border width when hovered (in pixels).
+| `hoverBorderRadius` | The bar border radius when hovered (in pixels).
+
+All these values, if `undefined`, fallback to the associated [`elements.bar.*`](../configuration/elements.md#bar-configuration) options.
+
+### barPercentage
+
+Percent (0-1) of the available width each bar should be within the category width. 1.0 will take the whole category width and put the bars right next to each other. [more...](#barpercentage-vs-categorypercentage)
+
+### categoryPercentage
+
+Percent (0-1) of the available width each category should be within the sample width. [more...](#barpercentage-vs-categorypercentage)
+
+### barThickness
+
+If this value is a number, it is applied to the width of each bar, in pixels. When this is enforced, `barPercentage` and `categoryPercentage` are ignored.
+
+If set to `'flex'`, the base sample widths are calculated automatically based on the previous and following samples so that they take the full available widths without overlap. Then, bars are sized using `barPercentage` and `categoryPercentage`. There is no gap when the percentage options are 1. This mode generates bars with different widths when data are not evenly spaced.
+
+If not set (default), the base sample widths are calculated using the smallest interval that prevents bar overlapping, and bars are sized using `barPercentage` and `categoryPercentage`. This mode always generates bars equally sized.
+
+### maxBarThickness
+
+Set this to ensure that bars are not sized thicker than this.
+
+## Scale Configuration
+
+The bar chart sets unique default values for the following configuration from the associated `scale` options:
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `offset` | `boolean` | `true` | If true, extra space is added to both edges and the axis is scaled to fit into the chart area.
+| `grid.offset` | `boolean` | `true` | If true, the bars for a particular data point fall between the grid lines. The grid line will move to the left by one half of the tick interval. If false, the grid line will go right down the middle of the bars. [more...](#offsetgridlines)
+
+### Example scale configuration
+
+```javascript
+options = {
+    scales: {
+        x: {
+            grid: {
+              offset: true
+            }
+        }
+    }
+};
+```
+
+### Offset Grid Lines
+
+If true, the bars for a particular data point fall between the grid lines. The grid line will move to the left by one half of the tick interval, which is the space between the grid lines. If false, the grid line will go right down the middle of the bars. This is set to true for a category scale in a bar chart while false for other scales or chart types by default.
+
+## Default Options
+
+It is common to want to apply a configuration setting to all created bar charts. The global bar chart settings are stored in `Chart.overrides.bar`. Changing the global options only affects charts created after the change. Existing charts are not changed.
+
+## barPercentage vs categoryPercentage
+
+The following shows the relationship between the bar percentage option and the category percentage option.
+
+```
+// categoryPercentage: 1.0
+// barPercentage: 1.0
+Bar:        | 1.0 | 1.0 |
+Category:   |    1.0    |
+Sample:     |===========|
+
+// categoryPercentage: 1.0
+// barPercentage: 0.5
+Bar:          |.5|  |.5|
+Category:  |      1.0     |
+Sample:    |==============|
+
+// categoryPercentage: 0.5
+// barPercentage: 1.0
+Bar:             |1.0||1.0|
+Category:        |   .5   |
+Sample:     |==================|
+```
+
+## Data Structure
+
+All the supported [data structures](../general/data-structures.md) can be used with bar charts.
+
+## Stacked Bar Chart
+
+Bar charts can be configured into stacked bar charts by changing the settings on the X and Y axes to enable stacking. Stacked bar charts can be used to show how one data series is made up of a number of smaller pieces.
+
+```javascript
+const stackedBar = new Chart(ctx, {
+    type: 'bar',
+    data: data,
+    options: {
+        scales: {
+            x: {
+                stacked: true
+            },
+            y: {
+                stacked: true
+            }
+        }
+    }
+});
+```
+
+## Horizontal Bar Chart
+
+A horizontal bar chart is a variation on a vertical bar chart. It is sometimes used to show trend data, and the comparison of multiple data sets side by side.
+To achieve this, you will have to set the `indexAxis` property in the options object to `'y'`.
+The default for this property is `'x'` and thus will show vertical bars.
+
+```js chart-editor
+// <block:setup:1>
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [{
+    axis: 'y',
+    label: 'My First Dataset',
+    data: [65, 59, 80, 81, 56, 55, 40],
+    fill: false,
+    backgroundColor: [
+      'rgba(255, 99, 132, 0.2)',
+      'rgba(255, 159, 64, 0.2)',
+      'rgba(255, 205, 86, 0.2)',
+      'rgba(75, 192, 192, 0.2)',
+      'rgba(54, 162, 235, 0.2)',
+      'rgba(153, 102, 255, 0.2)',
+      'rgba(201, 203, 207, 0.2)'
+    ],
+    borderColor: [
+      'rgb(255, 99, 132)',
+      'rgb(255, 159, 64)',
+      'rgb(255, 205, 86)',
+      'rgb(75, 192, 192)',
+      'rgb(54, 162, 235)',
+      'rgb(153, 102, 255)',
+      'rgb(201, 203, 207)'
+    ],
+    borderWidth: 1
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'bar',
+  data,
+  options: {
+    indexAxis: 'y',
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+### Horizontal Bar Chart config Options
+
+The configuration options for the horizontal bar chart are the same as for the [bar chart](#scale-configuration). However, any options specified on the x-axis in a bar chart, are applied to the y-axis in a horizontal bar chart.
+
+## Internal data format
+
+`{x, y, _custom}` where `_custom` is an optional object defining stacked bar properties: `{start, end, barStart, barEnd, min, max}`. `start` and `end` are the input values. Those two are repeated in `barStart` (closer to origin), `barEnd` (further from origin), `min` and `max`.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/charts/bubble.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/charts/bubble.md
@@ -0,0 +1,133 @@
+# Bubble Chart
+
+A bubble chart is used to display three dimensions of data at the same time. The location of the bubble is determined by the first two dimensions and the corresponding horizontal and vertical axes. The third dimension is represented by the size of the individual bubbles.
+
+```js chart-editor
+// <block:setup:1>
+const data = {
+  datasets: [{
+    label: 'First Dataset',
+    data: [{
+      x: 20,
+      y: 30,
+      r: 15
+    }, {
+      x: 40,
+      y: 10,
+      r: 10
+    }],
+    backgroundColor: 'rgb(255, 99, 132)'
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'bubble',
+  data: data,
+  options: {}
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+## Dataset Properties
+
+Namespaces:
+
+* `data.datasets[index]` - options for this dataset only
+* `options.datasets.bubble` - options for all bubble datasets
+* `options.elements.point` - options for all [point elements](../configuration/elements.md#point-configuration)
+* `options` - options for the whole chart
+
+The bubble chart allows a number of properties to be specified for each dataset. These are used to set display properties for a specific dataset. For example, the colour of the bubbles is generally set this way.
+
+| Name | Type | [Scriptable](../general/options.md#scriptable-options) | [Indexable](../general/options.md#indexable-options) | Default
+| ---- | ---- | :----: | :----: | ----
+| [`backgroundColor`](#styling) | [`Color`](../general/colors.md) | Yes | Yes | `'rgba(0, 0, 0, 0.1)'`
+| [`borderColor`](#styling) | [`Color`](../general/colors.md) | Yes | Yes | `'rgba(0, 0, 0, 0.1)'`
+| [`borderWidth`](#styling) | `number` | Yes | Yes | `3`
+| [`clip`](#general) | `number`\|`object`\|`false` | - | - | `undefined`
+| [`data`](#data-structure) | `object[]` | - | - | **required**
+| [`drawActiveElementsOnTop`](#general) | `boolean` | Yes | Yes | `true`
+| [`hoverBackgroundColor`](#interactions) | [`Color`](../general/colors.md) | Yes | Yes | `undefined`
+| [`hoverBorderColor`](#interactions) | [`Color`](../general/colors.md) | Yes | Yes | `undefined`
+| [`hoverBorderWidth`](#interactions) | `number` | Yes | Yes | `1`
+| [`hoverRadius`](#interactions) | `number` | Yes | Yes | `4`
+| [`hitRadius`](#interactions) | `number` | Yes | Yes | `1`
+| [`label`](#general) | `string` | - | - | `undefined`
+| [`order`](#general) | `number` | - | - | `0`
+| [`pointStyle`](#styling) | [`pointStyle`](../configuration/elements.md#types) | Yes | Yes | `'circle'`
+| [`rotation`](#styling) | `number` | Yes | Yes | `0`
+| [`radius`](#styling) | `number` | Yes | Yes | `3`
+
+All these values, if `undefined`, fallback to the scopes described in [option resolution](../general/options)
+
+### General
+
+| Name | Description
+| ---- | ----
+| `clip` | How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. `0` = clip at chartArea. Clipping can also be configured per side: `clip: {left: 5, top: false, right: -2, bottom: 0}`
+| `drawActiveElementsOnTop` | Draw the active bubbles of a dataset over the other bubbles of the dataset
+| `label` | The label for the dataset which appears in the legend and tooltips.
+| `order` | The drawing order of dataset. Also affects order for tooltip and legend. [more](mixed.md#drawing-order)
+
+### Styling
+
+The style of each bubble can be controlled with the following properties:
+
+| Name | Description
+| ---- | ----
+| `backgroundColor` | bubble background color.
+| `borderColor` | bubble border color.
+| `borderWidth` | bubble border width (in pixels).
+| `pointStyle` | bubble [shape style](../configuration/elements.md#point-styles).
+| `rotation` | bubble rotation (in degrees).
+| `radius` | bubble radius (in pixels).
+
+All these values, if `undefined`, fallback to the associated [`elements.point.*`](../configuration/elements.md#point-configuration) options.
+
+### Interactions
+
+The interaction with each bubble can be controlled with the following properties:
+
+| Name | Description
+| ---- | -----------
+| `hitRadius` | bubble **additional** radius for hit detection (in pixels).
+| `hoverBackgroundColor` | bubble background color when hovered.
+| `hoverBorderColor` | bubble border color when hovered.
+| `hoverBorderWidth` | bubble border width when hovered (in pixels).
+| `hoverRadius` | bubble **additional** radius when hovered (in pixels).
+
+All these values, if `undefined`, fallback to the associated [`elements.point.*`](../configuration/elements.md#point-configuration) options.
+
+## Default Options
+
+We can also change the default values for the Bubble chart type. Doing so will give all bubble charts created after this point the new defaults. The default configuration for the bubble chart can be accessed at `Chart.overrides.bubble`.
+
+## Data Structure
+
+Bubble chart datasets need to contain a `data` array of points, each point represented by an object containing the following properties:
+
+```javascript
+{
+    // X Value
+    x: number,
+
+    // Y Value
+    y: number,
+
+    // Bubble radius in pixels (not scaled).
+    r: number
+}
+```
+
+**Important:** the radius property, `r` is **not** scaled by the chart, it is the raw radius in pixels of the bubble that is drawn on the canvas.
+
+## Internal data format
+
+`{x, y, _custom}` where `_custom` is the radius.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/charts/doughnut.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/charts/doughnut.md
@@ -0,0 +1,221 @@
+# Doughnut and Pie Charts
+
+Pie and doughnut charts are probably the most commonly used charts. They are divided into segments, the arc of each segment shows the proportional value of each piece of data.
+
+They are excellent at showing the relational proportions between data.
+
+Pie and doughnut charts are effectively the same class in Chart.js, but have one different default value - their `cutout`. This equates to what portion of the inner should be cut out. This defaults to `0` for pie charts, and `'50%'` for doughnuts.
+
+They are also registered under two aliases in the `Chart` core. Other than their different default value, and different alias, they are exactly the same.
+
+:::: tabs
+
+::: tab Doughnut
+
+```js chart-editor
+// <block:setup:1>
+const data = {
+  labels: [
+    'Red',
+    'Blue',
+    'Yellow'
+  ],
+  datasets: [{
+    label: 'My First Dataset',
+    data: [300, 50, 100],
+    backgroundColor: [
+      'rgb(255, 99, 132)',
+      'rgb(54, 162, 235)',
+      'rgb(255, 205, 86)'
+    ],
+    hoverOffset: 4
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'doughnut',
+  data: data,
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+:::
+
+:::tab Pie
+
+```js chart-editor
+// <block:setup:1>
+const data = {
+  labels: [
+    'Red',
+    'Blue',
+    'Yellow'
+  ],
+  datasets: [{
+    label: 'My First Dataset',
+    data: [300, 50, 100],
+    backgroundColor: [
+      'rgb(255, 99, 132)',
+      'rgb(54, 162, 235)',
+      'rgb(255, 205, 86)'
+    ],
+    hoverOffset: 4
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'pie',
+  data: data,
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+:::
+
+::::
+
+## Dataset Properties
+
+Namespaces:
+
+* `data.datasets[index]` - options for this dataset only
+* `options.datasets.doughnut` - options for all doughnut datasets
+* `options.datasets.pie` - options for all pie datasets
+* `options.elements.arc` - options for all [arc elements](../configuration/elements.md#arc-configuration)
+* `options` - options for the whole chart
+
+The doughnut/pie chart allows a number of properties to be specified for each dataset. These are used to set display properties for a specific dataset. For example, the colours of the dataset's arcs are generally set this way.
+
+| Name | Type | [Scriptable](../general/options.md#scriptable-options) | [Indexable](../general/options.md#indexable-options) | Default
+| ---- | ---- | :----: | :----: | ----
+| [`backgroundColor`](#styling) | [`Color`](../general/colors.md) | Yes | Yes | `'rgba(0, 0, 0, 0.1)'`
+| [`borderAlign`](#border-alignment) | `'center'`\|`'inner'` | Yes | Yes | `'center'`
+| [`borderColor`](#styling) | [`Color`](../general/colors.md) | Yes | Yes | `'#fff'`
+| [`borderDash`](#styling) | `number[]` | Yes | - | `[]`
+| [`borderDashOffset`](#styling) | `number` | Yes | - | `0.0`
+| [`borderJoinStyle`](#styling) | `'round'`\|`'bevel'`\|`'miter'` | Yes | Yes | `undefined`
+| [`borderRadius`](#border-radius) | `number`\|`object` | Yes | Yes | `0`
+| [`borderWidth`](#styling) | `number` | Yes | Yes | `2`
+| [`circumference`](#general) | `number` | - | - | `undefined`
+| [`clip`](#general) | `number`\|`object`\|`false` | - | - | `undefined`
+| [`data`](#data-structure) | `number[]` | - | - | **required**
+| [`hoverBackgroundColor`](#interactions) | [`Color`](../general/colors.md) | Yes | Yes | `undefined`
+| [`hoverBorderColor`](#interactions) | [`Color`](../general/colors.md) | Yes | Yes | `undefined`
+| [`hoverBorderDash`](#interactions) | `number[]` | Yes | - | `undefined`
+| [`hoverBorderDashOffset`](#interactions) | `number` | Yes | - | `undefined`
+| [`hoverBorderJoinStyle`](#interactions) | `'round'`\|`'bevel'`\|`'miter'` | Yes | Yes | `undefined`
+| [`hoverBorderWidth`](#interactions) | `number` | Yes | Yes | `undefined`
+| [`hoverOffset`](#interactions) | `number` | Yes | Yes | `0`
+| [`offset`](#styling) | `number`\|`number[]` | Yes | Yes | `0`
+| [`rotation`](#general) | `number` | - | - | `undefined`
+| [`spacing`](#styling) | `number` | - | - | `0`
+| [`weight`](#styling) | `number` | - | - | `1`
+
+All these values, if `undefined`, fallback to the scopes described in [option resolution](../general/options)
+
+### General
+
+| Name | Description
+| ---- | ----
+| `circumference` | Per-dataset override for the sweep that the arcs cover
+| `clip` | How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. `0` = clip at chartArea. Clipping can also be configured per side: `clip: {left: 5, top: false, right: -2, bottom: 0}`
+| `rotation` | Per-dataset override for the starting angle to draw arcs from
+
+### Styling
+
+The style of each arc can be controlled with the following properties:
+
+| Name | Description
+| ---- | ----
+| `backgroundColor` | arc background color.
+| `borderColor` | arc border color.
+| `borderDash` | arc border length and spacing of dashes. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash).
+| `borderDashOffset` | arc border offset for line dashes. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset).
+| `borderJoinStyle` | arc border join style. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin).
+| `borderWidth` | arc border width (in pixels).
+| `offset` | arc offset (in pixels).
+| `spacing` | Fixed arc offset (in pixels). Similar to `offset` but applies to all arcs.
+| `weight` | The relative thickness of the dataset. Providing a value for weight will cause the pie or doughnut dataset to be drawn with a thickness relative to the sum of all the dataset weight values.
+
+All these values, if `undefined`, fallback to the associated [`elements.arc.*`](../configuration/elements.md#arc-configuration) options.
+
+### Border Alignment
+
+The following values are supported for `borderAlign`.
+
+* `'center'` (default)
+* `'inner'`
+
+When `'center'` is set, the borders of arcs next to each other will overlap. When `'inner'` is set, it is guaranteed that all borders will not overlap.
+
+### Border Radius
+
+If this value is a number, it is applied to all corners of the arc (outerStart, outerEnd, innerStart, innerRight). If this value is an object, the `outerStart` property defines the outer-start corner's border radius. Similarly, the `outerEnd`, `innerStart`, and `innerEnd` properties can also be specified.
+
+### Interactions
+
+The interaction with each arc can be controlled with the following properties:
+
+| Name | Description
+| ---- | -----------
+| `hoverBackgroundColor` | arc background color when hovered.
+| `hoverBorderColor` | arc border color when hovered.
+| `hoverBorderDash` | arc border length and spacing of dashes when hovered. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash).
+| `hoverBorderDashOffset` | arc border offset for line dashes when hovered. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset).
+| `hoverBorderJoinStyle` | arc border join style when hovered. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin).
+| `hoverBorderWidth` | arc border width when hovered (in pixels).
+| `hoverOffset` | arc offset when hovered (in pixels).
+
+All these values, if `undefined`, fallback to the associated [`elements.arc.*`](../configuration/elements.md#arc-configuration) options.
+
+## Config Options
+
+These are the customisation options specific to Pie & Doughnut charts. These options are looked up on access, and form together with the global chart configuration the options of the chart.
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `cutout` | `number`\|`string` | `50%` - for doughnut, `0` - for pie | The portion of the chart that is cut out of the middle. If `string` and ending with '%', percentage of the chart radius. `number` is considered to be pixels.
+| `radius` | `number`\|`string` | `100%` | The outer radius of the chart. If `string` and ending with '%', percentage of the maximum radius. `number` is considered to be pixels.
+| `rotation` | `number` | 0 | Starting angle to draw arcs from.
+| `circumference` | `number` | 360 | Sweep to allow arcs to cover.
+| `animation.animateRotate` | `boolean` | `true` | If true, the chart will animate in with a rotation animation. This property is in the `options.animation` object.
+| `animation.animateScale` | `boolean` | `false` | If true, will animate scaling the chart from the center outwards.
+
+## Default Options
+
+We can also change these default values for each Doughnut type that is created, this object is available at `Chart.overrides.doughnut`. Pie charts also have a clone of these defaults available to change at `Chart.overrides.pie`, with the only difference being `cutout` being set to 0.
+
+## Data Structure
+
+For a pie chart, datasets need to contain an array of data points. The data points should be a number, Chart.js will total all the numbers and calculate the relative proportion of each.
+
+You also need to specify an array of labels so that tooltips appear correctly.
+
+```javascript
+data = {
+    datasets: [{
+        data: [10, 20, 30]
+    }],
+
+    // These labels appear in the legend and in the tooltips when hovering different arcs
+    labels: [
+        'Red',
+        'Yellow',
+        'Blue'
+    ]
+};
+```
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/charts/line.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/charts/line.md
@@ -0,0 +1,293 @@
+# Line Chart
+
+A line chart is a way of plotting data points on a line. Often, it is used to show trend data, or the comparison of two data sets.
+
+```js chart-editor
+// <block:setup:1>
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [{
+    label: 'My First Dataset',
+    data: [65, 59, 80, 81, 56, 55, 40],
+    fill: false,
+    borderColor: 'rgb(75, 192, 192)',
+    tension: 0.1
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data: data,
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+## Dataset Properties
+
+Namespaces:
+
+* `data.datasets[index]` - options for this dataset only
+* `options.datasets.line` - options for all line datasets
+* `options.elements.line` - options for all [line elements](../configuration/elements.md#line-configuration)
+* `options.elements.point` - options for all [point elements](../configuration/elements.md#point-configuration)
+* `options` - options for the whole chart
+
+The line chart allows a number of properties to be specified for each dataset. These are used to set display properties for a specific dataset. For example, the colour of a line is generally set this way.
+
+| Name | Type | [Scriptable](../general/options.md#scriptable-options) | [Indexable](../general/options.md#indexable-options) | Default
+| ---- | ---- | :----: | :----: | ----
+| [`backgroundColor`](#line-styling) | [`Color`](../general/colors.md) | Yes | - | `'rgba(0, 0, 0, 0.1)'`
+| [`borderCapStyle`](#line-styling) | `string` | Yes | - | `'butt'`
+| [`borderColor`](#line-styling) | [`Color`](../general/colors.md) | Yes | - | `'rgba(0, 0, 0, 0.1)'`
+| [`borderDash`](#line-styling) | `number[]` | Yes | - | `[]`
+| [`borderDashOffset`](#line-styling) | `number` | Yes | - | `0.0`
+| [`borderJoinStyle`](#line-styling) | `'round'`\|`'bevel'`\|`'miter'` | Yes | - | `'miter'`
+| [`borderWidth`](#line-styling) | `number` | Yes | - | `3`
+| [`clip`](#general) | `number`\|`object`\|`false` | - | - | `undefined`
+| [`cubicInterpolationMode`](#cubicinterpolationmode) | `string` | Yes | - | `'default'`
+| [`data`](#data-structure) | `object`\|`object[]`\| `number[]`\|`string[]` | - | - | **required**
+| [`drawActiveElementsOnTop`](#general) | `boolean` | Yes | Yes | `true`
+| [`fill`](#line-styling) | `boolean`\|`string` | Yes | - | `false`
+| [`hoverBackgroundColor`](#line-styling) | [`Color`](../general/colors.md) | Yes | - | `undefined`
+| [`hoverBorderCapStyle`](#line-styling) | `string` | Yes | - | `undefined`
+| [`hoverBorderColor`](#line-styling) | [`Color`](../general/colors.md) | Yes | - | `undefined`
+| [`hoverBorderDash`](#line-styling) | `number[]` | Yes | - | `undefined`
+| [`hoverBorderDashOffset`](#line-styling) | `number` | Yes | - | `undefined`
+| [`hoverBorderJoinStyle`](#line-styling) | `'round'`\|`'bevel'`\|`'miter'` | Yes | - | `undefined`
+| [`hoverBorderWidth`](#line-styling) | `number` | Yes | - | `undefined`
+| [`indexAxis`](#general) | `string` | - | - | `'x'`
+| [`label`](#general) | `string` | - | - | `''`
+| [`order`](#general) | `number` | - | - | `0`
+| [`pointBackgroundColor`](#point-styling) | `Color` | Yes | Yes | `'rgba(0, 0, 0, 0.1)'`
+| [`pointBorderColor`](#point-styling) | `Color` | Yes | Yes | `'rgba(0, 0, 0, 0.1)'`
+| [`pointBorderWidth`](#point-styling) | `number` | Yes | Yes | `1`
+| [`pointHitRadius`](#point-styling) | `number` | Yes | Yes | `1`
+| [`pointHoverBackgroundColor`](#interactions) | `Color` | Yes | Yes | `undefined`
+| [`pointHoverBorderColor`](#interactions) | `Color` | Yes | Yes | `undefined`
+| [`pointHoverBorderWidth`](#interactions) | `number` | Yes | Yes | `1`
+| [`pointHoverRadius`](#interactions) | `number` | Yes | Yes | `4`
+| [`pointRadius`](#point-styling) | `number` | Yes | Yes | `3`
+| [`pointRotation`](#point-styling) | `number` | Yes | Yes | `0`
+| [`pointStyle`](#point-styling) | [`pointStyle`](../configuration/elements.md#types) | Yes | Yes | `'circle'`
+| [`segment`](#segment) | `object` | - | - | `undefined`
+| [`showLine`](#line-styling) | `boolean` | - | - | `true`
+| [`spanGaps`](#line-styling) | `boolean`\|`number` | - | - | `undefined`
+| [`stack`](#general) | `string` | - | - | `'line'` |
+| [`stepped`](#stepped) | `boolean`\|`string` | - | - | `false`
+| [`tension`](#line-styling) | `number` | - | - | `0`
+| [`xAxisID`](#general) | `string` | - | - | first x axis
+| [`yAxisID`](#general) | `string` | - | - | first y axis
+
+All these values, if `undefined`, fallback to the scopes described in [option resolution](../general/options)
+
+### General
+
+| Name | Description
+| ---- | ----
+| `clip` | How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. `0` = clip at chartArea. Clipping can also be configured per side: `clip: {left: 5, top: false, right: -2, bottom: 0}`
+| `drawActiveElementsOnTop` | Draw the active points of a dataset over the other points of the dataset
+| `indexAxis` | The base axis of the dataset. `'x'` for horizontal lines and `'y'` for vertical lines.
+| `label` | The label for the dataset which appears in the legend and tooltips.
+| `order` | The drawing order of dataset. Also affects order for stacking, tooltip and legend. [more](mixed.md#drawing-order)
+| `stack` | The ID of the group to which this dataset belongs to (when stacked, each group will be a separate stack). [more](#stacked-area-chart)
+| `xAxisID` | The ID of the x-axis to plot this dataset on.
+| `yAxisID` | The ID of the y-axis to plot this dataset on.
+
+### Point Styling
+
+The style of each point can be controlled with the following properties:
+
+| Name | Description
+| ---- | ----
+| `pointBackgroundColor` | The fill color for points.
+| `pointBorderColor` | The border color for points.
+| `pointBorderWidth` | The width of the point border in pixels.
+| `pointHitRadius` | The pixel size of the non-displayed point that reacts to mouse events.
+| `pointRadius` | The radius of the point shape. If set to 0, the point is not rendered.
+| `pointRotation` | The rotation of the point in degrees.
+| `pointStyle` | Style of the point. [more...](../configuration/elements.md#point-styles)
+
+All these values, if `undefined`, fallback first to the dataset options then to the associated [`elements.point.*`](../configuration/elements.md#point-configuration) options.
+
+### Line Styling
+
+The style of the line can be controlled with the following properties:
+
+| Name | Description
+| ---- | ----
+| `backgroundColor` | The line fill color.
+| `borderCapStyle` | Cap style of the line. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineCap).
+| `borderColor` | The line color.
+| `borderDash` | Length and spacing of dashes. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash).
+| `borderDashOffset` | Offset for line dashes. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset).
+| `borderJoinStyle` | Line joint style. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin).
+| `borderWidth` | The line width (in pixels).
+| `fill` | How to fill the area under the line. See [area charts](area.md).
+| `tension` | Bezier curve tension of the line. Set to 0 to draw straightlines. This option is ignored if monotone cubic interpolation is used.
+| `showLine` | If false, the line is not drawn for this dataset.
+| `spanGaps` | If true, lines will be drawn between points with no or null data. If false, points with `null` data will create a break in the line. Can also be a number specifying the maximum gap length to span. The unit of the value depends on the scale used.
+
+If the value is `undefined`, the values fallback to the associated [`elements.line.*`](../configuration/elements.md#line-configuration) options.
+
+### Interactions
+
+The interaction with each point can be controlled with the following properties:
+
+| Name | Description
+| ---- | -----------
+| `pointHoverBackgroundColor` | Point background color when hovered.
+| `pointHoverBorderColor` | Point border color when hovered.
+| `pointHoverBorderWidth` | Border width of point when hovered.
+| `pointHoverRadius` | The radius of the point when hovered.
+
+### cubicInterpolationMode
+
+The following interpolation modes are supported.
+
+* `'default'`
+* `'monotone'`
+
+The `'default'` algorithm uses a custom weighted cubic interpolation, which produces pleasant curves for all types of datasets.
+
+The `'monotone'` algorithm is more suited to `y = f(x)` datasets: it preserves monotonicity (or piecewise monotonicity) of the dataset being interpolated, and ensures local extremums (if any) stay at input data points.
+
+If left untouched (`undefined`), the global `options.elements.line.cubicInterpolationMode` property is used.
+
+### Segment
+
+Line segment styles can be overridden by scriptable options in the `segment` object. Currently, all of the `border*` and `backgroundColor` options are supported. The segment styles are resolved for each section of the line between each point. `undefined` fallbacks to main line styles.
+
+:::tip
+To be able to style gaps, you need the [`spanGaps`](#line-styling) option enabled.
+:::
+
+Context for the scriptable segment contains the following properties:
+
+* `type`: `'segment'`
+* `p0`: first point element
+* `p1`: second point element
+* `p0DataIndex`: index of first point in the data array
+* `p1DataIndex`: index of second point in the data array
+* `datasetIndex`: dataset index
+
+[Example usage](../samples/line/segments.md)
+
+### Stepped
+
+The following values are supported for `stepped`.
+
+* `false`: No Step Interpolation (default)
+* `true`: Step-before Interpolation (eq. `'before'`)
+* `'before'`: Step-before Interpolation
+* `'after'`: Step-after Interpolation
+* `'middle'`: Step-middle Interpolation
+
+If the `stepped` value is set to anything other than false, `tension` will be ignored.
+
+## Default Options
+
+It is common to want to apply a configuration setting to all created line charts. The global line chart settings are stored in `Chart.overrides.line`. Changing the global options only affects charts created after the change. Existing charts are not changed.
+
+For example, to configure all line charts with `spanGaps = true` you would do:
+
+```javascript
+Chart.overrides.line.spanGaps = true;
+```
+
+## Data Structure
+
+All the supported [data structures](../general/data-structures.md) can be used with line charts.
+
+## Stacked Area Chart
+
+Line charts can be configured into stacked area charts by changing the settings on the y-axis to enable stacking. Stacked area charts can be used to show how one data trend is made up of a number of smaller pieces.
+
+```javascript
+const stackedLine = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        scales: {
+            y: {
+                stacked: true
+            }
+        }
+    }
+});
+```
+
+## Vertical Line Chart
+
+A vertical line chart is a variation on the horizontal line chart.
+To achieve this, you will have to set the `indexAxis` property in the options object to `'y'`.
+The default for this property is `'x'` and thus will show horizontal lines.
+
+```js chart-editor
+// <block:setup:1>
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [{
+    axis: 'y',
+    label: 'My First Dataset',
+    data: [65, 59, 80, 81, 56, 55, 40],
+    fill: false,
+    backgroundColor: [
+      'rgba(255, 99, 132, 0.2)',
+      'rgba(255, 159, 64, 0.2)',
+      'rgba(255, 205, 86, 0.2)',
+      'rgba(75, 192, 192, 0.2)',
+      'rgba(54, 162, 235, 0.2)',
+      'rgba(153, 102, 255, 0.2)',
+      'rgba(201, 203, 207, 0.2)'
+    ],
+    borderColor: [
+      'rgb(255, 99, 132)',
+      'rgb(255, 159, 64)',
+      'rgb(255, 205, 86)',
+      'rgb(75, 192, 192)',
+      'rgb(54, 162, 235)',
+      'rgb(153, 102, 255)',
+      'rgb(201, 203, 207)'
+    ],
+    borderWidth: 1
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    indexAxis: 'y',
+    scales: {
+      x: {
+        beginAtZero: true
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+### Config Options
+
+The configuration options for the vertical line chart are the same as for the [line chart](#configuration-options). However, any options specified on the x-axis in a line chart, are applied to the y-axis in a vertical line chart.
+
+## Internal data format
+
+`{x, y}`
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/charts/mixed.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/charts/mixed.md
@@ -0,0 +1,98 @@
+# Mixed Chart Types
+
+With Chart.js, it is possible to create mixed charts that are a combination of two or more different chart types. A common example is a bar chart that also includes a line dataset.
+
+When creating a mixed chart, we specify the chart type on each dataset.
+
+```javascript
+const mixedChart = new Chart(ctx, {
+    data: {
+        datasets: [{
+            type: 'bar',
+            label: 'Bar Dataset',
+            data: [10, 20, 30, 40]
+        }, {
+            type: 'line',
+            label: 'Line Dataset',
+            data: [50, 50, 50, 50],
+        }],
+        labels: ['January', 'February', 'March', 'April']
+    },
+    options: options
+});
+```
+
+At this point, we have a chart rendering how we'd like. It's important to note that the default options for the charts are only considered at the dataset level and are not merged at the chart level in this case.
+
+```js chart-editor
+// <block:setup:1>
+const data = {
+  labels: [
+    'January',
+    'February',
+    'March',
+    'April'
+  ],
+  datasets: [{
+    type: 'bar',
+    label: 'Bar Dataset',
+    data: [10, 20, 30, 40],
+    borderColor: 'rgb(255, 99, 132)',
+    backgroundColor: 'rgba(255, 99, 132, 0.2)'
+  }, {
+    type: 'line',
+    label: 'Line Dataset',
+    data: [50, 50, 50, 50],
+    fill: false,
+    borderColor: 'rgb(54, 162, 235)'
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'scatter',
+  data: data,
+  options: {
+    scales: {
+      y: {
+        beginAtZero: true
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+## Drawing order
+
+ By default, datasets are drawn such that the first one is top-most. This can be altered by specifying `order` option to datasets. `order` defaults to `0`. Note that this also affects stacking, legend, and tooltip. So it's essentially the same as reordering the datasets.
+
+The `order` property behaves like a weight instead of a specific order, so the higher the number, the sooner that dataset is drawn on the canvas and thus other datasets with a lower order number will get drawn over it.
+
+ ```javascript
+const mixedChart = new Chart(ctx, {
+    type: 'bar',
+    data: {
+        datasets: [{
+            label: 'Bar Dataset',
+            data: [10, 20, 30, 40],
+            // this dataset is drawn below
+            order: 2
+        }, {
+            label: 'Line Dataset',
+            data: [10, 10, 10, 10],
+            type: 'line',
+            // this dataset is drawn on top
+            order: 1
+        }],
+        labels: ['January', 'February', 'March', 'April']
+    },
+    options: options
+});
+```
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/charts/polar.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/charts/polar.md
@@ -0,0 +1,163 @@
+# Polar Area Chart
+
+Polar area charts are similar to pie charts, but each segment has the same angle - the radius of the segment differs depending on the value.
+
+This type of chart is often useful when we want to show a comparison data similar to a pie chart, but also show a scale of values for context.
+
+```js chart-editor
+// <block:setup:1>
+const data = {
+  labels: [
+    'Red',
+    'Green',
+    'Yellow',
+    'Grey',
+    'Blue'
+  ],
+  datasets: [{
+    label: 'My First Dataset',
+    data: [11, 16, 7, 3, 14],
+    backgroundColor: [
+      'rgb(255, 99, 132)',
+      'rgb(75, 192, 192)',
+      'rgb(255, 205, 86)',
+      'rgb(201, 203, 207)',
+      'rgb(54, 162, 235)'
+    ]
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'polarArea',
+  data: data,
+  options: {}
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+## Dataset Properties
+
+Namespaces:
+
+* `data.datasets[index]` - options for this dataset only
+* `options.datasets.polarArea` - options for all polarArea datasets
+* `options.elements.arc` - options for all [arc elements](../configuration/elements.md#arc-configuration)
+* `options` - options for the whole chart
+
+The following options can be included in a polar area chart dataset to configure options for that specific dataset.
+
+| Name | Type | [Scriptable](../general/options.md#scriptable-options) | [Indexable](../general/options.md#indexable-options) | Default
+| ---- | ---- | :----: | :----: | ----
+| [`backgroundColor`](#styling) | [`Color`](../general/colors.md) | Yes | Yes | `'rgba(0, 0, 0, 0.1)'`
+| [`borderAlign`](#border-alignment) | `'center'`\|`'inner'` | Yes | Yes | `'center'`
+| [`borderColor`](#styling) | [`Color`](../general/colors.md) | Yes | Yes | `'#fff'`
+| [`borderDash`](#styling) | `number[]` | Yes | - | `[]`
+| [`borderDashOffset`](#styling) | `number` | Yes | - | `0.0`
+| [`borderJoinStyle`](#styling) | `'round'`\|`'bevel'`\|`'miter'` | Yes | Yes | `undefined`
+| [`borderWidth`](#styling) | `number` | Yes | Yes | `2`
+| [`clip`](#general) | `number`\|`object`\|`false` | - | - | `undefined`
+| [`data`](#data-structure) | `number[]` | - | - | **required**
+| [`hoverBackgroundColor`](#interactions) | [`Color`](../general/colors.md) | Yes | Yes | `undefined`
+| [`hoverBorderColor`](#interactions) | [`Color`](../general/colors.md) | Yes | Yes | `undefined`
+| [`hoverBorderDash`](#interactions) | `number[]` | Yes | - | `undefined`
+| [`hoverBorderDashOffset`](#interactions) | `number` | Yes | - | `undefined`
+| [`hoverBorderJoinStyle`](#interactions) | `'round'`\|`'bevel'`\|`'miter'` | Yes | Yes | `undefined`
+| [`hoverBorderWidth`](#interactions) | `number` | Yes | Yes | `undefined`
+| [`circular`](#styling) | `boolean` | Yes | Yes | `true`
+
+All these values, if `undefined`, fallback to the scopes described in [option resolution](../general/options)
+
+### General
+
+| Name | Description
+| ---- | ----
+| `clip` | How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. `0` = clip at chartArea. Clipping can also be configured per side: `clip: {left: 5, top: false, right: -2, bottom: 0}`
+
+### Styling
+
+The style of each arc can be controlled with the following properties:
+
+| Name | Description
+| ---- | ----
+| `backgroundColor` | arc background color.
+| `borderColor` | arc border color.
+| `borderDash` | arc border length and spacing of dashes. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash).
+| `borderDashOffset` | arc border offset for line dashes. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset).
+| `borderJoinStyle` | arc border join style. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin).
+| `borderWidth` | arc border width (in pixels).
+| `circular` | By default the Arc is curved. If `circular: false` the Arc will be flat.
+
+All these values, if `undefined`, fallback to the associated [`elements.arc.*`](../configuration/elements.md#arc-configuration) options.
+
+### Border Alignment
+
+The following values are supported for `borderAlign`.
+
+* `'center'` (default)
+* `'inner'`
+
+When `'center'` is set, the borders of arcs next to each other will overlap. When `'inner'` is set, it is guaranteed that all the borders do not overlap.
+
+### Interactions
+
+The interaction with each arc can be controlled with the following properties:
+
+| Name | Description
+| ---- | -----------
+| `hoverBackgroundColor` | arc background color when hovered.
+| `hoverBorderColor` | arc border color when hovered.
+| `hoverBorderDash` | arc border length and spacing of dashes when hovered. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash).
+| `hoverBorderDashOffset` | arc border offset for line dashes when hovered. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset).
+| `hoverBorderJoinStyle` | arc border join style when hovered. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin).
+| `hoverBorderWidth` | arc border width when hovered (in pixels).
+
+All these values, if `undefined`, fallback to the associated [`elements.arc.*`](../configuration/elements.md#arc-configuration) options.
+
+## Config Options
+
+These are the customisation options specific to Polar Area charts. These options are looked up on access, and form together with the [global chart default options](#default-options) the options of the chart.
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `animation.animateRotate` | `boolean` | `true` | If true, the chart will animate in with a rotation animation. This property is in the `options.animation` object.
+| `animation.animateScale` | `boolean` | `true` | If true, will animate scaling the chart from the center outwards.
+
+The polar area chart uses the [radialLinear](../axes/radial/linear.md) scale. Additional configuration is provided via the scale.
+
+## Default Options
+
+We can also change these default values for each PolarArea type that is created, this object is available at `Chart.overrides.polarArea`. Changing the global options only affects charts created after the change. Existing charts are not changed.
+
+For example, to configure all new polar area charts with `animateScale = false` you would do:
+
+```javascript
+Chart.overrides.polarArea.animation.animateScale = false;
+```
+
+## Data Structure
+
+For a polar area chart, datasets need to contain an array of data points. The data points should be a number, Chart.js will total all of the numbers and calculate the relative proportion of each.
+
+You also need to specify an array of labels so that tooltips appear correctly for each slice.
+
+```javascript
+data = {
+    datasets: [{
+        data: [10, 20, 30]
+    }],
+
+    // These labels appear in the legend and in the tooltips when hovering different arcs
+    labels: [
+        'Red',
+        'Yellow',
+        'Blue'
+    ]
+};
+```
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/charts/radar.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/charts/radar.md
@@ -0,0 +1,209 @@
+# Radar Chart
+
+A radar chart is a way of showing multiple data points and the variation between them.
+
+They are often useful for comparing the points of two or more different data sets.
+
+```js chart-editor
+// <block:setup:1>
+const data = {
+  labels: [
+    'Eating',
+    'Drinking',
+    'Sleeping',
+    'Designing',
+    'Coding',
+    'Cycling',
+    'Running'
+  ],
+  datasets: [{
+    label: 'My First Dataset',
+    data: [65, 59, 90, 81, 56, 55, 40],
+    fill: true,
+    backgroundColor: 'rgba(255, 99, 132, 0.2)',
+    borderColor: 'rgb(255, 99, 132)',
+    pointBackgroundColor: 'rgb(255, 99, 132)',
+    pointBorderColor: '#fff',
+    pointHoverBackgroundColor: '#fff',
+    pointHoverBorderColor: 'rgb(255, 99, 132)'
+  }, {
+    label: 'My Second Dataset',
+    data: [28, 48, 40, 19, 96, 27, 100],
+    fill: true,
+    backgroundColor: 'rgba(54, 162, 235, 0.2)',
+    borderColor: 'rgb(54, 162, 235)',
+    pointBackgroundColor: 'rgb(54, 162, 235)',
+    pointBorderColor: '#fff',
+    pointHoverBackgroundColor: '#fff',
+    pointHoverBorderColor: 'rgb(54, 162, 235)'
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'radar',
+  data: data,
+  options: {
+    elements: {
+      line: {
+        borderWidth: 3
+      }
+    }
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+## Dataset Properties
+
+Namespaces:
+
+* `data.datasets[index]` - options for this dataset only
+* `options.datasets.line` - options for all line datasets
+* `options.elements.line` - options for all [line elements](../configuration/elements.md#line-configuration)
+* `options.elements.point` - options for all [point elements](../configuration/elements.md#point-configuration)
+* `options` - options for the whole chart
+
+The radar chart allows a number of properties to be specified for each dataset. These are used to set display properties for a specific dataset. For example, the colour of a line is generally set this way.
+
+| Name | Type | [Scriptable](../general/options.md#scriptable-options) | [Indexable](../general/options.md#indexable-options) | Default
+| ---- | ---- | :----: | :----: | ----
+| [`backgroundColor`](#line-styling) | [`Color`](../general/colors.md) | Yes | - | `'rgba(0, 0, 0, 0.1)'`
+| [`borderCapStyle`](#line-styling) | `string` | Yes | - | `'butt'`
+| [`borderColor`](#line-styling) | [`Color`](../general/colors.md) | Yes | - | `'rgba(0, 0, 0, 0.1)'`
+| [`borderDash`](#line-styling) | `number[]` | Yes | - | `[]`
+| [`borderDashOffset`](#line-styling) | `number` | Yes | - | `0.0`
+| [`borderJoinStyle`](#line-styling) | `'round'`\|`'bevel'`\|`'miter'` | Yes | - | `'miter'`
+| [`borderWidth`](#line-styling) | `number` | Yes | - | `3`
+| [`hoverBackgroundColor`](#line-styling) | [`Color`](../general/colors.md) | Yes | - | `undefined`
+| [`hoverBorderCapStyle`](#line-styling) | `string` | Yes | - | `undefined`
+| [`hoverBorderColor`](#line-styling) | [`Color`](../general/colors.md) | Yes | - | `undefined`
+| [`hoverBorderDash`](#line-styling) | `number[]` | Yes | - | `undefined`
+| [`hoverBorderDashOffset`](#line-styling) | `number` | Yes | - | `undefined`
+| [`hoverBorderJoinStyle`](#line-styling) | `'round'`\|`'bevel'`\|`'miter'` | Yes | - | `undefined`
+| [`hoverBorderWidth`](#line-styling) | `number` | Yes | - | `undefined`
+| [`clip`](#general) | `number`\|`object`\|`false` | - | - | `undefined`
+| [`data`](#data-structure) | `number[]` | - | - | **required**
+| [`fill`](#line-styling) | `boolean`\|`string` | Yes | - | `false`
+| [`label`](#general) | `string` | - | - | `''`
+| [`order`](#general) | `number` | - | - | `0`
+| [`tension`](#line-styling) | `number` | - | - | `0`
+| [`pointBackgroundColor`](#point-styling) | `Color` | Yes | Yes | `'rgba(0, 0, 0, 0.1)'`
+| [`pointBorderColor`](#point-styling) | `Color` | Yes | Yes | `'rgba(0, 0, 0, 0.1)'`
+| [`pointBorderWidth`](#point-styling) | `number` | Yes | Yes | `1`
+| [`pointHitRadius`](#point-styling) | `number` | Yes | Yes | `1`
+| [`pointHoverBackgroundColor`](#interactions) | `Color` | Yes | Yes | `undefined`
+| [`pointHoverBorderColor`](#interactions) | `Color` | Yes | Yes | `undefined`
+| [`pointHoverBorderWidth`](#interactions) | `number` | Yes | Yes | `1`
+| [`pointHoverRadius`](#interactions) | `number` | Yes | Yes | `4`
+| [`pointRadius`](#point-styling) | `number` | Yes | Yes | `3`
+| [`pointRotation`](#point-styling) | `number` | Yes | Yes | `0`
+| [`pointStyle`](#point-styling) | [`pointStyle`](../configuration/elements.md#types) | Yes | Yes | `'circle'`
+| [`spanGaps`](#line-styling) | `boolean` | - | - | `undefined`
+
+All these values, if `undefined`, fallback to the scopes described in [option resolution](../general/options)
+
+### General
+
+| Name | Description
+| ---- | ----
+| `clip` | How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. `0` = clip at chartArea. Clipping can also be configured per side: `clip: {left: 5, top: false, right: -2, bottom: 0}`
+| `label` | The label for the dataset which appears in the legend and tooltips.
+| `order` | The drawing order of dataset. Also affects order for tooltip and legend. [more](mixed.md#drawing-order)
+
+### Point Styling
+
+The style of each point can be controlled with the following properties:
+
+| Name | Description
+| ---- | ----
+| `pointBackgroundColor` | The fill color for points.
+| `pointBorderColor` | The border color for points.
+| `pointBorderWidth` | The width of the point border in pixels.
+| `pointHitRadius` | The pixel size of the non-displayed point that reacts to mouse events.
+| `pointRadius` | The radius of the point shape. If set to 0, the point is not rendered.
+| `pointRotation` | The rotation of the point in degrees.
+| `pointStyle` | Style of the point. [more...](../configuration/elements#point-styles)
+
+All these values, if `undefined`, fallback first to the dataset options then to the associated [`elements.point.*`](../configuration/elements.md#point-configuration) options.
+
+### Line Styling
+
+The style of the line can be controlled with the following properties:
+
+| Name | Description
+| ---- | ----
+| `backgroundColor` | The line fill color.
+| `borderCapStyle` | Cap style of the line. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineCap).
+| `borderColor` | The line color.
+| `borderDash` | Length and spacing of dashes. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash).
+| `borderDashOffset` | Offset for line dashes. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset).
+| `borderJoinStyle` | Line joint style. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin).
+| `borderWidth` | The line width (in pixels).
+| `fill` | How to fill the area under the line. See [area charts](area.md).
+| `tension` | Bezier curve tension of the line. Set to 0 to draw straight lines.
+| `spanGaps` | If true, lines will be drawn between points with no or null data. If false, points with `null` data will create a break in the line.
+
+If the value is `undefined`, the values fallback to the associated [`elements.line.*`](../configuration/elements.md#line-configuration) options.
+
+### Interactions
+
+The interaction with each point can be controlled with the following properties:
+
+| Name | Description
+| ---- | -----------
+| `pointHoverBackgroundColor` | Point background color when hovered.
+| `pointHoverBorderColor` | Point border color when hovered.
+| `pointHoverBorderWidth` | Border width of point when hovered.
+| `pointHoverRadius` | The radius of the point when hovered.
+
+## Scale Options
+
+The radar chart supports only a single scale. The options for this scale are defined in the `scales.r` property, which can be referenced from the [Linear Radial Axis page](../axes/radial/linear).
+
+```javascript
+options = {
+    scales: {
+        r: {
+            angleLines: {
+                display: false
+            },
+            suggestedMin: 50,
+            suggestedMax: 100
+        }
+    }
+};
+```
+
+## Default Options
+
+It is common to want to apply a configuration setting to all created radar charts. The global radar chart settings are stored in `Chart.overrides.radar`. Changing the global options only affects charts created after the change. Existing charts are not changed.
+
+## Data Structure
+
+The `data` property of a dataset for a radar chart is specified as an array of numbers. Each point in the data array corresponds to the label at the same index.
+
+```javascript
+data: [20, 10]
+```
+
+For a radar chart, to provide context of what each point means, we include an array of strings that show around each point in the chart.
+
+```javascript
+data: {
+    labels: ['Running', 'Swimming', 'Eating', 'Cycling'],
+    datasets: [{
+        data: [20, 10, 4, 2]
+    }]
+}
+```
+
+## Internal data format
+
+`{x, y}`
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/charts/scatter.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/charts/scatter.md
@@ -0,0 +1,80 @@
+# Scatter Chart
+
+Scatter charts are based on basic line charts with the x-axis changed to a linear axis. To use a scatter chart, data must be passed as objects containing X and Y properties. The example below creates a scatter chart with 4 points.
+
+```js chart-editor
+// <block:setup:1>
+const data = {
+  datasets: [{
+    label: 'Scatter Dataset',
+    data: [{
+      x: -10,
+      y: 0
+    }, {
+      x: 0,
+      y: 10
+    }, {
+      x: 10,
+      y: 5
+    }, {
+      x: 0.5,
+      y: 5.5
+    }],
+    backgroundColor: 'rgb(255, 99, 132)'
+  }],
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'scatter',
+  data: data,
+  options: {
+    scales: {
+      x: {
+        type: 'linear',
+        position: 'bottom'
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+## Dataset Properties
+
+Namespaces:
+
+* `data.datasets[index]` - options for this dataset only
+* `options.datasets.scatter` - options for all scatter datasets
+* `options.elements.line` - options for all [line elements](../configuration/elements.md#line-configuration)
+* `options.elements.point` - options for all [point elements](../configuration/elements.md#point-configuration)
+* `options` - options for the whole chart
+
+The scatter chart supports all the same properties as the [line chart](./line.md#dataset-properties).
+By default, the scatter chart will override the showLine property of the line chart to `false`.
+
+The index scale is of the type `linear`. This means, if you are using the labels array, the values have to be numbers or parsable to numbers, the same applies to the object format for the keys.
+
+## Data Structure
+
+Unlike the line chart where data can be supplied in two different formats, the scatter chart only accepts data in a point format.
+
+```javascript
+data: [{
+        x: 10,
+        y: 20
+    }, {
+        x: 15,
+        y: 10
+    }]
+```
+
+## Internal data format
+
+`{x, y}`
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/animations.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/animations.md
@@ -0,0 +1,285 @@
+# Animations
+
+Chart.js animates charts out of the box. A number of options are provided to configure how the animation looks and how long it takes.
+
+:::: tabs
+
+::: tab "Looping tension [property]"
+
+```js chart-editor
+// <block:setup:1>
+const data = {
+  labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
+  datasets: [{
+    label: 'Looping tension',
+    data: [65, 59, 80, 81, 26, 55, 40],
+    fill: false,
+    borderColor: 'rgb(75, 192, 192)',
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    animations: {
+      tension: {
+        duration: 1000,
+        easing: 'linear',
+        from: 1,
+        to: 0,
+        loop: true
+      }
+    },
+    scales: {
+      y: { // defining min and max so hiding the dataset does not change scale range
+        min: 0,
+        max: 100
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+:::
+
+::: tab "Hide and show [mode]"
+
+```js chart-editor
+// <block:setup:1>
+const data = {
+  labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
+  datasets: [{
+    label: 'Try hiding me',
+    data: [65, 59, 80, 81, 26, 55, 40],
+    fill: false,
+    borderColor: 'rgb(75, 192, 192)',
+  }]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    transitions: {
+      show: {
+        animations: {
+          x: {
+            from: 0
+          },
+          y: {
+            from: 0
+          }
+        }
+      },
+      hide: {
+        animations: {
+          x: {
+            to: 0
+          },
+          y: {
+            to: 0
+          }
+        }
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+:::
+
+::::
+
+## Animation configuration
+
+Animation configuration consists of 3 keys.
+
+| Name | Type | Details
+| ---- | ---- | -------
+| animation | `object` | [animation](#animation)
+| animations | `object` | [animations](#animations)
+| transitions | `object` | [transitions](#transitions)
+
+These keys can be configured in following paths:
+
+* `` - chart options
+* `datasets[type]` - dataset type options
+* `overrides[type]` - chart type options
+
+These paths are valid under `defaults` for global configuration and `options` for instance configuration.
+
+## animation
+
+The default configuration is defined here: <a href="https://github.com/chartjs/Chart.js/blob/master/src/core/core.animations.defaults.js" target="_blank">core.animations.defaults.js</a>
+
+Namespace: `options.animation`
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `duration` | `number` | `1000` | The number of milliseconds an animation takes.
+| `easing` | `string` | `'easeOutQuart'` | Easing function to use. [more...](#easing)
+| `delay` | `number` | `undefined` | Delay before starting the animations.
+| `loop` | `boolean` | `undefined` | If set to `true`, the animations loop endlessly.
+
+These defaults can be overridden in `options.animation` or `dataset.animation` and `tooltip.animation`. These keys are also [Scriptable](../general/options.md#scriptable-options).
+
+## animations
+
+Animations options configures which element properties are animated and how.
+In addition to the main [animation configuration](#animation-configuration), the following options are available:
+
+Namespace: `options.animations[animation]`
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `properties` | `string[]` | `key` | The property names this configuration applies to. Defaults to the key name of this object.
+| `type` | `string` | `typeof property` | Type of property, determines the interpolator used. Possible values: `'number'`, `'color'` and `'boolean'`. Only really needed for `'color'`, because `typeof` does not get that right.
+| `from`  | `number`\|`Color`\|`boolean` | `undefined` | Start value for the animation. Current value is used when `undefined`
+| `to`  | `number`\|`Color`\|`boolean` | `undefined` | End value for the animation. Updated value is used when `undefined`
+| `fn` | <code>&lt;T&gt;(from: T, to: T, factor: number) => T;</code> | `undefined` | Optional custom interpolator, instead of using a predefined interpolator from `type` |
+
+### Default animations
+
+| Name | Option | Value
+| ---- | ------ | -----
+| `numbers` | `properties` | `['x', 'y', 'borderWidth', 'radius', 'tension']`
+| `numbers` | `type` | `'number'`
+| `colors` | `properties` | `['color', 'borderColor', 'backgroundColor']`
+| `colors` | `type` | `'color'`
+
+:::tip Note
+These default animations are overridden by most of the dataset controllers.
+:::
+
+## transitions
+
+The core transitions are `'active'`, `'hide'`, `'reset'`, `'resize'`, `'show'`.
+A custom transition can be used by passing a custom `mode` to [update](../developers/api.md#updatemode).
+Transition extends the main [animation configuration](#animation-configuration) and [animations configuration](#animations-configuration).
+
+### Default transitions
+
+Namespace: `options.transitions[mode]`
+
+| Mode | Option | Value | Description
+| -----| ------ | ----- | -----
+| `'active'` | animation.duration | 400 | Override default duration to 400ms for hover animations
+| `'resize'` | animation.duration | 0 | Override default duration to 0ms (= no animation) for resize
+| `'show'` | animations.colors | `{ type: 'color', properties: ['borderColor', 'backgroundColor'], from: 'transparent' }` | Colors are faded in from transparent when dataset is shown using legend / [api](../developers/api.md#showdatasetIndex).
+| `'show'` | animations.visible | `{ type: 'boolean', duration: 0 }` | Dataset visibility is immediately changed to true so the color transition from transparent is visible.
+| `'hide'` | animations.colors | `{ type: 'color', properties: ['borderColor', 'backgroundColor'], to: 'transparent' }` | Colors are faded to transparent when dataset id hidden using legend / [api](../developers/api.md#hidedatasetIndex).
+| `'hide'` | animations.visible | `{ type: 'boolean', easing: 'easeInExpo' }` | Visibility is changed to false at a very late phase of animation
+
+## Disabling animation
+
+To disable an animation configuration, the animation node must be set to `false`, with the exception for animation modes which can be disabled by setting the `duration` to `0`.
+
+```javascript
+chart.options.animation = false; // disables all animations
+chart.options.animations.colors = false; // disables animation defined by the collection of 'colors' properties
+chart.options.animations.x = false; // disables animation defined by the 'x' property
+chart.options.transitions.active.animation.duration = 0; // disables the animation for 'active' mode
+```
+
+## Easing
+
+Available options are:
+
+* `'linear'`
+* `'easeInQuad'`
+* `'easeOutQuad'`
+* `'easeInOutQuad'`
+* `'easeInCubic'`
+* `'easeOutCubic'`
+* `'easeInOutCubic'`
+* `'easeInQuart'`
+* `'easeOutQuart'`
+* `'easeInOutQuart'`
+* `'easeInQuint'`
+* `'easeOutQuint'`
+* `'easeInOutQuint'`
+* `'easeInSine'`
+* `'easeOutSine'`
+* `'easeInOutSine'`
+* `'easeInExpo'`
+* `'easeOutExpo'`
+* `'easeInOutExpo'`
+* `'easeInCirc'`
+* `'easeOutCirc'`
+* `'easeInOutCirc'`
+* `'easeInElastic'`
+* `'easeOutElastic'`
+* `'easeInOutElastic'`
+* `'easeInBack'`
+* `'easeOutBack'`
+* `'easeInOutBack'`
+* `'easeInBounce'`
+* `'easeOutBounce'`
+* `'easeInOutBounce'`
+
+See [Robert Penner's easing equations](http://robertpenner.com/easing/).
+
+## Animation Callbacks
+
+The animation configuration provides callbacks which are useful for synchronizing an external draw to the chart animation.
+The callbacks can be set only at main [animation configuration](#animation-configuration).
+
+Namespace: `options.animation`
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `onProgress` | `function` | `null` | Callback called on each step of an animation.
+| `onComplete` | `function` | `null` | Callback called when all animations are completed.
+
+The callback is passed the following object:
+
+```javascript
+{
+  // Chart object
+  chart: Chart,
+
+  // Number of animations still in progress
+  currentStep: number,
+
+  // `true` for the initial animation of the chart
+  initial: boolean,
+
+  // Total number of animations at the start of current animation
+  numSteps: number,
+}
+```
+
+The following example fills a progress bar during the chart animation.
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        animation: {
+            onProgress: function(animation) {
+                progress.value = animation.currentStep / animation.numSteps;
+            }
+        }
+    }
+});
+```
+
+Another example usage of these callbacks can be found [in this progress bar sample,](../samples/advanced/progress-bar.md) which displays a progress bar showing how far along the animation is.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/canvas-background.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/canvas-background.md
@@ -0,0 +1,131 @@
+# Canvas background
+
+In some use cases you would want a background image or color over the whole canvas. There is no built-in support for this, the way you can achieve this is by writing a custom plugin.
+
+In the two example plugins underneath here you can see how you can draw a color or image to the canvas as background. This way of giving the chart a background is only necessary if you want to export the chart with that specific background.
+For normal use you can set the background more easily with [CSS](https://www.w3schools.com/cssref/css3_pr_background.asp).
+
+:::: tabs
+
+::: tab Color
+
+```js chart-editor
+// <block:setup:1>
+const data = {
+  labels: [
+    'Red',
+    'Blue',
+    'Yellow'
+  ],
+  datasets: [{
+    label: 'My First Dataset',
+    data: [300, 50, 100],
+    backgroundColor: [
+      'rgb(255, 99, 132)',
+      'rgb(54, 162, 235)',
+      'rgb(255, 205, 86)'
+    ],
+    hoverOffset: 4
+  }]
+};
+// </block:setup>
+
+// <block:plugin:2>
+// Note: changes to the plugin code is not reflected to the chart, because the plugin is loaded at chart construction time and editor changes only trigger an chart.update().
+const plugin = {
+  id: 'customCanvasBackgroundColor',
+  beforeDraw: (chart, args, options) => {
+    const {ctx} = chart;
+    ctx.save();
+    ctx.globalCompositeOperation = 'destination-over';
+    ctx.fillStyle = options.color || '#99ffff';
+    ctx.fillRect(0, 0, chart.width, chart.height);
+    ctx.restore();
+  }
+};
+// </block:plugin>
+
+// <block:config:0>
+const config = {
+  type: 'doughnut',
+  data: data,
+  options: {
+    plugins: {
+      customCanvasBackgroundColor: {
+        color: 'lightGreen',
+      }
+    }
+  },
+  plugins: [plugin],
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+:::
+
+::: tab Image
+
+```js chart-editor
+// <block:setup:1>
+const data = {
+  labels: [
+    'Red',
+    'Blue',
+    'Yellow'
+  ],
+  datasets: [{
+    label: 'My First Dataset',
+    data: [300, 50, 100],
+    backgroundColor: [
+      'rgb(255, 99, 132)',
+      'rgb(54, 162, 235)',
+      'rgb(255, 205, 86)'
+    ],
+    hoverOffset: 4
+  }]
+};
+// </block:setup>
+
+// <block:plugin:2>
+// Note: changes to the plugin code is not reflected to the chart, because the plugin is loaded at chart construction time and editor changes only trigger an chart.update().
+const image = new Image();
+image.src = 'https://www.chartjs.org/img/chartjs-logo.svg';
+
+const plugin = {
+  id: 'customCanvasBackgroundImage',
+  beforeDraw: (chart) => {
+    if (image.complete) {
+      const ctx = chart.ctx;
+      const {top, left, width, height} = chart.chartArea;
+      const x = left + width / 2 - image.width / 2;
+      const y = top + height / 2 - image.height / 2;
+      ctx.drawImage(image, x, y);
+    } else {
+      image.onload = () => chart.draw();
+    }
+  }
+};
+// </block:plugin>
+
+// <block:config:0>
+const config = {
+  type: 'doughnut',
+  data: data,
+  plugins: [plugin],
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+:::
+
+::::
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/decimation.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/decimation.md
@@ -0,0 +1,44 @@
+# Data Decimation
+
+The decimation plugin can be used with line charts to automatically decimate data at the start of the chart lifecycle. Before enabling this plugin, review the [requirements](#requirements) to ensure that it will work with the chart you want to create.
+
+## Configuration Options
+
+Namespace: `options.plugins.decimation`, the global options for the plugin are defined in `Chart.defaults.plugins.decimation`.
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `enabled` | `boolean` | `false` | Is decimation enabled?
+| `algorithm` | `string` | `'min-max'` | Decimation algorithm to use. See the [more...](#decimation-algorithms)
+| `samples` | `number` | | If the `'lttb'` algorithm is used, this is the number of samples in the output dataset. Defaults to the canvas width to pick 1 sample per pixel.
+| `threshold` | `number` | | If the number of samples in the current axis range is above this value, the decimation will be triggered. Defaults to 4 times the canvas width.<br />The number of point after decimation can be higher than the `threshold` value.
+
+## Decimation Algorithms
+
+Decimation algorithm to use for data. Options are:
+
+* `'lttb'`
+* `'min-max'`
+
+### Largest Triangle Three Bucket (LTTB) Decimation
+
+[LTTB](https://github.com/sveinn-steinarsson/flot-downsample) decimation reduces the number of data points significantly. This is most useful for showing trends in data using only a few data points.
+
+### Min/Max Decimation
+
+[Min/max](https://digital.ni.com/public.nsf/allkb/F694FFEEA0ACF282862576020075F784) decimation will preserve peaks in your data but could require up to 4 points for each pixel. This type of decimation would work well for a very noisy signal where you need to see data peaks.
+
+## Requirements
+
+To use the decimation plugin, the following requirements must be met:
+
+1. The dataset must have an [`indexAxis`](../charts/line.md#general) of `'x'`
+2. The dataset must be a line
+3. The X axis for the dataset must be either a [`'linear'`](../axes/cartesian/linear.md) or [`'time'`](../axes/cartesian/time.md) type axis
+4. Data must not need parsing, i.e. [`parsing`](../general/data-structures.md#dataset-configuration) must be `false`
+5. The dataset object must be mutable. The plugin stores the original data as `dataset._data` and then defines a new `data` property on the dataset.
+6. There must be more points on the chart than the threshold value. Take a look at the Configuration Options for more information.
+
+## Related Samples
+
+* [Data Decimation Sample](../samples/advanced/data-decimation)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/device-pixel-ratio.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/device-pixel-ratio.md
@@ -0,0 +1,15 @@
+# Device Pixel Ratio
+
+By default, the chart's canvas will use a 1:1 pixel ratio, unless the physical display has a higher pixel ratio (e.g. Retina displays).
+
+For applications where a chart will be converted to a bitmap, or printed to a higher DPI medium, it can be desirable to render the chart at a higher resolution than the default.
+
+Setting `devicePixelRatio` to a value other than 1 will force the canvas size to be scaled by that amount, relative to the container size. There should be no visible difference on screen; the difference will only be visible when the image is zoomed or printed.
+
+## Configuration Options
+
+Namespace: `options`
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `devicePixelRatio` | `number` | `window.devicePixelRatio` | Override the window's default devicePixelRatio.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/elements.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/elements.md
@@ -0,0 +1,107 @@
+# Elements
+
+While chart types provide settings to configure the styling of each dataset, you sometimes want to style **all datasets the same way**. A common example would be to stroke all the bars in a bar chart with the same colour but change the fill per dataset. Options can be configured for four different types of elements: **[arc](#arc-configuration)**, **[lines](#line-configuration)**, **[points](#point-configuration)**, and **[bars](#bar-configuration)**. When set, these options apply to all objects of that type unless specifically overridden by the configuration attached to a dataset.
+
+## Global Configuration
+
+The element options can be specified per chart or globally. The global options for elements are defined in `Chart.defaults.elements`. For example, to set the border width of all bar charts globally, you would do:
+
+```javascript
+Chart.defaults.elements.bar.borderWidth = 2;
+```
+
+## Point Configuration
+
+Point elements are used to represent the points in a line, radar or bubble chart.
+
+Namespace: `options.elements.point`, global point options: `Chart.defaults.elements.point`.
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `radius` | `number` | `3` | Point radius.
+| [`pointStyle`](#point-styles) | [`pointStyle`](#types) | `'circle'` | Point style.
+| `rotation` | `number` | `0` | Point rotation (in degrees).
+| `backgroundColor` | [`Color`](../general/colors.md) | `Chart.defaults.backgroundColor` | Point fill color.
+| `borderWidth` | `number` | `1` | Point stroke width.
+| `borderColor` | [`Color`](../general/colors.md) | `'Chart.defaults.borderColor` | Point stroke color.
+| `hitRadius` | `number` | `1` | Extra radius added to point radius for hit detection.
+| `hoverRadius` | `number` | `4` | Point radius when hovered.
+| `hoverBorderWidth` | `number` | `1` | Stroke width when hovered.
+
+### Point Styles
+
+#### Types
+
+The `pointStyle` argument accepts the following type of inputs: `string`, `Image` and `HTMLCanvasElement`
+
+#### Info
+When a string is provided, the following values are supported:
+
+- `'circle'`
+- `'cross'`
+- `'crossRot'`
+- `'dash'`
+- `'line'`
+- `'rect'`
+- `'rectRounded'`
+- `'rectRot'`
+- `'star'`
+- `'triangle'`
+- `false`
+
+If the value is an image or a canvas element, that image or canvas element is drawn on the canvas using [drawImage](https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/drawImage).
+
+## Line Configuration
+
+Line elements are used to represent the line in a line chart.
+
+Namespace: `options.elements.line`, global line options: `Chart.defaults.elements.line`.
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `tension` | `number` | `0` | Bézier curve tension (`0` for no Bézier curves).
+| `backgroundColor` | [`Color`](/general/colors.md) | `Chart.defaults.backgroundColor` | Line fill color.
+| `borderWidth` | `number` | `3` | Line stroke width.
+| `borderColor` | [`Color`](/general/colors.md) | `Chart.defaults.borderColor` | Line stroke color.
+| `borderCapStyle` | `string` | `'butt'` | Line cap style. See [MDN](https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineCap).
+| `borderDash` | `number[]` | `[]` | Line dash. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash).
+| `borderDashOffset` | `number` | `0.0` | Line dash offset. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset).
+| `borderJoinStyle` | `'round'`\|`'bevel'`\|`'miter'` | `'miter'` | Line join style. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin).
+| `capBezierPoints` | `boolean` | `true` | `true` to keep Bézier control inside the chart, `false` for no restriction.
+| `cubicInterpolationMode` | `string` | `'default'` |  Interpolation mode to apply. [See more...](/charts/line.md#cubicinterpolationmode)
+| `fill` | `boolean`\|`string` | `false` | How to fill the area under the line. See [area charts](/charts/area.md#filling-modes).
+| `stepped` | `boolean` | `false` | `true` to show the line as a stepped line (`tension` will be ignored).
+
+## Bar Configuration
+
+Bar elements are used to represent the bars in a bar chart.
+
+Namespace: `options.elements.bar`, global bar options: `Chart.defaults.elements.bar`.
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `backgroundColor` | [`Color`](/general/colors.md) | `Chart.defaults.backgroundColor` | Bar fill color.
+| `borderWidth` | `number` | `0` | Bar stroke width.
+| `borderColor` | [`Color`](/general/colors.md) | `Chart.defaults.borderColor` | Bar stroke color.
+| `borderSkipped` | `string` | `'start'` | Skipped (excluded) border: `'start'`, `'end'`, `'middle'`, `'bottom'`, `'left'`, `'top'`, `'right'` or `false`.
+| `borderRadius` | `number`\|`object` | `0` | The bar border radius (in pixels).
+| `inflateAmount` | `number`\|`'auto'` | `'auto'` | The amount of pixels to inflate the bar rectangle(s) when drawing.
+| [`pointStyle`](#point-styles) | `string`\|`Image`\|`HTMLCanvasElement` | `'circle'` | Style of the point for legend.
+
+## Arc Configuration
+
+Arcs are used in the polar area, doughnut and pie charts.
+
+Namespace: `options.elements.arc`, global arc options: `Chart.defaults.elements.arc`.
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `angle` - for polar only | `number` | `circumference / (arc count)` | Arc angle to cover.
+| `backgroundColor` | [`Color`](/general/colors.md) | `Chart.defaults.backgroundColor` | Arc fill color.
+| `borderAlign` | `'center'`\|`'inner'` | `'center'` | Arc stroke alignment.
+| `borderColor` | [`Color`](/general/colors.md) | `'#fff'` | Arc stroke color.
+| `borderDash` | `number[]` | `[]` | Arc line dash. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash).
+| `borderDashOffset` | `number` | `0.0` | Arc line dash offset. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset).
+| `borderJoinStyle` | `'round'`\|`'bevel'`\|`'miter'` | `'bevel'`\|`'round'` | Line join style. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin). The default is `'round'` when `borderAlign` is `'inner'`
+| `borderWidth`| `number` | `2` | Arc stroke width.
+| `circular` | `boolean` | `true` | By default the Arc is curved. If `circular: false` the Arc will be flat
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/index.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/index.md
@@ -0,0 +1,94 @@
+# Configuration
+
+The configuration is used to change how the chart behaves. There are properties to control styling, fonts, the legend, etc.
+
+## Configuration object structure
+
+The top level structure of Chart.js configuration:
+
+```javascript
+const config = {
+  type: 'line',
+  data: {},
+  options: {},
+  plugins: []
+}
+```
+
+### type
+
+Chart type determines the main type of the chart.
+
+**note** A dataset can override the `type`, this is how mixed charts are constructed.
+
+### data
+
+See [Data Structures](../general/data-structures.md) for details.
+
+### options
+
+Majority of the documentation talks about these options.
+
+### plugins
+
+Inline plugins can be included in this array. It is an alternative way of adding plugins for single chart (vs registering the plugin globally).
+More about plugins in the [developers section](../developers/plugins.md).
+
+## Global Configuration
+
+This concept was introduced in Chart.js 1.0 to keep configuration [DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself), and allow for changing options globally across chart types, avoiding the need to specify options for each instance, or the default for a particular chart type.
+
+Chart.js merges the `options` object passed to the chart with the global configuration using chart type defaults and scales defaults appropriately. This way you can be as specific as you would like in your individual chart configuration, while still changing the defaults for all chart types where applicable. The global general options are defined in `Chart.defaults`. The defaults for each chart type are discussed in the documentation for that chart type.
+
+The following example would set the interaction mode to 'nearest' for all charts where this was not overridden by the chart type defaults or the options passed to the constructor on creation.
+
+```javascript
+Chart.defaults.interaction.mode = 'nearest';
+
+// Interaction mode is set to nearest because it was not overridden here
+const chartInteractionModeNearest = new Chart(ctx, {
+    type: 'line',
+    data: data
+});
+
+// This chart would have the interaction mode that was passed in
+const chartDifferentInteractionMode = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        interaction: {
+            // Overrides the global setting
+            mode: 'index'
+        }
+    }
+});
+```
+
+## Dataset Configuration
+
+Options may be configured directly on the dataset. The dataset options can be changed at multiple different levels. See [options](../general/options.md#dataset-level-options) for details on how the options are resolved.
+
+The following example would set the `showLine` option to 'false' for all line datasets except for those overridden by options passed to the dataset on creation.
+
+```javascript
+// Do not show lines for all datasets by default
+Chart.defaults.datasets.line.showLine = false;
+
+// This chart would show a line only for the third dataset
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: {
+        datasets: [{
+            data: [0, 0],
+        }, {
+            data: [0, 1]
+        }, {
+            data: [1, 0],
+            showLine: true // overrides the `line` dataset default
+        }, {
+            type: 'scatter', // 'line' dataset default does not affect this dataset since it's a 'scatter'
+            data: [1, 1]
+        }]
+    }
+});
+```
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/interactions.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/interactions.md
@@ -0,0 +1,278 @@
+# Interactions
+
+Namespace: `options.interaction`, the global interaction configuration is at `Chart.defaults.interaction`. To configure which events trigger chart interactions, see [events](#events).
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `mode` | `string` | `'nearest'` | Sets which elements appear in the interaction. See [Interaction Modes](#modes) for details.
+| `intersect` | `boolean` | `true` | if true, the interaction mode only applies when the mouse position intersects an item on the chart.
+| `axis` | `string` | `'x'` | Can be set to `'x'`, `'y'`, `'xy'` or `'r'` to define which directions are used in calculating distances. Defaults to `'x'` for `'index'` mode and `'xy'` in `dataset` and `'nearest'` modes.
+| `includeInvisible` | `boolean` | `false` | if true, the invisible points that are outside of the chart area will also be included when evaluating interactions.
+
+By default, these options apply to both the hover and tooltip interactions. The same options can be set in the `options.hover` namespace, in which case they will only affect the hover interaction. Similarly, the options can be set in the `options.plugins.tooltip` namespace to independently configure the tooltip interactions.
+
+## Events
+
+The following properties define how the chart interacts with events.
+Namespace: `options`
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `events` | `string[]` | `['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove']` | The `events` option defines the browser events that the chart should listen to for. Each of these events trigger hover and are passed to plugins. [more...](#event-option)
+| `onHover` | `function` | `null` | Called when any of the events fire over chartArea. Passed the event, an array of active elements (bars, points, etc), and the chart.
+| `onClick` | `function` | `null` | Called if the event is of type `'mouseup'`, `'click'` or '`'contextmenu'` over chartArea. Passed the event, an array of active elements, and the chart.
+
+### Event Option
+
+For example, to have the chart only respond to click events, you could do:
+
+```javascript
+const chart = new Chart(ctx, {
+  type: 'line',
+  data: data,
+  options: {
+    // This chart will not respond to mousemove, etc
+    events: ['click']
+  }
+});
+```
+
+Events for each plugin can be further limited by defining (allowed) events array in plugin options:
+
+```javascript
+const chart = new Chart(ctx, {
+  type: 'line',
+  data: data,
+  options: {
+    // All of these (default) events trigger a hover and are passed to all plugins,
+    // unless limited at plugin options
+    events: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'],
+    plugins: {
+      tooltip: {
+        // Tooltip will only receive click events
+        events: ['click']
+      }
+    }
+  }
+});
+```
+
+Events that do not fire over chartArea, like `mouseout`, can be captured using a simple plugin:
+
+```javascript
+const chart = new Chart(ctx, {
+  type: 'line',
+  data: data,
+  options: {
+    // these are the default events:
+    // events: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'],
+  },
+  plugins: [{
+    id: 'myEventCatcher',
+    beforeEvent(chart, args, pluginOptions) {
+      const event = args.event;
+      if (event.type === 'mouseout') {
+        // process the event
+      }
+    }
+  }]
+});
+```
+
+For more information about plugins, see [Plugins](../developers/plugins.md)
+
+### Converting Events to Data Values
+
+A common occurrence is taking an event, such as a click, and finding the data coordinates on the chart where the event occurred. Chart.js provides helpers that make this a straightforward process.
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        onClick: (e) => {
+            const canvasPosition = Chart.helpers.getRelativePosition(e, chart);
+
+            // Substitute the appropriate scale IDs
+            const dataX = chart.scales.x.getValueForPixel(canvasPosition.x);
+            const dataY = chart.scales.y.getValueForPixel(canvasPosition.y);
+        }
+    }
+});
+```
+
+When using a bundler, the helper functions have to be imported separately, for a full explanation of this please head over to the [integration](../getting-started/integration.md#helper-functions) page
+
+## Modes
+
+When configuring the interaction with the graph via `interaction`, `hover` or `tooltips`, a number of different modes are available.
+
+`options.hover` and `options.plugins.tooltip` extend from `options.interaction`. So if `mode`, `intersect` or any other common settings are configured only in `options.interaction`, both hover and tooltips obey that.
+
+The modes are detailed below and how they behave in conjunction with the `intersect` setting.
+
+See how different modes work with the tooltip in [tooltip interactions sample](../samples/tooltip/interactions.md )
+
+### point
+
+Finds all of the items that intersect the point.
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        interaction: {
+            mode: 'point'
+        }
+    }
+});
+```
+
+### nearest
+
+Gets the items that are at the nearest distance to the point. The nearest item is determined based on the distance to the center of the chart item (point, bar). You can use the `axis` setting to define which coordinates are considered in distance calculation. If `intersect` is true, this is only triggered when the mouse position intersects an item in the graph. This is very useful for combo charts where points are hidden behind bars.
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        interaction: {
+            mode: 'nearest'
+        }
+    }
+});
+```
+
+### index
+
+Finds item at the same index. If the `intersect` setting is true, the first intersecting item is used to determine the index in the data. If `intersect` false the nearest item, in the x direction, is used to determine the index.
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        interaction: {
+            mode: 'index'
+        }
+    }
+});
+```
+
+To use index mode in a chart like the horizontal bar chart, where we search along the y direction, you can use the `axis` setting introduced in v2.7.0. By setting this value to `'y'` on the y direction is used.
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'bar',
+    data: data,
+    options: {
+        interaction: {
+            mode: 'index',
+            axis: 'y'
+        }
+    }
+});
+```
+
+### dataset
+
+Finds items in the same dataset. If the `intersect` setting is true, the first intersecting item is used to determine the index in the data. If `intersect` false the nearest item is used to determine the index.
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        interaction: {
+            mode: 'dataset'
+        }
+    }
+});
+```
+
+### x
+
+Returns all items that would intersect based on the `X` coordinate of the position only. Would be useful for a vertical cursor implementation. Note that this only applies to cartesian charts.
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        interaction: {
+            mode: 'x'
+        }
+    }
+});
+```
+
+### y
+
+Returns all items that would intersect based on the `Y` coordinate of the position. This would be useful for a horizontal cursor implementation. Note that this only applies to cartesian charts.
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        interaction: {
+            mode: 'y'
+        }
+    }
+});
+```
+
+## Custom Interaction Modes
+
+New modes can be defined by adding functions to the `Chart.Interaction.modes` map.  You can use the `Chart.Interaction.evaluateInteractionItems` function to help implement these.
+
+Example:
+
+```javascript
+import { Interaction } from 'chart.js';
+import { getRelativePosition } from 'chart.js/helpers';
+
+/**
+ * Custom interaction mode
+ * @function Interaction.modes.myCustomMode
+ * @param {Chart} chart - the chart we are returning items from
+ * @param {Event} e - the event we are find things at
+ * @param {InteractionOptions} options - options to use
+ * @param {boolean} [useFinalPosition] - use final element position (animation target)
+ * @return {InteractionItem[]} - items that are found
+ */
+Interaction.modes.myCustomMode = function(chart, e, options, useFinalPosition) {
+  const position = getRelativePosition(e, chart);
+
+  const items = [];
+  Interaction.evaluateInteractionItems(chart, 'x', position, (element, datasetIndex, index) => {
+    if (element.inXRange(position.x, useFinalPosition) && myCustomLogic(element)) {
+      items.push({element, datasetIndex, index});
+    }
+  });
+  return items;
+};
+
+// Then, to use it...
+new Chart.js(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        interaction: {
+            mode: 'myCustomMode'
+        }
+    }
+})
+```
+
+If you're using TypeScript, you'll also need to register the new mode:
+
+```typescript
+declare module 'chart.js' {
+  interface InteractionModeMap {
+    myCustomMode: InteractionModeFunction;
+  }
+}
+```
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/layout.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/layout.md
@@ -0,0 +1,8 @@
+# Layout
+
+Namespace: `options.layout`, the global options for the chart layout is defined in `Chart.defaults.layout`.
+
+| Name | Type | Default | [Scriptable](../general/options.md#scriptable-options) | Description
+| ---- | ---- | ------- | :----: | -----------
+| `autoPadding` | `boolean` | `true` | No | Apply automatic padding so visible elements are completely drawn.
+| `padding` | [`Padding`](../general/padding.md) | `0` | Yes | The padding to add inside the chart.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/legend.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/legend.md
@@ -0,0 +1,223 @@
+# Legend
+
+The chart legend displays data about the datasets that are appearing on the chart.
+
+## Configuration options
+
+Namespace: `options.plugins.legend`, the global options for the chart legend is defined in `Chart.defaults.plugins.legend`.
+
+:::warning
+The doughnut, pie, and polar area charts override the legend defaults. To change the overrides for those chart types, the options are defined in `Chart.overrides[type].plugins.legend`.
+:::
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `display` | `boolean` | `true` | Is the legend shown?
+| `position` | `string` | `'top'` | Position of the legend. [more...](#position)
+| `align` | `string` | `'center'` | Alignment of the legend. [more...](#align)
+| `maxHeight` | `number` | | Maximum height of the legend, in pixels
+| `maxWidth` | `number` | | Maximum width of the legend, in pixels
+| `fullSize` | `boolean` | `true` | Marks that this box should take the full width/height of the canvas (moving other boxes). This is unlikely to need to be changed in day-to-day use.
+| `onClick` | `function` | | A callback that is called when a click event is registered on a label item. Arguments: `[event, legendItem, legend]`.
+| `onHover` | `function` | | A callback that is called when a 'mousemove' event is registered on top of a label item. Arguments: `[event, legendItem, legend]`.
+| `onLeave` | `function` | | A callback that is called when a 'mousemove' event is registered outside of a previously hovered label item. Arguments: `[event, legendItem, legend]`.
+| `reverse` | `boolean` | `false` | Legend will show datasets in reverse order.
+| `labels` | `object` | | See the [Legend Label Configuration](#legend-label-configuration) section below.
+| `rtl` | `boolean` | | `true` for rendering the legends from right to left.
+| `textDirection` | `string` | canvas' default | This will force the text direction `'rtl'` or `'ltr'` on the canvas for rendering the legend, regardless of the css specified on the canvas
+| `title` | `object` | | See the [Legend Title Configuration](#legend-title-configuration) section below.
+
+:::tip Note
+If you need more visual customizations, please use an [HTML legend](../samples/legend/html.md).
+:::
+
+## Position
+
+Position of the legend. Options are:
+
+* `'top'`
+* `'left'`
+* `'bottom'`
+* `'right'`
+* `'chartArea'`
+
+When using the `'chartArea'` option the legend position is at the moment not configurable, it will always be on the left side of the chart in the middle.
+
+## Align
+
+Alignment of the legend. Options are:
+
+* `'start'`
+* `'center'`
+* `'end'`
+
+Defaults to `'center'` for unrecognized values.
+
+## Legend Label Configuration
+
+Namespace: `options.plugins.legend.labels`
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `boxWidth` | `number` | `40` | Width of coloured box.
+| `boxHeight` | `number` | `font.size` | Height of the coloured box.
+| `color` | [`Color`](../general/colors.md) | `Chart.defaults.color` | Color of label and the strikethrough.
+| `font` | `Font` | `Chart.defaults.font` | See [Fonts](../general/fonts.md)
+| `padding` | `number` | `10` | Padding between rows of colored boxes.
+| `generateLabels` | `function` | | Generates legend items for each thing in the legend. Default implementation returns the text + styling for the color box. See [Legend Item](#legend-item-interface) for details.
+| `filter` | `function` | `null` | Filters legend items out of the legend. Receives 2 parameters, a [Legend Item](#legend-item-interface) and the chart data.
+| `sort` | `function` | `null` | Sorts legend items. Type is : `sort(a: LegendItem, b: LegendItem, data: ChartData): number;`. Receives 3 parameters, two [Legend Items](#legend-item-interface) and the chart data. The return value of the function is a number that indicates the order of the two legend item parameters. The ordering matches the [return value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#description) of `Array.prototype.sort()`
+| [`pointStyle`](elements.md#point-styles) | [`pointStyle`](elements.md#types) | `'circle'` | If specified, this style of point is used for the legend. Only used if `usePointStyle` is true.
+| `textAlign` | `string` | `'center'` | Horizontal alignment of the label text. Options are: `'left'`, `'right'` or `'center'`.
+| `usePointStyle` | `boolean` | `false` | Label style will match corresponding point style (size is based on pointStyleWidth or the minimum value between boxWidth and font.size).
+| `pointStyleWidth` | `number` | `null` | If `usePointStyle` is true, the width of the point style used for the legend.
+| `useBorderRadius` | `boolean` | `false` | Label borderRadius will match corresponding borderRadius.
+| `borderRadius` | `number` | `undefined` | Override the borderRadius to use.
+
+## Legend Title Configuration
+
+Namespace: `options.plugins.legend.title`
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `color` | [`Color`](../general/colors.md) | `Chart.defaults.color` | Color of text.
+| `display` | `boolean` | `false` | Is the legend title displayed.
+| `font` | `Font` | `Chart.defaults.font` | See [Fonts](../general/fonts.md)
+| `padding` | [`Padding`](../general/padding.md) | `0` | Padding around the title.
+| `text` | `string` | | The string title.
+
+## Legend Item Interface
+
+Items passed to the legend `onClick` function are the ones returned from `labels.generateLabels`. These items must implement the following interface.
+
+```javascript
+{
+    // Label that will be displayed
+    text: string,
+
+    // Border radius of the legend item.
+    // Introduced in 3.1.0
+    borderRadius?: number | BorderRadius,
+
+    // Index of the associated dataset
+    datasetIndex: number,
+
+    // Fill style of the legend box
+    fillStyle: Color,
+
+    // Text color
+    fontColor: Color,
+
+    // If true, this item represents a hidden dataset. Label will be rendered with a strike-through effect
+    hidden: boolean,
+
+    // For box border. See https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineCap
+    lineCap: string,
+
+    // For box border. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash
+    lineDash: number[],
+
+    // For box border. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset
+    lineDashOffset: number,
+
+    // For box border. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin
+    lineJoin: string,
+
+    // Width of box border
+    lineWidth: number,
+
+    // Stroke style of the legend box
+    strokeStyle: Color,
+
+    // Point style of the legend box (only used if usePointStyle is true)
+    pointStyle: string | Image | HTMLCanvasElement,
+
+    // Rotation of the point in degrees (only used if usePointStyle is true)
+    rotation: number
+}
+```
+
+## Example
+
+The following example will create a chart with the legend enabled and turn all the text red in color.
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'bar',
+    data: data,
+    options: {
+        plugins: {
+            legend: {
+                display: true,
+                labels: {
+                    color: 'rgb(255, 99, 132)'
+                }
+            }
+        }
+    }
+});
+```
+
+## Custom On Click Actions
+
+It can be common to want to trigger different behaviour when clicking an item in the legend. This can be easily achieved using a callback in the config object.
+
+The default legend click handler is:
+
+```javascript
+function(e, legendItem, legend) {
+    const index = legendItem.datasetIndex;
+    const ci = legend.chart;
+    if (ci.isDatasetVisible(index)) {
+        ci.hide(index);
+        legendItem.hidden = true;
+    } else {
+        ci.show(index);
+        legendItem.hidden = false;
+    }
+}
+```
+
+Let's say we wanted instead to link the display of the first two datasets. We could change the click handler accordingly.
+
+```javascript
+const defaultLegendClickHandler = Chart.defaults.plugins.legend.onClick;
+const pieDoughnutLegendClickHandler = Chart.controllers.doughnut.overrides.plugins.legend.onClick;
+const newLegendClickHandler = function (e, legendItem, legend) {
+    const index = legendItem.datasetIndex;
+    const type = legend.chart.config.type;
+
+    if (index > 1) {
+        // Do the original logic
+        if (type === 'pie' || type === 'doughnut') {
+            pieDoughnutLegendClickHandler(e, legendItem, legend)
+        } else {
+            defaultLegendClickHandler(e, legendItem, legend);
+        }
+
+    } else {
+        let ci = legend.chart;
+        [
+            ci.getDatasetMeta(0),
+            ci.getDatasetMeta(1)
+        ].forEach(function(meta) {
+            meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;
+        });
+        ci.update();
+    }
+};
+
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        plugins: {
+            legend: {
+                onClick: newLegendClickHandler
+            }
+        }
+    }
+});
+```
+
+Now when you click the legend in this chart, the visibility of the first two datasets will be linked together.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/locale.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/locale.md
@@ -0,0 +1,25 @@
+# Locale
+
+For applications where the numbers of ticks on scales must be formatted accordingly with a language sensitive number formatting, you can enable this kind of formatting by setting the `locale` option.
+
+The locale is a string that is a [Unicode BCP 47 locale identifier](https://www.unicode.org/reports/tr35/tr35.html#BCP_47_Conformance).
+
+A Unicode BCP 47 locale identifier consists of
+
+  1. a language code,
+  2. (optionally) a script code,
+  3. (optionally) a region (or country) code,
+  4. (optionally) one or more variant codes, and
+  5. (optionally) one or more extension sequences,
+
+with all present components separated by hyphens.
+
+By default, the chart is using the default locale of the platform which is running on.
+
+## Configuration Options
+
+Namespace: `options`
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `locale` | `string` | `undefined` | a string with a BCP 47 language tag, leveraging on [INTL NumberFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat).
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/responsive.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/responsive.md
@@ -0,0 +1,78 @@
+# Responsive Charts
+
+When it comes to changing the chart size based on the window size, a major limitation is that the canvas *render* size (`canvas.width` and `.height`) can **not** be expressed with relative values, contrary to the *display* size (`canvas.style.width` and `.height`). Furthermore, these sizes are independent of each other and thus the canvas *render* size does not adjust automatically based on the *display* size, making the rendering inaccurate.
+
+The following examples **do not work**:
+
+- `<canvas height="40vh" width="80vw">`: **invalid** values, the canvas doesn't resize ([example](https://codepen.io/chartjs/pen/oWLZaR))
+- `<canvas style="height:40vh; width:80vw">`: **invalid** behavior, the canvas is resized but becomes blurry ([example](https://codepen.io/chartjs/pen/WjxpmO))
+- `<canvas style="margin: 0 auto;">`: **invalid** behavior, the canvas continually shrinks. Chart.js needs a dedicated container for each canvas and this styling should be applied there.
+
+Chart.js provides a [few options](#configuration-options) to enable responsiveness and control the resize behavior of charts by detecting when the canvas *display* size changes and update the *render* size accordingly.
+
+## Configuration Options
+
+Namespace: `options`
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `responsive` | `boolean` | `true` | Resizes the chart canvas when its container does ([important note...](#important-note)).
+| `maintainAspectRatio` | `boolean` | `true` | Maintain the original canvas aspect ratio `(width / height)` when resizing.
+| `aspectRatio` | `number` | `1`\|`2` | Canvas aspect ratio (i.e. `width / height`, a value of 1 representing a square canvas). Note that this option is ignored if the height is explicitly defined either as attribute or via the style. The default value varies by chart type; Radial charts (doughnut, pie, polarArea, radar) default to `1` and others default to `2`.
+| `onResize` | `function` | `null` | Called when a resize occurs. Gets passed two arguments: the chart instance and the new size.
+| `resizeDelay` | `number` | `0` | Delay the resize update by the given amount of milliseconds. This can ease the resize process by debouncing the update of the elements.
+
+## Important Note
+
+Detecting when the canvas size changes can not be done directly from the `canvas` element. Chart.js uses its parent container to update the canvas *render* and *display* sizes. However, this method requires the container to be **relatively positioned** and **dedicated to the chart canvas only**. Responsiveness can then be achieved by setting relative values for the container size ([example](https://codepen.io/chartjs/pen/YVWZbz)):
+
+```html
+<div class="chart-container" style="position: relative; height:40vh; width:80vw">
+    <canvas id="chart"></canvas>
+</div>
+```
+
+The chart can also be programmatically resized by modifying the container size:
+
+```javascript
+chart.canvas.parentNode.style.height = '128px';
+chart.canvas.parentNode.style.width = '128px';
+```
+
+Note that in order for the above code to correctly resize the chart height, the [`maintainAspectRatio`](#configuration-options) option must also be set to `false`.
+
+## Flexbox / Grid Layout
+
+To prevent overflow issues when using flexbox / grid layout, you must set the flex / grid child element to have a `min-width` of `0`.
+See [issue 4156](https://github.com/chartjs/Chart.js/issues/4156#issuecomment-295180128) for more details.
+
+```html
+<div class="grid-container" style="display: grid">
+  <div class="chart-container" style="min-width: 0">
+    <canvas id="chart"></canvas>
+  </div>
+</div>
+```
+
+## Printing Resizable Charts
+
+CSS media queries allow changing styles when printing a page. The CSS applied from these media queries may cause charts to need to resize. However, the resize won't happen automatically. To support resizing charts when printing, you need to hook the [onbeforeprint](https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeprint) event and manually trigger resizing of each chart.
+
+```javascript
+function beforePrintHandler () {
+    for (let id in Chart.instances) {
+        Chart.instances[id].resize();
+    }
+}
+```
+
+You may also find that, due to complexities in when the browser lays out the document for printing and when resize events are fired, Chart.js is unable to properly resize for the print layout. To work around this, you can pass an explicit size to `.resize()` then use an [onafterprint](https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onafterprint) event to restore the automatic size when done.
+
+```javascript
+window.addEventListener('beforeprint', () => {
+  myChart.resize(600, 600);
+});
+window.addEventListener('afterprint', () => {
+  myChart.resize();
+});
+```(No newline at end of file)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/subtitle.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/subtitle.md
@@ -0,0 +1,28 @@
+# Subtitle
+
+Subtitle is a second title placed under the main title, by default. It has exactly the same configuration options with the main [title](./title.md).
+
+## Subtitle Configuration
+
+Namespace: `options.plugins.subtitle`. The global defaults for subtitle are configured in `Chart.defaults.plugins.subtitle`.
+
+Exactly the same configuration options with [title](./title.md) are available for subtitle, the namespaces only differ.
+
+## Example Usage
+
+The example below would enable a title of 'Custom Chart Subtitle' on the chart that is created.
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        plugins: {
+            subtitle: {
+                display: true,
+                text: 'Custom Chart Subtitle'
+            }
+        }
+    }
+});
+```
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/title.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/title.md
@@ -0,0 +1,79 @@
+# Title
+
+The chart title defines text to draw at the top of the chart.
+
+## Title Configuration
+
+Namespace: `options.plugins.title`, the global options for the chart title is defined in `Chart.defaults.plugins.title`.
+
+| Name | Type | Default | [Scriptable](../general/options.md#scriptable-options) | Description
+| ---- | ---- | ------- | :----: | -----------
+| `align` | `string` | `'center'` | Yes | Alignment of the title. [more...](#align)
+| `color` | [`Color`](../general/colors.md) | `Chart.defaults.color` | Yes | Color of text.
+| `display` | `boolean` | `false` | Yes | Is the title shown?
+| `fullSize` | `boolean` | `true` | Yes | Marks that this box should take the full width/height of the canvas. If `false`, the box is sized and placed above/beside the chart area.
+| `position` | `string` | `'top'` | Yes | Position of title. [more...](#position)
+| `font` | `Font` | `{weight: 'bold'}` | Yes | See [Fonts](../general/fonts.md)
+| `padding` | [`Padding`](../general/padding.md) | `10` | Yes | Padding to apply around the title. Only `top` and `bottom` are implemented.
+| `text` | `string`\|`string[]` | `''` | Yes | Title text to display. If specified as an array, text is rendered on multiple lines.
+
+:::tip Note
+If you need more visual customizations, you can implement the title with HTML and CSS.
+:::
+
+### Position
+
+Possible title position values are:
+
+* `'top'`
+* `'left'`
+* `'bottom'`
+* `'right'`
+
+## Align
+
+Alignment of the title. Options are:
+
+* `'start'`
+* `'center'`
+* `'end'`
+
+## Example Usage
+
+The example below would enable a title of 'Custom Chart Title' on the chart that is created.
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        plugins: {
+            title: {
+                display: true,
+                text: 'Custom Chart Title'
+            }
+        }
+    }
+});
+```
+
+This example shows how to specify separate top and bottom title text padding:
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        plugins: {
+            title: {
+                display: true,
+                text: 'Custom Chart Title',
+                padding: {
+                    top: 10,
+                    bottom: 30
+                }
+            }
+        }
+    }
+});
+```
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/tooltip.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/configuration/tooltip.md
@@ -0,0 +1,461 @@
+# Tooltip
+
+## Tooltip Configuration
+
+Namespace: `options.plugins.tooltip`, the global options for the chart tooltips is defined in `Chart.defaults.plugins.tooltip`.
+
+:::warning
+The `titleFont`, `bodyFont` and `footerFont` options default to the `Chart.defaults.font` options. To change the overrides for those options, you will need to pass a function that returns a font object. See section about [overriding default fonts](#default-font-overrides) for extra information below.
+:::
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `enabled` | `boolean` | `true` | Are on-canvas tooltips enabled?
+| `external` | `function` | `null` | See [external tooltip](#external-custom-tooltips) section.
+| `mode` | `string` | `interaction.mode` | Sets which elements appear in the tooltip. [more...](interactions.md#modes).
+| `intersect` | `boolean` | `interaction.intersect` | If true, the tooltip mode applies only when the mouse position intersects with an element. If false, the mode will be applied at all times.
+| `position` | `string` | `'average'` | The mode for positioning the tooltip. [more...](#position-modes)
+| `callbacks` | `object` | | See the [callbacks section](#tooltip-callbacks).
+| `itemSort` | `function` | | Sort tooltip items. [more...](#sort-callback)
+| `filter` | `function` | | Filter tooltip items. [more...](#filter-callback)
+| `backgroundColor` | [`Color`](../general/colors.md) | `'rgba(0, 0, 0, 0.8)'` | Background color of the tooltip.
+| `titleColor` | [`Color`](../general/colors.md) | `'#fff'` | Color of title text.
+| `titleFont` | `Font` | `{weight: 'bold'}` | See [Fonts](../general/fonts.md).
+| `titleAlign` | `string` | `'left'` | Horizontal alignment of the title text lines. [more...](#text-alignment)
+| `titleSpacing` | `number` | `2` | Spacing to add to top and bottom of each title line.
+| `titleMarginBottom` | `number` | `6` | Margin to add on bottom of title section.
+| `bodyColor` | [`Color`](../general/colors.md) | `'#fff'` | Color of body text.
+| `bodyFont` | `Font` | `{}` | See [Fonts](../general/fonts.md).
+| `bodyAlign` | `string` | `'left'` | Horizontal alignment of the body text lines. [more...](#text-alignment)
+| `bodySpacing` | `number` | `2` | Spacing to add to top and bottom of each tooltip item.
+| `footerColor` | [`Color`](../general/colors.md) | `'#fff'` | Color of footer text.
+| `footerFont` | `Font` | `{weight: 'bold'}` | See [Fonts](../general/fonts.md).
+| `footerAlign` | `string` | `'left'` | Horizontal alignment of the footer text lines. [more...](#text-alignment)
+| `footerSpacing` | `number` | `2` | Spacing to add to top and bottom of each footer line.
+| `footerMarginTop` | `number` | `6` | Margin to add before drawing the footer.
+| `padding` | [`Padding`](../general/padding.md) | `6` | Padding inside the tooltip.
+| `caretPadding` | `number` | `2` | Extra distance to move the end of the tooltip arrow away from the tooltip point.
+| `caretSize` | `number` | `5` | Size, in px, of the tooltip arrow.
+| `cornerRadius` | `number`\|`object` | `6` | Radius of tooltip corner curves.
+| `multiKeyBackground` | [`Color`](../general/colors.md) | `'#fff'` | Color to draw behind the colored boxes when multiple items are in the tooltip.
+| `displayColors` | `boolean` | `true` | If true, color boxes are shown in the tooltip.
+| `boxWidth` | `number` | `bodyFont.size` | Width of the color box if displayColors is true.
+| `boxHeight` | `number` | `bodyFont.size` | Height of the color box if displayColors is true.
+| `boxPadding` | `number` | `1` | Padding between the color box and the text.
+| `usePointStyle` | `boolean` | `false` | Use the corresponding point style (from dataset options) instead of color boxes, ex: star, triangle etc. (size is based on the minimum value between boxWidth and boxHeight).
+| `borderColor` | [`Color`](../general/colors.md) | `'rgba(0, 0, 0, 0)'` | Color of the border.
+| `borderWidth` | `number` | `0` | Size of the border.
+| `rtl` | `boolean` | | `true` for rendering the tooltip from right to left.
+| `textDirection` | `string` | canvas' default | This will force the text direction `'rtl'` or `'ltr'` on the canvas for rendering the tooltips, regardless of the css specified on the canvas
+| `xAlign` | `string` | `undefined` | Position of the tooltip caret in the X direction. [more](#tooltip-alignment)
+| `yAlign` | `string` | `undefined` | Position of the tooltip caret in the Y direction. [more](#tooltip-alignment)
+
+:::tip Note
+If you need more visual customizations, please use an [HTML tooltip](../samples/tooltip/html.md).
+:::
+
+### Position Modes
+
+Possible modes are:
+
+* `'average'`
+* `'nearest'`
+
+`'average'` mode will place the tooltip at the average position of the items displayed in the tooltip. `'nearest'` will place the tooltip at the position of the element closest to the event position.
+
+You can also define [custom position modes](#custom-position-modes).
+
+### Tooltip Alignment
+
+The `xAlign` and `yAlign` options define the position of the tooltip caret. If these parameters are unset, the optimal caret position is determined.
+
+The following values for the `xAlign` setting are supported.
+
+* `'left'`
+* `'center'`
+* `'right'`
+
+The following values for the `yAlign` setting are supported.
+
+* `'top'`
+* `'center'`
+* `'bottom'`
+
+### Text Alignment
+
+The `titleAlign`, `bodyAlign` and `footerAlign` options define the horizontal position of the text lines with respect to the tooltip box. The following values are supported.
+
+* `'left'` (default)
+* `'right'`
+* `'center'`
+
+These options are only applied to text lines. Color boxes are always aligned to the left edge.
+
+### Sort Callback
+
+Allows sorting of [tooltip items](#tooltip-item-context). Must implement at minimum a function that can be passed to [Array.prototype.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort). This function can also accept a third parameter that is the data object passed to the chart.
+
+### Filter Callback
+
+Allows filtering of [tooltip items](#tooltip-item-context). Must implement at minimum a function that can be passed to [Array.prototype.filter](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/filter). This function can also accept a fourth parameter that is the data object passed to the chart.
+
+## Tooltip Callbacks
+
+Namespace: `options.plugins.tooltip.callbacks`, the tooltip has the following callbacks for providing text. For all functions, `this` will be the tooltip object created from the `Tooltip` constructor. If the callback returns `undefined`, then the default callback will be used. To remove things from the tooltip callback should return an empty string.
+
+Namespace: `data.datasets[].tooltip.callbacks`, items marked with `Yes` in the column `Dataset override` can be overridden per dataset.
+
+A [tooltip item context](#tooltip-item-context) is generated for each item that appears in the tooltip. This is the primary model that the callback methods interact with. For functions that return text, arrays of strings are treated as multiple lines of text.
+
+| Name | Arguments | Return Type | Dataset override | Description
+| ---- | --------- | ----------- | ---------------- | -----------
+| `beforeTitle` | `TooltipItem[]` | `string | string[] | undefined` | | Returns the text to render before the title.
+| `title` | `TooltipItem[]` | `string | string[] | undefined` | | Returns text to render as the title of the tooltip.
+| `afterTitle` | `TooltipItem[]` | `string | string[] | undefined` | | Returns text to render after the title.
+| `beforeBody` | `TooltipItem[]` | `string | string[] | undefined` | | Returns text to render before the body section.
+| `beforeLabel` | `TooltipItem` | `string | string[] | undefined` | Yes | Returns text to render before an individual label. This will be called for each item in the tooltip.
+| `label` | `TooltipItem` | `string | string[] | undefined` | Yes | Returns text to render for an individual item in the tooltip. [more...](#label-callback)
+| `labelColor` | `TooltipItem` | `object | undefined` | Yes | Returns the colors to render for the tooltip item. [more...](#label-color-callback)
+| `labelTextColor` | `TooltipItem` | `Color | undefined` | Yes | Returns the colors for the text of the label for the tooltip item.
+| `labelPointStyle` | `TooltipItem` | `object | undefined` | Yes | Returns the point style to use instead of color boxes if usePointStyle is true (object with values `pointStyle` and `rotation`). Default implementation uses the point style from the dataset points. [more...](#label-point-style-callback)
+| `afterLabel` | `TooltipItem` | `string | string[] | undefined` | Yes | Returns text to render after an individual label.
+| `afterBody` | `TooltipItem[]` | `string | string[] | undefined` | | Returns text to render after the body section.
+| `beforeFooter` | `TooltipItem[]` | `string | string[] | undefined` | | Returns text to render before the footer section.
+| `footer` | `TooltipItem[]` | `string | string[] | undefined` | | Returns text to render as the footer of the tooltip.
+| `afterFooter` | `TooltipItem[]` | `string | string[] | undefined` | | Text to render after the footer section.
+
+### Label Callback
+
+The `label` callback can change the text that displays for a given data point. A common example to show a unit. The example below puts a `'$'` before every row.
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        plugins: {
+            tooltip: {
+                callbacks: {
+                    label: function(context) {
+                        let label = context.dataset.label || '';
+
+                        if (label) {
+                            label += ': ';
+                        }
+                        if (context.parsed.y !== null) {
+                            label += new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(context.parsed.y);
+                        }
+                        return label;
+                    }
+                }
+            }
+        }
+    }
+});
+```
+
+### Label Color Callback
+
+For example, to return a red box with a blue dashed border that has a border radius for each item in the tooltip you could do:
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        plugins: {
+            tooltip: {
+                callbacks: {
+                    labelColor: function(context) {
+                        return {
+                            borderColor: 'rgb(0, 0, 255)',
+                            backgroundColor: 'rgb(255, 0, 0)',
+                            borderWidth: 2,
+                            borderDash: [2, 2],
+                            borderRadius: 2,
+                        };
+                    },
+                    labelTextColor: function(context) {
+                        return '#543453';
+                    }
+                }
+            }
+        }
+    }
+});
+```
+
+### Label Point Style Callback
+
+For example, to draw triangles instead of the regular color box for each item in the tooltip, you could do:
+
+```javascript
+const chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        plugins: {
+            tooltip: {
+                usePointStyle: true,
+                callbacks: {
+                    labelPointStyle: function(context) {
+                        return {
+                            pointStyle: 'triangle',
+                            rotation: 0
+                        };
+                    }
+                }
+            }
+        }
+    }
+});
+```
+
+### Tooltip Item Context
+
+The tooltip items passed to the tooltip callbacks implement the following interface.
+
+```javascript
+{
+    // The chart the tooltip is being shown on
+    chart: Chart
+
+    // Label for the tooltip
+    label: string,
+
+    // Parsed data values for the given `dataIndex` and `datasetIndex`
+    parsed: object,
+
+    // Raw data values for the given `dataIndex` and `datasetIndex`
+    raw: object,
+
+    // Formatted value for the tooltip
+    formattedValue: string,
+
+    // The dataset the item comes from
+    dataset: object
+
+    // Index of the dataset the item comes from
+    datasetIndex: number,
+
+    // Index of this data item in the dataset
+    dataIndex: number,
+
+    // The chart element (point, arc, bar, etc.) for this tooltip item
+    element: Element,
+}
+```
+
+## External (Custom) Tooltips
+
+External tooltips allow you to hook into the tooltip rendering process so that you can render the tooltip in your own custom way. Generally this is used to create an HTML tooltip instead of an on-canvas tooltip. The `external` option takes a function which is passed a context parameter containing the `chart` and `tooltip`. You can enable external tooltips in the global or chart configuration like so:
+
+```javascript
+const myPieChart = new Chart(ctx, {
+    type: 'pie',
+    data: data,
+    options: {
+        plugins: {
+            tooltip: {
+                // Disable the on-canvas tooltip
+                enabled: false,
+
+                external: function(context) {
+                    // Tooltip Element
+                    let tooltipEl = document.getElementById('chartjs-tooltip');
+
+                    // Create element on first render
+                    if (!tooltipEl) {
+                        tooltipEl = document.createElement('div');
+                        tooltipEl.id = 'chartjs-tooltip';
+                        tooltipEl.innerHTML = '<table></table>';
+                        document.body.appendChild(tooltipEl);
+                    }
+
+                    // Hide if no tooltip
+                    const tooltipModel = context.tooltip;
+                    if (tooltipModel.opacity === 0) {
+                        tooltipEl.style.opacity = 0;
+                        return;
+                    }
+
+                    // Set caret Position
+                    tooltipEl.classList.remove('above', 'below', 'no-transform');
+                    if (tooltipModel.yAlign) {
+                        tooltipEl.classList.add(tooltipModel.yAlign);
+                    } else {
+                        tooltipEl.classList.add('no-transform');
+                    }
+
+                    function getBody(bodyItem) {
+                        return bodyItem.lines;
+                    }
+
+                    // Set Text
+                    if (tooltipModel.body) {
+                        const titleLines = tooltipModel.title || [];
+                        const bodyLines = tooltipModel.body.map(getBody);
+
+                        let innerHtml = '<thead>';
+
+                        titleLines.forEach(function(title) {
+                            innerHtml += '<tr><th>' + title + '</th></tr>';
+                        });
+                        innerHtml += '</thead><tbody>';
+
+                        bodyLines.forEach(function(body, i) {
+                            const colors = tooltipModel.labelColors[i];
+                            let style = 'background:' + colors.backgroundColor;
+                            style += '; border-color:' + colors.borderColor;
+                            style += '; border-width: 2px';
+                            const span = '<span style="' + style + '">' + body + '</span>';
+                            innerHtml += '<tr><td>' + span + '</td></tr>';
+                        });
+                        innerHtml += '</tbody>';
+
+                        let tableRoot = tooltipEl.querySelector('table');
+                        tableRoot.innerHTML = innerHtml;
+                    }
+
+                    const position = context.chart.canvas.getBoundingClientRect();
+                    const bodyFont = Chart.helpers.toFont(tooltipModel.options.bodyFont);
+
+                    // Display, position, and set styles for font
+                    tooltipEl.style.opacity = 1;
+                    tooltipEl.style.position = 'absolute';
+                    tooltipEl.style.left = position.left + window.pageXOffset + tooltipModel.caretX + 'px';
+                    tooltipEl.style.top = position.top + window.pageYOffset + tooltipModel.caretY + 'px';
+                    tooltipEl.style.font = bodyFont.string;
+                    tooltipEl.style.padding = tooltipModel.padding + 'px ' + tooltipModel.padding + 'px';
+                    tooltipEl.style.pointerEvents = 'none';
+                }
+            }
+        }
+    }
+});
+```
+
+See [samples](/samples/tooltip/html.md) for examples on how to get started with external tooltips.
+
+## Tooltip Model
+
+The tooltip model contains parameters that can be used to render the tooltip.
+
+```javascript
+{
+    chart: Chart,
+
+    // The items that we are rendering in the tooltip. See Tooltip Item Interface section
+    dataPoints: TooltipItem[],
+
+    // Positioning
+    xAlign: string,
+    yAlign: string,
+
+    // X and Y properties are the top left of the tooltip
+    x: number,
+    y: number,
+    width: number,
+    height: number,
+    // Where the tooltip points to
+    caretX: number,
+    caretY: number,
+
+    // Body
+    // The body lines that need to be rendered
+    // Each object contains 3 parameters
+    // before: string[] // lines of text before the line with the color square
+    // lines: string[], // lines of text to render as the main item with color square
+    // after: string[], // lines of text to render after the main lines
+    body: object[],
+    // lines of text that appear after the title but before the body
+    beforeBody: string[],
+    // line of text that appear after the body and before the footer
+    afterBody: string[],
+
+    // Title
+    // lines of text that form the title
+    title: string[],
+
+    // Footer
+    // lines of text that form the footer
+    footer: string[],
+
+    // style to render for each item in body[]. This is the style of the squares in the tooltip
+    labelColors: TooltipLabelStyle[],
+    labelTextColors: Color[],
+    labelPointStyles: { pointStyle: PointStyle; rotation: number }[],
+
+    // 0 opacity is a hidden tooltip
+    opacity: number,
+
+    // tooltip options
+    options: Object
+}
+```
+
+## Custom Position Modes
+
+New modes can be defined by adding functions to the `Chart.Tooltip.positioners` map.
+
+Example:
+
+```javascript
+import { Tooltip } from 'chart.js';
+
+/**
+ * Custom positioner
+ * @function Tooltip.positioners.myCustomPositioner
+ * @param elements {Chart.Element[]} the tooltip elements
+ * @param eventPosition {Point} the position of the event in canvas coordinates
+ * @returns {TooltipPosition} the tooltip position
+ */
+Tooltip.positioners.myCustomPositioner = function(elements, eventPosition) {
+    // A reference to the tooltip model
+    const tooltip = this;
+
+    /* ... */
+
+    return {
+        x: 0,
+        y: 0
+        // You may also include xAlign and yAlign to override those tooltip options.
+    };
+};
+
+// Then, to use it...
+new Chart(ctx, {
+    data,
+    options: {
+        plugins: {
+            tooltip: {
+                position: 'myCustomPositioner'
+            }
+        }
+    }
+})
+```
+
+See [samples](/samples/tooltip/position.md) for a more detailed example.
+
+If you're using TypeScript, you'll also need to register the new mode:
+
+```typescript
+declare module 'chart.js' {
+  interface TooltipPositionerMap {
+    myCustomPositioner: TooltipPositionerFunction<ChartType>;
+  }
+}
+```
+
+## Default font overrides
+
+By default, the `titleFont`, `bodyFont` and `footerFont` listen to the `Chart.defaults.font` options for setting its values.
+Overriding these normally by accessing the object won't work because it is backed by a get function that looks to the default `font` namespace.
+So you will need to override this get function with your own function that returns the desired config.
+
+Example:
+
+```javascript
+Chart.defaults.plugins.tooltip.titleFont = () => ({ size: 20, lineHeight: 1.2, weight: 800 });
+```(No newline at end of file)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/api.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/api.md
@@ -0,0 +1,252 @@
+# API
+
+For each chart, there are a set of global prototype methods on the shared chart type which you may find useful. These are available on all charts created with Chart.js, but for the examples, let's use a line chart we've made.
+
+```javascript
+// For example:
+const myLineChart = new Chart(ctx, config);
+```
+
+## .destroy()
+
+Use this to destroy any chart instances that are created. This will clean up any references stored to the chart object within Chart.js, along with any associated event listeners attached by Chart.js.
+This must be called before the canvas is reused for a new chart.
+
+```javascript
+// Destroys a specific chart instance
+myLineChart.destroy();
+```
+
+## .update(mode?)
+
+Triggers an update of the chart. This can be safely called after updating the data object. This will update all scales, legends, and then re-render the chart.
+
+```javascript
+myLineChart.data.datasets[0].data[2] = 50; // Would update the first dataset's value of 'March' to be 50
+myLineChart.update(); // Calling update now animates the position of March from 90 to 50.
+```
+A `mode` can be provided to indicate transition configuration should be used. This can be either:
+
+- **string value**: Core calls this method using any of `'active'`, `'hide'`, `'reset'`, `'resize'`, `'show'` or `undefined`. `'none'` is also supported for skipping animations for single update. Please see [animations](../configuration/animations.md) docs for more details.
+
+- **function**: that receives a context object `{ datasetIndex: number }` and returns a mode string, allowing different modes per dataset.
+
+Examples:
+```javascript
+// Using string mode
+myChart.update('active');
+
+// Using function mode for dataset-specific animations
+myChart.update(ctx => ctx.datasetIndex === 0 ? 'active' : 'none');
+```
+
+See [Updating Charts](updates.md) for more details.
+
+## .reset()
+
+Reset the chart to its state before the initial animation. A new animation can then be triggered using `update`.
+
+```javascript
+myLineChart.reset();
+```
+
+## .render()
+
+Triggers a redraw of all chart elements. Note, this does not update elements for new data. Use `.update()` in that case.
+
+## .stop()
+
+Use this to stop any current animation. This will pause the chart during any current animation frame. Call `.render()` to re-animate.
+
+```javascript
+// Stops the charts animation loop at its current frame
+myLineChart.stop();
+// => returns 'this' for chainability
+```
+
+## .resize(width?, height?)
+
+Use this to manually resize the canvas element. This is run each time the canvas container is resized, but you can call this method manually if you change the size of the canvas nodes container element.
+
+You can call `.resize()` with no parameters to have the chart take the size of its container element, or you can pass explicit dimensions (e.g., for [printing](../configuration/responsive.md#printing-resizable-charts)).
+
+```javascript
+// Resizes & redraws to fill its container element
+myLineChart.resize();
+// => returns 'this' for chainability
+
+// With an explicit size:
+myLineChart.resize(width, height);
+```
+
+## .clear()
+
+Will clear the chart canvas. Used extensively internally between animation frames, but you might find it useful.
+
+```javascript
+// Will clear the canvas that myLineChart is drawn on
+myLineChart.clear();
+// => returns 'this' for chainability
+```
+
+## .toBase64Image(type?, quality?)
+
+This returns a base 64 encoded string of the chart in its current state.
+
+```javascript
+myLineChart.toBase64Image();
+// => returns png data url of the image on the canvas
+
+myLineChart.toBase64Image('image/jpeg', 1)
+// => returns a jpeg data url in the highest quality of the canvas
+```
+
+## .getElementsAtEventForMode(e, mode, options, useFinalPosition)
+
+Calling `getElementsAtEventForMode(e, mode, options, useFinalPosition)` on your Chart instance passing an event and a mode will return the elements that are found. The `options` and `useFinalPosition` arguments are passed through to the handlers.
+
+To get an item that was clicked on, `getElementsAtEventForMode` can be used.
+
+```javascript
+function clickHandler(evt) {
+    const points = myChart.getElementsAtEventForMode(evt, 'nearest', { intersect: true }, true);
+
+    if (points.length) {
+        const firstPoint = points[0];
+        const label = myChart.data.labels[firstPoint.index];
+        const value = myChart.data.datasets[firstPoint.datasetIndex].data[firstPoint.index];
+    }
+}
+```
+
+## .getSortedVisibleDatasetMetas()
+
+Returns an array of all the dataset meta's in the order that they are drawn on the canvas that are not hidden.
+
+```javascript
+const visibleMetas = chart.getSortedVisibleDatasetMetas();
+```
+
+## .getDatasetMeta(index)
+
+Looks for the dataset that matches the current index and returns that metadata. This returned data has all of the metadata that is used to construct the chart.
+
+The `data` property of the metadata will contain information about each point, bar, etc. depending on the chart type.
+
+Extensive examples of usage are available in the [Chart.js tests](https://github.com/chartjs/Chart.js/tree/master/test).
+
+```javascript
+const meta = myChart.getDatasetMeta(0);
+const x = meta.data[0].x;
+```
+
+## getVisibleDatasetCount
+
+Returns the number of datasets that are currently not hidden.
+
+```javascript
+const numberOfVisibleDatasets = chart.getVisibleDatasetCount();
+```
+## isDatasetVisible(datasetIndex)
+
+Returns a boolean if a dataset at the given index is currently visible.
+
+The visibility is determined by first checking the hidden property in the dataset metadata (set via [`setDatasetVisibility()`](#setdatasetvisibility-datasetindex-visibility) and accessible through [`getDatasetMeta()`](#getdatasetmeta-index)). If this is not set, the hidden property of the dataset object itself (`chart.data.datasets[n].hidden`) is returned.
+
+```javascript
+chart.isDatasetVisible(1);
+```
+
+## setDatasetVisibility(datasetIndex, visibility)
+
+Sets the visibility for a given dataset. This can be used to build a chart legend in HTML. During click on one of the HTML items, you can call `setDatasetVisibility` to change the appropriate dataset.
+
+```javascript
+chart.setDatasetVisibility(1, false); // hides dataset at index 1
+chart.update(); // chart now renders with dataset hidden
+```
+
+## toggleDataVisibility(index)
+
+Toggles the visibility of an item in all datasets. A dataset needs to explicitly support this feature for it to have an effect. From internal chart types, doughnut / pie, polar area, and bar use this.
+
+```javascript
+chart.toggleDataVisibility(2); // toggles the item in all datasets, at index 2
+chart.update(); // chart now renders with item hidden
+```
+
+## getDataVisibility(index)
+
+Returns the stored visibility state of a data index for all datasets. Set by [toggleDataVisibility](#toggledatavisibility-index). A dataset controller should use this method to determine if an item should not be visible.
+
+```javascript
+const visible = chart.getDataVisibility(2);
+```
+
+## hide(datasetIndex, dataIndex?)
+
+If dataIndex is not specified, sets the visibility for the given dataset to false. Updates the chart and animates the dataset with `'hide'` mode. This animation can be configured under the `hide` key in animation options. Please see [animations](../configuration/animations.md) docs for more details.
+
+If dataIndex is specified, sets the hidden flag of that element to true and updates the chart.
+
+```javascript
+chart.hide(1); // hides dataset at index 1 and does 'hide' animation.
+chart.hide(0, 2); // hides the data element at index 2 of the first dataset.
+```
+
+## show(datasetIndex, dataIndex?)
+
+If dataIndex is not specified, sets the visibility for the given dataset to true. Updates the chart and animates the dataset with `'show'` mode. This animation can be configured under the `show` key in animation options. Please see [animations](../configuration/animations.md) docs for more details.
+
+If dataIndex is specified, sets the hidden flag of that element to false and updates the chart.
+
+```javascript
+chart.show(1); // shows dataset at index 1 and does 'show' animation.
+chart.show(0, 2); // shows the data element at index 2 of the first dataset.
+```
+
+## setActiveElements(activeElements)
+
+Sets the active (hovered) elements for the chart. See the "Programmatic Events" sample file to see this in action.
+
+```javascript
+chart.setActiveElements([
+    {datasetIndex: 0, index: 1},
+]);
+```
+
+## isPluginEnabled(pluginId)
+
+Returns a boolean if a plugin with the given ID has been registered to the chart instance.
+
+```javascript
+chart.isPluginEnabled('filler');
+```
+
+## Static: getChart(key)
+
+Finds the chart instance from the given key. If the key is a `string`, it is interpreted as the ID of the Canvas node for the Chart. The key can also be a `CanvasRenderingContext2D` or an `HTMLDOMElement`. This will return `undefined` if no Chart is found. To be found, the chart must have previously been created.
+
+```javascript
+const chart = Chart.getChart("canvas-id");
+```
+
+## Static: register(chartComponentLike)
+
+Used to register plugins, axis types or chart types globally to all your charts.
+
+```javascript
+import { Chart, Tooltip, LinearScale, PointElement, BubbleController } from 'chart.js';
+
+Chart.register(Tooltip, LinearScale, PointElement, BubbleController);
+```
+
+## Static: unregister(chartComponentLike)
+
+Used to unregister plugins, axis types or chart types globally from all your charts.
+
+```javascript
+import { Chart, Tooltip, LinearScale, PointElement, BubbleController } from 'chart.js';
+
+Chart.unregister(Tooltip, LinearScale, PointElement, BubbleController);
+```
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/axes.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/axes.md
@@ -0,0 +1,135 @@
+# New Axes
+
+Axes in Chart.js can be individually extended. Axes should always derive from `Chart.Scale` but this is not a mandatory requirement.
+
+```javascript
+class MyScale extends Chart.Scale {
+    /* extensions ... */
+}
+MyScale.id = 'myScale';
+MyScale.defaults = defaultConfigObject;
+
+// MyScale is now derived from Chart.Scale
+```
+
+Once you have created your scale class, you need to register it with the global chart object so that it can be used.
+
+```javascript
+Chart.register(MyScale);
+
+// If the new scale is not extending Chart.Scale, the prototype can not be used to detect what
+// you are trying to register - so you need to be explicit:
+
+// Chart.registry.addScales(MyScale);
+```
+
+To use the new scale, simply pass in the string key to the config when creating a chart.
+
+```javascript
+const lineChart = new Chart(ctx, {
+    data: data,
+    type: 'line',
+    options: {
+        scales: {
+            y: {
+                type: 'myScale' // this is the same id that was set on the scale
+            }
+        }
+    }
+});
+```
+
+## Scale Properties
+
+Scale instances are given the following properties during the fitting process.
+
+```javascript
+{
+    left: number, // left edge of the scale bounding box
+    right: number, // right edge of the bounding box
+    top: number,
+    bottom: number,
+    width: number, // the same as right - left
+    height: number, // the same as bottom - top
+
+    // Margin on each side. Like css, this is outside the bounding box.
+    margins: {
+        left: number,
+        right: number,
+        top: number,
+        bottom: number
+    },
+
+    // Amount of padding on the inside of the bounding box (like CSS)
+    paddingLeft: number,
+    paddingRight: number,
+    paddingTop: number,
+    paddingBottom: number
+}
+```
+
+## Scale Interface
+
+To work with Chart.js, custom scale types must implement the following interface.
+
+```javascript
+{
+    // Determines the data limits. Should set this.min and this.max to be the data max/min
+    determineDataLimits: function() {},
+
+    // Generate tick marks. this.chart is the chart instance. The data object can be accessed as this.chart.data
+    // buildTicks() should create a ticks array on the axis instance, if you intend to use any of the implementations from the base class
+    buildTicks: function() {},
+
+    // Get the label to show for the given value
+    getLabelForValue: function(value) {},
+
+    // Get the pixel (x coordinate for horizontal axis, y coordinate for vertical axis) for a given value
+    // @param index: index into the ticks array
+    getPixelForTick: function(index) {},
+
+    // Get the pixel (x coordinate for horizontal axis, y coordinate for vertical axis) for a given value
+    // @param value : the value to get the pixel for
+    // @param [index] : index into the data array of the value
+    getPixelForValue: function(value, index) {},
+
+    // Get the value for a given pixel (x coordinate for horizontal axis, y coordinate for vertical axis)
+    // @param pixel : pixel value
+    getValueForPixel: function(pixel) {}
+}
+```
+
+Optionally, the following methods may also be overwritten, but an implementation is already provided by the `Chart.Scale` base class.
+
+```javascript
+{
+    // Adds labels to objects in the ticks array. The default implementation simply calls this.options.ticks.callback(numericalTick, index, ticks);
+    generateTickLabels: function() {},
+
+    // Determine how much the labels will rotate by. The default implementation will only rotate labels if the scale is horizontal.
+    calculateLabelRotation: function() {},
+
+    // Fits the scale into the canvas.
+    // this.maxWidth and this.maxHeight will tell you the maximum dimensions the scale instance can be. Scales should endeavour to be as efficient as possible with canvas space.
+    // this.margins is the amount of space you have on either side of your scale that you may expand in to. This is used already for calculating the best label rotation
+    // You must set this.minSize to be the size of your scale. It must be an object containing 2 properties: width and height.
+    // You must set this.width to be the width and this.height to be the height of the scale
+    fit: function() {},
+
+    // Draws the scale onto the canvas. this.(left|right|top|bottom) will have been populated to tell you the area on the canvas to draw in
+    // @param chartArea : an object containing four properties: left, right, top, bottom. This is the rectangle that lines, bars, etc will be drawn in. It may be used, for example, to draw grid lines.
+    draw: function(chartArea) {}
+}
+```
+
+The Core.Scale base class also has some utility functions that you may find useful.
+
+```javascript
+{
+    // Returns true if the scale instance is horizontal
+    isHorizontal: function() {},
+
+    // Returns the scale tick objects ({label, major})
+    getTicks: function() {}
+}
+```
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/charts.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/charts.md
@@ -0,0 +1,141 @@
+# New Charts
+
+Chart.js 2.0 introduced the concept of controllers for each dataset. Like scales, new controllers can be written as needed.
+
+```javascript
+class MyType extends Chart.DatasetController {
+
+}
+
+Chart.register(MyType);
+
+// Now we can create a new instance of our chart, using the Chart.js API
+new Chart(ctx, {
+    // this is the string the constructor was registered at, ie Chart.controllers.MyType
+    type: 'MyType',
+    data: data,
+    options: options
+});
+```
+
+## Dataset Controller Interface
+
+Dataset controllers must implement the following interface.
+
+```javascript
+{
+    // Defaults for charts of this type
+    defaults: {
+        // If set to `false` or `null`, no dataset level element is created.
+        // If set to a string, this is the type of element to create for the dataset.
+        // For example, a line create needs to create a line element so this is the string 'line'
+        datasetElementType: string | null | false,
+
+        // If set to `false` or `null`, no elements are created for each data value.
+        // If set to a string, this is the type of element to create for each data value.
+        // For example, a line create needs to create a point element so this is the string 'point'
+        dataElementType: string | null | false,
+    }
+
+    // ID of the controller
+    id: string;
+
+    // Update the elements in response to new data
+    // @param mode : update mode, core calls this method using any of `'active'`, `'hide'`, `'reset'`, `'resize'`, `'show'` or `undefined`
+    update: function(mode) {}
+}
+```
+
+The following methods may optionally be overridden by derived dataset controllers.
+
+```javascript
+{
+    // Draw the representation of the dataset. The base implementation works in most cases, and an example of a derived version
+    // can be found in the line controller
+    draw: function() {},
+
+    // Initializes the controller
+    initialize: function() {},
+
+    // Ensures that the dataset represented by this controller is linked to a scale. Overridden to helpers.noop in the polar area and doughnut controllers as these
+    // chart types using a single scale
+    linkScales: function() {},
+
+    // Parse the data into the controller meta data. The default implementation will work for cartesian parsing, but an example of an overridden
+    // version can be found in the doughnut controller
+    parse: function(start, count) {},
+}
+```
+
+## Extending Existing Chart Types
+
+Extending or replacing an existing controller type is easy. Simply replace the constructor for one of the built-in types with your own.
+
+The built-in controller types are:
+
+* `BarController`
+* `BubbleController`
+* `DoughnutController`
+* `LineController`
+* `PieController`
+* `PolarAreaController`
+* `RadarController`
+* `ScatterController`
+
+These controllers are also available in the UMD package, directly under `Chart`. Eg: `Chart.BarController`.
+
+For example, to derive a new chart type that extends from a bubble chart, you would do the following.
+
+```javascript
+import {BubbleController} from 'chart.js';
+class Custom extends BubbleController {
+    draw() {
+        // Call bubble controller method to draw all the points
+        super.draw(arguments);
+
+        // Now we can do some custom drawing for this dataset. Here we'll draw a red box around the first point in each dataset
+        const meta = this.getMeta();
+        const pt0 = meta.data[0];
+
+        const {x, y} = pt0.getProps(['x', 'y']);
+        const {radius} = pt0.options;
+
+        const ctx = this.chart.ctx;
+        ctx.save();
+        ctx.strokeStyle = 'red';
+        ctx.lineWidth = 1;
+        ctx.strokeRect(x - radius, y - radius, 2 * radius, 2 * radius);
+        ctx.restore();
+    }
+};
+Custom.id = 'derivedBubble';
+Custom.defaults = BubbleController.defaults;
+
+// Stores the controller so that the chart initialization routine can look it up
+Chart.register(Custom);
+
+// Now we can create and use our new chart type
+new Chart(ctx, {
+    type: 'derivedBubble',
+    data: data,
+    options: options
+});
+```
+
+## TypeScript Typings
+
+If you want your new chart type to be statically typed, you must provide a `.d.ts` TypeScript declaration file. Chart.js provides a way to augment built-in types with user-defined ones, by using the concept of "declaration merging".
+
+When adding a new chart type, `ChartTypeRegistry` must contain the declarations for the new type, either by extending an existing entry in `ChartTypeRegistry` or by creating a new one.
+
+For example, to provide typings for a new chart type that extends from a bubble chart, you would add a `.d.ts` containing:
+
+```typescript
+import { ChartTypeRegistry } from 'chart.js';
+
+declare module 'chart.js' {
+    interface ChartTypeRegistry {
+        derivedBubble: ChartTypeRegistry['bubble']
+    }
+}
+```
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/contributing.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/contributing.md
@@ -0,0 +1,79 @@
+# Contributing
+
+New contributions to the library are welcome, but we ask that you please follow these guidelines:
+
+- Before opening a PR for major additions or changes, please discuss the expected API and/or implementation by [filing an issue](https://github.com/chartjs/Chart.js/issues) or asking about it in the [Chart.js Discord](https://discord.gg/HxEguTK6av) #dev channel. This will save you development time by getting feedback upfront and make reviews faster by giving the maintainers more context and details.
+- Consider whether your changes are useful for all users, or if creating a Chart.js [plugin](plugins.md) would be more appropriate.
+- Check that your code will pass tests and `eslint` code standards. `pnpm test` will run both the linter and tests for you.
+- Add unit tests and document new functionality (in the `test/` and `docs/` directories respectively).
+- Avoid breaking changes unless there is an upcoming major release, which is infrequent. We encourage people to write plugins for the most new advanced features, and care a lot about backward compatibility.
+- We strongly prefer new methods to be added as private whenever possible. A method can be made private either by making a top-level `function` outside of a class or by prefixing it with `_` and adding `@private` JSDoc if inside a class. Public APIs take considerable time to review and become locked once implemented as we have limited ability to change them without breaking backward compatibility. Private APIs allow the flexibility to address unforeseen cases.
+
+## Joining the project
+
+Active committers and contributors are invited to introduce themselves and request commit access to this project. We have a very active Discord community that you can join [here](https://discord.gg/HxEguTK6av). If you think you can help, we'd love to have you!
+
+## Building and Testing
+
+Firstly, we need to ensure development dependencies are installed. With node and pnpm installed, after cloning the Chart.js repo to a local directory, and navigating to that directory in the command line, we can run the following:
+
+```bash
+> pnpm install
+```
+
+This will install the local development dependencies for Chart.js.
+
+The following commands are now available from the repository root:
+
+```bash
+> pnpm run build             // build dist files in ./dist
+> pnpm run autobuild         // build and watch for source changes
+> pnpm run dev               // run tests and watch for source and test changes
+> pnpm run lint              // perform code linting (ESLint, tsc)
+> pnpm test                  // perform code linting and run unit tests with coverage
+```
+
+`pnpm run dev` and `pnpm test` can be appended with a string that is used to match the spec filenames. For example: `pnpm run dev plugins` will start karma in watch mode for `test/specs/**/*plugin*.js`.
+
+### Documentation
+
+We use [Vuepress](https://vuepress.vuejs.org/) to manage the docs which are contained as Markdown files in the docs directory. You can run the doc server locally using these commands:
+
+```bash
+> pnpm run docs:dev
+```
+
+### Image-Based Tests
+
+Some display-related functionality is difficult to test via typical Jasmine units. For this reason, we introduced image-based tests ([#3988](https://github.com/chartjs/Chart.js/pull/3988) and [#5777](https://github.com/chartjs/Chart.js/pull/5777)) to assert that a chart is drawn pixel-for-pixel matching an expected image.
+
+Generated charts in image-based tests should be **as minimal as possible** and focus only on the tested feature to prevent failure if another feature breaks (e.g. disable the title and legend when testing scales).
+
+You can create a new image-based test by following the steps below:
+
+- Create a JS file ([example](https://github.com/chartjs/Chart.js/blob/f7b671006a86201808402c3b6fe2054fe834fd4a/test/fixtures/controller.bubble/radius-scriptable.js)) or JSON file ([example](https://github.com/chartjs/Chart.js/blob/4b421a50bfa17f73ac7aa8db7d077e674dbc148d/test/fixtures/plugin.filler/fill-line-dataset.json)) that defines chart config and generation options.
+- Add this file in `test/fixtures/{spec.name}/{feature-name}.json`.
+- Add a [describe line](https://github.com/chartjs/Chart.js/blob/4b421a50bfa17f73ac7aa8db7d077e674dbc148d/test/specs/plugin.filler.tests.js#L10) to the beginning of `test/specs/{spec.name}.tests.js` if it doesn't exist yet.
+- Run `pnpm run dev`.
+- Click the *"Debug"* button (top/right): a test should fail with the associated canvas visible.
+- Right-click on the chart and *"Save image as..."* `test/fixtures/{spec.name}/{feature-name}.png` making sure not to activate the tooltip or any hover functionality
+- Refresh the browser page (`CTRL+R`): test should now pass
+- Verify test relevancy by changing the feature values *slightly* in the JSON file.
+
+Tests should pass in both browsers. In general, we've hidden all text in image tests since it's quite difficult to get them to pass between different browsers. As a result, it is recommended to hide all scales in image-based tests. It is also recommended to disable animations. If tests still do not pass, adjust [`tolerance` and/or `threshold`](https://github.com/chartjs/Chart.js/blob/1ca0ffb5d5b6c2072176fd36fa85a58c483aa434/test/jasmine.matchers.js) at the beginning of the JSON file keeping them **as low as possible**.
+
+When a test fails, the expected and actual images are shown. If you'd like to see the images even when the tests pass, set `"debug": true` in the JSON file.
+
+## Bugs and Issues
+
+Please report these on the GitHub page - at <a href="https://github.com/chartjs/Chart.js" target="_blank">github.com/chartjs/Chart.js</a>. Please do not use issues for support requests. For help using Chart.js, please take a look at the [`chart.js`](https://stackoverflow.com/questions/tagged/chart.js) tag on Stack Overflow.
+
+Well-structured, detailed bug reports are hugely valuable for the project.
+
+Guidelines for reporting bugs:
+
+- Check the issue search to see if it has already been reported
+- Isolate the problem to a simple test case
+- Please include a demonstration of the bug on a website such as [JS Bin](https://jsbin.com/), [JS Fiddle](https://jsfiddle.net/), or [Codepen](https://codepen.io/pen/). ([Template](https://codepen.io/pen?template=wvezeOq)). If filing a bug against `master`, you may reference the latest code via <https://www.chartjs.org/dist/master/chart.umd.min.js> (changing the filename to point at the file you need as appropriate). Do not rely on these files for production purposes as they may be removed at any time.
+
+Please provide any additional details associated with the bug, if it's browser or screen density specific, or only happens with a certain configuration or data.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/destroy_flowchart.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/destroy_flowchart.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/event_flowchart.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/event_flowchart.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/index.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/index.md
@@ -0,0 +1,53 @@
+# Developers
+
+Developer features allow extending and enhancing Chart.js in many different ways.
+
+## Latest resources
+
+The latest documentation and samples, including unreleased features, are available at:
+
+- <https://www.chartjs.org/docs/master/>
+- <https://www.chartjs.org/samples/master/>
+
+## Development releases
+
+Latest builds are available for testing at:
+
+- <https://www.chartjs.org/dist/master/chart.js>
+- <https://www.chartjs.org/dist/master/chart.umd.min.js>
+
+:::warning Warning
+
+Development builds **must not** be used for production purposes or as replacement for a CDN. See [available CDNs](../getting-started/installation.md#cdn).
+
+:::
+
+## Browser support
+
+All modern and up-to-date browsers are supported, including, but not limited to:
+
+* Chrome
+* Edge
+* Firefox
+* Safari
+
+As of version 3, we have dropped Internet Explorer 11 support.
+
+Browser support for the canvas element is available in all modern & major mobile browsers. [CanIUse](https://caniuse.com/#feat=canvas)
+
+Run `npx browserslist` at the root of the [codebase](https://github.com/chartjs/Chart.js) to get a list of supported browsers.
+
+Thanks to [BrowserStack](https://browserstack.com) for allowing our team to test on thousands of browsers.
+
+## Previous versions
+
+To migrate from version 2 to version 3, please see [the v3 migration guide](../getting-started/v3-migration).
+
+Version 3 has a largely different API than earlier versions.
+
+Most earlier version options have current equivalents or are the same.
+
+Please note - documentation for previous versions is available online or in the GitHub repo.
+
+- [2.9.4 Documentation](https://www.chartjs.org/docs/2.9.4/)
+- [1.x Documentation](https://github.com/chartjs/Chart.js/tree/v1.1.1/docs)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/init_flowchart.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/init_flowchart.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/plugin_flowcharts.drawio (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/plugin_flowcharts.drawio
@@ -0,0 +1,1 @@
+<mxfile host="app.diagrams.net" modified="2022-08-02T22:40:51.791Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36" etag="r-mRQn2uuU6jSS0wK3iE" version="20.2.2" type="device" pages="6"><diagram id="GnJziOrIlQhF6Q0E3uKP" name="Chart render">7V3dl5o4FP9rfGyPSQjiY50Z23M6O/sx7enOY5So7CBxEUftX79BkhEICiqSYLcvhUsC8d77y/2E6aC7+eZzSBaz35hL/Q7supsOuu9ACLrI4f/FlG1CwVYvIUxDzxWD9oRn7yeVMwV15bl0mRkYMeZH3iJLHLMgoOMoQyNhyNbZYRPmZ5+6IFOqEJ7HxFepPzw3miVUB3f39C/Um87kk0FXXJkTOVgQljPisnWKhB466C5kLEqO5ps76sfMk3xJ5g0PXH1fWEiDqMqEydz/ffvkTt3hcPBvb7x+GX65/4DE2qKt/MHU5b9fnLIwmrEpC4j/sKcOQrYKXBrftcvP9mMeGVtwIuDEf2gUbYUwySpinDSL5r64Sjde9Hc8/SMWZy+pK/cbcefdyVaeBFG4TU2KT1/S1/bTdmdynsolwbglW4VjeoQ1UttIOKXRkXEwGRfzLfUAIYPPlM0pXw8fEFKfRN5bVq+IUM/p+7i9BPmBEOIJAhX3fSP+SjxpQKdewEl/US61UJW373MsxXJdz7yIPi/IjitrDues1MhykQBs4m1i6R9m7RsNI7o5ygxxFTkCHGJ3kFhZp6AmSLMUyiStdu7h/+FQoualcLCMggNU4PDEIm8SL2BEJyykB1CxFyooR8bE8/075rNwNxe5mDquxenLKGSvNHXFgSNk2zVBx85CBxRg552WBo91LfA4Cq9fuOXWCCiQgtMeXGWAysBpj67aAWVVBFTPKEBJv8z8LfL6kukbJRlLgd8dCcZ8Ysz4obrDzdh8tFqW725XMfOa7XxP4dXzq7c47CSdZA5qYBiGOYZp39wBvH3c9yviHgCjgN8v83HuQ7K+AQ8H6QeBusdqdnG6nXNcnNNihpzwJ86YjsdFwh852MIXBt1Vo26AKmJQKNOH7keBk8qg3N3rUxiSbWrAgnlBtEw96o+YkFLablZpLSuXlSkZD5ySCRY8PoEfJGvOTZc/gE0mS87ZPBTeOXZBrKXmHp7Y7VuNyiorBWeI2QCquIx1GC3dDiOwW6zbGnKnqOo2js3CRO/WjXkDMq09LD7LEMO8Ye3n6yMlE6RlrmqIc+OzdrguGwuqJ9keyYj6uRS+700DfjzmwudRLhrEO7I3Jv4ncWHuuW6i03Tp/SSj3f1itRHc5jfHgw6+L1Sko4hS9v73kp14SiddFTvkweEMx2X16jRFatIlkphJiWsYknksMb7qOfECL5iaZmyB42i2tpbebbgZtxFX3E4t2ywTiQs8IZFuIBO+rdxMRYUbBN0JB9ia+vz5QJAMLY+foFFAkOtOASFJtHUfyZaGy53ecLWJx9k+/2GDEUeFPY2PfiZUMo/1fndtdwOpbxozz3kQYO1JN9iaovwFGIBVMWBYeR0eNgYi90wiwp2r5Y3koG3tJgG1pgDbhnwzrFrrhWZ5YUhN3pkdB0q1rSUOdDC2M7AUdzI3EERaHbnzGmEa6yyrikFklgOI1GrggZywIRCUyYg6IGjbMJuMMR6CsEUNMrbuDAx02uJlXLDv2FVtv1kteFCtRZ0XeO4oRkadoKhD7Gp+9urP4Os2+k6fwqkz+fp6D75j+J66NR8Bil/c3f27DBs9FRvFbDLLJkO1sy+bnbyROBTAAgvRcCBqtwUg58NAepzlrqlZdWy57tK8TEvhkO+P7dm60WBBnWgwO8BDlUtdZjXWIrXUZUzEgK0sAmQXoLaIARn3+o/Z7TSowMO6LOuR6pMAjgh2r9tjg/M9NgAd75nJT+iVNLti5+h4fb2uVmviY4M1u/6c+nlanO9/Ac6JLdi5Cddp/bKK3vMo1EIz0o0SIrWkGy0Eshl/83u/kBqKymJox6Dur7wjAbp93d1fVlv21vP3SOnplrvEVd9zaeglU7XuKHKPbqLbqi43nEq0c/os2341hoataWBp3lewqjaVI7Ny8Jba2JvLM7Y6v5IHEdDfCmmpVQ/Zacr9ifnCpxFVcWbWx210V/VQvy07UZM9QJXTU6btQWoDquE9QDKCqSMi6GGZcZIRgUkdCIW1sl+lolhcKFRBVjiuarardowdW/XhOsq35GOELbXzSlnR6umuuxcVcH9l3MCKuNHWn1qMG71dyg1k/hVZD07yRKrK+rKPXzT7rQuA+1o/dlGXnS74MoIxjtVRtNXTXN2X6mVgZ+cx2JhYplXercW4uRiwWFda825tbTtzDVa4aohY/858kbDL3tW9Me+1VwCuZr3X1pSFrwGSgn7qY1ppCEYOdlOL78xfBoxrqLmtPUgDekt0LXXvZa90a/17dCP+fZFZLFRoQ9x7+eZSLd/QgdIDNNehB61pLb9KprRqykdbt+zRZadQ9U1aUG6pdjdwY8tqWkiGrheS8dP9H3hJ0LH/Mzno4T8=</diagram><diagram id="qz6xZkkN5_TWD1aOfnxG" name="Chart Init">7Zlbd6IwEMc/jY/u4Rarj/XWdtf2dLVb6754ogRJRUJD8PbpN0AQEEqt22r19EkymYTwn/klA5bUxmx5RaFj3hIdWSVF0pcltVlSFFlSq/zHt6xCC9AuQsOEYl04xYYeXqNopLB6WEduypERYjHspI1jYttozFI2SClZpN0MYqXv6sAJyhh6Y2hlrX2sMzO0VoEU268RnpjRnWVJ9Mxg5CwMrgl1skiY1FZJbVBCWHg1WzaQ5YsX6fJIbyvPjy910NJbDz+f5tPhqFYOJ2u/Z8jmESiy2d5T15V+D9eHvzpTZIyacDKd33ejqV22ivRCOpdPNAllJpkQG1qt2FqnxLN15M8q8Vbs0yHE4UaZG58RYyuRC9BjhJtMNrNEL1pi9uQP/wFEa5DoaS7FzEFjFTVsRleJQX5zkOyLhwWtaNyO0kU6EI+OhRALYtZ6tG4icN+/braf3VpnLSSWGKQTxAp0FX6+mIk0FIG5QmSG+CK5A0UWZHiezlUoUn6y8YvDyi9EZPOjXLTqObQ8caeGCSnzqaMIMh7LTBZYFgfUj/bCxAz1HBjIsuB7RDqW0HVCag289HPinYLPEWVoWSiR6FWr4inEPhRRuUhALUxmgufI9j+aTpWhWbu7af/BHdIe12WFyWpZORVy9iegKLOTBOTqczQCiladIOCOMGz4C8C2y6A/w1Y442DJb2NgYMtqEIvQYKyqA1TVNW53GSVTlOipKiO1UvlMTippTuQcUDa2JCnaB5Dirgee8XteGbVbtNcd9EC565TVY5IiJziJqfkqZ0xuripZwnJ1VY5FWO5qtAxhA1725UW+A0e8xkyfIhae2Px6zBVEnJS6n++YF3GXomOGdT1MDOTiNRwF8/naOwTbLHgWUC+BZm40irIyA9amEhU3SRV7ecCVpR+VFHFCiZ1lFzPf+0+ScCGG4fL4b8dls4D9Q1XJ2QxP5TQ7MUbBjozGuQT2yZ5LSuEq4SCoyCaXuI+mpA8JDWy9O7zPn1+EK/jMVC6KQyKVu8h1iO0G0rWzh7pJZiPPfftAP1QZq4LD1bG5GXrxTf5r5Beduh9G/mFO5ywnm/o3OFHRuZS/2hZfmnrs8rd2KoB9MChgR1CqXwoU8Doo0OC16Y2N2bmwsv2qCORjs1LNqO/rjaE/0HN0yLL71Nf/UgVqhzviKw9Dp+24y9Z1o1+TXjztL+18f+R9fefK1WvXj7xHewEvWnXezjVCBqHonLeuDTyH2Lpyv3eeDGT7w1L0nTcJS1F6Hh6WolXnweKy4K+RM+VE+jxOeDP+MzR8wY//UlZb/wA=</diagram><diagram id="6Hx3QUBt-kPyE_5nGTOz" name="Chart update">7V1de6I4FP41XrqPIYD2sq2dzu52OrPTbWc6d1GiMgPExVi1v34DJvKRCDgVidaryoGEcM55k/OVtAWv/eVtiKaTT8TBXsvoOMsW7LcMA3Rgj/2JKCtOsc3umjIOXYfTEsKD+4pFU06duw6eZR6khHjUnWaJQxIEeEgzNBSGZJF9bES87FunaIwlwsMQeTL1m+vQyZraszoJ/SN2xxPxZtDhd3wkHuaE2QQ5ZJEiwZsWvA4Joetf/vIaexH3BF+e/hn5n6f/9nHnqW+5l9R+as/b684+7NJk8wkhDuhvdz1//bX8e/X9H9SfI2vY7X9ZPF61Tf5pdCX4hR3GPn5JQjohYxIg7yahXoVkHjg46rXDrpJn7giZMiJgxJ+Y0hXXBTSnhJEm1Pf4Xbx06feo+R8Wv3pO3ekvec/xxUpcBDRcpRpFl8/pe0mz+Eq0q8g6zuIZmYdDzoj//po/0sHHr5O7Ob15fqIfe9jlLO5QFI4x74+O/Vn38da9/wFfbs0uvvpx3xbPRcxMqSEXzC0mPmaDZA+E2EPUfcnqKuIqP948l4iV/eCSVUu5aNQvyJvzN13hsRsw0uPUQRTLSuB5DJ+RsBcTl+KHKYq5smBzRFaUaDZdg3bkLiOV2JHfLzikeFnIIX4X9vhH8HmoDQVOFylUc9IkBWhBewtTldCxztDZBh0lvxTQUT5nNAWdolGnoHNPqDuKBjDAIxLiLQhKJA3KUTRyPe+aeCSM20LHwj3HZPQZDckvnLrTMwbQtuuEmZ2FGTBklG1oaZiZdcEMSAJ4ZuZEg9ADKeAlMCyDXgZ4CQ63QC+nEKPeEA+HKoUY9CzTqgGsRkWwQq3A2j1PybVI2dZKyoY0I1yjYMgaRlL8IM/EE+IP5rPyWfhQpovRtOUCJQY+/HKnjDLfw1pWFxctI8fFxlemi2OZbfY8a9gVZ42eVrOGLc8aIY61vRN1bHT62MPxJcMAmrEvi2MSbMFlE0s4i0MPYTQwJ5KfaBRin7zE17yVbJpogZ68XQeroseuza4DEqc0hY8mi3WvIuxAY7GHomFvd6BuPOwzDs1OzJGysoAzgQJw5kEdqXOsbzfAgaoRC6CXFwTkmEV/y5ImDL4OXoOQ/WJjQNFadhzrmNmruI5ZtcHqvZqBQuvL4WHpBQ/Z/cmtSHdoReb0ZFaiHGQsu2nHCTQap/m9+F2zK5FVFWp6RWqAyvhTyv4ODbCXSy157jhgv4eMh5iB5SpSeXeIvEt+w3cdZ60aeOa+okHcX8T9KXGZPRl1bl21rL5SHoWKKYFrk57mb2mlM8Aq0LWZwsCelQEe76ky63nnX6KvST1CRqN4Kc/JZjOGN4jLksR1XJE1GzYcWTPOTu2OM1vVYJKhl1cL5HBSLB72qiCKBk29CAvMoCDLKFvViZPtdBKRhih4QZqGicwcoLqNB1kNeEbUbjmdynl2QytEGbLXujHL0YhZAKdlleeR1lMkhQ6MNLtJpB2hVS4AVI40vRxgQ1i55SUVepjlQjP3Y5ZbupvhxnuNKFUHlF6pRTHuFKAuA9dnbyZBZPzhINLP43CheoqA6mFdqJNPUzRe3FU5nKSZiSi8+9NVjX1PqJUFrdmEKgeivuJ1/irAi5a6MGPmE8JmrMgD53Pv23yFQ1n+F43H46FxLLjaNz6q1lRAoBc+SosqeML3xIsqQMdUYOegVRWwUXPlCL1mAaVyzOlVVQHlNUnrXJZQzL04zTawzCzyWpo70ULNjjaXBVRbbw5bJn402yn2PUVVrWyBeqXbYWllCzcLTssqyBvUQLXB4sBWwXsN4cGq+Vyol8cJ5XyuAEmyH0BLb/Iir/xVKyJrU37zvbqTsKo7KVivi/IXuJNx6vU0l408cmDjgRjzRDY7N+pgCunsz8FM/KALUTy8m+NzGYZolXqAO3WyX8TfZJs51RQmzoeqDUBJAysfSck1YD/Wg67TcbPdm+nXTz9fP49+DL7Z9v3ysTvciFn7xUNjdVcyVq81Rwxb3qQyi8fgIzdwg7GWrroF8vBUhCHrctWVsj0XyW0FTREWSjFjNIWZolGXmWknFvSX3HvlBpa63HulIBqtlDuMg1MEh1LYNFbvVjTqrbA5LbhIJzjZqhxZXW6NUgDnip66K3pUSbUjWNDklNqfgUtd5MUjYPIPZc3R/mRCoNo0UZc1qDx8stH42y4Rg99HQdGhm6WHczZWzKEcjQwCbaqxi7RrL3nlLjBhBjyidy0Sy8rPNyVxbSkDONT6pnWE7k04bawApGjUacHHtYhTb74+S5dJKNroN6NRnYGWgQvpEF2gcKUOulQdzylQe8bA3tcgdZzXzJ2atzH8RRdrEPJWiTB3jVhbuQB0Sfg5P6yi4PO+Jm45t7JxAxlkw5PdWdg+ZFpLyXk5vdhwVmuXNXPPuFeUFimf62q19r2Dcpaq0io6JXzPs/muk7Bxof0kLFeofRHmU3KU5igkvu6mlJFLoLYPuG9OvbydN0fthu3uUWEb6I9teVt5ysBi+nQi9hWAWdbWeEQKu0z+vdBaTMl/aYI3/wM=</diagram><diagram id="_1jcRxh_d02XbuYfSdjN" name="Chart Events">3Vpbc6IwFP41PtrhLvvYqrU72227a2d2uy87ESKkjYQJ8frrN4EgUBC1VdHtgyUnF5LvfN/JIdDSu5PFgILQ/05ciFua4i5aeq+laaqi2/yfsCwTi2l0EoNHkSsbZYYhWsG0p7ROkQujQkNGCGYoLBodEgTQYQUboJTMi83GBBfvGgIPlgxDB+Cy9RdymZ9YbVPJ7HcQeX56Z1WRNROQNpaGyAcumedMer+ldykhLLmaLLoQC/BSXB6JYdz9fMPfQwSfn17bg6+PT+1ksNt9uqyXQGHAPjz0b3IbrOw/9w+vU2fV9WZ/ekRtp0tjyxQv6HL4ZJFQ5hOPBAD3M+sNJdPAhWJUhZeyNveEhNyocuMrZGwpuQCmjHCTzyZY1sIFYr9F9ytTll5yNb2FHDkuLNNCwOgy10kUX/J1Wbe4lPbbEToJcUSm1IE1eKUMBtSDrK6dkTQUaOZ4KD0zgGQC+Sx5AwoxYGhWJCuQnPfW7dZdnwjiC9EUqU8jJadUp5qW0yGSmcpeGTv4RW4amSnmzB78kROeATyVS+jPYDzBn9CBfF1umWAYc+0LIs19xOAwBDHicx5+ijQBUZgEhDFaCLrt6csZpAwuasGXtbpdBDHFcJ6LF9Lk50KFrWz2VgHnGlCH5jPpPz7YULn5+mOo+9po4LXNSxHlocVllNVVCZB2aHHt6q7aaedE8EAYGosZjOCYUCg18c6pmcvU7WIYI4y7BBMa99VdE9quwe0Ro+QN5mpsbaRb1jHVYm0IOTm5rG15vRjH0ks5CL3wjKNBDak5BWV62raxFba1bJc7+MZWJ6mt0tObkt639orCO+S+0M7fv4NQvR4MrPXqzj5Snj592dXLlbgqTXm5btY5fXdB4PCOwou35bjqk8loGm2PqafLJxpOKPQSgMM3FMZJGpcC/dzOdCwUzXepbVVadrR9plIVnUuJNgeOGtaOUcM6q6hhbc7KwJhB+l8nZUZFyDmtWLT/Xyx1W+fWRKoxsdTNOieWOxC43Cl8hp/XyalYrze+RagXk5EemPbmjnvEl7OivVmi/TNFnidSIj6D882NjE6R+Fbj4d5ukvcfe94+1ZNYXa60VS/mWelFLT+KbTpquQcjiN8d6GLkBfza4RByZek3gvDIAfhaVkyQ6ybMgBFagVE8ngA/FOfX8WLMm5bZq3RHHS1Lylq/b5I3aeVf6VQprq1cWXbHLKhOjvTRI/y0CRmPI/jZ0/lqd13M652G1HVeu5Fafk5/IGcsrpReB1FXR9PVy1JX+QGz64PAu5BDqXUKcYJDqTrt5eDrkQCW6X72rwstu2Ekq19A8atrbnzCUw8FQpJA/KLA5UGBiQc7IIwxY/nFSCyQC4WhwBN11IuuHEln8cWG+KHTsns4ZmzzoUggPLpPbKrycXFDKp2tKPEfr3FB5K8T82M5n9+v4Hw9zQnymbdS4f0v+3ufF7OvS5KolX2jo/f/AQ==</diagram><diagram id="IEXjfTlYIfaVPTfT2BSW" name="Scale Update">7VxbU9s4FP41eWTH8t2P5dZOh7I7S7stTx0RK4mKbWUcBRJ+/UqO7NhSCAr4CmEGiI9v8tH3nYvOcUbWWbz6nML57BsJUTQyjXA1ss5HpgkMy2f/uGQtJK7tbSTTFIdCthXc4CeUnyqkSxyiReVASkhE8bwqHJMkQWNakcE0JY/VwyYkqt51DqdIEdyMYaRKf+KQzjZS3zG28i8IT2f5nYEh9sQwP1gIFjMYkseSyLoYWWcpIXTzKV6doYhrL9dLSN2/Z+6P35Of/vLh6ov1359fwcnmYpeHnFI8QooS+upLf326vP7qBEsv+W1cGPG3ZOo/nbimeDa6zhWGQqY/sUlSOiNTksDoYis9TckyCRG/rMG2tsdcETJnQsCEfxClawEGuKSEiWY0jsRetML0Fz/9L0ds3Zb2nK/ElbONtdjQ1IHQ1YIs0zHa8+A5FGE6RXSfgsSBXCslQAkVf0YkRjRdswNSFEGKH6qogwK80+K47QSxD2KODpgvcd0HGC3FnU7RFCdM9GMeQorU2YwixjQ+a48zTNHNHGZqeWRsr84JXMw39JvgFZ/bAxX+gFKKVns1JPZavuCTsCgnpisEjyV+CtGsRM1cVrtSXXsoJGBTka5LJ/HN2/K+7WnZVkPkcbXZ49TNHnHqPwSzJykwZZsSpoApgWUzVHGahJdiHG+AkErMf9EC8SEuMl/E0bWLn1sYgZc52hglXVl9OyhZqLTMSbsxTjqKQm8ydYY4RskCk2QxFF0aXevSMxRVHe3bXvvm6Nq3oBv7JrvCzRM1Zt28TqNEUILPFkz9BlCgCSCvX+GlZylW95rsnPsreMcyxWoEGeFpwj6PmQ5RygTcaGLm/T6JHTEOww000AI/wbvselz7cw7c7Fmc05FzvnM+9gJTMc9FPinuMiqnbLvM9gkDDHC9CstEWPha7uaHkMkkiwTq56U/mOxtaLzMDWxPeJmPu8TLc0ghk0Q4xow6DO9wPOOzeqmGRTMS3y0XHYZEcsZnd5zwec5QeFMz/j3dxM2ze4V/T02vrgnFEz6COzQhKeJ0uBJceEtaMMFRdEYikmbnWqGD/NBm8gVNyT0q7fHNO8t1G2SNLbFmB2laTiO8j8oaW5c1br9YY6teA7HQLMYJX5AIqx6kj8m0zIEe5NLBRyWBq0sCv18kcJ93HXDC2PD+PUf3q3k+UHT7QVjja7KmZwlHPu4Say5Wc5iEfAQwmaIMTQxMvOzLGcF0weYCJ1N+5Qn7kyDEJ28QbqUo8XZHkMGUoGomSD4TLxPE6hVB8nE/n5GcLnEUfsfj+3fjV+TShtV5NOa7H5U2li5taq/Avm3C1AXmjCdMVANVWgN+9wGVPxTg92Tl19ct6QFQe0lGr6bnuRJYGm5Z8NUKezUxev8OzO487gvUMOIWqfo+Vlv3cbug7MvesK16vVcFmg8kADVcsA/Mo3toCEJB7ZURzZYP2T08A6EXLxS03BoXWEcsHhaq6Bapu4Ji2wjKFVLuBYTxPOuqpP3NGmQn4HRewQsGU8HrCRUD3cpfUZhqm4vAkLskmjbnalHxjCScFYKN/B/h42G/UdYlxgGXZkvDfaSpnBS4nScFwDi6zAPDt5x+GkTtyGkCq2WvWejkmfJ/zs2UUPacJBkIO/3u2ekpej3m7IczVt+16nbVbFt5LfYjucnNZn97eUE+xKPRbwBC/epJKUZeMiHZ1LCnvsfzIq3pZTOvlNV4u7IaY4dBLoQNqHMwTVm9oY5uN1f/qKP2c13iiL9wUiwG8O8NgOt+xjN2IC3rgc7jGXCMZ+pglG6nFwAtvRTtuPJSgWyBm85AwNEuN4Yi02wHRUoea3pt57FqL2Kx/IsS/oJfT197yl8zyk19oJr6YIelD5qz9OprNJkmN22bvdal/DLMjmWAVl8hK6z4u1kHlSOToPMmp+JuR/+h6z+AdptTW/5DiUKAbN9eW8hu3xPlb4Qf8aiLxxxlGnisPc/UQ5FpyParcRSZiue4xDT3Ej0tZsvr8MDovJpdQKakyPxb0Iwx4RHiIL8QDYAdawI1BTdsc/uFhRtEb7/30br4Hw==</diagram><diagram id="c8UZMIniomCoghozd-Fr" name="Chart destroy">7ZjbctowEIafhst2fMI4lw2QdtrS6QzTNrlU8NpWI1seWQa7T18JSz5gIKQFEjK5wvtLK0u7+7EaD+xxXHxkKI1m1AcysAy/GNiTgWWZhu2JH6mUlTJ0RpUQMuyrSY0wx39Aeyo1xz5knYmcUsJx2hUXNElgwTsaYoyuutMCSrpvTVEIPWG+QKSv/sI+jyrVs0aN/glwGOk3m+5VNRIjPVmdJIuQT1ctyZ4O7DGjlFdPcTEGIoOn41L53ewYrTfGIOGHOMROdmM8/PzxxboNZt7sw+frRfhOrZLxUh8YfHF+ZVLGIxrSBJFpo14zmic+yFUNYTVzvlKaCtEU4m/gvFTJRDmnQop4TNQoFJjfSvf3Q2XdtUYmhVp5bZTaSDgrW07SvGuPNW5rS/tV55OH2hk2HQOaswXsiZWlyg+xEPieeU6dXEEF0BjEfoQfA4I4Xnb3gVR5hvW8JoPiQSXxCQlVm1wikqs3XUOIE0kgZJzRsp9wQgRMMrGrCHOYp2gdhZXguZs2lKUVYQEuZPpVbJfAOBT7o9uPhnKwPUWH+nvQsKxarCkpamGmtaOHz37j4WAe/rfOlet3isWb64pwrM2K2Mh1xZ/y2kh3vY1/rwCnB9A3ynEgT3YPAWUw2cFRUwbm4ywFmJAxJZStfW1/CJ7vCF0u/QCtEc+6t133SLC53dCadp8209qCm3Mq3IaXgtsRsTH1NeaxPuKehC93owgcw+ouUR3gZHy5Pb5qoMQlLk4JcHjZPcoxredtUqNLoeYFNCnvQNhMY3sNnOfW5u1uOijgwF5Pz7GMPjzn7TlXb/Qc3quMQ/HZUQXnwUdvcxs/GRcpegXcjJ6bG31v2RbkPMFJxpFc5OIjbTuni7Qwmw8+1Y2q+WxmT/8C</diagram></mxfile>(No newline at end of file)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/plugins.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/plugins.md
@@ -0,0 +1,203 @@
+# Plugins
+
+Plugins are the most efficient way to customize or change the default behavior of a chart. They have been introduced at [version 2.1.0](https://github.com/chartjs/Chart.js/releases/tag/2.1.0) (global plugins only) and extended at [version 2.5.0](https://github.com/chartjs/Chart.js/releases/tag/v2.5.0) (per chart plugins and options).
+
+## Using plugins
+
+Plugins can be shared between chart instances:
+
+```javascript
+const plugin = { /* plugin implementation */ };
+
+// chart1 and chart2 use "plugin"
+const chart1 = new Chart(ctx, {
+    plugins: [plugin]
+});
+
+const chart2 = new Chart(ctx, {
+    plugins: [plugin]
+});
+
+// chart3 doesn't use "plugin"
+const chart3 = new Chart(ctx, {});
+```
+
+Plugins can also be defined directly in the chart `plugins` config (a.k.a. *inline plugins*):
+
+:::warning
+*inline* plugins are not registered. Some plugins require registering, i.e. can't be used *inline*.
+:::
+
+```javascript
+const chart = new Chart(ctx, {
+    plugins: [{
+        beforeInit: function(chart, args, options) {
+            //..
+        }
+    }]
+});
+```
+
+However, this approach is not ideal when the customization needs to apply to many charts.
+
+## Global plugins
+
+Plugins can be registered globally to be applied on all charts (a.k.a. *global plugins*):
+
+```javascript
+Chart.register({
+    // plugin implementation
+});
+```
+
+:::warning
+*inline* plugins can't be registered globally.
+:::
+
+## Configuration
+
+### Plugin ID
+
+Plugins must define a unique id in order to be configurable.
+
+This id should follow the [npm package name convention](https://docs.npmjs.com/files/package.json#name):
+
+- can't start with a dot or an underscore
+- can't contain any non-URL-safe characters
+- can't contain uppercase letters
+- should be something short, but also reasonably descriptive
+
+If a plugin is intended to be released publicly, you may want to check the [registry](https://www.npmjs.com/search?q=chartjs-plugin-) to see if there's something by that name already. Note that in this case, the package name should be prefixed by `chartjs-plugin-` to appear in Chart.js plugin registry.
+
+### Plugin options
+
+Plugin options are located under the `options.plugins` config and are scoped by the plugin ID: `options.plugins.{plugin-id}`.
+
+```javascript
+const chart = new Chart(ctx, {
+    options: {
+        foo: { ... },           // chart 'foo' option
+        plugins: {
+            p1: {
+                foo: { ... },   // p1 plugin 'foo' option
+                bar: { ... }
+            },
+            p2: {
+                foo: { ... },   // p2 plugin 'foo' option
+                bla: { ... }
+            }
+        }
+    }
+});
+```
+
+#### Disable plugins
+
+To disable a global plugin for a specific chart instance, the plugin options must be set to `false`:
+
+```javascript
+Chart.register({
+    id: 'p1',
+    // ...
+});
+
+const chart = new Chart(ctx, {
+    options: {
+        plugins: {
+            p1: false   // disable plugin 'p1' for this instance
+        }
+    }
+});
+```
+
+To disable all plugins for a specific chart instance, set `options.plugins` to `false`:
+
+```javascript
+const chart = new Chart(ctx, {
+    options: {
+        plugins: false // all plugins are disabled for this instance
+    }
+});
+```
+
+#### Plugin defaults
+
+You can set default values for your plugin options in the `defaults` entry of your plugin object. In the example below the canvas will always have a lightgreen backgroundColor unless the user overrides this option in `options.plugins.custom_canvas_background_color.color`.
+
+```javascript
+const plugin = {
+    id: 'custom_canvas_background_color',
+    beforeDraw: (chart, args, options) => {
+        const {ctx} = chart;
+        ctx.save();
+        ctx.globalCompositeOperation = 'destination-over';
+        ctx.fillStyle = options.color;
+        ctx.fillRect(0, 0, chart.width, chart.height);
+        ctx.restore();
+    },
+    defaults: {
+        color: 'lightGreen'
+    }
+}
+```
+
+## Plugin Core API
+
+Read more about the [existing plugin extension hooks](../api/interfaces/Plugin).
+
+### Chart Initialization
+
+Plugins are notified during the initialization process. These hooks can be used to set up data needed for the plugin to operate.
+
+![Chart.js init flowchart](./init_flowchart.png)
+
+### Chart Update
+
+Plugins are notified throughout the update process.
+
+![Chart.js update flowchart](./update_flowchart.png)
+
+### Scale Update
+
+Plugins are notified throughout the scale update process.
+
+![Chart.js scale update flowchart](./scale_flowchart.png)
+
+### Rendering
+
+Plugins can interact with the chart throughout the render process. The rendering process is documented in the flowchart below. Each of the green processes is a plugin notification. The red lines indicate how cancelling part of the render process can occur when a plugin returns `false` from a hook. Not all hooks are cancelable, however, in general most `before*` hooks can be cancelled.
+
+![Chart.js render pipeline flowchart](./render_flowchart.png)
+
+### Event Handling
+
+Plugins can interact with the chart during the event handling process. The event handling flow is documented in the flowchart below. Each of the green processes is a plugin notification. If a plugin makes changes that require a re-render, the plugin can set `args.changed` to `true` to indicate that a render is needed. The built-in tooltip plugin uses this method to indicate when the tooltip has changed.
+
+![Chart.js event handling flowchart](./event_flowchart.png)
+
+### Chart destroy
+
+Plugins are notified during the destroy process. These hooks can be used to destroy things that the plugin made and used during its life.
+The `destroy` hook has been deprecated since Chart.js version 3.7.0, use the `afterDestroy` hook instead.
+
+![Chart.js destroy flowchart](./destroy_flowchart.png)
+
+## TypeScript Typings
+
+If you want your plugin to be statically typed, you must provide a `.d.ts` TypeScript declaration file. Chart.js provides a way to augment built-in types with user-defined ones, by using the concept of "declaration merging".
+
+When adding a plugin, `PluginOptionsByType` must contain the declarations for the plugin.
+
+For example, to provide typings for the [`canvas backgroundColor plugin`](../configuration/canvas-background.md), you would add a `.d.ts` containing:
+
+```ts
+import {ChartType, Plugin} from 'chart.js';
+
+declare module 'chart.js' {
+  interface PluginOptionsByType<TType extends ChartType> {
+    customCanvasBackgroundColor?: {
+      color?: string
+    }
+  }
+}
+```
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/publishing.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/publishing.md
@@ -0,0 +1,37 @@
+# Publishing an extension
+
+If you are planning on publishing an extension for Chart.js, here are some pointers.
+
+## Awesome
+
+You'd probably want your extension to be listed in the [awesome](https://github.com/chartjs/awesome).
+
+Note the minimum extension age requirement of 30 days.
+
+## ESM
+
+If you are utilizing ESM, you probably still want to publish a UMD bundle of your extension. Because Chart.js v3 is tree shakeable, the interface is a bit different.
+UMD package's global `Chart` includes everything, while ESM package exports all the things separately.
+Fortunately, most of the exports can be mapped automatically by the bundlers.
+
+But not the helpers.
+
+In UMD, helpers are available through `Chart.helpers`. In ESM, they are imported from `chart.js/helpers`.
+
+For example `import {isNullOrUndef} from 'chart.js/helpers'` is available at `Chart.helpers.isNullOrUndef` for UMD.
+
+### Rollup
+
+`output.globals` can be used to convert the helpers.
+
+```js
+module.exports = {
+  // ...
+  output: {
+    globals: {
+      'chart.js': 'Chart',
+      'chart.js/helpers': 'Chart.helpers'
+    }
+  }
+};
+```
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/render_flowchart.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/render_flowchart.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/scale_flowchart.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/scale_flowchart.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/update_flowchart.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/update_flowchart.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/updates.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/developers/updates.md
@@ -0,0 +1,106 @@
+# Updating Charts
+
+It's pretty common to want to update charts after they've been created. When the chart data or options are changed, Chart.js will animate to the new data values and options.
+
+## Adding or Removing Data
+
+Adding and removing data is supported by changing the data array. To add data, just add data into the data array as seen in this example, to remove it you can pop it again.
+
+```javascript
+function addData(chart, label, newData) {
+    chart.data.labels.push(label);
+    chart.data.datasets.forEach((dataset) => {
+        dataset.data.push(newData);
+    });
+    chart.update();
+}
+
+function removeData(chart) {
+    chart.data.labels.pop();
+    chart.data.datasets.forEach((dataset) => {
+        dataset.data.pop();
+    });
+    chart.update();
+}
+```
+
+## Updating Options
+
+To update the options, mutating the `options` property in place or passing in a new options object are supported.
+
+- If the options are mutated in place, other option properties would be preserved, including those calculated by Chart.js.
+- If created as a new object, it would be like creating a new chart with the options - old options would be discarded.
+
+```javascript
+function updateConfigByMutating(chart) {
+    chart.options.plugins.title.text = 'new title';
+    chart.update();
+}
+
+function updateConfigAsNewObject(chart) {
+    chart.options = {
+        responsive: true,
+        plugins: {
+            title: {
+                display: true,
+                text: 'Chart.js'
+            }
+        },
+        scales: {
+            x: {
+                display: true
+            },
+            y: {
+                display: true
+            }
+        }
+    };
+    chart.update();
+}
+```
+
+Scales can be updated separately without changing other options.
+To update the scales, pass in an object containing all the customization including those unchanged ones.
+
+Variables referencing any one from `chart.scales` would be lost after updating scales with a new `id` or the changed `type`.
+
+```javascript
+function updateScales(chart) {
+    let xScale = chart.scales.x;
+    let yScale = chart.scales.y;
+    chart.options.scales = {
+        newId: {
+            display: true
+        },
+        y: {
+            display: true,
+            type: 'logarithmic'
+        }
+    };
+    chart.update();
+    // need to update the reference
+    xScale = chart.scales.newId;
+    yScale = chart.scales.y;
+}
+```
+
+You can update a specific scale by its id as well.
+
+```javascript
+function updateScale(chart) {
+    chart.options.scales.y = {
+        type: 'logarithmic'
+    };
+    chart.update();
+}
+```
+
+Code sample for updating options can be found in [line-datasets.html](https://www.chartjs.org/docs/latest/samples/area/line-datasets.html).
+
+## Preventing Animations
+
+Sometimes when a chart updates, you may not want an animation. To achieve this you can call `update` with `'none'` as mode.
+
+```javascript
+myChart.update('none');
+```
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/general/accessibility.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/general/accessibility.md
@@ -0,0 +1,39 @@
+# Accessibility
+
+Chart.js charts are rendered on user provided `canvas` elements. Thus, it is up to the user to create the `canvas` element in a way that is accessible. The `canvas` element has support in all browsers and will render on screen but the `canvas` content will not be accessible to screen readers.
+
+With `canvas`, the accessibility has to be added with ARIA attributes on the `canvas` element or added using internal fallback content placed within the opening and closing canvas tags.
+
+This [website](http://pauljadam.com/demos/canvas.html) has a more detailed explanation of `canvas` accessibility as well as in depth examples.
+
+## Examples
+
+These are some examples of **accessible** `canvas` elements.
+
+By setting the `role` and `aria-label`, this `canvas` now has an accessible name.
+
+```html
+<canvas id="goodCanvas1" width="400" height="100" aria-label="Hello ARIA World" role="img"></canvas>
+```
+
+This `canvas` element has a text alternative via fallback content.
+
+```html
+<canvas id="okCanvas2" width="400" height="100">
+    <p>Hello Fallback World</p>
+</canvas>
+```
+
+These are some bad examples of **inaccessible** `canvas` elements.
+
+This `canvas` element does not have an accessible name or role.
+
+```html
+<canvas id="badCanvas1" width="400" height="100"></canvas>
+```
+
+This `canvas` element has inaccessible fallback content.
+
+```html
+<canvas id="badCanvas2" width="400" height="100">Your browser does not support the canvas element.</canvas>
+```
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/general/colors-plugin-palette.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/general/colors-plugin-palette.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/general/colors.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/general/colors.md
@@ -0,0 +1,158 @@
+# Colors
+
+Charts support three color options:
+* for geometric elements, you can change *background* and *border* colors;
+* for textual elements, you can change the *font* color.
+
+Also, you can change the whole [canvas background](../configuration/canvas-background.md).
+
+## Default colors
+
+If a color is not specified, a global default color from `Chart.defaults` is used:
+
+| Name | Type | Description | Default value
+| ---- | ---- | ----------- | -------------
+| `backgroundColor` | [`Color`](../api/#color) | Background color | `rgba(0, 0, 0, 0.1)`
+| `borderColor` | [`Color`](../api/#color) | Border color | `rgba(0, 0, 0, 0.1)`
+| `color` | [`Color`](../api/#color) | Font color | `#666`
+
+You can reset default colors by updating these properties of `Chart.defaults`:
+
+```javascript
+Chart.defaults.backgroundColor = '#9BD0F5';
+Chart.defaults.borderColor = '#36A2EB';
+Chart.defaults.color = '#000';
+```
+
+### Per-dataset color settings
+
+If your chart has multiple datasets, using default colors would make individual datasets indistinguishable. In that case, you can set `backgroundColor` and `borderColor` for each dataset:
+
+```javascript
+const data = {
+  labels: ['A', 'B', 'C'],
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: [1, 2, 3],
+      borderColor: '#36A2EB',
+      backgroundColor: '#9BD0F5',
+    },
+    {
+      label: 'Dataset 2',
+      data: [2, 3, 4],
+      borderColor: '#FF6384',
+      backgroundColor: '#FFB1C1',
+    }
+  ]
+};
+```
+
+However, setting colors for each dataset might require additional work that you'd rather not do. In that case, consider using the following plugins with pre-defined or generated palettes.
+
+### Default color palette
+
+If you don't have any preference for colors, you can use the built-in `Colors` plugin. It will cycle through a palette of seven Chart.js brand colors:
+
+<div style="max-width: 500px;">
+
+![Colors plugin palette](./colors-plugin-palette.png)
+
+</div>
+
+All you need is to import and register the plugin:
+
+```javascript
+import { Colors } from 'chart.js';
+
+Chart.register(Colors);
+```
+
+:::tip Note
+
+If you are using the UMD version of Chart.js, this plugin will be enabled by default. You can disable it by setting the `enabled` option to `false`:
+
+```js
+const options = {
+  plugins: {
+    colors: {
+      enabled: false
+    }
+  }
+};
+```
+
+:::
+
+### Dynamic datasets at runtime
+
+By default, the colors plugin only works when you initialize the chart without any colors for the border or background specified.
+If you want to force the colors plugin to always color your datasets, for example, when using dynamic datasets at runtime you will need to set the `forceOverride` option to true:
+
+```js
+const options = {
+  plugins: {
+    colors: {
+      forceOverride: true
+    }
+  }
+};
+```
+
+
+### Advanced color palettes
+
+See the [awesome list](https://github.com/chartjs/awesome#plugins) for plugins that would give you more flexibility defining color palettes.
+
+## Color formats
+
+You can specify the color as a string in either of the following notations:
+
+| Notation | Example | Example with transparency
+| -------- | ------- | -------------------------
+| [Hexadecimal](https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color) | `#36A2EB` | `#36A2EB80`
+| [RGB](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/rgb) or [RGBA](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/rgba) | `rgb(54, 162, 235)` | `rgba(54, 162, 235, 0.5)`
+| [HSL](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/hsl) or [HSLA](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/hsla) | `hsl(204, 82%, 57%)` | `hsla(204, 82%, 57%, 0.5)`
+
+Alternatively, you can pass a [CanvasPattern](https://developer.mozilla.org/en-US/docs/Web/API/CanvasPattern) or [CanvasGradient](https://developer.mozilla.org/en/docs/Web/API/CanvasGradient) object instead of a string color to achieve some interesting effects.
+
+## Patterns and Gradients
+
+For example, you can fill a dataset with a pattern from an image.
+
+```javascript
+const img = new Image();
+img.src = 'https://example.com/my_image.png';
+img.onload = () => {
+  const ctx = document.getElementById('canvas').getContext('2d');
+  const fillPattern = ctx.createPattern(img, 'repeat');
+
+  const chart = new Chart(ctx, {
+    data: {
+      labels: ['Item 1', 'Item 2', 'Item 3'],
+      datasets: [{
+        data: [10, 20, 30],
+        backgroundColor: fillPattern
+      }]
+    }
+  });
+};
+```
+Pattern fills can help viewers with vision deficiencies (e.g., color-blindness or partial sight) [more easily understand your data](http://betweentwobrackets.com/data-graphics-and-colour-vision/).
+
+You can use the [Patternomaly](https://github.com/ashiguruma/patternomaly) library to generate patterns to fill datasets:
+
+```javascript
+const chartData = {
+  datasets: [{
+    data: [45, 25, 20, 10],
+    backgroundColor: [
+      pattern.draw('square', '#ff6384'),
+      pattern.draw('circle', '#36a2eb'),
+      pattern.draw('diamond', '#cc65fe'),
+      pattern.draw('triangle', '#ffce56')
+    ]
+  }],
+  labels: ['Red', 'Blue', 'Purple', 'Yellow']
+};
+```
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/general/data-structures.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/general/data-structures.md
@@ -0,0 +1,216 @@
+# Data structures
+
+The `data` property of a dataset can be passed in various formats. By default, that `data` is parsed using the associated chart type and scales.
+
+If the `labels` property of the main `data` property is used, it has to contain the same amount of elements as the dataset with the most values. These labels are used to label the index axis (default `x` axis). The values for the labels have to be provided in an array.
+The provided labels can be of the type string or number to be rendered correctly. If you want multiline labels, you can provide an array with each line as one entry in the array.
+
+## Primitive[]
+
+```javascript
+const cfg = {
+  type: 'bar',
+  data: {
+    datasets: [{
+      data: [20, 10],
+    }],
+    labels: ['a', 'b']
+  }
+}
+```
+
+When `data` is an array of numbers, values from the `labels` array at the same index are used for the index axis (`x` for vertical, `y` for horizontal charts).
+
+## Array[]
+
+```javascript
+const cfg = {
+  type: 'line',
+  data: {
+    datasets: [{
+      data: [[10, 20], [15, null], [20, 10]]
+    }]
+  }
+}
+```
+
+When `data` is an array of arrays (or what TypeScript would call tuples), the first element of each tuple is the index  (`x` for vertical, `y` for horizontal charts) and the second element is the value (`y` by default).
+
+## Object[]
+
+```javascript
+const cfg = {
+  type: 'line',
+  data: {
+    datasets: [{
+      data: [{x: 10, y: 20}, {x: 15, y: null}, {x: 20, y: 10}]
+    }]
+  }
+}
+```
+
+```javascript
+const cfg = {
+  type: 'line',
+  data: {
+    datasets: [{
+      data: [{x: '2016-12-25', y: 20}, {x: '2016-12-26', y: 10}]
+    }]
+  }
+}
+```
+
+```javascript
+const cfg = {
+  type: 'bar',
+  data: {
+    datasets: [{
+      data: [{x: 'Sales', y: 20}, {x: 'Revenue', y: 10}]
+    }]
+  }
+}
+```
+
+This is also the internal format used for parsed data. In this mode, parsing can be disabled by specifying `parsing: false` at chart options or dataset. If parsing is disabled, data must be sorted and in the formats the associated chart type and scales use internally.
+
+The values provided must be parsable by the associated scales or in the internal format of the associated scales. For example, the `category` scale uses integers as an internal format, where each integer represents an index in the labels array; but, if parsing is enabled, it can also parse string labels.
+
+`null` can be used for skipped values.
+
+## Object[] using custom properties
+
+```javascript
+const cfg = {
+  type: 'bar',
+  data: {
+    datasets: [{
+      data: [{id: 'Sales', nested: {value: 1500}}, {id: 'Purchases', nested: {value: 500}}]
+    }]
+  },
+  options: {
+    parsing: {
+      xAxisKey: 'id',
+      yAxisKey: 'nested.value'
+    }
+  }
+}
+```
+
+When using the pie/doughnut, radar or polarArea chart type, the `parsing` object should have a `key` item that points to the value to look at. In this example, the doughnut chart will show two items with values 1500 and 500.
+
+```javascript
+const cfg = {
+  type: 'doughnut',
+  data: {
+    datasets: [{
+      data: [{id: 'Sales', nested: {value: 1500}}, {id: 'Purchases', nested: {value: 500}}]
+    }]
+  },
+  options: {
+    parsing: {
+      key: 'nested.value'
+    }
+  }
+}
+```
+
+If the key contains a dot, it needs to be escaped with a double slash:
+
+```javascript
+const cfg = {
+  type: 'line',
+  data: {
+    datasets: [{
+      data: [{'data.key': 'one', 'data.value': 20}, {'data.key': 'two', 'data.value': 30}]
+    }]
+  },
+  options: {
+    parsing: {
+      xAxisKey: 'data\\.key',
+      yAxisKey: 'data\\.value'
+    }
+  }
+}
+```
+
+:::warning
+When using object notation in a radar chart, you still need a `labels` array with labels for the chart to show correctly.
+:::
+
+## Object
+
+```javascript
+const cfg = {
+  type: 'line',
+  data: {
+    datasets: [{
+      data: {
+        January: 10,
+        February: 20
+      }
+    }]
+  }
+}
+```
+
+In this mode, the property name is used for the `index` scale and value for the `value` scale. For vertical charts, the index scale is `x` and value scale is `y`.
+
+## Dataset Configuration
+
+| Name | Type | Description
+| ---- | ---- | -----------
+| `label` | `string` | The label for the dataset which appears in the legend and tooltips.
+| `clip` | `number`\|`object` | How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. 0 = clip at chartArea. Clipping can also be configured per side: clip: {left: 5, top: false, right: -2, bottom: 0}
+| `order` | `number` | The drawing order of dataset. Also affects order for stacking, tooltip and legend.
+| `stack` | `string` | The ID of the group to which this dataset belongs to (when stacked, each group will be a separate stack). Defaults to dataset `type`.
+| `parsing` | `boolean`\|`object` | How to parse the dataset. The parsing can be disabled by specifying parsing: false at chart options or dataset. If parsing is disabled, data must be sorted and in the formats the associated chart type and scales use internally.
+| `hidden`  | `boolean` | Configure the visibility of the dataset. Using `hidden: true` will hide the dataset from being rendered in the Chart.
+
+### parsing
+
+```javascript
+const data = [{x: 'Jan', net: 100, cogs: 50, gm: 50}, {x: 'Feb', net: 120, cogs: 55, gm: 75}];
+const cfg = {
+  type: 'bar',
+  data: {
+    labels: ['Jan', 'Feb'],
+    datasets: [{
+      label: 'Net sales',
+      data: data,
+      parsing: {
+        yAxisKey: 'net'
+      }
+    }, {
+      label: 'Cost of goods sold',
+      data: data,
+      parsing: {
+        yAxisKey: 'cogs'
+      }
+    }, {
+      label: 'Gross margin',
+      data: data,
+      parsing: {
+        yAxisKey: 'gm'
+      }
+    }]
+  },
+};
+```
+
+## TypeScript
+
+When using TypeScript, if you want to use a data structure that is not the default data structure, you will need to pass it to the type interface when instantiating the data variable.
+
+```ts
+import {ChartData} from 'chart.js';
+
+const datasets: ChartData <'bar', {key: string, value: number} []> = {
+  datasets: [{
+    data: [{key: 'Sales', value: 20}, {key: 'Revenue', value: 10}],
+    parsing: {
+      xAxisKey: 'key',
+      yAxisKey: 'value'
+    }
+  }],
+};
+```
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/general/fonts.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/general/fonts.md
@@ -0,0 +1,41 @@
+# Fonts
+
+There are special global settings that can change all the fonts on the chart. These options are in `Chart.defaults.font`. The global font settings only apply when more specific options are not included in the config.
+
+For example, in this chart, the text will have a font size of 16px except for the labels in the legend.
+
+```javascript
+Chart.defaults.font.size = 16;
+let chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        plugins: {
+            legend: {
+                labels: {
+                    // This more specific font property overrides the global property
+                    font: {
+                        size: 14
+                    }
+                }
+            }
+        }
+    }
+});
+```
+
+| Name | Type | Default | Description
+| ---- | ---- | ------- | -----------
+| `family` | `string` | `"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif"` | Default font family for all text, follows CSS font-family options.
+| `size` | `number` | `12` | Default font size (in px) for text. Does not apply to radialLinear scale point labels.
+| `style` | `string` | `'normal'` | Default font style. Does not apply to tooltip title or footer. Does not apply to chart title. Follows CSS font-style options (i.e. normal, italic, oblique, initial, inherit).
+| `weight` | `normal` \| `bold` \| `lighter` \| `bolder` \| `number` | `undefined` | Default font weight (boldness). (see [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight)).
+| `lineHeight` | `number`\|`string` | `1.2` | Height of an individual line of text (see [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/line-height)).
+
+## Missing Fonts
+
+If a font is specified for a chart that does exist on the system, the browser will not apply the font when it is set. If you notice odd fonts appearing in your charts, check that the font you are applying exists on your system. See [issue 3318](https://github.com/chartjs/Chart.js/issues/3318) for more details.
+
+## Loading Fonts
+
+If a font is not cached and needs to be loaded, charts that use the font will need to be updated once the font is loaded. This can be accomplished using the [Font Loading APIs](https://developer.mozilla.org/en-US/docs/Web/API/CSS_Font_Loading_API). See [issue 8020](https://github.com/chartjs/Chart.js/issues/8020) for more details.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/general/options.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/general/options.md
@@ -0,0 +1,184 @@
+# Options
+
+## Option resolution
+
+Options are resolved from top to bottom, using a context dependent route.
+
+### Chart level options
+
+* options
+* overrides[`config.type`]
+* defaults
+
+### Dataset level options
+
+`dataset.type` defaults to `config.type`, if not specified.
+
+* dataset
+* options.datasets[`dataset.type`]
+* options
+* overrides[`config.type`].datasets[`dataset.type`]
+* defaults.datasets[`dataset.type`]
+* defaults
+
+### Dataset animation options
+
+* dataset.animation
+* options.datasets[`dataset.type`].animation
+* options.animation
+* overrides[`config.type`].datasets[`dataset.type`].animation
+* defaults.datasets[`dataset.type`].animation
+* defaults.animation
+
+### Dataset element level options
+
+Each scope is looked up with `elementType` prefix in the option name first, then without the prefix. For example, `radius` for `point` element is looked up using `pointRadius` and if that does not hit, then `radius`.
+
+* dataset
+* options.datasets[`dataset.type`]
+* options.datasets[`dataset.type`].elements[`elementType`]
+* options.elements[`elementType`]
+* options
+* overrides[`config.type`].datasets[`dataset.type`]
+* overrides[`config.type`].datasets[`dataset.type`].elements[`elementType`]
+* defaults.datasets[`dataset.type`]
+* defaults.datasets[`dataset.type`].elements[`elementType`]
+* defaults.elements[`elementType`]
+* defaults
+
+### Scale options
+
+* options.scales
+* overrides[`config.type`].scales
+* defaults.scales
+* defaults.scale
+
+### Plugin options
+
+A plugin can provide `additionalOptionScopes` array of paths to additionally look for its options in. For root scope, use empty string: `''`. Most core plugins also take options from root scope.
+
+* options.plugins[`plugin.id`]
+* (options.[`...plugin.additionalOptionScopes`])
+* overrides[`config.type`].plugins[`plugin.id`]
+* defaults.plugins[`plugin.id`]
+* (defaults.[`...plugin.additionalOptionScopes`])
+
+## Scriptable Options
+
+Scriptable options also accept a function which is called for each of the underlying data values and that takes the unique argument `context` representing contextual information (see [option context](options.md#option-context)).
+A resolver is passed as second parameter, that can be used to access other options in the same context.
+
+:::tip Note
+
+The `context` argument should be validated in the scriptable function, because the function can be invoked in different contexts. The `type` field is a good candidate for this validation.
+
+:::
+
+Example:
+
+```javascript
+color: function(context) {
+    const index = context.dataIndex;
+    const value = context.dataset.data[index];
+    return value < 0 ? 'red' :  // draw negative values in red
+        index % 2 ? 'blue' :    // else, alternate values in blue and green
+        'green';
+},
+borderColor: function(context, options) {
+    const color = options.color; // resolve the value of another scriptable option: 'red', 'blue' or 'green'
+    return Chart.helpers.color(color).lighten(0.2);
+}
+```
+
+## Indexable Options
+
+Indexable options also accept an array in which each item corresponds to the element at the same index. Note that if there are less items than data, the items are looped over. In many cases, using a [function](#scriptable-options) is more appropriate if supported.
+
+Example:
+
+```javascript
+color: [
+    'red',    // color for data at index 0
+    'blue',   // color for data at index 1
+    'green',  // color for data at index 2
+    'black',  // color for data at index 3
+    //...
+]
+```
+
+## Option Context
+
+The option context is used to give contextual information when resolving options and currently only applies to [scriptable options](#scriptable-options).
+The object is preserved, so it can be used to store and pass information between calls.
+
+There are multiple levels of context objects:
+
+* `chart`
+  * `dataset`
+    * `data`
+  * `scale`
+    * `tick`
+    * `pointLabel` (only used in the radial linear scale)
+  * `tooltip`
+
+Each level inherits its parent(s) and any contextual information stored in the parent is available through the child.
+
+The context object contains the following properties:
+
+### chart
+
+* `chart`: the associated chart
+* `type`: `'chart'`
+
+### dataset
+
+In addition to [chart](#chart)
+
+* `active`: true if an element is active (hovered)
+* `dataset`: dataset at index `datasetIndex`
+* `datasetIndex`: index of the current dataset
+* `index`: same as `datasetIndex`
+* `mode`: the update mode
+* `type`: `'dataset'`
+
+### data
+
+In addition to [dataset](#dataset)
+
+* `active`: true if an element is active (hovered)
+* `dataIndex`: index of the current data
+* `parsed`: the parsed data values for the given `dataIndex` and `datasetIndex`
+* `raw`: the raw data values for the given `dataIndex` and `datasetIndex`
+* `element`: the element (point, arc, bar, etc.) for this data
+* `index`: same as `dataIndex`
+* `type`: `'data'`
+
+### scale
+
+In addition to [chart](#chart)
+
+* `scale`: the associated scale
+* `type`: `'scale'`
+
+### tick
+
+In addition to [scale](#scale)
+
+* `tick`: the associated tick object
+* `index`: tick index
+* `type`: `'tick'`
+
+### pointLabel
+
+In addition to [scale](#scale)
+
+* `label`: the associated label value
+* `index`: label index
+* `type`: `'pointLabel'`
+
+### tooltip
+
+In addition to [chart](#chart)
+
+* `tooltip`: the tooltip object
+* `tooltipItems`: the items the tooltip is displaying
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/general/padding.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/general/padding.md
@@ -0,0 +1,66 @@
+# Padding
+
+Padding values in Chart options can be supplied in a couple of different formats.
+
+## Number
+
+If this value is a number, it is applied to all sides (left, top, right, bottom).
+
+For example, defining a 20px padding to all sides of the chart:
+
+```javascript
+let chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        layout: {
+            padding: 20
+        }
+    }
+});
+```
+
+## {top, left, bottom, right} object
+
+If this value is an object, the `left` property defines the left padding. Similarly, the `right`, `top` and `bottom` properties can also be specified.
+Omitted properties default to `0`.
+
+Let's say you wanted to add 50px of padding to the left side of the chart canvas, you would do:
+
+```javascript
+let chart = new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        layout: {
+            padding: {
+                left: 50
+            }
+        }
+    }
+});
+```
+
+## {x, y} object
+
+This is a shorthand for defining left/right and top/bottom to the same values.
+
+For example, 10px left / right and 4px top / bottom padding on a Radial Linear Axis [tick backdropPadding](../axes/radial/linear.md#linear-radial-axis-specific-tick-options):
+
+```javascript
+let chart = new Chart(ctx, {
+    type: 'radar',
+    data: data,
+    options: {
+        scales: {
+          r: {
+            ticks: {
+              backdropPadding: {
+                  x: 10,
+                  y: 4
+              }
+            }
+        }
+    }
+});
+```
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/general/performance.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/general/performance.md
@@ -0,0 +1,194 @@
+# Performance
+
+Chart.js charts are rendered on `canvas` elements, which makes rendering quite fast. For large datasets or performance sensitive applications, you may wish to consider the tips below.
+
+## Data structure and format
+
+### Parsing
+
+Provide prepared data in the internal format accepted by the dataset and scales, and set `parsing: false`. See [Data structures](data-structures.md) for more information.
+
+### Data normalization
+
+Chart.js is fastest if you provide data with indices that are unique, sorted, and consistent across datasets and provide the `normalized: true` option to let Chart.js know that you have done so. Even without this option, it can sometimes still be faster to provide sorted data.
+
+### Decimation
+
+Decimating your data will achieve the best results. When there is a lot of data to display on the graph, it doesn't make sense to show tens of thousands of data points on a graph that is only a few hundred pixels wide.
+
+The [decimation plugin](../configuration/decimation.md) can be used with line charts to decimate data before the chart is rendered. This will provide the best performance since it will reduce the memory needed to render the chart.
+
+Line charts are able to do [automatic data decimation during draw](#automatic-data-decimation-during-draw), when certain conditions are met. You should still consider decimating data yourself before passing it in for maximum performance since the automatic decimation occurs late in the chart life cycle.
+
+## Tick Calculation
+
+### Rotation
+
+[Specify a rotation value](../axes/cartesian/index.md#tick-configuration) by setting `minRotation` and `maxRotation` to the same value, which avoids the chart from having to automatically determine a value to use.
+
+### Sampling
+
+Set the [`ticks.sampleSize`](../axes/cartesian/index.md#tick-configuration) option. This will determine how large your labels are by looking at only a subset of them in order to render axes more quickly. This works best if there is not a large variance in the size of your labels.
+
+## Disable Animations
+
+If your charts have long render times, it is a good idea to disable animations. Doing so will mean that the chart needs to only be rendered once during an update instead of multiple times. This will have the effect of reducing CPU usage and improving general page performance.
+Line charts use Path2D caching when animations are disabled and Path2D is available.
+
+To disable animations
+
+```javascript
+new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        animation: false
+    }
+});
+```
+
+## Specify `min` and `max` for scales
+
+If you specify the `min` and `max`, the scale does not have to compute the range from the data.
+
+```javascript
+new Chart(ctx, {
+    type: 'line',
+    data: data,
+    options: {
+        scales: {
+            x: {
+                type: 'time',
+                min: new Date('2019-01-01').valueOf(),
+                max: new Date('2019-12-31').valueOf()
+            },
+            y: {
+                type: 'linear',
+                min: 0,
+                max: 100
+            }
+        }
+    }
+});
+```
+
+## Parallel rendering with web workers
+
+As of 2023, modern browser have the ability to [transfer rendering control of a canvas](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/transferControlToOffscreen) to a web worker. Web workers can use the [OffscreenCanvas API](https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas) to render from a web worker onto canvases in the DOM. Chart.js is a canvas-based library and supports rendering in a web worker - just pass an OffscreenCanvas into the Chart constructor instead of a Canvas element.
+
+By moving all Chart.js calculations onto a separate thread, the main thread can be freed up for other uses. Some tips and tricks when using Chart.js in a web worker:
+
+* Transferring data between threads can be expensive, so ensure that your config and data objects are as small as possible. Try generating them on the worker side if you can (workers can make HTTP requests!) or passing them to your worker as ArrayBuffers, which can be transferred quickly from one thread to another.
+* You can't transfer functions between threads, so if your config object includes functions you'll have to strip them out before transferring and then add them back later.
+* You can't access the DOM from worker threads, so Chart.js plugins that use the DOM (including any mouse interactions) will likely not work.
+* Ensure that you have a fallback if you support older browsers.
+* Resizing the chart must be done manually. See an example in the worker code below.
+
+Example main thread code:
+
+```javascript
+const config = {};
+const canvas = new HTMLCanvasElement();
+const offscreenCanvas = canvas.transferControlToOffscreen();
+
+const worker = new Worker('worker.js');
+worker.postMessage({canvas: offscreenCanvas, config}, [offscreenCanvas]);
+```
+
+Example worker code, in `worker.js`:
+
+```javascript
+onmessage = function(event) {
+    const {canvas, config} = event.data;
+    const chart = new Chart(canvas, config);
+
+    // Resizing the chart must be done manually, since OffscreenCanvas does not include event listeners.
+    canvas.width = 100;
+    canvas.height = 100;
+    chart.resize();
+};
+```
+
+## Line Charts
+
+### Leave Bézier curves disabled
+
+If you are drawing lines on your chart, disabling Bézier curves will improve render times since drawing a straight line is more performant than a Bézier curve. Bézier curves are disabled by default.
+
+### Automatic data decimation during draw
+
+Line element will automatically decimate data, when `tension`, `stepped`, and `borderDash` are left set to their default values (`false`, `0`, and `[]` respectively). This improves rendering speed by skipping drawing of invisible line segments.
+
+### Enable spanGaps
+
+If you have a lot of data points, it can be more performant to enable `spanGaps`. This disables segmentation of the line, which can be an unneeded step.
+
+To enable `spanGaps`:
+
+```javascript
+new Chart(ctx, {
+    type: 'line',
+    data: {
+        datasets: [{
+            spanGaps: true // enable for a single dataset
+        }]
+    },
+    options: {
+        spanGaps: true // enable for all datasets
+    }
+});
+```
+
+### Disable Line Drawing
+
+If you have a lot of data points, it can be more performant to disable rendering of the line for a dataset and only draw points. Doing this means that there is less to draw on the canvas which will improve render performance.
+
+To disable lines:
+
+```javascript
+new Chart(ctx, {
+    type: 'line',
+    data: {
+        datasets: [{
+            showLine: false // disable for a single dataset
+        }]
+    },
+    options: {
+        showLine: false // disable for all datasets
+    }
+});
+```
+
+### Disable Point Drawing
+
+If you have a lot of data points, it can be more performant to disable rendering of the points for a dataset and only draw lines. Doing this means that there is less to draw on the canvas which will improve render performance.
+
+To disable point drawing:
+
+```javascript
+new Chart(ctx, {
+    type: 'line',
+    data: {
+        datasets: [{
+            pointRadius: 0 // disable for a single dataset
+        }]
+    },
+    options: {
+        datasets: {
+            line: {
+                pointRadius: 0 // disable for all `'line'` datasets
+            }
+        },
+        elements: {
+            point: {
+                radius: 0 // default to disabled in all datasets
+            }
+        }
+    }
+});
+```
+
+## When transpiling with Babel, consider using `loose` mode
+
+Babel 7.9 changed the way classes are constructed. It is slow, unless used with `loose` mode.
+[More information](https://github.com/babel/babel/issues/11356)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/index.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/index.md
@@ -0,0 +1,94 @@
+# Getting Started
+
+Let's get started with Chart.js!
+
+* **[Follow a step-by-step guide](./usage) to get up to speed with Chart.js**
+* [Install Chart.js](./installation) from npm or a CDN
+* [Integrate Chart.js](./integration) with bundlers, loaders, and front-end frameworks
+* [Use Chart.js from Node.js](./using-from-node-js)
+
+Alternatively, see the example below or check [samples](../samples).
+
+## Create a Chart
+
+In this example, we create a bar chart for a single dataset and render it on an HTML page. Add this code snippet to your page:
+
+```html
+<div>
+  <canvas id="myChart"></canvas>
+</div>
+
+<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
+
+<script>
+  const ctx = document.getElementById('myChart');
+
+  new Chart(ctx, {
+    type: 'bar',
+    data: {
+      labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
+      datasets: [{
+        label: '# of Votes',
+        data: [12, 19, 3, 5, 2, 3],
+        borderWidth: 1
+      }]
+    },
+    options: {
+      scales: {
+        y: {
+          beginAtZero: true
+        }
+      }
+    }
+  });
+</script>
+```
+
+You should get a chart like this:
+
+![demo](./preview.png)
+
+Let's break this code down.
+
+First, we need to have a canvas in our page. It's recommended to give the chart its own container for [responsiveness](../configuration/responsive.md).
+
+```html
+<div>
+  <canvas id="myChart"></canvas>
+</div>
+```
+
+Now that we have a canvas, we can include Chart.js from a CDN.
+
+```html
+<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
+```
+
+Finally, we can create a chart. We add a script that acquires the `myChart` canvas element and instantiates `new Chart` with desired configuration: `bar` chart type, labels, data points, and options.
+
+```html
+<script>
+  const ctx = document.getElementById('myChart');
+
+  new Chart(ctx, {
+    type: 'bar',
+    data: {
+      labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
+      datasets: [{
+        label: '# of Votes',
+        data: [12, 19, 3, 5, 2, 3],
+        borderWidth: 1
+      }]
+    },
+    options: {
+      scales: {
+        y: {
+          beginAtZero: true
+        }
+      }
+    }
+  });
+</script>
+```
+
+You can see all the ways to use Chart.js in the [step-by-step guide](./usage).
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/installation.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/installation.md
@@ -0,0 +1,36 @@
+# Installation
+
+## npm
+
+[![npm](https://img.shields.io/npm/v/chart.js.svg?style=flat-square&maxAge=600)](https://npmjs.com/package/chart.js)
+[![npm](https://img.shields.io/npm/dm/chart.js.svg?style=flat-square&maxAge=600)](https://npmjs.com/package/chart.js)
+
+```sh
+npm install chart.js
+```
+
+## CDN
+
+### CDNJS
+
+[![cdnjs](https://img.shields.io/cdnjs/v/Chart.js.svg?style=flat-square&maxAge=600)](https://cdnjs.com/libraries/Chart.js)
+
+Chart.js built files are available on [CDNJS](https://cdnjs.com/):
+
+<https://cdnjs.com/libraries/Chart.js>
+
+### jsDelivr
+
+[![jsdelivr](https://img.shields.io/npm/v/chart.js.svg?label=jsdelivr&style=flat-square&maxAge=600)](https://cdn.jsdelivr.net/npm/chart.js@latest/dist/) [![jsdelivr hits](https://data.jsdelivr.com/v1/package/npm/chart.js/badge)](https://www.jsdelivr.com/package/npm/chart.js)
+
+Chart.js built files are also available through [jsDelivr](https://www.jsdelivr.com/):
+
+<https://www.jsdelivr.com/package/npm/chart.js?path=dist>
+
+## GitHub
+
+[![github](https://img.shields.io/github/release/chartjs/Chart.js.svg?style=flat-square&maxAge=600)](https://github.com/chartjs/Chart.js/releases/latest)
+
+You can download the latest version of [Chart.js on GitHub](https://github.com/chartjs/Chart.js/releases/latest).
+
+If you download or clone the repository, you must [build](../developers/contributing.md#building-and-testing) Chart.js to generate the dist files. Chart.js no longer comes with prebuilt release versions, so an alternative option to downloading the repo is **strongly** advised.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/integration.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/integration.md
@@ -0,0 +1,146 @@
+# Integration
+
+Chart.js can be integrated with plain JavaScript or with different module loaders. The examples below show how to load Chart.js in different systems.
+
+If you're using a front-end framework (e.g., React, Angular, or Vue), please see [available integrations](https://github.com/chartjs/awesome#integrations).
+
+## Script Tag
+
+```html
+<script src="path/to/chartjs/dist/chart.umd.min.js"></script>
+<script>
+    const myChart = new Chart(ctx, {...});
+</script>
+```
+
+## Bundlers (Webpack, Rollup, etc.)
+
+Chart.js is tree-shakeable, so it is necessary to import and register the controllers, elements, scales and plugins you are going to use.
+
+### Quick start
+
+If you don't care about the bundle size, you can use the `auto` package ensuring all features are available:
+
+```javascript
+import Chart from 'chart.js/auto';
+```
+
+### Bundle optimization
+
+When optimizing the bundle, you need to import and register the components that are needed in your application.
+
+The options are categorized into controllers, elements, plugins, scales. You can pick and choose many of these, e.g. if you are not going to use tooltips, don't import and register the `Tooltip` plugin. But each type of chart has its own bare-minimum requirements (typically the type's controller, element(s) used by that controller and scale(s)):
+
+* Bar chart
+  * `BarController`
+  * `BarElement`
+  * Default scales: `CategoryScale` (x), `LinearScale` (y)
+* Bubble chart
+  * `BubbleController`
+  * `PointElement`
+  * Default scales: `LinearScale` (x/y)
+* Doughnut chart
+  * `DoughnutController`
+  * `ArcElement`
+  * Not using scales
+* Line chart
+  * `LineController`
+  * `LineElement`
+  * `PointElement`
+  * Default scales: `CategoryScale` (x), `LinearScale` (y)
+* Pie chart
+  * `PieController`
+  * `ArcElement`
+  * Not using scales
+* PolarArea chart
+  * `PolarAreaController`
+  * `ArcElement`
+  * Default scale: `RadialLinearScale` (r)
+* Radar chart
+  * `RadarController`
+  * `LineElement`
+  * `PointElement`
+  * Default scale: `RadialLinearScale` (r)
+* Scatter chart
+  * `ScatterController`
+  * `PointElement`
+  * Default scales: `LinearScale` (x/y)
+
+Available plugins:
+
+* [`Decimation`](../configuration/decimation.md)
+* `Filler` - used to fill area described by `LineElement`, see [Area charts](../charts/area.md)
+* [`Legend`](../configuration/legend.md)
+* [`SubTitle`](../configuration/subtitle.md)
+* [`Title`](../configuration/title.md)
+* [`Tooltip`](../configuration/tooltip.md)
+
+Available scales:
+
+* Cartesian scales (x/y)
+  * [`CategoryScale`](../axes/cartesian/category.md)
+  * [`LinearScale`](../axes/cartesian/linear.md)
+  * [`LogarithmicScale`](../axes/cartesian/logarithmic.md)
+  * [`TimeScale`](../axes/cartesian/time.md)
+  * [`TimeSeriesScale`](../axes/cartesian/timeseries.md)
+
+* Radial scales (r)
+  * [`RadialLinearScale`](../axes/radial/linear.md)
+
+### Helper functions
+
+If you want to use the helper functions, you will need to import these separately from the helpers package and use them as stand-alone functions.
+
+Example of [Converting Events to Data Values](../configuration/interactions.md#converting-events-to-data-values) using bundlers.
+
+```javascript
+import Chart from 'chart.js/auto';
+import { getRelativePosition } from 'chart.js/helpers';
+
+const chart = new Chart(ctx, {
+  type: 'line',
+  data: data,
+  options: {
+    onClick: (e) => {
+      const canvasPosition = getRelativePosition(e, chart);
+
+      // Substitute the appropriate scale IDs
+      const dataX = chart.scales.x.getValueForPixel(canvasPosition.x);
+      const dataY = chart.scales.y.getValueForPixel(canvasPosition.y);
+    }
+  }
+});
+```
+
+## CommonJS
+
+Because Chart.js is an ESM library, in CommonJS modules you should use a dynamic `import`:
+
+```javascript
+const { Chart } = await import('chart.js');
+```
+
+## RequireJS
+
+**Important:** RequireJS can load only [AMD modules](https://requirejs.org/docs/whyamd.html), so be sure to require one of the UMD builds instead (i.e. `dist/chart.umd.min.js`).
+
+```javascript
+require(['path/to/chartjs/dist/chart.umd.min.js'], function(Chart){
+    const myChart = new Chart(ctx, {...});
+});
+```
+
+:::tip Note
+
+In order to use the time scale, you need to make sure [one of the available date adapters](https://github.com/chartjs/awesome#adapters) and corresponding date library are fully loaded **after** requiring Chart.js. For this you can use nested requires:
+
+```javascript
+require(['chartjs'], function(Chart) {
+    require(['moment'], function() {
+        require(['chartjs-adapter-moment'], function() {
+            new Chart(ctx, {...});
+        });
+    });
+});
+```
+:::(No newline at end of file)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/preview.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/preview.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/usage-1.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/usage-1.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/usage-2.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/usage-2.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/usage-3.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/usage-3.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/usage-4.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/usage-4.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/usage-5.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/usage-5.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/usage-6.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/usage-6.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/usage-7.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/usage-7.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/usage-8.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/usage-8.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/usage.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/usage.md
@@ -0,0 +1,591 @@
+# Step-by-step guide
+
+Follow this guide to get familiar with all major concepts of Chart.js: chart types and elements, datasets, customization, plugins, components, and tree-shaking. Don't hesitate to follow the links in the text.
+
+We'll build a Chart.js data visualization with a couple of charts from scratch:
+
+![result](./usage-8.png)
+
+## Build a new application with Chart.js
+
+In a new folder, create the `package.json` file with the following contents:
+
+```json
+{
+  "name": "chartjs-example",
+  "version": "1.0.0",
+  "license": "MIT",
+  "scripts": {
+    "dev": "parcel src/index.html",
+    "build": "parcel build src/index.html"
+  },
+  "devDependencies": {
+    "parcel": "^2.6.2"
+  },
+  "dependencies": {
+    "@cubejs-client/core": "^0.31.0",
+    "chart.js": "^4.0.0"
+  }
+}
+```
+
+Modern front-end applications often use JavaScript module bundlers, so we’ve picked [Parcel](https://parceljs.org) as a nice zero-configuration build tool. We’re also installing Chart.js v4 and a JavaScript client for [Cube](https://cube.dev/?ref=eco-chartjs), an open-source API for data apps we’ll use to fetch real-world data (more on that later).
+
+Run `npm install`, `yarn install`, or `pnpm install` to install the dependencies, then create the `src` folder. Inside that folder, we’ll need a very simple `index.html` file:
+
+```html
+<!doctype html>
+<html lang="en">
+  <head>
+    <title>Chart.js example</title>
+  </head>
+  <body>
+    <!-- <div style="width: 500px;"><canvas id="dimensions"></canvas></div><br/> -->
+    <div style="width: 800px;"><canvas id="acquisitions"></canvas></div>
+
+    <!-- <script type="module" src="dimensions.js"></script> -->
+    <script type="module" src="acquisitions.js"></script>
+  </body>
+</html>
+```
+
+As you can see, Chart.js requires minimal markup: a `canvas` tag with an `id` by which we’ll reference the chart later. By default, Chart.js charts are [responsive](../configuration/responsive.md) and take the whole enclosing container. So, we set the width of the `div` to control chart width.
+
+Lastly, let’s create the `src/acquisitions.js` file with the following contents:
+
+```jsx
+import Chart from 'chart.js/auto'
+
+(async function() {
+  const data = [
+    { year: 2010, count: 10 },
+    { year: 2011, count: 20 },
+    { year: 2012, count: 15 },
+    { year: 2013, count: 25 },
+    { year: 2014, count: 22 },
+    { year: 2015, count: 30 },
+    { year: 2016, count: 28 },
+  ];
+
+  new Chart(
+    document.getElementById('acquisitions'),
+    {
+      type: 'bar',
+      data: {
+        labels: data.map(row => row.year),
+        datasets: [
+          {
+            label: 'Acquisitions by year',
+            data: data.map(row => row.count)
+          }
+        ]
+      }
+    }
+  );
+})();
+```
+
+Let’s walk through this code:
+
+- We import `Chart`, the main Chart.js class, from the special `chart.js/auto` path. It loads [all available Chart.js components](./integration) (which is very convenient) but disallows tree-shaking. We’ll address that later.
+- We instantiate a new `Chart` instance and provide two arguments: the canvas element where the chart would be rendered and the options object.
+- We just need to provide a chart type (`bar`) and provide `data` which consists of `labels` (often, numeric or textual descriptions of data points) and an array of `datasets` (Chart.js supports multiple datasets for most chart types). Each dataset is designated with a `label` and contains an array of data points.
+- For now, we only have a few entries of dummy data. So, we extract `year` and `count` properties to produce the arrays of `labels` and data points within the only dataset.
+
+Time to run the example with `npm run dev`, `yarn dev`, or `pnpm dev` and navigate to [localhost:1234](http://localhost:1234) in your web browser:
+
+![result](./usage-1.png)
+
+With just a few lines of code, we’ve got a chart with a lot of features: a [legend](../configuration/legend.md), [grid lines](../samples/scale-options/grid.md), [ticks](../samples/scale-options/ticks.md), and [tooltips](../configuration/tooltip.md) shown on hover. Refresh the web page a few times to see that the chart is also [animated](../configuration/animations.md#animations). Try clicking on the “Acquisitions by year” label to see that you’re also able to toggle datasets visibility (especially useful when you have multiple datasets). 
+
+### Simple customizations
+
+Let’s see how Chart.js charts can be customized. First, let’s turn off the animations so the chart appears instantly. Second, let’s hide the legend and tooltips since we have only one dataset and pretty trivial data.
+
+Replace the `new Chart(...);` invocation in `src/acquisitions.js` with the following snippet:
+
+```jsx
+  new Chart(
+    document.getElementById('acquisitions'),
+    {
+      type: 'bar',
+      options: {
+        animation: false,
+        plugins: {
+          legend: {
+            display: false
+          },
+          tooltip: {
+            enabled: false
+          }
+        }
+      },
+      data: {
+        labels: data.map(row => row.year),
+        datasets: [
+          {
+            label: 'Acquisitions by year',
+            data: data.map(row => row.count)
+          }
+        ]
+      }
+    }
+  );
+```
+
+As you can see, we’ve added the `options` property to the second argument—that’s how you can specify all kinds of customization options for Chart.js. The [animation is disabled](../configuration/animations.md#disabling-animation) with a boolean flag provided via `animation`. Most chart-wide options (e.g., [responsiveness](../configuration/responsive.md) or [device pixel ratio](../configuration/device-pixel-ratio.md)) are configured like this.
+
+The legend and tooltips are hidden with boolean flags provided under the respective sections in `plugins`. Note that some of Chart.js features are extracted into plugins: self-contained, separate pieces of code. A few of them are available as a part of [Chart.js distribution](https://github.com/chartjs/Chart.js/tree/master/src/plugins), other plugins are maintained independently and can be located in the [awesome list](https://github.com/chartjs/awesome) of plugins, framework integrations, and additional chart types.
+
+You should be able to see the updated minimalistic chart in your browser.
+
+### Real-world data
+
+With hardcoded, limited-size, unrealistic data, it’s hard to show the full potential of Chart.js. Let’s quickly connect to a data API to make our example application closer to a production use case.
+
+Let’s create the `src/api.js` file with the following contents:
+
+```jsx
+import { CubejsApi } from '@cubejs-client/core';
+
+const apiUrl = 'https://heavy-lansford.gcp-us-central1.cubecloudapp.dev/cubejs-api/v1';
+const cubeToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjEwMDAwMDAwMDAsImV4cCI6NTAwMDAwMDAwMH0.OHZOpOBVKr-sCwn8sbZ5UFsqI3uCs6e4omT7P6WVMFw';
+
+const cubeApi = new CubejsApi(cubeToken, { apiUrl });
+
+export async function getAquisitionsByYear() {
+  const acquisitionsByYearQuery = {
+    dimensions: [
+      'Artworks.yearAcquired',
+    ],
+    measures: [
+      'Artworks.count'
+    ],
+    filters: [ {
+      member: 'Artworks.yearAcquired',
+      operator: 'set'
+    } ],
+    order: {
+      'Artworks.yearAcquired': 'asc'
+    }
+  };
+
+  const resultSet = await cubeApi.load(acquisitionsByYearQuery);
+
+  return resultSet.tablePivot().map(row => ({
+    year: parseInt(row['Artworks.yearAcquired']),
+    count: parseInt(row['Artworks.count'])
+  }));
+}
+
+export async function getDimensions() {
+  const dimensionsQuery = {
+    dimensions: [
+      'Artworks.widthCm',
+      'Artworks.heightCm'
+    ],
+    measures: [
+      'Artworks.count'
+    ],
+    filters: [
+      {
+        member: 'Artworks.classification',
+        operator: 'equals',
+        values: [ 'Painting' ]
+      },
+      {
+        member: 'Artworks.widthCm',
+        operator: 'set'
+      },
+      {
+        member: 'Artworks.widthCm',
+        operator: 'lt',
+        values: [ '500' ]
+      },
+      {
+        member: 'Artworks.heightCm',
+        operator: 'set'
+      },
+      {
+        member: 'Artworks.heightCm',
+        operator: 'lt',
+        values: [ '500' ]
+      }
+    ]
+  };
+
+  const resultSet = await cubeApi.load(dimensionsQuery);
+
+  return resultSet.tablePivot().map(row => ({
+    width: parseInt(row['Artworks.widthCm']),
+    height: parseInt(row['Artworks.heightCm']),
+    count: parseInt(row['Artworks.count'])
+  }));
+}
+```
+
+Let’s see what’s happening there:
+
+- We `import` the JavaScript client library for [Cube](https://cube.dev/?ref=eco-chartjs), an open-source API for data apps, configure it with the API URL (`apiUrl`) and the authentication token (`cubeToken`), and finally instantiate the client (`cubeApi`).
+- Cube API is hosted in [Cube Cloud](https://cube.dev/cloud/?ref=eco-chartjs) and connected to a database with a [public dataset](https://github.com/MuseumofModernArt/collection) of ~140,000 records representing all of the artworks in the collection of the [Museum of Modern Art](https://www.moma.org) in New York, USA. Certainly, a more real-world dataset than what we’ve got now.
+- We define a couple of asynchronous functions to fetch data from the API: `getAquisitionsByYear` and `getDimensions`. The first one returns the number of artworks by the year of acquisition, the other returns the number of artworks for every width-height pair (we’ll need it for another chart).
+- Let’s take a look at `getAquisitionsByYear`. First, we create a declarative, JSON-based query in the `acquisitionsByYearQuery` variable. As you can see, we specify that for every `yearAcquired` we’d like to get the `count` of artworks; `yearAcquired` has to be set (i.e., not undefined); the result set would be sorted by `yearAcquired` in the ascending order.
+- Second, we fetch the `resultSet` by calling `cubeApi.load` and map it to an array of objects with desired `year` and `count` properties.
+
+Now, let’s deliver the real-world data to our chart. Please apply a couple of changes to `src/acquisitions.js`: add an import and replace the definition of the `data` variable.
+
+```jsx
+import { getAquisitionsByYear } from './api'
+
+// ...
+
+const data = await getAquisitionsByYear();
+```
+
+Done! Now, our chart with real-world data looks like this. Looks like something interesting happened in 1964, 1968, and 2008!
+
+![result](./usage-2.png)
+
+We’re done with the bar chart. Let’s try another Chart.js chart type.
+
+### Further customizations
+
+Chart.js supports many common chart types.
+
+For instance, [Bubble chart](../charts/bubble.md) allows to display three dimensions of data at the same time: locations on `x` and `y` axes represent two dimensions, and the third dimension is represented by the size of the individual bubbles.
+
+To create the chart, stop the already running application, then go to `src/index.html`, and uncomment the following two lines:
+
+```html
+<div style="width: 500px;"><canvas id="dimensions"></canvas></div><br/>
+
+<script type="module" src="dimensions.js"></script>
+```
+
+Then, create the `src/dimensions.js` file with the following contents:
+
+```jsx
+import Chart from 'chart.js/auto'
+import { getDimensions } from './api'
+
+(async function() {
+  const data = await getDimensions();
+
+  new Chart(
+    document.getElementById('dimensions'),
+    {
+      type: 'bubble',
+      data: {
+        labels: data.map(x => x.year),
+        datasets: [
+          {
+            label: 'Dimensions',
+            data: data.map(row => ({
+              x: row.width,
+              y: row.height,
+              r: row.count
+            }))
+          }
+        ]
+      }
+    }
+  );
+})();
+```
+
+Probably, everything is pretty straightforward there: we get data from the API and render a new chart with the `bubble` type, passing three dimensions of data as `x`, `y`, and `r` (radius) properties.
+
+Now, reset caches with `rm -rf .parcel-cache` and start the application again with `npm run dev`, `yarn dev`, or `pnpm dev`. We can review the new chart now:
+
+![result](./usage-3.png)
+
+Well, it doesn’t look pretty.
+
+First of all, the chart is not square. Artworks’ width and height are equally important so we’d like to make the chart width equal to its height as well. By default, Chart.js charts have the [aspect ratio](../configuration/responsive.md) of either 1 (for all radial charts, e.g., a doughnut chart) or 2 (for all the rest). Let’s modify the aspect ratio for our chart:
+
+```jsx
+// ...
+
+	new Chart(
+    document.getElementById('dimensions'),
+    {
+      type: 'bubble',
+      options: {
+        aspectRatio: 1,
+      },
+
+// ...
+```
+
+Looks much better now:
+
+![result](./usage-4.png)
+
+However, it’s still not ideal. The horizontal axis spans from 0 to 500 while the vertical axis spans from 0 to 450. By default, Chart.js automatically adjusts the range (minimum and maximum values) of the axes to the values provided in the dataset, so the chart “fits” your data. Apparently, MoMa collection doesn’t have artworks in the range of 450 to 500 cm in height. Let’s modify the [axes configuration](../axes/) for our chart to account for that:
+
+```jsx
+// ...
+
+  new Chart(
+    document.getElementById('dimensions'),
+    {
+      type: 'bubble',
+      options: {
+        aspectRatio: 1,
+        scales: {
+          x: {
+            max: 500
+          },
+          y: {
+            max: 500
+          }
+        }
+      },
+
+// ...
+```
+
+Great! Behold the updated chart:
+
+![result](./usage-5.png)
+
+However, there’s one more nitpick: what are these numbers? It’s not very obvious that the units are centimetres. Let’s apply a [custom tick format](../axes/labelling.md#creating-custom-tick-formats) to both axes to make things clear. We’ll provide a callback function that would be called to format each tick value. Here’s the updated axes configuration:
+
+```jsx
+// ...
+
+  new Chart(
+    document.getElementById('dimensions'),
+    {
+      type: 'bubble',
+      options: {
+        aspectRatio: 1,
+        scales: {
+          x: {
+            max: 500,
+            ticks: {
+              callback: value => `${value / 100} m`
+            }
+          },
+          y: {
+            max: 500,
+            ticks: {
+              callback: value => `${value / 100} m`
+            }
+          }
+        }
+      },
+
+// ...
+```
+
+Perfect, now we have proper units on both axes:
+
+![result](./usage-6.png)
+
+### Multiple datasets
+
+Chart.js plots each dataset independently and allows to apply custom styles to them.
+
+Take a look at the chart: there’s a visible “line” of bubbles with equal `x` and `y` coordinates representing square artworks. It would be cool to put these bubbles in their own dataset and paint them differently. Also, we can separate “taller” artworks from “wider” ones and paint them differently, too. 
+
+Here’s how we can do that. Replace the `datasets` with the following code:
+
+```jsx
+// ...
+
+        datasets: [
+          {
+            label: 'width = height',
+            data: data
+              .filter(row => row.width === row.height)
+              .map(row => ({
+                x: row.width,
+                y: row.height,
+                r: row.count
+              }))
+          },
+          {
+            label: 'width > height',
+            data: data
+              .filter(row => row.width > row.height)
+              .map(row => ({
+                x: row.width,
+                y: row.height,
+                r: row.count
+              }))
+          },
+          {
+            label: 'width < height',
+            data: data
+              .filter(row => row.width < row.height)
+              .map(row => ({
+                x: row.width,
+                y: row.height,
+                r: row.count
+              }))
+          }
+        ]
+
+// ..
+```
+
+As you can see, we define three datasets with different labels. Each dataset gets its own slice of data extracted with `filter`. Now they are visually distinct and, as you already know, you can toggle their visibility independently.
+
+![result](./usage-7.png)
+
+Here we rely on the default color palette. However, keep in mind every chart type supports a lot of [dataset options](../charts/bubble.md#dataset-properties) that you can feel free to customize.
+
+### Plugins
+
+Another—and very powerful!—way to customize Chart.js charts is to use plugins. You can find some in the [plugin directory](https://github.com/chartjs/awesome#plugins) or create your own, ad-hoc ones. In Chart.js ecosystem, it’s idiomatic and expected to fine tune charts with plugins. For example, you can customize [canvas background](../configuration/canvas-background.md) or [add a border](../samples/plugins/chart-area-border.md) to it with simple ad-hoc plugins. Let’s try the latter.
+
+Plugins have an [extensive API](../developers/plugins.md) but, in a nutshell, a plugin is defined as an object with a `name` and one or more callback functions defined in the extension points. Insert the following snippet before and in place of the `new Chart(...);` invocation in `src/dimensions.js`:
+
+```jsx
+// ...
+
+  const chartAreaBorder = {
+    id: 'chartAreaBorder',
+
+    beforeDraw(chart, args, options) {
+      const { ctx, chartArea: { left, top, width, height } } = chart;
+
+      ctx.save();
+      ctx.strokeStyle = options.borderColor;
+      ctx.lineWidth = options.borderWidth;
+      ctx.setLineDash(options.borderDash || []);
+      ctx.lineDashOffset = options.borderDashOffset;
+      ctx.strokeRect(left, top, width, height);
+      ctx.restore();
+    }
+  };
+
+  new Chart(
+    document.getElementById('dimensions'),
+    {
+      type: 'bubble',
+      plugins: [ chartAreaBorder ],
+      options: {
+        plugins: {
+          chartAreaBorder: {
+            borderColor: 'red',
+            borderWidth: 2,
+            borderDash: [ 5, 5 ],
+            borderDashOffset: 2,
+          }
+        },
+        aspectRatio: 1,
+
+// ...
+```
+
+As you can see, in this `chartAreaBorder` plugin, we acquire the canvas context, save its current state, apply styles, draw a rectangular shape around the chart area, and restore the canvas state. We’re also passing the plugin in `plugins` so it’s only applied to this particular chart. We also pass the plugin options in `options.plugins.chartAreaBorder`; we could surely hardcode them in the plugin source code but it’s much more reusable this way.
+
+Our bubble chart looks fancier now:
+
+![result](./usage-8.png)
+
+### Tree-shaking
+
+In production, we strive to ship as little code as possible, so the end users can load our data applications faster and have better experience. For that, we’ll need to apply [tree-shaking](https://cube.dev/blog/how-to-build-tree-shakeable-javascript-libraries/?ref=eco-chartjs) which is fancy term for removing unused code from the JavaScript bundle.
+
+Chart.js fully supports tree-shaking with its component design. You can register all Chart.js components at once (which is convenient when you’re prototyping) and get them bundled with your application. Or, you can register only necessary components and get a minimal bundle, much less in size.
+
+Let’s inspect our example application. What’s the bundle size? You can stop the application and run `npm run build`, or `yarn build`, or `pnpm build`. In a few moments, you’ll get something like this:
+
+```bash
+% yarn build
+yarn run v1.22.17
+$ parcel build src/index.html
+✨ Built in 88ms
+
+dist/index.html              381 B   164ms
+dist/index.74a47636.js   265.48 KB   1.25s
+dist/index.ba0c2e17.js       881 B    63ms
+✨ Done in 0.51s.
+```
+
+We can see that Chart.js and other dependencies were bundled together in a single 265 KB file.
+
+To reduce the bundle size, we’ll need to apply a couple of changes to `src/acquisitions.js` and `src/dimensions.js`. First, we’ll need to remove the following import statement from both files: `import Chart from 'chart.js/auto'`.
+
+Instead, let’s load only necessary components and “register” them with Chart.js using `Chart.register(...)`. Here’s what we need in `src/acquisitions.js`:
+
+```jsx
+import {
+  Chart,
+  Colors,
+  BarController,
+  CategoryScale,
+  LinearScale,
+  BarElement,
+  Legend
+} from 'chart.js'
+
+Chart.register(
+  Colors,
+  BarController,
+  BarElement,
+  CategoryScale,
+  LinearScale,
+  Legend
+);
+```
+
+And here’s the snippet for `src/dimensions.js`:
+
+```jsx
+import {
+  Chart,
+  Colors,
+  BubbleController,
+  CategoryScale,
+  LinearScale,
+  PointElement,
+  Legend
+} from 'chart.js'
+
+Chart.register(
+  Colors,
+  BubbleController,
+  PointElement,
+  CategoryScale,
+  LinearScale,
+  Legend
+);
+```
+
+You can see that, in addition to the `Chart` class, we’re also loading a controller for the chart type, scales, and other chart elements (e.g., bars or points). You can look all available components up in the [documentation](./integration.md#bundle-optimization).
+
+Alternatively, you can follow Chart.js advice in the console. For example, if you forget to import `BarController` for your bar chart, you’ll see the following message in the browser console:
+
+```
+Unhandled Promise Rejection: Error: "bar" is not a registered controller.
+```
+
+Remember to carefully check for imports from `chart.js/auto` when preparing your application for production. It takes only one import like this to effectively disable tree-shaking.
+
+Now, let’s inspect our application once again. Run `yarn build` and you’ll get something like this:
+
+```bash
+% yarn build
+yarn run v1.22.17
+$ parcel build src/index.html
+✨ Built in 88ms
+
+dist/index.html              381 B   176ms
+dist/index.5888047.js    208.66 KB   1.23s
+dist/index.dcb2e865.js       932 B    58ms
+✨ Done in 0.51s.
+```
+
+By importing and registering only select components, we’ve removed more than 56 KB of unnecessary code. Given that other dependencies take ~50 KB in the bundle, tree-shaking helps remove ~25% of Chart.js code from the bundle for our example application. 
+
+## Next steps
+
+Now you’re familiar with all major concepts of Chart.js: chart types and elements, datasets, customization, plugins, components, and tree-shaking.
+
+Feel free to review many [examples of charts](../samples/information.md) in the documentation and check the [awesome list](https://github.com/chartjs/awesome) of Chart.js plugins and additional chart types as well as [framework integrations](https://github.com/chartjs/awesome#integrations) (e.g., React, Vue, Svelte, etc.). Also, don’t hesitate to join [Chart.js Discord](https://discord.gg/HxEguTK6av) and follow [Chart.js on Twitter](https://twitter.com/chartjs).
+
+Have fun and good luck building with Chart.js!(No newline at end of file)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/using-from-node-js.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/getting-started/using-from-node-js.md
@@ -0,0 +1,38 @@
+# Using from Node.js
+
+You can use Chart.js in Node.js for server-side generation of plots with help from an NPM package such as [node-canvas](https://github.com/Automattic/node-canvas) or [skia-canvas](https://skia-canvas.org/).
+
+Sample usage:
+
+```js
+import {CategoryScale, Chart, LinearScale, LineController, LineElement, PointElement} from 'chart.js';
+import {Canvas} from 'skia-canvas';
+import fsp from 'node:fs/promises';
+
+Chart.register([
+  CategoryScale,
+  LineController,
+  LineElement,
+  LinearScale,
+  PointElement
+]);
+
+const canvas = new Canvas(400, 300);
+const chart = new Chart(
+  canvas, // TypeScript needs "as any" here
+  {
+    type: 'line',
+    data: {
+      labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
+      datasets: [{
+        label: '# of Votes',
+        data: [12, 19, 3, 5, 2, 3],
+        borderColor: 'red'
+      }]
+    }
+  }
+);
+const pngBuffer = await canvas.toBuffer('png', {matte: 'white'});
+await fsp.writeFile('output.png', pngBuffer);
+chart.destroy();
+```
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/index.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/index.md
@@ -0,0 +1,47 @@
+# Chart.js
+
+Welcome to Chart.js!
+
+* **[Get started with Chart.js](./getting-started/) — best if you're new to Chart.js**
+* Migrate from [Chart.js v3](./migration/v4-migration.md) or [Chart.js v2](./migration/v3-migration.md)
+* Join the community on [Discord](https://discord.gg/HxEguTK6av) and [Twitter](https://twitter.com/chartjs)
+* Post a question tagged with `chart.js` on [Stack Overflow](https://stackoverflow.com/questions/tagged/chart.js)
+* [Contribute to Chart.js](./developers/contributing.md)
+
+## Why Chart.js
+
+Among [many charting libraries](https://awesome.cube.dev/?tools=charts&ref=eco-chartjs) for JavaScript application developers, Chart.js is currently the most popular one according to [GitHub stars](https://github.com/chartjs/Chart.js) (~60,000) and [npm downloads](https://www.npmjs.com/package/chart.js) (~2,400,000 weekly).
+
+Chart.js was created and [announced](https://twitter.com/_nnnick/status/313599208387137536) in 2013 but has come a long way since then. It’s open-source, licensed under the very permissive [MIT license](https://github.com/chartjs/Chart.js/blob/master/LICENSE.md), and maintained by an active community.
+
+### Features
+
+Chart.js provides a set of frequently used chart types, plugins, and customization options. In addition to a reasonable set of [built-in chart types](./charts/area.md), you can use additional community-maintained [chart types](https://github.com/chartjs/awesome#charts). On top of that, it’s possible to combine several chart types into a [mixed chart](./charts/mixed.md) (essentially, blending multiple chart types into one on the same canvas).
+
+Chart.js is highly customizable with [custom plugins](https://github.com/chartjs/awesome#plugins) to create annotations, zoom, or drag-and-drop functionalities to name a few things.
+
+### Defaults
+
+Chart.js comes with a sound default configuration, making it very easy to start with and get an app that is ready for production. Chances are you will get a very appealing chart even if you don’t specify any options at all. For instance, Chart.js has animations turned on by default, so you can instantly bring attention to the story you’re telling with the data.
+
+### Integrations
+
+Chart.js comes with built-in TypeScript typings and is compatible with all popular [JavaScript frameworks](https://github.com/chartjs/awesome#javascript) including [React](https://github.com/reactchartjs/react-chartjs-2), [Vue](https://github.com/apertureless/vue-chartjs/), [Svelte](https://github.com/SauravKanchan/svelte-chartjs), and [Angular](https://github.com/valor-software/ng2-charts). You can use Chart.js directly or leverage well-maintained wrapper packages that allow for a more native integration with your frameworks of choice.
+
+### Developer experience
+
+Chart.js has very thorough documentation (yes, you're reading it), [API reference](./api/), and [examples](./samples/information.md). Maintainers and community members eagerly engage in conversations on [Discord](https://discord.gg/HxEguTK6av), [GitHub Discussions](https://github.com/chartjs/Chart.js/discussions), and [Stack Overflow](https://stackoverflow.com/questions/tagged/chart.js) where more than 11,000 questions are tagged with `chart.js`.
+
+### Canvas rendering
+
+Chart.js renders chart elements on an HTML5 canvas unlike several others, mostly D3.js-based, charting libraries that render as SVG. Canvas rendering makes Chart.js very performant, especially for large datasets and complex visualizations that would otherwise require thousands of SVG nodes in the DOM tree. At the same time, canvas rendering disallows CSS styling, so you will have to use built-in options for that, or create a custom plugin or chart type to render everything to your liking.
+
+### Performance
+
+Chart.js is very well suited for large datasets. Such datasets can be efficiently ingested using the internal format, so you can skip data [parsing](./general/performance.md#parsing) and [normalization](./general/performance.md#data-normalization). Alternatively, [data decimation](./configuration/decimation.md) can be configured to sample the dataset and reduce its size before rendering.
+
+In the end, the canvas rendering that Chart.js uses reduces the toll on your DOM tree in comparison to SVG rendering. Also, tree-shaking support allows you to include minimal parts of Chart.js code in your bundle, reducing bundle size and page load time.
+
+### Community
+
+Chart.js is [actively developed](https://github.com/chartjs/Chart.js/pulls?q=is%3Apr+is%3Aclosed) and maintained by the community. With minor [releases](https://github.com/chartjs/Chart.js/releases) on an approximately bi-monthly basis and major releases with breaking changes every couple of years, Chart.js keeps the balance between adding new features and making it a hassle to keep up with them.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/migration/v3-migration.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/migration/v3-migration.md
@@ -0,0 +1,531 @@
+# 3.x Migration Guide
+
+Chart.js 3.0 introduces a number of breaking changes. Chart.js 2.0 was released in April 2016. In the years since then, as Chart.js has grown in popularity and feature set, we've learned some lessons about how to better create a charting library. In order to improve performance, offer new features, and improve maintainability, it was necessary to break backwards compatibility, but we aimed to do so only when worth the benefit. Some major highlights of v3 include:
+
+* Large [performance](../general/performance.md) improvements including the ability to skip data parsing and render charts in parallel via webworkers
+* Additional configurability and scriptable options with better defaults
+* Completely rewritten animation system
+* Rewritten filler plugin with numerous bug fixes
+* Documentation migrated from GitBook to Vuepress
+* API documentation generated and verified by TypeDoc
+* No more CSS injection
+* Tons of bug fixes
+* Tree shaking
+
+## End user migration
+
+### Setup and installation
+
+* Distributed files are now in lower case. For example: `dist/chart.js`.
+* Chart.js is no longer providing the `Chart.bundle.js` and `Chart.bundle.min.js`. Please see the [installation](../getting-started/installation.md) and [integration](../getting-started/integration.md) docs for details on the recommended way to setup Chart.js if you were using these builds.
+* `moment` is no longer specified as an npm dependency. If you are using the `time` or `timeseries` scales, you must include one of [the available adapters](https://github.com/chartjs/awesome#adapters) and corresponding date library. You no longer need to exclude moment from your build.
+* The `Chart` constructor will throw an error if the canvas/context provided is already in use
+* Chart.js 3 is tree-shakeable. So if you are using it as an `npm` module in a project and want to make use of this feature, you need to import and register the controllers, elements, scales and plugins you want to use, for a list of all the available items to import see [integration](../getting-started/integration.md#bundlers-webpack-rollup-etc). You will not have to call `register` if importing Chart.js via a `script` tag or from the [`auto`](../getting-started/integration.md#bundlers-webpack-rollup-etc) register path as an `npm` module, in this case you will not get the tree shaking benefits. Here is an example of registering components:
+
+```javascript
+import { Chart, LineController, LineElement, PointElement, LinearScale, Title } from `chart.js`
+
+Chart.register(LineController, LineElement, PointElement, LinearScale, Title);
+
+const chart = new Chart(ctx, {
+    type: 'line',
+    // data: ...
+    options: {
+        plugins: {
+            title: {
+                display: true,
+                text: 'Chart Title'
+            }
+        },
+        scales: {
+            x: {
+                type: 'linear'
+            },
+            y: {
+                type: 'linear'
+            }
+        }
+    }
+})
+```
+
+### Chart types
+
+* `horizontalBar` chart type was removed. Horizontal bar charts can be configured using the new [`indexAxis`](../charts/bar.md#horizontal-bar-chart) option
+
+### Options
+
+A number of changes were made to the configuration options passed to the `Chart` constructor. Those changes are documented below.
+
+#### Generic changes
+
+* Indexable options are now looping. `backgroundColor: ['red', 'green']` will result in alternating `'red'` / `'green'` if there are more than 2 data points.
+* The input properties of object data can now be freely specified, see [data structures](../general/data-structures.md) for details.
+* Most options are resolved utilizing proxies, instead of merging with defaults. In addition to easily enabling different resolution routes for different contexts, it allows using other resolved options in scriptable options.
+  * Options are by default scriptable and indexable, unless disabled for some reason.
+  * Scriptable options receive a option resolver as second parameter for accessing other options in same context.
+  * Resolution falls to upper scopes, if no match is found earlier. See [options](../general/options.md) for details.
+
+#### Specific changes
+
+* `elements.rectangle` is now `elements.bar`
+* `hover.animationDuration` is now configured in `animation.active.duration`
+* `responsiveAnimationDuration` is now configured in `animation.resize.duration`
+* Polar area `elements.arc.angle` is now configured in degrees instead of radians.
+* Polar area `startAngle` option is now consistent with `Radar`, 0 is at top and value is in degrees. Default is changed from `-½π` to  `0`.
+* Doughnut `rotation` option is now in degrees and 0 is at top. Default is changed from `-½π` to  `0`.
+* Doughnut `circumference` option is now in degrees. Default is changed from `2π` to `360`.
+* Doughnut `cutoutPercentage` was renamed to `cutout`and accepts pixels as number and percent as string ending with `%`.
+* `scale` option was removed in favor of `options.scales.r` (or any other scale id, with `axis: 'r'`)
+* `scales.[x/y]Axes` arrays were removed. Scales are now configured directly to `options.scales` object with the object key being the scale Id.
+* `scales.[x/y]Axes.barPercentage` was moved to dataset option `barPercentage`
+* `scales.[x/y]Axes.barThickness` was moved to dataset option `barThickness`
+* `scales.[x/y]Axes.categoryPercentage` was moved to dataset option `categoryPercentage`
+* `scales.[x/y]Axes.maxBarThickness` was moved to dataset option `maxBarThickness`
+* `scales.[x/y]Axes.minBarLength` was moved to dataset option `minBarLength`
+* `scales.[x/y]Axes.scaleLabel` was renamed to `scales[id].title`
+* `scales.[x/y]Axes.scaleLabel.labelString` was renamed to `scales[id].title.text`
+* `scales.[x/y]Axes.ticks.beginAtZero` was renamed to `scales[id].beginAtZero`
+* `scales.[x/y]Axes.ticks.max` was renamed to `scales[id].max`
+* `scales.[x/y]Axes.ticks.min` was renamed to `scales[id].min`
+* `scales.[x/y]Axes.ticks.reverse` was renamed to `scales[id].reverse`
+* `scales.[x/y]Axes.ticks.suggestedMax` was renamed to `scales[id].suggestedMax`
+* `scales.[x/y]Axes.ticks.suggestedMin` was renamed to `scales[id].suggestedMin`
+* `scales.[x/y]Axes.ticks.unitStepSize` was removed. Use `scales[id].ticks.stepSize`
+* `scales.[x/y]Axes.ticks.userCallback` was renamed to `scales[id].ticks.callback`
+* `scales.[x/y]Axes.time.format` was renamed to `scales[id].time.parser`
+* `scales.[x/y]Axes.time.max` was renamed to `scales[id].max`
+* `scales.[x/y]Axes.time.min` was renamed to `scales[id].min`
+* `scales.[x/y]Axes.zeroLine*` options of axes were removed. Use scriptable scale options instead.
+* The dataset option `steppedLine` was removed. Use `stepped`
+* The chart option `showLines` was renamed to `showLine` to match the dataset option.
+* The chart option `startAngle` was moved to `radial` scale options.
+* To override the platform class used in a chart instance, pass `platform: PlatformClass` in the config object. Note that the class should be passed, not an instance of the class.
+* `aspectRatio` defaults to 1 for doughnut, pie, polarArea, and radar charts
+* `TimeScale` does not read `t` from object data by default anymore. The default property is `x` or `y`, depending on the orientation. See [data structures](../general/data-structures.md) for details on how to change the default.
+* `tooltips` namespace was renamed to `tooltip` to match the plugin name
+* `legend`, `title` and `tooltip` namespaces were moved from `options` to `options.plugins`.
+* `tooltips.custom` was renamed to `plugins.tooltip.external`
+
+#### Defaults
+
+* `global` namespace was removed from `defaults`. So `Chart.defaults.global` is now `Chart.defaults`
+* Dataset controller defaults were relocate to `overrides`. For example `Chart.defaults.line` is now `Chart.overrides.line`
+* `default` prefix was removed from defaults. For example `Chart.defaults.global.defaultColor` is now `Chart.defaults.color`
+* `defaultColor` was split to `color`, `borderColor` and `backgroundColor`
+* `defaultFontColor` was renamed to `color`
+* `defaultFontFamily` was renamed to `font.family`
+* `defaultFontSize` was renamed to `font.size`
+* `defaultFontStyle` was renamed to `font.style`
+* `defaultLineHeight` was renamed to `font.lineHeight`
+* Horizontal Bar default tooltip mode was changed from `'index'` to `'nearest'` to match vertical bar charts
+* `legend`, `title` and `tooltip` namespaces were moved from `Chart.defaults` to `Chart.defaults.plugins`.
+* `elements.line.fill` default changed from `true` to `false`.
+* Line charts no longer override the default `interaction` mode. Default is changed from `'index'` to `'nearest'`.
+
+#### Scales
+
+The configuration options for scales is the largest change in v3. The `xAxes` and `yAxes` arrays were removed and axis options are individual scales now keyed by scale ID.
+
+The v2 configuration below is shown with it's new v3 configuration
+
+```javascript
+options: {
+  scales: {
+    xAxes: [{
+      id: 'x',
+      type: 'time',
+      display: true,
+      title: {
+        display: true,
+        text: 'Date'
+      },
+      ticks: {
+        major: {
+          enabled: true
+        },
+        font: function(context) {
+          if (context.tick && context.tick.major) {
+            return {
+              weight: 'bold',
+              color: '#FF0000'
+            };
+          }
+        }
+      }
+    }],
+    yAxes: [{
+      id: 'y',
+      display: true,
+      title: {
+        display: true,
+        text: 'value'
+      }
+    }]
+  }
+}
+```
+
+And now, in v3:
+
+```javascript
+options: {
+  scales: {
+    x: {
+      type: 'time',
+      display: true,
+      title: {
+        display: true,
+        text: 'Date'
+      },
+      ticks: {
+        major: {
+          enabled: true
+        },
+        color: (context) => context.tick && context.tick.major && '#FF0000',
+        font: function(context) {
+          if (context.tick && context.tick.major) {
+            return {
+              weight: 'bold'
+            };
+          }
+        }
+      }
+    },
+    y: {
+      display: true,
+      title: {
+        display: true,
+        text: 'value'
+      }
+    }
+  }
+}
+```
+
+* The time scale option `distribution: 'series'` was removed and a new scale type `timeseries` was introduced in its place
+* In the time scale, `autoSkip` is now enabled by default for consistency with the other scales
+
+#### Animations
+
+Animation system was completely rewritten in Chart.js v3. Each property can now be animated separately. Please see [animations](../configuration/animations.md) docs for details.
+
+#### Customizability
+
+* `custom` attribute of elements was removed. Please use scriptable options
+* The `hover` property of scriptable options `context` object was renamed to `active` to align it with the datalabels plugin.
+
+#### Interactions
+
+* To allow DRY configuration, a root options scope for common interaction options was added. `options.hover` and `options.plugins.tooltip` now both extend from `options.interaction`. Defaults are defined at `defaults.interaction` level, so by default hover and tooltip interactions share the same mode etc.
+* `interactions` are now limited to the chart area + allowed overflow
+* `{mode: 'label'}` was replaced with `{mode: 'index'}`
+* `{mode: 'single'}` was replaced with `{mode: 'nearest', intersect: true}`
+* `modes['X-axis']` was replaced with `{mode: 'index', intersect: false}`
+* `options.onClick` is now limited to the chart area
+* `options.onClick` and `options.onHover` now receive the `chart` instance as a 3rd argument
+* `options.onHover` now receives a wrapped `event` as the first parameter. The previous first parameter value is accessible via `event.native`.
+* `options.hover.onHover` was removed, use `options.onHover`.
+
+#### Ticks
+
+* `options.gridLines` was renamed to `options.grid`
+* `options.gridLines.offsetGridLines` was renamed to `options.grid.offset`.
+* `options.gridLines.tickMarkLength` was renamed to `options.grid.tickLength`.
+* `options.ticks.fixedStepSize` is no longer used. Use `options.ticks.stepSize`.
+* `options.ticks.major` and `options.ticks.minor` were replaced with scriptable options for tick fonts.
+* `Chart.Ticks.formatters.linear` was renamed to `Chart.Ticks.formatters.numeric`.
+* `options.ticks.backdropPaddingX` and `options.ticks.backdropPaddingY` were replaced with `options.ticks.backdropPadding` in the radial linear scale.
+
+#### Tooltip
+
+* `xLabel` and `yLabel` were removed. Please use `label` and `formattedValue`
+* The `filter` option will now be passed additional parameters when called and should have the method signature `function(tooltipItem, index, tooltipItems, data)`
+* The `custom` callback now takes a context object that has `tooltip` and `chart` properties
+* All properties of tooltip model related to the tooltip options have been moved to reside within the `options` property.
+* The callbacks no longer are given a `data` parameter. The tooltip item parameter contains the chart and dataset instead
+* The tooltip item's `index` parameter was renamed to `dataIndex` and `value` was renamed to `formattedValue`
+* The `xPadding` and `yPadding` options were merged into a single `padding` object
+
+## Developer migration
+
+While the end-user migration for Chart.js 3 is fairly straight-forward, the developer migration can be more complicated. Please reach out for help in the #dev [Discord](https://discord.gg/HxEguTK6av) channel if tips on migrating would be helpful.
+
+Some of the biggest things that have changed:
+
+* There is a completely rewritten and more performant animation system.
+  * `Element._model` and `Element._view` are no longer used and properties are now set directly on the elements. You will have to use the method `getProps` to access these properties inside most methods such as `inXRange`/`inYRange` and `getCenterPoint`. Please take a look at [the Chart.js-provided elements](https://github.com/chartjs/Chart.js/tree/master/src/elements) for examples.
+  * When building the elements in a controller, it's now suggested to call `updateElement` to provide the element properties. There are also methods such as `getSharedOptions` and `includeOptions` that have been added to skip redundant computation. Please take a look at [the Chart.js-provided controllers](https://github.com/chartjs/Chart.js/tree/master/src/controllers) for examples.
+* Scales introduced a new parsing API. This API takes user data and converts it into a more standard format. E.g. it allows users to provide numeric data as a `string` and converts it to a `number` where necessary. Previously this was done on the fly as charts were rendered. Now it's done up front with the ability to skip it for better performance if users provide data in the correct format. If you're using standard data format like `x`/`y` you may not need to do anything. If you're using a custom data format you will have to override some of the parse methods in `core.datasetController.js`. An example can be found in [chartjs-chart-financial](https://github.com/chartjs/chartjs-chart-financial), which uses an `{o, h, l, c}` data format.
+
+A few changes were made to controllers that are more straight-forward, but will affect all controllers:
+
+* Options:
+  * `global` was removed from the defaults namespace as it was unnecessary and sometimes inconsistent
+  * Dataset defaults are now under the chart type options instead of vice-versa. This was not able to be done when introduced in 2.x for backwards compatibility. Fixing it removes the biggest stumbling block that new chart developers encountered
+  * Scale default options need to be updated as described in the end user migration section (e.g. `x` instead of `xAxes` and `y` instead of `yAxes`)
+* `updateElement` was changed to `updateElements` and has a new method signature as described below. This provides performance enhancements such as allowing easier reuse of computations that are common to all elements and reducing the number of function calls
+
+### Removed
+
+The following properties and methods were removed:
+
+#### Removed from Chart
+
+* `Chart.animationService`
+* `Chart.active`
+* `Chart.borderWidth`
+* `Chart.chart.chart`
+* `Chart.Bar`. New charts are created via `new Chart` and providing the appropriate `type` parameter
+* `Chart.Bubble`. New charts are created via `new Chart` and providing the appropriate `type` parameter
+* `Chart.Chart`
+* `Chart.Controller`
+* `Chart.Doughnut`. New charts are created via `new Chart` and providing the appropriate `type` parameter
+* `Chart.innerRadius` now lives on doughnut, pie, and polarArea controllers
+* `Chart.lastActive`
+* `Chart.Legend` was moved to `Chart.plugins.legend._element` and made private
+* `Chart.Line`. New charts are created via `new Chart` and providing the appropriate `type` parameter
+* `Chart.LinearScaleBase` now must be imported and cannot be accessed off the `Chart` object
+* `Chart.offsetX`
+* `Chart.offsetY`
+* `Chart.outerRadius` now lives on doughnut, pie, and polarArea controllers
+* `Chart.plugins` was replaced with `Chart.registry`. Plugin defaults are now in `Chart.defaults.plugins[id]`.
+* `Chart.plugins.register` was replaced by `Chart.register`.
+* `Chart.PolarArea`. New charts are created via `new Chart` and providing the appropriate `type` parameter
+* `Chart.prototype.generateLegend`
+* `Chart.platform`. It only contained `disableCSSInjection`. CSS is never injected in v3.
+* `Chart.PluginBase`
+* `Chart.Radar`. New charts are created via `new Chart` and providing the appropriate `type` parameter
+* `Chart.radiusLength`
+* `Chart.scaleService` was replaced with `Chart.registry`. Scale defaults are now in `Chart.defaults.scales[type]`.
+* `Chart.Scatter`. New charts are created via `new Chart` and providing the appropriate `type` parameter
+* `Chart.types`
+* `Chart.Title` was moved to `Chart.plugins.title._element` and made private
+* `Chart.Tooltip` is now provided by the tooltip plugin. The positioners can be accessed from `tooltipPlugin.positioners`
+* `ILayoutItem.minSize`
+
+#### Removed from Dataset Controllers
+
+* `BarController.getDatasetMeta().bar`
+* `DatasetController.addElementAndReset`
+* `DatasetController.createMetaData`
+* `DatasetController.createMetaDataset`
+* `DoughnutController.getRingIndex`
+
+#### Removed from Elements
+
+* `Element.getArea`
+* `Element.height`
+* `Element.hidden` was replaced by chart level status, usable with `getDataVisibility(index)` / `toggleDataVisibility(index)`
+* `Element.initialize`
+* `Element.inLabelRange`
+* `Line.calculatePointY`
+
+#### Removed from Helpers
+
+* `helpers.addEvent`
+* `helpers.aliasPixel`
+* `helpers.arrayEquals`
+* `helpers.configMerge`
+* `helpers.findIndex`
+* `helpers.findNextWhere`
+* `helpers.findPreviousWhere`
+* `helpers.extend`. Use `Object.assign` instead
+* `helpers.getValueAtIndexOrDefault`. Use `helpers.resolve` instead.
+* `helpers.indexOf`
+* `helpers.lineTo`
+* `helpers.longestText` was made private
+* `helpers.max`
+* `helpers.measureText` was made private
+* `helpers.min`
+* `helpers.nextItem`
+* `helpers.niceNum`
+* `helpers.numberOfLabelLines`
+* `helpers.previousItem`
+* `helpers.removeEvent`
+* `helpers.roundedRect`
+* `helpers.scaleMerge`
+* `helpers.where`
+
+#### Removed from Layout
+
+* `Layout.defaults`
+
+#### Removed from Scales
+
+* `LinearScaleBase.handleDirectionalChanges`
+* `LogarithmicScale.minNotZero`
+* `Scale.getRightValue`
+* `Scale.longestLabelWidth`
+* `Scale.longestTextCache` is now private
+* `Scale.margins` is now private
+* `Scale.mergeTicksOptions`
+* `Scale.ticksAsNumbers`
+* `Scale.tickValues` is now private
+* `TimeScale.getLabelCapacity` is now private
+* `TimeScale.tickFormatFunction` is now private
+
+#### Removed from Plugins (Legend, Title, and Tooltip)
+
+* `IPlugin.afterScaleUpdate`. Use `afterLayout` instead
+* `Legend.margins` is now private
+* Legend `onClick`, `onHover`, and `onLeave` options now receive the legend as the 3rd argument in addition to implicitly via `this`
+* Legend `onClick`, `onHover`, and `onLeave` options now receive a wrapped `event` as the first parameter. The previous first parameter value is accessible via `event.native`.
+* `Title.margins` is now private
+* The tooltip item's `x` and `y` attributes were replaced by `element`. You can use `element.x` and `element.y` or `element.tooltipPosition()` instead.
+
+#### Removal of Public APIs
+
+The following public APIs were removed.
+
+* `getElementAtEvent` is replaced with `chart.getElementsAtEventForMode(e, 'nearest', { intersect: true }, false)`
+* `getElementsAtEvent` is replaced with `chart.getElementsAtEventForMode(e, 'index', { intersect: true }, false)`
+* `getElementsAtXAxis` is replaced with `chart.getElementsAtEventForMode(e, 'index', { intersect: false }, false)`
+* `getDatasetAtEvent` is replaced with `chart.getElementsAtEventForMode(e, 'dataset', { intersect: true }, false)`
+
+#### Removal of private APIs
+
+The following private APIs were removed.
+
+* `Chart._bufferedRender`
+* `Chart._updating`
+* `Chart.data.datasets[datasetIndex]._meta`
+* `DatasetController._getIndexScaleId`
+* `DatasetController._getIndexScale`
+* `DatasetController._getValueScaleId`
+* `DatasetController._getValueScale`
+* `Element._ctx`
+* `Element._model`
+* `Element._view`
+* `LogarithmicScale._valueOffset`
+* `TimeScale.getPixelForOffset`
+* `TimeScale.getLabelWidth`
+* `Tooltip._lastActive`
+
+### Renamed
+
+The following properties were renamed during v3 development:
+
+* `Chart.Animation.animationObject` was renamed to `Chart.Animation`
+* `Chart.Animation.chartInstance` was renamed to `Chart.Animation.chart`
+* `Chart.canvasHelpers` was merged with `Chart.helpers`
+* `Chart.elements.Arc` was renamed to `Chart.elements.ArcElement`
+* `Chart.elements.Line` was renamed to `Chart.elements.LineElement`
+* `Chart.elements.Point` was renamed to `Chart.elements.PointElement`
+* `Chart.elements.Rectangle` was renamed to `Chart.elements.BarElement`
+* `Chart.layoutService` was renamed to `Chart.layouts`
+* `Chart.pluginService` was renamed to `Chart.plugins`
+* `helpers.callCallback` was renamed to `helpers.callback`
+* `helpers.drawRoundedRectangle` was renamed to `helpers.roundedRect`
+* `helpers.getValueOrDefault` was renamed to `helpers.valueOrDefault`
+* `LayoutItem.fullWidth` was renamed to `LayoutItem.fullSize`
+* `Point.controlPointPreviousX` was renamed to `Point.cp1x`
+* `Point.controlPointPreviousY` was renamed to `Point.cp1y`
+* `Point.controlPointNextX` was renamed to `Point.cp2x`
+* `Point.controlPointNextY` was renamed to `Point.cp2y`
+* `Scale.calculateTickRotation` was renamed to `Scale.calculateLabelRotation`
+* `Tooltip.options.legendColorBackgroupd` was renamed to `Tooltip.options.multiKeyBackground`
+
+#### Renamed private APIs
+
+The private APIs listed below were renamed:
+
+* `BarController.calculateBarIndexPixels` was renamed to `BarController._calculateBarIndexPixels`
+* `BarController.calculateBarValuePixels` was renamed to `BarController._calculateBarValuePixels`
+* `BarController.getStackCount` was renamed to `BarController._getStackCount`
+* `BarController.getStackIndex` was renamed to `BarController._getStackIndex`
+* `BarController.getRuler` was renamed to `BarController._getRuler`
+* `Chart.destroyDatasetMeta` was renamed to `Chart._destroyDatasetMeta`
+* `Chart.drawDataset` was renamed to `Chart._drawDataset`
+* `Chart.drawDatasets` was renamed to `Chart._drawDatasets`
+* `Chart.eventHandler` was renamed to `Chart._eventHandler`
+* `Chart.handleEvent` was renamed to `Chart._handleEvent`
+* `Chart.initialize` was renamed to `Chart._initialize`
+* `Chart.resetElements` was renamed to `Chart._resetElements`
+* `Chart.unbindEvents` was renamed to `Chart._unbindEvents`
+* `Chart.updateDataset` was renamed to `Chart._updateDataset`
+* `Chart.updateDatasets` was renamed to `Chart._updateDatasets`
+* `Chart.updateLayout` was renamed to `Chart._updateLayout`
+* `DatasetController.destroy` was renamed to `DatasetController._destroy`
+* `DatasetController.insertElements` was renamed to `DatasetController._insertElements`
+* `DatasetController.onDataPop` was renamed to `DatasetController._onDataPop`
+* `DatasetController.onDataPush` was renamed to `DatasetController._onDataPush`
+* `DatasetController.onDataShift` was renamed to `DatasetController._onDataShift`
+* `DatasetController.onDataSplice` was renamed to `DatasetController._onDataSplice`
+* `DatasetController.onDataUnshift` was renamed to `DatasetController._onDataUnshift`
+* `DatasetController.removeElements` was renamed to `DatasetController._removeElements`
+* `DatasetController.resyncElements` was renamed to `DatasetController._resyncElements`
+* `LayoutItem.isFullWidth` was renamed to `LayoutItem.isFullSize`
+* `RadialLinearScale.setReductions` was renamed to `RadialLinearScale._setReductions`
+* `RadialLinearScale.pointLabels` was renamed to `RadialLinearScale._pointLabels`
+* `Scale.handleMargins` was renamed to `Scale._handleMargins`
+
+### Changed
+
+The APIs listed in this section have changed in signature or behaviour from version 2.
+
+#### Changed in Scales
+
+* `Scale.getLabelForIndex` was replaced by `scale.getLabelForValue`
+* `Scale.getPixelForValue` now only requires one parameter. For the `TimeScale` that parameter must be millis since the epoch. As a performance optimization, it may take an optional second parameter, giving the index of the data point.
+
+##### Changed in Ticks
+
+* `Scale.afterBuildTicks` now has no parameters like the other callbacks
+* `Scale.buildTicks` is now expected to return tick objects
+* `Scale.convertTicksToLabels` was renamed to `generateTickLabels`. It is now expected to set the label property on the ticks given as input
+* `Scale.ticks` now contains objects instead of strings
+* When the `autoSkip` option is enabled, `Scale.ticks` now contains only the non-skipped ticks instead of all ticks.
+* Ticks are now always generated in monotonically increasing order
+
+##### Changed in Time Scale
+
+* `getValueForPixel` now returns milliseconds since the epoch
+
+#### Changed in Controllers
+
+##### Core Controller
+
+* The first parameter to `updateHoverStyle` is now an array of objects containing the `element`, `datasetIndex`, and `index`
+* The signature or `resize` changed, the first `silent` parameter was removed.
+
+##### Dataset Controllers
+
+* `updateElement` was replaced with `updateElements` now taking the elements to update, the `start` index, `count`, and `mode`
+* `setHoverStyle` and `removeHoverStyle` now additionally take the `datasetIndex` and `index`
+
+#### Changed in Interactions
+
+* Interaction mode methods now return an array of objects containing the `element`, `datasetIndex`, and `index`
+
+#### Changed in Layout
+
+* `ILayoutItem.update` no longer has a return value
+
+#### Changed in Helpers
+
+All helpers are now exposed in a flat hierarchy, e.g., `Chart.helpers.canvas.clipArea` -> `Chart.helpers.clipArea`
+
+##### Canvas Helper
+
+* The second parameter to `drawPoint` is now the full options object, so `style`, `rotation`, and `radius` are no longer passed explicitly
+* `helpers.getMaximumHeight` was replaced by `helpers.dom.getMaximumSize`
+* `helpers.getMaximumWidth` was replaced by `helpers.dom.getMaximumSize`
+* `helpers.clear` was renamed to `helpers.clearCanvas` and now takes `canvas` and optionally `ctx` as parameter(s).
+* `helpers.retinaScale` accepts optional third parameter `forceStyle`, which forces overriding current canvas style. `forceRatio` no longer falls back to `window.devicePixelRatio`, instead it defaults to `1`.
+
+#### Changed in Platform
+
+* `Chart.platform` is no longer the platform object used by charts. Every chart instance now has a separate platform instance.
+* `Chart.platforms` is an object that contains two usable platform classes, `BasicPlatform` and `DomPlatform`. It also contains `BasePlatform`, a class that all platforms must extend from.
+* If the canvas passed in is an instance of `OffscreenCanvas`, the `BasicPlatform` is automatically used.
+* `isAttached` method was added to platform.
+
+#### Changed in IPlugin interface
+
+* All plugin hooks have unified signature with 3 arguments: `chart`, `args` and `options`. This means change in signature for these hooks: `beforeInit`, `afterInit`, `reset`, `beforeLayout`, `afterLayout`, `beforeRender`, `afterRender`, `beforeDraw`, `afterDraw`, `beforeDatasetsDraw`, `afterDatasetsDraw`, `beforeEvent`, `afterEvent`, `resize`, `destroy`.
+* `afterDatasetsUpdate`, `afterUpdate`, `beforeDatasetsUpdate`, and `beforeUpdate` now receive `args` object as second argument. `options` argument is always the last and thus was moved from 2nd to 3rd place.
+* `afterEvent` and `beforeEvent` now receive a wrapped `event` as the `event` property of the second argument. The native event is available via `args.event.native`.
+* Initial `resize` is no longer silent. Meaning that `resize` event can fire between `beforeInit` and `afterInit`
+* New hooks: `install`, `start`, `stop`, and `uninstall`
+* `afterEvent` should notify about changes that need a render by setting `args.changed` to true. Because the `args` are shared with all plugins, it should only be set to true and not false.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/migration/v4-migration.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/migration/v4-migration.md
@@ -0,0 +1,49 @@
+# 4.x Migration Guide
+
+Chart.js 4.0 introduces a number of breaking changes. We tried keeping the amount of breaking changes to a minimum. For some features and bug fixes it was necessary to break backwards compatibility, but we aimed to do so only when worth the benefit.
+
+## End user migration
+
+### Charts
+
+* Charts don't override the default tooltip callbacks, so all chart types have the same-looking tooltips.
+* Default scale override has been removed if the configured scale starts with `x`/`y`. Defining `xAxes` in your config will now create a second scale instead of overriding the default `x` axis.
+
+### Options
+
+A number of changes were made to the configuration options passed to the `Chart` constructor. Those changes are documented below.
+
+#### Specific changes
+
+* The radialLinear grid indexable and scriptable options don't decrease the index of the specified grid line anymore.
+* The `destroy` plugin hook has been removed and replaced with `afterDestroy`.
+* Ticks callback on time scale now receives timestamp instead of a formatted label.
+* `scales[id].grid.drawBorder` has been renamed to `scales[id].border.display`.
+* `scales[id].grid.borderWidth` has been renamed to `scales[id].border.width`.
+* `scales[id].grid.borderColor` has been renamed to `scales[id].border.color`.
+* `scales[id].grid.borderDash` has been renamed to `scales[id].border.dash`.
+* `scales[id].grid.borderDashOffset` has been renamed to `scales[id].border.dashOffset`.
+* The z index for the border of a scale is now configurable instead of being 1 higher as the grid z index.
+* Linear scales now add and subtracts `5%` of the max value to the range if the min and max are the same instead of `1`.
+* If the tooltip callback returns `undefined`, then the default callback will be used.
+* `maintainAspectRatio` respects container height.
+* Time and timeseries scales use `ticks.stepSize` instead of `time.stepSize`, which has been removed.
+* `maxTickslimit` won't be used for the ticks in `autoSkip` if the determined max ticks is less then the `maxTicksLimit`.
+* `dist/chart.js` has been removed.
+* `dist/chart.min.js` has been renamed to `dist/chart.umd.min.js` (and before 4.5.0 `dist/chart.umd.js`).
+* `dist/chart.esm.js` has been renamed to `dist/chart.js`.
+
+#### Type changes
+* The order of the `ChartMeta` parameters have been changed from `<Element, DatasetElement, Type>` to `<Type, Element, DatasetElement>`.
+
+### General
+* Chart.js becomes an [ESM-only package](https://nodejs.org/api/esm.html) ([the UMD bundle is still available](../getting-started/installation.md#cdn)). To use Chart.js, your project should also be an ES module. Make sure to have this in your `package.json`:
+  ```json
+  {
+    "type": "module"
+  }
+  ```
+  If you are experiencing problems with [Jest](https://jestjs.io), follow its [documentation](https://jestjs.io/docs/ecmascript-modules) to enable the ESM support. Or, we can recommend you migrating to [Vitest](https://vitest.dev/). Vitest has the ESM support out of the box and [almost the same API as Jest](https://vitest.dev/guide/migration.html#migrating-from-jest). See an [example of migration](https://github.com/reactchartjs/react-chartjs-2/commit/7f3ec96101d21e43cae8cbfe5e09a46a17cff1ef).
+* Removed fallback to `fontColor` for the legend text and strikethrough color.
+* Removed `config._chart` fallback for `this.chart` in the filler plugin.
+* Removed `this._chart` in the filler plugin.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/package.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/package.json
@@ -0,0 +1,31 @@
+{
+    "name": "docs",
+    "private": "true",
+    "version": "4.0.0-dev",
+    "license": "MIT",
+    "type": "module",
+    "scripts": {
+        "build": "vuepress build --no-cache",
+        "dev": "vuepress dev --no-cache"
+    },
+    "devDependencies": {
+        "@simonbrunel/vuepress-plugin-versions": "^0.2.0",
+        "@vuepress/plugin-google-analytics": "^1.9.7",
+        "@vuepress/plugin-html-redirect": "^0.1.2",
+        "markdown-it": "^12.3.2",
+        "markdown-it-include": "^2.0.0",
+        "typedoc": "^0.23.10",
+        "typedoc-plugin-markdown": "^3.13.4",
+        "typescript": "^4.7.4",
+        "vue": "^2.6.14",
+        "vue-tabs-component": "^1.5.0",
+        "vuepress": "^1.9.7",
+        "vuepress-plugin-code-copy": "^1.0.6",
+        "vuepress-plugin-flexsearch": "^0.3.0",
+        "vuepress-plugin-redirect": "^1.2.5",
+        "vuepress-plugin-tabs": "^0.3.0",
+        "vuepress-plugin-typedoc": "^0.11.0",
+        "vuepress-theme-chartjs": "^0.2.0",
+        "webpack": "^4.46.0"
+    }
+}
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/.eslintrc.yml (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/.eslintrc.yml
@@ -0,0 +1,2 @@
+rules:
+  no-console: "off"
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/advanced/data-decimation.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/advanced/data-decimation.md
@@ -0,0 +1,118 @@
+# Data Decimation
+
+This example shows how to use the built-in data decimation to reduce the number of points drawn on the graph for improved performance.
+
+```js chart-editor
+// <block:actions:3>
+const actions = [
+  {
+    name: 'No decimation (default)',
+    handler(chart) {
+      chart.options.plugins.decimation.enabled = false;
+      chart.update();
+    }
+  },
+  {
+    name: 'min-max decimation',
+    handler(chart) {
+      chart.options.plugins.decimation.algorithm = 'min-max';
+      chart.options.plugins.decimation.enabled = true;
+      chart.update();
+    },
+  },
+  {
+    name: 'LTTB decimation (50 samples)',
+    handler(chart) {
+      chart.options.plugins.decimation.algorithm = 'lttb';
+      chart.options.plugins.decimation.enabled = true;
+      chart.options.plugins.decimation.samples = 50;
+      chart.update();
+    }
+  },
+  {
+    name: 'LTTB decimation (500 samples)',
+    handler(chart) {
+      chart.options.plugins.decimation.algorithm = 'lttb';
+      chart.options.plugins.decimation.enabled = true;
+      chart.options.plugins.decimation.samples = 500;
+      chart.update();
+    }
+  }
+];
+// </block:actions>
+
+// <block:data:1>
+const NUM_POINTS = 100000;
+Utils.srand(10);
+
+// parseISODate returns a luxon date object to work with in the samples
+// We will create points every 30s starting from this point in time
+const start = Utils.parseISODate('2021-04-01T00:00:00Z').toMillis();
+const pointData = [];
+
+for (let i = 0; i < NUM_POINTS; ++i) {
+  // Most data will be in the range [0, 20) but some rare data will be in the range [0, 100)
+  const max = Math.random() < 0.001 ? 100 : 20;
+  pointData.push({x: start + (i * 30000), y: Utils.rand(0, max)});
+}
+
+const data = {
+  datasets: [{
+    borderColor: Utils.CHART_COLORS.red,
+    borderWidth: 1,
+    data: pointData,
+    label: 'Large Dataset',
+    radius: 0,
+  }]
+};
+// </block:data>
+
+// <block:decimation:0>
+const decimation = {
+  enabled: false,
+  algorithm: 'min-max',
+};
+// </block:decimation>
+
+// <block:setup:2>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    // Turn off animations and data parsing for performance
+    animation: false,
+    parsing: false,
+
+    interaction: {
+      mode: 'nearest',
+      axis: 'x',
+      intersect: false
+    },
+    plugins: {
+      decimation: decimation,
+    },
+    scales: {
+      x: {
+        type: 'time',
+        ticks: {
+          source: 'auto',
+          // Disabled rotation for performance
+          maxRotation: 0,
+          autoSkip: true,
+        }
+      }
+    }
+  }
+};
+// </block:setup>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+## Docs
+* [Data Decimation](../../configuration/decimation.md)
+* [Line](../../charts/line.md)
+* [Time Scale](../../axes/cartesian/time.md)
+
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/advanced/derived-axis-type.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/advanced/derived-axis-type.md
@@ -0,0 +1,55 @@
+# Derived Axis Type
+
+```js chart-editor
+// <block:setup:1>
+const DATA_COUNT = 12;
+const NUMBER_CFG = {count: DATA_COUNT, min: 0, max: 1000};
+const labels = Utils.months({count: DATA_COUNT});
+const data = {
+  labels: labels,
+  datasets: [
+    {
+      label: 'My First dataset',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red, 0.5),
+      fill: false,
+    }
+  ],
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data,
+  options: {
+    responsive: true,
+    scales: {
+      x: {
+        display: true,
+      },
+      y: {
+        display: true,
+        type: 'log2',
+      }
+    }
+  }
+};
+
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+## Log2 axis implementation
+
+<<< @/scripts/log2.js
+
+## Docs
+* [Data structures (`labels`)](../../general/data-structures.md)
+* [Line](../../charts/line.md)
+* [New Axes](../../developers/axes.md)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/advanced/derived-chart-type.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/advanced/derived-chart-type.md
@@ -0,0 +1,50 @@
+# Derived Chart Type
+
+```js chart-editor
+// <block:setup:1>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100, rmin: 1, rmax: 20};
+const data = {
+  datasets: [
+    {
+      label: 'My First dataset',
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.blue, 0.5),
+      borderColor: Utils.CHART_COLORS.blue,
+      borderWidth: 1,
+      boxStrokeStyle: 'red',
+      data: Utils.bubbles(NUMBER_CFG)
+    }
+  ],
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'derivedBubble',
+  data: data,
+  options: {
+    responsive: true,
+    plugins: {
+      title: {
+        display: true,
+        text: 'Derived Chart Type'
+      },
+    }
+  }
+};
+
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+## DerivedBubble Implementation
+
+<<< @/scripts/derived-bubble.js
+
+## Docs
+* [Bubble Chart](../../charts/bubble.md)
+* [New Charts](../../developers/charts.md)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/advanced/linear-gradient.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/advanced/linear-gradient.md
@@ -0,0 +1,118 @@
+# Linear Gradient
+
+```js chart-editor
+// <block:actions:3>
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = Utils.numbers({count: chart.data.labels.length, min: -100, max: 100});
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Data',
+    handler(chart) {
+      const data = chart.data;
+      if (data.datasets.length > 0) {
+        data.labels = Utils.months({count: data.labels.length + 1});
+
+        for (let index = 0; index < data.datasets.length; ++index) {
+          data.datasets[index].data.push(Utils.rand(-100, 100));
+        }
+
+        chart.update();
+      }
+    }
+  },
+  {
+    name: 'Remove Data',
+    handler(chart) {
+      chart.data.labels.splice(-1, 1); // remove the label first
+
+      chart.data.datasets.forEach(dataset => {
+        dataset.data.pop();
+      });
+
+      chart.update();
+    }
+  }
+];
+// </block:actions>
+
+// <block:getGradient:0>
+let width, height, gradient;
+function getGradient(ctx, chartArea) {
+  const chartWidth = chartArea.right - chartArea.left;
+  const chartHeight = chartArea.bottom - chartArea.top;
+  if (!gradient || width !== chartWidth || height !== chartHeight) {
+    // Create the gradient because this is either the first render
+    // or the size of the chart has changed
+    width = chartWidth;
+    height = chartHeight;
+    gradient = ctx.createLinearGradient(0, chartArea.bottom, 0, chartArea.top);
+    gradient.addColorStop(0, Utils.CHART_COLORS.blue);
+    gradient.addColorStop(0.5, Utils.CHART_COLORS.yellow);
+    gradient.addColorStop(1, Utils.CHART_COLORS.red);
+  }
+
+  return gradient;
+}
+// </block:getGradient>
+
+// <block:setup:2>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};
+const labels = Utils.months({count: 7});
+
+const data = {
+  labels: labels,
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: function(context) {
+        const chart = context.chart;
+        const {ctx, chartArea} = chart;
+
+        if (!chartArea) {
+          // This case happens on initial chart load
+          return;
+        }
+        return getGradient(ctx, chartArea);
+      },
+    },
+  ]
+};
+// </block:setup>
+
+// <block:config:1>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    responsive: true,
+    plugins: {
+      legend: {
+        position: 'top',
+      },
+    }
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+
+## Docs
+* [Colors](../../general/colors.md)
+  * [Patterns and Gradients](../../general/colors.md#patterns-and-gradients)  
+* [Data structures (`labels`)](../../general/data-structures.md)
+* [Options](../../general/options.md)
+  * [Scriptable Options](../../general/options.md#scriptable-options)
+* [Line](../../charts/line.md)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/advanced/programmatic-events.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/advanced/programmatic-events.md
@@ -0,0 +1,115 @@
+# Programmatic Event Triggers
+
+```js chart-editor
+// <block:hover:0>
+function triggerHover(chart) {
+  if (chart.getActiveElements().length > 0) {
+    chart.setActiveElements([]);
+  } else {
+    chart.setActiveElements([
+      {
+        datasetIndex: 0,
+        index: 0,
+      }, {
+        datasetIndex: 1,
+        index: 0,
+      }
+    ]);
+  }
+  chart.update();
+}
+// </block:hover>
+
+// <block:tooltip:1>
+function triggerTooltip(chart) {
+  const tooltip = chart.tooltip;
+  if (tooltip.getActiveElements().length > 0) {
+    tooltip.setActiveElements([], {x: 0, y: 0});
+  } else {
+    const chartArea = chart.chartArea;
+    tooltip.setActiveElements([
+      {
+        datasetIndex: 0,
+        index: 2,
+      }, {
+        datasetIndex: 1,
+        index: 2,
+      }
+    ],
+    {
+      x: (chartArea.left + chartArea.right) / 2,
+      y: (chartArea.top + chartArea.bottom) / 2,
+    });
+  }
+
+  chart.update();
+}
+// </block:tooltip>
+
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Trigger Hover',
+    handler: triggerHover
+  },
+  {
+    name: 'Trigger Tooltip',
+    handler: triggerTooltip
+  }
+];
+// </block:actions>
+
+// <block:setup:4>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};
+
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red, 0.5),
+      hoverBorderWidth: 5,
+      hoverBorderColor: 'green',
+    },
+    {
+      label: 'Dataset 2',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.blue,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.blue, 0.5),
+      hoverBorderWidth: 5,
+      hoverBorderColor: 'green',
+    }
+  ]
+};
+// </block:setup>
+
+// <block:config:3>
+const config = {
+  type: 'bar',
+  data: data,
+  options: {
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+
+## API
+* [Chart](../../api/classes/Chart.md)
+  * [`setActiveElements`](../../api/classes/Chart.md#setactiveelements)
+* [TooltipModel](../../api/interfaces/TooltipModel.md)
+  * [`setActiveElements`](../../api/interfaces/TooltipModel.md#setactiveelements)
+
+## Docs
+* [Bar](../../charts/bar.md)
+    * [Interactions (`hoverBorderColor`)](../../charts/bar.md#interactions)
+* [Interactions](../../configuration/interactions.md)
+* [Tooltip](../../configuration/tooltip.md)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/advanced/progress-bar.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/advanced/progress-bar.md
@@ -0,0 +1,152 @@
+# Animation Progress Bar
+
+## Initial animation
+
+<progress id="initialProgress" max="1" value="0" style="width: 100%"></progress>
+
+## Other animations
+
+<progress id="animationProgress" max="1" value="0" style="width: 100%"></progress>
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = Utils.numbers({count: chart.data.labels.length, min: -100, max: 100});
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Dataset',
+    handler(chart) {
+      const data = chart.data;
+      const dsColor = Utils.namedColor(chart.data.datasets.length);
+      const newDataset = {
+        label: 'Dataset ' + (data.datasets.length + 1),
+        backgroundColor: Utils.transparentize(dsColor, 0.5),
+        borderColor: dsColor,
+        data: Utils.numbers({count: data.labels.length, min: -100, max: 100}),
+      };
+      chart.data.datasets.push(newDataset);
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Data',
+    handler(chart) {
+      const data = chart.data;
+      if (data.datasets.length > 0) {
+        data.labels = Utils.months({count: data.labels.length + 1});
+
+        for (let index = 0; index < data.datasets.length; ++index) {
+          data.datasets[index].data.push(Utils.rand(-100, 100));
+        }
+
+        chart.update();
+      }
+    }
+  },
+  {
+    name: 'Remove Dataset',
+    handler(chart) {
+      chart.data.datasets.pop();
+      chart.update();
+    }
+  },
+  {
+    name: 'Remove Data',
+    handler(chart) {
+      chart.data.labels.splice(-1, 1); // remove the label first
+
+      chart.data.datasets.forEach(dataset => {
+        dataset.data.pop();
+      });
+
+      chart.update();
+    }
+  }
+];
+// </block:actions>
+
+// <block:setup:1>
+const initProgress = document.getElementById('initialProgress');
+const progress = document.getElementById('animationProgress');
+
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};
+
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red, 0.5),
+    },
+    {
+      label: 'Dataset 2',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.blue,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.blue, 0.5),
+    }
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    animation: {
+      duration: 2000,
+      onProgress: function(context) {
+        if (context.initial) {
+          initProgress.value = context.currentStep / context.numSteps;
+        } else {
+          progress.value = context.currentStep / context.numSteps;
+        }
+      },
+      onComplete: function(context) {
+        if (context.initial) {
+          console.log('Initial animation finished');
+        } else {
+          console.log('animation finished');
+        }
+      }
+    },
+    interaction: {
+      mode: 'nearest',
+      axis: 'x',
+      intersect: false
+    },
+    plugins: {
+      title: {
+        display: true,
+        text: 'Chart.js Line Chart - Animation Progress Bar'
+      }
+    },
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+  output: 'console.log output is displayed here'
+};
+```
+
+## Docs
+* [Animations](../../configuration/animations.md)
+  * [Animation Callbacks](../../configuration/animations.md#animation-callbacks)
+* [Data structures (`labels`)](../../general/data-structures.md)
+* [Line](../../charts/line.md)
+* [Options](../../general/options.md)
+  * [Scriptable Options](../../general/options.md#scriptable-options)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/advanced/radial-gradient.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/advanced/radial-gradient.md
@@ -0,0 +1,122 @@
+# Radial Gradient
+
+```js chart-editor
+// <block:setup:3>
+const DATA_COUNT = 5;
+Utils.srand(110);
+
+const chartColors = Utils.CHART_COLORS;
+const colors = [chartColors.red, chartColors.orange, chartColors.yellow, chartColors.green, chartColors.blue];
+
+const cache = new Map();
+let width = null;
+let height = null;
+
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = generateData();
+      });
+      chart.update();
+    }
+  },
+];
+// </block:setup>
+
+// <block:createRadialGradient3:0>
+function createRadialGradient3(context, c1, c2, c3) {
+  const chartArea = context.chart.chartArea;
+  if (!chartArea) {
+    // This case happens on initial chart load
+    return;
+  }
+
+  const chartWidth = chartArea.right - chartArea.left;
+  const chartHeight = chartArea.bottom - chartArea.top;
+  if (width !== chartWidth || height !== chartHeight) {
+    cache.clear();
+  }
+  let gradient = cache.get(c1 + c2 + c3);
+  if (!gradient) {
+    // Create the gradient because this is either the first render
+    // or the size of the chart has changed
+    width = chartWidth;
+    height = chartHeight;
+    const centerX = (chartArea.left + chartArea.right) / 2;
+    const centerY = (chartArea.top + chartArea.bottom) / 2;
+    const r = Math.min(
+      (chartArea.right - chartArea.left) / 2,
+      (chartArea.bottom - chartArea.top) / 2
+    );
+    const ctx = context.chart.ctx;
+    gradient = ctx.createRadialGradient(centerX, centerY, 0, centerX, centerY, r);
+    gradient.addColorStop(0, c1);
+    gradient.addColorStop(0.5, c2);
+    gradient.addColorStop(1, c3);
+    cache.set(c1 + c2 + c3, gradient);
+  }
+
+  return gradient;
+}
+// </block:createRadialGradient3>
+
+// <block:data:2>
+function generateData() {
+  return Utils.numbers({
+    count: DATA_COUNT,
+    min: 0,
+    max: 100
+  });
+}
+
+const data = {
+  labels: Utils.months({count: DATA_COUNT}),
+  datasets: [{
+    data: generateData()
+  }]
+};
+// </block:data>
+
+// <block:config:1>
+const config = {
+  type: 'polarArea',
+  data: data,
+  options: {
+    plugins: {
+      legend: false,
+      tooltip: false,
+    },
+    elements: {
+      arc: {
+        backgroundColor: function(context) {
+          let c = colors[context.dataIndex];
+          if (!c) {
+            return;
+          }
+          if (context.active) {
+            c = helpers.getHoverColor(c);
+          }
+          const mid = helpers.color(c).desaturate(0.2).darken(0.2).rgbString();
+          const start = helpers.color(c).lighten(0.2).rotate(270).rgbString();
+          const end = helpers.color(c).lighten(0.1).rgbString();
+          return createRadialGradient3(context, start, mid, end);
+        },
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions,
+  config,
+};
+```
+
+## Docs
+* [Polar Area Chart](../../charts/polar.md)
+  * [Styling](../../charts/polar.md#styling)
+* [Options](../../general/options.md)
+  * [Scriptable Options](../../general/options.md#scriptable-options)(No newline at end of file)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/animations/delay.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/animations/delay.md
@@ -0,0 +1,87 @@
+# Delay
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = Utils.numbers({count: chart.data.labels.length, min: -100, max: 100});
+      });
+      chart.update();
+    }
+  },
+];
+// </block:actions>
+
+// <block:setup:1>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};
+
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: Utils.numbers(NUMBER_CFG),
+      backgroundColor: Utils.CHART_COLORS.red,
+    },
+    {
+      label: 'Dataset 2',
+      data: Utils.numbers(NUMBER_CFG),
+      backgroundColor: Utils.CHART_COLORS.blue,
+    },
+    {
+      label: 'Dataset 3',
+      data: Utils.numbers(NUMBER_CFG),
+      backgroundColor: Utils.CHART_COLORS.green,
+    },
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+let delayed;
+const config = {
+  type: 'bar',
+  data: data,
+  options: {
+    animation: {
+      onComplete: () => {
+        delayed = true;
+      },
+      delay: (context) => {
+        let delay = 0;
+        if (context.type === 'data' && context.mode === 'default' && !delayed) {
+          delay = context.dataIndex * 300 + context.datasetIndex * 100;
+        }
+        return delay;
+      },
+    },
+    scales: {
+      x: {
+        stacked: true,
+      },
+      y: {
+        stacked: true
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+## Docs
+* [Animations](../../configuration/animations.md)
+  * [animation (`delay`)](../../configuration/animations.md#animation)
+  * [Animation Callbacks](../../configuration/animations.md#animation-callbacks)
+* [Bar](../../charts/bar.md)
+  * [Stacked Bar Chart](../../charts/bar.md#stacked-bar-chart)
+* [Options](../../general/options.md)
+  * [Scriptable Options](../../general/options.md#scriptable-options)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/animations/drop.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/animations/drop.md
@@ -0,0 +1,136 @@
+# Drop
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = Utils.numbers({count: chart.data.labels.length, min: -100, max: 100});
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Dataset',
+    handler(chart) {
+      const data = chart.data;
+      const dsColor = Utils.namedColor(chart.data.datasets.length);
+      const newDataset = {
+        label: 'Dataset ' + (data.datasets.length + 1),
+        backgroundColor: Utils.transparentize(dsColor, 0.5),
+        borderColor: dsColor,
+        data: Utils.numbers({count: data.labels.length, min: -100, max: 100}),
+      };
+      chart.data.datasets.push(newDataset);
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Data',
+    handler(chart) {
+      const data = chart.data;
+      if (data.datasets.length > 0) {
+        data.labels = Utils.months({count: data.labels.length + 1});
+
+        for (let index = 0; index < data.datasets.length; ++index) {
+          data.datasets[index].data.push(Utils.rand(-100, 100));
+        }
+
+        chart.update();
+      }
+    }
+  },
+  {
+    name: 'Remove Dataset',
+    handler(chart) {
+      chart.data.datasets.pop();
+      chart.update();
+    }
+  },
+  {
+    name: 'Remove Data',
+    handler(chart) {
+      chart.data.labels.splice(-1, 1); // remove the label first
+
+      chart.data.datasets.forEach(dataset => {
+        dataset.data.pop();
+      });
+
+      chart.update();
+    }
+  }
+];
+// </block:actions>
+
+// <block:setup:1>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};
+
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [
+    {
+      label: 'Dataset 1',
+      animations: {
+        y: {
+          duration: 2000,
+          delay: 500
+        }
+      },
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red, 0.5),
+      fill: 1,
+      tension: 0.5
+    },
+    {
+      label: 'Dataset 2',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.blue,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.blue, 0.5),
+    }
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    animations: {
+      y: {
+        easing: 'easeInOutElastic',
+        from: (ctx) => {
+          if (ctx.type === 'data') {
+            if (ctx.mode === 'default' && !ctx.dropped) {
+              ctx.dropped = true;
+              return 0;
+            }
+          }
+        }
+      }
+    },
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+## Docs
+* [Area](../../charts/area.md)
+* [Animations](../../configuration/animations.md)
+  * [animation (`easing`)](../../configuration/animations.md#animation)
+  * [animations (`from`)](../../configuration/animations.md#animations-2)
+* [Line](../../charts/line.md)
+  * [Line Styling](../../charts/line.md#line-styling)
+    * `fill`
+    * `tension`
+* [Options](../../general/options.md)
+  * [Scriptable Options](../../general/options.md#scriptable-options)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/animations/loop.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/animations/loop.md
@@ -0,0 +1,141 @@
+# Loop
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = Utils.numbers({count: chart.data.labels.length, min: -100, max: 100});
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Dataset',
+    handler(chart) {
+      const data = chart.data;
+      const dsColor = Utils.namedColor(chart.data.datasets.length);
+      const newDataset = {
+        label: 'Dataset ' + (data.datasets.length + 1),
+        backgroundColor: Utils.transparentize(dsColor, 0.5),
+        borderColor: dsColor,
+        data: Utils.numbers({count: data.labels.length, min: -100, max: 100}),
+      };
+      chart.data.datasets.push(newDataset);
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Data',
+    handler(chart) {
+      const data = chart.data;
+      if (data.datasets.length > 0) {
+        data.labels = Utils.months({count: data.labels.length + 1});
+
+        for (let index = 0; index < data.datasets.length; ++index) {
+          data.datasets[index].data.push(Utils.rand(-100, 100));
+        }
+
+        chart.update();
+      }
+    }
+  },
+  {
+    name: 'Remove Dataset',
+    handler(chart) {
+      chart.data.datasets.pop();
+      chart.update();
+    }
+  },
+  {
+    name: 'Remove Data',
+    handler(chart) {
+      chart.data.labels.splice(-1, 1); // remove the label first
+
+      chart.data.datasets.forEach(dataset => {
+        dataset.data.pop();
+      });
+
+      chart.update();
+    }
+  }
+];
+// </block:actions>
+
+// <block:setup:1>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};
+
+const labels = Utils.months({count: DATA_COUNT});
+const data = {
+  labels: labels,
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red, 0.5),
+      tension: 0.4,
+    },
+    {
+      label: 'Dataset 2',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.blue,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.blue, 0.5),
+      tension: 0.2,
+    }
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    animations: {
+      radius: {
+        duration: 400,
+        easing: 'linear',
+        loop: (context) => context.active
+      }
+    },
+    hoverRadius: 12,
+    hoverBackgroundColor: 'yellow',
+    interaction: {
+      mode: 'nearest',
+      intersect: false,
+      axis: 'x'
+    },
+    plugins: {
+      tooltip: {
+        enabled: false
+      }
+    }
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+## Docs
+* [Animations](../../configuration/animations.md)
+  * [animation](../../configuration/animations.md#animation)
+    * `duration`
+    * `easing`
+    * **`loop`**
+  * [Default animations (`radius`)](../../configuration/animations.md#default-animations)
+* [Data structures (`labels`)](../../general/data-structures.md)
+* [Elements](../../configuration/elements.md)
+  * [Point Configuration](../../configuration/elements.md#point-configuration)
+    * `hoverRadius`
+    * `hoverBackgroundColor`
+* [Line](../../charts/line.md)
+* [Options](../../general/options.md)
+  * [Scriptable Options](../../general/options.md#scriptable-options)
+* [Tooltip (`enabled`)](../../configuration/tooltip.md)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/animations/progressive-line-easing.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/animations/progressive-line-easing.md
@@ -0,0 +1,189 @@
+# Progressive Line With Easing
+
+```js chart-editor
+
+// <block:data:2>
+const data = [];
+const data2 = [];
+let prev = 100;
+let prev2 = 80;
+for (let i = 0; i < 1000; i++) {
+  prev += 5 - Math.random() * 10;
+  data.push({x: i, y: prev});
+  prev2 += 5 - Math.random() * 10;
+  data2.push({x: i, y: prev2});
+}
+// </block:data>
+
+// <block:animation:1>
+let easing = helpers.easingEffects.easeOutQuad;
+let restart = false;
+const totalDuration = 5000;
+const duration = (ctx) => easing(ctx.index / data.length) * totalDuration / data.length;
+const delay = (ctx) => easing(ctx.index / data.length) * totalDuration;
+const previousY = (ctx) => ctx.index === 0 ? ctx.chart.scales.y.getPixelForValue(100) : ctx.chart.getDatasetMeta(ctx.datasetIndex).data[ctx.index - 1].getProps(['y'], true).y;
+const animation = {
+  x: {
+    type: 'number',
+    easing: 'linear',
+    duration: duration,
+    from: NaN, // the point is initially skipped
+    delay(ctx) {
+      if (ctx.type !== 'data' || ctx.xStarted) {
+        return 0;
+      }
+      ctx.xStarted = true;
+      return delay(ctx);
+    }
+  },
+  y: {
+    type: 'number',
+    easing: 'linear',
+    duration: duration,
+    from: previousY,
+    delay(ctx) {
+      if (ctx.type !== 'data' || ctx.yStarted) {
+        return 0;
+      }
+      ctx.yStarted = true;
+      return delay(ctx);
+    }
+  }
+};
+// </block:animation>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data: {
+    datasets: [{
+      borderColor: Utils.CHART_COLORS.red,
+      borderWidth: 1,
+      radius: 0,
+      data: data,
+    },
+    {
+      borderColor: Utils.CHART_COLORS.blue,
+      borderWidth: 1,
+      radius: 0,
+      data: data2,
+    }]
+  },
+  options: {
+    animation,
+    interaction: {
+      intersect: false
+    },
+    plugins: {
+      legend: false,
+      title: {
+        display: true,
+        text: () => easing.name
+      }
+    },
+    scales: {
+      x: {
+        type: 'linear'
+      }
+    }
+  }
+};
+// </block:config>
+
+// <block:actions:2>
+function restartAnims(chart) {
+  chart.stop();
+  const meta0 = chart.getDatasetMeta(0);
+  const meta1 = chart.getDatasetMeta(1);
+  for (let i = 0; i < data.length; i++) {
+    const ctx0 = meta0.controller.getContext(i);
+    const ctx1 = meta1.controller.getContext(i);
+    ctx0.xStarted = ctx0.yStarted = false;
+    ctx1.xStarted = ctx1.yStarted = false;
+  }
+  chart.update();
+}
+
+const actions = [
+  {
+    name: 'easeOutQuad',
+    handler(chart) {
+      easing = helpers.easingEffects.easeOutQuad;
+      restartAnims(chart);
+    }
+  },
+  {
+    name: 'easeOutCubic',
+    handler(chart) {
+      easing = helpers.easingEffects.easeOutCubic;
+      restartAnims(chart);
+    }
+  },
+  {
+    name: 'easeOutQuart',
+    handler(chart) {
+      easing = helpers.easingEffects.easeOutQuart;
+      restartAnims(chart);
+    }
+  },
+  {
+    name: 'easeOutQuint',
+    handler(chart) {
+      easing = helpers.easingEffects.easeOutQuint;
+      restartAnims(chart);
+    }
+  },
+  {
+    name: 'easeInQuad',
+    handler(chart) {
+      easing = helpers.easingEffects.easeInQuad;
+      restartAnims(chart);
+    }
+  },
+  {
+    name: 'easeInCubic',
+    handler(chart) {
+      easing = helpers.easingEffects.easeInCubic;
+      restartAnims(chart);
+    }
+  },
+  {
+    name: 'easeInQuart',
+    handler(chart) {
+      easing = helpers.easingEffects.easeInQuart;
+      restartAnims(chart);
+    }
+  },
+  {
+    name: 'easeInQuint',
+    handler(chart) {
+      easing = helpers.easingEffects.easeInQuint;
+      restartAnims(chart);
+    }
+  },
+];
+// </block:actions>
+
+module.exports = {
+  config,
+  actions
+};
+
+```
+## Api 
+* [Chart](../../api/classes/Chart.md)
+  * [`getDatasetMeta`](../../api/classes/Chart.md#getdatasetmeta)
+* [Scale](../../api/classes/Scale.md)
+  * [`getPixelForValue`](../../api/classes/Scale.md#getpixelforvalue)
+## Docs
+* [Animations](../../configuration/animations.md)
+  * [animation](../../configuration/animations.md#animation)
+    * `delay`
+    * `duration`
+    * `easing`
+    * `loop`
+  * [Easing](../../configuration/animations.md#easing)
+* [Line](../../charts/line.md)
+* [Options](../../general/options.md)
+  * [Scriptable Options](../../general/options.md#scriptable-options)
+    * [Data Context](../../general/options.md#data)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/animations/progressive-line.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/animations/progressive-line.md
@@ -0,0 +1,107 @@
+# Progressive Line
+
+```js chart-editor
+
+// <block:data:2>
+const data = [];
+const data2 = [];
+let prev = 100;
+let prev2 = 80;
+for (let i = 0; i < 1000; i++) {
+  prev += 5 - Math.random() * 10;
+  data.push({x: i, y: prev});
+  prev2 += 5 - Math.random() * 10;
+  data2.push({x: i, y: prev2});
+}
+// </block:data>
+
+// <block:animation:1>
+const totalDuration = 10000;
+const delayBetweenPoints = totalDuration / data.length;
+const previousY = (ctx) => ctx.index === 0 ? ctx.chart.scales.y.getPixelForValue(100) : ctx.chart.getDatasetMeta(ctx.datasetIndex).data[ctx.index - 1].getProps(['y'], true).y;
+const animation = {
+  x: {
+    type: 'number',
+    easing: 'linear',
+    duration: delayBetweenPoints,
+    from: NaN, // the point is initially skipped
+    delay(ctx) {
+      if (ctx.type !== 'data' || ctx.xStarted) {
+        return 0;
+      }
+      ctx.xStarted = true;
+      return ctx.index * delayBetweenPoints;
+    }
+  },
+  y: {
+    type: 'number',
+    easing: 'linear',
+    duration: delayBetweenPoints,
+    from: previousY,
+    delay(ctx) {
+      if (ctx.type !== 'data' || ctx.yStarted) {
+        return 0;
+      }
+      ctx.yStarted = true;
+      return ctx.index * delayBetweenPoints;
+    }
+  }
+};
+// </block:animation>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data: {
+    datasets: [{
+      borderColor: Utils.CHART_COLORS.red,
+      borderWidth: 1,
+      radius: 0,
+      data: data,
+    },
+    {
+      borderColor: Utils.CHART_COLORS.blue,
+      borderWidth: 1,
+      radius: 0,
+      data: data2,
+    }]
+  },
+  options: {
+    animation,
+    interaction: {
+      intersect: false
+    },
+    plugins: {
+      legend: false
+    },
+    scales: {
+      x: {
+        type: 'linear'
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  config
+};
+
+```
+
+## Api 
+* [Chart](../../api/classes/Chart.md)
+  * [`getDatasetMeta`](../../api/classes/Chart.md#getdatasetmeta)
+* [Scale](../../api/classes/Scale.md)
+  * [`getPixelForValue`](../../api/classes/Scale.md#getpixelforvalue)
+## Docs
+* [Animations](../../configuration/animations.md)
+  * [animation](../../configuration/animations.md#animation)
+    * `delay`
+    * `duration`
+    * `easing`
+    * `loop`
+* [Line](../../charts/line.md)
+* [Options](../../general/options.md)
+  * [Scriptable Options](../../general/options.md#scriptable-options)
+    * [Data Context](../../general/options.md#data)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/area/line-boundaries.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/area/line-boundaries.md
@@ -0,0 +1,127 @@
+# Line Chart Boundaries
+
+```js chart-editor
+// <block:setup:2>
+const inputs = {
+  min: -100,
+  max: 100,
+  count: 8,
+  decimals: 2,
+  continuity: 1
+};
+
+const generateLabels = () => {
+  return Utils.months({count: inputs.count});
+};
+
+const generateData = () => (Utils.numbers(inputs));
+// </block:setup>
+
+// <block:data:0>
+const data = {
+  labels: generateLabels(),
+  datasets: [
+    {
+      label: 'Dataset',
+      data: generateData(),
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red),
+      fill: false
+    }
+  ]
+};
+// </block:data>
+
+// <block:actions:3>
+let smooth = false;
+
+const actions = [
+  {
+    name: 'Fill: false (default)',
+    handler: (chart) => {
+      chart.data.datasets.forEach(dataset => {
+        dataset.fill = false;
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Fill: origin',
+    handler: (chart) => {
+      chart.data.datasets.forEach(dataset => {
+        dataset.fill = 'origin';
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Fill: start',
+    handler: (chart) => {
+      chart.data.datasets.forEach(dataset => {
+        dataset.fill = 'start';
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Fill: end',
+    handler: (chart) => {
+      chart.data.datasets.forEach(dataset => {
+        dataset.fill = 'end';
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = generateData();
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Smooth',
+    handler(chart) {
+      smooth = !smooth;
+      chart.options.elements.line.tension = smooth ? 0.4 : 0;
+      chart.update();
+    }
+  }
+];
+// </block:actions>
+
+// <block:config:1>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    plugins: {
+      filler: {
+        propagate: false,
+      },
+      title: {
+        display: true,
+        text: (ctx) => 'Fill: ' + ctx.chart.data.datasets[0].fill
+      }
+    },
+    interaction: {
+      intersect: false,
+    }
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+
+## Docs
+* [Area](../../charts/area.md)
+  * [Filling modes](../../charts/area.md#filling-modes)
+    * Boundary: `'start'`, `'end'`, `'origin'`
+* [Line](../../charts/line.md)
+* [Data structures (`labels`)](../../general/data-structures.md)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/area/line-datasets.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/area/line-datasets.md
@@ -0,0 +1,174 @@
+# Line Chart Datasets
+
+```js chart-editor
+// <block:setup:2>
+const inputs = {
+  min: 20,
+  max: 80,
+  count: 8,
+  decimals: 2,
+  continuity: 1
+};
+
+const generateLabels = () => {
+  return Utils.months({count: inputs.count});
+};
+
+const generateData = () => (Utils.numbers(inputs));
+
+Utils.srand(42);
+// </block:setup>
+
+// <block:data:0>
+const data = {
+  labels: generateLabels(),
+  datasets: [
+    {
+      label: 'D0',
+      data: generateData(),
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red),
+      hidden: true
+    },
+    {
+      label: 'D1',
+      data: generateData(),
+      borderColor: Utils.CHART_COLORS.orange,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.orange),
+      fill: '-1'
+    },
+    {
+      label: 'D2',
+      data: generateData(),
+      borderColor: Utils.CHART_COLORS.yellow,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.yellow),
+      hidden: true,
+      fill: 1
+    },
+    {
+      label: 'D3',
+      data: generateData(),
+      borderColor: Utils.CHART_COLORS.green,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.green),
+      fill: '-1'
+    },
+    {
+      label: 'D4',
+      data: generateData(),
+      borderColor: Utils.CHART_COLORS.blue,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.blue),
+      fill: '-1'
+    },
+    {
+      label: 'D5',
+      data: generateData(),
+      borderColor: Utils.CHART_COLORS.grey,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.grey),
+      fill: '+2'
+    },
+    {
+      label: 'D6',
+      data: generateData(),
+      borderColor: Utils.CHART_COLORS.purple,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.purple),
+      fill: false
+    },
+    {
+      label: 'D7',
+      data: generateData(),
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red),
+      fill: 8
+    },
+    {
+      label: 'D8',
+      data: generateData(),
+      borderColor: Utils.CHART_COLORS.orange,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.orange),
+      fill: 'end',
+      hidden: true
+    },
+    {
+      label: 'D9',
+      data: generateData(),
+      borderColor: Utils.CHART_COLORS.yellow,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.yellow),
+      fill: {above: 'blue', below: 'red', target: {value: 350}}
+    }
+  ]
+};
+// </block:data>
+
+// <block:actions:3>
+let smooth = false;
+let propagate = false;
+
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = generateData();
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Propagate',
+    handler(chart) {
+      propagate = !propagate;
+      chart.options.plugins.filler.propagate = propagate;
+      chart.update();
+    }
+  },
+  {
+    name: 'Smooth',
+    handler(chart) {
+      smooth = !smooth;
+      chart.options.elements.line.tension = smooth ? 0.4 : 0;
+      chart.update();
+    }
+  }
+];
+// </block:actions>
+
+// <block:config:1>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    scales: {
+      y: {
+        stacked: true
+      }
+    },
+    plugins: {
+      filler: {
+        propagate: false
+      },
+      'samples-filler-analyser': {
+        target: 'chart-analyser'
+      }
+    },
+    interaction: {
+      intersect: false,
+    },
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+
+<div id="chart-analyser" class="analyser"></div>
+
+## Docs
+* [Area](../../charts/area.md)
+  * [Filling modes](../../charts/area.md#filling-modes)
+* [Line](../../charts/line.md)
+* [Data structures (`labels`)](../../general/data-structures.md)
+* [Axes scales](../../axes/)
+  * [Common options to all axes (`stacked`)](../../axes/#common-options-to-all-axes)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/area/line-drawtime.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/area/line-drawtime.md
@@ -0,0 +1,121 @@
+# Line Chart drawTime
+
+```js chart-editor
+// <block:setup:2>
+const inputs = {
+  min: -100,
+  max: 100,
+  count: 8,
+  decimals: 2,
+  continuity: 1
+};
+
+const generateLabels = () => {
+  return Utils.months({count: inputs.count});
+};
+
+Utils.srand(3);
+const generateData = () => (Utils.numbers(inputs));
+// </block:setup>
+
+// <block:data:0>
+const data = {
+  labels: generateLabels(),
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: generateData(),
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.CHART_COLORS.red,
+      fill: true
+    },
+    {
+      label: 'Dataset 2',
+      data: generateData(),
+      borderColor: Utils.CHART_COLORS.blue,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.blue),
+      fill: true
+    }
+  ]
+};
+// </block:data>
+
+// <block:actions:3>
+let smooth = false;
+
+const actions = [
+  {
+    name: 'drawTime: beforeDatasetDraw (default)',
+    handler: (chart) => {
+      chart.options.plugins.filler.drawTime = 'beforeDatasetDraw';
+      chart.update();
+    }
+  },
+  {
+    name: 'drawTime: beforeDatasetsDraw',
+    handler: (chart) => {
+      chart.options.plugins.filler.drawTime = 'beforeDatasetsDraw';
+      chart.update();
+    }
+  },
+  {
+    name: 'drawTime: beforeDraw',
+    handler: (chart) => {
+      chart.options.plugins.filler.drawTime = 'beforeDraw';
+      chart.update();
+    }
+  },
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = generateData();
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Smooth',
+    handler(chart) {
+      smooth = !smooth;
+      chart.options.elements.line.tension = smooth ? 0.4 : 0;
+      chart.update();
+    }
+  }
+];
+// </block:actions>
+
+// <block:config:1>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    plugins: {
+      filler: {
+        propagate: false,
+      },
+      title: {
+        display: true,
+        text: (ctx) => 'drawTime: ' + ctx.chart.options.plugins.filler.drawTime
+      }
+    },
+    pointBackgroundColor: '#fff',
+    radius: 10,
+    interaction: {
+      intersect: false,
+    }
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+## Docs
+* [Area](../../charts/area.md)
+  * [Configuration (`drawTime`)](../../charts/area.md#configuration)
+* [Line](../../charts/line.md)
+  * [Line Styling (`tension`)](../../charts/line.md#line-styling)
+* [Data structures (`labels`)](../../general/data-structures.md)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/area/line-stacked.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/area/line-stacked.md
@@ -0,0 +1,180 @@
+# Line Chart Stacked
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Stacked: true',
+    handler: (chart) => {
+      chart.options.scales.y.stacked = true;
+      chart.update();
+    }
+  },
+  {
+    name: 'Stacked: false (default)',
+    handler: (chart) => {
+      chart.options.scales.y.stacked = false;
+      chart.update();
+    }
+  },
+  {
+    name: 'Stacked Single',
+    handler: (chart) => {
+      chart.options.scales.y.stacked = 'single';
+      chart.update();
+    }
+  },
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = Utils.numbers({count: chart.data.labels.length, min: -100, max: 100});
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Dataset',
+    handler(chart) {
+      const data = chart.data;
+      const dsColor = Utils.namedColor(chart.data.datasets.length);
+      const newDataset = {
+        label: 'Dataset ' + (data.datasets.length + 1),
+        backgroundColor: dsColor,
+        borderColor: dsColor,
+        fill: true,
+        data: Utils.numbers({count: data.labels.length, min: -100, max: 100}),
+      };
+      chart.data.datasets.push(newDataset);
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Data',
+    handler(chart) {
+      const data = chart.data;
+      if (data.datasets.length > 0) {
+        data.labels = Utils.months({count: data.labels.length + 1});
+
+        for (let index = 0; index < data.datasets.length; ++index) {
+          data.datasets[index].data.push(Utils.rand(-100, 100));
+        }
+
+        chart.update();
+      }
+    }
+  },
+  {
+    name: 'Remove Dataset',
+    handler(chart) {
+      chart.data.datasets.pop();
+      chart.update();
+    }
+  },
+  {
+    name: 'Remove Data',
+    handler(chart) {
+      chart.data.labels.splice(-1, 1); // remove the label first
+
+      chart.data.datasets.forEach(dataset => {
+        dataset.data.pop();
+      });
+
+      chart.update();
+    }
+  }
+];
+// </block:actions>
+
+// <block:setup:1>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};
+
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [
+    {
+      label: 'My First dataset',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.CHART_COLORS.red,
+      fill: true
+    },
+    {
+      label: 'My Second dataset',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.blue,
+      backgroundColor: Utils.CHART_COLORS.blue,
+      fill: true
+    },
+    {
+      label: 'My Third dataset',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.green,
+      backgroundColor: Utils.CHART_COLORS.green,
+      fill: true
+    },
+    {
+      label: 'My Fourth dataset',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.yellow,
+      backgroundColor: Utils.CHART_COLORS.yellow,
+      fill: true
+    }
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    responsive: true,
+    plugins: {
+      title: {
+        display: true,
+        text: (ctx) => 'Chart.js Line Chart - stacked=' + ctx.chart.options.scales.y.stacked
+      },
+      tooltip: {
+        mode: 'index'
+      },
+    },
+    interaction: {
+      mode: 'nearest',
+      axis: 'x',
+      intersect: false
+    },
+    scales: {
+      x: {
+        title: {
+          display: true,
+          text: 'Month'
+        }
+      },
+      y: {
+        stacked: true,
+        title: {
+          display: true,
+          text: 'Value'
+        }
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config
+};
+```
+
+## Docs
+* [Area](../../charts/area.md)
+  * [Filling modes](../../charts/area.md#filling-modes)
+* [Line](../../charts/line.md)
+* [Data structures (`labels`)](../../general/data-structures.md)
+* [Axes scales](../../axes/)
+  * [Common options to all axes (`stacked`)](../../axes/#common-options-to-all-axes)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/area/radar.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/area/radar.md
@@ -0,0 +1,148 @@
+# Radar Chart Stacked
+
+```js chart-editor
+// <block:setup:1>
+const inputs = {
+  min: 8,
+  max: 16,
+  count: 8,
+  decimals: 2,
+  continuity: 1
+};
+
+const generateLabels = () => {
+  return Utils.months({count: inputs.count});
+};
+
+const generateData = () => {
+  const values = Utils.numbers(inputs);
+  inputs.from = values;
+  return values;
+};
+
+const labels = Utils.months({count: 8});
+const data = {
+  labels: generateLabels(),
+  datasets: [
+    {
+      label: 'D0',
+      data: generateData(),
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red),
+    },
+    {
+      label: 'D1',
+      data: generateData(),
+      borderColor: Utils.CHART_COLORS.orange,
+      hidden: true,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.orange),
+      fill: '-1'
+    },
+    {
+      label: 'D2',
+      data: generateData(),
+      borderColor: Utils.CHART_COLORS.yellow,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.yellow),
+      fill: 1
+    },
+    {
+      label: 'D3',
+      data: generateData(),
+      borderColor: Utils.CHART_COLORS.green,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.green),
+      fill: false
+    },
+    {
+      label: 'D4',
+      data: generateData(),
+      borderColor: Utils.CHART_COLORS.blue,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.blue),
+      fill: '-1'
+    },
+    {
+      label: 'D5',
+      data: generateData(),
+      borderColor: Utils.CHART_COLORS.purple,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.purple),
+      fill: '-1'
+    },
+    {
+      label: 'D6',
+      data: generateData(),
+      borderColor: Utils.CHART_COLORS.grey,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.grey),
+      fill: {value: 85}
+    }
+  ]
+};
+// </block:setup>
+
+// <block:actions:2>
+let smooth = false;
+let propagate = false;
+
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      inputs.from = [];
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = generateData();
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Propagate',
+    handler(chart) {
+      propagate = !propagate;
+      chart.options.plugins.filler.propagate = propagate;
+      chart.update();
+
+    }
+  },
+  {
+    name: 'Smooth',
+    handler(chart) {
+      smooth = !smooth;
+      chart.options.elements.line.tension = smooth ? 0.4 : 0;
+      chart.update();
+    }
+  }
+];
+// </block:actions>
+
+// <block:config:0>
+const config = {
+  type: 'radar',
+  data: data,
+  options: {
+    plugins: {
+      filler: {
+        propagate: false
+      },
+      'samples-filler-analyser': {
+        target: 'chart-analyser'
+      }
+    },
+    interaction: {
+      intersect: false
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config
+};
+```
+
+<div id="chart-analyser" class="analyser"></div>
+
+## Docs
+* [Area](../../charts/area.md)
+  * [Filling modes](../../charts/area.md#filling-modes)
+  * [`propagate`](../../charts/area.md#propagate)
+* [Radar](../../charts/radar.md)
+* [Data structures (`labels`)](../../general/data-structures.md)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/bar/border-radius.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/bar/border-radius.md
@@ -0,0 +1,76 @@
+# Bar Chart Border Radius
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = Utils.numbers({count: chart.data.labels.length, min: -100, max: 100});
+      });
+      chart.update();
+    }
+  },
+];
+// </block:actions>
+
+// <block:setup:1>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};
+
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [
+    {
+      label: 'Fully Rounded',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red, 0.5),
+      borderWidth: 2,
+      borderRadius: Number.MAX_VALUE,
+      borderSkipped: false,
+    },
+    {
+      label: 'Small Radius',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.blue,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.blue, 0.5),
+      borderWidth: 2,
+      borderRadius: 5,
+      borderSkipped: false,
+    }
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'bar',
+  data: data,
+  options: {
+    responsive: true,
+    plugins: {
+      legend: {
+        position: 'top',
+      },
+      title: {
+        display: true,
+        text: 'Chart.js Bar Chart'
+      }
+    }
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+
+## Docs
+* [Bar](../../charts/bar.md)
+  * [`borderRadius`](../../charts/bar.md#borderradius)
+* [Data structures (`labels`)](../../general/data-structures.md)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/bar/floating.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/bar/floating.md
@@ -0,0 +1,74 @@
+# Floating Bars
+
+Using `[number, number][]` as the type for `data` to define the beginning and end value for each bar. This is instead of having every bar start at 0.
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = chart.data.labels.map(() => {
+          return [Utils.rand(-100, 100), Utils.rand(-100, 100)];
+        });
+      });
+      chart.update();
+    }
+  },
+];
+// </block:actions>
+
+// <block:setup:1>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};
+
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: labels.map(() => {
+        return [Utils.rand(-100, 100), Utils.rand(-100, 100)];
+      }),
+      backgroundColor: Utils.CHART_COLORS.red,
+    },
+    {
+      label: 'Dataset 2',
+      data: labels.map(() => {
+        return [Utils.rand(-100, 100), Utils.rand(-100, 100)];
+      }),
+      backgroundColor: Utils.CHART_COLORS.blue,
+    },
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'bar',
+  data: data,
+  options: {
+    responsive: true,
+    plugins: {
+      legend: {
+        position: 'top',
+      },
+      title: {
+        display: true,
+        text: 'Chart.js Floating Bar Chart'
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+## Docs
+* [Bar](../../charts/bar.md)
+* [Data structures (`labels`)](../../general/data-structures.md)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/bar/horizontal.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/bar/horizontal.md
@@ -0,0 +1,128 @@
+# Horizontal Bar Chart
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = Utils.numbers({count: chart.data.labels.length, min: -100, max: 100});
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Dataset',
+    handler(chart) {
+      const data = chart.data;
+      const dsColor = Utils.namedColor(chart.data.datasets.length);
+      const newDataset = {
+        label: 'Dataset ' + (data.datasets.length + 1),
+        backgroundColor: Utils.transparentize(dsColor, 0.5),
+        borderColor: dsColor,
+        borderWidth: 1,
+        data: Utils.numbers({count: data.labels.length, min: -100, max: 100}),
+      };
+      chart.data.datasets.push(newDataset);
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Data',
+    handler(chart) {
+      const data = chart.data;
+      if (data.datasets.length > 0) {
+        data.labels = Utils.months({count: data.labels.length + 1});
+
+        for (let index = 0; index < data.datasets.length; ++index) {
+          data.datasets[index].data.push(Utils.rand(-100, 100));
+        }
+
+        chart.update();
+      }
+    }
+  },
+  {
+    name: 'Remove Dataset',
+    handler(chart) {
+      chart.data.datasets.pop();
+      chart.update();
+    }
+  },
+  {
+    name: 'Remove Data',
+    handler(chart) {
+      chart.data.labels.splice(-1, 1); // remove the label first
+
+      chart.data.datasets.forEach(dataset => {
+        dataset.data.pop();
+      });
+
+      chart.update();
+    }
+  }
+];
+// </block:actions>
+
+// <block:setup:1>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};
+
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red, 0.5),
+    },
+    {
+      label: 'Dataset 2',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.blue,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.blue, 0.5),
+    }
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'bar',
+  data: data,
+  options: {
+    indexAxis: 'y',
+    // Elements options apply to all of the options unless overridden in a dataset
+    // In this case, we are setting the border of each horizontal bar to be 2px wide
+    elements: {
+      bar: {
+        borderWidth: 2,
+      }
+    },
+    responsive: true,
+    plugins: {
+      legend: {
+        position: 'right',
+      },
+      title: {
+        display: true,
+        text: 'Chart.js Horizontal Bar Chart'
+      }
+    }
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+
+## Docs
+* [Bar](../../charts/bar.md)
+  * [Horizontal Bar Chart](../../charts/bar.md#horizontal-bar-chart)
+
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/bar/stacked-groups.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/bar/stacked-groups.md
@@ -0,0 +1,88 @@
+# Stacked Bar Chart with Groups
+
+Using the `stack` property to divide datasets into multiple stacks.
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = Utils.numbers({count: chart.data.labels.length, min: -100, max: 100});
+      });
+      chart.update();
+    }
+  },
+];
+// </block:actions>
+
+// <block:setup:1>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};
+
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: Utils.numbers(NUMBER_CFG),
+      backgroundColor: Utils.CHART_COLORS.red,
+      stack: 'Stack 0',
+    },
+    {
+      label: 'Dataset 2',
+      data: Utils.numbers(NUMBER_CFG),
+      backgroundColor: Utils.CHART_COLORS.blue,
+      stack: 'Stack 0',
+    },
+    {
+      label: 'Dataset 3',
+      data: Utils.numbers(NUMBER_CFG),
+      backgroundColor: Utils.CHART_COLORS.green,
+      stack: 'Stack 1',
+    },
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'bar',
+  data: data,
+  options: {
+    plugins: {
+      title: {
+        display: true,
+        text: 'Chart.js Bar Chart - Stacked'
+      },
+    },
+    responsive: true,
+    interaction: {
+      intersect: false,
+    },
+    scales: {
+      x: {
+        stacked: true,
+      },
+      y: {
+        stacked: true
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+
+## Docs
+* [Bar](../../charts/bar.md)
+  * [Stacked Bar Chart](../../charts/bar.md#stacked-bar-chart)
+* [Data structures (`labels`)](../../general/data-structures.md)
+  * [Dataset Configuration (`stack`)](../../general/data-structures.md#dataset-configuration)
+
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/bar/stacked.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/bar/stacked.md
@@ -0,0 +1,77 @@
+# Stacked Bar Chart
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = Utils.numbers({count: chart.data.labels.length, min: -100, max: 100});
+      });
+      chart.update();
+    }
+  },
+];
+// </block:actions>
+
+// <block:setup:1>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};
+
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: Utils.numbers(NUMBER_CFG),
+      backgroundColor: Utils.CHART_COLORS.red,
+    },
+    {
+      label: 'Dataset 2',
+      data: Utils.numbers(NUMBER_CFG),
+      backgroundColor: Utils.CHART_COLORS.blue,
+    },
+    {
+      label: 'Dataset 3',
+      data: Utils.numbers(NUMBER_CFG),
+      backgroundColor: Utils.CHART_COLORS.green,
+    },
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'bar',
+  data: data,
+  options: {
+    plugins: {
+      title: {
+        display: true,
+        text: 'Chart.js Bar Chart - Stacked'
+      },
+    },
+    responsive: true,
+    scales: {
+      x: {
+        stacked: true,
+      },
+      y: {
+        stacked: true
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+## Docs
+* [Bar](../../charts/bar.md)
+  * [Stacked Bar Chart](../../charts/bar.md#stacked-bar-chart)
+
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/bar/vertical.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/bar/vertical.md
@@ -0,0 +1,119 @@
+# Vertical Bar Chart
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = Utils.numbers({count: chart.data.labels.length, min: -100, max: 100});
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Dataset',
+    handler(chart) {
+      const data = chart.data;
+      const dsColor = Utils.namedColor(chart.data.datasets.length);
+      const newDataset = {
+        label: 'Dataset ' + (data.datasets.length + 1),
+        backgroundColor: Utils.transparentize(dsColor, 0.5),
+        borderColor: dsColor,
+        borderWidth: 1,
+        data: Utils.numbers({count: data.labels.length, min: -100, max: 100}),
+      };
+      chart.data.datasets.push(newDataset);
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Data',
+    handler(chart) {
+      const data = chart.data;
+      if (data.datasets.length > 0) {
+        data.labels = Utils.months({count: data.labels.length + 1});
+
+        for (let index = 0; index < data.datasets.length; ++index) {
+          data.datasets[index].data.push(Utils.rand(-100, 100));
+        }
+
+        chart.update();
+      }
+    }
+  },
+  {
+    name: 'Remove Dataset',
+    handler(chart) {
+      chart.data.datasets.pop();
+      chart.update();
+    }
+  },
+  {
+    name: 'Remove Data',
+    handler(chart) {
+      chart.data.labels.splice(-1, 1); // remove the label first
+
+      chart.data.datasets.forEach(dataset => {
+        dataset.data.pop();
+      });
+
+      chart.update();
+    }
+  }
+];
+// </block:actions>
+
+// <block:setup:1>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};
+
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red, 0.5),
+    },
+    {
+      label: 'Dataset 2',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.blue,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.blue, 0.5),
+    }
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'bar',
+  data: data,
+  options: {
+    responsive: true,
+    plugins: {
+      legend: {
+        position: 'top',
+      },
+      title: {
+        display: true,
+        text: 'Chart.js Bar Chart'
+      }
+    }
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+
+## Docs
+* [Bar](../../charts/bar.md)
+* [Data structures (`labels`)](../../general/data-structures.md)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/information.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/information.md
@@ -0,0 +1,15 @@
+# Chart.js Samples
+
+You can navigate through the samples via the sidebar.
+
+Alternatively, you can run them locally. To do so, clone the [Chart.js repository](https://github.com/chartjs/Chart.js) from GitHub, run `pnpm ci` to install all packages, then run `pnpm run docs:dev` to build the documentation. As soon as the build is done, you can go to [localhost:8080/samples](http://localhost:8080/samples/) to see the samples.
+
+## Out of the box working samples
+These samples are made for demonstration purposes only. They won't work out of the box if you copy paste them into your own website. This is because of how the docs are getting built. Some boilerplate code gets hidden.
+For a sample that can be copied and pasted and used directly you can check the [usage page](../getting-started/usage.md).
+
+## Autogenerated data
+The data used in the samples is autogenerated using custom functions. These functions do not ship with the library, for more information about this you can check the [utils page](./utils.md).
+
+## Actions block
+The samples have an `actions` code block. These actions are not part of Chart.js. They are internally transformed to separate buttons together with `onClick` listeners by a plugin we use in the documentation. To implement such actions yourself you can make some buttons and add `onClick` event listeners to them. Then in these event listeners you can call your variable in which you made the chart and do the logic that the button is supposed to do.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/legend/events.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/legend/events.md
@@ -0,0 +1,63 @@
+# Events
+
+This sample demonstrates how to use the event hooks to highlight chart elements.
+
+```js chart-editor
+
+// <block:data:3>
+const data = {
+  labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
+  datasets: [{
+    label: '# of Votes',
+    data: [12, 19, 3, 5, 2, 3],
+    borderWidth: 1,
+    backgroundColor: ['#CB4335', '#1F618D', '#F1C40F', '#27AE60', '#884EA0', '#D35400'],
+  }]
+};
+// </block:data>
+
+// <block:handleHover:1>
+// Append '4d' to the colors (alpha channel), except for the hovered index
+function handleHover(evt, item, legend) {
+  legend.chart.data.datasets[0].backgroundColor.forEach((color, index, colors) => {
+    colors[index] = index === item.index || color.length === 9 ? color : color + '4D';
+  });
+  legend.chart.update();
+}
+// </block:handleHover>
+
+// <block:handleLeave:2>
+// Removes the alpha channel from background colors
+function handleLeave(evt, item, legend) {
+  legend.chart.data.datasets[0].backgroundColor.forEach((color, index, colors) => {
+    colors[index] = color.length === 9 ? color.slice(0, -2) : color;
+  });
+  legend.chart.update();
+}
+// </block:handleLeave>
+
+// <block:config:0>
+const config = {
+  type: 'pie',
+  data: data,
+  options: {
+    plugins: {
+      legend: {
+        onHover: handleHover,
+        onLeave: handleLeave
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  config
+};
+```
+
+## Docs
+* [Doughnut and Pie Charts](../../charts/doughnut.md)
+* [Legend](../../configuration/legend.md)
+  * `onHover`
+  * `onLeave`(No newline at end of file)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/legend/html.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/legend/html.md
@@ -0,0 +1,142 @@
+# HTML Legend
+
+This example shows how to create a custom HTML legend using a plugin and connect it to the chart in lieu of the default on-canvas legend.  
+For an html legend to work you need to place an empty div at your web page with the ID you provide in the options to bind to like so: `<div id="legend-container"></div>`.  
+
+<div id="legend-container"></div>
+
+```js chart-editor
+// <block:plugin:0>
+const getOrCreateLegendList = (chart, id) => {
+  const legendContainer = document.getElementById(id);
+  let listContainer = legendContainer.querySelector('ul');
+
+  if (!listContainer) {
+    listContainer = document.createElement('ul');
+    listContainer.style.display = 'flex';
+    listContainer.style.flexDirection = 'row';
+    listContainer.style.margin = 0;
+    listContainer.style.padding = 0;
+
+    legendContainer.appendChild(listContainer);
+  }
+
+  return listContainer;
+};
+
+const htmlLegendPlugin = {
+  id: 'htmlLegend',
+  afterUpdate(chart, args, options) {
+    const ul = getOrCreateLegendList(chart, options.containerID);
+
+    // Remove old legend items
+    while (ul.firstChild) {
+      ul.firstChild.remove();
+    }
+
+    // Reuse the built-in legendItems generator
+    const items = chart.options.plugins.legend.labels.generateLabels(chart);
+
+    items.forEach(item => {
+      const li = document.createElement('li');
+      li.style.alignItems = 'center';
+      li.style.cursor = 'pointer';
+      li.style.display = 'flex';
+      li.style.flexDirection = 'row';
+      li.style.marginLeft = '10px';
+
+      li.onclick = () => {
+        const {type} = chart.config;
+        if (type === 'pie' || type === 'doughnut') {
+          // Pie and doughnut charts only have a single dataset and visibility is per item
+          chart.toggleDataVisibility(item.index);
+        } else {
+          chart.setDatasetVisibility(item.datasetIndex, !chart.isDatasetVisible(item.datasetIndex));
+        }
+        chart.update();
+      };
+
+      // Color box
+      const boxSpan = document.createElement('span');
+      boxSpan.style.background = item.fillStyle;
+      boxSpan.style.borderColor = item.strokeStyle;
+      boxSpan.style.borderWidth = item.lineWidth + 'px';
+      boxSpan.style.display = 'inline-block';
+      boxSpan.style.flexShrink = 0;
+      boxSpan.style.height = '20px';
+      boxSpan.style.marginRight = '10px';
+      boxSpan.style.width = '20px';
+
+      // Text
+      const textContainer = document.createElement('p');
+      textContainer.style.color = item.fontColor;
+      textContainer.style.margin = 0;
+      textContainer.style.padding = 0;
+      textContainer.style.textDecoration = item.hidden ? 'line-through' : '';
+
+      const text = document.createTextNode(item.text);
+      textContainer.appendChild(text);
+
+      li.appendChild(boxSpan);
+      li.appendChild(textContainer);
+      ul.appendChild(li);
+    });
+  }
+};
+// </block:plugin>
+
+// <block:data:1>
+const NUM_DATA = 7;
+const NUM_CFG = {count: NUM_DATA, min: 0, max: 100};
+const data = {
+  labels: Utils.months({count: NUM_DATA}),
+  datasets: [
+    {
+      label: 'Dataset: 1',
+      data: Utils.numbers(NUM_CFG),
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red, 0.5),
+      fill: false,
+    },
+    {
+      label: 'Dataset: 1',
+      data: Utils.numbers(NUM_CFG),
+      borderColor: Utils.CHART_COLORS.blue,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.blue, 0.5),
+      fill: false,
+    },
+  ],
+};
+// </block:data>
+
+// <block:setup:2>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    plugins: {
+      htmlLegend: {
+        // ID of the container to put the legend in
+        containerID: 'legend-container',
+      },
+      legend: {
+        display: false,
+      }
+    }
+  },
+  plugins: [htmlLegendPlugin],
+};
+// </block:setup>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+## Docs 
+* [Data structures (`labels`)](../../general/data-structures.md)
+* [Line](../../charts/line.md)
+* [Legend](../../configuration/legend.md)
+  * `display: false`
+* [Plugins](../../developers/plugins.md)  
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/legend/point-style.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/legend/point-style.md
@@ -0,0 +1,69 @@
+# Point Style
+
+This sample show how to use the dataset point style in the legend instead of a rectangle to identify each dataset..
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Toggle Point Style',
+    handler(chart) {
+      chart.options.plugins.legend.labels.usePointStyle = !chart.options.plugins.legend.labels.usePointStyle;
+      chart.update();
+    }
+  },
+];
+// </block:actions>
+
+// <block:setup:1>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};
+const data = {
+  labels: Utils.months({count: DATA_COUNT}),
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: Utils.numbers(NUMBER_CFG),
+      fill: false,
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red, 0.5),
+      borderWidth: 1,
+      pointStyle: 'rectRot',
+      pointRadius: 5,
+      pointBorderColor: 'rgb(0, 0, 0)'
+    },
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    plugins: {
+      legend: {
+        labels: {
+          usePointStyle: true,
+        },
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+
+## Docs 
+* [Data structures (`labels`)](../../general/data-structures.md)
+* [Line](../../charts/line.md)
+* [Legend](../../configuration/legend.md)
+  * [Legend Label Configuration](../../configuration/legend.md#legend-label-configuration)
+    * `usePointStyle`
+* [Elements](../../configuration/elements.md)
+  * [Point Configuration](../../configuration/elements.md#point-configuration)
+  * [Point Styles](../../configuration/elements.md#point-styles)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/legend/position.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/legend/position.md
@@ -0,0 +1,74 @@
+# Position
+
+This sample show how to change the position of the chart legend.
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Position: top',
+    handler(chart) {
+      chart.options.plugins.legend.position = 'top';
+      chart.update();
+    }
+  },
+  {
+    name: 'Position: right',
+    handler(chart) {
+      chart.options.plugins.legend.position = 'right';
+      chart.update();
+    }
+  },
+  {
+    name: 'Position: bottom',
+    handler(chart) {
+      chart.options.plugins.legend.position = 'bottom';
+      chart.update();
+    }
+  },
+  {
+    name: 'Position: left',
+    handler(chart) {
+      chart.options.plugins.legend.position = 'left';
+      chart.update();
+    }
+  },
+];
+// </block:actions>
+
+
+// <block:setup:1>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};
+const data = {
+  labels: Utils.months({count: DATA_COUNT}),
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: Utils.numbers(NUMBER_CFG),
+      fill: false,
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red, 0.5),
+    },
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data: data,
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+
+## Docs 
+* [Data structures (`labels`)](../../general/data-structures.md)
+* [Line](../../charts/line.md)
+* [Legend](../../configuration/legend.md)
+  * [Position](../../configuration/legend.md#position)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/legend/title.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/legend/title.md
@@ -0,0 +1,79 @@
+# Alignment and Title Position
+
+This sample show how to configure the alignment and title position of the chart legend.
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Title Position: start',
+    handler(chart) {
+      chart.options.plugins.legend.align = 'start';
+      chart.options.plugins.legend.title.position = 'start';
+      chart.update();
+    }
+  },
+  {
+    name: 'Title Position: center (default)',
+    handler(chart) {
+      chart.options.plugins.legend.align = 'center';
+      chart.options.plugins.legend.title.position = 'center';
+      chart.update();
+    }
+  },
+  {
+    name: 'Title Position: end',
+    handler(chart) {
+      chart.options.plugins.legend.align = 'end';
+      chart.options.plugins.legend.title.position = 'end';
+      chart.update();
+    }
+  },
+];
+// </block:actions>
+
+
+// <block:setup:1>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};
+const data = {
+  labels: Utils.months({count: DATA_COUNT}),
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: Utils.numbers(NUMBER_CFG),
+      fill: false,
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red, 0.5),
+    },
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    plugins: {
+      legend: {
+        title: {
+          display: true,
+          text: 'Legend Title',
+        }
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+
+## Docs 
+* [Data structures (`labels`)](../../general/data-structures.md)
+* [Line](../../charts/line.md)
+* [Legend](../../configuration/legend.md)(No newline at end of file)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/line/interpolation.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/line/interpolation.md
@@ -0,0 +1,83 @@
+# Interpolation Modes
+
+```js chart-editor
+// <block:setup:1>
+const DATA_COUNT = 12;
+const labels = [];
+for (let i = 0; i < DATA_COUNT; ++i) {
+  labels.push(i.toString());
+}
+const datapoints = [0, 20, 20, 60, 60, 120, NaN, 180, 120, 125, 105, 110, 170];
+const data = {
+  labels: labels,
+  datasets: [
+    {
+      label: 'Cubic interpolation (monotone)',
+      data: datapoints,
+      borderColor: Utils.CHART_COLORS.red,
+      fill: false,
+      cubicInterpolationMode: 'monotone',
+      tension: 0.4
+    }, {
+      label: 'Cubic interpolation',
+      data: datapoints,
+      borderColor: Utils.CHART_COLORS.blue,
+      fill: false,
+      tension: 0.4
+    }, {
+      label: 'Linear interpolation (default)',
+      data: datapoints,
+      borderColor: Utils.CHART_COLORS.green,
+      fill: false
+    }
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    responsive: true,
+    plugins: {
+      title: {
+        display: true,
+        text: 'Chart.js Line Chart - Cubic interpolation mode'
+      },
+    },
+    interaction: {
+      intersect: false,
+    },
+    scales: {
+      x: {
+        display: true,
+        title: {
+          display: true
+        }
+      },
+      y: {
+        display: true,
+        title: {
+          display: true,
+          text: 'Value'
+        },
+        suggestedMin: -10,
+        suggestedMax: 200
+      }
+    }
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+## Docs 
+* [Line](../../charts/line.md)
+  * [`cubicInterpolationMode`](../../charts/line.md#cubicinterpolationmode)
+  * [Line Styling (`tension`)](../../charts/line.md#line-styling)
+
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/line/line.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/line/line.md
@@ -0,0 +1,118 @@
+# Line Chart
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = Utils.numbers({count: chart.data.labels.length, min: -100, max: 100});
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Dataset',
+    handler(chart) {
+      const data = chart.data;
+      const dsColor = Utils.namedColor(chart.data.datasets.length);
+      const newDataset = {
+        label: 'Dataset ' + (data.datasets.length + 1),
+        backgroundColor: Utils.transparentize(dsColor, 0.5),
+        borderColor: dsColor,
+        data: Utils.numbers({count: data.labels.length, min: -100, max: 100}),
+      };
+      chart.data.datasets.push(newDataset);
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Data',
+    handler(chart) {
+      const data = chart.data;
+      if (data.datasets.length > 0) {
+        data.labels = Utils.months({count: data.labels.length + 1});
+
+        for (let index = 0; index < data.datasets.length; ++index) {
+          data.datasets[index].data.push(Utils.rand(-100, 100));
+        }
+
+        chart.update();
+      }
+    }
+  },
+  {
+    name: 'Remove Dataset',
+    handler(chart) {
+      chart.data.datasets.pop();
+      chart.update();
+    }
+  },
+  {
+    name: 'Remove Data',
+    handler(chart) {
+      chart.data.labels.splice(-1, 1); // remove the label first
+
+      chart.data.datasets.forEach(dataset => {
+        dataset.data.pop();
+      });
+
+      chart.update();
+    }
+  }
+];
+// </block:actions>
+
+// <block:setup:1>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};
+
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red, 0.5),
+    },
+    {
+      label: 'Dataset 2',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.blue,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.blue, 0.5),
+    }
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    responsive: true,
+    plugins: {
+      legend: {
+        position: 'top',
+      },
+      title: {
+        display: true,
+        text: 'Chart.js Line Chart'
+      }
+    }
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+
+## Docs
+* [Line](../../charts/line.md)
+* [Data structures (`labels`)](../../general/data-structures.md)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/line/multi-axis.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/line/multi-axis.md
@@ -0,0 +1,94 @@
+# Multi Axis Line Chart
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = Utils.numbers({count: chart.data.labels.length, min: -100, max: 100});
+      });
+      chart.update();
+    }
+  },
+];
+// </block:actions>
+
+// <block:setup:1>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};
+
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red, 0.5),
+      yAxisID: 'y',
+    },
+    {
+      label: 'Dataset 2',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.blue,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.blue, 0.5),
+      yAxisID: 'y1',
+    }
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    responsive: true,
+    interaction: {
+      mode: 'index',
+      intersect: false,
+    },
+    stacked: false,
+    plugins: {
+      title: {
+        display: true,
+        text: 'Chart.js Line Chart - Multi Axis'
+      }
+    },
+    scales: {
+      y: {
+        type: 'linear',
+        display: true,
+        position: 'left',
+      },
+      y1: {
+        type: 'linear',
+        display: true,
+        position: 'right',
+
+        // grid line settings
+        grid: {
+          drawOnChartArea: false, // only want the grid lines for one axis to show up
+        },
+      },
+    }
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+
+## Docs
+* [Axes scales](../../axes/)
+* [Cartesian Axes](../../axes/cartesian/)
+  * [Axis Position](../../axes/cartesian/#axis-position)
+* [Data structures (`labels`)](../../general/data-structures.md)
+* [Line](../../charts/line.md)
+
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/line/point-styling.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/line/point-styling.md
@@ -0,0 +1,150 @@
+# Point Styling
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'pointStyle: circle (default)',
+    handler: (chart) => {
+      chart.data.datasets.forEach(dataset => {
+        dataset.pointStyle = 'circle';
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'pointStyle: cross',
+    handler: (chart) => {
+      chart.data.datasets.forEach(dataset => {
+        dataset.pointStyle = 'cross';
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'pointStyle: crossRot',
+    handler: (chart) => {
+      chart.data.datasets.forEach(dataset => {
+        dataset.pointStyle = 'crossRot';
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'pointStyle: dash',
+    handler: (chart) => {
+      chart.data.datasets.forEach(dataset => {
+        dataset.pointStyle = 'dash';
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'pointStyle: line',
+    handler: (chart) => {
+      chart.data.datasets.forEach(dataset => {
+        dataset.pointStyle = 'line';
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'pointStyle: rect',
+    handler: (chart) => {
+      chart.data.datasets.forEach(dataset => {
+        dataset.pointStyle = 'rect';
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'pointStyle: rectRounded',
+    handler: (chart) => {
+      chart.data.datasets.forEach(dataset => {
+        dataset.pointStyle = 'rectRounded';
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'pointStyle: rectRot',
+    handler: (chart) => {
+      chart.data.datasets.forEach(dataset => {
+        dataset.pointStyle = 'rectRot';
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'pointStyle: star',
+    handler: (chart) => {
+      chart.data.datasets.forEach(dataset => {
+        dataset.pointStyle = 'star';
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'pointStyle: triangle',
+    handler: (chart) => {
+      chart.data.datasets.forEach(dataset => {
+        dataset.pointStyle = 'triangle';
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'pointStyle: false',
+    handler: (chart) => {
+      chart.data.datasets.forEach(dataset => {
+        dataset.pointStyle = false;
+      });
+      chart.update();
+    }
+  }
+];
+// </block:actions>
+
+// <block:setup:1>
+const data = {
+  labels: ['Day 1', 'Day 2', 'Day 3', 'Day 4', 'Day 5', 'Day 6'],
+  datasets: [
+    {
+      label: 'Dataset',
+      data: Utils.numbers({count: 6, min: -100, max: 100}),
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red, 0.5),
+      pointStyle: 'circle',
+      pointRadius: 10,
+      pointHoverRadius: 15
+    }
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    responsive: true,
+    plugins: {
+      title: {
+        display: true,
+        text: (ctx) => 'Point Style: ' + ctx.chart.data.datasets[0].pointStyle,
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+
+## Docs
+* [Data structures (`labels`)](../../general/data-structures.md)
+* [Line](../../charts/line.md)
+  * [Point Styling](../../charts/line.md#point-styling)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/line/segments.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/line/segments.md
@@ -0,0 +1,53 @@
+# Line Segment Styling
+Using helper functions to style each segment. Gaps in the data ('skipped') are set to dashed lines and segments with values going 'down' are set to a different color.
+
+```js chart-editor
+
+// <block:segmentUtils:1>
+const skipped = (ctx, value) => ctx.p0.skip || ctx.p1.skip ? value : undefined;
+const down = (ctx, value) => ctx.p0.parsed.y > ctx.p1.parsed.y ? value : undefined;
+// </block:segmentUtils>
+
+// <block:genericOptions:2>
+const genericOptions = {
+  fill: false,
+  interaction: {
+    intersect: false
+  },
+  radius: 0,
+};
+// </block:genericOptions>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data: {
+    labels: Utils.months({count: 7}),
+    datasets: [{
+      label: 'My First Dataset',
+      data: [65, 59, NaN, 48, 56, 57, 40],
+      borderColor: 'rgb(75, 192, 192)',
+      segment: {
+        borderColor: ctx => skipped(ctx, 'rgb(0,0,0,0.2)') || down(ctx, 'rgb(192,75,75)'),
+        borderDash: ctx => skipped(ctx, [6, 6]),
+      },
+      spanGaps: true
+    }]
+  },
+  options: genericOptions
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+## Docs
+* [Data structures (`labels`)](../../general/data-structures.md)
+* [Line](../../charts/line.md)
+  * [Line Styling](../../charts/line.md#line-styling)
+  * [Segment](../../charts/line.md#segment)
+* [Options](../../general/options.md)
+  * [Scriptable Options](../../general/options.md#scriptable-options)(No newline at end of file)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/line/stepped.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/line/stepped.md
@@ -0,0 +1,98 @@
+# Stepped Line Charts
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Step: false (default)',
+    handler: (chart) => {
+      chart.data.datasets.forEach(dataset => {
+        dataset.stepped = false;
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Step: true',
+    handler: (chart) => {
+      chart.data.datasets.forEach(dataset => {
+        dataset.stepped = true;
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Step: before',
+    handler: (chart) => {
+      chart.data.datasets.forEach(dataset => {
+        dataset.stepped = 'before';
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Step: after',
+    handler: (chart) => {
+      chart.data.datasets.forEach(dataset => {
+        dataset.stepped = 'after';
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Step: middle',
+    handler: (chart) => {
+      chart.data.datasets.forEach(dataset => {
+        dataset.stepped = 'middle';
+      });
+      chart.update();
+    }
+  }
+];
+// </block:actions>
+
+// <block:setup:1>
+const data = {
+  labels: ['Day 1', 'Day 2', 'Day 3', 'Day 4', 'Day 5', 'Day 6'],
+  datasets: [
+    {
+      label: 'Dataset',
+      data: Utils.numbers({count: 6, min: -100, max: 100}),
+      borderColor: Utils.CHART_COLORS.red,
+      fill: false,
+      stepped: true,
+    }
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    responsive: true,
+    interaction: {
+      intersect: false,
+      axis: 'x'
+    },
+    plugins: {
+      title: {
+        display: true,
+        text: (ctx) => 'Step ' + ctx.chart.data.datasets[0].stepped + ' Interpolation',
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+
+## Docs
+* [Data structures (`labels`)](../../general/data-structures.md)
+* [Line](../../charts/line.md)
+  * [Stepped](../../charts/line.md#stepped)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/line/styling.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/line/styling.md
@@ -0,0 +1,81 @@
+# Line Styling
+
+```js chart-editor
+// <block:setup:1>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};
+
+const labels = Utils.months({count: DATA_COUNT});
+const data = {
+  labels: labels,
+  datasets: [
+    {
+      label: 'Unfilled',
+      fill: false,
+      backgroundColor: Utils.CHART_COLORS.blue,
+      borderColor: Utils.CHART_COLORS.blue,
+      data: Utils.numbers(NUMBER_CFG),
+    }, {
+      label: 'Dashed',
+      fill: false,
+      backgroundColor: Utils.CHART_COLORS.green,
+      borderColor: Utils.CHART_COLORS.green,
+      borderDash: [5, 5],
+      data: Utils.numbers(NUMBER_CFG),
+    }, {
+      label: 'Filled',
+      backgroundColor: Utils.CHART_COLORS.red,
+      borderColor: Utils.CHART_COLORS.red,
+      data: Utils.numbers(NUMBER_CFG),
+      fill: true,
+    }
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'line',
+  data: data,
+  options: {
+    responsive: true,
+    plugins: {
+      title: {
+        display: true,
+        text: 'Chart.js Line Chart'
+      },
+    },
+    interaction: {
+      mode: 'index',
+      intersect: false
+    },
+    scales: {
+      x: {
+        display: true,
+        title: {
+          display: true,
+          text: 'Month'
+        }
+      },
+      y: {
+        display: true,
+        title: {
+          display: true,
+          text: 'Value'
+        }
+      }
+    }
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: [],
+  config: config,
+};
+```
+
+## Docs
+* [Data structures (`labels`)](../../general/data-structures.md)
+* [Line](../../charts/line.md)
+  * [Line Styling](../../charts/line.md#line-styling)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/bubble.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/bubble.md
@@ -0,0 +1,112 @@
+# Bubble
+
+```js chart-editor
+// <block:setup:1>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, rmin: 5, rmax: 15, min: 0, max: 100};
+
+const data = {
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: Utils.bubbles(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red, 0.5),
+    },
+    {
+      label: 'Dataset 2',
+      data: Utils.bubbles(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.orange,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.orange, 0.5),
+    }
+  ]
+};
+// </block:setup>
+
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = Utils.bubbles({count: DATA_COUNT, rmin: 5, rmax: 15, min: 0, max: 100});
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Dataset',
+    handler(chart) {
+      const chartData = chart.data;
+      const dsColor = Utils.namedColor(chartData.datasets.length);
+      const newDataset = {
+        label: 'Dataset ' + (chartData.datasets.length + 1),
+        backgroundColor: Utils.transparentize(dsColor, 0.5),
+        borderColor: dsColor,
+        data: Utils.bubbles({count: DATA_COUNT, rmin: 5, rmax: 15, min: 0, max: 100}),
+      };
+      chart.data.datasets.push(newDataset);
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Data',
+    handler(chart) {
+      const chartData = chart.data;
+      if (chartData.datasets.length > 0) {
+
+        for (let index = 0; index < chartData.datasets.length; ++index) {
+          chartData.datasets[index].data.push(Utils.bubbles({count: 1, rmin: 5, rmax: 15, min: 0, max: 100})[0]);
+        }
+
+        chart.update();
+      }
+    }
+  },
+  {
+    name: 'Remove Dataset',
+    handler(chart) {
+      chart.data.datasets.pop();
+      chart.update();
+    }
+  },
+  {
+    name: 'Remove Data',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data.pop();
+      });
+
+      chart.update();
+    }
+  }
+];
+// </block:actions>
+
+// <block:config:0>
+const config = {
+  type: 'bubble',
+  data: data,
+  options: {
+    responsive: true,
+    plugins: {
+      legend: {
+        position: 'top',
+      },
+      title: {
+        display: true,
+        text: 'Chart.js Bubble Chart'
+      }
+    }
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+
+## Docs
+* [Bubble](../../charts/bubble.md)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/combo-bar-line.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/combo-bar-line.md
@@ -0,0 +1,123 @@
+# Combo bar/line
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = Utils.numbers({count: chart.data.labels.length, min: -100, max: 100});
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Dataset',
+    handler(chart) {
+      const data = chart.data;
+      const dsColor = Utils.namedColor(chart.data.datasets.length);
+      const newDataset = {
+        label: 'Dataset ' + (data.datasets.length + 1),
+        backgroundColor: Utils.transparentize(dsColor, 0.5),
+        borderColor: dsColor,
+        borderWidth: 1,
+        data: Utils.numbers({count: data.labels.length, min: -100, max: 100}),
+      };
+      chart.data.datasets.push(newDataset);
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Data',
+    handler(chart) {
+      const data = chart.data;
+      if (data.datasets.length > 0) {
+        data.labels = Utils.months({count: data.labels.length + 1});
+
+        for (let index = 0; index < data.datasets.length; ++index) {
+          data.datasets[index].data.push(Utils.rand(-100, 100));
+        }
+
+        chart.update();
+      }
+    }
+  },
+  {
+    name: 'Remove Dataset',
+    handler(chart) {
+      chart.data.datasets.pop();
+      chart.update();
+    }
+  },
+  {
+    name: 'Remove Data',
+    handler(chart) {
+      chart.data.labels.splice(-1, 1); // remove the label first
+
+      chart.data.datasets.forEach(dataset => {
+        dataset.data.pop();
+      });
+
+      chart.update();
+    }
+  }
+];
+// </block:actions>
+
+// <block:setup:1>
+const DATA_COUNT = 7;
+const NUMBER_CFG = {count: DATA_COUNT, min: -100, max: 100};
+
+const labels = Utils.months({count: 7});
+const data = {
+  labels: labels,
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.red,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red, 0.5),
+      order: 1
+    },
+    {
+      label: 'Dataset 2',
+      data: Utils.numbers(NUMBER_CFG),
+      borderColor: Utils.CHART_COLORS.blue,
+      backgroundColor: Utils.transparentize(Utils.CHART_COLORS.blue, 0.5),
+      type: 'line',
+      order: 0
+    }
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'bar',
+  data: data,
+  options: {
+    responsive: true,
+    plugins: {
+      legend: {
+        position: 'top',
+      },
+      title: {
+        display: true,
+        text: 'Chart.js Combined Line/Bar Chart'
+      }
+    }
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+
+## Docs
+* [Bar](../../charts/bar.md)
+* [Line](../../charts/line.md)
+* [Data structures (`labels`)](../../general/data-structures.md)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/doughnut.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/doughnut.md
@@ -0,0 +1,139 @@
+# Doughnut
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = Utils.numbers({count: chart.data.labels.length, min: 0, max: 100});
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Dataset',
+    handler(chart) {
+      const data = chart.data;
+      const newDataset = {
+        label: 'Dataset ' + (data.datasets.length + 1),
+        backgroundColor: [],
+        data: [],
+      };
+
+      for (let i = 0; i < data.labels.length; i++) {
+        newDataset.data.push(Utils.numbers({count: 1, min: 0, max: 100}));
+
+        const colorIndex = i % Object.keys(Utils.CHART_COLORS).length;
+        newDataset.backgroundColor.push(Object.values(Utils.CHART_COLORS)[colorIndex]);
+      }
+
+      chart.data.datasets.push(newDataset);
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Data',
+    handler(chart) {
+      const data = chart.data;
+      if (data.datasets.length > 0) {
+        data.labels.push('data #' + (data.labels.length + 1));
+
+        for (let index = 0; index < data.datasets.length; ++index) {
+          data.datasets[index].data.push(Utils.rand(0, 100));
+        }
+
+        chart.update();
+      }
+    }
+  },
+  {
+    name: 'Hide(0)',
+    handler(chart) {
+      chart.hide(0);
+    }
+  },
+  {
+    name: 'Show(0)',
+    handler(chart) {
+      chart.show(0);
+    }
+  },
+  {
+    name: 'Hide (0, 1)',
+    handler(chart) {
+      chart.hide(0, 1);
+    }
+  },
+  {
+    name: 'Show (0, 1)',
+    handler(chart) {
+      chart.show(0, 1);
+    }
+  },
+  {
+    name: 'Remove Dataset',
+    handler(chart) {
+      chart.data.datasets.pop();
+      chart.update();
+    }
+  },
+  {
+    name: 'Remove Data',
+    handler(chart) {
+      chart.data.labels.splice(-1, 1); // remove the label first
+
+      chart.data.datasets.forEach(dataset => {
+        dataset.data.pop();
+      });
+
+      chart.update();
+    }
+  }
+];
+// </block:actions>
+
+// <block:setup:1>
+const DATA_COUNT = 5;
+const NUMBER_CFG = {count: DATA_COUNT, min: 0, max: 100};
+
+const data = {
+  labels: ['Red', 'Orange', 'Yellow', 'Green', 'Blue'],
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: Utils.numbers(NUMBER_CFG),
+      backgroundColor: Object.values(Utils.CHART_COLORS),
+    }
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'doughnut',
+  data: data,
+  options: {
+    responsive: true,
+    plugins: {
+      legend: {
+        position: 'top',
+      },
+      title: {
+        display: true,
+        text: 'Chart.js Doughnut Chart'
+      }
+    }
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+
+## Docs
+* [Doughnut and Pie Charts](../../charts/doughnut.md)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/multi-series-pie.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/multi-series-pie.md
@@ -0,0 +1,96 @@
+# Multi Series Pie
+
+```js chart-editor
+// <block:setup:1>
+const DATA_COUNT = 5;
+const NUMBER_CFG = {count: DATA_COUNT, min: 0, max: 100};
+
+const labels = Utils.months({count: 7});
+const data = {
+  labels: ['Overall Yay', 'Overall Nay', 'Group A Yay', 'Group A Nay', 'Group B Yay', 'Group B Nay', 'Group C Yay', 'Group C Nay'],
+  datasets: [
+    {
+      backgroundColor: ['#AAA', '#777'],
+      data: [21, 79]
+    },
+    {
+      backgroundColor: ['hsl(0, 100%, 60%)', 'hsl(0, 100%, 35%)'],
+      data: [33, 67]
+    },
+    {
+      backgroundColor: ['hsl(100, 100%, 60%)', 'hsl(100, 100%, 35%)'],
+      data: [20, 80]
+    },
+    {
+      backgroundColor: ['hsl(180, 100%, 60%)', 'hsl(180, 100%, 35%)'],
+      data: [10, 90]
+    }
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'pie',
+  data: data,
+  options: {
+    responsive: true,
+    plugins: {
+      legend: {
+        labels: {
+          generateLabels: function(chart) {
+            // Get the default label list
+            const original = Chart.overrides.pie.plugins.legend.labels.generateLabels;
+            const labelsOriginal = original.call(this, chart);
+
+            // Build an array of colors used in the datasets of the chart
+            let datasetColors = chart.data.datasets.map(function(e) {
+              return e.backgroundColor;
+            });
+            datasetColors = datasetColors.flat();
+
+            // Modify the color and hide state of each label
+            labelsOriginal.forEach(label => {
+              // There are twice as many labels as there are datasets. This converts the label index into the corresponding dataset index
+              label.datasetIndex = (label.index - label.index % 2) / 2;
+
+              // The hidden state must match the dataset's hidden state
+              label.hidden = !chart.isDatasetVisible(label.datasetIndex);
+
+              // Change the color to match the dataset
+              label.fillStyle = datasetColors[label.index];
+            });
+
+            return labelsOriginal;
+          }
+        },
+        onClick: function(mouseEvent, legendItem, legend) {
+          // toggle the visibility of the dataset from what it currently is
+          legend.chart.getDatasetMeta(
+            legendItem.datasetIndex
+          ).hidden = legend.chart.isDatasetVisible(legendItem.datasetIndex);
+          legend.chart.update();
+        }
+      },
+      tooltip: {
+        callbacks: {
+          title: function(context) {
+            const labelIndex = (context[0].datasetIndex * 2) + context[0].dataIndex;
+            return context[0].chart.data.labels[labelIndex] + ': ' + context[0].formattedValue;
+          }
+        }
+      }
+    }
+  },
+};
+// </block:config>
+
+module.exports = {
+  config: config,
+};
+```
+
+## Docs
+* [Doughnut and Pie Charts](../../charts/doughnut.md)
+* [Options](../../general/options.md)
+  * [Scriptable Options](../../general/options.md#scriptable-options)(No newline at end of file)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/pie.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/pie.md
@@ -0,0 +1,114 @@
+# Pie
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = Utils.numbers({count: chart.data.labels.length, min: 0, max: 100});
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Dataset',
+    handler(chart) {
+      const data = chart.data;
+      const newDataset = {
+        label: 'Dataset ' + (data.datasets.length + 1),
+        backgroundColor: [],
+        data: [],
+      };
+
+      for (let i = 0; i < data.labels.length; i++) {
+        newDataset.data.push(Utils.numbers({count: 1, min: 0, max: 100}));
+
+        const colorIndex = i % Object.keys(Utils.CHART_COLORS).length;
+        newDataset.backgroundColor.push(Object.values(Utils.CHART_COLORS)[colorIndex]);
+      }
+
+      chart.data.datasets.push(newDataset);
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Data',
+    handler(chart) {
+      const data = chart.data;
+      if (data.datasets.length > 0) {
+        data.labels.push('data #' + (data.labels.length + 1));
+
+        for (let index = 0; index < data.datasets.length; ++index) {
+          data.datasets[index].data.push(Utils.rand(0, 100));
+        }
+
+        chart.update();
+      }
+    }
+  },
+  {
+    name: 'Remove Dataset',
+    handler(chart) {
+      chart.data.datasets.pop();
+      chart.update();
+    }
+  },
+  {
+    name: 'Remove Data',
+    handler(chart) {
+      chart.data.labels.splice(-1, 1); // remove the label first
+
+      chart.data.datasets.forEach(dataset => {
+        dataset.data.pop();
+      });
+
+      chart.update();
+    }
+  }
+];
+// </block:actions>
+
+// <block:setup:1>
+const DATA_COUNT = 5;
+const NUMBER_CFG = {count: DATA_COUNT, min: 0, max: 100};
+
+const data = {
+  labels: ['Red', 'Orange', 'Yellow', 'Green', 'Blue'],
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: Utils.numbers(NUMBER_CFG),
+      backgroundColor: Object.values(Utils.CHART_COLORS),
+    }
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'pie',
+  data: data,
+  options: {
+    responsive: true,
+    plugins: {
+      legend: {
+        position: 'top',
+      },
+      title: {
+        display: true,
+        text: 'Chart.js Pie Chart'
+      }
+    }
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+## Docs
+* [Doughnut and Pie Charts](../../charts/doughnut.md)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/polar-area-center-labels.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/polar-area-center-labels.md
@@ -0,0 +1,107 @@
+# Polar area centered point labels
+
+```js chart-editor
+// <block:actions:2>
+const actions = [
+  {
+    name: 'Randomize',
+    handler(chart) {
+      chart.data.datasets.forEach(dataset => {
+        dataset.data = Utils.numbers({count: chart.data.labels.length, min: 0, max: 100});
+      });
+      chart.update();
+    }
+  },
+  {
+    name: 'Add Data',
+    handler(chart) {
+      const data = chart.data;
+      if (data.datasets.length > 0) {
+        data.labels.push('data #' + (data.labels.length + 1));
+
+        for (let index = 0; index < data.datasets.length; ++index) {
+          data.datasets[index].data.push(Utils.rand(0, 100));
+        }
+
+        chart.update();
+      }
+    }
+  },
+  {
+    name: 'Remove Data',
+    handler(chart) {
+      chart.data.labels.splice(-1, 1); // remove the label first
+
+      chart.data.datasets.forEach(dataset => {
+        dataset.data.pop();
+      });
+
+      chart.update();
+    }
+  }
+];
+// </block:actions>
+
+// <block:setup:1>
+const DATA_COUNT = 5;
+const NUMBER_CFG = {count: DATA_COUNT, min: 0, max: 100};
+
+const labels = ['Red', 'Orange', 'Yellow', 'Green', 'Blue'];
+const data = {
+  labels: labels,
+  datasets: [
+    {
+      label: 'Dataset 1',
+      data: Utils.numbers(NUMBER_CFG),
+      backgroundColor: [
+        Utils.transparentize(Utils.CHART_COLORS.red, 0.5),
+        Utils.transparentize(Utils.CHART_COLORS.orange, 0.5),
+        Utils.transparentize(Utils.CHART_COLORS.yellow, 0.5),
+        Utils.transparentize(Utils.CHART_COLORS.green, 0.5),
+        Utils.transparentize(Utils.CHART_COLORS.blue, 0.5),
+      ]
+    }
+  ]
+};
+// </block:setup>
+
+// <block:config:0>
+const config = {
+  type: 'polarArea',
+  data: data,
+  options: {
+    responsive: true,
+    scales: {
+      r: {
+        pointLabels: {
+          display: true,
+          centerPointLabels: true,
+          font: {
+            size: 18
+          }
+        }
+      }
+    },
+    plugins: {
+      legend: {
+        position: 'top',
+      },
+      title: {
+        display: true,
+        text: 'Chart.js Polar Area Chart With Centered Point Labels'
+      }
+    }
+  },
+};
+// </block:config>
+
+module.exports = {
+  actions: actions,
+  config: config,
+};
+```
+
+## Docs
+* [Polar Area Chart](../../charts/polar.md)
+* [Linear Radial Axis](../../axes/radial/linear.md)
+  * [Point Label Options (`centerPointLabels`)](../../axes/radial/linear.md#point-label-options)(No newline at end of file)
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/polar-area.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/polar-area.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/radar-skip-points.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/radar-skip-points.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/radar.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/radar.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/scatter-multi-axis.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/scatter-multi-axis.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/scatter.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/scatter.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/stacked-bar-line.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/other-charts/stacked-bar-line.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/plugins/chart-area-border.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/plugins/chart-area-border.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/plugins/doughnut-empty-state.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/plugins/doughnut-empty-state.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/plugins/quadrants.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/plugins/quadrants.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scale-options/center.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scale-options/center.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scale-options/grid.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scale-options/grid.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scale-options/ticks.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scale-options/ticks.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scale-options/titles.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scale-options/titles.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scales/linear-min-max-suggested.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scales/linear-min-max-suggested.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scales/linear-min-max.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scales/linear-min-max.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scales/linear-step-size.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scales/linear-step-size.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scales/log.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scales/log.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scales/stacked.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scales/stacked.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scales/time-combo.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scales/time-combo.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scales/time-line.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scales/time-line.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scales/time-max-span.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scales/time-max-span.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scriptable/bar.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scriptable/bar.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scriptable/bubble.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scriptable/bubble.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scriptable/line.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scriptable/line.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scriptable/pie.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scriptable/pie.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scriptable/polar.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scriptable/polar.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scriptable/radar.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/scriptable/radar.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/subtitle/basic.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/subtitle/basic.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/title/alignment.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/title/alignment.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/tooltip/content.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/tooltip/content.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/tooltip/html.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/tooltip/html.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/tooltip/interactions.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/tooltip/interactions.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/tooltip/point-style.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/tooltip/point-style.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/tooltip/position.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/tooltip/position.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/utils.md (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/samples/utils.md
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/scripts/analyzer.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/scripts/analyzer.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/scripts/components.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/scripts/components.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/scripts/derived-bubble.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/scripts/derived-bubble.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/scripts/helpers.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/scripts/helpers.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/scripts/log2.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/scripts/log2.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/scripts/register.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/scripts/register.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/docs/scripts/utils.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/docs/scripts/utils.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/helpers/helpers.cjs (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/helpers/helpers.cjs
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/helpers/helpers.d.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/helpers/helpers.d.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/helpers/helpers.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/helpers/helpers.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/helpers/package.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/helpers/package.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/karma.conf.cjs (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/karma.conf.cjs
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/package.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/package.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/pnpm-lock.yaml (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/pnpm-lock.yaml
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/pnpm-workspace.yaml (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/pnpm-workspace.yaml
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/rollup.config.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/rollup.config.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/scripts/deploy-docs.sh (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/scripts/deploy-docs.sh
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/scripts/docs-config.sh (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/scripts/docs-config.sh
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/scripts/publish.sh (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/scripts/publish.sh
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/scripts/sample-redirect-template.html (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/scripts/sample-redirect-template.html
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/scripts/utils.sh (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/scripts/utils.sh
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/controllers/controller.bar.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/controllers/controller.bar.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/controllers/controller.bubble.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/controllers/controller.bubble.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/controllers/controller.doughnut.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/controllers/controller.doughnut.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/controllers/controller.line.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/controllers/controller.line.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/controllers/controller.pie.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/controllers/controller.pie.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/controllers/controller.polarArea.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/controllers/controller.polarArea.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/controllers/controller.radar.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/controllers/controller.radar.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/controllers/controller.scatter.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/controllers/controller.scatter.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/controllers/index.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/controllers/index.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.adapters.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.adapters.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.animation.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.animation.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.animations.defaults.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.animations.defaults.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.animations.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.animations.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.animator.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.animator.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.config.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.config.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.controller.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.controller.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.datasetController.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.datasetController.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.defaults.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.defaults.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.element.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.element.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.interaction.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.interaction.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.layouts.defaults.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.layouts.defaults.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.layouts.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.layouts.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.plugins.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.plugins.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.registry.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.registry.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.scale.autoskip.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.scale.autoskip.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.scale.defaults.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.scale.defaults.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.scale.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.scale.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.ticks.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.ticks.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.typedRegistry.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/core.typedRegistry.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/core/index.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/core/index.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/elements/element.arc.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/elements/element.arc.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/elements/element.bar.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/elements/element.bar.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/elements/element.line.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/elements/element.line.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/elements/element.point.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/elements/element.point.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/elements/index.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/elements/index.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.canvas.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.canvas.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.collection.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.collection.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.color.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.color.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.config.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.config.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.config.types.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.config.types.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.core.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.core.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.curve.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.curve.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.dataset.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.dataset.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.dom.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.dom.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.easing.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.easing.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.extras.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.extras.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.interpolation.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.interpolation.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.intl.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.intl.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.math.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.math.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.options.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.options.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.rtl.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.rtl.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.segment.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/helpers.segment.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/index.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/helpers/index.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/index.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/index.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/index.umd.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/index.umd.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/platform/index.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/platform/index.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/platform/platform.base.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/platform/platform.base.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/platform/platform.basic.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/platform/platform.basic.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/platform/platform.dom.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/platform/platform.dom.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/index.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/index.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.colors.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.colors.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.decimation.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.decimation.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.filler/filler.drawing.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.filler/filler.drawing.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.filler/filler.helper.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.filler/filler.helper.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.filler/filler.options.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.filler/filler.options.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.filler/filler.segment.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.filler/filler.segment.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.filler/filler.target.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.filler/filler.target.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.filler/filler.target.stack.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.filler/filler.target.stack.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.filler/index.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.filler/index.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.filler/simpleArc.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.filler/simpleArc.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.legend.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.legend.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.subtitle.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.subtitle.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.title.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.title.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.tooltip.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/plugins/plugin.tooltip.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/scales/index.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/scales/index.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/scales/scale.category.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/scales/scale.category.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/scales/scale.linear.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/scales/scale.linear.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/scales/scale.linearbase.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/scales/scale.linearbase.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/scales/scale.logarithmic.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/scales/scale.logarithmic.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/scales/scale.radialLinear.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/scales/scale.radialLinear.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/scales/scale.time.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/scales/scale.time.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/scales/scale.timeseries.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/scales/scale.timeseries.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/types.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/types.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/types/animation.d.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/types/animation.d.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/types/basic.d.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/types/basic.d.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/types/color.d.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/types/color.d.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/types/geometric.d.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/types/geometric.d.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/types/index.d.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/types/index.d.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/types/layout.d.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/types/layout.d.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/src/types/utils.d.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/src/types/utils.d.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/.eslintrc.yml (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/.eslintrc.yml
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/BasicChartWebWorker.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/BasicChartWebWorker.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/aligned-pixels.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/aligned-pixels.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/aligned-pixels.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/aligned-pixels.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/backgroundColor/indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/backgroundColor/indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/backgroundColor/indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/backgroundColor/indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/backgroundColor/loopable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/backgroundColor/loopable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/backgroundColor/loopable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/backgroundColor/loopable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/backgroundColor/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/backgroundColor/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/backgroundColor/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/backgroundColor/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/backgroundColor/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/backgroundColor/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/backgroundColor/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/backgroundColor/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-animation-hide-show.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-animation-hide-show.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-animation-hide-show.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-animation-hide-show.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-base-value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-base-value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-base-value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-base-value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-default-begin-at-zero.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-default-begin-at-zero.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-default-begin-at-zero.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-default-begin-at-zero.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-absolute.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-absolute.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-absolute.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-absolute.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-flex-offset.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-flex-offset.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-flex-offset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-flex-offset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-flex-single-reverse.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-flex-single-reverse.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-flex-single-reverse.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-flex-single-reverse.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-flex-single.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-flex-single.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-flex-single.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-flex-single.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-flex.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-flex.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-flex.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-flex.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-max.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-max.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-max.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-max.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-min-interval-multi.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-min-interval-multi.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-min-interval-multi.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-min-interval-multi.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-min-interval.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-min-interval.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-min-interval.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-min-interval.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-multiple.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-multiple.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-multiple.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-multiple.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-no-overlap.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-no-overlap.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-no-overlap.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-no-overlap.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-offset.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-offset.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-offset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-offset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-per-dataset-stacked.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-per-dataset-stacked.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-per-dataset-stacked.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-per-dataset-stacked.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-per-dataset.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-per-dataset.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-per-dataset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-per-dataset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-reverse.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-reverse.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-reverse.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-reverse.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-single-xy.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-single-xy.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-single-xy.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-single-xy.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-single.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-single.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-single.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-single.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-stacked.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-stacked.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-stacked.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/bar-thickness-stacked.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/bottom.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/bottom.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/bottom.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/bottom.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/left.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/left.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/left.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/left.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/mid-x.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/mid-x.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/mid-x.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/mid-x.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/mid-y.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/mid-y.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/mid-y.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/mid-y.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/right.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/right.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/right.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/right.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/top.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/top.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/top.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/top.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/value-x.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/value-x.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/value-x.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/value-x.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/value-y.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/value-y.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/value-y.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/baseLine/value-y.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderColor/border+dpr.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderColor/border+dpr.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderColor/border+dpr.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderColor/border+dpr.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderColor/indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderColor/indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderColor/indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderColor/indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderColor/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderColor/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderColor/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderColor/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderColor/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderColor/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderColor/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderColor/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderRadius/border-radius-stacked-number-mixed-chart.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderRadius/border-radius-stacked-number-mixed-chart.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderRadius/border-radius-stacked-number-mixed-chart.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderRadius/border-radius-stacked-number-mixed-chart.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderRadius/border-radius-stacked-number-with-order.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderRadius/border-radius-stacked-number-with-order.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderRadius/border-radius-stacked-number-with-order.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderRadius/border-radius-stacked-number-with-order.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderRadius/border-radius-stacked-number.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderRadius/border-radius-stacked-number.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderRadius/border-radius-stacked-number.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderRadius/border-radius-stacked-number.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderRadius/border-radius.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderRadius/border-radius.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderRadius/border-radius.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderRadius/border-radius.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderRadius/no-spacing.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderRadius/no-spacing.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderRadius/no-spacing.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderRadius/no-spacing.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderSkipped/indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderSkipped/indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderSkipped/indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderSkipped/indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderSkipped/middle.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderSkipped/middle.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderSkipped/middle.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderSkipped/middle.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderSkipped/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderSkipped/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderSkipped/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderSkipped/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderSkipped/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderSkipped/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderSkipped/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderSkipped/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/indexable-object.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/indexable-object.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/indexable-object.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/indexable-object.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/negative.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/negative.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/negative.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/negative.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/object.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/object.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/object.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/object.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/scriptable-object.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/scriptable-object.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/scriptable-object.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/scriptable-object.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/borderWidth/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/chart-area-clip.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/chart-area-clip.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/chart-area-clip.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/chart-area-clip.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/data/object-index-axis-y.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/data/object-index-axis-y.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/data/object-index-axis-y.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/data/object-index-axis-y.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/data/object.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/data/object.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/data/object.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/data/object.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/data/parsing.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/data/parsing.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/data/parsing.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/data/parsing.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/data-as-objects-horizontal.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/data-as-objects-horizontal.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/data-as-objects-horizontal.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/data-as-objects-horizontal.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/data-as-objects.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/data-as-objects.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/data-as-objects.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/data-as-objects.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/float-bar-horizontal.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/float-bar-horizontal.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/float-bar-horizontal.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/float-bar-horizontal.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/float-bar-stacked-horizontal.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/float-bar-stacked-horizontal.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/float-bar-stacked-horizontal.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/float-bar-stacked-horizontal.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/float-bar-stacked.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/float-bar-stacked.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/float-bar-stacked.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/float-bar-stacked.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/float-bar.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/float-bar.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/float-bar.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/floatBar/float-bar.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/horizontal-borders.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/horizontal-borders.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/horizontal-borders.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/horizontal-borders.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/horizontal-neg.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/horizontal-neg.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/horizontal-neg.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/horizontal-neg.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/horizontal-pos.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/horizontal-pos.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/horizontal-pos.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/horizontal-pos.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/horizontal-stacked-no-overlap.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/horizontal-stacked-no-overlap.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/horizontal-stacked-no-overlap.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/horizontal-stacked-no-overlap.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/horizontal-stacked.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/horizontal-stacked.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/horizontal-stacked.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/horizontal-stacked.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/horizontal.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/horizontal.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/horizontal.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/horizontal.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/vertical-neg.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/vertical-neg.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/vertical-neg.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/vertical-neg.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/vertical-pos.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/vertical-pos.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/vertical-pos.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/vertical-pos.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/vertical-stacked-no-overlap.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/vertical-stacked-no-overlap.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/vertical-stacked-no-overlap.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/vertical-stacked-no-overlap.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/vertical-stacked.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/vertical-stacked.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/vertical-stacked.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/vertical-stacked.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/vertical.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/vertical.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/vertical.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/minBarLength/vertical.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/not-grouped/mixed.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/not-grouped/mixed.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/not-grouped/mixed.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/not-grouped/mixed.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/not-grouped/on-time.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/not-grouped/on-time.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/not-grouped/on-time.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/not-grouped/on-time.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/skipNull/bar-skip-null-object-data.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/skipNull/bar-skip-null-object-data.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/skipNull/bar-skip-null-object-data.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/skipNull/bar-skip-null-object-data.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/skipNull/bar-skip-null.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/skipNull/bar-skip-null.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/skipNull/bar-skip-null.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/skipNull/bar-skip-null.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/skipNull/combinations.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/skipNull/combinations.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/skipNull/combinations.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/skipNull/combinations.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/issue-9105.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/issue-9105.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/issue-9105.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/issue-9105.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/logarithmic-strings.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/logarithmic-strings.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/logarithmic-strings.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/logarithmic-strings.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/logarithmic.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/logarithmic.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/logarithmic.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/logarithmic.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/order-default.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/order-default.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/order-default.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/order-default.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/order-specified.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/order-specified.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/order-specified.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/order-specified.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/remove-dataset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/remove-dataset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/remove-dataset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/remove-dataset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/replace-data.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/replace-data.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/replace-data.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/replace-data.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/stacked-and-multiple-axis.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/stacked-and-multiple-axis.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/stacked-and-multiple-axis.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bar/stacking/stacked-and-multiple-axis.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/autoPadding-disabled.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/autoPadding-disabled.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/autoPadding-disabled.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/autoPadding-disabled.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/clip.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/clip.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/clip.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/clip.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/hover-radius-zero.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/hover-radius-zero.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/hover-radius-zero.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/hover-radius-zero.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/padding-update.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/padding-update.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/padding-update.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/padding-update.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/padding.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/padding.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/padding.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/padding.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/point-style.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/point-style.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/point-style.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/point-style.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/radius-data.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/radius-data.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/radius-data.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/radius-data.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/radius-scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/radius-scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/radius-scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.bubble/radius-scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/backgroundColor/indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/backgroundColor/indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/backgroundColor/indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/backgroundColor/indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/backgroundColor/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/backgroundColor/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/backgroundColor/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/backgroundColor/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/backgroundColor/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/backgroundColor/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/backgroundColor/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/backgroundColor/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderAlign/indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderAlign/indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderAlign/indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderAlign/indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderAlign/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderAlign/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderAlign/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderAlign/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderAlign/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderAlign/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderAlign/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderAlign/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderColor/indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderColor/indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderColor/indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderColor/indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderColor/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderColor/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderColor/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderColor/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderColor/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderColor/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderColor/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderColor/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderDash/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderDash/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderDash/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderDash/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderDash/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderDash/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderDash/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderDash/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderJoinStyle/bevel-default.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderJoinStyle/bevel-default.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderJoinStyle/bevel-default.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderJoinStyle/bevel-default.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderJoinStyle/miter.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderJoinStyle/miter.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderJoinStyle/miter.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderJoinStyle/miter.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderJoinStyle/round.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderJoinStyle/round.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderJoinStyle/round.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderJoinStyle/round.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderRadius/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderRadius/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderRadius/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderRadius/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderRadius/value-corners.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderRadius/value-corners.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderRadius/value-corners.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderRadius/value-corners.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderRadius/value-large-radius.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderRadius/value-large-radius.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderRadius/value-large-radius.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderRadius/value-large-radius.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderRadius/value-small-number.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderRadius/value-small-number.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderRadius/value-small-number.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderRadius/value-small-number.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderWidth/indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderWidth/indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderWidth/indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderWidth/indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderWidth/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderWidth/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderWidth/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderWidth/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderWidth/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderWidth/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderWidth/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/borderWidth/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-NaN.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-NaN.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-NaN.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-NaN.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-animation-hide-last.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-animation-hide-last.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-animation-hide-last.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-animation-hide-last.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-animation.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-animation.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-animation.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-animation.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-border-align-center.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-border-align-center.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-border-align-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-border-align-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-border-align-inner.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-border-align-inner.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-border-align-inner.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-border-align-inner.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-circumference-over-2pi.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-circumference-over-2pi.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-circumference-over-2pi.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-circumference-over-2pi.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-circumference-per-dataset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-circumference-per-dataset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-circumference-per-dataset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-circumference-per-dataset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-circumference.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-circumference.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-circumference.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-circumference.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-full-to-semi.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-full-to-semi.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-full-to-semi.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-full-to-semi.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-hidden-single.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-hidden-single.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-hidden-single.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-hidden-single.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-hidden.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-hidden.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-hidden.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-hidden.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-offset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-offset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-offset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-offset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-outer-radius-percent.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-outer-radius-percent.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-outer-radius-percent.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-outer-radius-percent.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-outer-radius-pixels.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-outer-radius-pixels.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-outer-radius-pixels.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-outer-radius-pixels.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-parsing.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-parsing.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-parsing.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-parsing.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-rotation-300.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-rotation-300.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-rotation-300.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-rotation-300.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-rotation-circumference-8x8.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-rotation-circumference-8x8.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-rotation-circumference-8x8.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-rotation-circumference-8x8.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-rotation-per-dataset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-rotation-per-dataset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-rotation-per-dataset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-rotation-per-dataset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-set-active-elements.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-set-active-elements.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-set-active-elements.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-set-active-elements.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-spacing-and-offset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-spacing-and-offset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-spacing-and-offset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-spacing-and-offset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-spacing.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-spacing.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-spacing.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-spacing.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-weight.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-weight.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-weight.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/doughnut-weight.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/event-replay.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/event-replay.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/event-replay.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/event-replay.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/pie-border-align-center.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/pie-border-align-center.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/pie-border-align-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/pie-border-align-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/pie-border-align-inner.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/pie-border-align-inner.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/pie-border-align-inner.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/pie-border-align-inner.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/pie-circumference.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/pie-circumference.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/pie-circumference.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/pie-circumference.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/pie-offset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/pie-offset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/pie-offset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/pie-offset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/pie-weight.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/pie-weight.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/pie-weight.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/pie-weight.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/selfJoin/doughnut.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/selfJoin/doughnut.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/selfJoin/doughnut.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/selfJoin/doughnut.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/selfJoin/pie.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/selfJoin/pie.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/selfJoin/pie.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/selfJoin/pie.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/single-slice-circumference-405.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/single-slice-circumference-405.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/single-slice-circumference-405.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/single-slice-circumference-405.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/single-slice-offset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/single-slice-offset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/single-slice-offset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/single-slice-offset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/single-slice-opacity.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/single-slice-opacity.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/single-slice-opacity.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.doughnut/single-slice-opacity.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/backgroundColor/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/backgroundColor/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/backgroundColor/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/backgroundColor/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/backgroundColor/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/backgroundColor/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/backgroundColor/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/backgroundColor/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderCapStyle/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderCapStyle/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderCapStyle/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderCapStyle/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderCapStyle/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderCapStyle/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderCapStyle/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderCapStyle/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderColor/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderColor/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderColor/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderColor/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderColor/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderColor/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderColor/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderColor/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderDash/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderDash/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderDash/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderDash/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderDash/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderDash/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderDash/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderDash/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderDashOffset/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderDashOffset/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderDashOffset/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderDashOffset/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderDashOffset/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderDashOffset/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderDashOffset/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderDashOffset/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderJoinStyle/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderJoinStyle/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderJoinStyle/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderJoinStyle/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderJoinStyle/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderJoinStyle/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderJoinStyle/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderJoinStyle/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderWidth/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderWidth/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderWidth/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderWidth/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderWidth/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderWidth/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderWidth/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderWidth/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderWidth/zero.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderWidth/zero.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderWidth/zero.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/borderWidth/zero.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-x-max.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-x-max.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-x-max.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-x-max.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-x-min.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-x-min.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-x-min.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-x-min.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-x.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-x.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-x.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-x.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-y-max.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-y-max.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-y-max.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-y-max.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-y-min.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-y-min.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-y-min.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-y-min.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-y.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-y.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-y.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/default-y.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/false.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/false.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/false.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/false.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/specified.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/specified.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/specified.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/clip/specified.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/cubicInterpolationMode/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/cubicInterpolationMode/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/cubicInterpolationMode/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/cubicInterpolationMode/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/cubicInterpolationMode/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/cubicInterpolationMode/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/cubicInterpolationMode/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/cubicInterpolationMode/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/fill/no-border.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/fill/no-border.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/fill/no-border.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/fill/no-border.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/fill/order-default.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/fill/order-default.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/fill/order-default.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/fill/order-default.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/fill/order.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/fill/order.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/fill/order.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/fill/order.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/fill/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/fill/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/fill/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/fill/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/fill/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/fill/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/fill/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/fill/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/issue-8902.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/issue-8902.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/issue-8902.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/issue-8902.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/non-numeric-y.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/non-numeric-y.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/non-numeric-y.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/non-numeric-y.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/point-style-offscreen-canvas.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/point-style-offscreen-canvas.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/point-style-offscreen-canvas.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/point-style-offscreen-canvas.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/point-style.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/point-style.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/point-style.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/point-style.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBackgroundColor/indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBackgroundColor/indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBackgroundColor/indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBackgroundColor/indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBackgroundColor/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBackgroundColor/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBackgroundColor/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBackgroundColor/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBackgroundColor/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBackgroundColor/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBackgroundColor/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBackgroundColor/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderColor/indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderColor/indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderColor/indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderColor/indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderColor/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderColor/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderColor/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderColor/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderColor/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderColor/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderColor/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderColor/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderWidth/indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderWidth/indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderWidth/indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderWidth/indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderWidth/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderWidth/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderWidth/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderWidth/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderWidth/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderWidth/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderWidth/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointBorderWidth/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointStyle/indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointStyle/indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointStyle/indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointStyle/indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointStyle/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointStyle/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointStyle/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointStyle/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointStyle/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointStyle/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointStyle/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/pointStyle/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/radius/indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/radius/indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/radius/indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/radius/indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/radius/scriptable-to-value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/radius/scriptable-to-value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/radius/scriptable-to-value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/radius/scriptable-to-value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/radius/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/radius/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/radius/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/radius/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/radius/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/radius/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/radius/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/radius/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/rotation/indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/rotation/indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/rotation/indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/rotation/indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/rotation/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/rotation/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/rotation/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/rotation/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/rotation/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/rotation/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/rotation/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/rotation/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/gap.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/gap.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/gap.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/gap.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/gradient.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/gradient.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/gradient.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/gradient.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/range.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/range.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/range.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/range.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/single.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/single.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/single.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/single.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/slope.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/slope.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/slope.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/slope.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/spanGaps.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/spanGaps.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/spanGaps.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/segments/spanGaps.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/showLine/dataset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/showLine/dataset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/showLine/dataset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/showLine/dataset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/showLine/false.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/showLine/false.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/showLine/false.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/showLine/false.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/bounds-data.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/bounds-data.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/bounds-data.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/bounds-data.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/order-default.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/order-default.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/order-default.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/order-default.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/order-specified.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/order-specified.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/order-specified.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/order-specified.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/single.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/single.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/single.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/single.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/stacked-scatter.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/stacked-scatter.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/stacked-scatter.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/stacked-scatter.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/updates.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/updates.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/updates.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.line/stacking/updates.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/angle-array.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/angle-array.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/angle-array.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/angle-array.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/angle-lines.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/angle-lines.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/angle-lines.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/angle-lines.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/angle-undefined.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/angle-undefined.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/angle-undefined.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/angle-undefined.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/indexable-dataset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/indexable-dataset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/indexable-dataset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/indexable-dataset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/indexable-element-options.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/indexable-element-options.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/indexable-element-options.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/indexable-element-options.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/scriptable-dataset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/scriptable-dataset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/scriptable-dataset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/scriptable-dataset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/scriptable-element-options.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/scriptable-element-options.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/scriptable-element-options.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/scriptable-element-options.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/value-dataset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/value-dataset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/value-dataset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/value-dataset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/value-element-options.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/value-element-options.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/value-element-options.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/backgroundColor/value-element-options.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/border-align-center.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/border-align-center.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/border-align-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/border-align-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/border-align-inner.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/border-align-inner.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/border-align-inner.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/border-align-inner.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/indexable-dataset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/indexable-dataset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/indexable-dataset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/indexable-dataset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/indexable-element-options.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/indexable-element-options.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/indexable-element-options.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/indexable-element-options.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/scriptable-dataset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/scriptable-dataset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/scriptable-dataset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/scriptable-dataset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/scriptable-element-options.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/scriptable-element-options.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/scriptable-element-options.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/scriptable-element-options.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/value-dataset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/value-dataset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/value-dataset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/value-dataset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/value-element-options.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/value-element-options.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/value-element-options.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderAlign/value-element-options.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/indexable-dataset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/indexable-dataset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/indexable-dataset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/indexable-dataset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/indexable-element-options.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/indexable-element-options.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/indexable-element-options.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/indexable-element-options.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/scriptable-dataset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/scriptable-dataset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/scriptable-dataset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/scriptable-dataset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/scriptable-element-options.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/scriptable-element-options.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/scriptable-element-options.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/scriptable-element-options.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/value-dataset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/value-dataset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/value-dataset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/value-dataset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/value-element-options.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/value-element-options.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/value-element-options.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderColor/value-element-options.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderDash/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderDash/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderDash/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderDash/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderDash/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderDash/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderDash/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderDash/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/indexable-dataset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/indexable-dataset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/indexable-dataset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/indexable-dataset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/indexable-element-options.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/indexable-element-options.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/indexable-element-options.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/indexable-element-options.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/scriptable-dataset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/scriptable-dataset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/scriptable-dataset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/scriptable-dataset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/scriptable-element-options.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/scriptable-element-options.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/scriptable-element-options.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/scriptable-element-options.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/value-dataset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/value-dataset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/value-dataset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/value-dataset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/value-element-options.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/value-element-options.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/value-element-options.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/borderWidth/value-element-options.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/last-slice-animate.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/last-slice-animate.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/last-slice-animate.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/last-slice-animate.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/parse-object-data.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/parse-object-data.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/parse-object-data.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/parse-object-data.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/centered-180.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/centered-180.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/centered-180.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/centered-180.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/centered-45.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/centered-45.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/centered-45.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/centered-45.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/centered.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/centered.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/centered.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/centered.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/default-180.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/default-180.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/default-180.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/default-180.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/default-45.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/default-45.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/default-45.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/default-45.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/default.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/default.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/default.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/default.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/displayAuto-180.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/displayAuto-180.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/displayAuto-180.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/displayAuto-180.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/displayAuto.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/displayAuto.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/displayAuto.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/displayAuto.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/overlapping.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/overlapping.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/overlapping.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/overlapping.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/bottom-centered-45.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/bottom-centered-45.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/bottom-centered-45.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/bottom-centered-45.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/bottom-centered.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/bottom-centered.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/bottom-centered.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/bottom-centered.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/left-centered-45.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/left-centered-45.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/left-centered-45.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/left-centered-45.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/left-centered.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/left-centered.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/left-centered.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/left-centered.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/right-centered-45.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/right-centered-45.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/right-centered-45.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/right-centered-45.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/right-centered.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/right-centered.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/right-centered.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/right-centered.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/top-centered-45.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/top-centered-45.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/top-centered-45.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/top-centered-45.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/top-centered.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/top-centered.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/top-centered.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/top-centered.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/top-default-45.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/top-default-45.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/top-default-45.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/top-default-45.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/top-default.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/top-default.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/top-default.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/pointLabels/withTitle/top-default.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/polar-area-animation-rotate.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/polar-area-animation-rotate.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/polar-area-animation-rotate.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/polar-area-animation-rotate.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/polar-area-animation-scale.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/polar-area-animation-scale.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/polar-area-animation-scale.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.polarArea/polar-area-animation-scale.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/backgroundColor/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/backgroundColor/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/backgroundColor/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/backgroundColor/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/backgroundColor/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/backgroundColor/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/backgroundColor/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/backgroundColor/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderCapStyle/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderCapStyle/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderCapStyle/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderCapStyle/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderCapStyle/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderCapStyle/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderCapStyle/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderCapStyle/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderColor/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderColor/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderColor/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderColor/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderColor/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderColor/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderColor/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderColor/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderDash/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderDash/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderDash/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderDash/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderDash/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderDash/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderDash/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderDash/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderDashOffset/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderDashOffset/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderDashOffset/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderDashOffset/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderDashOffset/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderDashOffset/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderDashOffset/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderDashOffset/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderJoinStyle/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderJoinStyle/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderJoinStyle/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderJoinStyle/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderJoinStyle/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderJoinStyle/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderJoinStyle/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderJoinStyle/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderWidth/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderWidth/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderWidth/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderWidth/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderWidth/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderWidth/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderWidth/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderWidth/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderWidth/zero.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderWidth/zero.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderWidth/zero.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/borderWidth/zero.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/fill/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/fill/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/fill/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/fill/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/fill/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/fill/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/fill/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/fill/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/point-style.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/point-style.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/point-style.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/point-style.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBackgroundColor/indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBackgroundColor/indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBackgroundColor/indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBackgroundColor/indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBackgroundColor/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBackgroundColor/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBackgroundColor/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBackgroundColor/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBackgroundColor/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBackgroundColor/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBackgroundColor/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBackgroundColor/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderColor/indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderColor/indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderColor/indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderColor/indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderColor/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderColor/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderColor/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderColor/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderColor/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderColor/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderColor/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderColor/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderWidth/indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderWidth/indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderWidth/indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderWidth/indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderWidth/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderWidth/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderWidth/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderWidth/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderWidth/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderWidth/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderWidth/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointBorderWidth/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointStyle/indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointStyle/indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointStyle/indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointStyle/indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointStyle/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointStyle/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointStyle/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointStyle/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointStyle/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointStyle/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointStyle/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/pointStyle/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/radius/indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/radius/indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/radius/indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/radius/indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/radius/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/radius/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/radius/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/radius/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/radius/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/radius/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/radius/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/radius/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/rotation/indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/rotation/indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/rotation/indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/rotation/indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/rotation/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/rotation/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/rotation/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/rotation/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/rotation/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/rotation/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/rotation/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/rotation/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/showLine/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/showLine/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/showLine/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/showLine/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/135.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/135.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/135.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/135.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/180.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/180.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/180.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/180.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/225.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/225.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/225.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/225.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/270.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/270.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/270.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/270.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/315.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/315.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/315.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/315.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/45.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/45.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/45.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/45.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/90.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/90.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/90.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/90.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/default.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/default.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/default.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.radar/startAngle/default.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.scatter/showLine/changed.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.scatter/showLine/changed.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.scatter/showLine/changed.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.scatter/showLine/changed.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.scatter/showLine/true.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.scatter/showLine/true.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.scatter/showLine/true.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.scatter/showLine/true.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.scatter/showLine/undefined.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.scatter/showLine/undefined.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.scatter/showLine/undefined.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/controller.scatter/showLine/undefined.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.datasetController/stacked-initial-render.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.datasetController/stacked-initial-render.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.datasetController/stacked-initial-render.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.datasetController/stacked-initial-render.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.interaction/drawActiveElementsOnTop-false.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.interaction/drawActiveElementsOnTop-false.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.interaction/drawActiveElementsOnTop-false.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.interaction/drawActiveElementsOnTop-false.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.interaction/nearest-partial-bar.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.interaction/nearest-partial-bar.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.interaction/nearest-partial-bar.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.interaction/nearest-partial-bar.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.interaction/nearest-point-behind-scale.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.interaction/nearest-point-behind-scale.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.interaction/nearest-point-behind-scale.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.interaction/nearest-point-behind-scale.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/hidden-vertical-boxes.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/hidden-vertical-boxes.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/hidden-vertical-boxes.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/hidden-vertical-boxes.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/long-labels.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/long-labels.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/long-labels.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/long-labels.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/no-boxes-all-padding.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/no-boxes-all-padding.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/no-boxes-all-padding.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/no-boxes-all-padding.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/refit-vertical-boxes.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/refit-vertical-boxes.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/refit-vertical-boxes.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/refit-vertical-boxes.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes-max-index-without-clip.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes-max-index-without-clip.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes-max-index-without-clip.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes-max-index-without-clip.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes-max-index.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes-max-index.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes-max-index.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes-max-index.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes-max-without-clip.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes-max-without-clip.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes-max-without-clip.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes-max-without-clip.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes-max.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes-max.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes-max.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes-max.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes-with-weight.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes-with-weight.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes-with-weight.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes-with-weight.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.layouts/stacked-boxes.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/autoSkip/fit-after.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/autoSkip/fit-after.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/autoSkip/fit-after.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/autoSkip/fit-after.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/autoSkip/no-offset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/autoSkip/no-offset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/autoSkip/no-offset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/autoSkip/no-offset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/autoSkip/offset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/autoSkip/offset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/autoSkip/offset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/autoSkip/offset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/backgroundColor.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/backgroundColor.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/backgroundColor.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/backgroundColor.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/border-behind-elements.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/border-behind-elements.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/border-behind-elements.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/border-behind-elements.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/cartesian-axis-border-settings.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/cartesian-axis-border-settings.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/cartesian-axis-border-settings.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/cartesian-axis-border-settings.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-bottom-center.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-bottom-center.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-bottom-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-bottom-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-bottom-far.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-bottom-far.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-bottom-far.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-bottom-far.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-bottom-near.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-bottom-near.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-bottom-near.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-bottom-near.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-left-center.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-left-center.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-left-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-left-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-left-far-clipped.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-left-far-clipped.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-left-far-clipped.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-left-far-clipped.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-left-far.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-left-far.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-left-far.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-left-far.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-left-near.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-left-near.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-left-near.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-left-near.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-right-center.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-right-center.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-right-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-right-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-right-far-clipped.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-right-far-clipped.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-right-far-clipped.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-right-far-clipped.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-right-far.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-right-far.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-right-far.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-right-far.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-right-near.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-right-near.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-right-near.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-right-near.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-top-center.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-top-center.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-top-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-top-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-top-far.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-top-far.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-top-far.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-top-far.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-top-near.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-top-near.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-top-near.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/cross-align-top-near.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-left-center.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-left-center.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-left-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-left-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-left-far.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-left-far.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-left-far.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-left-far.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-left-near.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-left-near.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-left-near.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-left-near.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-right-center.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-right-center.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-right-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-right-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-right-far.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-right-far.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-right-far.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-right-far.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-right-near.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-right-near.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-right-near.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/crossAlignment/mirror-cross-align-right-near.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/grid/border-over-grid.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/grid/border-over-grid.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/grid/border-over-grid.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/grid/border-over-grid.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/grid/colors.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/grid/colors.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/grid/colors.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/grid/colors.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/grid/scriptable-borderDash.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/grid/scriptable-borderDash.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/grid/scriptable-borderDash.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/grid/scriptable-borderDash.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-center.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-center.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-end.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-end.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-end.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-end.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-inner-onlyX.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-inner-onlyX.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-inner-onlyX.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-inner-onlyX.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-inner-reverse.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-inner-reverse.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-inner-reverse.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-inner-reverse.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-inner-rotate.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-inner-rotate.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-inner-rotate.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-inner-rotate.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-inner.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-inner.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-inner.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-inner.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-start.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-start.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-start.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-align-start.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-offset-vertical-axes.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-offset-vertical-axes.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-offset-vertical-axes.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/label-offset-vertical-axes.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/tick-backdrop-alignment-inner.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/tick-backdrop-alignment-inner.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/tick-backdrop-alignment-inner.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/tick-backdrop-alignment-inner.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/tick-backdrop-rotation.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/tick-backdrop-rotation.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/tick-backdrop-rotation.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/tick-backdrop-rotation.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/tick-backdrop.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/tick-backdrop.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/tick-backdrop.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/tick-backdrop.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/tick-drawing.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/tick-drawing.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/tick-drawing.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/tick-drawing.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/tick-override-styles.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/tick-override-styles.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/tick-override-styles.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/tick-override-styles.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/ticks-mirror-x.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/ticks-mirror-x.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/ticks-mirror-x.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/ticks-mirror-x.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/ticks-mirror.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/ticks-mirror.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/ticks-mirror.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/ticks-mirror.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/ticks/rotated-long.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/ticks/rotated-long.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/ticks/rotated-long.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/ticks/rotated-long.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/ticks/rotated-multi-line.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/ticks/rotated-multi-line.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/ticks/rotated-multi-line.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/ticks/rotated-multi-line.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/ticks/skip-by-callback.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/ticks/skip-by-callback.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/ticks/skip-by-callback.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/ticks/skip-by-callback.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/align-end.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/align-end.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/align-end.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/align-end.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/align-start.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/align-start.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/align-start.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/align-start.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/default.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/default.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/default.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/default.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/horizontal-center.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/horizontal-center.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/horizontal-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/horizontal-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/horizontal-value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/horizontal-value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/horizontal-value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/horizontal-value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/multi-line/align-end.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/multi-line/align-end.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/multi-line/align-end.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/multi-line/align-end.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/multi-line/align-start.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/multi-line/align-start.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/multi-line/align-start.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/multi-line/align-start.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/multi-line/default.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/multi-line/default.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/multi-line/default.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/multi-line/default.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/vertical-center.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/vertical-center.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/vertical-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/vertical-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/vertical-value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/vertical-value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/vertical-value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/title/vertical-value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/x-axis-position-center.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/x-axis-position-center.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/x-axis-position-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/x-axis-position-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/x-axis-position-dynamic-margin.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/x-axis-position-dynamic-margin.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/x-axis-position-dynamic-margin.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/x-axis-position-dynamic-margin.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/x-axis-position-dynamic.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/x-axis-position-dynamic.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/x-axis-position-dynamic.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/x-axis-position-dynamic.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/y-axis-position-center.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/y-axis-position-center.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/y-axis-position-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/y-axis-position-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/y-axis-position-dynamic.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/y-axis-position-dynamic.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/y-axis-position-dynamic.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/core.scale/y-axis-position-dynamic.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/cubicInterpolationMode/monotone-horizontal.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/cubicInterpolationMode/monotone-horizontal.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/cubicInterpolationMode/monotone-horizontal.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/cubicInterpolationMode/monotone-horizontal.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/cubicInterpolationMode/monotone-vertical.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/cubicInterpolationMode/monotone-vertical.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/cubicInterpolationMode/monotone-vertical.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/cubicInterpolationMode/monotone-vertical.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/default.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/default.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/default.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/default.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/all.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/all.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/all.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/all.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/first-span.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/first-span.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/first-span.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/first-span.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/first.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/first.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/first.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/first.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/last-span.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/last-span.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/last-span.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/last-span.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/last.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/last.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/last.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/last.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/middle-span.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/middle-span.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/middle-span.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/middle-span.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/middle.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/middle.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/middle.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/skip/middle.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/stepped/after.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/stepped/after.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/stepped/after.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/stepped/after.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/stepped/before.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/stepped/before.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/stepped/before.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/stepped/before.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/stepped/default.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/stepped/default.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/stepped/default.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/stepped/default.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/stepped/middle.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/stepped/middle.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/stepped/middle.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/stepped/middle.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/tension/default.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/tension/default.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/tension/default.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/tension/default.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/tension/one.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/tension/one.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/tension/one.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/tension/one.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/tension/zero.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/tension/zero.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/tension/zero.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.line/tension/zero.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-circle.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-circle.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-circle.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-circle.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-cross-rot.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-cross-rot.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-cross-rot.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-cross-rot.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-cross.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-cross.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-cross.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-cross.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-dash.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-dash.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-dash.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-dash.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-image.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-image.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-image.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-image.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-line.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-line.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-line.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-line.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-rect-rot.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-rect-rot.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-rect-rot.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-rect-rot.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-rect-rounded.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-rect-rounded.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-rect-rounded.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-rect-rounded.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-rect.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-rect.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-rect.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-rect.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-star.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-star.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-star.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-star.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-triangle.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-triangle.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-triangle.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/point-style-triangle.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/rotation.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/rotation.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/rotation.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/element.point/rotation.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/mixed/bar+line-stacked.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/mixed/bar+line-stacked.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/mixed/bar+line-stacked.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/mixed/bar+line-stacked.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/mixed/bar+line.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/mixed/bar+line.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/mixed/bar+line.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/mixed/bar+line.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/bar.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/bar.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/bar.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/bar.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/bubble.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/bubble.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/bubble.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/bubble.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/chart-options-colors.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/chart-options-colors.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/chart-options-colors.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/chart-options-colors.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/doughnut.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/doughnut.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/doughnut.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/doughnut.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/dynamic-datasets-default.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/dynamic-datasets-default.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/dynamic-datasets-default.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/dynamic-datasets-default.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/dynamic-datasets-force-override.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/dynamic-datasets-force-override.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/dynamic-datasets-force-override.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/dynamic-datasets-force-override.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/line.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/line.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/line.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/line.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/mixed.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/mixed.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/mixed.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/mixed.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/pie.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/pie.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/pie.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/pie.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/polarArea.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/polarArea.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/polarArea.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/polarArea.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/radar.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/radar.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/radar.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/radar.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/scatter.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/scatter.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/scatter.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.colors/scatter.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/above-below-vertical-linechart.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/above-below-vertical-linechart.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/above-below-vertical-linechart.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/above-below-vertical-linechart.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/before-dataset-draw.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/before-dataset-draw.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/before-dataset-draw.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/before-dataset-draw.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/before-datasets-draw.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/before-datasets-draw.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/before-datasets-draw.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/before-datasets-draw.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/above-below-line-null-start.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/above-below-line-null-start.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/above-below-line-null-start.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/above-below-line-null-start.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/above-below-line-null.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/above-below-line-null.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/above-below-line-null.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/above-below-line-null.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/end-span.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/end-span.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/end-span.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/end-span.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/end.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/end.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/end.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/end.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-span-dual.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-span-dual.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-span-dual.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-span-dual.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-span.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-span.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-span.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-span.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-spline-above.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-spline-above.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-spline-above.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-spline-above.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-spline-span.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-spline-span.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-spline-span.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-spline-span.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-spline.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-spline.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-spline.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-spline.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-stepped-span.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-stepped-span.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-stepped-span.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-stepped-span.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-stepped.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-stepped.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-stepped.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin-stepped.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/origin.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/start-span.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/start-span.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/start-span.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/start-span.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/start.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/start.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/start.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/boundary/start.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/border.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/border.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/border.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/border.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/clip-bounds-x-off.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/clip-bounds-x-off.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/clip-bounds-x-off.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/clip-bounds-x-off.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/clip-bounds-x.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/clip-bounds-x.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/clip-bounds-x.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/clip-bounds-x.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/clip-bounds-y-off.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/clip-bounds-y-off.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/clip-bounds-y-off.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/clip-bounds-y-off.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/clip-bounds-y.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/clip-bounds-y.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/clip-bounds-y.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/clip-bounds-y.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/dual.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/dual.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/dual.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/dual.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/interpolated.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/interpolated.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/interpolated.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/interpolated.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/no-border.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/no-border.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/no-border.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/no-border.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/span-dual.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/span-dual.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/span-dual.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/span-dual.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/span.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/span.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/span.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/span.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/spline-span-above.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/spline-span-above.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/spline-span-above.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/spline-span-above.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/spline-span-below.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/spline-span-below.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/spline-span-below.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/spline-span-below.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/spline-span.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/spline-span.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/spline-span.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/spline-span.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/spline.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/spline.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/spline.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/spline.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/stepped.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/stepped.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/stepped.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/dataset/stepped.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/drawTimeFillFalse/beforeDatasetDraw.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/drawTimeFillFalse/beforeDatasetDraw.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/drawTimeFillFalse/beforeDatasetDraw.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/drawTimeFillFalse/beforeDatasetDraw.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/drawTimeFillFalse/beforeDatasetsDraw.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/drawTimeFillFalse/beforeDatasetsDraw.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/drawTimeFillFalse/beforeDatasetsDraw.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/drawTimeFillFalse/beforeDatasetsDraw.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/drawTimeFillFalse/beforeDraw.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/drawTimeFillFalse/beforeDraw.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/drawTimeFillFalse/beforeDraw.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/drawTimeFillFalse/beforeDraw.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/points-outside-canvas-initial.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/points-outside-canvas-initial.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/points-outside-canvas-initial.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/points-outside-canvas-initial.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/points-outside-canvas-update.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/points-outside-canvas-update.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/points-outside-canvas-update.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/points-outside-canvas-update.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/segments/alignToPixels.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/segments/alignToPixels.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/segments/alignToPixels.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/segments/alignToPixels.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/segments/gap.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/segments/gap.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/segments/gap.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/segments/gap.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/segments/slope.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/segments/slope.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/segments/slope.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/segments/slope.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/shape.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/shape.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/shape.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/shape.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/stack-multiple-scales.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/stack-multiple-scales.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/stack-multiple-scales.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/stack-multiple-scales.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/stack.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/stack.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/stack.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/stack.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/value.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/value.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/vertical.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/vertical.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/vertical.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/line/vertical.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/beforeDraw.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/beforeDraw.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/beforeDraw.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/beforeDraw.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/end-circular.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/end-circular.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/end-circular.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/end-circular.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/end-span.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/end-span.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/end-span.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/end-span.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/end.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/end.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/end.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/end.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/origin-circular.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/origin-circular.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/origin-circular.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/origin-circular.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/origin-span.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/origin-span.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/origin-span.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/origin-span.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/origin-spline-span.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/origin-spline-span.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/origin-spline-span.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/origin-spline-span.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/origin-spline.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/origin-spline.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/origin-spline.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/origin-spline.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/origin.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/origin.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/origin.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/origin.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/start-circular.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/start-circular.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/start-circular.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/start-circular.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/start-span.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/start-span.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/start-span.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/start-span.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/start.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/start.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/start.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/boundary/start.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/dataset/border.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/dataset/border.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/dataset/border.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/dataset/border.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/dataset/default.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/dataset/default.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/dataset/default.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/dataset/default.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/dataset/order.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/dataset/order.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/dataset/order.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/dataset/order.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/dataset/span.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/dataset/span.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/dataset/span.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/dataset/span.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/dataset/spline.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/dataset/spline.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/dataset/spline.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/dataset/spline.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/value.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/value.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.filler/radar/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/borderRadius/legend-border-radius.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/borderRadius/legend-border-radius.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/borderRadius/legend-border-radius.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/borderRadius/legend-border-radius.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/horizontal-rtl-hitbox.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/horizontal-rtl-hitbox.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/horizontal-rtl-hitbox.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/horizontal-rtl-hitbox.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/center.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/center.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/horizontal-left.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/horizontal-left.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/horizontal-left.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/horizontal-left.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/horizontal-right.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/horizontal-right.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/horizontal-right.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/horizontal-right.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/horizontal-rtl-left.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/horizontal-rtl-left.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/horizontal-rtl-left.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/horizontal-rtl-left.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/horizontal-rtl-right.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/horizontal-rtl-right.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/horizontal-rtl-right.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/horizontal-rtl-right.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/left.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/left.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/left.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/left.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/right.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/right.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/right.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/right.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/rtl-center.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/rtl-center.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/rtl-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/rtl-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/rtl-left.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/rtl-left.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/rtl-left.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/rtl-left.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/rtl-right.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/rtl-right.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/rtl-right.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/label-textAlign/rtl-right.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-bottom-center-mulitiline.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-bottom-center-mulitiline.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-bottom-center-mulitiline.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-bottom-center-mulitiline.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-bottom-center-single.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-bottom-center-single.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-bottom-center-single.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-bottom-center-single.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-bottom-end-mulitiline.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-bottom-end-mulitiline.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-bottom-end-mulitiline.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-bottom-end-mulitiline.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-bottom-start-mulitiline.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-bottom-start-mulitiline.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-bottom-start-mulitiline.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-bottom-start-mulitiline.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-left-center-mulitiline.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-left-center-mulitiline.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-left-center-mulitiline.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-left-center-mulitiline.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-left-center-single.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-left-center-single.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-left-center-single.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-left-center-single.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-left-default-center.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-left-default-center.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-left-default-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-left-default-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-left-end-mulitiline.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-left-end-mulitiline.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-left-end-mulitiline.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-left-end-mulitiline.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-left-start-mulitiline.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-left-start-mulitiline.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-left-start-mulitiline.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-left-start-mulitiline.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-point-style.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-point-style.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-point-style.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-point-style.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-center-mulitiline-labels.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-center-mulitiline-labels.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-center-mulitiline-labels.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-center-mulitiline-labels.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-center-mulitiline.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-center-mulitiline.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-center-mulitiline.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-center-mulitiline.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-center-single.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-center-single.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-center-single.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-center-single.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-default-center.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-default-center.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-default-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-default-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-end-mulitiline.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-end-mulitiline.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-end-mulitiline.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-end-mulitiline.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-start-mulitiline.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-start-mulitiline.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-start-mulitiline.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-right-start-mulitiline.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-top-center-mulitiline.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-top-center-mulitiline.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-top-center-mulitiline.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-top-center-mulitiline.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-top-center-single.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-top-center-single.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-top-center-single.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-top-center-single.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-top-end-mulitiline.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-top-end-mulitiline.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-top-end-mulitiline.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-top-end-mulitiline.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-top-start-mulitiline.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-top-start-mulitiline.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-top-start-mulitiline.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-doughnut-top-start-mulitiline.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-line-chart-area.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-line-chart-area.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-line-chart-area.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/legend-line-chart-area.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/maxWidth/infinity.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/maxWidth/infinity.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/maxWidth/infinity.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/maxWidth/infinity.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/maxWidth/undefined.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/maxWidth/undefined.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/maxWidth/undefined.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/maxWidth/undefined.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/maxWidth/value.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/maxWidth/value.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/maxWidth/value.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/maxWidth/value.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/padding/2cols-with-padding.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/padding/2cols-with-padding.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/padding/2cols-with-padding.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/padding/2cols-with-padding.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/padding/add-column.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/padding/add-column.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/padding/add-column.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/padding/add-column.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/pointStyle-width/legend-pointStyle-width-default.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/pointStyle-width/legend-pointStyle-width-default.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/pointStyle-width/legend-pointStyle-width-default.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/pointStyle-width/legend-pointStyle-width-default.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/pointStyle-width/legend-pointStyle-width.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/pointStyle-width/legend-pointStyle-width.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/pointStyle-width/legend-pointStyle-width.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/pointStyle-width/legend-pointStyle-width.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/bottom-center-center.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/bottom-center-center.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/bottom-center-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/bottom-center-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/bottom-end-end.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/bottom-end-end.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/bottom-end-end.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/bottom-end-end.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/bottom-start-start.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/bottom-start-start.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/bottom-start-start.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/bottom-start-start.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/left-center-center.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/left-center-center.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/left-center-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/left-center-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/left-end-end.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/left-end-end.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/left-end-end.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/left-end-end.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/left-start-start.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/left-start-start.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/left-start-start.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/left-start-start.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/right-center-center.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/right-center-center.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/right-center-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/right-center-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/right-end-end.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/right-end-end.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/right-end-end.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/right-end-end.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/right-start-start.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/right-start-start.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/right-start-start.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/right-start-start.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/top-center-center.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/top-center-center.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/top-center-center.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/top-center-center.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/top-end-end.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/top-end-end.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/top-end-end.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/top-end-end.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/top-start-start.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/top-start-start.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/top-start-start.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.legend/title/top-start-start.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.subtitle/basic.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.subtitle/basic.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.subtitle/basic.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.subtitle/basic.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.title/scriptable-options.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.title/scriptable-options.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.title/scriptable-options.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.title/scriptable-options.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/box-padding.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/box-padding.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/box-padding.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/box-padding.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/caret-position.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/caret-position.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/caret-position.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/caret-position.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/color-box-border-dash.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/color-box-border-dash.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/color-box-border-dash.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/color-box-border-dash.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/color-box-border-radius.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/color-box-border-radius.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/color-box-border-radius.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/color-box-border-radius.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/corner-radius.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/corner-radius.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/corner-radius.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/corner-radius.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/opacity.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/opacity.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/opacity.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/opacity.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/point-style.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/point-style.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/point-style.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/point-style.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/positioning.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/positioning.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/positioning.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/plugin.tooltip/positioning.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.category/invalid-data.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.category/invalid-data.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.category/invalid-data.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.category/invalid-data.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.category/max-ticks-limit-a.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.category/max-ticks-limit-a.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.category/max-ticks-limit-a.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.category/max-ticks-limit-a.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.category/max-ticks-limit-b.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.category/max-ticks-limit-b.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.category/max-ticks-limit-b.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.category/max-ticks-limit-b.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.category/max-ticks-limit-norotation.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.category/max-ticks-limit-norotation.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.category/max-ticks-limit-norotation.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.category/max-ticks-limit-norotation.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.category/ticks-from-data.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.category/ticks-from-data.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.category/ticks-from-data.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.category/ticks-from-data.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/grace-10%.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/grace-10%.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/grace-10%.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/grace-10%.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/grace-beginAtZero.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/grace-beginAtZero.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/grace-beginAtZero.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/grace-beginAtZero.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/grace-neg.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/grace-neg.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/grace-neg.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/grace-neg.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/grace-pos.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/grace-pos.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/grace-pos.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/grace-pos.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/grace.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/grace.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/grace.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/grace.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/issue-8912.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/issue-8912.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/issue-8912.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/grace/issue-8912.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/issue-8806.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/issue-8806.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/issue-8806.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/issue-8806.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/edge-case-1.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/edge-case-1.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/edge-case-1.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/edge-case-1.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/edge-case-2.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/edge-case-2.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/edge-case-2.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/edge-case-2.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/edge-case-3.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/edge-case-3.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/edge-case-3.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/edge-case-3.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/edge-case-4.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/edge-case-4.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/edge-case-4.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/edge-case-4.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/includeBounds.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/includeBounds.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/includeBounds.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/includeBounds.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/min-max-skip.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/min-max-skip.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/min-max-skip.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/min-max-skip.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/no-collision.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/no-collision.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/no-collision.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/no-collision.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/rotated-case-1.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/rotated-case-1.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/rotated-case-1.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/rotated-case-1.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/rotated-case-2.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/rotated-case-2.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/rotated-case-2.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/rotated-case-2.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/rotated-case-3.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/rotated-case-3.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/rotated-case-3.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/rotated-case-3.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/rotated-case-4.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/rotated-case-4.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/rotated-case-4.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/min-max-skip/rotated-case-4.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/rotated-45.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/rotated-45.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/rotated-45.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/rotated-45.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/rotated-5.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/rotated-5.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/rotated-5.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/rotated-5.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/rotated-85.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/rotated-85.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/rotated-85.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/rotated-85.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-count-data-limits.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-count-data-limits.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-count-data-limits.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-count-data-limits.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-count-min-max-not-aligned.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-count-min-max-not-aligned.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-count-min-max-not-aligned.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-count-min-max-not-aligned.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-count-min-max-not-int.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-count-min-max-not-int.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-count-min-max-not-int.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-count-min-max-not-int.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-count-min-max.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-count-min-max.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-count-min-max.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-count-min-max.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-step-min-max-step-fp.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-step-min-max-step-fp.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-step-min-max-step-fp.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-step-min-max-step-fp.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-step-min-max.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-step-min-max.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-step-min-max.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tick-step-min-max.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tiny-numbers.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tiny-numbers.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tiny-numbers.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.linear/tiny-numbers.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/large-range.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/large-range.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/large-range.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/large-range.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/large-values-small-range.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/large-values-small-range.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/large-values-small-range.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/large-values-small-range.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/med-range.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/med-range.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/med-range.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/med-range.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/min-max.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/min-max.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/min-max.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/min-max.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/null-values.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/null-values.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/null-values.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/null-values.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/small-range.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/small-range.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/small-range.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.logarithmic/small-range.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/anglelines-disable.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/anglelines-disable.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/anglelines-disable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/anglelines-disable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/anglelines-indexable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/anglelines-indexable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/anglelines-indexable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/anglelines-indexable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/anglelines-reverse-scale.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/anglelines-reverse-scale.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/anglelines-reverse-scale.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/anglelines-reverse-scale.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/anglelines-scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/anglelines-scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/anglelines-scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/anglelines-scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/backgroundColor.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/backgroundColor.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/backgroundColor.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/backgroundColor.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/border-dash.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/border-dash.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/border-dash.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/border-dash.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/circular-backgroundColor.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/circular-backgroundColor.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/circular-backgroundColor.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/circular-backgroundColor.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/circular-border-dash.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/circular-border-dash.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/circular-border-dash.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/circular-border-dash.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/gridlines-disable.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/gridlines-disable.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/gridlines-disable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/gridlines-disable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/gridlines-no-z.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/gridlines-no-z.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/gridlines-no-z.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/gridlines-no-z.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/gridlines-scriptable.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/gridlines-scriptable.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/gridlines-scriptable.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/gridlines-scriptable.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/gridlines-z.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/gridlines-z.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/gridlines-z.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/gridlines-z.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/indexable-gridlines.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/indexable-gridlines.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/indexable-gridlines.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/indexable-gridlines.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/pointLabels/background.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/pointLabels/background.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/pointLabels/background.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/pointLabels/background.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/pointLabels/border-radius.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/pointLabels/border-radius.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/pointLabels/border-radius.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/pointLabels/border-radius.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/pointLabels/no-more-than-half-radius.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/pointLabels/no-more-than-half-radius.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/pointLabels/no-more-than-half-radius.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/pointLabels/no-more-than-half-radius.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/pointLabels/padding.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/pointLabels/padding.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/pointLabels/padding.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/pointLabels/padding.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/pointLabels/scriptable-color-small.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/pointLabels/scriptable-color-small.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/pointLabels/scriptable-color-small.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/pointLabels/scriptable-color-small.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/ticks-below-zero.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/ticks-below-zero.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/ticks-below-zero.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.radialLinear/ticks-below-zero.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/autoskip-major.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/autoskip-major.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/autoskip-major.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/autoskip-major.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/bar-large-gap-between-data.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/bar-large-gap-between-data.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/bar-large-gap-between-data.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/bar-large-gap-between-data.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/custom-parser.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/custom-parser.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/custom-parser.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/custom-parser.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/data-ty.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/data-ty.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/data-ty.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/data-ty.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/data-xy.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/data-xy.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/data-xy.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/data-xy.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/invalid-data.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/invalid-data.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/invalid-data.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/invalid-data.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/labels-date.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/labels-date.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/labels-date.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/labels-date.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/labels-strings.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/labels-strings.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/labels-strings.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/labels-strings.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/labels.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/labels.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/labels.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/labels.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/negative-times.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/negative-times.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/negative-times.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/negative-times.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/offset-auto-skip-ticks.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/offset-auto-skip-ticks.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/offset-auto-skip-ticks.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/offset-auto-skip-ticks.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/offset-with-1-tick.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/offset-with-1-tick.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/offset-with-1-tick.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/offset-with-1-tick.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/offset-with-2-ticks.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/offset-with-2-ticks.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/offset-with-2-ticks.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/offset-with-2-ticks.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/offset-with-no-ticks.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/offset-with-no-ticks.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/offset-with-no-ticks.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/offset-with-no-ticks.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/skip-null-gridlines.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/skip-null-gridlines.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/skip-null-gridlines.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/skip-null-gridlines.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/skip-undefined-gridlines.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/skip-undefined-gridlines.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/skip-undefined-gridlines.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/skip-undefined-gridlines.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/source-auto-linear.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/source-auto-linear.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/source-auto-linear.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/source-auto-linear.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/source-data-linear.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/source-data-linear.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/source-data-linear.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/source-data-linear.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/source-labels-linear-offset-min-max.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/source-labels-linear-offset-min-max.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/source-labels-linear-offset-min-max.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/source-labels-linear-offset-min-max.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/source-labels-linear.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/source-labels-linear.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/source-labels-linear.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/source-labels-linear.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-capacity.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-capacity.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-capacity.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-capacity.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-minunit.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-minunit.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-minunit.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-minunit.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-reverse-linear-min-max.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-reverse-linear-min-max.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-reverse-linear-min-max.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-reverse-linear-min-max.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-reverse-linear.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-reverse-linear.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-reverse-linear.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-reverse-linear.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-reverse-offset.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-reverse-offset.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-reverse-offset.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-reverse-offset.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-reverse.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-reverse.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-reverse.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-reverse.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-round.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-round.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-round.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-round.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-stepsize.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-stepsize.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-stepsize.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-stepsize.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-unit.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-unit.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-unit.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.time/ticks-unit.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/data-timestamps.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/data-timestamps.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/data-timestamps.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/data-timestamps.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/financial-daily.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/financial-daily.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/financial-daily.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/financial-daily.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/normalize.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/normalize.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/normalize.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/normalize.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/source-auto.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/source-auto.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/source-auto.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/source-auto.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/source-data-offset-min-max.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/source-data-offset-min-max.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/source-data-offset-min-max.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/source-data-offset-min-max.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/source-data.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/source-data.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/source-data.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/source-data.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/source-labels-offset-min-max.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/source-labels-offset-min-max.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/source-labels-offset-min-max.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/source-labels-offset-min-max.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/source-labels.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/source-labels.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/source-labels.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/source-labels.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/ticks-reverse-max.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/ticks-reverse-max.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/ticks-reverse-max.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/ticks-reverse-max.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/ticks-reverse-min-max.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/ticks-reverse-min-max.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/ticks-reverse-min-max.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/ticks-reverse-min-max.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/ticks-reverse-min.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/ticks-reverse-min.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/ticks-reverse-min.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/ticks-reverse-min.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/ticks-reverse.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/ticks-reverse.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/ticks-reverse.png (Binary) (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/fixtures/scale.timeseries/ticks-reverse.png
Binary file is not shown
 
src/main/webapp/publish/adm/script/Chart.js-master/test/index.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/index.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/integration/node-commonjs/package.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/integration/node-commonjs/package.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/integration/node-commonjs/test-auto.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/integration/node-commonjs/test-auto.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/integration/node-commonjs/test.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/integration/node-commonjs/test.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/integration/node/package.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/integration/node/package.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/integration/node/test.cjs (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/integration/node/test.cjs
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/integration/node/test.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/integration/node/test.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/integration/react-browser/package.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/integration/react-browser/package.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/integration/react-browser/public/index.html (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/integration/react-browser/public/index.html
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/integration/react-browser/src/App.tsx (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/integration/react-browser/src/App.tsx
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/integration/react-browser/src/AppAuto.tsx (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/integration/react-browser/src/AppAuto.tsx
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/integration/react-browser/src/index.tsx (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/integration/react-browser/src/index.tsx
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/integration/react-browser/tsconfig.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/integration/react-browser/tsconfig.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/integration/typescript-node-next/package.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/integration/typescript-node-next/package.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/integration/typescript-node-next/src/index.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/integration/typescript-node-next/src/index.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/integration/typescript-node-next/tsconfig.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/integration/typescript-node-next/tsconfig.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/integration/typescript-node/package.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/integration/typescript-node/package.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/integration/typescript-node/src/index.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/integration/typescript-node/src/index.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/integration/typescript-node/tsconfig.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/integration/typescript-node/tsconfig.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/seed-reporter.cjs (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/seed-reporter.cjs
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/controller.bar.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/controller.bar.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/controller.bubble.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/controller.bubble.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/controller.doughnut.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/controller.doughnut.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/controller.line.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/controller.line.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/controller.polarArea.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/controller.polarArea.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/controller.radar.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/controller.radar.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/controller.scatter.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/controller.scatter.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.animation.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.animation.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.animations.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.animations.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.animator.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.animator.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.controller.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.controller.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.datasetController.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.datasetController.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.defaults.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.defaults.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.element.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.element.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.helpers.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.helpers.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.interaction.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.interaction.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.layouts.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.layouts.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.plugin.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.plugin.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.registry.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.registry.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.scale.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.scale.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.ticks.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/core.ticks.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/element.arc.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/element.arc.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/element.bar.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/element.bar.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/element.line.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/element.line.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/element.point.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/element.point.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/global.defaults.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/global.defaults.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/global.namespace.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/global.namespace.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.canvas.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.canvas.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.collection.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.collection.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.color.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.color.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.config.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.config.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.core.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.core.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.curve.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.curve.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.dom.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.dom.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.easing.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.easing.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.interpolation.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.interpolation.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.math.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.math.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.options.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.options.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.segment.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/helpers.segment.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/mixed.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/mixed.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/platform.basic.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/platform.basic.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/platform.dom.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/platform.dom.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/plugin.colors.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/plugin.colors.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/plugin.decimation.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/plugin.decimation.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/plugin.filler.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/plugin.filler.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/plugin.legend.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/plugin.legend.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/plugin.subtitle.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/plugin.subtitle.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/plugin.title.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/plugin.title.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/plugin.tooltip.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/plugin.tooltip.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/scale.category.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/scale.category.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/scale.linear.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/scale.linear.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/scale.logarithmic.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/scale.logarithmic.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/scale.radialLinear.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/scale.radialLinear.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/specs/scale.time.tests.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/specs/scale.time.tests.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/.eslintrc.yml (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/.eslintrc.yml
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/animation.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/animation.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/autogen.js (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/autogen.js
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/chart_types.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/chart_types.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/bar_floating_data.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/bar_floating_data.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/bubble_chart_options.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/bubble_chart_options.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/doughnut_meta_total.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/doughnut_meta_total.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/doughnut_offset.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/doughnut_offset.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/doughnut_outer_radius.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/doughnut_outer_radius.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/doughnut_spacing_offset.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/doughnut_spacing_offset.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/line_scriptable_parsed_data.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/line_scriptable_parsed_data.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/line_segments.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/line_segments.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/line_span_gaps.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/line_span_gaps.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/line_styling_array.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/line_styling_array.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/radar_dataset_indexable_options.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/controllers/radar_dataset_indexable_options.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/data_types.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/data_types.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/dataset_null_data.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/dataset_null_data.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/date_adapter.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/date_adapter.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/defaults.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/defaults.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/elements/scriptable_element_options.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/elements/scriptable_element_options.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/extensions/plugin.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/extensions/plugin.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/extensions/scale.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/extensions/scale.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/helpers/dom.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/helpers/dom.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/helpers/options.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/helpers/options.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/interaction.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/interaction.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/layout/position.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/layout/position.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/options.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/options.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/overrides.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/overrides.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/parsed.data.type.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/parsed.data.type.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/plugins/defaults.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/plugins/defaults.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/plugins/plugin.colors/colors.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/plugins/plugin.colors/colors.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/plugins/plugin.decimation/decimation_algorithm.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/plugins/plugin.decimation/decimation_algorithm.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/plugins/plugin.filler/fill_target_true.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/plugins/plugin.filler/fill_target_true.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/plugins/plugin.tooltip/chart.tooltip.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/plugins/plugin.tooltip/chart.tooltip.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/plugins/plugin.tooltip/tooltip_dataset_type.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/plugins/plugin.tooltip/tooltip_dataset_type.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/plugins/plugin.tooltip/tooltip_parsed_data.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/plugins/plugin.tooltip/tooltip_parsed_data.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/plugins/plugin.tooltip/tooltip_parsed_data_chart_defaults.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/plugins/plugin.tooltip/tooltip_parsed_data_chart_defaults.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/plugins/plugin.tooltip/tooltip_scriptable_background_color.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/plugins/plugin.tooltip/tooltip_scriptable_background_color.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/register.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/register.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/scales/chart_options.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/scales/chart_options.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/scales/options.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/scales/options.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/scales/time_string_max.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/scales/time_string_max.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/scriptable.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/scriptable.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/scriptable_core_chart_options.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/scriptable_core_chart_options.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/test_instance_assignment.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/test_instance_assignment.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/ticks/ticks.ts (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/ticks/ticks.ts
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/test/types/tsconfig.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/test/types/tsconfig.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/Chart.js-master/tsconfig.json (added)
+++ src/main/webapp/publish/adm/script/Chart.js-master/tsconfig.json
This diff is skipped because there are too many other diffs.
 
src/main/webapp/publish/adm/script/dashbord.js (added)
+++ src/main/webapp/publish/adm/script/dashbord.js
This diff is skipped because there are too many other diffs.
Add a comment
List